一个简单的例子:
(grammar):
stat: ID '=' expr NEWLINE -> ^('=' ID expr)
expr: atom '+' atom -> ^(+ atom atom)
atom: INT | ID
...
(input text): a = 3 + 5
Run Code Online (Sandbox Code Playgroud)
相应的'3 + 5'的CommonTree包含一个'+'标记和两个子标记(3,5).
此时,恢复解析为此树('3 + 5')的原始输入文本的最佳方法是什么?
我已经获得了CommonTree对象中单个标记的文本,位置和行号,因此从理论上讲,可以确保只丢弃空格标记并使用此信息将它们拼凑在一起,但它看起来容易出错.
有一个更好的方法吗?