Package de.bsvrz.pua.prot.util
Class ExpressionTree
- java.lang.Object
-
- de.bsvrz.pua.prot.util.ExpressionTree
-
- Direct Known Subclasses:
ExpressionLeaf
public class ExpressionTree extends java.lang.ObjectModelliert einen binären Baum von Ausdrücken. Es ist möglich, dass ein Knoten nur ein Kind hat (für unäre Operatoren) Die Knoten sind Operatoren, die Blätter Zeichenketten, Bool, Attribute oder Zahlen.
OPT Methode implementieren, die den Baum vereinfacht, d.h. alle nicht variablen Knoten bereits auswertet (-> kürzere Wege)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classExpressionTree.OperationIm Ausdruck mögliche Operationen.
-
Field Summary
Fields Modifier and Type Field Description ExpressionTreeleftLinker OperandExpressionTree.OperationoperationOperator.ExpressionTreerightRechter Operand.
-
Constructor Summary
Constructors Constructor Description ExpressionTree()Ausdruck ohne Operanden undinvalidOperand.ExpressionTree(ExpressionTree l, ExpressionTree r, ExpressionTree.Operation o)Erzeugt einen Ausdruck.
-
Method Summary
Modifier and Type Method Description booleancontainsAttribute()Überprüft ob der Ausdruck ein Attribut enthält.booleanequals(java.lang.Object other)ExpressionResultevaluate(java.util.Hashtable<RealElement,BaseDataSet> realElements, java.util.Hashtable<TempAttributeDescription,TempAttribut> tempElements, int pseudoObjectIndex)Deprecated.evaluateEx(Hashtable, Hashtable, int)liefert zusätzlich den Datenzustand zurückExpressionResultAndStateevaluateEx(java.util.Hashtable<RealElement,BaseDataSet> realElements, java.util.Hashtable<TempAttributeDescription,TempAttribut> tempElements, int pseudoObjectIndex)Wertet Baum aus.protected voidgetAttributeOrder(java.util.ArrayList<AttributeDescription> list, java.util.HashSet<AttributeDescription> visited)Liefert alle Attribute auf die der Baum zugreift.java.util.List<AttributeDescription>getAttributes()Liefert alle Attribute, auf die der Baum zugreift, zurück.java.util.HashSet<TempAttributeDescription>getDirectTempAttributes()Liefert ein Set mit den temporären Attributen, die dieser Ausdruck direkt verwendet.RealAttributeDescriptiongetFirstRealAttribute()Liefert das erste Reale Attribut, das im Ausdruck verwendet wird.TempAttributeDescriptiongetFirstTempAttribute()Liefert das erste temporäre Attribut, das im Ausdruck verwendet wird.intgetNumColumns()Gibt zurück, für wie viele Spalten ein TempAttribut definiert werden soll, dass diesen Ausdruck verwendet (bei der Verwendung von Aliasen in Attributen)java.util.HashSet<RealAttributeDescription>getRealAttributes()Liefert alle realen Attribute die im Ausdruck verwendet werden.ExpressionResult.ResultTypegetResultType(antlr.collections.AST ast)Gibt den erwarteten Ergebnis-Typ der Operation zurückjava.lang.StringtoString()
-
-
-
Field Detail
-
left
public ExpressionTree left
Linker Operand
-
right
public ExpressionTree right
Rechter Operand.
-
operation
public ExpressionTree.Operation operation
Operator.
-
-
Constructor Detail
-
ExpressionTree
public ExpressionTree(ExpressionTree l, ExpressionTree r, ExpressionTree.Operation o)
Erzeugt einen Ausdruck.- Parameters:
l- linker Operand.r- rechter Operand.o- Operator.
-
ExpressionTree
public ExpressionTree()
Ausdruck ohne Operanden undinvalidOperand.
-
-
Method Detail
-
getAttributes
public java.util.List<AttributeDescription> getAttributes()
Liefert alle Attribute, auf die der Baum zugreift, zurück. Liefert erst alle Attribute aus dem linken Teilbaum des Baumes. Anschließend werden die Objekte aus dem rechten Teilbaum zurückgegeben. Wird ein Attribut mehrfach verwendet, so wird nur das erste Auftreten berücksichtigt.- Returns:
- Attribute, die im Ausdruck verwendet werden. Leeres Liste, falls keine Attribute verwendet werden.
-
getAttributeOrder
protected void getAttributeOrder(java.util.ArrayList<AttributeDescription> list, java.util.HashSet<AttributeDescription> visited)
Liefert alle Attribute auf die der Baum zugreift. Dublikate werden verworfen, d.h. jedes Attribut wird nur einmal zurückgeliefert.- Parameters:
list- liste der Elementevisited- Elemente die bereits in der Liste eingetragen wurden.
-
evaluate
@Deprecated public final ExpressionResult evaluate(java.util.Hashtable<RealElement,BaseDataSet> realElements, java.util.Hashtable<TempAttributeDescription,TempAttribut> tempElements, int pseudoObjectIndex)
Deprecated.evaluateEx(Hashtable, Hashtable, int)liefert zusätzlich den Datenzustand zurückWertet Baum aus.- Parameters:
realElements- Mapping der realen Elemente zu den ihnen zugeordeten Werten.tempElements- Mapping der temporären Attribute zu den ihnen zugeordneten Werten.pseudoObjectIndex- Falls ein Attribut Aliase verwendet kann hier der Pseudoobjekt-Index festgelegt werden, von welchem Pseudoobjekt/Alias der Wert geholt werden soll. Ansonsten -1.- Returns:
- Wert, den dieser Teilbaum speichert
-
evaluateEx
public ExpressionResultAndState evaluateEx(java.util.Hashtable<RealElement,BaseDataSet> realElements, java.util.Hashtable<TempAttributeDescription,TempAttribut> tempElements, int pseudoObjectIndex)
Wertet Baum aus.- Parameters:
realElements- Mapping der realen Elemente zu den ihnen zugeordeten Werten.tempElements- Mapping der temporären Attribute zu den ihnen zugeordneten Werten.pseudoObjectIndex- Falls ein Attribut Aliase verwendet kann hier der Pseudoobjekt-Index festgelegt werden, von welchem Pseudoobjekt/Alias der Wert geholt werden soll. Ansonsten -1.- Returns:
- Wert, den dieser Teilbaum speichert
-
getResultType
public ExpressionResult.ResultType getResultType(antlr.collections.AST ast) throws SemanticErrorException
Gibt den erwarteten Ergebnis-Typ der Operation zurück- Parameters:
ast- AST- Returns:
- ResultType
- Throws:
SemanticErrorException- Exception
-
getNumColumns
public int getNumColumns()
Gibt zurück, für wie viele Spalten ein TempAttribut definiert werden soll, dass diesen Ausdruck verwendet (bei der Verwendung von Aliasen in Attributen)- Returns:
- Anzahl der Spalten
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object- See Also:
Object.toString()
-
getFirstRealAttribute
public RealAttributeDescription getFirstRealAttribute()
Liefert das erste Reale Attribut, das im Ausdruck verwendet wird.- Returns:
- Attributbeschreibung oder null, falls kein Reales Attribut verwendet wird.
-
getFirstTempAttribute
public TempAttributeDescription getFirstTempAttribute()
Liefert das erste temporäre Attribut, das im Ausdruck verwendet wird.- Returns:
- Attributbeschreibung oder null, falls kein temporäres Attribut verwendet wird.
-
getDirectTempAttributes
public java.util.HashSet<TempAttributeDescription> getDirectTempAttributes()
Liefert ein Set mit den temporären Attributen, die dieser Ausdruck direkt verwendet. Dazu wird der Ausdruck durchsucht und die gefundenen temporären Attribute zurückgegeben. Die gefundenen Attribute werde nicht rekursiv durchsucht.- Returns:
- Temporäre Attribute
-
getRealAttributes
public java.util.HashSet<RealAttributeDescription> getRealAttributes()
Liefert alle realen Attribute die im Ausdruck verwendet werden. Es werden nur direkt referenzierte reale Attribute zurückgegeben. D.h. temporäre Attribute und deren reale Attribute werden nicht zurückgegeben.- Returns:
- Set mit realen Attributen.
-
equals
public boolean equals(java.lang.Object other)
- Overrides:
equalsin classjava.lang.Object- See Also:
Object.equals(java.lang.Object)
-
containsAttribute
public boolean containsAttribute()
Überprüft ob der Ausdruck ein Attribut enthält. Es wird nach dem ersten temporären oder realen Attribut gesucht.- Returns:
truefalls der Ausdruck ein Attribut enthält.falsesonst.
-
-