antlr3

    4熱度

    2回答

    我是java和ANTLR的初學者。 我想在Netbeans IDE中使用ANTLR。 我試圖運行一個示例示例,並且按照所需的所有重要步驟來設置環境變量,包括jar文件和修改built.xml。 但是,當我試圖清理和建立我的申請,我得到以下錯誤: Error: Could not find or load main class org.antlr.Tool Java Result: 1 Cre

    2熱度

    1回答

    我正在使用基於語言實現模式書中Cymbol語法的自己的語言應用程序。我一直在使用ANTLRworks開發我的語法,然後使用Eclipse實現Java中的完整應用程序。由於我的語法的一部分,我有這兩個規則: varDeclaration : 'var' ID 'is' dataType (':=' expr)? ';' -> ^('var' ^(NAME ID) ^(VARTYP

    2熱度

    2回答

    我在開發我們的小型DSL方面取得了一些進展,但在嘗試突出顯示我們正在使用的TextEditorControl中的註釋時遇到了問題。 ICSharpCode控件是順理成章的,並且與ANTLR相結合,它爲DSL提供了一個很好的平臺。 我有一個工作的語法和詞法分析器,並且在文本編輯器中寫了一個突出顯示策略,它也很好。 DSL拒絕正確着色的唯一因素是我對隱藏通道的「評論」。 Comment :

    2熱度

    1回答

    我有以下ANTLR規則: procedure : ('int' | 'char') IDENT '(' args ')' body -> ^(PROCEDURE IDENT (args)* body) ; 我想捕捉的AST的('int' | 'char')部分。您可以看到,在右側沒有出現,但我不確定如何在AST中顯示所選的'int'或'char'。我希望'int'或'char'部分位於PR

    2熱度

    3回答

    使用Antlr-3.3-complete.jar生成的相同的Oracle SQL語法沒有錯誤,並且使用Netbeans/GCC或Visual Studio成功編譯。 使用Antlr-3.5-complete.jar生成語法會生成23500行警告消息,描述模板錯誤,其中包括幾百個例外。 的代碼是使用下面的命令行生成: java -d64 -Xmn2000M -Xmx8000M -jar antlr-

    1熱度

    1回答

    我正在使用ANTLR構建AST,並基於分離的Java6詞法分析器&語法。詞法分析器定義包含在Java6Lex.g中,併產生語法消耗的令牌。解析器消耗這些沒有問題,但是當我生成AST時,我想介紹想象的令牌 - 但是,似乎ANTLR不喜歡該模型。 解析器語法包括來自詞法分析器的標記詞彙表 - 這應該將可用於語法的標記作爲基準。 parser grammar Java6Parse; options

    1熱度

    1回答

    我試圖解析一個可以包含表創建腳本或索引創建腳本的文件。 以下是語法。當我運行的腳本與一些垃圾輸入規則create xyz table 我得到一個錯誤的line 1:0 no viable alternative at input 'create' 然而,當我運行table_script或index_script我得到具體的錯誤消息line 1:8 missing 'table' at 'xxxta

    0熱度

    1回答

    實際上我有兩個問題,我希望能夠回答,因爲它們是半依賴於我的工作的。下面是語法+樹語法+ Java測試文件。 什麼,我其實是想實現的是以下幾點: 問題1: 我有正確分析我的語言的語法。我想對變量聲明做一些語義檢查。所以我創建了一個樹步行者,到目前爲止它已經半工半工。我的問題是它沒有捕獲整個表達式。例如, float x = 10 + 10; 它只捕獲第一部分,即10.我不知道我做錯了什麼。如果我

    0熱度

    2回答

    問題是關於如何訪問語法中{"action"}塊內的當前樹節點。 我談論Java目標,所以內部產生規則的方法,我想訪問對象root_1(見下文,生成的標準代碼,SUBJECT這裏是我的語法裏面的道理,也沒關係): { Object root_1 = (Object)adaptor.nil(); root_1 = (Object)adaptor.becomeRoot((Object

    0熱度

    1回答

    我想建立使用ANTLR編譯器和現在我想在我的語言標識符的長度限制爲小於9 我的代碼現在看起來是這樣的: IDENTIFIER: CHAR(CHAR|INT)*; 哪裏CHAR和INT都是片段。我想知道是否有任何方便的方式爲我實現,而不是使用這個我的目標: IDENTIFIER: CHAR(CHAR|INT)(CHAR|INT)...(CHAR|INT);//repeate (CHAR|INT)