|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.google.javascript.rhino.Node
public class Node
This class implements the root of the intermediate representation.
Nested Class Summary | |
---|---|
static class |
Node.AncestorIterable
Iterator to go up the ancestor tree. |
class |
Node.FileLevelJsDocBuilder
An inner class that provides back-door access to the license property of the JSDocInfo property for this node. |
static class |
Node.SideEffectFlags
A helper class for getting and setting the side-effect flags. |
Field Summary | |
---|---|
static int |
BRACELESS_TYPE
|
static int |
COLUMN_BITS
COLUMN_BITS represents how many of the lower-order bits of sourcePosition are reserved for storing the column number. |
static int |
COLUMN_MASK
COLUMN_MASK stores a value where bits storing the column number are set, and bits storing the line are not set. |
static int |
DECR_FLAG
|
static int |
DIRECT_EVAL
|
static int |
DIRECTIVES
|
static int |
EMPTY_BLOCK
|
static int |
FLAG_ARGUMENTS_UNMODIFIED
|
static int |
FLAG_GLOBAL_STATE_UNMODIFIED
|
static int |
FLAG_LOCAL_RESULTS
|
static int |
FLAG_NO_THROWS
|
static int |
FLAG_THIS_UNMODIFIED
|
static int |
FREE_CALL
|
static int |
INCRDECR_PROP
|
static int |
INPUT_ID
|
static int |
IS_CONSTANT_NAME
|
static int |
IS_DISPATCHER
|
static int |
IS_NAMESPACE
|
static int |
IS_OPTIONAL_PARAM
|
static int |
IS_VAR_ARGS_PARAM
|
static int |
JSDOC_INFO_PROP
|
static int |
LAST_PROP
|
static int |
LENGTH
|
static int |
MAX_COLUMN_NUMBER
MAX_COLUMN_NUMBER represents the maximum column number that can be represented. |
static int |
NO_SIDE_EFFECTS
|
static int |
OPT_ARG_NAME
|
static int |
ORIGINALNAME_PROP
|
static int |
PARENTHESIZED_PROP
|
static int |
POST_FLAG
|
static int |
QUOTED_PROP
|
static int |
SIDE_EFFECT_FLAGS
|
static int |
SIDE_EFFECTS_ALL
|
static int |
SIDE_EFFECTS_FLAGS_MASK
|
static int |
SLASH_V
|
static int |
SOURCENAME_PROP
|
static int |
STATIC_SOURCE_FILE
|
static int |
SYNTHETIC_BLOCK_PROP
|
static int |
VAR_ARGS_NAME
|
Constructor Summary | |
---|---|
Node(int nodeType)
|
|
Node(int nodeType,
int lineno,
int charno)
|
|
Node(int nodeType,
Node child)
|
|
Node(int nodeType,
Node[] children)
|
|
Node(int nodeType,
Node[] children,
int lineno,
int charno)
|
|
Node(int nodeType,
Node child,
int lineno,
int charno)
|
|
Node(int nodeType,
Node left,
Node right)
|
|
Node(int nodeType,
Node left,
Node right,
int lineno,
int charno)
|
|
Node(int nodeType,
Node left,
Node mid,
Node right)
|
|
Node(int nodeType,
Node left,
Node mid,
Node right,
int lineno,
int charno)
|
|
Node(int nodeType,
Node left,
Node mid,
Node mid2,
Node right)
|
|
Node(int nodeType,
Node left,
Node mid,
Node mid2,
Node right,
int lineno,
int charno)
|
Method Summary | |
---|---|
void |
addChildAfter(Node newChild,
Node node)
Add 'child' after 'node'. |
void |
addChildBefore(Node newChild,
Node node)
Add 'child' before 'node'. |
void |
addChildrenAfter(Node children,
Node node)
Add all children after 'node'. |
void |
addChildrenToBack(Node children)
|
void |
addChildrenToFront(Node children)
|
void |
addChildToBack(Node child)
|
void |
addChildToFront(Node child)
|
void |
addSuppression(String warning)
Adds a warning to be suppressed. |
void |
appendStringTree(Appendable appendable)
|
String |
checkTreeEquals(Node node2)
Checks if the subtree under this node is the same as another subtree. |
Iterable<Node> |
children()
Return an iterable object that iterates over this nodes's children. |
Node |
cloneNode()
|
Node |
clonePropsFrom(Node other)
Clone the properties from the provided node without copying the property object. |
Node |
cloneTree()
|
Node |
copyInformationFrom(Node other)
Copies source file and name information from the other node given to the current node. |
Node |
copyInformationFromForTree(Node other)
Copies source file and name information from the other node to the entire tree rooted at this node. |
void |
detachChildren()
Removes all children from this node and isolates the children from each other. |
Node |
detachFromParent()
Removes this node from its parent. |
protected static int |
extractCharno(int lineCharNo)
Extracts the character number and character number from a merged line char number (see mergeLineCharNo(int, int) ). |
protected static int |
extractLineno(int lineCharNo)
Extracts the line number and character number from a merged line char number (see mergeLineCharNo(int, int) ). |
Node |
getAncestor(int level)
Gets the ancestor node relative to this. |
Node.AncestorIterable |
getAncestors()
Iterates all of the node's ancestors excluding itself. |
boolean |
getBooleanProp(int propType)
|
int |
getCharno()
|
Node |
getChildAtIndex(int i)
|
Node |
getChildBefore(Node child)
|
int |
getChildCount()
|
Set<String> |
getDirectives()
Returns the set of ES5 directives for this node. |
double |
getDouble()
Can only be called when getType() == TokenStream.NUMBER |
int |
getExistingIntProp(int propType)
|
Node |
getFirstChild()
|
int |
getIndexOfChild(Node child)
|
InputId |
getInputId()
|
int |
getIntProp(int propType)
Returns the integer value for the property, or 0 if the property is not defined. |
Node.FileLevelJsDocBuilder |
getJsDocBuilderForNode()
|
JSDocInfo |
getJSDocInfo()
Get the JSDocInfo attached to this node. |
JSType |
getJSType()
|
Node |
getLastChild()
|
Node |
getLastSibling()
|
int |
getLength()
|
int |
getLineno()
|
Node |
getNext()
|
Node |
getParent()
|
Object |
getProp(int propType)
|
String |
getQualifiedName()
This function takes a set of GETPROP nodes and produces a string that is each property separated by dots. |
int |
getSideEffectFlags()
Returns the side effects flags for this node. |
String |
getSourceFileName()
|
int |
getSourceOffset()
|
int |
getSourcePosition()
|
StaticSourceFile |
getStaticSourceFile()
Returns the source file associated with this input. |
String |
getString()
Can only be called when node has String context. |
int |
getType()
|
boolean |
hasChild(Node child)
|
boolean |
hasChildren()
|
boolean |
hasMoreThanOneChild()
Check for more than one child more efficiently than by iterating over all the children as is done with Node.getChildCount(). |
boolean |
hasOneChild()
Check for one child more efficiently than by iterating over all the children as is done with Node.getChildCount(). |
boolean |
isAdd()
AST type check methods |
boolean |
isAnd()
|
boolean |
isArrayLit()
|
boolean |
isAssign()
|
boolean |
isAssignAdd()
|
boolean |
isBlock()
|
boolean |
isBreak()
|
boolean |
isCall()
|
boolean |
isCase()
|
boolean |
isCatch()
|
boolean |
isComma()
|
boolean |
isContinue()
|
boolean |
isDebugger()
|
boolean |
isDec()
|
boolean |
isDefaultCase()
|
boolean |
isDelProp()
|
boolean |
isDo()
|
boolean |
isEmpty()
|
boolean |
isEquivalentTo(Node node)
Returns true if this node is equivalent semantically to another |
boolean |
isEquivalentToTyped(Node node)
Returns true if this node is equivalent semantically to another and the types are equivalent. |
boolean |
isExprResult()
|
boolean |
isFalse()
|
boolean |
isFor()
|
boolean |
isFromExterns()
|
boolean |
isFunction()
|
boolean |
isGetElem()
|
boolean |
isGetProp()
|
boolean |
isGetterDef()
|
boolean |
isHook()
|
boolean |
isIf()
|
boolean |
isIn()
|
boolean |
isInc()
|
boolean |
isInstanceOf()
|
boolean |
isLabel()
|
boolean |
isLabelName()
|
boolean |
isLocalResultCall()
Returns true if this node is a function or constructor call that returns a primitive or a local object (an object that has no other references). |
boolean |
isName()
|
boolean |
isNE()
|
boolean |
isNew()
|
boolean |
isNoSideEffectsCall()
Returns true if this node is a function or constructor call that has no side effects. |
boolean |
isNot()
|
boolean |
isNull()
|
boolean |
isNumber()
|
boolean |
isObjectLit()
|
boolean |
isOnlyModifiesThisCall()
|
boolean |
isOptionalArg()
Returns whether this node is an optional argument node. |
boolean |
isOr()
|
boolean |
isParamList()
|
boolean |
isQualifiedName()
Returns whether a node corresponds to a simple or a qualified name, such as x or a.b.c or this.a . |
boolean |
isQuotedString()
This should only be called for STRING nodes children of OBJECTLIT. |
boolean |
isRegExp()
|
boolean |
isReturn()
|
boolean |
isScript()
|
boolean |
isSetterDef()
|
boolean |
isString()
|
boolean |
isSwitch()
|
boolean |
isSyntheticBlock()
Returns whether this is a synthetic block that should not be considered a real source block. |
boolean |
isThis()
|
boolean |
isThrow()
|
boolean |
isTrue()
|
boolean |
isTry()
|
boolean |
isTypeOf()
|
boolean |
isUnscopedQualifiedName()
Returns whether a node corresponds to a simple or a qualified name without a "this" reference, such as a.b.c , but not this.a
. |
boolean |
isVar()
|
boolean |
isVarArgs()
Returns whether this node is a variable length argument node. |
boolean |
isVoid()
|
boolean |
isWhile()
|
boolean |
isWith()
|
protected static int |
mergeLineCharNo(int lineno,
int charno)
Merges the line number and character number in one integer. |
static Node |
newNumber(double number)
|
static Node |
newNumber(double number,
int lineno,
int charno)
|
static Node |
newString(int type,
String str)
|
static Node |
newString(int type,
String str,
int lineno,
int charno)
|
static Node |
newString(String str)
|
static Node |
newString(String str,
int lineno,
int charno)
|
void |
putBooleanProp(int propType,
boolean value)
|
void |
putIntProp(int propType,
int value)
|
void |
putProp(int propType,
Object value)
|
void |
removeChild(Node child)
Detach a child from its parent and siblings. |
Node |
removeChildAfter(Node prev)
|
Node |
removeChildren()
|
Node |
removeFirstChild()
Removes the first child of Node. |
void |
removeProp(int propType)
|
void |
replaceChild(Node child,
Node newChild)
Detaches child from Node and replaces it with newChild. |
void |
replaceChildAfter(Node prevChild,
Node newChild)
|
void |
setCharno(int charno)
|
void |
setDirectives(Set<String> val)
Sets the ES5 directives on this node. |
void |
setDouble(double s)
Can only be called when getType() == TokenStream.NUMBER |
void |
setInputId(InputId inputId)
|
void |
setIsSyntheticBlock(boolean val)
Sets whether this is a synthetic block that should not be considered a real source block. |
void |
setJSDocInfo(JSDocInfo info)
Sets the JSDocInfo attached to this node. |
void |
setJSType(JSType jsType)
|
void |
setLength(int length)
|
void |
setLineno(int lineno)
|
void |
setOptionalArg(boolean optionalArg)
Sets whether this node is an optional argument node. |
void |
setQuotedString()
This should only be called for STRING nodes children of OBJECTLIT. |
void |
setSideEffectFlags(int flags)
Marks this function or constructor call's side effect flags. |
void |
setSideEffectFlags(Node.SideEffectFlags flags)
|
void |
setSourceEncodedPosition(int sourcePosition)
|
void |
setSourceEncodedPositionForTree(int sourcePosition)
|
void |
setSourceFileForTesting(String name)
Sets the source file to a non-extern file of the given name. |
void |
setStaticSourceFile(StaticSourceFile file)
|
void |
setString(String s)
Can only be called when node has String context. |
void |
setType(int type)
|
void |
setVarArgs(boolean varArgs)
Sets whether this node is a variable length argument node. |
void |
setWasEmptyNode(boolean val)
Sets whether this is a synthetic block that should not be considered a real source block. |
Iterable<Node> |
siblings()
Return an iterable object that iterates over this nodes's siblings. |
Node |
srcref(Node other)
|
Node |
srcrefTree(Node other)
|
String |
toString()
|
String |
toString(boolean printSource,
boolean printAnnotations,
boolean printType)
|
String |
toStringTree()
|
Node |
useSourceInfoFrom(Node other)
Overwrite all the source information in this node with that of other . |
Node |
useSourceInfoFromForTree(Node other)
Overwrite all the source information in this node and its subtree with that of other . |
Node |
useSourceInfoIfMissingFrom(Node other)
Overwrite all the source information in this node with that of other iff the source info is missing. |
Node |
useSourceInfoIfMissingFromForTree(Node other)
Overwrite all the source information in this node and its subtree with that of other iff the source info is missing. |
boolean |
wasEmptyNode()
Returns whether this is a synthetic block that should not be considered a real source block. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public static final int SOURCENAME_PROP
public static final int JSDOC_INFO_PROP
public static final int VAR_ARGS_NAME
public static final int INCRDECR_PROP
public static final int PARENTHESIZED_PROP
public static final int QUOTED_PROP
public static final int OPT_ARG_NAME
public static final int SYNTHETIC_BLOCK_PROP
public static final int EMPTY_BLOCK
public static final int ORIGINALNAME_PROP
public static final int BRACELESS_TYPE
public static final int SIDE_EFFECT_FLAGS
public static final int IS_CONSTANT_NAME
public static final int IS_OPTIONAL_PARAM
public static final int IS_VAR_ARGS_PARAM
public static final int IS_NAMESPACE
public static final int IS_DISPATCHER
public static final int DIRECTIVES
public static final int DIRECT_EVAL
public static final int FREE_CALL
public static final int STATIC_SOURCE_FILE
public static final int LENGTH
public static final int INPUT_ID
public static final int SLASH_V
public static final int LAST_PROP
public static final int DECR_FLAG
public static final int POST_FLAG
public static final int COLUMN_BITS
public static final int MAX_COLUMN_NUMBER
public static final int COLUMN_MASK
public static final int FLAG_GLOBAL_STATE_UNMODIFIED
public static final int FLAG_THIS_UNMODIFIED
public static final int FLAG_ARGUMENTS_UNMODIFIED
public static final int FLAG_NO_THROWS
public static final int FLAG_LOCAL_RESULTS
public static final int SIDE_EFFECTS_FLAGS_MASK
public static final int SIDE_EFFECTS_ALL
public static final int NO_SIDE_EFFECTS
Constructor Detail |
---|
public Node(int nodeType)
public Node(int nodeType, Node child)
public Node(int nodeType, Node left, Node right)
public Node(int nodeType, Node left, Node mid, Node right)
public Node(int nodeType, Node left, Node mid, Node mid2, Node right)
public Node(int nodeType, int lineno, int charno)
public Node(int nodeType, Node child, int lineno, int charno)
public Node(int nodeType, Node left, Node right, int lineno, int charno)
public Node(int nodeType, Node left, Node mid, Node right, int lineno, int charno)
public Node(int nodeType, Node left, Node mid, Node mid2, Node right, int lineno, int charno)
public Node(int nodeType, Node[] children, int lineno, int charno)
public Node(int nodeType, Node[] children)
Method Detail |
---|
public static Node newNumber(double number)
public static Node newNumber(double number, int lineno, int charno)
public static Node newString(String str)
public static Node newString(int type, String str)
public static Node newString(String str, int lineno, int charno)
public static Node newString(int type, String str, int lineno, int charno)
public int getType()
public void setType(int type)
public boolean hasChildren()
public Node getFirstChild()
public Node getLastChild()
public Node getNext()
public Node getChildBefore(Node child)
public Node getChildAtIndex(int i)
public int getIndexOfChild(Node child)
public Node getLastSibling()
public void addChildToFront(Node child)
public void addChildToBack(Node child)
public void addChildrenToFront(Node children)
public void addChildrenToBack(Node children)
public void addChildBefore(Node newChild, Node node)
public void addChildAfter(Node newChild, Node node)
public void addChildrenAfter(Node children, Node node)
public void removeChild(Node child)
public void replaceChild(Node child, Node newChild)
public void replaceChildAfter(Node prevChild, Node newChild)
public Node clonePropsFrom(Node other)
other
- The node to clone properties from.
public void removeProp(int propType)
public Object getProp(int propType)
public boolean getBooleanProp(int propType)
public int getIntProp(int propType)
public int getExistingIntProp(int propType)
public void putProp(int propType, Object value)
public void putBooleanProp(int propType, boolean value)
public void putIntProp(int propType, int value)
public double getDouble() throws UnsupportedOperationException
UnsupportedOperationException
public void setDouble(double s) throws UnsupportedOperationException
UnsupportedOperationException
public String getString() throws UnsupportedOperationException
UnsupportedOperationException
public void setString(String s) throws UnsupportedOperationException
UnsupportedOperationException
public String toString()
toString
in class Object
public String toString(boolean printSource, boolean printAnnotations, boolean printType)
public String toStringTree()
public void appendStringTree(Appendable appendable) throws IOException
IOException
public void setStaticSourceFile(StaticSourceFile file)
public void setSourceFileForTesting(String name)
public String getSourceFileName()
public StaticSourceFile getStaticSourceFile()
public void setInputId(InputId inputId)
inputId
- public InputId getInputId()
public boolean isFromExterns()
public int getLength()
public void setLength(int length)
public int getLineno()
public int getCharno()
public int getSourceOffset()
public int getSourcePosition()
public void setLineno(int lineno)
public void setCharno(int charno)
public void setSourceEncodedPosition(int sourcePosition)
public void setSourceEncodedPositionForTree(int sourcePosition)
protected static int mergeLineCharNo(int lineno, int charno)
212-1
it is
adjusted to 212-1
.
protected static int extractLineno(int lineCharNo)
mergeLineCharNo(int, int)
).
protected static int extractCharno(int lineCharNo)
mergeLineCharNo(int, int)
).
public Iterable<Node> children()
Return an iterable object that iterates over this nodes's children.
The iterator does not support the optional operation
Iterator.remove()
.
To iterate over a node's siblings, one can write
Node n = ...; for (Node child : n.children()) { ...
public Iterable<Node> siblings()
Return an iterable object that iterates over this nodes's siblings.
The iterator does not support the optional operation
Iterator.remove()
.
To iterate over a node's siblings, one can write
Node n = ...; for (Node sibling : n.siblings()) { ...
public Node getParent()
public Node getAncestor(int level)
level
- 0 = this, 1 = the parent, etc.public Node.AncestorIterable getAncestors()
public boolean hasOneChild()
public boolean hasMoreThanOneChild()
public int getChildCount()
public boolean hasChild(Node child)
public String checkTreeEquals(Node node2)
public boolean isEquivalentTo(Node node)
public boolean isEquivalentToTyped(Node node)
public String getQualifiedName()
public boolean isQualifiedName()
x
or a.b.c
or this.a
.
public boolean isUnscopedQualifiedName()
a.b.c
, but not this.a
.
public Node detachFromParent()
public Node removeFirstChild()
public Node removeChildren()
public void detachChildren()
public Node removeChildAfter(Node prev)
public Node cloneNode()
public Node cloneTree()
public Node copyInformationFrom(Node other)
public Node copyInformationFromForTree(Node other)
public Node useSourceInfoFrom(Node other)
other
.
public Node srcref(Node other)
public Node useSourceInfoFromForTree(Node other)
other
.
public Node srcrefTree(Node other)
public Node useSourceInfoIfMissingFrom(Node other)
other
iff the source info is missing.
public Node useSourceInfoIfMissingFromForTree(Node other)
other
iff the source info is missing.
public JSType getJSType()
public void setJSType(JSType jsType)
public Node.FileLevelJsDocBuilder getJsDocBuilderForNode()
public JSDocInfo getJSDocInfo()
JSDocInfo
attached to this node.
null
if no JSDoc is attached to this
nodepublic void setJSDocInfo(JSDocInfo info)
JSDocInfo
attached to this node.
public void setVarArgs(boolean varArgs)
Token.NAME
nodes
used to define a Token.FUNCTION
's argument list.
public boolean isVarArgs()
Token.NAME
nodes
used to define a Token.FUNCTION
's argument list.
public void setOptionalArg(boolean optionalArg)
Token.NAME
nodes
used to define a Token.FUNCTION
's argument list.
public boolean isOptionalArg()
Token.NAME
nodes
used to define a Token.FUNCTION
's argument list.
public void setIsSyntheticBlock(boolean val)
public boolean isSyntheticBlock()
public void setDirectives(Set<String> val)
public Set<String> getDirectives()
public void addSuppression(String warning)
@suppress
tag in the code.
public void setWasEmptyNode(boolean val)
public boolean wasEmptyNode()
public void setSideEffectFlags(int flags)
Token.CALL
and
Token.NEW
nodes.
public void setSideEffectFlags(Node.SideEffectFlags flags)
public int getSideEffectFlags()
public boolean isOnlyModifiesThisCall()
public boolean isNoSideEffectsCall()
public boolean isLocalResultCall()
public boolean isQuotedString()
public void setQuotedString()
public boolean isAdd()
public boolean isAnd()
public boolean isArrayLit()
public boolean isAssign()
public boolean isAssignAdd()
public boolean isBlock()
public boolean isBreak()
public boolean isCall()
public boolean isCase()
public boolean isCatch()
public boolean isComma()
public boolean isContinue()
public boolean isDebugger()
public boolean isDec()
public boolean isDefaultCase()
public boolean isDelProp()
public boolean isDo()
public boolean isEmpty()
public boolean isExprResult()
public boolean isFalse()
public boolean isFor()
public boolean isFunction()
public boolean isGetterDef()
public boolean isGetElem()
public boolean isGetProp()
public boolean isHook()
public boolean isIf()
public boolean isIn()
public boolean isInc()
public boolean isInstanceOf()
public boolean isLabel()
public boolean isLabelName()
public boolean isName()
public boolean isNE()
public boolean isNew()
public boolean isNot()
public boolean isNull()
public boolean isNumber()
public boolean isObjectLit()
public boolean isOr()
public boolean isParamList()
public boolean isRegExp()
public boolean isReturn()
public boolean isScript()
public boolean isSetterDef()
public boolean isString()
public boolean isSwitch()
public boolean isThis()
public boolean isThrow()
public boolean isTrue()
public boolean isTry()
public boolean isTypeOf()
public boolean isVar()
public boolean isVoid()
public boolean isWhile()
public boolean isWith()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |