让我们假设我使用的是Python3.g4语法:
如何编写解析python脚本的程序,遍历语法树并输出相同的旧程序?
后来我想对程序进行一些更改,但是现在如果我能重现该程序,我会很高兴。
到现在为止,我想在走抽象语法树时会丢失一些信息,并且没有简单的方法。
答案 0 :(得分:0)
问题是您正在丢失隐藏频道上的所有令牌内容。因此,您必须检查解析树中的每个标记是否在TokenStream
旁边的ParseTree
中有一个隐藏的标记。
为此,getHiddenTokensToRight
中的方法getHiddenTokensToLeft
和BufferedTokenStream
应该是此工作的正确工具。
但是,如果您只想复制已解析的输入,则应尝试直接访问TokenStream
并在Token
之后从Token
读出Token
,而无需关注public string ReturnDateForDisplay
{
get
{
return this.VoluntaryWork.DateEnded.ToString("d");
}
}
{1}}已启用
有了它,您应该能够重现原始输入而没有太多问题。