Class AstRoot
- All Implemented Interfaces:
Comparable<AstNode>, Iterable<Node>
Node for the root of a parse tree. It contains the statements and functions
in the script, and a list of
Comment
nodes associated with the script
as a whole. Node type is Token.SCRIPT
.
Note that the tree itself does not store errors. To collect the parse errors
and warnings, pass an ErrorReporter
to the
Parser
via the
CompilerEnvirons
.
-
Nested Class Summary
Nested classes/interfaces inherited from class AstNode
AstNode.DebugPrintVisitor, AstNode.PositionComparator
Nested classes/interfaces inherited from class Node
Node.NodeIterator
-
Field Summary
FieldsFields inherited from class Scope
parentScope, symbolTable, top
Fields inherited from class AstNode
inlineComment, length, parent, position
Fields inherited from class Node
ARROW_FUNCTION_PROP, ATTRIBUTE_FLAG, BOTH, CASEARRAY_PROP, CATCH_SCOPE_PROP, CONTROL_BLOCK_PROP, DECR_FLAG, DESCENDANTS_FLAG, DESTRUCTURING_ARRAY_LENGTH, DESTRUCTURING_NAMES, DESTRUCTURING_PARAMS, DIRECTCALL_PROP, END_DROPS_OFF, END_RETURNS, END_RETURNS_VALUE, END_UNREACHED, END_YIELDS, EXPRESSION_CLOSURE_PROP, first, FUNCTION_PROP, GENERATOR_END_PROP, INCRDECR_PROP, ISNUMBER_PROP, JSDOC_PROP, LABEL_ID_PROP, last, LAST_PROP, LEFT, lineno, LOCAL_BLOCK_PROP, LOCAL_PROP, MEMBER_TYPE_PROP, NAME_PROP, next, NON_SPECIALCALL, OBJECT_IDS_PROP, PARENTHESIZED_PROP, POST_FLAG, PROPERTY_FLAG, propListHead, REGEXP_PROP, RIGHT, SHORTHAND_PROPERTY_NAME, SKIP_INDEXES_PROP, SPECIALCALL_EVAL, SPECIALCALL_PROP, SPECIALCALL_WITH, TARGETBLOCK_PROP, TEMPLATE_LITERAL_PROP, type, VARIABLE_PROP
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
addComment
(Comment comment) Add a comment to the comment set.void
Debugging function to check that the parser has set the parent link for every node in the tree.A debug-printer that includes comments (at the end).Returns comment setvoid
setComments
(SortedSet<Comment> comments) Sets comment list, and updates the parent of each entry to point to this node.toSource
(int depth) Emits source code for this node.void
visitAll
(NodeVisitor visitor) Visits the AST nodes, then the comment nodes.void
visitComments
(NodeVisitor visitor) Visits the comment nodes in the order they appear in the source code.Methods inherited from class ScriptNode
addFunction, addRegExp, addSymbol, addTemplateLiteral, flattenSymbolTable, getBaseLineno, getCompilerData, getEncodedSource, getEncodedSourceEnd, getEncodedSourceStart, getEndLineno, getFunctionCount, getFunctionNode, getFunctions, getIndexForNameNode, getNextTempName, getParamAndVarConst, getParamAndVarCount, getParamAndVarNames, getParamCount, getParamOrVarName, getRegexpCount, getRegexpFlags, getRegexpString, getSourceName, getSymbols, getTemplateLiteralCount, getTemplateLiteralStrings, isInStrictMode, setBaseLineno, setCompilerData, setEncodedSource, setEncodedSourceBounds, setEncodedSourceEnd, setEncodedSourceStart, setEndLineno, setInStrictMode, setSourceName, setSymbols, visit
Methods inherited from class Scope
addChildScope, clearParentScope, getChildScopes, getDefiningScope, getParentScope, getStatements, getSymbol, getSymbolTable, getTop, joinScopes, putSymbol, replaceWith, setParentScope, setSymbolTable, setTop, splitScope
Methods inherited from class Jump
getContinue, getDefault, getFinally, getJumpStatement, getLoop, setContinue, setDefault, setFinally, setJumpStatement, setLoop
Methods inherited from class AstNode
addChild, assertNotNull, codeBug, compareTo, depth, getAbsolutePosition, getAstRoot, getEnclosingFunction, getEnclosingScope, getInlineComment, getLength, getLineno, getParent, getPosition, hasSideEffects, makeIndent, operatorToString, printList, setBounds, setInlineComment, setLength, setParent, setPosition, setRelative, shortName, toSource
Methods inherited from class Node
addChildAfter, addChildBefore, addChildrenToBack, addChildrenToFront, addChildToBack, addChildToFront, getBigInt, getChildBefore, getDouble, getExistingIntProp, getFirstChild, getIntProp, getJsDoc, getJsDocNode, getLastChild, getLastSibling, getNext, getProp, getScope, getString, getType, hasChildren, hasConsistentReturnUsage, iterator, labelId, labelId, newNumber, newString, newString, newTarget, putIntProp, putProp, removeChild, removeChildren, removeProp, replaceChild, replaceChildAfter, resetTargets, setBigInt, setDouble, setJsDocNode, setLineno, setScope, setString, setType, toString, toStringTree
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface Iterable
forEach, spliterator
-
Field Details
-
comments
-
-
Constructor Details
-
AstRoot
public AstRoot() -
AstRoot
public AstRoot(int pos)
-
-
Method Details
-
getComments
-
setComments
-
addComment
Add a comment to the comment set.- Parameters:
comment
- the comment node.- Throws:
IllegalArgumentException
- if comment isnull
-
visitComments
Visits the comment nodes in the order they appear in the source code. The comments are not visited by theScriptNode.visit(NodeVisitor)
function - you must use this function to visit them.- Parameters:
visitor
- the callback object. It is passed each comment node. The return value is ignored.
-
visitAll
Visits the AST nodes, then the comment nodes. This method is equivalent to callingScriptNode.visit(NodeVisitor)
, thenvisitComments(NodeVisitor)
. The return value is ignored while visiting comment nodes.- Parameters:
visitor
- the callback object.
-
toSource
Description copied from class:AstNode
Emits source code for this node. Callee is responsible for calling this function recursively on children, incrementing indent as appropriate.Note: if the parser was in error-recovery mode, some AST nodes may have
null
children that are expected to be non-null
when no errors are present. In this situation, the behavior of thetoSource
method is undefined:toSource
implementations may assume that the AST node is error-free, since it is intended to be invoked only at runtime after a successful parse. -
debugPrint
A debug-printer that includes comments (at the end).- Overrides:
debugPrint
in classAstNode
- Returns:
- a very verbose indented printout of the tree. The format of each line is: abs-pos name position length [identifier]
-
checkParentLinks
public void checkParentLinks()Debugging function to check that the parser has set the parent link for every node in the tree.- Throws:
IllegalStateException
- if a parent link is missing
-