antlr

    0熱度

    1回答

    給定一個語法 script: statement*; statement: do | check; do: 'do'; check: 'check'; 如何可以解析非根節點?換句話說, ScriptParser sp = new ScriptParser(); StatementContext sc = sp.parse<StatementContext>("do"); 我簡化了上

    0熱度

    1回答

    如何將ANTLR4配置爲而不是生成父類? 定的文法MyGrammar statement: 'do' | 'check'; ANTLR4產生 class MyGrammar { class StatementContext {} } 由於ANTLR4所有XXXContext類生成一個父類,這個類名必須在任何用途來使用。所以,我必須寫 MyGrammar.StatementCon

    0熱度

    1回答

    我使用ANTLR4和Java編寫代碼indentor。我已成功生成詞法分析器和分析器。我正在使用的方法是遍歷生成的分析樹。 ParseTreeWalker mywalker = new ParseTreeWalker(); mywalker.walk(myListener, myTree); 自動生成* BaseListener有類似下面的方法...... @Override pu

    0熱度

    1回答

    我的antlr(我使用的是IntelliJ插件)匹配我的解析器規則中的第一個表達式的所有輸入,這顯然會導致錯誤。 簡單的例子: grammar test; rule : WORD '+' WORD; WORD : [a-z]+; 立即測試: 輸入= 'faefae' 得到我: 線1:6不匹配輸入 '' 期待 '+' (到目前爲止它是有道理的) 輸入= 'faefae +': 線1:0不匹配

    1熱度

    1回答

    我對編譯器理論比較陌生,我只是想創建一個語法來解析一些比較以便稍後評估它們。我發現antlr是一個強大的工具來指定語法。根據我在理論中學到的知識,我知道具有較高優先級的運算符必須比具有較低優先級的運算符在更深層次上更低。另外,如果我想要一些規則保持聯想,我知道我必須將遞歸設置在規則的左側。知道我已經創建了一個基本語法來使用& &,||,!=,==,<,>,< =,> =,(,)和! start

    0熱度

    1回答

    我有以下語法: grammar myProject; program: WS EOF myRules; WS: [ \t\r\n]+ -> skip; myRules: myRule+; myRule: SELECTOR OPEN declarations CLOSE; declarations: declaration+; declaration: PROPERTY EQ valu

    0熱度

    1回答

    我必須寫一個解析器解析輸入到解析樹,但我跑到一個問題,我的令牌和令牌自動生成。下面的例子是我的問題的簡短版本。這是語法: s : a B a; a : '-' C | C; B : '-' | '+'; C : '1' | '2';> WS : (' ' | '\t' | '\r' | '\n')+ -> skip ; 我輸入:- 1 - 2。 我的輸出

    1熱度

    1回答

    的Python(均爲2/3)中的代碼語法的解析器蟒模塊中以下行從語法ANTLR4結果產生: self.state = 79 self.state() 正如預期的那樣,這導致以下錯誤: TypeError: 'int' object is not callable

    0熱度

    3回答

    我有一個語法是這樣的: grammar MyGrammar; field : f1 (STROKE f2 f3)? ; f1 : FIELDTEXT+ ; f2 : 'A' ; f3 : NUMBER4 ; FIELDTEXT : ~['/'] ; NUMBER4 : [0-9][0-9][0-9][0-9]; STROKE : '/' ; 此作品不夠好,田間地頭f1 f2

    0熱度

    1回答

    我想知道如何在語法分析過程中檢查所有路徑在函數中的返回值。所以說,在詞法 RETURN: 'return'; PRINT: 'print'; IF:'if'; ELSE: 'else'; THEN:'then'; PLUS: '+'; MINUS:'-'; EQUALS: '=='; DIGIT: '0'..'9'; OPEN:'{'; CLOSE:'}'; STRING: