All checks were successful
Run the JSON parser tests / test (push) Has been skipped
30 lines
1.0 KiB
C#
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"),
|
|
];
|
|
}
|
|
} |