private static BigFraction parse(String s){
			try{
				if(s == null){
					return null;
				}
				if(s.isEmpty()){
					return null;
				}
				char[] c = s.toCharArray();
				c = removeChar(c, (char) 32);
				c = removeChar(c, (char) 43);
				int l = c.length;
				byte[] b = new byte[l];
				b[0] = findFirst(c[0]);
				int i = 1;
				for(;i < l;i++){
					b[i] = find(c[i]);
					if(b[i] == -2){
						break;
					}
				}
				if(b[i] != -2){
					throw new NumberFormatException();
				}
				i++;
				b[i] = findFirst(c[i]);
				i++;
				for(;i < l; i++){
					b[i] = findAfter(c[i]);
				}
				return fromByteArray(b);
			}
			catch(IllegalArgumentException e){
				throw new NumberFormatException();
			}
			catch(ArrayIndexOutOfBoundsException e){
				throw new NumberFormatException();
			}
		}