Package org.apache.commons.jexl3.parser
Class JexlNode
- java.lang.Object
-
- org.apache.commons.jexl3.parser.SimpleNode
-
- org.apache.commons.jexl3.parser.JexlNode
-
- All Implemented Interfaces:
Node
- Direct Known Subclasses:
ASTAddNode
,ASTAmbiguous
,ASTAndNode
,ASTAnnotatedStatement
,ASTAnnotation
,ASTArguments
,ASTAssignment
,ASTBitwiseAndNode
,ASTBitwiseComplNode
,ASTBitwiseOrNode
,ASTBitwiseXorNode
,ASTBreak
,ASTConstructorNode
,ASTContinue
,ASTDecrementGetNode
,ASTDefineVars
,ASTDivNode
,ASTDoWhileStatement
,ASTEmptyFunction
,ASTEQNode
,ASTEQSNode
,ASTERNode
,ASTEWNode
,ASTExtendedLiteral
,ASTFalseNode
,ASTFunctionNode
,ASTGENode
,ASTGetDecrementNode
,ASTGetIncrementNode
,ASTGTNode
,ASTIdentifier
,ASTIdentifierAccess
,ASTIfStatement
,ASTIncrementGetNode
,ASTInstanceOf
,ASTJxltLiteral
,ASTLENode
,ASTLTNode
,ASTMapEntry
,ASTMethodNode
,ASTModNode
,ASTMulNode
,ASTNENode
,ASTNESNode
,ASTNEWNode
,ASTNotInstanceOf
,ASTNotNode
,ASTNRNode
,ASTNSWNode
,ASTNullLiteral
,ASTNullpNode
,ASTNumberLiteral
,ASTOrNode
,ASTQualifiedIdentifier
,ASTRangeNode
,ASTReference
,ASTReferenceExpression
,ASTRegexLiteral
,ASTReturnStatement
,ASTSetAddNode
,ASTSetAndNode
,ASTSetDivNode
,ASTSetModNode
,ASTSetMultNode
,ASTSetOrNode
,ASTSetShiftLeftNode
,ASTSetShiftRightNode
,ASTSetShiftRightUnsignedNode
,ASTSetSubNode
,ASTSetXorNode
,ASTShiftLeftNode
,ASTShiftRightNode
,ASTShiftRightUnsignedNode
,ASTSizeFunction
,ASTStringLiteral
,ASTSubNode
,ASTSWNode
,ASTTernaryNode
,ASTThrowStatement
,ASTTrueNode
,ASTTryStatement
,ASTUnaryMinusNode
,ASTUnaryPlusNode
,ASTWhileStatement
,ExtensibleNode
,JexlLexicalNode
public abstract class JexlNode extends SimpleNode
Base class for parser nodes - holds an 'image' of the token for later use.- Since:
- 2.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
JexlNode.Constant<T>
A marker interface for constants.static interface
JexlNode.Funcall
Marker interface for cachable function calls.static class
JexlNode.Info
An info bound to its node.
-
Field Summary
Fields Modifier and Type Field Description private int
lc
private static long
serialVersionUID
-
Fields inherited from class org.apache.commons.jexl3.parser.SimpleNode
id
-
-
Constructor Summary
Constructors Constructor Description JexlNode(int id)
JexlNode(Parser p, int id)
Deprecated.UseJexlNode(int)
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clearCache()
Clears any cached value of type JexlProperty{G,S}et or JexlMethod.int
getColumn()
int
getLine()
boolean
isConstant()
Whether this node is a constant node.protected boolean
isConstant(boolean literal)
boolean
isGlobalVar()
boolean
isLeftValue()
Whether this node is a left value.boolean
isSafeLhs(boolean safe)
Whether this node is the left-hand side of a safe access identifier as in.boolean
isStrictOperator(JexlArithmetic arithmetic)
Checks whether this node is an operator that accepts a null argument even when arithmetic is in strict mode.JexlInfo
jexlInfo()
Gets the associated JexlInfo instance.void
jjtSetFirstToken(Token t)
void
jjtSetLastToken(Token t)
-
Methods inherited from class org.apache.commons.jexl3.parser.SimpleNode
childrenAccept, dump, dumpOut, getId, jjtAccept, jjtAddChild, jjtClose, jjtGetChild, jjtGetNumChildren, jjtGetParent, jjtGetValue, jjtOpen, jjtSetChildren, jjtSetParent, jjtSetValue, toString, toString
-
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
lc
private int lc
-
-
Constructor Detail
-
JexlNode
public JexlNode(int id)
-
JexlNode
@Deprecated public JexlNode(Parser p, int id)
Deprecated.UseJexlNode(int)
.Constructs a new instance.- Parameters:
p
- not used.id
- the node type identifier
-
-
Method Detail
-
clearCache
public void clearCache()
Clears any cached value of type JexlProperty{G,S}et or JexlMethod.This is called when the engine detects the evaluation of a script occurs with a class loader different that the one that created it.
-
getColumn
public int getColumn()
-
getLine
public int getLine()
-
isConstant
public boolean isConstant()
Whether this node is a constant node.Its value can not change after the first evaluation and can be cached indefinitely.
- Returns:
- true if constant, false otherwise
-
isConstant
protected boolean isConstant(boolean literal)
-
isGlobalVar
public boolean isGlobalVar()
- Returns:
- true if this node looks like a global var
-
isLeftValue
public boolean isLeftValue()
Whether this node is a left value.- Returns:
- true if node is assignable, false otherwise
-
isSafeLhs
public boolean isSafeLhs(boolean safe)
Whether this node is the left-hand side of a safe access identifier as in. For instance, in 'x?.y' , 'x' is safe.- Parameters:
safe
- whether the engine is in safe-navigation mode- Returns:
- true if safe lhs, false otherwise
-
isStrictOperator
public boolean isStrictOperator(JexlArithmetic arithmetic)
Checks whether this node is an operator that accepts a null argument even when arithmetic is in strict mode. The default cases are equals and not equals.- Parameters:
arithmetic
- the node to test- Returns:
- true if node accepts null arguments, false otherwise
-
jexlInfo
public JexlInfo jexlInfo()
Gets the associated JexlInfo instance.- Returns:
- the info
-
jjtSetFirstToken
public void jjtSetFirstToken(Token t)
-
jjtSetLastToken
public void jjtSetLastToken(Token t)
-
-