我正在寻找OCaml中的LL(1)解析器生成器......任何人都可以帮我这个吗?
答案 0 :(得分:2)
好吧,LALR解析器可以解析LL解析器可以解析的语言的严格超集。所以我建议简单地使用Ocaml附带的ocamlyacc,它是一个LALR(1)解析器生成器。这可能需要对语法进行一些小的改写,但这不应该太难。
答案 1 :(得分:1)
Planck LL(n)解析器组合子库:https://bitbucket.org/camlspotter/planck/overview
它已经开始作为我的玩具项目,并且没有实际用户,但我可以使用Planck实现OCaml语法词法分析器/解析器,它与原始文件100%兼容。
我不建议使用它,但如果你有兴趣...试试吧。
答案 2 :(得分:1)
包含在camlp4中的流解析器(据我所知)LL(1)解析器。看到 http://caml.inria.fr/pub/docs/manual-camlp4/manual003.html
答案 3 :(得分:0)
我听说过有关Menhir
的好消息主页在顶部显示:
Menhir是OCaml编程语言的LR(1)解析器生成器。也就是说,Menhir将LR(1)语法规范编译为OCaml代码。 Menhir由FrançoisPottier和YannRégis-Gianas设计和实施。
Menhir与ocamlyacc 90%兼容。 Menhir接受并编辑了遗留的ocamlyacc语法规范。生成的解析器运行并生成正确的解析树。