29 lines
699 B
Plaintext
29 lines
699 B
Plaintext
public data TYPE =
|
|
natural() | string();
|
|
|
|
public alias PicoId = str;
|
|
|
|
public data PROGRAM =
|
|
program(list[DECL] decls, list[STATEMENT] stats);
|
|
|
|
public data DECL =
|
|
decl(PicoId name, TYPE tp);
|
|
|
|
public data EXP =
|
|
id(PicoId name)
|
|
| natCon(int iVal)
|
|
| strCon(str sVal)
|
|
| add(EXP left, EXP right)
|
|
| sub(EXP left, EXP right)
|
|
| conc(EXP left, EXP right)
|
|
;
|
|
|
|
public data STATEMENT =
|
|
asgStat(PicoId name, EXP exp)
|
|
| ifElseStat(EXP exp, list[STATEMENT] thenpart, list[STATEMENT] elsepart)
|
|
| ifThenStat(EXP exp, list[STATEMENT] thenpart)
|
|
| whileStat(EXP exp, list[STATEMENT] body)
|
|
| doUntilStat(EXP exp, list[STATEMENT] body)
|
|
| unlessStat(EXP exp, list[STATEMENT] body)
|
|
;
|