jtr/DevDisciples.Json.Tools/JsonPath.Lexer.cs
mdnapo 82a59eebd2 - Refactored code
- Implemented basic JSON Path interpreter
- Clean up
2024-09-22 16:30:31 +02:00

38 lines
1.4 KiB
C#

using DevDisciples.Parsing;
namespace DevDisciples.Json.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, ']'),
];
}
}
}