scan method

  1. @override
bool scan(
  1. StatelessExternalScannerState state,
  2. TreeSitterExternalLexer lexer,
  3. List<bool> validSymbols
)
override

Implementation

@override
bool scan(
  StatelessExternalScannerState state,
  TreeSitterExternalLexer lexer,
  List<bool> validSymbols,
) {
  while (lexer.lookahead == 0x20 || lexer.lookahead == 0x09) {
    lexer.advance(skip: true);
  }
  if (lexer.lookahead == 0) {
    lexer.setResultSymbol(symbols[0]);
    return true;
  }
  if (lexer.lookahead != 0x0a) return false;
  lexer.advance(skip: true);
  if (lexer.lookahead != 0x20 && lexer.lookahead != 0x09) {
    lexer.setResultSymbol(symbols[0]);
    return true;
  }
  while (lexer.lookahead == 0x20 || lexer.lookahead == 0x09) {
    lexer.advance(skip: true);
  }
  if (validSymbols.length > 1 && validSymbols[1] && lexer.lookahead == 0x2e) {
    lexer.advance(skip: false);
    lexer.setResultSymbol(symbols[1]);
    return true;
  }
  return false;
}