public final void mNumber() throws RecognitionException {
		try {
			int _type = Number;
			int _channel = DEFAULT_TOKEN_CHANNEL;
			// HiveLexer.g:418:5: ( ( Digit )+ ( DOT ( Digit )* ( Exponent )? | Exponent )? )
			// HiveLexer.g:419:5: ( Digit )+ ( DOT ( Digit )* ( Exponent )? | Exponent )?
			{
			// HiveLexer.g:419:5: ( Digit )+
			int cnt93=0;
			loop93:
			while (true) {
				int alt93=2;
				int LA93_0 = input.LA(1);
				if ( ((LA93_0 >= '0' && LA93_0 <= '9')) ) {
					alt93=1;
				}

				switch (alt93) {
				case 1 :
					// HiveLexer.g:
					{
					if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) {
						input.consume();
					}
					else {
						MismatchedSetException mse = new MismatchedSetException(null,input);
						recover(mse);
						throw mse;
					}
					}
					break;

				default :
					if ( cnt93 >= 1 ) break loop93;
					EarlyExitException eee = new EarlyExitException(93, input);
					throw eee;
				}
				cnt93++;
			}

			// HiveLexer.g:419:14: ( DOT ( Digit )* ( Exponent )? | Exponent )?
			int alt96=3;
			int LA96_0 = input.LA(1);
			if ( (LA96_0=='.') ) {
				alt96=1;
			}
			else if ( (LA96_0=='E'||LA96_0=='e') ) {
				alt96=2;
			}
			switch (alt96) {
				case 1 :
					// HiveLexer.g:419:16: DOT ( Digit )* ( Exponent )?
					{
					mDOT(); 

					// HiveLexer.g:419:20: ( Digit )*
					loop94:
					while (true) {
						int alt94=2;
						int LA94_0 = input.LA(1);
						if ( ((LA94_0 >= '0' && LA94_0 <= '9')) ) {
							alt94=1;
						}

						switch (alt94) {
						case 1 :
							// HiveLexer.g:
							{
							if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) {
								input.consume();
							}
							else {
								MismatchedSetException mse = new MismatchedSetException(null,input);
								recover(mse);
								throw mse;
							}
							}
							break;

						default :
							break loop94;
						}
					}

					// HiveLexer.g:419:29: ( Exponent )?
					int alt95=2;
					int LA95_0 = input.LA(1);
					if ( (LA95_0=='E'||LA95_0=='e') ) {
						alt95=1;
					}
					switch (alt95) {
						case 1 :
							// HiveLexer.g:419:30: Exponent
							{
							mExponent(); 

							}
							break;

					}

					}
					break;
				case 2 :
					// HiveLexer.g:419:43: Exponent
					{
					mExponent(); 

					}
					break;

			}

			}

			state.type = _type;
			state.channel = _channel;
		}
		finally {
			// do for sure before leaving
		}
	}