From 02db14d2ce128c481dca8a536bdc28b60d019487 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Tue, 6 Apr 2010 14:54:01 +0200 Subject: [PATCH] ag: scope von feldern vorher: "Felder sind im gesamten Programm sichtbar (auch vor der Definition)." jetzt: "Felder sind ab der Felddefinition bis zum Ende des Programms sichtbar." (scheiss paulchen-bsp-kopieren ;p) --- ag/parser.y | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/ag/parser.y b/ag/parser.y index 7df16d2..d7cdf4a 100644 --- a/ag/parser.y +++ b/ag/parser.y @@ -21,13 +21,9 @@ @end @autoinh s -/* f .. fields - * s .. symbols */ @attributes { char *name; } IDENT -@attributes { struct symbol *f; struct symbol *s; } Program -@attributes { struct symbol *f; } FeldID Structdef Parms -@attributes { struct symbol *s; } Methoddef Statseq Lexpr Expr Minusterm Multerm Orterm -Term Exprs Feld +@attributes { struct symbol *f; } FeldID Parms Structdef Program +@attributes { struct symbol *s; } Methoddef Statseq Lexpr Expr Minusterm Multerm Orterm Term Exprs Feld @attributes { struct symbol *sin; struct symbol *sout; } Statement @traversal @postorder c @@ -36,25 +32,22 @@ Term Exprs Feld Input: Program @{ - @i @Program.s@ = @Program.f@; + @i @Program.f@ = new_tab(); @} ; Program: Methoddef ';' Program @{ - @i @Program.0.f@ = @Program.1.f@; + @i @Methoddef.s@ = @Program.0.f@; + @i @Program.1.f@ = @Program.0.f@; @} - + | Structdef ';' Program @{ - @i @Program.0.f@ = tab_merge(@Structdef.f@, @Program.1.f@, 1); + @i @Program.1.f@ = tab_merge(@Program.0.f@, @Structdef.f@, 1); @} - | - @{ - @i @Program.0.f@ = new_tab(); - @} ; Methoddef: -- 2.25.1