0

算術式のパーサーを作成するタスクが割り当てられました(括弧と単項演算子を使用)。したがって、この文法が正しいかどうかを知りたいのですが、それはLL(1)形式であり、このための解析テーブルの作成に実際の問題があります。

 S  -> TS'
 S' -> +TS' | -TS' | epsilon
 T  -> UT'
 T' -> *UT' | /UT' | epsilon
 U  -> VX
 X  -> ^U | epsilon
 V  -> (W) | -W | W | epsilon
 W  -> S | number

優先順位(高から低)

 (), unary –
 ^
 *, /
 +, -

二項演算子の結合性

 ^ = right
 +, -, *, / = left

4

2 に答える 2

1

LL(1)形式ですか?

文法がLL(1)であるかどうかを判断するには、プロダクションルールを拡張する必要があります。左側が右側の最初のものとして表示されるような一連の生成を生成できる場合、文法はLL(1)ではありません。

たとえば、次のルールについて考えてみます。

X --> X | x | epsilon

左端のプロダクションを適用すると左再帰になるため、これをLL(1)文法の一部にすることはできません。しかし、これはどうですか?

X --> Y | x
Y --> X + X

これもLL(1)文法ではありませんが、より微妙です。最初にX-> Yを適用し、次にY-> X + Xを適用して、X-> X+Xがあることを確認する必要があります。 、左再帰です。

于 2009-03-14T11:13:24.563 に答える
0

単項プラス演算子には何も欠けているようです。代わりにこれを試してください...

V->(W)| -W | + W | イプシロン

于 2009-03-14T11:15:21.767 に答える