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