org.mozilla.javascript.ast
Class ScriptNode

java.lang.Object
  extended by org.mozilla.javascript.Node
      extended by org.mozilla.javascript.ast.AstNode
          extended by org.mozilla.javascript.ast.Jump
              extended by org.mozilla.javascript.ast.Scope
                  extended by org.mozilla.javascript.ast.ScriptNode
All Implemented Interfaces:
java.lang.Comparable<AstNode>, java.lang.Iterable<Node>
Direct Known Subclasses:
AstRoot, FunctionNode

public class ScriptNode
extends Scope

Base type for AstRoot and FunctionNode 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 inherited from class org.mozilla.javascript.ast.Scope
parentScope, symbolTable, top
 
Fields inherited from class org.mozilla.javascript.ast.Jump
target
 
Fields inherited from class org.mozilla.javascript.ast.AstNode
length, parent, position
 
Fields inherited from class org.mozilla.javascript.Node
ATTRIBUTE_FLAG, BOTH, CASEARRAY_PROP, CATCH_SCOPE_PROP, CONTROL_BLOCK_PROP, DECR_FLAG, DESCENDANTS_FLAG, DESTRUCTURING_ARRAY_LENGTH, DESTRUCTURING_NAMES, DESTRUCTURING_PARAMS, DESTRUCTURING_SHORTHAND, 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, SKIP_INDEXES_PROP, SPECIALCALL_EVAL, SPECIALCALL_PROP, SPECIALCALL_WITH, TARGETBLOCK_PROP, type, VARIABLE_PROP
 
Constructor Summary
ScriptNode()
           
ScriptNode(int pos)
           
 
Method Summary
 int addFunction(FunctionNode fnNode)
          Adds a FunctionNode to the functions table for codegen.
 void addRegExp(RegExpLiteral re)
          Called by IRFactory to add a RegExp to the regexp 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 the Object.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()
           
 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 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, getLength, getLineno, getParent, getPosition, hasSideEffects, makeIndent, operatorToString, printList, setBounds, setLength, setParent, setPosition, setRelative, shortName, toSource
 
Methods inherited from class org.mozilla.javascript.Node
addChildAfter, addChildBefore, addChildrenToBack, addChildrenToFront, addChildToBack, addChildToFront, 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, setDouble, setJsDocNode, setLineno, setScope, setString, setType, toString, toStringTree
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ScriptNode

public ScriptNode()

ScriptNode

public ScriptNode(int pos)
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 if getEncodedSource() 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 if getEncodedSource() 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 the Object.toSource method of JavaScript objects. This source encoding is only recorded during code generation. It must be passed back to Decompiler.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 as Object.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 a FunctionNode 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.


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()

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()

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.

Overrides:
visit in class Scope
Parameters:
v - the object to call with this node and its children