我已經創建了一個ANTLR語法,可以正確地生成與它關聯的文件類型的樹。我寫了一個ANTLR語法,想轉換爲JSON
現在呢?我真的不知道如何讓這個.g文件現在解析一些東西。我如何讓它在我的文件系統中執行,並將它解析爲什麼?目標是將這些文件(其中一些)轉換爲JSON格式。任何建議或澄清,一直在閱讀很多教程,我覺得無聊,因爲我似乎無法得到我要找的東西。
我在JAVA和ANTLR 3.4編程。
我已經創建了一個ANTLR語法,可以正確地生成與它關聯的文件類型的樹。我寫了一個ANTLR語法,想轉換爲JSON
現在呢?我真的不知道如何讓這個.g文件現在解析一些東西。我如何讓它在我的文件系統中執行,並將它解析爲什麼?目標是將這些文件(其中一些)轉換爲JSON格式。任何建議或澄清,一直在閱讀很多教程,我覺得無聊,因爲我似乎無法得到我要找的東西。
我在JAVA和ANTLR 3.4編程。
讀取和文件系統的分析,你會寫是這樣的:
MyLexer lex = new MyLexer(new ANTLRFileStream(args[0]));
CommonTokenStream tokens = new CommonTokenStream(lex);
MyParser parser = new MyParser(tokens);
try {
parser.expr();
} catch (RecognitionException e) {
e.printStackTrace();
}
(取決於輸出語言,當然)
我已經這樣做了,但我無法讓它與完整的對象正常工作。我可以得到parser.oneOfMyOtherObjects()來解析,但不是一個完整的文件。你能告訴我更多關於如何將「解析」內容轉換爲json格式嗎? – jQwierdy
那麼,有幾種不同的方式來指定解析動作,但通常你會在你的.g文件規則中指定它,如下所示: foo返回[字符串結果] :*某些模式* {$ result = convertAPatternIntoAJSONObject($ String); } ; (您將有自己的模式,你會寫自己的convertAPatternIntoAJSonObject()函數) –
所以讓我澄清,繼承人一個更全面的例子: 規則:價值(價值|智力)*的東西 ; 我該怎麼辦?我只需要將 規則:值(值| Int)*東西 返回[SomeFunction Value Int] ; 還是什麼? – jQwierdy
在你想更好地瞭解ANTLR的情況下,請參閱:http://stackoverflow.com/questions/278480/antlr-tutorials –