ds 语言 Specification(规格说明书)
要写一种语言,我早有准备了,现在开始起草规格说明书,请路过的人都来参与。DD已经在ccrun.com做广告了,应该知名度会逐渐上升的。
虽然我已经广发请帖征求良方,可是还是孤身奋战http://community.csdn.net/Expert/TopicView3.asp?id=4690611
虽然我的前期作品也得到一定的肯定
http://www.softpedia.com/get/Multimedia/Graphic/Graphic-Others/Duceland-Designer.shtml
"We believe that the concept can be changed once the functions are developed to a certain level."
现在是动手做实际的累活的时候了。
2 数组。数组自动形成,例如
好处,在数据库的记录操作的时候能自然使用,例如声明一个,学生信息录入窗口,窗口中放入一个输入姓名的编辑框,自然,该编辑框是单个变量,但是如果是多行编辑的话,则使用上述特性更加自然。又如获取全部成员的语法:
3 自成的toString 和 fromString 的序列化和反序列化,该特性在DD中已经得到使用
4 别名,用户e文和中文同时混合使用
例如
5 防止重入
例如,有时候在Edit1的改变事件中设置Edit2的内容,而在Edit2的改变事件中反过来又设置Edit的内容,结果是事件重入,导致stack overload,死循环直至栈用完,所以事件加入once关键字后可以防止重入。
6 动态成员数据和操作,生成的对象名字化。例如
7 合并类
例如:VCL的TForm 和 MFC的CWnd非常类似,提供一种比较容易的替代方法。
8 动态继承
A inherit B;
效果是A成为了B的子类。
其他在协同方面的特性还在设计中,请有协同OA,或游戏编写经验者,或编程语言高手新手来指点指点。更请语言爱好者倾注你的期望。
指令系统:
虽然我已经广发请帖征求良方,可是还是孤身奋战http://community.csdn.net/Expert/TopicView3.asp?id=4690611
虽然我的前期作品也得到一定的肯定
http://www.softpedia.com/get/Multimedia/Graphic/Graphic-Others/Duceland-Designer.shtml
"We believe that the concept can be changed once the functions are developed to a certain level."
现在是动手做实际的累活的时候了。
一、前言
在说明ds 语言之前,先说明ds与其他语言的不同之处,也是读者最关心的地方
二、与其他语言不同之处
1 类的方法可以随时hook,例如1 class A
2 {
3 public void func();
4 public int x;
5 };
那么2 {
3 public void func();
4 public int x;
5 };
1 A a;
2 a.func+=after_call; //这里表示在func之后调用after_call
3 a.func-=before_call; //这里表示在func之前调用before_call
4 a.x.get+=after_call;//对于变量的存取也可hook
5 a.x.get-=before_call;
该特性将函数和事件混合起来,而且,如果不是使用变量,而是使用类函数赋值2 a.func+=after_call; //这里表示在func之后调用after_call
3 a.func-=before_call; //这里表示在func之前调用before_call
4 a.x.get+=after_call;//对于变量的存取也可hook
5 a.x.get-=before_call;
1 A.func=B.func;
结果是,打这一行执行后的A的所有实例的func函数都执行了B的func函数了。将怎么处理其中的成员呢???2 数组。数组自动形成,例如
1 A a;
2 a.x=100;//与
3 a.x[0]=100; //一致
2 a.x=100;//与
3 a.x[0]=100; //一致
好处,在数据库的记录操作的时候能自然使用,例如声明一个,学生信息录入窗口,窗口中放入一个输入姓名的编辑框,自然,该编辑框是单个变量,但是如果是多行编辑的话,则使用上述特性更加自然。又如获取全部成员的语法:
1 object m=memberof(a);//memberof是关键字
那么m可以直接使用,当然表示m[0],即第一个成员,也可以m[9]表示第10个成员啦3 自成的toString 和 fromString 的序列化和反序列化,该特性在DD中已经得到使用
4 别名,用户e文和中文同时混合使用
例如
1 #alias class<-->类
2 #alias public<-->公有
3 类 学生录入窗体
4 {
5 #alias 设置值<-->SetValue
6 #alias from "c:\\别名对照表.txt" //从外部装入别名对照表
7 公有 设置值(....);
8 };
2 #alias public<-->公有
3 类 学生录入窗体
4 {
5 #alias 设置值<-->SetValue
6 #alias from "c:\\别名对照表.txt" //从外部装入别名对照表
7 公有 设置值(....);
8 };
5 防止重入
例如,有时候在Edit1的改变事件中设置Edit2的内容,而在Edit2的改变事件中反过来又设置Edit的内容,结果是事件重入,导致stack overload,死循环直至栈用完,所以事件加入once关键字后可以防止重入。
6 动态成员数据和操作,生成的对象名字化。例如
1 class A
2 {
3 public int x;
4 A()
5 {
6 adddef(int y);
7 }
8 };
9
10 A a;
11 a.y=100;//此处为动态成员数据
2 {
3 public int x;
4 A()
5 {
6 adddef(int y);
7 }
8 };
9
10 A a;
11 a.y=100;//此处为动态成员数据
7 合并类
例如:VCL的TForm 和 MFC的CWnd非常类似,提供一种比较容易的替代方法。
1 A+=B;
效果是,A和的所有实例已经含有B的成员函数和成员数据,同名者只取A的,加上特点1 就可以使这项功能更强大。8 动态继承
A inherit B;
效果是A成为了B的子类。
其他在协同方面的特性还在设计中,请有协同OA,或游戏编写经验者,或编程语言高手新手来指点指点。更请语言爱好者倾注你的期望。
指令系统:
指令号 |
附加信息 |
指令描述 |
系统操作 |
||
00000000 |
(null) |
无执行效果,但是当前的线程和线索都让出处理机,重新进行调度 |
00000001 |
(null) | 停机等待 |
算术操作符 |
||
00010001 | 操作数0,操作数1 | 操作数0 = 操作数1 |
00010001 |
操作数0,操作数1,操作数2 |
操作数0 = 操作数1 + 操作数2 |
00010003 | 操作数0,操作数1,操作数2 | 操作数0 = 操作数1 - 操作数2 |
00010003 | 操作数0,操作数1,操作数2 | 操作数0 = 操作数1 * 操作数2 |
00010003 | 操作数0,操作数1,操作数2 | 操作数0 = 操作数1 / 操作数2 |
00010003 | 操作数0,操作数1,操作数2 | 操作数0 = 操作数1 % 操作数2 |
00010003 | 操作数0,操作数1 | 操作数0 += 操作数1 |
00010004 | 操作数0,操作数1 | 操作数0 -= 操作数1 |
00010005 | 操作数0,操作数1 | 操作数0 *= 操作数1 |
00010005 | 操作数0,操作数1 | 操作数0 /= 操作数1 |
00010005 | 操作数0,操作数1 | 操作数0 %= 操作数1 |
函数调用 |
||
00020005 | 操作数0,操作数1 | 操作数0类名,操作数2构造函数参数列表 |
00020005 | 操作数0,操作数1 | 操作数0对象函数,操作数1参数列表 |
00020005 | 操作数0,操作数1,操作数2 | 操作数0对象函数,操作数1参数列表,操作数2出错对象函数 |
00020005 | 操作数0,操作数1 | 把操作数1推入操作数0参数列表对象 |
00020005 | 操作数0,操作数1 | 操作数0为函数返回值 = 操作数1 |
00020005 | 操作数0,操作数1 | 操作数0 = 操作数1为函数返回值 |
00020005 | 操作数0,操作数1 | 操作数0对象函数做完立即调用操作数1对象函数 |
00020005 | 操作数0,操作数1 | 操作数0对象函数做之前调用操作数1对象函数 |
线程与同步 |
||
00030005 | 操作数0 | 置操作数0临界变量 |
00030005 | 操作数0 | 复位操作数0临界变量 |
00030005 | 操作数0,操作数1 | 监视操作数0得值调用操作数1对象函数 |
00030005 | 操作数0,操作数1 | 监视操作数0置值调用操作数1对象函数 |
00030005 | 操作数0,操作数1 | 并发操作数0对象函数列表,操作数1参数列表列表 |
00030005 | 操作数0,操作数1 | 操作数1对象函数置入操作数0对象函数列表 |
00030005 | 操作数0,操作数1 | 操作数1参数列表置入操作数0参数列表列表 |
00030005 | 操作数0,操作数1 | 等待操作数0对象函数 |
00030005 | 操作数0 | 置操作数0对象函数为单一入口,其他线程或本线程递归调用则不调用此函数而不是等其完成 |
00030005 | 操作数0 | 复位操作数0单一入口对象函数 |
对象 |
||
00030005 | 操作数0,操作数1 | 设置操作数0类名继承操作数1类名的所有成员数据和成员函数 |
00030005 | 操作数0,操作数1 | 序列化操作数1对象到操作数0变量 |
00030005 | 操作数0,操作数1 | 从操作数1变量反序列化成操作数0对象 |
流程控制 |
||
00040005 | 操作数0 | 跳转操作数0程序段偏移量 |
00040005 | 操作数0,操作数1 | 如果操作数0真则跳转操作数1程序段偏移量 |
00040005 | 操作数0,操作数1 | 如果操作数0假则跳转操作数1程序段偏移量 |
00040005 | 操作数0 |
推入操作数0程序段偏移量到Exception栈中 |
00040005 | 操作数0 | 从Exception栈中出栈并跳转到操作数0程序段偏移量 |