left-recursion

    1熱度

    1回答

    我想知道爲什麼自上而下的解析器無法處理左遞歸,並且我們需要消除由於龍書中提到的這個造成的遞歸。

    0熱度

    1回答

    我有以下的語法使用Antlr3 parse: list ; list: LBRACK list_element* RBRACK ; list_element: tree_ | list ; tree_: node | ATOM ; node: LBRACK tree_ SEPARATOR tree_ RBRACK ; ATOM: 'nil'; LBRACK

    1熱度

    1回答

    我想從以下語法刪除左遞歸: S -> id = E S -> id [ E ] = E E -> E [ E ] E -> id 我試圖遵循呈現在https://en.wikipedia.org/wiki/Left_recursion左遞歸去除算法,但E -> E [ E ]行帶給我的問題,應該怎麼它被處理? 我不想得到一個完整的解決方案,只是一些提示,所以我實際上可以學習如何工作。 我

    1熱度

    1回答

    我想要一個只包含二進制非終端的語法和評估器(ANTLR解析樹walker),而不需要在訪問表達式節點時切換操作符以確定要執行的操作因爲訪問者將訪問「additionNode」,因此訪問者可以靜態假設它必須執行另外的)。 相當直接的問題。 ANTLR支持左遞歸,所以這是一個有效的語法 expr : | expr ('+'|'-') expr | expr ('*'|'/') ex

    1熱度

    1回答

    我剛剛遇到了ANTLR 4.2.2的一個奇怪問題: 考慮一個(簡化的)java語法。這並不編譯: classOrInterfaceType : (classOrInterfaceType) '.' Identifier | Identifier ; ANTLR輸出下列錯誤: error(119): Java.g4::: The following sets of

    0熱度

    1回答

    使用任何技術(置換,因式分解,左遞歸移除), 構造接受與G.相同語言的LL(1)語法 G over Σ = {0, 1, 2}: S → Y | 1X X → 1X | 0 Y → Y0 | 1X1 | 2X2 我這樣做,到目前爲止: X是左遞歸這樣: X -> 1F | 0F F -> 1F | e 我需要做的,以構建一個LL還有什麼(1),能我是因素Y?

    1熱度

    1回答

    我想解析一個簡單的語言。麻煩來解析函數調用。我試圖告訴它,函數調用是一個表達式,後面跟着左括號,參數列表和右括號。我有這樣的事情: expr = Forward() iden = Word(alphas+'_', alphanums+'_') integer = Word(nums) binop = operatorPrecedence(expr, ...) # irrevelant ca

    1熱度

    2回答

    這是NuSMV語言的語法的一部分: BasicExpression: Constant | '(' BasicExpression ')' | '!' BasicExpression | BasicExpression '&' BasicExpression; Constant: BooleanConstant BooleanConstant: 'TRUE' | 'FALSE'; 不

    0熱度

    1回答

    我是一名COOL(課堂面嚮對象語言)的編寫解析器/詞法分析器。 ü可以看到下面的鏈接語法:(本手冊的最後一頁) http://theory.stanford.edu/~aiken/software/cool/cool-manual.pdf 我使用ANTLR寫這個計劃,並與下面的輸入,我希望下面的輸出: 輸入: class Main inherits IO { main(): Object

    1熱度

    1回答

    我試圖讓使用Antlr4的SQL SELECT語句語法分析器,其中包含以下部分 expr: '1' | expr('*'|'/'|'+'|'-'|'||') expr; // As the re-factored form of expression: compound expression; WS :[ \t\r\n]+ -> skip ; 我想這條規則將允許以下組結果: 1 1+1