这两个上下文无关语法规则是否相同?

时间:2013-10-27 01:18:51

标签: context-free-grammar

这两个语法定义之间是否存在差异(|表示OR而;只是常规字符)?

1. <foo> ::= <bar> | <foo> ; <bar>
2. <foo> ::= <bar> | <bar> ; <foo>

在我看来,无论使用哪个定义,foo都会匹配看起来像<bar> ; <bar> ; <bar> ; ....的序列。我在这里遗漏了什么或者功能是否相同?

1 个答案:

答案 0 :(得分:0)

我同意它们是等价的,因为两者的最终结果是一个或多个<bar>。但是,如果向<foo>添加了任何新规则(这些规则涉及<bar>以外的终端或非终端),它们可能就不再相同了。