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

- 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

      `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, TRAILING_COMMA, 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 a `FunctionNode` to the functions table for codegen.
    `void` | `addRegExp​(RegExpLiteral re)` | Called by IRFactory to add a RegExp to the regexp table.
    `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 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()` |
    `int` | `getTemplateLiteralCount()` |
    `java.util.List<TemplateCharacters>` | `getTemplateLiteralStrings​(int index)` |
    `boolean` | `hasRestParameter()` |
    `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`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

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

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

    - #### hasRestParameter

          public boolean hasRestParameter()

    - #### 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.
      Overrides:
        `visit` in class `Scope`
      Parameters:
        `v` - the object to call with this node and its children