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

时间:2015-05-15 11:32:35

标签: json parsing racket tokenize lex

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

cd /d  "c:\users\you\"
for %%i in (*.txt) do (
  echo processing %%i
  TYPE "%%i" | MORE /P > "c:\temp\%%i"
  del "%%i"
)

但我真正想要的是

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

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

1 个答案:

答案 0 :(得分:1)

string-literallex.rkt的规则更改为:

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

注意添加的1。