// $ANTLR 3.5.2 C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g 2020-06-10 08:27:41
package de.dhbw.compiler.antlrxtreegrammar;

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


@SuppressWarnings("all")
public class AssignCount extends TreeParser {
	public static final String[] tokenNames = new String[] {
		"<invalid>", "<EOR>", "<DOWN>", "<UP>", "COMMENT", "DECL", "DECLLIST", 
		"DIGIT", "FLOATCONST", "ID", "INTCONST", "INVALID", "LETTER", "OTHER", 
		"POSDIGIT", "STATLIST", "STRINGCONST", "UMINUS", "WS", "ZERO", "'('", 
		"')'", "'*'", "'+'", "'-'", "'.'", "'/'", "':'", "':='", "';'", "'<'", 
		"'='", "'>'", "'begin'", "'else'", "'end'", "'float'", "'for'", "'if'", 
		"'int'", "'print'", "'program'", "'read'", "'string'", "'then'", "'while'"
	};
	public static final int EOF=-1;
	public static final int T__20=20;
	public static final int T__21=21;
	public static final int T__22=22;
	public static final int T__23=23;
	public static final int T__24=24;
	public static final int T__25=25;
	public static final int T__26=26;
	public static final int T__27=27;
	public static final int T__28=28;
	public static final int T__29=29;
	public static final int T__30=30;
	public static final int T__31=31;
	public static final int T__32=32;
	public static final int T__33=33;
	public static final int T__34=34;
	public static final int T__35=35;
	public static final int T__36=36;
	public static final int T__37=37;
	public static final int T__38=38;
	public static final int T__39=39;
	public static final int T__40=40;
	public static final int T__41=41;
	public static final int T__42=42;
	public static final int T__43=43;
	public static final int T__44=44;
	public static final int T__45=45;
	public static final int COMMENT=4;
	public static final int DECL=5;
	public static final int DECLLIST=6;
	public static final int DIGIT=7;
	public static final int FLOATCONST=8;
	public static final int ID=9;
	public static final int INTCONST=10;
	public static final int INVALID=11;
	public static final int LETTER=12;
	public static final int OTHER=13;
	public static final int POSDIGIT=14;
	public static final int STATLIST=15;
	public static final int STRINGCONST=16;
	public static final int UMINUS=17;
	public static final int WS=18;
	public static final int ZERO=19;

	// delegates
	public TreeParser[] getDelegates() {
		return new TreeParser[] {};
	}

	// delegators


	public AssignCount(TreeNodeStream input) {
		this(input, new RecognizerSharedState());
	}
	public AssignCount(TreeNodeStream input, RecognizerSharedState state) {
		super(input, state);
	}

	protected TreeAdaptor adaptor = new CommonTreeAdaptor();

	public void setTreeAdaptor(TreeAdaptor adaptor) {
		this.adaptor = adaptor;
	}
	public TreeAdaptor getTreeAdaptor() {
		return adaptor;
	}
	@Override public String[] getTokenNames() { return AssignCount.tokenNames; }
	@Override public String getGrammarFileName() { return "C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g"; }



	  private int count =0;
	  
	  public int getCount() { return count; }
	  


	public static class decl_return extends TreeRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "decl"
	// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:33:1: decl : ^( DECL ID ( 'int' | 'float' | 'string' ) ( 'read' )? ( 'print' )? ) ;
	public final AssignCount.decl_return decl() throws RecognitionException {
		AssignCount.decl_return retval = new AssignCount.decl_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		CommonTree _first_0 = null;
		CommonTree _last = null;


		CommonTree DECL1=null;
		CommonTree ID2=null;
		CommonTree set3=null;
		CommonTree string_literal4=null;
		CommonTree string_literal5=null;

		CommonTree DECL1_tree=null;
		CommonTree ID2_tree=null;
		CommonTree set3_tree=null;
		CommonTree string_literal4_tree=null;
		CommonTree string_literal5_tree=null;

		try {
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:33:5: ( ^( DECL ID ( 'int' | 'float' | 'string' ) ( 'read' )? ( 'print' )? ) )
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:33:13: ^( DECL ID ( 'int' | 'float' | 'string' ) ( 'read' )? ( 'print' )? )
			{
			root_0 = (CommonTree)adaptor.nil();


			_last = (CommonTree)input.LT(1);
			{
			CommonTree _save_last_1 = _last;
			CommonTree _first_1 = null;
			CommonTree root_1 = (CommonTree)adaptor.nil();
			_last = (CommonTree)input.LT(1);
			DECL1=(CommonTree)match(input,DECL,FOLLOW_DECL_in_decl76); 
			DECL1_tree = (CommonTree)adaptor.dupNode(DECL1);


			root_1 = (CommonTree)adaptor.becomeRoot(DECL1_tree, root_1);

			match(input, Token.DOWN, null); 
			_last = (CommonTree)input.LT(1);
			ID2=(CommonTree)match(input,ID,FOLLOW_ID_in_decl78); 
			ID2_tree = (CommonTree)adaptor.dupNode(ID2);


			adaptor.addChild(root_1, ID2_tree);

			_last = (CommonTree)input.LT(1);
			set3=(CommonTree)input.LT(1);
			if ( input.LA(1)==36||input.LA(1)==39||input.LA(1)==43 ) {
				input.consume();
				set3_tree = (CommonTree)adaptor.dupNode(set3);


				adaptor.addChild(root_1, set3_tree);

				state.errorRecovery=false;
			}
			else {
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}

			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:33:52: ( 'read' )?
			int alt1=2;
			int LA1_0 = input.LA(1);
			if ( (LA1_0==42) ) {
				alt1=1;
			}
			switch (alt1) {
				case 1 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:33:52: 'read'
					{
					_last = (CommonTree)input.LT(1);
					string_literal4=(CommonTree)match(input,42,FOLLOW_42_in_decl92); 
					string_literal4_tree = (CommonTree)adaptor.dupNode(string_literal4);


					adaptor.addChild(root_1, string_literal4_tree);

					}
					break;

			}

			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:33:60: ( 'print' )?
			int alt2=2;
			int LA2_0 = input.LA(1);
			if ( (LA2_0==40) ) {
				alt2=1;
			}
			switch (alt2) {
				case 1 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:33:60: 'print'
					{
					_last = (CommonTree)input.LT(1);
					string_literal5=(CommonTree)match(input,40,FOLLOW_40_in_decl95); 
					string_literal5_tree = (CommonTree)adaptor.dupNode(string_literal5);


					adaptor.addChild(root_1, string_literal5_tree);

					}
					break;

			}

			match(input, Token.UP, null); 
			adaptor.addChild(root_0, root_1);
			_last = _save_last_1;
			}


			}

			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);

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


	public static class decllist_return extends TreeRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "decllist"
	// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:35:1: decllist : ^( DECLLIST ( decl )* ) ;
	public final AssignCount.decllist_return decllist() throws RecognitionException {
		AssignCount.decllist_return retval = new AssignCount.decllist_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		CommonTree _first_0 = null;
		CommonTree _last = null;


		CommonTree DECLLIST6=null;
		TreeRuleReturnScope decl7 =null;

		CommonTree DECLLIST6_tree=null;

		try {
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:35:9: ( ^( DECLLIST ( decl )* ) )
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:35:13: ^( DECLLIST ( decl )* )
			{
			root_0 = (CommonTree)adaptor.nil();


			_last = (CommonTree)input.LT(1);
			{
			CommonTree _save_last_1 = _last;
			CommonTree _first_1 = null;
			CommonTree root_1 = (CommonTree)adaptor.nil();
			_last = (CommonTree)input.LT(1);
			DECLLIST6=(CommonTree)match(input,DECLLIST,FOLLOW_DECLLIST_in_decllist109); 
			DECLLIST6_tree = (CommonTree)adaptor.dupNode(DECLLIST6);


			root_1 = (CommonTree)adaptor.becomeRoot(DECLLIST6_tree, root_1);

			if ( input.LA(1)==Token.DOWN ) {
				match(input, Token.DOWN, null); 
				// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:35:24: ( decl )*
				loop3:
				while (true) {
					int alt3=2;
					int LA3_0 = input.LA(1);
					if ( (LA3_0==DECL) ) {
						alt3=1;
					}

					switch (alt3) {
					case 1 :
						// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:35:24: decl
						{
						_last = (CommonTree)input.LT(1);
						pushFollow(FOLLOW_decl_in_decllist111);
						decl7=decl();
						state._fsp--;

						adaptor.addChild(root_1, decl7.getTree());

						}
						break;

					default :
						break loop3;
					}
				}

				match(input, Token.UP, null); 
			}
			adaptor.addChild(root_0, root_1);
			_last = _save_last_1;
			}


			}

			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);

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


	public static class expr_return extends TreeRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "expr"
	// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:38:1: expr : ( ^( ( '+' | '-' | '/' | '*' ) expr expr ) | ^( UMINUS ( INTCONST | FLOATCONST ) ) | INTCONST | FLOATCONST | STRINGCONST | ID );
	public final AssignCount.expr_return expr() throws RecognitionException {
		AssignCount.expr_return retval = new AssignCount.expr_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		CommonTree _first_0 = null;
		CommonTree _last = null;


		CommonTree set8=null;
		CommonTree UMINUS11=null;
		CommonTree set12=null;
		CommonTree INTCONST13=null;
		CommonTree FLOATCONST14=null;
		CommonTree STRINGCONST15=null;
		CommonTree ID16=null;
		TreeRuleReturnScope expr9 =null;
		TreeRuleReturnScope expr10 =null;

		CommonTree set8_tree=null;
		CommonTree UMINUS11_tree=null;
		CommonTree set12_tree=null;
		CommonTree INTCONST13_tree=null;
		CommonTree FLOATCONST14_tree=null;
		CommonTree STRINGCONST15_tree=null;
		CommonTree ID16_tree=null;

		try {
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:38:5: ( ^( ( '+' | '-' | '/' | '*' ) expr expr ) | ^( UMINUS ( INTCONST | FLOATCONST ) ) | INTCONST | FLOATCONST | STRINGCONST | ID )
			int alt4=6;
			switch ( input.LA(1) ) {
			case 22:
			case 23:
			case 24:
			case 26:
				{
				alt4=1;
				}
				break;
			case UMINUS:
				{
				alt4=2;
				}
				break;
			case INTCONST:
				{
				alt4=3;
				}
				break;
			case FLOATCONST:
				{
				alt4=4;
				}
				break;
			case STRINGCONST:
				{
				alt4=5;
				}
				break;
			case ID:
				{
				alt4=6;
				}
				break;
			default:
				NoViableAltException nvae =
					new NoViableAltException("", 4, 0, input);
				throw nvae;
			}
			switch (alt4) {
				case 1 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:38:13: ^( ( '+' | '-' | '/' | '*' ) expr expr )
					{
					root_0 = (CommonTree)adaptor.nil();


					_last = (CommonTree)input.LT(1);
					{
					CommonTree _save_last_1 = _last;
					CommonTree _first_1 = null;
					CommonTree root_1 = (CommonTree)adaptor.nil();
					set8=(CommonTree)input.LT(1);
					if ( (input.LA(1) >= 22 && input.LA(1) <= 24)||input.LA(1)==26 ) {
						input.consume();
						set8_tree = (CommonTree)adaptor.dupNode(set8);


						root_1 = (CommonTree)adaptor.becomeRoot(set8_tree, root_1);

						state.errorRecovery=false;
					}
					else {
						MismatchedSetException mse = new MismatchedSetException(null,input);
						throw mse;
					}

					match(input, Token.DOWN, null); 
					_last = (CommonTree)input.LT(1);
					pushFollow(FOLLOW_expr_in_expr144);
					expr9=expr();
					state._fsp--;

					adaptor.addChild(root_1, expr9.getTree());

					_last = (CommonTree)input.LT(1);
					pushFollow(FOLLOW_expr_in_expr146);
					expr10=expr();
					state._fsp--;

					adaptor.addChild(root_1, expr10.getTree());

					match(input, Token.UP, null); 
					adaptor.addChild(root_0, root_1);
					_last = _save_last_1;
					}


					}
					break;
				case 2 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:39:13: ^( UMINUS ( INTCONST | FLOATCONST ) )
					{
					root_0 = (CommonTree)adaptor.nil();


					_last = (CommonTree)input.LT(1);
					{
					CommonTree _save_last_1 = _last;
					CommonTree _first_1 = null;
					CommonTree root_1 = (CommonTree)adaptor.nil();
					_last = (CommonTree)input.LT(1);
					UMINUS11=(CommonTree)match(input,UMINUS,FOLLOW_UMINUS_in_expr162); 
					UMINUS11_tree = (CommonTree)adaptor.dupNode(UMINUS11);


					root_1 = (CommonTree)adaptor.becomeRoot(UMINUS11_tree, root_1);

					match(input, Token.DOWN, null); 
					_last = (CommonTree)input.LT(1);
					set12=(CommonTree)input.LT(1);
					if ( input.LA(1)==FLOATCONST||input.LA(1)==INTCONST ) {
						input.consume();
						set12_tree = (CommonTree)adaptor.dupNode(set12);


						adaptor.addChild(root_1, set12_tree);

						state.errorRecovery=false;
					}
					else {
						MismatchedSetException mse = new MismatchedSetException(null,input);
						throw mse;
					}

					match(input, Token.UP, null); 
					adaptor.addChild(root_0, root_1);
					_last = _save_last_1;
					}


					}
					break;
				case 3 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:40:13: INTCONST
					{
					root_0 = (CommonTree)adaptor.nil();


					_last = (CommonTree)input.LT(1);
					INTCONST13=(CommonTree)match(input,INTCONST,FOLLOW_INTCONST_in_expr185); 
					INTCONST13_tree = (CommonTree)adaptor.dupNode(INTCONST13);


					adaptor.addChild(root_0, INTCONST13_tree);

					}
					break;
				case 4 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:40:24: FLOATCONST
					{
					root_0 = (CommonTree)adaptor.nil();


					_last = (CommonTree)input.LT(1);
					FLOATCONST14=(CommonTree)match(input,FLOATCONST,FOLLOW_FLOATCONST_in_expr189); 
					FLOATCONST14_tree = (CommonTree)adaptor.dupNode(FLOATCONST14);


					adaptor.addChild(root_0, FLOATCONST14_tree);

					}
					break;
				case 5 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:40:37: STRINGCONST
					{
					root_0 = (CommonTree)adaptor.nil();


					_last = (CommonTree)input.LT(1);
					STRINGCONST15=(CommonTree)match(input,STRINGCONST,FOLLOW_STRINGCONST_in_expr193); 
					STRINGCONST15_tree = (CommonTree)adaptor.dupNode(STRINGCONST15);


					adaptor.addChild(root_0, STRINGCONST15_tree);

					}
					break;
				case 6 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:40:51: ID
					{
					root_0 = (CommonTree)adaptor.nil();


					_last = (CommonTree)input.LT(1);
					ID16=(CommonTree)match(input,ID,FOLLOW_ID_in_expr197); 
					ID16_tree = (CommonTree)adaptor.dupNode(ID16);


					adaptor.addChild(root_0, ID16_tree);

					}
					break;

			}
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);

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


	public static class assignstat_return extends TreeRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "assignstat"
	// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:43:1: assignstat : ^( ':=' ID expr ) ;
	public final AssignCount.assignstat_return assignstat() throws RecognitionException {
		AssignCount.assignstat_return retval = new AssignCount.assignstat_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		CommonTree _first_0 = null;
		CommonTree _last = null;


		CommonTree string_literal17=null;
		CommonTree ID18=null;
		TreeRuleReturnScope expr19 =null;

		CommonTree string_literal17_tree=null;
		CommonTree ID18_tree=null;

		try {
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:43:11: ( ^( ':=' ID expr ) )
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:43:15: ^( ':=' ID expr )
			{
			root_0 = (CommonTree)adaptor.nil();


			_last = (CommonTree)input.LT(1);
			{
			CommonTree _save_last_1 = _last;
			CommonTree _first_1 = null;
			CommonTree root_1 = (CommonTree)adaptor.nil();
			_last = (CommonTree)input.LT(1);
			string_literal17=(CommonTree)match(input,28,FOLLOW_28_in_assignstat208); 
			string_literal17_tree = (CommonTree)adaptor.dupNode(string_literal17);


			root_1 = (CommonTree)adaptor.becomeRoot(string_literal17_tree, root_1);

			match(input, Token.DOWN, null); 
			_last = (CommonTree)input.LT(1);
			ID18=(CommonTree)match(input,ID,FOLLOW_ID_in_assignstat210); 
			ID18_tree = (CommonTree)adaptor.dupNode(ID18);


			adaptor.addChild(root_1, ID18_tree);

			_last = (CommonTree)input.LT(1);
			pushFollow(FOLLOW_expr_in_assignstat212);
			expr19=expr();
			state._fsp--;

			adaptor.addChild(root_1, expr19.getTree());

			match(input, Token.UP, null); 
			adaptor.addChild(root_0, root_1);
			_last = _save_last_1;
			}


			count++;
			}

			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);

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


	public static class cond_return extends TreeRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "cond"
	// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:46:1: cond : ^( ( '<' | '>' | '=' ) expr expr ) ;
	public final AssignCount.cond_return cond() throws RecognitionException {
		AssignCount.cond_return retval = new AssignCount.cond_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		CommonTree _first_0 = null;
		CommonTree _last = null;


		CommonTree set20=null;
		TreeRuleReturnScope expr21 =null;
		TreeRuleReturnScope expr22 =null;

		CommonTree set20_tree=null;

		try {
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:46:5: ( ^( ( '<' | '>' | '=' ) expr expr ) )
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:46:15: ^( ( '<' | '>' | '=' ) expr expr )
			{
			root_0 = (CommonTree)adaptor.nil();


			_last = (CommonTree)input.LT(1);
			{
			CommonTree _save_last_1 = _last;
			CommonTree _first_1 = null;
			CommonTree root_1 = (CommonTree)adaptor.nil();
			set20=(CommonTree)input.LT(1);
			if ( (input.LA(1) >= 30 && input.LA(1) <= 32) ) {
				input.consume();
				set20_tree = (CommonTree)adaptor.dupNode(set20);


				root_1 = (CommonTree)adaptor.becomeRoot(set20_tree, root_1);

				state.errorRecovery=false;
			}
			else {
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}

			match(input, Token.DOWN, null); 
			_last = (CommonTree)input.LT(1);
			pushFollow(FOLLOW_expr_in_cond243);
			expr21=expr();
			state._fsp--;

			adaptor.addChild(root_1, expr21.getTree());

			_last = (CommonTree)input.LT(1);
			pushFollow(FOLLOW_expr_in_cond245);
			expr22=expr();
			state._fsp--;

			adaptor.addChild(root_1, expr22.getTree());

			match(input, Token.UP, null); 
			adaptor.addChild(root_0, root_1);
			_last = _save_last_1;
			}


			}

			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);

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


	public static class condstat_return extends TreeRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "condstat"
	// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:49:1: condstat : ^( 'if' cond stat ( stat )? ) ;
	public final AssignCount.condstat_return condstat() throws RecognitionException {
		AssignCount.condstat_return retval = new AssignCount.condstat_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		CommonTree _first_0 = null;
		CommonTree _last = null;


		CommonTree string_literal23=null;
		TreeRuleReturnScope cond24 =null;
		TreeRuleReturnScope stat25 =null;
		TreeRuleReturnScope stat26 =null;

		CommonTree string_literal23_tree=null;

		try {
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:49:9: ( ^( 'if' cond stat ( stat )? ) )
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:49:13: ^( 'if' cond stat ( stat )? )
			{
			root_0 = (CommonTree)adaptor.nil();


			_last = (CommonTree)input.LT(1);
			{
			CommonTree _save_last_1 = _last;
			CommonTree _first_1 = null;
			CommonTree root_1 = (CommonTree)adaptor.nil();
			_last = (CommonTree)input.LT(1);
			string_literal23=(CommonTree)match(input,38,FOLLOW_38_in_condstat257); 
			string_literal23_tree = (CommonTree)adaptor.dupNode(string_literal23);


			root_1 = (CommonTree)adaptor.becomeRoot(string_literal23_tree, root_1);

			match(input, Token.DOWN, null); 
			_last = (CommonTree)input.LT(1);
			pushFollow(FOLLOW_cond_in_condstat259);
			cond24=cond();
			state._fsp--;

			adaptor.addChild(root_1, cond24.getTree());

			_last = (CommonTree)input.LT(1);
			pushFollow(FOLLOW_stat_in_condstat262);
			stat25=stat();
			state._fsp--;

			adaptor.addChild(root_1, stat25.getTree());

			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:49:31: ( stat )?
			int alt5=2;
			int LA5_0 = input.LA(1);
			if ( (LA5_0==STATLIST||LA5_0==28||(LA5_0 >= 37 && LA5_0 <= 38)||LA5_0==45) ) {
				alt5=1;
			}
			switch (alt5) {
				case 1 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:49:31: stat
					{
					_last = (CommonTree)input.LT(1);
					pushFollow(FOLLOW_stat_in_condstat264);
					stat26=stat();
					state._fsp--;

					adaptor.addChild(root_1, stat26.getTree());

					}
					break;

			}

			match(input, Token.UP, null); 
			adaptor.addChild(root_0, root_1);
			_last = _save_last_1;
			}


			}

			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);

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


	public static class whilestat_return extends TreeRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "whilestat"
	// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:52:1: whilestat : ^( 'while' cond stat ) ;
	public final AssignCount.whilestat_return whilestat() throws RecognitionException {
		AssignCount.whilestat_return retval = new AssignCount.whilestat_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		CommonTree _first_0 = null;
		CommonTree _last = null;


		CommonTree string_literal27=null;
		TreeRuleReturnScope cond28 =null;
		TreeRuleReturnScope stat29 =null;

		CommonTree string_literal27_tree=null;

		try {
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:52:10: ( ^( 'while' cond stat ) )
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:52:15: ^( 'while' cond stat )
			{
			root_0 = (CommonTree)adaptor.nil();


			_last = (CommonTree)input.LT(1);
			{
			CommonTree _save_last_1 = _last;
			CommonTree _first_1 = null;
			CommonTree root_1 = (CommonTree)adaptor.nil();
			_last = (CommonTree)input.LT(1);
			string_literal27=(CommonTree)match(input,45,FOLLOW_45_in_whilestat278); 
			string_literal27_tree = (CommonTree)adaptor.dupNode(string_literal27);


			root_1 = (CommonTree)adaptor.becomeRoot(string_literal27_tree, root_1);

			match(input, Token.DOWN, null); 
			_last = (CommonTree)input.LT(1);
			pushFollow(FOLLOW_cond_in_whilestat280);
			cond28=cond();
			state._fsp--;

			adaptor.addChild(root_1, cond28.getTree());

			_last = (CommonTree)input.LT(1);
			pushFollow(FOLLOW_stat_in_whilestat282);
			stat29=stat();
			state._fsp--;

			adaptor.addChild(root_1, stat29.getTree());

			match(input, Token.UP, null); 
			adaptor.addChild(root_0, root_1);
			_last = _save_last_1;
			}


			}

			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);

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


	public static class forstat_return extends TreeRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "forstat"
	// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:53:1: forstat : ^( 'for' assignstat cond assignstat stat ) ;
	public final AssignCount.forstat_return forstat() throws RecognitionException {
		AssignCount.forstat_return retval = new AssignCount.forstat_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		CommonTree _first_0 = null;
		CommonTree _last = null;


		CommonTree string_literal30=null;
		TreeRuleReturnScope assignstat31 =null;
		TreeRuleReturnScope cond32 =null;
		TreeRuleReturnScope assignstat33 =null;
		TreeRuleReturnScope stat34 =null;

		CommonTree string_literal30_tree=null;

		try {
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:53:8: ( ^( 'for' assignstat cond assignstat stat ) )
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:53:15: ^( 'for' assignstat cond assignstat stat )
			{
			root_0 = (CommonTree)adaptor.nil();


			_last = (CommonTree)input.LT(1);
			{
			CommonTree _save_last_1 = _last;
			CommonTree _first_1 = null;
			CommonTree root_1 = (CommonTree)adaptor.nil();
			_last = (CommonTree)input.LT(1);
			string_literal30=(CommonTree)match(input,37,FOLLOW_37_in_forstat295); 
			string_literal30_tree = (CommonTree)adaptor.dupNode(string_literal30);


			root_1 = (CommonTree)adaptor.becomeRoot(string_literal30_tree, root_1);

			match(input, Token.DOWN, null); 
			_last = (CommonTree)input.LT(1);
			pushFollow(FOLLOW_assignstat_in_forstat297);
			assignstat31=assignstat();
			state._fsp--;

			adaptor.addChild(root_1, assignstat31.getTree());

			_last = (CommonTree)input.LT(1);
			pushFollow(FOLLOW_cond_in_forstat299);
			cond32=cond();
			state._fsp--;

			adaptor.addChild(root_1, cond32.getTree());

			_last = (CommonTree)input.LT(1);
			pushFollow(FOLLOW_assignstat_in_forstat301);
			assignstat33=assignstat();
			state._fsp--;

			adaptor.addChild(root_1, assignstat33.getTree());

			_last = (CommonTree)input.LT(1);
			pushFollow(FOLLOW_stat_in_forstat303);
			stat34=stat();
			state._fsp--;

			adaptor.addChild(root_1, stat34.getTree());

			match(input, Token.UP, null); 
			adaptor.addChild(root_0, root_1);
			_last = _save_last_1;
			}


			}

			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);

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


	public static class stat_return extends TreeRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "stat"
	// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:56:1: stat : ( assignstat | condstat | whilestat | forstat | statlist );
	public final AssignCount.stat_return stat() throws RecognitionException {
		AssignCount.stat_return retval = new AssignCount.stat_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		CommonTree _first_0 = null;
		CommonTree _last = null;


		TreeRuleReturnScope assignstat35 =null;
		TreeRuleReturnScope condstat36 =null;
		TreeRuleReturnScope whilestat37 =null;
		TreeRuleReturnScope forstat38 =null;
		TreeRuleReturnScope statlist39 =null;


		try {
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:56:5: ( assignstat | condstat | whilestat | forstat | statlist )
			int alt6=5;
			switch ( input.LA(1) ) {
			case 28:
				{
				alt6=1;
				}
				break;
			case 38:
				{
				alt6=2;
				}
				break;
			case 45:
				{
				alt6=3;
				}
				break;
			case 37:
				{
				alt6=4;
				}
				break;
			case STATLIST:
				{
				alt6=5;
				}
				break;
			default:
				NoViableAltException nvae =
					new NoViableAltException("", 6, 0, input);
				throw nvae;
			}
			switch (alt6) {
				case 1 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:56:15: assignstat
					{
					root_0 = (CommonTree)adaptor.nil();


					_last = (CommonTree)input.LT(1);
					pushFollow(FOLLOW_assignstat_in_stat320);
					assignstat35=assignstat();
					state._fsp--;

					adaptor.addChild(root_0, assignstat35.getTree());

					}
					break;
				case 2 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:56:28: condstat
					{
					root_0 = (CommonTree)adaptor.nil();


					_last = (CommonTree)input.LT(1);
					pushFollow(FOLLOW_condstat_in_stat324);
					condstat36=condstat();
					state._fsp--;

					adaptor.addChild(root_0, condstat36.getTree());

					}
					break;
				case 3 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:56:39: whilestat
					{
					root_0 = (CommonTree)adaptor.nil();


					_last = (CommonTree)input.LT(1);
					pushFollow(FOLLOW_whilestat_in_stat328);
					whilestat37=whilestat();
					state._fsp--;

					adaptor.addChild(root_0, whilestat37.getTree());

					}
					break;
				case 4 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:56:51: forstat
					{
					root_0 = (CommonTree)adaptor.nil();


					_last = (CommonTree)input.LT(1);
					pushFollow(FOLLOW_forstat_in_stat332);
					forstat38=forstat();
					state._fsp--;

					adaptor.addChild(root_0, forstat38.getTree());

					}
					break;
				case 5 :
					// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:56:61: statlist
					{
					root_0 = (CommonTree)adaptor.nil();


					_last = (CommonTree)input.LT(1);
					pushFollow(FOLLOW_statlist_in_stat336);
					statlist39=statlist();
					state._fsp--;

					adaptor.addChild(root_0, statlist39.getTree());

					}
					break;

			}
			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);

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


	public static class statlist_return extends TreeRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "statlist"
	// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:58:1: statlist : ^( STATLIST ( stat )* ) ;
	public final AssignCount.statlist_return statlist() throws RecognitionException {
		AssignCount.statlist_return retval = new AssignCount.statlist_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		CommonTree _first_0 = null;
		CommonTree _last = null;


		CommonTree STATLIST40=null;
		TreeRuleReturnScope stat41 =null;

		CommonTree STATLIST40_tree=null;

		try {
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:58:9: ( ^( STATLIST ( stat )* ) )
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:58:18: ^( STATLIST ( stat )* )
			{
			root_0 = (CommonTree)adaptor.nil();


			_last = (CommonTree)input.LT(1);
			{
			CommonTree _save_last_1 = _last;
			CommonTree _first_1 = null;
			CommonTree root_1 = (CommonTree)adaptor.nil();
			_last = (CommonTree)input.LT(1);
			STATLIST40=(CommonTree)match(input,STATLIST,FOLLOW_STATLIST_in_statlist351); 
			STATLIST40_tree = (CommonTree)adaptor.dupNode(STATLIST40);


			root_1 = (CommonTree)adaptor.becomeRoot(STATLIST40_tree, root_1);

			if ( input.LA(1)==Token.DOWN ) {
				match(input, Token.DOWN, null); 
				// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:58:29: ( stat )*
				loop7:
				while (true) {
					int alt7=2;
					int LA7_0 = input.LA(1);
					if ( (LA7_0==STATLIST||LA7_0==28||(LA7_0 >= 37 && LA7_0 <= 38)||LA7_0==45) ) {
						alt7=1;
					}

					switch (alt7) {
					case 1 :
						// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:58:29: stat
						{
						_last = (CommonTree)input.LT(1);
						pushFollow(FOLLOW_stat_in_statlist353);
						stat41=stat();
						state._fsp--;

						adaptor.addChild(root_1, stat41.getTree());

						}
						break;

					default :
						break loop7;
					}
				}

				match(input, Token.UP, null); 
			}
			adaptor.addChild(root_0, root_1);
			_last = _save_last_1;
			}


			}

			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);

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


	public static class program_return extends TreeRuleReturnScope {
		CommonTree tree;
		@Override
		public CommonTree getTree() { return tree; }
	};


	// $ANTLR start "program"
	// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:61:1: program : ^( 'program' ID decllist statlist ) ;
	public final AssignCount.program_return program() throws RecognitionException {
		AssignCount.program_return retval = new AssignCount.program_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		CommonTree _first_0 = null;
		CommonTree _last = null;


		CommonTree string_literal42=null;
		CommonTree ID43=null;
		TreeRuleReturnScope decllist44 =null;
		TreeRuleReturnScope statlist45 =null;

		CommonTree string_literal42_tree=null;
		CommonTree ID43_tree=null;

		try {
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:61:8: ( ^( 'program' ID decllist statlist ) )
			// C:\\Users\\Jörn\\Dropbox\\workspace_cc\\CC-Praxis-Antlr Baumgrammatiken\\src\\de\\dhbw\\compiler\\antlrxtreegrammar\\AssignCount.g:61:15: ^( 'program' ID decllist statlist )
			{
			root_0 = (CommonTree)adaptor.nil();


			_last = (CommonTree)input.LT(1);
			{
			CommonTree _save_last_1 = _last;
			CommonTree _first_1 = null;
			CommonTree root_1 = (CommonTree)adaptor.nil();
			_last = (CommonTree)input.LT(1);
			string_literal42=(CommonTree)match(input,41,FOLLOW_41_in_program369); 
			string_literal42_tree = (CommonTree)adaptor.dupNode(string_literal42);


			root_1 = (CommonTree)adaptor.becomeRoot(string_literal42_tree, root_1);

			match(input, Token.DOWN, null); 
			_last = (CommonTree)input.LT(1);
			ID43=(CommonTree)match(input,ID,FOLLOW_ID_in_program371); 
			ID43_tree = (CommonTree)adaptor.dupNode(ID43);


			adaptor.addChild(root_1, ID43_tree);

			_last = (CommonTree)input.LT(1);
			pushFollow(FOLLOW_decllist_in_program373);
			decllist44=decllist();
			state._fsp--;

			adaptor.addChild(root_1, decllist44.getTree());

			_last = (CommonTree)input.LT(1);
			pushFollow(FOLLOW_statlist_in_program375);
			statlist45=statlist();
			state._fsp--;

			adaptor.addChild(root_1, statlist45.getTree());

			match(input, Token.UP, null); 
			adaptor.addChild(root_0, root_1);
			_last = _save_last_1;
			}


			}

			retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);

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

	// Delegated rules



	public static final BitSet FOLLOW_DECL_in_decl76 = new BitSet(new long[]{0x0000000000000004L});
	public static final BitSet FOLLOW_ID_in_decl78 = new BitSet(new long[]{0x0000089000000000L});
	public static final BitSet FOLLOW_set_in_decl80 = new BitSet(new long[]{0x0000050000000008L});
	public static final BitSet FOLLOW_42_in_decl92 = new BitSet(new long[]{0x0000010000000008L});
	public static final BitSet FOLLOW_40_in_decl95 = new BitSet(new long[]{0x0000000000000008L});
	public static final BitSet FOLLOW_DECLLIST_in_decllist109 = new BitSet(new long[]{0x0000000000000004L});
	public static final BitSet FOLLOW_decl_in_decllist111 = new BitSet(new long[]{0x0000000000000028L});
	public static final BitSet FOLLOW_set_in_expr128 = new BitSet(new long[]{0x0000000000000004L});
	public static final BitSet FOLLOW_expr_in_expr144 = new BitSet(new long[]{0x0000000005C30700L});
	public static final BitSet FOLLOW_expr_in_expr146 = new BitSet(new long[]{0x0000000000000008L});
	public static final BitSet FOLLOW_UMINUS_in_expr162 = new BitSet(new long[]{0x0000000000000004L});
	public static final BitSet FOLLOW_set_in_expr164 = new BitSet(new long[]{0x0000000000000008L});
	public static final BitSet FOLLOW_INTCONST_in_expr185 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_FLOATCONST_in_expr189 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_STRINGCONST_in_expr193 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ID_in_expr197 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_28_in_assignstat208 = new BitSet(new long[]{0x0000000000000004L});
	public static final BitSet FOLLOW_ID_in_assignstat210 = new BitSet(new long[]{0x0000000005C30700L});
	public static final BitSet FOLLOW_expr_in_assignstat212 = new BitSet(new long[]{0x0000000000000008L});
	public static final BitSet FOLLOW_set_in_cond232 = new BitSet(new long[]{0x0000000000000004L});
	public static final BitSet FOLLOW_expr_in_cond243 = new BitSet(new long[]{0x0000000005C30700L});
	public static final BitSet FOLLOW_expr_in_cond245 = new BitSet(new long[]{0x0000000000000008L});
	public static final BitSet FOLLOW_38_in_condstat257 = new BitSet(new long[]{0x0000000000000004L});
	public static final BitSet FOLLOW_cond_in_condstat259 = new BitSet(new long[]{0x0000206010008000L});
	public static final BitSet FOLLOW_stat_in_condstat262 = new BitSet(new long[]{0x0000206010008008L});
	public static final BitSet FOLLOW_stat_in_condstat264 = new BitSet(new long[]{0x0000000000000008L});
	public static final BitSet FOLLOW_45_in_whilestat278 = new BitSet(new long[]{0x0000000000000004L});
	public static final BitSet FOLLOW_cond_in_whilestat280 = new BitSet(new long[]{0x0000206010008000L});
	public static final BitSet FOLLOW_stat_in_whilestat282 = new BitSet(new long[]{0x0000000000000008L});
	public static final BitSet FOLLOW_37_in_forstat295 = new BitSet(new long[]{0x0000000000000004L});
	public static final BitSet FOLLOW_assignstat_in_forstat297 = new BitSet(new long[]{0x00000001C0000000L});
	public static final BitSet FOLLOW_cond_in_forstat299 = new BitSet(new long[]{0x0000000010000000L});
	public static final BitSet FOLLOW_assignstat_in_forstat301 = new BitSet(new long[]{0x0000206010008000L});
	public static final BitSet FOLLOW_stat_in_forstat303 = new BitSet(new long[]{0x0000000000000008L});
	public static final BitSet FOLLOW_assignstat_in_stat320 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_condstat_in_stat324 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_whilestat_in_stat328 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_forstat_in_stat332 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_statlist_in_stat336 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_STATLIST_in_statlist351 = new BitSet(new long[]{0x0000000000000004L});
	public static final BitSet FOLLOW_stat_in_statlist353 = new BitSet(new long[]{0x0000206010008008L});
	public static final BitSet FOLLOW_41_in_program369 = new BitSet(new long[]{0x0000000000000004L});
	public static final BitSet FOLLOW_ID_in_program371 = new BitSet(new long[]{0x0000000000000040L});
	public static final BitSet FOLLOW_decllist_in_program373 = new BitSet(new long[]{0x0000000000008000L});
	public static final BitSet FOLLOW_statlist_in_program375 = new BitSet(new long[]{0x0000000000000008L});
}
