下载:http://www.cnjm.net/public/wags.rar
rar里面是个用NativeJ生成的exe,实际是java写的,决非木马或病毒,呵呵。
需要JRE1.3或以上。
使用方法:wags 文件名
语法见下文。
时间仓促,没有仔细测,请大家帮我,作为报答,我会跟你分享学习javacc(java compiler's compiler)的心得体会 :)===================================================================WAGS语法简介:1. WAGS数据类型
WAGS仅有一种数据类型WAGSDataType,可以包含整数或字符串数据,运算中系统自动根据
需要进行隐式转换,也可以用系统函数进行显式转换。
2. WAGS变量
在WAGS中,不必显示声明变量,变量可以在任何地方直接使用,如有必要可用一个赋值语
句给变量付初值。对于参与运算且无初值的变量,在算术运算中作为0,字符串连接运算
作为空字符串处理。
可以使用中文作为变量名。
3. WAGS常量
在WAGS中可以用const关键字声明一个常量并使用常量表达式给常量赋值,常量同样可以
具有以上的两种类型。常量表达式可包含字符串、整数和其它常量的四则运算。
const关键字可用中文关键字"常量"代替
举例:
const myConst1 = "Hello ";
const myConst2 = myConst1 + "World!";
4. WAGS运算符
算术运算符:
"+" : 相加/字符串连接
"-" : 相减/负号
"*" : 相乘
"/" : 整除
"%" : 求余
逻辑运算符:
"!" : 非运算
"&&" : 与运算
"||" : 或运算
关系运算符:
"==" : 等于
"!=" : 不等于
"<" : 小于
">" : 大于
"<=" : 小于等于
">=" : 大于等于
赋值运算符:
"=" : 赋值
5. 条件语句
if (<expression>) ... [ else ] ...
if, else可用中文关键字"如果", "否则"代替
6. 循环语句
for ([<expression1>];[<expression2>];[<expression3>]) ...
for可用中文关键字"循环"代替
while (<expression>) ...
while可用中文关键字"当"代替
do ... while (<expression>)
do, while可用中文关键字"执行", "当"代替
在循环中可以使用break来跳出一层循环,也可以使用continue继续本层循环。
break, continue可用中文关键字"跳出", "继续"代替
7. 无条件跳转
WAGS允许使用无条件跳转语句goto,goto后面必须跟一个存在的行标号。可以用下面的形
式来定义一个行标号:
goto可用中文关键字"转到"代替
举例:
...
if (i == 0) goto exit;
...
exit:
println("script stopped.");
8. 自定义函数
WAGS中可以使用function关键字定义一个函数,函数可以包含0至多个形式参数,不过只
能是固定数量的。在函数中可以随时用return语句返回,return语句后面可以跟一个表达
式表示返回值。在函数中可以访问到全局的常量以及全局变量,除了形参作为局部变量将
覆盖同名全局变量外,其他使用的变量若与全局变量重名,则认为就是全局变量,对其的
赋值操作也会有全局影响,因此最好使用命名规范来区分全局和局部变量。
函数可支持递归调用。
function, return可用中文关键字"函数", "返回"代替
举例:
println("total="+foo(100));
function foo(i) {
if (i == 0) {
return 0;
} else {
return i+foo(i-1);
}
}
9. 系统函数(运行环境函数)
WAGS可以使用系统函数来进行方便的扩充,凡是在代码中未找到函数定义的函数调用均认
为是系统函数,系统函数可以使用不定数量的参数。
当前测试系统仅提供了若干简单的输入输出函数和杂项函数,包括:
print(p) 打印输出p的值
println(p) 打印输出p的值,并换行
gets([p]) 要求用户输入一个字符串,可选的参数p是提示语
geti([p]) 要求用户输入一个整数,可选的参数p是提示语
toint(p) 把p显示转换为整数型
tostr(p) 把p显示转换为字符串型
rand([p]) 取一个随机数,如果给定了参数p,将取一个0到p(不包含)的随机数10. 一些简单例子
例程1,求1加到100的和:
for (i = 0; i <= 100; i = i+1) {
total = total + i;
}
println("total="+total);
例程2,使用递归输出一些星号,本例使用了中文关键字
递归输出(5);
函数 递归输出(参数) {
如果(参数==0) {
println(参数);
} 否则 {
循环(j = 参数;(j = j-1) >= 0;) {
临时 = 临时 + "*";
}
println(临时+参数);
递归输出(参数-1);
}
}
println("====end====");
更多例程,请大家帮我补充:)
rar里面是个用NativeJ生成的exe,实际是java写的,决非木马或病毒,呵呵。
需要JRE1.3或以上。
使用方法:wags 文件名
语法见下文。
时间仓促,没有仔细测,请大家帮我,作为报答,我会跟你分享学习javacc(java compiler's compiler)的心得体会 :)===================================================================WAGS语法简介:1. WAGS数据类型
WAGS仅有一种数据类型WAGSDataType,可以包含整数或字符串数据,运算中系统自动根据
需要进行隐式转换,也可以用系统函数进行显式转换。
2. WAGS变量
在WAGS中,不必显示声明变量,变量可以在任何地方直接使用,如有必要可用一个赋值语
句给变量付初值。对于参与运算且无初值的变量,在算术运算中作为0,字符串连接运算
作为空字符串处理。
可以使用中文作为变量名。
3. WAGS常量
在WAGS中可以用const关键字声明一个常量并使用常量表达式给常量赋值,常量同样可以
具有以上的两种类型。常量表达式可包含字符串、整数和其它常量的四则运算。
const关键字可用中文关键字"常量"代替
举例:
const myConst1 = "Hello ";
const myConst2 = myConst1 + "World!";
4. WAGS运算符
算术运算符:
"+" : 相加/字符串连接
"-" : 相减/负号
"*" : 相乘
"/" : 整除
"%" : 求余
逻辑运算符:
"!" : 非运算
"&&" : 与运算
"||" : 或运算
关系运算符:
"==" : 等于
"!=" : 不等于
"<" : 小于
">" : 大于
"<=" : 小于等于
">=" : 大于等于
赋值运算符:
"=" : 赋值
5. 条件语句
if (<expression>) ... [ else ] ...
if, else可用中文关键字"如果", "否则"代替
6. 循环语句
for ([<expression1>];[<expression2>];[<expression3>]) ...
for可用中文关键字"循环"代替
while (<expression>) ...
while可用中文关键字"当"代替
do ... while (<expression>)
do, while可用中文关键字"执行", "当"代替
在循环中可以使用break来跳出一层循环,也可以使用continue继续本层循环。
break, continue可用中文关键字"跳出", "继续"代替
7. 无条件跳转
WAGS允许使用无条件跳转语句goto,goto后面必须跟一个存在的行标号。可以用下面的形
式来定义一个行标号:
goto可用中文关键字"转到"代替
举例:
...
if (i == 0) goto exit;
...
exit:
println("script stopped.");
8. 自定义函数
WAGS中可以使用function关键字定义一个函数,函数可以包含0至多个形式参数,不过只
能是固定数量的。在函数中可以随时用return语句返回,return语句后面可以跟一个表达
式表示返回值。在函数中可以访问到全局的常量以及全局变量,除了形参作为局部变量将
覆盖同名全局变量外,其他使用的变量若与全局变量重名,则认为就是全局变量,对其的
赋值操作也会有全局影响,因此最好使用命名规范来区分全局和局部变量。
函数可支持递归调用。
function, return可用中文关键字"函数", "返回"代替
举例:
println("total="+foo(100));
function foo(i) {
if (i == 0) {
return 0;
} else {
return i+foo(i-1);
}
}
9. 系统函数(运行环境函数)
WAGS可以使用系统函数来进行方便的扩充,凡是在代码中未找到函数定义的函数调用均认
为是系统函数,系统函数可以使用不定数量的参数。
当前测试系统仅提供了若干简单的输入输出函数和杂项函数,包括:
print(p) 打印输出p的值
println(p) 打印输出p的值,并换行
gets([p]) 要求用户输入一个字符串,可选的参数p是提示语
geti([p]) 要求用户输入一个整数,可选的参数p是提示语
toint(p) 把p显示转换为整数型
tostr(p) 把p显示转换为字符串型
rand([p]) 取一个随机数,如果给定了参数p,将取一个0到p(不包含)的随机数10. 一些简单例子
例程1,求1加到100的和:
for (i = 0; i <= 100; i = i+1) {
total = total + i;
}
println("total="+total);
例程2,使用递归输出一些星号,本例使用了中文关键字
递归输出(5);
函数 递归输出(参数) {
如果(参数==0) {
println(参数);
} 否则 {
循环(j = 参数;(j = j-1) >= 0;) {
临时 = 临时 + "*";
}
println(临时+参数);
递归输出(参数-1);
}
}
println("====end====");
更多例程,请大家帮我补充:)
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货