是否有任何原因导致没有解析器生成器消耗直接BNF?

我熟悉JavaCCAntlr,最近遇到了Parse2。似乎每个都有自己的符号。 BNF确实很容易阅读,而其他符号则不然。 BNF是明确的。为什么不能将BNF馈送给编译器并获得解析树的某些固有原因?

最佳答案

Marpa::R2是常规BNF解析器Marpa的Perl接口(interface),它接受直接的BNF作为语法描述,并在Perl中为其生成解析器。这是几乎从BNF grammar tutorial实际获取的示例。

<tree>  ::= '(' <list> ')'
<list>  ::= <thing> | <list> ',' <thing>
<thing> ::= <tree> | <name>
<name>  ::= 'ant' | 'bat' | 'cow' | 'dog' | 'cat'

The full code example.

09-26 05:54