From: Bernhard Urban Date: Tue, 6 Apr 2010 12:54:01 +0000 (+0200) Subject: ag: scope von feldern X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=02db14d2ce128c481dca8a536bdc28b60d019487;hp=7c13248a4292046c8c23437f462fb97f7f76b5e6;p=uebersetzerbau-ss10.git 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) --- 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: