如何为 "{\"a\":1,\"b\":2}" 这样的输入编写 lex 文件

how to write lex file for input like "{\"a\":1,\"b\":2}"

我想实现一个 json 解析器,但解析对象有问题,如“{\"a\":1,\"b\":2}”,当前是解析器输出像这样的东西

'(json
  (object
   "{"
   (kvpair
    "\"a\":1,\"b\""
    ":"
    (json (number "2")))
   "}"))

但我真正想要的是

'(json
    (object
     "{"
     (kvpair "\"a\"" ":" (json (number "1")))
     ","
     (kvpair "\"b\"" ":" (json (number "2")))
     "}"))

我正在使用#lang ragg 和parser-tools/lex,那么我该如何编写lex 规则才能获得正确的输出。 source_code

lex.rktstring-literal 的规则更改为:

[string-literal
   (:: #\" (:* char-literal1) #\")]

注意添加的 1。