其实Visual Studio的IDE环境是我见到的最好的编程环境了。
聪明的智能感知,老实讲,这样的功能实现起来并不是多么的深奥,但是细致的考虑真的不得不PF一下。
在一定程度上来讲,如果使用Visual Studio .net 或者(Visual Stuio6)进行一种特定语言的开发也真的是没有多大的必要进行再一次的开发,因为VS本身就支持这样的功能,就拿我们现在要用到的
atlas语言来说吧,首先只要定义了atlas的语法文件,就有办法让Vs.net 2003 来支持。
但是有的时候,这样使不够的。我们的这个应用必须显式的支持多种语言,尤其是这个
atlas语言。

另外,VS仅仅做到了关键字加亮的程度,有的时候我们需要做到
Visual Assist 这么智能的感知,包括对于变量名称,函数名称的提示。
1.代码加亮
因此,决定自己来做语法加亮引擎,同时在制作加亮引擎的同时,留出编程接口,以便第三方开发出更好的加亮引擎。坦白讲,这样做也有逃避劳动的嫌疑,因为自认为语法加亮本人无法做到特别的好。

2.design window
由于项目应用的特殊性,不能使用我们常见的按钮,输入框这些控件,必须使用元器件类似的控件,因此design window需要用VC来开发,并预留开发接口,以便将来更多的元器件库的加入。其实这里的所谓接口是很简单的,也没有必要做成ActiveX那么复杂的。只要是包含指定API函数和指定类型的dialog的DLL文件即可,复制到软件运行的control目录即可。

3.编译,链接
我们这样的小公司不可能自己做编译器了,所以我们的编译是调用语言自己本身提供的编译器来实现的,事实上VS本身也是这样实现的,不过按照标准,首先声称make文件,然后再进行编译,以便将来这个开发软件也可以运行在非windows平台。
moslem提供的方法自然也是可以的,不过我采用的办法是利用管道,这样用户在编译的同时就可以看到输出的结果,而不是等到最终。
此外,由于需要支持多种语言,而不同语言的编译器的输出文本格式是不一样的,因此需要将对编译器的文本输出的分析单独做成一个DLL,以实现错误定位的功能。
4.调试
为实现调试的功能,编译器首先是必须支持Debug开关的,否则即使可以用SoftIce设置断点,意义也不是很大,小马哥给我介绍的PCH 和PDB文件的方法我现在还没有时间进行。
整个这个编辑器的开发,我对调试这一块是最没有底的,大家有什么好办法呀。