2012-07-20 53 views
3

我正在研究一個需要我解析BNF語法的學校項目。我對管道角色(|) - 我認爲這意味着「或」 - 在規則中扮演的角色有點困惑。| |如何?影響BNF語法?

舉例來說,如果我有以下幾點:

<a> ::= b c d | e f g 

哪個終端是|應用於?使用圓括號進行分組,這將描述如何應用「或」。

(b c d) | (e f g)

(b c)(d) | (e)(f g)

是|適用於整套終端,或者僅適用於|?

如果我有一個設置,如:

<a> ::= b | <c> <d> 
<b> ::= e | f 
<c> ::= g | h 

它仍然會是真實的,如果<c><d>指非終端?要什麼|在這種情況下適用?

+1

最後一個有意義的非n00b問題在StackOverflow!肯定+1。 – 2012-07-20 04:44:55

回答

4

一般來說,

rule := a b c | d e f 

被歸爲

rule := (a b c) | (d e f) 

這不會改變你是否將其應用到終端或非終端。

+1

非常感謝!這正是我所期待的,我能夠按時正確完成我的任務。 – Bhaxy 2012-07-20 05:39:39

+0

@Bhaxy很高興我可以幫你。 – 2012-07-20 05:52:56