java.lang.Object
com.github._1c_syntax.bsl.languageserver.utils.Trees

public final class Trees extends Object
  • Method Summary

    Modifier and Type
    Method
    Description
    static Collection<org.antlr.v4.runtime.tree.ParseTree>
    findAllRuleNodes​(org.antlr.v4.runtime.tree.ParseTree t, int ruleIndex)
    Обертки Trees
    static Collection<org.antlr.v4.runtime.ParserRuleContext>
    findAllRuleNodes​(org.antlr.v4.runtime.tree.ParseTree t, Integer... index)
    Получает дочерние ноды с нужными типами
    static Collection<org.antlr.v4.runtime.tree.ParseTree>
    findAllTokenNodes​(org.antlr.v4.runtime.tree.ParseTree t, int ttype)
     
    static com.github._1c_syntax.bsl.parser.BSLParserRuleContext
    getAncestorByRuleIndex​(com.github._1c_syntax.bsl.parser.BSLParserRuleContext element, int type)
    Ищем предка элемента по указанному типу BSLParser Пример: BSLParserRuleContext parent = Trees.getAncestorByRuleIndex(ctx, BSLParser.RULE_statement);
    static List<org.antlr.v4.runtime.tree.Tree>
    getChildren​(org.antlr.v4.runtime.tree.Tree t)
     
    static List<com.github._1c_syntax.bsl.parser.BSLParserRuleContext>
    getChildren​(org.antlr.v4.runtime.tree.Tree t, Integer... ruleIndex)
    Получает детей с нужными типами
    static List<org.antlr.v4.runtime.Token>
    getComments​(List<org.antlr.v4.runtime.Token> tokens, org.antlr.v4.runtime.Token token)
    Поиск комментариев назад от указанного токена
    static List<org.antlr.v4.runtime.tree.ParseTree>
    getDescendants​(org.antlr.v4.runtime.tree.ParseTree t)
     
    static Optional<com.github._1c_syntax.bsl.parser.BSLParserRuleContext>
    getFirstChild​(org.antlr.v4.runtime.tree.Tree t, Integer... ruleIndex)
    Получает первого ребенка с одним из нужных типов
    static org.antlr.v4.runtime.tree.ParseTree
    getNextNode​(org.antlr.v4.runtime.tree.ParseTree parent, org.antlr.v4.runtime.tree.ParseTree tnc, int ruleindex)
    Выполняет поиск следующей ноды нужного типа
    static org.antlr.v4.runtime.tree.ParseTree
    getPreviousNode​(org.antlr.v4.runtime.tree.ParseTree parent, org.antlr.v4.runtime.tree.ParseTree tnc, int ruleindex)
    Выполняет поиск предыдущей ноды нужного типа
    static Optional<org.antlr.v4.runtime.Token>
    getPreviousTokenFromDefaultChannel​(List<org.antlr.v4.runtime.Token> tokens, int tokenIndex)
     
    static Optional<org.antlr.v4.runtime.Token>
    getPreviousTokenFromDefaultChannel​(List<org.antlr.v4.runtime.Token> tokens, int tokenIndex, int tokenType)
     
    static com.github._1c_syntax.bsl.parser.BSLParserRuleContext
    getRootParent​(com.github._1c_syntax.bsl.parser.BSLParserRuleContext tnc)
    Рекурсивно находит самого верхнего родителя текущей ноды
    static com.github._1c_syntax.bsl.parser.BSLParserRuleContext
    getRootParent​(com.github._1c_syntax.bsl.parser.BSLParserRuleContext tnc, int ruleindex)
    Рекурсивно находит самого верхнего родителя текущей ноды нужного типа
    static com.github._1c_syntax.bsl.parser.BSLParserRuleContext
    getRootParent​(com.github._1c_syntax.bsl.parser.BSLParserRuleContext tnc, Collection<Integer> indexes)
    Рекурсивно находит самого верхнего родителя текущей ноды одного из нужных типов
    static List<org.antlr.v4.runtime.Token>
    getTokens​(org.antlr.v4.runtime.tree.ParseTree tree)
    Список токенов дерева разбора.
    static Optional<org.antlr.v4.runtime.Token>
    getTrailingComment​(List<org.antlr.v4.runtime.Token> tokens, org.antlr.v4.runtime.Token token)
     
    static boolean
    nodeContains​(org.antlr.v4.runtime.tree.ParseTree t, Integer... index)
    Проверяет наличие дочерней ноды с указанным типом
    static boolean
    nodeContains​(org.antlr.v4.runtime.tree.ParseTree t, org.antlr.v4.runtime.tree.ParseTree exclude, Integer... index)
    Проверяет наличие дочерней ноды с указанным типом исключая переданную
    static boolean
    nodeContainsErrors​(org.antlr.v4.runtime.tree.ParseTree tnc)
    Проверяет среди дочерних элементов узла наличие узла с ошибкой
    static boolean
    treeContainsErrors​(org.antlr.v4.runtime.tree.ParseTree tnc)
    Проверяет среди всех дочерних элементов (рекурсивно) наличие узла с ошибкой

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • findAllRuleNodes

      public static Collection<org.antlr.v4.runtime.tree.ParseTree> findAllRuleNodes(org.antlr.v4.runtime.tree.ParseTree t, int ruleIndex)
      Обертки Trees
    • getChildren

      public static List<org.antlr.v4.runtime.tree.Tree> getChildren(org.antlr.v4.runtime.tree.Tree t)
    • getTokens

      public static List<org.antlr.v4.runtime.Token> getTokens(org.antlr.v4.runtime.tree.ParseTree tree)
      Список токенов дерева разбора.

      Токены формируются на основании всех потомков вида TerminalNode переданного дерева.

      Parameters:
      tree - Дерево разбора
      Returns:
      Список токенов
    • findAllTokenNodes

      public static Collection<org.antlr.v4.runtime.tree.ParseTree> findAllTokenNodes(org.antlr.v4.runtime.tree.ParseTree t, int ttype)
    • getDescendants

      public static List<org.antlr.v4.runtime.tree.ParseTree> getDescendants(org.antlr.v4.runtime.tree.ParseTree t)
    • getAncestorByRuleIndex

      @CheckForNull public static com.github._1c_syntax.bsl.parser.BSLParserRuleContext getAncestorByRuleIndex(com.github._1c_syntax.bsl.parser.BSLParserRuleContext element, int type)
      Ищем предка элемента по указанному типу BSLParser Пример: BSLParserRuleContext parent = Trees.getAncestorByRuleIndex(ctx, BSLParser.RULE_statement);
    • treeContainsErrors

      public static boolean treeContainsErrors(org.antlr.v4.runtime.tree.ParseTree tnc)
      Проверяет среди всех дочерних элементов (рекурсивно) наличие узла с ошибкой
      Returns:
      true - если есть узел с ошибкой
    • nodeContainsErrors

      public static boolean nodeContainsErrors(org.antlr.v4.runtime.tree.ParseTree tnc)
      Проверяет среди дочерних элементов узла наличие узла с ошибкой
      Returns:
      true - если есть узел с ошибкой
    • getPreviousNode

      public static org.antlr.v4.runtime.tree.ParseTree getPreviousNode(org.antlr.v4.runtime.tree.ParseTree parent, org.antlr.v4.runtime.tree.ParseTree tnc, int ruleindex)
      Выполняет поиск предыдущей ноды нужного типа
      Parameters:
      parent - - родительская нода, среди дочерних которой производится поиск
      tnc - - нода, для которой ищем предыдущую
      ruleindex - - BSLParser.RULE_*
      Returns:
      tnc - если предыдущая нода не найдена, вернет текущую
    • getPreviousTokenFromDefaultChannel

      public static Optional<org.antlr.v4.runtime.Token> getPreviousTokenFromDefaultChannel(List<org.antlr.v4.runtime.Token> tokens, int tokenIndex, int tokenType)
      Parameters:
      tokens - - полный список токенов (см. DocumentContext.getTokens()
      tokenIndex - - индекс текущего токена в переданном списке токенов
      tokenType - - тип искомого токена (см. BSLParser
      Returns:
      предыдущий токен, если он был найден
    • getPreviousTokenFromDefaultChannel

      public static Optional<org.antlr.v4.runtime.Token> getPreviousTokenFromDefaultChannel(List<org.antlr.v4.runtime.Token> tokens, int tokenIndex)
      Parameters:
      tokens - - полный список токенов (см. DocumentContext.getTokens()
      tokenIndex - - индекс текущего токена в переданном списке токенов
      Returns:
      предыдущий токен, если он был найден
    • getNextNode

      public static org.antlr.v4.runtime.tree.ParseTree getNextNode(org.antlr.v4.runtime.tree.ParseTree parent, org.antlr.v4.runtime.tree.ParseTree tnc, int ruleindex)
      Выполняет поиск следующей ноды нужного типа
      Parameters:
      parent - - родительская нода, среди дочерних которой производится поиск
      tnc - - нода, для которой ищем следующую
      ruleindex - - BSLParser.RULE_*
      Returns:
      tnc - если следующая нода не найдена, вернет текущую
    • getRootParent

      public static com.github._1c_syntax.bsl.parser.BSLParserRuleContext getRootParent(com.github._1c_syntax.bsl.parser.BSLParserRuleContext tnc)
      Рекурсивно находит самого верхнего родителя текущей ноды
    • getRootParent

      @CheckForNull public static com.github._1c_syntax.bsl.parser.BSLParserRuleContext getRootParent(com.github._1c_syntax.bsl.parser.BSLParserRuleContext tnc, int ruleindex)
      Рекурсивно находит самого верхнего родителя текущей ноды нужного типа
      Parameters:
      tnc - - нода, для которой ищем родителя
      ruleindex - - BSLParser.RULE_*
      Returns:
      tnc - если родитель не найден, вернет null
    • getRootParent

      @CheckForNull public static com.github._1c_syntax.bsl.parser.BSLParserRuleContext getRootParent(com.github._1c_syntax.bsl.parser.BSLParserRuleContext tnc, Collection<Integer> indexes)
      Рекурсивно находит самого верхнего родителя текущей ноды одного из нужных типов
      Parameters:
      tnc - - нода, для которой ищем родителя
      indexes - - Collection of BSLParser.RULE_*
      Returns:
      tnc - если родитель не найден, вернет null
    • getChildren

      public static List<com.github._1c_syntax.bsl.parser.BSLParserRuleContext> getChildren(org.antlr.v4.runtime.tree.Tree t, Integer... ruleIndex)
      Получает детей с нужными типами
    • getFirstChild

      public static Optional<com.github._1c_syntax.bsl.parser.BSLParserRuleContext> getFirstChild(org.antlr.v4.runtime.tree.Tree t, Integer... ruleIndex)
      Получает первого ребенка с одним из нужных типов
      Parameters:
      t - - нода, для которой ищем ребенка
      ruleIndex - - arrays of BSLParser.RULE_*
      Returns:
      child - если первый ребенок не найден, вернет Optional
    • findAllRuleNodes

      public static Collection<org.antlr.v4.runtime.ParserRuleContext> findAllRuleNodes(org.antlr.v4.runtime.tree.ParseTree t, Integer... index)
      Получает дочерние ноды с нужными типами
    • nodeContains

      public static boolean nodeContains(org.antlr.v4.runtime.tree.ParseTree t, Integer... index)
      Проверяет наличие дочерней ноды с указанным типом
    • nodeContains

      public static boolean nodeContains(org.antlr.v4.runtime.tree.ParseTree t, org.antlr.v4.runtime.tree.ParseTree exclude, Integer... index)
      Проверяет наличие дочерней ноды с указанным типом исключая переданную
    • getTrailingComment

      public static Optional<org.antlr.v4.runtime.Token> getTrailingComment(List<org.antlr.v4.runtime.Token> tokens, org.antlr.v4.runtime.Token token)
      Parameters:
      tokens - - список токенов из DocumentContext
      token - - токен, на строке которого требуется найти висячий комментарий
      Returns:
      - токен с комментарием, если он найден
    • getComments

      public static List<org.antlr.v4.runtime.Token> getComments(List<org.antlr.v4.runtime.Token> tokens, org.antlr.v4.runtime.Token token)
      Поиск комментариев назад от указанного токена
      Parameters:
      tokens - - список токенов DocumentContext
      token - - токен, для которого требуется найти комментарии
      Returns:
      - список найденных комментариев lines