Traverse der Formel-Bäume

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

TestExpr.om
PROCEDURE Visit(at: Expressions.Attribute);
BEGIN
   Write.Char(" ");
   CASE at.sy OF
   | Expressions.plusSY:      Write.Char("+");
   | Expressions.minusSY:     IF at.leftop = NIL THEN
                                 Write.String("UM");
                              ELSE
                                 Write.Char("-");
                              END;
   | Expressions.multiplySY:  Write.Char("*");
   | Expressions.divideSY:    Write.Char("/");
   | Expressions.constantSY:  Write.Int(at.const, 1);
   END;
END Visit;

PROCEDURE TraversePreorder(at: Expressions.Attribute);
BEGIN
   IF at # NIL THEN
      Visit(at);
      TraversePreorder(at.leftop);
      TraversePreorder(at.rightop);
   END;
END TraversePreorder;

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 29.06.1999