Class ScriptNode

All Implemented Interfaces:
Comparable<AstNode>, 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.
  • Constructor Details

    • ScriptNode

      public ScriptNode()
    • ScriptNode

      public ScriptNode(int pos)
  • Method Details

    • getSourceName

      public String getSourceName()
      Returns the URI, path or descriptive text indicating the origin of this script's source code.
    • setSourceName

      public void setSourceName(String sourceName)
      Sets the URI, path or descriptive text indicating the origin of this script's source code.
    • getRawSourceStart

      public int getRawSourceStart()
      Returns the start offset of the raw source. Only valid if getRawSource() returns non-null.
    • setRawSourceStart

      public void setRawSourceStart(int start)
      Used by code generator.
      See Also:
    • getRawSourceEnd

      public int getRawSourceEnd()
      Returns the end offset of the raw source. Only valid if getRawSource() returns non-null.
    • setRawSourceEnd

      public void setRawSourceEnd(int end)
      Used by code generator.
      See Also:
    • setRawSourceBounds

      public void setRawSourceBounds(int start, int end)
      Used by code generator.
      See Also:
    • setRawSource

      public void setRawSource(String rawSource)
      Used by the code generator.
      See Also:
    • getRawSource

      public String getRawSource()
      Returns:
      the raw 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 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 String getRegexpString(int index)
    • getRegexpFlags

      public 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 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 String getParamOrVarName(int index)
    • getParamCount

      public int getParamCount()
    • getParamAndVarCount

      public int getParamAndVarCount()
    • getParamAndVarNames

      public String[] getParamAndVarNames()
    • getParamAndVarConst

      public boolean[] getParamAndVarConst()
    • hasRestParameter

      public boolean hasRestParameter()
    • getDefaultParams

      public List<Object> getDefaultParams()
    • getDestructuringRvalues

      public List<Node[]> getDestructuringRvalues()
    • putDestructuringRvalues

      public void putDestructuringRvalues(Node left, Node right)
    • getSymbols

      public List<Symbol> getSymbols()
    • setSymbols

      public void setSymbols(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 Object getCompilerData()
    • setCompilerData

      public void setCompilerData(Object data)
    • getNextTempName

      public 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