scan method
bool
scan(
- JavaScriptExternalScannerState state,
- TreeSitterExternalLexer lexer,
- List<
bool> validSymbols
override
Implementation
@override
bool scan(
JavaScriptExternalScannerState state,
TreeSitterExternalLexer lexer,
List<bool> validSymbols,
) {
bool valid(int index) => index < validSymbols.length && validSymbols[index];
if (valid(JavaScriptExternalToken.templateChars.index)) {
if (valid(JavaScriptExternalToken.automaticSemicolon.index)) return false;
return _scanTemplateChars(lexer);
}
if ((_modernJavaScript || _typed025) && valid(7) && _scanJsxText(lexer)) {
return true;
}
if (valid(JavaScriptExternalToken.automaticSemicolon.index) ||
(_typed && valid(_functionSignatureSemicolonIndex))) {
final result = _modernJavaScript
? _scanAutomaticSemicolonModern(lexer, commentCondition: !valid(4))
: (
accepted: _scanAutomaticSemicolon(lexer, validSymbols),
scannedComment: false,
);
if (!result.accepted &&
!result.scannedComment &&
valid(JavaScriptExternalToken.ternaryQmark.index) &&
lexer.lookahead == 0x3f) {
return _scanTernaryQmark(lexer);
}
return result.accepted;
}
if (valid(JavaScriptExternalToken.ternaryQmark.index)) {
return _scanTernaryQmark(lexer);
}
if ((_modernJavaScript || _typed025) &&
valid(3) &&
!valid(_logicalOrIndex) &&
!valid(5) &&
!valid(6)) {
return _scanHtmlComment(lexer);
}
return false;
}