2013-10-27 56 views
1

這兩個語法定義是否有區別(其中|表示OR,;只是一個常規字符)?這兩個上下文無關語法規則是否相同?

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

這在我看來,FOO將匹配,看起來像<bar> ; <bar> ; <bar> ; ....無論使用哪種定義的序列。我在這裏錯過了什麼東西,還是他們在功能上是一樣的?

回答

0

我同意他們是等價的,因爲兩者的最終結果是一個或多個<bar>'s。但是,如果有任何新規則被添加到<foo>(這些規則涉及終端或非終端,而不是<bar>),它們可能不再等同。