public final WaiprParser.trigger_return trigger() throws RecognitionException {
		WaiprParser.trigger_return retval = new WaiprParser.trigger_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		Token sh=null;

		CommonTree sh_tree=null;
		RewriteRuleTokenStream stream_ID=new RewriteRuleTokenStream(adaptor,"token ID");

		try { dbg.enterRule(getGrammarFileName(), "trigger");
		if ( getRuleLevel()==0 ) {dbg.commence();}
		incRuleLevel();
		dbg.location(34, 0);

		try {
			// C:\\Users\\Gyula\\Documents\\NetBeansProjects\\waiprProg\\src\\waiprprog\\Waipr.g:34:9: (sh= ID -> TEST[$sh] )
			dbg.enterAlt(1);

			// C:\\Users\\Gyula\\Documents\\NetBeansProjects\\waiprProg\\src\\waiprprog\\Waipr.g:34:11: sh= ID
			{
			dbg.location(34,13);
			sh=(Token)match(input,ID,FOLLOW_ID_in_trigger241);  
			stream_ID.add(sh);

			// 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.getTree():null);

			root_0 = (CommonTree)adaptor.nil();
			// 34:17: -> TEST[$sh]
			{
				dbg.location(34,20);
				adaptor.addChild(root_0, (CommonTree)adaptor.create(TEST, sh));
			}


			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 (RecognitionException re) {
			reportError(re);
			recover(input,re);
			retval.tree = (CommonTree)adaptor.errorNode(input, retval.start, input.LT(-1), re);
		}
		finally {
			// do for sure before leaving
		}
		dbg.location(34, 28);

		}
		finally {
			dbg.exitRule(getGrammarFileName(), "trigger");
			decRuleLevel();
			if ( getRuleLevel()==0 ) {dbg.terminate();}
		}

		return retval;
	}