%}
%start Input
-%token STRUCT END METHOD VAR IF THEN ELSE WHILE DO RETURN NOT OR THIS
-%token IDENT NUM ASSIGN
+%token STRUCT END METHOD VAR IF THEN ELSE WHILE DO RETURN NOT OR THIS IDENT NUM ASSIGN
@macro xxputsin(xx,)
@i xx = @Statement.sin@;
Input:
Program
@{
- @i @Program.f@ = new_tab();
+ @i @Program.f@ = tab_new();
@}
;
|
@{
- @i @Parms.f@ = new_tab();
+ @i @Parms.f@ = tab_new();
@}
;
|
@{
- @i @FeldID.f@ = new_tab();
+ @i @FeldID.f@ = tab_new();
@}
;
| VAR IDENT ASSIGN Expr
@{
- @i @Statement.sout@ = tab_add_symbol(clone_tab(@Statement.sin@), @IDENT.name@, S_VAR, 1);
+ /* tab_clone ist hier noetig, vgl. folgendes statement
+ * > var x := x - 1; */
+ @i @Statement.sout@ = tab_add_symbol(tab_clone(@Statement.sin@), @IDENT.name@, S_VAR, 1);
xxputsin(@Expr.s@,)
@}