shift-reduce-conflict

    3熱度

    4回答

    %token <token> PLUS MINUS INT %left PLUS MINUS 工作的: exp : exp PLUS exp; exp : exp MINUS exp; exp : INT; 這具有2 SHIFT /減少衝突: exp : exp binaryop exp; exp : INT; binaryop: PLUS | MINUS ; 爲什麼?

    2熱度

    2回答

    我正在設計一個非常簡單的語法,我使用一元減操作數。但是,我得到了一個轉變/減少衝突。在Bison手冊和我看到的其他地方,它說我應該定義一個新的標記並給它比二進制減號操作數更高的優先級,然後在規則中使用「%prec TOKEN」。 我已經這樣做了,但我仍然收到警告。爲什麼? 我使用野牛(GNU Bison)2.4.1。語法如下所示: %{ #include <string> extern "C"

    0熱度

    1回答

    我試圖設置我的解析器,通過識別沒有逗號來查找某個參數的結尾,所以我基本上它設置爲找到這樣 參數的參數:end_parameter逗號 (該數據類型僅僅是一個列表,所以沒有什麼表示它結束 - 只是它有ISN時停止」 t逗號分隔項目) 而end_parameter定義如下,並做它應該的。解析器通過識別右括號作爲結束符與其他數據類型一起工作,但是當我設置由於缺少逗號而結束的類型時,我得到了移位/減少錯誤

    0熱度

    1回答

    我正在使用OOP語言的大多數功能開展野牛解析器,現在野牛抱怨說有一些移位/減少衝突。我得到了: conflicts: 21 shift/reduce 問題是,它不告訴我他們在哪裏。有誰知道如何找到那裏的衝突? 在此先感謝。

    6熱度

    1回答

    我正在使用Jison(Bison)創建簡單的標記語言。我顯然對此很陌生,但輕微的變化非常有效。我只是不明白S/R衝突的來源。 兩個詞法分析器操作(具有不同的開始條件)返回'文本'似乎並不重要,我喜歡這樣,因爲它似乎允許語法具有較少的規則,並且因爲錯誤消息給用戶是一致的。我已經試過使'文本'規則不受上下文影響,我也試着給每個令牌一個不同的名字,但是當它們在一起時,它似乎對S/R衝突沒有任何影響。 解

    4熱度

    2回答

    的語法如下: 1. program -> declaration-list 2. declaration-list -> declaration-list declaration | declaration 3. declaration -> var-declaration | fun-declaration 4. var-declaration -> type-specifier ID ;

    17熱度

    3回答

    如何刪除給定語法的bison的shift-reduce衝突? selection-stmt -> if (expression) statement | if (expression) statement else statement 提供修改過的語法的解決方案將受到高度讚賞。

    3熱度

    2回答

    當Yacc/Bison發生移位/減少衝突時,是否可以強制衝突根據需要進行精確解算?換句話說:是否有可能明確強迫它優先考慮轉變或減少? 對於我已閱讀的內容,如果您對默認分辨率感到滿意,您可以告訴生成器爲not complain about it。我真的不喜歡這個,因爲它混淆了你的理性選擇。 另一種選擇是重寫語法來解決問題。我不知道這是否永遠是可能的,而且這往往會讓人難以理解。 最後,我讀過優先規則可

    0熱度

    1回答

    我在yacc編譯期間遇到了衝突問題。 錯誤以下消息:下面 24: shift/reduce conflict (shift 66, reduce 99) on '/' state 24 arithmetic_leaf : absolute_path . (99) absolute_path : absolute_path . '/' relative_path (102) 代碼: ari

    0熱度

    1回答

    衝突。當我試圖編譯使用檸檬,我遇到衝突這個簡單的解析器,但我不能看到哪個規則是錯誤的。如果我刪除二進制表達式或callexpression,則衝突消失。 %left Add. program ::= expression. expression ::= binaryexpression. expression ::= callexpression. binaryexpression