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

org.jbehaviour.antlr.AnotherStoryGrammerParser Maven / Gradle / Ivy

The newest version!
// $ANTLR 3.4 org/jbehaviour/antlr/AnotherStoryGrammer.g 2012-12-20 23:28:14

    package org.jbehaviour.antlr;
    import java.io.IOException;
    import java.util.regex.Pattern;


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

import org.antlr.runtime.tree.*;


/**
 * @author Roffin Yannick
 */
@SuppressWarnings({"all", "warnings", "unchecked"})
public class AnotherStoryGrammerParser extends Parser {
    public static final String[] tokenNames = new String[] {
        "", "", "", "", "AND", "ARRAY", "ASAN", "Alphanumeric", "Arobase", "CALL", "COMMA", "Comment", "Cote", "DECLARE", "Digit", "Dollar", "Dot", "DoubleCote", "Eol", "EscapeSequence", "Exponent", "FALSE", "FEATURE", "FIELD", "GIVEN", "HexDigit", "INCLUDE", "INORDERTO", "IWANTTO", "Identifier", "LeftBrace", "Member", "NULL", "NUMBER", "Number", "OBJECT", "PLUGIN", "REGISTER", "REPORT", "Reference", "RightBrace", "SCENARIO", "STRING", "String", "THEN", "TOK_AND", "TOK_ASAN", "TOK_CALL", "TOK_DECLARE", "TOK_FEATURE", "TOK_GIVEN", "TOK_INCLUDE", "TOK_INORDERTO", "TOK_IWANTTO", "TOK_REGISTER", "TOK_REPORT", "TOK_SCENARIO", "TOK_TEMPLATE", "TOK_THEN", "TOK_WHEN", "TRUE", "UnderScrore", "UnicodeEscape", "WHEN", "WS", "':'", "'['", "']'", "'false'", "'null'", "'true'", "'{'", "'}'"
    };

    public static final int EOF=-1;
    public static final int T__65=65;
    public static final int T__66=66;
    public static final int T__67=67;
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__70=70;
    public static final int T__71=71;
    public static final int T__72=72;
    public static final int AND=4;
    public static final int ARRAY=5;
    public static final int ASAN=6;
    public static final int Alphanumeric=7;
    public static final int Arobase=8;
    public static final int CALL=9;
    public static final int COMMA=10;
    public static final int Comment=11;
    public static final int Cote=12;
    public static final int DECLARE=13;
    public static final int Digit=14;
    public static final int Dollar=15;
    public static final int Dot=16;
    public static final int DoubleCote=17;
    public static final int Eol=18;
    public static final int EscapeSequence=19;
    public static final int Exponent=20;
    public static final int FALSE=21;
    public static final int FEATURE=22;
    public static final int FIELD=23;
    public static final int GIVEN=24;
    public static final int HexDigit=25;
    public static final int INCLUDE=26;
    public static final int INORDERTO=27;
    public static final int IWANTTO=28;
    public static final int Identifier=29;
    public static final int LeftBrace=30;
    public static final int Member=31;
    public static final int NULL=32;
    public static final int NUMBER=33;
    public static final int Number=34;
    public static final int OBJECT=35;
    public static final int PLUGIN=36;
    public static final int REGISTER=37;
    public static final int REPORT=38;
    public static final int Reference=39;
    public static final int RightBrace=40;
    public static final int SCENARIO=41;
    public static final int STRING=42;
    public static final int String=43;
    public static final int THEN=44;
    public static final int TOK_AND=45;
    public static final int TOK_ASAN=46;
    public static final int TOK_CALL=47;
    public static final int TOK_DECLARE=48;
    public static final int TOK_FEATURE=49;
    public static final int TOK_GIVEN=50;
    public static final int TOK_INCLUDE=51;
    public static final int TOK_INORDERTO=52;
    public static final int TOK_IWANTTO=53;
    public static final int TOK_REGISTER=54;
    public static final int TOK_REPORT=55;
    public static final int TOK_SCENARIO=56;
    public static final int TOK_TEMPLATE=57;
    public static final int TOK_THEN=58;
    public static final int TOK_WHEN=59;
    public static final int TRUE=60;
    public static final int UnderScrore=61;
    public static final int UnicodeEscape=62;
    public static final int WHEN=63;
    public static final int WS=64;

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

    // delegators


    public AnotherStoryGrammerParser(TokenStream input) {
        this(input, new RecognizerSharedState());
    }
    public AnotherStoryGrammerParser(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;
}
    public String[] getTokenNames() { return AnotherStoryGrammerParser.tokenNames; }
    public String getGrammarFileName() { return "org/jbehaviour/antlr/AnotherStoryGrammer.g"; }


    	enum Situation {
    		none,
    		onGivenKeyword,
    		onWhenKeyword,
    		onCallKeyword,
    		onThenKeyword
    	};
    	Situation situation = Situation.none;
    	/**
    	 * debug
    	 */
        	public void onDebug(String where,String value) {
        		System.err.println(where+" "+value);
        	}
    	/**
    	 * feature
    	 */
        	public void onFeatureKeyword() {
        		onDebug("onFeatureKeyword","");
        	}
    	/**
    	 * feature
    	 * Declare reference as String 'string'
    	 */
        	public void onFeatureReportKeyword() {
        		onDebug("onFeatureReportKeyword","");
        	}
    	/**
    	 * feature
    	 * Declare reference as String 'string'
    	 */
        	public void onFeatureDeclareKeyword() {
        		onDebug("onFeatureDeclareKeyword","");
        	}
    	/**
    	 * feature
    	 * In order to test this feature
    	 * As an explicit system actor
    	 * I want to verify this behaviour
    	 */
        	public void onFeatureInOrderToKeyword() {
        		onDebug("onFeatureInOrderToKeyword","");
        	}
        	public void onFeatureAsAnKeyword() {
        		onDebug("onFeatureAsAnKeyword","");
        	}
        	public void onFeatureIWantToKeyword() {
        		onDebug("onFeatureIWantToKeyword","");
        	}
    	/**
    	 * feature
    	 * Register system with 'org.jbehaviour.plugins.system.SystemSteps' plugin
    	 */
        	public void onFeatureRegisterKeyword() {
        		onDebug("onFeatureRegisterKeyword","");
        	}
    	/**
    	 * feature
    	 * Include 'file.story'
    	 */
        	public void onFeatureIncludeKeyword() {
        		onDebug("onFeatureIncludeKeyword","");
        	}
        	/**
        	 * scenario
        	 * Scenario: Verify we can go to 'http://www.bing.com'
        	 */
        	public void onScenarioKeyword() {
        		onDebug("onScenarioKeyword","");
        	}
        	/**
        	 * simulate given, when then according to the
        	 * situation
        	 */
        	public void onAndKeyword() {
        		switch(situation) {
        			case onGivenKeyword:
        				onGivenKeyword();
        				break;
        			case onThenKeyword:
        				onThenKeyword();
        				break;
        			case onWhenKeyword:
        				onWhenKeyword();
        				break;
        			case onCallKeyword:
        				onCallKeyword();
        				break;
        		}
        	}
        	public void onGivenKeyword() {
        		situation = Situation.onGivenKeyword;
        		onDebug("onGivenKeyword","");
        	}
        	public void onWhenKeyword() {
        		situation = Situation.onWhenKeyword;
        		onDebug("onWhenKeyword","");
        	}
        	public void onThenKeyword() {
        		situation = Situation.onThenKeyword;
        		onDebug("onThenKeyword","");
        	}
        	public void onCallKeyword() {
        		situation = Situation.onCallKeyword;
        		onDebug("onCallKeyword","");
        	}
        	/**
        	 * implement any words analysis
        	 */
        	public void onAnyKeyword() {
        		onDebug("onAnyKeyword","");
        	}
        	/**
        	 * rewrite any implementation
        	 */
        	public void onAnyString(String value) {
        		onDebug("onAnyString",value);
        	}
        	public void onAnyIdentifier(String value) {
        		onDebug("onAnyIdentifier",value);
        	}
        	public void onAnyReference(String value) {
        		onDebug("onAnyReference",value);
        	}
        	public void onAnyTemplate(String value) {
        		onDebug("onAnyTemplate",value);
        	}
        	public void onAnyNumeric(String value) {
        		onDebug("onAnyNumeric",value);
        	}
        	public void onAnyJsonObject(String value) {
        		onDebug("onAnyJsonObject",value);
        	}


    public static class story_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "story"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:232:1: story : feature ( scenario )* ;
    public final AnotherStoryGrammerParser.story_return story() throws RecognitionException {
        AnotherStoryGrammerParser.story_return retval = new AnotherStoryGrammerParser.story_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        AnotherStoryGrammerParser.feature_return feature1 =null;

        AnotherStoryGrammerParser.scenario_return scenario2 =null;



        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:233:2: ( feature ( scenario )* )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:233:4: feature ( scenario )*
            {
            root_0 = (CommonTree)adaptor.nil();


            pushFollow(FOLLOW_feature_in_story273);
            feature1=feature();

            state._fsp--;

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

            // org/jbehaviour/antlr/AnotherStoryGrammer.g:233:12: ( scenario )*
            loop1:
            do {
                int alt1=2;
                switch ( input.LA(1) ) {
                case SCENARIO:
                    {
                    alt1=1;
                    }
                    break;

                }

                switch (alt1) {
            	case 1 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:233:13: scenario
            	    {
            	    pushFollow(FOLLOW_scenario_in_story276);
            	    scenario2=scenario();

            	    state._fsp--;

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

            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "story"


    public static class feature_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "feature"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:236:1: feature : FEATURE anyDecl featureDecl -> ^( TOK_FEATURE FEATURE anyDecl featureDecl ) ;
    public final AnotherStoryGrammerParser.feature_return feature() throws RecognitionException {
        AnotherStoryGrammerParser.feature_return retval = new AnotherStoryGrammerParser.feature_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token FEATURE3=null;
        AnotherStoryGrammerParser.anyDecl_return anyDecl4 =null;

        AnotherStoryGrammerParser.featureDecl_return featureDecl5 =null;


        CommonTree FEATURE3_tree=null;
        RewriteRuleTokenStream stream_FEATURE=new RewriteRuleTokenStream(adaptor,"token FEATURE");
        RewriteRuleSubtreeStream stream_anyDecl=new RewriteRuleSubtreeStream(adaptor,"rule anyDecl");
        RewriteRuleSubtreeStream stream_featureDecl=new RewriteRuleSubtreeStream(adaptor,"rule featureDecl");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:236:8: ( FEATURE anyDecl featureDecl -> ^( TOK_FEATURE FEATURE anyDecl featureDecl ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:236:10: FEATURE anyDecl featureDecl
            {
            FEATURE3=(Token)match(input,FEATURE,FOLLOW_FEATURE_in_feature287);  
            stream_FEATURE.add(FEATURE3);


            onFeatureKeyword();

            pushFollow(FOLLOW_anyDecl_in_feature291);
            anyDecl4=anyDecl();

            state._fsp--;

            stream_anyDecl.add(anyDecl4.getTree());

            pushFollow(FOLLOW_featureDecl_in_feature293);
            featureDecl5=featureDecl();

            state._fsp--;

            stream_featureDecl.add(featureDecl5.getTree());

            // AST REWRITE
            // elements: FEATURE, featureDecl, anyDecl
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 237:4: -> ^( TOK_FEATURE FEATURE anyDecl featureDecl )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:237:7: ^( TOK_FEATURE FEATURE anyDecl featureDecl )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_FEATURE, "TOK_FEATURE")
                , root_1);

                adaptor.addChild(root_1, 
                stream_FEATURE.nextNode()
                );

                adaptor.addChild(root_1, stream_anyDecl.nextTree());

                adaptor.addChild(root_1, stream_featureDecl.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "feature"


    public static class featureDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "featureDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:240:1: featureDecl : inOrderToDecl asAnDecl iWantToDecl ( includeDecl | registerDecl | reportDecl | declareDecl )* ;
    public final AnotherStoryGrammerParser.featureDecl_return featureDecl() throws RecognitionException {
        AnotherStoryGrammerParser.featureDecl_return retval = new AnotherStoryGrammerParser.featureDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        AnotherStoryGrammerParser.inOrderToDecl_return inOrderToDecl6 =null;

        AnotherStoryGrammerParser.asAnDecl_return asAnDecl7 =null;

        AnotherStoryGrammerParser.iWantToDecl_return iWantToDecl8 =null;

        AnotherStoryGrammerParser.includeDecl_return includeDecl9 =null;

        AnotherStoryGrammerParser.registerDecl_return registerDecl10 =null;

        AnotherStoryGrammerParser.reportDecl_return reportDecl11 =null;

        AnotherStoryGrammerParser.declareDecl_return declareDecl12 =null;



        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:241:2: ( inOrderToDecl asAnDecl iWantToDecl ( includeDecl | registerDecl | reportDecl | declareDecl )* )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:241:4: inOrderToDecl asAnDecl iWantToDecl ( includeDecl | registerDecl | reportDecl | declareDecl )*
            {
            root_0 = (CommonTree)adaptor.nil();


            pushFollow(FOLLOW_inOrderToDecl_in_featureDecl319);
            inOrderToDecl6=inOrderToDecl();

            state._fsp--;

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

            pushFollow(FOLLOW_asAnDecl_in_featureDecl321);
            asAnDecl7=asAnDecl();

            state._fsp--;

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

            pushFollow(FOLLOW_iWantToDecl_in_featureDecl323);
            iWantToDecl8=iWantToDecl();

            state._fsp--;

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

            // org/jbehaviour/antlr/AnotherStoryGrammer.g:241:39: ( includeDecl | registerDecl | reportDecl | declareDecl )*
            loop2:
            do {
                int alt2=5;
                switch ( input.LA(1) ) {
                case INCLUDE:
                    {
                    alt2=1;
                    }
                    break;
                case REGISTER:
                    {
                    alt2=2;
                    }
                    break;
                case REPORT:
                    {
                    alt2=3;
                    }
                    break;
                case DECLARE:
                    {
                    alt2=4;
                    }
                    break;

                }

                switch (alt2) {
            	case 1 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:241:40: includeDecl
            	    {
            	    pushFollow(FOLLOW_includeDecl_in_featureDecl326);
            	    includeDecl9=includeDecl();

            	    state._fsp--;

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

            	    }
            	    break;
            	case 2 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:241:52: registerDecl
            	    {
            	    pushFollow(FOLLOW_registerDecl_in_featureDecl328);
            	    registerDecl10=registerDecl();

            	    state._fsp--;

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

            	    }
            	    break;
            	case 3 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:241:65: reportDecl
            	    {
            	    pushFollow(FOLLOW_reportDecl_in_featureDecl330);
            	    reportDecl11=reportDecl();

            	    state._fsp--;

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

            	    }
            	    break;
            	case 4 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:241:76: declareDecl
            	    {
            	    pushFollow(FOLLOW_declareDecl_in_featureDecl332);
            	    declareDecl12=declareDecl();

            	    state._fsp--;

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

            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);


            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "featureDecl"


    public static class inOrderToDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "inOrderToDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:244:1: inOrderToDecl : INORDERTO anyDecl -> ^( TOK_INORDERTO INORDERTO anyDecl ) ;
    public final AnotherStoryGrammerParser.inOrderToDecl_return inOrderToDecl() throws RecognitionException {
        AnotherStoryGrammerParser.inOrderToDecl_return retval = new AnotherStoryGrammerParser.inOrderToDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token INORDERTO13=null;
        AnotherStoryGrammerParser.anyDecl_return anyDecl14 =null;


        CommonTree INORDERTO13_tree=null;
        RewriteRuleTokenStream stream_INORDERTO=new RewriteRuleTokenStream(adaptor,"token INORDERTO");
        RewriteRuleSubtreeStream stream_anyDecl=new RewriteRuleSubtreeStream(adaptor,"rule anyDecl");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:244:14: ( INORDERTO anyDecl -> ^( TOK_INORDERTO INORDERTO anyDecl ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:244:16: INORDERTO anyDecl
            {
            INORDERTO13=(Token)match(input,INORDERTO,FOLLOW_INORDERTO_in_inOrderToDecl343);  
            stream_INORDERTO.add(INORDERTO13);


            pushFollow(FOLLOW_anyDecl_in_inOrderToDecl345);
            anyDecl14=anyDecl();

            state._fsp--;

            stream_anyDecl.add(anyDecl14.getTree());

            // AST REWRITE
            // elements: INORDERTO, anyDecl
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 245:4: -> ^( TOK_INORDERTO INORDERTO anyDecl )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:245:7: ^( TOK_INORDERTO INORDERTO anyDecl )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_INORDERTO, "TOK_INORDERTO")
                , root_1);

                adaptor.addChild(root_1, 
                stream_INORDERTO.nextNode()
                );

                adaptor.addChild(root_1, stream_anyDecl.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "inOrderToDecl"


    public static class asAnDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "asAnDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:247:1: asAnDecl : ASAN anyDecl -> ^( TOK_ASAN ASAN anyDecl ) ;
    public final AnotherStoryGrammerParser.asAnDecl_return asAnDecl() throws RecognitionException {
        AnotherStoryGrammerParser.asAnDecl_return retval = new AnotherStoryGrammerParser.asAnDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token ASAN15=null;
        AnotherStoryGrammerParser.anyDecl_return anyDecl16 =null;


        CommonTree ASAN15_tree=null;
        RewriteRuleTokenStream stream_ASAN=new RewriteRuleTokenStream(adaptor,"token ASAN");
        RewriteRuleSubtreeStream stream_anyDecl=new RewriteRuleSubtreeStream(adaptor,"rule anyDecl");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:247:9: ( ASAN anyDecl -> ^( TOK_ASAN ASAN anyDecl ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:247:11: ASAN anyDecl
            {
            ASAN15=(Token)match(input,ASAN,FOLLOW_ASAN_in_asAnDecl366);  
            stream_ASAN.add(ASAN15);


            pushFollow(FOLLOW_anyDecl_in_asAnDecl368);
            anyDecl16=anyDecl();

            state._fsp--;

            stream_anyDecl.add(anyDecl16.getTree());

            // AST REWRITE
            // elements: anyDecl, ASAN
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 248:4: -> ^( TOK_ASAN ASAN anyDecl )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:248:7: ^( TOK_ASAN ASAN anyDecl )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_ASAN, "TOK_ASAN")
                , root_1);

                adaptor.addChild(root_1, 
                stream_ASAN.nextNode()
                );

                adaptor.addChild(root_1, stream_anyDecl.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "asAnDecl"


    public static class iWantToDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "iWantToDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:250:1: iWantToDecl : IWANTTO anyDecl -> ^( TOK_IWANTTO IWANTTO anyDecl ) ;
    public final AnotherStoryGrammerParser.iWantToDecl_return iWantToDecl() throws RecognitionException {
        AnotherStoryGrammerParser.iWantToDecl_return retval = new AnotherStoryGrammerParser.iWantToDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token IWANTTO17=null;
        AnotherStoryGrammerParser.anyDecl_return anyDecl18 =null;


        CommonTree IWANTTO17_tree=null;
        RewriteRuleTokenStream stream_IWANTTO=new RewriteRuleTokenStream(adaptor,"token IWANTTO");
        RewriteRuleSubtreeStream stream_anyDecl=new RewriteRuleSubtreeStream(adaptor,"rule anyDecl");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:250:12: ( IWANTTO anyDecl -> ^( TOK_IWANTTO IWANTTO anyDecl ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:250:14: IWANTTO anyDecl
            {
            IWANTTO17=(Token)match(input,IWANTTO,FOLLOW_IWANTTO_in_iWantToDecl389);  
            stream_IWANTTO.add(IWANTTO17);


            pushFollow(FOLLOW_anyDecl_in_iWantToDecl391);
            anyDecl18=anyDecl();

            state._fsp--;

            stream_anyDecl.add(anyDecl18.getTree());

            // AST REWRITE
            // elements: IWANTTO, anyDecl
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 251:4: -> ^( TOK_IWANTTO IWANTTO anyDecl )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:251:7: ^( TOK_IWANTTO IWANTTO anyDecl )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_IWANTTO, "TOK_IWANTTO")
                , root_1);

                adaptor.addChild(root_1, 
                stream_IWANTTO.nextNode()
                );

                adaptor.addChild(root_1, stream_anyDecl.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "iWantToDecl"


    public static class includeDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "includeDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:253:1: includeDecl : INCLUDE anyStringDecl -> ^( TOK_INCLUDE INCLUDE anyStringDecl ) ;
    public final AnotherStoryGrammerParser.includeDecl_return includeDecl() throws RecognitionException {
        AnotherStoryGrammerParser.includeDecl_return retval = new AnotherStoryGrammerParser.includeDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token INCLUDE19=null;
        AnotherStoryGrammerParser.anyStringDecl_return anyStringDecl20 =null;


        CommonTree INCLUDE19_tree=null;
        RewriteRuleTokenStream stream_INCLUDE=new RewriteRuleTokenStream(adaptor,"token INCLUDE");
        RewriteRuleSubtreeStream stream_anyStringDecl=new RewriteRuleSubtreeStream(adaptor,"rule anyStringDecl");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:253:12: ( INCLUDE anyStringDecl -> ^( TOK_INCLUDE INCLUDE anyStringDecl ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:253:14: INCLUDE anyStringDecl
            {
            INCLUDE19=(Token)match(input,INCLUDE,FOLLOW_INCLUDE_in_includeDecl412);  
            stream_INCLUDE.add(INCLUDE19);


            onFeatureIncludeKeyword();

            pushFollow(FOLLOW_anyStringDecl_in_includeDecl416);
            anyStringDecl20=anyStringDecl();

            state._fsp--;

            stream_anyStringDecl.add(anyStringDecl20.getTree());

            // AST REWRITE
            // elements: anyStringDecl, INCLUDE
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 254:4: -> ^( TOK_INCLUDE INCLUDE anyStringDecl )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:254:7: ^( TOK_INCLUDE INCLUDE anyStringDecl )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_INCLUDE, "TOK_INCLUDE")
                , root_1);

                adaptor.addChild(root_1, 
                stream_INCLUDE.nextNode()
                );

                adaptor.addChild(root_1, stream_anyStringDecl.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "includeDecl"


    public static class registerDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "registerDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:256:1: registerDecl : REGISTER anyDeclEndedByPlugin -> ^( TOK_REGISTER REGISTER anyDeclEndedByPlugin ) ;
    public final AnotherStoryGrammerParser.registerDecl_return registerDecl() throws RecognitionException {
        AnotherStoryGrammerParser.registerDecl_return retval = new AnotherStoryGrammerParser.registerDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token REGISTER21=null;
        AnotherStoryGrammerParser.anyDeclEndedByPlugin_return anyDeclEndedByPlugin22 =null;


        CommonTree REGISTER21_tree=null;
        RewriteRuleTokenStream stream_REGISTER=new RewriteRuleTokenStream(adaptor,"token REGISTER");
        RewriteRuleSubtreeStream stream_anyDeclEndedByPlugin=new RewriteRuleSubtreeStream(adaptor,"rule anyDeclEndedByPlugin");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:256:13: ( REGISTER anyDeclEndedByPlugin -> ^( TOK_REGISTER REGISTER anyDeclEndedByPlugin ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:256:15: REGISTER anyDeclEndedByPlugin
            {
            REGISTER21=(Token)match(input,REGISTER,FOLLOW_REGISTER_in_registerDecl437);  
            stream_REGISTER.add(REGISTER21);


            onFeatureRegisterKeyword();

            pushFollow(FOLLOW_anyDeclEndedByPlugin_in_registerDecl441);
            anyDeclEndedByPlugin22=anyDeclEndedByPlugin();

            state._fsp--;

            stream_anyDeclEndedByPlugin.add(anyDeclEndedByPlugin22.getTree());

            // AST REWRITE
            // elements: REGISTER, anyDeclEndedByPlugin
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 257:4: -> ^( TOK_REGISTER REGISTER anyDeclEndedByPlugin )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:257:7: ^( TOK_REGISTER REGISTER anyDeclEndedByPlugin )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_REGISTER, "TOK_REGISTER")
                , root_1);

                adaptor.addChild(root_1, 
                stream_REGISTER.nextNode()
                );

                adaptor.addChild(root_1, stream_anyDeclEndedByPlugin.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "registerDecl"


    public static class reportDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "reportDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:259:1: reportDecl : REPORT anyDecl -> ^( TOK_REPORT DECLARE anyDecl ) ;
    public final AnotherStoryGrammerParser.reportDecl_return reportDecl() throws RecognitionException {
        AnotherStoryGrammerParser.reportDecl_return retval = new AnotherStoryGrammerParser.reportDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token REPORT23=null;
        AnotherStoryGrammerParser.anyDecl_return anyDecl24 =null;


        CommonTree REPORT23_tree=null;
        RewriteRuleTokenStream stream_REPORT=new RewriteRuleTokenStream(adaptor,"token REPORT");
        RewriteRuleSubtreeStream stream_anyDecl=new RewriteRuleSubtreeStream(adaptor,"rule anyDecl");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:259:11: ( REPORT anyDecl -> ^( TOK_REPORT DECLARE anyDecl ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:259:13: REPORT anyDecl
            {
            REPORT23=(Token)match(input,REPORT,FOLLOW_REPORT_in_reportDecl462);  
            stream_REPORT.add(REPORT23);


            onFeatureReportKeyword();

            pushFollow(FOLLOW_anyDecl_in_reportDecl466);
            anyDecl24=anyDecl();

            state._fsp--;

            stream_anyDecl.add(anyDecl24.getTree());

            // AST REWRITE
            // elements: anyDecl
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 260:4: -> ^( TOK_REPORT DECLARE anyDecl )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:260:7: ^( TOK_REPORT DECLARE anyDecl )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_REPORT, "TOK_REPORT")
                , root_1);

                adaptor.addChild(root_1, 
                (CommonTree)adaptor.create(DECLARE, "DECLARE")
                );

                adaptor.addChild(root_1, stream_anyDecl.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "reportDecl"


    public static class declareDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "declareDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:262:1: declareDecl : DECLARE anyDecl -> ^( TOK_DECLARE DECLARE anyDecl ) ;
    public final AnotherStoryGrammerParser.declareDecl_return declareDecl() throws RecognitionException {
        AnotherStoryGrammerParser.declareDecl_return retval = new AnotherStoryGrammerParser.declareDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token DECLARE25=null;
        AnotherStoryGrammerParser.anyDecl_return anyDecl26 =null;


        CommonTree DECLARE25_tree=null;
        RewriteRuleTokenStream stream_DECLARE=new RewriteRuleTokenStream(adaptor,"token DECLARE");
        RewriteRuleSubtreeStream stream_anyDecl=new RewriteRuleSubtreeStream(adaptor,"rule anyDecl");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:262:12: ( DECLARE anyDecl -> ^( TOK_DECLARE DECLARE anyDecl ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:262:14: DECLARE anyDecl
            {
            DECLARE25=(Token)match(input,DECLARE,FOLLOW_DECLARE_in_declareDecl487);  
            stream_DECLARE.add(DECLARE25);


            onFeatureDeclareKeyword();

            pushFollow(FOLLOW_anyDecl_in_declareDecl491);
            anyDecl26=anyDecl();

            state._fsp--;

            stream_anyDecl.add(anyDecl26.getTree());

            // AST REWRITE
            // elements: anyDecl, DECLARE
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 263:4: -> ^( TOK_DECLARE DECLARE anyDecl )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:263:7: ^( TOK_DECLARE DECLARE anyDecl )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_DECLARE, "TOK_DECLARE")
                , root_1);

                adaptor.addChild(root_1, 
                stream_DECLARE.nextNode()
                );

                adaptor.addChild(root_1, stream_anyDecl.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "declareDecl"


    public static class scenarioKeyword_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "scenarioKeyword"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:266:1: scenarioKeyword : SCENARIO ;
    public final AnotherStoryGrammerParser.scenarioKeyword_return scenarioKeyword() throws RecognitionException {
        AnotherStoryGrammerParser.scenarioKeyword_return retval = new AnotherStoryGrammerParser.scenarioKeyword_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token SCENARIO27=null;

        CommonTree SCENARIO27_tree=null;

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:267:2: ( SCENARIO )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:267:4: SCENARIO
            {
            root_0 = (CommonTree)adaptor.nil();


            SCENARIO27=(Token)match(input,SCENARIO,FOLLOW_SCENARIO_in_scenarioKeyword515); 
            SCENARIO27_tree = 
            (CommonTree)adaptor.create(SCENARIO27)
            ;
            adaptor.addChild(root_0, SCENARIO27_tree);


            onScenarioKeyword();

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "scenarioKeyword"


    public static class scenario_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "scenario"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:270:1: scenario : scenarioKeyword anyDecl statementDecl -> ^( TOK_SCENARIO scenarioKeyword anyDecl statementDecl ) ;
    public final AnotherStoryGrammerParser.scenario_return scenario() throws RecognitionException {
        AnotherStoryGrammerParser.scenario_return retval = new AnotherStoryGrammerParser.scenario_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        AnotherStoryGrammerParser.scenarioKeyword_return scenarioKeyword28 =null;

        AnotherStoryGrammerParser.anyDecl_return anyDecl29 =null;

        AnotherStoryGrammerParser.statementDecl_return statementDecl30 =null;


        RewriteRuleSubtreeStream stream_scenarioKeyword=new RewriteRuleSubtreeStream(adaptor,"rule scenarioKeyword");
        RewriteRuleSubtreeStream stream_anyDecl=new RewriteRuleSubtreeStream(adaptor,"rule anyDecl");
        RewriteRuleSubtreeStream stream_statementDecl=new RewriteRuleSubtreeStream(adaptor,"rule statementDecl");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:270:9: ( scenarioKeyword anyDecl statementDecl -> ^( TOK_SCENARIO scenarioKeyword anyDecl statementDecl ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:270:11: scenarioKeyword anyDecl statementDecl
            {
            pushFollow(FOLLOW_scenarioKeyword_in_scenario526);
            scenarioKeyword28=scenarioKeyword();

            state._fsp--;

            stream_scenarioKeyword.add(scenarioKeyword28.getTree());

            pushFollow(FOLLOW_anyDecl_in_scenario528);
            anyDecl29=anyDecl();

            state._fsp--;

            stream_anyDecl.add(anyDecl29.getTree());

            pushFollow(FOLLOW_statementDecl_in_scenario530);
            statementDecl30=statementDecl();

            state._fsp--;

            stream_statementDecl.add(statementDecl30.getTree());

            // AST REWRITE
            // elements: scenarioKeyword, statementDecl, anyDecl
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 271:4: -> ^( TOK_SCENARIO scenarioKeyword anyDecl statementDecl )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:271:7: ^( TOK_SCENARIO scenarioKeyword anyDecl statementDecl )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_SCENARIO, "TOK_SCENARIO")
                , root_1);

                adaptor.addChild(root_1, stream_scenarioKeyword.nextTree());

                adaptor.addChild(root_1, stream_anyDecl.nextTree());

                adaptor.addChild(root_1, stream_statementDecl.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "scenario"


    public static class statementDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "statementDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:274:1: statementDecl : ( ( ( giveDecl ) ( ( andDecl )* ) ) | ( ( whenDecl ) ( ( andDecl )* ) ) | ( ( thenDecl ) ( ( andDecl )* ) ) | ( ( callDecl ) ( ( andDecl )* ) ) )+ ;
    public final AnotherStoryGrammerParser.statementDecl_return statementDecl() throws RecognitionException {
        AnotherStoryGrammerParser.statementDecl_return retval = new AnotherStoryGrammerParser.statementDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        AnotherStoryGrammerParser.giveDecl_return giveDecl31 =null;

        AnotherStoryGrammerParser.andDecl_return andDecl32 =null;

        AnotherStoryGrammerParser.whenDecl_return whenDecl33 =null;

        AnotherStoryGrammerParser.andDecl_return andDecl34 =null;

        AnotherStoryGrammerParser.thenDecl_return thenDecl35 =null;

        AnotherStoryGrammerParser.andDecl_return andDecl36 =null;

        AnotherStoryGrammerParser.callDecl_return callDecl37 =null;

        AnotherStoryGrammerParser.andDecl_return andDecl38 =null;



        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:275:2: ( ( ( ( giveDecl ) ( ( andDecl )* ) ) | ( ( whenDecl ) ( ( andDecl )* ) ) | ( ( thenDecl ) ( ( andDecl )* ) ) | ( ( callDecl ) ( ( andDecl )* ) ) )+ )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:275:4: ( ( ( giveDecl ) ( ( andDecl )* ) ) | ( ( whenDecl ) ( ( andDecl )* ) ) | ( ( thenDecl ) ( ( andDecl )* ) ) | ( ( callDecl ) ( ( andDecl )* ) ) )+
            {
            root_0 = (CommonTree)adaptor.nil();


            // org/jbehaviour/antlr/AnotherStoryGrammer.g:275:4: ( ( ( giveDecl ) ( ( andDecl )* ) ) | ( ( whenDecl ) ( ( andDecl )* ) ) | ( ( thenDecl ) ( ( andDecl )* ) ) | ( ( callDecl ) ( ( andDecl )* ) ) )+
            int cnt7=0;
            loop7:
            do {
                int alt7=5;
                switch ( input.LA(1) ) {
                case GIVEN:
                    {
                    alt7=1;
                    }
                    break;
                case WHEN:
                    {
                    alt7=2;
                    }
                    break;
                case THEN:
                    {
                    alt7=3;
                    }
                    break;
                case CALL:
                    {
                    alt7=4;
                    }
                    break;

                }

                switch (alt7) {
            	case 1 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:276:5: ( ( giveDecl ) ( ( andDecl )* ) )
            	    {
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:276:5: ( ( giveDecl ) ( ( andDecl )* ) )
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:276:6: ( giveDecl ) ( ( andDecl )* )
            	    {
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:276:6: ( giveDecl )
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:276:7: giveDecl
            	    {
            	    pushFollow(FOLLOW_giveDecl_in_statementDecl564);
            	    giveDecl31=giveDecl();

            	    state._fsp--;

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

            	    }


            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:276:16: ( ( andDecl )* )
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:276:17: ( andDecl )*
            	    {
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:276:17: ( andDecl )*
            	    loop3:
            	    do {
            	        int alt3=2;
            	        switch ( input.LA(1) ) {
            	        case AND:
            	            {
            	            alt3=1;
            	            }
            	            break;

            	        }

            	        switch (alt3) {
            	    	case 1 :
            	    	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:276:18: andDecl
            	    	    {
            	    	    pushFollow(FOLLOW_andDecl_in_statementDecl568);
            	    	    andDecl32=andDecl();

            	    	    state._fsp--;

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

            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop3;
            	        }
            	    } while (true);


            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:277:5: ( ( whenDecl ) ( ( andDecl )* ) )
            	    {
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:277:5: ( ( whenDecl ) ( ( andDecl )* ) )
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:277:6: ( whenDecl ) ( ( andDecl )* )
            	    {
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:277:6: ( whenDecl )
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:277:7: whenDecl
            	    {
            	    pushFollow(FOLLOW_whenDecl_in_statementDecl580);
            	    whenDecl33=whenDecl();

            	    state._fsp--;

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

            	    }


            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:277:16: ( ( andDecl )* )
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:277:17: ( andDecl )*
            	    {
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:277:17: ( andDecl )*
            	    loop4:
            	    do {
            	        int alt4=2;
            	        switch ( input.LA(1) ) {
            	        case AND:
            	            {
            	            alt4=1;
            	            }
            	            break;

            	        }

            	        switch (alt4) {
            	    	case 1 :
            	    	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:277:18: andDecl
            	    	    {
            	    	    pushFollow(FOLLOW_andDecl_in_statementDecl584);
            	    	    andDecl34=andDecl();

            	    	    state._fsp--;

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

            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop4;
            	        }
            	    } while (true);


            	    }


            	    }


            	    }
            	    break;
            	case 3 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:278:5: ( ( thenDecl ) ( ( andDecl )* ) )
            	    {
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:278:5: ( ( thenDecl ) ( ( andDecl )* ) )
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:278:6: ( thenDecl ) ( ( andDecl )* )
            	    {
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:278:6: ( thenDecl )
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:278:7: thenDecl
            	    {
            	    pushFollow(FOLLOW_thenDecl_in_statementDecl596);
            	    thenDecl35=thenDecl();

            	    state._fsp--;

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

            	    }


            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:278:16: ( ( andDecl )* )
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:278:17: ( andDecl )*
            	    {
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:278:17: ( andDecl )*
            	    loop5:
            	    do {
            	        int alt5=2;
            	        switch ( input.LA(1) ) {
            	        case AND:
            	            {
            	            alt5=1;
            	            }
            	            break;

            	        }

            	        switch (alt5) {
            	    	case 1 :
            	    	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:278:18: andDecl
            	    	    {
            	    	    pushFollow(FOLLOW_andDecl_in_statementDecl600);
            	    	    andDecl36=andDecl();

            	    	    state._fsp--;

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

            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop5;
            	        }
            	    } while (true);


            	    }


            	    }


            	    }
            	    break;
            	case 4 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:279:5: ( ( callDecl ) ( ( andDecl )* ) )
            	    {
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:279:5: ( ( callDecl ) ( ( andDecl )* ) )
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:279:6: ( callDecl ) ( ( andDecl )* )
            	    {
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:279:6: ( callDecl )
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:279:7: callDecl
            	    {
            	    pushFollow(FOLLOW_callDecl_in_statementDecl612);
            	    callDecl37=callDecl();

            	    state._fsp--;

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

            	    }


            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:279:16: ( ( andDecl )* )
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:279:17: ( andDecl )*
            	    {
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:279:17: ( andDecl )*
            	    loop6:
            	    do {
            	        int alt6=2;
            	        switch ( input.LA(1) ) {
            	        case AND:
            	            {
            	            alt6=1;
            	            }
            	            break;

            	        }

            	        switch (alt6) {
            	    	case 1 :
            	    	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:279:18: andDecl
            	    	    {
            	    	    pushFollow(FOLLOW_andDecl_in_statementDecl616);
            	    	    andDecl38=andDecl();

            	    	    state._fsp--;

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

            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop6;
            	        }
            	    } while (true);


            	    }


            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt7 >= 1 ) break loop7;
                        EarlyExitException eee =
                            new EarlyExitException(7, input);
                        throw eee;
                }
                cnt7++;
            } while (true);


            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "statementDecl"


    public static class givenKeyword_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "givenKeyword"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:283:1: givenKeyword : GIVEN ;
    public final AnotherStoryGrammerParser.givenKeyword_return givenKeyword() throws RecognitionException {
        AnotherStoryGrammerParser.givenKeyword_return retval = new AnotherStoryGrammerParser.givenKeyword_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token GIVEN39=null;

        CommonTree GIVEN39_tree=null;

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:284:2: ( GIVEN )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:284:4: GIVEN
            {
            root_0 = (CommonTree)adaptor.nil();


            GIVEN39=(Token)match(input,GIVEN,FOLLOW_GIVEN_in_givenKeyword637); 
            GIVEN39_tree = 
            (CommonTree)adaptor.create(GIVEN39)
            ;
            adaptor.addChild(root_0, GIVEN39_tree);


            onGivenKeyword();

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "givenKeyword"


    public static class whenKeyword_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "whenKeyword"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:287:1: whenKeyword : WHEN ;
    public final AnotherStoryGrammerParser.whenKeyword_return whenKeyword() throws RecognitionException {
        AnotherStoryGrammerParser.whenKeyword_return retval = new AnotherStoryGrammerParser.whenKeyword_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token WHEN40=null;

        CommonTree WHEN40_tree=null;

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:288:2: ( WHEN )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:288:4: WHEN
            {
            root_0 = (CommonTree)adaptor.nil();


            WHEN40=(Token)match(input,WHEN,FOLLOW_WHEN_in_whenKeyword650); 
            WHEN40_tree = 
            (CommonTree)adaptor.create(WHEN40)
            ;
            adaptor.addChild(root_0, WHEN40_tree);


            onWhenKeyword();

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "whenKeyword"


    public static class thenKeyword_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "thenKeyword"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:291:1: thenKeyword : THEN ;
    public final AnotherStoryGrammerParser.thenKeyword_return thenKeyword() throws RecognitionException {
        AnotherStoryGrammerParser.thenKeyword_return retval = new AnotherStoryGrammerParser.thenKeyword_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token THEN41=null;

        CommonTree THEN41_tree=null;

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:292:2: ( THEN )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:292:4: THEN
            {
            root_0 = (CommonTree)adaptor.nil();


            THEN41=(Token)match(input,THEN,FOLLOW_THEN_in_thenKeyword663); 
            THEN41_tree = 
            (CommonTree)adaptor.create(THEN41)
            ;
            adaptor.addChild(root_0, THEN41_tree);


            onThenKeyword();

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "thenKeyword"


    public static class andKeyword_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "andKeyword"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:295:1: andKeyword : AND ;
    public final AnotherStoryGrammerParser.andKeyword_return andKeyword() throws RecognitionException {
        AnotherStoryGrammerParser.andKeyword_return retval = new AnotherStoryGrammerParser.andKeyword_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token AND42=null;

        CommonTree AND42_tree=null;

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:296:2: ( AND )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:296:4: AND
            {
            root_0 = (CommonTree)adaptor.nil();


            AND42=(Token)match(input,AND,FOLLOW_AND_in_andKeyword676); 
            AND42_tree = 
            (CommonTree)adaptor.create(AND42)
            ;
            adaptor.addChild(root_0, AND42_tree);


            onAndKeyword();

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "andKeyword"


    public static class giveDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "giveDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:299:1: giveDecl : givenKeyword anyDecl -> ^( TOK_GIVEN givenKeyword anyDecl ) ;
    public final AnotherStoryGrammerParser.giveDecl_return giveDecl() throws RecognitionException {
        AnotherStoryGrammerParser.giveDecl_return retval = new AnotherStoryGrammerParser.giveDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        AnotherStoryGrammerParser.givenKeyword_return givenKeyword43 =null;

        AnotherStoryGrammerParser.anyDecl_return anyDecl44 =null;


        RewriteRuleSubtreeStream stream_anyDecl=new RewriteRuleSubtreeStream(adaptor,"rule anyDecl");
        RewriteRuleSubtreeStream stream_givenKeyword=new RewriteRuleSubtreeStream(adaptor,"rule givenKeyword");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:300:2: ( givenKeyword anyDecl -> ^( TOK_GIVEN givenKeyword anyDecl ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:300:4: givenKeyword anyDecl
            {
            pushFollow(FOLLOW_givenKeyword_in_giveDecl689);
            givenKeyword43=givenKeyword();

            state._fsp--;

            stream_givenKeyword.add(givenKeyword43.getTree());

            pushFollow(FOLLOW_anyDecl_in_giveDecl691);
            anyDecl44=anyDecl();

            state._fsp--;

            stream_anyDecl.add(anyDecl44.getTree());

            // AST REWRITE
            // elements: anyDecl, givenKeyword
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 301:4: -> ^( TOK_GIVEN givenKeyword anyDecl )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:301:7: ^( TOK_GIVEN givenKeyword anyDecl )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_GIVEN, "TOK_GIVEN")
                , root_1);

                adaptor.addChild(root_1, stream_givenKeyword.nextTree());

                adaptor.addChild(root_1, stream_anyDecl.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "giveDecl"


    public static class whenDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "whenDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:303:1: whenDecl : whenKeyword anyDecl -> ^( TOK_WHEN whenKeyword anyDecl ) ;
    public final AnotherStoryGrammerParser.whenDecl_return whenDecl() throws RecognitionException {
        AnotherStoryGrammerParser.whenDecl_return retval = new AnotherStoryGrammerParser.whenDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        AnotherStoryGrammerParser.whenKeyword_return whenKeyword45 =null;

        AnotherStoryGrammerParser.anyDecl_return anyDecl46 =null;


        RewriteRuleSubtreeStream stream_whenKeyword=new RewriteRuleSubtreeStream(adaptor,"rule whenKeyword");
        RewriteRuleSubtreeStream stream_anyDecl=new RewriteRuleSubtreeStream(adaptor,"rule anyDecl");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:304:2: ( whenKeyword anyDecl -> ^( TOK_WHEN whenKeyword anyDecl ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:304:4: whenKeyword anyDecl
            {
            pushFollow(FOLLOW_whenKeyword_in_whenDecl714);
            whenKeyword45=whenKeyword();

            state._fsp--;

            stream_whenKeyword.add(whenKeyword45.getTree());

            pushFollow(FOLLOW_anyDecl_in_whenDecl716);
            anyDecl46=anyDecl();

            state._fsp--;

            stream_anyDecl.add(anyDecl46.getTree());

            // AST REWRITE
            // elements: anyDecl, whenKeyword
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 305:4: -> ^( TOK_WHEN whenKeyword anyDecl )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:305:7: ^( TOK_WHEN whenKeyword anyDecl )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_WHEN, "TOK_WHEN")
                , root_1);

                adaptor.addChild(root_1, stream_whenKeyword.nextTree());

                adaptor.addChild(root_1, stream_anyDecl.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "whenDecl"


    public static class thenDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "thenDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:307:1: thenDecl : thenKeyword anyDecl -> ^( TOK_THEN thenKeyword anyDecl ) ;
    public final AnotherStoryGrammerParser.thenDecl_return thenDecl() throws RecognitionException {
        AnotherStoryGrammerParser.thenDecl_return retval = new AnotherStoryGrammerParser.thenDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        AnotherStoryGrammerParser.thenKeyword_return thenKeyword47 =null;

        AnotherStoryGrammerParser.anyDecl_return anyDecl48 =null;


        RewriteRuleSubtreeStream stream_thenKeyword=new RewriteRuleSubtreeStream(adaptor,"rule thenKeyword");
        RewriteRuleSubtreeStream stream_anyDecl=new RewriteRuleSubtreeStream(adaptor,"rule anyDecl");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:308:2: ( thenKeyword anyDecl -> ^( TOK_THEN thenKeyword anyDecl ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:308:4: thenKeyword anyDecl
            {
            pushFollow(FOLLOW_thenKeyword_in_thenDecl739);
            thenKeyword47=thenKeyword();

            state._fsp--;

            stream_thenKeyword.add(thenKeyword47.getTree());

            pushFollow(FOLLOW_anyDecl_in_thenDecl741);
            anyDecl48=anyDecl();

            state._fsp--;

            stream_anyDecl.add(anyDecl48.getTree());

            // AST REWRITE
            // elements: thenKeyword, anyDecl
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 309:4: -> ^( TOK_THEN thenKeyword anyDecl )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:309:7: ^( TOK_THEN thenKeyword anyDecl )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_THEN, "TOK_THEN")
                , root_1);

                adaptor.addChild(root_1, stream_thenKeyword.nextTree());

                adaptor.addChild(root_1, stream_anyDecl.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "thenDecl"


    public static class andDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "andDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:311:1: andDecl : andKeyword anyDecl -> ^( TOK_AND andKeyword anyDecl ) ;
    public final AnotherStoryGrammerParser.andDecl_return andDecl() throws RecognitionException {
        AnotherStoryGrammerParser.andDecl_return retval = new AnotherStoryGrammerParser.andDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        AnotherStoryGrammerParser.andKeyword_return andKeyword49 =null;

        AnotherStoryGrammerParser.anyDecl_return anyDecl50 =null;


        RewriteRuleSubtreeStream stream_andKeyword=new RewriteRuleSubtreeStream(adaptor,"rule andKeyword");
        RewriteRuleSubtreeStream stream_anyDecl=new RewriteRuleSubtreeStream(adaptor,"rule anyDecl");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:312:2: ( andKeyword anyDecl -> ^( TOK_AND andKeyword anyDecl ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:312:4: andKeyword anyDecl
            {
            pushFollow(FOLLOW_andKeyword_in_andDecl764);
            andKeyword49=andKeyword();

            state._fsp--;

            stream_andKeyword.add(andKeyword49.getTree());

            pushFollow(FOLLOW_anyDecl_in_andDecl766);
            anyDecl50=anyDecl();

            state._fsp--;

            stream_anyDecl.add(anyDecl50.getTree());

            // AST REWRITE
            // elements: anyDecl, andKeyword
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 313:4: -> ^( TOK_AND andKeyword anyDecl )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:313:7: ^( TOK_AND andKeyword anyDecl )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_AND, "TOK_AND")
                , root_1);

                adaptor.addChild(root_1, stream_andKeyword.nextTree());

                adaptor.addChild(root_1, stream_anyDecl.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "andDecl"


    public static class callDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "callDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:315:1: callDecl : CALL anyDecl -> ^( TOK_CALL CALL anyDecl ) ;
    public final AnotherStoryGrammerParser.callDecl_return callDecl() throws RecognitionException {
        AnotherStoryGrammerParser.callDecl_return retval = new AnotherStoryGrammerParser.callDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token CALL51=null;
        AnotherStoryGrammerParser.anyDecl_return anyDecl52 =null;


        CommonTree CALL51_tree=null;
        RewriteRuleTokenStream stream_CALL=new RewriteRuleTokenStream(adaptor,"token CALL");
        RewriteRuleSubtreeStream stream_anyDecl=new RewriteRuleSubtreeStream(adaptor,"rule anyDecl");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:316:2: ( CALL anyDecl -> ^( TOK_CALL CALL anyDecl ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:316:4: CALL anyDecl
            {
            CALL51=(Token)match(input,CALL,FOLLOW_CALL_in_callDecl789);  
            stream_CALL.add(CALL51);


            onCallKeyword();

            pushFollow(FOLLOW_anyDecl_in_callDecl793);
            anyDecl52=anyDecl();

            state._fsp--;

            stream_anyDecl.add(anyDecl52.getTree());

            // AST REWRITE
            // elements: CALL, anyDecl
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 317:4: -> ^( TOK_CALL CALL anyDecl )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:317:7: ^( TOK_CALL CALL anyDecl )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_CALL, "TOK_CALL")
                , root_1);

                adaptor.addChild(root_1, 
                stream_CALL.nextNode()
                );

                adaptor.addChild(root_1, stream_anyDecl.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "callDecl"


    public static class anyDeclEndedByPlugin_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "anyDeclEndedByPlugin"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:319:1: anyDeclEndedByPlugin : ( string | identifier )+ PLUGIN ;
    public final AnotherStoryGrammerParser.anyDeclEndedByPlugin_return anyDeclEndedByPlugin() throws RecognitionException {
        AnotherStoryGrammerParser.anyDeclEndedByPlugin_return retval = new AnotherStoryGrammerParser.anyDeclEndedByPlugin_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token PLUGIN55=null;
        AnotherStoryGrammerParser.string_return string53 =null;

        AnotherStoryGrammerParser.identifier_return identifier54 =null;


        CommonTree PLUGIN55_tree=null;

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:320:2: ( ( string | identifier )+ PLUGIN )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:320:4: ( string | identifier )+ PLUGIN
            {
            root_0 = (CommonTree)adaptor.nil();


            // org/jbehaviour/antlr/AnotherStoryGrammer.g:320:4: ( string | identifier )+
            int cnt8=0;
            loop8:
            do {
                int alt8=3;
                switch ( input.LA(1) ) {
                case String:
                    {
                    alt8=1;
                    }
                    break;
                case Identifier:
                    {
                    alt8=2;
                    }
                    break;

                }

                switch (alt8) {
            	case 1 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:321:6: string
            	    {
            	    pushFollow(FOLLOW_string_in_anyDeclEndedByPlugin823);
            	    string53=string();

            	    state._fsp--;

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

            	    onAnyString((string53!=null?input.toString(string53.start,string53.stop):null));

            	    }
            	    break;
            	case 2 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:322:6: identifier
            	    {
            	    pushFollow(FOLLOW_identifier_in_anyDeclEndedByPlugin836);
            	    identifier54=identifier();

            	    state._fsp--;

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

            	    onAnyIdentifier((identifier54!=null?input.toString(identifier54.start,identifier54.stop):null));

            	    }
            	    break;

            	default :
            	    if ( cnt8 >= 1 ) break loop8;
                        EarlyExitException eee =
                            new EarlyExitException(8, input);
                        throw eee;
                }
                cnt8++;
            } while (true);


            PLUGIN55=(Token)match(input,PLUGIN,FOLLOW_PLUGIN_in_anyDeclEndedByPlugin846); 
            PLUGIN55_tree = 
            (CommonTree)adaptor.create(PLUGIN55)
            ;
            adaptor.addChild(root_0, PLUGIN55_tree);


            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "anyDeclEndedByPlugin"


    public static class anyStringDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "anyStringDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:327:1: anyStringDecl : ( string )+ ;
    public final AnotherStoryGrammerParser.anyStringDecl_return anyStringDecl() throws RecognitionException {
        AnotherStoryGrammerParser.anyStringDecl_return retval = new AnotherStoryGrammerParser.anyStringDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        AnotherStoryGrammerParser.string_return string56 =null;



        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:328:2: ( ( string )+ )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:328:4: ( string )+
            {
            root_0 = (CommonTree)adaptor.nil();


            // org/jbehaviour/antlr/AnotherStoryGrammer.g:328:4: ( string )+
            int cnt9=0;
            loop9:
            do {
                int alt9=2;
                switch ( input.LA(1) ) {
                case String:
                    {
                    alt9=1;
                    }
                    break;

                }

                switch (alt9) {
            	case 1 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:329:5: string
            	    {
            	    pushFollow(FOLLOW_string_in_anyStringDecl862);
            	    string56=string();

            	    state._fsp--;

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

            	    onAnyString((string56!=null?input.toString(string56.start,string56.stop):null));

            	    }
            	    break;

            	default :
            	    if ( cnt9 >= 1 ) break loop9;
                        EarlyExitException eee =
                            new EarlyExitException(9, input);
                        throw eee;
                }
                cnt9++;
            } while (true);


            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "anyStringDecl"


    public static class anyDecl_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "anyDecl"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:331:1: anyDecl : ( string | identifier | reference | template | integer | jsonObject )+ ;
    public final AnotherStoryGrammerParser.anyDecl_return anyDecl() throws RecognitionException {
        AnotherStoryGrammerParser.anyDecl_return retval = new AnotherStoryGrammerParser.anyDecl_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        AnotherStoryGrammerParser.string_return string57 =null;

        AnotherStoryGrammerParser.identifier_return identifier58 =null;

        AnotherStoryGrammerParser.reference_return reference59 =null;

        AnotherStoryGrammerParser.template_return template60 =null;

        AnotherStoryGrammerParser.integer_return integer61 =null;

        AnotherStoryGrammerParser.jsonObject_return jsonObject62 =null;



        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:332:2: ( ( string | identifier | reference | template | integer | jsonObject )+ )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:332:4: ( string | identifier | reference | template | integer | jsonObject )+
            {
            root_0 = (CommonTree)adaptor.nil();


            // org/jbehaviour/antlr/AnotherStoryGrammer.g:332:4: ( string | identifier | reference | template | integer | jsonObject )+
            int cnt10=0;
            loop10:
            do {
                int alt10=7;
                switch ( input.LA(1) ) {
                case String:
                    {
                    alt10=1;
                    }
                    break;
                case Identifier:
                    {
                    alt10=2;
                    }
                    break;
                case Reference:
                    {
                    switch ( input.LA(2) ) {
                    case EOF:
                    case AND:
                    case ASAN:
                    case CALL:
                    case DECLARE:
                    case GIVEN:
                    case INCLUDE:
                    case INORDERTO:
                    case IWANTTO:
                    case Identifier:
                    case Number:
                    case REGISTER:
                    case REPORT:
                    case Reference:
                    case SCENARIO:
                    case String:
                    case THEN:
                    case WHEN:
                    case 71:
                        {
                        alt10=3;
                        }
                        break;
                    case Member:
                        {
                        alt10=4;
                        }
                        break;

                    }

                    }
                    break;
                case Number:
                    {
                    alt10=5;
                    }
                    break;
                case 71:
                    {
                    alt10=6;
                    }
                    break;

                }

                switch (alt10) {
            	case 1 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:333:5: string
            	    {
            	    pushFollow(FOLLOW_string_in_anyDecl888);
            	    string57=string();

            	    state._fsp--;

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

            	    onAnyString((string57!=null?input.toString(string57.start,string57.stop):null));

            	    }
            	    break;
            	case 2 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:334:5: identifier
            	    {
            	    pushFollow(FOLLOW_identifier_in_anyDecl900);
            	    identifier58=identifier();

            	    state._fsp--;

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

            	    onAnyIdentifier((identifier58!=null?input.toString(identifier58.start,identifier58.stop):null));

            	    }
            	    break;
            	case 3 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:335:5: reference
            	    {
            	    pushFollow(FOLLOW_reference_in_anyDecl908);
            	    reference59=reference();

            	    state._fsp--;

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

            	    onAnyReference((reference59!=null?input.toString(reference59.start,reference59.stop):null));

            	    }
            	    break;
            	case 4 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:336:5: template
            	    {
            	    pushFollow(FOLLOW_template_in_anyDecl917);
            	    template60=template();

            	    state._fsp--;

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

            	    onAnyTemplate((template60!=null?input.toString(template60.start,template60.stop):null));

            	    }
            	    break;
            	case 5 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:337:5: integer
            	    {
            	    pushFollow(FOLLOW_integer_in_anyDecl927);
            	    integer61=integer();

            	    state._fsp--;

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

            	    onAnyNumeric((integer61!=null?input.toString(integer61.start,integer61.stop):null));

            	    }
            	    break;
            	case 6 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:338:5: jsonObject
            	    {
            	    pushFollow(FOLLOW_jsonObject_in_anyDecl938);
            	    jsonObject62=jsonObject();

            	    state._fsp--;

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

            	    onAnyJsonObject((jsonObject62!=null?input.toString(jsonObject62.start,jsonObject62.stop):null));

            	    }
            	    break;

            	default :
            	    if ( cnt10 >= 1 ) break loop10;
                        EarlyExitException eee =
                            new EarlyExitException(10, input);
                        throw eee;
                }
                cnt10++;
            } while (true);


            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "anyDecl"


    public static class string_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "string"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:341:1: string : String -> ^( STRING String ) ;
    public final AnotherStoryGrammerParser.string_return string() throws RecognitionException {
        AnotherStoryGrammerParser.string_return retval = new AnotherStoryGrammerParser.string_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token String63=null;

        CommonTree String63_tree=null;
        RewriteRuleTokenStream stream_String=new RewriteRuleTokenStream(adaptor,"token String");

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:341:9: ( String -> ^( STRING String ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:341:11: String
            {
            String63=(Token)match(input,String,FOLLOW_String_in_string955);  
            stream_String.add(String63);


            // AST REWRITE
            // elements: String
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 342:4: -> ^( STRING String )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:342:7: ^( STRING String )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(STRING, "STRING")
                , root_1);

                adaptor.addChild(root_1, 
                stream_String.nextNode()
                );

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "string"


    public static class identifier_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "identifier"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:345:1: identifier : Identifier ;
    public final AnotherStoryGrammerParser.identifier_return identifier() throws RecognitionException {
        AnotherStoryGrammerParser.identifier_return retval = new AnotherStoryGrammerParser.identifier_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token Identifier64=null;

        CommonTree Identifier64_tree=null;

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:346:2: ( Identifier )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:346:4: Identifier
            {
            root_0 = (CommonTree)adaptor.nil();


            Identifier64=(Token)match(input,Identifier,FOLLOW_Identifier_in_identifier977); 
            Identifier64_tree = 
            (CommonTree)adaptor.create(Identifier64)
            ;
            adaptor.addChild(root_0, Identifier64_tree);


            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "identifier"


    public static class integer_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "integer"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:349:1: integer : Number ;
    public final AnotherStoryGrammerParser.integer_return integer() throws RecognitionException {
        AnotherStoryGrammerParser.integer_return retval = new AnotherStoryGrammerParser.integer_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token Number65=null;

        CommonTree Number65_tree=null;

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:350:2: ( Number )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:350:4: Number
            {
            root_0 = (CommonTree)adaptor.nil();


            Number65=(Token)match(input,Number,FOLLOW_Number_in_integer988); 
            Number65_tree = 
            (CommonTree)adaptor.create(Number65)
            ;
            adaptor.addChild(root_0, Number65_tree);


            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "integer"


    public static class reference_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "reference"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:353:1: reference : Reference ;
    public final AnotherStoryGrammerParser.reference_return reference() throws RecognitionException {
        AnotherStoryGrammerParser.reference_return retval = new AnotherStoryGrammerParser.reference_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token Reference66=null;

        CommonTree Reference66_tree=null;

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:354:2: ( Reference )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:354:4: Reference
            {
            root_0 = (CommonTree)adaptor.nil();


            Reference66=(Token)match(input,Reference,FOLLOW_Reference_in_reference999); 
            Reference66_tree = 
            (CommonTree)adaptor.create(Reference66)
            ;
            adaptor.addChild(root_0, Reference66_tree);


            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "reference"


    public static class template_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "template"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:357:1: template : Reference ( member )+ -> ^( TOK_TEMPLATE Reference ( member )+ ) ;
    public final AnotherStoryGrammerParser.template_return template() throws RecognitionException {
        AnotherStoryGrammerParser.template_return retval = new AnotherStoryGrammerParser.template_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token Reference67=null;
        AnotherStoryGrammerParser.member_return member68 =null;


        CommonTree Reference67_tree=null;
        RewriteRuleTokenStream stream_Reference=new RewriteRuleTokenStream(adaptor,"token Reference");
        RewriteRuleSubtreeStream stream_member=new RewriteRuleSubtreeStream(adaptor,"rule member");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:358:2: ( Reference ( member )+ -> ^( TOK_TEMPLATE Reference ( member )+ ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:358:4: Reference ( member )+
            {
            Reference67=(Token)match(input,Reference,FOLLOW_Reference_in_template1011);  
            stream_Reference.add(Reference67);


            // org/jbehaviour/antlr/AnotherStoryGrammer.g:358:14: ( member )+
            int cnt11=0;
            loop11:
            do {
                int alt11=2;
                switch ( input.LA(1) ) {
                case Member:
                    {
                    alt11=1;
                    }
                    break;

                }

                switch (alt11) {
            	case 1 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:358:15: member
            	    {
            	    pushFollow(FOLLOW_member_in_template1014);
            	    member68=member();

            	    state._fsp--;

            	    stream_member.add(member68.getTree());

            	    }
            	    break;

            	default :
            	    if ( cnt11 >= 1 ) break loop11;
                        EarlyExitException eee =
                            new EarlyExitException(11, input);
                        throw eee;
                }
                cnt11++;
            } while (true);


            // AST REWRITE
            // elements: Reference, member
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 359:3: -> ^( TOK_TEMPLATE Reference ( member )+ )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:359:6: ^( TOK_TEMPLATE Reference ( member )+ )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(TOK_TEMPLATE, "TOK_TEMPLATE")
                , root_1);

                adaptor.addChild(root_1, 
                stream_Reference.nextNode()
                );

                if ( !(stream_member.hasNext()) ) {
                    throw new RewriteEarlyExitException();
                }
                while ( stream_member.hasNext() ) {
                    adaptor.addChild(root_1, stream_member.nextTree());

                }
                stream_member.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "template"


    public static class member_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "member"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:362:1: member : Member ;
    public final AnotherStoryGrammerParser.member_return member() throws RecognitionException {
        AnotherStoryGrammerParser.member_return retval = new AnotherStoryGrammerParser.member_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token Member69=null;

        CommonTree Member69_tree=null;

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:362:8: ( Member )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:362:10: Member
            {
            root_0 = (CommonTree)adaptor.nil();


            Member69=(Token)match(input,Member,FOLLOW_Member_in_member1041); 
            Member69_tree = 
            (CommonTree)adaptor.create(Member69)
            ;
            adaptor.addChild(root_0, Member69_tree);


            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "member"


    public static class jsonValue_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "jsonValue"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:367:1: jsonValue : ( string | number | jsonObject | array | 'true' -> TRUE | 'false' -> FALSE | 'null' -> NULL );
    public final AnotherStoryGrammerParser.jsonValue_return jsonValue() throws RecognitionException {
        AnotherStoryGrammerParser.jsonValue_return retval = new AnotherStoryGrammerParser.jsonValue_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token string_literal74=null;
        Token string_literal75=null;
        Token string_literal76=null;
        AnotherStoryGrammerParser.string_return string70 =null;

        AnotherStoryGrammerParser.number_return number71 =null;

        AnotherStoryGrammerParser.jsonObject_return jsonObject72 =null;

        AnotherStoryGrammerParser.array_return array73 =null;


        CommonTree string_literal74_tree=null;
        CommonTree string_literal75_tree=null;
        CommonTree string_literal76_tree=null;
        RewriteRuleTokenStream stream_69=new RewriteRuleTokenStream(adaptor,"token 69");
        RewriteRuleTokenStream stream_68=new RewriteRuleTokenStream(adaptor,"token 68");
        RewriteRuleTokenStream stream_70=new RewriteRuleTokenStream(adaptor,"token 70");

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:368:2: ( string | number | jsonObject | array | 'true' -> TRUE | 'false' -> FALSE | 'null' -> NULL )
            int alt12=7;
            switch ( input.LA(1) ) {
            case String:
                {
                alt12=1;
                }
                break;
            case Number:
                {
                alt12=2;
                }
                break;
            case 71:
                {
                alt12=3;
                }
                break;
            case 66:
                {
                alt12=4;
                }
                break;
            case 70:
                {
                alt12=5;
                }
                break;
            case 68:
                {
                alt12=6;
                }
                break;
            case 69:
                {
                alt12=7;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;

            }

            switch (alt12) {
                case 1 :
                    // org/jbehaviour/antlr/AnotherStoryGrammer.g:368:4: string
                    {
                    root_0 = (CommonTree)adaptor.nil();


                    pushFollow(FOLLOW_string_in_jsonValue1052);
                    string70=string();

                    state._fsp--;

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

                    }
                    break;
                case 2 :
                    // org/jbehaviour/antlr/AnotherStoryGrammer.g:369:4: number
                    {
                    root_0 = (CommonTree)adaptor.nil();


                    pushFollow(FOLLOW_number_in_jsonValue1057);
                    number71=number();

                    state._fsp--;

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

                    }
                    break;
                case 3 :
                    // org/jbehaviour/antlr/AnotherStoryGrammer.g:370:4: jsonObject
                    {
                    root_0 = (CommonTree)adaptor.nil();


                    pushFollow(FOLLOW_jsonObject_in_jsonValue1062);
                    jsonObject72=jsonObject();

                    state._fsp--;

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

                    }
                    break;
                case 4 :
                    // org/jbehaviour/antlr/AnotherStoryGrammer.g:371:4: array
                    {
                    root_0 = (CommonTree)adaptor.nil();


                    pushFollow(FOLLOW_array_in_jsonValue1067);
                    array73=array();

                    state._fsp--;

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

                    }
                    break;
                case 5 :
                    // org/jbehaviour/antlr/AnotherStoryGrammer.g:372:4: 'true'
                    {
                    string_literal74=(Token)match(input,70,FOLLOW_70_in_jsonValue1072);  
                    stream_70.add(string_literal74);


                    // AST REWRITE
                    // elements: 
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (CommonTree)adaptor.nil();
                    // 372:11: -> TRUE
                    {
                        adaptor.addChild(root_0, 
                        (CommonTree)adaptor.create(TRUE, "TRUE")
                        );

                    }


                    retval.tree = root_0;

                    }
                    break;
                case 6 :
                    // org/jbehaviour/antlr/AnotherStoryGrammer.g:373:4: 'false'
                    {
                    string_literal75=(Token)match(input,68,FOLLOW_68_in_jsonValue1081);  
                    stream_68.add(string_literal75);


                    // AST REWRITE
                    // elements: 
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (CommonTree)adaptor.nil();
                    // 373:12: -> FALSE
                    {
                        adaptor.addChild(root_0, 
                        (CommonTree)adaptor.create(FALSE, "FALSE")
                        );

                    }


                    retval.tree = root_0;

                    }
                    break;
                case 7 :
                    // org/jbehaviour/antlr/AnotherStoryGrammer.g:374:4: 'null'
                    {
                    string_literal76=(Token)match(input,69,FOLLOW_69_in_jsonValue1090);  
                    stream_69.add(string_literal76);


                    // AST REWRITE
                    // elements: 
                    // token labels: 
                    // rule labels: retval
                    // token list labels: 
                    // rule list labels: 
                    // wildcard labels: 
                    retval.tree = root_0;
                    RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

                    root_0 = (CommonTree)adaptor.nil();
                    // 374:11: -> NULL
                    {
                        adaptor.addChild(root_0, 
                        (CommonTree)adaptor.create(NULL, "NULL")
                        );

                    }


                    retval.tree = root_0;

                    }
                    break;

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "jsonValue"


    public static class number_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "number"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:378:1: number : n= Number {...}? ( Exponent )? -> ^( NUMBER Number ( Exponent )? ) ;
    public final AnotherStoryGrammerParser.number_return number() throws RecognitionException {
        AnotherStoryGrammerParser.number_return retval = new AnotherStoryGrammerParser.number_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token n=null;
        Token Exponent77=null;

        CommonTree n_tree=null;
        CommonTree Exponent77_tree=null;
        RewriteRuleTokenStream stream_Exponent=new RewriteRuleTokenStream(adaptor,"token Exponent");
        RewriteRuleTokenStream stream_Number=new RewriteRuleTokenStream(adaptor,"token Number");

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:378:8: (n= Number {...}? ( Exponent )? -> ^( NUMBER Number ( Exponent )? ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:378:10: n= Number {...}? ( Exponent )?
            {
            n=(Token)match(input,Number,FOLLOW_Number_in_number1107);  
            stream_Number.add(n);


            if ( !((Pattern.matches("(0|(-?[1-9]\\d*))(\\.\\d+)?", n.getText()))) ) {
                throw new FailedPredicateException(input, "number", "Pattern.matches(\"(0|(-?[1-9]\\\\d*))(\\\\.\\\\d+)?\", n.getText())");
            }

            // org/jbehaviour/antlr/AnotherStoryGrammer.g:379:6: ( Exponent )?
            int alt13=2;
            switch ( input.LA(1) ) {
                case Exponent:
                    {
                    alt13=1;
                    }
                    break;
            }

            switch (alt13) {
                case 1 :
                    // org/jbehaviour/antlr/AnotherStoryGrammer.g:379:6: Exponent
                    {
                    Exponent77=(Token)match(input,Exponent,FOLLOW_Exponent_in_number1117);  
                    stream_Exponent.add(Exponent77);


                    }
                    break;

            }


            // AST REWRITE
            // elements: Number, Exponent
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 380:4: -> ^( NUMBER Number ( Exponent )? )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:380:7: ^( NUMBER Number ( Exponent )? )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(NUMBER, "NUMBER")
                , root_1);

                adaptor.addChild(root_1, 
                stream_Number.nextNode()
                );

                // org/jbehaviour/antlr/AnotherStoryGrammer.g:380:23: ( Exponent )?
                if ( stream_Exponent.hasNext() ) {
                    adaptor.addChild(root_1, 
                    stream_Exponent.nextNode()
                    );

                }
                stream_Exponent.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "number"


    public static class jsonObject_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "jsonObject"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:383:1: jsonObject : '{' ( members )? '}' -> ^( OBJECT ( members )? ) ;
    public final AnotherStoryGrammerParser.jsonObject_return jsonObject() throws RecognitionException {
        AnotherStoryGrammerParser.jsonObject_return retval = new AnotherStoryGrammerParser.jsonObject_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token char_literal78=null;
        Token char_literal80=null;
        AnotherStoryGrammerParser.members_return members79 =null;


        CommonTree char_literal78_tree=null;
        CommonTree char_literal80_tree=null;
        RewriteRuleTokenStream stream_71=new RewriteRuleTokenStream(adaptor,"token 71");
        RewriteRuleTokenStream stream_72=new RewriteRuleTokenStream(adaptor,"token 72");
        RewriteRuleSubtreeStream stream_members=new RewriteRuleSubtreeStream(adaptor,"rule members");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:383:12: ( '{' ( members )? '}' -> ^( OBJECT ( members )? ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:383:14: '{' ( members )? '}'
            {
            char_literal78=(Token)match(input,71,FOLLOW_71_in_jsonObject1143);  
            stream_71.add(char_literal78);


            // org/jbehaviour/antlr/AnotherStoryGrammer.g:383:18: ( members )?
            int alt14=2;
            switch ( input.LA(1) ) {
                case String:
                    {
                    alt14=1;
                    }
                    break;
            }

            switch (alt14) {
                case 1 :
                    // org/jbehaviour/antlr/AnotherStoryGrammer.g:383:18: members
                    {
                    pushFollow(FOLLOW_members_in_jsonObject1145);
                    members79=members();

                    state._fsp--;

                    stream_members.add(members79.getTree());

                    }
                    break;

            }


            char_literal80=(Token)match(input,72,FOLLOW_72_in_jsonObject1148);  
            stream_72.add(char_literal80);


            // AST REWRITE
            // elements: members
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 384:4: -> ^( OBJECT ( members )? )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:384:7: ^( OBJECT ( members )? )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(OBJECT, "OBJECT")
                , root_1);

                // org/jbehaviour/antlr/AnotherStoryGrammer.g:384:16: ( members )?
                if ( stream_members.hasNext() ) {
                    adaptor.addChild(root_1, stream_members.nextTree());

                }
                stream_members.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "jsonObject"


    public static class array_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "array"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:387:1: array : '[' ( elements )? ']' -> ^( ARRAY ( elements )? ) ;
    public final AnotherStoryGrammerParser.array_return array() throws RecognitionException {
        AnotherStoryGrammerParser.array_return retval = new AnotherStoryGrammerParser.array_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token char_literal81=null;
        Token char_literal83=null;
        AnotherStoryGrammerParser.elements_return elements82 =null;


        CommonTree char_literal81_tree=null;
        CommonTree char_literal83_tree=null;
        RewriteRuleTokenStream stream_67=new RewriteRuleTokenStream(adaptor,"token 67");
        RewriteRuleTokenStream stream_66=new RewriteRuleTokenStream(adaptor,"token 66");
        RewriteRuleSubtreeStream stream_elements=new RewriteRuleSubtreeStream(adaptor,"rule elements");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:387:7: ( '[' ( elements )? ']' -> ^( ARRAY ( elements )? ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:387:9: '[' ( elements )? ']'
            {
            char_literal81=(Token)match(input,66,FOLLOW_66_in_array1172);  
            stream_66.add(char_literal81);


            // org/jbehaviour/antlr/AnotherStoryGrammer.g:387:13: ( elements )?
            int alt15=2;
            switch ( input.LA(1) ) {
                case Number:
                case String:
                case 66:
                case 68:
                case 69:
                case 70:
                case 71:
                    {
                    alt15=1;
                    }
                    break;
            }

            switch (alt15) {
                case 1 :
                    // org/jbehaviour/antlr/AnotherStoryGrammer.g:387:13: elements
                    {
                    pushFollow(FOLLOW_elements_in_array1174);
                    elements82=elements();

                    state._fsp--;

                    stream_elements.add(elements82.getTree());

                    }
                    break;

            }


            char_literal83=(Token)match(input,67,FOLLOW_67_in_array1177);  
            stream_67.add(char_literal83);


            // AST REWRITE
            // elements: elements
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 388:4: -> ^( ARRAY ( elements )? )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:388:7: ^( ARRAY ( elements )? )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(ARRAY, "ARRAY")
                , root_1);

                // org/jbehaviour/antlr/AnotherStoryGrammer.g:388:15: ( elements )?
                if ( stream_elements.hasNext() ) {
                    adaptor.addChild(root_1, stream_elements.nextTree());

                }
                stream_elements.reset();

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "array"


    public static class elements_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "elements"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:391:1: elements : jsonValue ( COMMA ! jsonValue )* ;
    public final AnotherStoryGrammerParser.elements_return elements() throws RecognitionException {
        AnotherStoryGrammerParser.elements_return retval = new AnotherStoryGrammerParser.elements_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token COMMA85=null;
        AnotherStoryGrammerParser.jsonValue_return jsonValue84 =null;

        AnotherStoryGrammerParser.jsonValue_return jsonValue86 =null;


        CommonTree COMMA85_tree=null;

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:391:9: ( jsonValue ( COMMA ! jsonValue )* )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:391:11: jsonValue ( COMMA ! jsonValue )*
            {
            root_0 = (CommonTree)adaptor.nil();


            pushFollow(FOLLOW_jsonValue_in_elements1198);
            jsonValue84=jsonValue();

            state._fsp--;

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

            // org/jbehaviour/antlr/AnotherStoryGrammer.g:391:21: ( COMMA ! jsonValue )*
            loop16:
            do {
                int alt16=2;
                switch ( input.LA(1) ) {
                case COMMA:
                    {
                    alt16=1;
                    }
                    break;

                }

                switch (alt16) {
            	case 1 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:391:22: COMMA ! jsonValue
            	    {
            	    COMMA85=(Token)match(input,COMMA,FOLLOW_COMMA_in_elements1201); 

            	    pushFollow(FOLLOW_jsonValue_in_elements1204);
            	    jsonValue86=jsonValue();

            	    state._fsp--;

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

            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);


            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "elements"


    public static class members_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "members"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:394:1: members : pair ( COMMA ! pair )* ;
    public final AnotherStoryGrammerParser.members_return members() throws RecognitionException {
        AnotherStoryGrammerParser.members_return retval = new AnotherStoryGrammerParser.members_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token COMMA88=null;
        AnotherStoryGrammerParser.pair_return pair87 =null;

        AnotherStoryGrammerParser.pair_return pair89 =null;


        CommonTree COMMA88_tree=null;

        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:394:9: ( pair ( COMMA ! pair )* )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:394:11: pair ( COMMA ! pair )*
            {
            root_0 = (CommonTree)adaptor.nil();


            pushFollow(FOLLOW_pair_in_members1217);
            pair87=pair();

            state._fsp--;

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

            // org/jbehaviour/antlr/AnotherStoryGrammer.g:394:16: ( COMMA ! pair )*
            loop17:
            do {
                int alt17=2;
                switch ( input.LA(1) ) {
                case COMMA:
                    {
                    alt17=1;
                    }
                    break;

                }

                switch (alt17) {
            	case 1 :
            	    // org/jbehaviour/antlr/AnotherStoryGrammer.g:394:17: COMMA ! pair
            	    {
            	    COMMA88=(Token)match(input,COMMA,FOLLOW_COMMA_in_members1220); 

            	    pushFollow(FOLLOW_pair_in_members1223);
            	    pair89=pair();

            	    state._fsp--;

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

            	    }
            	    break;

            	default :
            	    break loop17;
                }
            } while (true);


            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "members"


    public static class pair_return extends ParserRuleReturnScope {
        CommonTree tree;
        public Object getTree() { return tree; }
    };


    // $ANTLR start "pair"
    // org/jbehaviour/antlr/AnotherStoryGrammer.g:397:1: pair : String ':' jsonValue -> ^( FIELD String jsonValue ) ;
    public final AnotherStoryGrammerParser.pair_return pair() throws RecognitionException {
        AnotherStoryGrammerParser.pair_return retval = new AnotherStoryGrammerParser.pair_return();
        retval.start = input.LT(1);


        CommonTree root_0 = null;

        Token String90=null;
        Token char_literal91=null;
        AnotherStoryGrammerParser.jsonValue_return jsonValue92 =null;


        CommonTree String90_tree=null;
        CommonTree char_literal91_tree=null;
        RewriteRuleTokenStream stream_String=new RewriteRuleTokenStream(adaptor,"token String");
        RewriteRuleTokenStream stream_65=new RewriteRuleTokenStream(adaptor,"token 65");
        RewriteRuleSubtreeStream stream_jsonValue=new RewriteRuleSubtreeStream(adaptor,"rule jsonValue");
        try {
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:397:6: ( String ':' jsonValue -> ^( FIELD String jsonValue ) )
            // org/jbehaviour/antlr/AnotherStoryGrammer.g:397:8: String ':' jsonValue
            {
            String90=(Token)match(input,String,FOLLOW_String_in_pair1237);  
            stream_String.add(String90);


            char_literal91=(Token)match(input,65,FOLLOW_65_in_pair1239);  
            stream_65.add(char_literal91);


            pushFollow(FOLLOW_jsonValue_in_pair1241);
            jsonValue92=jsonValue();

            state._fsp--;

            stream_jsonValue.add(jsonValue92.getTree());

            // AST REWRITE
            // elements: jsonValue, String
            // token labels: 
            // rule labels: retval
            // token list labels: 
            // rule list labels: 
            // wildcard labels: 
            retval.tree = root_0;
            RewriteRuleSubtreeStream stream_retval=new RewriteRuleSubtreeStream(adaptor,"rule retval",retval!=null?retval.tree:null);

            root_0 = (CommonTree)adaptor.nil();
            // 398:4: -> ^( FIELD String jsonValue )
            {
                // org/jbehaviour/antlr/AnotherStoryGrammer.g:398:7: ^( FIELD String jsonValue )
                {
                CommonTree root_1 = (CommonTree)adaptor.nil();
                root_1 = (CommonTree)adaptor.becomeRoot(
                (CommonTree)adaptor.create(FIELD, "FIELD")
                , root_1);

                adaptor.addChild(root_1, 
                stream_String.nextNode()
                );

                adaptor.addChild(root_1, stream_jsonValue.nextTree());

                adaptor.addChild(root_0, root_1);
                }

            }


            retval.tree = root_0;

            }

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


            retval.tree = (CommonTree)adaptor.rulePostProcessing(root_0);
            adaptor.setTokenBoundaries(retval.tree, retval.start, retval.stop);

        }
         
        catch (Exception e) { 
        //throw e; 
        } 

        finally {
        	// do for sure before leaving
        }
        return retval;
    }
    // $ANTLR end "pair"

    // Delegated rules


 

    public static final BitSet FOLLOW_feature_in_story273 = new BitSet(new long[]{0x0000020000000002L});
    public static final BitSet FOLLOW_scenario_in_story276 = new BitSet(new long[]{0x0000020000000002L});
    public static final BitSet FOLLOW_FEATURE_in_feature287 = new BitSet(new long[]{0x0000088420000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_anyDecl_in_feature291 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_featureDecl_in_feature293 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_inOrderToDecl_in_featureDecl319 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_asAnDecl_in_featureDecl321 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_iWantToDecl_in_featureDecl323 = new BitSet(new long[]{0x0000006004002002L});
    public static final BitSet FOLLOW_includeDecl_in_featureDecl326 = new BitSet(new long[]{0x0000006004002002L});
    public static final BitSet FOLLOW_registerDecl_in_featureDecl328 = new BitSet(new long[]{0x0000006004002002L});
    public static final BitSet FOLLOW_reportDecl_in_featureDecl330 = new BitSet(new long[]{0x0000006004002002L});
    public static final BitSet FOLLOW_declareDecl_in_featureDecl332 = new BitSet(new long[]{0x0000006004002002L});
    public static final BitSet FOLLOW_INORDERTO_in_inOrderToDecl343 = new BitSet(new long[]{0x0000088420000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_anyDecl_in_inOrderToDecl345 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ASAN_in_asAnDecl366 = new BitSet(new long[]{0x0000088420000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_anyDecl_in_asAnDecl368 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_IWANTTO_in_iWantToDecl389 = new BitSet(new long[]{0x0000088420000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_anyDecl_in_iWantToDecl391 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_INCLUDE_in_includeDecl412 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_anyStringDecl_in_includeDecl416 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_REGISTER_in_registerDecl437 = new BitSet(new long[]{0x0000080020000000L});
    public static final BitSet FOLLOW_anyDeclEndedByPlugin_in_registerDecl441 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_REPORT_in_reportDecl462 = new BitSet(new long[]{0x0000088420000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_anyDecl_in_reportDecl466 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_DECLARE_in_declareDecl487 = new BitSet(new long[]{0x0000088420000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_anyDecl_in_declareDecl491 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_SCENARIO_in_scenarioKeyword515 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_scenarioKeyword_in_scenario526 = new BitSet(new long[]{0x0000088420000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_anyDecl_in_scenario528 = new BitSet(new long[]{0x8000100001000200L});
    public static final BitSet FOLLOW_statementDecl_in_scenario530 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_giveDecl_in_statementDecl564 = new BitSet(new long[]{0x8000100001000212L});
    public static final BitSet FOLLOW_andDecl_in_statementDecl568 = new BitSet(new long[]{0x8000100001000212L});
    public static final BitSet FOLLOW_whenDecl_in_statementDecl580 = new BitSet(new long[]{0x8000100001000212L});
    public static final BitSet FOLLOW_andDecl_in_statementDecl584 = new BitSet(new long[]{0x8000100001000212L});
    public static final BitSet FOLLOW_thenDecl_in_statementDecl596 = new BitSet(new long[]{0x8000100001000212L});
    public static final BitSet FOLLOW_andDecl_in_statementDecl600 = new BitSet(new long[]{0x8000100001000212L});
    public static final BitSet FOLLOW_callDecl_in_statementDecl612 = new BitSet(new long[]{0x8000100001000212L});
    public static final BitSet FOLLOW_andDecl_in_statementDecl616 = new BitSet(new long[]{0x8000100001000212L});
    public static final BitSet FOLLOW_GIVEN_in_givenKeyword637 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_WHEN_in_whenKeyword650 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_THEN_in_thenKeyword663 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_AND_in_andKeyword676 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_givenKeyword_in_giveDecl689 = new BitSet(new long[]{0x0000088420000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_anyDecl_in_giveDecl691 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_whenKeyword_in_whenDecl714 = new BitSet(new long[]{0x0000088420000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_anyDecl_in_whenDecl716 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_thenKeyword_in_thenDecl739 = new BitSet(new long[]{0x0000088420000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_anyDecl_in_thenDecl741 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_andKeyword_in_andDecl764 = new BitSet(new long[]{0x0000088420000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_anyDecl_in_andDecl766 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_CALL_in_callDecl789 = new BitSet(new long[]{0x0000088420000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_anyDecl_in_callDecl793 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_string_in_anyDeclEndedByPlugin823 = new BitSet(new long[]{0x0000081020000000L});
    public static final BitSet FOLLOW_identifier_in_anyDeclEndedByPlugin836 = new BitSet(new long[]{0x0000081020000000L});
    public static final BitSet FOLLOW_PLUGIN_in_anyDeclEndedByPlugin846 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_string_in_anyStringDecl862 = new BitSet(new long[]{0x0000080000000002L});
    public static final BitSet FOLLOW_string_in_anyDecl888 = new BitSet(new long[]{0x0000088420000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_identifier_in_anyDecl900 = new BitSet(new long[]{0x0000088420000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_reference_in_anyDecl908 = new BitSet(new long[]{0x0000088420000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_template_in_anyDecl917 = new BitSet(new long[]{0x0000088420000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_integer_in_anyDecl927 = new BitSet(new long[]{0x0000088420000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_jsonObject_in_anyDecl938 = new BitSet(new long[]{0x0000088420000002L,0x0000000000000080L});
    public static final BitSet FOLLOW_String_in_string955 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_Identifier_in_identifier977 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_Number_in_integer988 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_Reference_in_reference999 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_Reference_in_template1011 = new BitSet(new long[]{0x0000000080000000L});
    public static final BitSet FOLLOW_member_in_template1014 = new BitSet(new long[]{0x0000000080000002L});
    public static final BitSet FOLLOW_Member_in_member1041 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_string_in_jsonValue1052 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_number_in_jsonValue1057 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_jsonObject_in_jsonValue1062 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_array_in_jsonValue1067 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_70_in_jsonValue1072 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_68_in_jsonValue1081 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_69_in_jsonValue1090 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_Number_in_number1107 = new BitSet(new long[]{0x0000000000100002L});
    public static final BitSet FOLLOW_Exponent_in_number1117 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_71_in_jsonObject1143 = new BitSet(new long[]{0x0000080000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_members_in_jsonObject1145 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_72_in_jsonObject1148 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_66_in_array1172 = new BitSet(new long[]{0x0000080400000000L,0x00000000000000FCL});
    public static final BitSet FOLLOW_elements_in_array1174 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
    public static final BitSet FOLLOW_67_in_array1177 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_jsonValue_in_elements1198 = new BitSet(new long[]{0x0000000000000402L});
    public static final BitSet FOLLOW_COMMA_in_elements1201 = new BitSet(new long[]{0x0000080400000000L,0x00000000000000F4L});
    public static final BitSet FOLLOW_jsonValue_in_elements1204 = new BitSet(new long[]{0x0000000000000402L});
    public static final BitSet FOLLOW_pair_in_members1217 = new BitSet(new long[]{0x0000000000000402L});
    public static final BitSet FOLLOW_COMMA_in_members1220 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_pair_in_members1223 = new BitSet(new long[]{0x0000000000000402L});
    public static final BitSet FOLLOW_String_in_pair1237 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_65_in_pair1239 = new BitSet(new long[]{0x0000080400000000L,0x00000000000000F4L});
    public static final BitSet FOLLOW_jsonValue_in_pair1241 = new BitSet(new long[]{0x0000000000000002L});

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy