using DevDisciples.Parsing; namespace DevDisciples.Json.Parser; public class JsonLexer : Lexer { 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"), ]; } }