public final a_expression a_mult() throws RecognitionException {
		a_expression a_mult = null;


		a_expression op1 =null;
		a_expression op2 =null;

		try {
			// /Users/yefang/Documents/research/frontEndGen/test1/src/grammar1/Pi.g:512:37: (op1= a_unary ( '*' op2= a_unary | '/' op2= a_unary )* )
			// /Users/yefang/Documents/research/frontEndGen/test1/src/grammar1/Pi.g:513:7: op1= a_unary ( '*' op2= a_unary | '/' op2= a_unary )*
			{
			 a_expression temp= null; a_expression temp1 =null; boolean noleaf = false; boolean first = true; String operator = "";  
			pushFollow(FOLLOW_a_unary_in_a_mult3414);
			op1=a_unary();
			state._fsp--;

			// /Users/yefang/Documents/research/frontEndGen/test1/src/grammar1/Pi.g:515:7: ( '*' op2= a_unary | '/' op2= a_unary )*
			loop46:
			while (true) {
				int alt46=3;
				int LA46_0 = input.LA(1);
				if ( (LA46_0==41) ) {
					alt46=1;
				}
				else if ( (LA46_0==DIV) ) {
					alt46=2;
				}

				switch (alt46) {
				case 1 :
					// /Users/yefang/Documents/research/frontEndGen/test1/src/grammar1/Pi.g:516:7: '*' op2= a_unary
					{
					match(input,41,FOLLOW_41_in_a_mult3431); 
					pushFollow(FOLLOW_a_unary_in_a_mult3435);
					op2=a_unary();
					state._fsp--;

					 noleaf = true; operator = "*";
					}
					break;
				case 2 :
					// /Users/yefang/Documents/research/frontEndGen/test1/src/grammar1/Pi.g:518:7: '/' op2= a_unary
					{
					match(input,DIV,FOLLOW_DIV_in_a_mult3454); 
					pushFollow(FOLLOW_a_unary_in_a_mult3458);
					op2=a_unary();
					state._fsp--;

					 noleaf = true; operator = "/";
					  if(first){
					            temp = new a_expression();
					            temp.l = op1;
					            temp.r = op2;
					            temp.op= operator;
					            first = false;
					          }
					          else{
					              temp1 = temp;
					              temp = new a_expression();
					              temp.l = temp1;
					              temp.op = operator;
					              temp.r = op2;
					          }
					      
					}
					break;

				default :
					break loop46;
				}
			}

			 if(first && !noleaf){
			          a_mult = op1;
			        } 
			        else
			          a_mult = temp;
			      
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
		}
		return a_mult;
	}