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.Object
Modelliert 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 class
ExpressionTree.Operation
Im Ausdruck mögliche Operationen.
-
Field Summary
Fields Modifier and Type Field Description ExpressionTree
left
Linker OperandExpressionTree.Operation
operation
Operator.ExpressionTree
right
Rechter Operand.
-
Constructor Summary
Constructors Constructor Description ExpressionTree()
Ausdruck ohne Operanden undinvalid
Operand.ExpressionTree(ExpressionTree l, ExpressionTree r, ExpressionTree.Operation o)
Erzeugt einen Ausdruck.
-
Method Summary
Modifier and Type Method Description boolean
containsAttribute()
Überprüft ob der Ausdruck ein Attribut enthält.boolean
equals(java.lang.Object other)
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ückExpressionResultAndState
evaluateEx(java.util.Hashtable<RealElement,BaseDataSet> realElements, java.util.Hashtable<TempAttributeDescription,TempAttribut> tempElements, int pseudoObjectIndex)
Wertet Baum aus.protected void
getAttributeOrder(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.RealAttributeDescription
getFirstRealAttribute()
Liefert das erste Reale Attribut, das im Ausdruck verwendet wird.TempAttributeDescription
getFirstTempAttribute()
Liefert das erste temporäre Attribut, das im Ausdruck verwendet wird.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)java.util.HashSet<RealAttributeDescription>
getRealAttributes()
Liefert alle realen Attribute die im Ausdruck verwendet werden.ExpressionResult.ResultType
getResultType(antlr.collections.AST ast)
Gibt den erwarteten Ergebnis-Typ der Operation zurückjava.lang.String
toString()
-
-
-
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 undinvalid
Operand.
-
-
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:
toString
in 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:
equals
in 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:
true
falls der Ausdruck ein Attribut enthält.false
sonst.
-
-