无论出于什么原因(utf-8),我都需要将menhir与Sedlexing一起使用,但是不知道如何使生成的解析器依赖于Lexing而不是Lexing。有小费吗?
当我跑的时候
menhir --infer parser.mly生成的程序有带有Lexing...的行。我可以手动修改,但肯定还有别的办法,不是吗?
发布于 2015-06-16 06:56:30
编辑:生成的parser.ml应该有对词法的引用。Sedlexing用于创建发送给解析器的lexbuf,但是解析器并不关心该词汇是否是由词法或词法创建的,只要它可以在其上使用像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参见streamparse上的完整示例(分支streamparse/tree/match-singlechar-example显示了与单个代码点匹配的规则,如a或ß,但不匹配aa)。
https://stackoverflow.com/questions/30853159
复制相似问题