FortranParserExtras.java

package fortran.ofp.parser.java;
import fortran.ofp.parser.java.IActionEnums;

// $ANTLR 3.5.2 FortranParserExtras.g 2015-08-19 12:28:41

import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;

/**
 * FortranParserExtras.g - this file is needed because adding more rules to FortranParser08
 * currently will cause javac to fail with a "Code too large" error.  Removing some of
 * the rules to an inherited grammar is a workaround to the problem.
 */
@SuppressWarnings("all")
public class FortranParserExtras extends FortranParser {
	public static final String[] tokenNames = new String[] {
		"<invalid>", "<EOR>", "<DOWN>", "<UP>", "Alphanumeric_Character", "BINARY_CONSTANT", 
		"CONTINUE_CHAR", "DQ_Rep_Char", "Digit", "Digit_String", "HEX_CONSTANT", 
		"LINE_COMMENT", "Letter", "MISC_CHAR", "OCTAL_CONSTANT", "PREPROCESS_LINE", 
		"Rep_Char", "SQ_Rep_Char", "Special_Character", "T_ABSTRACT", "T_ACQUIRED_LOCK", 
		"T_ALL", "T_ALLOCATABLE", "T_ALLOCATE", "T_ALLOCATE_STMT_1", "T_AND", 
		"T_ARITHMETIC_IF_STMT", "T_ASSIGN", "T_ASSIGNMENT", "T_ASSIGNMENT_STMT", 
		"T_ASSOCIATE", "T_ASTERISK", "T_ASYNCHRONOUS", "T_AT", "T_BACKSPACE", 
		"T_BEGIN_KEYWORDS", "T_BIND", "T_BLOCK", "T_BLOCKDATA", "T_CALL", "T_CASE", 
		"T_CHARACTER", "T_CHAR_CONSTANT", "T_CHAR_STRING_EDIT_DESC", "T_CLASS", 
		"T_CLOSE", "T_CODIMENSION", "T_COLON", "T_COLON_COLON", "T_COMMA", "T_COMMON", 
		"T_COMPLEX", "T_CONCURRENT", "T_CONTAINS", "T_CONTIGUOUS", "T_CONTINUE", 
		"T_CONTROL_EDIT_DESC", "T_COPOINTER", "T_COTARGET", "T_CRITICAL", "T_CYCLE", 
		"T_DATA", "T_DATA_EDIT_DESC", "T_DEALLOCATE", "T_DEFAULT", "T_DEFERRED", 
		"T_DEFINED_OP", "T_DIGIT_STRING", "T_DIMENSION", "T_DO", "T_DOUBLE", "T_DOUBLECOMPLEX", 
		"T_DOUBLEPRECISION", "T_EDIT_DESC_MISC", "T_ELEMENTAL", "T_ELSE", "T_ELSEIF", 
		"T_ELSEWHERE", "T_END", "T_ENDASSOCIATE", "T_ENDBLOCK", "T_ENDBLOCKDATA", 
		"T_ENDCRITICAL", "T_ENDDO", "T_ENDENUM", "T_ENDFILE", "T_ENDFORALL", "T_ENDFUNCTION", 
		"T_ENDIF", "T_ENDINTERFACE", "T_ENDMODULE", "T_ENDPROCEDURE", "T_ENDPROGRAM", 
		"T_ENDSELECT", "T_ENDSUBMODULE", "T_ENDSUBROUTINE", "T_ENDTYPE", "T_ENDWHERE", 
		"T_END_KEYWORDS", "T_ENTRY", "T_ENUM", "T_ENUMERATOR", "T_EOF", "T_EOS", 
		"T_EQ", "T_EQUALS", "T_EQUIVALENCE", "T_EQV", "T_EQ_EQ", "T_EQ_GT", "T_ERROR", 
		"T_EVENT", "T_EXIT", "T_EXTENDS", "T_EXTERNAL", "T_FALSE", "T_FILE", "T_FINAL", 
		"T_FINISH", "T_FLUSH", "T_FORALL", "T_FORALL_CONSTRUCT_STMT", "T_FORALL_STMT", 
		"T_FORMAT", "T_FORMATTED", "T_FUNCTION", "T_GE", "T_GENERIC", "T_GO", 
		"T_GOTO", "T_GREATERTHAN", "T_GREATERTHAN_EQ", "T_GT", "T_HOLLERITH", 
		"T_IDENT", "T_IF", "T_IF_STMT", "T_IMAGES", "T_IMPLICIT", "T_IMPORT", 
		"T_IN", "T_INCLUDE", "T_INCLUDE_NAME", "T_INOUT", "T_INQUIRE", "T_INQUIRE_STMT_2", 
		"T_INTEGER", "T_INTENT", "T_INTERFACE", "T_INTRINSIC", "T_KIND", "T_LABEL_DO_TERMINAL", 
		"T_LBRACKET", "T_LE", "T_LEN", "T_LESSTHAN", "T_LESSTHAN_EQ", "T_LOCK", 
		"T_LOCKSET", "T_LOGICAL", "T_LPAREN", "T_LT", "T_MEMORY", "T_MINUS", "T_MODULE", 
		"T_NAMELIST", "T_NE", "T_NEQV", "T_NONE", "T_NON_INTRINSIC", "T_NON_OVERRIDABLE", 
		"T_NOPASS", "T_NOT", "T_NO_LANGUAGE_EXTENSION", "T_NULLIFY", "T_ONLY", 
		"T_OPEN", "T_OPERATOR", "T_OPTIONAL", "T_OR", "T_OUT", "T_PARAMETER", 
		"T_PASS", "T_PAUSE", "T_PERCENT", "T_PERIOD", "T_PERIOD_EXPONENT", "T_PLUS", 
		"T_POINTER", "T_POWER", "T_PRECISION", "T_PRINT", "T_PRIVATE", "T_PROCEDURE", 
		"T_PROGRAM", "T_PROTECTED", "T_PTR_ASSIGNMENT_STMT", "T_PUBLIC", "T_PURE", 
		"T_RBRACKET", "T_READ", "T_REAL", "T_REAL_CONSTANT", "T_RECURSIVE", "T_RESULT", 
		"T_RETURN", "T_REWIND", "T_RPAREN", "T_SAVE", "T_SELECT", "T_SELECTCASE", 
		"T_SELECTTYPE", "T_SEQUENCE", "T_SLASH", "T_SLASH_EQ", "T_SLASH_SLASH", 
		"T_SPAWN", "T_STMT_FUNCTION", "T_STOP", "T_SUBMODULE", "T_SUBROUTINE", 
		"T_SYNC", "T_TARGET", "T_TEAM", "T_THEN", "T_TO", "T_TOPOLOGY", "T_TRUE", 
		"T_TYPE", "T_UNDERSCORE", "T_UNFORMATTED", "T_UNLOCK", "T_USE", "T_VALUE", 
		"T_VOLATILE", "T_WAIT", "T_WHERE", "T_WHERE_CONSTRUCT_STMT", "T_WHERE_STMT", 
		"T_WHILE", "T_WITH", "T_WITHTEAM", "T_WRITE", "WS", "244", "245", "246", 
		"247", "248", "249", "250", "251", "252", "253", "254", "255", "256", 
		"257", "258", "259", "260", "261", "262", "263", "264", "265", "266", 
		"267", "268", "269", "270", "271", "272", "273", "274", "275", "276", 
		"277", "278", "279", "280", "281", "282", "283", "284", "285", "286", 
		"287", "288", "289", "290", "291", "292", "293", "294", "295", "296", 
		"297", "298", "299", "300", "301", "302", "303", "304", "305", "306", 
		"307", "308", "309", "310", "311", "312", "313", "314", "315", "316", 
		"317", "318", "319", "320", "321", "322", "323", "324", "325", "326", 
		"327", "328", "329", "330", "331", "332", "333", "334", "335", "336", 
		"337", "338", "339", "340", "341", "342", "343", "344", "345", "346", 
		"347", "348", "349", "350", "351", "352", "353", "354", "355", "356", 
		"357", "358", "359", "360", "361", "362", "363", "364", "365", "366", 
		"367", "368", "369", "370", "371", "372", "373", "374", "375", "376", 
		"377", "378", "379", "380", "381", "382", "383", "384", "385", "386", 
		"387", "388", "389", "390", "391", "392", "393", "394", "395", "396", 
		"397", "398", "399", "400", "401", "402", "403", "404", "405", "406", 
		"407", "408", "409", "410", "411", "412", "413", "414", "415", "416", 
		"417", "418", "419", "420", "421", "422", "423", "424", "425", "426", 
		"427", "428", "429", "430", "431", "432", "433", "434", "435", "436", 
		"437", "438", "439", "440", "441", "442", "443", "444", "445", "446", 
		"447", "448", "449"
	};
	public static final int EOF=-1;
	public static final int Alphanumeric_Character=4;
	public static final int BINARY_CONSTANT=5;
	public static final int CONTINUE_CHAR=6;
	public static final int DQ_Rep_Char=7;
	public static final int Digit=8;
	public static final int Digit_String=9;
	public static final int HEX_CONSTANT=10;
	public static final int LINE_COMMENT=11;
	public static final int Letter=12;
	public static final int MISC_CHAR=13;
	public static final int OCTAL_CONSTANT=14;
	public static final int PREPROCESS_LINE=15;
	public static final int Rep_Char=16;
	public static final int SQ_Rep_Char=17;
	public static final int Special_Character=18;
	public static final int T_ABSTRACT=19;
	public static final int T_ACQUIRED_LOCK=20;
	public static final int T_ALL=21;
	public static final int T_ALLOCATABLE=22;
	public static final int T_ALLOCATE=23;
	public static final int T_ALLOCATE_STMT_1=24;
	public static final int T_AND=25;
	public static final int T_ARITHMETIC_IF_STMT=26;
	public static final int T_ASSIGN=27;
	public static final int T_ASSIGNMENT=28;
	public static final int T_ASSIGNMENT_STMT=29;
	public static final int T_ASSOCIATE=30;
	public static final int T_ASTERISK=31;
	public static final int T_ASYNCHRONOUS=32;
	public static final int T_AT=33;
	public static final int T_BACKSPACE=34;
	public static final int T_BEGIN_KEYWORDS=35;
	public static final int T_BIND=36;
	public static final int T_BLOCK=37;
	public static final int T_BLOCKDATA=38;
	public static final int T_CALL=39;
	public static final int T_CASE=40;
	public static final int T_CHARACTER=41;
	public static final int T_CHAR_CONSTANT=42;
	public static final int T_CHAR_STRING_EDIT_DESC=43;
	public static final int T_CLASS=44;
	public static final int T_CLOSE=45;
	public static final int T_CODIMENSION=46;
	public static final int T_COLON=47;
	public static final int T_COLON_COLON=48;
	public static final int T_COMMA=49;
	public static final int T_COMMON=50;
	public static final int T_COMPLEX=51;
	public static final int T_CONCURRENT=52;
	public static final int T_CONTAINS=53;
	public static final int T_CONTIGUOUS=54;
	public static final int T_CONTINUE=55;
	public static final int T_CONTROL_EDIT_DESC=56;
	public static final int T_COPOINTER=57;
	public static final int T_COTARGET=58;
	public static final int T_CRITICAL=59;
	public static final int T_CYCLE=60;
	public static final int T_DATA=61;
	public static final int T_DATA_EDIT_DESC=62;
	public static final int T_DEALLOCATE=63;
	public static final int T_DEFAULT=64;
	public static final int T_DEFERRED=65;
	public static final int T_DEFINED_OP=66;
	public static final int T_DIGIT_STRING=67;
	public static final int T_DIMENSION=68;
	public static final int T_DO=69;
	public static final int T_DOUBLE=70;
	public static final int T_DOUBLECOMPLEX=71;
	public static final int T_DOUBLEPRECISION=72;
	public static final int T_EDIT_DESC_MISC=73;
	public static final int T_ELEMENTAL=74;
	public static final int T_ELSE=75;
	public static final int T_ELSEIF=76;
	public static final int T_ELSEWHERE=77;
	public static final int T_END=78;
	public static final int T_ENDASSOCIATE=79;
	public static final int T_ENDBLOCK=80;
	public static final int T_ENDBLOCKDATA=81;
	public static final int T_ENDCRITICAL=82;
	public static final int T_ENDDO=83;
	public static final int T_ENDENUM=84;
	public static final int T_ENDFILE=85;
	public static final int T_ENDFORALL=86;
	public static final int T_ENDFUNCTION=87;
	public static final int T_ENDIF=88;
	public static final int T_ENDINTERFACE=89;
	public static final int T_ENDMODULE=90;
	public static final int T_ENDPROCEDURE=91;
	public static final int T_ENDPROGRAM=92;
	public static final int T_ENDSELECT=93;
	public static final int T_ENDSUBMODULE=94;
	public static final int T_ENDSUBROUTINE=95;
	public static final int T_ENDTYPE=96;
	public static final int T_ENDWHERE=97;
	public static final int T_END_KEYWORDS=98;
	public static final int T_ENTRY=99;
	public static final int T_ENUM=100;
	public static final int T_ENUMERATOR=101;
	public static final int T_EOF=102;
	public static final int T_EOS=103;
	public static final int T_EQ=104;
	public static final int T_EQUALS=105;
	public static final int T_EQUIVALENCE=106;
	public static final int T_EQV=107;
	public static final int T_EQ_EQ=108;
	public static final int T_EQ_GT=109;
	public static final int T_ERROR=110;
	public static final int T_EVENT=111;
	public static final int T_EXIT=112;
	public static final int T_EXTENDS=113;
	public static final int T_EXTERNAL=114;
	public static final int T_FALSE=115;
	public static final int T_FILE=116;
	public static final int T_FINAL=117;
	public static final int T_FINISH=118;
	public static final int T_FLUSH=119;
	public static final int T_FORALL=120;
	public static final int T_FORALL_CONSTRUCT_STMT=121;
	public static final int T_FORALL_STMT=122;
	public static final int T_FORMAT=123;
	public static final int T_FORMATTED=124;
	public static final int T_FUNCTION=125;
	public static final int T_GE=126;
	public static final int T_GENERIC=127;
	public static final int T_GO=128;
	public static final int T_GOTO=129;
	public static final int T_GREATERTHAN=130;
	public static final int T_GREATERTHAN_EQ=131;
	public static final int T_GT=132;
	public static final int T_HOLLERITH=133;
	public static final int T_IDENT=134;
	public static final int T_IF=135;
	public static final int T_IF_STMT=136;
	public static final int T_IMAGES=137;
	public static final int T_IMPLICIT=138;
	public static final int T_IMPORT=139;
	public static final int T_IN=140;
	public static final int T_INCLUDE=141;
	public static final int T_INCLUDE_NAME=142;
	public static final int T_INOUT=143;
	public static final int T_INQUIRE=144;
	public static final int T_INQUIRE_STMT_2=145;
	public static final int T_INTEGER=146;
	public static final int T_INTENT=147;
	public static final int T_INTERFACE=148;
	public static final int T_INTRINSIC=149;
	public static final int T_KIND=150;
	public static final int T_LABEL_DO_TERMINAL=151;
	public static final int T_LBRACKET=152;
	public static final int T_LE=153;
	public static final int T_LEN=154;
	public static final int T_LESSTHAN=155;
	public static final int T_LESSTHAN_EQ=156;
	public static final int T_LOCK=157;
	public static final int T_LOCKSET=158;
	public static final int T_LOGICAL=159;
	public static final int T_LPAREN=160;
	public static final int T_LT=161;
	public static final int T_MEMORY=162;
	public static final int T_MINUS=163;
	public static final int T_MODULE=164;
	public static final int T_NAMELIST=165;
	public static final int T_NE=166;
	public static final int T_NEQV=167;
	public static final int T_NONE=168;
	public static final int T_NON_INTRINSIC=169;
	public static final int T_NON_OVERRIDABLE=170;
	public static final int T_NOPASS=171;
	public static final int T_NOT=172;
	public static final int T_NO_LANGUAGE_EXTENSION=173;
	public static final int T_NULLIFY=174;
	public static final int T_ONLY=175;
	public static final int T_OPEN=176;
	public static final int T_OPERATOR=177;
	public static final int T_OPTIONAL=178;
	public static final int T_OR=179;
	public static final int T_OUT=180;
	public static final int T_PARAMETER=181;
	public static final int T_PASS=182;
	public static final int T_PAUSE=183;
	public static final int T_PERCENT=184;
	public static final int T_PERIOD=185;
	public static final int T_PERIOD_EXPONENT=186;
	public static final int T_PLUS=187;
	public static final int T_POINTER=188;
	public static final int T_POWER=189;
	public static final int T_PRECISION=190;
	public static final int T_PRINT=191;
	public static final int T_PRIVATE=192;
	public static final int T_PROCEDURE=193;
	public static final int T_PROGRAM=194;
	public static final int T_PROTECTED=195;
	public static final int T_PTR_ASSIGNMENT_STMT=196;
	public static final int T_PUBLIC=197;
	public static final int T_PURE=198;
	public static final int T_RBRACKET=199;
	public static final int T_READ=200;
	public static final int T_REAL=201;
	public static final int T_REAL_CONSTANT=202;
	public static final int T_RECURSIVE=203;
	public static final int T_RESULT=204;
	public static final int T_RETURN=205;
	public static final int T_REWIND=206;
	public static final int T_RPAREN=207;
	public static final int T_SAVE=208;
	public static final int T_SELECT=209;
	public static final int T_SELECTCASE=210;
	public static final int T_SELECTTYPE=211;
	public static final int T_SEQUENCE=212;
	public static final int T_SLASH=213;
	public static final int T_SLASH_EQ=214;
	public static final int T_SLASH_SLASH=215;
	public static final int T_SPAWN=216;
	public static final int T_STMT_FUNCTION=217;
	public static final int T_STOP=218;
	public static final int T_SUBMODULE=219;
	public static final int T_SUBROUTINE=220;
	public static final int T_SYNC=221;
	public static final int T_TARGET=222;
	public static final int T_TEAM=223;
	public static final int T_THEN=224;
	public static final int T_TO=225;
	public static final int T_TOPOLOGY=226;
	public static final int T_TRUE=227;
	public static final int T_TYPE=228;
	public static final int T_UNDERSCORE=229;
	public static final int T_UNFORMATTED=230;
	public static final int T_UNLOCK=231;
	public static final int T_USE=232;
	public static final int T_VALUE=233;
	public static final int T_VOLATILE=234;
	public static final int T_WAIT=235;
	public static final int T_WHERE=236;
	public static final int T_WHERE_CONSTRUCT_STMT=237;
	public static final int T_WHERE_STMT=238;
	public static final int T_WHILE=239;
	public static final int T_WITH=240;
	public static final int T_WITHTEAM=241;
	public static final int T_WRITE=242;
	public static final int WS=243;

	// delegates
	public FortranParserExtras_FortranParser08 gFortranParser08;
	public FortranParser[] getDelegates() {
		return new FortranParser[] {gFortranParser08};
	}

	// delegators


	public FortranParserExtras(TokenStream input) {
		this(input, new RecognizerSharedState());
	}
	public FortranParserExtras(TokenStream input, RecognizerSharedState state) {
		super(input, state);
		gFortranParser08 = new FortranParserExtras_FortranParser08(input, state, this);
	}

	@Override public String[] getTokenNames() { return FortranParserExtras.tokenNames; }
	@Override public String getGrammarFileName() { return "FortranParserExtras.g"; }


	   int gCount1;
	   int gCount2;

	   public void initialize(String[] args, String kind, String filename, String path) {
	      action = FortranParserActionFactory.newAction(args, this, kind, filename);

	      initialize(this, action, filename, path);
	      gFortranParser08.initialize(this, action, filename, path);

	      action.start_of_file(filename, path);
	   }

	   public void eofAction() {
	      gFortranParser08.eofAction();
	   }




	// $ANTLR start "specification_part"
	// FortranParserExtras.g:71:1: specification_part : ( use_stmt )* ( import_stmt )* implicit_part_recursion ( declaration_construct )* ;
	public final void specification_part() throws RecognitionException {
		int numUseStmts=0; int numImportStmts=0; gCount1=0; gCount2=0;
		try {
			// FortranParserExtras.g:73:4: ( ( use_stmt )* ( import_stmt )* implicit_part_recursion ( declaration_construct )* )
			// FortranParserExtras.g:73:8: ( use_stmt )* ( import_stmt )* implicit_part_recursion ( declaration_construct )*
			{
			// FortranParserExtras.g:73:8: ( use_stmt )*
			loop1:
			while (true) {
				int alt1=2;
				int LA1_0 = input.LA(1);
				if ( (LA1_0==T_DIGIT_STRING) ) {
					int LA1_1 = input.LA(2);
					if ( (LA1_1==T_USE) ) {
						alt1=1;
					}

				}
				else if ( (LA1_0==T_USE) ) {
					alt1=1;
				}

				switch (alt1) {
				case 1 :
					// FortranParserExtras.g:73:10: use_stmt
					{
					pushFollow(FOLLOW_use_stmt_in_specification_part92);
					use_stmt();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) {numUseStmts++;}
					}
					break;

				default :
					break loop1;
				}
			}

			// FortranParserExtras.g:74:8: ( import_stmt )*
			loop2:
			while (true) {
				int alt2=2;
				int LA2_0 = input.LA(1);
				if ( (LA2_0==T_DIGIT_STRING) ) {
					int LA2_1 = input.LA(2);
					if ( (LA2_1==T_IMPORT) ) {
						alt2=1;
					}

				}
				else if ( (LA2_0==T_IMPORT) ) {
					alt2=1;
				}

				switch (alt2) {
				case 1 :
					// FortranParserExtras.g:74:10: import_stmt
					{
					pushFollow(FOLLOW_import_stmt_in_specification_part108);
					import_stmt();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) {numImportStmts++;}
					}
					break;

				default :
					break loop2;
				}
			}

			pushFollow(FOLLOW_implicit_part_recursion_in_specification_part122);
			implicit_part_recursion();
			state._fsp--;
			if (state.failed) return;
			// FortranParserExtras.g:76:8: ( declaration_construct )*
			loop3:
			while (true) {
				int alt3=2;
				int LA3_0 = input.LA(1);
				if ( (LA3_0==T_DIGIT_STRING) ) {
					int LA3_1 = input.LA(2);
					if ( (LA3_1==T_ABSTRACT||LA3_1==T_ALLOCATABLE||LA3_1==T_ASYNCHRONOUS||LA3_1==T_BIND||LA3_1==T_CHARACTER||LA3_1==T_CLASS||LA3_1==T_CODIMENSION||(LA3_1 >= T_COMMON && LA3_1 <= T_COMPLEX)||LA3_1==T_DATA||LA3_1==T_DIMENSION||(LA3_1 >= T_DOUBLE && LA3_1 <= T_DOUBLEPRECISION)||(LA3_1 >= T_ENTRY && LA3_1 <= T_ENUM)||LA3_1==T_EQUIVALENCE||LA3_1==T_EXTERNAL||LA3_1==T_FORMAT||(LA3_1 >= T_INTEGER && LA3_1 <= T_INTRINSIC)||LA3_1==T_LOGICAL||LA3_1==T_NAMELIST||LA3_1==T_OPTIONAL||LA3_1==T_PARAMETER||LA3_1==T_POINTER||(LA3_1 >= T_PRIVATE && LA3_1 <= T_PROCEDURE)||LA3_1==T_PROTECTED||LA3_1==T_PUBLIC||LA3_1==T_REAL||LA3_1==T_SAVE||LA3_1==T_STMT_FUNCTION||LA3_1==T_TARGET||LA3_1==T_TYPE||(LA3_1 >= T_VALUE && LA3_1 <= T_VOLATILE)) ) {
						alt3=1;
					}

				}
				else if ( (LA3_0==T_ABSTRACT||LA3_0==T_ALLOCATABLE||LA3_0==T_ASYNCHRONOUS||LA3_0==T_BIND||LA3_0==T_CHARACTER||LA3_0==T_CLASS||LA3_0==T_CODIMENSION||(LA3_0 >= T_COMMON && LA3_0 <= T_COMPLEX)||LA3_0==T_DATA||LA3_0==T_DIMENSION||(LA3_0 >= T_DOUBLE && LA3_0 <= T_DOUBLEPRECISION)||(LA3_0 >= T_ENTRY && LA3_0 <= T_ENUM)||LA3_0==T_EQUIVALENCE||LA3_0==T_EXTERNAL||LA3_0==T_FORMAT||(LA3_0 >= T_INTEGER && LA3_0 <= T_INTRINSIC)||LA3_0==T_LOGICAL||LA3_0==T_NAMELIST||LA3_0==T_OPTIONAL||LA3_0==T_PARAMETER||LA3_0==T_POINTER||(LA3_0 >= T_PRIVATE && LA3_0 <= T_PROCEDURE)||LA3_0==T_PROTECTED||LA3_0==T_PUBLIC||LA3_0==T_REAL||LA3_0==T_SAVE||LA3_0==T_STMT_FUNCTION||LA3_0==T_TARGET||LA3_0==T_TYPE||(LA3_0 >= T_VALUE && LA3_0 <= T_VOLATILE)) ) {
					alt3=1;
				}

				switch (alt3) {
				case 1 :
					// FortranParserExtras.g:76:10: declaration_construct
					{
					pushFollow(FOLLOW_declaration_construct_in_specification_part134);
					declaration_construct();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) {gCount2++;}
					}
					break;

				default :
					break loop3;
				}
			}

			if ( state.backtracking==0 ) {action.specification_part(numUseStmts, numImportStmts, gCount1, gCount2);}
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "specification_part"



	// $ANTLR start "implicit_part_recursion"
	// FortranParserExtras.g:96:1: implicit_part_recursion : ( ( ( label )? T_IMPLICIT )=> implicit_stmt implicit_part_recursion | ( ( label )? T_PARAMETER )=> parameter_stmt implicit_part_recursion | ( ( label )? T_FORMAT )=> format_stmt implicit_part_recursion | ( ( label )? T_ENTRY )=> entry_stmt implicit_part_recursion |);
	public final void implicit_part_recursion() throws RecognitionException {
		try {
			// FortranParserExtras.g:97:4: ( ( ( label )? T_IMPLICIT )=> implicit_stmt implicit_part_recursion | ( ( label )? T_PARAMETER )=> parameter_stmt implicit_part_recursion | ( ( label )? T_FORMAT )=> format_stmt implicit_part_recursion | ( ( label )? T_ENTRY )=> entry_stmt implicit_part_recursion |)
			int alt4=5;
			alt4 = dfa4.predict(input);
			switch (alt4) {
				case 1 :
					// FortranParserExtras.g:97:8: ( ( label )? T_IMPLICIT )=> implicit_stmt implicit_part_recursion
					{
					pushFollow(FOLLOW_implicit_stmt_in_implicit_part_recursion191);
					implicit_stmt();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) {gCount1++;}
					pushFollow(FOLLOW_implicit_part_recursion_in_implicit_part_recursion196);
					implicit_part_recursion();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 2 :
					// FortranParserExtras.g:98:8: ( ( label )? T_PARAMETER )=> parameter_stmt implicit_part_recursion
					{
					pushFollow(FOLLOW_parameter_stmt_in_implicit_part_recursion216);
					parameter_stmt();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) {gCount2++;}
					pushFollow(FOLLOW_implicit_part_recursion_in_implicit_part_recursion220);
					implicit_part_recursion();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 3 :
					// FortranParserExtras.g:99:8: ( ( label )? T_FORMAT )=> format_stmt implicit_part_recursion
					{
					pushFollow(FOLLOW_format_stmt_in_implicit_part_recursion243);
					format_stmt();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) {gCount2++;}
					pushFollow(FOLLOW_implicit_part_recursion_in_implicit_part_recursion250);
					implicit_part_recursion();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 4 :
					// FortranParserExtras.g:100:8: ( ( label )? T_ENTRY )=> entry_stmt implicit_part_recursion
					{
					pushFollow(FOLLOW_entry_stmt_in_implicit_part_recursion274);
					entry_stmt();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) {gCount2++;}
					pushFollow(FOLLOW_implicit_part_recursion_in_implicit_part_recursion282);
					implicit_part_recursion();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 5 :
					// FortranParserExtras.g:102:4: 
					{
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "implicit_part_recursion"



	// $ANTLR start "executable_construct"
	// FortranParserExtras.g:121:1: executable_construct : ( action_stmt | associate_construct | block_construct | case_construct | critical_construct | do_construct | forall_construct | if_construct | select_type_construct | where_construct );
	public final void executable_construct() throws RecognitionException {
		try {
			// FortranParserExtras.g:123:4: ( action_stmt | associate_construct | block_construct | case_construct | critical_construct | do_construct | forall_construct | if_construct | select_type_construct | where_construct )
			int alt5=10;
			switch ( input.LA(1) ) {
			case T_DIGIT_STRING:
				{
				switch ( input.LA(2) ) {
				case T_ALLOCATE:
				case T_ALLOCATE_STMT_1:
				case T_ARITHMETIC_IF_STMT:
				case T_ASSIGN:
				case T_ASSIGNMENT_STMT:
				case T_BACKSPACE:
				case T_CALL:
				case T_CLOSE:
				case T_CONTINUE:
				case T_CYCLE:
				case T_DEALLOCATE:
				case T_END:
				case T_ENDFILE:
				case T_ERROR:
				case T_EXIT:
				case T_FLUSH:
				case T_FORALL_STMT:
				case T_GO:
				case T_GOTO:
				case T_IF_STMT:
				case T_INQUIRE:
				case T_INQUIRE_STMT_2:
				case T_LOCK:
				case T_NULLIFY:
				case T_OPEN:
				case T_PAUSE:
				case T_PRINT:
				case T_PTR_ASSIGNMENT_STMT:
				case T_READ:
				case T_RETURN:
				case T_REWIND:
				case T_STOP:
				case T_SYNC:
				case T_UNLOCK:
				case T_WAIT:
				case T_WHERE_STMT:
				case T_WRITE:
					{
					alt5=1;
					}
					break;
				case T_IDENT:
					{
					int LA5_14 = input.LA(3);
					if ( (LA5_14==T_COLON) ) {
						switch ( input.LA(4) ) {
						case T_ASSOCIATE:
							{
							alt5=2;
							}
							break;
						case T_BLOCK:
							{
							alt5=3;
							}
							break;
						case T_SELECT:
							{
							int LA5_6 = input.LA(5);
							if ( (LA5_6==T_CASE) ) {
								alt5=4;
							}
							else if ( (LA5_6==T_TYPE) ) {
								alt5=9;
							}

							else {
								if (state.backtracking>0) {state.failed=true; return;}
								int nvaeMark = input.mark();
								try {
									for (int nvaeConsume = 0; nvaeConsume < 5 - 1; nvaeConsume++) {
										input.consume();
									}
									NoViableAltException nvae =
										new NoViableAltException("", 5, 6, input);
									throw nvae;
								} finally {
									input.rewind(nvaeMark);
								}
							}

							}
							break;
						case T_SELECTCASE:
							{
							alt5=4;
							}
							break;
						case T_CRITICAL:
							{
							alt5=5;
							}
							break;
						case T_DO:
							{
							alt5=6;
							}
							break;
						case T_FORALL_CONSTRUCT_STMT:
							{
							alt5=7;
							}
							break;
						case T_IF:
							{
							alt5=8;
							}
							break;
						case T_SELECTTYPE:
							{
							alt5=9;
							}
							break;
						default:
							if (state.backtracking>0) {state.failed=true; return;}
							int nvaeMark = input.mark();
							try {
								for (int nvaeConsume = 0; nvaeConsume < 4 - 1; nvaeConsume++) {
									input.consume();
								}
								NoViableAltException nvae =
									new NoViableAltException("", 5, 16, input);
								throw nvae;
							} finally {
								input.rewind(nvaeMark);
							}
						}
					}

					else {
						if (state.backtracking>0) {state.failed=true; return;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 5, 14, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}

					}
					break;
				case T_ASSOCIATE:
					{
					alt5=2;
					}
					break;
				case T_BLOCK:
					{
					alt5=3;
					}
					break;
				case T_SELECT:
					{
					int LA5_6 = input.LA(3);
					if ( (LA5_6==T_CASE) ) {
						alt5=4;
					}
					else if ( (LA5_6==T_TYPE) ) {
						alt5=9;
					}

					else {
						if (state.backtracking>0) {state.failed=true; return;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 5, 6, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}

					}
					break;
				case T_SELECTCASE:
					{
					alt5=4;
					}
					break;
				case T_CRITICAL:
					{
					alt5=5;
					}
					break;
				case T_DO:
					{
					alt5=6;
					}
					break;
				case T_FORALL_CONSTRUCT_STMT:
					{
					alt5=7;
					}
					break;
				case T_IF:
					{
					alt5=8;
					}
					break;
				case T_SELECTTYPE:
					{
					alt5=9;
					}
					break;
				default:
					if (state.backtracking>0) {state.failed=true; return;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 5, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case T_ALLOCATE:
			case T_ALLOCATE_STMT_1:
			case T_ARITHMETIC_IF_STMT:
			case T_ASSIGN:
			case T_ASSIGNMENT_STMT:
			case T_BACKSPACE:
			case T_CALL:
			case T_CLOSE:
			case T_CONTINUE:
			case T_CYCLE:
			case T_DEALLOCATE:
			case T_END:
			case T_ENDFILE:
			case T_ERROR:
			case T_EXIT:
			case T_FLUSH:
			case T_FORALL_STMT:
			case T_GO:
			case T_GOTO:
			case T_IF_STMT:
			case T_INQUIRE:
			case T_INQUIRE_STMT_2:
			case T_LOCK:
			case T_NULLIFY:
			case T_OPEN:
			case T_PAUSE:
			case T_PRINT:
			case T_PTR_ASSIGNMENT_STMT:
			case T_READ:
			case T_RETURN:
			case T_REWIND:
			case T_STOP:
			case T_SYNC:
			case T_UNLOCK:
			case T_WAIT:
			case T_WHERE_STMT:
			case T_WRITE:
				{
				alt5=1;
				}
				break;
			case T_IDENT:
				{
				int LA5_3 = input.LA(2);
				if ( (LA5_3==T_COLON) ) {
					switch ( input.LA(3) ) {
					case T_ASSOCIATE:
						{
						alt5=2;
						}
						break;
					case T_BLOCK:
						{
						alt5=3;
						}
						break;
					case T_SELECT:
						{
						int LA5_6 = input.LA(4);
						if ( (LA5_6==T_CASE) ) {
							alt5=4;
						}
						else if ( (LA5_6==T_TYPE) ) {
							alt5=9;
						}

						else {
							if (state.backtracking>0) {state.failed=true; return;}
							int nvaeMark = input.mark();
							try {
								for (int nvaeConsume = 0; nvaeConsume < 4 - 1; nvaeConsume++) {
									input.consume();
								}
								NoViableAltException nvae =
									new NoViableAltException("", 5, 6, input);
								throw nvae;
							} finally {
								input.rewind(nvaeMark);
							}
						}

						}
						break;
					case T_SELECTCASE:
						{
						alt5=4;
						}
						break;
					case T_CRITICAL:
						{
						alt5=5;
						}
						break;
					case T_DO:
						{
						alt5=6;
						}
						break;
					case T_FORALL_CONSTRUCT_STMT:
						{
						alt5=7;
						}
						break;
					case T_IF:
						{
						alt5=8;
						}
						break;
					case T_SELECTTYPE:
						{
						alt5=9;
						}
						break;
					case T_WHERE_CONSTRUCT_STMT:
						{
						alt5=10;
						}
						break;
					default:
						if (state.backtracking>0) {state.failed=true; return;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 5, 15, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}
				}

				else {
					if (state.backtracking>0) {state.failed=true; return;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 5, 3, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

				}
				break;
			case T_ASSOCIATE:
				{
				alt5=2;
				}
				break;
			case T_BLOCK:
				{
				alt5=3;
				}
				break;
			case T_SELECT:
				{
				int LA5_6 = input.LA(2);
				if ( (LA5_6==T_CASE) ) {
					alt5=4;
				}
				else if ( (LA5_6==T_TYPE) ) {
					alt5=9;
				}

				else {
					if (state.backtracking>0) {state.failed=true; return;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 5, 6, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

				}
				break;
			case T_SELECTCASE:
				{
				alt5=4;
				}
				break;
			case T_CRITICAL:
				{
				alt5=5;
				}
				break;
			case T_DO:
				{
				alt5=6;
				}
				break;
			case T_FORALL_CONSTRUCT_STMT:
				{
				alt5=7;
				}
				break;
			case T_IF:
				{
				alt5=8;
				}
				break;
			case T_SELECTTYPE:
				{
				alt5=9;
				}
				break;
			case T_WHERE_CONSTRUCT_STMT:
				{
				alt5=10;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return;}
				NoViableAltException nvae =
					new NoViableAltException("", 5, 0, input);
				throw nvae;
			}
			switch (alt5) {
				case 1 :
					// FortranParserExtras.g:123:8: action_stmt
					{
					pushFollow(FOLLOW_action_stmt_in_executable_construct318);
					action_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 2 :
					// FortranParserExtras.g:124:8: associate_construct
					{
					pushFollow(FOLLOW_associate_construct_in_executable_construct327);
					associate_construct();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 3 :
					// FortranParserExtras.g:125:8: block_construct
					{
					pushFollow(FOLLOW_block_construct_in_executable_construct336);
					block_construct();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 4 :
					// FortranParserExtras.g:126:8: case_construct
					{
					pushFollow(FOLLOW_case_construct_in_executable_construct362);
					case_construct();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 5 :
					// FortranParserExtras.g:127:8: critical_construct
					{
					pushFollow(FOLLOW_critical_construct_in_executable_construct371);
					critical_construct();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 6 :
					// FortranParserExtras.g:128:8: do_construct
					{
					pushFollow(FOLLOW_do_construct_in_executable_construct394);
					do_construct();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 7 :
					// FortranParserExtras.g:129:8: forall_construct
					{
					pushFollow(FOLLOW_forall_construct_in_executable_construct403);
					forall_construct();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 8 :
					// FortranParserExtras.g:130:8: if_construct
					{
					pushFollow(FOLLOW_if_construct_in_executable_construct412);
					if_construct();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 9 :
					// FortranParserExtras.g:131:8: select_type_construct
					{
					pushFollow(FOLLOW_select_type_construct_in_executable_construct421);
					select_type_construct();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 10 :
					// FortranParserExtras.g:132:8: where_construct
					{
					pushFollow(FOLLOW_where_construct_in_executable_construct430);
					where_construct();
					state._fsp--;
					if (state.failed) return;
					}
					break;

			}
			if ( state.backtracking==0 ) {action.executable_construct();}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "executable_construct"



	// $ANTLR start "action_stmt"
	// FortranParserExtras.g:189:1: action_stmt : ( allocate_stmt | assignment_stmt | backspace_stmt | call_stmt | close_stmt | continue_stmt | cycle_stmt | deallocate_stmt | endfile_stmt | errorstop_stmt | exit_stmt | flush_stmt | forall_stmt | goto_stmt | if_stmt | inquire_stmt | lock_stmt | nullify_stmt | open_stmt | pointer_assignment_stmt | print_stmt | read_stmt | return_stmt | rewind_stmt | stop_stmt | sync_all_stmt | sync_images_stmt | sync_memory_stmt | unlock_stmt | wait_stmt | where_stmt | write_stmt | arithmetic_if_stmt | computed_goto_stmt | assign_stmt | assigned_goto_stmt | pause_stmt );
	public final void action_stmt() throws RecognitionException {
		try {
			// FortranParserExtras.g:197:4: ( allocate_stmt | assignment_stmt | backspace_stmt | call_stmt | close_stmt | continue_stmt | cycle_stmt | deallocate_stmt | endfile_stmt | errorstop_stmt | exit_stmt | flush_stmt | forall_stmt | goto_stmt | if_stmt | inquire_stmt | lock_stmt | nullify_stmt | open_stmt | pointer_assignment_stmt | print_stmt | read_stmt | return_stmt | rewind_stmt | stop_stmt | sync_all_stmt | sync_images_stmt | sync_memory_stmt | unlock_stmt | wait_stmt | where_stmt | write_stmt | arithmetic_if_stmt | computed_goto_stmt | assign_stmt | assigned_goto_stmt | pause_stmt )
			int alt6=37;
			switch ( input.LA(1) ) {
			case T_DIGIT_STRING:
				{
				switch ( input.LA(2) ) {
				case T_ALLOCATE:
				case T_ALLOCATE_STMT_1:
					{
					alt6=1;
					}
					break;
				case T_ASSIGNMENT_STMT:
					{
					alt6=2;
					}
					break;
				case T_BACKSPACE:
					{
					alt6=3;
					}
					break;
				case T_CALL:
					{
					alt6=4;
					}
					break;
				case T_CLOSE:
					{
					alt6=5;
					}
					break;
				case T_CONTINUE:
					{
					alt6=6;
					}
					break;
				case T_CYCLE:
					{
					alt6=7;
					}
					break;
				case T_DEALLOCATE:
					{
					alt6=8;
					}
					break;
				case T_END:
				case T_ENDFILE:
					{
					alt6=9;
					}
					break;
				case T_ERROR:
					{
					alt6=10;
					}
					break;
				case T_EXIT:
					{
					alt6=11;
					}
					break;
				case T_FLUSH:
					{
					alt6=12;
					}
					break;
				case T_FORALL_STMT:
					{
					alt6=13;
					}
					break;
				case T_GO:
					{
					int LA6_15 = input.LA(3);
					if ( (LA6_15==T_TO) ) {
						switch ( input.LA(4) ) {
						case T_DIGIT_STRING:
							{
							alt6=14;
							}
							break;
						case T_LPAREN:
							{
							alt6=34;
							}
							break;
						case T_IDENT:
							{
							alt6=36;
							}
							break;
						default:
							if (state.backtracking>0) {state.failed=true; return;}
							int nvaeMark = input.mark();
							try {
								for (int nvaeConsume = 0; nvaeConsume < 4 - 1; nvaeConsume++) {
									input.consume();
								}
								NoViableAltException nvae =
									new NoViableAltException("", 6, 36, input);
								throw nvae;
							} finally {
								input.rewind(nvaeMark);
							}
						}
					}

					else {
						if (state.backtracking>0) {state.failed=true; return;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 6, 15, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}

					}
					break;
				case T_GOTO:
					{
					switch ( input.LA(3) ) {
					case T_DIGIT_STRING:
						{
						alt6=14;
						}
						break;
					case T_LPAREN:
						{
						alt6=34;
						}
						break;
					case T_IDENT:
						{
						alt6=36;
						}
						break;
					default:
						if (state.backtracking>0) {state.failed=true; return;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 6, 16, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}
					}
					break;
				case T_IF_STMT:
					{
					alt6=15;
					}
					break;
				case T_INQUIRE:
				case T_INQUIRE_STMT_2:
					{
					alt6=16;
					}
					break;
				case T_LOCK:
					{
					alt6=17;
					}
					break;
				case T_NULLIFY:
					{
					alt6=18;
					}
					break;
				case T_OPEN:
					{
					alt6=19;
					}
					break;
				case T_PTR_ASSIGNMENT_STMT:
					{
					alt6=20;
					}
					break;
				case T_PRINT:
					{
					alt6=21;
					}
					break;
				case T_READ:
					{
					alt6=22;
					}
					break;
				case T_RETURN:
					{
					alt6=23;
					}
					break;
				case T_REWIND:
					{
					alt6=24;
					}
					break;
				case T_STOP:
					{
					alt6=25;
					}
					break;
				case T_SYNC:
					{
					switch ( input.LA(3) ) {
					case T_ALL:
						{
						alt6=26;
						}
						break;
					case T_IMAGES:
						{
						alt6=27;
						}
						break;
					case T_MEMORY:
						{
						alt6=28;
						}
						break;
					default:
						if (state.backtracking>0) {state.failed=true; return;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 6, 28, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}
					}
					break;
				case T_UNLOCK:
					{
					alt6=29;
					}
					break;
				case T_WAIT:
					{
					alt6=30;
					}
					break;
				case T_WHERE_STMT:
					{
					alt6=31;
					}
					break;
				case T_WRITE:
					{
					alt6=32;
					}
					break;
				case T_ARITHMETIC_IF_STMT:
					{
					alt6=33;
					}
					break;
				case T_ASSIGN:
					{
					alt6=35;
					}
					break;
				case T_PAUSE:
					{
					alt6=37;
					}
					break;
				default:
					if (state.backtracking>0) {state.failed=true; return;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 6, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case T_ALLOCATE:
			case T_ALLOCATE_STMT_1:
				{
				alt6=1;
				}
				break;
			case T_ASSIGNMENT_STMT:
				{
				alt6=2;
				}
				break;
			case T_BACKSPACE:
				{
				alt6=3;
				}
				break;
			case T_CALL:
				{
				alt6=4;
				}
				break;
			case T_CLOSE:
				{
				alt6=5;
				}
				break;
			case T_CONTINUE:
				{
				alt6=6;
				}
				break;
			case T_CYCLE:
				{
				alt6=7;
				}
				break;
			case T_DEALLOCATE:
				{
				alt6=8;
				}
				break;
			case T_END:
			case T_ENDFILE:
				{
				alt6=9;
				}
				break;
			case T_ERROR:
				{
				alt6=10;
				}
				break;
			case T_EXIT:
				{
				alt6=11;
				}
				break;
			case T_FLUSH:
				{
				alt6=12;
				}
				break;
			case T_FORALL_STMT:
				{
				alt6=13;
				}
				break;
			case T_GO:
				{
				int LA6_15 = input.LA(2);
				if ( (LA6_15==T_TO) ) {
					switch ( input.LA(3) ) {
					case T_DIGIT_STRING:
						{
						alt6=14;
						}
						break;
					case T_LPAREN:
						{
						alt6=34;
						}
						break;
					case T_IDENT:
						{
						alt6=36;
						}
						break;
					default:
						if (state.backtracking>0) {state.failed=true; return;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 6, 36, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}
				}

				else {
					if (state.backtracking>0) {state.failed=true; return;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 6, 15, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

				}
				break;
			case T_GOTO:
				{
				switch ( input.LA(2) ) {
				case T_DIGIT_STRING:
					{
					alt6=14;
					}
					break;
				case T_LPAREN:
					{
					alt6=34;
					}
					break;
				case T_IDENT:
					{
					alt6=36;
					}
					break;
				default:
					if (state.backtracking>0) {state.failed=true; return;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 6, 16, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case T_IF_STMT:
				{
				alt6=15;
				}
				break;
			case T_INQUIRE:
			case T_INQUIRE_STMT_2:
				{
				alt6=16;
				}
				break;
			case T_LOCK:
				{
				alt6=17;
				}
				break;
			case T_NULLIFY:
				{
				alt6=18;
				}
				break;
			case T_OPEN:
				{
				alt6=19;
				}
				break;
			case T_PTR_ASSIGNMENT_STMT:
				{
				alt6=20;
				}
				break;
			case T_PRINT:
				{
				alt6=21;
				}
				break;
			case T_READ:
				{
				alt6=22;
				}
				break;
			case T_RETURN:
				{
				alt6=23;
				}
				break;
			case T_REWIND:
				{
				alt6=24;
				}
				break;
			case T_STOP:
				{
				alt6=25;
				}
				break;
			case T_SYNC:
				{
				switch ( input.LA(2) ) {
				case T_ALL:
					{
					alt6=26;
					}
					break;
				case T_IMAGES:
					{
					alt6=27;
					}
					break;
				case T_MEMORY:
					{
					alt6=28;
					}
					break;
				default:
					if (state.backtracking>0) {state.failed=true; return;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 6, 28, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case T_UNLOCK:
				{
				alt6=29;
				}
				break;
			case T_WAIT:
				{
				alt6=30;
				}
				break;
			case T_WHERE_STMT:
				{
				alt6=31;
				}
				break;
			case T_WRITE:
				{
				alt6=32;
				}
				break;
			case T_ARITHMETIC_IF_STMT:
				{
				alt6=33;
				}
				break;
			case T_ASSIGN:
				{
				alt6=35;
				}
				break;
			case T_PAUSE:
				{
				alt6=37;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return;}
				NoViableAltException nvae =
					new NoViableAltException("", 6, 0, input);
				throw nvae;
			}
			switch (alt6) {
				case 1 :
					// FortranParserExtras.g:197:8: allocate_stmt
					{
					pushFollow(FOLLOW_allocate_stmt_in_action_stmt473);
					allocate_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 2 :
					// FortranParserExtras.g:198:8: assignment_stmt
					{
					pushFollow(FOLLOW_assignment_stmt_in_action_stmt482);
					assignment_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 3 :
					// FortranParserExtras.g:199:8: backspace_stmt
					{
					pushFollow(FOLLOW_backspace_stmt_in_action_stmt491);
					backspace_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 4 :
					// FortranParserExtras.g:200:8: call_stmt
					{
					pushFollow(FOLLOW_call_stmt_in_action_stmt500);
					call_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 5 :
					// FortranParserExtras.g:201:8: close_stmt
					{
					pushFollow(FOLLOW_close_stmt_in_action_stmt509);
					close_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 6 :
					// FortranParserExtras.g:202:8: continue_stmt
					{
					pushFollow(FOLLOW_continue_stmt_in_action_stmt518);
					continue_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 7 :
					// FortranParserExtras.g:203:8: cycle_stmt
					{
					pushFollow(FOLLOW_cycle_stmt_in_action_stmt527);
					cycle_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 8 :
					// FortranParserExtras.g:204:8: deallocate_stmt
					{
					pushFollow(FOLLOW_deallocate_stmt_in_action_stmt536);
					deallocate_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 9 :
					// FortranParserExtras.g:212:8: endfile_stmt
					{
					pushFollow(FOLLOW_endfile_stmt_in_action_stmt552);
					endfile_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 10 :
					// FortranParserExtras.g:213:8: errorstop_stmt
					{
					pushFollow(FOLLOW_errorstop_stmt_in_action_stmt561);
					errorstop_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 11 :
					// FortranParserExtras.g:214:8: exit_stmt
					{
					pushFollow(FOLLOW_exit_stmt_in_action_stmt586);
					exit_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 12 :
					// FortranParserExtras.g:215:8: flush_stmt
					{
					pushFollow(FOLLOW_flush_stmt_in_action_stmt595);
					flush_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 13 :
					// FortranParserExtras.g:216:8: forall_stmt
					{
					pushFollow(FOLLOW_forall_stmt_in_action_stmt604);
					forall_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 14 :
					// FortranParserExtras.g:217:8: goto_stmt
					{
					pushFollow(FOLLOW_goto_stmt_in_action_stmt613);
					goto_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 15 :
					// FortranParserExtras.g:218:8: if_stmt
					{
					pushFollow(FOLLOW_if_stmt_in_action_stmt622);
					if_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 16 :
					// FortranParserExtras.g:219:8: inquire_stmt
					{
					pushFollow(FOLLOW_inquire_stmt_in_action_stmt631);
					inquire_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 17 :
					// FortranParserExtras.g:220:8: lock_stmt
					{
					pushFollow(FOLLOW_lock_stmt_in_action_stmt642);
					lock_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 18 :
					// FortranParserExtras.g:221:8: nullify_stmt
					{
					pushFollow(FOLLOW_nullify_stmt_in_action_stmt672);
					nullify_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 19 :
					// FortranParserExtras.g:222:8: open_stmt
					{
					pushFollow(FOLLOW_open_stmt_in_action_stmt681);
					open_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 20 :
					// FortranParserExtras.g:223:8: pointer_assignment_stmt
					{
					pushFollow(FOLLOW_pointer_assignment_stmt_in_action_stmt690);
					pointer_assignment_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 21 :
					// FortranParserExtras.g:224:8: print_stmt
					{
					pushFollow(FOLLOW_print_stmt_in_action_stmt699);
					print_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 22 :
					// FortranParserExtras.g:225:8: read_stmt
					{
					pushFollow(FOLLOW_read_stmt_in_action_stmt708);
					read_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 23 :
					// FortranParserExtras.g:226:8: return_stmt
					{
					pushFollow(FOLLOW_return_stmt_in_action_stmt717);
					return_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 24 :
					// FortranParserExtras.g:227:8: rewind_stmt
					{
					pushFollow(FOLLOW_rewind_stmt_in_action_stmt726);
					rewind_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 25 :
					// FortranParserExtras.g:228:8: stop_stmt
					{
					pushFollow(FOLLOW_stop_stmt_in_action_stmt735);
					stop_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 26 :
					// FortranParserExtras.g:229:8: sync_all_stmt
					{
					pushFollow(FOLLOW_sync_all_stmt_in_action_stmt744);
					sync_all_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 27 :
					// FortranParserExtras.g:230:8: sync_images_stmt
					{
					pushFollow(FOLLOW_sync_images_stmt_in_action_stmt770);
					sync_images_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 28 :
					// FortranParserExtras.g:231:8: sync_memory_stmt
					{
					pushFollow(FOLLOW_sync_memory_stmt_in_action_stmt793);
					sync_memory_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 29 :
					// FortranParserExtras.g:232:8: unlock_stmt
					{
					pushFollow(FOLLOW_unlock_stmt_in_action_stmt816);
					unlock_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 30 :
					// FortranParserExtras.g:233:8: wait_stmt
					{
					pushFollow(FOLLOW_wait_stmt_in_action_stmt844);
					wait_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 31 :
					// FortranParserExtras.g:234:8: where_stmt
					{
					pushFollow(FOLLOW_where_stmt_in_action_stmt853);
					where_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 32 :
					// FortranParserExtras.g:235:8: write_stmt
					{
					pushFollow(FOLLOW_write_stmt_in_action_stmt862);
					write_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 33 :
					// FortranParserExtras.g:236:8: arithmetic_if_stmt
					{
					pushFollow(FOLLOW_arithmetic_if_stmt_in_action_stmt871);
					arithmetic_if_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 34 :
					// FortranParserExtras.g:237:8: computed_goto_stmt
					{
					pushFollow(FOLLOW_computed_goto_stmt_in_action_stmt880);
					computed_goto_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 35 :
					// FortranParserExtras.g:238:8: assign_stmt
					{
					pushFollow(FOLLOW_assign_stmt_in_action_stmt889);
					assign_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 36 :
					// FortranParserExtras.g:239:8: assigned_goto_stmt
					{
					pushFollow(FOLLOW_assigned_goto_stmt_in_action_stmt917);
					assigned_goto_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;
				case 37 :
					// FortranParserExtras.g:240:8: pause_stmt
					{
					pushFollow(FOLLOW_pause_stmt_in_action_stmt938);
					pause_stmt();
					state._fsp--;
					if (state.failed) return;
					}
					break;

			}
			if ( state.backtracking==0 ) {action.action_stmt();}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "action_stmt"



	// $ANTLR start "type_declaration_stmt"
	// FortranParserExtras.g:259:1: type_declaration_stmt : ( label )? declaration_type_spec ( ( T_COMMA attr_spec )* T_COLON_COLON )? entity_decl_list end_of_stmt ;
	public final void type_declaration_stmt() throws RecognitionException {
		Token label1 =null;
		Token end_of_stmt2 =null;

		Token lbl = null; int numAttrSpecs = 0;
		try {
			// FortranParserExtras.g:262:5: ( ( label )? declaration_type_spec ( ( T_COMMA attr_spec )* T_COLON_COLON )? entity_decl_list end_of_stmt )
			// FortranParserExtras.g:262:7: ( label )? declaration_type_spec ( ( T_COMMA attr_spec )* T_COLON_COLON )? entity_decl_list end_of_stmt
			{
			// FortranParserExtras.g:262:7: ( label )?
			int alt7=2;
			int LA7_0 = input.LA(1);
			if ( (LA7_0==T_DIGIT_STRING) ) {
				alt7=1;
			}
			switch (alt7) {
				case 1 :
					// FortranParserExtras.g:262:8: label
					{
					pushFollow(FOLLOW_label_in_type_declaration_stmt997);
					label1=label();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) {lbl=label1;}
					}
					break;

			}

			pushFollow(FOLLOW_declaration_type_spec_in_type_declaration_stmt1003);
			declaration_type_spec();
			state._fsp--;
			if (state.failed) return;
			// FortranParserExtras.g:263:3: ( ( T_COMMA attr_spec )* T_COLON_COLON )?
			int alt9=2;
			int LA9_0 = input.LA(1);
			if ( ((LA9_0 >= T_COLON_COLON && LA9_0 <= T_COMMA)) ) {
				alt9=1;
			}
			switch (alt9) {
				case 1 :
					// FortranParserExtras.g:263:5: ( T_COMMA attr_spec )* T_COLON_COLON
					{
					// FortranParserExtras.g:263:5: ( T_COMMA attr_spec )*
					loop8:
					while (true) {
						int alt8=2;
						int LA8_0 = input.LA(1);
						if ( (LA8_0==T_COMMA) ) {
							alt8=1;
						}

						switch (alt8) {
						case 1 :
							// FortranParserExtras.g:263:6: T_COMMA attr_spec
							{
							match(input,T_COMMA,FOLLOW_T_COMMA_in_type_declaration_stmt1010); if (state.failed) return;
							pushFollow(FOLLOW_attr_spec_in_type_declaration_stmt1012);
							attr_spec();
							state._fsp--;
							if (state.failed) return;
							if ( state.backtracking==0 ) {numAttrSpecs += 1;}
							}
							break;

						default :
							break loop8;
						}
					}

					match(input,T_COLON_COLON,FOLLOW_T_COLON_COLON_in_type_declaration_stmt1018); if (state.failed) return;
					}
					break;

			}

			pushFollow(FOLLOW_entity_decl_list_in_type_declaration_stmt1025);
			entity_decl_list();
			state._fsp--;
			if (state.failed) return;
			pushFollow(FOLLOW_end_of_stmt_in_type_declaration_stmt1027);
			end_of_stmt2=end_of_stmt();
			state._fsp--;
			if (state.failed) return;
			if ( state.backtracking==0 ) { action.type_declaration_stmt(lbl, numAttrSpecs, end_of_stmt2); }
			}

			if ( state.backtracking==0 ) {checkForInclude();}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "type_declaration_stmt"



	// $ANTLR start "part_ref"
	// FortranParserExtras.g:311:1: part_ref options {k=2; } : ( ( T_IDENT T_LPAREN )=> T_IDENT T_LPAREN section_subscript_list T_RPAREN ( image_selector )? | ( T_IDENT T_LBRACKET )=> T_IDENT image_selector | T_IDENT );
	public final void part_ref() throws RecognitionException {
		Token T_IDENT3=null;
		Token T_IDENT4=null;
		Token T_IDENT5=null;

		boolean hasSSL = false; boolean hasImageSelector = false;
		try {
			// FortranParserExtras.g:314:4: ( ( T_IDENT T_LPAREN )=> T_IDENT T_LPAREN section_subscript_list T_RPAREN ( image_selector )? | ( T_IDENT T_LBRACKET )=> T_IDENT image_selector | T_IDENT )
			int alt11=3;
			int LA11_0 = input.LA(1);
			if ( (LA11_0==T_IDENT) ) {
				int LA11_1 = input.LA(2);
				if ( (LA11_1==T_LPAREN) ) {
					int LA11_2 = input.LA(3);
					if ( (synpred5_FortranParserExtras()) ) {
						alt11=1;
					}
					else if ( (true) ) {
						alt11=3;
					}

				}
				else if ( (LA11_1==T_LBRACKET) && (synpred6_FortranParserExtras())) {
					alt11=2;
				}
				else if ( (LA11_1==EOF||LA11_1==T_AND||LA11_1==T_ASTERISK||(LA11_1 >= T_COLON && LA11_1 <= T_COMMA)||LA11_1==T_DEFINED_OP||(LA11_1 >= T_EOS && LA11_1 <= T_EQUALS)||(LA11_1 >= T_EQV && LA11_1 <= T_EQ_GT)||LA11_1==T_GE||(LA11_1 >= T_GREATERTHAN && LA11_1 <= T_GT)||LA11_1==T_LE||(LA11_1 >= T_LESSTHAN && LA11_1 <= T_LESSTHAN_EQ)||LA11_1==T_LT||LA11_1==T_MINUS||(LA11_1 >= T_NE && LA11_1 <= T_NEQV)||LA11_1==T_OR||LA11_1==T_PERCENT||LA11_1==T_PLUS||LA11_1==T_POWER||LA11_1==T_RBRACKET||LA11_1==T_RPAREN||(LA11_1 >= T_SLASH && LA11_1 <= T_SLASH_SLASH)) ) {
					alt11=3;
				}

				else {
					if (state.backtracking>0) {state.failed=true; return;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 11, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}

			else {
				if (state.backtracking>0) {state.failed=true; return;}
				NoViableAltException nvae =
					new NoViableAltException("", 11, 0, input);
				throw nvae;
			}

			switch (alt11) {
				case 1 :
					// FortranParserExtras.g:314:8: ( T_IDENT T_LPAREN )=> T_IDENT T_LPAREN section_subscript_list T_RPAREN ( image_selector )?
					{
					T_IDENT3=(Token)match(input,T_IDENT,FOLLOW_T_IDENT_in_part_ref1122); if (state.failed) return;
					match(input,T_LPAREN,FOLLOW_T_LPAREN_in_part_ref1124); if (state.failed) return;
					pushFollow(FOLLOW_section_subscript_list_in_part_ref1126);
					section_subscript_list();
					state._fsp--;
					if (state.failed) return;
					match(input,T_RPAREN,FOLLOW_T_RPAREN_in_part_ref1128); if (state.failed) return;
					// FortranParserExtras.g:315:30: ( image_selector )?
					int alt10=2;
					int LA10_0 = input.LA(1);
					if ( (LA10_0==T_LBRACKET) ) {
						alt10=1;
					}
					switch (alt10) {
						case 1 :
							// FortranParserExtras.g:315:31: image_selector
							{
							pushFollow(FOLLOW_image_selector_in_part_ref1160);
							image_selector();
							state._fsp--;
							if (state.failed) return;
							if ( state.backtracking==0 ) {hasImageSelector=true;}
							}
							break;

					}

					if ( state.backtracking==0 ) {hasSSL=true; action.part_ref(T_IDENT3, hasSSL, hasImageSelector);}
					}
					break;
				case 2 :
					// FortranParserExtras.g:317:8: ( T_IDENT T_LBRACKET )=> T_IDENT image_selector
					{
					T_IDENT4=(Token)match(input,T_IDENT,FOLLOW_T_IDENT_in_part_ref1194); if (state.failed) return;
					pushFollow(FOLLOW_image_selector_in_part_ref1196);
					image_selector();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) {hasImageSelector=true; action.part_ref(T_IDENT4, hasSSL, hasImageSelector);}
					}
					break;
				case 3 :
					// FortranParserExtras.g:319:8: T_IDENT
					{
					T_IDENT5=(Token)match(input,T_IDENT,FOLLOW_T_IDENT_in_part_ref1218); if (state.failed) return;
					if ( state.backtracking==0 ) {action.part_ref(T_IDENT5, hasSSL, hasImageSelector);}
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "part_ref"



	// $ANTLR start "part_ref_no_image_selector"
	// FortranParserExtras.g:323:1: part_ref_no_image_selector options {k=2; } : ( ( T_IDENT T_LPAREN )=> T_IDENT T_LPAREN section_subscript_list T_RPAREN | T_IDENT );
	public final void part_ref_no_image_selector() throws RecognitionException {
		Token T_IDENT6=null;
		Token T_IDENT7=null;

		boolean hasSSL = false; boolean hasImageSelector = false;
		try {
			// FortranParserExtras.g:326:4: ( ( T_IDENT T_LPAREN )=> T_IDENT T_LPAREN section_subscript_list T_RPAREN | T_IDENT )
			int alt12=2;
			int LA12_0 = input.LA(1);
			if ( (LA12_0==T_IDENT) ) {
				int LA12_1 = input.LA(2);
				if ( (LA12_1==T_LPAREN) && (synpred7_FortranParserExtras())) {
					alt12=1;
				}
				else if ( (LA12_1==EOF||LA12_1==T_COMMA||LA12_1==T_LBRACKET||LA12_1==T_PERCENT||LA12_1==T_RPAREN) ) {
					alt12=2;
				}

				else {
					if (state.backtracking>0) {state.failed=true; return;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 12, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}

			else {
				if (state.backtracking>0) {state.failed=true; return;}
				NoViableAltException nvae =
					new NoViableAltException("", 12, 0, input);
				throw nvae;
			}

			switch (alt12) {
				case 1 :
					// FortranParserExtras.g:326:8: ( T_IDENT T_LPAREN )=> T_IDENT T_LPAREN section_subscript_list T_RPAREN
					{
					T_IDENT6=(Token)match(input,T_IDENT,FOLLOW_T_IDENT_in_part_ref_no_image_selector1267); if (state.failed) return;
					match(input,T_LPAREN,FOLLOW_T_LPAREN_in_part_ref_no_image_selector1269); if (state.failed) return;
					pushFollow(FOLLOW_section_subscript_list_in_part_ref_no_image_selector1271);
					section_subscript_list();
					state._fsp--;
					if (state.failed) return;
					match(input,T_RPAREN,FOLLOW_T_RPAREN_in_part_ref_no_image_selector1273); if (state.failed) return;
					if ( state.backtracking==0 ) {hasSSL=true; action.part_ref(T_IDENT6, hasSSL, hasImageSelector);}
					}
					break;
				case 2 :
					// FortranParserExtras.g:328:8: T_IDENT
					{
					T_IDENT7=(Token)match(input,T_IDENT,FOLLOW_T_IDENT_in_part_ref_no_image_selector1295); if (state.failed) return;
					if ( state.backtracking==0 ) {action.part_ref(T_IDENT7, hasSSL, hasImageSelector);}
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "part_ref_no_image_selector"



	// $ANTLR start "section_subscript"
	// FortranParserExtras.g:346:1: section_subscript returns [boolean isEmpty] : ( expr section_subscript_ambiguous | T_COLON ( expr )? ( T_COLON expr )? | T_COLON_COLON expr | T_IDENT T_EQUALS expr | T_IDENT T_EQUALS T_ASTERISK label | T_ASTERISK label |);
	public final boolean section_subscript() throws RecognitionException {
		boolean isEmpty = false;


		Token T_IDENT8=null;
		Token T_IDENT10=null;
		Token label9 =null;
		Token label11 =null;


		   boolean hasLowerBounds = false;
		   boolean hasUpperBounds = false;
		   boolean hasStride = false;
		   boolean hasExpr = false;

		try {
			// FortranParserExtras.g:353:4: ( expr section_subscript_ambiguous | T_COLON ( expr )? ( T_COLON expr )? | T_COLON_COLON expr | T_IDENT T_EQUALS expr | T_IDENT T_EQUALS T_ASTERISK label | T_ASTERISK label |)
			int alt15=7;
			switch ( input.LA(1) ) {
			case BINARY_CONSTANT:
			case HEX_CONSTANT:
			case OCTAL_CONSTANT:
			case T_CHAR_CONSTANT:
			case T_DEFINED_OP:
			case T_DIGIT_STRING:
			case T_FALSE:
			case T_HOLLERITH:
			case T_LBRACKET:
			case T_LPAREN:
			case T_MINUS:
			case T_NOT:
			case T_PLUS:
			case T_REAL_CONSTANT:
			case T_TRUE:
				{
				alt15=1;
				}
				break;
			case T_IDENT:
				{
				int LA15_2 = input.LA(2);
				if ( (LA15_2==T_AND||LA15_2==T_ASTERISK||LA15_2==T_CHAR_CONSTANT||(LA15_2 >= T_COLON && LA15_2 <= T_COMMA)||LA15_2==T_DEFINED_OP||LA15_2==T_EQ||(LA15_2 >= T_EQV && LA15_2 <= T_EQ_EQ)||LA15_2==T_GE||(LA15_2 >= T_GREATERTHAN && LA15_2 <= T_GT)||(LA15_2 >= T_LBRACKET && LA15_2 <= T_LE)||(LA15_2 >= T_LESSTHAN && LA15_2 <= T_LESSTHAN_EQ)||(LA15_2 >= T_LPAREN && LA15_2 <= T_LT)||LA15_2==T_MINUS||(LA15_2 >= T_NE && LA15_2 <= T_NEQV)||LA15_2==T_OR||LA15_2==T_PERCENT||LA15_2==T_PLUS||LA15_2==T_POWER||LA15_2==T_RPAREN||(LA15_2 >= T_SLASH && LA15_2 <= T_SLASH_SLASH)) ) {
					alt15=1;
				}
				else if ( (LA15_2==T_EQUALS) ) {
					int LA15_7 = input.LA(3);
					if ( (LA15_7==T_ASTERISK) ) {
						alt15=5;
					}
					else if ( (LA15_7==BINARY_CONSTANT||LA15_7==HEX_CONSTANT||LA15_7==OCTAL_CONSTANT||LA15_7==T_CHAR_CONSTANT||(LA15_7 >= T_DEFINED_OP && LA15_7 <= T_DIGIT_STRING)||LA15_7==T_FALSE||(LA15_7 >= T_HOLLERITH && LA15_7 <= T_IDENT)||LA15_7==T_LBRACKET||LA15_7==T_LPAREN||LA15_7==T_MINUS||LA15_7==T_NOT||LA15_7==T_PLUS||LA15_7==T_REAL_CONSTANT||LA15_7==T_TRUE) ) {
						alt15=4;
					}

					else {
						if (state.backtracking>0) {state.failed=true; return isEmpty;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 15, 7, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}

				}

				else {
					if (state.backtracking>0) {state.failed=true; return isEmpty;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 15, 2, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

				}
				break;
			case T_COLON:
				{
				alt15=2;
				}
				break;
			case T_COLON_COLON:
				{
				alt15=3;
				}
				break;
			case T_ASTERISK:
				{
				alt15=6;
				}
				break;
			case T_COMMA:
			case T_RPAREN:
				{
				alt15=7;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return isEmpty;}
				NoViableAltException nvae =
					new NoViableAltException("", 15, 0, input);
				throw nvae;
			}
			switch (alt15) {
				case 1 :
					// FortranParserExtras.g:353:8: expr section_subscript_ambiguous
					{
					pushFollow(FOLLOW_expr_in_section_subscript1344);
					expr();
					state._fsp--;
					if (state.failed) return isEmpty;
					pushFollow(FOLLOW_section_subscript_ambiguous_in_section_subscript1346);
					section_subscript_ambiguous();
					state._fsp--;
					if (state.failed) return isEmpty;
					}
					break;
				case 2 :
					// FortranParserExtras.g:354:8: T_COLON ( expr )? ( T_COLON expr )?
					{
					match(input,T_COLON,FOLLOW_T_COLON_in_section_subscript1355); if (state.failed) return isEmpty;
					// FortranParserExtras.g:354:16: ( expr )?
					int alt13=2;
					int LA13_0 = input.LA(1);
					if ( (LA13_0==BINARY_CONSTANT||LA13_0==HEX_CONSTANT||LA13_0==OCTAL_CONSTANT||LA13_0==T_CHAR_CONSTANT||(LA13_0 >= T_DEFINED_OP && LA13_0 <= T_DIGIT_STRING)||LA13_0==T_FALSE||(LA13_0 >= T_HOLLERITH && LA13_0 <= T_IDENT)||LA13_0==T_LBRACKET||LA13_0==T_LPAREN||LA13_0==T_MINUS||LA13_0==T_NOT||LA13_0==T_PLUS||LA13_0==T_REAL_CONSTANT||LA13_0==T_TRUE) ) {
						alt13=1;
					}
					switch (alt13) {
						case 1 :
							// FortranParserExtras.g:354:17: expr
							{
							pushFollow(FOLLOW_expr_in_section_subscript1358);
							expr();
							state._fsp--;
							if (state.failed) return isEmpty;
							if ( state.backtracking==0 ) {hasUpperBounds=true;}
							}
							break;

					}

					// FortranParserExtras.g:354:47: ( T_COLON expr )?
					int alt14=2;
					int LA14_0 = input.LA(1);
					if ( (LA14_0==T_COLON) ) {
						alt14=1;
					}
					switch (alt14) {
						case 1 :
							// FortranParserExtras.g:354:48: T_COLON expr
							{
							match(input,T_COLON,FOLLOW_T_COLON_in_section_subscript1365); if (state.failed) return isEmpty;
							pushFollow(FOLLOW_expr_in_section_subscript1367);
							expr();
							state._fsp--;
							if (state.failed) return isEmpty;
							if ( state.backtracking==0 ) {hasStride=true;}
							}
							break;

					}

					if ( state.backtracking==0 ) { action.section_subscript(hasLowerBounds, hasUpperBounds, hasStride, false); }
					}
					break;
				case 3 :
					// FortranParserExtras.g:356:8: T_COLON_COLON expr
					{
					match(input,T_COLON_COLON,FOLLOW_T_COLON_COLON_in_section_subscript1393); if (state.failed) return isEmpty;
					pushFollow(FOLLOW_expr_in_section_subscript1395);
					expr();
					state._fsp--;
					if (state.failed) return isEmpty;
					if ( state.backtracking==0 ) { hasStride=true;
					             action.section_subscript(hasLowerBounds, hasUpperBounds, hasStride, false);}
					}
					break;
				case 4 :
					// FortranParserExtras.g:359:8: T_IDENT T_EQUALS expr
					{
					T_IDENT8=(Token)match(input,T_IDENT,FOLLOW_T_IDENT_in_section_subscript1417); if (state.failed) return isEmpty;
					match(input,T_EQUALS,FOLLOW_T_EQUALS_in_section_subscript1419); if (state.failed) return isEmpty;
					pushFollow(FOLLOW_expr_in_section_subscript1421);
					expr();
					state._fsp--;
					if (state.failed) return isEmpty;
					if ( state.backtracking==0 ) { hasExpr=true; action.actual_arg(hasExpr, null); 
					             action.actual_arg_spec(T_IDENT8); }
					}
					break;
				case 5 :
					// FortranParserExtras.g:362:8: T_IDENT T_EQUALS T_ASTERISK label
					{
					T_IDENT10=(Token)match(input,T_IDENT,FOLLOW_T_IDENT_in_section_subscript1444); if (state.failed) return isEmpty;
					match(input,T_EQUALS,FOLLOW_T_EQUALS_in_section_subscript1446); if (state.failed) return isEmpty;
					match(input,T_ASTERISK,FOLLOW_T_ASTERISK_in_section_subscript1448); if (state.failed) return isEmpty;
					pushFollow(FOLLOW_label_in_section_subscript1450);
					label9=label();
					state._fsp--;
					if (state.failed) return isEmpty;
					if ( state.backtracking==0 ) { action.actual_arg(hasExpr, label9); action.actual_arg_spec(T_IDENT10); }
					}
					break;
				case 6 :
					// FortranParserExtras.g:364:8: T_ASTERISK label
					{
					match(input,T_ASTERISK,FOLLOW_T_ASTERISK_in_section_subscript1473); if (state.failed) return isEmpty;
					pushFollow(FOLLOW_label_in_section_subscript1475);
					label11=label();
					state._fsp--;
					if (state.failed) return isEmpty;
					if ( state.backtracking==0 ) { action.actual_arg(hasExpr, label11); action.actual_arg_spec(null); }
					}
					break;
				case 7 :
					// FortranParserExtras.g:366:12: 
					{
					if ( state.backtracking==0 ) { isEmpty = true; /* empty could be an actual-arg, see R1220 */ }
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return isEmpty;
	}
	// $ANTLR end "section_subscript"



	// $ANTLR start "section_subscript_ambiguous"
	// FortranParserExtras.g:369:1: section_subscript_ambiguous : ( T_COLON ( expr )? ( T_COLON expr )? | T_COLON_COLON expr |);
	public final void section_subscript_ambiguous() throws RecognitionException {

		   boolean hasLowerBound = true;
		   boolean hasUpperBound = false;
		   boolean hasStride = false;
		   boolean isAmbiguous = false; 

		try {
			// FortranParserExtras.g:376:4: ( T_COLON ( expr )? ( T_COLON expr )? | T_COLON_COLON expr |)
			int alt18=3;
			switch ( input.LA(1) ) {
			case T_COLON:
				{
				alt18=1;
				}
				break;
			case T_COLON_COLON:
				{
				alt18=2;
				}
				break;
			case T_COMMA:
			case T_RPAREN:
				{
				alt18=3;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return;}
				NoViableAltException nvae =
					new NoViableAltException("", 18, 0, input);
				throw nvae;
			}
			switch (alt18) {
				case 1 :
					// FortranParserExtras.g:376:8: T_COLON ( expr )? ( T_COLON expr )?
					{
					match(input,T_COLON,FOLLOW_T_COLON_in_section_subscript_ambiguous1525); if (state.failed) return;
					// FortranParserExtras.g:376:16: ( expr )?
					int alt16=2;
					int LA16_0 = input.LA(1);
					if ( (LA16_0==BINARY_CONSTANT||LA16_0==HEX_CONSTANT||LA16_0==OCTAL_CONSTANT||LA16_0==T_CHAR_CONSTANT||(LA16_0 >= T_DEFINED_OP && LA16_0 <= T_DIGIT_STRING)||LA16_0==T_FALSE||(LA16_0 >= T_HOLLERITH && LA16_0 <= T_IDENT)||LA16_0==T_LBRACKET||LA16_0==T_LPAREN||LA16_0==T_MINUS||LA16_0==T_NOT||LA16_0==T_PLUS||LA16_0==T_REAL_CONSTANT||LA16_0==T_TRUE) ) {
						alt16=1;
					}
					switch (alt16) {
						case 1 :
							// FortranParserExtras.g:376:17: expr
							{
							pushFollow(FOLLOW_expr_in_section_subscript_ambiguous1528);
							expr();
							state._fsp--;
							if (state.failed) return;
							if ( state.backtracking==0 ) {hasUpperBound=true;}
							}
							break;

					}

					// FortranParserExtras.g:376:46: ( T_COLON expr )?
					int alt17=2;
					int LA17_0 = input.LA(1);
					if ( (LA17_0==T_COLON) ) {
						alt17=1;
					}
					switch (alt17) {
						case 1 :
							// FortranParserExtras.g:376:47: T_COLON expr
							{
							match(input,T_COLON,FOLLOW_T_COLON_in_section_subscript_ambiguous1535); if (state.failed) return;
							pushFollow(FOLLOW_expr_in_section_subscript_ambiguous1537);
							expr();
							state._fsp--;
							if (state.failed) return;
							if ( state.backtracking==0 ) {hasStride=true;}
							}
							break;

					}

					if ( state.backtracking==0 ) { action.section_subscript(hasLowerBound, hasUpperBound, hasStride, isAmbiguous);}
					}
					break;
				case 2 :
					// FortranParserExtras.g:383:7: T_COLON_COLON expr
					{
					match(input,T_COLON_COLON,FOLLOW_T_COLON_COLON_in_section_subscript_ambiguous1602); if (state.failed) return;
					pushFollow(FOLLOW_expr_in_section_subscript_ambiguous1604);
					expr();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) { hasStride=true; 
					             action.section_subscript(hasLowerBound, hasUpperBound, hasStride, isAmbiguous);}
					}
					break;
				case 3 :
					// FortranParserExtras.g:386:12: 
					{
					if ( state.backtracking==0 ) { /* empty, could be an actual-arg, see R1220 */
					             isAmbiguous=true; 
					             action.section_subscript(hasLowerBound, hasUpperBound, hasStride, isAmbiguous);
					           }
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "section_subscript_ambiguous"



	// $ANTLR start "section_subscript_list"
	// FortranParserExtras.g:406:1: section_subscript_list :isEmpty= section_subscript ( T_COMMA section_subscript )* ;
	public final void section_subscript_list() throws RecognitionException {
		boolean isEmpty =false;

		int count = 0;
		try {
			// FortranParserExtras.g:408:4: (isEmpty= section_subscript ( T_COMMA section_subscript )* )
			// FortranParserExtras.g:408:12: isEmpty= section_subscript ( T_COMMA section_subscript )*
			{
			if ( state.backtracking==0 ) { action.section_subscript_list__begin(); }
			pushFollow(FOLLOW_section_subscript_in_section_subscript_list1676);
			isEmpty=section_subscript();
			state._fsp--;
			if (state.failed) return;
			if ( state.backtracking==0 ) {
			               if (isEmpty == false) count += 1;
			           }
			// FortranParserExtras.g:413:8: ( T_COMMA section_subscript )*
			loop19:
			while (true) {
				int alt19=2;
				int LA19_0 = input.LA(1);
				if ( (LA19_0==T_COMMA) ) {
					alt19=1;
				}

				switch (alt19) {
				case 1 :
					// FortranParserExtras.g:413:9: T_COMMA section_subscript
					{
					match(input,T_COMMA,FOLLOW_T_COMMA_in_section_subscript_list1699); if (state.failed) return;
					pushFollow(FOLLOW_section_subscript_in_section_subscript_list1701);
					section_subscript();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) {count += 1;}
					}
					break;

				default :
					break loop19;
				}
			}

			if ( state.backtracking==0 ) { action.section_subscript_list(count); }
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "section_subscript_list"



	// $ANTLR start "image_selector"
	// FortranParserExtras.g:426:1: image_selector : T_LBRACKET cosubscript_list T_RBRACKET ;
	public final void image_selector() throws RecognitionException {
		Token T_LBRACKET12=null;
		Token T_RBRACKET13=null;

		try {
			// FortranParserExtras.g:427:4: ( T_LBRACKET cosubscript_list T_RBRACKET )
			// FortranParserExtras.g:427:8: T_LBRACKET cosubscript_list T_RBRACKET
			{
			T_LBRACKET12=(Token)match(input,T_LBRACKET,FOLLOW_T_LBRACKET_in_image_selector1742); if (state.failed) return;
			pushFollow(FOLLOW_cosubscript_list_in_image_selector1744);
			cosubscript_list();
			state._fsp--;
			if (state.failed) return;
			T_RBRACKET13=(Token)match(input,T_RBRACKET,FOLLOW_T_RBRACKET_in_image_selector1746); if (state.failed) return;
			if ( state.backtracking==0 ) {action.image_selector(T_LBRACKET12, T_RBRACKET13);}
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "image_selector"



	// $ANTLR start "cosubscript"
	// FortranParserExtras.g:439:1: cosubscript : scalar_int_expr ;
	public final void cosubscript() throws RecognitionException {
		try {
			// FortranParserExtras.g:440:4: ( scalar_int_expr )
			// FortranParserExtras.g:440:8: scalar_int_expr
			{
			pushFollow(FOLLOW_scalar_int_expr_in_cosubscript1782);
			scalar_int_expr();
			state._fsp--;
			if (state.failed) return;
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "cosubscript"



	// $ANTLR start "cosubscript_list"
	// FortranParserExtras.g:443:1: cosubscript_list : cosubscript ( T_COMMA cosubscript )* ;
	public final void cosubscript_list() throws RecognitionException {
		int count=0;
		try {
			// FortranParserExtras.g:445:4: ( cosubscript ( T_COMMA cosubscript )* )
			// FortranParserExtras.g:445:12: cosubscript ( T_COMMA cosubscript )*
			{
			if ( state.backtracking==0 ) {action.cosubscript_list__begin();}
			pushFollow(FOLLOW_cosubscript_in_cosubscript_list1816);
			cosubscript();
			state._fsp--;
			if (state.failed) return;
			if ( state.backtracking==0 ) {count++;}
			// FortranParserExtras.g:446:31: ( T_COMMA cosubscript )*
			loop20:
			while (true) {
				int alt20=2;
				int LA20_0 = input.LA(1);
				if ( (LA20_0==T_COMMA) ) {
					alt20=1;
				}

				switch (alt20) {
				case 1 :
					// FortranParserExtras.g:446:33: T_COMMA cosubscript
					{
					match(input,T_COMMA,FOLLOW_T_COMMA_in_cosubscript_list1822); if (state.failed) return;
					pushFollow(FOLLOW_cosubscript_in_cosubscript_list1824);
					cosubscript();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) {count++;}
					}
					break;

				default :
					break loop20;
				}
			}

			if ( state.backtracking==0 ) {action.cosubscript_list(count, null);}
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "cosubscript_list"



	// $ANTLR start "allocation"
	// FortranParserExtras.g:461:1: allocation : ( ( allocate_object T_LBRACKET )=> allocate_object T_LBRACKET allocate_coarray_spec T_RBRACKET | ( allocate_object )=> allocate_object );
	public final void allocation() throws RecognitionException {
		boolean hasAllocateShapeSpecList = false; boolean hasAllocateCoarraySpec = false;
		try {
			// FortranParserExtras.g:463:4: ( ( allocate_object T_LBRACKET )=> allocate_object T_LBRACKET allocate_coarray_spec T_RBRACKET | ( allocate_object )=> allocate_object )
			int alt21=2;
			int LA21_0 = input.LA(1);
			if ( (LA21_0==T_IDENT) ) {
				int LA21_1 = input.LA(2);
				if ( (synpred8_FortranParserExtras()) ) {
					alt21=1;
				}
				else if ( (synpred9_FortranParserExtras()) ) {
					alt21=2;
				}

				else {
					if (state.backtracking>0) {state.failed=true; return;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 21, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}

			}

			else {
				if (state.backtracking>0) {state.failed=true; return;}
				NoViableAltException nvae =
					new NoViableAltException("", 21, 0, input);
				throw nvae;
			}

			switch (alt21) {
				case 1 :
					// FortranParserExtras.g:463:8: ( allocate_object T_LBRACKET )=> allocate_object T_LBRACKET allocate_coarray_spec T_RBRACKET
					{
					pushFollow(FOLLOW_allocate_object_in_allocation1889);
					allocate_object();
					state._fsp--;
					if (state.failed) return;
					match(input,T_LBRACKET,FOLLOW_T_LBRACKET_in_allocation1891); if (state.failed) return;
					pushFollow(FOLLOW_allocate_coarray_spec_in_allocation1893);
					allocate_coarray_spec();
					state._fsp--;
					if (state.failed) return;
					match(input,T_RBRACKET,FOLLOW_T_RBRACKET_in_allocation1895); if (state.failed) return;
					if ( state.backtracking==0 ) {hasAllocateCoarraySpec=true;}
					if ( state.backtracking==0 ) {action.allocation(hasAllocateShapeSpecList, hasAllocateCoarraySpec);}
					}
					break;
				case 2 :
					// FortranParserExtras.g:476:8: ( allocate_object )=> allocate_object
					{
					pushFollow(FOLLOW_allocate_object_in_allocation1967);
					allocate_object();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) {action.allocation(hasAllocateShapeSpecList, hasAllocateCoarraySpec);}
					}
					break;

			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "allocation"



	// $ANTLR start "allocate_object"
	// FortranParserExtras.g:498:1: allocate_object : part_ref_no_image_selector ( T_PERCENT part_ref_no_image_selector )* ;
	public final void allocate_object() throws RecognitionException {
		int numPartRefs = 0;
		try {
			// FortranParserExtras.g:500:4: ( part_ref_no_image_selector ( T_PERCENT part_ref_no_image_selector )* )
			// FortranParserExtras.g:500:8: part_ref_no_image_selector ( T_PERCENT part_ref_no_image_selector )*
			{
			pushFollow(FOLLOW_part_ref_no_image_selector_in_allocate_object2021);
			part_ref_no_image_selector();
			state._fsp--;
			if (state.failed) return;
			if ( state.backtracking==0 ) {numPartRefs += 1;}
			// FortranParserExtras.g:501:8: ( T_PERCENT part_ref_no_image_selector )*
			loop22:
			while (true) {
				int alt22=2;
				int LA22_0 = input.LA(1);
				if ( (LA22_0==T_PERCENT) ) {
					alt22=1;
				}

				switch (alt22) {
				case 1 :
					// FortranParserExtras.g:501:9: T_PERCENT part_ref_no_image_selector
					{
					match(input,T_PERCENT,FOLLOW_T_PERCENT_in_allocate_object2033); if (state.failed) return;
					pushFollow(FOLLOW_part_ref_no_image_selector_in_allocate_object2035);
					part_ref_no_image_selector();
					state._fsp--;
					if (state.failed) return;
					if ( state.backtracking==0 ) {numPartRefs += 1;}
					}
					break;

				default :
					break loop22;
				}
			}

			if ( state.backtracking==0 ) {action.data_ref(numPartRefs); action.allocate_object();}
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "allocate_object"



	// $ANTLR start "allocate_coarray_spec"
	// FortranParserExtras.g:513:1: allocate_coarray_spec options {k=3; } : ( ( T_ASTERISK )=> T_ASTERISK | ( expr T_COLON T_ASTERISK )=> expr T_COLON T_ASTERISK );
	public final void allocate_coarray_spec() throws RecognitionException {
		try {
			// FortranParserExtras.g:516:4: ( ( T_ASTERISK )=> T_ASTERISK | ( expr T_COLON T_ASTERISK )=> expr T_COLON T_ASTERISK )
			int alt23=2;
			int LA23_0 = input.LA(1);
			if ( (LA23_0==T_ASTERISK) && (synpred10_FortranParserExtras())) {
				alt23=1;
			}
			else if ( (LA23_0==T_NOT) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==T_PLUS) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==T_MINUS) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==T_DEFINED_OP) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==T_IDENT) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==T_DIGIT_STRING) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==T_CHAR_CONSTANT) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==T_REAL_CONSTANT) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==T_LPAREN) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==T_TRUE) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==T_FALSE) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==BINARY_CONSTANT) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==OCTAL_CONSTANT) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==HEX_CONSTANT) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==T_HOLLERITH) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}
			else if ( (LA23_0==T_LBRACKET) && (synpred11_FortranParserExtras())) {
				alt23=2;
			}

			switch (alt23) {
				case 1 :
					// FortranParserExtras.g:516:8: ( T_ASTERISK )=> T_ASTERISK
					{
					match(input,T_ASTERISK,FOLLOW_T_ASTERISK_in_allocate_coarray_spec2106); if (state.failed) return;
					}
					break;
				case 2 :
					// FortranParserExtras.g:517:8: ( expr T_COLON T_ASTERISK )=> expr T_COLON T_ASTERISK
					{
					pushFollow(FOLLOW_expr_in_allocate_coarray_spec2125);
					expr();
					state._fsp--;
					if (state.failed) return;
					match(input,T_COLON,FOLLOW_T_COLON_in_allocate_coarray_spec2127); if (state.failed) return;
					match(input,T_ASTERISK,FOLLOW_T_ASTERISK_in_allocate_coarray_spec2129); if (state.failed) return;
					}
					break;

			}
			if ( state.backtracking==0 ) {action.allocate_coarray_spec();}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "allocate_coarray_spec"



	// $ANTLR start "logical_expr"
	// FortranParserExtras.g:535:1: logical_expr : expr ;
	public final void logical_expr() throws RecognitionException {
		try {
			// FortranParserExtras.g:536:4: ( expr )
			// FortranParserExtras.g:536:8: expr
			{
			pushFollow(FOLLOW_expr_in_logical_expr2158);
			expr();
			state._fsp--;
			if (state.failed) return;
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "logical_expr"



	// $ANTLR start "scalar_logical_expr"
	// FortranParserExtras.g:539:1: scalar_logical_expr : expr ;
	public final void scalar_logical_expr() throws RecognitionException {
		try {
			// FortranParserExtras.g:540:4: ( expr )
			// FortranParserExtras.g:540:8: expr
			{
			pushFollow(FOLLOW_expr_in_scalar_logical_expr2175);
			expr();
			state._fsp--;
			if (state.failed) return;
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "scalar_logical_expr"



	// $ANTLR start "int_expr"
	// FortranParserExtras.g:552:1: int_expr : expr ;
	public final void int_expr() throws RecognitionException {
		try {
			// FortranParserExtras.g:553:4: ( expr )
			// FortranParserExtras.g:553:8: expr
			{
			pushFollow(FOLLOW_expr_in_int_expr2199);
			expr();
			state._fsp--;
			if (state.failed) return;
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "int_expr"



	// $ANTLR start "scalar_int_expr"
	// FortranParserExtras.g:556:1: scalar_int_expr : expr ;
	public final void scalar_int_expr() throws RecognitionException {
		try {
			// FortranParserExtras.g:557:4: ( expr )
			// FortranParserExtras.g:557:8: expr
			{
			pushFollow(FOLLOW_expr_in_scalar_int_expr2216);
			expr();
			state._fsp--;
			if (state.failed) return;
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "scalar_int_expr"



	// $ANTLR start "scalar_variable"
	// FortranParserExtras.g:565:1: scalar_variable : expr ;
	public final void scalar_variable() throws RecognitionException {
		try {
			// FortranParserExtras.g:566:4: ( expr )
			// FortranParserExtras.g:566:8: expr
			{
			pushFollow(FOLLOW_expr_in_scalar_variable2238);
			expr();
			state._fsp--;
			if (state.failed) return;
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "scalar_variable"



	// $ANTLR start "lock_variable"
	// FortranParserExtras.g:583:1: lock_variable : scalar_variable ;
	public final void lock_variable() throws RecognitionException {
		try {
			// FortranParserExtras.g:584:4: ( scalar_variable )
			// FortranParserExtras.g:584:8: scalar_variable
			{
			pushFollow(FOLLOW_scalar_variable_in_lock_variable2267);
			scalar_variable();
			state._fsp--;
			if (state.failed) return;
			if ( state.backtracking==0 ) { action.lock_variable(); }
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
	}
	// $ANTLR end "lock_variable"

	// $ANTLR start synpred1_FortranParserExtras
	public final void synpred1_FortranParserExtras_fragment() throws RecognitionException {
		// FortranParserExtras.g:97:8: ( ( label )? T_IMPLICIT )
		// FortranParserExtras.g:97:9: ( label )? T_IMPLICIT
		{
		// FortranParserExtras.g:97:9: ( label )?
		int alt24=2;
		int LA24_0 = input.LA(1);
		if ( (LA24_0==T_DIGIT_STRING) ) {
			alt24=1;
		}
		switch (alt24) {
			case 1 :
				// FortranParserExtras.g:97:10: label
				{
				pushFollow(FOLLOW_label_in_synpred1_FortranParserExtras181);
				label();
				state._fsp--;
				if (state.failed) return;
				}
				break;

		}

		match(input,T_IMPLICIT,FOLLOW_T_IMPLICIT_in_synpred1_FortranParserExtras185); if (state.failed) return;
		}

	}
	// $ANTLR end synpred1_FortranParserExtras

	// $ANTLR start synpred2_FortranParserExtras
	public final void synpred2_FortranParserExtras_fragment() throws RecognitionException {
		// FortranParserExtras.g:98:8: ( ( label )? T_PARAMETER )
		// FortranParserExtras.g:98:9: ( label )? T_PARAMETER
		{
		// FortranParserExtras.g:98:9: ( label )?
		int alt25=2;
		int LA25_0 = input.LA(1);
		if ( (LA25_0==T_DIGIT_STRING) ) {
			alt25=1;
		}
		switch (alt25) {
			case 1 :
				// FortranParserExtras.g:98:10: label
				{
				pushFollow(FOLLOW_label_in_synpred2_FortranParserExtras207);
				label();
				state._fsp--;
				if (state.failed) return;
				}
				break;

		}

		match(input,T_PARAMETER,FOLLOW_T_PARAMETER_in_synpred2_FortranParserExtras211); if (state.failed) return;
		}

	}
	// $ANTLR end synpred2_FortranParserExtras

	// $ANTLR start synpred3_FortranParserExtras
	public final void synpred3_FortranParserExtras_fragment() throws RecognitionException {
		// FortranParserExtras.g:99:8: ( ( label )? T_FORMAT )
		// FortranParserExtras.g:99:9: ( label )? T_FORMAT
		{
		// FortranParserExtras.g:99:9: ( label )?
		int alt26=2;
		int LA26_0 = input.LA(1);
		if ( (LA26_0==T_DIGIT_STRING) ) {
			alt26=1;
		}
		switch (alt26) {
			case 1 :
				// FortranParserExtras.g:99:10: label
				{
				pushFollow(FOLLOW_label_in_synpred3_FortranParserExtras231);
				label();
				state._fsp--;
				if (state.failed) return;
				}
				break;

		}

		match(input,T_FORMAT,FOLLOW_T_FORMAT_in_synpred3_FortranParserExtras235); if (state.failed) return;
		}

	}
	// $ANTLR end synpred3_FortranParserExtras

	// $ANTLR start synpred4_FortranParserExtras
	public final void synpred4_FortranParserExtras_fragment() throws RecognitionException {
		// FortranParserExtras.g:100:8: ( ( label )? T_ENTRY )
		// FortranParserExtras.g:100:9: ( label )? T_ENTRY
		{
		// FortranParserExtras.g:100:9: ( label )?
		int alt27=2;
		int LA27_0 = input.LA(1);
		if ( (LA27_0==T_DIGIT_STRING) ) {
			alt27=1;
		}
		switch (alt27) {
			case 1 :
				// FortranParserExtras.g:100:10: label
				{
				pushFollow(FOLLOW_label_in_synpred4_FortranParserExtras261);
				label();
				state._fsp--;
				if (state.failed) return;
				}
				break;

		}

		match(input,T_ENTRY,FOLLOW_T_ENTRY_in_synpred4_FortranParserExtras265); if (state.failed) return;
		}

	}
	// $ANTLR end synpred4_FortranParserExtras

	// $ANTLR start synpred5_FortranParserExtras
	public final void synpred5_FortranParserExtras_fragment() throws RecognitionException {
		// FortranParserExtras.g:314:8: ( T_IDENT T_LPAREN )
		// FortranParserExtras.g:314:9: T_IDENT T_LPAREN
		{
		match(input,T_IDENT,FOLLOW_T_IDENT_in_synpred5_FortranParserExtras1115); if (state.failed) return;
		match(input,T_LPAREN,FOLLOW_T_LPAREN_in_synpred5_FortranParserExtras1117); if (state.failed) return;
		}

	}
	// $ANTLR end synpred5_FortranParserExtras

	// $ANTLR start synpred6_FortranParserExtras
	public final void synpred6_FortranParserExtras_fragment() throws RecognitionException {
		// FortranParserExtras.g:317:8: ( T_IDENT T_LBRACKET )
		// FortranParserExtras.g:317:9: T_IDENT T_LBRACKET
		{
		match(input,T_IDENT,FOLLOW_T_IDENT_in_synpred6_FortranParserExtras1187); if (state.failed) return;
		match(input,T_LBRACKET,FOLLOW_T_LBRACKET_in_synpred6_FortranParserExtras1189); if (state.failed) return;
		}

	}
	// $ANTLR end synpred6_FortranParserExtras

	// $ANTLR start synpred7_FortranParserExtras
	public final void synpred7_FortranParserExtras_fragment() throws RecognitionException {
		// FortranParserExtras.g:326:8: ( T_IDENT T_LPAREN )
		// FortranParserExtras.g:326:9: T_IDENT T_LPAREN
		{
		match(input,T_IDENT,FOLLOW_T_IDENT_in_synpred7_FortranParserExtras1260); if (state.failed) return;
		match(input,T_LPAREN,FOLLOW_T_LPAREN_in_synpred7_FortranParserExtras1262); if (state.failed) return;
		}

	}
	// $ANTLR end synpred7_FortranParserExtras

	// $ANTLR start synpred8_FortranParserExtras
	public final void synpred8_FortranParserExtras_fragment() throws RecognitionException {
		// FortranParserExtras.g:463:8: ( allocate_object T_LBRACKET )
		// FortranParserExtras.g:463:9: allocate_object T_LBRACKET
		{
		pushFollow(FOLLOW_allocate_object_in_synpred8_FortranParserExtras1872);
		allocate_object();
		state._fsp--;
		if (state.failed) return;
		match(input,T_LBRACKET,FOLLOW_T_LBRACKET_in_synpred8_FortranParserExtras1874); if (state.failed) return;
		}

	}
	// $ANTLR end synpred8_FortranParserExtras

	// $ANTLR start synpred9_FortranParserExtras
	public final void synpred9_FortranParserExtras_fragment() throws RecognitionException {
		// FortranParserExtras.g:476:8: ( allocate_object )
		// FortranParserExtras.g:476:9: allocate_object
		{
		pushFollow(FOLLOW_allocate_object_in_synpred9_FortranParserExtras1952);
		allocate_object();
		state._fsp--;
		if (state.failed) return;
		}

	}
	// $ANTLR end synpred9_FortranParserExtras

	// $ANTLR start synpred10_FortranParserExtras
	public final void synpred10_FortranParserExtras_fragment() throws RecognitionException {
		// FortranParserExtras.g:516:8: ( T_ASTERISK )
		// FortranParserExtras.g:516:9: T_ASTERISK
		{
		match(input,T_ASTERISK,FOLLOW_T_ASTERISK_in_synpred10_FortranParserExtras2088); if (state.failed) return;
		}

	}
	// $ANTLR end synpred10_FortranParserExtras

	// $ANTLR start synpred11_FortranParserExtras
	public final void synpred11_FortranParserExtras_fragment() throws RecognitionException {
		// FortranParserExtras.g:517:8: ( expr T_COLON T_ASTERISK )
		// FortranParserExtras.g:517:9: expr T_COLON T_ASTERISK
		{
		pushFollow(FOLLOW_expr_in_synpred11_FortranParserExtras2116);
		expr();
		state._fsp--;
		if (state.failed) return;
		match(input,T_COLON,FOLLOW_T_COLON_in_synpred11_FortranParserExtras2118); if (state.failed) return;
		match(input,T_ASTERISK,FOLLOW_T_ASTERISK_in_synpred11_FortranParserExtras2120); if (state.failed) return;
		}

	}
	// $ANTLR end synpred11_FortranParserExtras

	// Delegated rules
	public void proc_language_binding_spec() throws RecognitionException { gFortranParser08.proc_language_binding_spec(); }

	public void scalar_int_variable() throws RecognitionException { gFortranParser08.scalar_int_variable(); }

	public void do_stmt() throws RecognitionException { gFortranParser08.do_stmt(); }

	public void bind_entity_list() throws RecognitionException { gFortranParser08.bind_entity_list(); }

	public void end_block_stmt() throws RecognitionException { gFortranParser08.end_block_stmt(); }

	public void type_bound_procedure_part() throws RecognitionException { gFortranParser08.type_bound_procedure_part(); }

	public void int_variable() throws RecognitionException { gFortranParser08.int_variable(); }

	public void if_stmt() throws RecognitionException { gFortranParser08.if_stmt(); }

	public void close_spec() throws RecognitionException { gFortranParser08.close_spec(); }

	public void signed_operand() throws RecognitionException { gFortranParser08.signed_operand(); }

	public void import_stmt() throws RecognitionException { gFortranParser08.import_stmt(); }

	public void print_stmt() throws RecognitionException { gFortranParser08.print_stmt(); }

	public void flush_spec_list() throws RecognitionException { gFortranParser08.flush_spec_list(); }

	public void forall_stmt() throws RecognitionException { gFortranParser08.forall_stmt(); }

	public void mp_subprogram_stmt() throws RecognitionException { gFortranParser08.mp_subprogram_stmt(); }

	public void explicit_shape_spec() throws RecognitionException { gFortranParser08.explicit_shape_spec(); }

	public Token extended_intrinsic_op() throws RecognitionException { return gFortranParser08.extended_intrinsic_op(); }

	public void allocatable_stmt() throws RecognitionException { gFortranParser08.allocatable_stmt(); }

	public void enumerator_def_stmt() throws RecognitionException { gFortranParser08.enumerator_def_stmt(); }

	public void contains_stmt() throws RecognitionException { gFortranParser08.contains_stmt(); }

	public void image_set() throws RecognitionException { gFortranParser08.image_set(); }

	public Token rel_op() throws RecognitionException { return gFortranParser08.rel_op(); }

	public void procedure_designator() throws RecognitionException { gFortranParser08.procedure_designator(); }

	public void attr_spec() throws RecognitionException { gFortranParser08.attr_spec(); }

	public void flush_spec() throws RecognitionException { gFortranParser08.flush_spec(); }

	public void connect_spec() throws RecognitionException { gFortranParser08.connect_spec(); }

	public void logical_literal_constant() throws RecognitionException { gFortranParser08.logical_literal_constant(); }

	public void select_type_construct() throws RecognitionException { gFortranParser08.select_type_construct(); }

	public void bounds_spec_list() throws RecognitionException { gFortranParser08.bounds_spec_list(); }

	public void associate_stmt() throws RecognitionException { gFortranParser08.associate_stmt(); }

	public void sync_stat_list() throws RecognitionException { gFortranParser08.sync_stat_list(); }

	public void type_param_spec_list() throws RecognitionException { gFortranParser08.type_param_spec_list(); }

	public void type_param_decl_list() throws RecognitionException { gFortranParser08.type_param_decl_list(); }

	public void mult_operand() throws RecognitionException { gFortranParser08.mult_operand(); }

	public void generic_spec() throws RecognitionException { gFortranParser08.generic_spec(); }

	public void substring() throws RecognitionException { gFortranParser08.substring(); }

	public void procedure_stmt() throws RecognitionException { gFortranParser08.procedure_stmt(); }

	public void component_array_spec() throws RecognitionException { gFortranParser08.component_array_spec(); }

	public void subroutine_stmt() throws RecognitionException { gFortranParser08.subroutine_stmt(); }

	public void target_decl() throws RecognitionException { gFortranParser08.target_decl(); }

	public void primary() throws RecognitionException { gFortranParser08.primary(); }

	public void common_block_object() throws RecognitionException { gFortranParser08.common_block_object(); }

	public void allocate_shape_spec() throws RecognitionException { gFortranParser08.allocate_shape_spec(); }

	public void named_constant_def() throws RecognitionException { gFortranParser08.named_constant_def(); }

	public void t_prefix_spec() throws RecognitionException { gFortranParser08.t_prefix_spec(); }

	public void sync_stat() throws RecognitionException { gFortranParser08.sync_stat(); }

	public void end_mp_subprogram_stmt() throws RecognitionException { gFortranParser08.end_mp_subprogram_stmt(); }

	public void signed_real_literal_constant() throws RecognitionException { gFortranParser08.signed_real_literal_constant(); }

	public void entity_decl() throws RecognitionException { gFortranParser08.entity_decl(); }

	public void expr() throws RecognitionException { gFortranParser08.expr(); }

	public void component_decl_list() throws RecognitionException { gFortranParser08.component_decl_list(); }

	public void bind_entity() throws RecognitionException { gFortranParser08.bind_entity(); }

	public void add_operand() throws RecognitionException { gFortranParser08.add_operand(); }

	public void pointer_object() throws RecognitionException { gFortranParser08.pointer_object(); }

	public void interface_body() throws RecognitionException { gFortranParser08.interface_body(); }

	public void array_spec_element() throws RecognitionException { gFortranParser08.array_spec_element(); }

	public void if_construct() throws RecognitionException { gFortranParser08.if_construct(); }

	public void interface_stmt() throws RecognitionException { gFortranParser08.interface_stmt(); }

	public void access_id_list() throws RecognitionException { gFortranParser08.access_id_list(); }

	public void derived_type_def() throws RecognitionException { gFortranParser08.derived_type_def(); }

	public void saved_entity_list() throws RecognitionException { gFortranParser08.saved_entity_list(); }

	public void bind_stmt() throws RecognitionException { gFortranParser08.bind_stmt(); }

	public void stmt_label_list() throws RecognitionException { gFortranParser08.stmt_label_list(); }

	public void suffix() throws RecognitionException { gFortranParser08.suffix(); }

	public void equivalence_set() throws RecognitionException { gFortranParser08.equivalence_set(); }

	public void where_construct_stmt() throws RecognitionException { gFortranParser08.where_construct_stmt(); }

	public void type_param_or_comp_def_stmt_list() throws RecognitionException { gFortranParser08.type_param_or_comp_def_stmt_list(); }

	public void close_spec_list() throws RecognitionException { gFortranParser08.close_spec_list(); }

	public void default_char_variable() throws RecognitionException { gFortranParser08.default_char_variable(); }

	public void component_attr_spec_list() throws RecognitionException { gFortranParser08.component_attr_spec_list(); }

	public void parameter_stmt() throws RecognitionException { gFortranParser08.parameter_stmt(); }

	public Token keyword() throws RecognitionException { return gFortranParser08.keyword(); }

	public void label_list() throws RecognitionException { gFortranParser08.label_list(); }

	public void io_implied_do_object() throws RecognitionException { gFortranParser08.io_implied_do_object(); }

	public void format_item_list() throws RecognitionException { gFortranParser08.format_item_list(); }

	public void nullify_stmt() throws RecognitionException { gFortranParser08.nullify_stmt(); }

	public void continue_stmt() throws RecognitionException { gFortranParser08.continue_stmt(); }

	public void end_submodule_stmt() throws RecognitionException { gFortranParser08.end_submodule_stmt(); }

	public void enum_def() throws RecognitionException { gFortranParser08.enum_def(); }

	public void int_constant() throws RecognitionException { gFortranParser08.int_constant(); }

	public void module() throws RecognitionException { gFortranParser08.module(); }

	public void select_type() throws RecognitionException { gFortranParser08.select_type(); }

	public void component_spec_list() throws RecognitionException { gFortranParser08.component_spec_list(); }

	public void pointer_object_list() throws RecognitionException { gFortranParser08.pointer_object_list(); }

	public void errorstop_stmt() throws RecognitionException { gFortranParser08.errorstop_stmt(); }

	public void entry_stmt() throws RecognitionException { gFortranParser08.entry_stmt(); }

	public void io_control_spec_list() throws RecognitionException { gFortranParser08.io_control_spec_list(); }

	public void connect_spec_list() throws RecognitionException { gFortranParser08.connect_spec_list(); }

	public void format_specification() throws RecognitionException { gFortranParser08.format_specification(); }

	public void component_attr_spec() throws RecognitionException { gFortranParser08.component_attr_spec(); }

	public void loop_control() throws RecognitionException { gFortranParser08.loop_control(); }

	public void pause_stmt() throws RecognitionException { gFortranParser08.pause_stmt(); }

	public void private_components_stmt() throws RecognitionException { gFortranParser08.private_components_stmt(); }

	public void forall_body_construct() throws RecognitionException { gFortranParser08.forall_body_construct(); }

	public void null_init() throws RecognitionException { gFortranParser08.null_init(); }

	public void end_subroutine_stmt() throws RecognitionException { gFortranParser08.end_subroutine_stmt(); }

	public void char_length() throws RecognitionException { gFortranParser08.char_length(); }

	public void module_stmt() throws RecognitionException { gFortranParser08.module_stmt(); }

	public void submodule() throws RecognitionException { gFortranParser08.submodule(); }

	public void scalar_int_literal_constant() throws RecognitionException { gFortranParser08.scalar_int_literal_constant(); }

	public void allocate_stmt() throws RecognitionException { gFortranParser08.allocate_stmt(); }

	public Token and_op() throws RecognitionException { return gFortranParser08.and_op(); }

	public void dealloc_opt() throws RecognitionException { gFortranParser08.dealloc_opt(); }

	public void submodule_stmt() throws RecognitionException { gFortranParser08.submodule_stmt(); }

	public void explicit_shape_spec_list() throws RecognitionException { gFortranParser08.explicit_shape_spec_list(); }

	public void level_3_expr() throws RecognitionException { gFortranParser08.level_3_expr(); }

	public void end_if_stmt() throws RecognitionException { gFortranParser08.end_if_stmt(); }

	public void data_stmt_object_list() throws RecognitionException { gFortranParser08.data_stmt_object_list(); }

	public Token label() throws RecognitionException { return gFortranParser08.label(); }

	public void data_stmt_set() throws RecognitionException { gFortranParser08.data_stmt_set(); }

	public void binding_attr_list() throws RecognitionException { gFortranParser08.binding_attr_list(); }

	public void exit_stmt() throws RecognitionException { gFortranParser08.exit_stmt(); }

	public void array_spec() throws RecognitionException { gFortranParser08.array_spec(); }

	public void read_stmt() throws RecognitionException { gFortranParser08.read_stmt(); }

	public void inquire_spec_list() throws RecognitionException { gFortranParser08.inquire_spec_list(); }

	public void associate_construct() throws RecognitionException { gFortranParser08.associate_construct(); }

	public void char_constant() throws RecognitionException { gFortranParser08.char_constant(); }

	public void forall_construct() throws RecognitionException { gFortranParser08.forall_construct(); }

	public void protected_stmt() throws RecognitionException { gFortranParser08.protected_stmt(); }

	public void implicit_spec_list() throws RecognitionException { gFortranParser08.implicit_spec_list(); }

	public void block_do_construct() throws RecognitionException { gFortranParser08.block_do_construct(); }

	public void intent_stmt() throws RecognitionException { gFortranParser08.intent_stmt(); }

	public void data_ref() throws RecognitionException { gFortranParser08.data_ref(); }

	public void dummy_arg_list() throws RecognitionException { gFortranParser08.dummy_arg_list(); }

	public void end_type_stmt() throws RecognitionException { gFortranParser08.end_type_stmt(); }

	public void kind_selector() throws RecognitionException { gFortranParser08.kind_selector(); }

	public void implicit_stmt() throws RecognitionException { gFortranParser08.implicit_stmt(); }

	public void bounds_remapping_list() throws RecognitionException { gFortranParser08.bounds_remapping_list(); }

	public void actual_arg_spec() throws RecognitionException { gFortranParser08.actual_arg_spec(); }

	public void format() throws RecognitionException { gFortranParser08.format(); }

	public void enum_def_stmt() throws RecognitionException { gFortranParser08.enum_def_stmt(); }

	public void end_do_stmt() throws RecognitionException { gFortranParser08.end_do_stmt(); }

	public void open_stmt() throws RecognitionException { gFortranParser08.open_stmt(); }

	public void elsewhere_stmt() throws RecognitionException { gFortranParser08.elsewhere_stmt(); }

	public void type_attr_spec_list() throws RecognitionException { gFortranParser08.type_attr_spec_list(); }

	public void case_value() throws RecognitionException { gFortranParser08.case_value(); }

	public void proc_binding_stmt() throws RecognitionException { gFortranParser08.proc_binding_stmt(); }

	public void enumerator_list() throws RecognitionException { gFortranParser08.enumerator_list(); }

	public void stmt_function_stmt() throws RecognitionException { gFortranParser08.stmt_function_stmt(); }

	public void other_specification_stmt() throws RecognitionException { gFortranParser08.other_specification_stmt(); }

	public Token end_of_stmt() throws RecognitionException { return gFortranParser08.end_of_stmt(); }

	public void output_item() throws RecognitionException { gFortranParser08.output_item(); }

	public void close_stmt() throws RecognitionException { gFortranParser08.close_stmt(); }

	public void scalar_char_constant() throws RecognitionException { gFortranParser08.scalar_char_constant(); }

	public void association() throws RecognitionException { gFortranParser08.association(); }

	public void case_stmt() throws RecognitionException { gFortranParser08.case_stmt(); }

	public void input_item() throws RecognitionException { gFortranParser08.input_item(); }

	public void entity_decl_list() throws RecognitionException { gFortranParser08.entity_decl_list(); }

	public void power_operand() throws RecognitionException { gFortranParser08.power_operand(); }

	public void select_case_stmt() throws RecognitionException { gFortranParser08.select_case_stmt(); }

	public void cray_pointer_assoc() throws RecognitionException { gFortranParser08.cray_pointer_assoc(); }

	public void intrinsic_type_spec() throws RecognitionException { gFortranParser08.intrinsic_type_spec(); }

	public void end_interface_stmt() throws RecognitionException { gFortranParser08.end_interface_stmt(); }

	public void attr_spec_extension() throws RecognitionException { gFortranParser08.attr_spec_extension(); }

	public void result_name() throws RecognitionException { gFortranParser08.result_name(); }

	public void do_variable() throws RecognitionException { gFortranParser08.do_variable(); }

	public void component_decl() throws RecognitionException { gFortranParser08.component_decl(); }

	public void component_data_source() throws RecognitionException { gFortranParser08.component_data_source(); }

	public void binding_private_stmt() throws RecognitionException { gFortranParser08.binding_private_stmt(); }

	public void type_spec() throws RecognitionException { gFortranParser08.type_spec(); }

	public void output_item_list() throws RecognitionException { gFortranParser08.output_item_list(); }

	public void end_module_stmt() throws RecognitionException { gFortranParser08.end_module_stmt(); }

	public void length_selector() throws RecognitionException { gFortranParser08.length_selector(); }

	public void dtv_type_spec() throws RecognitionException { gFortranParser08.dtv_type_spec(); }

	public void target_stmt() throws RecognitionException { gFortranParser08.target_stmt(); }

	public void allocate_object_list() throws RecognitionException { gFortranParser08.allocate_object_list(); }

	public void save_stmt() throws RecognitionException { gFortranParser08.save_stmt(); }

	public void type_param_spec() throws RecognitionException { gFortranParser08.type_param_spec(); }

	public void end_select_type_stmt() throws RecognitionException { gFortranParser08.end_select_type_stmt(); }

	public void ac_value_list() throws RecognitionException { gFortranParser08.ac_value_list(); }

	public void allocation_list() throws RecognitionException { gFortranParser08.allocation_list(); }

	public void function_subprogram() throws RecognitionException { gFortranParser08.function_subprogram(); }

	public void allocatable_decl_list() throws RecognitionException { gFortranParser08.allocatable_decl_list(); }

	public void signed_int_literal_constant() throws RecognitionException { gFortranParser08.signed_int_literal_constant(); }

	public void call_stmt() throws RecognitionException { gFortranParser08.call_stmt(); }

	public void specific_binding() throws RecognitionException { gFortranParser08.specific_binding(); }

	public void equiv_operand() throws RecognitionException { gFortranParser08.equiv_operand(); }

	public void rename_list() throws RecognitionException { gFortranParser08.rename_list(); }

	public void lock_stat_list() throws RecognitionException { gFortranParser08.lock_stat_list(); }

	public void hollerith_literal_constant() throws RecognitionException { gFortranParser08.hollerith_literal_constant(); }

	public void alloc_opt() throws RecognitionException { gFortranParser08.alloc_opt(); }

	public void pointer_decl_list() throws RecognitionException { gFortranParser08.pointer_decl_list(); }

	public void final_binding() throws RecognitionException { gFortranParser08.final_binding(); }

	public void else_if_stmt() throws RecognitionException { gFortranParser08.else_if_stmt(); }

	public void proc_attr_spec_extension() throws RecognitionException { gFortranParser08.proc_attr_spec_extension(); }

	public void wait_stmt() throws RecognitionException { gFortranParser08.wait_stmt(); }

	public void real_part() throws RecognitionException { gFortranParser08.real_part(); }

	public void initialization() throws RecognitionException { gFortranParser08.initialization(); }

	public void end_where_stmt() throws RecognitionException { gFortranParser08.end_where_stmt(); }

	public void forall_header() throws RecognitionException { gFortranParser08.forall_header(); }

	public void array_constructor() throws RecognitionException { gFortranParser08.array_constructor(); }

	public void scalar_default_char_variable() throws RecognitionException { gFortranParser08.scalar_default_char_variable(); }

	public void dealloc_opt_list() throws RecognitionException { gFortranParser08.dealloc_opt_list(); }

	public void execution_part() throws RecognitionException { gFortranParser08.execution_part(); }

	public void pointer_assignment_stmt() throws RecognitionException { gFortranParser08.pointer_assignment_stmt(); }

	public void target_decl_list() throws RecognitionException { gFortranParser08.target_decl_list(); }

	public void data_stmt_object() throws RecognitionException { gFortranParser08.data_stmt_object(); }

	public void type_guard_stmt() throws RecognitionException { gFortranParser08.type_guard_stmt(); }

	public Token power_op() throws RecognitionException { return gFortranParser08.power_op(); }

	public void generic_name_list() throws RecognitionException { gFortranParser08.generic_name_list(); }

	public void dummy_arg() throws RecognitionException { gFortranParser08.dummy_arg(); }

	public void ac_implied_do() throws RecognitionException { gFortranParser08.ac_implied_do(); }

	public void proc_decl_list() throws RecognitionException { gFortranParser08.proc_decl_list(); }

	public void letter_spec() throws RecognitionException { gFortranParser08.letter_spec(); }

	public void end_enum_stmt() throws RecognitionException { gFortranParser08.end_enum_stmt(); }

	public void file_unit_number() throws RecognitionException { gFortranParser08.file_unit_number(); }

	public void if_then_stmt() throws RecognitionException { gFortranParser08.if_then_stmt(); }

	public void sync_all_stmt() throws RecognitionException { gFortranParser08.sync_all_stmt(); }

	public void intent_spec() throws RecognitionException { gFortranParser08.intent_spec(); }

	public void data_component_def_stmt() throws RecognitionException { gFortranParser08.data_component_def_stmt(); }

	public boolean substr_range_or_arg_list_suffix() throws RecognitionException { return gFortranParser08.substr_range_or_arg_list_suffix(); }

	public Token common_block_name() throws RecognitionException { return gFortranParser08.common_block_name(); }

	public void derived_type_spec() throws RecognitionException { gFortranParser08.derived_type_spec(); }

	public void module_subprogram_part() throws RecognitionException { gFortranParser08.module_subprogram_part(); }

	public void block() throws RecognitionException { gFortranParser08.block(); }

	public void interface_block() throws RecognitionException { gFortranParser08.interface_block(); }

	public void bounds_remapping() throws RecognitionException { gFortranParser08.bounds_remapping(); }

	public void prefix_spec() throws RecognitionException { gFortranParser08.prefix_spec(); }

	public void type_param_decl() throws RecognitionException { gFortranParser08.type_param_decl(); }

	public void proc_component_attr_spec() throws RecognitionException { gFortranParser08.proc_component_attr_spec(); }

	public void component_initialization() throws RecognitionException { gFortranParser08.component_initialization(); }

	public void vector_subscript() throws RecognitionException { gFortranParser08.vector_subscript(); }

	public void procedure_declaration_stmt() throws RecognitionException { gFortranParser08.procedure_declaration_stmt(); }

	public void constant() throws RecognitionException { gFortranParser08.constant(); }

	public void designator() throws RecognitionException { gFortranParser08.designator(); }

	public void proc_pointer_object() throws RecognitionException { gFortranParser08.proc_pointer_object(); }

	public void cycle_stmt() throws RecognitionException { gFortranParser08.cycle_stmt(); }

	public void external_stmt() throws RecognitionException { gFortranParser08.external_stmt(); }

	public void allocatable_decl() throws RecognitionException { gFortranParser08.allocatable_decl(); }

	public void only_list() throws RecognitionException { gFortranParser08.only_list(); }

	public void ac_implied_do_control() throws RecognitionException { gFortranParser08.ac_implied_do_control(); }

	public void rename() throws RecognitionException { gFortranParser08.rename(); }

	public void alloc_opt_list() throws RecognitionException { gFortranParser08.alloc_opt_list(); }

	public void proc_component_def_stmt() throws RecognitionException { gFortranParser08.proc_component_def_stmt(); }

	public Token defined_unary_op() throws RecognitionException { return gFortranParser08.defined_unary_op(); }

	public void namelist_stmt() throws RecognitionException { gFortranParser08.namelist_stmt(); }

	public Token object_name() throws RecognitionException { return gFortranParser08.object_name(); }

	public void pointer_decl() throws RecognitionException { gFortranParser08.pointer_decl(); }

	public void common_block_object_list() throws RecognitionException { gFortranParser08.common_block_object_list(); }

	public void imag_part() throws RecognitionException { gFortranParser08.imag_part(); }

	public void deallocate_stmt() throws RecognitionException { gFortranParser08.deallocate_stmt(); }

	public void namelist_group_object_list() throws RecognitionException { gFortranParser08.namelist_group_object_list(); }

	public void else_stmt() throws RecognitionException { gFortranParser08.else_stmt(); }

	public void case_selector() throws RecognitionException { gFortranParser08.case_selector(); }

	public void io_control_spec() throws RecognitionException { gFortranParser08.io_control_spec(); }

	public void prefix() throws RecognitionException { gFortranParser08.prefix(); }

	public void level_2_expr() throws RecognitionException { gFortranParser08.level_2_expr(); }

	public void boz_literal_constant() throws RecognitionException { gFortranParser08.boz_literal_constant(); }

	public void defined_io_generic_spec() throws RecognitionException { gFortranParser08.defined_io_generic_spec(); }

	public void forall_assignment_stmt() throws RecognitionException { gFortranParser08.forall_assignment_stmt(); }

	public void equivalence_object_list() throws RecognitionException { gFortranParser08.equivalence_object_list(); }

	public void end_associate_stmt() throws RecognitionException { gFortranParser08.end_associate_stmt(); }

	public void case_value_range_suffix() throws RecognitionException { gFortranParser08.case_value_range_suffix(); }

	public void end_program_stmt() throws RecognitionException { gFortranParser08.end_program_stmt(); }

	public void io_implied_do() throws RecognitionException { gFortranParser08.io_implied_do(); }

	public void volatile_stmt() throws RecognitionException { gFortranParser08.volatile_stmt(); }

	public void asynchronous_stmt() throws RecognitionException { gFortranParser08.asynchronous_stmt(); }

	public void allocate_shape_spec_list() throws RecognitionException { gFortranParser08.allocate_shape_spec_list(); }

	public void declaration_construct_and_block() throws RecognitionException { gFortranParser08.declaration_construct_and_block(); }

	public void ext_function_subprogram() throws RecognitionException { gFortranParser08.ext_function_subprogram(); }

	public void inquire_stmt() throws RecognitionException { gFortranParser08.inquire_stmt(); }

	public void designator_or_func_ref() throws RecognitionException { gFortranParser08.designator_or_func_ref(); }

	public void data_stmt_value() throws RecognitionException { gFortranParser08.data_stmt_value(); }

	public void ac_value() throws RecognitionException { gFortranParser08.ac_value(); }

	public Token add_op() throws RecognitionException { return gFortranParser08.add_op(); }

	public void block_data_stmt() throws RecognitionException { gFortranParser08.block_data_stmt(); }

	public void common_stmt() throws RecognitionException { gFortranParser08.common_stmt(); }

	public void optional_stmt() throws RecognitionException { gFortranParser08.optional_stmt(); }

	public void type_param_or_comp_def_stmt() throws RecognitionException { gFortranParser08.type_param_or_comp_def_stmt(); }

	public void codimension_stmt() throws RecognitionException { gFortranParser08.codimension_stmt(); }

	public void proc_attr_spec() throws RecognitionException { gFortranParser08.proc_attr_spec(); }

	public void data_stmt() throws RecognitionException { gFortranParser08.data_stmt(); }

	public void literal_constant() throws RecognitionException { gFortranParser08.literal_constant(); }

	public void access_id() throws RecognitionException { gFortranParser08.access_id(); }

	public void named_constant_def_list() throws RecognitionException { gFortranParser08.named_constant_def_list(); }

	public boolean substring_range_or_arg_list() throws RecognitionException { return gFortranParser08.substring_range_or_arg_list(); }

	public void separate_module_subprogram() throws RecognitionException { gFortranParser08.separate_module_subprogram(); }

	public void program_stmt() throws RecognitionException { gFortranParser08.program_stmt(); }

	public Token or_op() throws RecognitionException { return gFortranParser08.or_op(); }

	public void end_block_data_stmt() throws RecognitionException { gFortranParser08.end_block_data_stmt(); }

	public void sync_images_stmt() throws RecognitionException { gFortranParser08.sync_images_stmt(); }

	public void main_program() throws RecognitionException { gFortranParser08.main_program(); }

	public void execution_part_construct() throws RecognitionException { gFortranParser08.execution_part_construct(); }

	public void label_do_stmt() throws RecognitionException { gFortranParser08.label_do_stmt(); }

	public Token not_op() throws RecognitionException { return gFortranParser08.not_op(); }

	public void do_term_action_stmt() throws RecognitionException { gFortranParser08.do_term_action_stmt(); }

	public void sequence_stmt() throws RecognitionException { gFortranParser08.sequence_stmt(); }

	public void assignment_stmt() throws RecognitionException { gFortranParser08.assignment_stmt(); }

	public void io_implied_do_suffix() throws RecognitionException { gFortranParser08.io_implied_do_suffix(); }

	public void allocate_coshape_spec() throws RecognitionException { gFortranParser08.allocate_coshape_spec(); }

	public void language_binding_spec() throws RecognitionException { gFortranParser08.language_binding_spec(); }

	public void variable() throws RecognitionException { gFortranParser08.variable(); }

	public void dimension_stmt() throws RecognitionException { gFortranParser08.dimension_stmt(); }

	public void block_stmt() throws RecognitionException { gFortranParser08.block_stmt(); }

	public void wait_spec_list() throws RecognitionException { gFortranParser08.wait_spec_list(); }

	public void io_unit() throws RecognitionException { gFortranParser08.io_unit(); }

	public void char_selector() throws RecognitionException { gFortranParser08.char_selector(); }

	public void stop_code() throws RecognitionException { gFortranParser08.stop_code(); }

	public Token equiv_op() throws RecognitionException { return gFortranParser08.equiv_op(); }

	public void where_construct() throws RecognitionException { gFortranParser08.where_construct(); }

	public void and_operand() throws RecognitionException { gFortranParser08.and_operand(); }

	public Token intrinsic_operator() throws RecognitionException { return gFortranParser08.intrinsic_operator(); }

	public void subroutine_subprogram() throws RecognitionException { gFortranParser08.subroutine_subprogram(); }

	public void specification_part_and_block() throws RecognitionException { gFortranParser08.specification_part_and_block(); }

	public void type_attr_spec() throws RecognitionException { gFortranParser08.type_attr_spec(); }

	public void case_construct() throws RecognitionException { gFortranParser08.case_construct(); }

	public void ac_spec() throws RecognitionException { gFortranParser08.ac_spec(); }

	public void where_stmt() throws RecognitionException { gFortranParser08.where_stmt(); }

	public void assigned_goto_stmt() throws RecognitionException { gFortranParser08.assigned_goto_stmt(); }

	public void lock_stat() throws RecognitionException { gFortranParser08.lock_stat(); }

	public void scalar_int_constant() throws RecognitionException { gFortranParser08.scalar_int_constant(); }

	public void flush_stmt() throws RecognitionException { gFortranParser08.flush_stmt(); }

	public Token mult_op() throws RecognitionException { return gFortranParser08.mult_op(); }

	public void equivalence_set_list() throws RecognitionException { gFortranParser08.equivalence_set_list(); }

	public void dimension_decl() throws RecognitionException { gFortranParser08.dimension_decl(); }

	public void allocate_coshape_spec_list() throws RecognitionException { gFortranParser08.allocate_coshape_spec_list(); }

	public void parent_identifier() throws RecognitionException { gFortranParser08.parent_identifier(); }

	public void codimension_decl() throws RecognitionException { gFortranParser08.codimension_decl(); }

	public void interface_specification() throws RecognitionException { gFortranParser08.interface_specification(); }

	public void complex_literal_constant() throws RecognitionException { gFortranParser08.complex_literal_constant(); }

	public void position_spec() throws RecognitionException { gFortranParser08.position_spec(); }

	public void intrinsic_stmt() throws RecognitionException { gFortranParser08.intrinsic_stmt(); }

	public void component_spec() throws RecognitionException { gFortranParser08.component_spec(); }

	public void selector() throws RecognitionException { gFortranParser08.selector(); }

	public void real_literal_constant() throws RecognitionException { gFortranParser08.real_literal_constant(); }

	public void equivalence_stmt() throws RecognitionException { gFortranParser08.equivalence_stmt(); }

	public void letter_spec_list() throws RecognitionException { gFortranParser08.letter_spec_list(); }

	public void association_list() throws RecognitionException { gFortranParser08.association_list(); }

	public void arithmetic_if_stmt() throws RecognitionException { gFortranParser08.arithmetic_if_stmt(); }

	public void data_i_do_object_list() throws RecognitionException { gFortranParser08.data_i_do_object_list(); }

	public void type_param_attr_spec() throws RecognitionException { gFortranParser08.type_param_attr_spec(); }

	public void declaration_type_spec() throws RecognitionException { gFortranParser08.declaration_type_spec(); }

	public void t_prefix() throws RecognitionException { gFortranParser08.t_prefix(); }

	public void defined_operator() throws RecognitionException { gFortranParser08.defined_operator(); }

	public void rewind_stmt() throws RecognitionException { gFortranParser08.rewind_stmt(); }

	public void only() throws RecognitionException { gFortranParser08.only(); }

	public void end_function_stmt() throws RecognitionException { gFortranParser08.end_function_stmt(); }

	public void default_logical_variable() throws RecognitionException { gFortranParser08.default_logical_variable(); }

	public void case_value_range_list() throws RecognitionException { gFortranParser08.case_value_range_list(); }

	public void coarray_spec() throws RecognitionException { gFortranParser08.coarray_spec(); }

	public void end_critical_stmt() throws RecognitionException { gFortranParser08.end_critical_stmt(); }

	public void internal_subprogram_part() throws RecognitionException { gFortranParser08.internal_subprogram_part(); }

	public void forall_triplet_spec() throws RecognitionException { gFortranParser08.forall_triplet_spec(); }

	public void computed_goto_stmt() throws RecognitionException { gFortranParser08.computed_goto_stmt(); }

	public void stop_stmt() throws RecognitionException { gFortranParser08.stop_stmt(); }

	public void module_subprogram() throws RecognitionException { gFortranParser08.module_subprogram(); }

	public void component_attr_spec_extension() throws RecognitionException { gFortranParser08.component_attr_spec_extension(); }

	public void scalar_default_logical_variable() throws RecognitionException { gFortranParser08.scalar_default_logical_variable(); }

	public void end_select_stmt() throws RecognitionException { gFortranParser08.end_select_stmt(); }

	public void do_construct() throws RecognitionException { gFortranParser08.do_construct(); }

	public void substring_range() throws RecognitionException { gFortranParser08.substring_range(); }

	public void backspace_stmt() throws RecognitionException { gFortranParser08.backspace_stmt(); }

	public void end_do() throws RecognitionException { gFortranParser08.end_do(); }

	public void critical_stmt() throws RecognitionException { gFortranParser08.critical_stmt(); }

	public Token kind_param() throws RecognitionException { return gFortranParser08.kind_param(); }

	public void deferred_shape_spec_list() throws RecognitionException { gFortranParser08.deferred_shape_spec_list(); }

	public void assign_stmt() throws RecognitionException { gFortranParser08.assign_stmt(); }

	public void position_spec_list() throws RecognitionException { gFortranParser08.position_spec_list(); }

	public void v_list() throws RecognitionException { gFortranParser08.v_list(); }

	public void level_5_expr() throws RecognitionException { gFortranParser08.level_5_expr(); }

	public void char_literal_constant() throws RecognitionException { gFortranParser08.char_literal_constant(); }

	public void bounds_spec() throws RecognitionException { gFortranParser08.bounds_spec(); }

	public void inquire_spec() throws RecognitionException { gFortranParser08.inquire_spec(); }

	public void data_stmt_value_list() throws RecognitionException { gFortranParser08.data_stmt_value_list(); }

	public void int_literal_constant() throws RecognitionException { gFortranParser08.int_literal_constant(); }

	public void masked_elsewhere_stmt() throws RecognitionException { gFortranParser08.masked_elsewhere_stmt(); }

	public void scalar_constant() throws RecognitionException { gFortranParser08.scalar_constant(); }

	public void write_stmt() throws RecognitionException { gFortranParser08.write_stmt(); }

	public void component_def_stmt() throws RecognitionException { gFortranParser08.component_def_stmt(); }

	public void block_construct() throws RecognitionException { gFortranParser08.block_construct(); }

	public void type_param_value() throws RecognitionException { gFortranParser08.type_param_value(); }

	public void codimension_decl_list() throws RecognitionException { gFortranParser08.codimension_decl_list(); }

	public void end_forall_stmt() throws RecognitionException { gFortranParser08.end_forall_stmt(); }

	public void or_operand() throws RecognitionException { gFortranParser08.or_operand(); }

	public void enumerator() throws RecognitionException { gFortranParser08.enumerator(); }

	public void use_stmt() throws RecognitionException { gFortranParser08.use_stmt(); }

	public void implicit_spec() throws RecognitionException { gFortranParser08.implicit_spec(); }

	public void value_stmt() throws RecognitionException { gFortranParser08.value_stmt(); }

	public void binding_attr() throws RecognitionException { gFortranParser08.binding_attr(); }

	public void proc_component_attr_spec_list() throws RecognitionException { gFortranParser08.proc_component_attr_spec_list(); }

	public void block_data() throws RecognitionException { gFortranParser08.block_data(); }

	public void format_item() throws RecognitionException { gFortranParser08.format_item(); }

	public void module_nature() throws RecognitionException { gFortranParser08.module_nature(); }

	public void actual_arg_spec_list() throws RecognitionException { gFortranParser08.actual_arg_spec_list(); }

	public void input_item_list() throws RecognitionException { gFortranParser08.input_item_list(); }

	public void generic_binding() throws RecognitionException { gFortranParser08.generic_binding(); }

	public void data_i_do_object() throws RecognitionException { gFortranParser08.data_i_do_object(); }

	public void goto_stmt() throws RecognitionException { gFortranParser08.goto_stmt(); }

	public void logical_variable() throws RecognitionException { gFortranParser08.logical_variable(); }

	public void internal_subprogram() throws RecognitionException { gFortranParser08.internal_subprogram(); }

	public void equivalence_object() throws RecognitionException { gFortranParser08.equivalence_object(); }

	public void forall_construct_stmt() throws RecognitionException { gFortranParser08.forall_construct_stmt(); }

	public void unlock_stmt() throws RecognitionException { gFortranParser08.unlock_stmt(); }

	public void io_implied_do_control() throws RecognitionException { gFortranParser08.io_implied_do_control(); }

	public void lock_stmt() throws RecognitionException { gFortranParser08.lock_stmt(); }

	public Token name() throws RecognitionException { return gFortranParser08.name(); }

	public void access_spec() throws RecognitionException { gFortranParser08.access_spec(); }

	public void declaration_construct() throws RecognitionException { gFortranParser08.declaration_construct(); }

	public void actual_arg() throws RecognitionException { gFortranParser08.actual_arg(); }

	public void pointer_stmt() throws RecognitionException { gFortranParser08.pointer_stmt(); }

	public void access_stmt() throws RecognitionException { gFortranParser08.access_stmt(); }

	public void proc_interface() throws RecognitionException { gFortranParser08.proc_interface(); }

	public Token defined_binary_op() throws RecognitionException { return gFortranParser08.defined_binary_op(); }

	public void select_type_stmt() throws RecognitionException { gFortranParser08.select_type_stmt(); }

	public void data_stmt_constant() throws RecognitionException { gFortranParser08.data_stmt_constant(); }

	public void wait_spec() throws RecognitionException { gFortranParser08.wait_spec(); }

	public Token concat_op() throws RecognitionException { return gFortranParser08.concat_op(); }

	public void critical_construct() throws RecognitionException { gFortranParser08.critical_construct(); }

	public void cray_pointer_assoc_list() throws RecognitionException { gFortranParser08.cray_pointer_assoc_list(); }

	public void data_pointer_object() throws RecognitionException { gFortranParser08.data_pointer_object(); }

	public void format_stmt() throws RecognitionException { gFortranParser08.format_stmt(); }

	public void level_1_expr() throws RecognitionException { gFortranParser08.level_1_expr(); }

	public void where_body_construct() throws RecognitionException { gFortranParser08.where_body_construct(); }

	public void private_or_sequence() throws RecognitionException { gFortranParser08.private_or_sequence(); }

	public void return_stmt() throws RecognitionException { gFortranParser08.return_stmt(); }

	public void sync_memory_stmt() throws RecognitionException { gFortranParser08.sync_memory_stmt(); }

	public void function_stmt() throws RecognitionException { gFortranParser08.function_stmt(); }

	public void proc_decl() throws RecognitionException { gFortranParser08.proc_decl(); }

	public void endfile_stmt() throws RecognitionException { gFortranParser08.endfile_stmt(); }

	public void data_implied_do() throws RecognitionException { gFortranParser08.data_implied_do(); }

	public void saved_entity() throws RecognitionException { gFortranParser08.saved_entity(); }

	public void structure_constructor() throws RecognitionException { gFortranParser08.structure_constructor(); }

	public void char_variable() throws RecognitionException { gFortranParser08.char_variable(); }

	public void case_value_range() throws RecognitionException { gFortranParser08.case_value_range(); }

	public void forall_triplet_spec_list() throws RecognitionException { gFortranParser08.forall_triplet_spec_list(); }

	public void derived_type_stmt() throws RecognitionException { gFortranParser08.derived_type_stmt(); }

	public final boolean synpred6_FortranParserExtras() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred6_FortranParserExtras_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred4_FortranParserExtras() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred4_FortranParserExtras_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred8_FortranParserExtras() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred8_FortranParserExtras_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred11_FortranParserExtras() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred11_FortranParserExtras_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred10_FortranParserExtras() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred10_FortranParserExtras_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred3_FortranParserExtras() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred3_FortranParserExtras_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred5_FortranParserExtras() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred5_FortranParserExtras_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred7_FortranParserExtras() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred7_FortranParserExtras_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred2_FortranParserExtras() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred2_FortranParserExtras_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred1_FortranParserExtras() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred1_FortranParserExtras_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred9_FortranParserExtras() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred9_FortranParserExtras_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}


	protected DFA4 dfa4 = new DFA4(this);
	static final String DFA4_eotS =
		"\145\uffff";
	static final String DFA4_eofS =
		"\145\uffff";
	static final String DFA4_minS =
		"\1\23\1\0\1\uffff\3\0\137\uffff";
	static final String DFA4_maxS =
		"\1\u00f2\1\0\1\uffff\3\0\137\uffff";
	static final String DFA4_acceptS =
		"\2\uffff\1\1\3\uffff\1\5\133\uffff\1\2\1\3\1\4";
	static final String DFA4_specialS =
		"\1\0\1\1\1\uffff\1\2\1\3\1\4\137\uffff}>";
	static final String[] DFA4_transitionS = {
			"\1\6\2\uffff\3\6\1\uffff\2\6\1\uffff\2\6\1\uffff\1\6\1\uffff\1\6\1\uffff"+
			"\2\6\1\uffff\1\6\1\uffff\1\6\2\uffff\3\6\3\uffff\2\6\1\uffff\1\6\1\uffff"+
			"\1\6\3\uffff\3\6\1\uffff\1\6\3\uffff\1\1\5\6\5\uffff\1\6\1\uffff\2\6"+
			"\3\uffff\1\6\1\uffff\1\6\2\uffff\3\6\2\uffff\1\6\3\uffff\1\5\1\6\5\uffff"+
			"\1\6\3\uffff\1\6\1\uffff\1\6\1\uffff\1\6\4\uffff\1\6\1\uffff\2\6\1\4"+
			"\4\uffff\2\6\4\uffff\3\6\1\uffff\1\2\5\uffff\6\6\7\uffff\1\6\1\uffff"+
			"\1\6\5\uffff\1\6\10\uffff\1\6\1\uffff\1\6\1\uffff\1\6\2\uffff\1\3\1\uffff"+
			"\1\6\4\uffff\1\6\2\uffff\3\6\1\uffff\3\6\2\uffff\2\6\3\uffff\2\6\1\uffff"+
			"\4\6\5\uffff\2\6\2\uffff\2\6\5\uffff\1\6\2\uffff\1\6\1\uffff\3\6\1\uffff"+
			"\2\6\3\uffff\1\6",
			"\1\uffff",
			"",
			"\1\uffff",
			"\1\uffff",
			"\1\uffff",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			"",
			""
	};

	static final short[] DFA4_eot = DFA.unpackEncodedString(DFA4_eotS);
	static final short[] DFA4_eof = DFA.unpackEncodedString(DFA4_eofS);
	static final char[] DFA4_min = DFA.unpackEncodedStringToUnsignedChars(DFA4_minS);
	static final char[] DFA4_max = DFA.unpackEncodedStringToUnsignedChars(DFA4_maxS);
	static final short[] DFA4_accept = DFA.unpackEncodedString(DFA4_acceptS);
	static final short[] DFA4_special = DFA.unpackEncodedString(DFA4_specialS);
	static final short[][] DFA4_transition;

	static {
		int numStates = DFA4_transitionS.length;
		DFA4_transition = new short[numStates][];
		for (int i=0; i<numStates; i++) {
			DFA4_transition[i] = DFA.unpackEncodedString(DFA4_transitionS[i]);
		}
	}

	protected class DFA4 extends DFA {

		public DFA4(BaseRecognizer recognizer) {
			this.recognizer = recognizer;
			this.decisionNumber = 4;
			this.eot = DFA4_eot;
			this.eof = DFA4_eof;
			this.min = DFA4_min;
			this.max = DFA4_max;
			this.accept = DFA4_accept;
			this.special = DFA4_special;
			this.transition = DFA4_transition;
		}
		@Override
		public String getDescription() {
			return "96:1: implicit_part_recursion : ( ( ( label )? T_IMPLICIT )=> implicit_stmt implicit_part_recursion | ( ( label )? T_PARAMETER )=> parameter_stmt implicit_part_recursion | ( ( label )? T_FORMAT )=> format_stmt implicit_part_recursion | ( ( label )? T_ENTRY )=> entry_stmt implicit_part_recursion |);";
		}
		@Override
		public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
			TokenStream input = (TokenStream)_input;
			int _s = s;
			switch ( s ) {
					case 0 : 
						int LA4_0 = input.LA(1);
						 
						int index4_0 = input.index();
						input.rewind();
						s = -1;
						if ( (LA4_0==T_DIGIT_STRING) ) {s = 1;}
						else if ( (LA4_0==T_IMPLICIT) && (synpred1_FortranParserExtras())) {s = 2;}
						else if ( (LA4_0==T_PARAMETER) ) {s = 3;}
						else if ( (LA4_0==T_FORMAT) ) {s = 4;}
						else if ( (LA4_0==T_ENTRY) ) {s = 5;}
						else if ( (LA4_0==T_ABSTRACT||(LA4_0 >= T_ALLOCATABLE && LA4_0 <= T_ALLOCATE_STMT_1)||(LA4_0 >= T_ARITHMETIC_IF_STMT && LA4_0 <= T_ASSIGN)||(LA4_0 >= T_ASSIGNMENT_STMT && LA4_0 <= T_ASSOCIATE)||LA4_0==T_ASYNCHRONOUS||LA4_0==T_BACKSPACE||(LA4_0 >= T_BIND && LA4_0 <= T_BLOCK)||LA4_0==T_CALL||LA4_0==T_CHARACTER||(LA4_0 >= T_CLASS && LA4_0 <= T_CODIMENSION)||(LA4_0 >= T_COMMON && LA4_0 <= T_COMPLEX)||LA4_0==T_CONTAINS||LA4_0==T_CONTINUE||(LA4_0 >= T_CRITICAL && LA4_0 <= T_DATA)||LA4_0==T_DEALLOCATE||(LA4_0 >= T_DIMENSION && LA4_0 <= T_DOUBLEPRECISION)||LA4_0==T_END||(LA4_0 >= T_ENDBLOCK && LA4_0 <= T_ENDBLOCKDATA)||LA4_0==T_ENDFILE||LA4_0==T_ENDFUNCTION||(LA4_0 >= T_ENDMODULE && LA4_0 <= T_ENDPROGRAM)||LA4_0==T_ENDSUBROUTINE||LA4_0==T_ENUM||LA4_0==T_EQUIVALENCE||LA4_0==T_ERROR||LA4_0==T_EXIT||LA4_0==T_EXTERNAL||LA4_0==T_FLUSH||(LA4_0 >= T_FORALL_CONSTRUCT_STMT && LA4_0 <= T_FORALL_STMT)||(LA4_0 >= T_GO && LA4_0 <= T_GOTO)||(LA4_0 >= T_IDENT && LA4_0 <= T_IF_STMT)||(LA4_0 >= T_INQUIRE && LA4_0 <= T_INTRINSIC)||LA4_0==T_LOCK||LA4_0==T_LOGICAL||LA4_0==T_NAMELIST||LA4_0==T_NULLIFY||LA4_0==T_OPEN||LA4_0==T_OPTIONAL||LA4_0==T_PAUSE||LA4_0==T_POINTER||(LA4_0 >= T_PRINT && LA4_0 <= T_PROCEDURE)||(LA4_0 >= T_PROTECTED && LA4_0 <= T_PUBLIC)||(LA4_0 >= T_READ && LA4_0 <= T_REAL)||(LA4_0 >= T_RETURN && LA4_0 <= T_REWIND)||(LA4_0 >= T_SAVE && LA4_0 <= T_SELECTTYPE)||(LA4_0 >= T_STMT_FUNCTION && LA4_0 <= T_STOP)||(LA4_0 >= T_SYNC && LA4_0 <= T_TARGET)||LA4_0==T_TYPE||LA4_0==T_UNLOCK||(LA4_0 >= T_VALUE && LA4_0 <= T_WAIT)||(LA4_0 >= T_WHERE_CONSTRUCT_STMT && LA4_0 <= T_WHERE_STMT)||LA4_0==T_WRITE) ) {s = 6;}
						 
						input.seek(index4_0);
						if ( s>=0 ) return s;
						break;

					case 1 : 
						int LA4_1 = input.LA(1);
						 
						int index4_1 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred1_FortranParserExtras()) ) {s = 2;}
						else if ( (synpred2_FortranParserExtras()) ) {s = 98;}
						else if ( (synpred3_FortranParserExtras()) ) {s = 99;}
						else if ( (synpred4_FortranParserExtras()) ) {s = 100;}
						else if ( (true) ) {s = 6;}
						 
						input.seek(index4_1);
						if ( s>=0 ) return s;
						break;

					case 2 : 
						int LA4_3 = input.LA(1);
						 
						int index4_3 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred2_FortranParserExtras()) ) {s = 98;}
						else if ( (true) ) {s = 6;}
						 
						input.seek(index4_3);
						if ( s>=0 ) return s;
						break;

					case 3 : 
						int LA4_4 = input.LA(1);
						 
						int index4_4 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred3_FortranParserExtras()) ) {s = 99;}
						else if ( (true) ) {s = 6;}
						 
						input.seek(index4_4);
						if ( s>=0 ) return s;
						break;

					case 4 : 
						int LA4_5 = input.LA(1);
						 
						int index4_5 = input.index();
						input.rewind();
						s = -1;
						if ( (synpred4_FortranParserExtras()) ) {s = 100;}
						else if ( (true) ) {s = 6;}
						 
						input.seek(index4_5);
						if ( s>=0 ) return s;
						break;
			}
			if (state.backtracking>0) {state.failed=true; return -1;}
			NoViableAltException nvae =
				new NoViableAltException(getDescription(), 4, _s, input);
			error(nvae);
			throw nvae;
		}
	}

	public static final BitSet FOLLOW_use_stmt_in_specification_part92 = new BitSet(new long[]{0x200C521100480000L,0x08040418000001D8L,0x10240020803C0C00L,0x000007104201022BL});
	public static final BitSet FOLLOW_import_stmt_in_specification_part108 = new BitSet(new long[]{0x200C521100480000L,0x08040418000001D8L,0x10240020803C0C00L,0x000006104201022BL});
	public static final BitSet FOLLOW_implicit_part_recursion_in_specification_part122 = new BitSet(new long[]{0x200C521100480002L,0x08040418000001D8L,0x10240020803C0000L,0x000006104201022BL});
	public static final BitSet FOLLOW_declaration_construct_in_specification_part134 = new BitSet(new long[]{0x200C521100480002L,0x08040418000001D8L,0x10240020803C0000L,0x000006104201022BL});
	public static final BitSet FOLLOW_implicit_stmt_in_implicit_part_recursion191 = new BitSet(new long[]{0x0000000000000000L,0x0800000800000008L,0x0020000000000400L});
	public static final BitSet FOLLOW_implicit_part_recursion_in_implicit_part_recursion196 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_parameter_stmt_in_implicit_part_recursion216 = new BitSet(new long[]{0x0000000000000000L,0x0800000800000008L,0x0020000000000400L});
	public static final BitSet FOLLOW_implicit_part_recursion_in_implicit_part_recursion220 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_format_stmt_in_implicit_part_recursion243 = new BitSet(new long[]{0x0000000000000000L,0x0800000800000008L,0x0020000000000400L});
	public static final BitSet FOLLOW_implicit_part_recursion_in_implicit_part_recursion250 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_entry_stmt_in_implicit_part_recursion274 = new BitSet(new long[]{0x0000000000000000L,0x0800000800000008L,0x0020000000000400L});
	public static final BitSet FOLLOW_implicit_part_recursion_in_implicit_part_recursion282 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_action_stmt_in_executable_construct318 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_associate_construct_in_executable_construct327 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_block_construct_in_executable_construct336 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_case_construct_in_executable_construct362 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_critical_construct_in_executable_construct371 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_do_construct_in_executable_construct394 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_forall_construct_in_executable_construct403 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_if_construct_in_executable_construct412 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_select_type_construct_in_executable_construct421 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_where_construct_in_executable_construct430 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_allocate_stmt_in_action_stmt473 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_assignment_stmt_in_action_stmt482 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_backspace_stmt_in_action_stmt491 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_call_stmt_in_action_stmt500 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_close_stmt_in_action_stmt509 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_continue_stmt_in_action_stmt518 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_cycle_stmt_in_action_stmt527 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_deallocate_stmt_in_action_stmt536 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_endfile_stmt_in_action_stmt552 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_errorstop_stmt_in_action_stmt561 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_exit_stmt_in_action_stmt586 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_flush_stmt_in_action_stmt595 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_forall_stmt_in_action_stmt604 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_goto_stmt_in_action_stmt613 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_if_stmt_in_action_stmt622 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_inquire_stmt_in_action_stmt631 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_lock_stmt_in_action_stmt642 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_nullify_stmt_in_action_stmt672 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_open_stmt_in_action_stmt681 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_pointer_assignment_stmt_in_action_stmt690 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_print_stmt_in_action_stmt699 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_read_stmt_in_action_stmt708 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_return_stmt_in_action_stmt717 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_rewind_stmt_in_action_stmt726 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_stop_stmt_in_action_stmt735 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_sync_all_stmt_in_action_stmt744 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_sync_images_stmt_in_action_stmt770 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_sync_memory_stmt_in_action_stmt793 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_unlock_stmt_in_action_stmt816 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_wait_stmt_in_action_stmt844 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_where_stmt_in_action_stmt853 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_write_stmt_in_action_stmt862 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_arithmetic_if_stmt_in_action_stmt871 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_computed_goto_stmt_in_action_stmt880 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_assign_stmt_in_action_stmt889 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_assigned_goto_stmt_in_action_stmt917 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_pause_stmt_in_action_stmt938 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_label_in_type_declaration_stmt997 = new BitSet(new long[]{0x0008120000000000L,0x00000000000001C0L,0x0000000080040000L,0x0000001000000200L});
	public static final BitSet FOLLOW_declaration_type_spec_in_type_declaration_stmt1003 = new BitSet(new long[]{0x0003000000000000L,0x0000000000000000L,0x0000000000000040L});
	public static final BitSet FOLLOW_T_COMMA_in_type_declaration_stmt1010 = new BitSet(new long[]{0x0040401100400000L,0x0004000000000010L,0x1024200004680000L,0x0000060040010029L});
	public static final BitSet FOLLOW_attr_spec_in_type_declaration_stmt1012 = new BitSet(new long[]{0x0003000000000000L});
	public static final BitSet FOLLOW_T_COLON_COLON_in_type_declaration_stmt1018 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
	public static final BitSet FOLLOW_entity_decl_list_in_type_declaration_stmt1025 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
	public static final BitSet FOLLOW_end_of_stmt_in_type_declaration_stmt1027 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_IDENT_in_part_ref1122 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_T_LPAREN_in_part_ref1124 = new BitSet(new long[]{0x0003840080004420L,0x000800000000000CL,0x0800100901000060L,0x0000000800000400L});
	public static final BitSet FOLLOW_section_subscript_list_in_part_ref1126 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
	public static final BitSet FOLLOW_T_RPAREN_in_part_ref1128 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000001000000L});
	public static final BitSet FOLLOW_image_selector_in_part_ref1160 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_IDENT_in_part_ref1194 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000001000000L});
	public static final BitSet FOLLOW_image_selector_in_part_ref1196 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_IDENT_in_part_ref1218 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_IDENT_in_part_ref_no_image_selector1267 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_T_LPAREN_in_part_ref_no_image_selector1269 = new BitSet(new long[]{0x0003840080004420L,0x000800000000000CL,0x0800100901000060L,0x0000000800000400L});
	public static final BitSet FOLLOW_section_subscript_list_in_part_ref_no_image_selector1271 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
	public static final BitSet FOLLOW_T_RPAREN_in_part_ref_no_image_selector1273 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_IDENT_in_part_ref_no_image_selector1295 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expr_in_section_subscript1344 = new BitSet(new long[]{0x0001800000000000L});
	public static final BitSet FOLLOW_section_subscript_ambiguous_in_section_subscript1346 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_COLON_in_section_subscript1355 = new BitSet(new long[]{0x0000840000004422L,0x000800000000000CL,0x0800100901000060L,0x0000000800000400L});
	public static final BitSet FOLLOW_expr_in_section_subscript1358 = new BitSet(new long[]{0x0000800000000002L});
	public static final BitSet FOLLOW_T_COLON_in_section_subscript1365 = new BitSet(new long[]{0x0000040000004420L,0x000800000000000CL,0x0800100901000060L,0x0000000800000400L});
	public static final BitSet FOLLOW_expr_in_section_subscript1367 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_COLON_COLON_in_section_subscript1393 = new BitSet(new long[]{0x0000040000004420L,0x000800000000000CL,0x0800100901000060L,0x0000000800000400L});
	public static final BitSet FOLLOW_expr_in_section_subscript1395 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_IDENT_in_section_subscript1417 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
	public static final BitSet FOLLOW_T_EQUALS_in_section_subscript1419 = new BitSet(new long[]{0x0000040000004420L,0x000800000000000CL,0x0800100901000060L,0x0000000800000400L});
	public static final BitSet FOLLOW_expr_in_section_subscript1421 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_IDENT_in_section_subscript1444 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
	public static final BitSet FOLLOW_T_EQUALS_in_section_subscript1446 = new BitSet(new long[]{0x0000000080000000L});
	public static final BitSet FOLLOW_T_ASTERISK_in_section_subscript1448 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
	public static final BitSet FOLLOW_label_in_section_subscript1450 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_ASTERISK_in_section_subscript1473 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
	public static final BitSet FOLLOW_label_in_section_subscript1475 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_COLON_in_section_subscript_ambiguous1525 = new BitSet(new long[]{0x0000840000004422L,0x000800000000000CL,0x0800100901000060L,0x0000000800000400L});
	public static final BitSet FOLLOW_expr_in_section_subscript_ambiguous1528 = new BitSet(new long[]{0x0000800000000002L});
	public static final BitSet FOLLOW_T_COLON_in_section_subscript_ambiguous1535 = new BitSet(new long[]{0x0000040000004420L,0x000800000000000CL,0x0800100901000060L,0x0000000800000400L});
	public static final BitSet FOLLOW_expr_in_section_subscript_ambiguous1537 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_COLON_COLON_in_section_subscript_ambiguous1602 = new BitSet(new long[]{0x0000040000004420L,0x000800000000000CL,0x0800100901000060L,0x0000000800000400L});
	public static final BitSet FOLLOW_expr_in_section_subscript_ambiguous1604 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_section_subscript_in_section_subscript_list1676 = new BitSet(new long[]{0x0002000000000002L});
	public static final BitSet FOLLOW_T_COMMA_in_section_subscript_list1699 = new BitSet(new long[]{0x0003840080004420L,0x000800000000000CL,0x0800100901000060L,0x0000000800000400L});
	public static final BitSet FOLLOW_section_subscript_in_section_subscript_list1701 = new BitSet(new long[]{0x0002000000000002L});
	public static final BitSet FOLLOW_T_LBRACKET_in_image_selector1742 = new BitSet(new long[]{0x0000040000004420L,0x000800000000000CL,0x0800100901000060L,0x0000000800000400L});
	public static final BitSet FOLLOW_cosubscript_list_in_image_selector1744 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000080L});
	public static final BitSet FOLLOW_T_RBRACKET_in_image_selector1746 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_scalar_int_expr_in_cosubscript1782 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_cosubscript_in_cosubscript_list1816 = new BitSet(new long[]{0x0002000000000002L});
	public static final BitSet FOLLOW_T_COMMA_in_cosubscript_list1822 = new BitSet(new long[]{0x0000040000004420L,0x000800000000000CL,0x0800100901000060L,0x0000000800000400L});
	public static final BitSet FOLLOW_cosubscript_in_cosubscript_list1824 = new BitSet(new long[]{0x0002000000000002L});
	public static final BitSet FOLLOW_allocate_object_in_allocation1889 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000001000000L});
	public static final BitSet FOLLOW_T_LBRACKET_in_allocation1891 = new BitSet(new long[]{0x0000040080004420L,0x000800000000000CL,0x0800100901000060L,0x0000000800000400L});
	public static final BitSet FOLLOW_allocate_coarray_spec_in_allocation1893 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000080L});
	public static final BitSet FOLLOW_T_RBRACKET_in_allocation1895 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_allocate_object_in_allocation1967 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_part_ref_no_image_selector_in_allocate_object2021 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0100000000000000L});
	public static final BitSet FOLLOW_T_PERCENT_in_allocate_object2033 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000040L});
	public static final BitSet FOLLOW_part_ref_no_image_selector_in_allocate_object2035 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0100000000000000L});
	public static final BitSet FOLLOW_T_ASTERISK_in_allocate_coarray_spec2106 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expr_in_allocate_coarray_spec2125 = new BitSet(new long[]{0x0000800000000000L});
	public static final BitSet FOLLOW_T_COLON_in_allocate_coarray_spec2127 = new BitSet(new long[]{0x0000000080000000L});
	public static final BitSet FOLLOW_T_ASTERISK_in_allocate_coarray_spec2129 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expr_in_logical_expr2158 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expr_in_scalar_logical_expr2175 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expr_in_int_expr2199 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expr_in_scalar_int_expr2216 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expr_in_scalar_variable2238 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_scalar_variable_in_lock_variable2267 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_label_in_synpred1_FortranParserExtras181 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000400L});
	public static final BitSet FOLLOW_T_IMPLICIT_in_synpred1_FortranParserExtras185 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_label_in_synpred2_FortranParserExtras207 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0020000000000000L});
	public static final BitSet FOLLOW_T_PARAMETER_in_synpred2_FortranParserExtras211 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_label_in_synpred3_FortranParserExtras231 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
	public static final BitSet FOLLOW_T_FORMAT_in_synpred3_FortranParserExtras235 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_label_in_synpred4_FortranParserExtras261 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
	public static final BitSet FOLLOW_T_ENTRY_in_synpred4_FortranParserExtras265 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_IDENT_in_synpred5_FortranParserExtras1115 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_T_LPAREN_in_synpred5_FortranParserExtras1117 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_IDENT_in_synpred6_FortranParserExtras1187 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000001000000L});
	public static final BitSet FOLLOW_T_LBRACKET_in_synpred6_FortranParserExtras1189 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_IDENT_in_synpred7_FortranParserExtras1260 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000100000000L});
	public static final BitSet FOLLOW_T_LPAREN_in_synpred7_FortranParserExtras1262 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_allocate_object_in_synpred8_FortranParserExtras1872 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000001000000L});
	public static final BitSet FOLLOW_T_LBRACKET_in_synpred8_FortranParserExtras1874 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_allocate_object_in_synpred9_FortranParserExtras1952 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_T_ASTERISK_in_synpred10_FortranParserExtras2088 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expr_in_synpred11_FortranParserExtras2116 = new BitSet(new long[]{0x0000800000000000L});
	public static final BitSet FOLLOW_T_COLON_in_synpred11_FortranParserExtras2118 = new BitSet(new long[]{0x0000000080000000L});
	public static final BitSet FOLLOW_T_ASTERISK_in_synpred11_FortranParserExtras2120 = new BitSet(new long[]{0x0000000000000002L});
}