2017-05-01 8 views
1

okが内部のものが{}オプションですこれは私の文法をあいまいにしますか?

<Exp> -> <Term> 
<EXp> -> <Term> {<AddOp> <Exp>} 
<Term> -> <Factor> {<MultOp> <Term>} 
<Factor> -> <id> | <no> | (<Exp>) 

私は、次の文法を持って言うことができます。だから私は技術的にexp-> termまたはterm-> Factorを持つことができます。今度は、次のような導出が可能です:10を言うことができます。exp-> term-> factor-> no-> 10 ..私はちょうどexpにnoを加えることができますか?

<Exp> -> <Term>|<no> 

これが文法をあいまいにしたり、その他の問題を引き起こしますか?ありがとう。

PsのAddopとMULTOPはあなたの最初の文法がすでに曖昧であるだけで+と*

答えて

0

です:<Exp>は、生産1を経由して、生産2.生産1は、文法には何も追加しません経由で、2つの異なる方法で<Term>を導出あなたはそれを削除するだけで、同じ言語の曖昧ではない文法を得ることができます。

しかし、<Exp><no>を2つの異なる方法で派生するため、プロダクション<Exp> -> <no>を追加すると、曖昧な文法が再度発生します。あなたがすでに示した最初のやり方、そして第2の方法は、新しいプロダクションの簡単なアプリケーションです。

関連する問題