我需要使用menhir和sedlex进行某些原因(utf-8)的操作,但不知道如何使生成的解析器依赖于Sedlexing
而不是Lexing
。有什么提示吗?
当我运行时
menhir --infer parser.mly
生成的程序中有带有
Lexing...
的行。我可以手动更改它,但肯定还有其他方法,对吗?编辑:生成的parser.ml文件应该包含对Lexing的引用。使用Sedlexing创建lexbuf
,然后将其发送给解析器,但是解析器不关心该lexbuf是由Lexing还是Sedlexing创建的,只要它能在上面使用Lexing.lex_start_p
和Lexing.lex_curr_p
等函数即可。
我使用了类似以下的内容:
ocamlbuild -use-menhir -tag thread -use-ocamlfind -quiet -pkg menhirLib \
-pkg sedlex test.native
test.ml通过调用Parser使用parser.mly进行操作。
为了完整起见,ocamlbuild运行的命令是:
menhir --ocamlc 'ocamlfind ocamlc -thread -package sedlex -package menhirLib' \
--explain --infer parser.mly
a
或ß
,但不包括aa
)的规则)。请注意保留HTML标签。