Menhir是什么?
Menhir是用于OCaml公司编程语言。那就是,Menhir将LR(1)语法规范编译为OCaml代码。Menhir由François Pottier和亚恩·雷吉斯·贾纳斯.
Menhir 90%与ocamlyacc公司.旧ocamlyacc语法规范由Menhir接受和编制。产生的结果解析器运行并生成正确的解析树。然而,解析器显式调用模块中的函数正在分析表现稍微有点不正确。例如,提供访问权限的功能to-positions在被Menhir调用时返回一个虚拟位置解析器。将语法规范从ocamlyacc移植到Menhir需要替换对模块的所有调用正在分析使用新的Menhir特定的关键字。
为什么更喜欢Menhir而不是ocamlyacc?
- Menhir允许非终结符的定义为参数化的由其他人(终端或非终端)符号。此外,它还提供了图书馆属于标准参数化定义,包括选项、序列和列表。它通过?,+,和*修改器。
- ocamlyacc只接受LALR(1)语法。Menhir接受左后(1)语法,从而避免了某些人为冲突。
- Menhir的%内联关键字有助于避免或解决某些LR(1)没有人为修改语法的冲突。
- 梅奈尔解释冲突在语法方面,而不仅仅是在自动机。Menhir的解释被认为是可以理解的仅仅是人类。
- Menhir支架增量解析(英寸--表格仅模式)。这个意味着可以在任何时候保存解析器的状态(无需任何代价)以后可以从保存状态恢复。
- Menhir提供了口译译员这有助于交互式调试语法。
- Menhir允许语法规范分裂多个文件。它还允许多个语法共享一组标记。
- Menhir生产可重入的解析器。
- Menhir能够生成参数化的OCaml模块。
- ocamlyacc要求通过关键字引用语义值:$1,$2等等。Menhir允许显式地命名.
Menhir的参考手册中记录了其他差异。
文件
这个参考手册在中可用HTML格式和PDF格式格式。
这个Menhir图书馆。转换API提供转换工具在传统解析器API(假设词法分析器使用ocamllex生成)和修订的API(没有这样的假设)。
模块Menhir图书馆。LexerUtil公司提供设施用于从词法分析缓冲区中提取语法错误的位置,以及以可读的方式显示它。
模块Menhir图书馆。错误报告提供设施用于构造语法错误消息。
增量API定义如下MenhirLib公司。增量引擎(参考手册中也有说明)。
正在下载
这些是源代码版本Menhir的。编译和安装需要GNU制造和OCaml公司(4.02或更高版本)。缺陷欢迎提出报告和建议。以下是最近的列表变化.
Menhir也可以通过奥帕姆.安装opam后,只需键入opam安装menhir.
邮件列表
有一个邮件列表用于发布公告用于讨论问题、错误、功能请求,等等。只有订阅者才能发布。