接着
上一篇的话题。开发智能提示首要的问题就是开发一个高性能的语法分析器。一个高性能的语法分析器总是包含一个高性能的词法分析器的。本系列的
第一篇已经提到了用C#和状态机写着色器对10万行代码进行着色只需要半秒。鉴于我们大部分的程序文件都只是几千行,因此用相同的技术开发的词法分析器显然可以在几十毫秒内完成对文件的分析,从而再也不需要担心词法分析器的性能问题了。
着色器的状态机一般都比词法分析器的状态机简单,因为我们总是使用一个颜色来表达一些类型的记号(譬如操作符、数字和名字一般都用同样的颜色——黑色)。因此我们每当支持一种新语言或者当语言升级的修改IDE的时候,总是要同时修改两个状态机。手写状态机是很容易出错的,就如同手写语法分析器也很容易出错一样。语法分析器的解决办法是让你给文法来生成语法分析器的代码,因此词法分析器和着色器也使用类似的方法:给状态机生成代码。
目前这个状态机只做了一半:只能画状态,暂时还不能指定颜色或者记号类型。当然添加一个指定颜色的功能是很简单的,不过我还需要想一想如何用图像来表达,让状态机显得更清晰。今天做了一个晚上搞定了状态机的编辑程序,如图所示:
接下来就可以开发两个功能,第一个是生成着色器的代码,第二个是生成词法分析器的代码。这样就可以避免因为程序写错从而省下一大堆调试的时间了。
posted on 2010-09-19 09:58
陈梓瀚(vczh) 阅读(7121)
评论(6) 编辑 收藏 引用 所属分类:
开发自己的IDE