JavaCompilerCore/src/mycompiler/SyntaxTreeNode.java
2014-02-19 05:20:54 +01:00

39 lines
984 B
Java

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<SyntaxTreeNode> getChildren(){
return new Vector<SyntaxTreeNode>();
}
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();
}
}