0

フィールドとして配列と行列を持つクラスをサポートするはずの小さな言語用のカップパーサーを書いています。たとえば、クラス インスタンスがある場合:

C c;

フィールドには次の方法でアクセスします。

c.x;
c.y[];
c.z[][];

shift/reduce のコンフリクトが頻繁に発生するため、この最後の部分の作品を書くのに苦労しています。これは私の作品です:

Designator ::= IDENT
               |
               Designator DOT IDENT
               |
               Designator LSQUARE Expr RSQUARE
               |
               Designator LSQUARE Expr RSQUARE LSQUARE Expr RSQUARE
               ;

警告 : *シンボル LSQUARE の下のデジネータ ::= デジネータ LSQUARE Expr RSQUARE ( ) とデジネータ ::= デジネータ LSQUARE Expr RSQUARE ( ) LSQUARE Expr RSQUARE の間の状態 #189 で見つかった Shift/Reduce の競合 シフトを支持して解決されました。

誰でもこれを解決するのを手伝ってもらえますか?

4

1 に答える 1