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

		CommonTree root_0 = null;

		Token char_literal32=null;
		ParserRuleReturnScope sender31 =null;
		ParserRuleReturnScope trigger33 =null;

		CommonTree char_literal32_tree=null;
		RewriteRuleTokenStream stream_18=new RewriteRuleTokenStream(adaptor,"token 18");
		RewriteRuleSubtreeStream stream_sender=new RewriteRuleSubtreeStream(adaptor,"rule sender");
		RewriteRuleSubtreeStream stream_trigger=new RewriteRuleSubtreeStream(adaptor,"rule trigger");

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

		try {
			// C:\\Users\\Gyula\\Documents\\NetBeansProjects\\waiprProg\\src\\waiprprog\\Waipr.g:30:2: ( sender '.' trigger -> ^( sender trigger ) )
			dbg.enterAlt(1);

			// C:\\Users\\Gyula\\Documents\\NetBeansProjects\\waiprProg\\src\\waiprprog\\Waipr.g:30:4: sender '.' trigger
			{
			dbg.location(30,4);
			pushFollow(FOLLOW_sender_in_triggersource209);
			sender31=sender();
			state._fsp--;

			stream_sender.add(sender31.getTree());dbg.location(30,11);
			char_literal32=(Token)match(input,18,FOLLOW_18_in_triggersource211);  
			stream_18.add(char_literal32);
			dbg.location(30,15);
			pushFollow(FOLLOW_trigger_in_triggersource213);
			trigger33=trigger();
			state._fsp--;

			stream_trigger.add(trigger33.getTree());
			// AST REWRITE
			// elements: sender, trigger
			// 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();
			// 30:23: -> ^( sender trigger )
			{
				dbg.location(30,26);
				// C:\\Users\\Gyula\\Documents\\NetBeansProjects\\waiprProg\\src\\waiprprog\\Waipr.g:30:26: ^( sender trigger )
				{
				CommonTree root_1 = (CommonTree)adaptor.nil();
				dbg.location(30,28);
				root_1 = (CommonTree)adaptor.becomeRoot(stream_sender.nextNode(), root_1);
				dbg.location(30,35);
				adaptor.addChild(root_1, stream_trigger.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 (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(30, 42);

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

		return retval;
	}