是否有任何原因导致没有解析器生成器消耗直接BNF?
我熟悉JavaCC和Antlr,最近遇到了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.