tree-grammar

    3熱度

    1回答

    我發現自己質疑如何在原始規則中出現特定條件時正確格式化重寫規則。 什麼是改寫這個適當的方式: unaryExpression: op=('!' | '-') t=term -> ^(UNARY_EXPR $op $t) ANTLR的似乎不喜歡我什麼品牌在括號中有一個標籤和「OP =」失敗。此外,我試過: unaryExpression: ('!' | '-') t=term

    0熱度

    1回答

    我目前在ANTLR和JAVA中構建了一個Javascript編譯器。 我使用ANTLR的樹語法來生成AST。 (仍然懷疑這是否比用手工定義的Abstract類生成節點的異構方法更聰明,但這是另一個話題)。 我的問題是,當我解析了一些輸入,可以說,var x = 5;這在內部表示爲; VARDECL作爲根和x作爲左孩子和作爲正確的孩子。 我現在可以選擇打印這棵樹,使用toStringTree()命令

    0熱度

    1回答

    這個錯誤是什麼意思?注意它期望有一個UNIT節點並得到了它所期待的... Phase_2.g: node from line 0:0 mismatched tree node: UNIT expecting UNIT

    -1熱度

    1回答

    我有一個完整的解析器語法,而不是生成一個AST,我可以說使用重寫規則和樹操作符是正確的。目前,我被困在創建樹grammar.I的階段有這樣的錯誤: 規則的以下幾組相互左遞歸[direct_declarator,說明符]和[abstract_declarator,direct_abstract_declarator] 重寫沒有輸出選項的語法或運算符;設置輸出= AST 這是我的樹語法。 tree g

    0熱度

    1回答

    當我編譯我的樹語法時,我無法理解「NoViableAltException」異常。 這裏有一小片我的語法與規則,讓我的問題: keyword_controls_sub : expression (MB_COMA expression)* -> ^(MATCH_STATEMENT expression)+ ; 產生一棵樹一樣: +-----------------+

    0熱度

    1回答

    我需要一些關於嘗試解決使用樹語法時遇到的問題的指導。基本上,我希望能夠做到的是替換/複製可能在樹中發現的聲明。最好通過一個例子來解釋。 下面是一個示例輸入: int a = 10; new function A; function A { int x; int y; new function B; } function B { float b =

    2熱度

    1回答

    我們的編譯器理論類的最後一項任務是爲Java的一小部分(不是MiniJava)創建一個編譯器。我們的教授給了我們選擇使用我們希望的任何工具的選擇,經過大量的探索後,我決定使用ANTLR。我設法讓掃描器和解析器啓動並運行,並且解析器輸出一個AST。我現在試圖獲得一個樹語法文件來編譯。我理解的基本思想是從解析器中複製語法規則並消除大部分代碼,使重寫規則保留原位,但似乎並不想編譯(違規錯誤)。我在正確的