如何为 "{\"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.rkt
中 string-literal
的规则更改为:
[string-literal
(:: #\" (:* char-literal1) #\")]
注意添加的 1。
我想实现一个 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.rkt
中 string-literal
的规则更改为:
[string-literal
(:: #\" (:* char-literal1) #\")]
注意添加的 1。