public final StatementContext statement()

in src/main/java/org/apache/sysds/parser/dml/DmlParser.java [497:1346]


	public final StatementContext statement() throws RecognitionException {
		StatementContext _localctx = new StatementContext(_ctx, getState());
		enterRule(_localctx, 2, RULE_statement);

		       // This actions occurs regardless of how many alternatives in this rule
		       ((StatementContext)_localctx).info =  new org.apache.sysds.parser.dml.StatementInfo();

		int _la;
		try {
			int _alt;
			setState(297);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,38,_ctx) ) {
			case 1:
				_localctx = new ImportStatementContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(37);
				match(T__0);
				setState(38);
				match(T__1);
				setState(39);
				((ImportStatementContext)_localctx).filePath = match(STRING);
				setState(40);
				match(T__2);
				setState(41);
				match(T__3);
				setState(42);
				((ImportStatementContext)_localctx).namespace = match(ID);
				setState(46);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,2,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(43);
						match(T__4);
						}
						} 
					}
					setState(48);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,2,_ctx);
				}
				}
				break;
			case 2:
				_localctx = new PathStatementContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(49);
				match(T__5);
				setState(50);
				match(T__1);
				setState(51);
				((PathStatementContext)_localctx).pathValue = match(STRING);
				setState(52);
				match(T__2);
				setState(56);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(53);
						match(T__4);
						}
						} 
					}
					setState(58);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
				}
				}
				break;
			case 3:
				_localctx = new FunctionCallAssignmentStatementContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(62);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
				case 1:
					{
					setState(59);
					((FunctionCallAssignmentStatementContext)_localctx).targetList = dataIdentifier();
					setState(60);
					_la = _input.LA(1);
					if ( !(_la==T__6 || _la==T__7) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				setState(64);
				((FunctionCallAssignmentStatementContext)_localctx).name = match(ID);
				setState(65);
				match(T__1);
				setState(74);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__9) | (1L << T__27) | (1L << T__28) | (1L << T__40) | (1L << T__45) | (1L << T__46) | (1L << ID) | (1L << INT) | (1L << DOUBLE))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (COMMANDLINE_NAMED_ID - 65)) | (1L << (COMMANDLINE_POSITION_ID - 65)) | (1L << (STRING - 65)))) != 0)) {
					{
					setState(66);
					((FunctionCallAssignmentStatementContext)_localctx).parameterizedExpression = parameterizedExpression();
					((FunctionCallAssignmentStatementContext)_localctx).paramExprs.add(((FunctionCallAssignmentStatementContext)_localctx).parameterizedExpression);
					setState(71);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==T__8) {
						{
						{
						setState(67);
						match(T__8);
						setState(68);
						((FunctionCallAssignmentStatementContext)_localctx).parameterizedExpression = parameterizedExpression();
						((FunctionCallAssignmentStatementContext)_localctx).paramExprs.add(((FunctionCallAssignmentStatementContext)_localctx).parameterizedExpression);
						}
						}
						setState(73);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(76);
				match(T__2);
				setState(80);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,7,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(77);
						match(T__4);
						}
						} 
					}
					setState(82);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,7,_ctx);
				}
				}
				break;
			case 4:
				_localctx = new FunctionCallMultiAssignmentStatementContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(83);
				match(T__9);
				setState(84);
				((FunctionCallMultiAssignmentStatementContext)_localctx).dataIdentifier = dataIdentifier();
				((FunctionCallMultiAssignmentStatementContext)_localctx).targetList.add(((FunctionCallMultiAssignmentStatementContext)_localctx).dataIdentifier);
				setState(89);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==T__8) {
					{
					{
					setState(85);
					match(T__8);
					setState(86);
					((FunctionCallMultiAssignmentStatementContext)_localctx).dataIdentifier = dataIdentifier();
					((FunctionCallMultiAssignmentStatementContext)_localctx).targetList.add(((FunctionCallMultiAssignmentStatementContext)_localctx).dataIdentifier);
					}
					}
					setState(91);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(92);
				match(T__10);
				setState(93);
				_la = _input.LA(1);
				if ( !(_la==T__6 || _la==T__7) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(94);
				((FunctionCallMultiAssignmentStatementContext)_localctx).name = match(ID);
				setState(95);
				match(T__1);
				setState(104);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__9) | (1L << T__27) | (1L << T__28) | (1L << T__40) | (1L << T__45) | (1L << T__46) | (1L << ID) | (1L << INT) | (1L << DOUBLE))) != 0) || ((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (COMMANDLINE_NAMED_ID - 65)) | (1L << (COMMANDLINE_POSITION_ID - 65)) | (1L << (STRING - 65)))) != 0)) {
					{
					setState(96);
					((FunctionCallMultiAssignmentStatementContext)_localctx).parameterizedExpression = parameterizedExpression();
					((FunctionCallMultiAssignmentStatementContext)_localctx).paramExprs.add(((FunctionCallMultiAssignmentStatementContext)_localctx).parameterizedExpression);
					setState(101);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==T__8) {
						{
						{
						setState(97);
						match(T__8);
						setState(98);
						((FunctionCallMultiAssignmentStatementContext)_localctx).parameterizedExpression = parameterizedExpression();
						((FunctionCallMultiAssignmentStatementContext)_localctx).paramExprs.add(((FunctionCallMultiAssignmentStatementContext)_localctx).parameterizedExpression);
						}
						}
						setState(103);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(106);
				match(T__2);
				setState(110);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,11,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(107);
						match(T__4);
						}
						} 
					}
					setState(112);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,11,_ctx);
				}
				}
				break;
			case 5:
				_localctx = new IfdefAssignmentStatementContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(113);
				((IfdefAssignmentStatementContext)_localctx).targetList = dataIdentifier();
				setState(114);
				((IfdefAssignmentStatementContext)_localctx).op = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==T__6 || _la==T__7) ) {
					((IfdefAssignmentStatementContext)_localctx).op = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(115);
				match(T__11);
				setState(116);
				match(T__1);
				setState(117);
				((IfdefAssignmentStatementContext)_localctx).commandLineParam = dataIdentifier();
				setState(118);
				match(T__8);
				setState(119);
				((IfdefAssignmentStatementContext)_localctx).source = expression(0);
				setState(120);
				match(T__2);
				setState(124);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,12,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(121);
						match(T__4);
						}
						} 
					}
					setState(126);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,12,_ctx);
				}
				}
				break;
			case 6:
				_localctx = new AssignmentStatementContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(127);
				((AssignmentStatementContext)_localctx).targetList = dataIdentifier();
				setState(128);
				((AssignmentStatementContext)_localctx).op = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==T__6 || _la==T__7) ) {
					((AssignmentStatementContext)_localctx).op = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(129);
				((AssignmentStatementContext)_localctx).source = expression(0);
				setState(133);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,13,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(130);
						match(T__4);
						}
						} 
					}
					setState(135);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,13,_ctx);
				}
				}
				break;
			case 7:
				_localctx = new AccumulatorAssignmentStatementContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(136);
				((AccumulatorAssignmentStatementContext)_localctx).targetList = dataIdentifier();
				setState(137);
				((AccumulatorAssignmentStatementContext)_localctx).op = match(T__12);
				setState(138);
				((AccumulatorAssignmentStatementContext)_localctx).source = expression(0);
				setState(142);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,14,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(139);
						match(T__4);
						}
						} 
					}
					setState(144);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,14,_ctx);
				}
				}
				break;
			case 8:
				_localctx = new IfStatementContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(145);
				match(T__13);
				setState(146);
				match(T__1);
				setState(147);
				((IfStatementContext)_localctx).predicate = expression(0);
				setState(148);
				match(T__2);
				setState(170);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case T__0:
				case T__5:
				case T__9:
				case T__13:
				case T__17:
				case T__19:
				case T__20:
				case ID:
				case COMMANDLINE_NAMED_ID:
				case COMMANDLINE_POSITION_ID:
					{
					setState(149);
					((IfStatementContext)_localctx).statement = statement();
					((IfStatementContext)_localctx).ifBody.add(((IfStatementContext)_localctx).statement);
					setState(153);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,15,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(150);
							match(T__4);
							}
							} 
						}
						setState(155);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,15,_ctx);
					}
					}
					break;
				case T__14:
					{
					setState(156);
					match(T__14);
					setState(166);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__5) | (1L << T__9) | (1L << T__13) | (1L << T__17) | (1L << T__19) | (1L << T__20) | (1L << ID))) != 0) || _la==COMMANDLINE_NAMED_ID || _la==COMMANDLINE_POSITION_ID) {
						{
						{
						setState(157);
						((IfStatementContext)_localctx).statement = statement();
						((IfStatementContext)_localctx).ifBody.add(((IfStatementContext)_localctx).statement);
						setState(161);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==T__4) {
							{
							{
							setState(158);
							match(T__4);
							}
							}
							setState(163);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						}
						}
						setState(168);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					setState(169);
					match(T__15);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(196);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) {
				case 1:
					{
					setState(172);
					match(T__16);
					setState(194);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case T__0:
					case T__5:
					case T__9:
					case T__13:
					case T__17:
					case T__19:
					case T__20:
					case ID:
					case COMMANDLINE_NAMED_ID:
					case COMMANDLINE_POSITION_ID:
						{
						setState(173);
						((IfStatementContext)_localctx).statement = statement();
						((IfStatementContext)_localctx).elseBody.add(((IfStatementContext)_localctx).statement);
						setState(177);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,19,_ctx);
						while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
							if ( _alt==1 ) {
								{
								{
								setState(174);
								match(T__4);
								}
								} 
							}
							setState(179);
							_errHandler.sync(this);
							_alt = getInterpreter().adaptivePredict(_input,19,_ctx);
						}
						}
						break;
					case T__14:
						{
						setState(180);
						match(T__14);
						setState(190);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__5) | (1L << T__9) | (1L << T__13) | (1L << T__17) | (1L << T__19) | (1L << T__20) | (1L << ID))) != 0) || _la==COMMANDLINE_NAMED_ID || _la==COMMANDLINE_POSITION_ID) {
							{
							{
							setState(181);
							((IfStatementContext)_localctx).statement = statement();
							((IfStatementContext)_localctx).elseBody.add(((IfStatementContext)_localctx).statement);
							setState(185);
							_errHandler.sync(this);
							_la = _input.LA(1);
							while (_la==T__4) {
								{
								{
								setState(182);
								match(T__4);
								}
								}
								setState(187);
								_errHandler.sync(this);
								_la = _input.LA(1);
							}
							}
							}
							setState(192);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						setState(193);
						match(T__15);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				}
				}
				break;
			case 9:
				_localctx = new ForStatementContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(198);
				match(T__17);
				setState(199);
				match(T__1);
				setState(200);
				((ForStatementContext)_localctx).iterVar = match(ID);
				setState(201);
				match(T__18);
				setState(202);
				((ForStatementContext)_localctx).iterPred = iterablePredicate();
				setState(207);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==T__8) {
					{
					{
					setState(203);
					match(T__8);
					setState(204);
					((ForStatementContext)_localctx).strictParameterizedExpression = strictParameterizedExpression();
					((ForStatementContext)_localctx).parForParams.add(((ForStatementContext)_localctx).strictParameterizedExpression);
					}
					}
					setState(209);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(210);
				match(T__2);
				setState(232);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case T__0:
				case T__5:
				case T__9:
				case T__13:
				case T__17:
				case T__19:
				case T__20:
				case ID:
				case COMMANDLINE_NAMED_ID:
				case COMMANDLINE_POSITION_ID:
					{
					setState(211);
					((ForStatementContext)_localctx).statement = statement();
					((ForStatementContext)_localctx).body.add(((ForStatementContext)_localctx).statement);
					setState(215);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,25,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(212);
							match(T__4);
							}
							} 
						}
						setState(217);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,25,_ctx);
					}
					}
					break;
				case T__14:
					{
					setState(218);
					match(T__14);
					setState(228);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__5) | (1L << T__9) | (1L << T__13) | (1L << T__17) | (1L << T__19) | (1L << T__20) | (1L << ID))) != 0) || _la==COMMANDLINE_NAMED_ID || _la==COMMANDLINE_POSITION_ID) {
						{
						{
						setState(219);
						((ForStatementContext)_localctx).statement = statement();
						((ForStatementContext)_localctx).body.add(((ForStatementContext)_localctx).statement);
						setState(223);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==T__4) {
							{
							{
							setState(220);
							match(T__4);
							}
							}
							setState(225);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						}
						}
						setState(230);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					setState(231);
					match(T__15);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 10:
				_localctx = new ParForStatementContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(234);
				match(T__19);
				setState(235);
				match(T__1);
				setState(236);
				((ParForStatementContext)_localctx).iterVar = match(ID);
				setState(237);
				match(T__18);
				setState(238);
				((ParForStatementContext)_localctx).iterPred = iterablePredicate();
				setState(243);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==T__8) {
					{
					{
					setState(239);
					match(T__8);
					setState(240);
					((ParForStatementContext)_localctx).strictParameterizedExpression = strictParameterizedExpression();
					((ParForStatementContext)_localctx).parForParams.add(((ParForStatementContext)_localctx).strictParameterizedExpression);
					}
					}
					setState(245);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(246);
				match(T__2);
				setState(268);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case T__0:
				case T__5:
				case T__9:
				case T__13:
				case T__17:
				case T__19:
				case T__20:
				case ID:
				case COMMANDLINE_NAMED_ID:
				case COMMANDLINE_POSITION_ID:
					{
					setState(247);
					((ParForStatementContext)_localctx).statement = statement();
					((ParForStatementContext)_localctx).body.add(((ParForStatementContext)_localctx).statement);
					setState(251);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,30,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(248);
							match(T__4);
							}
							} 
						}
						setState(253);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,30,_ctx);
					}
					}
					break;
				case T__14:
					{
					setState(254);
					match(T__14);
					setState(264);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__5) | (1L << T__9) | (1L << T__13) | (1L << T__17) | (1L << T__19) | (1L << T__20) | (1L << ID))) != 0) || _la==COMMANDLINE_NAMED_ID || _la==COMMANDLINE_POSITION_ID) {
						{
						{
						setState(255);
						((ParForStatementContext)_localctx).statement = statement();
						((ParForStatementContext)_localctx).body.add(((ParForStatementContext)_localctx).statement);
						setState(259);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==T__4) {
							{
							{
							setState(256);
							match(T__4);
							}
							}
							setState(261);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						}
						}
						setState(266);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					setState(267);
					match(T__15);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 11:
				_localctx = new WhileStatementContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(270);
				match(T__20);
				setState(271);
				match(T__1);
				setState(272);
				((WhileStatementContext)_localctx).predicate = expression(0);
				setState(273);
				match(T__2);
				setState(295);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case T__0:
				case T__5:
				case T__9:
				case T__13:
				case T__17:
				case T__19:
				case T__20:
				case ID:
				case COMMANDLINE_NAMED_ID:
				case COMMANDLINE_POSITION_ID:
					{
					setState(274);
					((WhileStatementContext)_localctx).statement = statement();
					((WhileStatementContext)_localctx).body.add(((WhileStatementContext)_localctx).statement);
					setState(278);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,34,_ctx);
					while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
						if ( _alt==1 ) {
							{
							{
							setState(275);
							match(T__4);
							}
							} 
						}
						setState(280);
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,34,_ctx);
					}
					}
					break;
				case T__14:
					{
					setState(281);
					match(T__14);
					setState(291);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__5) | (1L << T__9) | (1L << T__13) | (1L << T__17) | (1L << T__19) | (1L << T__20) | (1L << ID))) != 0) || _la==COMMANDLINE_NAMED_ID || _la==COMMANDLINE_POSITION_ID) {
						{
						{
						setState(282);
						((WhileStatementContext)_localctx).statement = statement();
						((WhileStatementContext)_localctx).body.add(((WhileStatementContext)_localctx).statement);
						setState(286);
						_errHandler.sync(this);
						_la = _input.LA(1);
						while (_la==T__4) {
							{
							{
							setState(283);
							match(T__4);
							}
							}
							setState(288);
							_errHandler.sync(this);
							_la = _input.LA(1);
						}
						}
						}
						setState(293);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					setState(294);
					match(T__15);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}