簡體   English   中英

移位/減少杯子解析器中的沖突(帶有粗糙和矩陣的語法)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM