docs: public final void mFLOAT() throws RecognitionException {
  		try {
  			int _type = FLOAT;
  			int _channel = DEFAULT_TOKEN_CHANNEL;
  			// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:88:5: ( ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )? | '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )? | ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )? | ( '0' .. '9' )+ FloatTypeSuffix )
  			int alt13=4;
  			alt13 = dfa13.predict(input);
  			switch (alt13) {
  				case 1 :
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:88:9: ( '0' .. '9' )+ '.' ( '0' .. '9' )* ( Exponent )? ( FloatTypeSuffix )?
  					{
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:88:9: ( '0' .. '9' )+
  					int cnt3=0;
  					loop3:
  					while (true) {
  						int alt3=2;
  						int LA3_0 = input.LA(1);
  						if ( ((LA3_0 >= '0' && LA3_0 <= '9')) ) {
  							alt3=1;
  						}
  
  						switch (alt3) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:
  							{
  							if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) {
  								input.consume();
  								state.failed=false;
  							}
  							else {
  								if (state.backtracking>0) {state.failed=true; return;}
  								MismatchedSetException mse = new MismatchedSetException(null,input);
  								recover(mse);
  								throw mse;
  							}
  							}
  							break;
  
  						default :
  							if ( cnt3 >= 1 ) break loop3;
  							if (state.backtracking>0) {state.failed=true; return;}
  							EarlyExitException eee = new EarlyExitException(3, input);
  							throw eee;
  						}
  						cnt3++;
  					}
  
  					match('.'); if (state.failed) return;
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:88:25: ( '0' .. '9' )*
  					loop4:
  					while (true) {
  						int alt4=2;
  						int LA4_0 = input.LA(1);
  						if ( ((LA4_0 >= '0' && LA4_0 <= '9')) ) {
  							alt4=1;
  						}
  
  						switch (alt4) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:
  							{
  							if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) {
  								input.consume();
  								state.failed=false;
  							}
  							else {
  								if (state.backtracking>0) {state.failed=true; return;}
  								MismatchedSetException mse = new MismatchedSetException(null,input);
  								recover(mse);
  								throw mse;
  							}
  							}
  							break;
  
  						default :
  							break loop4;
  						}
  					}
  
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:88:37: ( Exponent )?
  					int alt5=2;
  					int LA5_0 = input.LA(1);
  					if ( (LA5_0=='E'||LA5_0=='e') ) {
  						alt5=1;
  					}
  					switch (alt5) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:88:37: Exponent
  							{
  							mExponent(); if (state.failed) return;
  
  							}
  							break;
  
  					}
  
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:88:47: ( FloatTypeSuffix )?
  					int alt6=2;
  					int LA6_0 = input.LA(1);
  					if ( (LA6_0=='B'||LA6_0=='D'||LA6_0=='F'||LA6_0=='d'||LA6_0=='f') ) {
  						alt6=1;
  					}
  					switch (alt6) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:
  							{
  							if ( input.LA(1)=='B'||input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='d'||input.LA(1)=='f' ) {
  								input.consume();
  								state.failed=false;
  							}
  							else {
  								if (state.backtracking>0) {state.failed=true; return;}
  								MismatchedSetException mse = new MismatchedSetException(null,input);
  								recover(mse);
  								throw mse;
  							}
  							}
  							break;
  
  					}
  
  					}
  					break;
  				case 2 :
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:89:9: '.' ( '0' .. '9' )+ ( Exponent )? ( FloatTypeSuffix )?
  					{
  					match('.'); if (state.failed) return;
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:89:13: ( '0' .. '9' )+
  					int cnt7=0;
  					loop7:
  					while (true) {
  						int alt7=2;
  						int LA7_0 = input.LA(1);
  						if ( ((LA7_0 >= '0' && LA7_0 <= '9')) ) {
  							alt7=1;
  						}
  
  						switch (alt7) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:
  							{
  							if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) {
  								input.consume();
  								state.failed=false;
  							}
  							else {
  								if (state.backtracking>0) {state.failed=true; return;}
  								MismatchedSetException mse = new MismatchedSetException(null,input);
  								recover(mse);
  								throw mse;
  							}
  							}
  							break;
  
  						default :
  							if ( cnt7 >= 1 ) break loop7;
  							if (state.backtracking>0) {state.failed=true; return;}
  							EarlyExitException eee = new EarlyExitException(7, input);
  							throw eee;
  						}
  						cnt7++;
  					}
  
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:89:25: ( Exponent )?
  					int alt8=2;
  					int LA8_0 = input.LA(1);
  					if ( (LA8_0=='E'||LA8_0=='e') ) {
  						alt8=1;
  					}
  					switch (alt8) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:89:25: Exponent
  							{
  							mExponent(); if (state.failed) return;
  
  							}
  							break;
  
  					}
  
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:89:35: ( FloatTypeSuffix )?
  					int alt9=2;
  					int LA9_0 = input.LA(1);
  					if ( (LA9_0=='B'||LA9_0=='D'||LA9_0=='F'||LA9_0=='d'||LA9_0=='f') ) {
  						alt9=1;
  					}
  					switch (alt9) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:
  							{
  							if ( input.LA(1)=='B'||input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='d'||input.LA(1)=='f' ) {
  								input.consume();
  								state.failed=false;
  							}
  							else {
  								if (state.backtracking>0) {state.failed=true; return;}
  								MismatchedSetException mse = new MismatchedSetException(null,input);
  								recover(mse);
  								throw mse;
  							}
  							}
  							break;
  
  					}
  
  					}
  					break;
  				case 3 :
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:90:9: ( '0' .. '9' )+ Exponent ( FloatTypeSuffix )?
  					{
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:90:9: ( '0' .. '9' )+
  					int cnt10=0;
  					loop10:
  					while (true) {
  						int alt10=2;
  						int LA10_0 = input.LA(1);
  						if ( ((LA10_0 >= '0' && LA10_0 <= '9')) ) {
  							alt10=1;
  						}
  
  						switch (alt10) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:
  							{
  							if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) {
  								input.consume();
  								state.failed=false;
  							}
  							else {
  								if (state.backtracking>0) {state.failed=true; return;}
  								MismatchedSetException mse = new MismatchedSetException(null,input);
  								recover(mse);
  								throw mse;
  							}
  							}
  							break;
  
  						default :
  							if ( cnt10 >= 1 ) break loop10;
  							if (state.backtracking>0) {state.failed=true; return;}
  							EarlyExitException eee = new EarlyExitException(10, input);
  							throw eee;
  						}
  						cnt10++;
  					}
  
  					mExponent(); if (state.failed) return;
  
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:90:30: ( FloatTypeSuffix )?
  					int alt11=2;
  					int LA11_0 = input.LA(1);
  					if ( (LA11_0=='B'||LA11_0=='D'||LA11_0=='F'||LA11_0=='d'||LA11_0=='f') ) {
  						alt11=1;
  					}
  					switch (alt11) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:
  							{
  							if ( input.LA(1)=='B'||input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='d'||input.LA(1)=='f' ) {
  								input.consume();
  								state.failed=false;
  							}
  							else {
  								if (state.backtracking>0) {state.failed=true; return;}
  								MismatchedSetException mse = new MismatchedSetException(null,input);
  								recover(mse);
  								throw mse;
  							}
  							}
  							break;
  
  					}
  
  					}
  					break;
  				case 4 :
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:91:9: ( '0' .. '9' )+ FloatTypeSuffix
  					{
  					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:91:9: ( '0' .. '9' )+
  					int cnt12=0;
  					loop12:
  					while (true) {
  						int alt12=2;
  						int LA12_0 = input.LA(1);
  						if ( ((LA12_0 >= '0' && LA12_0 <= '9')) ) {
  							alt12=1;
  						}
  
  						switch (alt12) {
  						case 1 :
  							// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:
  							{
  							if ( (input.LA(1) >= '0' && input.LA(1) <= '9') ) {
  								input.consume();
  								state.failed=false;
  							}
  							else {
  								if (state.backtracking>0) {state.failed=true; return;}
  								MismatchedSetException mse = new MismatchedSetException(null,input);
  								recover(mse);
  								throw mse;
  							}
  							}
  							break;
  
  						default :
  							if ( cnt12 >= 1 ) break loop12;
  							if (state.backtracking>0) {state.failed=true; return;}
  							EarlyExitException eee = new EarlyExitException(12, input);
  							throw eee;
  						}
  						cnt12++;
  					}
  
  					mFloatTypeSuffix(); if (state.failed) return;
  
  					}
  					break;
  
  			}
  			state.type = _type;
  			state.channel = _channel;
  		}
  		finally {
  			// do for sure before leaving
  		}
  	}