| 15 | | simpleStmt: (guardedStmt | primitiveStmt) gotoStmt? ; |
| 16 | | guardedStmt: 'when' expr 'do' primitiveStmt ; |
| 17 | | chooseStmt: 'begin choose' simpleStmt+ 'end choose' ; |
| 18 | | typedef: 'type' ID '=' typeName ';' ; |
| 19 | | vardecl: 'var' varopts? ID ':' typeName ';' ; |
| 20 | | varopts: '[' varopt+ ']' ; |
| 21 | | varopt: 'input' | 'output' ; |
| 22 | | fundef: 'fun' funopts? ID '(' paramlist ')' (':' typeName)? conclause* block ; |
| 23 | | funopts: '[' funopt+ ']' ; |
| | 15 | simpleStmt: guardedStmt | primitiveStmt ; |
| | 16 | guardedStmt: '$when' '(' expr ')' primitiveStmt ; |
| | 17 | chooseStmt: '$choose' '{' (simpleStmt gotoStmt?)+ '}' ; |
| | 18 | typedef: 'typedef' decl; |
| | 19 | fundef: (same as C) |