lr

    0熱度

    1回答

    我似乎無法找到等價的LR語法: S→aSbS | bSaS | ε 其中我認爲識別字符串與'b'相同的數字比'b'。 這將是一個解決方法?是否有可能找到和LR語法呢? 在此先感謝! 編輯: 我發現什麼,我認爲是等效的語法,但我一直沒能證明這一點。 我想我需要證明原語法生成上面的語言,然後證明語言是爲以下等價語法生成的。但我不知道該怎麼做。我應該怎麼做? S→aBS | bAS | ε B→b |

    0熱度

    1回答

    我對這本教科書很難接受,而且我的教授認爲回答問題對已經知道進入課堂的材料的學生是不公平的(從這個人獲得的反饋是一個數據挖掘過程本身)。無論如何,我的問題圍繞着CFG(正式語言/函數式編程類)的派生。 Given a context free grammar that looks like: S-> a|B B-> b|C C-> c 找到最左邊的推導。是簡單的嗎?因爲S-> a是S->

    2熱度

    1回答

    以下語法生成句子a, a,a, b,b, b,...,h, b。不幸的是,它不是LR(1),所以不能用於諸如「yacc」之類的工具。 S -> a comma a. S -> C comma b. C -> a | b | c | d | e | f | g | h. 是否有可能改變這個語法爲LR(1)(或甚至LALR(1),LL(k)或LL(1)),而不需要擴大非終結C,因此顯著增加製作

    0熱度

    2回答

    我想寫入BNF形式的LR(1)的語法用於通過這兩個規則從The Complete Syntax of Lua描述的語言: parlist ::= namelist [`,´ `...´] | `...´ namelist ::= Name {`,´ Name} 我試圖下面的語法,但根據我使用的工具,兩者都是 「不LR(1)由於SHIFT-減少衝突」: parlist ::= namelist

    0熱度

    1回答

    我打算用野牛解析一些腳本語言移減少衝突,在這種語言,我可以寫類似下面的代碼: a = input() b = a + 1 function myfunc a = input() b = a + 1 end function 我發現,該塊 a = input() b = a + 1 其中進出函數定義的同時出現可以通過相同的規則stmts被減小,所以我寫如下代碼 %

    1熱度

    1回答

    我有以下語法: expr : factor op ; op : '+' factor op | // Blank rule for left-recursion elimination ; factor : NUM | '(' expr ')' ; NUM : ('0'..'9')+ ; 我公司供應2 + 3,使用expr的

    0熱度

    1回答

    對於不LL(1)或LR(1)一個人如何可以嘗試找出是否某些數量n存在使得語法可LL(n)或LR(n)語言? 通過查看LR(0)項目的規範集合來檢查語法是否爲LR(0)。然後,假設它不是LR(0),可以通過引入lookahead符號來檢查它是否爲LR(1)。我的簡單推理告訴我,爲了檢查它是否爲LR(2),您可能必須使前瞻包含接下來的兩個符號而不是一個。對於LR(3),您必須考慮三個符號等。 即使這種

    1熱度

    1回答

    考慮下面的語法 S -> aPbSQ | a Q -> tS | ε P -> r 雖然構建DFA,我們可以看到有一個應當包含項目 Q -> .tS Q -> . (epsilon as a blank string) 因爲t爲後續的狀態(Q)似乎有一個轉變 - 減少衝突。 我們可以總結語法的本質不是SLR(1)嗎?

    0熱度

    1回答

    當你有像這樣的語法: B: 'a' A 'a' | 'b' A 'b' A: 'a' 'a' | 'a' 的右%「A」的聲明引起aa.a不是因爲被接受在'。', 和%left'a'之間發生移位而不是減少aa.aa和ba.ab,因爲解析總是在點處減少。 這是不是很清楚,我如何找出根本的關聯聲明具有在令牌(「A」)沒有被直接地用作運營商這樣的情況下什麼樣的影響。

    0熱度

    1回答

    我已經編寫了一個LR(1)解析器,它可以成功地將我的語法語言中的字符串解析爲具體語法樹,但我現在試圖構造一個抽象語法樹。 我使用的是繼承的設計我的AST節點: struct ASTNode { virtual Type typeCheck() = 0; } struct IDNode : public ASTNode { string name; ... }