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 (_isWhitespace(lexer.lookahead)) lexer.advance(skip: true);
  if (lexer.lookahead != 0x23 &&
      validSymbols.isNotEmpty &&
      validSymbols[0] &&
      _scanBracketArgument(lexer)) {
    lexer.setResultSymbol(symbols[0]);
    return true;
  }
  if (lexer.lookahead != 0x23 ||
      validSymbols.length < 3 ||
      (!validSymbols[1] && !validSymbols[2])) {
    return false;
  }
  lexer.advance(skip: false);
  if (_scanBracketArgument(lexer)) {
    lexer.setResultSymbol(symbols[1]);
    return true;
  }
  while (lexer.lookahead != 0x0a && lexer.lookahead != 0) {
    lexer.advance(skip: false);
  }
  lexer.setResultSymbol(symbols[2]);
  return true;
}