in packages/core/nano/src/parser.ts [282:386]
function scan(): SyntaxKind {
wsTokenPos = pos;
tokenFlags = TokenFlags.None;
while (true) {
tokenPos = pos;
if (pos >= end) {
return (token = SyntaxKind.EndOfInputToken);
}
const ch = text.charCodeAt(pos);
if (isWhitespaceChar(ch)) {
pos += 1;
continue;
}
switch (ch) {
case CharacterCodes.lineFeed:
case CharacterCodes.carriageReturn:
pos += 1;
continue;
case CharacterCodes.asterisk:
pos += 1;
return (token = SyntaxKind.AsteriskToken);
case CharacterCodes.caret:
pos += 1;
return (token = SyntaxKind.CaretToken);
case CharacterCodes.minus:
pos += 1;
return (token = SyntaxKind.MinusToken);
case CharacterCodes.plus:
pos += 1;
return (token = SyntaxKind.PlusToken);
case CharacterCodes.dot:
pos += 1;
return (token = SyntaxKind.DotToken);
case CharacterCodes.slash:
pos += 1;
return (token = SyntaxKind.SlashToken);
case CharacterCodes.comma:
pos += 1;
return (token = SyntaxKind.CommaToken);
case CharacterCodes.equals:
pos += 1;
return (token = SyntaxKind.EqualsToken);
case CharacterCodes.lessThan:
pos += 1;
if (pos < end && text.charCodeAt(pos) === CharacterCodes.equals) {
pos += 1;
return (token = SyntaxKind.LessThanEqualsToken);
}
if (pos < end && text.charCodeAt(pos) === CharacterCodes.greaterThan) {
pos += 1;
return (token = SyntaxKind.NotEqualsToken);
}
return (token = SyntaxKind.LessThanToken);
case CharacterCodes.greaterThan:
pos += 1;
if (pos < end && text.charCodeAt(pos) === CharacterCodes.equals) {
pos += 1;
return (token = SyntaxKind.GreaterThanEqualsToken);
}
return (token = SyntaxKind.GreaterThanToken);
case CharacterCodes.openParen:
pos += 1;
return (token = SyntaxKind.OpenParenToken);
case CharacterCodes.closeParen:
pos += 1;
return (token = SyntaxKind.CloseParenToken);
case CharacterCodes.openBrace:
tokenValue = scanString(CharacterCodes.closeBrace);
tokenFlags |= TokenFlags.Quoted;
return (token = SyntaxKind.Identifier);
case CharacterCodes.doubleQuote:
case CharacterCodes.singleQuote:
tokenValue = scanString(ch);
return (token = SyntaxKind.StringLiteral);
case CharacterCodes._0:
case CharacterCodes._1:
case CharacterCodes._2:
case CharacterCodes._3:
case CharacterCodes._4:
case CharacterCodes._5:
case CharacterCodes._6:
case CharacterCodes._7:
case CharacterCodes._8:
case CharacterCodes._9:
tokenValue = scanNumber();
return (token = SyntaxKind.NumberLiteral);
default:
if (isIdentifierStart(ch)) {
({ type: token, value: tokenValue } = scanIdentifier());
return token;
}
onScanError("Unknown Character", pos, pos);
pos += 1;
return (token = SyntaxKind.Unknown);
}
}
}