diff options
author | 2021-10-24 16:09:15 -0700 | |
---|---|---|
committer | 2021-10-24 16:09:15 -0700 | |
commit | 6f6510169e46d2741baf45f96f06d7254ceb0947 (patch) | |
tree | 0131d892b3e980a01047b17b988e8d584645fdf7 | |
parent | cfe159f636e0dad8fea5e665f783822211abad2e (diff) | |
download | bun-6f6510169e46d2741baf45f96f06d7254ceb0947.tar.gz bun-6f6510169e46d2741baf45f96f06d7254ceb0947.tar.zst bun-6f6510169e46d2741baf45f96f06d7254ceb0947.zip |
[JSON] Use a special lexer variant only for JSON
-rw-r--r-- | src/json_parser.zig | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/src/json_parser.zig b/src/json_parser.zig index 5d65291a7..51389335c 100644 --- a/src/json_parser.zig +++ b/src/json_parser.zig @@ -36,31 +36,23 @@ const Level = js_ast.Op.Level; const Op = js_ast.Op; const Scope = js_ast.Scope; const locModuleScope = logger.Loc.Empty; -const Lexer = js_lexer.Lexer; fn JSONLikeParser(opts: js_lexer.JSONOptions) type { return struct { + const Lexer = js_lexer.NewLexer(opts); + lexer: Lexer, source: *const logger.Source, log: *logger.Log, allocator: *std.mem.Allocator, pub fn init(allocator: *std.mem.Allocator, source: *const logger.Source, log: *logger.Log) !Parser { - if (opts.allow_comments) { - return Parser{ - .lexer = try Lexer.initTSConfig(log, source, allocator), - .allocator = allocator, - .log = log, - .source = source, - }; - } else { - return Parser{ - .lexer = try Lexer.initJSON(log, source, allocator), - .allocator = allocator, - .log = log, - .source = source, - }; - } + return Parser{ + .lexer = try Lexer.init(log, source, allocator), + .allocator = allocator, + .log = log, + .source = source, + }; } const Parser = @This(); @@ -219,13 +211,15 @@ fn JSONLikeParser(opts: js_lexer.JSONOptions) type { }; } -const JSONParser = JSONLikeParser(js_lexer.JSONOptions{}); +const JSONParser = JSONLikeParser(js_lexer.JSONOptions{ .is_json = true }); const DotEnvJSONParser = JSONLikeParser(js_lexer.JSONOptions{ - .starts_with_string = true, + .ignore_leading_escape_sequences = true, + .ignore_trailing_escape_sequences = true, .allow_trailing_commas = true, + .is_json = true, }); -const TSConfigParser = JSONLikeParser(js_lexer.JSONOptions{ .allow_comments = true, .allow_trailing_commas = true }); var empty_string = E.String{ .utf8 = "" }; +const TSConfigParser = JSONLikeParser(js_lexer.JSONOptions{ .allow_comments = true, .is_json = true, .allow_trailing_commas = true }); var empty_object = E.Object{}; var empty_array = E.Array{ .items = &[_]ExprNodeIndex{} }; var empty_string_data = Expr.Data{ .e_string = &empty_string }; |