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 (_valid(validSymbols, 1) ||
      _valid(validSymbols, 2) ||
      _valid(validSymbols, 3)) {
    if (_scanNumber(lexer) || _scanBoz(lexer)) return true;
  }
  lexer.setResultSymbol(symbols[0]);
  if (lexer.lookahead != 0x26) return false;
  lexer.advance(skip: false);
  if (lexer.lookahead == 0x0d) {
    lexer.advance(skip: false);
    if (lexer.lookahead == 0x0a) lexer.advance(skip: false);
  } else {
    if (lexer.lookahead != 0x0a) return false;
    lexer.advance(skip: false);
  }
  while (_isWhitespace(lexer.lookahead)) lexer.advance(skip: false);
  if (lexer.lookahead == 0x26) lexer.advance(skip: false);
  return true;
}