/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
contrib/libs/antlr4_cpp_runtime/src/tree/Trees.h
78 строк
3 KB
Anton Myagkov
Update ydb version to 24.4 (#4579)
07 фев 2026, 11:59
Не верифицирован
07 фев 2026, 11:59
2c21cae
Код
Авторство
О чём код?
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. * Use of this file is governed by the BSD 3-clause license that * can be found in the LICENSE.txt file in the project root. */ #pragma once #include "tree/TerminalNode.h" #include "ParserRuleContext.h" #include "Recognizer.h" namespace antlr4 { namespace tree { /// A set of utility routines useful for all kinds of ANTLR trees. class ANTLR4CPP_PUBLIC Trees { public: /// Print out a whole tree in LISP form. getNodeText is used on the /// node payloads to get the text for the nodes. Detect /// parse trees and extract data appropriately. static std::string toStringTree(ParseTree *t, bool pretty = false); /// Print out a whole tree in LISP form. getNodeText is used on the /// node payloads to get the text for the nodes. Detect /// parse trees and extract data appropriately. static std::string toStringTree(ParseTree *t, Parser *recog, bool pretty = false); /// Print out a whole tree in LISP form. getNodeText is used on the /// node payloads to get the text for the nodes. Detect /// parse trees and extract data appropriately. static std::string toStringTree(ParseTree *t, const std::vector<std::string> &ruleNames, bool pretty = false); static std::string getNodeText(ParseTree *t, Parser *recog); static std::string getNodeText(ParseTree *t, const std::vector<std::string> &ruleNames); /// Return a list of all ancestors of this node. The first node of /// list is the root and the last is the parent of this node. static std::vector<ParseTree *> getAncestors(ParseTree *t); /** Return true if t is u's parent or a node on path to root from u. * Use == not equals(). * * @since 4.5.1 */ static bool isAncestorOf(ParseTree *t, ParseTree *u); static std::vector<ParseTree *> findAllTokenNodes(ParseTree *t, size_t ttype); static std::vector<ParseTree *> findAllRuleNodes(ParseTree *t, size_t ruleIndex); static std::vector<ParseTree *> findAllNodes(ParseTree *t, size_t index, bool findTokens); /** Get all descendents; includes t itself. * * @since 4.5.1 */ static std::vector<ParseTree *> getDescendants(ParseTree *t); /** @deprecated */ static std::vector<ParseTree *> descendants(ParseTree *t); /** Find smallest subtree of t enclosing range startTokenIndex..stopTokenIndex * inclusively using postorder traversal. Recursive depth-first-search. * * @since 4.5.1 */ static ParserRuleContext* getRootOfSubtreeEnclosingRegion(ParseTree *t, size_t startTokenIndex, // inclusive size_t stopTokenIndex); // inclusive /** Return first node satisfying the pred * * @since 4.5.1 */ static ParseTree* findNodeSuchThat(ParseTree *t, Ref<misc::Predicate> const& pred); private: Trees(); }; } // namespace tree } // namespace antlr4