数据和 Microsoft 中间语言 (MSIL) 并可选择在磁盘上生成 PE 文件的类。这些类的主要客户端是脚本引擎和编译器。很多时候,对于某个行业的业务而言,所使用的编程语言的某个功能是非常频繁,而别的功能基本很少使用。
因此对于寻附上重点的功能,原有的语言,难以满足要求,
所以世界上出现了很多的专用语言。
但是重新开发一门专用语言,工作量是巨大的,所以跟通用的c,c++,C#,vb, java, delphi相比 很多专用语言的通用功能非常弱, 连基本的语句结构,可能也有很大的缺陷,编辑器和调试器功能就相当弱。
那充,如何在一门成功的主流语言里面,加入所需的功能呢?
能不能开放(不是开源)编译器语法API,这样认都可以跟写c++,vb,C#,java一样,简单的就能开发新的语言元素?
像那个parallet语言,本来只是加入异步支持,却要从头写个全功能的编译器,后面还有编辑器的智能提示,语法高亮,调试...一大堆的问题!
如果编译器(结合IDE)提供二次开发,那么就可以加入自己专用的语法,关键字,扩充已有功能,当然不能去掉已有的功能,但是可以替换 override,overload,或者deprecate(对原有功能进行标记,注为过期,如果使用,提出提示,警告,建议新功能,但向后兼容,可以正确编译运行)。
你喜欢VB,就可以把VB的某些语言功能加入进来,喜欢Java,就把Java中想要的功能加进来,喜欢lisp,就把lisp的功能加进来,python,ruby,boo,js,fortran, matlab, r ...
这样就获得了原编译器的所有功能,编辑器的智能提示,语法高亮等功能,以及IDE的调试等...
注:编译器二次开发,跟.net提供的System.Reflection.Emi不一样。Emit是元数据和中间语言工具,我这里说的目标是开发一门新语言,或者在语言特性(主要是DSL,不是扩充函数,类)