- 积分
- 2446
- 明经币
- 个
- 注册时间
- 2003-7-27
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 2012-6-5 00:42:34
|
显示全部楼层
TeaScript 表达式书写规则
1.4.1 数值
十进制整数由一个或多个数字组成。其中不含小数点标记(.) 开头可选 + 或 - 作为正负数符号。
14
123
+4567
-999
十六进制整数以 0x (或 0X)开头,随后可以是任意个十六进制数字。其中不含小数点标记(.),开头
可选 + 或 - 作为正负数符号。 十六进制数字为: 0123456789abcdefABCDEF 。
0xFF → 255
0x10ab → 4267
0X10CC → 4300
八进制整数以 0 开头,随后可以是任意个八进制数字。其中不含小数点标记(.),开头可选 + 或 -
作为正负数符号。 八进制数字为: 01234567 。
012 → 10
010 → 8
077 → 63
-077 → -63
实数由一个或多个数字和一个小数点 (.) 组成。 小数点可以出现在数字中的任何位置包括开头,开
头可选 + 或 - 作为正负数符号。
1.23 → 1.23
-1.23 → -1.23
+2.3456 → 2.3456
.506 → 0.506
此外,还可以使用以字母 e 或 E 连接数字的科学计数(指数为10的幂)。
1.23e3 → 1230
-1.23E3 → -1230
+2.34e-2 → 0.0234
.506E3 → 506
1.4.2 字符串
以 " 开头," 结尾:
"hello" →"hello"
"\032\032\065\032" →" A "
"\x20\x20\x41\x20" →" A "
"\t\r\n" →"\t\r\n"
"\x09\x0d\x0a" →"\t\r\n"
"\000\001\002" → "\000\001\002" ; 可以包含ASCII 0~255 所有控制字符
双引号内的字符串长度不能超过 2,048 字节。 长字符串须用 [text] 和 [/text] 标识符来分界。
TeaScript 引擎输出超过 2,048 字节的字符串时自动采用 [text] 和 [/text] 来作为字符串标界
符。
以 [text] 开头,[/text] 结尾:
[text]this is a string, too[/text]
→ "this is a string, too"
以 " (双引号) 标界的字符串可以处理下列的以 \ 开头的转义字符:
字符描述
\\ 反斜杠
\" 双引号
\n 换行符 (ASCII 10)
\r 回车符 (ASCII 13)
\t TAB 键制表符 (ASCII 9)
\nnn 3位 ASCII 十进制数值 (nnn 介于 000 与 255 之间)
\xnn 2位 ASCII 十六进制数值 (nn 介于 00 与 FF 之间)
\unnnn 一个 unicode 编码字符,nnnn 为十六进制数值。
[text], [/text] 标界符不进行转义字符的处理。
字符串内插变量
字符串内包含在 #{ 与 } 之间的符号为字符串内嵌表达式
(setq name "TeaScript") → TeaScript
"hello, #{name}!" → hello, TeaScript!
1.4.3 正则表达式
以 / 开头,/ 结尾:
/\d+/ → \d+
以 #" 开头," 结尾:
#"\d+" → \d+
正则表达式标界符之间的字符,除包含的是结尾标界符进行转义外,其他字符不进行转义处理。
1.4.4 符号
符号名字区分大小写,例如abc、Abc 和 ABC 分别表示不同的符号。
符号名字的开头不可以是特殊字符和数字,即:
; " ' ` ( ) [ ] { } . : & / , 0 1 2 3 4 5 6 7 8 9
符号名字的中间字符可以是除空格以及特殊字符外的任何其他字符。特殊字符如下所示:
; " ' ` ( ) [ ] { } . : & / ,
说明:
; 注释语句标识直到回车换行
" 字符串的开头和结尾标识
' 引用标识
` 反引用标识
( 语句或列表开头标识
) 语句或列表结尾标识
[ 向量开头标识 (符号内插变量开头标识)
] 向量结尾标识 (符号内插变量结尾标识)
{ 对象开头标识
} 对象结尾标识
: 对象中的关键字
. 连接命名空间与符号
& 取地址 (按位与运算) (形式参数列表中所有未绑定变量)
/ 正则表达式的开头与结尾 (形式参数列表中分隔局部变量)
, 求值 (形式参数列表中分隔局部变量)
如果需考虑对其他语法的兼容性,便于代码之间的转换,符号名字可以用更小的子集来避免名字
中间出现其他语法的运算符:
符号名字的开头[a-zA-Z_]: 小写字母a到z,或大写字母A到Z,或下划线_
符号名字的中间和结尾[a-zA-Z_0-9]: 小写字母a到z,或大写字母A到Z,或下划线_,或数字0到9
符号内插变量
符号内包含在 [ 与 ] 之间的符号为内嵌表达式
(setq obj.t 123) → 123
(setq x "t") → t
obj[x] → 123
1.4.5 列表
以 ( 开头,) 结尾:
(+ 1 2 3 4) → 10
(define (double x) (+ x x)) → (fn (x) (+ x x))
匿名函数
以 #( 开头,) 结尾:
(setq double #(+ %1 %1))
(double 20) → 40
(#(* %1 %1) 5) → 25
1.4.6 向量
以 [ 开头,] 结尾:
(setq somevector ["john", 25]) → ["john", 25]
somevector → ["john", 25]
1.4.7 对象
以 { 开头,} 结尾:
(setq someobj {name: "john", age:25}) → {:name "john", :age 25}
someobj. → {:name "john", :age 25} |
|