public abstract class XmlRef extends AstNode
@
Name
) and double-colonName
or a bracketed [expression]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 < 100)
- in this case, the @id
is an XmlRef
that is part of an infix '<' expression
whose parent is an XmlDotQuery
node.
AstNode.DebugPrintVisitor, AstNode.PositionComparator
Node.NodeIterator
Modifier and Type | Field and Description |
---|---|
protected int |
atPos |
protected int |
colonPos |
protected Name |
namespace |
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 and Description |
---|
XmlRef() |
XmlRef(int pos) |
XmlRef(int pos,
int len) |
Modifier and Type | Method and Description |
---|---|
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.
|
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
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
protected Name namespace
protected int atPos
protected int colonPos
public XmlRef()
public XmlRef(int pos)
public XmlRef(int pos, int len)
public Name getNamespace()
@null
.public void setNamespace(Name namespace)
null
.public boolean isAttributeAccess()
true
if this expression began with an @
-token.public int getAtPos()
@
-token, or -1 if this is not
an attribute-access expression.public void setAtPos(int atPos)
@
-token, or -1public int getColonPos()
::
token, or -1 if not present.
It will only be present if the namespace node is non-null
.public void setColonPos(int colonPos)
::
token, or -1 if not present