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,
) {
  if (validSymbols.length > 3 && validSymbols[3] && lexer.lookahead == 0x5b) {
    lexer.setResultSymbol(symbols[3]);
    return true;
  }
  if (validSymbols.isNotEmpty && validSymbols[0]) {
    final lookahead = lexer.lookahead;
    if (lookahead != 0 &&
        lookahead != 0x3e &&
        lookahead != 0x3c &&
        lookahead != 0x29 &&
        lookahead != 0x3b &&
        lookahead != 0x26 &&
        lookahead != 0x7c &&
        !_isWhitespace(lookahead)) {
      if (lookahead == 0x23) {
        while (lexer.lookahead == 0x23) lexer.advance(skip: false);
        if (_isWhitespace(lexer.lookahead) ||
            !_isAlphaNumeric(lexer.lookahead)) {
          lexer.setResultSymbol(symbols[1]);
          return true;
        }
      }
      lexer.setResultSymbol(symbols[0]);
      return true;
    }
  }
  if (validSymbols.length > 2 && validSymbols[2]) {
    final lookahead = lexer.lookahead;
    if (lookahead != 0 &&
        lookahead != 0x29 &&
        lookahead != 0x28 &&
        lookahead != 0x7d &&
        lookahead != 0x7b &&
        lookahead != 0x2c &&
        !_isWhitespace(lookahead)) {
      lexer.setResultSymbol(symbols[2]);
      return true;
    }
  }
  return false;
}