org.mozilla.javascript.ast
Class XmlElemRef

java.lang.Object
  extended by org.mozilla.javascript.Node
      extended by org.mozilla.javascript.ast.AstNode
          extended by org.mozilla.javascript.ast.XmlRef
              extended by org.mozilla.javascript.ast.XmlElemRef
All Implemented Interfaces:
java.lang.Comparable<AstNode>, java.lang.Iterable<Node>

public class XmlElemRef
extends XmlRef

AST node for an E4X XML [expr] member-ref expression. The node type is Token.REF_MEMBER.

Syntax:

 @opt ns:: opt [ expr ]
Examples include ns::[expr], @ns::[expr], @[expr], *::[expr] and @*::[expr].

Note that the form [expr] (i.e. no namespace or attribute-qualifier) is not a legal XmlElemRef expression, since it's already used for standard JavaScript ElementGet array-indexing. Hence, an XmlElemRef node always has either the attribute-qualifier, a non-null namespace node, or both.

The node starts at the @ token, if present. Otherwise it starts at the namespace name. The node bounds extend through the closing right-bracket, or if it is missing due to a syntax error, through the end of the index expression.


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.XmlRef
atPos, colonPos, namespace
 
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
XmlElemRef()
           
XmlElemRef(int pos)
           
XmlElemRef(int pos, int len)
           
 
Method Summary
 AstNode getExpression()
          Returns index expression: the 'expr' in @[expr] or @*::[expr].
 int getLb()
          Returns left bracket position, or -1 if missing.
 int getRb()
          Returns left bracket position, or -1 if missing.
 void setBrackets(int lb, int rb)
          Sets both bracket positions.
 void setExpression(AstNode expr)
          Sets index expression, and sets its parent to this node.
 void setLb(int lb)
          Sets left bracket position, or -1 if missing.
 void setRb(int rb)
          Sets right bracket position, -1 if missing.
 java.lang.String toSource(int depth)
          Emits source code for this node.
 void visit(NodeVisitor v)
          Visits this node, then the namespace if provided, then the index expression.
 
Methods inherited from class org.mozilla.javascript.ast.XmlRef
getAtPos, getColonPos, getNamespace, isAttributeAccess, setAtPos, setColonPos, setNamespace
 
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

XmlElemRef

public XmlElemRef()

XmlElemRef

public XmlElemRef(int pos)

XmlElemRef

public XmlElemRef(int pos,
                  int len)
Method Detail

getExpression

public AstNode getExpression()
Returns index expression: the 'expr' in @[expr] or @*::[expr].


setExpression

public void setExpression(AstNode expr)
Sets index expression, and sets its parent to this node.

Throws:
java.lang.IllegalArgumentException - if expr is null

getLb

public int getLb()
Returns left bracket position, or -1 if missing.


setLb

public void setLb(int lb)
Sets left bracket position, or -1 if missing.


getRb

public int getRb()
Returns left bracket position, or -1 if missing.


setRb

public void setRb(int rb)
Sets right bracket position, -1 if missing.


setBrackets

public void setBrackets(int lb,
                        int rb)
Sets both bracket positions.


toSource

public java.lang.String toSource(int depth)
Description copied from class: AstNode
Emits source code for this node. Callee is responsible for calling this function recursively on children, incrementing indent as appropriate.

Note: if the parser was in error-recovery mode, some AST nodes may have null children that are expected to be non-null when no errors are present. In this situation, the behavior of the toSource method is undefined: toSource implementations may assume that the AST node is error-free, since it is intended to be invoked only at runtime after a successful parse.

Specified by:
toSource in class AstNode
Parameters:
depth - the current recursion depth, typically beginning at 0 when called on the root node.

visit

public void visit(NodeVisitor v)
Visits this node, then the namespace if provided, then the index expression.

Specified by:
visit in class AstNode
Parameters:
v - the object to call with this node and its children