1

現在、この問題を遭遇したときに試験を勉強し、過去の論文を調べています。以下なぜこのEBNF文法はあいまいですか?

1 + 2 * 3のように、 式単純な算術を記述するEBNF文法である - 4:

Expression = Operand, {Operator, Operand}; 
Operand = "1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"; 
Operator = "+"|"-"|"*"|"/"; 

(IV)は、この文法を使用して、発現を評価する複数の方法が存在します1 + 2 * 3 - 4.のように2つを記述し、 が提供する文法についての意味を説明します。 [2マーク]私の理解へ

、あいまいな文法は通常も優先の文法のために、いくつかのあいまいさがある意味、複数の一番左または一番右の導出、どちらかが存在することを意味します。しかしここでは優先順位はなく、再帰は線形です。

アドバイス?

答えて

0

ご質問には回答の一部があります。

はい、あなたはあいまいな文法の正しい定義をほとんど持っています。それは、文法の最も左と右の最も派生したものを実行し、同じ構文解析ツリーを生成するはずです。

はい、これは、文法の優先順位に問題があると思われる場合にはほぼ正しいですし、はい、この文法には何もありません。そこには問題があります。演算子はすべて同じ優先順位を与えられているため、異なる導出は例を評価することとは異なる回答になります。

私たちは、いずれかに1 + 2 * 3 - 4を減らすことができる:

(1+2) * (3-4) 
1 + (2 * 3) - 4 
1 + (2 * (3 - 4)) 

演算子の優先順位はどのように扱われるかに依存します。

明示的に左端と右端の削減を引き出し、解析木を導出すると、より明確になります。これは、しばしば、このような試験問題でフルマークを得るために学生が期待するものです。したがって私はこれを修正練習として残します。

関連する問題