aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/antlr4_cpp_runtime/src/atn/PredicateTransition.h
diff options
context:
space:
mode:
authorasmyasnikov <asmyasnikov@ydb.tech>2024-06-26 17:09:51 +0300
committerasmyasnikov <asmyasnikov@ydb.tech>2024-06-26 17:27:07 +0300
commite25934f4bbe7b98daa362f04861972e8f83066ad (patch)
treeb350932f398fafa6740fe43a529edf700c747270 /contrib/libs/antlr4_cpp_runtime/src/atn/PredicateTransition.h
parente6190f5d36aef50e2fec0076c384ba0874f5564c (diff)
downloadydb-e25934f4bbe7b98daa362f04861972e8f83066ad.tar.gz
Added antlr4 to exported contribs into github.com/ydb-platform/ydb
4916444b182c044b7cd4c10f838a37a252ea36cf
Diffstat (limited to 'contrib/libs/antlr4_cpp_runtime/src/atn/PredicateTransition.h')
-rw-r--r--contrib/libs/antlr4_cpp_runtime/src/atn/PredicateTransition.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/contrib/libs/antlr4_cpp_runtime/src/atn/PredicateTransition.h b/contrib/libs/antlr4_cpp_runtime/src/atn/PredicateTransition.h
new file mode 100644
index 0000000000..e889b1c198
--- /dev/null
+++ b/contrib/libs/antlr4_cpp_runtime/src/atn/PredicateTransition.h
@@ -0,0 +1,50 @@
+/* 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 "atn/Transition.h"
+#include "atn/SemanticContext.h"
+
+namespace antlr4 {
+namespace atn {
+
+ /// TODO: this is old comment:
+ /// A tree of semantic predicates from the grammar AST if label==SEMPRED.
+ /// In the ATN, labels will always be exactly one predicate, but the DFA
+ /// may have to combine a bunch of them as it collects predicates from
+ /// multiple ATN configurations into a single DFA state.
+ class ANTLR4CPP_PUBLIC PredicateTransition final : public Transition {
+ public:
+ static bool is(const Transition &transition) { return transition.getTransitionType() == TransitionType::PREDICATE; }
+
+ static bool is(const Transition *transition) { return transition != nullptr && is(*transition); }
+
+ PredicateTransition(ATNState *target, size_t ruleIndex, size_t predIndex, bool isCtxDependent);
+
+ size_t getRuleIndex() const {
+ return _predicate->ruleIndex;
+ }
+
+ size_t getPredIndex() const {
+ return _predicate->predIndex;
+ }
+
+ bool isCtxDependent() const {
+ return _predicate->isCtxDependent;
+ }
+
+ bool isEpsilon() const override;
+ bool matches(size_t symbol, size_t minVocabSymbol, size_t maxVocabSymbol) const override;
+ std::string toString() const override;
+
+ const Ref<const SemanticContext::Predicate>& getPredicate() const { return _predicate; }
+
+ private:
+ const std::shared_ptr<const SemanticContext::Predicate> _predicate;
+ };
+
+} // namespace atn
+} // namespace antlr4