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.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)
Проверяет среди всех дочерних элементов (рекурсивно) наличие узла с ошибкой
-
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
-