次のBNF文法を考慮してください(非終端記号は角カッコで囲み、<identifier>
は正当なJava変数識別子と一致します)。 EXPを見つめる次のBNF文法を検討してください
(x - a) * (y + b)
:
<exp> ::= <exp> + <term>
| <exp> - <term>
| <term>
<term> ::= <term> * <factor>
| <term>/<factor>
| <factor>
<factor> ::= (<exp>)
| <identifier>
は、次の式のために導出3をプロデュース
<exp>
は、用語とEXPを置き換える:
<term>
は、と言葉を置き換えます。
<term> * <factor>
因子で用語を置き換える:
<factor> * <factor>
は(EXP)との両方の要素を置き換える:
(<exp>) * (<exp>)
をEXPとの最初の経験値を置き換える - EXP +用語
という用語と第二の(<exp> - <term>) * (<exp> + <term>)
expの両方をtermに置き換えてrepl 4つの条件すべてを要因とする
(<factor> - <factor>) * (<factor> + <factor>)
識別子
(<identifier> - <identifier>) * (<identifier> + <identifier>)
持つすべての要素を置き換え、これは十分でしょうか?
「」で始める必要がありますか? –