一、什么是GS?
GS 是C、C++、javascript三者的结合体,它具有C/C++的强大的表达能力,同时具有JS的动态运行能力.GS是一门全新的脚本语言,其设计目的与Lua相同:为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
GS本身除了计算无任何额外功能,所以功能由宿主程序提供,从而使其体积小、启动速度更快。
二、代码示例
int s=0; for(int i=0;i<100;i++) s+=i print(s);
三、语言特性
1、支持C、C++所有关键字,并增加了switchto goout foreach 三个关键字
2、内建数组、字符串支持
3、弱类型
4、支持匿名函数
5、支持动态类
6、自动垃圾回收机制
7、与由宿主程序无缝结合
四、与lua相比优势
1、 类似C、C++的语法
2、 支持动态类型,面向对象化编程(class)
3、 内建数组支持
4、 支持更多基本数据类型:int、string、real、array、object
5、 未来版本中提供语言层的多线程支持
五、Demo程序
//打印一个菱形 int i=20; int j=1; int k; int offset=0; void outputsp(int i) { for(int j=0;j<i;j++) print(' '); } void outputchar(int i) { for(int j=0;j<i;j++) print('*'); } i=getinput("Enter number of size(eg. 20):"); offset=getinput("Enter number of offset(eg. 10):"); k=(i-j)/2; int t=time(); while(j<k) { outputsp(k-j+offset); outputchar(j*2-1); print('\n'); j++; } while(j>0) { outputsp(k-j+offset); outputchar(j*2-1); print('\n'); j--; } print("time:"); print(time()-t); getinput("Enter any number to exit :");
输出结果截图:
附A关键字列表(所能关键字不区分大小写)
关键字 |
说明 |
示例 |
Var/ void |
变量定义,定义一个空类型变量 |
Var a=0; var b; |
Int |
变量定义,定义一个整数变量 |
Int a; int b=1; |
Real |
变量定义,定义一个实数变量 |
Real a=0.0 |
string |
变量定义,定义一个字符串变量 |
String b; |
Array |
变量定义,定义一个数组变量 |
Array b; array c={1,2,3,’sdf’}; |
class |
定义一个类 |
Class myclass { myclass() { } Public int add() { This.m_data++; } Readonly int m_data=0; } |
public |
类成员限定符, 指示成员在对像外部与内部均可访问 |
Public int add() { … } |
Protected / private |
类成员限定符, 指示成员只有对像内部可访问 |
Protected int b; |
readonly |
类成员限定符,只对成员变量有效, 否则与public等效,指示成员变量为外部只读 |
Readonly int a; |
parent |
在对象内部访问父级对象 |
parent.m_data; parent ->m_data; parent ->add(1);
|
this |
在对象内部访问对象本身 |
This.m_data; This->m_data; This->add(1);
|
If-else |
流程控制语句 |
If(…) { … } Else { … } |
Switch-case- default |
开关语句 |
Switch(a) { Case 1: …. break; Case 2: …. break; default: … } |
Switchto-case- default |
扩展开关语句, break关键字对其无效 |
Switchto(a) { Case 1: …. Case 2: …. Default: … } |
while |
循环语句, |
While(t) { … } |
Do-while |
循环语句 |
Do { … }while(t); |
For |
循环语句 |
For(int a=0;a<b;a++) { … } |
Foreach |
数组遍历循环语句 |
Foreach(ar;index,val) { … } |
continue |
循环控制语句 |
Continue; |
break |
跳出正在执行的语句块 |
Break; |
goout |
跳出所有语句块之外 |
Goout; |
Return |
返回控制语句 |
Return; Return 1; Return a; |
function |
申明函数(命名函数可不使用该关键字) |
Int function add(int x,int y) { … }
Int b= function (int x,int y) { … } |
Taskproc |
任务过程(异步函数)此版本尚不支持,与function同义 |
… |
null |
常量(空) |
Int a; a=10; a=null; |
true |
常量 |
|
false |
常量 |
|