%start Program
%token STRUCT END METHOD VAR IF THEN ELSE WHILE DO RETURN NOT OR THIS
-%token IDENT NUM ASSIGN
+%token IDENT NUM
%%
;
Statement:
- Lexpr ASSIGN Expr
- | VAR IDENT ASSIGN Expr
+ Lexpr ':=' Expr
+ | VAR IDENT ':=' Expr
| Expr
| IF Expr THEN Statseq END
| IF Expr THEN Statseq ELSE Statseq END
Expr:
Term
| NOT Term
- | Term Plusterm
+ | Term Minusterm
| Term Multerm
| Term Orterm
| Term '<' Term
| Term '=' Term
;
-Plusterm:
- '+' Term Plusterm
- | '+' Term
+Minusterm:
+ '-' Term Minusterm
+ | '-' Term
;
Multerm:
| THIS
| IDENT
| Term '.' IDENT
- | Methcall
- ;
-
-Methcall:
- IDENT '(' Exprs ')'
+ | IDENT '(' Exprs ')'
| Term '.' IDENT '(' Exprs ')'
;
Exprs:
- Expr
- | Exprs ',' Expr
+ Expr ',' Exprs
+ | Expr
+ |
;
%%
int yyerror(char *error_text)
{
- fprintf(stderr,"Line %i: %s\n", yylineno, error_text);
+ fprintf(stderr,"Zeile %i: %s\n", yylineno, error_text);
exit(2);
}