final class Debugger extends java.lang.Object implements ParserVisitor
It rebuilds an expression string from the tree and the start/end offsets of the cause in that string.
This implies that exceptions during evaluation do allways carry the node that's causing the error.Modifier and Type | Field and Description |
---|---|
private java.lang.StringBuilder |
builder
The builder to compose messages.
|
private JexlNode |
cause
The cause of the issue to debug.
|
private int |
end
The ending character location offset of the cause in the builder.
|
private static java.util.regex.Pattern |
QUOTED_IDENTIFIER
Checks identifiers that contain space, quote, double-quotes or backspace.
|
private int |
start
The starting character location offset of the cause in the builder.
|
Constructor and Description |
---|
Debugger()
Creates a Debugger.
|
Modifier and Type | Method and Description |
---|---|
private java.lang.Object |
accept(JexlNode node,
java.lang.Object data)
Checks if a child node is the cause to debug & adds its representation
to the rebuilt expression.
|
private java.lang.Object |
acceptStatement(JexlNode child,
java.lang.Object data)
Adds a statement node to the rebuilt expression.
|
private java.lang.Object |
check(JexlNode node,
java.lang.String image,
java.lang.Object data)
Checks if a terminal node is the the cause to debug & adds its
representation to the rebuilt expression.
|
java.lang.String |
data() |
java.lang.String |
data(JexlNode node)
Rebuilds an expression from a Jexl node.
|
boolean |
debug(JexlNode node)
Seeks the location of an error cause (a node) in an expression.
|
int |
end() |
private java.lang.Object |
infixChildren(JexlNode node,
java.lang.String infix,
boolean paren,
java.lang.Object data)
Checks if the children of a node using infix notation is the cause to debug,
adds their representation to the rebuilt expression.
|
private java.lang.Object |
prefixChild(JexlNode node,
java.lang.String prefix,
java.lang.Object data)
Checks if the child of a node using prefix notation is the cause to debug,
adds their representation to the rebuilt expression.
|
int |
start() |
java.lang.Object |
visit(ASTAdditiveNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTAdditiveOperator node,
java.lang.Object data) |
java.lang.Object |
visit(ASTAmbiguous node,
java.lang.Object data) |
java.lang.Object |
visit(ASTAndNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTArrayAccess node,
java.lang.Object data) |
java.lang.Object |
visit(ASTArrayLiteral node,
java.lang.Object data) |
java.lang.Object |
visit(ASTAssignment node,
java.lang.Object data) |
java.lang.Object |
visit(ASTBitwiseAndNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTBitwiseComplNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTBitwiseOrNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTBitwiseXorNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTBlock node,
java.lang.Object data) |
java.lang.Object |
visit(ASTConstructorNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTDivNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTEmptyFunction node,
java.lang.Object data) |
java.lang.Object |
visit(ASTEQNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTERNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTFalseNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTForeachStatement node,
java.lang.Object data) |
java.lang.Object |
visit(ASTFunctionNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTGENode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTGTNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTIdentifier node,
java.lang.Object data) |
java.lang.Object |
visit(ASTIfStatement node,
java.lang.Object data) |
java.lang.Object |
visit(ASTJexlScript node,
java.lang.Object data) |
java.lang.Object |
visit(ASTLENode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTLTNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTMapEntry node,
java.lang.Object data) |
java.lang.Object |
visit(ASTMapLiteral node,
java.lang.Object data) |
java.lang.Object |
visit(ASTMethodNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTModNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTMulNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTNENode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTNotNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTNRNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTNullLiteral node,
java.lang.Object data) |
java.lang.Object |
visit(ASTNumberLiteral node,
java.lang.Object data) |
java.lang.Object |
visit(ASTOrNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTReferenceExpression node,
java.lang.Object data) |
java.lang.Object |
visit(ASTReference node,
java.lang.Object data) |
java.lang.Object |
visit(ASTReturnStatement node,
java.lang.Object data) |
java.lang.Object |
visit(ASTSizeFunction node,
java.lang.Object data) |
java.lang.Object |
visit(ASTSizeMethod node,
java.lang.Object data) |
java.lang.Object |
visit(ASTStringLiteral node,
java.lang.Object data) |
java.lang.Object |
visit(ASTTernaryNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTTrueNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTUnaryMinusNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTVar node,
java.lang.Object data) |
java.lang.Object |
visit(ASTWhileStatement node,
java.lang.Object data) |
java.lang.Object |
visit(SimpleNode node,
java.lang.Object data) |
private final java.lang.StringBuilder builder
private JexlNode cause
private int start
private int end
private static final java.util.regex.Pattern QUOTED_IDENTIFIER
public boolean debug(JexlNode node)
node
- the node to debugpublic java.lang.String data()
public java.lang.String data(JexlNode node)
node
- the node to rebuilt frompublic int start()
public int end()
private java.lang.Object accept(JexlNode node, java.lang.Object data)
node
- the child nodedata
- visitor pattern argumentprivate java.lang.Object acceptStatement(JexlNode child, java.lang.Object data)
child
- the child nodedata
- visitor pattern argumentprivate java.lang.Object check(JexlNode node, java.lang.String image, java.lang.Object data)
node
- the child nodeimage
- the child node token image (may be null)data
- visitor pattern argumentprivate java.lang.Object infixChildren(JexlNode node, java.lang.String infix, boolean paren, java.lang.Object data)
node
- the child nodeinfix
- the child node tokenparen
- whether the child should be parenthesizeddata
- visitor pattern argumentprivate java.lang.Object prefixChild(JexlNode node, java.lang.String prefix, java.lang.Object data)
node
- the nodeprefix
- the node tokendata
- visitor pattern argumentpublic java.lang.Object visit(ASTAdditiveNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTAdditiveOperator node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTAndNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTArrayAccess node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTArrayLiteral node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTAssignment node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTBitwiseAndNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTBitwiseComplNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTBitwiseOrNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTBitwiseXorNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTBlock node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTDivNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTEmptyFunction node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTEQNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTERNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTFalseNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTForeachStatement node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTGENode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTGTNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTIdentifier node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTIfStatement node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTNumberLiteral node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTJexlScript node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTLENode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTLTNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTMapEntry node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTMapLiteral node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTConstructorNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTFunctionNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTMethodNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTModNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTMulNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTNENode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTNRNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTNotNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTNullLiteral node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTOrNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTReference node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTReferenceExpression node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTReturnStatement node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTSizeFunction node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTSizeMethod node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTStringLiteral node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTTernaryNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTTrueNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTUnaryMinusNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTVar node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTWhileStatement node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(SimpleNode node, java.lang.Object data)
visit
in interface ParserVisitor
public java.lang.Object visit(ASTAmbiguous node, java.lang.Object data)
visit
in interface ParserVisitor