Changes between Version 14 and Version 15 of IR2


Ignore:
Timestamp:
04/25/21 17:07:39 (5 years ago)
Author:
siegel
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • IR2

    v14 v15  
    88
    99{{{
    10 program: typedef* vardecl* fundef+ ;
     10program: typedef* decl* fundef+ ;
     11typedef:
     12    enum ID '{' idnetifier-list '}' ';'
     13  | struct ID '{' decl* '}' ';'
     14  | union ID '{' decl* '}' ';'
     15  | 'typedef' type-specifier declarator ';'
     16  ;
     17decl: type-qualifier? type-specifier declarator ';' ;
     18type-qualifier: '$input' | '$output' ;
     19type-specifier:
     20    ID
     21  | '$int'
     22  | '$bool'
     23  | '$char'
     24  | '$int'
     25  | '$real'
     26  | '$float' '<' INT ',' INT '>'
     27  | '$herbrand' '<' type-name '>'
     28  | '$proc'
     29  | '$bundle'
     30  | '$heap'
     31  | '$range'
     32  | '$domain'
     33  | '$mem'
     34  | 'enum' ID
     35  | 'struct' ID
     36  | 'union' ID
     37  | 'void'
     38  | '$seq' '<' type-name '>'
     39  | '$set' '<' type-name '>'
     40  | '$map' '<' type-name ',' type-name '>'
     41  | '$rel' '<' type-list '>'
     42  ;
     43declarator: '*'* ID ('[' ']' | '(' type-list? ')')* ;
     44type-name: type-specifier '*'* ('[' ']' | '(' type-list? ')')* ;
     45type-list: type-name (',' type-name)* ;
     46complete-type-name: type-specifier '*'* ('[' expr ']' | '(' type-list? ')')* ;
     47fundef: type-specifier declarator block ; 
    1148block: '{' typedef* vardecl* fundef* statement* '}' ;
    12 statement: block | basicStmt ;
    13 basicStmt:  (ID ':')? (simpleStmt | chooseStmt)| gotoStmt? ;
     49statement: block | simpleStmt | chooseStmt ;
     50simpleStmt: label? guard? primitiveStmt gotoStmt? ;
     51chooseStmt: label? '$choose' '{' simpleStmt* '}' ;
     52label: ID ':' ;
     53guard: '$when' '(' expr ')' ; 
    1454gotoStmt: 'goto' ID ;
    15 simpleStmt: guardedStmt | primitiveStmt ;
    16 guardedStmt: '$when' '(' expr ')' primitiveStmt ;
    17 chooseStmt: '$choose' '{' (simpleStmt gotoStmt?)+ '}' ;
    18 typedef: 'typedef' decl;
    19 fundef:  (same as C)
     55expr:
     56simpleStmt:
     57INT /* integer constant */
     58ID /* identifier */
    2059conclause : 'assigns' expr ';'
    2160          | 'requires' expr ';'