我使用由ANTLR工具生成的Lexer和Parser类(以C#为目标)。假设我已经解析了一些代码并为它获得了一个AST树。如果我的初始代码的一部分发生了变化并且我只想更新树的相应部分怎么办?有没有一种常见的方法可以做到这一点? 例如,在一些函数体内插入了一行代码。我想重建代表此函数的树的一部分并更新后续函数标记的位置
答案 0 :(得分:1)
有一些项目可以完成你想要完成的任务。 但我不知道ANTLR是否支持这一点。 您可以查看:http://en.wikipedia.org/wiki/Incremental_compiler
对于语法高亮提议,我建议在语法中使用正则表达式来表示不同的标记。 (如果您只更新正在处理的行,则不应出现任何性能问题。)