-1
私はこの演習で少し問題があります。この文法を考えるコンパイラ:あいまいな文法を変更する
:
S -> aX | X
X -> aXb | b | eps
a)は、それは文字列
b)参照)文法
Cを捉えどのような言語と言う文法を変更し、子孫を構築して曖昧であることを示していますパーサー
解決方法:
a)
L = {a^n b^n: n >= 0} U {a^n b^m: n=m+1, n,m >= 0} U {a^n b^m: m=n+1, n,m >= 0}
C)私の問題は、パーサーを構築するための文法を変更です:文法は、この言語をキャプチャ
- S -> aX -> ab
- S -> X -> aXb -> ab
B):私は、文字列 'AB' があいまいな示しています。私は別の文法を試みますが、あまりにもあいまいです。たとえば は、この:
- G -> X$
X -> aX' | b | eps
X' -> XB | eps
あなたは運動のために正しい文法を見つけるか、私に入力を与えるために私を助けることができますか?
生産はX - > a | b。しかし、この生産では、文法は、トップダウン解析のための解析テーブルで競合を生成します。あなたは別の生産を考えますか? – Federico
@federico:実際には、 'X - > a | b | ε';それ以外の場合は、バランスのとれた文字列は使用できません。それは曖昧ではありませんが、LL(k)ではありません。 (LR(k)でもない)LL(1)文法はやっかいですが、可能です。接頭辞と最大(有限)長の接尾辞に分解することを考えてください。 – rici