langs a-z
This commit is contained in:
parent
db842d013d
commit
d066446780
11389 changed files with 98361 additions and 1020 deletions
28
Task/Metaprogramming/Rascal/metaprogramming-3.rascal
Normal file
28
Task/Metaprogramming/Rascal/metaprogramming-3.rascal
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
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)
|
||||
;
|
||||
Loading…
Add table
Add a link
Reference in a new issue