2012-06-12 44 views
0

我已經創建了一個ANTLR語法,可以正確地生成與它關聯的文件類型的樹。我寫了一個ANTLR語法,想轉換爲JSON

現在呢?我真的不知道如何讓這個.g文件現在解析一些東西。我如何讓它在我的文件系統中執行,並將它解析爲什麼?目標是將這些文件(其中一些)轉換爲JSON格式。任何建議或澄清,一直在閱讀很多教程,我覺得無聊,因爲我似乎無法得到我要找的東西。

我在JAVA和ANTLR 3.4編程。

+0

在你想更好地瞭解ANTLR的情況下,請參閱:http://stackoverflow.com/questions/278480/antlr-tutorials –

回答

1

讀取和文件系統的分析,你會寫是這樣的:

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(); 
} 

(取決於輸出語言,當然)

+0

我已經這樣做了,但我無法讓它與完整的對象正常工作。我可以得到parser.oneOfMyOtherObjects()來解析,但不是一個完整的文件。你能告訴我更多關於如何將「解析」內容轉換爲json格式嗎? – jQwierdy

+0

那麼,有幾種不同的方式來指定解析動作,但通常你會在你的.g文件規則中指定它,如下所示: foo返回[字符串結果] :*某些模式* {$ result = convertAPatternIntoAJSONObject($ String); } ; (您將有自己的模式,你會寫自己的convertAPatternIntoAJSonObject()函數) –

+0

所以讓我澄清,繼承人一個更全面的例子: 規則:價值(價值|智力)*的東西 ; 我該怎麼辦?我只需要將 規則:值(值| Int)*東西 返回[SomeFunction Value Int] ; 還是什麼? – jQwierdy

相關問題