All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eolang.parser.PhiParser Maven / Gradle / Ivy

There is a newer version: 0.50.1
Show newest version
// Generated from org/eolang/parser/Phi.g4 by ANTLR 4.13.1
package org.eolang.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"})
public class PhiParser extends Parser {
	static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }

	protected static final DFA[] _decisionToDFA;
	protected static final PredictionContextCache _sharedContextCache =
		new PredictionContextCache();
	public static final int
		WS=1, FUNCTION=2, LCB=3, RCB=4, LSB=5, RSB=6, LB=7, RB=8, DOT=9, COMMA=10, 
		ARROW=11, DASHED_ARROW=12, EMPTY=13, PHI=14, RHO=15, DELTA=16, XI=17, 
		LAMBDA=18, HOME=19, DEF_PACKAGE=20, ERROR=21, MINUS=22, INT=23, FLOAT=24, 
		STRING=25, PLUS=26, LABEL=27, ALPHA=28, BYTES=29;
	public static final int
		RULE_program = 0, RULE_object = 1, RULE_formation = 2, RULE_scoped = 3, 
		RULE_bindings = 4, RULE_binding = 5, RULE_tauBinding = 6, RULE_voids = 7, 
		RULE_void = 8, RULE_attribute = 9, RULE_emptyBinding = 10, RULE_deltaBinding = 11, 
		RULE_lambdaBinding = 12, RULE_application = 13, RULE_applicationBindings = 14, 
		RULE_applicationObjects = 15, RULE_justObject = 16, RULE_dispatch = 17, 
		RULE_applicationsOrDispatches = 18, RULE_termination = 19, RULE_data = 20;
	private static String[] makeRuleNames() {
		return new String[] {
			"program", "object", "formation", "scoped", "bindings", "binding", "tauBinding", 
			"voids", "void", "attribute", "emptyBinding", "deltaBinding", "lambdaBinding", 
			"application", "applicationBindings", "applicationObjects", "justObject", 
			"dispatch", "applicationsOrDispatches", "termination", "data"
		};
	}
	public static final String[] ruleNames = makeRuleNames();

	private static String[] makeLiteralNames() {
		return new String[] {
			null, null, null, "'{'", "'}'", "'\\u27E6'", "'\\u27E7'", "'('", "')'", 
			"'.'", "','", "'\\u21A6'", "'\\u290D'", "'\\u2205'", "'\\u03C6'", "'\\u03C1'", 
			"'\\u0394'", "'\\u03BE'", "'\\u03BB'", "'\\u03A6'", "'\\u03A6\\u0307'", 
			"'\\u22A5'", "'-'", null, null, null, "'+'"
		};
	}
	private static final String[] _LITERAL_NAMES = makeLiteralNames();
	private static String[] makeSymbolicNames() {
		return new String[] {
			null, "WS", "FUNCTION", "LCB", "RCB", "LSB", "RSB", "LB", "RB", "DOT", 
			"COMMA", "ARROW", "DASHED_ARROW", "EMPTY", "PHI", "RHO", "DELTA", "XI", 
			"LAMBDA", "HOME", "DEF_PACKAGE", "ERROR", "MINUS", "INT", "FLOAT", "STRING", 
			"PLUS", "LABEL", "ALPHA", "BYTES"
		};
	}
	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] = "";
			}
		}
	}

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

	@Override

	public Vocabulary getVocabulary() {
		return VOCABULARY;
	}

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

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

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

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

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

	@SuppressWarnings("CheckReturnValue")
	public static class ProgramContext extends ParserRuleContext {
		public TerminalNode HOME() { return getToken(PhiParser.HOME, 0); }
		public TerminalNode ARROW() { return getToken(PhiParser.ARROW, 0); }
		public ObjectContext object() {
			return getRuleContext(ObjectContext.class,0);
		}
		public TerminalNode LCB() { return getToken(PhiParser.LCB, 0); }
		public TerminalNode RCB() { return getToken(PhiParser.RCB, 0); }
		public ProgramContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_program; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterProgram(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitProgram(this);
		}
	}

	public final ProgramContext program() throws RecognitionException {
		ProgramContext _localctx = new ProgramContext(_ctx, getState());
		enterRule(_localctx, 0, RULE_program);
		try {
			setState(49);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case HOME:
				enterOuterAlt(_localctx, 1);
				{
				setState(42);
				match(HOME);
				setState(43);
				match(ARROW);
				setState(44);
				object();
				}
				break;
			case LCB:
				enterOuterAlt(_localctx, 2);
				{
				setState(45);
				match(LCB);
				setState(46);
				object();
				setState(47);
				match(RCB);
				}
				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 ObjectContext extends ParserRuleContext {
		public FormationContext formation() {
			return getRuleContext(FormationContext.class,0);
		}
		public DispatchContext dispatch() {
			return getRuleContext(DispatchContext.class,0);
		}
		public ApplicationsOrDispatchesContext applicationsOrDispatches() {
			return getRuleContext(ApplicationsOrDispatchesContext.class,0);
		}
		public ScopedContext scoped() {
			return getRuleContext(ScopedContext.class,0);
		}
		public TerminationContext termination() {
			return getRuleContext(TerminationContext.class,0);
		}
		public DataContext data() {
			return getRuleContext(DataContext.class,0);
		}
		public ObjectContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_object; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterObject(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitObject(this);
		}
	}

	public final ObjectContext object() throws RecognitionException {
		ObjectContext _localctx = new ObjectContext(_ctx, getState());
		enterRule(_localctx, 2, RULE_object);
		int _la;
		try {
			setState(64);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LSB:
				enterOuterAlt(_localctx, 1);
				{
				setState(51);
				formation();
				setState(55);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DOT) {
					{
					setState(52);
					dispatch();
					setState(53);
					applicationsOrDispatches();
					}
				}

				}
				break;
			case XI:
			case HOME:
			case DEF_PACKAGE:
			case ERROR:
			case INT:
			case FLOAT:
			case STRING:
				enterOuterAlt(_localctx, 2);
				{
				setState(60);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case XI:
				case HOME:
				case DEF_PACKAGE:
					{
					setState(57);
					scoped();
					}
					break;
				case ERROR:
					{
					setState(58);
					termination();
					}
					break;
				case INT:
				case FLOAT:
				case STRING:
					{
					setState(59);
					data();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(62);
				applicationsOrDispatches();
				}
				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 FormationContext extends ParserRuleContext {
		public TerminalNode LSB() { return getToken(PhiParser.LSB, 0); }
		public BindingsContext bindings() {
			return getRuleContext(BindingsContext.class,0);
		}
		public TerminalNode RSB() { return getToken(PhiParser.RSB, 0); }
		public FormationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_formation; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterFormation(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitFormation(this);
		}
	}

	public final FormationContext formation() throws RecognitionException {
		FormationContext _localctx = new FormationContext(_ctx, getState());
		enterRule(_localctx, 4, RULE_formation);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(66);
			match(LSB);
			setState(67);
			bindings();
			setState(68);
			match(RSB);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ScopedContext extends ParserRuleContext {
		public TerminalNode XI() { return getToken(PhiParser.XI, 0); }
		public TerminalNode HOME() { return getToken(PhiParser.HOME, 0); }
		public TerminalNode DEF_PACKAGE() { return getToken(PhiParser.DEF_PACKAGE, 0); }
		public ScopedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_scoped; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterScoped(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitScoped(this);
		}
	}

	public final ScopedContext scoped() throws RecognitionException {
		ScopedContext _localctx = new ScopedContext(_ctx, getState());
		enterRule(_localctx, 6, RULE_scoped);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(70);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 1703936L) != 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 BindingsContext extends ParserRuleContext {
		public List binding() {
			return getRuleContexts(BindingContext.class);
		}
		public BindingContext binding(int i) {
			return getRuleContext(BindingContext.class,i);
		}
		public List COMMA() { return getTokens(PhiParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(PhiParser.COMMA, i);
		}
		public BindingsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_bindings; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterBindings(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitBindings(this);
		}
	}

	public final BindingsContext bindings() throws RecognitionException {
		BindingsContext _localctx = new BindingsContext(_ctx, getState());
		enterRule(_localctx, 8, RULE_bindings);
		int _la;
		try {
			setState(82);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(73);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 403030016L) != 0)) {
					{
					setState(72);
					binding();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(75);
				binding();
				setState(78); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(76);
					match(COMMA);
					setState(77);
					binding();
					}
					}
					setState(80); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==COMMA );
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class BindingContext extends ParserRuleContext {
		public TauBindingContext tauBinding() {
			return getRuleContext(TauBindingContext.class,0);
		}
		public EmptyBindingContext emptyBinding() {
			return getRuleContext(EmptyBindingContext.class,0);
		}
		public DeltaBindingContext deltaBinding() {
			return getRuleContext(DeltaBindingContext.class,0);
		}
		public LambdaBindingContext lambdaBinding() {
			return getRuleContext(LambdaBindingContext.class,0);
		}
		public BindingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_binding; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterBinding(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitBinding(this);
		}
	}

	public final BindingContext binding() throws RecognitionException {
		BindingContext _localctx = new BindingContext(_ctx, getState());
		enterRule(_localctx, 10, RULE_binding);
		try {
			setState(88);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(84);
				tauBinding();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(85);
				emptyBinding();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(86);
				deltaBinding();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(87);
				lambdaBinding();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class TauBindingContext extends ParserRuleContext {
		public AttributeContext attribute() {
			return getRuleContext(AttributeContext.class,0);
		}
		public TerminalNode ARROW() { return getToken(PhiParser.ARROW, 0); }
		public ObjectContext object() {
			return getRuleContext(ObjectContext.class,0);
		}
		public VoidsContext voids() {
			return getRuleContext(VoidsContext.class,0);
		}
		public FormationContext formation() {
			return getRuleContext(FormationContext.class,0);
		}
		public TauBindingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tauBinding; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterTauBinding(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitTauBinding(this);
		}
	}

	public final TauBindingContext tauBinding() throws RecognitionException {
		TauBindingContext _localctx = new TauBindingContext(_ctx, getState());
		enterRule(_localctx, 12, RULE_tauBinding);
		try {
			setState(99);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(90);
				attribute();
				setState(91);
				match(ARROW);
				setState(92);
				object();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(94);
				attribute();
				setState(95);
				voids();
				setState(96);
				match(ARROW);
				setState(97);
				formation();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VoidsContext extends ParserRuleContext {
		public TerminalNode LB() { return getToken(PhiParser.LB, 0); }
		public TerminalNode RB() { return getToken(PhiParser.RB, 0); }
		public List void_() {
			return getRuleContexts(VoidContext.class);
		}
		public VoidContext void_(int i) {
			return getRuleContext(VoidContext.class,i);
		}
		public List COMMA() { return getTokens(PhiParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(PhiParser.COMMA, i);
		}
		public VoidsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_voids; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterVoids(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitVoids(this);
		}
	}

	public final VoidsContext voids() throws RecognitionException {
		VoidsContext _localctx = new VoidsContext(_ctx, getState());
		enterRule(_localctx, 14, RULE_voids);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(101);
			match(LB);
			setState(112);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) {
			case 1:
				{
				setState(103);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 402669568L) != 0)) {
					{
					setState(102);
					void_();
					}
				}

				}
				break;
			case 2:
				{
				setState(105);
				void_();
				setState(108); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(106);
					match(COMMA);
					setState(107);
					void_();
					}
					}
					setState(110); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==COMMA );
				}
				break;
			}
			setState(114);
			match(RB);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class VoidContext extends ParserRuleContext {
		public TerminalNode LABEL() { return getToken(PhiParser.LABEL, 0); }
		public TerminalNode ALPHA() { return getToken(PhiParser.ALPHA, 0); }
		public TerminalNode PHI() { return getToken(PhiParser.PHI, 0); }
		public VoidContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_void; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterVoid(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitVoid(this);
		}
	}

	public final VoidContext void_() throws RecognitionException {
		VoidContext _localctx = new VoidContext(_ctx, getState());
		enterRule(_localctx, 16, RULE_void);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(116);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 402669568L) != 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 AttributeContext extends ParserRuleContext {
		public TerminalNode PHI() { return getToken(PhiParser.PHI, 0); }
		public TerminalNode RHO() { return getToken(PhiParser.RHO, 0); }
		public TerminalNode LABEL() { return getToken(PhiParser.LABEL, 0); }
		public TerminalNode ALPHA() { return getToken(PhiParser.ALPHA, 0); }
		public AttributeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_attribute; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterAttribute(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitAttribute(this);
		}
	}

	public final AttributeContext attribute() throws RecognitionException {
		AttributeContext _localctx = new AttributeContext(_ctx, getState());
		enterRule(_localctx, 18, RULE_attribute);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(118);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 402702336L) != 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 EmptyBindingContext extends ParserRuleContext {
		public AttributeContext attribute() {
			return getRuleContext(AttributeContext.class,0);
		}
		public TerminalNode ARROW() { return getToken(PhiParser.ARROW, 0); }
		public TerminalNode EMPTY() { return getToken(PhiParser.EMPTY, 0); }
		public EmptyBindingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_emptyBinding; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterEmptyBinding(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitEmptyBinding(this);
		}
	}

	public final EmptyBindingContext emptyBinding() throws RecognitionException {
		EmptyBindingContext _localctx = new EmptyBindingContext(_ctx, getState());
		enterRule(_localctx, 20, RULE_emptyBinding);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(120);
			attribute();
			setState(121);
			match(ARROW);
			setState(122);
			match(EMPTY);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class DeltaBindingContext extends ParserRuleContext {
		public TerminalNode DELTA() { return getToken(PhiParser.DELTA, 0); }
		public TerminalNode DASHED_ARROW() { return getToken(PhiParser.DASHED_ARROW, 0); }
		public TerminalNode BYTES() { return getToken(PhiParser.BYTES, 0); }
		public TerminalNode EMPTY() { return getToken(PhiParser.EMPTY, 0); }
		public DeltaBindingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_deltaBinding; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterDeltaBinding(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitDeltaBinding(this);
		}
	}

	public final DeltaBindingContext deltaBinding() throws RecognitionException {
		DeltaBindingContext _localctx = new DeltaBindingContext(_ctx, getState());
		enterRule(_localctx, 22, RULE_deltaBinding);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(124);
			match(DELTA);
			setState(125);
			match(DASHED_ARROW);
			setState(126);
			_la = _input.LA(1);
			if ( !(_la==EMPTY || _la==BYTES) ) {
			_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 LambdaBindingContext extends ParserRuleContext {
		public TerminalNode LAMBDA() { return getToken(PhiParser.LAMBDA, 0); }
		public TerminalNode DASHED_ARROW() { return getToken(PhiParser.DASHED_ARROW, 0); }
		public TerminalNode FUNCTION() { return getToken(PhiParser.FUNCTION, 0); }
		public LambdaBindingContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lambdaBinding; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterLambdaBinding(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitLambdaBinding(this);
		}
	}

	public final LambdaBindingContext lambdaBinding() throws RecognitionException {
		LambdaBindingContext _localctx = new LambdaBindingContext(_ctx, getState());
		enterRule(_localctx, 24, RULE_lambdaBinding);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(128);
			match(LAMBDA);
			setState(129);
			match(DASHED_ARROW);
			setState(130);
			match(FUNCTION);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ApplicationContext extends ParserRuleContext {
		public TerminalNode LB() { return getToken(PhiParser.LB, 0); }
		public TerminalNode RB() { return getToken(PhiParser.RB, 0); }
		public ApplicationBindingsContext applicationBindings() {
			return getRuleContext(ApplicationBindingsContext.class,0);
		}
		public ApplicationObjectsContext applicationObjects() {
			return getRuleContext(ApplicationObjectsContext.class,0);
		}
		public ApplicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_application; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterApplication(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitApplication(this);
		}
	}

	public final ApplicationContext application() throws RecognitionException {
		ApplicationContext _localctx = new ApplicationContext(_ctx, getState());
		enterRule(_localctx, 26, RULE_application);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(132);
			match(LB);
			setState(135);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
			case 1:
				{
				setState(133);
				applicationBindings();
				}
				break;
			case 2:
				{
				setState(134);
				applicationObjects();
				}
				break;
			}
			setState(137);
			match(RB);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ApplicationBindingsContext extends ParserRuleContext {
		public List tauBinding() {
			return getRuleContexts(TauBindingContext.class);
		}
		public TauBindingContext tauBinding(int i) {
			return getRuleContext(TauBindingContext.class,i);
		}
		public List COMMA() { return getTokens(PhiParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(PhiParser.COMMA, i);
		}
		public ApplicationBindingsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_applicationBindings; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterApplicationBindings(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitApplicationBindings(this);
		}
	}

	public final ApplicationBindingsContext applicationBindings() throws RecognitionException {
		ApplicationBindingsContext _localctx = new ApplicationBindingsContext(_ctx, getState());
		enterRule(_localctx, 28, RULE_applicationBindings);
		int _la;
		try {
			setState(150);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(140);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 402702336L) != 0)) {
					{
					setState(139);
					tauBinding();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(142);
				tauBinding();
				setState(147);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA) {
					{
					{
					setState(143);
					match(COMMA);
					setState(144);
					tauBinding();
					}
					}
					setState(149);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ApplicationObjectsContext extends ParserRuleContext {
		public List justObject() {
			return getRuleContexts(JustObjectContext.class);
		}
		public JustObjectContext justObject(int i) {
			return getRuleContext(JustObjectContext.class,i);
		}
		public List COMMA() { return getTokens(PhiParser.COMMA); }
		public TerminalNode COMMA(int i) {
			return getToken(PhiParser.COMMA, i);
		}
		public ApplicationObjectsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_applicationObjects; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterApplicationObjects(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitApplicationObjects(this);
		}
	}

	public final ApplicationObjectsContext applicationObjects() throws RecognitionException {
		ApplicationObjectsContext _localctx = new ApplicationObjectsContext(_ctx, getState());
		enterRule(_localctx, 30, RULE_applicationObjects);
		int _la;
		try {
			setState(162);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(153);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 62521376L) != 0)) {
					{
					setState(152);
					justObject();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(155);
				justObject();
				setState(158); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(156);
					match(COMMA);
					setState(157);
					justObject();
					}
					}
					setState(160); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==COMMA );
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class JustObjectContext extends ParserRuleContext {
		public ObjectContext object() {
			return getRuleContext(ObjectContext.class,0);
		}
		public JustObjectContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_justObject; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterJustObject(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitJustObject(this);
		}
	}

	public final JustObjectContext justObject() throws RecognitionException {
		JustObjectContext _localctx = new JustObjectContext(_ctx, getState());
		enterRule(_localctx, 32, RULE_justObject);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(164);
			object();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class DispatchContext extends ParserRuleContext {
		public TerminalNode DOT() { return getToken(PhiParser.DOT, 0); }
		public AttributeContext attribute() {
			return getRuleContext(AttributeContext.class,0);
		}
		public DispatchContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dispatch; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterDispatch(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitDispatch(this);
		}
	}

	public final DispatchContext dispatch() throws RecognitionException {
		DispatchContext _localctx = new DispatchContext(_ctx, getState());
		enterRule(_localctx, 34, RULE_dispatch);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(166);
			match(DOT);
			setState(167);
			attribute();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class ApplicationsOrDispatchesContext extends ParserRuleContext {
		public List application() {
			return getRuleContexts(ApplicationContext.class);
		}
		public ApplicationContext application(int i) {
			return getRuleContext(ApplicationContext.class,i);
		}
		public List dispatch() {
			return getRuleContexts(DispatchContext.class);
		}
		public DispatchContext dispatch(int i) {
			return getRuleContext(DispatchContext.class,i);
		}
		public ApplicationsOrDispatchesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_applicationsOrDispatches; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterApplicationsOrDispatches(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitApplicationsOrDispatches(this);
		}
	}

	public final ApplicationsOrDispatchesContext applicationsOrDispatches() throws RecognitionException {
		ApplicationsOrDispatchesContext _localctx = new ApplicationsOrDispatchesContext(_ctx, getState());
		enterRule(_localctx, 36, RULE_applicationsOrDispatches);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(173);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==LB || _la==DOT) {
				{
				setState(171);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LB:
					{
					setState(169);
					application();
					}
					break;
				case DOT:
					{
					setState(170);
					dispatch();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				setState(175);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class TerminationContext extends ParserRuleContext {
		public TerminalNode ERROR() { return getToken(PhiParser.ERROR, 0); }
		public TerminationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_termination; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterTermination(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitTermination(this);
		}
	}

	public final TerminationContext termination() throws RecognitionException {
		TerminationContext _localctx = new TerminationContext(_ctx, getState());
		enterRule(_localctx, 38, RULE_termination);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(176);
			match(ERROR);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	@SuppressWarnings("CheckReturnValue")
	public static class DataContext extends ParserRuleContext {
		public TerminalNode STRING() { return getToken(PhiParser.STRING, 0); }
		public TerminalNode INT() { return getToken(PhiParser.INT, 0); }
		public TerminalNode FLOAT() { return getToken(PhiParser.FLOAT, 0); }
		public DataContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_data; }
		@Override
		public void enterRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).enterData(this);
		}
		@Override
		public void exitRule(ParseTreeListener listener) {
			if ( listener instanceof PhiListener ) ((PhiListener)listener).exitData(this);
		}
	}

	public final DataContext data() throws RecognitionException {
		DataContext _localctx = new DataContext(_ctx, getState());
		enterRule(_localctx, 40, RULE_data);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(178);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 58720256L) != 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;
	}

	public static final String _serializedATN =
		"\u0004\u0001\u001d\u00b5\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\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+
		"\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+
		"\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+
		"\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0003"+
		"\u00002\b\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0003"+
		"\u00018\b\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0003\u0001=\b\u0001"+
		"\u0001\u0001\u0001\u0001\u0003\u0001A\b\u0001\u0001\u0002\u0001\u0002"+
		"\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0004\u0003\u0004"+
		"J\b\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0004\u0004O\b\u0004\u000b"+
		"\u0004\f\u0004P\u0003\u0004S\b\u0004\u0001\u0005\u0001\u0005\u0001\u0005"+
		"\u0001\u0005\u0003\u0005Y\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006"+
		"\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+
		"\u0003\u0006d\b\u0006\u0001\u0007\u0001\u0007\u0003\u0007h\b\u0007\u0001"+
		"\u0007\u0001\u0007\u0001\u0007\u0004\u0007m\b\u0007\u000b\u0007\f\u0007"+
		"n\u0003\u0007q\b\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\t"+
		"\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001"+
		"\u000b\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001"+
		"\r\u0003\r\u0088\b\r\u0001\r\u0001\r\u0001\u000e\u0003\u000e\u008d\b\u000e"+
		"\u0001\u000e\u0001\u000e\u0001\u000e\u0005\u000e\u0092\b\u000e\n\u000e"+
		"\f\u000e\u0095\t\u000e\u0003\u000e\u0097\b\u000e\u0001\u000f\u0003\u000f"+
		"\u009a\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0004\u000f\u009f\b"+
		"\u000f\u000b\u000f\f\u000f\u00a0\u0003\u000f\u00a3\b\u000f\u0001\u0010"+
		"\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012"+
		"\u0005\u0012\u00ac\b\u0012\n\u0012\f\u0012\u00af\t\u0012\u0001\u0013\u0001"+
		"\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0000\u0000\u0015\u0000\u0002"+
		"\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e"+
		" \"$&(\u0000\u0005\u0002\u0000\u0011\u0011\u0013\u0014\u0002\u0000\u000e"+
		"\u000e\u001b\u001c\u0002\u0000\u000e\u000f\u001b\u001c\u0002\u0000\r\r"+
		"\u001d\u001d\u0001\u0000\u0017\u0019\u00b7\u00001\u0001\u0000\u0000\u0000"+
		"\u0002@\u0001\u0000\u0000\u0000\u0004B\u0001\u0000\u0000\u0000\u0006F"+
		"\u0001\u0000\u0000\u0000\bR\u0001\u0000\u0000\u0000\nX\u0001\u0000\u0000"+
		"\u0000\fc\u0001\u0000\u0000\u0000\u000ee\u0001\u0000\u0000\u0000\u0010"+
		"t\u0001\u0000\u0000\u0000\u0012v\u0001\u0000\u0000\u0000\u0014x\u0001"+
		"\u0000\u0000\u0000\u0016|\u0001\u0000\u0000\u0000\u0018\u0080\u0001\u0000"+
		"\u0000\u0000\u001a\u0084\u0001\u0000\u0000\u0000\u001c\u0096\u0001\u0000"+
		"\u0000\u0000\u001e\u00a2\u0001\u0000\u0000\u0000 \u00a4\u0001\u0000\u0000"+
		"\u0000\"\u00a6\u0001\u0000\u0000\u0000$\u00ad\u0001\u0000\u0000\u0000"+
		"&\u00b0\u0001\u0000\u0000\u0000(\u00b2\u0001\u0000\u0000\u0000*+\u0005"+
		"\u0013\u0000\u0000+,\u0005\u000b\u0000\u0000,2\u0003\u0002\u0001\u0000"+
		"-.\u0005\u0003\u0000\u0000./\u0003\u0002\u0001\u0000/0\u0005\u0004\u0000"+
		"\u000002\u0001\u0000\u0000\u00001*\u0001\u0000\u0000\u00001-\u0001\u0000"+
		"\u0000\u00002\u0001\u0001\u0000\u0000\u000037\u0003\u0004\u0002\u0000"+
		"45\u0003\"\u0011\u000056\u0003$\u0012\u000068\u0001\u0000\u0000\u0000"+
		"74\u0001\u0000\u0000\u000078\u0001\u0000\u0000\u00008A\u0001\u0000\u0000"+
		"\u00009=\u0003\u0006\u0003\u0000:=\u0003&\u0013\u0000;=\u0003(\u0014\u0000"+
		"<9\u0001\u0000\u0000\u0000<:\u0001\u0000\u0000\u0000<;\u0001\u0000\u0000"+
		"\u0000=>\u0001\u0000\u0000\u0000>?\u0003$\u0012\u0000?A\u0001\u0000\u0000"+
		"\u0000@3\u0001\u0000\u0000\u0000@<\u0001\u0000\u0000\u0000A\u0003\u0001"+
		"\u0000\u0000\u0000BC\u0005\u0005\u0000\u0000CD\u0003\b\u0004\u0000DE\u0005"+
		"\u0006\u0000\u0000E\u0005\u0001\u0000\u0000\u0000FG\u0007\u0000\u0000"+
		"\u0000G\u0007\u0001\u0000\u0000\u0000HJ\u0003\n\u0005\u0000IH\u0001\u0000"+
		"\u0000\u0000IJ\u0001\u0000\u0000\u0000JS\u0001\u0000\u0000\u0000KN\u0003"+
		"\n\u0005\u0000LM\u0005\n\u0000\u0000MO\u0003\n\u0005\u0000NL\u0001\u0000"+
		"\u0000\u0000OP\u0001\u0000\u0000\u0000PN\u0001\u0000\u0000\u0000PQ\u0001"+
		"\u0000\u0000\u0000QS\u0001\u0000\u0000\u0000RI\u0001\u0000\u0000\u0000"+
		"RK\u0001\u0000\u0000\u0000S\t\u0001\u0000\u0000\u0000TY\u0003\f\u0006"+
		"\u0000UY\u0003\u0014\n\u0000VY\u0003\u0016\u000b\u0000WY\u0003\u0018\f"+
		"\u0000XT\u0001\u0000\u0000\u0000XU\u0001\u0000\u0000\u0000XV\u0001\u0000"+
		"\u0000\u0000XW\u0001\u0000\u0000\u0000Y\u000b\u0001\u0000\u0000\u0000"+
		"Z[\u0003\u0012\t\u0000[\\\u0005\u000b\u0000\u0000\\]\u0003\u0002\u0001"+
		"\u0000]d\u0001\u0000\u0000\u0000^_\u0003\u0012\t\u0000_`\u0003\u000e\u0007"+
		"\u0000`a\u0005\u000b\u0000\u0000ab\u0003\u0004\u0002\u0000bd\u0001\u0000"+
		"\u0000\u0000cZ\u0001\u0000\u0000\u0000c^\u0001\u0000\u0000\u0000d\r\u0001"+
		"\u0000\u0000\u0000ep\u0005\u0007\u0000\u0000fh\u0003\u0010\b\u0000gf\u0001"+
		"\u0000\u0000\u0000gh\u0001\u0000\u0000\u0000hq\u0001\u0000\u0000\u0000"+
		"il\u0003\u0010\b\u0000jk\u0005\n\u0000\u0000km\u0003\u0010\b\u0000lj\u0001"+
		"\u0000\u0000\u0000mn\u0001\u0000\u0000\u0000nl\u0001\u0000\u0000\u0000"+
		"no\u0001\u0000\u0000\u0000oq\u0001\u0000\u0000\u0000pg\u0001\u0000\u0000"+
		"\u0000pi\u0001\u0000\u0000\u0000qr\u0001\u0000\u0000\u0000rs\u0005\b\u0000"+
		"\u0000s\u000f\u0001\u0000\u0000\u0000tu\u0007\u0001\u0000\u0000u\u0011"+
		"\u0001\u0000\u0000\u0000vw\u0007\u0002\u0000\u0000w\u0013\u0001\u0000"+
		"\u0000\u0000xy\u0003\u0012\t\u0000yz\u0005\u000b\u0000\u0000z{\u0005\r"+
		"\u0000\u0000{\u0015\u0001\u0000\u0000\u0000|}\u0005\u0010\u0000\u0000"+
		"}~\u0005\f\u0000\u0000~\u007f\u0007\u0003\u0000\u0000\u007f\u0017\u0001"+
		"\u0000\u0000\u0000\u0080\u0081\u0005\u0012\u0000\u0000\u0081\u0082\u0005"+
		"\f\u0000\u0000\u0082\u0083\u0005\u0002\u0000\u0000\u0083\u0019\u0001\u0000"+
		"\u0000\u0000\u0084\u0087\u0005\u0007\u0000\u0000\u0085\u0088\u0003\u001c"+
		"\u000e\u0000\u0086\u0088\u0003\u001e\u000f\u0000\u0087\u0085\u0001\u0000"+
		"\u0000\u0000\u0087\u0086\u0001\u0000\u0000\u0000\u0088\u0089\u0001\u0000"+
		"\u0000\u0000\u0089\u008a\u0005\b\u0000\u0000\u008a\u001b\u0001\u0000\u0000"+
		"\u0000\u008b\u008d\u0003\f\u0006\u0000\u008c\u008b\u0001\u0000\u0000\u0000"+
		"\u008c\u008d\u0001\u0000\u0000\u0000\u008d\u0097\u0001\u0000\u0000\u0000"+
		"\u008e\u0093\u0003\f\u0006\u0000\u008f\u0090\u0005\n\u0000\u0000\u0090"+
		"\u0092\u0003\f\u0006\u0000\u0091\u008f\u0001\u0000\u0000\u0000\u0092\u0095"+
		"\u0001\u0000\u0000\u0000\u0093\u0091\u0001\u0000\u0000\u0000\u0093\u0094"+
		"\u0001\u0000\u0000\u0000\u0094\u0097\u0001\u0000\u0000\u0000\u0095\u0093"+
		"\u0001\u0000\u0000\u0000\u0096\u008c\u0001\u0000\u0000\u0000\u0096\u008e"+
		"\u0001\u0000\u0000\u0000\u0097\u001d\u0001\u0000\u0000\u0000\u0098\u009a"+
		"\u0003 \u0010\u0000\u0099\u0098\u0001\u0000\u0000\u0000\u0099\u009a\u0001"+
		"\u0000\u0000\u0000\u009a\u00a3\u0001\u0000\u0000\u0000\u009b\u009e\u0003"+
		" \u0010\u0000\u009c\u009d\u0005\n\u0000\u0000\u009d\u009f\u0003 \u0010"+
		"\u0000\u009e\u009c\u0001\u0000\u0000\u0000\u009f\u00a0\u0001\u0000\u0000"+
		"\u0000\u00a0\u009e\u0001\u0000\u0000\u0000\u00a0\u00a1\u0001\u0000\u0000"+
		"\u0000\u00a1\u00a3\u0001\u0000\u0000\u0000\u00a2\u0099\u0001\u0000\u0000"+
		"\u0000\u00a2\u009b\u0001\u0000\u0000\u0000\u00a3\u001f\u0001\u0000\u0000"+
		"\u0000\u00a4\u00a5\u0003\u0002\u0001\u0000\u00a5!\u0001\u0000\u0000\u0000"+
		"\u00a6\u00a7\u0005\t\u0000\u0000\u00a7\u00a8\u0003\u0012\t\u0000\u00a8"+
		"#\u0001\u0000\u0000\u0000\u00a9\u00ac\u0003\u001a\r\u0000\u00aa\u00ac"+
		"\u0003\"\u0011\u0000\u00ab\u00a9\u0001\u0000\u0000\u0000\u00ab\u00aa\u0001"+
		"\u0000\u0000\u0000\u00ac\u00af\u0001\u0000\u0000\u0000\u00ad\u00ab\u0001"+
		"\u0000\u0000\u0000\u00ad\u00ae\u0001\u0000\u0000\u0000\u00ae%\u0001\u0000"+
		"\u0000\u0000\u00af\u00ad\u0001\u0000\u0000\u0000\u00b0\u00b1\u0005\u0015"+
		"\u0000\u0000\u00b1\'\u0001\u0000\u0000\u0000\u00b2\u00b3\u0007\u0004\u0000"+
		"\u0000\u00b3)\u0001\u0000\u0000\u0000\u001517<@IPRXcgnp\u0087\u008c\u0093"+
		"\u0096\u0099\u00a0\u00a2\u00ab\u00ad";
	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);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy