All checks were successful
Run the JSON parser tests / test (push) Has been skipped
38 lines
1.4 KiB
C#
38 lines
1.4 KiB
C#
using Jtr.Parsing;
|
|
|
|
namespace Jtr.Tools;
|
|
|
|
public static partial class JsonPath
|
|
{
|
|
public class Lexer : Lexer<JsonPathToken>
|
|
{
|
|
public static readonly Lexer Default = new();
|
|
|
|
protected override JsonPathToken EndOfSource => JsonPathToken.EndOfSource;
|
|
|
|
public Lexer()
|
|
{
|
|
Rules =
|
|
[
|
|
DefaultRule.NewLine,
|
|
DefaultRule.Number(JsonPathToken.Number),
|
|
DefaultRule.Identifier(JsonPathToken.Identifier),
|
|
DefaultRule.DoubleQuoteString(JsonPathToken.String),
|
|
|
|
ctx => DefaultRule.IgnoreWhitespace(ctx),
|
|
ctx => Match(ctx, JsonPathToken.False, "false"),
|
|
ctx => Match(ctx, JsonPathToken.True, "true"),
|
|
ctx => Match(ctx, JsonPathToken.Null, "null"),
|
|
ctx => Match(ctx, JsonPathToken.DotDot, ".."),
|
|
ctx => Match(ctx, JsonPathToken.DollarSign, '$'),
|
|
ctx => Match(ctx, JsonPathToken.Asterisk, '*'),
|
|
ctx => Match(ctx, JsonPathToken.Dot, '.'),
|
|
ctx => Match(ctx, JsonPathToken.Minus, '-'),
|
|
ctx => Match(ctx, JsonPathToken.Colon, ':'),
|
|
ctx => Match(ctx, JsonPathToken.LeftBracket, '['),
|
|
ctx => Match(ctx, JsonPathToken.Comma, ','),
|
|
ctx => Match(ctx, JsonPathToken.RightBracket, ']'),
|
|
];
|
|
}
|
|
}
|
|
} |