Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ANTLR序列化_Java_Serialization_Antlr_Antlr3 - Fatal编程技术网

Java ANTLR序列化

Java ANTLR序列化,java,serialization,antlr,antlr3,Java,Serialization,Antlr,Antlr3,使抽象语法树可序列化为XML文件的最佳策略是什么 上的“ANTLR树与自定义树”一章显示了一个ANTLR语法示例、一些输入以及给定输入的AST格式化输出。本章包含一个C++程序的链接,以产生这个格式化输出。 它不是xml,但非常接近,可以作为一个很好的起点。从根开始递归地遍历AST 下降到类型为X的节点时,打印开始标记: <X> 然后从左到右进入儿童,打印他们的内容。 处理完所有子项后,打印结束标记: </X> 在L类型的叶节点上,打印 <L va

使抽象语法树可序列化为XML文件的最佳策略是什么

上的“ANTLR树与自定义树”一章显示了一个ANTLR语法示例、一些输入以及给定输入的AST格式化输出。本章包含一个C++程序的链接,以产生这个格式化输出。
它不是xml,但非常接近,可以作为一个很好的起点。

从根开始递归地遍历AST

下降到类型为X的节点时,打印开始标记:

 <X>

然后从左到右进入儿童,打印他们的内容。 处理完所有子项后,打印结束标记:

 </X>

在L类型的叶节点上,打印

 <L value="abc"/>

可能具有感兴趣的属性值

完成了

如果跟踪递归嵌套,则可以打印出标记开始和结束 使用前导递归和深度空间,然后使用换行符。 然后您的XML将被很好地嵌套