$ANTLR start "Exponent"
504511
public final void mExponent() throws RecognitionException {
		try {
			// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:95:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
			// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:95:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
			{
			if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
				input.consume();
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				recover(mse);
				throw mse;
			}
			// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:95:22: ( '+' | '-' )?
			int alt14=2;
			int LA14_0 = input.LA(1);
			if ( (LA14_0=='+'||LA14_0=='-') ) {
				alt14=1;
			}
			switch (alt14) {
				case 1 :
					// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:
					{
					if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
						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;

			}

			// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:95:33: ( '0' .. '9' )+
			int cnt15=0;
			loop15:
			while (true) {
				int alt15=2;
				int LA15_0 = input.LA(1);
				if ( ((LA15_0 >= '0' && LA15_0 <= '9')) ) {
					alt15=1;
				}

				switch (alt15) {
				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 ( cnt15 >= 1 ) break loop15;
					if (state.backtracking>0) {state.failed=true; return;}
					EarlyExitException eee = new EarlyExitException(15, input);
					throw eee;
				}
				cnt15++;
			}

			}

		}
		finally {
			// do for sure before leaving
		}
	}
332144
private void parseRangeExpr() throws TTXPathException {

        parseAdditiveExpr();
        if (is("to", true)) {

            mPipeBuilder.addExpressionSingle();

            parseAdditiveExpr();
            mPipeBuilder.addRangeExpr(getTransaction());

        }
    }
76386
private ExprKraken parseSimpleTerm()
  {
    Token token = scanToken();

    switch (token) {
    case MINUS:
      return new UnaryExpr(UnaryOp.MINUS, parseSimpleTerm());
      
    case LPAREN:
    {
      ExprKraken expr = parseExpr();
      
      if ((token = scanToken()) != Token.RPAREN) {
        throw error("Expected ')' at '{0}'", token);
      }
      
      return expr;
    }
      
      
    case IDENTIFIER:
      {
        String name = _lexeme;

        if ((token = peekToken()) == Token.DOT) {
          return parsePath(name);
        }
        else if (token == Token.LPAREN) {
          FunExpr fun = null;
          
          /*
          if (name.equalsIgnoreCase("max"))
            fun = new MaxExpr();
          else if (name.equalsIgnoreCase("min"))
            fun = new MinExpr();
          else if (name.equalsIgnoreCase("sum"))
            fun = new SumExpr();
          else if (name.equalsIgnoreCase("avg"))
            fun = new AvgExpr();
          else if (name.equalsIgnoreCase("count")) {
            fun = new CountExpr();

            token = scanToken();
            if (token == '*') {
              fun.addArg(new UnboundStarExpr());
            }
            else
              _token = token;
          }
          else */
          {
            String funName = (Character.toUpperCase(name.charAt(0)) +
                              name.substring(1).toLowerCase(Locale.ENGLISH));

            funName = "com.caucho.v5.kraken.fun." + funName + "Expr";

            try {
              ClassLoader loader = Thread.currentThread().getContextClassLoader();
              Class<?> cl = Class.forName(funName, false, loader);

              fun = (FunExpr) cl.newInstance();
            } catch (ClassNotFoundException e) {
              log.finer(e.toString());
            } catch (Exception e) {
              log.log(Level.FINER, e.toString(), e);
              
              throw error(e.toString());
            }

            if (fun == null) {
              throw error(L.l("'{0}' is an unknown function.", name));
            }
          }

          scanToken();
          token = peekToken();
          while (token != null && token != Token.RPAREN) {
            ExprKraken arg = parseExpr();

            fun.addArg(arg);

            token = peekToken();

            if (token == Token.COMMA) {
              scanToken();
              token = peekToken();
            }
          }

          scanToken();

          return fun;
        }
        else {
          return new IdExprBuilder(name);
        }
      }

    case STRING:
      return new LiteralExpr(_lexeme);

    case DOUBLE:
      return new LiteralExpr(Double.parseDouble(_lexeme));
      
    case INTEGER:
      return new LiteralExpr(Long.parseLong(_lexeme));
      
    case LONG:
      return new LiteralExpr(Long.parseLong(_lexeme));

    case NULL:
      return new NullExpr();

    case TRUE:
      return new LiteralExpr(true);

    case FALSE:
      return new LiteralExpr(false);

    case QUESTION_MARK:
      ParamExpr param = new ParamExpr(_params.size());
      _params.add(param);
      return param;

    default:
      throw error("unexpected term {0}", token);
    }
  }
931476
public final void mNUM_INT() throws RecognitionException {
		try {
			int _type = NUM_INT;
			int _channel = DEFAULT_TOKEN_CHANNEL;
			CommonToken f1=null;
			CommonToken f2=null;
			CommonToken f3=null;
			CommonToken f4=null;

			boolean isDecimal=false; Token t=null;
			// hql.g:804:2: ( '.' ( ( '0' .. '9' )+ ( EXPONENT )? (f1= FLOAT_SUFFIX )? )? | ( '0' ( ( 'x' ) ( HEX_DIGIT )+ | ( '0' .. '7' )+ )? | ( '1' .. '9' ) ( '0' .. '9' )* ) ( ( 'l' ) |{...}? ( '.' ( '0' .. '9' )* ( EXPONENT )? (f2= FLOAT_SUFFIX )? | EXPONENT (f3= FLOAT_SUFFIX )? |f4= FLOAT_SUFFIX ) )? )
			int alt20=2;
			int LA20_0 = input.LA(1);
			if ( (LA20_0=='.') ) {
				alt20=1;
			}
			else if ( ((LA20_0 >= '0' && LA20_0 <= '9')) ) {
				alt20=2;
			}

			else {
				if (state.backtracking>0) {state.failed=true; return;}
				NoViableAltException nvae =
					new NoViableAltException("", 20, 0, input);
				throw nvae;
			}

			switch (alt20) {
				case 1 :
					// hql.g:804:6: '.' ( ( '0' .. '9' )+ ( EXPONENT )? (f1= FLOAT_SUFFIX )? )?
					{
					match('.'); if (state.failed) return;
					if ( state.backtracking==0 ) {_type = DOT;}
					// hql.g:805:4: ( ( '0' .. '9' )+ ( EXPONENT )? (f1= FLOAT_SUFFIX )? )?
					int alt8=2;
					int LA8_0 = input.LA(1);
					if ( ((LA8_0 >= '0' && LA8_0 <= '9')) ) {
						alt8=1;
					}
					switch (alt8) {
						case 1 :
							// hql.g:805:6: ( '0' .. '9' )+ ( EXPONENT )? (f1= FLOAT_SUFFIX )?
							{
							// hql.g:805:6: ( '0' .. '9' )+
							int cnt5=0;
							loop5:
							while (true) {
								int alt5=2;
								int LA5_0 = input.LA(1);
								if ( ((LA5_0 >= '0' && LA5_0 <= '9')) ) {
									alt5=1;
								}

								switch (alt5) {
								case 1 :
									// hql.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 ( cnt5 >= 1 ) break loop5;
									if (state.backtracking>0) {state.failed=true; return;}
									EarlyExitException eee = new EarlyExitException(5, input);
									throw eee;
								}
								cnt5++;
							}

							// hql.g:805:18: ( EXPONENT )?
							int alt6=2;
							int LA6_0 = input.LA(1);
							if ( (LA6_0=='e') ) {
								alt6=1;
							}
							switch (alt6) {
								case 1 :
									// hql.g:805:19: EXPONENT
									{
									mEXPONENT(); if (state.failed) return;

									}
									break;

							}

							// hql.g:805:30: (f1= FLOAT_SUFFIX )?
							int alt7=2;
							int LA7_0 = input.LA(1);
							if ( (LA7_0=='d'||LA7_0=='f'||LA7_0=='m') ) {
								alt7=1;
							}
							switch (alt7) {
								case 1 :
									// hql.g:805:31: f1= FLOAT_SUFFIX
									{
									int f1Start986 = getCharIndex();
									int f1StartLine986 = getLine();
									int f1StartCharPos986 = getCharPositionInLine();
									mFLOAT_SUFFIX(); if (state.failed) return;
									f1 = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, f1Start986, getCharIndex()-1);
									f1.setLine(f1StartLine986);
									f1.setCharPositionInLine(f1StartCharPos986);

									if ( state.backtracking==0 ) {t=f1;}
									}
									break;

							}

							if ( state.backtracking==0 ) {
												if (t != null && t.getText().toUpperCase().indexOf('F')>=0)
												{
													_type = NUM_FLOAT;
												}
												else if (t != null && t.getText().toUpperCase().indexOf('M')>=0)
												{
													_type = NUM_DECIMAL;
												}
												else
												{
													_type = NUM_DOUBLE; // assume double
												}
											}
							}
							break;

					}

					}
					break;
				case 2 :
					// hql.g:821:4: ( '0' ( ( 'x' ) ( HEX_DIGIT )+ | ( '0' .. '7' )+ )? | ( '1' .. '9' ) ( '0' .. '9' )* ) ( ( 'l' ) |{...}? ( '.' ( '0' .. '9' )* ( EXPONENT )? (f2= FLOAT_SUFFIX )? | EXPONENT (f3= FLOAT_SUFFIX )? |f4= FLOAT_SUFFIX ) )?
					{
					// hql.g:821:4: ( '0' ( ( 'x' ) ( HEX_DIGIT )+ | ( '0' .. '7' )+ )? | ( '1' .. '9' ) ( '0' .. '9' )* )
					int alt13=2;
					int LA13_0 = input.LA(1);
					if ( (LA13_0=='0') ) {
						alt13=1;
					}
					else if ( ((LA13_0 >= '1' && LA13_0 <= '9')) ) {
						alt13=2;
					}

					else {
						if (state.backtracking>0) {state.failed=true; return;}
						NoViableAltException nvae =
							new NoViableAltException("", 13, 0, input);
						throw nvae;
					}

					switch (alt13) {
						case 1 :
							// hql.g:821:6: '0' ( ( 'x' ) ( HEX_DIGIT )+ | ( '0' .. '7' )+ )?
							{
							match('0'); if (state.failed) return;
							if ( state.backtracking==0 ) {isDecimal = true;}
							// hql.g:822:4: ( ( 'x' ) ( HEX_DIGIT )+ | ( '0' .. '7' )+ )?
							int alt11=3;
							int LA11_0 = input.LA(1);
							if ( (LA11_0=='x') ) {
								alt11=1;
							}
							else if ( ((LA11_0 >= '0' && LA11_0 <= '7')) ) {
								alt11=2;
							}
							switch (alt11) {
								case 1 :
									// hql.g:822:6: ( 'x' ) ( HEX_DIGIT )+
									{
									// hql.g:822:6: ( 'x' )
									// hql.g:822:7: 'x'
									{
									match('x'); if (state.failed) return;
									}

									// hql.g:823:5: ( HEX_DIGIT )+
									int cnt9=0;
									loop9:
									while (true) {
										int alt9=2;
										switch ( input.LA(1) ) {
										case 'e':
											{
											int LA9_2 = input.LA(2);
											if ( ((LA9_2 >= '0' && LA9_2 <= '9')) ) {
												int LA9_5 = input.LA(3);
												if ( (!(((isDecimal)))) ) {
													alt9=1;
												}

											}
											else {
												alt9=1;
											}

											}
											break;
										case 'd':
										case 'f':
											{
											int LA9_3 = input.LA(2);
											if ( (!(((isDecimal)))) ) {
												alt9=1;
											}

											}
											break;
										case '0':
										case '1':
										case '2':
										case '3':
										case '4':
										case '5':
										case '6':
										case '7':
										case '8':
										case '9':
										case 'a':
										case 'b':
										case 'c':
											{
											alt9=1;
											}
											break;
										}
										switch (alt9) {
										case 1 :
											// hql.g:
											{
											if ( (input.LA(1) >= '0' && input.LA(1) <= '9')||(input.LA(1) >= 'a' && 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;

										default :
											if ( cnt9 >= 1 ) break loop9;
											if (state.backtracking>0) {state.failed=true; return;}
											EarlyExitException eee = new EarlyExitException(9, input);
											throw eee;
										}
										cnt9++;
									}

									}
									break;
								case 2 :
									// hql.g:832:6: ( '0' .. '7' )+
									{
									// hql.g:832:6: ( '0' .. '7' )+
									int cnt10=0;
									loop10:
									while (true) {
										int alt10=2;
										int LA10_0 = input.LA(1);
										if ( ((LA10_0 >= '0' && LA10_0 <= '7')) ) {
											alt10=1;
										}

										switch (alt10) {
										case 1 :
											// hql.g:
											{
											if ( (input.LA(1) >= '0' && input.LA(1) <= '7') ) {
												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++;
									}

									}
									break;

							}

							}
							break;
						case 2 :
							// hql.g:834:5: ( '1' .. '9' ) ( '0' .. '9' )*
							{
							if ( (input.LA(1) >= '1' && 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;
							}
							// hql.g:834:16: ( '0' .. '9' )*
							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 :
									// hql.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 loop12;
								}
							}

							if ( state.backtracking==0 ) {isDecimal=true;}
							}
							break;

					}

					// hql.g:836:3: ( ( 'l' ) |{...}? ( '.' ( '0' .. '9' )* ( EXPONENT )? (f2= FLOAT_SUFFIX )? | EXPONENT (f3= FLOAT_SUFFIX )? |f4= FLOAT_SUFFIX ) )?
					int alt19=3;
					int LA19_0 = input.LA(1);
					if ( (LA19_0=='l') ) {
						alt19=1;
					}
					else if ( (LA19_0=='.'||(LA19_0 >= 'd' && LA19_0 <= 'f')||LA19_0=='m') ) {
						alt19=2;
					}
					switch (alt19) {
						case 1 :
							// hql.g:836:5: ( 'l' )
							{
							// hql.g:836:5: ( 'l' )
							// hql.g:836:6: 'l'
							{
							match('l'); if (state.failed) return;
							}

							if ( state.backtracking==0 ) { _type = NUM_LONG; }
							}
							break;
						case 2 :
							// hql.g:839:5: {...}? ( '.' ( '0' .. '9' )* ( EXPONENT )? (f2= FLOAT_SUFFIX )? | EXPONENT (f3= FLOAT_SUFFIX )? |f4= FLOAT_SUFFIX )
							{
							if ( !((isDecimal)) ) {
								if (state.backtracking>0) {state.failed=true; return;}
								throw new FailedPredicateException(input, "NUM_INT", "isDecimal");
							}
							// hql.g:840:4: ( '.' ( '0' .. '9' )* ( EXPONENT )? (f2= FLOAT_SUFFIX )? | EXPONENT (f3= FLOAT_SUFFIX )? |f4= FLOAT_SUFFIX )
							int alt18=3;
							switch ( input.LA(1) ) {
							case '.':
								{
								alt18=1;
								}
								break;
							case 'e':
								{
								alt18=2;
								}
								break;
							case 'd':
							case 'f':
							case 'm':
								{
								alt18=3;
								}
								break;
							default:
								if (state.backtracking>0) {state.failed=true; return;}
								NoViableAltException nvae =
									new NoViableAltException("", 18, 0, input);
								throw nvae;
							}
							switch (alt18) {
								case 1 :
									// hql.g:840:8: '.' ( '0' .. '9' )* ( EXPONENT )? (f2= FLOAT_SUFFIX )?
									{
									match('.'); if (state.failed) return;
									// hql.g:840:12: ( '0' .. '9' )*
									loop14:
									while (true) {
										int alt14=2;
										int LA14_0 = input.LA(1);
										if ( ((LA14_0 >= '0' && LA14_0 <= '9')) ) {
											alt14=1;
										}

										switch (alt14) {
										case 1 :
											// hql.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 loop14;
										}
									}

									// hql.g:840:24: ( EXPONENT )?
									int alt15=2;
									int LA15_0 = input.LA(1);
									if ( (LA15_0=='e') ) {
										alt15=1;
									}
									switch (alt15) {
										case 1 :
											// hql.g:840:25: EXPONENT
											{
											mEXPONENT(); if (state.failed) return;

											}
											break;

									}

									// hql.g:840:36: (f2= FLOAT_SUFFIX )?
									int alt16=2;
									int LA16_0 = input.LA(1);
									if ( (LA16_0=='d'||LA16_0=='f'||LA16_0=='m') ) {
										alt16=1;
									}
									switch (alt16) {
										case 1 :
											// hql.g:840:37: f2= FLOAT_SUFFIX
											{
											int f2Start1188 = getCharIndex();
											int f2StartLine1188 = getLine();
											int f2StartCharPos1188 = getCharPositionInLine();
											mFLOAT_SUFFIX(); if (state.failed) return;
											f2 = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, f2Start1188, getCharIndex()-1);
											f2.setLine(f2StartLine1188);
											f2.setCharPositionInLine(f2StartCharPos1188);

											if ( state.backtracking==0 ) {t=f2;}
											}
											break;

									}

									}
									break;
								case 2 :
									// hql.g:841:8: EXPONENT (f3= FLOAT_SUFFIX )?
									{
									mEXPONENT(); if (state.failed) return;

									// hql.g:841:17: (f3= FLOAT_SUFFIX )?
									int alt17=2;
									int LA17_0 = input.LA(1);
									if ( (LA17_0=='d'||LA17_0=='f'||LA17_0=='m') ) {
										alt17=1;
									}
									switch (alt17) {
										case 1 :
											// hql.g:841:18: f3= FLOAT_SUFFIX
											{
											int f3Start1206 = getCharIndex();
											int f3StartLine1206 = getLine();
											int f3StartCharPos1206 = getCharPositionInLine();
											mFLOAT_SUFFIX(); if (state.failed) return;
											f3 = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, f3Start1206, getCharIndex()-1);
											f3.setLine(f3StartLine1206);
											f3.setCharPositionInLine(f3StartCharPos1206);

											if ( state.backtracking==0 ) {t=f3;}
											}
											break;

									}

									}
									break;
								case 3 :
									// hql.g:842:8: f4= FLOAT_SUFFIX
									{
									int f4Start1221 = getCharIndex();
									int f4StartLine1221 = getLine();
									int f4StartCharPos1221 = getCharPositionInLine();
									mFLOAT_SUFFIX(); if (state.failed) return;
									f4 = new CommonToken(input, Token.INVALID_TOKEN_TYPE, Token.DEFAULT_CHANNEL, f4Start1221, getCharIndex()-1);
									f4.setLine(f4StartLine1221);
									f4.setCharPositionInLine(f4StartCharPos1221);

									if ( state.backtracking==0 ) {t=f4;}
									}
									break;

							}

							if ( state.backtracking==0 ) {
											if (t != null && t.getText().toUpperCase().indexOf('F') >= 0)
											{
												_type = NUM_FLOAT;
											}
											else if (t != null && t.getText().toUpperCase().indexOf('M')>=0)
											{
												_type = NUM_DECIMAL;
											}
											else
											{
												_type = NUM_DOUBLE; // assume double
											}
										}
							}
							break;

					}

					}
					break;

			}
			state.type = _type;
			state.channel = _channel;
		}
		finally {
			// do for sure before leaving
		}
	}
585790
@Override
	public void mTokens() throws RecognitionException {
		// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:8: ( WS | FLOAT | HEX | DECIMAL | STRING | TIME_INTERVAL | BOOL | NULL | AT | PLUS_ASSIGN | MINUS_ASSIGN | MULT_ASSIGN | DIV_ASSIGN | AND_ASSIGN | OR_ASSIGN | XOR_ASSIGN | MOD_ASSIGN | UNIFY | DECR | INCR | ARROW | SEMICOLON | COLON | EQUALS | NOT_EQUALS | GREATER_EQUALS | LESS_EQUALS | GREATER | LESS | EQUALS_ASSIGN | LEFT_PAREN | RIGHT_PAREN | LEFT_SQUARE | RIGHT_SQUARE | LEFT_CURLY | RIGHT_CURLY | COMMA | DOT | NULL_SAFE_DOT | DOUBLE_AMPER | DOUBLE_PIPE | QUESTION | NEGATION | TILDE | PIPE | AMPER | XOR | MOD | STAR | MINUS | PLUS | HASH | C_STYLE_SINGLE_LINE_COMMENT | MULTI_LINE_COMMENT | ID | DIV | MISC )
		int alt63=57;
		alt63 = dfa63.predict(input);
		switch (alt63) {
			case 1 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:10: WS
				{
				mWS(); if (state.failed) return;

				}
				break;
			case 2 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:13: FLOAT
				{
				mFLOAT(); if (state.failed) return;

				}
				break;
			case 3 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:19: HEX
				{
				mHEX(); if (state.failed) return;

				}
				break;
			case 4 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:23: DECIMAL
				{
				mDECIMAL(); if (state.failed) return;

				}
				break;
			case 5 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:31: STRING
				{
				mSTRING(); if (state.failed) return;

				}
				break;
			case 6 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:38: TIME_INTERVAL
				{
				mTIME_INTERVAL(); if (state.failed) return;

				}
				break;
			case 7 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:52: BOOL
				{
				mBOOL(); if (state.failed) return;

				}
				break;
			case 8 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:57: NULL
				{
				mNULL(); if (state.failed) return;

				}
				break;
			case 9 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:62: AT
				{
				mAT(); if (state.failed) return;

				}
				break;
			case 10 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:65: PLUS_ASSIGN
				{
				mPLUS_ASSIGN(); if (state.failed) return;

				}
				break;
			case 11 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:77: MINUS_ASSIGN
				{
				mMINUS_ASSIGN(); if (state.failed) return;

				}
				break;
			case 12 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:90: MULT_ASSIGN
				{
				mMULT_ASSIGN(); if (state.failed) return;

				}
				break;
			case 13 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:102: DIV_ASSIGN
				{
				mDIV_ASSIGN(); if (state.failed) return;

				}
				break;
			case 14 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:113: AND_ASSIGN
				{
				mAND_ASSIGN(); if (state.failed) return;

				}
				break;
			case 15 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:124: OR_ASSIGN
				{
				mOR_ASSIGN(); if (state.failed) return;

				}
				break;
			case 16 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:134: XOR_ASSIGN
				{
				mXOR_ASSIGN(); if (state.failed) return;

				}
				break;
			case 17 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:145: MOD_ASSIGN
				{
				mMOD_ASSIGN(); if (state.failed) return;

				}
				break;
			case 18 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:156: UNIFY
				{
				mUNIFY(); if (state.failed) return;

				}
				break;
			case 19 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:162: DECR
				{
				mDECR(); if (state.failed) return;

				}
				break;
			case 20 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:167: INCR
				{
				mINCR(); if (state.failed) return;

				}
				break;
			case 21 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:172: ARROW
				{
				mARROW(); if (state.failed) return;

				}
				break;
			case 22 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:178: SEMICOLON
				{
				mSEMICOLON(); if (state.failed) return;

				}
				break;
			case 23 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:188: COLON
				{
				mCOLON(); if (state.failed) return;

				}
				break;
			case 24 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:194: EQUALS
				{
				mEQUALS(); if (state.failed) return;

				}
				break;
			case 25 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:201: NOT_EQUALS
				{
				mNOT_EQUALS(); if (state.failed) return;

				}
				break;
			case 26 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:212: GREATER_EQUALS
				{
				mGREATER_EQUALS(); if (state.failed) return;

				}
				break;
			case 27 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:227: LESS_EQUALS
				{
				mLESS_EQUALS(); if (state.failed) return;

				}
				break;
			case 28 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:239: GREATER
				{
				mGREATER(); if (state.failed) return;

				}
				break;
			case 29 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:247: LESS
				{
				mLESS(); if (state.failed) return;

				}
				break;
			case 30 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:252: EQUALS_ASSIGN
				{
				mEQUALS_ASSIGN(); if (state.failed) return;

				}
				break;
			case 31 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:266: LEFT_PAREN
				{
				mLEFT_PAREN(); if (state.failed) return;

				}
				break;
			case 32 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:277: RIGHT_PAREN
				{
				mRIGHT_PAREN(); if (state.failed) return;

				}
				break;
			case 33 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:289: LEFT_SQUARE
				{
				mLEFT_SQUARE(); if (state.failed) return;

				}
				break;
			case 34 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:301: RIGHT_SQUARE
				{
				mRIGHT_SQUARE(); if (state.failed) return;

				}
				break;
			case 35 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:314: LEFT_CURLY
				{
				mLEFT_CURLY(); if (state.failed) return;

				}
				break;
			case 36 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:325: RIGHT_CURLY
				{
				mRIGHT_CURLY(); if (state.failed) return;

				}
				break;
			case 37 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:337: COMMA
				{
				mCOMMA(); if (state.failed) return;

				}
				break;
			case 38 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:343: DOT
				{
				mDOT(); if (state.failed) return;

				}
				break;
			case 39 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:347: NULL_SAFE_DOT
				{
				mNULL_SAFE_DOT(); if (state.failed) return;

				}
				break;
			case 40 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:361: DOUBLE_AMPER
				{
				mDOUBLE_AMPER(); if (state.failed) return;

				}
				break;
			case 41 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:374: DOUBLE_PIPE
				{
				mDOUBLE_PIPE(); if (state.failed) return;

				}
				break;
			case 42 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:386: QUESTION
				{
				mQUESTION(); if (state.failed) return;

				}
				break;
			case 43 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:395: NEGATION
				{
				mNEGATION(); if (state.failed) return;

				}
				break;
			case 44 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:404: TILDE
				{
				mTILDE(); if (state.failed) return;

				}
				break;
			case 45 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:410: PIPE
				{
				mPIPE(); if (state.failed) return;

				}
				break;
			case 46 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:415: AMPER
				{
				mAMPER(); if (state.failed) return;

				}
				break;
			case 47 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:421: XOR
				{
				mXOR(); if (state.failed) return;

				}
				break;
			case 48 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:425: MOD
				{
				mMOD(); if (state.failed) return;

				}
				break;
			case 49 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:429: STAR
				{
				mSTAR(); if (state.failed) return;

				}
				break;
			case 50 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:434: MINUS
				{
				mMINUS(); if (state.failed) return;

				}
				break;
			case 51 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:440: PLUS
				{
				mPLUS(); if (state.failed) return;

				}
				break;
			case 52 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:445: HASH
				{
				mHASH(); if (state.failed) return;

				}
				break;
			case 53 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:450: C_STYLE_SINGLE_LINE_COMMENT
				{
				mC_STYLE_SINGLE_LINE_COMMENT(); if (state.failed) return;

				}
				break;
			case 54 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:478: MULTI_LINE_COMMENT
				{
				mMULTI_LINE_COMMENT(); if (state.failed) return;

				}
				break;
			case 55 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:497: ID
				{
				mID(); if (state.failed) return;

				}
				break;
			case 56 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:500: DIV
				{
				mDIV(); if (state.failed) return;

				}
				break;
			case 57 :
				// src/main/resources/org/drools/compiler/lang/DRL5Lexer.g:1:504: MISC
				{
				mMISC(); if (state.failed) return;

				}
				break;

		}
	}
289706
public final AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalSARL.g:8843:2: ( (kw= '*' | kw= '/' | kw= '%' ) )
            // InternalSARL.g:8844:2: (kw= '*' | kw= '/' | kw= '%' )
            {
            // InternalSARL.g:8844:2: (kw= '*' | kw= '/' | kw= '%' )
            int alt236=3;
            switch ( input.LA(1) ) {
            case 59:
                {
                alt236=1;
                }
                break;
            case 70:
                {
                alt236=2;
                }
                break;
            case 71:
                {
                alt236=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 236, 0, input);

                throw nvae;
            }

            switch (alt236) {
                case 1 :
                    // InternalSARL.g:8845:3: kw= '*'
                    {
                    kw=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0());
                      		
                    }

                    }
                    break;
                case 2 :
                    // InternalSARL.g:8851:3: kw= '/'
                    {
                    kw=(Token)match(input,70,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_1());
                      		
                    }

                    }
                    break;
                case 3 :
                    // InternalSARL.g:8857:3: kw= '%'
                    {
                    kw=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_2());
                      		
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
681918
public void mTokens() throws RecognitionException {
        // /home/victor/srec/core/src/main/antlr/srec.g:1:8: ( T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | BOOLEAN | NULL | ID | NUMBER | STRING | WS | NEWLINE | COMMENT )
        int alt12=15;
        alt12 = dfa12.predict(input);
        switch (alt12) {
            case 1 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:10: T__28
                {
                mT__28(); 

                }
                break;
            case 2 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:16: T__29
                {
                mT__29(); 

                }
                break;
            case 3 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:22: T__30
                {
                mT__30(); 

                }
                break;
            case 4 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:28: T__31
                {
                mT__31(); 

                }
                break;
            case 5 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:34: T__32
                {
                mT__32(); 

                }
                break;
            case 6 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:40: T__33
                {
                mT__33(); 

                }
                break;
            case 7 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:46: T__34
                {
                mT__34(); 

                }
                break;
            case 8 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:52: BOOLEAN
                {
                mBOOLEAN(); 

                }
                break;
            case 9 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:60: NULL
                {
                mNULL(); 

                }
                break;
            case 10 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:65: ID
                {
                mID(); 

                }
                break;
            case 11 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:68: NUMBER
                {
                mNUMBER(); 

                }
                break;
            case 12 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:75: STRING
                {
                mSTRING(); 

                }
                break;
            case 13 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:82: WS
                {
                mWS(); 

                }
                break;
            case 14 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:85: NEWLINE
                {
                mNEWLINE(); 

                }
                break;
            case 15 :
                // /home/victor/srec/core/src/main/antlr/srec.g:1:93: COMMENT
                {
                mCOMMENT(); 

                }
                break;

        }

    }
962193
@SuppressWarnings("squid:S1698")
    private Expression literalAtom() {
        if (tokenizer.current().isSymbol("+") && tokenizer.next().isNumber()) {
            // Parse numbers with a leading + sign like +2.02 by simply ignoring the +
            tokenizer.consume();
        }
        if (tokenizer.current().isNumber()) {
            double value = Double.parseDouble(tokenizer.consume().getContents());
            if (tokenizer.current().is(Token.TokenType.ID)) {
                String quantifier = tokenizer.current().getContents().intern();
                if ("n" == quantifier) {
                    value /= 1000000000d;
                    tokenizer.consume();
                } else if ("u" == quantifier) {
                    value /= 1000000d;
                    tokenizer.consume();
                } else if ("m" == quantifier) {
                    value /= 1000d;
                    tokenizer.consume();
                } else if ("K" == quantifier || "k" == quantifier) {
                    value *= 1000d;
                    tokenizer.consume();
                } else if ("M" == quantifier) {
                    value *= 1000000d;
                    tokenizer.consume();
                } else if ("G" == quantifier) {
                    value *= 1000000000d;
                    tokenizer.consume();
                } else {
                    Token token = tokenizer.consume();
                    errors.add(ParseError.error(token,
                                                String.format("Unexpected token: '%s'. Expected a valid quantifier.",
                                                              token.getSource())));
                }
            }
            return new Constant(value);
        }
        Token token = tokenizer.consume();
        errors.add(ParseError.error(token,
                                    String.format("Unexpected token: '%s'. Expected an expression.",
                                                  token.getSource())));
        return Constant.EMPTY;
    }
75408
public final void mNUMBER() throws RecognitionException {
        try {
            int _type = NUMBER;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /home/victor/srec/core/src/main/antlr/srec.g:138:2: ( ( DIGIT )+ )
            // /home/victor/srec/core/src/main/antlr/srec.g:138:4: ( DIGIT )+
            {
            // /home/victor/srec/core/src/main/antlr/srec.g:138:4: ( DIGIT )+
            int cnt3=0;
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( ((LA3_0>='0' && LA3_0<='9')) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // /home/victor/srec/core/src/main/antlr/srec.g:138:4: DIGIT
            	    {
            	    mDIGIT(); 

            	    }
            	    break;

            	default :
            	    if ( cnt3 >= 1 ) break loop3;
                        EarlyExitException eee =
                            new EarlyExitException(3, input);
                        throw eee;
                }
                cnt3++;
            } while (true);


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
373430
public final void integerLiteral() throws RecognitionException {
		int integerLiteral_StartIndex = input.index();

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 62) ) { return; }

			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:596:5: ( HexLiteral | OctalLiteral | DecimalLiteral )
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:
			{
			if ( input.LA(1)==DecimalLiteral||input.LA(1)==HexLiteral||input.LA(1)==OctalLiteral ) {
				input.consume();
				state.errorRecovery=false;
				state.failed=false;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return;}
				MismatchedSetException mse = new MismatchedSetException(null,input);
				throw mse;
			}
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 62, integerLiteral_StartIndex); }

		}
	}
204919
public final void mJavaLetter() throws RecognitionException {
		try {
			// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1379:2: ( ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) |{...}?~ ( '\\u0000' .. '\\u007F' | '\\uD800' .. '\\uDBFF' ) |{...}? ( '\\uD800' .. '\\uDBFF' ) ( '\\uDC00' .. '\\uDFFF' ) )
			int alt27=3;
			int LA27_0 = input.LA(1);
			if ( (LA27_0=='$'||(LA27_0 >= 'A' && LA27_0 <= 'Z')||LA27_0=='_'||(LA27_0 >= 'a' && LA27_0 <= 'z')) ) {
				alt27=1;
			}
			else if ( ((LA27_0 >= '\u0080' && LA27_0 <= '\uD7FF')||(LA27_0 >= '\uDC00' && LA27_0 <= '\uFFFF')) ) {
				alt27=2;
			}
			else if ( ((LA27_0 >= '\uD800' && LA27_0 <= '\uDBFF')) ) {
				alt27=3;
			}

			else {
				NoViableAltException nvae =
					new NoViableAltException("", 27, 0, input);
				throw nvae;
			}

			switch (alt27) {
				case 1 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1379:4: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' )
					{
					if ( input.LA(1)=='$'||(input.LA(1) >= 'A' && input.LA(1) <= 'Z')||input.LA(1)=='_'||(input.LA(1) >= 'a' && input.LA(1) <= 'z') ) {
						input.consume();
					}
					else {
						MismatchedSetException mse = new MismatchedSetException(null,input);
						recover(mse);
						throw mse;
					}
					}
					break;
				case 2 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1380:6: {...}?~ ( '\\u0000' .. '\\u007F' | '\\uD800' .. '\\uDBFF' )
					{
					if ( !((Character.isJavaIdentifierStart(input.LA(1)))) ) {
						throw new FailedPredicateException(input, "JavaLetter", "Character.isJavaIdentifierStart(input.LA(1))");
					}
					if ( (input.LA(1) >= '\u0080' && input.LA(1) <= '\uD7FF')||(input.LA(1) >= '\uDC00' && input.LA(1) <= '\uFFFF') ) {
						input.consume();
					}
					else {
						MismatchedSetException mse = new MismatchedSetException(null,input);
						recover(mse);
						throw mse;
					}
					}
					break;
				case 3 :
					// src/main/resources/org/drools/compiler/semantics/java/parser/Java.g:1382:9: {...}? ( '\\uD800' .. '\\uDBFF' ) ( '\\uDC00' .. '\\uDFFF' )
					{
					if ( !((Character.isJavaIdentifierStart(Character.toCodePoint((char)input.LA(-1), (char)input.LA(1))))) ) {
						throw new FailedPredicateException(input, "JavaLetter", "Character.isJavaIdentifierStart(Character.toCodePoint((char)input.LA(-1), (char)input.LA(1)))");
					}
					if ( (input.LA(1) >= '\uD800' && input.LA(1) <= '\uDBFF') ) {
						input.consume();
					}
					else {
						MismatchedSetException mse = new MismatchedSetException(null,input);
						recover(mse);
						throw mse;
					}
					if ( (input.LA(1) >= '\uDC00' && input.LA(1) <= '\uDFFF') ) {
						input.consume();
					}
					else {
						MismatchedSetException mse = new MismatchedSetException(null,input);
						recover(mse);
						throw mse;
					}
					}
					break;

			}
		}
		finally {
			// do for sure before leaving
		}
	}
823550
public final EObject ruleXTypeLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        AntlrDatatypeRuleToken lv_arrayDimensions_4_0 = null;



        	enterRule();

        try {
            // InternalXbaseWithAnnotations.g:5336:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
            // InternalXbaseWithAnnotations.g:5337:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
            {
            // InternalXbaseWithAnnotations.g:5337:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
            // InternalXbaseWithAnnotations.g:5338:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
            {
            // InternalXbaseWithAnnotations.g:5338:3: ()
            // InternalXbaseWithAnnotations.g:5339:4: 
            {
            if ( state.backtracking==0 ) {

              				current = forceCreateModelElement(
              					grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
              					current);
              			
            }

            }

            otherlv_1=(Token)match(input,79,FOLLOW_48); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
              		
            }
            otherlv_2=(Token)match(input,14,FOLLOW_3); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
              		
            }
            // InternalXbaseWithAnnotations.g:5353:3: ( ( ruleQualifiedName ) )
            // InternalXbaseWithAnnotations.g:5354:4: ( ruleQualifiedName )
            {
            // InternalXbaseWithAnnotations.g:5354:4: ( ruleQualifiedName )
            // InternalXbaseWithAnnotations.g:5355:5: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              					if (current==null) {
              						current = createModelElement(grammarAccess.getXTypeLiteralRule());
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0());
              				
            }
            pushFollow(FOLLOW_68);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					afterParserOrEnumRuleCall();
              				
            }

            }


            }

            // InternalXbaseWithAnnotations.g:5369:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
            loop94:
            do {
                int alt94=2;
                int LA94_0 = input.LA(1);

                if ( (LA94_0==19) ) {
                    alt94=1;
                }


                switch (alt94) {
            	case 1 :
            	    // InternalXbaseWithAnnotations.g:5370:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
            	    {
            	    // InternalXbaseWithAnnotations.g:5370:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
            	    // InternalXbaseWithAnnotations.g:5371:5: lv_arrayDimensions_4_0= ruleArrayBrackets
            	    {
            	    if ( state.backtracking==0 ) {

            	      					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0());
            	      				
            	    }
            	    pushFollow(FOLLOW_68);
            	    lv_arrayDimensions_4_0=ruleArrayBrackets();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      					if (current==null) {
            	      						current = createModelElementForParent(grammarAccess.getXTypeLiteralRule());
            	      					}
            	      					add(
            	      						current,
            	      						"arrayDimensions",
            	      						lv_arrayDimensions_4_0,
            	      						"org.eclipse.xtext.xbase.Xtype.ArrayBrackets");
            	      					afterParserOrEnumRuleCall();
            	      				
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop94;
                }
            } while (true);

            otherlv_5=(Token)match(input,16,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
              		
            }

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
36615
public final void ruleXMultiplicativeExpression() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:471:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
            // InternalXbase.g:472:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
            {
            // InternalXbase.g:472:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
            // InternalXbase.g:473:3: ( rule__XMultiplicativeExpression__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
            }
            // InternalXbase.g:474:3: ( rule__XMultiplicativeExpression__Group__0 )
            // InternalXbase.g:474:4: rule__XMultiplicativeExpression__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__XMultiplicativeExpression__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
365661
public final EObject ruleXTypeLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        AntlrDatatypeRuleToken lv_arrayDimensions_4_0 = null;



        	enterRule();

        try {
            // InternalXbase.g:4836:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
            // InternalXbase.g:4837:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
            {
            // InternalXbase.g:4837:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
            // InternalXbase.g:4838:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
            {
            // InternalXbase.g:4838:3: ()
            // InternalXbase.g:4839:4: 
            {
            if ( state.backtracking==0 ) {

              				current = forceCreateModelElement(
              					grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
              					current);
              			
            }

            }

            otherlv_1=(Token)match(input,78,FOLLOW_44); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
              		
            }
            otherlv_2=(Token)match(input,49,FOLLOW_61); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
              		
            }
            // InternalXbase.g:4853:3: ( ( ruleQualifiedName ) )
            // InternalXbase.g:4854:4: ( ruleQualifiedName )
            {
            // InternalXbase.g:4854:4: ( ruleQualifiedName )
            // InternalXbase.g:4855:5: ruleQualifiedName
            {
            if ( state.backtracking==0 ) {

              					if (current==null) {
              						current = createModelElement(grammarAccess.getXTypeLiteralRule());
              					}
              				
            }
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0());
              				
            }
            pushFollow(FOLLOW_66);
            ruleQualifiedName();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					afterParserOrEnumRuleCall();
              				
            }

            }


            }

            // InternalXbase.g:4869:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
            loop82:
            do {
                int alt82=2;
                int LA82_0 = input.LA(1);

                if ( (LA82_0==54) ) {
                    alt82=1;
                }


                switch (alt82) {
            	case 1 :
            	    // InternalXbase.g:4870:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
            	    {
            	    // InternalXbase.g:4870:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
            	    // InternalXbase.g:4871:5: lv_arrayDimensions_4_0= ruleArrayBrackets
            	    {
            	    if ( state.backtracking==0 ) {

            	      					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0());
            	      				
            	    }
            	    pushFollow(FOLLOW_66);
            	    lv_arrayDimensions_4_0=ruleArrayBrackets();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      					if (current==null) {
            	      						current = createModelElementForParent(grammarAccess.getXTypeLiteralRule());
            	      					}
            	      					add(
            	      						current,
            	      						"arrayDimensions",
            	      						lv_arrayDimensions_4_0,
            	      						"org.eclipse.xtext.xbase.Xtype.ArrayBrackets");
            	      					afterParserOrEnumRuleCall();
            	      				
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop82;
                }
            } while (true);

            otherlv_5=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
              		
            }

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
50630
public final void arguments() throws RecognitionException {
		Token LEFT_PAREN27=null;
		Token RIGHT_PAREN28=null;

		try {
			// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:673:5: ( LEFT_PAREN ( expressionList )? RIGHT_PAREN )
			// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:673:7: LEFT_PAREN ( expressionList )? RIGHT_PAREN
			{
			LEFT_PAREN27=(Token)match(input,LEFT_PAREN,FOLLOW_LEFT_PAREN_in_arguments4069); if (state.failed) return;
			if ( state.backtracking==0 ) { helper.emit(LEFT_PAREN27, DroolsEditorType.SYMBOL); }
			// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:674:9: ( expressionList )?
			int alt87=2;
			int LA87_0 = input.LA(1);
			if ( (LA87_0==BOOL||(LA87_0 >= DECIMAL && LA87_0 <= DECR)||LA87_0==FLOAT||LA87_0==HEX||(LA87_0 >= ID && LA87_0 <= INCR)||(LA87_0 >= LEFT_PAREN && LA87_0 <= LESS)||LA87_0==MINUS||LA87_0==NEGATION||LA87_0==NULL||LA87_0==PLUS||(LA87_0 >= STAR && LA87_0 <= TIME_INTERVAL)) ) {
				alt87=1;
			}
			switch (alt87) {
				case 1 :
					// src/main/resources/org/drools/compiler/lang/DRL5Expressions.g:674:9: expressionList
					{
					pushFollow(FOLLOW_expressionList_in_arguments4081);
					expressionList();
					state._fsp--;
					if (state.failed) return;
					}
					break;

			}

			RIGHT_PAREN28=(Token)match(input,RIGHT_PAREN,FOLLOW_RIGHT_PAREN_in_arguments4092); if (state.failed) return;
			if ( state.backtracking==0 ) { helper.emit(RIGHT_PAREN28, DroolsEditorType.SYMBOL); }
			}

		}

		catch (RecognitionException re) {
		    throw re;
		}

		finally {
			// do for sure before leaving
		}
	}
1349453
public final void mEXPONENT() throws RecognitionException {
        try {
            // src/riemann/Query.g:103:10: ( ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+ )
            // src/riemann/Query.g:103:12: ( 'e' | 'E' ) ( '+' | '-' )? ( '0' .. '9' )+
            {
            if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                input.consume();

            }
            else {
                MismatchedSetException mse = new MismatchedSetException(null,input);
                recover(mse);
                throw mse;}

            // src/riemann/Query.g:103:22: ( '+' | '-' )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0=='+'||LA9_0=='-') ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // src/riemann/Query.g:
                    {
                    if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
                        input.consume();

                    }
                    else {
                        MismatchedSetException mse = new MismatchedSetException(null,input);
                        recover(mse);
                        throw mse;}


                    }
                    break;

            }

            // src/riemann/Query.g:103:33: ( '0' .. '9' )+
            int cnt10=0;
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( ((LA10_0>='0' && LA10_0<='9')) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // src/riemann/Query.g:103:34: '0' .. '9'
            	    {
            	    matchRange('0','9'); 

            	    }
            	    break;

            	default :
            	    if ( cnt10 >= 1 ) break loop10;
                        EarlyExitException eee =
                            new EarlyExitException(10, input);
                        throw eee;
                }
                cnt10++;
            } while (true);


            }

        }
        finally {
        }
    }
1028679
public final EObject ruleXNumberLiteral() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_value_1_0 = null;



        	enterRule();

        try {
            // InternalPureXbase.g:5368:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
            // InternalPureXbase.g:5369:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
            {
            // InternalPureXbase.g:5369:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
            // InternalPureXbase.g:5370:3: () ( (lv_value_1_0= ruleNumber ) )
            {
            // InternalPureXbase.g:5370:3: ()
            // InternalPureXbase.g:5371:4: 
            {
            if ( state.backtracking==0 ) {

              				current = forceCreateModelElement(
              					grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0(),
              					current);
              			
            }

            }

            // InternalPureXbase.g:5377:3: ( (lv_value_1_0= ruleNumber ) )
            // InternalPureXbase.g:5378:4: (lv_value_1_0= ruleNumber )
            {
            // InternalPureXbase.g:5378:4: (lv_value_1_0= ruleNumber )
            // InternalPureXbase.g:5379:5: lv_value_1_0= ruleNumber
            {
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0());
              				
            }
            pushFollow(FOLLOW_2);
            lv_value_1_0=ruleNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if (current==null) {
              						current = createModelElementForParent(grammarAccess.getXNumberLiteralRule());
              					}
              					set(
              						current,
              						"value",
              						lv_value_1_0,
              						"org.eclipse.xtext.xbase.Xbase.Number");
              					afterParserOrEnumRuleCall();
              				
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }