jtr/Jtr.Parsing.Json/JsonLexer.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

30 lines
1.0 KiB
C#

namespace Jtr.Parsing.Json;
public class JsonLexer : Lexer<JsonToken>
{
public static readonly JsonLexer Default = new();
protected override JsonToken EndOfSource => JsonToken.EndOfSource;
public JsonLexer()
{
Rules =
[
DefaultRule.NewLine,
DefaultRule.Number(JsonToken.Number),
DefaultRule.DoubleQuoteString(JsonToken.String),
ctx => DefaultRule.IgnoreWhitespace(ctx),
ctx => Match(ctx, JsonToken.Minus, '-'),
ctx => Match(ctx, JsonToken.LeftBrace, '{'),
ctx => Match(ctx, JsonToken.Colon, ':'),
ctx => Match(ctx, JsonToken.RightBrace, '}'),
ctx => Match(ctx, JsonToken.LeftBracket, '['),
ctx => Match(ctx, JsonToken.Comma, ','),
ctx => Match(ctx, JsonToken.RightBracket, ']'),
ctx => Match(ctx, JsonToken.True, "true"),
ctx => Match(ctx, JsonToken.False, "false"),
ctx => Match(ctx, JsonToken.Null, "null"),
];
}
}