ECATTScriptParser.java

// Generated from org/egothor/methodatlas/discovery/abap/parser/ECATTScript.g4 by ANTLR 4.13.2
package org.egothor.methodatlas.discovery.abap.parser;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"})
public class ECATTScriptParser extends Parser {
	static { RuntimeMetaData.checkVersion("4.13.2", RuntimeMetaData.VERSION); }

	protected static final DFA[] _decisionToDFA;
	protected static final PredictionContextCache _sharedContextCache =
		new PredictionContextCache();
	public static final int
		ATTRIBUTES=1, END_ATTRIBUTES=2, FUNCTION=3, DO=4, DONE=5, IDENTIFIER=6, 
		STRING_LIT=7, INT_LIT=8, LINE_COMMENT=9, WS=10, OTHER=11;
	public static final int
		RULE_sourceFile = 0, RULE_topDecl = 1, RULE_attributesBlock = 2, RULE_attrContent = 3, 
		RULE_functionBlock = 4, RULE_funcHeader = 5, RULE_doBlock = 6, RULE_doContent = 7, 
		RULE_otherDecl = 8;
	private static String[] makeRuleNames() {
		return new String[] {
			"sourceFile", "topDecl", "attributesBlock", "attrContent", "functionBlock", 
			"funcHeader", "doBlock", "doContent", "otherDecl"
		};
	}
	public static final String[] ruleNames = makeRuleNames();

	private static String[] makeLiteralNames() {
		return new String[] {
			null, "'ATTRIBUTES'", "'END_ATTRIBUTES'", "'FUNCTION'", "'DO'", "'DONE'"
		};
	}
	private static final String[] _LITERAL_NAMES = makeLiteralNames();
	private static String[] makeSymbolicNames() {
		return new String[] {
			null, "ATTRIBUTES", "END_ATTRIBUTES", "FUNCTION", "DO", "DONE", "IDENTIFIER", 
			"STRING_LIT", "INT_LIT", "LINE_COMMENT", "WS", "OTHER"
		};
	}
	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);

	/**
	 * @deprecated Use {@link #VOCABULARY} instead.
	 */
	@Deprecated
	public static final String[] tokenNames;
	static {
		tokenNames = new String[_SYMBOLIC_NAMES.length];
		for (int i = 0; i < tokenNames.length; i++) {
			tokenNames[i] = VOCABULARY.getLiteralName(i);
			if (tokenNames[i] == null) {
				tokenNames[i] = VOCABULARY.getSymbolicName(i);
			}

			if (tokenNames[i] == null) {
				tokenNames[i] = "<INVALID>";
			}
		}
	}

	@Override
	@Deprecated
	public String[] getTokenNames() {
		return tokenNames;
	}

	@Override

	public Vocabulary getVocabulary() {
		return VOCABULARY;
	}

	@Override
	public String getGrammarFileName() { return "ECATTScript.g4"; }

	@Override
	public String[] getRuleNames() { return ruleNames; }

	@Override
	public String getSerializedATN() { return _serializedATN; }

	@Override
	public ATN getATN() { return _ATN; }

	public ECATTScriptParser(TokenStream input) {
		super(input);
		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
	}

	@SuppressWarnings("CheckReturnValue")
	public static class SourceFileContext extends ParserRuleContext {
		public TerminalNode EOF() { return getToken(ECATTScriptParser.EOF, 0); }
		public List<TopDeclContext> topDecl() {
			return getRuleContexts(TopDeclContext.class);
		}
		public TopDeclContext topDecl(int i) {
			return getRuleContext(TopDeclContext.class,i);
		}
		public SourceFileContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_sourceFile; }
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof ECATTScriptVisitor ) return ((ECATTScriptVisitor<? extends T>)visitor).visitSourceFile(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SourceFileContext sourceFile() throws RecognitionException {
		SourceFileContext _localctx = new SourceFileContext(_ctx, getState());
		enterRule(_localctx, 0, RULE_sourceFile);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(21);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4094L) != 0)) {
				{
				{
				setState(18);
				topDecl();
				}
				}
				setState(23);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(24);
			match(EOF);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class TopDeclContext extends ParserRuleContext {
		public AttributesBlockContext attributesBlock() {
			return getRuleContext(AttributesBlockContext.class,0);
		}
		public FunctionBlockContext functionBlock() {
			return getRuleContext(FunctionBlockContext.class,0);
		}
		public OtherDeclContext otherDecl() {
			return getRuleContext(OtherDeclContext.class,0);
		}
		public TopDeclContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_topDecl; }
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof ECATTScriptVisitor ) return ((ECATTScriptVisitor<? extends T>)visitor).visitTopDecl(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TopDeclContext topDecl() throws RecognitionException {
		TopDeclContext _localctx = new TopDeclContext(_ctx, getState());
		enterRule(_localctx, 2, RULE_topDecl);
		try {
			setState(29);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ATTRIBUTES:
				enterOuterAlt(_localctx, 1);
				{
				setState(26);
				attributesBlock();
				}
				break;
			case FUNCTION:
				enterOuterAlt(_localctx, 2);
				{
				setState(27);
				functionBlock();
				}
				break;
			case END_ATTRIBUTES:
			case DO:
			case DONE:
			case IDENTIFIER:
			case STRING_LIT:
			case INT_LIT:
			case LINE_COMMENT:
			case WS:
			case OTHER:
				enterOuterAlt(_localctx, 3);
				{
				setState(28);
				otherDecl();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class AttributesBlockContext extends ParserRuleContext {
		public TerminalNode ATTRIBUTES() { return getToken(ECATTScriptParser.ATTRIBUTES, 0); }
		public TerminalNode END_ATTRIBUTES() { return getToken(ECATTScriptParser.END_ATTRIBUTES, 0); }
		public List<AttrContentContext> attrContent() {
			return getRuleContexts(AttrContentContext.class);
		}
		public AttrContentContext attrContent(int i) {
			return getRuleContext(AttrContentContext.class,i);
		}
		public AttributesBlockContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_attributesBlock; }
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof ECATTScriptVisitor ) return ((ECATTScriptVisitor<? extends T>)visitor).visitAttributesBlock(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AttributesBlockContext attributesBlock() throws RecognitionException {
		AttributesBlockContext _localctx = new AttributesBlockContext(_ctx, getState());
		enterRule(_localctx, 4, RULE_attributesBlock);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(31);
			match(ATTRIBUTES);
			setState(35);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4082L) != 0)) {
				{
				{
				setState(32);
				attrContent();
				}
				}
				setState(37);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(38);
			match(END_ATTRIBUTES);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class AttrContentContext extends ParserRuleContext {
		public TerminalNode END_ATTRIBUTES() { return getToken(ECATTScriptParser.END_ATTRIBUTES, 0); }
		public TerminalNode FUNCTION() { return getToken(ECATTScriptParser.FUNCTION, 0); }
		public TerminalNode EOF() { return getToken(ECATTScriptParser.EOF, 0); }
		public AttrContentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_attrContent; }
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof ECATTScriptVisitor ) return ((ECATTScriptVisitor<? extends T>)visitor).visitAttrContent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AttrContentContext attrContent() throws RecognitionException {
		AttrContentContext _localctx = new AttrContentContext(_ctx, getState());
		enterRule(_localctx, 6, RULE_attrContent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(40);
			_la = _input.LA(1);
			if ( _la <= 0 || (((((_la - -1)) & ~0x3f) == 0 && ((1L << (_la - -1)) & 25L) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class FunctionBlockContext extends ParserRuleContext {
		public TerminalNode FUNCTION() { return getToken(ECATTScriptParser.FUNCTION, 0); }
		public TerminalNode IDENTIFIER() { return getToken(ECATTScriptParser.IDENTIFIER, 0); }
		public DoBlockContext doBlock() {
			return getRuleContext(DoBlockContext.class,0);
		}
		public List<FuncHeaderContext> funcHeader() {
			return getRuleContexts(FuncHeaderContext.class);
		}
		public FuncHeaderContext funcHeader(int i) {
			return getRuleContext(FuncHeaderContext.class,i);
		}
		public FunctionBlockContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionBlock; }
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof ECATTScriptVisitor ) return ((ECATTScriptVisitor<? extends T>)visitor).visitFunctionBlock(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionBlockContext functionBlock() throws RecognitionException {
		FunctionBlockContext _localctx = new FunctionBlockContext(_ctx, getState());
		enterRule(_localctx, 8, RULE_functionBlock);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(42);
			match(FUNCTION);
			setState(43);
			match(IDENTIFIER);
			setState(47);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4038L) != 0)) {
				{
				{
				setState(44);
				funcHeader();
				}
				}
				setState(49);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(50);
			doBlock();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class FuncHeaderContext extends ParserRuleContext {
		public TerminalNode DO() { return getToken(ECATTScriptParser.DO, 0); }
		public TerminalNode FUNCTION() { return getToken(ECATTScriptParser.FUNCTION, 0); }
		public TerminalNode DONE() { return getToken(ECATTScriptParser.DONE, 0); }
		public TerminalNode EOF() { return getToken(ECATTScriptParser.EOF, 0); }
		public FuncHeaderContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_funcHeader; }
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof ECATTScriptVisitor ) return ((ECATTScriptVisitor<? extends T>)visitor).visitFuncHeader(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FuncHeaderContext funcHeader() throws RecognitionException {
		FuncHeaderContext _localctx = new FuncHeaderContext(_ctx, getState());
		enterRule(_localctx, 10, RULE_funcHeader);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(52);
			_la = _input.LA(1);
			if ( _la <= 0 || (((((_la - -1)) & ~0x3f) == 0 && ((1L << (_la - -1)) & 113L) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class DoBlockContext extends ParserRuleContext {
		public TerminalNode DO() { return getToken(ECATTScriptParser.DO, 0); }
		public TerminalNode DONE() { return getToken(ECATTScriptParser.DONE, 0); }
		public List<DoContentContext> doContent() {
			return getRuleContexts(DoContentContext.class);
		}
		public DoContentContext doContent(int i) {
			return getRuleContext(DoContentContext.class,i);
		}
		public DoBlockContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_doBlock; }
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof ECATTScriptVisitor ) return ((ECATTScriptVisitor<? extends T>)visitor).visitDoBlock(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DoBlockContext doBlock() throws RecognitionException {
		DoBlockContext _localctx = new DoBlockContext(_ctx, getState());
		enterRule(_localctx, 12, RULE_doBlock);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(54);
			match(DO);
			setState(58);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 4054L) != 0)) {
				{
				{
				setState(55);
				doContent();
				}
				}
				setState(60);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(61);
			match(DONE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class DoContentContext extends ParserRuleContext {
		public DoBlockContext doBlock() {
			return getRuleContext(DoBlockContext.class,0);
		}
		public TerminalNode DO() { return getToken(ECATTScriptParser.DO, 0); }
		public TerminalNode DONE() { return getToken(ECATTScriptParser.DONE, 0); }
		public TerminalNode FUNCTION() { return getToken(ECATTScriptParser.FUNCTION, 0); }
		public TerminalNode EOF() { return getToken(ECATTScriptParser.EOF, 0); }
		public DoContentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_doContent; }
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof ECATTScriptVisitor ) return ((ECATTScriptVisitor<? extends T>)visitor).visitDoContent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DoContentContext doContent() throws RecognitionException {
		DoContentContext _localctx = new DoContentContext(_ctx, getState());
		enterRule(_localctx, 14, RULE_doContent);
		int _la;
		try {
			setState(65);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DO:
				enterOuterAlt(_localctx, 1);
				{
				setState(63);
				doBlock();
				}
				break;
			case ATTRIBUTES:
			case END_ATTRIBUTES:
			case IDENTIFIER:
			case STRING_LIT:
			case INT_LIT:
			case LINE_COMMENT:
			case WS:
			case OTHER:
				enterOuterAlt(_localctx, 2);
				{
				setState(64);
				_la = _input.LA(1);
				if ( _la <= 0 || (((((_la - -1)) & ~0x3f) == 0 && ((1L << (_la - -1)) & 113L) != 0)) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class OtherDeclContext extends ParserRuleContext {
		public List<TerminalNode> ATTRIBUTES() { return getTokens(ECATTScriptParser.ATTRIBUTES); }
		public TerminalNode ATTRIBUTES(int i) {
			return getToken(ECATTScriptParser.ATTRIBUTES, i);
		}
		public List<TerminalNode> FUNCTION() { return getTokens(ECATTScriptParser.FUNCTION); }
		public TerminalNode FUNCTION(int i) {
			return getToken(ECATTScriptParser.FUNCTION, i);
		}
		public List<TerminalNode> EOF() { return getTokens(ECATTScriptParser.EOF); }
		public TerminalNode EOF(int i) {
			return getToken(ECATTScriptParser.EOF, i);
		}
		public OtherDeclContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_otherDecl; }
		@Override
		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
			if ( visitor instanceof ECATTScriptVisitor ) return ((ECATTScriptVisitor<? extends T>)visitor).visitOtherDecl(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OtherDeclContext otherDecl() throws RecognitionException {
		OtherDeclContext _localctx = new OtherDeclContext(_ctx, getState());
		enterRule(_localctx, 16, RULE_otherDecl);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(68); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(67);
					_la = _input.LA(1);
					if ( _la <= 0 || (((((_la - -1)) & ~0x3f) == 0 && ((1L << (_la - -1)) & 21L) != 0)) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(70); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,6,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static final String _serializedATN =
		"\u0004\u0001\u000bI\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+
		"\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+
		"\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+
		"\b\u0007\b\u0001\u0000\u0005\u0000\u0014\b\u0000\n\u0000\f\u0000\u0017"+
		"\t\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0003"+
		"\u0001\u001e\b\u0001\u0001\u0002\u0001\u0002\u0005\u0002\"\b\u0002\n\u0002"+
		"\f\u0002%\t\u0002\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001"+
		"\u0004\u0001\u0004\u0001\u0004\u0005\u0004.\b\u0004\n\u0004\f\u00041\t"+
		"\u0004\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0006\u0001"+
		"\u0006\u0005\u00069\b\u0006\n\u0006\f\u0006<\t\u0006\u0001\u0006\u0001"+
		"\u0006\u0001\u0007\u0001\u0007\u0003\u0007B\b\u0007\u0001\b\u0004\bE\b"+
		"\b\u000b\b\f\bF\u0001\b\u0000\u0000\t\u0000\u0002\u0004\u0006\b\n\f\u000e"+
		"\u0010\u0000\u0003\u0001\u0001\u0002\u0003\u0001\u0001\u0003\u0005\u0002"+
		"\u0001\u0001\u0001\u0003\u0003G\u0000\u0015\u0001\u0000\u0000\u0000\u0002"+
		"\u001d\u0001\u0000\u0000\u0000\u0004\u001f\u0001\u0000\u0000\u0000\u0006"+
		"(\u0001\u0000\u0000\u0000\b*\u0001\u0000\u0000\u0000\n4\u0001\u0000\u0000"+
		"\u0000\f6\u0001\u0000\u0000\u0000\u000eA\u0001\u0000\u0000\u0000\u0010"+
		"D\u0001\u0000\u0000\u0000\u0012\u0014\u0003\u0002\u0001\u0000\u0013\u0012"+
		"\u0001\u0000\u0000\u0000\u0014\u0017\u0001\u0000\u0000\u0000\u0015\u0013"+
		"\u0001\u0000\u0000\u0000\u0015\u0016\u0001\u0000\u0000\u0000\u0016\u0018"+
		"\u0001\u0000\u0000\u0000\u0017\u0015\u0001\u0000\u0000\u0000\u0018\u0019"+
		"\u0005\u0000\u0000\u0001\u0019\u0001\u0001\u0000\u0000\u0000\u001a\u001e"+
		"\u0003\u0004\u0002\u0000\u001b\u001e\u0003\b\u0004\u0000\u001c\u001e\u0003"+
		"\u0010\b\u0000\u001d\u001a\u0001\u0000\u0000\u0000\u001d\u001b\u0001\u0000"+
		"\u0000\u0000\u001d\u001c\u0001\u0000\u0000\u0000\u001e\u0003\u0001\u0000"+
		"\u0000\u0000\u001f#\u0005\u0001\u0000\u0000 \"\u0003\u0006\u0003\u0000"+
		"! \u0001\u0000\u0000\u0000\"%\u0001\u0000\u0000\u0000#!\u0001\u0000\u0000"+
		"\u0000#$\u0001\u0000\u0000\u0000$&\u0001\u0000\u0000\u0000%#\u0001\u0000"+
		"\u0000\u0000&\'\u0005\u0002\u0000\u0000\'\u0005\u0001\u0000\u0000\u0000"+
		"()\b\u0000\u0000\u0000)\u0007\u0001\u0000\u0000\u0000*+\u0005\u0003\u0000"+
		"\u0000+/\u0005\u0006\u0000\u0000,.\u0003\n\u0005\u0000-,\u0001\u0000\u0000"+
		"\u0000.1\u0001\u0000\u0000\u0000/-\u0001\u0000\u0000\u0000/0\u0001\u0000"+
		"\u0000\u000002\u0001\u0000\u0000\u00001/\u0001\u0000\u0000\u000023\u0003"+
		"\f\u0006\u00003\t\u0001\u0000\u0000\u000045\b\u0001\u0000\u00005\u000b"+
		"\u0001\u0000\u0000\u00006:\u0005\u0004\u0000\u000079\u0003\u000e\u0007"+
		"\u000087\u0001\u0000\u0000\u00009<\u0001\u0000\u0000\u0000:8\u0001\u0000"+
		"\u0000\u0000:;\u0001\u0000\u0000\u0000;=\u0001\u0000\u0000\u0000<:\u0001"+
		"\u0000\u0000\u0000=>\u0005\u0005\u0000\u0000>\r\u0001\u0000\u0000\u0000"+
		"?B\u0003\f\u0006\u0000@B\b\u0001\u0000\u0000A?\u0001\u0000\u0000\u0000"+
		"A@\u0001\u0000\u0000\u0000B\u000f\u0001\u0000\u0000\u0000CE\b\u0002\u0000"+
		"\u0000DC\u0001\u0000\u0000\u0000EF\u0001\u0000\u0000\u0000FD\u0001\u0000"+
		"\u0000\u0000FG\u0001\u0000\u0000\u0000G\u0011\u0001\u0000\u0000\u0000"+
		"\u0007\u0015\u001d#/:AF";
	public static final ATN _ATN =
		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
	static {
		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
		}
	}
}