shift-reduce-conflict

    6熱度

    5回答

    我在YACC(實際上是Bison)寫了一個語法,而且我有一個移位/縮減問題。它包含後綴增量和減量運算符。下面是語法的下調版本: %token NUMBER ID INC DEC %left '+' '-' %left '*' '/' %right PREINC %left POSTINC %% expr: NUMBER | ID | expr '+' expr

    6熱度

    4回答

    我試圖用Irony編寫一個小解析器。不幸的是,我得到了一個「減少衝突」的衝突。文法不是我的強項,我只需要完成這一件小事。這是產生錯誤的簡化文法: ExpressionTerm := "asd" LogicalExpression := ExpressionTerm | LogicalExpression "AND" LogicalExpression | Logic

    4熱度

    3回答

    我正在使用CUP創建我需要的論文的解析器。我的語法有一個轉換/減少衝突。我有這樣的產生式規則: command ::= IDENTIFIER | IDENTIFIER LPAREN parlist RPAREN; ,我有這樣的警告: Warning : *** Shift/Reduce conflict found in state #3 between command ::= IDENTI

    0熱度

    2回答

    我試着去建模EBNF表達 ("declare" "namespace" ";")* ("declare" "variable" ";")* 我已經建立了YACC(即時通訊使用MPPG)語法,這似乎來表示這一點,但它不符合我的測試表達式。 測試情況下,我試圖匹配是 declare variable; 從詞法記號流是 KW_Declare KW_Variable Separator 語

    2熱度

    2回答

    我正在嘗試使用LALR(1)解析器生成器(Bison,但該問題不是特定於該工具)解析簡單語法,而且正在打擊轉變 - 減少衝突。我發現有關解決這些文檔和其他來源往往說一個或多個以下: 如果語法是不明確的(如IF-THEN-ELSE歧義),改變語言來解決歧義。 如果是運算符優先級問題,請明確指定優先級。 接受默認分辨率,並告訴生成器不要抱怨它。 然而,所有的這些似乎適用於我的情況:語法是明確的,只要我

    2熱度

    4回答

    在解決移位/減少錯誤方面肯定有很多文檔和howtos。野牛文檔建議正確的解決方案通常只是期待他們並處理它。 當你有這樣的事情: S: S 'b' S | 't' 您可以輕鬆地解決這些問題是這樣的: S: S 'b' T | T T: 't' 我的問題是:是否有更好的離開語法觸摸曖昧和%預計轉移/減少問題還是嘗試調整語法以避免它們會更好?我懷疑有一個平衡點,它是基於作者的需求,但我不知道。

    2熱度

    4回答

    我有我認爲是我的語法的一個簡單部分這是從yacc獲取錯誤。我知道我需要在某處添加%prec,但不確定其中的位置。 Assignment : Ref '=' Ref | Ref '=' Expression | Ref '=' Value | Ref '=' FunctionCall ; Ref : ID | ID '[' Exp

    1熱度

    1回答

    解析二進制求和/產品有容易,但是我有限定解析 a + b * c + d + e 作爲 sum(a, prod(b, c), d, e) 語法麻煩 我最初(天真)的嘗試產生了61次轉換/減少衝突。 我正在使用java杯(但我想任何其他解析器生成器的解決方案將很容易翻譯)。