I';我写了一个ANTLR语法,想转换成JSON吗

I';我写了一个ANTLR语法,想转换成JSON吗,json,parsing,grammar,antlr3,Json,Parsing,Grammar,Antlr3,我已经创建了一个ANTLR语法,它可以正确地生成与之关联的文件类型的树 现在怎么办?我真的不明白如何让这个.g文件现在解析一些东西。我如何让它在我的文件系统中运行,它将它解析成什么?目标是将这些文件(其中一些)转换为JSON格式。任何建议或澄清,读了很多教程,我觉得很无聊,因为我似乎无法从中得到我想要的东西 我正在用JAVA和ANTLR 3.4进行编程。要从文件系统中读取和解析,您可以编写如下代码: MyLexer lex = new MyLexer(new ANTLRFileStream(ar

我已经创建了一个ANTLR语法,它可以正确地生成与之关联的文件类型的树

现在怎么办?我真的不明白如何让这个.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格式的信息吗?好吧,有几种不同的方法来指定解析操作,但通常您会在.g文件规则中指定它,例如:foo returns[String result]:some pattern{$result=convertapternotajsonobject($String);} ; (您将拥有自己的模式,并编写自己的convertapternotajsonobject()函数)因此,让我澄清一下,这里有一个更全面的示例:规则:Value(Value | Int)*某物;我该怎么办?我会把规则:Value(Value | Int)*某物返回[SomeFunction Value Int];或者什么?你把动作代码放在{}括号里;这将最终被放入解析器并在识别时调用。如果您想更好地了解ANTLR,我强烈推荐《最终ANTLR参考》一书,请参阅: