我熟悉解析器生成器和解析器从头到尾一次处理流的基础知识。
我的问题是针对语法高亮文本编辑器等情况。当用户将每个字符更改为一个非常大的文件时,必须执行大量计算才能重新解析和重新突出显示整个文件。
我能想到的简单优化:
- 延迟该操作,直到按键空闲几秒钟
- 重新解析整个文件,但格式只能应用于可见视口文本
但是是否有普遍适用的技术来仅重新处理“本地”文本而不从文件开头开始?
想法:
- 更改的上游影响似乎不如下游更改的影响,因此取决于算法允许多少前瞻令牌,也许我们可以从那么多令牌重新处理回文件末尾?
- 我们知道在大多数重新处理请求时光标在哪里,因此我们可以捕获该点的状态快照以从那里恢复(如果有帮助的话)。
但我认为这已经解决了,或者有人知道它不能工作,并且解析整个文件对于一般语法来说总是必要的。
谢谢!