%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
| THIS
| IDENT
| Term '.' IDENT
- | Methcall
- ;
-
-Methcall:
- IDENT '(' Exprs ')'
+ | IDENT '(' Exprs ')'
| Term '.' IDENT '(' Exprs ')'
;
-/* beachte dass hier auch "nichts" vorkommen kann
- * sonst waer ein aufruf der art 'f()' nicht
- * moeglich (leere parameterliste) */
Exprs:
+ Expr ',' Exprs
| 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);
}