private String preProcess(String expStr) throws Exception{
		StringBuilder exp=new StringBuilder(expStr);
		int index=0;
		int fromIndex=0;
		//%
		while((index=exp.indexOf(".",fromIndex))!=-1){
			if(!Character.isDigit(exp.charAt((index-1)<0?0:index-1))){
				exp.insert(index, '0');
			}
			fromIndex=index+1;
		}
		
		// " mod " 
		index=0;
		fromIndex=0;
		while((index=exp.indexOf("mod",fromIndex))!=-1){
			if(!Character.isLetter(exp.charAt((index-1)<0?0:index-1))&&!Character.isLetter(exp.charAt(index+3))){
				int i=index+3;
				for(;i<expStr.length()&&Character.isWhitespace(expStr.charAt(i));++i)
				{
					//ǿհַѭ˴   2 mod 3   ģ磨2,3
				}
				if(!(expStr.charAt(i)=='(')){
					exp.replace(index, index+3, "%");
				}
			}
			fromIndex=index+3;
		}
		
		//Ƿƥ
		int oddBracket=0;	//ż1żһ
		for(int i=0;i<expStr.length();++i){
			if(expStr.charAt(i)=='('){
				oddBracket++;
			}else if(expStr.charAt(i)==')'){
				oddBracket--;
			}
		}
		if(oddBracket!=0){
			throw new Exception(ERROR_MESSAGE[SYNTAX_ERROR]);
		}
		return exp.toString();
	}