
stmt:
    SKIP
 |  HAVOC
 |  RET
 |  RET exp
 |  RAISE ID
 |  invocation
 |  FORK invocation
 |  assignment

 |  stmt ';' stmt
 |  exp DARROW stmt
 |  stmt BOX stmt
 |  stmt XBOX stmt
 |  stmt EXCEPT handlerList END
 |  VAR declInitList '|' stmt

 |  OPENA stmt CLOSEA
 |  BEGN stmt END
 |  DO stmt OD

;

assignment:
    ID GETS exp
 |  primary '.' ID GETS exp
 |  primary '^' GETS exp
 |  primary '[' exp ']' GETS exp
 |  '(' exp ')' GETS exp
 |  '(' exp ',' expList ')' GETS exp
;

handler:
    exceptionSet DARROW stmt
;

handlerList:
    handler
 |  handlerList ',' handler
;
