Package org.mozilla.javascript.ast
Class ScriptNode
- java.lang.Object
-
- org.mozilla.javascript.Node
-
- org.mozilla.javascript.ast.AstNode
-
- org.mozilla.javascript.ast.Jump
-
- org.mozilla.javascript.ast.Scope
-
- org.mozilla.javascript.ast.ScriptNode
-
- Direct Known Subclasses:
AstRoot
,FunctionNode
public class ScriptNode extends Scope
Base type forAstRoot
andFunctionNode
nodes, which need to collect much of the same information.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.mozilla.javascript.ast.AstNode
AstNode.DebugPrintVisitor, AstNode.PositionComparator
-
Nested classes/interfaces inherited from class org.mozilla.javascript.Node
Node.NodeIterator
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.Object
compilerData
private java.util.List<FunctionNode>
EMPTY_LIST
private java.lang.String
encodedSource
private int
encodedSourceEnd
private int
encodedSourceStart
private int
endLineno
private java.util.List<FunctionNode>
functions
private boolean
inStrictMode
private boolean[]
isConsts
private int
paramCount
private java.util.List<RegExpLiteral>
regexps
private java.lang.String
sourceName
private java.util.List<Symbol>
symbols
private java.util.List<TemplateLiteral>
templateLiterals
private int
tempNumber
private java.lang.String[]
variableNames
-
Fields inherited from class org.mozilla.javascript.ast.Scope
parentScope, symbolTable, top
-
Fields inherited from class org.mozilla.javascript.ast.AstNode
inlineComment, length, parent, position
-
Fields inherited from class org.mozilla.javascript.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 Constructor Description ScriptNode()
ScriptNode(int pos)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
addFunction(FunctionNode fnNode)
Adds aFunctionNode
to the functions table for codegen.void
addRegExp(RegExpLiteral re)
Called by IRFactory to add a RegExp to the regexp table.(package private) void
addSymbol(Symbol symbol)
void
addTemplateLiteral(TemplateLiteral templateLiteral)
Called by IRFactory to add a Template Literal to the templateLiterals table.void
flattenSymbolTable(boolean flattenAllTables)
Assign every symbol a unique integer index.int
getBaseLineno()
java.lang.Object
getCompilerData()
java.lang.String
getEncodedSource()
Returns a canonical version of the source for this script or function, for use in implementing theObject.toSource
method of JavaScript objects.int
getEncodedSourceEnd()
Returns the end offset of the encoded source.int
getEncodedSourceStart()
Returns the start offset of the encoded source.int
getEndLineno()
int
getFunctionCount()
FunctionNode
getFunctionNode(int i)
java.util.List<FunctionNode>
getFunctions()
int
getIndexForNameNode(Node nameNode)
java.lang.String
getNextTempName()
boolean[]
getParamAndVarConst()
int
getParamAndVarCount()
java.lang.String[]
getParamAndVarNames()
int
getParamCount()
java.lang.String
getParamOrVarName(int index)
int
getRegexpCount()
java.lang.String
getRegexpFlags(int index)
java.lang.String
getRegexpString(int index)
java.lang.String
getSourceName()
Returns the URI, path or descriptive text indicating the origin of this script's source code.java.util.List<Symbol>
getSymbols()
int
getTemplateLiteralCount()
java.util.List<TemplateCharacters>
getTemplateLiteralStrings(int index)
boolean
isInStrictMode()
void
setBaseLineno(int lineno)
Sets base (starting) line number for this script or function.void
setCompilerData(java.lang.Object data)
void
setEncodedSource(java.lang.String encodedSource)
Used by the code generator.void
setEncodedSourceBounds(int start, int end)
Used by code generator.void
setEncodedSourceEnd(int end)
Used by code generator.void
setEncodedSourceStart(int start)
Used by code generator.void
setEndLineno(int lineno)
void
setInStrictMode(boolean inStrictMode)
void
setSourceName(java.lang.String sourceName)
Sets the URI, path or descriptive text indicating the origin of this script's source code.void
setSymbols(java.util.List<Symbol> symbols)
void
visit(NodeVisitor v)
Jumps are only used directly during code generation, and do not support this interface.-
Methods inherited from class org.mozilla.javascript.ast.Scope
addChildScope, clearParentScope, getChildScopes, getDefiningScope, getParentScope, getStatements, getSymbol, getSymbolTable, getTop, joinScopes, putSymbol, replaceWith, setParentScope, setSymbolTable, setTop, splitScope, toSource
-
Methods inherited from class org.mozilla.javascript.ast.Jump
getContinue, getDefault, getFinally, getJumpStatement, getLoop, setContinue, setDefault, setFinally, setJumpStatement, setLoop
-
Methods inherited from class org.mozilla.javascript.ast.AstNode
addChild, assertNotNull, codeBug, compareTo, debugPrint, 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 org.mozilla.javascript.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
-
-
-
-
Field Detail
-
encodedSourceStart
private int encodedSourceStart
-
encodedSourceEnd
private int encodedSourceEnd
-
sourceName
private java.lang.String sourceName
-
encodedSource
private java.lang.String encodedSource
-
endLineno
private int endLineno
-
functions
private java.util.List<FunctionNode> functions
-
regexps
private java.util.List<RegExpLiteral> regexps
-
templateLiterals
private java.util.List<TemplateLiteral> templateLiterals
-
EMPTY_LIST
private java.util.List<FunctionNode> EMPTY_LIST
-
symbols
private java.util.List<Symbol> symbols
-
paramCount
private int paramCount
-
variableNames
private java.lang.String[] variableNames
-
isConsts
private boolean[] isConsts
-
compilerData
private java.lang.Object compilerData
-
tempNumber
private int tempNumber
-
inStrictMode
private boolean inStrictMode
-
-
Method Detail
-
getSourceName
public java.lang.String getSourceName()
Returns the URI, path or descriptive text indicating the origin of this script's source code.
-
setSourceName
public void setSourceName(java.lang.String sourceName)
Sets the URI, path or descriptive text indicating the origin of this script's source code.
-
getEncodedSourceStart
public int getEncodedSourceStart()
Returns the start offset of the encoded source. Only valid ifgetEncodedSource()
returns non-null
.
-
setEncodedSourceStart
public void setEncodedSourceStart(int start)
Used by code generator.- See Also:
getEncodedSource()
-
getEncodedSourceEnd
public int getEncodedSourceEnd()
Returns the end offset of the encoded source. Only valid ifgetEncodedSource()
returns non-null
.
-
setEncodedSourceEnd
public void setEncodedSourceEnd(int end)
Used by code generator.- See Also:
getEncodedSource()
-
setEncodedSourceBounds
public void setEncodedSourceBounds(int start, int end)
Used by code generator.- See Also:
getEncodedSource()
-
setEncodedSource
public void setEncodedSource(java.lang.String encodedSource)
Used by the code generator.- See Also:
getEncodedSource()
-
getEncodedSource
public java.lang.String getEncodedSource()
Returns a canonical version of the source for this script or function, for use in implementing theObject.toSource
method of JavaScript objects. This source encoding is only recorded during code generation. It must be passed back toDecompiler.decompile(java.lang.String, int, org.mozilla.javascript.UintMap)
to construct the human-readable source string.Given a parsed AST, you can always convert it to source code using the
AstNode.toSource(int)
method, although it's not guaranteed to produce exactly the same results asObject.toSource
with respect to formatting, parenthesization and other details.- Returns:
- the encoded source, or
null
if it was not recorded.
-
getBaseLineno
public int getBaseLineno()
-
setBaseLineno
public void setBaseLineno(int lineno)
Sets base (starting) line number for this script or function. This is a one-time operation, and throws an exception if the line number has already been set.
-
getEndLineno
public int getEndLineno()
-
setEndLineno
public void setEndLineno(int lineno)
-
getFunctionCount
public int getFunctionCount()
-
getFunctionNode
public FunctionNode getFunctionNode(int i)
-
getFunctions
public java.util.List<FunctionNode> getFunctions()
-
addFunction
public int addFunction(FunctionNode fnNode)
Adds aFunctionNode
to the functions table for codegen. Does not set the parent of the node.- Returns:
- the index of the function within its parent
-
getRegexpCount
public int getRegexpCount()
-
getRegexpString
public java.lang.String getRegexpString(int index)
-
getRegexpFlags
public java.lang.String getRegexpFlags(int index)
-
addRegExp
public void addRegExp(RegExpLiteral re)
Called by IRFactory to add a RegExp to the regexp table.
-
getTemplateLiteralCount
public int getTemplateLiteralCount()
-
getTemplateLiteralStrings
public java.util.List<TemplateCharacters> getTemplateLiteralStrings(int index)
-
addTemplateLiteral
public void addTemplateLiteral(TemplateLiteral templateLiteral)
Called by IRFactory to add a Template Literal to the templateLiterals table.
-
getIndexForNameNode
public int getIndexForNameNode(Node nameNode)
-
getParamOrVarName
public java.lang.String getParamOrVarName(int index)
-
getParamCount
public int getParamCount()
-
getParamAndVarCount
public int getParamAndVarCount()
-
getParamAndVarNames
public java.lang.String[] getParamAndVarNames()
-
getParamAndVarConst
public boolean[] getParamAndVarConst()
-
addSymbol
void addSymbol(Symbol symbol)
-
getSymbols
public java.util.List<Symbol> getSymbols()
-
setSymbols
public void setSymbols(java.util.List<Symbol> symbols)
-
flattenSymbolTable
public void flattenSymbolTable(boolean flattenAllTables)
Assign every symbol a unique integer index. Generate arrays of variable names and constness that can be indexed by those indices.- Parameters:
flattenAllTables
- if true, flatten all symbol tables, included nested block scope symbol tables. If false, just flatten the script's or function's symbol table.
-
getCompilerData
public java.lang.Object getCompilerData()
-
setCompilerData
public void setCompilerData(java.lang.Object data)
-
getNextTempName
public java.lang.String getNextTempName()
-
setInStrictMode
public void setInStrictMode(boolean inStrictMode)
-
isInStrictMode
public boolean isInStrictMode()
-
visit
public void visit(NodeVisitor v)
Description copied from class:Jump
Jumps are only used directly during code generation, and do not support this interface.
-
-