public final LittleNicParser.add_return add() throws RecognitionException {
		LittleNicParser.add_return retval = new LittleNicParser.add_return();
		retval.start = input.LT(1);

		CommonTree root_0 = null;

		Token char_literal99=null;
		Token char_literal100=null;
		ParserRuleReturnScope mult98 =null;
		ParserRuleReturnScope mult101 =null;

		CommonTree char_literal99_tree=null;
		CommonTree char_literal100_tree=null;

		try {
			// C:\\Users\\Samir\\Documents\\University\\Y2S2\\COMP2010\\LittleNic\\src\\LittleNic.g:173:2: ( mult ( ( '+' ^| '-' ^) mult )* )
			// C:\\Users\\Samir\\Documents\\University\\Y2S2\\COMP2010\\LittleNic\\src\\LittleNic.g:173:4: mult ( ( '+' ^| '-' ^) mult )*
			{
			root_0 = (CommonTree)adaptor.nil();


			pushFollow(FOLLOW_mult_in_add814);
			mult98=mult();
			state._fsp--;

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

			// C:\\Users\\Samir\\Documents\\University\\Y2S2\\COMP2010\\LittleNic\\src\\LittleNic.g:173:9: ( ( '+' ^| '-' ^) mult )*
			loop23:
			while (true) {
				int alt23=2;
				int LA23_0 = input.LA(1);
				if ( (LA23_0==26||LA23_0==28) ) {
					alt23=1;
				}

				switch (alt23) {
				case 1 :
					// C:\\Users\\Samir\\Documents\\University\\Y2S2\\COMP2010\\LittleNic\\src\\LittleNic.g:173:10: ( '+' ^| '-' ^) mult
					{
					// C:\\Users\\Samir\\Documents\\University\\Y2S2\\COMP2010\\LittleNic\\src\\LittleNic.g:173:10: ( '+' ^| '-' ^)
					int alt22=2;
					int LA22_0 = input.LA(1);
					if ( (LA22_0==26) ) {
						alt22=1;
					}
					else if ( (LA22_0==28) ) {
						alt22=2;
					}

					else {
						NoViableAltException nvae =
							new NoViableAltException("", 22, 0, input);
						throw nvae;
					}

					switch (alt22) {
						case 1 :
							// C:\\Users\\Samir\\Documents\\University\\Y2S2\\COMP2010\\LittleNic\\src\\LittleNic.g:173:11: '+' ^
							{
							char_literal99=(Token)match(input,26,FOLLOW_26_in_add818); 
							char_literal99_tree = (CommonTree)adaptor.create(char_literal99);
							root_0 = (CommonTree)adaptor.becomeRoot(char_literal99_tree, root_0);

							}
							break;
						case 2 :
							// C:\\Users\\Samir\\Documents\\University\\Y2S2\\COMP2010\\LittleNic\\src\\LittleNic.g:173:18: '-' ^
							{
							char_literal100=(Token)match(input,28,FOLLOW_28_in_add823); 
							char_literal100_tree = (CommonTree)adaptor.create(char_literal100);
							root_0 = (CommonTree)adaptor.becomeRoot(char_literal100_tree, root_0);

							}
							break;

					}

					pushFollow(FOLLOW_mult_in_add827);
					mult101=mult();
					state._fsp--;

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

					}
					break;

				default :
					break loop23;
				}
			}

			}

			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
		}
		return retval;
	}