## 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

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, getLastChild, getLastSibling, getNext, getProp, getScope, getString, getType, hasChildren, hasConsistentReturnUsage, iterator, labelId, labelId, newNumber, newString, newString, newTarget, putIntProp, putProp, removeChild, removeChildren, removeProp, replaceChild, replaceChildAfter, setDouble, setJsDoc, 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