我正在寻找一个在OCaml中生成LL(1)语法分析器的工具... 有人能帮忙吗?
LALR解析器可以解析LL解析器可解析语言的严格超集。因此,我建议使用ocamlyacc,它是Ocaml附带的LALR(1)解析器生成器。这可能需要对语法进行一些小的重写,但不应该太难。
我听说过Menhir的好处。
主页顶部显示:
Menhir是OCaml编程语言的LR(1)解析器生成器。也就是说,Menhir将LR(1)语法规范编译成OCaml代码。Menhir由François Pottier和Yann Régis-Gianas设计和实现。
Menhir与ocamlyacc 90%兼容。Menhir接受并编译传统的ocamlyacc语法规范。生成的解析器可以运行并生成正确的解析树。
在camlp4中包含的流解析器(据我所知)是LL(1)解析器。请参见http://caml.inria.fr/pub/docs/manual-camlp4/manual003.html