|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectschmitzm.lang.tree.OperationTreeParser
public class OperationTreeParser
Diese Klasse stellt einen Parser fuer einen Operator-Baum dar. Dieser erstellt einen Operator-Baum aus einem Formel-String, der folgende Teilen bestehen darf:
OperationTree.ConstantNode
double
-Bereichrand
oder random
als Alias fuer eine Zufallszahl
zwischen 0 und 1: OperationTree.ConstantAliasNode
"NaN"
"TRUE"
"FALSE"
System.currentTimeMillis()
): "CURR_MILLIS"
OperationTree.ConstantNode
OperationTree.OperatorNode
"+"
"-"
"*"
"/"
"^"
OperationTree.OperatorNode
"&"
"|"
"="
oder "=="
"!="
oder "<>"
"<"
">"
"<="
">="
OperationTree.OperatorNode
"+"
"regex(expression,regular expr)"
"split(expression,regular expr,n)"
OperationTree.MultiParamOperatorNode
"substr(expression,startPos_inkl,endPos_exkl)"
"replAll(expression,pattern,replacement)"
OperationTree.UnaryOperatorNode
"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(.)"
OperationTree.UnaryOperatorNode
"!(.)"
OperationTree.UnaryOperatorNode
"str(.)"
"val(.)"
"toupper(.)"
"tolower(.)"
"len(.)"
ITE(.,.,.)
: OperationTree.ITENode
op > 0
entspricht TRUE; op = 0
entspricht FALSE.
Field Summary | |
---|---|
protected String |
delimiter
Entaehlt die Delimiter des Tokenizers tok . |
protected StringBuffer |
openBrackets
Stellt einen Stack dar, auf den die geoeffneten Klammern gelegt werden. |
protected PushbackStringTokenizer |
tok
Tokenizer auf den Formel-String. |
Constructor Summary | |
---|---|
OperationTreeParser()
Erzeugt eine neue Instanz des Parsers. |
Method Summary | |
---|---|
boolean |
checkCorrespondingBrackets(char openBracket,
char closeBracket)
Prueft, ob eine oeffnende und eine schliessende Klammer zueinander korrespondieren. |
String |
getAdditionOperatorChars()
Liefert die Zeichen, die als arithmetische Strich-Operatoren verwendet werden. |
String |
getBooleanOperatorChars()
Liefert die Zeichen, die als boolesche Operatoren verwendet werden. |
String |
getClosingBracketChars()
Liefert die Zeichen, die als schliessende Klammern verwendet werden. |
String |
getCompareOperatorChars()
Liefert die Zeichen, die fuer Vergleichsoperatoren verwendet werden. |
String |
getConnectingOperatorChars()
Deprecated. wegen booleschen Operatoren muss eine Verbindungs-Prioritaet verwendet werden; ersetzt durch getOperatorConnectivity(String) |
protected Object |
getConstantFromString(String token)
Liefert einen Double- oder String-Wert aus einem String. |
protected double |
getDoubleFromString(String token)
Liefert einen Double-Wert aus einem String. |
protected int |
getIntFromString(String token)
Liefert einen Integer-Wert aus einem String. |
protected int |
getMaximumOperatorConnectivity()
Liefert den Konnektivitaetswert des am meisten bindenden Operators. |
String |
getMultiplyOperatorChars()
Liefert die Zeichen, die als arithmetische Punkt-Operatoren verwendet werden. |
String |
getOpeningBracketChars()
Liefert die Zeichen, die als oeffnende Klammern verwendet werden. |
String |
getOperatorChars()
Liefert die Zeichen, die als 2-stellige Operatoren verwendet werden. |
int |
getOperatorConnectivity(String operator)
Liefert einen Wert, der die Konnektivitaet (Bindung) eines Operators ausdrueckt (je groesser, desto groesser die Bindung). |
String |
getParameterSeperatorChars()
Liefert die Zeichen, die als Trennzeichen zwischen Funktionsparametern verwendet werden. |
String |
getStringEncapsulationChars()
Liefert die Zeichen, zwischen denen String-Konstanten gekapselt werden. |
boolean |
isAdditionOperator(String token)
Prueft, ob es sich bei einem String um einen Strich-Operator handelt. |
boolean |
isBooleanOperator(String token)
Prueft, ob es sich bei einem String um einen booleschen Operator handelt. |
boolean |
isClosingBracket(String token)
Prueft, ob es sich bei einem String um eine schliessende Klammer handelt. |
boolean |
isCompareOperator(String token)
Prueft, ob es sich bei einem String um einen Vergleichsoperator handelt. |
boolean |
isConnectingOperator(String operator)
Deprecated. wegen booleschen Operatoren muss eine Verbindungs-Prioritaet verwendet werden; ersetzt durch getOperatorConnectivity(String) |
boolean |
isMultiplyOperator(String token)
Prueft, ob es sich bei einem String um einen Punkt-Operator handelt. |
boolean |
isOpeningBracket(String token)
Prueft, ob es sich bei einem String um eine oeffnende Klammer handelt. |
boolean |
isOperatorChar(String token)
Prueft, ob es sich bei einem String um einen Operator handelt. |
boolean |
isParameterSeperator(String token)
Prueft, ob es sich bei einem String um eine schliessende Klammer handelt. |
boolean |
isStringEncapsulationChar(String token)
Prueft, ob es sich bei einem String um ein Zeichenketten-kapselndes Zeichen handelt. |
protected String |
nextNonWSToken()
Liefert das naechste Token aus dem Tokenizer, das nicht ein White-Space ist. |
OperationTree |
parse(String rule)
Erstellt einen Operator-Baum aus einem Formel-String. |
protected BinaryTreeNode |
parseLiteral()
Parst das naechste Literal aus dem Tokenizer tok . |
protected BinaryTreeNode |
parseOperand(int minOperatorConn)
Parst den naechsten Operand aus dem Tokenizer tok . |
protected BinaryTreeNode |
parseRule()
Parst eine komplette Formel, bis zum Ende der Eingabe-Formel oder einem Parameter-Trenner. |
protected BinaryTreeNode |
parseRulePart()
Parst die naechste Teil-Formel aus dem Tokenizer tok . |
protected void |
pushbackWithWSToken()
Legt solange Token zurueck auf den Tokenizer, bis das zurueckgelegte Token kein White-Space ist. |
protected void |
throwParseError(String mess)
Wirft eine IllegalArgumentException mit der angegebenen Fehlermeldung. |
protected void |
throwParseError(String mess,
Throwable err)
Wirft eine IllegalArgumentException mit der angegebenen Fehlermeldung. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected StringBuffer openBrackets
protected PushbackStringTokenizer tok
parse(String)
protected String delimiter
tok
. Diese setzen sich
aus den oeffnenden und schliessenden Klammern zusammen, sowie aus den
Operatoren. Wird bei der Instanziierung des OperationTreeParser
befuellt.
getOpeningBracketChars()
,
getClosingBracketChars()
,
getOperatorChars()
Constructor Detail |
---|
public OperationTreeParser()
Method Detail |
---|
public String getOpeningBracketChars()
"([{"
public boolean isOpeningBracket(String token)
token
- ZeichenkettegetOpeningBracketChars()
public String getClosingBracketChars()
")]}"
public boolean isClosingBracket(String token)
token
- ZeichenkettegetClosingBracketChars()
public boolean checkCorrespondingBrackets(char openBracket, char closeBracket)
openBracket
- oeffnende KlammercloseBracket
- schliessende Klammerpublic String getStringEncapsulationChars()
"'
public boolean isStringEncapsulationChar(String token)
token
- ZeichenkettegetStringEncapsulationChars()
public String getParameterSeperatorChars()
",;"
public boolean isParameterSeperator(String token)
token
- ZeichenkettegetClosingBracketChars()
public String getOperatorChars()
public boolean isOperatorChar(String token)
token
- ZeichenkettegetOperatorChars()
public String getMultiplyOperatorChars()
"/*^"
public boolean isMultiplyOperator(String token)
token
- ZeichenkettegetMultiplyOperatorChars()
public String getAdditionOperatorChars()
"+-"
public boolean isAdditionOperator(String token)
token
- ZeichenkettegetAdditionOperatorChars()
public String getBooleanOperatorChars()
"&|!"
public boolean isBooleanOperator(String token)
token
- Zeichenkettepublic String getCompareOperatorChars()
"=<>!"
public boolean isCompareOperator(String token)
token
- Zeichenkettepublic int getOperatorConnectivity(String operator)
operator
- Operator
protected int getMaximumOperatorConnectivity()
getOperatorConnectivity(String)
die Prioritaeten der Operatoren veraendert werden.
public String getConnectingOperatorChars()
getOperatorConnectivity(String)
"/*^"
public boolean isConnectingOperator(String operator)
getOperatorConnectivity(String)
operator
- 2-stelliger OperatorgetConnectingOperatorChars()
public OperationTree parse(String rule)
rule
- Formelprotected final BinaryTreeNode parseRule()
protected final BinaryTreeNode parseRulePart()
tok
. Eine (geklammerter)
Teilformel ist eine durch Strich-Operatoren verbundene Kette von
Operanden.
protected final BinaryTreeNode parseOperand(int minOperatorConn)
tok
. Ein Operand ist eine
durch Operatoren gleicher Konnektivitaet verbundene Kette von
Literalen und geklammerten
Teil-Formeln.
minOperandConn
- minimale Konnektivitaet fuer den Operanden (bei einem
Operator mit kleinerer Konnektivitaet wird der
Operand beendet)protected BinaryTreeNode parseLiteral()
tok
. Ein Literal ist eine numerische
Konstante, ein Alias oder ein 1-stelliger Operator auf einer geklammerten
Teil-Formel. Diese Methode unterstuetzt
"abs(.)"
"sqr(.)"
oder "sqrt(.)"
"rnd(.)"
oder "round(.)"
"int(.)"
oder "trunc(.)"
"!(.)"
oder "not(.)"
"isNaN(.)"
"sin(.)"
"cos(.)"
"tan(.)"
"arcsin(.)"
oder "asin(.)"
"arccos(.)"
oder "acos(.)"
"arctan(.)"
oder "atan(.)"
"exp(.)"
"ln(.)"
"log(.)"
"str(.)"
"val(.)"
"len(.)"
"toupper(.)"
"tolower(.)"
"rand"
oder "random"
"NaN"
"ITE(.,.,.)"
protected void throwParseError(String mess)
IllegalArgumentException
mit der angegebenen Fehlermeldung.
Als zusaetzlicher Hinweis wird das Formel-Praefix ausgegeben nach dem
der Fehler aufgetreten ist.
mess
- Fehler-Meldungprotected void throwParseError(String mess, Throwable err)
IllegalArgumentException
mit der angegebenen Fehlermeldung.
Als zusaetzlicher Hinweis wird das Formel-Praefix ausgegeben nach dem
der Fehler aufgetreten ist.
mess
- Fehler-Meldungerr
- verursachender Fehlerprotected Object getConstantFromString(String token)
TRUE
und FALSE
werden in 1 bzw. 0 umgewandelt.
token
- umzuwandelnde Zeichenkette
IllegalArgumentException
- falls die Umwandlung nicht vorgenommen
werden kannprotected int getIntFromString(String token)
token
- umzuwandelnde Zeichenkette
IllegalArgumentException
- falls die Umwandlung nicht vorgenommen
werden kannprotected double getDoubleFromString(String token)
token
- umzuwandelnde Zeichenkette
IllegalArgumentException
- falls die Umwandlung nicht vorgenommen
werden kannprotected String nextNonWSToken()
protected void pushbackWithWSToken()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |