一、什么是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 | 常量 |
|