parseLiteral function
Implementation
ValueIndex<LiteralNode>? parseLiteral(
String input, List<Token> tokenList, int index, Settings settings) {
// literal: string | number | true_ | false_ | null_
final token = tokenList[index];
dynamic value;
switch (token.type) {
case TokenType.string:
{
value = parseString(safeSubstring(
input, token.loc!.start.offset! + 1, token.loc!.end.offset! - 1));
break;
}
case TokenType.number:
{
value = int.tryParse(token.value!);
value ??= double.tryParse(token.value!);
break;
}
case TokenType.true_:
{
value = true;
break;
}
case TokenType.false_:
{
value = false;
break;
}
case TokenType.null_:
{
value = null;
break;
}
default:
{
return null;
}
}
var literal = LiteralNode(value, token.value);
if (settings.loc) {
literal = literal.copyWith(loc: token.loc);
}
return ValueIndex(literal, index + 1);
}