下载: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====");
    
  更多例程,请大家帮我补充:)