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

Constructors
Constructor and Description
`ScriptNode()`
`ScriptNode(int pos)`

### Method Summary

Methods
`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