PragmaStringParser.java

// $ANTLR 3.5.2 /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g 2015-03-26 17:31:22

	package edu.udel.cis.vsl.tass.ast.impl.pragmaParser;


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

import org.antlr.runtime.tree.*;


@SuppressWarnings("all")
public class PragmaStringParser extends Parser {
	public static final String[] tokenNames = new String[] {
		"<invalid>", "<EOR>", "<DOWN>", "<UP>", "ABSTRACT", "ABSTRACT_DECLARATOR", 
		"ABSTR_FUNCTION_DECL", "ADDITIVE_EXPR", "ADDR_OF", "ALLOCATE_STMT", "AND", 
		"ANNOTATION_LIST", "ANY", "ARGUMENT", "ARGUMENT_LIST", "ARROW", "ASSERT", 
		"ASSERT_STMT", "ASSIGN", "ASSIGNMENT_STMT", "ASSIGN_EXPR", "ASSUME", "ASSUME_STMT", 
		"AT", "BAR", "BODY", "BOOLEAN", "CALL_STMT", "CAST", "CHAR", "CHAR_LITERAL", 
		"CHOICE", "COLLECTIVE", "COLLECTIVE_ASSERT_STMT", "COLLECTIVE_INVARIANT_STMT", 
		"COLON", "COMMA", "COMMENT", "COMM_EXPR", "COMPOUND_STMT", "CONDITIONAL_EXPR", 
		"CONDITION_STMT", "CONST", "CONSTANT", "CONTINUOUS", "CORRESPONDENCE", 
		"DEALLOCATE_STMT", "DECL", "DECLARATION", "DECLARATOR", "DECL_BODY", "DECL_LIST", 
		"DECL_SUFFIX", "DEFINE", "DERIVATIVE", "DERIVATIVE_EXPR", "DESIGNATION", 
		"DESIGNATOR", "DESIGNATOR_LIST", "DIGIT", "DIRECT_ABSTRACT_DECLARATOR", 
		"DIRECT_DECL", "DIV", "DIV_ASSIGN", "DOT", "DOUBLE", "DOUBLE_PLUS", "DOUBLE_SUB", 
		"ELSE", "EMPTY_STMT", "EQ", "EQUALITY_EXPR", "EVALUATED_FUNCTION_EXPR", 
		"EXISTS", "EXPR", "EXPR_STMT", "EscapeSequence", "Exponent", "FALSE", 
		"FIELD_DECL", "FLOAT", "FOR", "FORALL", "FOR_STMT", "FUNCTION", "FUNCTION_DECL", 
		"GLOBAL_VARIABLE", "GT", "GTE", "GUARD", "IDENTIFIER", "IF", "IGNORE", 
		"IMPL", "INCLUDE", "INITIALIZER", "INITIALIZER_LIST", "INITIALIZER_LIST_REST", 
		"INPUT", "INT", "INT_LITERAL", "INVARIANT", "INVARIANT_STMT", "IS", "ITERATIVE_STMT", 
		"JOINT", "JOINT_ASSERT_STMT", "JOINT_INVARIANT_STMT", "LCURLY", "LETTER", 
		"LOGICAL_AND_EXPR", "LOGICAL_OR_EXPR", "LPAREN", "LSQUARE", "LT", "LTE", 
		"MALLOC", "MOD", "MOD_ASSIGN", "MULTI", "MULTIPLICATIVE_EXPR", "MULTI_ASSIGN", 
		"MULTI_DECLARATION", "NEQ", "NEWLINE", "NOT", "OR", "OUTPUT", "OctalEscape", 
		"PARAMETER", "PARAMETER_LIST", "PARTIAL", "PARTIAL_LIST", "PLUS", "PLUS_ASSIGN", 
		"POSTFIX_EXPR", "POSTFIX_EXPR_SUFFIX", "PRAGMA", "PREFIX", "PRIMARY_EXPR", 
		"PROTOTYPE", "QMARK", "QUANTIFIER", "QUANTIFIER_EXPR", "RCURLY", "REAL_LITERAL", 
		"RECV", "RECV_STMT", "RELATIONAL_EXPR", "RETURN", "RETURN_STMT", "RPAREN", 
		"RSQUARE", "SELECT", "SELECT_STMT", "SELFCHANGE_OP", "SEMI", "SEND", "SEND_STMT", 
		"SHARED", "SIMPLE_TYPE", "SINGLE_COMMENT", "SIZEOF", "SKEW_FACTOR", "SMOOTH", 
		"SPEC", "SPEC_EXPR", "STATEMENT", "STATEMENT_LIST", "STATIC", "STRING_LITERAL", 
		"STRUCT", "SUB", "SUB_ASSIGN", "SUFFIX", "SYSTEM", "SYS_VAR", "TASS", 
		"TRUE", "TUPLE", "TYPEDEF", "TYPE_NAME", "TYPE_SPECIFIER", "UNARY_EXPR", 
		"UNARY_OP", "VOID", "WHEN", "WHILE", "WHILE_STMT", "WHITESPACE", "WILDCARD_EXPR"
	};
	public static final int EOF=-1;
	public static final int ABSTRACT=4;
	public static final int ABSTRACT_DECLARATOR=5;
	public static final int ABSTR_FUNCTION_DECL=6;
	public static final int ADDITIVE_EXPR=7;
	public static final int ADDR_OF=8;
	public static final int ALLOCATE_STMT=9;
	public static final int AND=10;
	public static final int ANNOTATION_LIST=11;
	public static final int ANY=12;
	public static final int ARGUMENT=13;
	public static final int ARGUMENT_LIST=14;
	public static final int ARROW=15;
	public static final int ASSERT=16;
	public static final int ASSERT_STMT=17;
	public static final int ASSIGN=18;
	public static final int ASSIGNMENT_STMT=19;
	public static final int ASSIGN_EXPR=20;
	public static final int ASSUME=21;
	public static final int ASSUME_STMT=22;
	public static final int AT=23;
	public static final int BAR=24;
	public static final int BODY=25;
	public static final int BOOLEAN=26;
	public static final int CALL_STMT=27;
	public static final int CAST=28;
	public static final int CHAR=29;
	public static final int CHAR_LITERAL=30;
	public static final int CHOICE=31;
	public static final int COLLECTIVE=32;
	public static final int COLLECTIVE_ASSERT_STMT=33;
	public static final int COLLECTIVE_INVARIANT_STMT=34;
	public static final int COLON=35;
	public static final int COMMA=36;
	public static final int COMMENT=37;
	public static final int COMM_EXPR=38;
	public static final int COMPOUND_STMT=39;
	public static final int CONDITIONAL_EXPR=40;
	public static final int CONDITION_STMT=41;
	public static final int CONST=42;
	public static final int CONSTANT=43;
	public static final int CONTINUOUS=44;
	public static final int CORRESPONDENCE=45;
	public static final int DEALLOCATE_STMT=46;
	public static final int DECL=47;
	public static final int DECLARATION=48;
	public static final int DECLARATOR=49;
	public static final int DECL_BODY=50;
	public static final int DECL_LIST=51;
	public static final int DECL_SUFFIX=52;
	public static final int DEFINE=53;
	public static final int DERIVATIVE=54;
	public static final int DERIVATIVE_EXPR=55;
	public static final int DESIGNATION=56;
	public static final int DESIGNATOR=57;
	public static final int DESIGNATOR_LIST=58;
	public static final int DIGIT=59;
	public static final int DIRECT_ABSTRACT_DECLARATOR=60;
	public static final int DIRECT_DECL=61;
	public static final int DIV=62;
	public static final int DIV_ASSIGN=63;
	public static final int DOT=64;
	public static final int DOUBLE=65;
	public static final int DOUBLE_PLUS=66;
	public static final int DOUBLE_SUB=67;
	public static final int ELSE=68;
	public static final int EMPTY_STMT=69;
	public static final int EQ=70;
	public static final int EQUALITY_EXPR=71;
	public static final int EVALUATED_FUNCTION_EXPR=72;
	public static final int EXISTS=73;
	public static final int EXPR=74;
	public static final int EXPR_STMT=75;
	public static final int EscapeSequence=76;
	public static final int Exponent=77;
	public static final int FALSE=78;
	public static final int FIELD_DECL=79;
	public static final int FLOAT=80;
	public static final int FOR=81;
	public static final int FORALL=82;
	public static final int FOR_STMT=83;
	public static final int FUNCTION=84;
	public static final int FUNCTION_DECL=85;
	public static final int GLOBAL_VARIABLE=86;
	public static final int GT=87;
	public static final int GTE=88;
	public static final int GUARD=89;
	public static final int IDENTIFIER=90;
	public static final int IF=91;
	public static final int IGNORE=92;
	public static final int IMPL=93;
	public static final int INCLUDE=94;
	public static final int INITIALIZER=95;
	public static final int INITIALIZER_LIST=96;
	public static final int INITIALIZER_LIST_REST=97;
	public static final int INPUT=98;
	public static final int INT=99;
	public static final int INT_LITERAL=100;
	public static final int INVARIANT=101;
	public static final int INVARIANT_STMT=102;
	public static final int IS=103;
	public static final int ITERATIVE_STMT=104;
	public static final int JOINT=105;
	public static final int JOINT_ASSERT_STMT=106;
	public static final int JOINT_INVARIANT_STMT=107;
	public static final int LCURLY=108;
	public static final int LETTER=109;
	public static final int LOGICAL_AND_EXPR=110;
	public static final int LOGICAL_OR_EXPR=111;
	public static final int LPAREN=112;
	public static final int LSQUARE=113;
	public static final int LT=114;
	public static final int LTE=115;
	public static final int MALLOC=116;
	public static final int MOD=117;
	public static final int MOD_ASSIGN=118;
	public static final int MULTI=119;
	public static final int MULTIPLICATIVE_EXPR=120;
	public static final int MULTI_ASSIGN=121;
	public static final int MULTI_DECLARATION=122;
	public static final int NEQ=123;
	public static final int NEWLINE=124;
	public static final int NOT=125;
	public static final int OR=126;
	public static final int OUTPUT=127;
	public static final int OctalEscape=128;
	public static final int PARAMETER=129;
	public static final int PARAMETER_LIST=130;
	public static final int PARTIAL=131;
	public static final int PARTIAL_LIST=132;
	public static final int PLUS=133;
	public static final int PLUS_ASSIGN=134;
	public static final int POSTFIX_EXPR=135;
	public static final int POSTFIX_EXPR_SUFFIX=136;
	public static final int PRAGMA=137;
	public static final int PREFIX=138;
	public static final int PRIMARY_EXPR=139;
	public static final int PROTOTYPE=140;
	public static final int QMARK=141;
	public static final int QUANTIFIER=142;
	public static final int QUANTIFIER_EXPR=143;
	public static final int RCURLY=144;
	public static final int REAL_LITERAL=145;
	public static final int RECV=146;
	public static final int RECV_STMT=147;
	public static final int RELATIONAL_EXPR=148;
	public static final int RETURN=149;
	public static final int RETURN_STMT=150;
	public static final int RPAREN=151;
	public static final int RSQUARE=152;
	public static final int SELECT=153;
	public static final int SELECT_STMT=154;
	public static final int SELFCHANGE_OP=155;
	public static final int SEMI=156;
	public static final int SEND=157;
	public static final int SEND_STMT=158;
	public static final int SHARED=159;
	public static final int SIMPLE_TYPE=160;
	public static final int SINGLE_COMMENT=161;
	public static final int SIZEOF=162;
	public static final int SKEW_FACTOR=163;
	public static final int SMOOTH=164;
	public static final int SPEC=165;
	public static final int SPEC_EXPR=166;
	public static final int STATEMENT=167;
	public static final int STATEMENT_LIST=168;
	public static final int STATIC=169;
	public static final int STRING_LITERAL=170;
	public static final int STRUCT=171;
	public static final int SUB=172;
	public static final int SUB_ASSIGN=173;
	public static final int SUFFIX=174;
	public static final int SYSTEM=175;
	public static final int SYS_VAR=176;
	public static final int TASS=177;
	public static final int TRUE=178;
	public static final int TUPLE=179;
	public static final int TYPEDEF=180;
	public static final int TYPE_NAME=181;
	public static final int TYPE_SPECIFIER=182;
	public static final int UNARY_EXPR=183;
	public static final int UNARY_OP=184;
	public static final int VOID=185;
	public static final int WHEN=186;
	public static final int WHILE=187;
	public static final int WHILE_STMT=188;
	public static final int WHITESPACE=189;
	public static final int WILDCARD_EXPR=190;

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

	// delegators


	public PragmaStringParser(TokenStream input) {
		this(input, new RecognizerSharedState());
	}
	public PragmaStringParser(TokenStream 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 PragmaStringParser.tokenNames; }
	@Override public String getGrammarFileName() { return "/home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g"; }


	public static class pragma_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "pragma"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:113:1: pragma : ( ( PRAGMA )? TASS function -> function | ( PRAGMA )? TASS statement -> statement | ( PRAGMA )? TASS prefix ( LCURLY expr RCURLY )? ( type_name IDENTIFIER )? -> ^( PREFIX prefix ( expr )? ( type_name IDENTIFIER )? ) );
	public final PragmaStringParser.pragma_return pragma() throws RecognitionException {
		PragmaStringParser.pragma_return retval = new PragmaStringParser.pragma_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PRAGMA1=null;
		Token TASS2=null;
		Token PRAGMA4=null;
		Token TASS5=null;
		Token PRAGMA7=null;
		Token TASS8=null;
		Token LCURLY10=null;
		Token RCURLY12=null;
		Token IDENTIFIER14=null;
		ParserRuleReturnScope function3 =null;
		ParserRuleReturnScope statement6 =null;
		ParserRuleReturnScope prefix9 =null;
		ParserRuleReturnScope expr11 =null;
		ParserRuleReturnScope type_name13 =null;

		Object PRAGMA1_tree=null;
		Object TASS2_tree=null;
		Object PRAGMA4_tree=null;
		Object TASS5_tree=null;
		Object PRAGMA7_tree=null;
		Object TASS8_tree=null;
		Object LCURLY10_tree=null;
		Object RCURLY12_tree=null;
		Object IDENTIFIER14_tree=null;
		RewriteRuleTokenStream stream_LCURLY=new RewriteRuleTokenStream(adaptor,"token LCURLY");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_TASS=new RewriteRuleTokenStream(adaptor,"token TASS");
		RewriteRuleTokenStream stream_RCURLY=new RewriteRuleTokenStream(adaptor,"token RCURLY");
		RewriteRuleTokenStream stream_PRAGMA=new RewriteRuleTokenStream(adaptor,"token PRAGMA");
		RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
		RewriteRuleSubtreeStream stream_prefix=new RewriteRuleSubtreeStream(adaptor,"rule prefix");
		RewriteRuleSubtreeStream stream_type_name=new RewriteRuleSubtreeStream(adaptor,"rule type_name");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
		RewriteRuleSubtreeStream stream_function=new RewriteRuleSubtreeStream(adaptor,"rule function");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:114:2: ( ( PRAGMA )? TASS function -> function | ( PRAGMA )? TASS statement -> statement | ( PRAGMA )? TASS prefix ( LCURLY expr RCURLY )? ( type_name IDENTIFIER )? -> ^( PREFIX prefix ( expr )? ( type_name IDENTIFIER )? ) )
			int alt6=3;
			int LA6_0 = input.LA(1);
			if ( (LA6_0==PRAGMA) ) {
				int LA6_1 = input.LA(2);
				if ( (LA6_1==TASS) ) {
					switch ( input.LA(3) ) {
					case ABSTRACT:
					case SYSTEM:
						{
						alt6=1;
						}
						break;
					case ADDR_OF:
					case ASSERT:
					case ASSUME:
					case CHAR_LITERAL:
					case COLLECTIVE:
					case DERIVATIVE:
					case DOUBLE_PLUS:
					case DOUBLE_SUB:
					case EXISTS:
					case FALSE:
					case FOR:
					case FORALL:
					case IDENTIFIER:
					case IF:
					case INT_LITERAL:
					case INVARIANT:
					case JOINT:
					case LCURLY:
					case LPAREN:
					case MULTI:
					case NOT:
					case PLUS:
					case REAL_LITERAL:
					case RECV:
					case RETURN:
					case SELECT:
					case SEMI:
					case SEND:
					case SIZEOF:
					case SPEC:
					case STRING_LITERAL:
					case SUB:
					case SYS_VAR:
					case TRUE:
					case WHILE:
						{
						alt6=2;
						}
						break;
					case INPUT:
					case OUTPUT:
					case SHARED:
					case TYPEDEF:
						{
						alt6=3;
						}
						break;
					default:
						if (state.backtracking>0) {state.failed=true; return retval;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) {
								input.consume();
							}
							NoViableAltException nvae =
								new NoViableAltException("", 6, 2, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}
				}

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

			}
			else if ( (LA6_0==TASS) ) {
				switch ( input.LA(2) ) {
				case ABSTRACT:
				case SYSTEM:
					{
					alt6=1;
					}
					break;
				case ADDR_OF:
				case ASSERT:
				case ASSUME:
				case CHAR_LITERAL:
				case COLLECTIVE:
				case DERIVATIVE:
				case DOUBLE_PLUS:
				case DOUBLE_SUB:
				case EXISTS:
				case FALSE:
				case FOR:
				case FORALL:
				case IDENTIFIER:
				case IF:
				case INT_LITERAL:
				case INVARIANT:
				case JOINT:
				case LCURLY:
				case LPAREN:
				case MULTI:
				case NOT:
				case PLUS:
				case REAL_LITERAL:
				case RECV:
				case RETURN:
				case SELECT:
				case SEMI:
				case SEND:
				case SIZEOF:
				case SPEC:
				case STRING_LITERAL:
				case SUB:
				case SYS_VAR:
				case TRUE:
				case WHILE:
					{
					alt6=2;
					}
					break;
				case INPUT:
				case OUTPUT:
				case SHARED:
				case TYPEDEF:
					{
					alt6=3;
					}
					break;
				default:
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 6, 2, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
			}

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

			switch (alt6) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:114:4: ( PRAGMA )? TASS function
					{
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:114:4: ( PRAGMA )?
					int alt1=2;
					int LA1_0 = input.LA(1);
					if ( (LA1_0==PRAGMA) ) {
						alt1=1;
					}
					switch (alt1) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:114:4: PRAGMA
							{
							PRAGMA1=(Token)match(input,PRAGMA,FOLLOW_PRAGMA_in_pragma418); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_PRAGMA.add(PRAGMA1);

							}
							break;

					}

					TASS2=(Token)match(input,TASS,FOLLOW_TASS_in_pragma421); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_TASS.add(TASS2);

					pushFollow(FOLLOW_function_in_pragma423);
					function3=function();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_function.add(function3.getTree());
					// AST REWRITE
					// elements: function
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 114:26: -> function
					{
						adaptor.addChild(root_0, stream_function.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:115:4: ( PRAGMA )? TASS statement
					{
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:115:4: ( PRAGMA )?
					int alt2=2;
					int LA2_0 = input.LA(1);
					if ( (LA2_0==PRAGMA) ) {
						alt2=1;
					}
					switch (alt2) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:115:4: PRAGMA
							{
							PRAGMA4=(Token)match(input,PRAGMA,FOLLOW_PRAGMA_in_pragma432); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_PRAGMA.add(PRAGMA4);

							}
							break;

					}

					TASS5=(Token)match(input,TASS,FOLLOW_TASS_in_pragma435); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_TASS.add(TASS5);

					pushFollow(FOLLOW_statement_in_pragma437);
					statement6=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(statement6.getTree());
					// AST REWRITE
					// elements: statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 115:27: -> statement
					{
						adaptor.addChild(root_0, stream_statement.nextTree());
					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:116:4: ( PRAGMA )? TASS prefix ( LCURLY expr RCURLY )? ( type_name IDENTIFIER )?
					{
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:116:4: ( PRAGMA )?
					int alt3=2;
					int LA3_0 = input.LA(1);
					if ( (LA3_0==PRAGMA) ) {
						alt3=1;
					}
					switch (alt3) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:116:4: PRAGMA
							{
							PRAGMA7=(Token)match(input,PRAGMA,FOLLOW_PRAGMA_in_pragma447); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_PRAGMA.add(PRAGMA7);

							}
							break;

					}

					TASS8=(Token)match(input,TASS,FOLLOW_TASS_in_pragma450); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_TASS.add(TASS8);

					pushFollow(FOLLOW_prefix_in_pragma452);
					prefix9=prefix();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_prefix.add(prefix9.getTree());
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:116:24: ( LCURLY expr RCURLY )?
					int alt4=2;
					int LA4_0 = input.LA(1);
					if ( (LA4_0==LCURLY) ) {
						alt4=1;
					}
					switch (alt4) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:116:25: LCURLY expr RCURLY
							{
							LCURLY10=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_pragma455); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY10);

							pushFollow(FOLLOW_expr_in_pragma457);
							expr11=expr();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expr.add(expr11.getTree());
							RCURLY12=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_pragma459); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY12);

							}
							break;

					}

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:116:46: ( type_name IDENTIFIER )?
					int alt5=2;
					int LA5_0 = input.LA(1);
					if ( (LA5_0==BOOLEAN||LA5_0==CHAR||LA5_0==DOUBLE||LA5_0==FLOAT||LA5_0==IDENTIFIER||LA5_0==INT||LA5_0==STRUCT||LA5_0==VOID) ) {
						alt5=1;
					}
					switch (alt5) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:116:47: type_name IDENTIFIER
							{
							pushFollow(FOLLOW_type_name_in_pragma464);
							type_name13=type_name();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_type_name.add(type_name13.getTree());
							IDENTIFIER14=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_pragma466); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER14);

							}
							break;

					}

					// AST REWRITE
					// elements: IDENTIFIER, type_name, expr, prefix
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 116:69: -> ^( PREFIX prefix ( expr )? ( type_name IDENTIFIER )? )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:116:72: ^( PREFIX prefix ( expr )? ( type_name IDENTIFIER )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PREFIX, "PREFIX"), root_1);
						adaptor.addChild(root_1, stream_prefix.nextTree());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:116:88: ( expr )?
						if ( stream_expr.hasNext() ) {
							adaptor.addChild(root_1, stream_expr.nextTree());
						}
						stream_expr.reset();

						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:116:94: ( type_name IDENTIFIER )?
						if ( stream_IDENTIFIER.hasNext()||stream_type_name.hasNext() ) {
							adaptor.addChild(root_1, stream_type_name.nextTree());
							adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						}
						stream_IDENTIFIER.reset();
						stream_type_name.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "pragma"


	public static class function_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "function"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:119:1: function : ( SYSTEM declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI -> ^( SYSTEM declarator IDENTIFIER ( argument_list )? RPAREN ) | SYSTEM GUARD expr declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI -> ^( SYSTEM GUARD expr declarator IDENTIFIER ( argument_list )? RPAREN ) | ABSTRACT CONTINUOUS ( LPAREN INT_LITERAL RPAREN )? declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI -> ^( ABSTRACT ( INT_LITERAL )? RPAREN declarator IDENTIFIER ( argument_list )? RPAREN ) | ABSTRACT declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI -> ^( ABSTRACT IGNORE IGNORE declarator IDENTIFIER ( argument_list )? RPAREN ) | ABSTRACT SMOOTH declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI -> ^( ABSTRACT SMOOTH IGNORE declarator IDENTIFIER ( argument_list )? RPAREN ) );
	public final PragmaStringParser.function_return function() throws RecognitionException {
		PragmaStringParser.function_return retval = new PragmaStringParser.function_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token SYSTEM15=null;
		Token IDENTIFIER17=null;
		Token LPAREN18=null;
		Token RPAREN20=null;
		Token SEMI21=null;
		Token SYSTEM22=null;
		Token GUARD23=null;
		Token IDENTIFIER26=null;
		Token LPAREN27=null;
		Token RPAREN29=null;
		Token SEMI30=null;
		Token ABSTRACT31=null;
		Token CONTINUOUS32=null;
		Token LPAREN33=null;
		Token INT_LITERAL34=null;
		Token RPAREN35=null;
		Token IDENTIFIER37=null;
		Token LPAREN38=null;
		Token RPAREN40=null;
		Token SEMI41=null;
		Token ABSTRACT42=null;
		Token IDENTIFIER44=null;
		Token LPAREN45=null;
		Token RPAREN47=null;
		Token SEMI48=null;
		Token ABSTRACT49=null;
		Token SMOOTH50=null;
		Token IDENTIFIER52=null;
		Token LPAREN53=null;
		Token RPAREN55=null;
		Token SEMI56=null;
		ParserRuleReturnScope declarator16 =null;
		ParserRuleReturnScope argument_list19 =null;
		ParserRuleReturnScope expr24 =null;
		ParserRuleReturnScope declarator25 =null;
		ParserRuleReturnScope argument_list28 =null;
		ParserRuleReturnScope declarator36 =null;
		ParserRuleReturnScope argument_list39 =null;
		ParserRuleReturnScope declarator43 =null;
		ParserRuleReturnScope argument_list46 =null;
		ParserRuleReturnScope declarator51 =null;
		ParserRuleReturnScope argument_list54 =null;

		Object SYSTEM15_tree=null;
		Object IDENTIFIER17_tree=null;
		Object LPAREN18_tree=null;
		Object RPAREN20_tree=null;
		Object SEMI21_tree=null;
		Object SYSTEM22_tree=null;
		Object GUARD23_tree=null;
		Object IDENTIFIER26_tree=null;
		Object LPAREN27_tree=null;
		Object RPAREN29_tree=null;
		Object SEMI30_tree=null;
		Object ABSTRACT31_tree=null;
		Object CONTINUOUS32_tree=null;
		Object LPAREN33_tree=null;
		Object INT_LITERAL34_tree=null;
		Object RPAREN35_tree=null;
		Object IDENTIFIER37_tree=null;
		Object LPAREN38_tree=null;
		Object RPAREN40_tree=null;
		Object SEMI41_tree=null;
		Object ABSTRACT42_tree=null;
		Object IDENTIFIER44_tree=null;
		Object LPAREN45_tree=null;
		Object RPAREN47_tree=null;
		Object SEMI48_tree=null;
		Object ABSTRACT49_tree=null;
		Object SMOOTH50_tree=null;
		Object IDENTIFIER52_tree=null;
		Object LPAREN53_tree=null;
		Object RPAREN55_tree=null;
		Object SEMI56_tree=null;
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_INT_LITERAL=new RewriteRuleTokenStream(adaptor,"token INT_LITERAL");
		RewriteRuleTokenStream stream_SMOOTH=new RewriteRuleTokenStream(adaptor,"token SMOOTH");
		RewriteRuleTokenStream stream_ABSTRACT=new RewriteRuleTokenStream(adaptor,"token ABSTRACT");
		RewriteRuleTokenStream stream_CONTINUOUS=new RewriteRuleTokenStream(adaptor,"token CONTINUOUS");
		RewriteRuleTokenStream stream_GUARD=new RewriteRuleTokenStream(adaptor,"token GUARD");
		RewriteRuleTokenStream stream_SYSTEM=new RewriteRuleTokenStream(adaptor,"token SYSTEM");
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleSubtreeStream stream_argument_list=new RewriteRuleSubtreeStream(adaptor,"rule argument_list");
		RewriteRuleSubtreeStream stream_declarator=new RewriteRuleSubtreeStream(adaptor,"rule declarator");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:120:2: ( SYSTEM declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI -> ^( SYSTEM declarator IDENTIFIER ( argument_list )? RPAREN ) | SYSTEM GUARD expr declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI -> ^( SYSTEM GUARD expr declarator IDENTIFIER ( argument_list )? RPAREN ) | ABSTRACT CONTINUOUS ( LPAREN INT_LITERAL RPAREN )? declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI -> ^( ABSTRACT ( INT_LITERAL )? RPAREN declarator IDENTIFIER ( argument_list )? RPAREN ) | ABSTRACT declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI -> ^( ABSTRACT IGNORE IGNORE declarator IDENTIFIER ( argument_list )? RPAREN ) | ABSTRACT SMOOTH declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI -> ^( ABSTRACT SMOOTH IGNORE declarator IDENTIFIER ( argument_list )? RPAREN ) )
			int alt13=5;
			int LA13_0 = input.LA(1);
			if ( (LA13_0==SYSTEM) ) {
				int LA13_1 = input.LA(2);
				if ( (LA13_1==GUARD) ) {
					alt13=2;
				}
				else if ( (LA13_1==BOOLEAN||LA13_1==CHAR||LA13_1==DOUBLE||LA13_1==FLOAT||LA13_1==IDENTIFIER||LA13_1==INT||LA13_1==LPAREN||LA13_1==MULTI||LA13_1==STRUCT||LA13_1==VOID) ) {
					alt13=1;
				}

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

			}
			else if ( (LA13_0==ABSTRACT) ) {
				switch ( input.LA(2) ) {
				case CONTINUOUS:
					{
					alt13=3;
					}
					break;
				case SMOOTH:
					{
					alt13=5;
					}
					break;
				case BOOLEAN:
				case CHAR:
				case DOUBLE:
				case FLOAT:
				case IDENTIFIER:
				case INT:
				case LPAREN:
				case MULTI:
				case STRUCT:
				case VOID:
					{
					alt13=4;
					}
					break;
				default:
					if (state.backtracking>0) {state.failed=true; return retval;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 13, 2, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
			}

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

			switch (alt13) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:120:4: SYSTEM declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI
					{
					SYSTEM15=(Token)match(input,SYSTEM,FOLLOW_SYSTEM_in_function497); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SYSTEM.add(SYSTEM15);

					pushFollow(FOLLOW_declarator_in_function499);
					declarator16=declarator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_declarator.add(declarator16.getTree());
					IDENTIFIER17=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_function501); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER17);

					LPAREN18=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_function503); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN18);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:120:40: ( argument_list )?
					int alt7=2;
					int LA7_0 = input.LA(1);
					if ( (LA7_0==BOOLEAN||LA7_0==CHAR||LA7_0==DOUBLE||LA7_0==FLOAT||LA7_0==IDENTIFIER||LA7_0==INT||LA7_0==STRUCT||LA7_0==VOID) ) {
						alt7=1;
					}
					switch (alt7) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:120:40: argument_list
							{
							pushFollow(FOLLOW_argument_list_in_function505);
							argument_list19=argument_list();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_argument_list.add(argument_list19.getTree());
							}
							break;

					}

					RPAREN20=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_function508); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN20);

					SEMI21=(Token)match(input,SEMI,FOLLOW_SEMI_in_function510); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SEMI.add(SEMI21);

					// AST REWRITE
					// elements: SYSTEM, RPAREN, argument_list, IDENTIFIER, declarator
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 121:3: -> ^( SYSTEM declarator IDENTIFIER ( argument_list )? RPAREN )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:121:6: ^( SYSTEM declarator IDENTIFIER ( argument_list )? RPAREN )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot(stream_SYSTEM.nextNode(), root_1);
						adaptor.addChild(root_1, stream_declarator.nextTree());
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:121:37: ( argument_list )?
						if ( stream_argument_list.hasNext() ) {
							adaptor.addChild(root_1, stream_argument_list.nextTree());
						}
						stream_argument_list.reset();

						adaptor.addChild(root_1, stream_RPAREN.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:122:4: SYSTEM GUARD expr declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI
					{
					SYSTEM22=(Token)match(input,SYSTEM,FOLLOW_SYSTEM_in_function532); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SYSTEM.add(SYSTEM22);

					GUARD23=(Token)match(input,GUARD,FOLLOW_GUARD_in_function534); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_GUARD.add(GUARD23);

					pushFollow(FOLLOW_expr_in_function536);
					expr24=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr24.getTree());
					pushFollow(FOLLOW_declarator_in_function538);
					declarator25=declarator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_declarator.add(declarator25.getTree());
					IDENTIFIER26=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_function540); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER26);

					LPAREN27=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_function542); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN27);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:122:51: ( argument_list )?
					int alt8=2;
					int LA8_0 = input.LA(1);
					if ( (LA8_0==BOOLEAN||LA8_0==CHAR||LA8_0==DOUBLE||LA8_0==FLOAT||LA8_0==IDENTIFIER||LA8_0==INT||LA8_0==STRUCT||LA8_0==VOID) ) {
						alt8=1;
					}
					switch (alt8) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:122:51: argument_list
							{
							pushFollow(FOLLOW_argument_list_in_function544);
							argument_list28=argument_list();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_argument_list.add(argument_list28.getTree());
							}
							break;

					}

					RPAREN29=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_function547); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN29);

					SEMI30=(Token)match(input,SEMI,FOLLOW_SEMI_in_function549); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SEMI.add(SEMI30);

					// AST REWRITE
					// elements: SYSTEM, declarator, GUARD, RPAREN, IDENTIFIER, argument_list, expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 123:3: -> ^( SYSTEM GUARD expr declarator IDENTIFIER ( argument_list )? RPAREN )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:123:6: ^( SYSTEM GUARD expr declarator IDENTIFIER ( argument_list )? RPAREN )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot(stream_SYSTEM.nextNode(), root_1);
						adaptor.addChild(root_1, stream_GUARD.nextNode());
						adaptor.addChild(root_1, stream_expr.nextTree());
						adaptor.addChild(root_1, stream_declarator.nextTree());
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:123:48: ( argument_list )?
						if ( stream_argument_list.hasNext() ) {
							adaptor.addChild(root_1, stream_argument_list.nextTree());
						}
						stream_argument_list.reset();

						adaptor.addChild(root_1, stream_RPAREN.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:124:4: ABSTRACT CONTINUOUS ( LPAREN INT_LITERAL RPAREN )? declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI
					{
					ABSTRACT31=(Token)match(input,ABSTRACT,FOLLOW_ABSTRACT_in_function575); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ABSTRACT.add(ABSTRACT31);

					CONTINUOUS32=(Token)match(input,CONTINUOUS,FOLLOW_CONTINUOUS_in_function577); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CONTINUOUS.add(CONTINUOUS32);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:124:24: ( LPAREN INT_LITERAL RPAREN )?
					int alt9=2;
					int LA9_0 = input.LA(1);
					if ( (LA9_0==LPAREN) ) {
						int LA9_1 = input.LA(2);
						if ( (LA9_1==INT_LITERAL) ) {
							alt9=1;
						}
					}
					switch (alt9) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:124:25: LPAREN INT_LITERAL RPAREN
							{
							LPAREN33=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_function580); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN33);

							INT_LITERAL34=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_function582); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_INT_LITERAL.add(INT_LITERAL34);

							RPAREN35=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_function584); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN35);

							}
							break;

					}

					pushFollow(FOLLOW_declarator_in_function588);
					declarator36=declarator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_declarator.add(declarator36.getTree());
					IDENTIFIER37=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_function590); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER37);

					LPAREN38=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_function592); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN38);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:124:82: ( argument_list )?
					int alt10=2;
					int LA10_0 = input.LA(1);
					if ( (LA10_0==BOOLEAN||LA10_0==CHAR||LA10_0==DOUBLE||LA10_0==FLOAT||LA10_0==IDENTIFIER||LA10_0==INT||LA10_0==STRUCT||LA10_0==VOID) ) {
						alt10=1;
					}
					switch (alt10) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:124:82: argument_list
							{
							pushFollow(FOLLOW_argument_list_in_function594);
							argument_list39=argument_list();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_argument_list.add(argument_list39.getTree());
							}
							break;

					}

					RPAREN40=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_function597); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN40);

					SEMI41=(Token)match(input,SEMI,FOLLOW_SEMI_in_function599); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SEMI.add(SEMI41);

					// AST REWRITE
					// elements: IDENTIFIER, argument_list, RPAREN, INT_LITERAL, RPAREN, declarator, ABSTRACT
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 125:3: -> ^( ABSTRACT ( INT_LITERAL )? RPAREN declarator IDENTIFIER ( argument_list )? RPAREN )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:125:6: ^( ABSTRACT ( INT_LITERAL )? RPAREN declarator IDENTIFIER ( argument_list )? RPAREN )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot(stream_ABSTRACT.nextNode(), root_1);
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:125:17: ( INT_LITERAL )?
						if ( stream_INT_LITERAL.hasNext() ) {
							adaptor.addChild(root_1, stream_INT_LITERAL.nextNode());
						}
						stream_INT_LITERAL.reset();

						adaptor.addChild(root_1, stream_RPAREN.nextNode());
						adaptor.addChild(root_1, stream_declarator.nextTree());
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:125:59: ( argument_list )?
						if ( stream_argument_list.hasNext() ) {
							adaptor.addChild(root_1, stream_argument_list.nextTree());
						}
						stream_argument_list.reset();

						adaptor.addChild(root_1, stream_RPAREN.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:126:4: ABSTRACT declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI
					{
					ABSTRACT42=(Token)match(input,ABSTRACT,FOLLOW_ABSTRACT_in_function626); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ABSTRACT.add(ABSTRACT42);

					pushFollow(FOLLOW_declarator_in_function628);
					declarator43=declarator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_declarator.add(declarator43.getTree());
					IDENTIFIER44=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_function630); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER44);

					LPAREN45=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_function632); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN45);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:126:42: ( argument_list )?
					int alt11=2;
					int LA11_0 = input.LA(1);
					if ( (LA11_0==BOOLEAN||LA11_0==CHAR||LA11_0==DOUBLE||LA11_0==FLOAT||LA11_0==IDENTIFIER||LA11_0==INT||LA11_0==STRUCT||LA11_0==VOID) ) {
						alt11=1;
					}
					switch (alt11) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:126:42: argument_list
							{
							pushFollow(FOLLOW_argument_list_in_function634);
							argument_list46=argument_list();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_argument_list.add(argument_list46.getTree());
							}
							break;

					}

					RPAREN47=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_function637); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN47);

					SEMI48=(Token)match(input,SEMI,FOLLOW_SEMI_in_function639); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SEMI.add(SEMI48);

					// AST REWRITE
					// elements: IDENTIFIER, declarator, ABSTRACT, RPAREN, argument_list
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 127:3: -> ^( ABSTRACT IGNORE IGNORE declarator IDENTIFIER ( argument_list )? RPAREN )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:127:6: ^( ABSTRACT IGNORE IGNORE declarator IDENTIFIER ( argument_list )? RPAREN )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot(stream_ABSTRACT.nextNode(), root_1);
						adaptor.addChild(root_1, (Object)adaptor.create(IGNORE, "IGNORE"));
						adaptor.addChild(root_1, (Object)adaptor.create(IGNORE, "IGNORE"));
						adaptor.addChild(root_1, stream_declarator.nextTree());
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:127:53: ( argument_list )?
						if ( stream_argument_list.hasNext() ) {
							adaptor.addChild(root_1, stream_argument_list.nextTree());
						}
						stream_argument_list.reset();

						adaptor.addChild(root_1, stream_RPAREN.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 5 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:128:4: ABSTRACT SMOOTH declarator IDENTIFIER LPAREN ( argument_list )? RPAREN SEMI
					{
					ABSTRACT49=(Token)match(input,ABSTRACT,FOLLOW_ABSTRACT_in_function665); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ABSTRACT.add(ABSTRACT49);

					SMOOTH50=(Token)match(input,SMOOTH,FOLLOW_SMOOTH_in_function667); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SMOOTH.add(SMOOTH50);

					pushFollow(FOLLOW_declarator_in_function669);
					declarator51=declarator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_declarator.add(declarator51.getTree());
					IDENTIFIER52=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_function671); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER52);

					LPAREN53=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_function673); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN53);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:128:49: ( argument_list )?
					int alt12=2;
					int LA12_0 = input.LA(1);
					if ( (LA12_0==BOOLEAN||LA12_0==CHAR||LA12_0==DOUBLE||LA12_0==FLOAT||LA12_0==IDENTIFIER||LA12_0==INT||LA12_0==STRUCT||LA12_0==VOID) ) {
						alt12=1;
					}
					switch (alt12) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:128:49: argument_list
							{
							pushFollow(FOLLOW_argument_list_in_function675);
							argument_list54=argument_list();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_argument_list.add(argument_list54.getTree());
							}
							break;

					}

					RPAREN55=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_function678); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN55);

					SEMI56=(Token)match(input,SEMI,FOLLOW_SEMI_in_function680); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SEMI.add(SEMI56);

					// AST REWRITE
					// elements: declarator, argument_list, RPAREN, SMOOTH, IDENTIFIER, ABSTRACT
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 129:3: -> ^( ABSTRACT SMOOTH IGNORE declarator IDENTIFIER ( argument_list )? RPAREN )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:129:6: ^( ABSTRACT SMOOTH IGNORE declarator IDENTIFIER ( argument_list )? RPAREN )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot(stream_ABSTRACT.nextNode(), root_1);
						adaptor.addChild(root_1, stream_SMOOTH.nextNode());
						adaptor.addChild(root_1, (Object)adaptor.create(IGNORE, "IGNORE"));
						adaptor.addChild(root_1, stream_declarator.nextTree());
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:129:53: ( argument_list )?
						if ( stream_argument_list.hasNext() ) {
							adaptor.addChild(root_1, stream_argument_list.nextTree());
						}
						stream_argument_list.reset();

						adaptor.addChild(root_1, stream_RPAREN.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "function"


	public static class argument_list_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "argument_list"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:132:1: argument_list : argument ( COMMA argument )* -> ^( ARGUMENT_LIST argument ( COMMA argument )* ) ;
	public final PragmaStringParser.argument_list_return argument_list() throws RecognitionException {
		PragmaStringParser.argument_list_return retval = new PragmaStringParser.argument_list_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token COMMA58=null;
		ParserRuleReturnScope argument57 =null;
		ParserRuleReturnScope argument59 =null;

		Object COMMA58_tree=null;
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleSubtreeStream stream_argument=new RewriteRuleSubtreeStream(adaptor,"rule argument");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:134:2: ( argument ( COMMA argument )* -> ^( ARGUMENT_LIST argument ( COMMA argument )* ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:134:4: argument ( COMMA argument )*
			{
			pushFollow(FOLLOW_argument_in_argument_list715);
			argument57=argument();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_argument.add(argument57.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:134:13: ( COMMA argument )*
			loop14:
			while (true) {
				int alt14=2;
				int LA14_0 = input.LA(1);
				if ( (LA14_0==COMMA) ) {
					alt14=1;
				}

				switch (alt14) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:134:14: COMMA argument
					{
					COMMA58=(Token)match(input,COMMA,FOLLOW_COMMA_in_argument_list718); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA58);

					pushFollow(FOLLOW_argument_in_argument_list720);
					argument59=argument();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_argument.add(argument59.getTree());
					}
					break;

				default :
					break loop14;
				}
			}

			// AST REWRITE
			// elements: argument, argument, COMMA
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 134:31: -> ^( ARGUMENT_LIST argument ( COMMA argument )* )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:134:34: ^( ARGUMENT_LIST argument ( COMMA argument )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ARGUMENT_LIST, "ARGUMENT_LIST"), root_1);
				adaptor.addChild(root_1, stream_argument.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:134:59: ( COMMA argument )*
				while ( stream_argument.hasNext()||stream_COMMA.hasNext() ) {
					adaptor.addChild(root_1, stream_COMMA.nextNode());
					adaptor.addChild(root_1, stream_argument.nextTree());
				}
				stream_argument.reset();
				stream_COMMA.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "argument_list"


	public static class argument_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "argument"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:137:1: argument : type_specifier declarator -> ^( ARGUMENT type_specifier declarator ) ;
	public final PragmaStringParser.argument_return argument() throws RecognitionException {
		PragmaStringParser.argument_return retval = new PragmaStringParser.argument_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope type_specifier60 =null;
		ParserRuleReturnScope declarator61 =null;

		RewriteRuleSubtreeStream stream_declarator=new RewriteRuleSubtreeStream(adaptor,"rule declarator");
		RewriteRuleSubtreeStream stream_type_specifier=new RewriteRuleSubtreeStream(adaptor,"rule type_specifier");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:138:2: ( type_specifier declarator -> ^( ARGUMENT type_specifier declarator ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:138:4: type_specifier declarator
			{
			pushFollow(FOLLOW_type_specifier_in_argument749);
			type_specifier60=type_specifier();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_type_specifier.add(type_specifier60.getTree());
			pushFollow(FOLLOW_declarator_in_argument751);
			declarator61=declarator();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_declarator.add(declarator61.getTree());
			// AST REWRITE
			// elements: type_specifier, declarator
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 138:30: -> ^( ARGUMENT type_specifier declarator )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:138:33: ^( ARGUMENT type_specifier declarator )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ARGUMENT, "ARGUMENT"), root_1);
				adaptor.addChild(root_1, stream_type_specifier.nextTree());
				adaptor.addChild(root_1, stream_declarator.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "argument"


	public static class declaration_unit_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "declaration_unit"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:141:1: declaration_unit : declarator ( ASSIGN initializer )? -> declarator ( initializer )? ;
	public final PragmaStringParser.declaration_unit_return declaration_unit() throws RecognitionException {
		PragmaStringParser.declaration_unit_return retval = new PragmaStringParser.declaration_unit_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token ASSIGN63=null;
		ParserRuleReturnScope declarator62 =null;
		ParserRuleReturnScope initializer64 =null;

		Object ASSIGN63_tree=null;
		RewriteRuleTokenStream stream_ASSIGN=new RewriteRuleTokenStream(adaptor,"token ASSIGN");
		RewriteRuleSubtreeStream stream_declarator=new RewriteRuleSubtreeStream(adaptor,"rule declarator");
		RewriteRuleSubtreeStream stream_initializer=new RewriteRuleSubtreeStream(adaptor,"rule initializer");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:142:2: ( declarator ( ASSIGN initializer )? -> declarator ( initializer )? )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:142:4: declarator ( ASSIGN initializer )?
			{
			pushFollow(FOLLOW_declarator_in_declaration_unit773);
			declarator62=declarator();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_declarator.add(declarator62.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:142:15: ( ASSIGN initializer )?
			int alt15=2;
			int LA15_0 = input.LA(1);
			if ( (LA15_0==ASSIGN) ) {
				alt15=1;
			}
			switch (alt15) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:142:16: ASSIGN initializer
					{
					ASSIGN63=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_declaration_unit776); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ASSIGN.add(ASSIGN63);

					pushFollow(FOLLOW_initializer_in_declaration_unit778);
					initializer64=initializer();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_initializer.add(initializer64.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: initializer, declarator
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 142:37: -> declarator ( initializer )?
			{
				adaptor.addChild(root_0, stream_declarator.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:142:51: ( initializer )?
				if ( stream_initializer.hasNext() ) {
					adaptor.addChild(root_0, stream_initializer.nextTree());
				}
				stream_initializer.reset();

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "declaration_unit"


	public static class declaration_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "declaration"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:144:1: declaration : (type= type_specifier declaration_unit ( COMMA declaration_unit )+ SEMI -> ^( MULTI_DECLARATION ( ^( DECLARATION ^( DECL_BODY $type declaration_unit ) SEMI ) )+ ) | ( prefix )? ( suffix )? declaration_body SEMI -> ^( DECLARATION ( prefix )? declaration_body ( suffix )? SEMI ) | INPUT ( suffix )? type_specifier DEFINE IDENTIFIER expr -> ^( DECLARATION ^( PREFIX INPUT ) ^( DECL_BODY type_specifier ^( DECLARATOR ^( DIRECT_DECL IDENTIFIER ) ) ) ( suffix )? SEMI ) );
	public final PragmaStringParser.declaration_return declaration() throws RecognitionException {
		PragmaStringParser.declaration_return retval = new PragmaStringParser.declaration_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token COMMA66=null;
		Token SEMI68=null;
		Token SEMI72=null;
		Token INPUT73=null;
		Token DEFINE76=null;
		Token IDENTIFIER77=null;
		ParserRuleReturnScope type =null;
		ParserRuleReturnScope declaration_unit65 =null;
		ParserRuleReturnScope declaration_unit67 =null;
		ParserRuleReturnScope prefix69 =null;
		ParserRuleReturnScope suffix70 =null;
		ParserRuleReturnScope declaration_body71 =null;
		ParserRuleReturnScope suffix74 =null;
		ParserRuleReturnScope type_specifier75 =null;
		ParserRuleReturnScope expr78 =null;

		Object COMMA66_tree=null;
		Object SEMI68_tree=null;
		Object SEMI72_tree=null;
		Object INPUT73_tree=null;
		Object DEFINE76_tree=null;
		Object IDENTIFIER77_tree=null;
		RewriteRuleTokenStream stream_INPUT=new RewriteRuleTokenStream(adaptor,"token INPUT");
		RewriteRuleTokenStream stream_DEFINE=new RewriteRuleTokenStream(adaptor,"token DEFINE");
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleSubtreeStream stream_declaration_unit=new RewriteRuleSubtreeStream(adaptor,"rule declaration_unit");
		RewriteRuleSubtreeStream stream_prefix=new RewriteRuleSubtreeStream(adaptor,"rule prefix");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
		RewriteRuleSubtreeStream stream_type_specifier=new RewriteRuleSubtreeStream(adaptor,"rule type_specifier");
		RewriteRuleSubtreeStream stream_suffix=new RewriteRuleSubtreeStream(adaptor,"rule suffix");
		RewriteRuleSubtreeStream stream_declaration_body=new RewriteRuleSubtreeStream(adaptor,"rule declaration_body");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:145:2: (type= type_specifier declaration_unit ( COMMA declaration_unit )+ SEMI -> ^( MULTI_DECLARATION ( ^( DECLARATION ^( DECL_BODY $type declaration_unit ) SEMI ) )+ ) | ( prefix )? ( suffix )? declaration_body SEMI -> ^( DECLARATION ( prefix )? declaration_body ( suffix )? SEMI ) | INPUT ( suffix )? type_specifier DEFINE IDENTIFIER expr -> ^( DECLARATION ^( PREFIX INPUT ) ^( DECL_BODY type_specifier ^( DECLARATOR ^( DIRECT_DECL IDENTIFIER ) ) ) ( suffix )? SEMI ) )
			int alt20=3;
			switch ( input.LA(1) ) {
			case BOOLEAN:
			case CHAR:
			case DOUBLE:
			case FLOAT:
			case INT:
			case VOID:
				{
				int LA20_1 = input.LA(2);
				if ( (synpred21_PragmaString()) ) {
					alt20=1;
				}
				else if ( (synpred24_PragmaString()) ) {
					alt20=2;
				}

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

				}
				break;
			case STRUCT:
				{
				int LA20_2 = input.LA(2);
				if ( (synpred21_PragmaString()) ) {
					alt20=1;
				}
				else if ( (synpred24_PragmaString()) ) {
					alt20=2;
				}

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

				}
				break;
			case IDENTIFIER:
				{
				int LA20_3 = input.LA(2);
				if ( (synpred21_PragmaString()) ) {
					alt20=1;
				}
				else if ( (synpred24_PragmaString()) ) {
					alt20=2;
				}

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

				}
				break;
			case INPUT:
				{
				int LA20_4 = input.LA(2);
				if ( (synpred24_PragmaString()) ) {
					alt20=2;
				}
				else if ( (true) ) {
					alt20=3;
				}

				}
				break;
			case CONST:
			case IS:
			case LCURLY:
			case OUTPUT:
			case SHARED:
			case STATIC:
			case TYPEDEF:
				{
				alt20=2;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 20, 0, input);
				throw nvae;
			}
			switch (alt20) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:145:5: type= type_specifier declaration_unit ( COMMA declaration_unit )+ SEMI
					{
					pushFollow(FOLLOW_type_specifier_in_declaration800);
					type=type_specifier();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_type_specifier.add(type.getTree());
					pushFollow(FOLLOW_declaration_unit_in_declaration802);
					declaration_unit65=declaration_unit();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_declaration_unit.add(declaration_unit65.getTree());
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:145:42: ( COMMA declaration_unit )+
					int cnt16=0;
					loop16:
					while (true) {
						int alt16=2;
						int LA16_0 = input.LA(1);
						if ( (LA16_0==COMMA) ) {
							alt16=1;
						}

						switch (alt16) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:145:43: COMMA declaration_unit
							{
							COMMA66=(Token)match(input,COMMA,FOLLOW_COMMA_in_declaration805); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_COMMA.add(COMMA66);

							pushFollow(FOLLOW_declaration_unit_in_declaration807);
							declaration_unit67=declaration_unit();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_declaration_unit.add(declaration_unit67.getTree());
							}
							break;

						default :
							if ( cnt16 >= 1 ) break loop16;
							if (state.backtracking>0) {state.failed=true; return retval;}
							EarlyExitException eee = new EarlyExitException(16, input);
							throw eee;
						}
						cnt16++;
					}

					SEMI68=(Token)match(input,SEMI,FOLLOW_SEMI_in_declaration811); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SEMI.add(SEMI68);

					// AST REWRITE
					// elements: SEMI, declaration_unit, type
					// token labels: 
					// rule labels: retval, type
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_type=new RewriteRuleSubtreeStream(adaptor,"rule type",type!=null?type.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 146:3: -> ^( MULTI_DECLARATION ( ^( DECLARATION ^( DECL_BODY $type declaration_unit ) SEMI ) )+ )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:146:6: ^( MULTI_DECLARATION ( ^( DECLARATION ^( DECL_BODY $type declaration_unit ) SEMI ) )+ )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(MULTI_DECLARATION, "MULTI_DECLARATION"), root_1);
						if ( !(stream_SEMI.hasNext()||stream_declaration_unit.hasNext()||stream_type.hasNext()) ) {
							throw new RewriteEarlyExitException();
						}
						while ( stream_SEMI.hasNext()||stream_declaration_unit.hasNext()||stream_type.hasNext() ) {
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:147:4: ^( DECLARATION ^( DECL_BODY $type declaration_unit ) SEMI )
							{
							Object root_2 = (Object)adaptor.nil();
							root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(DECLARATION, "DECLARATION"), root_2);
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:147:18: ^( DECL_BODY $type declaration_unit )
							{
							Object root_3 = (Object)adaptor.nil();
							root_3 = (Object)adaptor.becomeRoot((Object)adaptor.create(DECL_BODY, "DECL_BODY"), root_3);
							adaptor.addChild(root_3, stream_type.nextTree());
							adaptor.addChild(root_3, stream_declaration_unit.nextTree());
							adaptor.addChild(root_2, root_3);
							}

							adaptor.addChild(root_2, stream_SEMI.nextNode());
							adaptor.addChild(root_1, root_2);
							}

						}
						stream_SEMI.reset();
						stream_declaration_unit.reset();
						stream_type.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:148:6: ( prefix )? ( suffix )? declaration_body SEMI
					{
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:148:6: ( prefix )?
					int alt17=2;
					int LA17_0 = input.LA(1);
					if ( (LA17_0==INPUT||LA17_0==OUTPUT||LA17_0==SHARED||LA17_0==TYPEDEF) ) {
						alt17=1;
					}
					switch (alt17) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:148:6: prefix
							{
							pushFollow(FOLLOW_prefix_in_declaration845);
							prefix69=prefix();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_prefix.add(prefix69.getTree());
							}
							break;

					}

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:148:14: ( suffix )?
					int alt18=2;
					int LA18_0 = input.LA(1);
					if ( (LA18_0==IS||LA18_0==LCURLY) ) {
						alt18=1;
					}
					switch (alt18) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:148:14: suffix
							{
							pushFollow(FOLLOW_suffix_in_declaration848);
							suffix70=suffix();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_suffix.add(suffix70.getTree());
							}
							break;

					}

					pushFollow(FOLLOW_declaration_body_in_declaration851);
					declaration_body71=declaration_body();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_declaration_body.add(declaration_body71.getTree());
					SEMI72=(Token)match(input,SEMI,FOLLOW_SEMI_in_declaration853); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SEMI.add(SEMI72);

					// AST REWRITE
					// elements: declaration_body, SEMI, prefix, suffix
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 149:3: -> ^( DECLARATION ( prefix )? declaration_body ( suffix )? SEMI )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:149:6: ^( DECLARATION ( prefix )? declaration_body ( suffix )? SEMI )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DECLARATION, "DECLARATION"), root_1);
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:149:20: ( prefix )?
						if ( stream_prefix.hasNext() ) {
							adaptor.addChild(root_1, stream_prefix.nextTree());
						}
						stream_prefix.reset();

						adaptor.addChild(root_1, stream_declaration_body.nextTree());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:149:45: ( suffix )?
						if ( stream_suffix.hasNext() ) {
							adaptor.addChild(root_1, stream_suffix.nextTree());
						}
						stream_suffix.reset();

						adaptor.addChild(root_1, stream_SEMI.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:150:4: INPUT ( suffix )? type_specifier DEFINE IDENTIFIER expr
					{
					INPUT73=(Token)match(input,INPUT,FOLLOW_INPUT_in_declaration876); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_INPUT.add(INPUT73);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:150:10: ( suffix )?
					int alt19=2;
					int LA19_0 = input.LA(1);
					if ( (LA19_0==IS||LA19_0==LCURLY) ) {
						alt19=1;
					}
					switch (alt19) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:150:10: suffix
							{
							pushFollow(FOLLOW_suffix_in_declaration878);
							suffix74=suffix();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_suffix.add(suffix74.getTree());
							}
							break;

					}

					pushFollow(FOLLOW_type_specifier_in_declaration881);
					type_specifier75=type_specifier();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_type_specifier.add(type_specifier75.getTree());
					DEFINE76=(Token)match(input,DEFINE,FOLLOW_DEFINE_in_declaration883); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DEFINE.add(DEFINE76);

					IDENTIFIER77=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_declaration885); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER77);

					pushFollow(FOLLOW_expr_in_declaration887);
					expr78=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr78.getTree());
					// AST REWRITE
					// elements: IDENTIFIER, INPUT, suffix, type_specifier
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 151:3: -> ^( DECLARATION ^( PREFIX INPUT ) ^( DECL_BODY type_specifier ^( DECLARATOR ^( DIRECT_DECL IDENTIFIER ) ) ) ( suffix )? SEMI )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:151:6: ^( DECLARATION ^( PREFIX INPUT ) ^( DECL_BODY type_specifier ^( DECLARATOR ^( DIRECT_DECL IDENTIFIER ) ) ) ( suffix )? SEMI )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DECLARATION, "DECLARATION"), root_1);
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:151:20: ^( PREFIX INPUT )
						{
						Object root_2 = (Object)adaptor.nil();
						root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(PREFIX, "PREFIX"), root_2);
						adaptor.addChild(root_2, stream_INPUT.nextNode());
						adaptor.addChild(root_1, root_2);
						}

						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:151:36: ^( DECL_BODY type_specifier ^( DECLARATOR ^( DIRECT_DECL IDENTIFIER ) ) )
						{
						Object root_2 = (Object)adaptor.nil();
						root_2 = (Object)adaptor.becomeRoot((Object)adaptor.create(DECL_BODY, "DECL_BODY"), root_2);
						adaptor.addChild(root_2, stream_type_specifier.nextTree());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:151:63: ^( DECLARATOR ^( DIRECT_DECL IDENTIFIER ) )
						{
						Object root_3 = (Object)adaptor.nil();
						root_3 = (Object)adaptor.becomeRoot((Object)adaptor.create(DECLARATOR, "DECLARATOR"), root_3);
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:151:76: ^( DIRECT_DECL IDENTIFIER )
						{
						Object root_4 = (Object)adaptor.nil();
						root_4 = (Object)adaptor.becomeRoot((Object)adaptor.create(DIRECT_DECL, "DIRECT_DECL"), root_4);
						adaptor.addChild(root_4, stream_IDENTIFIER.nextNode());
						adaptor.addChild(root_3, root_4);
						}

						adaptor.addChild(root_2, root_3);
						}

						adaptor.addChild(root_1, root_2);
						}

						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:151:104: ( suffix )?
						if ( stream_suffix.hasNext() ) {
							adaptor.addChild(root_1, stream_suffix.nextTree());
						}
						stream_suffix.reset();

						adaptor.addChild(root_1, (Object)adaptor.create(SEMI, "SEMI"));
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "declaration"


	public static class prefix_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "prefix"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:154:1: prefix : ( TYPEDEF | INPUT | OUTPUT | SHARED );
	public final PragmaStringParser.prefix_return prefix() throws RecognitionException {
		PragmaStringParser.prefix_return retval = new PragmaStringParser.prefix_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set79=null;

		Object set79_tree=null;

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:155:2: ( TYPEDEF | INPUT | OUTPUT | SHARED )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:
			{
			root_0 = (Object)adaptor.nil();


			set79=input.LT(1);
			if ( input.LA(1)==INPUT||input.LA(1)==OUTPUT||input.LA(1)==SHARED||input.LA(1)==TYPEDEF ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set79));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "prefix"


	public static class declaration_body_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "declaration_body"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:167:1: declaration_body : ( ignored )* type_specifier ( declarator ( ASSIGN initializer )? )? -> ^( DECL_BODY type_specifier ( declarator ( initializer )? )? ) ;
	public final PragmaStringParser.declaration_body_return declaration_body() throws RecognitionException {
		PragmaStringParser.declaration_body_return retval = new PragmaStringParser.declaration_body_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token ASSIGN83=null;
		ParserRuleReturnScope ignored80 =null;
		ParserRuleReturnScope type_specifier81 =null;
		ParserRuleReturnScope declarator82 =null;
		ParserRuleReturnScope initializer84 =null;

		Object ASSIGN83_tree=null;
		RewriteRuleTokenStream stream_ASSIGN=new RewriteRuleTokenStream(adaptor,"token ASSIGN");
		RewriteRuleSubtreeStream stream_ignored=new RewriteRuleSubtreeStream(adaptor,"rule ignored");
		RewriteRuleSubtreeStream stream_declarator=new RewriteRuleSubtreeStream(adaptor,"rule declarator");
		RewriteRuleSubtreeStream stream_type_specifier=new RewriteRuleSubtreeStream(adaptor,"rule type_specifier");
		RewriteRuleSubtreeStream stream_initializer=new RewriteRuleSubtreeStream(adaptor,"rule initializer");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:168:2: ( ( ignored )* type_specifier ( declarator ( ASSIGN initializer )? )? -> ^( DECL_BODY type_specifier ( declarator ( initializer )? )? ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:168:4: ( ignored )* type_specifier ( declarator ( ASSIGN initializer )? )?
			{
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:168:4: ( ignored )*
			loop21:
			while (true) {
				int alt21=2;
				int LA21_0 = input.LA(1);
				if ( (LA21_0==CONST||LA21_0==STATIC) ) {
					alt21=1;
				}

				switch (alt21) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:168:4: ignored
					{
					pushFollow(FOLLOW_ignored_in_declaration_body967);
					ignored80=ignored();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_ignored.add(ignored80.getTree());
					}
					break;

				default :
					break loop21;
				}
			}

			pushFollow(FOLLOW_type_specifier_in_declaration_body970);
			type_specifier81=type_specifier();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_type_specifier.add(type_specifier81.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:168:28: ( declarator ( ASSIGN initializer )? )?
			int alt23=2;
			int LA23_0 = input.LA(1);
			if ( (LA23_0==BOOLEAN||LA23_0==CHAR||LA23_0==DOUBLE||LA23_0==FLOAT||LA23_0==IDENTIFIER||LA23_0==INT||LA23_0==LPAREN||LA23_0==MULTI||LA23_0==STRUCT||LA23_0==VOID) ) {
				alt23=1;
			}
			switch (alt23) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:168:29: declarator ( ASSIGN initializer )?
					{
					pushFollow(FOLLOW_declarator_in_declaration_body973);
					declarator82=declarator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_declarator.add(declarator82.getTree());
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:168:40: ( ASSIGN initializer )?
					int alt22=2;
					int LA22_0 = input.LA(1);
					if ( (LA22_0==ASSIGN) ) {
						alt22=1;
					}
					switch (alt22) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:168:41: ASSIGN initializer
							{
							ASSIGN83=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_declaration_body976); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_ASSIGN.add(ASSIGN83);

							pushFollow(FOLLOW_initializer_in_declaration_body978);
							initializer84=initializer();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_initializer.add(initializer84.getTree());
							}
							break;

					}

					}
					break;

			}

			// AST REWRITE
			// elements: type_specifier, declarator, initializer
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 168:64: -> ^( DECL_BODY type_specifier ( declarator ( initializer )? )? )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:168:67: ^( DECL_BODY type_specifier ( declarator ( initializer )? )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DECL_BODY, "DECL_BODY"), root_1);
				adaptor.addChild(root_1, stream_type_specifier.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:168:94: ( declarator ( initializer )? )?
				if ( stream_declarator.hasNext()||stream_initializer.hasNext() ) {
					adaptor.addChild(root_1, stream_declarator.nextTree());
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:168:106: ( initializer )?
					if ( stream_initializer.hasNext() ) {
						adaptor.addChild(root_1, stream_initializer.nextTree());
					}
					stream_initializer.reset();

				}
				stream_declarator.reset();
				stream_initializer.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "declaration_body"


	public static class pointer_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "pointer"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:171:1: pointer : MULTI ;
	public final PragmaStringParser.pointer_return pointer() throws RecognitionException {
		PragmaStringParser.pointer_return retval = new PragmaStringParser.pointer_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token MULTI85=null;

		Object MULTI85_tree=null;

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:172:2: ( MULTI )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:172:4: MULTI
			{
			root_0 = (Object)adaptor.nil();


			MULTI85=(Token)match(input,MULTI,FOLLOW_MULTI_in_pointer1009); if (state.failed) return retval;
			if ( state.backtracking==0 ) {
			MULTI85_tree = (Object)adaptor.create(MULTI85);
			adaptor.addChild(root_0, MULTI85_tree);
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "pointer"


	public static class declarator_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "declarator"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:175:1: declarator : ( pointer )* direct_declarator -> ^( DECLARATOR ( pointer )* direct_declarator ) ;
	public final PragmaStringParser.declarator_return declarator() throws RecognitionException {
		PragmaStringParser.declarator_return retval = new PragmaStringParser.declarator_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope pointer86 =null;
		ParserRuleReturnScope direct_declarator87 =null;

		RewriteRuleSubtreeStream stream_direct_declarator=new RewriteRuleSubtreeStream(adaptor,"rule direct_declarator");
		RewriteRuleSubtreeStream stream_pointer=new RewriteRuleSubtreeStream(adaptor,"rule pointer");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:176:2: ( ( pointer )* direct_declarator -> ^( DECLARATOR ( pointer )* direct_declarator ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:176:4: ( pointer )* direct_declarator
			{
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:176:4: ( pointer )*
			loop24:
			while (true) {
				int alt24=2;
				int LA24_0 = input.LA(1);
				if ( (LA24_0==MULTI) ) {
					alt24=1;
				}

				switch (alt24) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:176:4: pointer
					{
					pushFollow(FOLLOW_pointer_in_declarator1020);
					pointer86=pointer();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_pointer.add(pointer86.getTree());
					}
					break;

				default :
					break loop24;
				}
			}

			pushFollow(FOLLOW_direct_declarator_in_declarator1023);
			direct_declarator87=direct_declarator();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_direct_declarator.add(direct_declarator87.getTree());
			// AST REWRITE
			// elements: direct_declarator, pointer
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 177:3: -> ^( DECLARATOR ( pointer )* direct_declarator )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:177:6: ^( DECLARATOR ( pointer )* direct_declarator )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DECLARATOR, "DECLARATOR"), root_1);
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:177:19: ( pointer )*
				while ( stream_pointer.hasNext() ) {
					adaptor.addChild(root_1, stream_pointer.nextTree());
				}
				stream_pointer.reset();

				adaptor.addChild(root_1, stream_direct_declarator.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "declarator"


	public static class direct_declarator_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "direct_declarator"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:180:1: direct_declarator : ( type_specifier ( declarator_suffix )* -> ^( DIRECT_DECL IDENTIFIER ( declarator_suffix )* ) | LPAREN declarator RPAREN ( declarator_suffix )+ -> ^( DIRECT_DECL declarator RPAREN ( declarator_suffix )+ ) );
	public final PragmaStringParser.direct_declarator_return direct_declarator() throws RecognitionException {
		PragmaStringParser.direct_declarator_return retval = new PragmaStringParser.direct_declarator_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LPAREN90=null;
		Token RPAREN92=null;
		ParserRuleReturnScope type_specifier88 =null;
		ParserRuleReturnScope declarator_suffix89 =null;
		ParserRuleReturnScope declarator91 =null;
		ParserRuleReturnScope declarator_suffix93 =null;

		Object LPAREN90_tree=null;
		Object RPAREN92_tree=null;
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleSubtreeStream stream_declarator=new RewriteRuleSubtreeStream(adaptor,"rule declarator");
		RewriteRuleSubtreeStream stream_type_specifier=new RewriteRuleSubtreeStream(adaptor,"rule type_specifier");
		RewriteRuleSubtreeStream stream_declarator_suffix=new RewriteRuleSubtreeStream(adaptor,"rule declarator_suffix");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:181:2: ( type_specifier ( declarator_suffix )* -> ^( DIRECT_DECL IDENTIFIER ( declarator_suffix )* ) | LPAREN declarator RPAREN ( declarator_suffix )+ -> ^( DIRECT_DECL declarator RPAREN ( declarator_suffix )+ ) )
			int alt27=2;
			int LA27_0 = input.LA(1);
			if ( (LA27_0==BOOLEAN||LA27_0==CHAR||LA27_0==DOUBLE||LA27_0==FLOAT||LA27_0==IDENTIFIER||LA27_0==INT||LA27_0==STRUCT||LA27_0==VOID) ) {
				alt27=1;
			}
			else if ( (LA27_0==LPAREN) ) {
				alt27=2;
			}

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

			switch (alt27) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:181:4: type_specifier ( declarator_suffix )*
					{
					pushFollow(FOLLOW_type_specifier_in_direct_declarator1047);
					type_specifier88=type_specifier();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_type_specifier.add(type_specifier88.getTree());
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:181:19: ( declarator_suffix )*
					loop25:
					while (true) {
						int alt25=2;
						int LA25_0 = input.LA(1);
						if ( (LA25_0==LSQUARE) ) {
							alt25=1;
						}

						switch (alt25) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:181:19: declarator_suffix
							{
							pushFollow(FOLLOW_declarator_suffix_in_direct_declarator1049);
							declarator_suffix89=declarator_suffix();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_declarator_suffix.add(declarator_suffix89.getTree());
							}
							break;

						default :
							break loop25;
						}
					}

					// AST REWRITE
					// elements: declarator_suffix
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 182:3: -> ^( DIRECT_DECL IDENTIFIER ( declarator_suffix )* )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:182:6: ^( DIRECT_DECL IDENTIFIER ( declarator_suffix )* )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DIRECT_DECL, "DIRECT_DECL"), root_1);
						adaptor.addChild(root_1, (Object)adaptor.create(IDENTIFIER, "IDENTIFIER"));
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:182:31: ( declarator_suffix )*
						while ( stream_declarator_suffix.hasNext() ) {
							adaptor.addChild(root_1, stream_declarator_suffix.nextTree());
						}
						stream_declarator_suffix.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:183:4: LPAREN declarator RPAREN ( declarator_suffix )+
					{
					LPAREN90=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_direct_declarator1068); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN90);

					pushFollow(FOLLOW_declarator_in_direct_declarator1070);
					declarator91=declarator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_declarator.add(declarator91.getTree());
					RPAREN92=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_direct_declarator1072); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN92);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:183:29: ( declarator_suffix )+
					int cnt26=0;
					loop26:
					while (true) {
						int alt26=2;
						int LA26_0 = input.LA(1);
						if ( (LA26_0==LSQUARE) ) {
							alt26=1;
						}

						switch (alt26) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:183:29: declarator_suffix
							{
							pushFollow(FOLLOW_declarator_suffix_in_direct_declarator1074);
							declarator_suffix93=declarator_suffix();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_declarator_suffix.add(declarator_suffix93.getTree());
							}
							break;

						default :
							if ( cnt26 >= 1 ) break loop26;
							if (state.backtracking>0) {state.failed=true; return retval;}
							EarlyExitException eee = new EarlyExitException(26, input);
							throw eee;
						}
						cnt26++;
					}

					// AST REWRITE
					// elements: declarator, declarator_suffix, RPAREN
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 184:3: -> ^( DIRECT_DECL declarator RPAREN ( declarator_suffix )+ )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:184:6: ^( DIRECT_DECL declarator RPAREN ( declarator_suffix )+ )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DIRECT_DECL, "DIRECT_DECL"), root_1);
						adaptor.addChild(root_1, stream_declarator.nextTree());
						adaptor.addChild(root_1, stream_RPAREN.nextNode());
						if ( !(stream_declarator_suffix.hasNext()) ) {
							throw new RewriteEarlyExitException();
						}
						while ( stream_declarator_suffix.hasNext() ) {
							adaptor.addChild(root_1, stream_declarator_suffix.nextTree());
						}
						stream_declarator_suffix.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "direct_declarator"


	public static class declarator_suffix_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "declarator_suffix"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:187:1: declarator_suffix : LSQUARE ( expr )? RSQUARE -> ^( DECL_SUFFIX ( expr )? RSQUARE ) ;
	public final PragmaStringParser.declarator_suffix_return declarator_suffix() throws RecognitionException {
		PragmaStringParser.declarator_suffix_return retval = new PragmaStringParser.declarator_suffix_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LSQUARE94=null;
		Token RSQUARE96=null;
		ParserRuleReturnScope expr95 =null;

		Object LSQUARE94_tree=null;
		Object RSQUARE96_tree=null;
		RewriteRuleTokenStream stream_LSQUARE=new RewriteRuleTokenStream(adaptor,"token LSQUARE");
		RewriteRuleTokenStream stream_RSQUARE=new RewriteRuleTokenStream(adaptor,"token RSQUARE");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:188:2: ( LSQUARE ( expr )? RSQUARE -> ^( DECL_SUFFIX ( expr )? RSQUARE ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:188:4: LSQUARE ( expr )? RSQUARE
			{
			LSQUARE94=(Token)match(input,LSQUARE,FOLLOW_LSQUARE_in_declarator_suffix1101); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LSQUARE.add(LSQUARE94);

			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:188:12: ( expr )?
			int alt28=2;
			int LA28_0 = input.LA(1);
			if ( (LA28_0==ADDR_OF||LA28_0==CHAR_LITERAL||LA28_0==DERIVATIVE||(LA28_0 >= DOUBLE_PLUS && LA28_0 <= DOUBLE_SUB)||LA28_0==EXISTS||LA28_0==FALSE||LA28_0==FORALL||LA28_0==IDENTIFIER||LA28_0==INT_LITERAL||LA28_0==LPAREN||LA28_0==MULTI||LA28_0==NOT||LA28_0==PLUS||LA28_0==REAL_LITERAL||LA28_0==SIZEOF||LA28_0==SPEC||LA28_0==STRING_LITERAL||LA28_0==SUB||LA28_0==SYS_VAR||LA28_0==TRUE) ) {
				alt28=1;
			}
			switch (alt28) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:188:12: expr
					{
					pushFollow(FOLLOW_expr_in_declarator_suffix1103);
					expr95=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr95.getTree());
					}
					break;

			}

			RSQUARE96=(Token)match(input,RSQUARE,FOLLOW_RSQUARE_in_declarator_suffix1106); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RSQUARE.add(RSQUARE96);

			// AST REWRITE
			// elements: RSQUARE, expr
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 188:26: -> ^( DECL_SUFFIX ( expr )? RSQUARE )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:188:29: ^( DECL_SUFFIX ( expr )? RSQUARE )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DECL_SUFFIX, "DECL_SUFFIX"), root_1);
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:188:43: ( expr )?
				if ( stream_expr.hasNext() ) {
					adaptor.addChild(root_1, stream_expr.nextTree());
				}
				stream_expr.reset();

				adaptor.addChild(root_1, stream_RSQUARE.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "declarator_suffix"


	public static class initializer_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "initializer"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:191:1: initializer : ( expr -> ^( INITIALIZER expr ) | LCURLY ( initializer_list )? RCURLY -> ^( INITIALIZER LCURLY ( initializer_list )? RCURLY ) );
	public final PragmaStringParser.initializer_return initializer() throws RecognitionException {
		PragmaStringParser.initializer_return retval = new PragmaStringParser.initializer_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LCURLY98=null;
		Token RCURLY100=null;
		ParserRuleReturnScope expr97 =null;
		ParserRuleReturnScope initializer_list99 =null;

		Object LCURLY98_tree=null;
		Object RCURLY100_tree=null;
		RewriteRuleTokenStream stream_LCURLY=new RewriteRuleTokenStream(adaptor,"token LCURLY");
		RewriteRuleTokenStream stream_RCURLY=new RewriteRuleTokenStream(adaptor,"token RCURLY");
		RewriteRuleSubtreeStream stream_initializer_list=new RewriteRuleSubtreeStream(adaptor,"rule initializer_list");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:192:2: ( expr -> ^( INITIALIZER expr ) | LCURLY ( initializer_list )? RCURLY -> ^( INITIALIZER LCURLY ( initializer_list )? RCURLY ) )
			int alt30=2;
			int LA30_0 = input.LA(1);
			if ( (LA30_0==ADDR_OF||LA30_0==CHAR_LITERAL||LA30_0==DERIVATIVE||(LA30_0 >= DOUBLE_PLUS && LA30_0 <= DOUBLE_SUB)||LA30_0==EXISTS||LA30_0==FALSE||LA30_0==FORALL||LA30_0==IDENTIFIER||LA30_0==INT_LITERAL||LA30_0==LPAREN||LA30_0==MULTI||LA30_0==NOT||LA30_0==PLUS||LA30_0==REAL_LITERAL||LA30_0==SIZEOF||LA30_0==SPEC||LA30_0==STRING_LITERAL||LA30_0==SUB||LA30_0==SYS_VAR||LA30_0==TRUE) ) {
				alt30=1;
			}
			else if ( (LA30_0==LCURLY) ) {
				alt30=2;
			}

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

			switch (alt30) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:192:4: expr
					{
					pushFollow(FOLLOW_expr_in_initializer1130);
					expr97=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr97.getTree());
					// AST REWRITE
					// elements: expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 193:3: -> ^( INITIALIZER expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:193:6: ^( INITIALIZER expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(INITIALIZER, "INITIALIZER"), root_1);
						adaptor.addChild(root_1, stream_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:194:4: LCURLY ( initializer_list )? RCURLY
					{
					LCURLY98=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_initializer1146); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY98);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:194:11: ( initializer_list )?
					int alt29=2;
					int LA29_0 = input.LA(1);
					if ( (LA29_0==ADDR_OF||LA29_0==CHAR_LITERAL||LA29_0==DERIVATIVE||LA29_0==DOT||(LA29_0 >= DOUBLE_PLUS && LA29_0 <= DOUBLE_SUB)||LA29_0==EXISTS||LA29_0==FALSE||LA29_0==FORALL||LA29_0==IDENTIFIER||LA29_0==INT_LITERAL||LA29_0==LCURLY||(LA29_0 >= LPAREN && LA29_0 <= LSQUARE)||LA29_0==MULTI||LA29_0==NOT||LA29_0==PLUS||LA29_0==REAL_LITERAL||LA29_0==SIZEOF||LA29_0==SPEC||LA29_0==STRING_LITERAL||LA29_0==SUB||LA29_0==SYS_VAR||LA29_0==TRUE) ) {
						alt29=1;
					}
					switch (alt29) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:194:11: initializer_list
							{
							pushFollow(FOLLOW_initializer_list_in_initializer1148);
							initializer_list99=initializer_list();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_initializer_list.add(initializer_list99.getTree());
							}
							break;

					}

					RCURLY100=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_initializer1151); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY100);

					// AST REWRITE
					// elements: initializer_list, LCURLY, RCURLY
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 195:3: -> ^( INITIALIZER LCURLY ( initializer_list )? RCURLY )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:195:6: ^( INITIALIZER LCURLY ( initializer_list )? RCURLY )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(INITIALIZER, "INITIALIZER"), root_1);
						adaptor.addChild(root_1, stream_LCURLY.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:195:27: ( initializer_list )?
						if ( stream_initializer_list.hasNext() ) {
							adaptor.addChild(root_1, stream_initializer_list.nextTree());
						}
						stream_initializer_list.reset();

						adaptor.addChild(root_1, stream_RCURLY.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "initializer"


	public static class initializer_list_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "initializer_list"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:198:1: initializer_list : ( designation )? initializer ( COMMA initializer_list )? -> ^( INITIALIZER_LIST ( designation )? initializer ( initializer_list )? ) ;
	public final PragmaStringParser.initializer_list_return initializer_list() throws RecognitionException {
		PragmaStringParser.initializer_list_return retval = new PragmaStringParser.initializer_list_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token COMMA103=null;
		ParserRuleReturnScope designation101 =null;
		ParserRuleReturnScope initializer102 =null;
		ParserRuleReturnScope initializer_list104 =null;

		Object COMMA103_tree=null;
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleSubtreeStream stream_initializer_list=new RewriteRuleSubtreeStream(adaptor,"rule initializer_list");
		RewriteRuleSubtreeStream stream_designation=new RewriteRuleSubtreeStream(adaptor,"rule designation");
		RewriteRuleSubtreeStream stream_initializer=new RewriteRuleSubtreeStream(adaptor,"rule initializer");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:199:2: ( ( designation )? initializer ( COMMA initializer_list )? -> ^( INITIALIZER_LIST ( designation )? initializer ( initializer_list )? ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:199:4: ( designation )? initializer ( COMMA initializer_list )?
			{
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:199:4: ( designation )?
			int alt31=2;
			int LA31_0 = input.LA(1);
			if ( (LA31_0==DOT||LA31_0==LSQUARE) ) {
				alt31=1;
			}
			switch (alt31) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:199:4: designation
					{
					pushFollow(FOLLOW_designation_in_initializer_list1179);
					designation101=designation();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_designation.add(designation101.getTree());
					}
					break;

			}

			pushFollow(FOLLOW_initializer_in_initializer_list1182);
			initializer102=initializer();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_initializer.add(initializer102.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:199:29: ( COMMA initializer_list )?
			int alt32=2;
			int LA32_0 = input.LA(1);
			if ( (LA32_0==COMMA) ) {
				alt32=1;
			}
			switch (alt32) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:199:30: COMMA initializer_list
					{
					COMMA103=(Token)match(input,COMMA,FOLLOW_COMMA_in_initializer_list1185); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA103);

					pushFollow(FOLLOW_initializer_list_in_initializer_list1187);
					initializer_list104=initializer_list();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_initializer_list.add(initializer_list104.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: initializer, designation, initializer_list
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 200:3: -> ^( INITIALIZER_LIST ( designation )? initializer ( initializer_list )? )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:200:6: ^( INITIALIZER_LIST ( designation )? initializer ( initializer_list )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(INITIALIZER_LIST, "INITIALIZER_LIST"), root_1);
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:200:25: ( designation )?
				if ( stream_designation.hasNext() ) {
					adaptor.addChild(root_1, stream_designation.nextTree());
				}
				stream_designation.reset();

				adaptor.addChild(root_1, stream_initializer.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:200:50: ( initializer_list )?
				if ( stream_initializer_list.hasNext() ) {
					adaptor.addChild(root_1, stream_initializer_list.nextTree());
				}
				stream_initializer_list.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "initializer_list"


	public static class designation_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "designation"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:203:1: designation : designator_list ASSIGN -> ^( DESIGNATION designator_list ASSIGN ) ;
	public final PragmaStringParser.designation_return designation() throws RecognitionException {
		PragmaStringParser.designation_return retval = new PragmaStringParser.designation_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token ASSIGN106=null;
		ParserRuleReturnScope designator_list105 =null;

		Object ASSIGN106_tree=null;
		RewriteRuleTokenStream stream_ASSIGN=new RewriteRuleTokenStream(adaptor,"token ASSIGN");
		RewriteRuleSubtreeStream stream_designator_list=new RewriteRuleSubtreeStream(adaptor,"rule designator_list");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:204:2: ( designator_list ASSIGN -> ^( DESIGNATION designator_list ASSIGN ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:204:4: designator_list ASSIGN
			{
			pushFollow(FOLLOW_designator_list_in_designation1217);
			designator_list105=designator_list();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_designator_list.add(designator_list105.getTree());
			ASSIGN106=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_designation1219); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_ASSIGN.add(ASSIGN106);

			// AST REWRITE
			// elements: ASSIGN, designator_list
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 204:27: -> ^( DESIGNATION designator_list ASSIGN )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:204:30: ^( DESIGNATION designator_list ASSIGN )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DESIGNATION, "DESIGNATION"), root_1);
				adaptor.addChild(root_1, stream_designator_list.nextTree());
				adaptor.addChild(root_1, stream_ASSIGN.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "designation"


	public static class designator_list_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "designator_list"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:207:1: designator_list : ( designator )+ -> ^( DESIGNATOR_LIST ( designator )+ ) ;
	public final PragmaStringParser.designator_list_return designator_list() throws RecognitionException {
		PragmaStringParser.designator_list_return retval = new PragmaStringParser.designator_list_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope designator107 =null;

		RewriteRuleSubtreeStream stream_designator=new RewriteRuleSubtreeStream(adaptor,"rule designator");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:208:2: ( ( designator )+ -> ^( DESIGNATOR_LIST ( designator )+ ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:208:4: ( designator )+
			{
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:208:4: ( designator )+
			int cnt33=0;
			loop33:
			while (true) {
				int alt33=2;
				int LA33_0 = input.LA(1);
				if ( (LA33_0==DOT||LA33_0==LSQUARE) ) {
					alt33=1;
				}

				switch (alt33) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:208:4: designator
					{
					pushFollow(FOLLOW_designator_in_designator_list1241);
					designator107=designator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_designator.add(designator107.getTree());
					}
					break;

				default :
					if ( cnt33 >= 1 ) break loop33;
					if (state.backtracking>0) {state.failed=true; return retval;}
					EarlyExitException eee = new EarlyExitException(33, input);
					throw eee;
				}
				cnt33++;
			}

			// AST REWRITE
			// elements: designator
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 208:16: -> ^( DESIGNATOR_LIST ( designator )+ )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:208:19: ^( DESIGNATOR_LIST ( designator )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DESIGNATOR_LIST, "DESIGNATOR_LIST"), root_1);
				if ( !(stream_designator.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_designator.hasNext() ) {
					adaptor.addChild(root_1, stream_designator.nextTree());
				}
				stream_designator.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "designator_list"


	public static class designator_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "designator"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:211:1: designator : ( LSQUARE ifThenElse_expr RSQUARE -> ^( DESIGNATOR ifThenElse_expr RSQUARE ) | DOT IDENTIFIER -> ^( DESIGNATOR IDENTIFIER ) );
	public final PragmaStringParser.designator_return designator() throws RecognitionException {
		PragmaStringParser.designator_return retval = new PragmaStringParser.designator_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LSQUARE108=null;
		Token RSQUARE110=null;
		Token DOT111=null;
		Token IDENTIFIER112=null;
		ParserRuleReturnScope ifThenElse_expr109 =null;

		Object LSQUARE108_tree=null;
		Object RSQUARE110_tree=null;
		Object DOT111_tree=null;
		Object IDENTIFIER112_tree=null;
		RewriteRuleTokenStream stream_LSQUARE=new RewriteRuleTokenStream(adaptor,"token LSQUARE");
		RewriteRuleTokenStream stream_RSQUARE=new RewriteRuleTokenStream(adaptor,"token RSQUARE");
		RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleSubtreeStream stream_ifThenElse_expr=new RewriteRuleSubtreeStream(adaptor,"rule ifThenElse_expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:212:2: ( LSQUARE ifThenElse_expr RSQUARE -> ^( DESIGNATOR ifThenElse_expr RSQUARE ) | DOT IDENTIFIER -> ^( DESIGNATOR IDENTIFIER ) )
			int alt34=2;
			int LA34_0 = input.LA(1);
			if ( (LA34_0==LSQUARE) ) {
				alt34=1;
			}
			else if ( (LA34_0==DOT) ) {
				alt34=2;
			}

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

			switch (alt34) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:212:4: LSQUARE ifThenElse_expr RSQUARE
					{
					LSQUARE108=(Token)match(input,LSQUARE,FOLLOW_LSQUARE_in_designator1262); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LSQUARE.add(LSQUARE108);

					pushFollow(FOLLOW_ifThenElse_expr_in_designator1264);
					ifThenElse_expr109=ifThenElse_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_ifThenElse_expr.add(ifThenElse_expr109.getTree());
					RSQUARE110=(Token)match(input,RSQUARE,FOLLOW_RSQUARE_in_designator1266); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RSQUARE.add(RSQUARE110);

					// AST REWRITE
					// elements: ifThenElse_expr, RSQUARE
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 212:36: -> ^( DESIGNATOR ifThenElse_expr RSQUARE )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:212:39: ^( DESIGNATOR ifThenElse_expr RSQUARE )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DESIGNATOR, "DESIGNATOR"), root_1);
						adaptor.addChild(root_1, stream_ifThenElse_expr.nextTree());
						adaptor.addChild(root_1, stream_RSQUARE.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:213:4: DOT IDENTIFIER
					{
					DOT111=(Token)match(input,DOT,FOLLOW_DOT_in_designator1282); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DOT.add(DOT111);

					IDENTIFIER112=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_designator1284); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER112);

					// AST REWRITE
					// elements: IDENTIFIER
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 213:19: -> ^( DESIGNATOR IDENTIFIER )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:213:22: ^( DESIGNATOR IDENTIFIER )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DESIGNATOR, "DESIGNATOR"), root_1);
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "designator"


	public static class suffix_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "suffix"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:216:1: suffix : ( LCURLY expr RCURLY ( IS IDENTIFIER )? -> ^( SUFFIX expr RCURLY ( IDENTIFIER )? ) | IS IDENTIFIER -> ^( SUFFIX IDENTIFIER ) );
	public final PragmaStringParser.suffix_return suffix() throws RecognitionException {
		PragmaStringParser.suffix_return retval = new PragmaStringParser.suffix_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LCURLY113=null;
		Token RCURLY115=null;
		Token IS116=null;
		Token IDENTIFIER117=null;
		Token IS118=null;
		Token IDENTIFIER119=null;
		ParserRuleReturnScope expr114 =null;

		Object LCURLY113_tree=null;
		Object RCURLY115_tree=null;
		Object IS116_tree=null;
		Object IDENTIFIER117_tree=null;
		Object IS118_tree=null;
		Object IDENTIFIER119_tree=null;
		RewriteRuleTokenStream stream_LCURLY=new RewriteRuleTokenStream(adaptor,"token LCURLY");
		RewriteRuleTokenStream stream_IS=new RewriteRuleTokenStream(adaptor,"token IS");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_RCURLY=new RewriteRuleTokenStream(adaptor,"token RCURLY");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:217:2: ( LCURLY expr RCURLY ( IS IDENTIFIER )? -> ^( SUFFIX expr RCURLY ( IDENTIFIER )? ) | IS IDENTIFIER -> ^( SUFFIX IDENTIFIER ) )
			int alt36=2;
			int LA36_0 = input.LA(1);
			if ( (LA36_0==LCURLY) ) {
				alt36=1;
			}
			else if ( (LA36_0==IS) ) {
				alt36=2;
			}

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

			switch (alt36) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:217:4: LCURLY expr RCURLY ( IS IDENTIFIER )?
					{
					LCURLY113=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_suffix1306); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY113);

					pushFollow(FOLLOW_expr_in_suffix1308);
					expr114=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr114.getTree());
					RCURLY115=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_suffix1310); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY115);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:217:23: ( IS IDENTIFIER )?
					int alt35=2;
					int LA35_0 = input.LA(1);
					if ( (LA35_0==IS) ) {
						alt35=1;
					}
					switch (alt35) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:217:24: IS IDENTIFIER
							{
							IS116=(Token)match(input,IS,FOLLOW_IS_in_suffix1313); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_IS.add(IS116);

							IDENTIFIER117=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_suffix1315); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER117);

							}
							break;

					}

					// AST REWRITE
					// elements: IDENTIFIER, RCURLY, expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 218:3: -> ^( SUFFIX expr RCURLY ( IDENTIFIER )? )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:218:6: ^( SUFFIX expr RCURLY ( IDENTIFIER )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SUFFIX, "SUFFIX"), root_1);
						adaptor.addChild(root_1, stream_expr.nextTree());
						adaptor.addChild(root_1, stream_RCURLY.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:218:27: ( IDENTIFIER )?
						if ( stream_IDENTIFIER.hasNext() ) {
							adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						}
						stream_IDENTIFIER.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:219:4: IS IDENTIFIER
					{
					IS118=(Token)match(input,IS,FOLLOW_IS_in_suffix1337); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IS.add(IS118);

					IDENTIFIER119=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_suffix1339); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER119);

					// AST REWRITE
					// elements: IDENTIFIER
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 220:3: -> ^( SUFFIX IDENTIFIER )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:220:6: ^( SUFFIX IDENTIFIER )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SUFFIX, "SUFFIX"), root_1);
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "suffix"


	public static class program_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "program_name"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:223:1: program_name : ( SPEC | IMPL );
	public final PragmaStringParser.program_name_return program_name() throws RecognitionException {
		PragmaStringParser.program_name_return retval = new PragmaStringParser.program_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set120=null;

		Object set120_tree=null;

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:224:2: ( SPEC | IMPL )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:
			{
			root_0 = (Object)adaptor.nil();


			set120=input.LT(1);
			if ( input.LA(1)==IMPL||input.LA(1)==SPEC ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set120));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "program_name"


	public static class type_specifier_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "type_specifier"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:228:1: type_specifier : ( simple_type | STRUCT ( IDENTIFIER )? LCURLY ( field_declaration )* RCURLY -> ^( TYPE_SPECIFIER STRUCT ( IDENTIFIER )? ( field_declaration )* ) | STRUCT IDENTIFIER -> ^( TYPE_SPECIFIER STRUCT IDENTIFIER ) | IDENTIFIER -> ^( TYPE_SPECIFIER IDENTIFIER ) );
	public final PragmaStringParser.type_specifier_return type_specifier() throws RecognitionException {
		PragmaStringParser.type_specifier_return retval = new PragmaStringParser.type_specifier_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token STRUCT122=null;
		Token IDENTIFIER123=null;
		Token LCURLY124=null;
		Token RCURLY126=null;
		Token STRUCT127=null;
		Token IDENTIFIER128=null;
		Token IDENTIFIER129=null;
		ParserRuleReturnScope simple_type121 =null;
		ParserRuleReturnScope field_declaration125 =null;

		Object STRUCT122_tree=null;
		Object IDENTIFIER123_tree=null;
		Object LCURLY124_tree=null;
		Object RCURLY126_tree=null;
		Object STRUCT127_tree=null;
		Object IDENTIFIER128_tree=null;
		Object IDENTIFIER129_tree=null;
		RewriteRuleTokenStream stream_STRUCT=new RewriteRuleTokenStream(adaptor,"token STRUCT");
		RewriteRuleTokenStream stream_LCURLY=new RewriteRuleTokenStream(adaptor,"token LCURLY");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_RCURLY=new RewriteRuleTokenStream(adaptor,"token RCURLY");
		RewriteRuleSubtreeStream stream_field_declaration=new RewriteRuleSubtreeStream(adaptor,"rule field_declaration");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:229:2: ( simple_type | STRUCT ( IDENTIFIER )? LCURLY ( field_declaration )* RCURLY -> ^( TYPE_SPECIFIER STRUCT ( IDENTIFIER )? ( field_declaration )* ) | STRUCT IDENTIFIER -> ^( TYPE_SPECIFIER STRUCT IDENTIFIER ) | IDENTIFIER -> ^( TYPE_SPECIFIER IDENTIFIER ) )
			int alt39=4;
			switch ( input.LA(1) ) {
			case BOOLEAN:
			case CHAR:
			case DOUBLE:
			case FLOAT:
			case INT:
			case VOID:
				{
				alt39=1;
				}
				break;
			case STRUCT:
				{
				int LA39_2 = input.LA(2);
				if ( (LA39_2==IDENTIFIER) ) {
					int LA39_4 = input.LA(3);
					if ( (LA39_4==EOF||LA39_4==ASSIGN||LA39_4==BOOLEAN||LA39_4==CHAR||LA39_4==COMMA||LA39_4==DEFINE||LA39_4==DOUBLE||LA39_4==FLOAT||LA39_4==IDENTIFIER||LA39_4==INT||(LA39_4 >= LPAREN && LA39_4 <= LSQUARE)||LA39_4==MULTI||LA39_4==RPAREN||LA39_4==SEMI||LA39_4==STRUCT||LA39_4==VOID) ) {
						alt39=3;
					}
					else if ( (LA39_4==LCURLY) ) {
						alt39=2;
					}

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

				}
				else if ( (LA39_2==LCURLY) ) {
					alt39=2;
				}

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

				}
				break;
			case IDENTIFIER:
				{
				alt39=4;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 39, 0, input);
				throw nvae;
			}
			switch (alt39) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:229:4: simple_type
					{
					root_0 = (Object)adaptor.nil();


					pushFollow(FOLLOW_simple_type_in_type_specifier1379);
					simple_type121=simple_type();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, simple_type121.getTree());

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:231:4: STRUCT ( IDENTIFIER )? LCURLY ( field_declaration )* RCURLY
					{
					STRUCT122=(Token)match(input,STRUCT,FOLLOW_STRUCT_in_type_specifier1386); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_STRUCT.add(STRUCT122);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:231:11: ( IDENTIFIER )?
					int alt37=2;
					int LA37_0 = input.LA(1);
					if ( (LA37_0==IDENTIFIER) ) {
						alt37=1;
					}
					switch (alt37) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:231:11: IDENTIFIER
							{
							IDENTIFIER123=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_type_specifier1388); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER123);

							}
							break;

					}

					LCURLY124=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_type_specifier1391); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY124);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:231:30: ( field_declaration )*
					loop38:
					while (true) {
						int alt38=2;
						int LA38_0 = input.LA(1);
						if ( (LA38_0==BOOLEAN||LA38_0==CHAR||LA38_0==DOUBLE||LA38_0==FLOAT||LA38_0==IDENTIFIER||LA38_0==INT||LA38_0==STRUCT||LA38_0==VOID) ) {
							alt38=1;
						}

						switch (alt38) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:231:30: field_declaration
							{
							pushFollow(FOLLOW_field_declaration_in_type_specifier1393);
							field_declaration125=field_declaration();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_field_declaration.add(field_declaration125.getTree());
							}
							break;

						default :
							break loop38;
						}
					}

					RCURLY126=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_type_specifier1396); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY126);

					// AST REWRITE
					// elements: field_declaration, IDENTIFIER, STRUCT
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 232:3: -> ^( TYPE_SPECIFIER STRUCT ( IDENTIFIER )? ( field_declaration )* )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:232:6: ^( TYPE_SPECIFIER STRUCT ( IDENTIFIER )? ( field_declaration )* )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TYPE_SPECIFIER, "TYPE_SPECIFIER"), root_1);
						adaptor.addChild(root_1, stream_STRUCT.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:232:30: ( IDENTIFIER )?
						if ( stream_IDENTIFIER.hasNext() ) {
							adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						}
						stream_IDENTIFIER.reset();

						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:232:42: ( field_declaration )*
						while ( stream_field_declaration.hasNext() ) {
							adaptor.addChild(root_1, stream_field_declaration.nextTree());
						}
						stream_field_declaration.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:233:4: STRUCT IDENTIFIER
					{
					STRUCT127=(Token)match(input,STRUCT,FOLLOW_STRUCT_in_type_specifier1417); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_STRUCT.add(STRUCT127);

					IDENTIFIER128=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_type_specifier1419); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER128);

					// AST REWRITE
					// elements: IDENTIFIER, STRUCT
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 234:3: -> ^( TYPE_SPECIFIER STRUCT IDENTIFIER )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:234:6: ^( TYPE_SPECIFIER STRUCT IDENTIFIER )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TYPE_SPECIFIER, "TYPE_SPECIFIER"), root_1);
						adaptor.addChild(root_1, stream_STRUCT.nextNode());
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:235:4: IDENTIFIER
					{
					IDENTIFIER129=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_type_specifier1436); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER129);

					// AST REWRITE
					// elements: IDENTIFIER
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 236:3: -> ^( TYPE_SPECIFIER IDENTIFIER )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:236:6: ^( TYPE_SPECIFIER IDENTIFIER )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(TYPE_SPECIFIER, "TYPE_SPECIFIER"), root_1);
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "type_specifier"


	public static class simple_type_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "simple_type"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:239:1: simple_type : ( BOOLEAN | CHAR | INT | FLOAT | DOUBLE | VOID );
	public final PragmaStringParser.simple_type_return simple_type() throws RecognitionException {
		PragmaStringParser.simple_type_return retval = new PragmaStringParser.simple_type_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set130=null;

		Object set130_tree=null;

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:240:2: ( BOOLEAN | CHAR | INT | FLOAT | DOUBLE | VOID )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:
			{
			root_0 = (Object)adaptor.nil();


			set130=input.LT(1);
			if ( input.LA(1)==BOOLEAN||input.LA(1)==CHAR||input.LA(1)==DOUBLE||input.LA(1)==FLOAT||input.LA(1)==INT||input.LA(1)==VOID ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set130));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "simple_type"


	public static class type_name_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "type_name"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:254:1: type_name : type_specifier ( abstract_declarator )? ;
	public final PragmaStringParser.type_name_return type_name() throws RecognitionException {
		PragmaStringParser.type_name_return retval = new PragmaStringParser.type_name_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope type_specifier131 =null;
		ParserRuleReturnScope abstract_declarator132 =null;


		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:255:2: ( type_specifier ( abstract_declarator )? )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:255:4: type_specifier ( abstract_declarator )?
			{
			root_0 = (Object)adaptor.nil();


			pushFollow(FOLLOW_type_specifier_in_type_name1501);
			type_specifier131=type_specifier();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) adaptor.addChild(root_0, type_specifier131.getTree());

			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:255:19: ( abstract_declarator )?
			int alt40=2;
			int LA40_0 = input.LA(1);
			if ( (LA40_0==MULTI) ) {
				int LA40_1 = input.LA(2);
				if ( (LA40_1==RPAREN) ) {
					int LA40_3 = input.LA(3);
					if ( (LA40_3==EOF||LA40_3==ADDR_OF||LA40_3==AND||LA40_3==ASSERT||LA40_3==ASSIGN||LA40_3==ASSUME||LA40_3==BOOLEAN||(LA40_3 >= CHAR && LA40_3 <= CHAR_LITERAL)||LA40_3==COLLECTIVE||(LA40_3 >= COLON && LA40_3 <= COMMA)||LA40_3==DERIVATIVE||(LA40_3 >= DIV && LA40_3 <= DIV_ASSIGN)||(LA40_3 >= DOUBLE && LA40_3 <= ELSE)||LA40_3==EQ||LA40_3==EXISTS||LA40_3==FALSE||(LA40_3 >= FLOAT && LA40_3 <= FORALL)||(LA40_3 >= GT && LA40_3 <= GTE)||(LA40_3 >= IDENTIFIER && LA40_3 <= IF)||(LA40_3 >= INT && LA40_3 <= INVARIANT)||LA40_3==JOINT||LA40_3==LCURLY||LA40_3==LPAREN||(LA40_3 >= LT && LA40_3 <= LTE)||(LA40_3 >= MOD && LA40_3 <= MULTI)||LA40_3==MULTI_ASSIGN||LA40_3==NEQ||(LA40_3 >= NOT && LA40_3 <= OR)||(LA40_3 >= PLUS && LA40_3 <= PLUS_ASSIGN)||LA40_3==QMARK||(LA40_3 >= RCURLY && LA40_3 <= RECV)||LA40_3==RETURN||(LA40_3 >= RPAREN && LA40_3 <= SELECT)||(LA40_3 >= SEMI && LA40_3 <= SEND)||LA40_3==SIZEOF||LA40_3==SPEC||(LA40_3 >= STRING_LITERAL && LA40_3 <= SUB_ASSIGN)||LA40_3==SYS_VAR||LA40_3==TRUE||(LA40_3 >= VOID && LA40_3 <= WHILE)) ) {
						alt40=1;
					}
				}
				else if ( (LA40_1==IDENTIFIER||(LA40_1 >= LPAREN && LA40_1 <= LSQUARE)||LA40_1==MULTI) ) {
					alt40=1;
				}
			}
			switch (alt40) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:255:19: abstract_declarator
					{
					pushFollow(FOLLOW_abstract_declarator_in_type_name1503);
					abstract_declarator132=abstract_declarator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) adaptor.addChild(root_0, abstract_declarator132.getTree());

					}
					break;

			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "type_name"


	public static class abstract_declarator_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "abstract_declarator"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:259:1: abstract_declarator : ( pointer )+ ( direct_abstract_declarator )? ( declarator_suffix )* -> ^( ABSTRACT_DECLARATOR ( pointer )+ ( direct_abstract_declarator )? ( declarator_suffix )* ) ;
	public final PragmaStringParser.abstract_declarator_return abstract_declarator() throws RecognitionException {
		PragmaStringParser.abstract_declarator_return retval = new PragmaStringParser.abstract_declarator_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope pointer133 =null;
		ParserRuleReturnScope direct_abstract_declarator134 =null;
		ParserRuleReturnScope declarator_suffix135 =null;

		RewriteRuleSubtreeStream stream_direct_abstract_declarator=new RewriteRuleSubtreeStream(adaptor,"rule direct_abstract_declarator");
		RewriteRuleSubtreeStream stream_pointer=new RewriteRuleSubtreeStream(adaptor,"rule pointer");
		RewriteRuleSubtreeStream stream_declarator_suffix=new RewriteRuleSubtreeStream(adaptor,"rule declarator_suffix");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:260:2: ( ( pointer )+ ( direct_abstract_declarator )? ( declarator_suffix )* -> ^( ABSTRACT_DECLARATOR ( pointer )+ ( direct_abstract_declarator )? ( declarator_suffix )* ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:260:4: ( pointer )+ ( direct_abstract_declarator )? ( declarator_suffix )*
			{
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:260:4: ( pointer )+
			int cnt41=0;
			loop41:
			while (true) {
				int alt41=2;
				int LA41_0 = input.LA(1);
				if ( (LA41_0==MULTI) ) {
					int LA41_2 = input.LA(2);
					if ( (LA41_2==RPAREN) ) {
						int LA41_3 = input.LA(3);
						if ( (LA41_3==EOF||LA41_3==ADDR_OF||LA41_3==AND||LA41_3==ASSERT||LA41_3==ASSIGN||LA41_3==ASSUME||LA41_3==BOOLEAN||(LA41_3 >= CHAR && LA41_3 <= CHAR_LITERAL)||LA41_3==COLLECTIVE||(LA41_3 >= COLON && LA41_3 <= COMMA)||LA41_3==DERIVATIVE||(LA41_3 >= DIV && LA41_3 <= DIV_ASSIGN)||(LA41_3 >= DOUBLE && LA41_3 <= ELSE)||LA41_3==EQ||LA41_3==EXISTS||LA41_3==FALSE||(LA41_3 >= FLOAT && LA41_3 <= FORALL)||(LA41_3 >= GT && LA41_3 <= GTE)||(LA41_3 >= IDENTIFIER && LA41_3 <= IF)||(LA41_3 >= INT && LA41_3 <= INVARIANT)||LA41_3==JOINT||LA41_3==LCURLY||(LA41_3 >= LPAREN && LA41_3 <= LTE)||(LA41_3 >= MOD && LA41_3 <= MULTI)||LA41_3==MULTI_ASSIGN||LA41_3==NEQ||(LA41_3 >= NOT && LA41_3 <= OR)||(LA41_3 >= PLUS && LA41_3 <= PLUS_ASSIGN)||LA41_3==QMARK||(LA41_3 >= RCURLY && LA41_3 <= RECV)||LA41_3==RETURN||(LA41_3 >= RPAREN && LA41_3 <= SELECT)||(LA41_3 >= SEMI && LA41_3 <= SEND)||LA41_3==SIZEOF||LA41_3==SPEC||(LA41_3 >= STRING_LITERAL && LA41_3 <= SUB_ASSIGN)||LA41_3==SYS_VAR||LA41_3==TRUE||(LA41_3 >= VOID && LA41_3 <= WHILE)) ) {
							alt41=1;
						}

					}
					else if ( (LA41_2==EOF||LA41_2==IDENTIFIER||(LA41_2 >= LPAREN && LA41_2 <= LSQUARE)||LA41_2==MULTI) ) {
						alt41=1;
					}

				}

				switch (alt41) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:260:4: pointer
					{
					pushFollow(FOLLOW_pointer_in_abstract_declarator1517);
					pointer133=pointer();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_pointer.add(pointer133.getTree());
					}
					break;

				default :
					if ( cnt41 >= 1 ) break loop41;
					if (state.backtracking>0) {state.failed=true; return retval;}
					EarlyExitException eee = new EarlyExitException(41, input);
					throw eee;
				}
				cnt41++;
			}

			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:260:13: ( direct_abstract_declarator )?
			int alt42=2;
			int LA42_0 = input.LA(1);
			if ( (LA42_0==LPAREN) ) {
				alt42=1;
			}
			switch (alt42) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:260:13: direct_abstract_declarator
					{
					pushFollow(FOLLOW_direct_abstract_declarator_in_abstract_declarator1520);
					direct_abstract_declarator134=direct_abstract_declarator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_direct_abstract_declarator.add(direct_abstract_declarator134.getTree());
					}
					break;

			}

			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:260:41: ( declarator_suffix )*
			loop43:
			while (true) {
				int alt43=2;
				int LA43_0 = input.LA(1);
				if ( (LA43_0==LSQUARE) ) {
					alt43=1;
				}

				switch (alt43) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:260:41: declarator_suffix
					{
					pushFollow(FOLLOW_declarator_suffix_in_abstract_declarator1523);
					declarator_suffix135=declarator_suffix();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_declarator_suffix.add(declarator_suffix135.getTree());
					}
					break;

				default :
					break loop43;
				}
			}

			// AST REWRITE
			// elements: pointer, declarator_suffix, direct_abstract_declarator
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 261:3: -> ^( ABSTRACT_DECLARATOR ( pointer )+ ( direct_abstract_declarator )? ( declarator_suffix )* )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:261:6: ^( ABSTRACT_DECLARATOR ( pointer )+ ( direct_abstract_declarator )? ( declarator_suffix )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ABSTRACT_DECLARATOR, "ABSTRACT_DECLARATOR"), root_1);
				if ( !(stream_pointer.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_pointer.hasNext() ) {
					adaptor.addChild(root_1, stream_pointer.nextTree());
				}
				stream_pointer.reset();

				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:261:37: ( direct_abstract_declarator )?
				if ( stream_direct_abstract_declarator.hasNext() ) {
					adaptor.addChild(root_1, stream_direct_abstract_declarator.nextTree());
				}
				stream_direct_abstract_declarator.reset();

				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:261:65: ( declarator_suffix )*
				while ( stream_declarator_suffix.hasNext() ) {
					adaptor.addChild(root_1, stream_declarator_suffix.nextTree());
				}
				stream_declarator_suffix.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "abstract_declarator"


	public static class direct_abstract_declarator_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "direct_abstract_declarator"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:264:1: direct_abstract_declarator : LPAREN abstract_declarator RPAREN -> ^( DIRECT_ABSTRACT_DECLARATOR abstract_declarator RPAREN ) ;
	public final PragmaStringParser.direct_abstract_declarator_return direct_abstract_declarator() throws RecognitionException {
		PragmaStringParser.direct_abstract_declarator_return retval = new PragmaStringParser.direct_abstract_declarator_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LPAREN136=null;
		Token RPAREN138=null;
		ParserRuleReturnScope abstract_declarator137 =null;

		Object LPAREN136_tree=null;
		Object RPAREN138_tree=null;
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleSubtreeStream stream_abstract_declarator=new RewriteRuleSubtreeStream(adaptor,"rule abstract_declarator");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:265:2: ( LPAREN abstract_declarator RPAREN -> ^( DIRECT_ABSTRACT_DECLARATOR abstract_declarator RPAREN ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:265:4: LPAREN abstract_declarator RPAREN
			{
			LPAREN136=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_direct_abstract_declarator1552); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN136);

			pushFollow(FOLLOW_abstract_declarator_in_direct_abstract_declarator1554);
			abstract_declarator137=abstract_declarator();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_abstract_declarator.add(abstract_declarator137.getTree());
			RPAREN138=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_direct_abstract_declarator1556); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN138);

			// AST REWRITE
			// elements: abstract_declarator, RPAREN
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 266:3: -> ^( DIRECT_ABSTRACT_DECLARATOR abstract_declarator RPAREN )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:266:6: ^( DIRECT_ABSTRACT_DECLARATOR abstract_declarator RPAREN )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DIRECT_ABSTRACT_DECLARATOR, "DIRECT_ABSTRACT_DECLARATOR"), root_1);
				adaptor.addChild(root_1, stream_abstract_declarator.nextTree());
				adaptor.addChild(root_1, stream_RPAREN.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "direct_abstract_declarator"


	public static class field_declaration_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "field_declaration"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:269:1: field_declaration : type_specifier declarator SEMI -> ^( FIELD_DECL type_specifier declarator SEMI ) ;
	public final PragmaStringParser.field_declaration_return field_declaration() throws RecognitionException {
		PragmaStringParser.field_declaration_return retval = new PragmaStringParser.field_declaration_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token SEMI141=null;
		ParserRuleReturnScope type_specifier139 =null;
		ParserRuleReturnScope declarator140 =null;

		Object SEMI141_tree=null;
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleSubtreeStream stream_declarator=new RewriteRuleSubtreeStream(adaptor,"rule declarator");
		RewriteRuleSubtreeStream stream_type_specifier=new RewriteRuleSubtreeStream(adaptor,"rule type_specifier");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:270:2: ( type_specifier declarator SEMI -> ^( FIELD_DECL type_specifier declarator SEMI ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:270:4: type_specifier declarator SEMI
			{
			pushFollow(FOLLOW_type_specifier_in_field_declaration1581);
			type_specifier139=type_specifier();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_type_specifier.add(type_specifier139.getTree());
			pushFollow(FOLLOW_declarator_in_field_declaration1583);
			declarator140=declarator();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_declarator.add(declarator140.getTree());
			SEMI141=(Token)match(input,SEMI,FOLLOW_SEMI_in_field_declaration1585); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SEMI.add(SEMI141);

			// AST REWRITE
			// elements: declarator, type_specifier, SEMI
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 271:3: -> ^( FIELD_DECL type_specifier declarator SEMI )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:271:6: ^( FIELD_DECL type_specifier declarator SEMI )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FIELD_DECL, "FIELD_DECL"), root_1);
				adaptor.addChild(root_1, stream_type_specifier.nextTree());
				adaptor.addChild(root_1, stream_declarator.nextTree());
				adaptor.addChild(root_1, stream_SEMI.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "field_declaration"


	public static class statement_list_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "statement_list"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:275:1: statement_list : ( statement )+ -> ^( STATEMENT_LIST ( statement )+ ) ;
	public final PragmaStringParser.statement_list_return statement_list() throws RecognitionException {
		PragmaStringParser.statement_list_return retval = new PragmaStringParser.statement_list_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope statement142 =null;

		RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:276:2: ( ( statement )+ -> ^( STATEMENT_LIST ( statement )+ ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:276:4: ( statement )+
			{
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:276:4: ( statement )+
			int cnt44=0;
			loop44:
			while (true) {
				int alt44=2;
				int LA44_0 = input.LA(1);
				if ( (LA44_0==ADDR_OF||LA44_0==ASSERT||LA44_0==ASSUME||LA44_0==CHAR_LITERAL||LA44_0==COLLECTIVE||LA44_0==DERIVATIVE||(LA44_0 >= DOUBLE_PLUS && LA44_0 <= DOUBLE_SUB)||LA44_0==EXISTS||LA44_0==FALSE||(LA44_0 >= FOR && LA44_0 <= FORALL)||(LA44_0 >= IDENTIFIER && LA44_0 <= IF)||(LA44_0 >= INT_LITERAL && LA44_0 <= INVARIANT)||LA44_0==JOINT||LA44_0==LCURLY||LA44_0==LPAREN||LA44_0==MULTI||LA44_0==NOT||LA44_0==PLUS||(LA44_0 >= REAL_LITERAL && LA44_0 <= RECV)||LA44_0==RETURN||LA44_0==SELECT||(LA44_0 >= SEMI && LA44_0 <= SEND)||LA44_0==SIZEOF||LA44_0==SPEC||LA44_0==STRING_LITERAL||LA44_0==SUB||LA44_0==SYS_VAR||LA44_0==TRUE||LA44_0==WHILE) ) {
					alt44=1;
				}

				switch (alt44) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:276:4: statement
					{
					pushFollow(FOLLOW_statement_in_statement_list1612);
					statement142=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(statement142.getTree());
					}
					break;

				default :
					if ( cnt44 >= 1 ) break loop44;
					if (state.backtracking>0) {state.failed=true; return retval;}
					EarlyExitException eee = new EarlyExitException(44, input);
					throw eee;
				}
				cnt44++;
			}

			// AST REWRITE
			// elements: statement
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 276:15: -> ^( STATEMENT_LIST ( statement )+ )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:276:18: ^( STATEMENT_LIST ( statement )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT_LIST, "STATEMENT_LIST"), root_1);
				if ( !(stream_statement.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_statement.hasNext() ) {
					adaptor.addChild(root_1, stream_statement.nextTree());
				}
				stream_statement.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "statement_list"


	public static class statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:279:1: statement : ( assert_statement -> ^( STATEMENT assert_statement ) | collective_assert_statement -> ^( STATEMENT collective_assert_statement ) | joint_assert_statement -> ^( STATEMENT joint_assert_statement ) | invariant_statement -> ^( STATEMENT invariant_statement ) | collective_invariant_statement -> ^( STATEMENT collective_invariant_statement ) | joint_invariant_statement -> ^( STATEMENT joint_invariant_statement ) | assume_statement -> ^( STATEMENT assume_statement ) | compound_statement -> ^( STATEMENT compound_statement ) | condition_statement -> ^( STATEMENT condition_statement ) | select_statement -> ^( STATEMENT select_statement ) | iterative_statement -> ^( STATEMENT iterative_statement ) | return_statement -> ^( STATEMENT return_statement ) | empty_statement -> ^( STATEMENT empty_statement ) | send_statement -> ^( STATEMENT send_statement ) | recv_statement -> ^( STATEMENT recv_statement ) | call_statement -> ^( STATEMENT call_statement ) | expr_statement -> ^( STATEMENT expr_statement ) | allocate_statement -> ^( STATEMENT allocate_statement ) );
	public final PragmaStringParser.statement_return statement() throws RecognitionException {
		PragmaStringParser.statement_return retval = new PragmaStringParser.statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope assert_statement143 =null;
		ParserRuleReturnScope collective_assert_statement144 =null;
		ParserRuleReturnScope joint_assert_statement145 =null;
		ParserRuleReturnScope invariant_statement146 =null;
		ParserRuleReturnScope collective_invariant_statement147 =null;
		ParserRuleReturnScope joint_invariant_statement148 =null;
		ParserRuleReturnScope assume_statement149 =null;
		ParserRuleReturnScope compound_statement150 =null;
		ParserRuleReturnScope condition_statement151 =null;
		ParserRuleReturnScope select_statement152 =null;
		ParserRuleReturnScope iterative_statement153 =null;
		ParserRuleReturnScope return_statement154 =null;
		ParserRuleReturnScope empty_statement155 =null;
		ParserRuleReturnScope send_statement156 =null;
		ParserRuleReturnScope recv_statement157 =null;
		ParserRuleReturnScope call_statement158 =null;
		ParserRuleReturnScope expr_statement159 =null;
		ParserRuleReturnScope allocate_statement160 =null;

		RewriteRuleSubtreeStream stream_condition_statement=new RewriteRuleSubtreeStream(adaptor,"rule condition_statement");
		RewriteRuleSubtreeStream stream_return_statement=new RewriteRuleSubtreeStream(adaptor,"rule return_statement");
		RewriteRuleSubtreeStream stream_collective_assert_statement=new RewriteRuleSubtreeStream(adaptor,"rule collective_assert_statement");
		RewriteRuleSubtreeStream stream_call_statement=new RewriteRuleSubtreeStream(adaptor,"rule call_statement");
		RewriteRuleSubtreeStream stream_empty_statement=new RewriteRuleSubtreeStream(adaptor,"rule empty_statement");
		RewriteRuleSubtreeStream stream_joint_invariant_statement=new RewriteRuleSubtreeStream(adaptor,"rule joint_invariant_statement");
		RewriteRuleSubtreeStream stream_iterative_statement=new RewriteRuleSubtreeStream(adaptor,"rule iterative_statement");
		RewriteRuleSubtreeStream stream_send_statement=new RewriteRuleSubtreeStream(adaptor,"rule send_statement");
		RewriteRuleSubtreeStream stream_compound_statement=new RewriteRuleSubtreeStream(adaptor,"rule compound_statement");
		RewriteRuleSubtreeStream stream_invariant_statement=new RewriteRuleSubtreeStream(adaptor,"rule invariant_statement");
		RewriteRuleSubtreeStream stream_collective_invariant_statement=new RewriteRuleSubtreeStream(adaptor,"rule collective_invariant_statement");
		RewriteRuleSubtreeStream stream_expr_statement=new RewriteRuleSubtreeStream(adaptor,"rule expr_statement");
		RewriteRuleSubtreeStream stream_assert_statement=new RewriteRuleSubtreeStream(adaptor,"rule assert_statement");
		RewriteRuleSubtreeStream stream_select_statement=new RewriteRuleSubtreeStream(adaptor,"rule select_statement");
		RewriteRuleSubtreeStream stream_allocate_statement=new RewriteRuleSubtreeStream(adaptor,"rule allocate_statement");
		RewriteRuleSubtreeStream stream_recv_statement=new RewriteRuleSubtreeStream(adaptor,"rule recv_statement");
		RewriteRuleSubtreeStream stream_assume_statement=new RewriteRuleSubtreeStream(adaptor,"rule assume_statement");
		RewriteRuleSubtreeStream stream_joint_assert_statement=new RewriteRuleSubtreeStream(adaptor,"rule joint_assert_statement");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:283:2: ( assert_statement -> ^( STATEMENT assert_statement ) | collective_assert_statement -> ^( STATEMENT collective_assert_statement ) | joint_assert_statement -> ^( STATEMENT joint_assert_statement ) | invariant_statement -> ^( STATEMENT invariant_statement ) | collective_invariant_statement -> ^( STATEMENT collective_invariant_statement ) | joint_invariant_statement -> ^( STATEMENT joint_invariant_statement ) | assume_statement -> ^( STATEMENT assume_statement ) | compound_statement -> ^( STATEMENT compound_statement ) | condition_statement -> ^( STATEMENT condition_statement ) | select_statement -> ^( STATEMENT select_statement ) | iterative_statement -> ^( STATEMENT iterative_statement ) | return_statement -> ^( STATEMENT return_statement ) | empty_statement -> ^( STATEMENT empty_statement ) | send_statement -> ^( STATEMENT send_statement ) | recv_statement -> ^( STATEMENT recv_statement ) | call_statement -> ^( STATEMENT call_statement ) | expr_statement -> ^( STATEMENT expr_statement ) | allocate_statement -> ^( STATEMENT allocate_statement ) )
			int alt45=18;
			switch ( input.LA(1) ) {
			case ASSERT:
				{
				alt45=1;
				}
				break;
			case COLLECTIVE:
				{
				int LA45_2 = input.LA(2);
				if ( (synpred62_PragmaString()) ) {
					alt45=2;
				}
				else if ( (synpred65_PragmaString()) ) {
					alt45=5;
				}

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

				}
				break;
			case JOINT:
				{
				int LA45_3 = input.LA(2);
				if ( (synpred63_PragmaString()) ) {
					alt45=3;
				}
				else if ( (synpred66_PragmaString()) ) {
					alt45=6;
				}

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

				}
				break;
			case INVARIANT:
				{
				alt45=4;
				}
				break;
			case ASSUME:
				{
				alt45=7;
				}
				break;
			case LCURLY:
				{
				alt45=8;
				}
				break;
			case IF:
				{
				alt45=9;
				}
				break;
			case SELECT:
				{
				alt45=10;
				}
				break;
			case IDENTIFIER:
				{
				int LA45_9 = input.LA(2);
				if ( (synpred71_PragmaString()) ) {
					alt45=11;
				}
				else if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case FOR:
			case WHILE:
				{
				alt45=11;
				}
				break;
			case RETURN:
				{
				alt45=12;
				}
				break;
			case SEMI:
				{
				alt45=13;
				}
				break;
			case SEND:
				{
				alt45=14;
				}
				break;
			case RECV:
				{
				alt45=15;
				}
				break;
			case TRUE:
				{
				int LA45_16 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case FALSE:
				{
				int LA45_17 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case INT_LITERAL:
				{
				int LA45_18 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case REAL_LITERAL:
				{
				int LA45_19 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case CHAR_LITERAL:
				{
				int LA45_20 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case STRING_LITERAL:
				{
				int LA45_21 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case SYS_VAR:
				{
				int LA45_22 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case LPAREN:
				{
				int LA45_23 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case SPEC:
				{
				int LA45_24 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case DERIVATIVE:
				{
				int LA45_25 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case PLUS:
				{
				int LA45_26 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case SUB:
				{
				int LA45_27 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case NOT:
				{
				int LA45_28 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case MULTI:
				{
				int LA45_29 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case ADDR_OF:
				{
				int LA45_30 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case DOUBLE_PLUS:
				{
				int LA45_31 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case DOUBLE_SUB:
				{
				int LA45_32 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case SIZEOF:
				{
				int LA45_33 = input.LA(2);
				if ( (synpred76_PragmaString()) ) {
					alt45=16;
				}
				else if ( (synpred77_PragmaString()) ) {
					alt45=17;
				}
				else if ( (true) ) {
					alt45=18;
				}

				}
				break;
			case EXISTS:
			case FORALL:
				{
				alt45=17;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 45, 0, input);
				throw nvae;
			}
			switch (alt45) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:283:4: assert_statement
					{
					pushFollow(FOLLOW_assert_statement_in_statement1637);
					assert_statement143=assert_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_assert_statement.add(assert_statement143.getTree());
					// AST REWRITE
					// elements: assert_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 283:21: -> ^( STATEMENT assert_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:283:24: ^( STATEMENT assert_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_assert_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:284:4: collective_assert_statement
					{
					pushFollow(FOLLOW_collective_assert_statement_in_statement1650);
					collective_assert_statement144=collective_assert_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_collective_assert_statement.add(collective_assert_statement144.getTree());
					// AST REWRITE
					// elements: collective_assert_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 284:32: -> ^( STATEMENT collective_assert_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:284:35: ^( STATEMENT collective_assert_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_collective_assert_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:285:4: joint_assert_statement
					{
					pushFollow(FOLLOW_joint_assert_statement_in_statement1663);
					joint_assert_statement145=joint_assert_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_joint_assert_statement.add(joint_assert_statement145.getTree());
					// AST REWRITE
					// elements: joint_assert_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 285:27: -> ^( STATEMENT joint_assert_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:285:30: ^( STATEMENT joint_assert_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_joint_assert_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:286:4: invariant_statement
					{
					pushFollow(FOLLOW_invariant_statement_in_statement1676);
					invariant_statement146=invariant_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_invariant_statement.add(invariant_statement146.getTree());
					// AST REWRITE
					// elements: invariant_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 286:24: -> ^( STATEMENT invariant_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:286:27: ^( STATEMENT invariant_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_invariant_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 5 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:287:4: collective_invariant_statement
					{
					pushFollow(FOLLOW_collective_invariant_statement_in_statement1689);
					collective_invariant_statement147=collective_invariant_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_collective_invariant_statement.add(collective_invariant_statement147.getTree());
					// AST REWRITE
					// elements: collective_invariant_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 287:35: -> ^( STATEMENT collective_invariant_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:287:38: ^( STATEMENT collective_invariant_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_collective_invariant_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 6 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:288:4: joint_invariant_statement
					{
					pushFollow(FOLLOW_joint_invariant_statement_in_statement1702);
					joint_invariant_statement148=joint_invariant_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_joint_invariant_statement.add(joint_invariant_statement148.getTree());
					// AST REWRITE
					// elements: joint_invariant_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 288:30: -> ^( STATEMENT joint_invariant_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:288:33: ^( STATEMENT joint_invariant_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_joint_invariant_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 7 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:289:4: assume_statement
					{
					pushFollow(FOLLOW_assume_statement_in_statement1715);
					assume_statement149=assume_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_assume_statement.add(assume_statement149.getTree());
					// AST REWRITE
					// elements: assume_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 289:21: -> ^( STATEMENT assume_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:289:24: ^( STATEMENT assume_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_assume_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 8 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:294:4: compound_statement
					{
					pushFollow(FOLLOW_compound_statement_in_statement1731);
					compound_statement150=compound_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_compound_statement.add(compound_statement150.getTree());
					// AST REWRITE
					// elements: compound_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 294:23: -> ^( STATEMENT compound_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:294:26: ^( STATEMENT compound_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_compound_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 9 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:295:4: condition_statement
					{
					pushFollow(FOLLOW_condition_statement_in_statement1744);
					condition_statement151=condition_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_condition_statement.add(condition_statement151.getTree());
					// AST REWRITE
					// elements: condition_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 295:24: -> ^( STATEMENT condition_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:295:27: ^( STATEMENT condition_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_condition_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 10 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:296:4: select_statement
					{
					pushFollow(FOLLOW_select_statement_in_statement1757);
					select_statement152=select_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_select_statement.add(select_statement152.getTree());
					// AST REWRITE
					// elements: select_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 296:21: -> ^( STATEMENT select_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:296:24: ^( STATEMENT select_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_select_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 11 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:297:4: iterative_statement
					{
					pushFollow(FOLLOW_iterative_statement_in_statement1770);
					iterative_statement153=iterative_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_iterative_statement.add(iterative_statement153.getTree());
					// AST REWRITE
					// elements: iterative_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 297:24: -> ^( STATEMENT iterative_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:297:27: ^( STATEMENT iterative_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_iterative_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 12 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:298:4: return_statement
					{
					pushFollow(FOLLOW_return_statement_in_statement1783);
					return_statement154=return_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_return_statement.add(return_statement154.getTree());
					// AST REWRITE
					// elements: return_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 298:21: -> ^( STATEMENT return_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:298:24: ^( STATEMENT return_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_return_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 13 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:299:4: empty_statement
					{
					pushFollow(FOLLOW_empty_statement_in_statement1796);
					empty_statement155=empty_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_empty_statement.add(empty_statement155.getTree());
					// AST REWRITE
					// elements: empty_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 299:20: -> ^( STATEMENT empty_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:299:23: ^( STATEMENT empty_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_empty_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 14 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:300:4: send_statement
					{
					pushFollow(FOLLOW_send_statement_in_statement1809);
					send_statement156=send_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_send_statement.add(send_statement156.getTree());
					// AST REWRITE
					// elements: send_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 300:19: -> ^( STATEMENT send_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:300:22: ^( STATEMENT send_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_send_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 15 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:301:4: recv_statement
					{
					pushFollow(FOLLOW_recv_statement_in_statement1822);
					recv_statement157=recv_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_recv_statement.add(recv_statement157.getTree());
					// AST REWRITE
					// elements: recv_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 301:19: -> ^( STATEMENT recv_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:301:22: ^( STATEMENT recv_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_recv_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 16 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:302:4: call_statement
					{
					pushFollow(FOLLOW_call_statement_in_statement1835);
					call_statement158=call_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_call_statement.add(call_statement158.getTree());
					// AST REWRITE
					// elements: call_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 302:19: -> ^( STATEMENT call_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:302:22: ^( STATEMENT call_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_call_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 17 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:303:4: expr_statement
					{
					pushFollow(FOLLOW_expr_statement_in_statement1848);
					expr_statement159=expr_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr_statement.add(expr_statement159.getTree());
					// AST REWRITE
					// elements: expr_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 303:19: -> ^( STATEMENT expr_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:303:22: ^( STATEMENT expr_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_expr_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 18 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:304:4: allocate_statement
					{
					pushFollow(FOLLOW_allocate_statement_in_statement1861);
					allocate_statement160=allocate_statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_allocate_statement.add(allocate_statement160.getTree());
					// AST REWRITE
					// elements: allocate_statement
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 304:22: -> ^( STATEMENT allocate_statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:304:25: ^( STATEMENT allocate_statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(STATEMENT, "STATEMENT"), root_1);
						adaptor.addChild(root_1, stream_allocate_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "statement"


	public static class assume_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "assume_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:319:1: assume_statement : ASSUME expr SEMI -> ^( ASSUME_STMT ASSUME expr SEMI ) ;
	public final PragmaStringParser.assume_statement_return assume_statement() throws RecognitionException {
		PragmaStringParser.assume_statement_return retval = new PragmaStringParser.assume_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token ASSUME161=null;
		Token SEMI163=null;
		ParserRuleReturnScope expr162 =null;

		Object ASSUME161_tree=null;
		Object SEMI163_tree=null;
		RewriteRuleTokenStream stream_ASSUME=new RewriteRuleTokenStream(adaptor,"token ASSUME");
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:320:2: ( ASSUME expr SEMI -> ^( ASSUME_STMT ASSUME expr SEMI ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:320:4: ASSUME expr SEMI
			{
			ASSUME161=(Token)match(input,ASSUME,FOLLOW_ASSUME_in_assume_statement1882); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_ASSUME.add(ASSUME161);

			pushFollow(FOLLOW_expr_in_assume_statement1884);
			expr162=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(expr162.getTree());
			SEMI163=(Token)match(input,SEMI,FOLLOW_SEMI_in_assume_statement1886); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SEMI.add(SEMI163);

			// AST REWRITE
			// elements: ASSUME, expr, SEMI
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 320:21: -> ^( ASSUME_STMT ASSUME expr SEMI )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:320:24: ^( ASSUME_STMT ASSUME expr SEMI )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ASSUME_STMT, "ASSUME_STMT"), root_1);
				adaptor.addChild(root_1, stream_ASSUME.nextNode());
				adaptor.addChild(root_1, stream_expr.nextTree());
				adaptor.addChild(root_1, stream_SEMI.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "assume_statement"


	public static class assert_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "assert_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:323:1: assert_statement : ( ASSERT expr SEMI -> ^( ASSERT_STMT ASSERT expr SEMI ) | ASSERT expr COMMA STRING_LITERAL SEMI -> ^( ASSERT_STMT ASSERT expr STRING_LITERAL SEMI ) );
	public final PragmaStringParser.assert_statement_return assert_statement() throws RecognitionException {
		PragmaStringParser.assert_statement_return retval = new PragmaStringParser.assert_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token ASSERT164=null;
		Token SEMI166=null;
		Token ASSERT167=null;
		Token COMMA169=null;
		Token STRING_LITERAL170=null;
		Token SEMI171=null;
		ParserRuleReturnScope expr165 =null;
		ParserRuleReturnScope expr168 =null;

		Object ASSERT164_tree=null;
		Object SEMI166_tree=null;
		Object ASSERT167_tree=null;
		Object COMMA169_tree=null;
		Object STRING_LITERAL170_tree=null;
		Object SEMI171_tree=null;
		RewriteRuleTokenStream stream_STRING_LITERAL=new RewriteRuleTokenStream(adaptor,"token STRING_LITERAL");
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleTokenStream stream_ASSERT=new RewriteRuleTokenStream(adaptor,"token ASSERT");
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:324:2: ( ASSERT expr SEMI -> ^( ASSERT_STMT ASSERT expr SEMI ) | ASSERT expr COMMA STRING_LITERAL SEMI -> ^( ASSERT_STMT ASSERT expr STRING_LITERAL SEMI ) )
			int alt46=2;
			int LA46_0 = input.LA(1);
			if ( (LA46_0==ASSERT) ) {
				int LA46_1 = input.LA(2);
				if ( (synpred78_PragmaString()) ) {
					alt46=1;
				}
				else if ( (true) ) {
					alt46=2;
				}

			}

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

			switch (alt46) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:324:6: ASSERT expr SEMI
					{
					ASSERT164=(Token)match(input,ASSERT,FOLLOW_ASSERT_in_assert_statement1912); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ASSERT.add(ASSERT164);

					pushFollow(FOLLOW_expr_in_assert_statement1914);
					expr165=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr165.getTree());
					SEMI166=(Token)match(input,SEMI,FOLLOW_SEMI_in_assert_statement1916); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SEMI.add(SEMI166);

					// AST REWRITE
					// elements: expr, ASSERT, SEMI
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 324:23: -> ^( ASSERT_STMT ASSERT expr SEMI )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:324:26: ^( ASSERT_STMT ASSERT expr SEMI )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ASSERT_STMT, "ASSERT_STMT"), root_1);
						adaptor.addChild(root_1, stream_ASSERT.nextNode());
						adaptor.addChild(root_1, stream_expr.nextTree());
						adaptor.addChild(root_1, stream_SEMI.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:325:4: ASSERT expr COMMA STRING_LITERAL SEMI
					{
					ASSERT167=(Token)match(input,ASSERT,FOLLOW_ASSERT_in_assert_statement1933); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ASSERT.add(ASSERT167);

					pushFollow(FOLLOW_expr_in_assert_statement1935);
					expr168=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr168.getTree());
					COMMA169=(Token)match(input,COMMA,FOLLOW_COMMA_in_assert_statement1937); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA169);

					STRING_LITERAL170=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_assert_statement1939); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_STRING_LITERAL.add(STRING_LITERAL170);

					SEMI171=(Token)match(input,SEMI,FOLLOW_SEMI_in_assert_statement1941); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SEMI.add(SEMI171);

					// AST REWRITE
					// elements: SEMI, expr, ASSERT, STRING_LITERAL
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 325:42: -> ^( ASSERT_STMT ASSERT expr STRING_LITERAL SEMI )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:325:45: ^( ASSERT_STMT ASSERT expr STRING_LITERAL SEMI )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ASSERT_STMT, "ASSERT_STMT"), root_1);
						adaptor.addChild(root_1, stream_ASSERT.nextNode());
						adaptor.addChild(root_1, stream_expr.nextTree());
						adaptor.addChild(root_1, stream_STRING_LITERAL.nextNode());
						adaptor.addChild(root_1, stream_SEMI.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "assert_statement"


	public static class collective_assert_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "collective_assert_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:328:1: collective_assert_statement : COLLECTIVE ASSERT IDENTIFIER expr -> ^( COLLECTIVE_ASSERT_STMT IDENTIFIER expr SEMI ) ;
	public final PragmaStringParser.collective_assert_statement_return collective_assert_statement() throws RecognitionException {
		PragmaStringParser.collective_assert_statement_return retval = new PragmaStringParser.collective_assert_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token COLLECTIVE172=null;
		Token ASSERT173=null;
		Token IDENTIFIER174=null;
		ParserRuleReturnScope expr175 =null;

		Object COLLECTIVE172_tree=null;
		Object ASSERT173_tree=null;
		Object IDENTIFIER174_tree=null;
		RewriteRuleTokenStream stream_COLLECTIVE=new RewriteRuleTokenStream(adaptor,"token COLLECTIVE");
		RewriteRuleTokenStream stream_ASSERT=new RewriteRuleTokenStream(adaptor,"token ASSERT");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:329:2: ( COLLECTIVE ASSERT IDENTIFIER expr -> ^( COLLECTIVE_ASSERT_STMT IDENTIFIER expr SEMI ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:329:4: COLLECTIVE ASSERT IDENTIFIER expr
			{
			COLLECTIVE172=(Token)match(input,COLLECTIVE,FOLLOW_COLLECTIVE_in_collective_assert_statement1966); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_COLLECTIVE.add(COLLECTIVE172);

			ASSERT173=(Token)match(input,ASSERT,FOLLOW_ASSERT_in_collective_assert_statement1968); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_ASSERT.add(ASSERT173);

			IDENTIFIER174=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_collective_assert_statement1970); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER174);

			pushFollow(FOLLOW_expr_in_collective_assert_statement1972);
			expr175=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(expr175.getTree());
			// AST REWRITE
			// elements: expr, IDENTIFIER
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 329:38: -> ^( COLLECTIVE_ASSERT_STMT IDENTIFIER expr SEMI )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:329:41: ^( COLLECTIVE_ASSERT_STMT IDENTIFIER expr SEMI )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COLLECTIVE_ASSERT_STMT, "COLLECTIVE_ASSERT_STMT"), root_1);
				adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
				adaptor.addChild(root_1, stream_expr.nextTree());
				adaptor.addChild(root_1, (Object)adaptor.create(SEMI, "SEMI"));
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "collective_assert_statement"


	public static class joint_assert_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "joint_assert_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:331:1: joint_assert_statement : JOINT ASSERT IDENTIFIER expr SEMI -> ^( JOINT_ASSERT_STMT IDENTIFIER expr SEMI ) ;
	public final PragmaStringParser.joint_assert_statement_return joint_assert_statement() throws RecognitionException {
		PragmaStringParser.joint_assert_statement_return retval = new PragmaStringParser.joint_assert_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token JOINT176=null;
		Token ASSERT177=null;
		Token IDENTIFIER178=null;
		Token SEMI180=null;
		ParserRuleReturnScope expr179 =null;

		Object JOINT176_tree=null;
		Object ASSERT177_tree=null;
		Object IDENTIFIER178_tree=null;
		Object SEMI180_tree=null;
		RewriteRuleTokenStream stream_JOINT=new RewriteRuleTokenStream(adaptor,"token JOINT");
		RewriteRuleTokenStream stream_ASSERT=new RewriteRuleTokenStream(adaptor,"token ASSERT");
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:332:2: ( JOINT ASSERT IDENTIFIER expr SEMI -> ^( JOINT_ASSERT_STMT IDENTIFIER expr SEMI ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:332:4: JOINT ASSERT IDENTIFIER expr SEMI
			{
			JOINT176=(Token)match(input,JOINT,FOLLOW_JOINT_in_joint_assert_statement1993); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_JOINT.add(JOINT176);

			ASSERT177=(Token)match(input,ASSERT,FOLLOW_ASSERT_in_joint_assert_statement1995); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_ASSERT.add(ASSERT177);

			IDENTIFIER178=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_joint_assert_statement1997); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER178);

			pushFollow(FOLLOW_expr_in_joint_assert_statement1999);
			expr179=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(expr179.getTree());
			SEMI180=(Token)match(input,SEMI,FOLLOW_SEMI_in_joint_assert_statement2001); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SEMI.add(SEMI180);

			// AST REWRITE
			// elements: expr, IDENTIFIER, SEMI
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 332:38: -> ^( JOINT_ASSERT_STMT IDENTIFIER expr SEMI )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:332:41: ^( JOINT_ASSERT_STMT IDENTIFIER expr SEMI )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(JOINT_ASSERT_STMT, "JOINT_ASSERT_STMT"), root_1);
				adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
				adaptor.addChild(root_1, stream_expr.nextTree());
				adaptor.addChild(root_1, stream_SEMI.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "joint_assert_statement"


	public static class invariant_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "invariant_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:334:1: invariant_statement : INVARIANT IDENTIFIER expr SEMI -> ^( INVARIANT_STMT IDENTIFIER expr SEMI ) ;
	public final PragmaStringParser.invariant_statement_return invariant_statement() throws RecognitionException {
		PragmaStringParser.invariant_statement_return retval = new PragmaStringParser.invariant_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token INVARIANT181=null;
		Token IDENTIFIER182=null;
		Token SEMI184=null;
		ParserRuleReturnScope expr183 =null;

		Object INVARIANT181_tree=null;
		Object IDENTIFIER182_tree=null;
		Object SEMI184_tree=null;
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_INVARIANT=new RewriteRuleTokenStream(adaptor,"token INVARIANT");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:335:2: ( INVARIANT IDENTIFIER expr SEMI -> ^( INVARIANT_STMT IDENTIFIER expr SEMI ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:335:4: INVARIANT IDENTIFIER expr SEMI
			{
			INVARIANT181=(Token)match(input,INVARIANT,FOLLOW_INVARIANT_in_invariant_statement2022); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_INVARIANT.add(INVARIANT181);

			IDENTIFIER182=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_invariant_statement2024); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER182);

			pushFollow(FOLLOW_expr_in_invariant_statement2026);
			expr183=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(expr183.getTree());
			SEMI184=(Token)match(input,SEMI,FOLLOW_SEMI_in_invariant_statement2028); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SEMI.add(SEMI184);

			// AST REWRITE
			// elements: SEMI, expr, IDENTIFIER
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 335:35: -> ^( INVARIANT_STMT IDENTIFIER expr SEMI )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:335:38: ^( INVARIANT_STMT IDENTIFIER expr SEMI )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(INVARIANT_STMT, "INVARIANT_STMT"), root_1);
				adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
				adaptor.addChild(root_1, stream_expr.nextTree());
				adaptor.addChild(root_1, stream_SEMI.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "invariant_statement"


	public static class collective_invariant_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "collective_invariant_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:337:1: collective_invariant_statement : COLLECTIVE INVARIANT IDENTIFIER expr SEMI -> ^( COLLECTIVE_INVARIANT_STMT IDENTIFIER expr SEMI ) ;
	public final PragmaStringParser.collective_invariant_statement_return collective_invariant_statement() throws RecognitionException {
		PragmaStringParser.collective_invariant_statement_return retval = new PragmaStringParser.collective_invariant_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token COLLECTIVE185=null;
		Token INVARIANT186=null;
		Token IDENTIFIER187=null;
		Token SEMI189=null;
		ParserRuleReturnScope expr188 =null;

		Object COLLECTIVE185_tree=null;
		Object INVARIANT186_tree=null;
		Object IDENTIFIER187_tree=null;
		Object SEMI189_tree=null;
		RewriteRuleTokenStream stream_COLLECTIVE=new RewriteRuleTokenStream(adaptor,"token COLLECTIVE");
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_INVARIANT=new RewriteRuleTokenStream(adaptor,"token INVARIANT");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:338:2: ( COLLECTIVE INVARIANT IDENTIFIER expr SEMI -> ^( COLLECTIVE_INVARIANT_STMT IDENTIFIER expr SEMI ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:338:4: COLLECTIVE INVARIANT IDENTIFIER expr SEMI
			{
			COLLECTIVE185=(Token)match(input,COLLECTIVE,FOLLOW_COLLECTIVE_in_collective_invariant_statement2049); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_COLLECTIVE.add(COLLECTIVE185);

			INVARIANT186=(Token)match(input,INVARIANT,FOLLOW_INVARIANT_in_collective_invariant_statement2051); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_INVARIANT.add(INVARIANT186);

			IDENTIFIER187=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_collective_invariant_statement2053); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER187);

			pushFollow(FOLLOW_expr_in_collective_invariant_statement2055);
			expr188=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(expr188.getTree());
			SEMI189=(Token)match(input,SEMI,FOLLOW_SEMI_in_collective_invariant_statement2057); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SEMI.add(SEMI189);

			// AST REWRITE
			// elements: IDENTIFIER, expr, SEMI
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 338:46: -> ^( COLLECTIVE_INVARIANT_STMT IDENTIFIER expr SEMI )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:338:49: ^( COLLECTIVE_INVARIANT_STMT IDENTIFIER expr SEMI )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COLLECTIVE_INVARIANT_STMT, "COLLECTIVE_INVARIANT_STMT"), root_1);
				adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
				adaptor.addChild(root_1, stream_expr.nextTree());
				adaptor.addChild(root_1, stream_SEMI.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "collective_invariant_statement"


	public static class joint_invariant_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "joint_invariant_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:340:1: joint_invariant_statement : JOINT INVARIANT IDENTIFIER expr SEMI -> ^( JOINT_INVARIANT_STMT IDENTIFIER expr SEMI ) ;
	public final PragmaStringParser.joint_invariant_statement_return joint_invariant_statement() throws RecognitionException {
		PragmaStringParser.joint_invariant_statement_return retval = new PragmaStringParser.joint_invariant_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token JOINT190=null;
		Token INVARIANT191=null;
		Token IDENTIFIER192=null;
		Token SEMI194=null;
		ParserRuleReturnScope expr193 =null;

		Object JOINT190_tree=null;
		Object INVARIANT191_tree=null;
		Object IDENTIFIER192_tree=null;
		Object SEMI194_tree=null;
		RewriteRuleTokenStream stream_JOINT=new RewriteRuleTokenStream(adaptor,"token JOINT");
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_INVARIANT=new RewriteRuleTokenStream(adaptor,"token INVARIANT");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:341:2: ( JOINT INVARIANT IDENTIFIER expr SEMI -> ^( JOINT_INVARIANT_STMT IDENTIFIER expr SEMI ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:341:4: JOINT INVARIANT IDENTIFIER expr SEMI
			{
			JOINT190=(Token)match(input,JOINT,FOLLOW_JOINT_in_joint_invariant_statement2078); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_JOINT.add(JOINT190);

			INVARIANT191=(Token)match(input,INVARIANT,FOLLOW_INVARIANT_in_joint_invariant_statement2080); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_INVARIANT.add(INVARIANT191);

			IDENTIFIER192=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_joint_invariant_statement2082); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER192);

			pushFollow(FOLLOW_expr_in_joint_invariant_statement2084);
			expr193=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(expr193.getTree());
			SEMI194=(Token)match(input,SEMI,FOLLOW_SEMI_in_joint_invariant_statement2086); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SEMI.add(SEMI194);

			// AST REWRITE
			// elements: SEMI, IDENTIFIER, expr
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 341:41: -> ^( JOINT_INVARIANT_STMT IDENTIFIER expr SEMI )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:341:44: ^( JOINT_INVARIANT_STMT IDENTIFIER expr SEMI )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(JOINT_INVARIANT_STMT, "JOINT_INVARIANT_STMT"), root_1);
				adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
				adaptor.addChild(root_1, stream_expr.nextTree());
				adaptor.addChild(root_1, stream_SEMI.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "joint_invariant_statement"


	public static class compound_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "compound_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:350:1: compound_statement : LCURLY ( statement_list )? RCURLY -> ^( COMPOUND_STMT LCURLY ( statement_list )? RCURLY ) ;
	public final PragmaStringParser.compound_statement_return compound_statement() throws RecognitionException {
		PragmaStringParser.compound_statement_return retval = new PragmaStringParser.compound_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LCURLY195=null;
		Token RCURLY197=null;
		ParserRuleReturnScope statement_list196 =null;

		Object LCURLY195_tree=null;
		Object RCURLY197_tree=null;
		RewriteRuleTokenStream stream_LCURLY=new RewriteRuleTokenStream(adaptor,"token LCURLY");
		RewriteRuleTokenStream stream_RCURLY=new RewriteRuleTokenStream(adaptor,"token RCURLY");
		RewriteRuleSubtreeStream stream_statement_list=new RewriteRuleSubtreeStream(adaptor,"rule statement_list");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:351:2: ( LCURLY ( statement_list )? RCURLY -> ^( COMPOUND_STMT LCURLY ( statement_list )? RCURLY ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:351:4: LCURLY ( statement_list )? RCURLY
			{
			LCURLY195=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_compound_statement2111); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY195);

			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:351:11: ( statement_list )?
			int alt47=2;
			int LA47_0 = input.LA(1);
			if ( (LA47_0==ADDR_OF||LA47_0==ASSERT||LA47_0==ASSUME||LA47_0==CHAR_LITERAL||LA47_0==COLLECTIVE||LA47_0==DERIVATIVE||(LA47_0 >= DOUBLE_PLUS && LA47_0 <= DOUBLE_SUB)||LA47_0==EXISTS||LA47_0==FALSE||(LA47_0 >= FOR && LA47_0 <= FORALL)||(LA47_0 >= IDENTIFIER && LA47_0 <= IF)||(LA47_0 >= INT_LITERAL && LA47_0 <= INVARIANT)||LA47_0==JOINT||LA47_0==LCURLY||LA47_0==LPAREN||LA47_0==MULTI||LA47_0==NOT||LA47_0==PLUS||(LA47_0 >= REAL_LITERAL && LA47_0 <= RECV)||LA47_0==RETURN||LA47_0==SELECT||(LA47_0 >= SEMI && LA47_0 <= SEND)||LA47_0==SIZEOF||LA47_0==SPEC||LA47_0==STRING_LITERAL||LA47_0==SUB||LA47_0==SYS_VAR||LA47_0==TRUE||LA47_0==WHILE) ) {
				alt47=1;
			}
			switch (alt47) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:351:11: statement_list
					{
					pushFollow(FOLLOW_statement_list_in_compound_statement2113);
					statement_list196=statement_list();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement_list.add(statement_list196.getTree());
					}
					break;

			}

			RCURLY197=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_compound_statement2116); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY197);

			// AST REWRITE
			// elements: LCURLY, statement_list, RCURLY
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 352:3: -> ^( COMPOUND_STMT LCURLY ( statement_list )? RCURLY )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:352:6: ^( COMPOUND_STMT LCURLY ( statement_list )? RCURLY )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COMPOUND_STMT, "COMPOUND_STMT"), root_1);
				adaptor.addChild(root_1, stream_LCURLY.nextNode());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:352:29: ( statement_list )?
				if ( stream_statement_list.hasNext() ) {
					adaptor.addChild(root_1, stream_statement_list.nextTree());
				}
				stream_statement_list.reset();

				adaptor.addChild(root_1, stream_RCURLY.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "compound_statement"


	public static class condition_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "condition_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:355:1: condition_statement : IF LPAREN expr RPAREN statement ( ELSE statement )? -> ^( CONDITION_STMT IF LPAREN expr RPAREN statement ( ELSE statement )? ) ;
	public final PragmaStringParser.condition_statement_return condition_statement() throws RecognitionException {
		PragmaStringParser.condition_statement_return retval = new PragmaStringParser.condition_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token IF198=null;
		Token LPAREN199=null;
		Token RPAREN201=null;
		Token ELSE203=null;
		ParserRuleReturnScope expr200 =null;
		ParserRuleReturnScope statement202 =null;
		ParserRuleReturnScope statement204 =null;

		Object IF198_tree=null;
		Object LPAREN199_tree=null;
		Object RPAREN201_tree=null;
		Object ELSE203_tree=null;
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleTokenStream stream_IF=new RewriteRuleTokenStream(adaptor,"token IF");
		RewriteRuleTokenStream stream_ELSE=new RewriteRuleTokenStream(adaptor,"token ELSE");
		RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:356:2: ( IF LPAREN expr RPAREN statement ( ELSE statement )? -> ^( CONDITION_STMT IF LPAREN expr RPAREN statement ( ELSE statement )? ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:356:4: IF LPAREN expr RPAREN statement ( ELSE statement )?
			{
			IF198=(Token)match(input,IF,FOLLOW_IF_in_condition_statement2143); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_IF.add(IF198);

			LPAREN199=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_condition_statement2145); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN199);

			pushFollow(FOLLOW_expr_in_condition_statement2147);
			expr200=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(expr200.getTree());
			RPAREN201=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_condition_statement2149); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN201);

			pushFollow(FOLLOW_statement_in_condition_statement2151);
			statement202=statement();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_statement.add(statement202.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:356:36: ( ELSE statement )?
			int alt48=2;
			int LA48_0 = input.LA(1);
			if ( (LA48_0==ELSE) ) {
				int LA48_1 = input.LA(2);
				if ( (synpred80_PragmaString()) ) {
					alt48=1;
				}
			}
			switch (alt48) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:356:37: ELSE statement
					{
					ELSE203=(Token)match(input,ELSE,FOLLOW_ELSE_in_condition_statement2154); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ELSE.add(ELSE203);

					pushFollow(FOLLOW_statement_in_condition_statement2156);
					statement204=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(statement204.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: IF, statement, RPAREN, statement, expr, LPAREN, ELSE
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 357:3: -> ^( CONDITION_STMT IF LPAREN expr RPAREN statement ( ELSE statement )? )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:357:6: ^( CONDITION_STMT IF LPAREN expr RPAREN statement ( ELSE statement )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONDITION_STMT, "CONDITION_STMT"), root_1);
				adaptor.addChild(root_1, stream_IF.nextNode());
				adaptor.addChild(root_1, stream_LPAREN.nextNode());
				adaptor.addChild(root_1, stream_expr.nextTree());
				adaptor.addChild(root_1, stream_RPAREN.nextNode());
				adaptor.addChild(root_1, stream_statement.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:357:55: ( ELSE statement )?
				if ( stream_statement.hasNext()||stream_ELSE.hasNext() ) {
					adaptor.addChild(root_1, stream_ELSE.nextNode());
					adaptor.addChild(root_1, stream_statement.nextTree());
				}
				stream_statement.reset();
				stream_ELSE.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "condition_statement"


	public static class select_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "select_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:360:1: select_statement : SELECT LCURLY ( choice )+ RCURLY -> ^( SELECT_STMT SELECT ( choice )+ ) ;
	public final PragmaStringParser.select_statement_return select_statement() throws RecognitionException {
		PragmaStringParser.select_statement_return retval = new PragmaStringParser.select_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token SELECT205=null;
		Token LCURLY206=null;
		Token RCURLY208=null;
		ParserRuleReturnScope choice207 =null;

		Object SELECT205_tree=null;
		Object LCURLY206_tree=null;
		Object RCURLY208_tree=null;
		RewriteRuleTokenStream stream_LCURLY=new RewriteRuleTokenStream(adaptor,"token LCURLY");
		RewriteRuleTokenStream stream_SELECT=new RewriteRuleTokenStream(adaptor,"token SELECT");
		RewriteRuleTokenStream stream_RCURLY=new RewriteRuleTokenStream(adaptor,"token RCURLY");
		RewriteRuleSubtreeStream stream_choice=new RewriteRuleSubtreeStream(adaptor,"rule choice");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:361:2: ( SELECT LCURLY ( choice )+ RCURLY -> ^( SELECT_STMT SELECT ( choice )+ ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:361:4: SELECT LCURLY ( choice )+ RCURLY
			{
			SELECT205=(Token)match(input,SELECT,FOLLOW_SELECT_in_select_statement2195); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SELECT.add(SELECT205);

			LCURLY206=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_select_statement2197); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY206);

			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:361:18: ( choice )+
			int cnt49=0;
			loop49:
			while (true) {
				int alt49=2;
				int LA49_0 = input.LA(1);
				if ( (LA49_0==WHEN) ) {
					alt49=1;
				}

				switch (alt49) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:361:18: choice
					{
					pushFollow(FOLLOW_choice_in_select_statement2199);
					choice207=choice();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_choice.add(choice207.getTree());
					}
					break;

				default :
					if ( cnt49 >= 1 ) break loop49;
					if (state.backtracking>0) {state.failed=true; return retval;}
					EarlyExitException eee = new EarlyExitException(49, input);
					throw eee;
				}
				cnt49++;
			}

			RCURLY208=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_select_statement2202); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY208);

			// AST REWRITE
			// elements: SELECT, choice
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 361:33: -> ^( SELECT_STMT SELECT ( choice )+ )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:361:36: ^( SELECT_STMT SELECT ( choice )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SELECT_STMT, "SELECT_STMT"), root_1);
				adaptor.addChild(root_1, stream_SELECT.nextNode());
				if ( !(stream_choice.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_choice.hasNext() ) {
					adaptor.addChild(root_1, stream_choice.nextTree());
				}
				stream_choice.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "select_statement"


	public static class choice_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "choice"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:364:1: choice : WHEN LPAREN expr RPAREN statement -> ^( CHOICE WHEN LPAREN expr RPAREN statement ) ;
	public final PragmaStringParser.choice_return choice() throws RecognitionException {
		PragmaStringParser.choice_return retval = new PragmaStringParser.choice_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token WHEN209=null;
		Token LPAREN210=null;
		Token RPAREN212=null;
		ParserRuleReturnScope expr211 =null;
		ParserRuleReturnScope statement213 =null;

		Object WHEN209_tree=null;
		Object LPAREN210_tree=null;
		Object RPAREN212_tree=null;
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_WHEN=new RewriteRuleTokenStream(adaptor,"token WHEN");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:365:2: ( WHEN LPAREN expr RPAREN statement -> ^( CHOICE WHEN LPAREN expr RPAREN statement ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:365:4: WHEN LPAREN expr RPAREN statement
			{
			WHEN209=(Token)match(input,WHEN,FOLLOW_WHEN_in_choice2224); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_WHEN.add(WHEN209);

			LPAREN210=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_choice2226); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN210);

			pushFollow(FOLLOW_expr_in_choice2228);
			expr211=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(expr211.getTree());
			RPAREN212=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_choice2230); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN212);

			pushFollow(FOLLOW_statement_in_choice2232);
			statement213=statement();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_statement.add(statement213.getTree());
			// AST REWRITE
			// elements: RPAREN, expr, WHEN, statement, LPAREN
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 365:38: -> ^( CHOICE WHEN LPAREN expr RPAREN statement )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:365:41: ^( CHOICE WHEN LPAREN expr RPAREN statement )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CHOICE, "CHOICE"), root_1);
				adaptor.addChild(root_1, stream_WHEN.nextNode());
				adaptor.addChild(root_1, stream_LPAREN.nextNode());
				adaptor.addChild(root_1, stream_expr.nextTree());
				adaptor.addChild(root_1, stream_RPAREN.nextNode());
				adaptor.addChild(root_1, stream_statement.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "choice"


	public static class iterative_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "iterative_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:368:1: iterative_statement : ( correspondence_annotation )? loop_statement -> ^( ITERATIVE_STMT ( correspondence_annotation )? loop_statement ) ;
	public final PragmaStringParser.iterative_statement_return iterative_statement() throws RecognitionException {
		PragmaStringParser.iterative_statement_return retval = new PragmaStringParser.iterative_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope correspondence_annotation214 =null;
		ParserRuleReturnScope loop_statement215 =null;

		RewriteRuleSubtreeStream stream_correspondence_annotation=new RewriteRuleSubtreeStream(adaptor,"rule correspondence_annotation");
		RewriteRuleSubtreeStream stream_loop_statement=new RewriteRuleSubtreeStream(adaptor,"rule loop_statement");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:369:2: ( ( correspondence_annotation )? loop_statement -> ^( ITERATIVE_STMT ( correspondence_annotation )? loop_statement ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:369:4: ( correspondence_annotation )? loop_statement
			{
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:369:4: ( correspondence_annotation )?
			int alt50=2;
			int LA50_0 = input.LA(1);
			if ( (LA50_0==IDENTIFIER) ) {
				alt50=1;
			}
			switch (alt50) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:369:5: correspondence_annotation
					{
					pushFollow(FOLLOW_correspondence_annotation_in_iterative_statement2261);
					correspondence_annotation214=correspondence_annotation();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_correspondence_annotation.add(correspondence_annotation214.getTree());
					}
					break;

			}

			pushFollow(FOLLOW_loop_statement_in_iterative_statement2265);
			loop_statement215=loop_statement();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_loop_statement.add(loop_statement215.getTree());
			// AST REWRITE
			// elements: correspondence_annotation, loop_statement
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 370:3: -> ^( ITERATIVE_STMT ( correspondence_annotation )? loop_statement )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:370:6: ^( ITERATIVE_STMT ( correspondence_annotation )? loop_statement )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ITERATIVE_STMT, "ITERATIVE_STMT"), root_1);
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:370:23: ( correspondence_annotation )?
				if ( stream_correspondence_annotation.hasNext() ) {
					adaptor.addChild(root_1, stream_correspondence_annotation.nextTree());
				}
				stream_correspondence_annotation.reset();

				adaptor.addChild(root_1, stream_loop_statement.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "iterative_statement"


	public static class loop_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "loop_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:373:1: loop_statement : ( WHILE LPAREN expr RPAREN statement -> ^( WHILE_STMT WHILE LPAREN expr RPAREN statement ) | FOR LPAREN (init= expr )? SEMI (pred= expr )? SEMI (update= expr )? RPAREN statement -> ^( FOR_STMT FOR ( $init)? SEMI ( $pred)? SEMI ( $update)? RPAREN statement ) );
	public final PragmaStringParser.loop_statement_return loop_statement() throws RecognitionException {
		PragmaStringParser.loop_statement_return retval = new PragmaStringParser.loop_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token WHILE216=null;
		Token LPAREN217=null;
		Token RPAREN219=null;
		Token FOR221=null;
		Token LPAREN222=null;
		Token SEMI223=null;
		Token SEMI224=null;
		Token RPAREN225=null;
		ParserRuleReturnScope init =null;
		ParserRuleReturnScope pred =null;
		ParserRuleReturnScope update =null;
		ParserRuleReturnScope expr218 =null;
		ParserRuleReturnScope statement220 =null;
		ParserRuleReturnScope statement226 =null;

		Object WHILE216_tree=null;
		Object LPAREN217_tree=null;
		Object RPAREN219_tree=null;
		Object FOR221_tree=null;
		Object LPAREN222_tree=null;
		Object SEMI223_tree=null;
		Object SEMI224_tree=null;
		Object RPAREN225_tree=null;
		RewriteRuleTokenStream stream_FOR=new RewriteRuleTokenStream(adaptor,"token FOR");
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_WHILE=new RewriteRuleTokenStream(adaptor,"token WHILE");
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleSubtreeStream stream_statement=new RewriteRuleSubtreeStream(adaptor,"rule statement");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:374:2: ( WHILE LPAREN expr RPAREN statement -> ^( WHILE_STMT WHILE LPAREN expr RPAREN statement ) | FOR LPAREN (init= expr )? SEMI (pred= expr )? SEMI (update= expr )? RPAREN statement -> ^( FOR_STMT FOR ( $init)? SEMI ( $pred)? SEMI ( $update)? RPAREN statement ) )
			int alt54=2;
			int LA54_0 = input.LA(1);
			if ( (LA54_0==WHILE) ) {
				alt54=1;
			}
			else if ( (LA54_0==FOR) ) {
				alt54=2;
			}

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

			switch (alt54) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:374:4: WHILE LPAREN expr RPAREN statement
					{
					WHILE216=(Token)match(input,WHILE,FOLLOW_WHILE_in_loop_statement2290); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_WHILE.add(WHILE216);

					LPAREN217=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_loop_statement2292); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN217);

					pushFollow(FOLLOW_expr_in_loop_statement2294);
					expr218=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr218.getTree());
					RPAREN219=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_loop_statement2296); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN219);

					pushFollow(FOLLOW_statement_in_loop_statement2298);
					statement220=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(statement220.getTree());
					// AST REWRITE
					// elements: RPAREN, statement, WHILE, expr, LPAREN
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 375:3: -> ^( WHILE_STMT WHILE LPAREN expr RPAREN statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:375:6: ^( WHILE_STMT WHILE LPAREN expr RPAREN statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(WHILE_STMT, "WHILE_STMT"), root_1);
						adaptor.addChild(root_1, stream_WHILE.nextNode());
						adaptor.addChild(root_1, stream_LPAREN.nextNode());
						adaptor.addChild(root_1, stream_expr.nextTree());
						adaptor.addChild(root_1, stream_RPAREN.nextNode());
						adaptor.addChild(root_1, stream_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:376:4: FOR LPAREN (init= expr )? SEMI (pred= expr )? SEMI (update= expr )? RPAREN statement
					{
					FOR221=(Token)match(input,FOR,FOLLOW_FOR_in_loop_statement2321); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_FOR.add(FOR221);

					LPAREN222=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_loop_statement2323); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN222);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:376:19: (init= expr )?
					int alt51=2;
					int LA51_0 = input.LA(1);
					if ( (LA51_0==ADDR_OF||LA51_0==CHAR_LITERAL||LA51_0==DERIVATIVE||(LA51_0 >= DOUBLE_PLUS && LA51_0 <= DOUBLE_SUB)||LA51_0==EXISTS||LA51_0==FALSE||LA51_0==FORALL||LA51_0==IDENTIFIER||LA51_0==INT_LITERAL||LA51_0==LPAREN||LA51_0==MULTI||LA51_0==NOT||LA51_0==PLUS||LA51_0==REAL_LITERAL||LA51_0==SIZEOF||LA51_0==SPEC||LA51_0==STRING_LITERAL||LA51_0==SUB||LA51_0==SYS_VAR||LA51_0==TRUE) ) {
						alt51=1;
					}
					switch (alt51) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:376:19: init= expr
							{
							pushFollow(FOLLOW_expr_in_loop_statement2327);
							init=expr();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expr.add(init.getTree());
							}
							break;

					}

					SEMI223=(Token)match(input,SEMI,FOLLOW_SEMI_in_loop_statement2330); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SEMI.add(SEMI223);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:376:35: (pred= expr )?
					int alt52=2;
					int LA52_0 = input.LA(1);
					if ( (LA52_0==ADDR_OF||LA52_0==CHAR_LITERAL||LA52_0==DERIVATIVE||(LA52_0 >= DOUBLE_PLUS && LA52_0 <= DOUBLE_SUB)||LA52_0==EXISTS||LA52_0==FALSE||LA52_0==FORALL||LA52_0==IDENTIFIER||LA52_0==INT_LITERAL||LA52_0==LPAREN||LA52_0==MULTI||LA52_0==NOT||LA52_0==PLUS||LA52_0==REAL_LITERAL||LA52_0==SIZEOF||LA52_0==SPEC||LA52_0==STRING_LITERAL||LA52_0==SUB||LA52_0==SYS_VAR||LA52_0==TRUE) ) {
						alt52=1;
					}
					switch (alt52) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:376:35: pred= expr
							{
							pushFollow(FOLLOW_expr_in_loop_statement2334);
							pred=expr();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expr.add(pred.getTree());
							}
							break;

					}

					SEMI224=(Token)match(input,SEMI,FOLLOW_SEMI_in_loop_statement2337); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SEMI.add(SEMI224);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:376:53: (update= expr )?
					int alt53=2;
					int LA53_0 = input.LA(1);
					if ( (LA53_0==ADDR_OF||LA53_0==CHAR_LITERAL||LA53_0==DERIVATIVE||(LA53_0 >= DOUBLE_PLUS && LA53_0 <= DOUBLE_SUB)||LA53_0==EXISTS||LA53_0==FALSE||LA53_0==FORALL||LA53_0==IDENTIFIER||LA53_0==INT_LITERAL||LA53_0==LPAREN||LA53_0==MULTI||LA53_0==NOT||LA53_0==PLUS||LA53_0==REAL_LITERAL||LA53_0==SIZEOF||LA53_0==SPEC||LA53_0==STRING_LITERAL||LA53_0==SUB||LA53_0==SYS_VAR||LA53_0==TRUE) ) {
						alt53=1;
					}
					switch (alt53) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:376:53: update= expr
							{
							pushFollow(FOLLOW_expr_in_loop_statement2341);
							update=expr();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expr.add(update.getTree());
							}
							break;

					}

					RPAREN225=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_loop_statement2344); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN225);

					pushFollow(FOLLOW_statement_in_loop_statement2346);
					statement226=statement();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_statement.add(statement226.getTree());
					// AST REWRITE
					// elements: update, pred, init, FOR, SEMI, statement, RPAREN, SEMI
					// token labels: 
					// rule labels: update, retval, init, pred
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_update=new RewriteRuleSubtreeStream(adaptor,"rule update",update!=null?update.getTree():null);
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_init=new RewriteRuleSubtreeStream(adaptor,"rule init",init!=null?init.getTree():null);
					RewriteRuleSubtreeStream stream_pred=new RewriteRuleSubtreeStream(adaptor,"rule pred",pred!=null?pred.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 377:3: -> ^( FOR_STMT FOR ( $init)? SEMI ( $pred)? SEMI ( $update)? RPAREN statement )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:377:6: ^( FOR_STMT FOR ( $init)? SEMI ( $pred)? SEMI ( $update)? RPAREN statement )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(FOR_STMT, "FOR_STMT"), root_1);
						adaptor.addChild(root_1, stream_FOR.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:377:22: ( $init)?
						if ( stream_init.hasNext() ) {
							adaptor.addChild(root_1, stream_init.nextTree());
						}
						stream_init.reset();

						adaptor.addChild(root_1, stream_SEMI.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:377:34: ( $pred)?
						if ( stream_pred.hasNext() ) {
							adaptor.addChild(root_1, stream_pred.nextTree());
						}
						stream_pred.reset();

						adaptor.addChild(root_1, stream_SEMI.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:377:46: ( $update)?
						if ( stream_update.hasNext() ) {
							adaptor.addChild(root_1, stream_update.nextTree());
						}
						stream_update.reset();

						adaptor.addChild(root_1, stream_RPAREN.nextNode());
						adaptor.addChild(root_1, stream_statement.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "loop_statement"


	public static class correspondence_annotation_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "correspondence_annotation"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:380:1: correspondence_annotation : ( IDENTIFIER COLON ( PRAGMA TASS JOINT INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY )? -> ^( CORRESPONDENCE IDENTIFIER ( IDENTIFIER ( skew_factor )? expr )? COLON ) | IDENTIFIER COLON ( PRAGMA TASS INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY )? -> ^( CORRESPONDENCE IDENTIFIER ( IDENTIFIER ( skew_factor )? expr )? COLON ) );
	public final PragmaStringParser.correspondence_annotation_return correspondence_annotation() throws RecognitionException {
		PragmaStringParser.correspondence_annotation_return retval = new PragmaStringParser.correspondence_annotation_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token IDENTIFIER227=null;
		Token COLON228=null;
		Token PRAGMA229=null;
		Token TASS230=null;
		Token JOINT231=null;
		Token INVARIANT232=null;
		Token AT233=null;
		Token IDENTIFIER234=null;
		Token LCURLY235=null;
		Token RCURLY238=null;
		Token IDENTIFIER239=null;
		Token COLON240=null;
		Token PRAGMA241=null;
		Token TASS242=null;
		Token INVARIANT243=null;
		Token AT244=null;
		Token IDENTIFIER245=null;
		Token LCURLY246=null;
		Token RCURLY249=null;
		ParserRuleReturnScope skew_factor236 =null;
		ParserRuleReturnScope expr237 =null;
		ParserRuleReturnScope skew_factor247 =null;
		ParserRuleReturnScope expr248 =null;

		Object IDENTIFIER227_tree=null;
		Object COLON228_tree=null;
		Object PRAGMA229_tree=null;
		Object TASS230_tree=null;
		Object JOINT231_tree=null;
		Object INVARIANT232_tree=null;
		Object AT233_tree=null;
		Object IDENTIFIER234_tree=null;
		Object LCURLY235_tree=null;
		Object RCURLY238_tree=null;
		Object IDENTIFIER239_tree=null;
		Object COLON240_tree=null;
		Object PRAGMA241_tree=null;
		Object TASS242_tree=null;
		Object INVARIANT243_tree=null;
		Object AT244_tree=null;
		Object IDENTIFIER245_tree=null;
		Object LCURLY246_tree=null;
		Object RCURLY249_tree=null;
		RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
		RewriteRuleTokenStream stream_AT=new RewriteRuleTokenStream(adaptor,"token AT");
		RewriteRuleTokenStream stream_LCURLY=new RewriteRuleTokenStream(adaptor,"token LCURLY");
		RewriteRuleTokenStream stream_JOINT=new RewriteRuleTokenStream(adaptor,"token JOINT");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_TASS=new RewriteRuleTokenStream(adaptor,"token TASS");
		RewriteRuleTokenStream stream_RCURLY=new RewriteRuleTokenStream(adaptor,"token RCURLY");
		RewriteRuleTokenStream stream_PRAGMA=new RewriteRuleTokenStream(adaptor,"token PRAGMA");
		RewriteRuleTokenStream stream_INVARIANT=new RewriteRuleTokenStream(adaptor,"token INVARIANT");
		RewriteRuleSubtreeStream stream_skew_factor=new RewriteRuleSubtreeStream(adaptor,"rule skew_factor");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:381:2: ( IDENTIFIER COLON ( PRAGMA TASS JOINT INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY )? -> ^( CORRESPONDENCE IDENTIFIER ( IDENTIFIER ( skew_factor )? expr )? COLON ) | IDENTIFIER COLON ( PRAGMA TASS INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY )? -> ^( CORRESPONDENCE IDENTIFIER ( IDENTIFIER ( skew_factor )? expr )? COLON ) )
			int alt59=2;
			int LA59_0 = input.LA(1);
			if ( (LA59_0==IDENTIFIER) ) {
				int LA59_1 = input.LA(2);
				if ( (LA59_1==COLON) ) {
					int LA59_2 = input.LA(3);
					if ( (synpred89_PragmaString()) ) {
						alt59=1;
					}
					else if ( (true) ) {
						alt59=2;
					}

				}

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

			}

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

			switch (alt59) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:381:4: IDENTIFIER COLON ( PRAGMA TASS JOINT INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY )?
					{
					IDENTIFIER227=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_correspondence_annotation2388); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER227);

					COLON228=(Token)match(input,COLON,FOLLOW_COLON_in_correspondence_annotation2390); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COLON.add(COLON228);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:381:21: ( PRAGMA TASS JOINT INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY )?
					int alt56=2;
					int LA56_0 = input.LA(1);
					if ( (LA56_0==PRAGMA) ) {
						alt56=1;
					}
					switch (alt56) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:381:22: PRAGMA TASS JOINT INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY
							{
							PRAGMA229=(Token)match(input,PRAGMA,FOLLOW_PRAGMA_in_correspondence_annotation2393); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_PRAGMA.add(PRAGMA229);

							TASS230=(Token)match(input,TASS,FOLLOW_TASS_in_correspondence_annotation2395); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_TASS.add(TASS230);

							JOINT231=(Token)match(input,JOINT,FOLLOW_JOINT_in_correspondence_annotation2397); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_JOINT.add(JOINT231);

							INVARIANT232=(Token)match(input,INVARIANT,FOLLOW_INVARIANT_in_correspondence_annotation2399); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_INVARIANT.add(INVARIANT232);

							AT233=(Token)match(input,AT,FOLLOW_AT_in_correspondence_annotation2401); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_AT.add(AT233);

							IDENTIFIER234=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_correspondence_annotation2403); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER234);

							LCURLY235=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_correspondence_annotation2405); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY235);

							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:381:71: ( skew_factor )?
							int alt55=2;
							int LA55_0 = input.LA(1);
							if ( (LA55_0==INT_LITERAL) ) {
								int LA55_1 = input.LA(2);
								if ( (LA55_1==COLON) ) {
									alt55=1;
								}
							}
							switch (alt55) {
								case 1 :
									// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:381:71: skew_factor
									{
									pushFollow(FOLLOW_skew_factor_in_correspondence_annotation2407);
									skew_factor236=skew_factor();
									state._fsp--;
									if (state.failed) return retval;
									if ( state.backtracking==0 ) stream_skew_factor.add(skew_factor236.getTree());
									}
									break;

							}

							pushFollow(FOLLOW_expr_in_correspondence_annotation2410);
							expr237=expr();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expr.add(expr237.getTree());
							RCURLY238=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_correspondence_annotation2412); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY238);

							}
							break;

					}

					// AST REWRITE
					// elements: expr, IDENTIFIER, skew_factor, IDENTIFIER, COLON
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 382:3: -> ^( CORRESPONDENCE IDENTIFIER ( IDENTIFIER ( skew_factor )? expr )? COLON )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:382:6: ^( CORRESPONDENCE IDENTIFIER ( IDENTIFIER ( skew_factor )? expr )? COLON )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CORRESPONDENCE, "CORRESPONDENCE"), root_1);
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:382:34: ( IDENTIFIER ( skew_factor )? expr )?
						if ( stream_expr.hasNext()||stream_skew_factor.hasNext()||stream_IDENTIFIER.hasNext() ) {
							adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:382:46: ( skew_factor )?
							if ( stream_skew_factor.hasNext() ) {
								adaptor.addChild(root_1, stream_skew_factor.nextTree());
							}
							stream_skew_factor.reset();

							adaptor.addChild(root_1, stream_expr.nextTree());
						}
						stream_expr.reset();
						stream_skew_factor.reset();
						stream_IDENTIFIER.reset();

						adaptor.addChild(root_1, stream_COLON.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:383:4: IDENTIFIER COLON ( PRAGMA TASS INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY )?
					{
					IDENTIFIER239=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_correspondence_annotation2441); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER239);

					COLON240=(Token)match(input,COLON,FOLLOW_COLON_in_correspondence_annotation2443); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COLON.add(COLON240);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:383:21: ( PRAGMA TASS INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY )?
					int alt58=2;
					int LA58_0 = input.LA(1);
					if ( (LA58_0==PRAGMA) ) {
						alt58=1;
					}
					switch (alt58) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:383:22: PRAGMA TASS INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY
							{
							PRAGMA241=(Token)match(input,PRAGMA,FOLLOW_PRAGMA_in_correspondence_annotation2446); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_PRAGMA.add(PRAGMA241);

							TASS242=(Token)match(input,TASS,FOLLOW_TASS_in_correspondence_annotation2448); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_TASS.add(TASS242);

							INVARIANT243=(Token)match(input,INVARIANT,FOLLOW_INVARIANT_in_correspondence_annotation2450); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_INVARIANT.add(INVARIANT243);

							AT244=(Token)match(input,AT,FOLLOW_AT_in_correspondence_annotation2452); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_AT.add(AT244);

							IDENTIFIER245=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_correspondence_annotation2454); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER245);

							LCURLY246=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_correspondence_annotation2456); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY246);

							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:383:65: ( skew_factor )?
							int alt57=2;
							int LA57_0 = input.LA(1);
							if ( (LA57_0==INT_LITERAL) ) {
								int LA57_1 = input.LA(2);
								if ( (LA57_1==COLON) ) {
									alt57=1;
								}
							}
							switch (alt57) {
								case 1 :
									// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:383:65: skew_factor
									{
									pushFollow(FOLLOW_skew_factor_in_correspondence_annotation2458);
									skew_factor247=skew_factor();
									state._fsp--;
									if (state.failed) return retval;
									if ( state.backtracking==0 ) stream_skew_factor.add(skew_factor247.getTree());
									}
									break;

							}

							pushFollow(FOLLOW_expr_in_correspondence_annotation2461);
							expr248=expr();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_expr.add(expr248.getTree());
							RCURLY249=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_correspondence_annotation2463); if (state.failed) return retval; 
							if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY249);

							}
							break;

					}

					// AST REWRITE
					// elements: IDENTIFIER, IDENTIFIER, expr, COLON, skew_factor
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 384:3: -> ^( CORRESPONDENCE IDENTIFIER ( IDENTIFIER ( skew_factor )? expr )? COLON )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:384:6: ^( CORRESPONDENCE IDENTIFIER ( IDENTIFIER ( skew_factor )? expr )? COLON )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CORRESPONDENCE, "CORRESPONDENCE"), root_1);
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:384:34: ( IDENTIFIER ( skew_factor )? expr )?
						if ( stream_IDENTIFIER.hasNext()||stream_expr.hasNext()||stream_skew_factor.hasNext() ) {
							adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:384:46: ( skew_factor )?
							if ( stream_skew_factor.hasNext() ) {
								adaptor.addChild(root_1, stream_skew_factor.nextTree());
							}
							stream_skew_factor.reset();

							adaptor.addChild(root_1, stream_expr.nextTree());
						}
						stream_IDENTIFIER.reset();
						stream_expr.reset();
						stream_skew_factor.reset();

						adaptor.addChild(root_1, stream_COLON.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "correspondence_annotation"


	public static class skew_factor_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "skew_factor"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:387:1: skew_factor : INT_LITERAL COLON INT_LITERAL -> ^( SKEW_FACTOR INT_LITERAL INT_LITERAL ) ;
	public final PragmaStringParser.skew_factor_return skew_factor() throws RecognitionException {
		PragmaStringParser.skew_factor_return retval = new PragmaStringParser.skew_factor_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token INT_LITERAL250=null;
		Token COLON251=null;
		Token INT_LITERAL252=null;

		Object INT_LITERAL250_tree=null;
		Object COLON251_tree=null;
		Object INT_LITERAL252_tree=null;
		RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
		RewriteRuleTokenStream stream_INT_LITERAL=new RewriteRuleTokenStream(adaptor,"token INT_LITERAL");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:388:2: ( INT_LITERAL COLON INT_LITERAL -> ^( SKEW_FACTOR INT_LITERAL INT_LITERAL ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:388:4: INT_LITERAL COLON INT_LITERAL
			{
			INT_LITERAL250=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_skew_factor2499); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_INT_LITERAL.add(INT_LITERAL250);

			COLON251=(Token)match(input,COLON,FOLLOW_COLON_in_skew_factor2501); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_COLON.add(COLON251);

			INT_LITERAL252=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_skew_factor2503); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_INT_LITERAL.add(INT_LITERAL252);

			// AST REWRITE
			// elements: INT_LITERAL, INT_LITERAL
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 388:34: -> ^( SKEW_FACTOR INT_LITERAL INT_LITERAL )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:388:37: ^( SKEW_FACTOR INT_LITERAL INT_LITERAL )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SKEW_FACTOR, "SKEW_FACTOR"), root_1);
				adaptor.addChild(root_1, stream_INT_LITERAL.nextNode());
				adaptor.addChild(root_1, stream_INT_LITERAL.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "skew_factor"


	public static class return_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "return_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:391:1: return_statement : RETURN ( expr )? SEMI -> ^( RETURN_STMT RETURN ( expr )? SEMI ) ;
	public final PragmaStringParser.return_statement_return return_statement() throws RecognitionException {
		PragmaStringParser.return_statement_return retval = new PragmaStringParser.return_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token RETURN253=null;
		Token SEMI255=null;
		ParserRuleReturnScope expr254 =null;

		Object RETURN253_tree=null;
		Object SEMI255_tree=null;
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleTokenStream stream_RETURN=new RewriteRuleTokenStream(adaptor,"token RETURN");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:392:2: ( RETURN ( expr )? SEMI -> ^( RETURN_STMT RETURN ( expr )? SEMI ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:392:4: RETURN ( expr )? SEMI
			{
			RETURN253=(Token)match(input,RETURN,FOLLOW_RETURN_in_return_statement2525); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RETURN.add(RETURN253);

			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:392:11: ( expr )?
			int alt60=2;
			int LA60_0 = input.LA(1);
			if ( (LA60_0==ADDR_OF||LA60_0==CHAR_LITERAL||LA60_0==DERIVATIVE||(LA60_0 >= DOUBLE_PLUS && LA60_0 <= DOUBLE_SUB)||LA60_0==EXISTS||LA60_0==FALSE||LA60_0==FORALL||LA60_0==IDENTIFIER||LA60_0==INT_LITERAL||LA60_0==LPAREN||LA60_0==MULTI||LA60_0==NOT||LA60_0==PLUS||LA60_0==REAL_LITERAL||LA60_0==SIZEOF||LA60_0==SPEC||LA60_0==STRING_LITERAL||LA60_0==SUB||LA60_0==SYS_VAR||LA60_0==TRUE) ) {
				alt60=1;
			}
			switch (alt60) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:392:11: expr
					{
					pushFollow(FOLLOW_expr_in_return_statement2527);
					expr254=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr254.getTree());
					}
					break;

			}

			SEMI255=(Token)match(input,SEMI,FOLLOW_SEMI_in_return_statement2530); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SEMI.add(SEMI255);

			// AST REWRITE
			// elements: SEMI, RETURN, expr
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 392:22: -> ^( RETURN_STMT RETURN ( expr )? SEMI )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:392:25: ^( RETURN_STMT RETURN ( expr )? SEMI )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(RETURN_STMT, "RETURN_STMT"), root_1);
				adaptor.addChild(root_1, stream_RETURN.nextNode());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:392:46: ( expr )?
				if ( stream_expr.hasNext() ) {
					adaptor.addChild(root_1, stream_expr.nextTree());
				}
				stream_expr.reset();

				adaptor.addChild(root_1, stream_SEMI.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "return_statement"


	public static class empty_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "empty_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:395:1: empty_statement : SEMI -> ^( EMPTY_STMT SEMI ) ;
	public final PragmaStringParser.empty_statement_return empty_statement() throws RecognitionException {
		PragmaStringParser.empty_statement_return retval = new PragmaStringParser.empty_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token SEMI256=null;

		Object SEMI256_tree=null;
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:396:2: ( SEMI -> ^( EMPTY_STMT SEMI ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:396:4: SEMI
			{
			SEMI256=(Token)match(input,SEMI,FOLLOW_SEMI_in_empty_statement2555); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SEMI.add(SEMI256);

			// AST REWRITE
			// elements: SEMI
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 396:9: -> ^( EMPTY_STMT SEMI )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:396:12: ^( EMPTY_STMT SEMI )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EMPTY_STMT, "EMPTY_STMT"), root_1);
				adaptor.addChild(root_1, stream_SEMI.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "empty_statement"


	public static class send_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "send_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:399:1: send_statement : SEND LPAREN data= expr COMMA dest= expr COMMA tag= expr RPAREN SEMI -> ^( SEND_STMT SEND $data $dest $tag SEMI ) ;
	public final PragmaStringParser.send_statement_return send_statement() throws RecognitionException {
		PragmaStringParser.send_statement_return retval = new PragmaStringParser.send_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token SEND257=null;
		Token LPAREN258=null;
		Token COMMA259=null;
		Token COMMA260=null;
		Token RPAREN261=null;
		Token SEMI262=null;
		ParserRuleReturnScope data =null;
		ParserRuleReturnScope dest =null;
		ParserRuleReturnScope tag =null;

		Object SEND257_tree=null;
		Object LPAREN258_tree=null;
		Object COMMA259_tree=null;
		Object COMMA260_tree=null;
		Object RPAREN261_tree=null;
		Object SEMI262_tree=null;
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_SEND=new RewriteRuleTokenStream(adaptor,"token SEND");
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:400:2: ( SEND LPAREN data= expr COMMA dest= expr COMMA tag= expr RPAREN SEMI -> ^( SEND_STMT SEND $data $dest $tag SEMI ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:400:4: SEND LPAREN data= expr COMMA dest= expr COMMA tag= expr RPAREN SEMI
			{
			SEND257=(Token)match(input,SEND,FOLLOW_SEND_in_send_statement2575); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SEND.add(SEND257);

			LPAREN258=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_send_statement2577); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN258);

			pushFollow(FOLLOW_expr_in_send_statement2581);
			data=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(data.getTree());
			COMMA259=(Token)match(input,COMMA,FOLLOW_COMMA_in_send_statement2583); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_COMMA.add(COMMA259);

			pushFollow(FOLLOW_expr_in_send_statement2587);
			dest=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(dest.getTree());
			COMMA260=(Token)match(input,COMMA,FOLLOW_COMMA_in_send_statement2589); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_COMMA.add(COMMA260);

			pushFollow(FOLLOW_expr_in_send_statement2593);
			tag=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(tag.getTree());
			RPAREN261=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_send_statement2595); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN261);

			SEMI262=(Token)match(input,SEMI,FOLLOW_SEMI_in_send_statement2597); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SEMI.add(SEMI262);

			// AST REWRITE
			// elements: tag, dest, SEND, data, SEMI
			// token labels: 
			// rule labels: retval, dest, tag, data
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
			RewriteRuleSubtreeStream stream_dest=new RewriteRuleSubtreeStream(adaptor,"rule dest",dest!=null?dest.getTree():null);
			RewriteRuleSubtreeStream stream_tag=new RewriteRuleSubtreeStream(adaptor,"rule tag",tag!=null?tag.getTree():null);
			RewriteRuleSubtreeStream stream_data=new RewriteRuleSubtreeStream(adaptor,"rule data",data!=null?data.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 401:3: -> ^( SEND_STMT SEND $data $dest $tag SEMI )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:401:6: ^( SEND_STMT SEND $data $dest $tag SEMI )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SEND_STMT, "SEND_STMT"), root_1);
				adaptor.addChild(root_1, stream_SEND.nextNode());
				adaptor.addChild(root_1, stream_data.nextTree());
				adaptor.addChild(root_1, stream_dest.nextTree());
				adaptor.addChild(root_1, stream_tag.nextTree());
				adaptor.addChild(root_1, stream_SEMI.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "send_statement"


	public static class recv_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "recv_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:404:1: recv_statement : ( RECV LPAREN data= expr COMMA src= comm_expr COMMA tag= comm_expr RPAREN SEMI -> ^( RECV_STMT RECV $data $src $tag SEMI ) | RECV LPAREN data= expr COMMA src= comm_expr COMMA tag= comm_expr COMMA size= unary_expr RPAREN SEMI -> ^( RECV_STMT RECV $data $src $tag $size SEMI ) );
	public final PragmaStringParser.recv_statement_return recv_statement() throws RecognitionException {
		PragmaStringParser.recv_statement_return retval = new PragmaStringParser.recv_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token RECV263=null;
		Token LPAREN264=null;
		Token COMMA265=null;
		Token COMMA266=null;
		Token RPAREN267=null;
		Token SEMI268=null;
		Token RECV269=null;
		Token LPAREN270=null;
		Token COMMA271=null;
		Token COMMA272=null;
		Token COMMA273=null;
		Token RPAREN274=null;
		Token SEMI275=null;
		ParserRuleReturnScope data =null;
		ParserRuleReturnScope src =null;
		ParserRuleReturnScope tag =null;
		ParserRuleReturnScope size =null;

		Object RECV263_tree=null;
		Object LPAREN264_tree=null;
		Object COMMA265_tree=null;
		Object COMMA266_tree=null;
		Object RPAREN267_tree=null;
		Object SEMI268_tree=null;
		Object RECV269_tree=null;
		Object LPAREN270_tree=null;
		Object COMMA271_tree=null;
		Object COMMA272_tree=null;
		Object COMMA273_tree=null;
		Object RPAREN274_tree=null;
		Object SEMI275_tree=null;
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleTokenStream stream_RECV=new RewriteRuleTokenStream(adaptor,"token RECV");
		RewriteRuleSubtreeStream stream_unary_expr=new RewriteRuleSubtreeStream(adaptor,"rule unary_expr");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
		RewriteRuleSubtreeStream stream_comm_expr=new RewriteRuleSubtreeStream(adaptor,"rule comm_expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:405:2: ( RECV LPAREN data= expr COMMA src= comm_expr COMMA tag= comm_expr RPAREN SEMI -> ^( RECV_STMT RECV $data $src $tag SEMI ) | RECV LPAREN data= expr COMMA src= comm_expr COMMA tag= comm_expr COMMA size= unary_expr RPAREN SEMI -> ^( RECV_STMT RECV $data $src $tag $size SEMI ) )
			int alt61=2;
			int LA61_0 = input.LA(1);
			if ( (LA61_0==RECV) ) {
				int LA61_1 = input.LA(2);
				if ( (synpred93_PragmaString()) ) {
					alt61=1;
				}
				else if ( (true) ) {
					alt61=2;
				}

			}

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

			switch (alt61) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:405:4: RECV LPAREN data= expr COMMA src= comm_expr COMMA tag= comm_expr RPAREN SEMI
					{
					RECV263=(Token)match(input,RECV,FOLLOW_RECV_in_recv_statement2630); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RECV.add(RECV263);

					LPAREN264=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_recv_statement2632); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN264);

					pushFollow(FOLLOW_expr_in_recv_statement2636);
					data=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(data.getTree());
					COMMA265=(Token)match(input,COMMA,FOLLOW_COMMA_in_recv_statement2638); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA265);

					pushFollow(FOLLOW_comm_expr_in_recv_statement2642);
					src=comm_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_comm_expr.add(src.getTree());
					COMMA266=(Token)match(input,COMMA,FOLLOW_COMMA_in_recv_statement2644); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA266);

					pushFollow(FOLLOW_comm_expr_in_recv_statement2648);
					tag=comm_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_comm_expr.add(tag.getTree());
					RPAREN267=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_recv_statement2650); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN267);

					SEMI268=(Token)match(input,SEMI,FOLLOW_SEMI_in_recv_statement2652); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SEMI.add(SEMI268);

					// AST REWRITE
					// elements: RECV, tag, src, data, SEMI
					// token labels: 
					// rule labels: retval, tag, data, src
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_tag=new RewriteRuleSubtreeStream(adaptor,"rule tag",tag!=null?tag.getTree():null);
					RewriteRuleSubtreeStream stream_data=new RewriteRuleSubtreeStream(adaptor,"rule data",data!=null?data.getTree():null);
					RewriteRuleSubtreeStream stream_src=new RewriteRuleSubtreeStream(adaptor,"rule src",src!=null?src.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 406:3: -> ^( RECV_STMT RECV $data $src $tag SEMI )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:406:6: ^( RECV_STMT RECV $data $src $tag SEMI )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(RECV_STMT, "RECV_STMT"), root_1);
						adaptor.addChild(root_1, stream_RECV.nextNode());
						adaptor.addChild(root_1, stream_data.nextTree());
						adaptor.addChild(root_1, stream_src.nextTree());
						adaptor.addChild(root_1, stream_tag.nextTree());
						adaptor.addChild(root_1, stream_SEMI.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:407:4: RECV LPAREN data= expr COMMA src= comm_expr COMMA tag= comm_expr COMMA size= unary_expr RPAREN SEMI
					{
					RECV269=(Token)match(input,RECV,FOLLOW_RECV_in_recv_statement2678); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RECV.add(RECV269);

					LPAREN270=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_recv_statement2680); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN270);

					pushFollow(FOLLOW_expr_in_recv_statement2684);
					data=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(data.getTree());
					COMMA271=(Token)match(input,COMMA,FOLLOW_COMMA_in_recv_statement2686); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA271);

					pushFollow(FOLLOW_comm_expr_in_recv_statement2690);
					src=comm_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_comm_expr.add(src.getTree());
					COMMA272=(Token)match(input,COMMA,FOLLOW_COMMA_in_recv_statement2692); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA272);

					pushFollow(FOLLOW_comm_expr_in_recv_statement2696);
					tag=comm_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_comm_expr.add(tag.getTree());
					COMMA273=(Token)match(input,COMMA,FOLLOW_COMMA_in_recv_statement2698); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA273);

					pushFollow(FOLLOW_unary_expr_in_recv_statement2704);
					size=unary_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_unary_expr.add(size.getTree());
					RPAREN274=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_recv_statement2706); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN274);

					SEMI275=(Token)match(input,SEMI,FOLLOW_SEMI_in_recv_statement2708); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SEMI.add(SEMI275);

					// AST REWRITE
					// elements: RECV, tag, SEMI, data, src, size
					// token labels: 
					// rule labels: retval, tag, data, src, size
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
					RewriteRuleSubtreeStream stream_tag=new RewriteRuleSubtreeStream(adaptor,"rule tag",tag!=null?tag.getTree():null);
					RewriteRuleSubtreeStream stream_data=new RewriteRuleSubtreeStream(adaptor,"rule data",data!=null?data.getTree():null);
					RewriteRuleSubtreeStream stream_src=new RewriteRuleSubtreeStream(adaptor,"rule src",src!=null?src.getTree():null);
					RewriteRuleSubtreeStream stream_size=new RewriteRuleSubtreeStream(adaptor,"rule size",size!=null?size.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 408:3: -> ^( RECV_STMT RECV $data $src $tag $size SEMI )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:408:6: ^( RECV_STMT RECV $data $src $tag $size SEMI )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(RECV_STMT, "RECV_STMT"), root_1);
						adaptor.addChild(root_1, stream_RECV.nextNode());
						adaptor.addChild(root_1, stream_data.nextTree());
						adaptor.addChild(root_1, stream_src.nextTree());
						adaptor.addChild(root_1, stream_tag.nextTree());
						adaptor.addChild(root_1, stream_size.nextTree());
						adaptor.addChild(root_1, stream_SEMI.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "recv_statement"


	public static class comm_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "comm_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:411:1: comm_expr : ( expr -> ^( COMM_EXPR expr ) | wildcard_expr -> ^( COMM_EXPR wildcard_expr ) );
	public final PragmaStringParser.comm_expr_return comm_expr() throws RecognitionException {
		PragmaStringParser.comm_expr_return retval = new PragmaStringParser.comm_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope expr276 =null;
		ParserRuleReturnScope wildcard_expr277 =null;

		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
		RewriteRuleSubtreeStream stream_wildcard_expr=new RewriteRuleSubtreeStream(adaptor,"rule wildcard_expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:412:2: ( expr -> ^( COMM_EXPR expr ) | wildcard_expr -> ^( COMM_EXPR wildcard_expr ) )
			int alt62=2;
			int LA62_0 = input.LA(1);
			if ( (LA62_0==ADDR_OF||LA62_0==CHAR_LITERAL||LA62_0==DERIVATIVE||(LA62_0 >= DOUBLE_PLUS && LA62_0 <= DOUBLE_SUB)||LA62_0==EXISTS||LA62_0==FALSE||LA62_0==FORALL||LA62_0==IDENTIFIER||LA62_0==INT_LITERAL||LA62_0==LPAREN||LA62_0==MULTI||LA62_0==NOT||LA62_0==PLUS||LA62_0==REAL_LITERAL||LA62_0==SIZEOF||LA62_0==SPEC||LA62_0==STRING_LITERAL||LA62_0==SUB||LA62_0==SYS_VAR||LA62_0==TRUE) ) {
				alt62=1;
			}
			else if ( (LA62_0==ANY) ) {
				alt62=2;
			}

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

			switch (alt62) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:412:4: expr
					{
					pushFollow(FOLLOW_expr_in_comm_expr2744);
					expr276=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr276.getTree());
					// AST REWRITE
					// elements: expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 412:9: -> ^( COMM_EXPR expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:412:12: ^( COMM_EXPR expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COMM_EXPR, "COMM_EXPR"), root_1);
						adaptor.addChild(root_1, stream_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:413:4: wildcard_expr
					{
					pushFollow(FOLLOW_wildcard_expr_in_comm_expr2757);
					wildcard_expr277=wildcard_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_wildcard_expr.add(wildcard_expr277.getTree());
					// AST REWRITE
					// elements: wildcard_expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 413:18: -> ^( COMM_EXPR wildcard_expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:413:21: ^( COMM_EXPR wildcard_expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(COMM_EXPR, "COMM_EXPR"), root_1);
						adaptor.addChild(root_1, stream_wildcard_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "comm_expr"


	public static class wildcard_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "wildcard_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:416:1: wildcard_expr : ANY LPAREN expr RPAREN -> ^( WILDCARD_EXPR ANY LPAREN expr RPAREN ) ;
	public final PragmaStringParser.wildcard_expr_return wildcard_expr() throws RecognitionException {
		PragmaStringParser.wildcard_expr_return retval = new PragmaStringParser.wildcard_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token ANY278=null;
		Token LPAREN279=null;
		Token RPAREN281=null;
		ParserRuleReturnScope expr280 =null;

		Object ANY278_tree=null;
		Object LPAREN279_tree=null;
		Object RPAREN281_tree=null;
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_ANY=new RewriteRuleTokenStream(adaptor,"token ANY");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:417:2: ( ANY LPAREN expr RPAREN -> ^( WILDCARD_EXPR ANY LPAREN expr RPAREN ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:417:4: ANY LPAREN expr RPAREN
			{
			ANY278=(Token)match(input,ANY,FOLLOW_ANY_in_wildcard_expr2777); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_ANY.add(ANY278);

			LPAREN279=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_wildcard_expr2779); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN279);

			pushFollow(FOLLOW_expr_in_wildcard_expr2781);
			expr280=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(expr280.getTree());
			RPAREN281=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_wildcard_expr2783); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN281);

			// AST REWRITE
			// elements: RPAREN, expr, LPAREN, ANY
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 418:3: -> ^( WILDCARD_EXPR ANY LPAREN expr RPAREN )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:418:6: ^( WILDCARD_EXPR ANY LPAREN expr RPAREN )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(WILDCARD_EXPR, "WILDCARD_EXPR"), root_1);
				adaptor.addChild(root_1, stream_ANY.nextNode());
				adaptor.addChild(root_1, stream_LPAREN.nextNode());
				adaptor.addChild(root_1, stream_expr.nextTree());
				adaptor.addChild(root_1, stream_RPAREN.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "wildcard_expr"


	public static class call_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "call_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:421:1: call_statement : ( unary_expr ASSIGN )? IDENTIFIER LPAREN ( parameter_list )? RPAREN SEMI -> ^( CALL_STMT ( unary_expr )? IDENTIFIER LPAREN ( parameter_list )? RPAREN SEMI ) ;
	public final PragmaStringParser.call_statement_return call_statement() throws RecognitionException {
		PragmaStringParser.call_statement_return retval = new PragmaStringParser.call_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token ASSIGN283=null;
		Token IDENTIFIER284=null;
		Token LPAREN285=null;
		Token RPAREN287=null;
		Token SEMI288=null;
		ParserRuleReturnScope unary_expr282 =null;
		ParserRuleReturnScope parameter_list286 =null;

		Object ASSIGN283_tree=null;
		Object IDENTIFIER284_tree=null;
		Object LPAREN285_tree=null;
		Object RPAREN287_tree=null;
		Object SEMI288_tree=null;
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleTokenStream stream_ASSIGN=new RewriteRuleTokenStream(adaptor,"token ASSIGN");
		RewriteRuleSubtreeStream stream_unary_expr=new RewriteRuleSubtreeStream(adaptor,"rule unary_expr");
		RewriteRuleSubtreeStream stream_parameter_list=new RewriteRuleSubtreeStream(adaptor,"rule parameter_list");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:422:2: ( ( unary_expr ASSIGN )? IDENTIFIER LPAREN ( parameter_list )? RPAREN SEMI -> ^( CALL_STMT ( unary_expr )? IDENTIFIER LPAREN ( parameter_list )? RPAREN SEMI ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:422:4: ( unary_expr ASSIGN )? IDENTIFIER LPAREN ( parameter_list )? RPAREN SEMI
			{
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:422:4: ( unary_expr ASSIGN )?
			int alt63=2;
			int LA63_0 = input.LA(1);
			if ( (LA63_0==ADDR_OF||LA63_0==CHAR_LITERAL||LA63_0==DERIVATIVE||(LA63_0 >= DOUBLE_PLUS && LA63_0 <= DOUBLE_SUB)||LA63_0==FALSE||LA63_0==INT_LITERAL||LA63_0==LPAREN||LA63_0==MULTI||LA63_0==NOT||LA63_0==PLUS||LA63_0==REAL_LITERAL||LA63_0==SIZEOF||LA63_0==SPEC||LA63_0==STRING_LITERAL||LA63_0==SUB||LA63_0==SYS_VAR||LA63_0==TRUE) ) {
				alt63=1;
			}
			else if ( (LA63_0==IDENTIFIER) ) {
				int LA63_8 = input.LA(2);
				if ( (synpred95_PragmaString()) ) {
					alt63=1;
				}
			}
			switch (alt63) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:422:5: unary_expr ASSIGN
					{
					pushFollow(FOLLOW_unary_expr_in_call_statement2811);
					unary_expr282=unary_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_unary_expr.add(unary_expr282.getTree());
					ASSIGN283=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_call_statement2813); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ASSIGN.add(ASSIGN283);

					}
					break;

			}

			IDENTIFIER284=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_call_statement2817); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER284);

			LPAREN285=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_call_statement2819); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN285);

			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:422:43: ( parameter_list )?
			int alt64=2;
			int LA64_0 = input.LA(1);
			if ( (LA64_0==ADDR_OF||LA64_0==CHAR_LITERAL||LA64_0==DERIVATIVE||(LA64_0 >= DOUBLE_PLUS && LA64_0 <= DOUBLE_SUB)||LA64_0==EXISTS||LA64_0==FALSE||LA64_0==FORALL||LA64_0==IDENTIFIER||LA64_0==INT_LITERAL||LA64_0==LPAREN||LA64_0==MULTI||LA64_0==NOT||LA64_0==PLUS||LA64_0==REAL_LITERAL||LA64_0==SIZEOF||LA64_0==SPEC||LA64_0==STRING_LITERAL||LA64_0==SUB||LA64_0==SYS_VAR||LA64_0==TRUE) ) {
				alt64=1;
			}
			switch (alt64) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:422:43: parameter_list
					{
					pushFollow(FOLLOW_parameter_list_in_call_statement2821);
					parameter_list286=parameter_list();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_parameter_list.add(parameter_list286.getTree());
					}
					break;

			}

			RPAREN287=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_call_statement2824); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN287);

			SEMI288=(Token)match(input,SEMI,FOLLOW_SEMI_in_call_statement2826); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SEMI.add(SEMI288);

			// AST REWRITE
			// elements: parameter_list, RPAREN, SEMI, IDENTIFIER, unary_expr, LPAREN
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 423:3: -> ^( CALL_STMT ( unary_expr )? IDENTIFIER LPAREN ( parameter_list )? RPAREN SEMI )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:423:6: ^( CALL_STMT ( unary_expr )? IDENTIFIER LPAREN ( parameter_list )? RPAREN SEMI )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CALL_STMT, "CALL_STMT"), root_1);
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:423:18: ( unary_expr )?
				if ( stream_unary_expr.hasNext() ) {
					adaptor.addChild(root_1, stream_unary_expr.nextTree());
				}
				stream_unary_expr.reset();

				adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
				adaptor.addChild(root_1, stream_LPAREN.nextNode());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:423:48: ( parameter_list )?
				if ( stream_parameter_list.hasNext() ) {
					adaptor.addChild(root_1, stream_parameter_list.nextTree());
				}
				stream_parameter_list.reset();

				adaptor.addChild(root_1, stream_RPAREN.nextNode());
				adaptor.addChild(root_1, stream_SEMI.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "call_statement"


	public static class allocate_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "allocate_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:426:1: allocate_statement : unary_expr ASSIGN LPAREN type_name MULTI RPAREN MALLOC unary_expr SEMI -> ^( ALLOCATE_STMT unary_expr type_name unary_expr SEMI ) ;
	public final PragmaStringParser.allocate_statement_return allocate_statement() throws RecognitionException {
		PragmaStringParser.allocate_statement_return retval = new PragmaStringParser.allocate_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token ASSIGN290=null;
		Token LPAREN291=null;
		Token MULTI293=null;
		Token RPAREN294=null;
		Token MALLOC295=null;
		Token SEMI297=null;
		ParserRuleReturnScope unary_expr289 =null;
		ParserRuleReturnScope type_name292 =null;
		ParserRuleReturnScope unary_expr296 =null;

		Object ASSIGN290_tree=null;
		Object LPAREN291_tree=null;
		Object MULTI293_tree=null;
		Object RPAREN294_tree=null;
		Object MALLOC295_tree=null;
		Object SEMI297_tree=null;
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_MULTI=new RewriteRuleTokenStream(adaptor,"token MULTI");
		RewriteRuleTokenStream stream_MALLOC=new RewriteRuleTokenStream(adaptor,"token MALLOC");
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleTokenStream stream_ASSIGN=new RewriteRuleTokenStream(adaptor,"token ASSIGN");
		RewriteRuleSubtreeStream stream_unary_expr=new RewriteRuleSubtreeStream(adaptor,"rule unary_expr");
		RewriteRuleSubtreeStream stream_type_name=new RewriteRuleSubtreeStream(adaptor,"rule type_name");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:427:2: ( unary_expr ASSIGN LPAREN type_name MULTI RPAREN MALLOC unary_expr SEMI -> ^( ALLOCATE_STMT unary_expr type_name unary_expr SEMI ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:427:4: unary_expr ASSIGN LPAREN type_name MULTI RPAREN MALLOC unary_expr SEMI
			{
			pushFollow(FOLLOW_unary_expr_in_allocate_statement2859);
			unary_expr289=unary_expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_unary_expr.add(unary_expr289.getTree());
			ASSIGN290=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_allocate_statement2861); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_ASSIGN.add(ASSIGN290);

			LPAREN291=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_allocate_statement2863); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN291);

			pushFollow(FOLLOW_type_name_in_allocate_statement2865);
			type_name292=type_name();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_type_name.add(type_name292.getTree());
			MULTI293=(Token)match(input,MULTI,FOLLOW_MULTI_in_allocate_statement2867); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_MULTI.add(MULTI293);

			RPAREN294=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_allocate_statement2869); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN294);

			MALLOC295=(Token)match(input,MALLOC,FOLLOW_MALLOC_in_allocate_statement2871); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_MALLOC.add(MALLOC295);

			pushFollow(FOLLOW_unary_expr_in_allocate_statement2873);
			unary_expr296=unary_expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_unary_expr.add(unary_expr296.getTree());
			SEMI297=(Token)match(input,SEMI,FOLLOW_SEMI_in_allocate_statement2875); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SEMI.add(SEMI297);

			// AST REWRITE
			// elements: unary_expr, unary_expr, SEMI, type_name
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 428:3: -> ^( ALLOCATE_STMT unary_expr type_name unary_expr SEMI )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:428:6: ^( ALLOCATE_STMT unary_expr type_name unary_expr SEMI )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ALLOCATE_STMT, "ALLOCATE_STMT"), root_1);
				adaptor.addChild(root_1, stream_unary_expr.nextTree());
				adaptor.addChild(root_1, stream_type_name.nextTree());
				adaptor.addChild(root_1, stream_unary_expr.nextTree());
				adaptor.addChild(root_1, stream_SEMI.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "allocate_statement"


	public static class parameter_list_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "parameter_list"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:431:1: parameter_list : parameter ( COMMA parameter )* -> ^( PARAMETER_LIST ( parameter )+ ) ;
	public final PragmaStringParser.parameter_list_return parameter_list() throws RecognitionException {
		PragmaStringParser.parameter_list_return retval = new PragmaStringParser.parameter_list_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token COMMA299=null;
		ParserRuleReturnScope parameter298 =null;
		ParserRuleReturnScope parameter300 =null;

		Object COMMA299_tree=null;
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleSubtreeStream stream_parameter=new RewriteRuleSubtreeStream(adaptor,"rule parameter");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:432:2: ( parameter ( COMMA parameter )* -> ^( PARAMETER_LIST ( parameter )+ ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:432:4: parameter ( COMMA parameter )*
			{
			pushFollow(FOLLOW_parameter_in_parameter_list2902);
			parameter298=parameter();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_parameter.add(parameter298.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:432:14: ( COMMA parameter )*
			loop65:
			while (true) {
				int alt65=2;
				int LA65_0 = input.LA(1);
				if ( (LA65_0==COMMA) ) {
					alt65=1;
				}

				switch (alt65) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:432:15: COMMA parameter
					{
					COMMA299=(Token)match(input,COMMA,FOLLOW_COMMA_in_parameter_list2905); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA299);

					pushFollow(FOLLOW_parameter_in_parameter_list2907);
					parameter300=parameter();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_parameter.add(parameter300.getTree());
					}
					break;

				default :
					break loop65;
				}
			}

			// AST REWRITE
			// elements: parameter
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 432:33: -> ^( PARAMETER_LIST ( parameter )+ )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:432:36: ^( PARAMETER_LIST ( parameter )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PARAMETER_LIST, "PARAMETER_LIST"), root_1);
				if ( !(stream_parameter.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_parameter.hasNext() ) {
					adaptor.addChild(root_1, stream_parameter.nextTree());
				}
				stream_parameter.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "parameter_list"


	public static class parameter_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "parameter"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:435:1: parameter : expr -> ^( PARAMETER expr ) ;
	public final PragmaStringParser.parameter_return parameter() throws RecognitionException {
		PragmaStringParser.parameter_return retval = new PragmaStringParser.parameter_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope expr301 =null;

		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:436:2: ( expr -> ^( PARAMETER expr ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:436:4: expr
			{
			pushFollow(FOLLOW_expr_in_parameter2929);
			expr301=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(expr301.getTree());
			// AST REWRITE
			// elements: expr
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 436:9: -> ^( PARAMETER expr )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:436:12: ^( PARAMETER expr )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PARAMETER, "PARAMETER"), root_1);
				adaptor.addChild(root_1, stream_expr.nextTree());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "parameter"


	public static class partial_list_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "partial_list"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:439:1: partial_list : partial ( COMMA partial )* -> ^( PARTIAL_LIST ( partial )+ ) ;
	public final PragmaStringParser.partial_list_return partial_list() throws RecognitionException {
		PragmaStringParser.partial_list_return retval = new PragmaStringParser.partial_list_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token COMMA303=null;
		ParserRuleReturnScope partial302 =null;
		ParserRuleReturnScope partial304 =null;

		Object COMMA303_tree=null;
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleSubtreeStream stream_partial=new RewriteRuleSubtreeStream(adaptor,"rule partial");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:440:2: ( partial ( COMMA partial )* -> ^( PARTIAL_LIST ( partial )+ ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:440:4: partial ( COMMA partial )*
			{
			pushFollow(FOLLOW_partial_in_partial_list2948);
			partial302=partial();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_partial.add(partial302.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:440:12: ( COMMA partial )*
			loop66:
			while (true) {
				int alt66=2;
				int LA66_0 = input.LA(1);
				if ( (LA66_0==COMMA) ) {
					alt66=1;
				}

				switch (alt66) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:440:13: COMMA partial
					{
					COMMA303=(Token)match(input,COMMA,FOLLOW_COMMA_in_partial_list2951); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COMMA.add(COMMA303);

					pushFollow(FOLLOW_partial_in_partial_list2953);
					partial304=partial();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_partial.add(partial304.getTree());
					}
					break;

				default :
					break loop66;
				}
			}

			// AST REWRITE
			// elements: partial
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 440:29: -> ^( PARTIAL_LIST ( partial )+ )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:440:32: ^( PARTIAL_LIST ( partial )+ )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PARTIAL_LIST, "PARTIAL_LIST"), root_1);
				if ( !(stream_partial.hasNext()) ) {
					throw new RewriteEarlyExitException();
				}
				while ( stream_partial.hasNext() ) {
					adaptor.addChild(root_1, stream_partial.nextTree());
				}
				stream_partial.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "partial_list"


	public static class partial_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "partial"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:443:1: partial : LCURLY IDENTIFIER COMMA INT_LITERAL RCURLY -> ^( PARTIAL IDENTIFIER INT_LITERAL ) ;
	public final PragmaStringParser.partial_return partial() throws RecognitionException {
		PragmaStringParser.partial_return retval = new PragmaStringParser.partial_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LCURLY305=null;
		Token IDENTIFIER306=null;
		Token COMMA307=null;
		Token INT_LITERAL308=null;
		Token RCURLY309=null;

		Object LCURLY305_tree=null;
		Object IDENTIFIER306_tree=null;
		Object COMMA307_tree=null;
		Object INT_LITERAL308_tree=null;
		Object RCURLY309_tree=null;
		RewriteRuleTokenStream stream_LCURLY=new RewriteRuleTokenStream(adaptor,"token LCURLY");
		RewriteRuleTokenStream stream_INT_LITERAL=new RewriteRuleTokenStream(adaptor,"token INT_LITERAL");
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_RCURLY=new RewriteRuleTokenStream(adaptor,"token RCURLY");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:444:2: ( LCURLY IDENTIFIER COMMA INT_LITERAL RCURLY -> ^( PARTIAL IDENTIFIER INT_LITERAL ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:444:4: LCURLY IDENTIFIER COMMA INT_LITERAL RCURLY
			{
			LCURLY305=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_partial2975); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY305);

			IDENTIFIER306=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_partial2977); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER306);

			COMMA307=(Token)match(input,COMMA,FOLLOW_COMMA_in_partial2979); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_COMMA.add(COMMA307);

			INT_LITERAL308=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_partial2981); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_INT_LITERAL.add(INT_LITERAL308);

			RCURLY309=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_partial2983); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY309);

			// AST REWRITE
			// elements: IDENTIFIER, INT_LITERAL
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 444:47: -> ^( PARTIAL IDENTIFIER INT_LITERAL )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:444:50: ^( PARTIAL IDENTIFIER INT_LITERAL )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PARTIAL, "PARTIAL"), root_1);
				adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
				adaptor.addChild(root_1, stream_INT_LITERAL.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "partial"


	public static class expr_statement_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "expr_statement"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:447:1: expr_statement : expr SEMI -> ^( EXPR_STMT expr SEMI ) ;
	public final PragmaStringParser.expr_statement_return expr_statement() throws RecognitionException {
		PragmaStringParser.expr_statement_return retval = new PragmaStringParser.expr_statement_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token SEMI311=null;
		ParserRuleReturnScope expr310 =null;

		Object SEMI311_tree=null;
		RewriteRuleTokenStream stream_SEMI=new RewriteRuleTokenStream(adaptor,"token SEMI");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:448:2: ( expr SEMI -> ^( EXPR_STMT expr SEMI ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:448:4: expr SEMI
			{
			pushFollow(FOLLOW_expr_in_expr_statement3004);
			expr310=expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_expr.add(expr310.getTree());
			SEMI311=(Token)match(input,SEMI,FOLLOW_SEMI_in_expr_statement3006); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SEMI.add(SEMI311);

			// AST REWRITE
			// elements: SEMI, expr
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 448:14: -> ^( EXPR_STMT expr SEMI )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:448:17: ^( EXPR_STMT expr SEMI )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXPR_STMT, "EXPR_STMT"), root_1);
				adaptor.addChild(root_1, stream_expr.nextTree());
				adaptor.addChild(root_1, stream_SEMI.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "expr_statement"


	public static class expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:451:1: expr : ( assign_expr -> ^( EXPR assign_expr ) | quantifier_expr -> ^( EXPR quantifier_expr ) );
	public final PragmaStringParser.expr_return expr() throws RecognitionException {
		PragmaStringParser.expr_return retval = new PragmaStringParser.expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope assign_expr312 =null;
		ParserRuleReturnScope quantifier_expr313 =null;

		RewriteRuleSubtreeStream stream_quantifier_expr=new RewriteRuleSubtreeStream(adaptor,"rule quantifier_expr");
		RewriteRuleSubtreeStream stream_assign_expr=new RewriteRuleSubtreeStream(adaptor,"rule assign_expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:452:2: ( assign_expr -> ^( EXPR assign_expr ) | quantifier_expr -> ^( EXPR quantifier_expr ) )
			int alt67=2;
			int LA67_0 = input.LA(1);
			if ( (LA67_0==ADDR_OF||LA67_0==CHAR_LITERAL||LA67_0==DERIVATIVE||(LA67_0 >= DOUBLE_PLUS && LA67_0 <= DOUBLE_SUB)||LA67_0==FALSE||LA67_0==IDENTIFIER||LA67_0==INT_LITERAL||LA67_0==LPAREN||LA67_0==MULTI||LA67_0==NOT||LA67_0==PLUS||LA67_0==REAL_LITERAL||LA67_0==SIZEOF||LA67_0==SPEC||LA67_0==STRING_LITERAL||LA67_0==SUB||LA67_0==SYS_VAR||LA67_0==TRUE) ) {
				alt67=1;
			}
			else if ( (LA67_0==EXISTS||LA67_0==FORALL) ) {
				alt67=2;
			}

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

			switch (alt67) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:452:4: assign_expr
					{
					pushFollow(FOLLOW_assign_expr_in_expr3030);
					assign_expr312=assign_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_assign_expr.add(assign_expr312.getTree());
					// AST REWRITE
					// elements: assign_expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 452:16: -> ^( EXPR assign_expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:452:19: ^( EXPR assign_expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXPR, "EXPR"), root_1);
						adaptor.addChild(root_1, stream_assign_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:453:4: quantifier_expr
					{
					pushFollow(FOLLOW_quantifier_expr_in_expr3043);
					quantifier_expr313=quantifier_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_quantifier_expr.add(quantifier_expr313.getTree());
					// AST REWRITE
					// elements: quantifier_expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 453:20: -> ^( EXPR quantifier_expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:453:23: ^( EXPR quantifier_expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EXPR, "EXPR"), root_1);
						adaptor.addChild(root_1, stream_quantifier_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "expr"


	public static class assign_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "assign_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:456:1: assign_expr : ( unary_expr assign_operator assign_expr -> ^( ASSIGN_EXPR unary_expr assign_operator assign_expr ) | ifThenElse_expr -> ^( ASSIGN_EXPR ifThenElse_expr ) );
	public final PragmaStringParser.assign_expr_return assign_expr() throws RecognitionException {
		PragmaStringParser.assign_expr_return retval = new PragmaStringParser.assign_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope unary_expr314 =null;
		ParserRuleReturnScope assign_operator315 =null;
		ParserRuleReturnScope assign_expr316 =null;
		ParserRuleReturnScope ifThenElse_expr317 =null;

		RewriteRuleSubtreeStream stream_unary_expr=new RewriteRuleSubtreeStream(adaptor,"rule unary_expr");
		RewriteRuleSubtreeStream stream_assign_operator=new RewriteRuleSubtreeStream(adaptor,"rule assign_operator");
		RewriteRuleSubtreeStream stream_ifThenElse_expr=new RewriteRuleSubtreeStream(adaptor,"rule ifThenElse_expr");
		RewriteRuleSubtreeStream stream_assign_expr=new RewriteRuleSubtreeStream(adaptor,"rule assign_expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:457:2: ( unary_expr assign_operator assign_expr -> ^( ASSIGN_EXPR unary_expr assign_operator assign_expr ) | ifThenElse_expr -> ^( ASSIGN_EXPR ifThenElse_expr ) )
			int alt68=2;
			switch ( input.LA(1) ) {
			case TRUE:
				{
				int LA68_1 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case FALSE:
				{
				int LA68_2 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case INT_LITERAL:
				{
				int LA68_3 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case REAL_LITERAL:
				{
				int LA68_4 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case CHAR_LITERAL:
				{
				int LA68_5 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case STRING_LITERAL:
				{
				int LA68_6 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case SYS_VAR:
				{
				int LA68_7 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case IDENTIFIER:
				{
				int LA68_8 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case LPAREN:
				{
				int LA68_9 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case SPEC:
				{
				int LA68_10 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case DERIVATIVE:
				{
				int LA68_11 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case PLUS:
				{
				int LA68_12 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case SUB:
				{
				int LA68_13 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case NOT:
				{
				int LA68_14 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case MULTI:
				{
				int LA68_15 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case ADDR_OF:
				{
				int LA68_16 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case DOUBLE_PLUS:
				{
				int LA68_17 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case DOUBLE_SUB:
				{
				int LA68_18 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			case SIZEOF:
				{
				int LA68_19 = input.LA(2);
				if ( (synpred100_PragmaString()) ) {
					alt68=1;
				}
				else if ( (true) ) {
					alt68=2;
				}

				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 68, 0, input);
				throw nvae;
			}
			switch (alt68) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:457:4: unary_expr assign_operator assign_expr
					{
					pushFollow(FOLLOW_unary_expr_in_assign_expr3063);
					unary_expr314=unary_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_unary_expr.add(unary_expr314.getTree());
					pushFollow(FOLLOW_assign_operator_in_assign_expr3065);
					assign_operator315=assign_operator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_assign_operator.add(assign_operator315.getTree());
					pushFollow(FOLLOW_assign_expr_in_assign_expr3067);
					assign_expr316=assign_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_assign_expr.add(assign_expr316.getTree());
					// AST REWRITE
					// elements: unary_expr, assign_operator, assign_expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 458:3: -> ^( ASSIGN_EXPR unary_expr assign_operator assign_expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:458:6: ^( ASSIGN_EXPR unary_expr assign_operator assign_expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ASSIGN_EXPR, "ASSIGN_EXPR"), root_1);
						adaptor.addChild(root_1, stream_unary_expr.nextTree());
						adaptor.addChild(root_1, stream_assign_operator.nextTree());
						adaptor.addChild(root_1, stream_assign_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:459:4: ifThenElse_expr
					{
					pushFollow(FOLLOW_ifThenElse_expr_in_assign_expr3087);
					ifThenElse_expr317=ifThenElse_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_ifThenElse_expr.add(ifThenElse_expr317.getTree());
					// AST REWRITE
					// elements: ifThenElse_expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 460:3: -> ^( ASSIGN_EXPR ifThenElse_expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:460:6: ^( ASSIGN_EXPR ifThenElse_expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ASSIGN_EXPR, "ASSIGN_EXPR"), root_1);
						adaptor.addChild(root_1, stream_ifThenElse_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "assign_expr"


	public static class ifThenElse_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "ifThenElse_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:463:1: ifThenElse_expr : pred= logical_or_expr ( QMARK trueBranch= expr COLON falseBranch= expr )? -> ^( CONDITIONAL_EXPR $pred ( $trueBranch $falseBranch)? ) ;
	public final PragmaStringParser.ifThenElse_expr_return ifThenElse_expr() throws RecognitionException {
		PragmaStringParser.ifThenElse_expr_return retval = new PragmaStringParser.ifThenElse_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token QMARK318=null;
		Token COLON319=null;
		ParserRuleReturnScope pred =null;
		ParserRuleReturnScope trueBranch =null;
		ParserRuleReturnScope falseBranch =null;

		Object QMARK318_tree=null;
		Object COLON319_tree=null;
		RewriteRuleTokenStream stream_COLON=new RewriteRuleTokenStream(adaptor,"token COLON");
		RewriteRuleTokenStream stream_QMARK=new RewriteRuleTokenStream(adaptor,"token QMARK");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
		RewriteRuleSubtreeStream stream_logical_or_expr=new RewriteRuleSubtreeStream(adaptor,"rule logical_or_expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:464:2: (pred= logical_or_expr ( QMARK trueBranch= expr COLON falseBranch= expr )? -> ^( CONDITIONAL_EXPR $pred ( $trueBranch $falseBranch)? ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:464:4: pred= logical_or_expr ( QMARK trueBranch= expr COLON falseBranch= expr )?
			{
			pushFollow(FOLLOW_logical_or_expr_in_ifThenElse_expr3110);
			pred=logical_or_expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_logical_or_expr.add(pred.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:464:25: ( QMARK trueBranch= expr COLON falseBranch= expr )?
			int alt69=2;
			int LA69_0 = input.LA(1);
			if ( (LA69_0==QMARK) ) {
				alt69=1;
			}
			switch (alt69) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:464:26: QMARK trueBranch= expr COLON falseBranch= expr
					{
					QMARK318=(Token)match(input,QMARK,FOLLOW_QMARK_in_ifThenElse_expr3113); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_QMARK.add(QMARK318);

					pushFollow(FOLLOW_expr_in_ifThenElse_expr3117);
					trueBranch=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(trueBranch.getTree());
					COLON319=(Token)match(input,COLON,FOLLOW_COLON_in_ifThenElse_expr3119); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_COLON.add(COLON319);

					pushFollow(FOLLOW_expr_in_ifThenElse_expr3123);
					falseBranch=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(falseBranch.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: trueBranch, pred, falseBranch
			// token labels: 
			// rule labels: trueBranch, retval, falseBranch, pred
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_trueBranch=new RewriteRuleSubtreeStream(adaptor,"rule trueBranch",trueBranch!=null?trueBranch.getTree():null);
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);
			RewriteRuleSubtreeStream stream_falseBranch=new RewriteRuleSubtreeStream(adaptor,"rule falseBranch",falseBranch!=null?falseBranch.getTree():null);
			RewriteRuleSubtreeStream stream_pred=new RewriteRuleSubtreeStream(adaptor,"rule pred",pred!=null?pred.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 465:3: -> ^( CONDITIONAL_EXPR $pred ( $trueBranch $falseBranch)? )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:465:6: ^( CONDITIONAL_EXPR $pred ( $trueBranch $falseBranch)? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONDITIONAL_EXPR, "CONDITIONAL_EXPR"), root_1);
				adaptor.addChild(root_1, stream_pred.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:465:31: ( $trueBranch $falseBranch)?
				if ( stream_trueBranch.hasNext()||stream_falseBranch.hasNext() ) {
					adaptor.addChild(root_1, stream_trueBranch.nextTree());
					adaptor.addChild(root_1, stream_falseBranch.nextTree());
				}
				stream_trueBranch.reset();
				stream_falseBranch.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "ifThenElse_expr"


	public static class quantifier_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "quantifier_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:468:1: quantifier_expr : ( quantifier LCURLY simple_type IDENTIFIER RCURLY expr -> ^( QUANTIFIER_EXPR quantifier simple_type IDENTIFIER expr ) | quantifier LCURLY simple_type IDENTIFIER BAR logical_or_expr RCURLY expr -> ^( QUANTIFIER_EXPR quantifier simple_type IDENTIFIER BAR logical_or_expr expr ) );
	public final PragmaStringParser.quantifier_expr_return quantifier_expr() throws RecognitionException {
		PragmaStringParser.quantifier_expr_return retval = new PragmaStringParser.quantifier_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LCURLY321=null;
		Token IDENTIFIER323=null;
		Token RCURLY324=null;
		Token LCURLY327=null;
		Token IDENTIFIER329=null;
		Token BAR330=null;
		Token RCURLY332=null;
		ParserRuleReturnScope quantifier320 =null;
		ParserRuleReturnScope simple_type322 =null;
		ParserRuleReturnScope expr325 =null;
		ParserRuleReturnScope quantifier326 =null;
		ParserRuleReturnScope simple_type328 =null;
		ParserRuleReturnScope logical_or_expr331 =null;
		ParserRuleReturnScope expr333 =null;

		Object LCURLY321_tree=null;
		Object IDENTIFIER323_tree=null;
		Object RCURLY324_tree=null;
		Object LCURLY327_tree=null;
		Object IDENTIFIER329_tree=null;
		Object BAR330_tree=null;
		Object RCURLY332_tree=null;
		RewriteRuleTokenStream stream_LCURLY=new RewriteRuleTokenStream(adaptor,"token LCURLY");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_BAR=new RewriteRuleTokenStream(adaptor,"token BAR");
		RewriteRuleTokenStream stream_RCURLY=new RewriteRuleTokenStream(adaptor,"token RCURLY");
		RewriteRuleSubtreeStream stream_quantifier=new RewriteRuleSubtreeStream(adaptor,"rule quantifier");
		RewriteRuleSubtreeStream stream_simple_type=new RewriteRuleSubtreeStream(adaptor,"rule simple_type");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
		RewriteRuleSubtreeStream stream_logical_or_expr=new RewriteRuleSubtreeStream(adaptor,"rule logical_or_expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:469:2: ( quantifier LCURLY simple_type IDENTIFIER RCURLY expr -> ^( QUANTIFIER_EXPR quantifier simple_type IDENTIFIER expr ) | quantifier LCURLY simple_type IDENTIFIER BAR logical_or_expr RCURLY expr -> ^( QUANTIFIER_EXPR quantifier simple_type IDENTIFIER BAR logical_or_expr expr ) )
			int alt70=2;
			int LA70_0 = input.LA(1);
			if ( (LA70_0==FORALL) ) {
				int LA70_1 = input.LA(2);
				if ( (LA70_1==LCURLY) ) {
					int LA70_3 = input.LA(3);
					if ( (LA70_3==BOOLEAN||LA70_3==CHAR||LA70_3==DOUBLE||LA70_3==FLOAT||LA70_3==INT||LA70_3==VOID) ) {
						int LA70_4 = input.LA(4);
						if ( (LA70_4==IDENTIFIER) ) {
							int LA70_5 = input.LA(5);
							if ( (LA70_5==RCURLY) ) {
								alt70=1;
							}
							else if ( (LA70_5==BAR) ) {
								alt70=2;
							}

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

						}

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

					}

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

				}

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

			}
			else if ( (LA70_0==EXISTS) ) {
				int LA70_2 = input.LA(2);
				if ( (LA70_2==LCURLY) ) {
					int LA70_3 = input.LA(3);
					if ( (LA70_3==BOOLEAN||LA70_3==CHAR||LA70_3==DOUBLE||LA70_3==FLOAT||LA70_3==INT||LA70_3==VOID) ) {
						int LA70_4 = input.LA(4);
						if ( (LA70_4==IDENTIFIER) ) {
							int LA70_5 = input.LA(5);
							if ( (LA70_5==RCURLY) ) {
								alt70=1;
							}
							else if ( (LA70_5==BAR) ) {
								alt70=2;
							}

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

						}

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

					}

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

				}

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

			}

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

			switch (alt70) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:469:4: quantifier LCURLY simple_type IDENTIFIER RCURLY expr
					{
					pushFollow(FOLLOW_quantifier_in_quantifier_expr3157);
					quantifier320=quantifier();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_quantifier.add(quantifier320.getTree());
					LCURLY321=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_quantifier_expr3159); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY321);

					pushFollow(FOLLOW_simple_type_in_quantifier_expr3161);
					simple_type322=simple_type();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_simple_type.add(simple_type322.getTree());
					IDENTIFIER323=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_quantifier_expr3163); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER323);

					RCURLY324=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_quantifier_expr3165); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY324);

					pushFollow(FOLLOW_expr_in_quantifier_expr3167);
					expr325=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr325.getTree());
					// AST REWRITE
					// elements: expr, IDENTIFIER, simple_type, quantifier
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 470:3: -> ^( QUANTIFIER_EXPR quantifier simple_type IDENTIFIER expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:470:6: ^( QUANTIFIER_EXPR quantifier simple_type IDENTIFIER expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(QUANTIFIER_EXPR, "QUANTIFIER_EXPR"), root_1);
						adaptor.addChild(root_1, stream_quantifier.nextTree());
						adaptor.addChild(root_1, stream_simple_type.nextTree());
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						adaptor.addChild(root_1, stream_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:471:4: quantifier LCURLY simple_type IDENTIFIER BAR logical_or_expr RCURLY expr
					{
					pushFollow(FOLLOW_quantifier_in_quantifier_expr3188);
					quantifier326=quantifier();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_quantifier.add(quantifier326.getTree());
					LCURLY327=(Token)match(input,LCURLY,FOLLOW_LCURLY_in_quantifier_expr3190); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LCURLY.add(LCURLY327);

					pushFollow(FOLLOW_simple_type_in_quantifier_expr3192);
					simple_type328=simple_type();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_simple_type.add(simple_type328.getTree());
					IDENTIFIER329=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_quantifier_expr3194); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER329);

					BAR330=(Token)match(input,BAR,FOLLOW_BAR_in_quantifier_expr3196); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_BAR.add(BAR330);

					pushFollow(FOLLOW_logical_or_expr_in_quantifier_expr3198);
					logical_or_expr331=logical_or_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_logical_or_expr.add(logical_or_expr331.getTree());
					RCURLY332=(Token)match(input,RCURLY,FOLLOW_RCURLY_in_quantifier_expr3200); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RCURLY.add(RCURLY332);

					pushFollow(FOLLOW_expr_in_quantifier_expr3202);
					expr333=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr333.getTree());
					// AST REWRITE
					// elements: BAR, expr, IDENTIFIER, quantifier, logical_or_expr, simple_type
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 472:3: -> ^( QUANTIFIER_EXPR quantifier simple_type IDENTIFIER BAR logical_or_expr expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:472:6: ^( QUANTIFIER_EXPR quantifier simple_type IDENTIFIER BAR logical_or_expr expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(QUANTIFIER_EXPR, "QUANTIFIER_EXPR"), root_1);
						adaptor.addChild(root_1, stream_quantifier.nextTree());
						adaptor.addChild(root_1, stream_simple_type.nextTree());
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						adaptor.addChild(root_1, stream_BAR.nextNode());
						adaptor.addChild(root_1, stream_logical_or_expr.nextTree());
						adaptor.addChild(root_1, stream_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "quantifier_expr"


	public static class quantifier_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "quantifier"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:475:1: quantifier : ( FORALL -> ^( QUANTIFIER FORALL ) | EXISTS -> ^( QUANTIFIER EXISTS ) );
	public final PragmaStringParser.quantifier_return quantifier() throws RecognitionException {
		PragmaStringParser.quantifier_return retval = new PragmaStringParser.quantifier_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token FORALL334=null;
		Token EXISTS335=null;

		Object FORALL334_tree=null;
		Object EXISTS335_tree=null;
		RewriteRuleTokenStream stream_FORALL=new RewriteRuleTokenStream(adaptor,"token FORALL");
		RewriteRuleTokenStream stream_EXISTS=new RewriteRuleTokenStream(adaptor,"token EXISTS");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:476:2: ( FORALL -> ^( QUANTIFIER FORALL ) | EXISTS -> ^( QUANTIFIER EXISTS ) )
			int alt71=2;
			int LA71_0 = input.LA(1);
			if ( (LA71_0==FORALL) ) {
				alt71=1;
			}
			else if ( (LA71_0==EXISTS) ) {
				alt71=2;
			}

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

			switch (alt71) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:476:4: FORALL
					{
					FORALL334=(Token)match(input,FORALL,FOLLOW_FORALL_in_quantifier3234); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_FORALL.add(FORALL334);

					// AST REWRITE
					// elements: FORALL
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 476:11: -> ^( QUANTIFIER FORALL )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:476:14: ^( QUANTIFIER FORALL )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(QUANTIFIER, "QUANTIFIER"), root_1);
						adaptor.addChild(root_1, stream_FORALL.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:477:4: EXISTS
					{
					EXISTS335=(Token)match(input,EXISTS,FOLLOW_EXISTS_in_quantifier3247); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_EXISTS.add(EXISTS335);

					// AST REWRITE
					// elements: EXISTS
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 477:11: -> ^( QUANTIFIER EXISTS )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:477:14: ^( QUANTIFIER EXISTS )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(QUANTIFIER, "QUANTIFIER"), root_1);
						adaptor.addChild(root_1, stream_EXISTS.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "quantifier"


	public static class logical_or_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "logical_or_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:480:1: logical_or_expr : logical_and_expr ( OR logical_and_expr )* -> ^( LOGICAL_OR_EXPR logical_and_expr ( OR logical_and_expr )* ) ;
	public final PragmaStringParser.logical_or_expr_return logical_or_expr() throws RecognitionException {
		PragmaStringParser.logical_or_expr_return retval = new PragmaStringParser.logical_or_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token OR337=null;
		ParserRuleReturnScope logical_and_expr336 =null;
		ParserRuleReturnScope logical_and_expr338 =null;

		Object OR337_tree=null;
		RewriteRuleTokenStream stream_OR=new RewriteRuleTokenStream(adaptor,"token OR");
		RewriteRuleSubtreeStream stream_logical_and_expr=new RewriteRuleSubtreeStream(adaptor,"rule logical_and_expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:481:2: ( logical_and_expr ( OR logical_and_expr )* -> ^( LOGICAL_OR_EXPR logical_and_expr ( OR logical_and_expr )* ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:481:4: logical_and_expr ( OR logical_and_expr )*
			{
			pushFollow(FOLLOW_logical_and_expr_in_logical_or_expr3266);
			logical_and_expr336=logical_and_expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_logical_and_expr.add(logical_and_expr336.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:481:21: ( OR logical_and_expr )*
			loop72:
			while (true) {
				int alt72=2;
				int LA72_0 = input.LA(1);
				if ( (LA72_0==OR) ) {
					alt72=1;
				}

				switch (alt72) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:481:22: OR logical_and_expr
					{
					OR337=(Token)match(input,OR,FOLLOW_OR_in_logical_or_expr3269); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_OR.add(OR337);

					pushFollow(FOLLOW_logical_and_expr_in_logical_or_expr3271);
					logical_and_expr338=logical_and_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_logical_and_expr.add(logical_and_expr338.getTree());
					}
					break;

				default :
					break loop72;
				}
			}

			// AST REWRITE
			// elements: logical_and_expr, logical_and_expr, OR
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 482:3: -> ^( LOGICAL_OR_EXPR logical_and_expr ( OR logical_and_expr )* )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:482:6: ^( LOGICAL_OR_EXPR logical_and_expr ( OR logical_and_expr )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOGICAL_OR_EXPR, "LOGICAL_OR_EXPR"), root_1);
				adaptor.addChild(root_1, stream_logical_and_expr.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:482:41: ( OR logical_and_expr )*
				while ( stream_logical_and_expr.hasNext()||stream_OR.hasNext() ) {
					adaptor.addChild(root_1, stream_OR.nextNode());
					adaptor.addChild(root_1, stream_logical_and_expr.nextTree());
				}
				stream_logical_and_expr.reset();
				stream_OR.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "logical_or_expr"


	public static class logical_and_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "logical_and_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:485:1: logical_and_expr : equality_expr ( AND equality_expr )* -> ^( LOGICAL_AND_EXPR equality_expr ( AND equality_expr )* ) ;
	public final PragmaStringParser.logical_and_expr_return logical_and_expr() throws RecognitionException {
		PragmaStringParser.logical_and_expr_return retval = new PragmaStringParser.logical_and_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token AND340=null;
		ParserRuleReturnScope equality_expr339 =null;
		ParserRuleReturnScope equality_expr341 =null;

		Object AND340_tree=null;
		RewriteRuleTokenStream stream_AND=new RewriteRuleTokenStream(adaptor,"token AND");
		RewriteRuleSubtreeStream stream_equality_expr=new RewriteRuleSubtreeStream(adaptor,"rule equality_expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:486:2: ( equality_expr ( AND equality_expr )* -> ^( LOGICAL_AND_EXPR equality_expr ( AND equality_expr )* ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:486:4: equality_expr ( AND equality_expr )*
			{
			pushFollow(FOLLOW_equality_expr_in_logical_and_expr3302);
			equality_expr339=equality_expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_equality_expr.add(equality_expr339.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:486:18: ( AND equality_expr )*
			loop73:
			while (true) {
				int alt73=2;
				int LA73_0 = input.LA(1);
				if ( (LA73_0==AND) ) {
					alt73=1;
				}

				switch (alt73) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:486:19: AND equality_expr
					{
					AND340=(Token)match(input,AND,FOLLOW_AND_in_logical_and_expr3305); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_AND.add(AND340);

					pushFollow(FOLLOW_equality_expr_in_logical_and_expr3307);
					equality_expr341=equality_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_equality_expr.add(equality_expr341.getTree());
					}
					break;

				default :
					break loop73;
				}
			}

			// AST REWRITE
			// elements: equality_expr, equality_expr, AND
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 487:3: -> ^( LOGICAL_AND_EXPR equality_expr ( AND equality_expr )* )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:487:6: ^( LOGICAL_AND_EXPR equality_expr ( AND equality_expr )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(LOGICAL_AND_EXPR, "LOGICAL_AND_EXPR"), root_1);
				adaptor.addChild(root_1, stream_equality_expr.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:487:39: ( AND equality_expr )*
				while ( stream_equality_expr.hasNext()||stream_AND.hasNext() ) {
					adaptor.addChild(root_1, stream_AND.nextNode());
					adaptor.addChild(root_1, stream_equality_expr.nextTree());
				}
				stream_equality_expr.reset();
				stream_AND.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "logical_and_expr"


	public static class equality_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "equality_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:490:1: equality_expr : relational_expr ( equality_operator relational_expr )* -> ^( EQUALITY_EXPR relational_expr ( equality_operator relational_expr )* ) ;
	public final PragmaStringParser.equality_expr_return equality_expr() throws RecognitionException {
		PragmaStringParser.equality_expr_return retval = new PragmaStringParser.equality_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope relational_expr342 =null;
		ParserRuleReturnScope equality_operator343 =null;
		ParserRuleReturnScope relational_expr344 =null;

		RewriteRuleSubtreeStream stream_relational_expr=new RewriteRuleSubtreeStream(adaptor,"rule relational_expr");
		RewriteRuleSubtreeStream stream_equality_operator=new RewriteRuleSubtreeStream(adaptor,"rule equality_operator");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:491:2: ( relational_expr ( equality_operator relational_expr )* -> ^( EQUALITY_EXPR relational_expr ( equality_operator relational_expr )* ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:491:4: relational_expr ( equality_operator relational_expr )*
			{
			pushFollow(FOLLOW_relational_expr_in_equality_expr3338);
			relational_expr342=relational_expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_relational_expr.add(relational_expr342.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:491:20: ( equality_operator relational_expr )*
			loop74:
			while (true) {
				int alt74=2;
				int LA74_0 = input.LA(1);
				if ( (LA74_0==EQ||LA74_0==NEQ) ) {
					alt74=1;
				}

				switch (alt74) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:491:21: equality_operator relational_expr
					{
					pushFollow(FOLLOW_equality_operator_in_equality_expr3341);
					equality_operator343=equality_operator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_equality_operator.add(equality_operator343.getTree());
					pushFollow(FOLLOW_relational_expr_in_equality_expr3343);
					relational_expr344=relational_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_relational_expr.add(relational_expr344.getTree());
					}
					break;

				default :
					break loop74;
				}
			}

			// AST REWRITE
			// elements: relational_expr, relational_expr, equality_operator
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 492:3: -> ^( EQUALITY_EXPR relational_expr ( equality_operator relational_expr )* )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:492:6: ^( EQUALITY_EXPR relational_expr ( equality_operator relational_expr )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EQUALITY_EXPR, "EQUALITY_EXPR"), root_1);
				adaptor.addChild(root_1, stream_relational_expr.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:492:38: ( equality_operator relational_expr )*
				while ( stream_relational_expr.hasNext()||stream_equality_operator.hasNext() ) {
					adaptor.addChild(root_1, stream_equality_operator.nextTree());
					adaptor.addChild(root_1, stream_relational_expr.nextTree());
				}
				stream_relational_expr.reset();
				stream_equality_operator.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "equality_expr"


	public static class equality_operator_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "equality_operator"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:495:1: equality_operator : ( EQ | NEQ );
	public final PragmaStringParser.equality_operator_return equality_operator() throws RecognitionException {
		PragmaStringParser.equality_operator_return retval = new PragmaStringParser.equality_operator_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set345=null;

		Object set345_tree=null;

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:496:2: ( EQ | NEQ )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:
			{
			root_0 = (Object)adaptor.nil();


			set345=input.LT(1);
			if ( input.LA(1)==EQ||input.LA(1)==NEQ ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set345));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "equality_operator"


	public static class relational_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "relational_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:500:1: relational_expr : additive_expr ( relational_operator additive_expr )* -> ^( RELATIONAL_EXPR additive_expr ( relational_operator additive_expr )* ) ;
	public final PragmaStringParser.relational_expr_return relational_expr() throws RecognitionException {
		PragmaStringParser.relational_expr_return retval = new PragmaStringParser.relational_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope additive_expr346 =null;
		ParserRuleReturnScope relational_operator347 =null;
		ParserRuleReturnScope additive_expr348 =null;

		RewriteRuleSubtreeStream stream_additive_expr=new RewriteRuleSubtreeStream(adaptor,"rule additive_expr");
		RewriteRuleSubtreeStream stream_relational_operator=new RewriteRuleSubtreeStream(adaptor,"rule relational_operator");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:501:2: ( additive_expr ( relational_operator additive_expr )* -> ^( RELATIONAL_EXPR additive_expr ( relational_operator additive_expr )* ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:501:4: additive_expr ( relational_operator additive_expr )*
			{
			pushFollow(FOLLOW_additive_expr_in_relational_expr3390);
			additive_expr346=additive_expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_additive_expr.add(additive_expr346.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:501:18: ( relational_operator additive_expr )*
			loop75:
			while (true) {
				int alt75=2;
				int LA75_0 = input.LA(1);
				if ( ((LA75_0 >= GT && LA75_0 <= GTE)||(LA75_0 >= LT && LA75_0 <= LTE)) ) {
					alt75=1;
				}

				switch (alt75) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:501:19: relational_operator additive_expr
					{
					pushFollow(FOLLOW_relational_operator_in_relational_expr3393);
					relational_operator347=relational_operator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_relational_operator.add(relational_operator347.getTree());
					pushFollow(FOLLOW_additive_expr_in_relational_expr3395);
					additive_expr348=additive_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_additive_expr.add(additive_expr348.getTree());
					}
					break;

				default :
					break loop75;
				}
			}

			// AST REWRITE
			// elements: relational_operator, additive_expr, additive_expr
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 502:3: -> ^( RELATIONAL_EXPR additive_expr ( relational_operator additive_expr )* )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:502:6: ^( RELATIONAL_EXPR additive_expr ( relational_operator additive_expr )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(RELATIONAL_EXPR, "RELATIONAL_EXPR"), root_1);
				adaptor.addChild(root_1, stream_additive_expr.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:502:38: ( relational_operator additive_expr )*
				while ( stream_relational_operator.hasNext()||stream_additive_expr.hasNext() ) {
					adaptor.addChild(root_1, stream_relational_operator.nextTree());
					adaptor.addChild(root_1, stream_additive_expr.nextTree());
				}
				stream_relational_operator.reset();
				stream_additive_expr.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "relational_expr"


	public static class relational_operator_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "relational_operator"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:505:1: relational_operator : ( LT | GT | LTE | GTE );
	public final PragmaStringParser.relational_operator_return relational_operator() throws RecognitionException {
		PragmaStringParser.relational_operator_return retval = new PragmaStringParser.relational_operator_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set349=null;

		Object set349_tree=null;

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:506:2: ( LT | GT | LTE | GTE )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:
			{
			root_0 = (Object)adaptor.nil();


			set349=input.LT(1);
			if ( (input.LA(1) >= GT && input.LA(1) <= GTE)||(input.LA(1) >= LT && input.LA(1) <= LTE) ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set349));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "relational_operator"


	public static class additive_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "additive_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:512:1: additive_expr : multi_expr ( additive_operator multi_expr )* -> ^( ADDITIVE_EXPR multi_expr ( additive_operator multi_expr )* ) ;
	public final PragmaStringParser.additive_expr_return additive_expr() throws RecognitionException {
		PragmaStringParser.additive_expr_return retval = new PragmaStringParser.additive_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope multi_expr350 =null;
		ParserRuleReturnScope additive_operator351 =null;
		ParserRuleReturnScope multi_expr352 =null;

		RewriteRuleSubtreeStream stream_additive_operator=new RewriteRuleSubtreeStream(adaptor,"rule additive_operator");
		RewriteRuleSubtreeStream stream_multi_expr=new RewriteRuleSubtreeStream(adaptor,"rule multi_expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:513:2: ( multi_expr ( additive_operator multi_expr )* -> ^( ADDITIVE_EXPR multi_expr ( additive_operator multi_expr )* ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:513:4: multi_expr ( additive_operator multi_expr )*
			{
			pushFollow(FOLLOW_multi_expr_in_additive_expr3452);
			multi_expr350=multi_expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_multi_expr.add(multi_expr350.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:513:15: ( additive_operator multi_expr )*
			loop76:
			while (true) {
				int alt76=2;
				int LA76_0 = input.LA(1);
				if ( (LA76_0==PLUS) ) {
					int LA76_38 = input.LA(2);
					if ( (synpred112_PragmaString()) ) {
						alt76=1;
					}

				}
				else if ( (LA76_0==SUB) ) {
					int LA76_39 = input.LA(2);
					if ( (synpred112_PragmaString()) ) {
						alt76=1;
					}

				}

				switch (alt76) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:513:16: additive_operator multi_expr
					{
					pushFollow(FOLLOW_additive_operator_in_additive_expr3455);
					additive_operator351=additive_operator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_additive_operator.add(additive_operator351.getTree());
					pushFollow(FOLLOW_multi_expr_in_additive_expr3457);
					multi_expr352=multi_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_multi_expr.add(multi_expr352.getTree());
					}
					break;

				default :
					break loop76;
				}
			}

			// AST REWRITE
			// elements: multi_expr, multi_expr, additive_operator
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 514:3: -> ^( ADDITIVE_EXPR multi_expr ( additive_operator multi_expr )* )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:514:6: ^( ADDITIVE_EXPR multi_expr ( additive_operator multi_expr )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(ADDITIVE_EXPR, "ADDITIVE_EXPR"), root_1);
				adaptor.addChild(root_1, stream_multi_expr.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:514:33: ( additive_operator multi_expr )*
				while ( stream_multi_expr.hasNext()||stream_additive_operator.hasNext() ) {
					adaptor.addChild(root_1, stream_additive_operator.nextTree());
					adaptor.addChild(root_1, stream_multi_expr.nextTree());
				}
				stream_multi_expr.reset();
				stream_additive_operator.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "additive_expr"


	public static class additive_operator_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "additive_operator"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:517:1: additive_operator : ( PLUS | SUB );
	public final PragmaStringParser.additive_operator_return additive_operator() throws RecognitionException {
		PragmaStringParser.additive_operator_return retval = new PragmaStringParser.additive_operator_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set353=null;

		Object set353_tree=null;

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:518:2: ( PLUS | SUB )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:
			{
			root_0 = (Object)adaptor.nil();


			set353=input.LT(1);
			if ( input.LA(1)==PLUS||input.LA(1)==SUB ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set353));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "additive_operator"


	public static class multi_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "multi_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:522:1: multi_expr : unary_expr ( multi_operator unary_expr )* -> ^( MULTIPLICATIVE_EXPR unary_expr ( multi_operator unary_expr )* ) ;
	public final PragmaStringParser.multi_expr_return multi_expr() throws RecognitionException {
		PragmaStringParser.multi_expr_return retval = new PragmaStringParser.multi_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope unary_expr354 =null;
		ParserRuleReturnScope multi_operator355 =null;
		ParserRuleReturnScope unary_expr356 =null;

		RewriteRuleSubtreeStream stream_unary_expr=new RewriteRuleSubtreeStream(adaptor,"rule unary_expr");
		RewriteRuleSubtreeStream stream_multi_operator=new RewriteRuleSubtreeStream(adaptor,"rule multi_operator");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:523:2: ( unary_expr ( multi_operator unary_expr )* -> ^( MULTIPLICATIVE_EXPR unary_expr ( multi_operator unary_expr )* ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:523:4: unary_expr ( multi_operator unary_expr )*
			{
			pushFollow(FOLLOW_unary_expr_in_multi_expr3504);
			unary_expr354=unary_expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_unary_expr.add(unary_expr354.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:523:15: ( multi_operator unary_expr )*
			loop77:
			while (true) {
				int alt77=2;
				int LA77_0 = input.LA(1);
				if ( (LA77_0==MULTI) ) {
					int LA77_9 = input.LA(2);
					if ( (synpred114_PragmaString()) ) {
						alt77=1;
					}

				}
				else if ( (LA77_0==DIV||LA77_0==MOD) ) {
					alt77=1;
				}

				switch (alt77) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:523:16: multi_operator unary_expr
					{
					pushFollow(FOLLOW_multi_operator_in_multi_expr3507);
					multi_operator355=multi_operator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_multi_operator.add(multi_operator355.getTree());
					pushFollow(FOLLOW_unary_expr_in_multi_expr3509);
					unary_expr356=unary_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_unary_expr.add(unary_expr356.getTree());
					}
					break;

				default :
					break loop77;
				}
			}

			// AST REWRITE
			// elements: multi_operator, unary_expr, unary_expr
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 524:3: -> ^( MULTIPLICATIVE_EXPR unary_expr ( multi_operator unary_expr )* )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:524:6: ^( MULTIPLICATIVE_EXPR unary_expr ( multi_operator unary_expr )* )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(MULTIPLICATIVE_EXPR, "MULTIPLICATIVE_EXPR"), root_1);
				adaptor.addChild(root_1, stream_unary_expr.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:524:39: ( multi_operator unary_expr )*
				while ( stream_multi_operator.hasNext()||stream_unary_expr.hasNext() ) {
					adaptor.addChild(root_1, stream_multi_operator.nextTree());
					adaptor.addChild(root_1, stream_unary_expr.nextTree());
				}
				stream_multi_operator.reset();
				stream_unary_expr.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "multi_expr"


	public static class multi_operator_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "multi_operator"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:527:1: multi_operator : ( MULTI | DIV | MOD );
	public final PragmaStringParser.multi_operator_return multi_operator() throws RecognitionException {
		PragmaStringParser.multi_operator_return retval = new PragmaStringParser.multi_operator_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set357=null;

		Object set357_tree=null;

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:528:2: ( MULTI | DIV | MOD )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:
			{
			root_0 = (Object)adaptor.nil();


			set357=input.LT(1);
			if ( input.LA(1)==DIV||input.LA(1)==MOD||input.LA(1)==MULTI ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set357));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "multi_operator"


	public static class assign_operator_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "assign_operator"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:533:1: assign_operator : ( ASSIGN | PLUS_ASSIGN | SUB_ASSIGN | MULTI_ASSIGN | DIV_ASSIGN | MOD_ASSIGN );
	public final PragmaStringParser.assign_operator_return assign_operator() throws RecognitionException {
		PragmaStringParser.assign_operator_return retval = new PragmaStringParser.assign_operator_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set358=null;

		Object set358_tree=null;

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:534:2: ( ASSIGN | PLUS_ASSIGN | SUB_ASSIGN | MULTI_ASSIGN | DIV_ASSIGN | MOD_ASSIGN )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:
			{
			root_0 = (Object)adaptor.nil();


			set358=input.LT(1);
			if ( input.LA(1)==ASSIGN||input.LA(1)==DIV_ASSIGN||input.LA(1)==MOD_ASSIGN||input.LA(1)==MULTI_ASSIGN||input.LA(1)==PLUS_ASSIGN||input.LA(1)==SUB_ASSIGN ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set358));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "assign_operator"


	public static class unary_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "unary_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:542:1: unary_expr : ( postfix_expr -> ^( UNARY_EXPR postfix_expr ) | unary_operator unary_expr -> ^( UNARY_EXPR unary_operator unary_expr ) | self_change_op unary_expr -> ^( UNARY_EXPR self_change_op unary_expr ) | SIZEOF LPAREN type_name RPAREN -> ^( UNARY_EXPR SIZEOF type_name ) | SIZEOF unary_expr -> ^( UNARY_EXPR SIZEOF unary_expr ) | LPAREN type_name RPAREN unary_expr -> ^( UNARY_EXPR CAST type_name unary_expr ) );
	public final PragmaStringParser.unary_expr_return unary_expr() throws RecognitionException {
		PragmaStringParser.unary_expr_return retval = new PragmaStringParser.unary_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token SIZEOF364=null;
		Token LPAREN365=null;
		Token RPAREN367=null;
		Token SIZEOF368=null;
		Token LPAREN370=null;
		Token RPAREN372=null;
		ParserRuleReturnScope postfix_expr359 =null;
		ParserRuleReturnScope unary_operator360 =null;
		ParserRuleReturnScope unary_expr361 =null;
		ParserRuleReturnScope self_change_op362 =null;
		ParserRuleReturnScope unary_expr363 =null;
		ParserRuleReturnScope type_name366 =null;
		ParserRuleReturnScope unary_expr369 =null;
		ParserRuleReturnScope type_name371 =null;
		ParserRuleReturnScope unary_expr373 =null;

		Object SIZEOF364_tree=null;
		Object LPAREN365_tree=null;
		Object RPAREN367_tree=null;
		Object SIZEOF368_tree=null;
		Object LPAREN370_tree=null;
		Object RPAREN372_tree=null;
		RewriteRuleTokenStream stream_SIZEOF=new RewriteRuleTokenStream(adaptor,"token SIZEOF");
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleSubtreeStream stream_unary_expr=new RewriteRuleSubtreeStream(adaptor,"rule unary_expr");
		RewriteRuleSubtreeStream stream_unary_operator=new RewriteRuleSubtreeStream(adaptor,"rule unary_operator");
		RewriteRuleSubtreeStream stream_self_change_op=new RewriteRuleSubtreeStream(adaptor,"rule self_change_op");
		RewriteRuleSubtreeStream stream_postfix_expr=new RewriteRuleSubtreeStream(adaptor,"rule postfix_expr");
		RewriteRuleSubtreeStream stream_type_name=new RewriteRuleSubtreeStream(adaptor,"rule type_name");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:543:2: ( postfix_expr -> ^( UNARY_EXPR postfix_expr ) | unary_operator unary_expr -> ^( UNARY_EXPR unary_operator unary_expr ) | self_change_op unary_expr -> ^( UNARY_EXPR self_change_op unary_expr ) | SIZEOF LPAREN type_name RPAREN -> ^( UNARY_EXPR SIZEOF type_name ) | SIZEOF unary_expr -> ^( UNARY_EXPR SIZEOF unary_expr ) | LPAREN type_name RPAREN unary_expr -> ^( UNARY_EXPR CAST type_name unary_expr ) )
			int alt78=6;
			switch ( input.LA(1) ) {
			case CHAR_LITERAL:
			case DERIVATIVE:
			case FALSE:
			case IDENTIFIER:
			case INT_LITERAL:
			case REAL_LITERAL:
			case SPEC:
			case STRING_LITERAL:
			case SYS_VAR:
			case TRUE:
				{
				alt78=1;
				}
				break;
			case LPAREN:
				{
				int LA78_9 = input.LA(2);
				if ( (synpred122_PragmaString()) ) {
					alt78=1;
				}
				else if ( (true) ) {
					alt78=6;
				}

				}
				break;
			case ADDR_OF:
			case MULTI:
			case NOT:
			case PLUS:
			case SUB:
				{
				alt78=2;
				}
				break;
			case DOUBLE_PLUS:
			case DOUBLE_SUB:
				{
				alt78=3;
				}
				break;
			case SIZEOF:
				{
				int LA78_19 = input.LA(2);
				if ( (synpred125_PragmaString()) ) {
					alt78=4;
				}
				else if ( (synpred126_PragmaString()) ) {
					alt78=5;
				}

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

				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 78, 0, input);
				throw nvae;
			}
			switch (alt78) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:543:4: postfix_expr
					{
					pushFollow(FOLLOW_postfix_expr_in_unary_expr3598);
					postfix_expr359=postfix_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_postfix_expr.add(postfix_expr359.getTree());
					// AST REWRITE
					// elements: postfix_expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 543:17: -> ^( UNARY_EXPR postfix_expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:543:20: ^( UNARY_EXPR postfix_expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(UNARY_EXPR, "UNARY_EXPR"), root_1);
						adaptor.addChild(root_1, stream_postfix_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:544:4: unary_operator unary_expr
					{
					pushFollow(FOLLOW_unary_operator_in_unary_expr3611);
					unary_operator360=unary_operator();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_unary_operator.add(unary_operator360.getTree());
					pushFollow(FOLLOW_unary_expr_in_unary_expr3613);
					unary_expr361=unary_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_unary_expr.add(unary_expr361.getTree());
					// AST REWRITE
					// elements: unary_operator, unary_expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 544:30: -> ^( UNARY_EXPR unary_operator unary_expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:544:33: ^( UNARY_EXPR unary_operator unary_expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(UNARY_EXPR, "UNARY_EXPR"), root_1);
						adaptor.addChild(root_1, stream_unary_operator.nextTree());
						adaptor.addChild(root_1, stream_unary_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:545:4: self_change_op unary_expr
					{
					pushFollow(FOLLOW_self_change_op_in_unary_expr3628);
					self_change_op362=self_change_op();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_self_change_op.add(self_change_op362.getTree());
					pushFollow(FOLLOW_unary_expr_in_unary_expr3630);
					unary_expr363=unary_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_unary_expr.add(unary_expr363.getTree());
					// AST REWRITE
					// elements: self_change_op, unary_expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 545:30: -> ^( UNARY_EXPR self_change_op unary_expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:545:33: ^( UNARY_EXPR self_change_op unary_expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(UNARY_EXPR, "UNARY_EXPR"), root_1);
						adaptor.addChild(root_1, stream_self_change_op.nextTree());
						adaptor.addChild(root_1, stream_unary_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:546:4: SIZEOF LPAREN type_name RPAREN
					{
					SIZEOF364=(Token)match(input,SIZEOF,FOLLOW_SIZEOF_in_unary_expr3645); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SIZEOF.add(SIZEOF364);

					LPAREN365=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_unary_expr3647); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN365);

					pushFollow(FOLLOW_type_name_in_unary_expr3649);
					type_name366=type_name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_type_name.add(type_name366.getTree());
					RPAREN367=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_unary_expr3651); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN367);

					// AST REWRITE
					// elements: type_name, SIZEOF
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 546:35: -> ^( UNARY_EXPR SIZEOF type_name )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:546:38: ^( UNARY_EXPR SIZEOF type_name )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(UNARY_EXPR, "UNARY_EXPR"), root_1);
						adaptor.addChild(root_1, stream_SIZEOF.nextNode());
						adaptor.addChild(root_1, stream_type_name.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 5 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:547:4: SIZEOF unary_expr
					{
					SIZEOF368=(Token)match(input,SIZEOF,FOLLOW_SIZEOF_in_unary_expr3666); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SIZEOF.add(SIZEOF368);

					pushFollow(FOLLOW_unary_expr_in_unary_expr3668);
					unary_expr369=unary_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_unary_expr.add(unary_expr369.getTree());
					// AST REWRITE
					// elements: SIZEOF, unary_expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 547:22: -> ^( UNARY_EXPR SIZEOF unary_expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:547:25: ^( UNARY_EXPR SIZEOF unary_expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(UNARY_EXPR, "UNARY_EXPR"), root_1);
						adaptor.addChild(root_1, stream_SIZEOF.nextNode());
						adaptor.addChild(root_1, stream_unary_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 6 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:548:4: LPAREN type_name RPAREN unary_expr
					{
					LPAREN370=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_unary_expr3683); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN370);

					pushFollow(FOLLOW_type_name_in_unary_expr3685);
					type_name371=type_name();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_type_name.add(type_name371.getTree());
					RPAREN372=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_unary_expr3687); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN372);

					pushFollow(FOLLOW_unary_expr_in_unary_expr3689);
					unary_expr373=unary_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_unary_expr.add(unary_expr373.getTree());
					// AST REWRITE
					// elements: unary_expr, type_name
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 548:39: -> ^( UNARY_EXPR CAST type_name unary_expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:548:42: ^( UNARY_EXPR CAST type_name unary_expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(UNARY_EXPR, "UNARY_EXPR"), root_1);
						adaptor.addChild(root_1, (Object)adaptor.create(CAST, "CAST"));
						adaptor.addChild(root_1, stream_type_name.nextTree());
						adaptor.addChild(root_1, stream_unary_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "unary_expr"


	public static class unary_operator_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "unary_operator"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:552:1: unary_operator : ( PLUS -> ^( UNARY_OP PLUS ) | SUB -> ^( UNARY_OP SUB ) | NOT -> ^( UNARY_OP NOT ) | MULTI -> ^( UNARY_OP MULTI ) | ADDR_OF -> ^( UNARY_OP ADDR_OF ) );
	public final PragmaStringParser.unary_operator_return unary_operator() throws RecognitionException {
		PragmaStringParser.unary_operator_return retval = new PragmaStringParser.unary_operator_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token PLUS374=null;
		Token SUB375=null;
		Token NOT376=null;
		Token MULTI377=null;
		Token ADDR_OF378=null;

		Object PLUS374_tree=null;
		Object SUB375_tree=null;
		Object NOT376_tree=null;
		Object MULTI377_tree=null;
		Object ADDR_OF378_tree=null;
		RewriteRuleTokenStream stream_ADDR_OF=new RewriteRuleTokenStream(adaptor,"token ADDR_OF");
		RewriteRuleTokenStream stream_SUB=new RewriteRuleTokenStream(adaptor,"token SUB");
		RewriteRuleTokenStream stream_PLUS=new RewriteRuleTokenStream(adaptor,"token PLUS");
		RewriteRuleTokenStream stream_MULTI=new RewriteRuleTokenStream(adaptor,"token MULTI");
		RewriteRuleTokenStream stream_NOT=new RewriteRuleTokenStream(adaptor,"token NOT");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:553:2: ( PLUS -> ^( UNARY_OP PLUS ) | SUB -> ^( UNARY_OP SUB ) | NOT -> ^( UNARY_OP NOT ) | MULTI -> ^( UNARY_OP MULTI ) | ADDR_OF -> ^( UNARY_OP ADDR_OF ) )
			int alt79=5;
			switch ( input.LA(1) ) {
			case PLUS:
				{
				alt79=1;
				}
				break;
			case SUB:
				{
				alt79=2;
				}
				break;
			case NOT:
				{
				alt79=3;
				}
				break;
			case MULTI:
				{
				alt79=4;
				}
				break;
			case ADDR_OF:
				{
				alt79=5;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 79, 0, input);
				throw nvae;
			}
			switch (alt79) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:553:4: PLUS
					{
					PLUS374=(Token)match(input,PLUS,FOLLOW_PLUS_in_unary_operator3714); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_PLUS.add(PLUS374);

					// AST REWRITE
					// elements: PLUS
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 553:9: -> ^( UNARY_OP PLUS )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:553:12: ^( UNARY_OP PLUS )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(UNARY_OP, "UNARY_OP"), root_1);
						adaptor.addChild(root_1, stream_PLUS.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:554:4: SUB
					{
					SUB375=(Token)match(input,SUB,FOLLOW_SUB_in_unary_operator3727); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SUB.add(SUB375);

					// AST REWRITE
					// elements: SUB
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 554:8: -> ^( UNARY_OP SUB )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:554:11: ^( UNARY_OP SUB )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(UNARY_OP, "UNARY_OP"), root_1);
						adaptor.addChild(root_1, stream_SUB.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:555:4: NOT
					{
					NOT376=(Token)match(input,NOT,FOLLOW_NOT_in_unary_operator3740); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_NOT.add(NOT376);

					// AST REWRITE
					// elements: NOT
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 555:8: -> ^( UNARY_OP NOT )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:555:11: ^( UNARY_OP NOT )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(UNARY_OP, "UNARY_OP"), root_1);
						adaptor.addChild(root_1, stream_NOT.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:556:4: MULTI
					{
					MULTI377=(Token)match(input,MULTI,FOLLOW_MULTI_in_unary_operator3753); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_MULTI.add(MULTI377);

					// AST REWRITE
					// elements: MULTI
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 556:10: -> ^( UNARY_OP MULTI )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:556:13: ^( UNARY_OP MULTI )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(UNARY_OP, "UNARY_OP"), root_1);
						adaptor.addChild(root_1, stream_MULTI.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 5 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:557:4: ADDR_OF
					{
					ADDR_OF378=(Token)match(input,ADDR_OF,FOLLOW_ADDR_OF_in_unary_operator3766); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ADDR_OF.add(ADDR_OF378);

					// AST REWRITE
					// elements: ADDR_OF
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 557:12: -> ^( UNARY_OP ADDR_OF )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:557:15: ^( UNARY_OP ADDR_OF )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(UNARY_OP, "UNARY_OP"), root_1);
						adaptor.addChild(root_1, stream_ADDR_OF.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "unary_operator"


	public static class spec_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "spec_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:560:1: spec_expr : SPEC DOT IDENTIFIER -> ^( SPEC_EXPR IDENTIFIER ) ;
	public final PragmaStringParser.spec_expr_return spec_expr() throws RecognitionException {
		PragmaStringParser.spec_expr_return retval = new PragmaStringParser.spec_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token SPEC379=null;
		Token DOT380=null;
		Token IDENTIFIER381=null;

		Object SPEC379_tree=null;
		Object DOT380_tree=null;
		Object IDENTIFIER381_tree=null;
		RewriteRuleTokenStream stream_SPEC=new RewriteRuleTokenStream(adaptor,"token SPEC");
		RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:561:2: ( SPEC DOT IDENTIFIER -> ^( SPEC_EXPR IDENTIFIER ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:561:4: SPEC DOT IDENTIFIER
			{
			SPEC379=(Token)match(input,SPEC,FOLLOW_SPEC_in_spec_expr3787); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_SPEC.add(SPEC379);

			DOT380=(Token)match(input,DOT,FOLLOW_DOT_in_spec_expr3789); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_DOT.add(DOT380);

			IDENTIFIER381=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_spec_expr3791); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER381);

			// AST REWRITE
			// elements: IDENTIFIER
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 561:24: -> ^( SPEC_EXPR IDENTIFIER )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:561:27: ^( SPEC_EXPR IDENTIFIER )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SPEC_EXPR, "SPEC_EXPR"), root_1);
				adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "spec_expr"


	public static class postfix_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "postfix_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:564:1: postfix_expr : primary_expr ( postfix_expr_suffix )? -> ^( POSTFIX_EXPR primary_expr ( postfix_expr_suffix )? ) ;
	public final PragmaStringParser.postfix_expr_return postfix_expr() throws RecognitionException {
		PragmaStringParser.postfix_expr_return retval = new PragmaStringParser.postfix_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		ParserRuleReturnScope primary_expr382 =null;
		ParserRuleReturnScope postfix_expr_suffix383 =null;

		RewriteRuleSubtreeStream stream_postfix_expr_suffix=new RewriteRuleSubtreeStream(adaptor,"rule postfix_expr_suffix");
		RewriteRuleSubtreeStream stream_primary_expr=new RewriteRuleSubtreeStream(adaptor,"rule primary_expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:566:2: ( primary_expr ( postfix_expr_suffix )? -> ^( POSTFIX_EXPR primary_expr ( postfix_expr_suffix )? ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:566:4: primary_expr ( postfix_expr_suffix )?
			{
			pushFollow(FOLLOW_primary_expr_in_postfix_expr3813);
			primary_expr382=primary_expr();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_primary_expr.add(primary_expr382.getTree());
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:566:17: ( postfix_expr_suffix )?
			int alt80=2;
			switch ( input.LA(1) ) {
				case ARROW:
				case AT:
				case DOT:
				case LSQUARE:
					{
					alt80=1;
					}
					break;
				case DOUBLE_PLUS:
					{
					int LA80_4 = input.LA(2);
					if ( (synpred131_PragmaString()) ) {
						alt80=1;
					}
					}
					break;
				case DOUBLE_SUB:
					{
					int LA80_5 = input.LA(2);
					if ( (synpred131_PragmaString()) ) {
						alt80=1;
					}
					}
					break;
			}
			switch (alt80) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:566:17: postfix_expr_suffix
					{
					pushFollow(FOLLOW_postfix_expr_suffix_in_postfix_expr3815);
					postfix_expr_suffix383=postfix_expr_suffix();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_postfix_expr_suffix.add(postfix_expr_suffix383.getTree());
					}
					break;

			}

			// AST REWRITE
			// elements: postfix_expr_suffix, primary_expr
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 567:3: -> ^( POSTFIX_EXPR primary_expr ( postfix_expr_suffix )? )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:567:6: ^( POSTFIX_EXPR primary_expr ( postfix_expr_suffix )? )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(POSTFIX_EXPR, "POSTFIX_EXPR"), root_1);
				adaptor.addChild(root_1, stream_primary_expr.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:567:34: ( postfix_expr_suffix )?
				if ( stream_postfix_expr_suffix.hasNext() ) {
					adaptor.addChild(root_1, stream_postfix_expr_suffix.nextTree());
				}
				stream_postfix_expr_suffix.reset();

				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "postfix_expr"


	public static class postfix_expr_suffix_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "postfix_expr_suffix"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:570:1: postfix_expr_suffix : ( DOT IDENTIFIER ( postfix_expr_suffix )? -> ^( POSTFIX_EXPR_SUFFIX DOT IDENTIFIER ( postfix_expr_suffix )? ) | ARROW IDENTIFIER ( postfix_expr_suffix )? -> ^( POSTFIX_EXPR_SUFFIX ARROW IDENTIFIER ( postfix_expr_suffix )? ) | LSQUARE expr RSQUARE ( postfix_expr_suffix )? -> ^( POSTFIX_EXPR_SUFFIX expr RSQUARE ( postfix_expr_suffix )? ) | self_change_op ( postfix_expr_suffix )? -> ^( POSTFIX_EXPR_SUFFIX self_change_op ( postfix_expr_suffix )? ) | AT IDENTIFIER DOT IDENTIFIER ( postfix_expr_suffix )? -> ^( POSTFIX_EXPR_SUFFIX AT IDENTIFIER DOT IDENTIFIER ( postfix_expr_suffix )? ) );
	public final PragmaStringParser.postfix_expr_suffix_return postfix_expr_suffix() throws RecognitionException {
		PragmaStringParser.postfix_expr_suffix_return retval = new PragmaStringParser.postfix_expr_suffix_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token DOT384=null;
		Token IDENTIFIER385=null;
		Token ARROW387=null;
		Token IDENTIFIER388=null;
		Token LSQUARE390=null;
		Token RSQUARE392=null;
		Token AT396=null;
		Token IDENTIFIER397=null;
		Token DOT398=null;
		Token IDENTIFIER399=null;
		ParserRuleReturnScope postfix_expr_suffix386 =null;
		ParserRuleReturnScope postfix_expr_suffix389 =null;
		ParserRuleReturnScope expr391 =null;
		ParserRuleReturnScope postfix_expr_suffix393 =null;
		ParserRuleReturnScope self_change_op394 =null;
		ParserRuleReturnScope postfix_expr_suffix395 =null;
		ParserRuleReturnScope postfix_expr_suffix400 =null;

		Object DOT384_tree=null;
		Object IDENTIFIER385_tree=null;
		Object ARROW387_tree=null;
		Object IDENTIFIER388_tree=null;
		Object LSQUARE390_tree=null;
		Object RSQUARE392_tree=null;
		Object AT396_tree=null;
		Object IDENTIFIER397_tree=null;
		Object DOT398_tree=null;
		Object IDENTIFIER399_tree=null;
		RewriteRuleTokenStream stream_AT=new RewriteRuleTokenStream(adaptor,"token AT");
		RewriteRuleTokenStream stream_ARROW=new RewriteRuleTokenStream(adaptor,"token ARROW");
		RewriteRuleTokenStream stream_LSQUARE=new RewriteRuleTokenStream(adaptor,"token LSQUARE");
		RewriteRuleTokenStream stream_RSQUARE=new RewriteRuleTokenStream(adaptor,"token RSQUARE");
		RewriteRuleTokenStream stream_DOT=new RewriteRuleTokenStream(adaptor,"token DOT");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleSubtreeStream stream_self_change_op=new RewriteRuleSubtreeStream(adaptor,"rule self_change_op");
		RewriteRuleSubtreeStream stream_postfix_expr_suffix=new RewriteRuleSubtreeStream(adaptor,"rule postfix_expr_suffix");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:571:2: ( DOT IDENTIFIER ( postfix_expr_suffix )? -> ^( POSTFIX_EXPR_SUFFIX DOT IDENTIFIER ( postfix_expr_suffix )? ) | ARROW IDENTIFIER ( postfix_expr_suffix )? -> ^( POSTFIX_EXPR_SUFFIX ARROW IDENTIFIER ( postfix_expr_suffix )? ) | LSQUARE expr RSQUARE ( postfix_expr_suffix )? -> ^( POSTFIX_EXPR_SUFFIX expr RSQUARE ( postfix_expr_suffix )? ) | self_change_op ( postfix_expr_suffix )? -> ^( POSTFIX_EXPR_SUFFIX self_change_op ( postfix_expr_suffix )? ) | AT IDENTIFIER DOT IDENTIFIER ( postfix_expr_suffix )? -> ^( POSTFIX_EXPR_SUFFIX AT IDENTIFIER DOT IDENTIFIER ( postfix_expr_suffix )? ) )
			int alt86=5;
			switch ( input.LA(1) ) {
			case DOT:
				{
				alt86=1;
				}
				break;
			case ARROW:
				{
				alt86=2;
				}
				break;
			case LSQUARE:
				{
				alt86=3;
				}
				break;
			case DOUBLE_PLUS:
			case DOUBLE_SUB:
				{
				alt86=4;
				}
				break;
			case AT:
				{
				alt86=5;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 86, 0, input);
				throw nvae;
			}
			switch (alt86) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:571:4: DOT IDENTIFIER ( postfix_expr_suffix )?
					{
					DOT384=(Token)match(input,DOT,FOLLOW_DOT_in_postfix_expr_suffix3840); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DOT.add(DOT384);

					IDENTIFIER385=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_postfix_expr_suffix3842); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER385);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:571:19: ( postfix_expr_suffix )?
					int alt81=2;
					switch ( input.LA(1) ) {
						case ARROW:
						case AT:
						case DOT:
						case LSQUARE:
							{
							alt81=1;
							}
							break;
						case DOUBLE_PLUS:
							{
							int LA81_4 = input.LA(2);
							if ( (synpred132_PragmaString()) ) {
								alt81=1;
							}
							}
							break;
						case DOUBLE_SUB:
							{
							int LA81_5 = input.LA(2);
							if ( (synpred132_PragmaString()) ) {
								alt81=1;
							}
							}
							break;
					}
					switch (alt81) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:571:19: postfix_expr_suffix
							{
							pushFollow(FOLLOW_postfix_expr_suffix_in_postfix_expr_suffix3844);
							postfix_expr_suffix386=postfix_expr_suffix();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_postfix_expr_suffix.add(postfix_expr_suffix386.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: IDENTIFIER, DOT, postfix_expr_suffix
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 572:3: -> ^( POSTFIX_EXPR_SUFFIX DOT IDENTIFIER ( postfix_expr_suffix )? )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:572:6: ^( POSTFIX_EXPR_SUFFIX DOT IDENTIFIER ( postfix_expr_suffix )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(POSTFIX_EXPR_SUFFIX, "POSTFIX_EXPR_SUFFIX"), root_1);
						adaptor.addChild(root_1, stream_DOT.nextNode());
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:572:43: ( postfix_expr_suffix )?
						if ( stream_postfix_expr_suffix.hasNext() ) {
							adaptor.addChild(root_1, stream_postfix_expr_suffix.nextTree());
						}
						stream_postfix_expr_suffix.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:573:4: ARROW IDENTIFIER ( postfix_expr_suffix )?
					{
					ARROW387=(Token)match(input,ARROW,FOLLOW_ARROW_in_postfix_expr_suffix3865); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_ARROW.add(ARROW387);

					IDENTIFIER388=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_postfix_expr_suffix3867); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER388);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:573:21: ( postfix_expr_suffix )?
					int alt82=2;
					switch ( input.LA(1) ) {
						case ARROW:
						case AT:
						case DOT:
						case LSQUARE:
							{
							alt82=1;
							}
							break;
						case DOUBLE_PLUS:
							{
							int LA82_4 = input.LA(2);
							if ( (synpred134_PragmaString()) ) {
								alt82=1;
							}
							}
							break;
						case DOUBLE_SUB:
							{
							int LA82_5 = input.LA(2);
							if ( (synpred134_PragmaString()) ) {
								alt82=1;
							}
							}
							break;
					}
					switch (alt82) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:573:21: postfix_expr_suffix
							{
							pushFollow(FOLLOW_postfix_expr_suffix_in_postfix_expr_suffix3869);
							postfix_expr_suffix389=postfix_expr_suffix();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_postfix_expr_suffix.add(postfix_expr_suffix389.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: IDENTIFIER, postfix_expr_suffix, ARROW
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 574:3: -> ^( POSTFIX_EXPR_SUFFIX ARROW IDENTIFIER ( postfix_expr_suffix )? )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:574:6: ^( POSTFIX_EXPR_SUFFIX ARROW IDENTIFIER ( postfix_expr_suffix )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(POSTFIX_EXPR_SUFFIX, "POSTFIX_EXPR_SUFFIX"), root_1);
						adaptor.addChild(root_1, stream_ARROW.nextNode());
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:574:45: ( postfix_expr_suffix )?
						if ( stream_postfix_expr_suffix.hasNext() ) {
							adaptor.addChild(root_1, stream_postfix_expr_suffix.nextTree());
						}
						stream_postfix_expr_suffix.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:575:4: LSQUARE expr RSQUARE ( postfix_expr_suffix )?
					{
					LSQUARE390=(Token)match(input,LSQUARE,FOLLOW_LSQUARE_in_postfix_expr_suffix3891); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LSQUARE.add(LSQUARE390);

					pushFollow(FOLLOW_expr_in_postfix_expr_suffix3893);
					expr391=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr391.getTree());
					RSQUARE392=(Token)match(input,RSQUARE,FOLLOW_RSQUARE_in_postfix_expr_suffix3895); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RSQUARE.add(RSQUARE392);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:575:25: ( postfix_expr_suffix )?
					int alt83=2;
					switch ( input.LA(1) ) {
						case ARROW:
						case AT:
						case DOT:
						case LSQUARE:
							{
							alt83=1;
							}
							break;
						case DOUBLE_PLUS:
							{
							int LA83_4 = input.LA(2);
							if ( (synpred136_PragmaString()) ) {
								alt83=1;
							}
							}
							break;
						case DOUBLE_SUB:
							{
							int LA83_5 = input.LA(2);
							if ( (synpred136_PragmaString()) ) {
								alt83=1;
							}
							}
							break;
					}
					switch (alt83) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:575:25: postfix_expr_suffix
							{
							pushFollow(FOLLOW_postfix_expr_suffix_in_postfix_expr_suffix3897);
							postfix_expr_suffix393=postfix_expr_suffix();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_postfix_expr_suffix.add(postfix_expr_suffix393.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: expr, RSQUARE, postfix_expr_suffix
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 576:3: -> ^( POSTFIX_EXPR_SUFFIX expr RSQUARE ( postfix_expr_suffix )? )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:576:6: ^( POSTFIX_EXPR_SUFFIX expr RSQUARE ( postfix_expr_suffix )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(POSTFIX_EXPR_SUFFIX, "POSTFIX_EXPR_SUFFIX"), root_1);
						adaptor.addChild(root_1, stream_expr.nextTree());
						adaptor.addChild(root_1, stream_RSQUARE.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:576:41: ( postfix_expr_suffix )?
						if ( stream_postfix_expr_suffix.hasNext() ) {
							adaptor.addChild(root_1, stream_postfix_expr_suffix.nextTree());
						}
						stream_postfix_expr_suffix.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:577:4: self_change_op ( postfix_expr_suffix )?
					{
					pushFollow(FOLLOW_self_change_op_in_postfix_expr_suffix3918);
					self_change_op394=self_change_op();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_self_change_op.add(self_change_op394.getTree());
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:577:19: ( postfix_expr_suffix )?
					int alt84=2;
					switch ( input.LA(1) ) {
						case ARROW:
						case AT:
						case DOT:
						case LSQUARE:
							{
							alt84=1;
							}
							break;
						case DOUBLE_PLUS:
							{
							int LA84_4 = input.LA(2);
							if ( (synpred138_PragmaString()) ) {
								alt84=1;
							}
							}
							break;
						case DOUBLE_SUB:
							{
							int LA84_5 = input.LA(2);
							if ( (synpred138_PragmaString()) ) {
								alt84=1;
							}
							}
							break;
					}
					switch (alt84) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:577:19: postfix_expr_suffix
							{
							pushFollow(FOLLOW_postfix_expr_suffix_in_postfix_expr_suffix3920);
							postfix_expr_suffix395=postfix_expr_suffix();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_postfix_expr_suffix.add(postfix_expr_suffix395.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: self_change_op, postfix_expr_suffix
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 578:3: -> ^( POSTFIX_EXPR_SUFFIX self_change_op ( postfix_expr_suffix )? )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:578:6: ^( POSTFIX_EXPR_SUFFIX self_change_op ( postfix_expr_suffix )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(POSTFIX_EXPR_SUFFIX, "POSTFIX_EXPR_SUFFIX"), root_1);
						adaptor.addChild(root_1, stream_self_change_op.nextTree());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:578:43: ( postfix_expr_suffix )?
						if ( stream_postfix_expr_suffix.hasNext() ) {
							adaptor.addChild(root_1, stream_postfix_expr_suffix.nextTree());
						}
						stream_postfix_expr_suffix.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 5 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:579:4: AT IDENTIFIER DOT IDENTIFIER ( postfix_expr_suffix )?
					{
					AT396=(Token)match(input,AT,FOLLOW_AT_in_postfix_expr_suffix3939); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_AT.add(AT396);

					IDENTIFIER397=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_postfix_expr_suffix3941); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER397);

					DOT398=(Token)match(input,DOT,FOLLOW_DOT_in_postfix_expr_suffix3943); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DOT.add(DOT398);

					IDENTIFIER399=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_postfix_expr_suffix3945); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER399);

					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:579:33: ( postfix_expr_suffix )?
					int alt85=2;
					switch ( input.LA(1) ) {
						case ARROW:
						case AT:
						case DOT:
						case LSQUARE:
							{
							alt85=1;
							}
							break;
						case DOUBLE_PLUS:
							{
							int LA85_4 = input.LA(2);
							if ( (synpred140_PragmaString()) ) {
								alt85=1;
							}
							}
							break;
						case DOUBLE_SUB:
							{
							int LA85_5 = input.LA(2);
							if ( (synpred140_PragmaString()) ) {
								alt85=1;
							}
							}
							break;
					}
					switch (alt85) {
						case 1 :
							// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:579:33: postfix_expr_suffix
							{
							pushFollow(FOLLOW_postfix_expr_suffix_in_postfix_expr_suffix3947);
							postfix_expr_suffix400=postfix_expr_suffix();
							state._fsp--;
							if (state.failed) return retval;
							if ( state.backtracking==0 ) stream_postfix_expr_suffix.add(postfix_expr_suffix400.getTree());
							}
							break;

					}

					// AST REWRITE
					// elements: postfix_expr_suffix, IDENTIFIER, AT, IDENTIFIER, DOT
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 580:3: -> ^( POSTFIX_EXPR_SUFFIX AT IDENTIFIER DOT IDENTIFIER ( postfix_expr_suffix )? )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:580:6: ^( POSTFIX_EXPR_SUFFIX AT IDENTIFIER DOT IDENTIFIER ( postfix_expr_suffix )? )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(POSTFIX_EXPR_SUFFIX, "POSTFIX_EXPR_SUFFIX"), root_1);
						adaptor.addChild(root_1, stream_AT.nextNode());
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						adaptor.addChild(root_1, stream_DOT.nextNode());
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:580:57: ( postfix_expr_suffix )?
						if ( stream_postfix_expr_suffix.hasNext() ) {
							adaptor.addChild(root_1, stream_postfix_expr_suffix.nextTree());
						}
						stream_postfix_expr_suffix.reset();

						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "postfix_expr_suffix"


	public static class primary_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "primary_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:583:1: primary_expr : ( constant -> ^( PRIMARY_EXPR constant ) | evaluated_function_expr -> ^( PRIMARY_EXPR evaluated_function_expr ) | LPAREN expr RPAREN -> ^( PRIMARY_EXPR expr RPAREN ) | IDENTIFIER -> ^( PRIMARY_EXPR IDENTIFIER ) | spec_expr -> ^( PRIMARY_EXPR spec_expr ) | derivative_expr -> ^( PRIMARY_EXPR derivative_expr ) );
	public final PragmaStringParser.primary_expr_return primary_expr() throws RecognitionException {
		PragmaStringParser.primary_expr_return retval = new PragmaStringParser.primary_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token LPAREN403=null;
		Token RPAREN405=null;
		Token IDENTIFIER406=null;
		ParserRuleReturnScope constant401 =null;
		ParserRuleReturnScope evaluated_function_expr402 =null;
		ParserRuleReturnScope expr404 =null;
		ParserRuleReturnScope spec_expr407 =null;
		ParserRuleReturnScope derivative_expr408 =null;

		Object LPAREN403_tree=null;
		Object RPAREN405_tree=null;
		Object IDENTIFIER406_tree=null;
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleSubtreeStream stream_constant=new RewriteRuleSubtreeStream(adaptor,"rule constant");
		RewriteRuleSubtreeStream stream_evaluated_function_expr=new RewriteRuleSubtreeStream(adaptor,"rule evaluated_function_expr");
		RewriteRuleSubtreeStream stream_spec_expr=new RewriteRuleSubtreeStream(adaptor,"rule spec_expr");
		RewriteRuleSubtreeStream stream_expr=new RewriteRuleSubtreeStream(adaptor,"rule expr");
		RewriteRuleSubtreeStream stream_derivative_expr=new RewriteRuleSubtreeStream(adaptor,"rule derivative_expr");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:584:2: ( constant -> ^( PRIMARY_EXPR constant ) | evaluated_function_expr -> ^( PRIMARY_EXPR evaluated_function_expr ) | LPAREN expr RPAREN -> ^( PRIMARY_EXPR expr RPAREN ) | IDENTIFIER -> ^( PRIMARY_EXPR IDENTIFIER ) | spec_expr -> ^( PRIMARY_EXPR spec_expr ) | derivative_expr -> ^( PRIMARY_EXPR derivative_expr ) )
			int alt87=6;
			switch ( input.LA(1) ) {
			case CHAR_LITERAL:
			case FALSE:
			case INT_LITERAL:
			case REAL_LITERAL:
			case STRING_LITERAL:
			case SYS_VAR:
			case TRUE:
				{
				alt87=1;
				}
				break;
			case IDENTIFIER:
				{
				int LA87_8 = input.LA(2);
				if ( (synpred142_PragmaString()) ) {
					alt87=2;
				}
				else if ( (synpred144_PragmaString()) ) {
					alt87=4;
				}

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

				}
				break;
			case LPAREN:
				{
				alt87=3;
				}
				break;
			case SPEC:
				{
				alt87=5;
				}
				break;
			case DERIVATIVE:
				{
				alt87=6;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 87, 0, input);
				throw nvae;
			}
			switch (alt87) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:584:4: constant
					{
					pushFollow(FOLLOW_constant_in_primary_expr3980);
					constant401=constant();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_constant.add(constant401.getTree());
					// AST REWRITE
					// elements: constant
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 584:13: -> ^( PRIMARY_EXPR constant )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:584:16: ^( PRIMARY_EXPR constant )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRIMARY_EXPR, "PRIMARY_EXPR"), root_1);
						adaptor.addChild(root_1, stream_constant.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:585:4: evaluated_function_expr
					{
					pushFollow(FOLLOW_evaluated_function_expr_in_primary_expr3993);
					evaluated_function_expr402=evaluated_function_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_evaluated_function_expr.add(evaluated_function_expr402.getTree());
					// AST REWRITE
					// elements: evaluated_function_expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 585:28: -> ^( PRIMARY_EXPR evaluated_function_expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:585:31: ^( PRIMARY_EXPR evaluated_function_expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRIMARY_EXPR, "PRIMARY_EXPR"), root_1);
						adaptor.addChild(root_1, stream_evaluated_function_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:586:4: LPAREN expr RPAREN
					{
					LPAREN403=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_primary_expr4006); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN403);

					pushFollow(FOLLOW_expr_in_primary_expr4008);
					expr404=expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_expr.add(expr404.getTree());
					RPAREN405=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_primary_expr4010); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN405);

					// AST REWRITE
					// elements: expr, RPAREN
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 586:23: -> ^( PRIMARY_EXPR expr RPAREN )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:586:26: ^( PRIMARY_EXPR expr RPAREN )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRIMARY_EXPR, "PRIMARY_EXPR"), root_1);
						adaptor.addChild(root_1, stream_expr.nextTree());
						adaptor.addChild(root_1, stream_RPAREN.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:587:4: IDENTIFIER
					{
					IDENTIFIER406=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_primary_expr4025); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER406);

					// AST REWRITE
					// elements: IDENTIFIER
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 587:15: -> ^( PRIMARY_EXPR IDENTIFIER )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:587:18: ^( PRIMARY_EXPR IDENTIFIER )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRIMARY_EXPR, "PRIMARY_EXPR"), root_1);
						adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 5 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:588:4: spec_expr
					{
					pushFollow(FOLLOW_spec_expr_in_primary_expr4038);
					spec_expr407=spec_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_spec_expr.add(spec_expr407.getTree());
					// AST REWRITE
					// elements: spec_expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 588:14: -> ^( PRIMARY_EXPR spec_expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:588:17: ^( PRIMARY_EXPR spec_expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRIMARY_EXPR, "PRIMARY_EXPR"), root_1);
						adaptor.addChild(root_1, stream_spec_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 6 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:589:4: derivative_expr
					{
					pushFollow(FOLLOW_derivative_expr_in_primary_expr4051);
					derivative_expr408=derivative_expr();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_derivative_expr.add(derivative_expr408.getTree());
					// AST REWRITE
					// elements: derivative_expr
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 589:20: -> ^( PRIMARY_EXPR derivative_expr )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:589:23: ^( PRIMARY_EXPR derivative_expr )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(PRIMARY_EXPR, "PRIMARY_EXPR"), root_1);
						adaptor.addChild(root_1, stream_derivative_expr.nextTree());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "primary_expr"


	public static class evaluated_function_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "evaluated_function_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:592:1: evaluated_function_expr : IDENTIFIER LPAREN ( parameter_list )? RPAREN -> ^( EVALUATED_FUNCTION_EXPR IDENTIFIER ( parameter_list )? RPAREN ) ;
	public final PragmaStringParser.evaluated_function_expr_return evaluated_function_expr() throws RecognitionException {
		PragmaStringParser.evaluated_function_expr_return retval = new PragmaStringParser.evaluated_function_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token IDENTIFIER409=null;
		Token LPAREN410=null;
		Token RPAREN412=null;
		ParserRuleReturnScope parameter_list411 =null;

		Object IDENTIFIER409_tree=null;
		Object LPAREN410_tree=null;
		Object RPAREN412_tree=null;
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleSubtreeStream stream_parameter_list=new RewriteRuleSubtreeStream(adaptor,"rule parameter_list");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:593:2: ( IDENTIFIER LPAREN ( parameter_list )? RPAREN -> ^( EVALUATED_FUNCTION_EXPR IDENTIFIER ( parameter_list )? RPAREN ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:593:4: IDENTIFIER LPAREN ( parameter_list )? RPAREN
			{
			IDENTIFIER409=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_evaluated_function_expr4071); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER409);

			LPAREN410=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_evaluated_function_expr4073); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN410);

			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:593:22: ( parameter_list )?
			int alt88=2;
			int LA88_0 = input.LA(1);
			if ( (LA88_0==ADDR_OF||LA88_0==CHAR_LITERAL||LA88_0==DERIVATIVE||(LA88_0 >= DOUBLE_PLUS && LA88_0 <= DOUBLE_SUB)||LA88_0==EXISTS||LA88_0==FALSE||LA88_0==FORALL||LA88_0==IDENTIFIER||LA88_0==INT_LITERAL||LA88_0==LPAREN||LA88_0==MULTI||LA88_0==NOT||LA88_0==PLUS||LA88_0==REAL_LITERAL||LA88_0==SIZEOF||LA88_0==SPEC||LA88_0==STRING_LITERAL||LA88_0==SUB||LA88_0==SYS_VAR||LA88_0==TRUE) ) {
				alt88=1;
			}
			switch (alt88) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:593:22: parameter_list
					{
					pushFollow(FOLLOW_parameter_list_in_evaluated_function_expr4075);
					parameter_list411=parameter_list();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_parameter_list.add(parameter_list411.getTree());
					}
					break;

			}

			RPAREN412=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_evaluated_function_expr4078); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN412);

			// AST REWRITE
			// elements: parameter_list, RPAREN, IDENTIFIER
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 594:3: -> ^( EVALUATED_FUNCTION_EXPR IDENTIFIER ( parameter_list )? RPAREN )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:594:6: ^( EVALUATED_FUNCTION_EXPR IDENTIFIER ( parameter_list )? RPAREN )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(EVALUATED_FUNCTION_EXPR, "EVALUATED_FUNCTION_EXPR"), root_1);
				adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:594:43: ( parameter_list )?
				if ( stream_parameter_list.hasNext() ) {
					adaptor.addChild(root_1, stream_parameter_list.nextTree());
				}
				stream_parameter_list.reset();

				adaptor.addChild(root_1, stream_RPAREN.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "evaluated_function_expr"


	public static class derivative_expr_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "derivative_expr"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:597:1: derivative_expr : DERIVATIVE LSQUARE IDENTIFIER COMMA partial_list RSQUARE LPAREN ( parameter_list )? RPAREN -> ^( DERIVATIVE_EXPR IDENTIFIER partial_list ( parameter_list )? RPAREN ) ;
	public final PragmaStringParser.derivative_expr_return derivative_expr() throws RecognitionException {
		PragmaStringParser.derivative_expr_return retval = new PragmaStringParser.derivative_expr_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token DERIVATIVE413=null;
		Token LSQUARE414=null;
		Token IDENTIFIER415=null;
		Token COMMA416=null;
		Token RSQUARE418=null;
		Token LPAREN419=null;
		Token RPAREN421=null;
		ParserRuleReturnScope partial_list417 =null;
		ParserRuleReturnScope parameter_list420 =null;

		Object DERIVATIVE413_tree=null;
		Object LSQUARE414_tree=null;
		Object IDENTIFIER415_tree=null;
		Object COMMA416_tree=null;
		Object RSQUARE418_tree=null;
		Object LPAREN419_tree=null;
		Object RPAREN421_tree=null;
		RewriteRuleTokenStream stream_RPAREN=new RewriteRuleTokenStream(adaptor,"token RPAREN");
		RewriteRuleTokenStream stream_LSQUARE=new RewriteRuleTokenStream(adaptor,"token LSQUARE");
		RewriteRuleTokenStream stream_DERIVATIVE=new RewriteRuleTokenStream(adaptor,"token DERIVATIVE");
		RewriteRuleTokenStream stream_RSQUARE=new RewriteRuleTokenStream(adaptor,"token RSQUARE");
		RewriteRuleTokenStream stream_COMMA=new RewriteRuleTokenStream(adaptor,"token COMMA");
		RewriteRuleTokenStream stream_IDENTIFIER=new RewriteRuleTokenStream(adaptor,"token IDENTIFIER");
		RewriteRuleTokenStream stream_LPAREN=new RewriteRuleTokenStream(adaptor,"token LPAREN");
		RewriteRuleSubtreeStream stream_partial_list=new RewriteRuleSubtreeStream(adaptor,"rule partial_list");
		RewriteRuleSubtreeStream stream_parameter_list=new RewriteRuleSubtreeStream(adaptor,"rule parameter_list");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:598:2: ( DERIVATIVE LSQUARE IDENTIFIER COMMA partial_list RSQUARE LPAREN ( parameter_list )? RPAREN -> ^( DERIVATIVE_EXPR IDENTIFIER partial_list ( parameter_list )? RPAREN ) )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:598:4: DERIVATIVE LSQUARE IDENTIFIER COMMA partial_list RSQUARE LPAREN ( parameter_list )? RPAREN
			{
			DERIVATIVE413=(Token)match(input,DERIVATIVE,FOLLOW_DERIVATIVE_in_derivative_expr4106); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_DERIVATIVE.add(DERIVATIVE413);

			LSQUARE414=(Token)match(input,LSQUARE,FOLLOW_LSQUARE_in_derivative_expr4108); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LSQUARE.add(LSQUARE414);

			IDENTIFIER415=(Token)match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_derivative_expr4110); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_IDENTIFIER.add(IDENTIFIER415);

			COMMA416=(Token)match(input,COMMA,FOLLOW_COMMA_in_derivative_expr4112); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_COMMA.add(COMMA416);

			pushFollow(FOLLOW_partial_list_in_derivative_expr4114);
			partial_list417=partial_list();
			state._fsp--;
			if (state.failed) return retval;
			if ( state.backtracking==0 ) stream_partial_list.add(partial_list417.getTree());
			RSQUARE418=(Token)match(input,RSQUARE,FOLLOW_RSQUARE_in_derivative_expr4116); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RSQUARE.add(RSQUARE418);

			LPAREN419=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_derivative_expr4118); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN419);

			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:598:68: ( parameter_list )?
			int alt89=2;
			int LA89_0 = input.LA(1);
			if ( (LA89_0==ADDR_OF||LA89_0==CHAR_LITERAL||LA89_0==DERIVATIVE||(LA89_0 >= DOUBLE_PLUS && LA89_0 <= DOUBLE_SUB)||LA89_0==EXISTS||LA89_0==FALSE||LA89_0==FORALL||LA89_0==IDENTIFIER||LA89_0==INT_LITERAL||LA89_0==LPAREN||LA89_0==MULTI||LA89_0==NOT||LA89_0==PLUS||LA89_0==REAL_LITERAL||LA89_0==SIZEOF||LA89_0==SPEC||LA89_0==STRING_LITERAL||LA89_0==SUB||LA89_0==SYS_VAR||LA89_0==TRUE) ) {
				alt89=1;
			}
			switch (alt89) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:598:68: parameter_list
					{
					pushFollow(FOLLOW_parameter_list_in_derivative_expr4120);
					parameter_list420=parameter_list();
					state._fsp--;
					if (state.failed) return retval;
					if ( state.backtracking==0 ) stream_parameter_list.add(parameter_list420.getTree());
					}
					break;

			}

			RPAREN421=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_derivative_expr4123); if (state.failed) return retval; 
			if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN421);

			// AST REWRITE
			// elements: RPAREN, partial_list, IDENTIFIER, parameter_list
			// token labels: 
			// rule labels: retval
			// token list labels: 
			// rule list labels: 
			// wildcard labels: 
			if ( state.backtracking==0 ) {
			retval.tree = root_0;
			RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

			root_0 = (Object)adaptor.nil();
			// 599:3: -> ^( DERIVATIVE_EXPR IDENTIFIER partial_list ( parameter_list )? RPAREN )
			{
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:599:6: ^( DERIVATIVE_EXPR IDENTIFIER partial_list ( parameter_list )? RPAREN )
				{
				Object root_1 = (Object)adaptor.nil();
				root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(DERIVATIVE_EXPR, "DERIVATIVE_EXPR"), root_1);
				adaptor.addChild(root_1, stream_IDENTIFIER.nextNode());
				adaptor.addChild(root_1, stream_partial_list.nextTree());
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:599:48: ( parameter_list )?
				if ( stream_parameter_list.hasNext() ) {
					adaptor.addChild(root_1, stream_parameter_list.nextTree());
				}
				stream_parameter_list.reset();

				adaptor.addChild(root_1, stream_RPAREN.nextNode());
				adaptor.addChild(root_0, root_1);
				}

			}


			retval.tree = root_0;
			}

			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "derivative_expr"


	public static class self_change_op_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "self_change_op"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:602:1: self_change_op : ( DOUBLE_PLUS -> ^( SELFCHANGE_OP DOUBLE_PLUS ) | DOUBLE_SUB -> ^( SELFCHANGE_OP DOUBLE_SUB ) );
	public final PragmaStringParser.self_change_op_return self_change_op() throws RecognitionException {
		PragmaStringParser.self_change_op_return retval = new PragmaStringParser.self_change_op_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token DOUBLE_PLUS422=null;
		Token DOUBLE_SUB423=null;

		Object DOUBLE_PLUS422_tree=null;
		Object DOUBLE_SUB423_tree=null;
		RewriteRuleTokenStream stream_DOUBLE_SUB=new RewriteRuleTokenStream(adaptor,"token DOUBLE_SUB");
		RewriteRuleTokenStream stream_DOUBLE_PLUS=new RewriteRuleTokenStream(adaptor,"token DOUBLE_PLUS");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:603:2: ( DOUBLE_PLUS -> ^( SELFCHANGE_OP DOUBLE_PLUS ) | DOUBLE_SUB -> ^( SELFCHANGE_OP DOUBLE_SUB ) )
			int alt90=2;
			int LA90_0 = input.LA(1);
			if ( (LA90_0==DOUBLE_PLUS) ) {
				alt90=1;
			}
			else if ( (LA90_0==DOUBLE_SUB) ) {
				alt90=2;
			}

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

			switch (alt90) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:603:4: DOUBLE_PLUS
					{
					DOUBLE_PLUS422=(Token)match(input,DOUBLE_PLUS,FOLLOW_DOUBLE_PLUS_in_self_change_op4152); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DOUBLE_PLUS.add(DOUBLE_PLUS422);

					// AST REWRITE
					// elements: DOUBLE_PLUS
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 603:16: -> ^( SELFCHANGE_OP DOUBLE_PLUS )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:603:19: ^( SELFCHANGE_OP DOUBLE_PLUS )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SELFCHANGE_OP, "SELFCHANGE_OP"), root_1);
						adaptor.addChild(root_1, stream_DOUBLE_PLUS.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:604:4: DOUBLE_SUB
					{
					DOUBLE_SUB423=(Token)match(input,DOUBLE_SUB,FOLLOW_DOUBLE_SUB_in_self_change_op4165); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_DOUBLE_SUB.add(DOUBLE_SUB423);

					// AST REWRITE
					// elements: DOUBLE_SUB
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 604:15: -> ^( SELFCHANGE_OP DOUBLE_SUB )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:604:18: ^( SELFCHANGE_OP DOUBLE_SUB )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(SELFCHANGE_OP, "SELFCHANGE_OP"), root_1);
						adaptor.addChild(root_1, stream_DOUBLE_SUB.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "self_change_op"


	public static class constant_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "constant"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:607:1: constant : ( TRUE -> ^( CONSTANT TRUE ) | FALSE -> ^( CONSTANT FALSE ) | INT_LITERAL -> ^( CONSTANT INT_LITERAL ) | REAL_LITERAL -> ^( CONSTANT REAL_LITERAL ) | CHAR_LITERAL -> ^( CONSTANT CHAR_LITERAL ) | STRING_LITERAL -> ^( CONSTANT STRING_LITERAL ) | SYS_VAR -> ^( CONSTANT SYS_VAR ) );
	public final PragmaStringParser.constant_return constant() throws RecognitionException {
		PragmaStringParser.constant_return retval = new PragmaStringParser.constant_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token TRUE424=null;
		Token FALSE425=null;
		Token INT_LITERAL426=null;
		Token REAL_LITERAL427=null;
		Token CHAR_LITERAL428=null;
		Token STRING_LITERAL429=null;
		Token SYS_VAR430=null;

		Object TRUE424_tree=null;
		Object FALSE425_tree=null;
		Object INT_LITERAL426_tree=null;
		Object REAL_LITERAL427_tree=null;
		Object CHAR_LITERAL428_tree=null;
		Object STRING_LITERAL429_tree=null;
		Object SYS_VAR430_tree=null;
		RewriteRuleTokenStream stream_SYS_VAR=new RewriteRuleTokenStream(adaptor,"token SYS_VAR");
		RewriteRuleTokenStream stream_INT_LITERAL=new RewriteRuleTokenStream(adaptor,"token INT_LITERAL");
		RewriteRuleTokenStream stream_STRING_LITERAL=new RewriteRuleTokenStream(adaptor,"token STRING_LITERAL");
		RewriteRuleTokenStream stream_CHAR_LITERAL=new RewriteRuleTokenStream(adaptor,"token CHAR_LITERAL");
		RewriteRuleTokenStream stream_REAL_LITERAL=new RewriteRuleTokenStream(adaptor,"token REAL_LITERAL");
		RewriteRuleTokenStream stream_FALSE=new RewriteRuleTokenStream(adaptor,"token FALSE");
		RewriteRuleTokenStream stream_TRUE=new RewriteRuleTokenStream(adaptor,"token TRUE");

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:608:2: ( TRUE -> ^( CONSTANT TRUE ) | FALSE -> ^( CONSTANT FALSE ) | INT_LITERAL -> ^( CONSTANT INT_LITERAL ) | REAL_LITERAL -> ^( CONSTANT REAL_LITERAL ) | CHAR_LITERAL -> ^( CONSTANT CHAR_LITERAL ) | STRING_LITERAL -> ^( CONSTANT STRING_LITERAL ) | SYS_VAR -> ^( CONSTANT SYS_VAR ) )
			int alt91=7;
			switch ( input.LA(1) ) {
			case TRUE:
				{
				alt91=1;
				}
				break;
			case FALSE:
				{
				alt91=2;
				}
				break;
			case INT_LITERAL:
				{
				alt91=3;
				}
				break;
			case REAL_LITERAL:
				{
				alt91=4;
				}
				break;
			case CHAR_LITERAL:
				{
				alt91=5;
				}
				break;
			case STRING_LITERAL:
				{
				alt91=6;
				}
				break;
			case SYS_VAR:
				{
				alt91=7;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return retval;}
				NoViableAltException nvae =
					new NoViableAltException("", 91, 0, input);
				throw nvae;
			}
			switch (alt91) {
				case 1 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:608:4: TRUE
					{
					TRUE424=(Token)match(input,TRUE,FOLLOW_TRUE_in_constant4186); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_TRUE.add(TRUE424);

					// AST REWRITE
					// elements: TRUE
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 608:9: -> ^( CONSTANT TRUE )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:608:12: ^( CONSTANT TRUE )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONSTANT, "CONSTANT"), root_1);
						adaptor.addChild(root_1, stream_TRUE.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 2 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:609:4: FALSE
					{
					FALSE425=(Token)match(input,FALSE,FOLLOW_FALSE_in_constant4199); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_FALSE.add(FALSE425);

					// AST REWRITE
					// elements: FALSE
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 609:10: -> ^( CONSTANT FALSE )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:609:13: ^( CONSTANT FALSE )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONSTANT, "CONSTANT"), root_1);
						adaptor.addChild(root_1, stream_FALSE.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 3 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:610:4: INT_LITERAL
					{
					INT_LITERAL426=(Token)match(input,INT_LITERAL,FOLLOW_INT_LITERAL_in_constant4213); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_INT_LITERAL.add(INT_LITERAL426);

					// AST REWRITE
					// elements: INT_LITERAL
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 610:16: -> ^( CONSTANT INT_LITERAL )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:610:19: ^( CONSTANT INT_LITERAL )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONSTANT, "CONSTANT"), root_1);
						adaptor.addChild(root_1, stream_INT_LITERAL.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 4 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:611:4: REAL_LITERAL
					{
					REAL_LITERAL427=(Token)match(input,REAL_LITERAL,FOLLOW_REAL_LITERAL_in_constant4226); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_REAL_LITERAL.add(REAL_LITERAL427);

					// AST REWRITE
					// elements: REAL_LITERAL
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 611:17: -> ^( CONSTANT REAL_LITERAL )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:611:20: ^( CONSTANT REAL_LITERAL )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONSTANT, "CONSTANT"), root_1);
						adaptor.addChild(root_1, stream_REAL_LITERAL.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 5 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:612:4: CHAR_LITERAL
					{
					CHAR_LITERAL428=(Token)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_constant4239); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_CHAR_LITERAL.add(CHAR_LITERAL428);

					// AST REWRITE
					// elements: CHAR_LITERAL
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 612:17: -> ^( CONSTANT CHAR_LITERAL )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:612:20: ^( CONSTANT CHAR_LITERAL )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONSTANT, "CONSTANT"), root_1);
						adaptor.addChild(root_1, stream_CHAR_LITERAL.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 6 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:613:4: STRING_LITERAL
					{
					STRING_LITERAL429=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_constant4252); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_STRING_LITERAL.add(STRING_LITERAL429);

					// AST REWRITE
					// elements: STRING_LITERAL
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 613:19: -> ^( CONSTANT STRING_LITERAL )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:613:22: ^( CONSTANT STRING_LITERAL )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONSTANT, "CONSTANT"), root_1);
						adaptor.addChild(root_1, stream_STRING_LITERAL.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;
				case 7 :
					// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:614:4: SYS_VAR
					{
					SYS_VAR430=(Token)match(input,SYS_VAR,FOLLOW_SYS_VAR_in_constant4265); if (state.failed) return retval; 
					if ( state.backtracking==0 ) stream_SYS_VAR.add(SYS_VAR430);

					// AST REWRITE
					// elements: SYS_VAR
					// token labels: 
					// rule labels: retval
					// token list labels: 
					// rule list labels: 
					// wildcard labels: 
					if ( state.backtracking==0 ) {
					retval.tree = root_0;
					RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.getTree():null);

					root_0 = (Object)adaptor.nil();
					// 614:12: -> ^( CONSTANT SYS_VAR )
					{
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:614:15: ^( CONSTANT SYS_VAR )
						{
						Object root_1 = (Object)adaptor.nil();
						root_1 = (Object)adaptor.becomeRoot((Object)adaptor.create(CONSTANT, "CONSTANT"), root_1);
						adaptor.addChild(root_1, stream_SYS_VAR.nextNode());
						adaptor.addChild(root_0, root_1);
						}

					}


					retval.tree = root_0;
					}

					}
					break;

			}
			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "constant"


	public static class ignored_return extends ParserRuleReturnScope {
		Object tree;
		@Override
		public Object getTree() { return tree; }
	};


	// $ANTLR start "ignored"
	// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:618:1: ignored : ( STATIC | CONST );
	public final PragmaStringParser.ignored_return ignored() throws RecognitionException {
		PragmaStringParser.ignored_return retval = new PragmaStringParser.ignored_return();
		retval.start = input.LT(1);

		Object root_0 = null;

		Token set431=null;

		Object set431_tree=null;

		try {
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:619:2: ( STATIC | CONST )
			// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:
			{
			root_0 = (Object)adaptor.nil();


			set431=input.LT(1);
			if ( input.LA(1)==CONST||input.LA(1)==STATIC ) {
				input.consume();
				if ( state.backtracking==0 ) adaptor.addChild(root_0, (Object)adaptor.create(set431));
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return retval;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

			retval.stop = input.LT(-1);

			if ( state.backtracking==0 ) {
			retval.tree = (Object)adaptor.rulePostProcessing(root_0);
			adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (Object)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		return retval;
	}
	// $ANTLR end "ignored"

	// $ANTLR start synpred21_PragmaString
	public final void synpred21_PragmaString_fragment() throws RecognitionException {
		ParserRuleReturnScope type =null;


		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:145:5: (type= type_specifier declaration_unit ( COMMA declaration_unit )+ SEMI )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:145:5: type= type_specifier declaration_unit ( COMMA declaration_unit )+ SEMI
		{
		pushFollow(FOLLOW_type_specifier_in_synpred21_PragmaString800);
		type=type_specifier();
		state._fsp--;
		if (state.failed) return;

		pushFollow(FOLLOW_declaration_unit_in_synpred21_PragmaString802);
		declaration_unit();
		state._fsp--;
		if (state.failed) return;

		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:145:42: ( COMMA declaration_unit )+
		int cnt99=0;
		loop99:
		while (true) {
			int alt99=2;
			int LA99_0 = input.LA(1);
			if ( (LA99_0==COMMA) ) {
				alt99=1;
			}

			switch (alt99) {
			case 1 :
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:145:43: COMMA declaration_unit
				{
				match(input,COMMA,FOLLOW_COMMA_in_synpred21_PragmaString805); if (state.failed) return;

				pushFollow(FOLLOW_declaration_unit_in_synpred21_PragmaString807);
				declaration_unit();
				state._fsp--;
				if (state.failed) return;

				}
				break;

			default :
				if ( cnt99 >= 1 ) break loop99;
				if (state.backtracking>0) {state.failed=true; return;}
				EarlyExitException eee = new EarlyExitException(99, input);
				throw eee;
			}
			cnt99++;
		}

		match(input,SEMI,FOLLOW_SEMI_in_synpred21_PragmaString811); if (state.failed) return;

		}

	}
	// $ANTLR end synpred21_PragmaString

	// $ANTLR start synpred24_PragmaString
	public final void synpred24_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:148:6: ( ( prefix )? ( suffix )? declaration_body SEMI )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:148:6: ( prefix )? ( suffix )? declaration_body SEMI
		{
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:148:6: ( prefix )?
		int alt100=2;
		int LA100_0 = input.LA(1);
		if ( (LA100_0==INPUT||LA100_0==OUTPUT||LA100_0==SHARED||LA100_0==TYPEDEF) ) {
			alt100=1;
		}
		switch (alt100) {
			case 1 :
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:148:6: prefix
				{
				pushFollow(FOLLOW_prefix_in_synpred24_PragmaString845);
				prefix();
				state._fsp--;
				if (state.failed) return;

				}
				break;

		}

		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:148:14: ( suffix )?
		int alt101=2;
		int LA101_0 = input.LA(1);
		if ( (LA101_0==IS||LA101_0==LCURLY) ) {
			alt101=1;
		}
		switch (alt101) {
			case 1 :
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:148:14: suffix
				{
				pushFollow(FOLLOW_suffix_in_synpred24_PragmaString848);
				suffix();
				state._fsp--;
				if (state.failed) return;

				}
				break;

		}

		pushFollow(FOLLOW_declaration_body_in_synpred24_PragmaString851);
		declaration_body();
		state._fsp--;
		if (state.failed) return;

		match(input,SEMI,FOLLOW_SEMI_in_synpred24_PragmaString853); if (state.failed) return;

		}

	}
	// $ANTLR end synpred24_PragmaString

	// $ANTLR start synpred62_PragmaString
	public final void synpred62_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:284:4: ( collective_assert_statement )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:284:4: collective_assert_statement
		{
		pushFollow(FOLLOW_collective_assert_statement_in_synpred62_PragmaString1650);
		collective_assert_statement();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred62_PragmaString

	// $ANTLR start synpred63_PragmaString
	public final void synpred63_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:285:4: ( joint_assert_statement )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:285:4: joint_assert_statement
		{
		pushFollow(FOLLOW_joint_assert_statement_in_synpred63_PragmaString1663);
		joint_assert_statement();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred63_PragmaString

	// $ANTLR start synpred65_PragmaString
	public final void synpred65_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:287:4: ( collective_invariant_statement )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:287:4: collective_invariant_statement
		{
		pushFollow(FOLLOW_collective_invariant_statement_in_synpred65_PragmaString1689);
		collective_invariant_statement();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred65_PragmaString

	// $ANTLR start synpred66_PragmaString
	public final void synpred66_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:288:4: ( joint_invariant_statement )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:288:4: joint_invariant_statement
		{
		pushFollow(FOLLOW_joint_invariant_statement_in_synpred66_PragmaString1702);
		joint_invariant_statement();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred66_PragmaString

	// $ANTLR start synpred71_PragmaString
	public final void synpred71_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:297:4: ( iterative_statement )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:297:4: iterative_statement
		{
		pushFollow(FOLLOW_iterative_statement_in_synpred71_PragmaString1770);
		iterative_statement();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred71_PragmaString

	// $ANTLR start synpred76_PragmaString
	public final void synpred76_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:302:4: ( call_statement )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:302:4: call_statement
		{
		pushFollow(FOLLOW_call_statement_in_synpred76_PragmaString1835);
		call_statement();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred76_PragmaString

	// $ANTLR start synpred77_PragmaString
	public final void synpred77_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:303:4: ( expr_statement )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:303:4: expr_statement
		{
		pushFollow(FOLLOW_expr_statement_in_synpred77_PragmaString1848);
		expr_statement();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred77_PragmaString

	// $ANTLR start synpred78_PragmaString
	public final void synpred78_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:324:6: ( ASSERT expr SEMI )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:324:6: ASSERT expr SEMI
		{
		match(input,ASSERT,FOLLOW_ASSERT_in_synpred78_PragmaString1912); if (state.failed) return;

		pushFollow(FOLLOW_expr_in_synpred78_PragmaString1914);
		expr();
		state._fsp--;
		if (state.failed) return;

		match(input,SEMI,FOLLOW_SEMI_in_synpred78_PragmaString1916); if (state.failed) return;

		}

	}
	// $ANTLR end synpred78_PragmaString

	// $ANTLR start synpred80_PragmaString
	public final void synpred80_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:356:37: ( ELSE statement )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:356:37: ELSE statement
		{
		match(input,ELSE,FOLLOW_ELSE_in_synpred80_PragmaString2154); if (state.failed) return;

		pushFollow(FOLLOW_statement_in_synpred80_PragmaString2156);
		statement();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred80_PragmaString

	// $ANTLR start synpred89_PragmaString
	public final void synpred89_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:381:4: ( IDENTIFIER COLON ( PRAGMA TASS JOINT INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY )? )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:381:4: IDENTIFIER COLON ( PRAGMA TASS JOINT INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY )?
		{
		match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred89_PragmaString2388); if (state.failed) return;

		match(input,COLON,FOLLOW_COLON_in_synpred89_PragmaString2390); if (state.failed) return;

		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:381:21: ( PRAGMA TASS JOINT INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY )?
		int alt109=2;
		int LA109_0 = input.LA(1);
		if ( (LA109_0==PRAGMA) ) {
			alt109=1;
		}
		switch (alt109) {
			case 1 :
				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:381:22: PRAGMA TASS JOINT INVARIANT AT IDENTIFIER LCURLY ( skew_factor )? expr RCURLY
				{
				match(input,PRAGMA,FOLLOW_PRAGMA_in_synpred89_PragmaString2393); if (state.failed) return;

				match(input,TASS,FOLLOW_TASS_in_synpred89_PragmaString2395); if (state.failed) return;

				match(input,JOINT,FOLLOW_JOINT_in_synpred89_PragmaString2397); if (state.failed) return;

				match(input,INVARIANT,FOLLOW_INVARIANT_in_synpred89_PragmaString2399); if (state.failed) return;

				match(input,AT,FOLLOW_AT_in_synpred89_PragmaString2401); if (state.failed) return;

				match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred89_PragmaString2403); if (state.failed) return;

				match(input,LCURLY,FOLLOW_LCURLY_in_synpred89_PragmaString2405); if (state.failed) return;

				// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:381:71: ( skew_factor )?
				int alt108=2;
				int LA108_0 = input.LA(1);
				if ( (LA108_0==INT_LITERAL) ) {
					int LA108_1 = input.LA(2);
					if ( (LA108_1==COLON) ) {
						alt108=1;
					}
				}
				switch (alt108) {
					case 1 :
						// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:381:71: skew_factor
						{
						pushFollow(FOLLOW_skew_factor_in_synpred89_PragmaString2407);
						skew_factor();
						state._fsp--;
						if (state.failed) return;

						}
						break;

				}

				pushFollow(FOLLOW_expr_in_synpred89_PragmaString2410);
				expr();
				state._fsp--;
				if (state.failed) return;

				match(input,RCURLY,FOLLOW_RCURLY_in_synpred89_PragmaString2412); if (state.failed) return;

				}
				break;

		}

		}

	}
	// $ANTLR end synpred89_PragmaString

	// $ANTLR start synpred93_PragmaString
	public final void synpred93_PragmaString_fragment() throws RecognitionException {
		ParserRuleReturnScope data =null;
		ParserRuleReturnScope src =null;
		ParserRuleReturnScope tag =null;


		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:405:4: ( RECV LPAREN data= expr COMMA src= comm_expr COMMA tag= comm_expr RPAREN SEMI )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:405:4: RECV LPAREN data= expr COMMA src= comm_expr COMMA tag= comm_expr RPAREN SEMI
		{
		match(input,RECV,FOLLOW_RECV_in_synpred93_PragmaString2630); if (state.failed) return;

		match(input,LPAREN,FOLLOW_LPAREN_in_synpred93_PragmaString2632); if (state.failed) return;

		pushFollow(FOLLOW_expr_in_synpred93_PragmaString2636);
		data=expr();
		state._fsp--;
		if (state.failed) return;

		match(input,COMMA,FOLLOW_COMMA_in_synpred93_PragmaString2638); if (state.failed) return;

		pushFollow(FOLLOW_comm_expr_in_synpred93_PragmaString2642);
		src=comm_expr();
		state._fsp--;
		if (state.failed) return;

		match(input,COMMA,FOLLOW_COMMA_in_synpred93_PragmaString2644); if (state.failed) return;

		pushFollow(FOLLOW_comm_expr_in_synpred93_PragmaString2648);
		tag=comm_expr();
		state._fsp--;
		if (state.failed) return;

		match(input,RPAREN,FOLLOW_RPAREN_in_synpred93_PragmaString2650); if (state.failed) return;

		match(input,SEMI,FOLLOW_SEMI_in_synpred93_PragmaString2652); if (state.failed) return;

		}

	}
	// $ANTLR end synpred93_PragmaString

	// $ANTLR start synpred95_PragmaString
	public final void synpred95_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:422:5: ( unary_expr ASSIGN )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:422:5: unary_expr ASSIGN
		{
		pushFollow(FOLLOW_unary_expr_in_synpred95_PragmaString2811);
		unary_expr();
		state._fsp--;
		if (state.failed) return;

		match(input,ASSIGN,FOLLOW_ASSIGN_in_synpred95_PragmaString2813); if (state.failed) return;

		}

	}
	// $ANTLR end synpred95_PragmaString

	// $ANTLR start synpred100_PragmaString
	public final void synpred100_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:457:4: ( unary_expr assign_operator assign_expr )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:457:4: unary_expr assign_operator assign_expr
		{
		pushFollow(FOLLOW_unary_expr_in_synpred100_PragmaString3063);
		unary_expr();
		state._fsp--;
		if (state.failed) return;

		pushFollow(FOLLOW_assign_operator_in_synpred100_PragmaString3065);
		assign_operator();
		state._fsp--;
		if (state.failed) return;

		pushFollow(FOLLOW_assign_expr_in_synpred100_PragmaString3067);
		assign_expr();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred100_PragmaString

	// $ANTLR start synpred112_PragmaString
	public final void synpred112_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:513:16: ( additive_operator multi_expr )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:513:16: additive_operator multi_expr
		{
		pushFollow(FOLLOW_additive_operator_in_synpred112_PragmaString3455);
		additive_operator();
		state._fsp--;
		if (state.failed) return;

		pushFollow(FOLLOW_multi_expr_in_synpred112_PragmaString3457);
		multi_expr();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred112_PragmaString

	// $ANTLR start synpred114_PragmaString
	public final void synpred114_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:523:16: ( multi_operator unary_expr )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:523:16: multi_operator unary_expr
		{
		pushFollow(FOLLOW_multi_operator_in_synpred114_PragmaString3507);
		multi_operator();
		state._fsp--;
		if (state.failed) return;

		pushFollow(FOLLOW_unary_expr_in_synpred114_PragmaString3509);
		unary_expr();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred114_PragmaString

	// $ANTLR start synpred122_PragmaString
	public final void synpred122_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:543:4: ( postfix_expr )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:543:4: postfix_expr
		{
		pushFollow(FOLLOW_postfix_expr_in_synpred122_PragmaString3598);
		postfix_expr();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred122_PragmaString

	// $ANTLR start synpred125_PragmaString
	public final void synpred125_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:546:4: ( SIZEOF LPAREN type_name RPAREN )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:546:4: SIZEOF LPAREN type_name RPAREN
		{
		match(input,SIZEOF,FOLLOW_SIZEOF_in_synpred125_PragmaString3645); if (state.failed) return;

		match(input,LPAREN,FOLLOW_LPAREN_in_synpred125_PragmaString3647); if (state.failed) return;

		pushFollow(FOLLOW_type_name_in_synpred125_PragmaString3649);
		type_name();
		state._fsp--;
		if (state.failed) return;

		match(input,RPAREN,FOLLOW_RPAREN_in_synpred125_PragmaString3651); if (state.failed) return;

		}

	}
	// $ANTLR end synpred125_PragmaString

	// $ANTLR start synpred126_PragmaString
	public final void synpred126_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:547:4: ( SIZEOF unary_expr )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:547:4: SIZEOF unary_expr
		{
		match(input,SIZEOF,FOLLOW_SIZEOF_in_synpred126_PragmaString3666); if (state.failed) return;

		pushFollow(FOLLOW_unary_expr_in_synpred126_PragmaString3668);
		unary_expr();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred126_PragmaString

	// $ANTLR start synpred131_PragmaString
	public final void synpred131_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:566:17: ( postfix_expr_suffix )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:566:17: postfix_expr_suffix
		{
		pushFollow(FOLLOW_postfix_expr_suffix_in_synpred131_PragmaString3815);
		postfix_expr_suffix();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred131_PragmaString

	// $ANTLR start synpred132_PragmaString
	public final void synpred132_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:571:19: ( postfix_expr_suffix )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:571:19: postfix_expr_suffix
		{
		pushFollow(FOLLOW_postfix_expr_suffix_in_synpred132_PragmaString3844);
		postfix_expr_suffix();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred132_PragmaString

	// $ANTLR start synpred134_PragmaString
	public final void synpred134_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:573:21: ( postfix_expr_suffix )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:573:21: postfix_expr_suffix
		{
		pushFollow(FOLLOW_postfix_expr_suffix_in_synpred134_PragmaString3869);
		postfix_expr_suffix();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred134_PragmaString

	// $ANTLR start synpred136_PragmaString
	public final void synpred136_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:575:25: ( postfix_expr_suffix )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:575:25: postfix_expr_suffix
		{
		pushFollow(FOLLOW_postfix_expr_suffix_in_synpred136_PragmaString3897);
		postfix_expr_suffix();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred136_PragmaString

	// $ANTLR start synpred138_PragmaString
	public final void synpred138_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:577:19: ( postfix_expr_suffix )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:577:19: postfix_expr_suffix
		{
		pushFollow(FOLLOW_postfix_expr_suffix_in_synpred138_PragmaString3920);
		postfix_expr_suffix();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred138_PragmaString

	// $ANTLR start synpred140_PragmaString
	public final void synpred140_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:579:33: ( postfix_expr_suffix )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:579:33: postfix_expr_suffix
		{
		pushFollow(FOLLOW_postfix_expr_suffix_in_synpred140_PragmaString3947);
		postfix_expr_suffix();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred140_PragmaString

	// $ANTLR start synpred142_PragmaString
	public final void synpred142_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:585:4: ( evaluated_function_expr )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:585:4: evaluated_function_expr
		{
		pushFollow(FOLLOW_evaluated_function_expr_in_synpred142_PragmaString3993);
		evaluated_function_expr();
		state._fsp--;
		if (state.failed) return;

		}

	}
	// $ANTLR end synpred142_PragmaString

	// $ANTLR start synpred144_PragmaString
	public final void synpred144_PragmaString_fragment() throws RecognitionException {
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:587:4: ( IDENTIFIER )
		// /home/svn/work/tass/1.2/r2549/src/edu/udel/cis/vsl/tass/ast/impl/pragmaParser/PragmaString.g:587:4: IDENTIFIER
		{
		match(input,IDENTIFIER,FOLLOW_IDENTIFIER_in_synpred144_PragmaString4025); if (state.failed) return;

		}

	}
	// $ANTLR end synpred144_PragmaString

	// Delegated rules

	public final boolean synpred131_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred131_PragmaString_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 synpred71_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred71_PragmaString_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 synpred89_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred89_PragmaString_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 synpred62_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred62_PragmaString_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 synpred142_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred142_PragmaString_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 synpred63_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred63_PragmaString_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 synpred122_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred122_PragmaString_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 synpred76_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred76_PragmaString_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 synpred126_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred126_PragmaString_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 synpred125_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred125_PragmaString_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 synpred66_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred66_PragmaString_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 synpred100_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred100_PragmaString_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 synpred140_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred140_PragmaString_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 synpred132_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred132_PragmaString_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 synpred93_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred93_PragmaString_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 synpred78_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred78_PragmaString_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 synpred65_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred65_PragmaString_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 synpred77_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred77_PragmaString_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 synpred134_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred134_PragmaString_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 synpred80_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred80_PragmaString_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 synpred144_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred144_PragmaString_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 synpred21_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred21_PragmaString_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 synpred24_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred24_PragmaString_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 synpred138_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred138_PragmaString_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 synpred114_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred114_PragmaString_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 synpred136_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred136_PragmaString_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 synpred112_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred112_PragmaString_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 synpred95_PragmaString() {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred95_PragmaString_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 static final BitSet FOLLOW_PRAGMA_in_pragma418 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0002000000000000L});
	public static final BitSet FOLLOW_TASS_in_pragma421 = new BitSet(new long[]{0x0000000000000010L,0x0000000000000000L,0x0000800000000000L});
	public static final BitSet FOLLOW_function_in_pragma423 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PRAGMA_in_pragma432 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0002000000000000L});
	public static final BitSet FOLLOW_TASS_in_pragma435 = new BitSet(new long[]{0x0040000140210100L,0x208112300C06420CL,0x0805142432260020L});
	public static final BitSet FOLLOW_statement_in_pragma437 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PRAGMA_in_pragma447 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0002000000000000L});
	public static final BitSet FOLLOW_TASS_in_pragma450 = new BitSet(new long[]{0x0000000000000000L,0x8000000400000000L,0x0010000080000000L});
	public static final BitSet FOLLOW_prefix_in_pragma452 = new BitSet(new long[]{0x0000000024000002L,0x0000100804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_LCURLY_in_pragma455 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_pragma457 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
	public static final BitSet FOLLOW_RCURLY_in_pragma459 = new BitSet(new long[]{0x0000000024000002L,0x0000000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_type_name_in_pragma464 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_pragma466 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SYSTEM_in_function497 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_declarator_in_function499 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_function501 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_function503 = new BitSet(new long[]{0x0000000024000000L,0x0000000804010002L,0x0200080000800000L});
	public static final BitSet FOLLOW_argument_list_in_function505 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_function508 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_function510 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SYSTEM_in_function532 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
	public static final BitSet FOLLOW_GUARD_in_function534 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_function536 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_declarator_in_function538 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_function540 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_function542 = new BitSet(new long[]{0x0000000024000000L,0x0000000804010002L,0x0200080000800000L});
	public static final BitSet FOLLOW_argument_list_in_function544 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_function547 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_function549 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ABSTRACT_in_function575 = new BitSet(new long[]{0x0000100000000000L});
	public static final BitSet FOLLOW_CONTINUOUS_in_function577 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_LPAREN_in_function580 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_INT_LITERAL_in_function582 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_function584 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_declarator_in_function588 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_function590 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_function592 = new BitSet(new long[]{0x0000000024000000L,0x0000000804010002L,0x0200080000800000L});
	public static final BitSet FOLLOW_argument_list_in_function594 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_function597 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_function599 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ABSTRACT_in_function626 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_declarator_in_function628 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_function630 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_function632 = new BitSet(new long[]{0x0000000024000000L,0x0000000804010002L,0x0200080000800000L});
	public static final BitSet FOLLOW_argument_list_in_function634 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_function637 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_function639 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ABSTRACT_in_function665 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_SMOOTH_in_function667 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_declarator_in_function669 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_function671 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_function673 = new BitSet(new long[]{0x0000000024000000L,0x0000000804010002L,0x0200080000800000L});
	public static final BitSet FOLLOW_argument_list_in_function675 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_function678 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_function680 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_argument_in_argument_list715 = new BitSet(new long[]{0x0000001000000002L});
	public static final BitSet FOLLOW_COMMA_in_argument_list718 = new BitSet(new long[]{0x0000000024000000L,0x0000000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_argument_in_argument_list720 = new BitSet(new long[]{0x0000001000000002L});
	public static final BitSet FOLLOW_type_specifier_in_argument749 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_declarator_in_argument751 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_declarator_in_declaration_unit773 = new BitSet(new long[]{0x0000000000040002L});
	public static final BitSet FOLLOW_ASSIGN_in_declaration_unit776 = new BitSet(new long[]{0x0040000040000100L,0x208110100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_initializer_in_declaration_unit778 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_type_specifier_in_declaration800 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_declaration_unit_in_declaration802 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_declaration805 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_declaration_unit_in_declaration807 = new BitSet(new long[]{0x0000001000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_declaration811 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_prefix_in_declaration845 = new BitSet(new long[]{0x0000040024000000L,0x0000108804010002L,0x02000A0000000000L});
	public static final BitSet FOLLOW_suffix_in_declaration848 = new BitSet(new long[]{0x0000040024000000L,0x0000000804010002L,0x02000A0000000000L});
	public static final BitSet FOLLOW_declaration_body_in_declaration851 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_declaration853 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_INPUT_in_declaration876 = new BitSet(new long[]{0x0000000024000000L,0x0000108804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_suffix_in_declaration878 = new BitSet(new long[]{0x0000000024000000L,0x0000000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_type_specifier_in_declaration881 = new BitSet(new long[]{0x0020000000000000L});
	public static final BitSet FOLLOW_DEFINE_in_declaration883 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_declaration885 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_declaration887 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ignored_in_declaration_body967 = new BitSet(new long[]{0x0000040024000000L,0x0000000804010002L,0x02000A0000000000L});
	public static final BitSet FOLLOW_type_specifier_in_declaration_body970 = new BitSet(new long[]{0x0000000024000002L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_declarator_in_declaration_body973 = new BitSet(new long[]{0x0000000000040002L});
	public static final BitSet FOLLOW_ASSIGN_in_declaration_body976 = new BitSet(new long[]{0x0040000040000100L,0x208110100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_initializer_in_declaration_body978 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MULTI_in_pointer1009 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_pointer_in_declarator1020 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_direct_declarator_in_declarator1023 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_type_specifier_in_direct_declarator1047 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
	public static final BitSet FOLLOW_declarator_suffix_in_direct_declarator1049 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_direct_declarator1068 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_declarator_in_direct_declarator1070 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_direct_declarator1072 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
	public static final BitSet FOLLOW_declarator_suffix_in_direct_declarator1074 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
	public static final BitSet FOLLOW_LSQUARE_in_declarator_suffix1101 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142401020020L});
	public static final BitSet FOLLOW_expr_in_declarator_suffix1103 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000001000000L});
	public static final BitSet FOLLOW_RSQUARE_in_declarator_suffix1106 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expr_in_initializer1130 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LCURLY_in_initializer1146 = new BitSet(new long[]{0x0040000040000100L,0x208310100404420DL,0x0005142400030020L});
	public static final BitSet FOLLOW_initializer_list_in_initializer1148 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
	public static final BitSet FOLLOW_RCURLY_in_initializer1151 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_designation_in_initializer_list1179 = new BitSet(new long[]{0x0040000040000100L,0x208110100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_initializer_in_initializer_list1182 = new BitSet(new long[]{0x0000001000000002L});
	public static final BitSet FOLLOW_COMMA_in_initializer_list1185 = new BitSet(new long[]{0x0040000040000100L,0x208310100404420DL,0x0005142400020020L});
	public static final BitSet FOLLOW_initializer_list_in_initializer_list1187 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_designator_list_in_designation1217 = new BitSet(new long[]{0x0000000000040000L});
	public static final BitSet FOLLOW_ASSIGN_in_designation1219 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_designator_in_designator_list1241 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000001L});
	public static final BitSet FOLLOW_LSQUARE_in_designator1262 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_ifThenElse_expr_in_designator1264 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000001000000L});
	public static final BitSet FOLLOW_RSQUARE_in_designator1266 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DOT_in_designator1282 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_designator1284 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LCURLY_in_suffix1306 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_suffix1308 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
	public static final BitSet FOLLOW_RCURLY_in_suffix1310 = new BitSet(new long[]{0x0000000000000002L,0x0000008000000000L});
	public static final BitSet FOLLOW_IS_in_suffix1313 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_suffix1315 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IS_in_suffix1337 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_suffix1339 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_simple_type_in_type_specifier1379 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_STRUCT_in_type_specifier1386 = new BitSet(new long[]{0x0000000000000000L,0x0000100004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_type_specifier1388 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
	public static final BitSet FOLLOW_LCURLY_in_type_specifier1391 = new BitSet(new long[]{0x0000000024000000L,0x0000000804010002L,0x0200080000010000L});
	public static final BitSet FOLLOW_field_declaration_in_type_specifier1393 = new BitSet(new long[]{0x0000000024000000L,0x0000000804010002L,0x0200080000010000L});
	public static final BitSet FOLLOW_RCURLY_in_type_specifier1396 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_STRUCT_in_type_specifier1417 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_type_specifier1419 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IDENTIFIER_in_type_specifier1436 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_type_specifier_in_type_name1501 = new BitSet(new long[]{0x0000000000000002L,0x0080000000000000L});
	public static final BitSet FOLLOW_abstract_declarator_in_type_name1503 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_pointer_in_abstract_declarator1517 = new BitSet(new long[]{0x0000000000000002L,0x0083000000000000L});
	public static final BitSet FOLLOW_direct_abstract_declarator_in_abstract_declarator1520 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
	public static final BitSet FOLLOW_declarator_suffix_in_abstract_declarator1523 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_direct_abstract_declarator1552 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
	public static final BitSet FOLLOW_abstract_declarator_in_direct_abstract_declarator1554 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_direct_abstract_declarator1556 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_type_specifier_in_field_declaration1581 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_declarator_in_field_declaration1583 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_field_declaration1585 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_statement_in_statement_list1612 = new BitSet(new long[]{0x0040000140210102L,0x208112300C06420CL,0x0805142432260020L});
	public static final BitSet FOLLOW_assert_statement_in_statement1637 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_collective_assert_statement_in_statement1650 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_joint_assert_statement_in_statement1663 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_invariant_statement_in_statement1676 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_collective_invariant_statement_in_statement1689 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_joint_invariant_statement_in_statement1702 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_assume_statement_in_statement1715 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_compound_statement_in_statement1731 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_condition_statement_in_statement1744 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_select_statement_in_statement1757 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_iterative_statement_in_statement1770 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_return_statement_in_statement1783 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_empty_statement_in_statement1796 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_send_statement_in_statement1809 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_recv_statement_in_statement1822 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_call_statement_in_statement1835 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expr_statement_in_statement1848 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_allocate_statement_in_statement1861 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ASSUME_in_assume_statement1882 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_assume_statement1884 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_assume_statement1886 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ASSERT_in_assert_statement1912 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_assert_statement1914 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_assert_statement1916 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ASSERT_in_assert_statement1933 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_assert_statement1935 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_assert_statement1937 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000040000000000L});
	public static final BitSet FOLLOW_STRING_LITERAL_in_assert_statement1939 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_assert_statement1941 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_COLLECTIVE_in_collective_assert_statement1966 = new BitSet(new long[]{0x0000000000010000L});
	public static final BitSet FOLLOW_ASSERT_in_collective_assert_statement1968 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_collective_assert_statement1970 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_collective_assert_statement1972 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_JOINT_in_joint_assert_statement1993 = new BitSet(new long[]{0x0000000000010000L});
	public static final BitSet FOLLOW_ASSERT_in_joint_assert_statement1995 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_joint_assert_statement1997 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_joint_assert_statement1999 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_joint_assert_statement2001 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_INVARIANT_in_invariant_statement2022 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_invariant_statement2024 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_invariant_statement2026 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_invariant_statement2028 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_COLLECTIVE_in_collective_invariant_statement2049 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
	public static final BitSet FOLLOW_INVARIANT_in_collective_invariant_statement2051 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_collective_invariant_statement2053 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_collective_invariant_statement2055 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_collective_invariant_statement2057 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_JOINT_in_joint_invariant_statement2078 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
	public static final BitSet FOLLOW_INVARIANT_in_joint_invariant_statement2080 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_joint_invariant_statement2082 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_joint_invariant_statement2084 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_joint_invariant_statement2086 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LCURLY_in_compound_statement2111 = new BitSet(new long[]{0x0040000140210100L,0x208112300C06420CL,0x0805142432270020L});
	public static final BitSet FOLLOW_statement_list_in_compound_statement2113 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
	public static final BitSet FOLLOW_RCURLY_in_compound_statement2116 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IF_in_condition_statement2143 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_condition_statement2145 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_condition_statement2147 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_condition_statement2149 = new BitSet(new long[]{0x0040000140210100L,0x208112300C06420CL,0x0805142432260020L});
	public static final BitSet FOLLOW_statement_in_condition_statement2151 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000010L});
	public static final BitSet FOLLOW_ELSE_in_condition_statement2154 = new BitSet(new long[]{0x0040000140210100L,0x208112300C06420CL,0x0805142432260020L});
	public static final BitSet FOLLOW_statement_in_condition_statement2156 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SELECT_in_select_statement2195 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
	public static final BitSet FOLLOW_LCURLY_in_select_statement2197 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0400000000000000L});
	public static final BitSet FOLLOW_choice_in_select_statement2199 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0400000000010000L});
	public static final BitSet FOLLOW_RCURLY_in_select_statement2202 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_WHEN_in_choice2224 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_choice2226 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_choice2228 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_choice2230 = new BitSet(new long[]{0x0040000140210100L,0x208112300C06420CL,0x0805142432260020L});
	public static final BitSet FOLLOW_statement_in_choice2232 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_correspondence_annotation_in_iterative_statement2261 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L,0x0800000000000000L});
	public static final BitSet FOLLOW_loop_statement_in_iterative_statement2265 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_WHILE_in_loop_statement2290 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_loop_statement2292 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_loop_statement2294 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_loop_statement2296 = new BitSet(new long[]{0x0040000140210100L,0x208112300C06420CL,0x0805142432260020L});
	public static final BitSet FOLLOW_statement_in_loop_statement2298 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_FOR_in_loop_statement2321 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_loop_statement2323 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142410020020L});
	public static final BitSet FOLLOW_expr_in_loop_statement2327 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_loop_statement2330 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142410020020L});
	public static final BitSet FOLLOW_expr_in_loop_statement2334 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_loop_statement2337 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400820020L});
	public static final BitSet FOLLOW_expr_in_loop_statement2341 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_loop_statement2344 = new BitSet(new long[]{0x0040000140210100L,0x208112300C06420CL,0x0805142432260020L});
	public static final BitSet FOLLOW_statement_in_loop_statement2346 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IDENTIFIER_in_correspondence_annotation2388 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_COLON_in_correspondence_annotation2390 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
	public static final BitSet FOLLOW_PRAGMA_in_correspondence_annotation2393 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0002000000000000L});
	public static final BitSet FOLLOW_TASS_in_correspondence_annotation2395 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
	public static final BitSet FOLLOW_JOINT_in_correspondence_annotation2397 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
	public static final BitSet FOLLOW_INVARIANT_in_correspondence_annotation2399 = new BitSet(new long[]{0x0000000000800000L});
	public static final BitSet FOLLOW_AT_in_correspondence_annotation2401 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_correspondence_annotation2403 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
	public static final BitSet FOLLOW_LCURLY_in_correspondence_annotation2405 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_skew_factor_in_correspondence_annotation2407 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_correspondence_annotation2410 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
	public static final BitSet FOLLOW_RCURLY_in_correspondence_annotation2412 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IDENTIFIER_in_correspondence_annotation2441 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_COLON_in_correspondence_annotation2443 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
	public static final BitSet FOLLOW_PRAGMA_in_correspondence_annotation2446 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0002000000000000L});
	public static final BitSet FOLLOW_TASS_in_correspondence_annotation2448 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
	public static final BitSet FOLLOW_INVARIANT_in_correspondence_annotation2450 = new BitSet(new long[]{0x0000000000800000L});
	public static final BitSet FOLLOW_AT_in_correspondence_annotation2452 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_correspondence_annotation2454 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
	public static final BitSet FOLLOW_LCURLY_in_correspondence_annotation2456 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_skew_factor_in_correspondence_annotation2458 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_correspondence_annotation2461 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
	public static final BitSet FOLLOW_RCURLY_in_correspondence_annotation2463 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_INT_LITERAL_in_skew_factor2499 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_COLON_in_skew_factor2501 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_INT_LITERAL_in_skew_factor2503 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_RETURN_in_return_statement2525 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142410020020L});
	public static final BitSet FOLLOW_expr_in_return_statement2527 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_return_statement2530 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SEMI_in_empty_statement2555 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SEND_in_send_statement2575 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_send_statement2577 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_send_statement2581 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_send_statement2583 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_send_statement2587 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_send_statement2589 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_send_statement2593 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_send_statement2595 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_send_statement2597 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_RECV_in_recv_statement2630 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_recv_statement2632 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_recv_statement2636 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_recv_statement2638 = new BitSet(new long[]{0x0040000040001100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_comm_expr_in_recv_statement2642 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_recv_statement2644 = new BitSet(new long[]{0x0040000040001100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_comm_expr_in_recv_statement2648 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_recv_statement2650 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_recv_statement2652 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_RECV_in_recv_statement2678 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_recv_statement2680 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_recv_statement2684 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_recv_statement2686 = new BitSet(new long[]{0x0040000040001100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_comm_expr_in_recv_statement2690 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_recv_statement2692 = new BitSet(new long[]{0x0040000040001100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_comm_expr_in_recv_statement2696 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_recv_statement2698 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_unary_expr_in_recv_statement2704 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_recv_statement2706 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_recv_statement2708 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expr_in_comm_expr2744 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_wildcard_expr_in_comm_expr2757 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ANY_in_wildcard_expr2777 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_wildcard_expr2779 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_wildcard_expr2781 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_wildcard_expr2783 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_unary_expr_in_call_statement2811 = new BitSet(new long[]{0x0000000000040000L});
	public static final BitSet FOLLOW_ASSIGN_in_call_statement2813 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_call_statement2817 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_call_statement2819 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400820020L});
	public static final BitSet FOLLOW_parameter_list_in_call_statement2821 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_call_statement2824 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_call_statement2826 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_unary_expr_in_allocate_statement2859 = new BitSet(new long[]{0x0000000000040000L});
	public static final BitSet FOLLOW_ASSIGN_in_allocate_statement2861 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_allocate_statement2863 = new BitSet(new long[]{0x0000000024000000L,0x0000000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_type_name_in_allocate_statement2865 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
	public static final BitSet FOLLOW_MULTI_in_allocate_statement2867 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_allocate_statement2869 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
	public static final BitSet FOLLOW_MALLOC_in_allocate_statement2871 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_unary_expr_in_allocate_statement2873 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_allocate_statement2875 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_parameter_in_parameter_list2902 = new BitSet(new long[]{0x0000001000000002L});
	public static final BitSet FOLLOW_COMMA_in_parameter_list2905 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_parameter_in_parameter_list2907 = new BitSet(new long[]{0x0000001000000002L});
	public static final BitSet FOLLOW_expr_in_parameter2929 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_partial_in_partial_list2948 = new BitSet(new long[]{0x0000001000000002L});
	public static final BitSet FOLLOW_COMMA_in_partial_list2951 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
	public static final BitSet FOLLOW_partial_in_partial_list2953 = new BitSet(new long[]{0x0000001000000002L});
	public static final BitSet FOLLOW_LCURLY_in_partial2975 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_partial2977 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_partial2979 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
	public static final BitSet FOLLOW_INT_LITERAL_in_partial2981 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
	public static final BitSet FOLLOW_RCURLY_in_partial2983 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expr_in_expr_statement3004 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_expr_statement3006 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_assign_expr_in_expr3030 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_quantifier_expr_in_expr3043 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_unary_expr_in_assign_expr3063 = new BitSet(new long[]{0x8000000000040000L,0x0240000000000000L,0x0000200000000040L});
	public static final BitSet FOLLOW_assign_operator_in_assign_expr3065 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_assign_expr_in_assign_expr3067 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ifThenElse_expr_in_assign_expr3087 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_logical_or_expr_in_ifThenElse_expr3110 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000002000L});
	public static final BitSet FOLLOW_QMARK_in_ifThenElse_expr3113 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_ifThenElse_expr3117 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_COLON_in_ifThenElse_expr3119 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_ifThenElse_expr3123 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_quantifier_in_quantifier_expr3157 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
	public static final BitSet FOLLOW_LCURLY_in_quantifier_expr3159 = new BitSet(new long[]{0x0000000024000000L,0x0000000800010002L,0x0200000000000000L});
	public static final BitSet FOLLOW_simple_type_in_quantifier_expr3161 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_quantifier_expr3163 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
	public static final BitSet FOLLOW_RCURLY_in_quantifier_expr3165 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_quantifier_expr3167 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_quantifier_in_quantifier_expr3188 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
	public static final BitSet FOLLOW_LCURLY_in_quantifier_expr3190 = new BitSet(new long[]{0x0000000024000000L,0x0000000800010002L,0x0200000000000000L});
	public static final BitSet FOLLOW_simple_type_in_quantifier_expr3192 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_quantifier_expr3194 = new BitSet(new long[]{0x0000000001000000L});
	public static final BitSet FOLLOW_BAR_in_quantifier_expr3196 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_logical_or_expr_in_quantifier_expr3198 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
	public static final BitSet FOLLOW_RCURLY_in_quantifier_expr3200 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_quantifier_expr3202 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_FORALL_in_quantifier3234 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_EXISTS_in_quantifier3247 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_logical_and_expr_in_logical_or_expr3266 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_OR_in_logical_or_expr3269 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_logical_and_expr_in_logical_or_expr3271 = new BitSet(new long[]{0x0000000000000002L,0x4000000000000000L});
	public static final BitSet FOLLOW_equality_expr_in_logical_and_expr3302 = new BitSet(new long[]{0x0000000000000402L});
	public static final BitSet FOLLOW_AND_in_logical_and_expr3305 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_equality_expr_in_logical_and_expr3307 = new BitSet(new long[]{0x0000000000000402L});
	public static final BitSet FOLLOW_relational_expr_in_equality_expr3338 = new BitSet(new long[]{0x0000000000000002L,0x0800000000000040L});
	public static final BitSet FOLLOW_equality_operator_in_equality_expr3341 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_relational_expr_in_equality_expr3343 = new BitSet(new long[]{0x0000000000000002L,0x0800000000000040L});
	public static final BitSet FOLLOW_additive_expr_in_relational_expr3390 = new BitSet(new long[]{0x0000000000000002L,0x000C000001800000L});
	public static final BitSet FOLLOW_relational_operator_in_relational_expr3393 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_additive_expr_in_relational_expr3395 = new BitSet(new long[]{0x0000000000000002L,0x000C000001800000L});
	public static final BitSet FOLLOW_multi_expr_in_additive_expr3452 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000100000000020L});
	public static final BitSet FOLLOW_additive_operator_in_additive_expr3455 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_multi_expr_in_additive_expr3457 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000100000000020L});
	public static final BitSet FOLLOW_unary_expr_in_multi_expr3504 = new BitSet(new long[]{0x4000000000000002L,0x00A0000000000000L});
	public static final BitSet FOLLOW_multi_operator_in_multi_expr3507 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_unary_expr_in_multi_expr3509 = new BitSet(new long[]{0x4000000000000002L,0x00A0000000000000L});
	public static final BitSet FOLLOW_postfix_expr_in_unary_expr3598 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_unary_operator_in_unary_expr3611 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_unary_expr_in_unary_expr3613 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_self_change_op_in_unary_expr3628 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_unary_expr_in_unary_expr3630 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SIZEOF_in_unary_expr3645 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_unary_expr3647 = new BitSet(new long[]{0x0000000024000000L,0x0000000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_type_name_in_unary_expr3649 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_unary_expr3651 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SIZEOF_in_unary_expr3666 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_unary_expr_in_unary_expr3668 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LPAREN_in_unary_expr3683 = new BitSet(new long[]{0x0000000024000000L,0x0000000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_type_name_in_unary_expr3685 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_unary_expr3687 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_unary_expr_in_unary_expr3689 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PLUS_in_unary_operator3714 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SUB_in_unary_operator3727 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_NOT_in_unary_operator3740 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MULTI_in_unary_operator3753 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ADDR_OF_in_unary_operator3766 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SPEC_in_spec_expr3787 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
	public static final BitSet FOLLOW_DOT_in_spec_expr3789 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_spec_expr3791 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_primary_expr_in_postfix_expr3813 = new BitSet(new long[]{0x0000000000808002L,0x000200000000000DL});
	public static final BitSet FOLLOW_postfix_expr_suffix_in_postfix_expr3815 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DOT_in_postfix_expr_suffix3840 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_postfix_expr_suffix3842 = new BitSet(new long[]{0x0000000000808002L,0x000200000000000DL});
	public static final BitSet FOLLOW_postfix_expr_suffix_in_postfix_expr_suffix3844 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ARROW_in_postfix_expr_suffix3865 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_postfix_expr_suffix3867 = new BitSet(new long[]{0x0000000000808002L,0x000200000000000DL});
	public static final BitSet FOLLOW_postfix_expr_suffix_in_postfix_expr_suffix3869 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LSQUARE_in_postfix_expr_suffix3891 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_postfix_expr_suffix3893 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000001000000L});
	public static final BitSet FOLLOW_RSQUARE_in_postfix_expr_suffix3895 = new BitSet(new long[]{0x0000000000808002L,0x000200000000000DL});
	public static final BitSet FOLLOW_postfix_expr_suffix_in_postfix_expr_suffix3897 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_self_change_op_in_postfix_expr_suffix3918 = new BitSet(new long[]{0x0000000000808002L,0x000200000000000DL});
	public static final BitSet FOLLOW_postfix_expr_suffix_in_postfix_expr_suffix3920 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_AT_in_postfix_expr_suffix3939 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_postfix_expr_suffix3941 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
	public static final BitSet FOLLOW_DOT_in_postfix_expr_suffix3943 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_postfix_expr_suffix3945 = new BitSet(new long[]{0x0000000000808002L,0x000200000000000DL});
	public static final BitSet FOLLOW_postfix_expr_suffix_in_postfix_expr_suffix3947 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_constant_in_primary_expr3980 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_evaluated_function_expr_in_primary_expr3993 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_LPAREN_in_primary_expr4006 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_primary_expr4008 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_primary_expr4010 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IDENTIFIER_in_primary_expr4025 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_spec_expr_in_primary_expr4038 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_derivative_expr_in_primary_expr4051 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IDENTIFIER_in_evaluated_function_expr4071 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_evaluated_function_expr4073 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400820020L});
	public static final BitSet FOLLOW_parameter_list_in_evaluated_function_expr4075 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_evaluated_function_expr4078 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DERIVATIVE_in_derivative_expr4106 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
	public static final BitSet FOLLOW_LSQUARE_in_derivative_expr4108 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_derivative_expr4110 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_derivative_expr4112 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
	public static final BitSet FOLLOW_partial_list_in_derivative_expr4114 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000001000000L});
	public static final BitSet FOLLOW_RSQUARE_in_derivative_expr4116 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_derivative_expr4118 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400820020L});
	public static final BitSet FOLLOW_parameter_list_in_derivative_expr4120 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_derivative_expr4123 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DOUBLE_PLUS_in_self_change_op4152 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_DOUBLE_SUB_in_self_change_op4165 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_TRUE_in_constant4186 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_FALSE_in_constant4199 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_INT_LITERAL_in_constant4213 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_REAL_LITERAL_in_constant4226 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_CHAR_LITERAL_in_constant4239 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_STRING_LITERAL_in_constant4252 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SYS_VAR_in_constant4265 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_type_specifier_in_synpred21_PragmaString800 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_declaration_unit_in_synpred21_PragmaString802 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_synpred21_PragmaString805 = new BitSet(new long[]{0x0000000024000000L,0x0081000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_declaration_unit_in_synpred21_PragmaString807 = new BitSet(new long[]{0x0000001000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_synpred21_PragmaString811 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_prefix_in_synpred24_PragmaString845 = new BitSet(new long[]{0x0000040024000000L,0x0000108804010002L,0x02000A0000000000L});
	public static final BitSet FOLLOW_suffix_in_synpred24_PragmaString848 = new BitSet(new long[]{0x0000040024000000L,0x0000000804010002L,0x02000A0000000000L});
	public static final BitSet FOLLOW_declaration_body_in_synpred24_PragmaString851 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_synpred24_PragmaString853 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_collective_assert_statement_in_synpred62_PragmaString1650 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_joint_assert_statement_in_synpred63_PragmaString1663 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_collective_invariant_statement_in_synpred65_PragmaString1689 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_joint_invariant_statement_in_synpred66_PragmaString1702 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_iterative_statement_in_synpred71_PragmaString1770 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_call_statement_in_synpred76_PragmaString1835 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_expr_statement_in_synpred77_PragmaString1848 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ASSERT_in_synpred78_PragmaString1912 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_synpred78_PragmaString1914 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_synpred78_PragmaString1916 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ELSE_in_synpred80_PragmaString2154 = new BitSet(new long[]{0x0040000140210100L,0x208112300C06420CL,0x0805142432260020L});
	public static final BitSet FOLLOW_statement_in_synpred80_PragmaString2156 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IDENTIFIER_in_synpred89_PragmaString2388 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_COLON_in_synpred89_PragmaString2390 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000200L});
	public static final BitSet FOLLOW_PRAGMA_in_synpred89_PragmaString2393 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0002000000000000L});
	public static final BitSet FOLLOW_TASS_in_synpred89_PragmaString2395 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
	public static final BitSet FOLLOW_JOINT_in_synpred89_PragmaString2397 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
	public static final BitSet FOLLOW_INVARIANT_in_synpred89_PragmaString2399 = new BitSet(new long[]{0x0000000000800000L});
	public static final BitSet FOLLOW_AT_in_synpred89_PragmaString2401 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
	public static final BitSet FOLLOW_IDENTIFIER_in_synpred89_PragmaString2403 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
	public static final BitSet FOLLOW_LCURLY_in_synpred89_PragmaString2405 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_skew_factor_in_synpred89_PragmaString2407 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_synpred89_PragmaString2410 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
	public static final BitSet FOLLOW_RCURLY_in_synpred89_PragmaString2412 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_RECV_in_synpred93_PragmaString2630 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_synpred93_PragmaString2632 = new BitSet(new long[]{0x0040000040000100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_expr_in_synpred93_PragmaString2636 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_synpred93_PragmaString2638 = new BitSet(new long[]{0x0040000040001100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_comm_expr_in_synpred93_PragmaString2642 = new BitSet(new long[]{0x0000001000000000L});
	public static final BitSet FOLLOW_COMMA_in_synpred93_PragmaString2644 = new BitSet(new long[]{0x0040000040001100L,0x208100100404420CL,0x0005142400020020L});
	public static final BitSet FOLLOW_comm_expr_in_synpred93_PragmaString2648 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_synpred93_PragmaString2650 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000010000000L});
	public static final BitSet FOLLOW_SEMI_in_synpred93_PragmaString2652 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_unary_expr_in_synpred95_PragmaString2811 = new BitSet(new long[]{0x0000000000040000L});
	public static final BitSet FOLLOW_ASSIGN_in_synpred95_PragmaString2813 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_unary_expr_in_synpred100_PragmaString3063 = new BitSet(new long[]{0x8000000000040000L,0x0240000000000000L,0x0000200000000040L});
	public static final BitSet FOLLOW_assign_operator_in_synpred100_PragmaString3065 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_assign_expr_in_synpred100_PragmaString3067 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_additive_operator_in_synpred112_PragmaString3455 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_multi_expr_in_synpred112_PragmaString3457 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_multi_operator_in_synpred114_PragmaString3507 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_unary_expr_in_synpred114_PragmaString3509 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_postfix_expr_in_synpred122_PragmaString3598 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SIZEOF_in_synpred125_PragmaString3645 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
	public static final BitSet FOLLOW_LPAREN_in_synpred125_PragmaString3647 = new BitSet(new long[]{0x0000000024000000L,0x0000000804010002L,0x0200080000000000L});
	public static final BitSet FOLLOW_type_name_in_synpred125_PragmaString3649 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
	public static final BitSet FOLLOW_RPAREN_in_synpred125_PragmaString3651 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SIZEOF_in_synpred126_PragmaString3666 = new BitSet(new long[]{0x0040000040000100L,0x208100100400400CL,0x0005142400020020L});
	public static final BitSet FOLLOW_unary_expr_in_synpred126_PragmaString3668 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_postfix_expr_suffix_in_synpred131_PragmaString3815 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_postfix_expr_suffix_in_synpred132_PragmaString3844 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_postfix_expr_suffix_in_synpred134_PragmaString3869 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_postfix_expr_suffix_in_synpred136_PragmaString3897 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_postfix_expr_suffix_in_synpred138_PragmaString3920 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_postfix_expr_suffix_in_synpred140_PragmaString3947 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_evaluated_function_expr_in_synpred142_PragmaString3993 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_IDENTIFIER_in_synpred144_PragmaString4025 = new BitSet(new long[]{0x0000000000000002L});
}