1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| PROGRAMM := PROGRAMM ident VARDECLLIST FUNCDECLLIST INSTR
VARDECLLIST := ^| VARDECL ; VARDECLLIST
VARDECL := var IDENTLIST ; TYPENAME
IDENTLIST := ident | ident , IDENTLIST
TYPENAME := ATOMICTYPE | ARRAYTYPE
ATOMICTYPE := unit | bool | int
ARRAYTYPE := array [RANGELIST] of ATOMICTYPE
RANGELIST := int..int | int .. int, RANGELIST
FUNCDECLLIST := ^ | FUNCDECL ; FUNCDECLLIST
FUNCDECL := function ident (ARGLIST) : ATOMICTYPE VARDECLLIST INSTR
ARGLIST := ^ | ARG | ARG , ARGLIST
ARG := ident : TYPENAME| ref ident : TYPENAME
INSTR := if EXPR then do INSTR
| if EXPR then do INSTR else INSTR
| while EXPR do INSTR
| LVALUE :=EXPR
| return EXPR
| return
| ident (EXPRLIST)|begin SEQUENCE end | begin end
SEQUENCE := INSTR ; SEQUENCE | INSTR ; | INSTR
LVALUE := ident | ident [EXPRLIST]
EXPRLIST := EXPR | EXPR , EXPRLIST
EXPR := cte |(EXPR)|EXPR opb EXPR | opu EXPR | ident (EXPRLIST)| ident [EXPRLIST] |
Partager