
Syntax-directed Translation 163
| VAR {$$ = $1; printf("AST: %s\n", name($1));
printf("MAT%d: LD %s T%d --\n", ++mcount,name($1),
++tcount);tpush(tcount);}
| IVAR {$$ = $1; printf("AST: %s\n", name($1);
printf("MAT%d: LD %s T%d --\n", ++mcount,name($1),
++tcount);tpush(tcount);}
| expr ’+’ expr { printf("AST: +\n"); $$ = $3;
printf("MAT%d: ADD T%d T%d T%d\n", ++mcount, tpop(), tpop(),
++tcount);tpush(tcount);}
| expr ’-’ expr { printf("AST: -\n"); $$ = $3;
printf("MAT%d: SUB T%d T%d T%d\n", ++mcount, tpop(), tpop(),
++tcount) ;tpush(tcount);}
| expr ’*’ expr { printf("AST: *\n"); $$ = $3;
printf("MAT%d: MUL T%d T%d T%d\n", ++mcount, tpop(), ...