Class NodeVisitor<T extends LexicalContext>
java.lang.Object
com.oracle.js.parser.ir.visitor.NodeVisitor<T>
- Type Parameters:
T- lexical context class used by this visitor
- Direct Known Subclasses:
JSONWriter, PrintVisitor
Visitor used to navigate the IR.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanenterAccessNode(AccessNode accessNode) Callback for entering an AccessNodebooleanenterBinaryNode(BinaryNode binaryNode) Callback for entering a BinaryNodebooleanenterBlock(Block block) Callback for entering a BlockbooleanenterBlockExpression(BlockExpression blockExpression) Callback for entering a BlockExpressionbooleanenterBlockStatement(BlockStatement blockStatement) Callback for entering a BlockStatementbooleanenterBreakNode(BreakNode breakNode) Callback for entering a BreakNodebooleanenterCallNode(CallNode callNode) Callback for entering a CallNodebooleanenterCaseNode(CaseNode caseNode) Callback for entering a CaseNodebooleanenterCatchNode(CatchNode catchNode) Callback for entering a CatchNodebooleanenterClassElement(ClassElement element) Callback for entering a ClassElementbooleanenterClassNode(ClassNode classNode) Callback for entering a ClassNodebooleanenterContinueNode(ContinueNode continueNode) Callback for entering a ContinueNodebooleanenterDebuggerNode(DebuggerNode debuggerNode) Callback for entering a DebuggerNodeprotected booleanenterDefault(Node node) Override this method to do a double inheritance pattern, e.g.booleanenterEmptyNode(EmptyNode emptyNode) Callback for entering an EmptyNodebooleanenterErrorNode(ErrorNode errorNode) Callback for entering an ErrorNodebooleanenterExportNode(ExportNode exportNode) booleanenterExportSpecifierNode(ExportSpecifierNode exportSpecifierNode) booleanenterExpressionStatement(ExpressionStatement expressionStatement) Callback for entering an ExpressionStatementbooleanenterForNode(ForNode forNode) Callback for entering a ForNodebooleanenterFunctionNode(FunctionNode functionNode) Callback for entering a FunctionNodebooleanenterIdentNode(IdentNode identNode) Callback for entering an IdentNodebooleanenterIfNode(IfNode ifNode) Callback for entering an IfNodebooleanenterImportClauseNode(ImportClauseNode importClauseNode) booleanenterImportNode(ImportNode importNode) booleanenterImportSpecifierNode(ImportSpecifierNode importSpecifierNode) booleanenterIndexNode(IndexNode indexNode) Callback for entering an IndexNodebooleanCallback for entering aJoinPredecessorExpression.booleanenterLabelNode(LabelNode labelNode) Callback for entering a LabelNodebooleanenterLiteralNode(LiteralNode<?> literalNode) Callback for entering a LiteralNodebooleanenterNamedExportsNode(NamedExportsNode exportClauseNode) booleanenterNamedImportsNode(NamedImportsNode namedImportsNode) booleanenterNameSpaceImportNode(NameSpaceImportNode nameSpaceImportNode) booleanenterObjectNode(ObjectNode objectNode) Callback for entering an ObjectNodebooleanenterParameterNode(ParameterNode paramNode) Callback for entering a ParameterNodebooleanenterPropertyNode(PropertyNode propertyNode) Callback for entering a PropertyNodebooleanenterReturnNode(ReturnNode returnNode) Callback for entering a ReturnNodebooleanenterSwitchNode(SwitchNode switchNode) Callback for entering a SwitchNodebooleanenterTemplateLiteralNode(TemplateLiteralNode templateLiteralNode) Callback for entering a TemplateLiteralNodebooleanenterTernaryNode(TernaryNode ternaryNode) Callback for entering a TernaryNodebooleanenterThrowNode(ThrowNode throwNode) Callback for entering a ThrowNodebooleanenterTryNode(TryNode tryNode) Callback for entering a TryNodebooleanenterUnaryNode(UnaryNode unaryNode) Callback for entering a UnaryNodebooleanenterVarNode(VarNode varNode) Callback for entering a VarNodebooleanenterWhileNode(WhileNode whileNode) Callback for entering a WhileNodebooleanenterWithNode(WithNode withNode) Callback for entering a WithNodefinal TGet the lexical context of this node visitorleaveAccessNode(AccessNode accessNode) Callback for entering an AccessNodeleaveBinaryNode(BinaryNode binaryNode) Callback for leaving a BinaryNodeleaveBlock(Block block) Callback for leaving a BlockleaveBlockExpression(BlockExpression blockExpression) Callback for leaving a BlockExpressionleaveBlockStatement(BlockStatement blockStatement) Callback for leaving a BlockStatementleaveBreakNode(BreakNode breakNode) Callback for leaving a BreakNodeleaveCallNode(CallNode callNode) Callback for leaving a CallNodeleaveCaseNode(CaseNode caseNode) Callback for leaving a CaseNodeleaveCatchNode(CatchNode catchNode) Callback for leaving a CatchNodeleaveClassElement(ClassElement element) Callback for leaving a ClassElementleaveClassNode(ClassNode classNode) Callback for leaving a ClassNodeleaveContinueNode(ContinueNode continueNode) Callback for leaving a ContinueNodeleaveDebuggerNode(DebuggerNode debuggerNode) Callback for leaving a DebuggerNodeprotected NodeleaveDefault(Node node) Override this method to do a double inheritance pattern, e.g.leaveEmptyNode(EmptyNode emptyNode) Callback for leaving an EmptyNodeleaveErrorNode(ErrorNode errorNode) Callback for leaving an ErrorNodeleaveExportNode(ExportNode exportNode) leaveExportSpecifierNode(ExportSpecifierNode exportSpecifierNode) leaveExpressionStatement(ExpressionStatement expressionStatement) Callback for leaving an ExpressionStatementleaveForNode(ForNode forNode) Callback for leaving a ForNodeleaveFunctionNode(FunctionNode functionNode) Callback for leaving a FunctionNodeleaveIdentNode(IdentNode identNode) Callback for leaving an IdentNodeleaveIfNode(IfNode ifNode) Callback for leaving an IfNodeleaveImportClauseNode(ImportClauseNode importClauseNode) leaveImportNode(ImportNode importNode) leaveImportSpecifierNode(ImportSpecifierNode importSpecifierNode) leaveIndexNode(IndexNode indexNode) Callback for leaving an IndexNodeCallback for leaving aJoinPredecessorExpression.leaveLabelNode(LabelNode labelNode) Callback for leaving a LabelNodeleaveLiteralNode(LiteralNode<?> literalNode) Callback for leaving a LiteralNodeleaveNamedExportsNode(NamedExportsNode exportClauseNode) leaveNamedImportsNode(NamedImportsNode namedImportsNode) leaveNameSpaceImportNode(NameSpaceImportNode nameSpaceImportNode) leaveObjectNode(ObjectNode objectNode) Callback for leaving an ObjectNodeleaveParameterNode(ParameterNode paramNode) Callback for leaving a ParameterNodeleavePropertyNode(PropertyNode propertyNode) Callback for leaving a PropertyNodeleaveReturnNode(ReturnNode returnNode) Callback for leaving a ReturnNodeleaveSwitchNode(SwitchNode switchNode) Callback for leaving a SwitchNodeleaveTemplateLiteralNode(TemplateLiteralNode templateLiteralNode) Callback for leaving a TemplateLiteralNodeleaveTernaryNode(TernaryNode ternaryNode) Callback for leaving a TernaryNodeleaveThrowNode(ThrowNode throwNode) Callback for leaving a ThrowNodeleaveTryNode(TryNode tryNode) Callback for leaving a TryNodeleaveUnaryNode(UnaryNode unaryNode) Callback for leaving a UnaryNodeleaveVarNode(VarNode varNode) Callback for leaving a VarNodeleaveWhileNode(WhileNode whileNode) Callback for leaving a WhileNodeleaveWithNode(WithNode withNode) Callback for leaving a WithNode
-
Field Details
-
lc
lexical context in use
-
-
Constructor Details
-
NodeVisitor
-
-
Method Details
-
getLexicalContext
Get the lexical context of this node visitor- Returns:
- lexical context
-
enterDefault
Override this method to do a double inheritance pattern, e.g. avoid usingif (x instanceof NodeTypeA) { ... } else if (x instanceof NodeTypeB) { ... } else { ... }Use a NodeVisitor instead, and this method contents forms the else case.- Parameters:
node- the node to visit- Returns:
- true if traversal should continue and node children be traversed, false otherwise
- See Also:
-
leaveDefault
Override this method to do a double inheritance pattern, e.g. avoid usingif (x instanceof NodeTypeA) { ... } else if (x instanceof NodeTypeB) { ... } else { ... }Use a NodeVisitor instead, and this method contents forms the else case.- Parameters:
node- the node to visit- Returns:
- the node
- See Also:
-
enterAccessNode
Callback for entering an AccessNode- Parameters:
accessNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveAccessNode
Callback for entering an AccessNode- Parameters:
accessNode- the node- Returns:
- processed node, null if traversal should end
-
enterBlock
Callback for entering a Block- Parameters:
block- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveBlock
-
enterBinaryNode
Callback for entering a BinaryNode- Parameters:
binaryNode- the node- Returns:
- processed node
-
leaveBinaryNode
Callback for leaving a BinaryNode- Parameters:
binaryNode- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterBreakNode
Callback for entering a BreakNode- Parameters:
breakNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveBreakNode
-
enterCallNode
Callback for entering a CallNode- Parameters:
callNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveCallNode
-
enterCaseNode
Callback for entering a CaseNode- Parameters:
caseNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveCaseNode
-
enterCatchNode
Callback for entering a CatchNode- Parameters:
catchNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveCatchNode
-
enterContinueNode
Callback for entering a ContinueNode- Parameters:
continueNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveContinueNode
Callback for leaving a ContinueNode- Parameters:
continueNode- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterDebuggerNode
Callback for entering a DebuggerNode- Parameters:
debuggerNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveDebuggerNode
Callback for leaving a DebuggerNode- Parameters:
debuggerNode- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterEmptyNode
Callback for entering an EmptyNode- Parameters:
emptyNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveEmptyNode
-
enterErrorNode
Callback for entering an ErrorNode- Parameters:
errorNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveErrorNode
-
enterNamedExportsNode
-
leaveNamedExportsNode
-
enterExportNode
-
leaveExportNode
-
enterExportSpecifierNode
-
leaveExportSpecifierNode
-
enterExpressionStatement
Callback for entering an ExpressionStatement- Parameters:
expressionStatement- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveExpressionStatement
Callback for leaving an ExpressionStatement- Parameters:
expressionStatement- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterBlockStatement
Callback for entering a BlockStatement- Parameters:
blockStatement- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveBlockStatement
Callback for leaving a BlockStatement- Parameters:
blockStatement- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterForNode
Callback for entering a ForNode- Parameters:
forNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveForNode
-
enterFunctionNode
Callback for entering a FunctionNode- Parameters:
functionNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveFunctionNode
Callback for leaving a FunctionNode- Parameters:
functionNode- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterIdentNode
Callback for entering an IdentNode- Parameters:
identNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveIdentNode
-
enterIfNode
Callback for entering an IfNode- Parameters:
ifNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveIfNode
-
enterImportClauseNode
-
leaveImportClauseNode
-
enterImportNode
-
leaveImportNode
-
enterImportSpecifierNode
-
leaveImportSpecifierNode
-
enterIndexNode
Callback for entering an IndexNode- Parameters:
indexNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveIndexNode
-
enterLabelNode
Callback for entering a LabelNode- Parameters:
labelNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveLabelNode
-
enterLiteralNode
Callback for entering a LiteralNode- Parameters:
literalNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveLiteralNode
Callback for leaving a LiteralNode- Parameters:
literalNode- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterNameSpaceImportNode
-
leaveNameSpaceImportNode
-
enterNamedImportsNode
-
leaveNamedImportsNode
-
enterObjectNode
Callback for entering an ObjectNode- Parameters:
objectNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveObjectNode
Callback for leaving an ObjectNode- Parameters:
objectNode- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterPropertyNode
Callback for entering a PropertyNode- Parameters:
propertyNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leavePropertyNode
Callback for leaving a PropertyNode- Parameters:
propertyNode- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterReturnNode
Callback for entering a ReturnNode- Parameters:
returnNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveReturnNode
Callback for leaving a ReturnNode- Parameters:
returnNode- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterSwitchNode
Callback for entering a SwitchNode- Parameters:
switchNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveSwitchNode
Callback for leaving a SwitchNode- Parameters:
switchNode- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterTernaryNode
Callback for entering a TernaryNode- Parameters:
ternaryNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveTernaryNode
Callback for leaving a TernaryNode- Parameters:
ternaryNode- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterThrowNode
Callback for entering a ThrowNode- Parameters:
throwNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveThrowNode
-
enterTryNode
Callback for entering a TryNode- Parameters:
tryNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveTryNode
-
enterUnaryNode
Callback for entering a UnaryNode- Parameters:
unaryNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveUnaryNode
-
enterJoinPredecessorExpression
Callback for entering aJoinPredecessorExpression.- Parameters:
expr- the join predecessor expression- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveJoinPredecessorExpression
Callback for leaving aJoinPredecessorExpression.- Parameters:
expr- the join predecessor expression- Returns:
- processed node, which will replace the original one, or the original node
-
enterVarNode
Callback for entering a VarNode- Parameters:
varNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveVarNode
-
enterWhileNode
Callback for entering a WhileNode- Parameters:
whileNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveWhileNode
-
enterWithNode
Callback for entering a WithNode- Parameters:
withNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveWithNode
-
enterClassNode
Callback for entering a ClassNode- Parameters:
classNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveClassNode
-
enterBlockExpression
Callback for entering a BlockExpression- Parameters:
blockExpression- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveBlockExpression
Callback for leaving a BlockExpression- Parameters:
blockExpression- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterParameterNode
Callback for entering a ParameterNode- Parameters:
paramNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveParameterNode
Callback for leaving a ParameterNode- Parameters:
paramNode- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterTemplateLiteralNode
Callback for entering a TemplateLiteralNode- Parameters:
templateLiteralNode- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveTemplateLiteralNode
Callback for leaving a TemplateLiteralNode- Parameters:
templateLiteralNode- the node- Returns:
- processed node, which will replace the original one, or the original node
-
enterClassElement
Callback for entering a ClassElement- Parameters:
element- the node- Returns:
- true if traversal should continue and node children be traversed, false otherwise
-
leaveClassElement
Callback for leaving a ClassElement- Parameters:
element- the node- Returns:
- processed node, which will replace the original one, or the original node
-