jtr/Jtr.Tools/JsonPath.Lexer.cs
mdnapo 96c203f842
All checks were successful
Run the JSON parser tests / test (push) Has been skipped
Moved UI to separate project, added Dockerfile & renamed project
2024-10-19 12:04:40 +02:00

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, ']'),
];
}
}
}