]> gitweb.ps.run Git - toc/blob - antlr4-cpp-runtime-4.9.2-source/runtime/src/atn/EpsilonTransition.h
add antlr source code and ReadMe
[toc] / antlr4-cpp-runtime-4.9.2-source / runtime / src / atn / EpsilonTransition.h
1 /* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
2  * Use of this file is governed by the BSD 3-clause license that
3  * can be found in the LICENSE.txt file in the project root.
4  */
5
6 #pragma once
7
8 #include "atn/Transition.h"
9
10 namespace antlr4 {
11 namespace atn {
12
13   class ANTLR4CPP_PUBLIC EpsilonTransition final : public Transition {
14   public:
15     EpsilonTransition(ATNState *target);
16     EpsilonTransition(ATNState *target, size_t outermostPrecedenceReturn);
17
18     /**
19      * @return the rule index of a precedence rule for which this transition is
20      * returning from, where the precedence value is 0; otherwise, INVALID_INDEX.
21      *
22      * @see ATNConfig#isPrecedenceFilterSuppressed()
23      * @see ParserATNSimulator#applyPrecedenceFilter(ATNConfigSet)
24      * @since 4.4.1
25      */
26     size_t outermostPrecedenceReturn();
27     virtual SerializationType getSerializationType() const override;
28
29     virtual bool isEpsilon() const override;
30     virtual bool matches(size_t symbol, size_t minVocabSymbol, size_t maxVocabSymbol) const override;
31
32     virtual std::string toString() const override;
33
34   private:
35     const size_t _outermostPrecedenceReturn; // A rule index.
36   };
37
38 } // namespace atn
39 } // namespace antlr4