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.