User Tools

Site Tools


semantics_specification

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
semantics_specification [2012/02/26 06:14] – [General considerations] marongsemantics_specification [2012/03/25 13:57] (current) – [Operator types] mhwang
Line 2: Line 2:
   * continue和break必须在循环里(for或者while)   * continue和break必须在循环里(for或者while)
   * ''a.b'':如果a是string或array类型,b只能为length;如果a是record类型,b必须是一个field的名字   * ''a.b'':如果a是string或array类型,b只能为length;如果a是record类型,b必须是一个field的名字
 +  * 不需要检查函数所有control flow末端是否都有return语句
 +
 ====== 类型匹配 ====== ====== 类型匹配 ======
   * return的表达式类型与函数返回类型一致   * return的表达式类型与函数返回类型一致
-  * 不需要检查函数所有control flow末端是否都有return语句 
   * if/while/for的条件(cond)类型必须是int(0表示false,非零表示true)   * if/while/for的条件(cond)类型必须是int(0表示false,非零表示true)
   * ''[expr]''前面必须是string或array类型,expr必须是int类型   * ''[expr]''前面必须是string或array类型,expr必须是int类型
Line 19: Line 20:
 ^ ''=''             | (a,a)->a | null是任意record type | ^ ''=''             | (a,a)->a | null是任意record type |
 ^ ''||'' and ''&&'' | (int,int)->{0,1} | 短路逻辑 | ^ ''||'' and ''&&'' | (int,int)->{0,1} | 短路逻辑 |
-^ ''=='' and ''!='' | (a,a)->{0,1} | record的比较是比较地址而不是值 |+^ ''=='' and ''!='' | (a,a)->{0,1} | record/array的比较是比较地址而不是值 |
 ^ ::: | ::: | 字符串比较的是值而不是地址 | ^ ::: | ::: | 字符串比较的是值而不是地址 |
-^ ''<'', ''<''''='', ''>'' and ''>='' | (a,a)->{0,1} | 不能比较record |+^ ''<'', ''<''''='', ''>'' and ''>='' | (a,a)->{0,1} | 不能比较record/array |
 ^ ::: | ::: | 字符串按字典序比较 | ^ ::: | ::: | 字符串按字典序比较 |
 ^ ''+'' | 见加法类型表 || ^ ''+'' | 见加法类型表 ||
Line 29: Line 30:
  
 ^ 加法类型表 ^^ Right-hand side |||| ^ 加法类型表 ^^ Right-hand side ||||
-^::: ^^ int ^ char ^ string ^ record |+^::: ^^ int ^ char ^ string ^ record/array |
 ^ Left-hand side ^ int | int | int | string | (error) | ^ Left-hand side ^ int | int | int | string | (error) |
 ^ ::: ^ char | int | int | string | (error) | ^ ::: ^ char | int | int | string | (error) |
 ^ ::: ^ string | string | string | string | (error) | ^ ::: ^ string | string | string | string | (error) |
-^ ::: ^ record | (error) | (error) | (error) | (error) |+^ ::: ^ record/array | (error) | (error) | (error) | (error) |
  
 ====== Native function semantics ====== ====== Native function semantics ======
 ^ ''char chr(int i)'' | 只取参数的低8位 | ^ ''char chr(int i)'' | 只取参数的低8位 |
 ^ ''int ord(char c)'' | | ^ ''int ord(char c)'' | |
semantics_specification.1330236898.txt.gz · Last modified: 2012/02/26 06:14 by marong

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki