[英]shift/reduce conflict in cup parser (grammar with arrarys and matrices)
我正在為一種小型語言編寫杯子解析器,該語言應該支持以數組和矩陣作為其字段的類。 例如,如果有一個類實例:
C c;
可以通過以下方式訪問這些字段:
c.x;
c.y[];
c.z[][];
由於我不斷遇到的移位/減少沖突,我很難為最后一部分編寫作品。 這是我的作品:
Designator ::= IDENT
|
Designator DOT IDENT
|
Designator LSQUARE Expr RSQUARE
|
Designator LSQUARE Expr RSQUARE LSQUARE Expr RSQUARE
;
警告: *在狀態189中的指示符:: =指示符LSQUARE Expr RSQUARE( )和指示符:: =指示符LSQUARE Expr RSQUARE( )LSQUARE Expr RSQUARE之間的移位/減少沖突在符號LSQUARE下得到解決。
誰能幫我解決這個問題?
語法的最后一個Designator
行無效。 Designator LSQUARE Expr RSQUARE
(上面兩行)已經遞歸定義了任意多個維度的鋸齒狀數組表達式。
根據您的語法,以下表達式將有效:
c.y[a].b
並且以下內容將無效:
c.y[a].z[b]
那是故意的嗎?
查看了解鋸齒狀數組的C#語法可能會令人鼓舞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.