只有在AST构建器中留下足够的信息时,才能重新生成文本。ANTLR大多数情况下不会这样做(例如,那个数字的显示基数是什么?)如果您想知道如何实现此操作,请参阅我的答案“将AST编译回源代码”https://dev59.com/Sm025IYBdhLWcg3wvIgo#5834775。 - Ira Baxter
可能值得更强调的是,任何特定的AST仍然代表了以其所写的语言为基础的程序语法,因此不能直接转换为另一种语言。 - Hurricane Hamilton
2如果您正确设计AST,它们可以携带足够的信息来重新生成由AST节点表示的语言的等效源文本。将一个语言的AST转换为另一个语言是可能的,但这实际上是代码迁移,而不是重新生成源文本。有关此问题的更多详细信息,请参见https://dev59.com/anA75IYBdhLWcg3wJFYL#3460977。 - Ira Baxter