antlr3

    0熱度

    1回答

    我想了解如何應用訪問者模式,一旦我有從ANTLR語法生成的AST。它是否與遍歷樹不同? 例如,假設我有以下AST(From this question): 如果我想appened FUNDEF IDS向其所有VARDECL的ID,我的做法是做一個樹遍歷查找所有VARDECL在BLOCK內部,並添加一個新的(FUNDEF ID + old_name)孩子,並刪除舊的。 這是正確的方法還是會以某種方式

    0熱度

    2回答

    我使用ANTLR3C V3.4,這裏是語法的一個片段: include_cmd : Include Double_Quote file_name Double_Quote { my_model->add_include($file_name.text, LT(0)->getLine(LT(0))); } ; 但我發現,LT(0) - >函數g

    1熱度

    2回答

    我試圖創建一個Antlr3詞法規則,這將匹配三引號的字符串。例如: """this is some text""" 這是我正在做它: TEXT: '"""' ('\\"' | ~'"')+ '"""' { this.setText( this.getText() .substring(3, this.getText().length() -

    1熱度

    1回答

    我寫了語法來解析下面的代碼片段中的'接口'塊(一個塊由!\n定界)。 ! interface FastEthernet 1/0 no ip address shutdown ! ip route 0.0.0.0 ! router bgp 10 <skipped...> ! router ospf 1 <skipped...> ! inter

    1熱度

    2回答

    我想從ANTLR.grammar文件生成c代碼,在Windows上使用antlrworks 1.5(ANTLR 3.5),但它不會生成任何頭文件,例如sample.g,它會生成: sample.tokens sampleLexer.c sampleParser.c 但沒有任何頭文件,我不明白爲什麼。 我現在所使用的語法,是舉例的目的很簡單: grammar sample; options {

    0熱度

    1回答

    我有以下語言來定義,顯然ANTLR沒有泄露它的祕密,以方便。 ui { screen X { input() checkbox() } } model { // any text // even {} } 我會定義 ui: UI OBR (screen)* CBR; screen: .... model : MODEL modelBo

    0熱度

    1回答

    您好, 我需要解析while循環一個C語法。說,例如,我需要解析如下代碼: A = 20 B = 1 WHILE(A < 30) //function call A = A + B ENDWHILE 我需要分析和評估表達式。我已經遵循了一些步驟並寫了一個語法,但是這不會讓我產生期望的輸出。根據上面的代碼,在條件檢查之後,循環內的函數必須被調用10次。 首先,我在哈希表中存儲A和B的值

    0熱度

    1回答

    我想到目前爲止上手http://www.ibrezina.net/OracleSQL.tgz ,我已經完成了以下內容: wget http://www.ibrezina.net/OracleSQL.tgz tar xvzf OracleSQL.tgz cd OracleSQL make 這將導致以下錯誤: gcc -ggdb -O0 -fno-inline -I. -I/usr/incl

    0熱度

    1回答

    我目前手動走樹,而不是使用ANTLR/CommonTree樹樹語法。我已經做了一些轉變,我想將其中的一些轉移到該樹的父項。它也可能是根源。 例子: 之所以這樣說,AST,我想將所有VARDECL語句內BLOCK樹的根。 這樣做:我得到一個異常 Exception in thread "main" java.util.ConcurrentModificationException at j

    0熱度

    1回答

    我一直在尋找解決這個問題的辦法,但到目前爲止我找不到任何答案。我正在開發一個ANTLR項目,該項目基本上應該實現一個像Haskell一樣的語法。 listDecl: LIST {int count=0; ArrayList<Integer> list = new ArrayList<Integer>();} (WS)+ ID '=' '[' a1=atom {count++; list.add(