blob: 8b6ea111426c9e6ddb5e6abc94d09fd51e475e35 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* License); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
// Generated from PathParser.g4 by ANTLR 4.9.3
#include "PathParserListener.h"
#include "PathParserVisitor.h"
#include "PathParser.h"
using namespace antlrcpp;
using namespace antlr4;
PathParser::PathParser(TokenStream *input) : Parser(input) {
_interpreter = new atn::ParserATNSimulator(this, _atn, _decisionToDFA, _sharedContextCache);
}
PathParser::~PathParser() {
delete _interpreter;
}
std::string PathParser::getGrammarFileName() const {
return "PathParser.g4";
}
const std::vector<std::string>& PathParser::getRuleNames() const {
return _ruleNames;
}
dfa::Vocabulary& PathParser::getVocabulary() const {
return _vocabulary;
}
//----------------- PathContext ------------------------------------------------------------------
PathParser::PathContext::PathContext(ParserRuleContext *parent, size_t invokingState)
: ParserRuleContext(parent, invokingState) {
}
PathParser::PrefixPathContext* PathParser::PathContext::prefixPath() {
return getRuleContext<PathParser::PrefixPathContext>(0);
}
tree::TerminalNode* PathParser::PathContext::EOF() {
return getToken(PathParser::EOF, 0);
}
PathParser::SuffixPathContext* PathParser::PathContext::suffixPath() {
return getRuleContext<PathParser::SuffixPathContext>(0);
}
size_t PathParser::PathContext::getRuleIndex() const {
return PathParser::RulePath;
}
void PathParser::PathContext::enterRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->enterPath(this);
}
void PathParser::PathContext::exitRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->exitPath(this);
}
antlrcpp::Any PathParser::PathContext::accept(tree::ParseTreeVisitor *visitor) {
if (auto parserVisitor = dynamic_cast<PathParserVisitor*>(visitor))
return parserVisitor->visitPath(this);
else
return visitor->visitChildren(this);
}
PathParser::PathContext* PathParser::path() {
PathContext *_localctx = _tracker.createInstance<PathContext>(_ctx, getState());
enterRule(_localctx, 0, PathParser::RulePath);
#if __cplusplus > 201703L
auto onExit = finally([=, this] {
#else
auto onExit = finally([=] {
#endif
exitRule();
});
try {
setState(22);
_errHandler->sync(this);
switch (_input->LA(1)) {
case PathParser::ROOT: {
enterOuterAlt(_localctx, 1);
setState(16);
prefixPath();
setState(17);
match(PathParser::EOF);
break;
}
case PathParser::STAR:
case PathParser::DOUBLE_STAR:
case PathParser::DURATION_LITERAL:
case PathParser::INTEGER_LITERAL:
case PathParser::ID:
case PathParser::QUOTED_ID: {
enterOuterAlt(_localctx, 2);
setState(19);
suffixPath();
setState(20);
match(PathParser::EOF);
break;
}
default:
throw NoViableAltException(this);
}
}
catch (RecognitionException &e) {
_errHandler->reportError(this, e);
_localctx->exception = std::current_exception();
_errHandler->recover(this, _localctx->exception);
}
return _localctx;
}
//----------------- PrefixPathContext ------------------------------------------------------------------
PathParser::PrefixPathContext::PrefixPathContext(ParserRuleContext *parent, size_t invokingState)
: ParserRuleContext(parent, invokingState) {
}
tree::TerminalNode* PathParser::PrefixPathContext::ROOT() {
return getToken(PathParser::ROOT, 0);
}
std::vector<tree::TerminalNode *> PathParser::PrefixPathContext::DOT() {
return getTokens(PathParser::DOT);
}
tree::TerminalNode* PathParser::PrefixPathContext::DOT(size_t i) {
return getToken(PathParser::DOT, i);
}
std::vector<PathParser::NodeNameContext *> PathParser::PrefixPathContext::nodeName() {
return getRuleContexts<PathParser::NodeNameContext>();
}
PathParser::NodeNameContext* PathParser::PrefixPathContext::nodeName(size_t i) {
return getRuleContext<PathParser::NodeNameContext>(i);
}
size_t PathParser::PrefixPathContext::getRuleIndex() const {
return PathParser::RulePrefixPath;
}
void PathParser::PrefixPathContext::enterRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->enterPrefixPath(this);
}
void PathParser::PrefixPathContext::exitRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->exitPrefixPath(this);
}
antlrcpp::Any PathParser::PrefixPathContext::accept(tree::ParseTreeVisitor *visitor) {
if (auto parserVisitor = dynamic_cast<PathParserVisitor*>(visitor))
return parserVisitor->visitPrefixPath(this);
else
return visitor->visitChildren(this);
}
PathParser::PrefixPathContext* PathParser::prefixPath() {
PrefixPathContext *_localctx = _tracker.createInstance<PrefixPathContext>(_ctx, getState());
enterRule(_localctx, 2, PathParser::RulePrefixPath);
size_t _la = 0;
#if __cplusplus > 201703L
auto onExit = finally([=, this] {
#else
auto onExit = finally([=] {
#endif
exitRule();
});
try {
enterOuterAlt(_localctx, 1);
setState(24);
match(PathParser::ROOT);
setState(29);
_errHandler->sync(this);
_la = _input->LA(1);
while (_la == PathParser::DOT) {
setState(25);
match(PathParser::DOT);
setState(26);
nodeName();
setState(31);
_errHandler->sync(this);
_la = _input->LA(1);
}
}
catch (RecognitionException &e) {
_errHandler->reportError(this, e);
_localctx->exception = std::current_exception();
_errHandler->recover(this, _localctx->exception);
}
return _localctx;
}
//----------------- SuffixPathContext ------------------------------------------------------------------
PathParser::SuffixPathContext::SuffixPathContext(ParserRuleContext *parent, size_t invokingState)
: ParserRuleContext(parent, invokingState) {
}
std::vector<PathParser::NodeNameContext *> PathParser::SuffixPathContext::nodeName() {
return getRuleContexts<PathParser::NodeNameContext>();
}
PathParser::NodeNameContext* PathParser::SuffixPathContext::nodeName(size_t i) {
return getRuleContext<PathParser::NodeNameContext>(i);
}
std::vector<tree::TerminalNode *> PathParser::SuffixPathContext::DOT() {
return getTokens(PathParser::DOT);
}
tree::TerminalNode* PathParser::SuffixPathContext::DOT(size_t i) {
return getToken(PathParser::DOT, i);
}
size_t PathParser::SuffixPathContext::getRuleIndex() const {
return PathParser::RuleSuffixPath;
}
void PathParser::SuffixPathContext::enterRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->enterSuffixPath(this);
}
void PathParser::SuffixPathContext::exitRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->exitSuffixPath(this);
}
antlrcpp::Any PathParser::SuffixPathContext::accept(tree::ParseTreeVisitor *visitor) {
if (auto parserVisitor = dynamic_cast<PathParserVisitor*>(visitor))
return parserVisitor->visitSuffixPath(this);
else
return visitor->visitChildren(this);
}
PathParser::SuffixPathContext* PathParser::suffixPath() {
SuffixPathContext *_localctx = _tracker.createInstance<SuffixPathContext>(_ctx, getState());
enterRule(_localctx, 4, PathParser::RuleSuffixPath);
size_t _la = 0;
#if __cplusplus > 201703L
auto onExit = finally([=, this] {
#else
auto onExit = finally([=] {
#endif
exitRule();
});
try {
enterOuterAlt(_localctx, 1);
setState(32);
nodeName();
setState(37);
_errHandler->sync(this);
_la = _input->LA(1);
while (_la == PathParser::DOT) {
setState(33);
match(PathParser::DOT);
setState(34);
nodeName();
setState(39);
_errHandler->sync(this);
_la = _input->LA(1);
}
}
catch (RecognitionException &e) {
_errHandler->reportError(this, e);
_localctx->exception = std::current_exception();
_errHandler->recover(this, _localctx->exception);
}
return _localctx;
}
//----------------- NodeNameContext ------------------------------------------------------------------
PathParser::NodeNameContext::NodeNameContext(ParserRuleContext *parent, size_t invokingState)
: ParserRuleContext(parent, invokingState) {
}
std::vector<PathParser::WildcardContext *> PathParser::NodeNameContext::wildcard() {
return getRuleContexts<PathParser::WildcardContext>();
}
PathParser::WildcardContext* PathParser::NodeNameContext::wildcard(size_t i) {
return getRuleContext<PathParser::WildcardContext>(i);
}
PathParser::NodeNameSliceContext* PathParser::NodeNameContext::nodeNameSlice() {
return getRuleContext<PathParser::NodeNameSliceContext>(0);
}
PathParser::NodeNameWithoutWildcardContext* PathParser::NodeNameContext::nodeNameWithoutWildcard() {
return getRuleContext<PathParser::NodeNameWithoutWildcardContext>(0);
}
size_t PathParser::NodeNameContext::getRuleIndex() const {
return PathParser::RuleNodeName;
}
void PathParser::NodeNameContext::enterRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->enterNodeName(this);
}
void PathParser::NodeNameContext::exitRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->exitNodeName(this);
}
antlrcpp::Any PathParser::NodeNameContext::accept(tree::ParseTreeVisitor *visitor) {
if (auto parserVisitor = dynamic_cast<PathParserVisitor*>(visitor))
return parserVisitor->visitNodeName(this);
else
return visitor->visitChildren(this);
}
PathParser::NodeNameContext* PathParser::nodeName() {
NodeNameContext *_localctx = _tracker.createInstance<NodeNameContext>(_ctx, getState());
enterRule(_localctx, 6, PathParser::RuleNodeName);
size_t _la = 0;
#if __cplusplus > 201703L
auto onExit = finally([=, this] {
#else
auto onExit = finally([=] {
#endif
exitRule();
});
try {
setState(50);
_errHandler->sync(this);
switch (getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 4, _ctx)) {
case 1: {
enterOuterAlt(_localctx, 1);
setState(40);
wildcard();
break;
}
case 2: {
enterOuterAlt(_localctx, 2);
setState(41);
wildcard();
setState(42);
nodeNameSlice();
setState(44);
_errHandler->sync(this);
_la = _input->LA(1);
if (_la == PathParser::STAR
|| _la == PathParser::DOUBLE_STAR) {
setState(43);
wildcard();
}
break;
}
case 3: {
enterOuterAlt(_localctx, 3);
setState(46);
nodeNameSlice();
setState(47);
wildcard();
break;
}
case 4: {
enterOuterAlt(_localctx, 4);
setState(49);
nodeNameWithoutWildcard();
break;
}
default:
break;
}
}
catch (RecognitionException &e) {
_errHandler->reportError(this, e);
_localctx->exception = std::current_exception();
_errHandler->recover(this, _localctx->exception);
}
return _localctx;
}
//----------------- NodeNameWithoutWildcardContext ------------------------------------------------------------------
PathParser::NodeNameWithoutWildcardContext::NodeNameWithoutWildcardContext(ParserRuleContext *parent, size_t invokingState)
: ParserRuleContext(parent, invokingState) {
}
PathParser::IdentifierContext* PathParser::NodeNameWithoutWildcardContext::identifier() {
return getRuleContext<PathParser::IdentifierContext>(0);
}
size_t PathParser::NodeNameWithoutWildcardContext::getRuleIndex() const {
return PathParser::RuleNodeNameWithoutWildcard;
}
void PathParser::NodeNameWithoutWildcardContext::enterRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->enterNodeNameWithoutWildcard(this);
}
void PathParser::NodeNameWithoutWildcardContext::exitRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->exitNodeNameWithoutWildcard(this);
}
antlrcpp::Any PathParser::NodeNameWithoutWildcardContext::accept(tree::ParseTreeVisitor *visitor) {
if (auto parserVisitor = dynamic_cast<PathParserVisitor*>(visitor))
return parserVisitor->visitNodeNameWithoutWildcard(this);
else
return visitor->visitChildren(this);
}
PathParser::NodeNameWithoutWildcardContext* PathParser::nodeNameWithoutWildcard() {
NodeNameWithoutWildcardContext *_localctx = _tracker.createInstance<NodeNameWithoutWildcardContext>(_ctx, getState());
enterRule(_localctx, 8, PathParser::RuleNodeNameWithoutWildcard);
#if __cplusplus > 201703L
auto onExit = finally([=, this] {
#else
auto onExit = finally([=] {
#endif
exitRule();
});
try {
enterOuterAlt(_localctx, 1);
setState(52);
identifier();
}
catch (RecognitionException &e) {
_errHandler->reportError(this, e);
_localctx->exception = std::current_exception();
_errHandler->recover(this, _localctx->exception);
}
return _localctx;
}
//----------------- NodeNameSliceContext ------------------------------------------------------------------
PathParser::NodeNameSliceContext::NodeNameSliceContext(ParserRuleContext *parent, size_t invokingState)
: ParserRuleContext(parent, invokingState) {
}
PathParser::IdentifierContext* PathParser::NodeNameSliceContext::identifier() {
return getRuleContext<PathParser::IdentifierContext>(0);
}
tree::TerminalNode* PathParser::NodeNameSliceContext::INTEGER_LITERAL() {
return getToken(PathParser::INTEGER_LITERAL, 0);
}
size_t PathParser::NodeNameSliceContext::getRuleIndex() const {
return PathParser::RuleNodeNameSlice;
}
void PathParser::NodeNameSliceContext::enterRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->enterNodeNameSlice(this);
}
void PathParser::NodeNameSliceContext::exitRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->exitNodeNameSlice(this);
}
antlrcpp::Any PathParser::NodeNameSliceContext::accept(tree::ParseTreeVisitor *visitor) {
if (auto parserVisitor = dynamic_cast<PathParserVisitor*>(visitor))
return parserVisitor->visitNodeNameSlice(this);
else
return visitor->visitChildren(this);
}
PathParser::NodeNameSliceContext* PathParser::nodeNameSlice() {
NodeNameSliceContext *_localctx = _tracker.createInstance<NodeNameSliceContext>(_ctx, getState());
enterRule(_localctx, 10, PathParser::RuleNodeNameSlice);
#if __cplusplus > 201703L
auto onExit = finally([=, this] {
#else
auto onExit = finally([=] {
#endif
exitRule();
});
try {
setState(56);
_errHandler->sync(this);
switch (_input->LA(1)) {
case PathParser::DURATION_LITERAL:
case PathParser::ID:
case PathParser::QUOTED_ID: {
enterOuterAlt(_localctx, 1);
setState(54);
identifier();
break;
}
case PathParser::INTEGER_LITERAL: {
enterOuterAlt(_localctx, 2);
setState(55);
match(PathParser::INTEGER_LITERAL);
break;
}
default:
throw NoViableAltException(this);
}
}
catch (RecognitionException &e) {
_errHandler->reportError(this, e);
_localctx->exception = std::current_exception();
_errHandler->recover(this, _localctx->exception);
}
return _localctx;
}
//----------------- IdentifierContext ------------------------------------------------------------------
PathParser::IdentifierContext::IdentifierContext(ParserRuleContext *parent, size_t invokingState)
: ParserRuleContext(parent, invokingState) {
}
tree::TerminalNode* PathParser::IdentifierContext::DURATION_LITERAL() {
return getToken(PathParser::DURATION_LITERAL, 0);
}
tree::TerminalNode* PathParser::IdentifierContext::ID() {
return getToken(PathParser::ID, 0);
}
tree::TerminalNode* PathParser::IdentifierContext::QUOTED_ID() {
return getToken(PathParser::QUOTED_ID, 0);
}
size_t PathParser::IdentifierContext::getRuleIndex() const {
return PathParser::RuleIdentifier;
}
void PathParser::IdentifierContext::enterRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->enterIdentifier(this);
}
void PathParser::IdentifierContext::exitRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->exitIdentifier(this);
}
antlrcpp::Any PathParser::IdentifierContext::accept(tree::ParseTreeVisitor *visitor) {
if (auto parserVisitor = dynamic_cast<PathParserVisitor*>(visitor))
return parserVisitor->visitIdentifier(this);
else
return visitor->visitChildren(this);
}
PathParser::IdentifierContext* PathParser::identifier() {
IdentifierContext *_localctx = _tracker.createInstance<IdentifierContext>(_ctx, getState());
enterRule(_localctx, 12, PathParser::RuleIdentifier);
size_t _la = 0;
#if __cplusplus > 201703L
auto onExit = finally([=, this] {
#else
auto onExit = finally([=] {
#endif
exitRule();
});
try {
enterOuterAlt(_localctx, 1);
setState(58);
_la = _input->LA(1);
if (!((((_la & ~ 0x3fULL) == 0) &&
((1ULL << _la) & ((1ULL << PathParser::DURATION_LITERAL)
| (1ULL << PathParser::ID)
| (1ULL << PathParser::QUOTED_ID))) != 0))) {
_errHandler->recoverInline(this);
}
else {
_errHandler->reportMatch(this);
consume();
}
}
catch (RecognitionException &e) {
_errHandler->reportError(this, e);
_localctx->exception = std::current_exception();
_errHandler->recover(this, _localctx->exception);
}
return _localctx;
}
//----------------- WildcardContext ------------------------------------------------------------------
PathParser::WildcardContext::WildcardContext(ParserRuleContext *parent, size_t invokingState)
: ParserRuleContext(parent, invokingState) {
}
tree::TerminalNode* PathParser::WildcardContext::STAR() {
return getToken(PathParser::STAR, 0);
}
tree::TerminalNode* PathParser::WildcardContext::DOUBLE_STAR() {
return getToken(PathParser::DOUBLE_STAR, 0);
}
size_t PathParser::WildcardContext::getRuleIndex() const {
return PathParser::RuleWildcard;
}
void PathParser::WildcardContext::enterRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->enterWildcard(this);
}
void PathParser::WildcardContext::exitRule(tree::ParseTreeListener *listener) {
auto parserListener = dynamic_cast<PathParserListener *>(listener);
if (parserListener != nullptr)
parserListener->exitWildcard(this);
}
antlrcpp::Any PathParser::WildcardContext::accept(tree::ParseTreeVisitor *visitor) {
if (auto parserVisitor = dynamic_cast<PathParserVisitor*>(visitor))
return parserVisitor->visitWildcard(this);
else
return visitor->visitChildren(this);
}
PathParser::WildcardContext* PathParser::wildcard() {
WildcardContext *_localctx = _tracker.createInstance<WildcardContext>(_ctx, getState());
enterRule(_localctx, 14, PathParser::RuleWildcard);
size_t _la = 0;
#if __cplusplus > 201703L
auto onExit = finally([=, this] {
#else
auto onExit = finally([=] {
#endif
exitRule();
});
try {
enterOuterAlt(_localctx, 1);
setState(60);
_la = _input->LA(1);
if (!(_la == PathParser::STAR
|| _la == PathParser::DOUBLE_STAR)) {
_errHandler->recoverInline(this);
}
else {
_errHandler->reportMatch(this);
consume();
}
}
catch (RecognitionException &e) {
_errHandler->reportError(this, e);
_localctx->exception = std::current_exception();
_errHandler->recover(this, _localctx->exception);
}
return _localctx;
}
// Static vars and initialization.
std::vector<dfa::DFA> PathParser::_decisionToDFA;
atn::PredictionContextCache PathParser::_sharedContextCache;
// We own the ATN which in turn owns the ATN states.
atn::ATN PathParser::_atn;
std::vector<uint16_t> PathParser::_serializedATN;
std::vector<std::string> PathParser::_ruleNames = {
"path", "prefixPath", "suffixPath", "nodeName", "nodeNameWithoutWildcard",
"nodeNameSlice", "identifier", "wildcard"
};
std::vector<std::string> PathParser::_literalNames = {
"", "", "", "", "", "'-'", "'+'", "'/'", "'%'", "'=='", "'='", "'>'",
"'>='", "'<'", "'<='", "", "'&'", "'&&'", "'|'", "'||'", "'!'", "'.'",
"','", "';'", "'*'", "'**'", "'('", "')'", "'['", "']'", "'::'"
};
std::vector<std::string> PathParser::_symbolicNames = {
"", "ROOT", "WS", "TIME", "TIMESTAMP", "MINUS", "PLUS", "DIV", "MOD",
"OPERATOR_DEQ", "OPERATOR_SEQ", "OPERATOR_GT", "OPERATOR_GTE", "OPERATOR_LT",
"OPERATOR_LTE", "OPERATOR_NEQ", "OPERATOR_BITWISE_AND", "OPERATOR_LOGICAL_AND",
"OPERATOR_BITWISE_OR", "OPERATOR_LOGICAL_OR", "OPERATOR_NOT", "DOT", "COMMA",
"SEMI", "STAR", "DOUBLE_STAR", "LR_BRACKET", "RR_BRACKET", "LS_BRACKET",
"RS_BRACKET", "DOUBLE_COLON", "STRING_LITERAL", "DURATION_LITERAL", "DATETIME_LITERAL",
"INTEGER_LITERAL", "EXPONENT_NUM_PART", "ID", "QUOTED_ID"
};
dfa::Vocabulary PathParser::_vocabulary(_literalNames, _symbolicNames);
std::vector<std::string> PathParser::_tokenNames;
PathParser::Initializer::Initializer() {
for (size_t i = 0; i < _symbolicNames.size(); ++i) {
std::string name = _vocabulary.getLiteralName(i);
if (name.empty()) {
name = _vocabulary.getSymbolicName(i);
}
if (name.empty()) {
_tokenNames.push_back("<INVALID>");
} else {
_tokenNames.push_back(name);
}
}
static const uint16_t serializedATNSegment0[] = {
0x3, 0x608b, 0xa72a, 0x8133, 0xb9ed, 0x417c, 0x3be7, 0x7786, 0x5964,
0x3, 0x27, 0x41, 0x4, 0x2, 0x9, 0x2, 0x4, 0x3, 0x9, 0x3, 0x4, 0x4,
0x9, 0x4, 0x4, 0x5, 0x9, 0x5, 0x4, 0x6, 0x9, 0x6, 0x4, 0x7, 0x9,
0x7, 0x4, 0x8, 0x9, 0x8, 0x4, 0x9, 0x9, 0x9, 0x3, 0x2, 0x3, 0x2,
0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x3, 0x2, 0x5, 0x2, 0x19, 0xa, 0x2,
0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x7, 0x3, 0x1e, 0xa, 0x3, 0xc, 0x3,
0xe, 0x3, 0x21, 0xb, 0x3, 0x3, 0x4, 0x3, 0x4, 0x3, 0x4, 0x7, 0x4,
0x26, 0xa, 0x4, 0xc, 0x4, 0xe, 0x4, 0x29, 0xb, 0x4, 0x3, 0x5, 0x3,
0x5, 0x3, 0x5, 0x3, 0x5, 0x5, 0x5, 0x2f, 0xa, 0x5, 0x3, 0x5, 0x3,
0x5, 0x3, 0x5, 0x3, 0x5, 0x5, 0x5, 0x35, 0xa, 0x5, 0x3, 0x6, 0x3,
0x6, 0x3, 0x7, 0x3, 0x7, 0x5, 0x7, 0x3b, 0xa, 0x7, 0x3, 0x8, 0x3,
0x8, 0x3, 0x9, 0x3, 0x9, 0x3, 0x9, 0x2, 0x2, 0xa, 0x2, 0x4, 0x6,
0x8, 0xa, 0xc, 0xe, 0x10, 0x2, 0x4, 0x4, 0x2, 0x22, 0x22, 0x26, 0x27,
0x3, 0x2, 0x1a, 0x1b, 0x2, 0x40, 0x2, 0x18, 0x3, 0x2, 0x2, 0x2, 0x4,
0x1a, 0x3, 0x2, 0x2, 0x2, 0x6, 0x22, 0x3, 0x2, 0x2, 0x2, 0x8, 0x34,
0x3, 0x2, 0x2, 0x2, 0xa, 0x36, 0x3, 0x2, 0x2, 0x2, 0xc, 0x3a, 0x3,
0x2, 0x2, 0x2, 0xe, 0x3c, 0x3, 0x2, 0x2, 0x2, 0x10, 0x3e, 0x3, 0x2,
0x2, 0x2, 0x12, 0x13, 0x5, 0x4, 0x3, 0x2, 0x13, 0x14, 0x7, 0x2, 0x2,
0x3, 0x14, 0x19, 0x3, 0x2, 0x2, 0x2, 0x15, 0x16, 0x5, 0x6, 0x4, 0x2,
0x16, 0x17, 0x7, 0x2, 0x2, 0x3, 0x17, 0x19, 0x3, 0x2, 0x2, 0x2, 0x18,
0x12, 0x3, 0x2, 0x2, 0x2, 0x18, 0x15, 0x3, 0x2, 0x2, 0x2, 0x19, 0x3,
0x3, 0x2, 0x2, 0x2, 0x1a, 0x1f, 0x7, 0x3, 0x2, 0x2, 0x1b, 0x1c, 0x7,
0x17, 0x2, 0x2, 0x1c, 0x1e, 0x5, 0x8, 0x5, 0x2, 0x1d, 0x1b, 0x3,
0x2, 0x2, 0x2, 0x1e, 0x21, 0x3, 0x2, 0x2, 0x2, 0x1f, 0x1d, 0x3, 0x2,
0x2, 0x2, 0x1f, 0x20, 0x3, 0x2, 0x2, 0x2, 0x20, 0x5, 0x3, 0x2, 0x2,
0x2, 0x21, 0x1f, 0x3, 0x2, 0x2, 0x2, 0x22, 0x27, 0x5, 0x8, 0x5, 0x2,
0x23, 0x24, 0x7, 0x17, 0x2, 0x2, 0x24, 0x26, 0x5, 0x8, 0x5, 0x2,
0x25, 0x23, 0x3, 0x2, 0x2, 0x2, 0x26, 0x29, 0x3, 0x2, 0x2, 0x2, 0x27,
0x25, 0x3, 0x2, 0x2, 0x2, 0x27, 0x28, 0x3, 0x2, 0x2, 0x2, 0x28, 0x7,
0x3, 0x2, 0x2, 0x2, 0x29, 0x27, 0x3, 0x2, 0x2, 0x2, 0x2a, 0x35, 0x5,
0x10, 0x9, 0x2, 0x2b, 0x2c, 0x5, 0x10, 0x9, 0x2, 0x2c, 0x2e, 0x5,
0xc, 0x7, 0x2, 0x2d, 0x2f, 0x5, 0x10, 0x9, 0x2, 0x2e, 0x2d, 0x3,
0x2, 0x2, 0x2, 0x2e, 0x2f, 0x3, 0x2, 0x2, 0x2, 0x2f, 0x35, 0x3, 0x2,
0x2, 0x2, 0x30, 0x31, 0x5, 0xc, 0x7, 0x2, 0x31, 0x32, 0x5, 0x10,
0x9, 0x2, 0x32, 0x35, 0x3, 0x2, 0x2, 0x2, 0x33, 0x35, 0x5, 0xa, 0x6,
0x2, 0x34, 0x2a, 0x3, 0x2, 0x2, 0x2, 0x34, 0x2b, 0x3, 0x2, 0x2, 0x2,
0x34, 0x30, 0x3, 0x2, 0x2, 0x2, 0x34, 0x33, 0x3, 0x2, 0x2, 0x2, 0x35,
0x9, 0x3, 0x2, 0x2, 0x2, 0x36, 0x37, 0x5, 0xe, 0x8, 0x2, 0x37, 0xb,
0x3, 0x2, 0x2, 0x2, 0x38, 0x3b, 0x5, 0xe, 0x8, 0x2, 0x39, 0x3b, 0x7,
0x24, 0x2, 0x2, 0x3a, 0x38, 0x3, 0x2, 0x2, 0x2, 0x3a, 0x39, 0x3,
0x2, 0x2, 0x2, 0x3b, 0xd, 0x3, 0x2, 0x2, 0x2, 0x3c, 0x3d, 0x9, 0x2,
0x2, 0x2, 0x3d, 0xf, 0x3, 0x2, 0x2, 0x2, 0x3e, 0x3f, 0x9, 0x3, 0x2,
0x2, 0x3f, 0x11, 0x3, 0x2, 0x2, 0x2, 0x8, 0x18, 0x1f, 0x27, 0x2e,
0x34, 0x3a,
};
_serializedATN.insert(_serializedATN.end(), serializedATNSegment0,
serializedATNSegment0 + sizeof(serializedATNSegment0) / sizeof(serializedATNSegment0[0]));
atn::ATNDeserializer deserializer;
_atn = deserializer.deserialize(_serializedATN);
size_t count = _atn.getNumberOfDecisions();
_decisionToDFA.reserve(count);
for (size_t i = 0; i < count; i++) {
_decisionToDFA.emplace_back(_atn.getDecisionState(i), i);
}
}
PathParser::Initializer PathParser::_init;