Package com._1c.g5.modeling.text
Interface INode
-
- All Known Implementing Classes:
Node
public interface INode
Экземпляр класса, реализующего данный интерфейс, представляет собой узел синтаксического дерева (AST).
Узел имеет следующие свойства:
- type - тип, представленный целым числом
- textLocation - расположение в исходном тексте
- parent - ссылка на родительский узел (null для корневого узла)
- children - упорядоченный список дочерних узлов
- modelObject - объект модели, соответствующий данному узлом
Для любого узла построенного дерева должны выполняться следующие условия: - textLocation не может бытьnull
- если узел B является дочерним узлом узла A, то ссылка на B содержится в списке children узла A, а свойствоparent
узла B содержит ссылку на A. Соответственно, если некоторый узел не является дочерним ни для какого другого узла, то значение его свойстваparent
должно бытьnull
- каждый узел может быть дочерним не более чем для одного родительского узла - узел не может быть родительским для себя самого. Да и вообще циклы в дереве недопустимы. - список дочерних узлов не может содержать значенияnull
-
-
Field Summary
Fields Modifier and Type Field Description static int
UNDEFINED_TYPE
Константа задающая неопределенный тип узла
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
accept(INodeVisitor visitor)
Посещение узла синтаксического дерева и его дочерних узлов.
Дочерние узлы посещаются, если они есть и если функцияINodeVisitor.visit(INode)
, вызванная для данного узла вернетtrue
.INode
addChild(INode child)
Присоединение дочернего узла.
Данный метод добавляет узел в конец списка дочерних узлов и устанавливает у присоединяемого элемента правильное значениеparent
.
Если присоединяемый дочерний узел ранее был дочерним для другого родительского узла, то предвариательно он будет отсоединен от него.List<INode>
getChildren()
Получение списка дочерних узлов для данного узла.org.eclipse.emf.ecore.EObject
getModelObject()
Получение объекта модели, ассоциированного с данным узлом.INode
getParent()
Получение родителя для данного узлаTextLocation
getTextLocation()
Получение расположения в тексте.
Если для данного узла расположение в тексте не было установлено или установлено вnull
, то функция возвращает расположение для диапазона в тексте, занимаемого дочерними элементами.int
getType()
Получение типа узлаboolean
hasChildren()
Метод позволяет установить наличие дочерних узлов.INode
removeChild(INode child)
Отсоединение дочернего узла.
Данный метод удаляет узел из списка дочерних узлов и устанавливает его свойствуparent
зеачениеnull
.void
setModelObject(org.eclipse.emf.ecore.EObject modelObject)
Установка объекта модели для данного узла.void
setParent(INode parent)
Установка родителя для данного узла
Данный метод только устанавливает родительский узел.void
setTextLocation(TextLocation textLocation)
Установка расположения в текстеvoid
setType(int type)
Установка типа узла
-
-
-
Field Detail
-
UNDEFINED_TYPE
static final int UNDEFINED_TYPE
Константа задающая неопределенный тип узла- See Also:
- Constant Field Values
-
-
Method Detail
-
setType
void setType(int type)
Установка типа узла- Parameters:
type
- тип узла
-
getType
int getType()
Получение типа узла- Returns:
- тип узла
-
setTextLocation
void setTextLocation(TextLocation textLocation)
Установка расположения в тексте- Parameters:
textLocation
- расположение в тексте
-
getTextLocation
TextLocation getTextLocation()
Получение расположения в тексте.
Если для данного узла расположение в тексте не было установлено или установлено вnull
, то функция возвращает расположение для диапазона в тексте, занимаемого дочерними элементами. Если дочерних элементов нет, то возвращаетсяTextLocation
со всеми полями, установленными в 0.- Returns:
- расположение в тексте
-
setParent
void setParent(INode parent)
Установка родителя для данного узла
Данный метод только устанавливает родительский узел. Помещение данного узла в списокchil
не выполняется. Метод в основном предназначен для внутреннего использования.
Для присоединения дочернего узла к родительскому следует использовать методaddChild(INode)
, а для отсоединения - методremoveChild(INode)
- Parameters:
parent
- устанавливаемый родительский узел
-
getParent
INode getParent()
Получение родителя для данного узла- Returns:
- родительский узел для данного узла
-
getChildren
List<INode> getChildren()
Получение списка дочерних узлов для данного узла. Если дочерних узлов нет, то возвращается пустой список (неnull
).
Полученный список не следует использовать для модификации, так как при помещении или исключении дочернего узла его ссылка наparent
автоматически модифицирована не будет.
Для присоединения дочернего узла к родительскому следует использовать методaddChild(INode)
, а для отсоединения - методremoveChild(INode)
Если нужно просто узнать, пуст ли список дочерних узлов, то предпочтительнее использовать методhasChildren()
- Returns:
- список дочерних узлов
-
hasChildren
boolean hasChildren()
Метод позволяет установить наличие дочерних узлов.- Returns:
true
- дочерние узлы есть,false
- дочерних узлов нет.
-
addChild
INode addChild(INode child)
Присоединение дочернего узла.
Данный метод добавляет узел в конец списка дочерних узлов и устанавливает у присоединяемого элемента правильное значениеparent
.
Если присоединяемый дочерний узел ранее был дочерним для другого родительского узла, то предвариательно он будет отсоединен от него.- Parameters:
child
- присоединяемый дочерний узел.- Returns:
- ссылка на данный узел для возможного chaining'а
-
removeChild
INode removeChild(INode child)
Отсоединение дочернего узла.
Данный метод удаляет узел из списка дочерних узлов и устанавливает его свойствуparent
зеачениеnull
.- Parameters:
child
- отсоединяемый дочерний узел- Returns:
- ссылка на данный узел для возможного chaining'а
-
setModelObject
void setModelObject(org.eclipse.emf.ecore.EObject modelObject)
Установка объекта модели для данного узла.- Parameters:
modelObject
- объект модели
-
getModelObject
org.eclipse.emf.ecore.EObject getModelObject()
Получение объекта модели, ассоциированного с данным узлом.- Returns:
- объект модели
-
accept
void accept(INodeVisitor visitor)
Посещение узла синтаксического дерева и его дочерних узлов.
Дочерние узлы посещаются, если они есть и если функцияINodeVisitor.visit(INode)
, вызванная для данного узла вернетtrue
.- Parameters:
visitor
- объект-visitor. Не должен бытьnull
.
-
-