org.mozilla.javascript.ast
Class XmlRef

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

public abstract class XmlRef
extends AstNode

Base class for E4X XML attribute-access or property-get expressions. Such expressions can take a variety of forms. The general syntax has three parts:

  1. optional: an @
  2. (specifying an attribute access)
  3. optional: a namespace (a Name) and double-colon
  4. required: either a Name or a bracketed [expression]
The property-name expressions (examples: ns::name, @name) are represented as XmlPropRef nodes. The bracketed-expression versions (examples: ns::[name], @[name]) become XmlElemRef nodes.

This node type (or more specifically, its subclasses) will sometimes be the right-hand child of a PropertyGet node or an XmlMemberGet node. The XmlRef node may also be a standalone primary expression with no explicit target, which is valid in certain expression contexts such as company..employee.(@id &lt; 100) - in this case, the @id is an XmlRef that is part of an infix '<' expression whose parent is an XmlDotQuery node.


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
protected  int atPos
           
protected  int colonPos
           
protected  Name 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
XmlRef()
           
XmlRef(int pos)
           
XmlRef(int pos, int len)
           
 
Method Summary
 int getAtPos()
          Returns position of @-token, or -1 if this is not an attribute-access expression.
 int getColonPos()
          Returns position of :: token, or -1 if not present.
 Name getNamespace()
          Return the namespace.
 boolean isAttributeAccess()
          Returns true if this expression began with an @-token.
 void setAtPos(int atPos)
          Sets position of @-token, or -1
 void setColonPos(int colonPos)
          Sets position of :: token, or -1 if not present
 void setNamespace(Name namespace)
          Sets namespace, and sets its parent to this node.
 
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, toSource, visit
 
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
 

Field Detail

namespace

protected Name namespace

atPos

protected int atPos

colonPos

protected int colonPos
Constructor Detail

XmlRef

public XmlRef()

XmlRef

public XmlRef(int pos)

XmlRef

public XmlRef(int pos,
              int len)
Method Detail

getNamespace

public Name getNamespace()
Return the namespace. May be @null.


setNamespace

public void setNamespace(Name namespace)
Sets namespace, and sets its parent to this node. Can be null.


isAttributeAccess

public boolean isAttributeAccess()
Returns true if this expression began with an @-token.


getAtPos

public int getAtPos()
Returns position of @-token, or -1 if this is not an attribute-access expression.


setAtPos

public void setAtPos(int atPos)
Sets position of @-token, or -1


getColonPos

public int getColonPos()
Returns position of :: token, or -1 if not present. It will only be present if the namespace node is non-null.


setColonPos

public void setColonPos(int colonPos)
Sets position of :: token, or -1 if not present