scan method
bool
scan(
- StatelessExternalScannerState state,
- TreeSitterExternalLexer lexer,
- 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;
}