随笔-341  评论-2670  文章-0  trackbacks-0
    接着上一篇的话题。开发智能提示首要的问题就是开发一个高性能的语法分析器。一个高性能的语法分析器总是包含一个高性能的词法分析器的。本系列的第一篇已经提到了用C#和状态机写着色器对10万行代码进行着色只需要半秒。鉴于我们大部分的程序文件都只是几千行,因此用相同的技术开发的词法分析器显然可以在几十毫秒内完成对文件的分析,从而再也不需要担心词法分析器的性能问题了。

    着色器的状态机一般都比词法分析器的状态机简单,因为我们总是使用一个颜色来表达一些类型的记号(譬如操作符、数字和名字一般都用同样的颜色——黑色)。因此我们每当支持一种新语言或者当语言升级的修改IDE的时候,总是要同时修改两个状态机。手写状态机是很容易出错的,就如同手写语法分析器也很容易出错一样。语法分析器的解决办法是让你给文法来生成语法分析器的代码,因此词法分析器和着色器也使用类似的方法:给状态机生成代码。

    目前这个状态机只做了一半:只能画状态,暂时还不能指定颜色或者记号类型。当然添加一个指定颜色的功能是很简单的,不过我还需要想一想如何用图像来表达,让状态机显得更清晰。今天做了一个晚上搞定了状态机的编辑程序,如图所示:

    接下来就可以开发两个功能,第一个是生成着色器的代码,第二个是生成词法分析器的代码。这样就可以避免因为程序写错从而省下一大堆调试的时间了。
posted on 2010-09-19 09:58 陈梓瀚(vczh) 阅读(7084) 评论(6)  编辑 收藏 引用 所属分类: 开发自己的IDE

评论:
# re: 开发自己的IDE(四) 2010-09-19 16:33 | 路青飞
有个小小的疑问,为啥要用C#开发,为啥不用C++  回复  更多评论
  
# re: 开发自己的IDE(四) 2010-09-19 17:45 | 空明流转
我说师祖啊,你每天都要被C++的拥趸折磨很长时间呐。其实我也希望你搞个C++的,然后我就可以用了。你现在这样我咋移植。。。  回复  更多评论
  
# re: 开发自己的IDE(四) 2010-09-19 19:04 | 陈梓瀚(vczh)
@空明流转
我整个引擎都是C++写的,只是IDE部分不是哈。你就让linux用户装个mono,照样移植。  回复  更多评论
  
# re: 开发自己的IDE(四) 2010-09-19 19:04 | 陈梓瀚(vczh)
@路青飞
因为C++写GUI吃力不讨好,为什么不用C#呢。  回复  更多评论
  
# re: 开发自己的IDE(四) 2010-09-20 02:43 | meax
@陈梓瀚(vczh)
大多数人都喜欢小巧快速,或者称之为精致的东西。虚拟机目前还做不到这一点  回复  更多评论
  
# re: 开发自己的IDE(四) 2010-09-20 18:07 | 陈梓瀚(vczh)
@meax
IDE本来就不精致,追求做IDE的东西要精致这显然是不合理的哈。你看那个臃肿的java做eclipse和JBuilder不也是那么多人用。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理