Class Trees
java.lang.Object
com.github._1c_syntax.bsl.languageserver.utils.Trees
-
Method Summary
Modifier and TypeMethodDescriptionstatic Collection<org.antlr.v4.runtime.tree.ParseTree>findAllRuleNodes(org.antlr.v4.runtime.tree.ParseTree t, int ruleIndex)Обертки Treesstatic 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.BSLParserRuleContextgetAncestorByRuleIndex(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.ParseTreegetNextNode(org.antlr.v4.runtime.tree.ParseTree parent, org.antlr.v4.runtime.tree.ParseTree tnc, int ruleindex)Выполняет поиск следующей ноды нужного типаstatic org.antlr.v4.runtime.tree.ParseTreegetPreviousNode(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.BSLParserRuleContextgetRootParent(com.github._1c_syntax.bsl.parser.BSLParserRuleContext tnc)Рекурсивно находит самого верхнего родителя текущей нодыstatic com.github._1c_syntax.bsl.parser.BSLParserRuleContextgetRootParent(com.github._1c_syntax.bsl.parser.BSLParserRuleContext tnc, int ruleindex)Рекурсивно находит самого верхнего родителя текущей ноды нужного типаstatic com.github._1c_syntax.bsl.parser.BSLParserRuleContextgetRootParent(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 booleannodeContains(org.antlr.v4.runtime.tree.ParseTree t, Integer... index)Проверяет наличие дочерней ноды с указанным типомstatic booleannodeContains(org.antlr.v4.runtime.tree.ParseTree t, org.antlr.v4.runtime.tree.ParseTree exclude, Integer... index)Проверяет наличие дочерней ноды с указанным типом исключая переданнуюstatic booleannodeContainsErrors(org.antlr.v4.runtime.tree.ParseTree tnc)Проверяет среди дочерних элементов узла наличие узла с ошибкойstatic booleantreeContainsErrors(org.antlr.v4.runtime.tree.ParseTree tnc)Проверяет среди всех дочерних элементов (рекурсивно) наличие узла с ошибкой
-
Method Details
-
findAllRuleNodes
public static Collection<org.antlr.v4.runtime.tree.ParseTree> findAllRuleNodes(org.antlr.v4.runtime.tree.ParseTree t, int ruleIndex)Обертки Trees -
getChildren
-
getTokens
Список токенов дерева разбора.Токены формируются на основании всех потомков вида
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
Проверяет наличие дочерней ноды с указанным типом -
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- - список токенов из DocumentContexttoken- - токен, на строке которого требуется найти висячий комментарий- 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- - список токенов DocumentContexttoken- - токен, для которого требуется найти комментарии- Returns:
- - список найденных комментариев lines
-