xred 发布留言 2008-7-8 10:04
【Advanced】关于语法加亮
通过google进入到贵论坛,发现有个飞燕语法加亮,不过碍于密码没看到源代码,不过看到了源代码的大小,只有9K,基本可以断定该程序不具有扩展的能力,至于能否解释子语言不得而知。不知道原作者和贵论坛的其它的高手有没有深入考虑该问题,并且深入考虑其中的效率和扩展性。
我也来秀一下,这是我写的一个test,不过还是不满意。期待大家的积极讨论,我是做编辑器的,这是我的Blog,
http://www.cppblog.com/megax。出于方便,这个test是用c#写的,目前每秒可以解释20万左右个语法单位,如果去除掉io的部分,则可以达到40万个语法单位。改成c++,也基本上在这个水平。只是在扩展性上还有待进一步改善。
希望大家能积极讨论,发表自己的见解。

StarWing83 发布留言 2008-7-8 10:57
飞燕只是写着玩。编辑器以后有时间准备做,现在太忙……
StarWing83 发布留言 2008-7-8 11:00
解释子语言不重要,关键在于子语言是否设计高效。现在VIM类直接输入子语言的编辑器不会很流行的,子语言主要用在撤销/重复/宏这三个功能上面。这些功能其实都可有可无,如果做编辑器,第一个实现的就是外挂功能。分命令行式exe外挂(用来支持编译器和格式调整器),和DLL外挂(语言支持,比如自定义缩进,语法高亮等等)。其余的不是很考虑。我觉得编辑器只要能完成你想要的功能(编辑代码)就完全够了,功能太多,太全面只能增加其使用的难度。
xred 发布留言 2008-7-8 11:08
你误会我的意思了,我说的子语言的概念是,c++或者c中可以嵌入汇编,htm中可以嵌入css,asp,php,js,被嵌入的子语言叫子语言。
程序员用的编辑器一个很重要的功能,就是提供的渲染语法的引擎是否够好,就是你在屏幕上看到的花花绿绿的代码。外挂不是核心功能,暂时忽略,我的外挂是通过lua来实现的,不需要编译。其它的功能比如代码的注释,缩进,也是通过lua来实现的。对于编辑器而言,这些都不是核心,核心的东西是文档的管理,高速自动换行,和语法渲染。
现在我们讨论的是语法渲染。
对于渲染而言,最难的是如何区分子语言,并且套用不同的schema,绝对不可用正则,我试过了,非常的慢。在区分完之后,用正则进行匹配则是可以的。
页: [1]