面朝大海,春暖华开

focus on scientific computue, 3dgis, spatial database
专注于科学计算、GIS空间分析

 

[思考]怎么在C#中加入新功能

怎么在C#中加入功能(语法,关键词)?

本文说的不是自定义类,函数之类的,指的是修改,增加C#的语法。

重新开发一门新的语言,工作量太大,很难做到科学实用,而是也难以跟上C#的更新进度,所以选择扩充C#的方法,以满足专业领域的应用。

情景一:定义一个交换运算符 <=> 实现函数 swap(a,b)的功能。上代码

int a = 3;

int b = 5;

a <=> b;

之后a,b值互换(前提是a,b两个变量是兼容类型)

情景二:定义with关键词

string[] fileNames;
with(new OpenFileDialog())
{
    .Filter = "*.txt|*.txt";
    .Multiselect = true;
    if (.ShowDialog() == DialogResult.OK)
     {
         fileNames = .FileNames;
     }
 }

 //Do(fileNames);

上面两个例子可以显著减少临时变量的使用数量。

思路:把增加(修改)的语法,关键词翻译成标准的C#代码,然后交给visual studio去编译处理。

问题:

1. 怎么在vs代码编辑器中集成这些变化的功能,例如代码智能提示,语法动态检查,代码着色。

2. 把扩充的关键词和语法翻译成底部标准语法,利用什么接口?例如翻译后的代码保存在哪里?怎么让vs自动编译翻译后的代码,怎么处理以前和翻译后的代码的关系?

3. 怎么在编译器中集成这个功能?例如怎么让编译针对以前的代码,给出正确的行号,正确的语法识别?

4. 添加的功能,怎么在别的语言中应用?怎么跟VB.net互操作?

 

因为mono和monoDevelopment都是开源的,修改monoDevelopment源代码的方式实现上述功能,该做哪些工作?

如果利用visual studio来开发,利用插件,能实现么?

DSL (domain specific language)呢?

 

 

posted on 2011-04-14 18:42  风过 无痕  阅读(332)  评论(0编辑  收藏  举报

导航

向日葵支付宝收钱码