| compound | ::= | stmt |
| | | {stmt +} | |
| stmt | ::= | place = exp; |
| | | declaration | |
| | | return exp ? (branch ident) ?; | |
| | | if(exp)compound | |
| | | if(exp)compound else compound | |
| | | when exp (when-headers) compound | |
| | | when exp (when-headers) compound else compound | |
| | | foreach(ident in exp) compound | |
| | | select(exp) { selectCase * selectDefault ? } | |
| | | functionCall; | |
| | | continue; | |
| | | break; | |
| | | push place exp; | |
| when-headers | ::= | when-header (, when-header) * |
| when-header | ::= | headerId typExp ident (<- const) ? |
| selectCase | ::= | case orList: (stmt) * |
| selectDefault | ::= | default: (stmt) * |
| orList | ::= | const (| const) * |
| place | ::= | ident(.ident) * |
| | | sipHeader |