2010-01-25 48 views
1

我有一個家庭作業問題,我可以使用一些幫助。我需要以下EBNF語句轉換成BNFEBNF到BNF轉換

<S> -> <A>{b<A>} 
<A> -> a[b]<A> 

這是我想出了爲止;

<S> -> <A> | <A><S> | b<A> 
<A> -> a<A> | ab<A> 

它感覺不對,主要是因爲它是一個WAG。我的書(概念編程語言,Sebesta)中的例子根本沒有幫助我。所以如果有人有任何見解,將不勝感激。謝謝!

回答

0
(* S is a sequence of A optionally followed by a sequence of b and S together. *) 
<S> -> <A> 
     | <A> b <S>; 

(* A is composed of 'a', followed by an optional 'b', followed by another A. *) 
<A> -> a <A> 
     | a b <A>; 

這就是爲什麼我喜歡EBNF來代替。理解和寫作要容易得多! :-)

最終你問自己需要什麼。寫下來。現在考慮可選組件並使用它們與所需組件的各種組合(按照正確的順序)。然後減少你可以(小心不要犯錯)。