フィールドとして配列と行列を持つクラスをサポートするはずの小さな言語用のカップパーサーを書いています。たとえば、クラス インスタンスがある場合:
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 の競合 シフトを支持して解決されました。
誰でもこれを解決するのを手伝ってもらえますか?