| /* 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. |
| */ |
| |
| #include "Token.h" |
| #include "misc/IntervalSet.h" |
| |
| #include "atn/SetTransition.h" |
| |
| using namespace antlr4; |
| using namespace antlr4::atn; |
| |
| SetTransition::SetTransition(ATNState *target, const misc::IntervalSet &aSet) |
| : Transition(target), set(aSet.isEmpty() ? misc::IntervalSet::of(Token::INVALID_TYPE) : aSet) { |
| } |
| |
| Transition::SerializationType SetTransition::getSerializationType() const { |
| return SET; |
| } |
| |
| misc::IntervalSet SetTransition::label() const { |
| return set; |
| } |
| |
| bool SetTransition::matches(size_t symbol, size_t /*minVocabSymbol*/, size_t /*maxVocabSymbol*/) const { |
| return set.contains(symbol); |
| } |
| |
| std::string SetTransition::toString() const { |
| return "SET " + Transition::toString() + " { set: " + set.toString() + "}"; |
| } |