package mycompiler; import java.util.Vector; import typinferenz.TypinferenzException; import mycompiler.myclass.Class; public abstract class SyntaxTreeNode { protected SyntaxTreeNode parent; /** * Wird nach dem Parsen aufgerufen. * Erfüllt folgenden Aufgaben: * 1. Füllt fehlende Typangaben mit TPHs auf. * 2. Verknüpft die Knoten des Syntaxbaums. (setzt Parent) * */ public void parserPostProcessing(SyntaxTreeNode parent) { this.parent = parent; for(SyntaxTreeNode node : this.getChildren())node.parserPostProcessing(this); } public SyntaxTreeNode getParent() { return this.parent; } public Vector getChildren(){ return new Vector(); } public Class getParentClass(){ SyntaxTreeNode parent = this.getParent(); if(parent instanceof Class)return (Class)parent; if(parent == null)throw new TypinferenzException("Das Wurzelelement eines Syntaxbaumes muss Class sein"); return parent.getParentClass(); } }