ag: felder haben nicht ganz gepasst
[uebersetzerbau-ss10.git] / parser / parser.y
index c76131f8e7b202c11cae7dd6c87513d4ca2cb6fc..e5f1909afafd10c204a7b700f3a2589cd2d35d0f 100644 (file)
@@ -5,7 +5,7 @@
 
 %start Program
 %token STRUCT END METHOD VAR IF THEN ELSE WHILE DO RETURN NOT OR THIS
-%token IDENT NUM ASSIGN
+%token IDENT NUM
 
 %%
 
@@ -34,8 +34,8 @@ Statseq:
        ;
 
 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
@@ -81,16 +81,15 @@ Term:
        | 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
+       | Expr
        | Exprs ',' Expr
        ;
 
@@ -101,7 +100,7 @@ extern int yylineno;
 
 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);
 }