打印

WeLD

本帖已经被作者加入个人空间

WeLD

手册


WeLD v1.0.Alpha.080601

WeLD 是一款脚本语言,可以嵌入到 C/C++ 使用.
目前的 Alpha 版本已经完成脚本引擎,其他扩展模块未做.
支持的 C 函数有: print
如果 print 到除了字符串和数字以外的变量,将会打印变量所对应的类型号,例如 type is 6

关键字:
var tbl func if elseif else loop and or return break

表达式:
+ - * / %
=
<  >  ==  <=  >=  !=  
!!  <!!  !!>

语法规则:
A:
1. 变量定义
   变量定义必须以 var 开始, var name,可以初始化以及不初始化, 例:
   1). var my_var
   2). var my_var = 1234

2. 表的定义
   表的定义由 key 和 value 组成一个表元素, 表的定义必须以 tbl 关键字开始, tbl my_table, 可以初始化以及不初始化, 初始化必须以 key = value 这种方式来初始化, 多项表元素以逗号分隔, 例:
   1). tbl my_table
   2). tbl my_table = { a = 10, "abcd" = 12.34, my_func() = my_func }

3. 函数的定义
   函数的定义以 func 开始, 函数名跟后, 括号内写参数名,可无参数名, 定义结束后, 将函数体写在{ } 花括号内, 例:
   1). func my_function(a, b, c)
         {
            print(a, b, c)
         }
   2. func my_func () { }

4. 逻辑控制语句(条件判断)
   条件判断语句有 if elseif else, elseif 和 else 之前必须有 if 存在. 逻辑判断可以多项判断,使用 and 或者 or. 写完逻辑控制语句后,在 { } 内写下控制语句, 例:
   1).
      if(a == b and b != c)
       {  print("a != c") }
      elseif ( a == b and b == c) { print("a == c") }
      else { print("in else case") }
   2).
     if(a == b or b == c) { ... }
     else { ... }

5. 逻辑控制语句(循环)
   循环语句有 loop, loop 内可以多项判断,写完逻辑控制语句后,在 { } 内写下控制语句, 可用 break 跳出, 例:
   1).
     loop (a < b)
      {
         a = a - 1
         print(a)
      }
   2).
     loop( a < b or b > 10 or c == 1)
        {
           a = a - 1
           b = b + 1
           c = a
           if(a == -1) { break }
           loop ( c == 1) { c = c + 1 }
        }
6. 注释
   注释使用 !! 符号注释掉一行, <!!   !!> 注释语句块.


B:
  WeLD 如果碰到字符串和数字加减,将变为字符串.如:
  var a = 10 + "ABCD" 将变为 "10ABCD"

  WeLD 允许函数内定义函数, WeLD 的函数在定义过程中, 是不被运行的, 只有在确实的呼叫函数的时候, 函数才被呼叫.
  WeLD 的函数内可以 return 任何内容的模块, 但不允许 return 多个内容. 例如以下语句不被允许:
   return a, b

  WeLD 允许函数递归. 函数参数必须确实存在, 如果和函数呼叫时候, 和定义参数数量不符,将报错, 但是 -pnuc 开关允许脚本语言忽略这一检查.
  例如
   WLD my.wld -pnuc

  WeLD 的允许闭包的实现, 例如
  func abc()
   {
      func cde(){}
      return cde !! 此时返回一个 cde 的包
   }
如果
  func abc()
   {
      func cde(){ return 1 }
      return cde() !! 此时返回一个 cde 的返回值
   }

  table 以及变量都允许任意类型赋值.
  var abcd = "123"
  var cde = my_function() !! 取得 function 返回值
  var aaa = my_function !! aaa 就是一个 function, 将来可以 aaa() 使用

  loop 和 if else 允许多层嵌套. 但如若在 loop 内返回一个闭包(closure), 将导致出错.


[版本更新]
WeLD v1.0.Alpha
v080601:
1. 修正 loop 循环控制一处 bug.
2. 修正 tostring 函数一处 bug.
v080531:
增加了 param 是否检查的参数 -pnuc

附件

weld.rar (278.18 KB)

2008-6-11 17:28, 下载次数: 0

TOP


感谢一直以来您对我们的支持!
当前时区 GMT+8, 现在时间是 2008-9-7 19:28 京ICP证060528 号

Designed By 17DST