3

我正在寻找 OCaml 中的 LL(1) 解析器生成器...有人可以帮我吗?

4

4 回答 4

2

好吧,LALR 解析器可以解析可以被 LL 解析器解析的语言的严格超集。所以我建议只使用 Ocaml 附带的 ocamlyacc,它是一个 LALR(1) 解析器生成器。这可能需要对语法进行一些小的重写,但应该不会太难。

于 2011-11-09T20:01:40.537 回答
1

camlp4 中包含的流解析器(据我所知)是 LL(1) 解析器。见 http://caml.inria.fr/pub/docs/manual-camlp4/manual003.html

于 2011-11-10T12:18:23.503 回答
1

Planck LL(n) 解析器组合库:https ://bitbucket.org/camlspotter/planck/overview

它从我的玩具项目开始,没有实际用户,但我可以用普朗克实现 OCaml 语法词法分析器/解析器,与原件 100% 兼容。

我不建议使用它,但如果你有兴趣......试试吧。

于 2011-11-10T05:27:33.120 回答
0

我听说过关于Menhir的好消息

主页在顶部说:

Menhir 是用于 OCaml 编程语言的 LR(1) 解析器生成器。也就是说,Menhir 将 LR(1) 语法规范编译为 OCaml 代码。Menhir 由 François Pottier 和 Yann Régis-Gianas 设计和实施。

Menhir 与 ocamlyacc 有 90% 的兼容性。Menhir 接受和编译遗留的 ocamlyacc 语法规范。生成的解析器运行并生成正确的解析树。

于 2013-06-14T21:39:26.657 回答