|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectschmitzm.lang.tree.OperationTree
public class OperationTree
Diese Klasse stellt einen Operator-Baum dar. Dieser unterstuetzt folgende
Knoten:
OperationTree.ConstantNode
: Blatt-Knoten, die einen konstanten Wert darstellen
(z.B. double
oder String
).OperationTree.OperatorNode
: Innere Knoten, die fuer einen 2-stelligen Operator
auf dem linken und rechten Sohn stehen:
"+"
"-"
"*"
"/"
"^"
"&"
"|"
"="
oder "=="
"!="
oder "<>"
"<"
">"
"<="
">="
"+"
"regex(expression,regular expr)"
"split(expression,regular expr,n)"
"replAll(expression,pattern expr,repl expr)"
OperationTree.UnaryOperatorNode
: Innere Knoten, die fuer einen 1-stelligen
Operator auf dem linken Sohn stehen:
"abs(.)"
"sqr(.)"
oder "sqrt(.)"
"rnd(.)"
oder "round(.)"
"int(.)"
oder "trunc(.)"
"!(.)"
"isNaN(.)"
"sin(.)"
"cos(.)"
"tan(.)"
"arcsin(.)"
oder "asin(.)"
"arccos(.)"
oder "acos(.)"
"arctan(.)"
oder "atan(.)"
"exp(.)"
"ln(.)"
"log(.)"
"str(.)"
"val(.)"
"toupper(.)"
"tolower(.)"
OperationTree.ConstantAliasNode
: Blatt-Knoten, die einen Alias fuer eine
Konstante darstellen:
"rand"
oder "random"
"NaN"
System.currentTimeMillis()
): "CURR_MILLIS"
OperationTree.ITENode
: ITE-Operator:ITE(.,.,.)
drueckt die Bedingung
"If .. Then .. Else .." aus.op > 0
entspricht TRUE; op = 0
entspricht FALSE.
Nested Class Summary | |
---|---|
static class |
OperationTree.ConstantAliasNode
Diese Knoten repraesentiert einen konstanten numerischen Wert im Operatorbaum, der jedoch nicht direkt, sondern durch einen Alias dargestellt wird (z.B. |
static class |
OperationTree.ConstantNode
Diese Knoten repraesentiert einen konstanten Wert im Operatorbaum. |
static class |
OperationTree.ITENode
Diese Knoten repraesentiert den speziellen Operator ITE (If-Then-Else) im Operatorbaum. |
static class |
OperationTree.MultiParamOperatorNode
Diese Knoten repraesentiert den speziellen Operator mit mehr als 2 Operanden. |
static class |
OperationTree.OperatorNode
Diese Knoten repraesentiert einen 2-stelligen Operator im Operatorbaum. |
static class |
OperationTree.UnaryOperatorNode
Diese Knoten repraesentiert einen 1-stelligen Operator im Operatorbaum. |
Field Summary | |
---|---|
protected Logger |
LOGGER
Logger fuer Debug-Ausgaben |
protected TreeNode |
rootNode
Speichert den Wurzel-Knoten des Operator-Baums. |
Constructor Summary | |
---|---|
|
OperationTree(OperationTree.ConstantNode root)
Erzeugt einen neuen Operator-Baum. |
|
OperationTree(OperationTree.OperatorNode root)
Erzeugt einen neuen Operator-Baum. |
protected |
OperationTree(TreeNode root)
Erzeugt einen neuen Operator-Baum. |
Method Summary | |
---|---|
Object |
evaluate()
Wertet den Operator-Baum aus. |
protected Object |
evaluate(TreeNode opTreeNode)
Wertet einen Knoten des Operator-Baums aus. |
TreeNode |
getRoot()
Liefert den Wurzelknoten des Operator-Baums. |
protected Object |
performOperation(String operator)
Wertet einen 0-stelligen Operator (Alias oder Variable) aus. |
protected Object |
performOperation(String operator,
Object operand)
Wertet einen 1-stelligen Operator aus. |
protected Object |
performOperation(String operator,
Object[] operand)
Wertet einen n-stelligen Operator aus. |
protected Object |
performOperation(String operator,
Object operand1,
Object operand2)
Wertet einen 2-stelligen Operator aus. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected Logger LOGGER
protected TreeNode rootNode
Constructor Detail |
---|
protected OperationTree(TreeNode root)
root
- Wurzelknoten des Baumspublic OperationTree(OperationTree.OperatorNode root)
root
- Wurzelknoten des Baumspublic OperationTree(OperationTree.ConstantNode root)
root
- Wurzelknoten des BaumsMethod Detail |
---|
public TreeNode getRoot()
public Object evaluate()
protected Object evaluate(TreeNode opTreeNode)
opTreeNode
- BinaryTreeNodeprotected Object performOperation(String operator, Object[] operand)
"substr(expression,startPos_incl,endPos_excl)"
operator
- n-stelliger Operatoroperand
- Operanden auf die der Operator angewandt wird
UnsupportedOperationException
- falls der Operator null
ist,
unbekannt ist, oder auf die Operanden nicht angewendet werden kannprotected Object performOperation(String operator, Object operand1, Object operand2)
"+"
"-"
"*"
"/"
"^"
"&"
, "AND"
oder "UND"
"|"
, "OR"
oder "ODER"
"=="
, "="
oder "EQ"
"!="
, "<>"
oder "NE"
Comparable
)
"<"
oder "LT"
">"
oder "GT"
"<="
oder "LE"
">="
oder GE"
"+"
"regex(expression,regular expr)"
op
werden als FALSE interpretiert, gdw. op == 0
.
operator
- 2-stelliger Operatoroperand1
- linker Operand, auf den der Operator angewendet wirdoperand2
- linker Operand, auf den der Operator angewendet wird
op1
operator op2
oder null
, wenn beide
Operanden null
sind
UnsupportedOperationException
- falls der Operator null
ist,
unbekannt ist, oder auf die Operanden nicht angewendet werden kannprotected Object performOperation(String operator, Object operand)
"abs(.)"
"sqr(.)"
oder "sqrt(.)"
"rnd(.)"
oder "round(.)"
"int(.)"
oder "trunc(.)"
"!"
, "NOT"
oder "NICHT"
"isNaN(.)"
"sin(.)"
"cos(.)"
"tan(.)"
"arcsin(.)"
oder "asin(.)"
"arccos(.)"
oder "acos(.)"
"arctan(.)"
oder "atan(.)"
"exp(.)"
"ln(.)"
"log(.)"
"val(.)"
"str(.)"
"toupper(.)"
"tolower(.)"
op
werden als FALSE interpretiert, gdw. op == 0
.
operator
- 1-stelliger Operatoroperand
- Operand auf den der Operator angewendet wird
operand
)
UnsupportedOperationException
- falls der Operator null
ist,
unbekannt ist, oder auf den Operanden nicht angewendet werden kannprotected Object performOperation(String operator)
"rand"
oder "random"
operator
- 0-stelliger Operator
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |