我想知道在流行的文本编辑器中使用什么技术来快速掌握一个巨大的源文件(例如C ++)。
每次编辑文件时重新整理整个文档(即我添加一些字符)很快就会变得不可行......但这些字符可能会改变所有内容(朝向顶部,向下或两者)进入源文件,就像插入
时一样/*
或
\*
在巨大的文件中间。
是否有标准的运行时lexing方法?
答案 0 :(得分:2)
我假设编译器使用lex源文件的技术相同。
一个好的基于FSA的词法分析器(或一个手写的词法分析器)每个字符只花费几条指令。假设一台耗时5 nS的klunky机器执行一条指令(慢速WRT现代工作站)。如果你有一个百万字符的缓冲区(大约300,000行30个字符),并且需要10个指令来处理每个缓冲区,总的lexing时间是5000万nS = .05秒。
为什么你认为这是一个问题?