semantics_specification
General considerations
continue和break必须在循环里(for或者while)
a.b
:如果a是string或array类型,b只能为length;如果a是record类型,b必须是一个field的名字
不需要检查函数所有control flow末端是否都有return语句
类型匹配
命名空间
native函数、普通函数、record名字,都不能重名,他们之间也不能重名
record的fields也不能重名(但可以和record本身同名,或与其他函数同名)
函数内变量之间不能重名,与top level的native函数、普通函数、record名字也不能重名
Operator types
| 类型映射 | 说明 |
, | (a,b)→b | |
= | (a,a)→a | null是任意record type |
|| and && | (int,int)→{0,1} | 短路逻辑 |
== and != | (a,a)→{0,1} | record/array的比较是比较地址而不是值 |
字符串比较的是值而不是地址 |
< , < = , > and >= | (a,a)→{0,1} | 不能比较record/array |
字符串按字典序比较 |
+ | 见加法类型表 |
- , * , / and % | (int,int)→int | 编译器不负责检查除数是否为零 |
! | int→{0,1} | |
+ and - | int→int | 一元运算仅适合int类型 |
加法类型表 | Right-hand side |
int | char | string | record/array |
Left-hand side | int | int | int | string | (error) |
char | int | int | string | (error) |
string | string | string | string | (error) |
record/array | (error) | (error) | (error) | (error) |
Native function semantics
char chr(int i) | 只取参数的低8位 |
int ord(char c) | |
semantics_specification.txt · Last modified: 2012/03/25 13:57 by mhwang