$ANTLR start "RULE_HEX"
518577
public final void mRULE_HEX() throws RecognitionException {
        try {
            int _type = RULE_HEX;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalXbase.g:16904:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
            // InternalXbase.g:16904:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
            {
            // InternalXbase.g:16904:12: ( '0x' | '0X' )
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0=='0') ) {
                int LA1_1 = input.LA(2);

                if ( (LA1_1=='x') ) {
                    alt1=1;
                }
                else if ( (LA1_1=='X') ) {
                    alt1=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 1, 1, input);

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

                throw nvae;
            }
            switch (alt1) {
                case 1 :
                    // InternalXbase.g:16904:13: '0x'
                    {
                    match("0x"); 


                    }
                    break;
                case 2 :
                    // InternalXbase.g:16904:18: '0X'
                    {
                    match("0X"); 


                    }
                    break;

            }

            // InternalXbase.g:16904:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
            int cnt2=0;
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='F')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='f')) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // InternalXbase.g:
            	    {
            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(input.LA(1)>='A' && input.LA(1)<='F')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='f') ) {
            	        input.consume();

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


            	    }
            	    break;

            	default :
            	    if ( cnt2 >= 1 ) break loop2;
                        EarlyExitException eee =
                            new EarlyExitException(2, input);
                        throw eee;
                }
                cnt2++;
            } while (true);

            // InternalXbase.g:16904:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0=='#') ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // InternalXbase.g:16904:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                    {
                    match('#'); 
                    // InternalXbase.g:16904:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                    int alt3=2;
                    int LA3_0 = input.LA(1);

                    if ( (LA3_0=='B'||LA3_0=='b') ) {
                        alt3=1;
                    }
                    else if ( (LA3_0=='L'||LA3_0=='l') ) {
                        alt3=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 3, 0, input);

                        throw nvae;
                    }
                    switch (alt3) {
                        case 1 :
                            // InternalXbase.g:16904:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                            {
                            if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                input.consume();

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

                            if ( input.LA(1)=='I'||input.LA(1)=='i' ) {
                                input.consume();

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


                            }
                            break;
                        case 2 :
                            // InternalXbase.g:16904:84: ( 'l' | 'L' )
                            {
                            if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                input.consume();

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


                            }
                            break;

                    }


                    }
                    break;

            }


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
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 ;
    }
1267348
public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ValidID_0 = null;

        AntlrDatatypeRuleToken this_ValidID_2 = null;



        	enterRule();

        try {
            // InternalPureXbase.g:5788:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
            // InternalPureXbase.g:5789:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
            {
            // InternalPureXbase.g:5789:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
            // InternalPureXbase.g:5790:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
            {
            if ( state.backtracking==0 ) {

              			newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0());
              		
            }
            pushFollow(FOLLOW_68);
            this_ValidID_0=ruleValidID();

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

              			current.merge(this_ValidID_0);
              		
            }
            if ( state.backtracking==0 ) {

              			afterParserOrEnumRuleCall();
              		
            }
            // InternalPureXbase.g:5800:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
            loop100:
            do {
                int alt100=2;
                int LA100_0 = input.LA(1);

                if ( (LA100_0==54) ) {
                    int LA100_2 = input.LA(2);

                    if ( (LA100_2==RULE_ID) ) {
                        int LA100_3 = input.LA(3);

                        if ( (synpred48_InternalPureXbase()) ) {
                            alt100=1;
                        }


                    }


                }


                switch (alt100) {
            	case 1 :
            	    // InternalPureXbase.g:5801:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
            	    {
            	    // InternalPureXbase.g:5801:4: ( ( '.' )=>kw= '.' )
            	    // InternalPureXbase.g:5802:5: ( '.' )=>kw= '.'
            	    {
            	    kw=(Token)match(input,54,FOLLOW_12); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      					current.merge(kw);
            	      					newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0());
            	      				
            	    }

            	    }

            	    if ( state.backtracking==0 ) {

            	      				newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1());
            	      			
            	    }
            	    pushFollow(FOLLOW_68);
            	    this_ValidID_2=ruleValidID();

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

            	      				current.merge(this_ValidID_2);
            	      			
            	    }
            	    if ( state.backtracking==0 ) {

            	      				afterParserOrEnumRuleCall();
            	      			
            	    }

            	    }
            	    break;

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


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
1294817
public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalPureXbase.g:1219:2: (kw= '&&' )
            // InternalPureXbase.g:1220:2: kw= '&&'
            {
            kw=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(kw);
              		newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword());
              	
            }

            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
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
		}
	}
736117
public final void mBOOLEAN() throws RecognitionException {
        try {
            int _type = BOOLEAN;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // /home/victor/srec/core/src/main/antlr/srec.g:114:2: ( 'true' | 'false' )
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0=='t') ) {
                alt1=1;
            }
            else if ( (LA1_0=='f') ) {
                alt1=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 1, 0, input);

                throw nvae;
            }
            switch (alt1) {
                case 1 :
                    // /home/victor/srec/core/src/main/antlr/srec.g:114:4: 'true'
                    {
                    match("true"); 


                    }
                    break;
                case 2 :
                    // /home/victor/srec/core/src/main/antlr/srec.g:114:13: 'false'
                    {
                    match("false"); 


                    }
                    break;

            }
            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
773357
public final void mRULE_ID() throws RecognitionException {
        try {
            int _type = RULE_ID;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalSimpleExpressions.g:800:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )* )
            // InternalSimpleExpressions.g:800:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
            {
            // InternalSimpleExpressions.g:800:11: ( '^' )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0=='^') ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // InternalSimpleExpressions.g:800:11: '^'
                    {
                    match('^'); 

                    }
                    break;

            }

            if ( (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;}

            // InternalSimpleExpressions.g:800:40: ( 'a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9' )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( ((LA2_0>='0' && LA2_0<='9')||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // InternalSimpleExpressions.g:
            	    {
            	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||(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;

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


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
607239
public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalPureXbase.g:1112:2: (kw= '||' )
            // InternalPureXbase.g:1113:2: kw= '||'
            {
            kw=(Token)match(input,31,FOLLOW_2); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(kw);
              		newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword());
              	
            }

            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
544094
public final AntlrDatatypeRuleToken ruleGrammarID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ValidID_0 = null;

        AntlrDatatypeRuleToken this_ValidID_2 = null;



        	enterRule();

        try {
            // InternalXtext.g:265:2: ( (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* ) )
            // InternalXtext.g:266:2: (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* )
            {
            // InternalXtext.g:266:2: (this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )* )
            // InternalXtext.g:267:3: this_ValidID_0= ruleValidID (kw= '.' this_ValidID_2= ruleValidID )*
            {

            			newCompositeNode(grammarAccess.getGrammarIDAccess().getValidIDParserRuleCall_0());
            		
            pushFollow(FollowSets000.FOLLOW_10);
            this_ValidID_0=ruleValidID();

            state._fsp--;


            			current.merge(this_ValidID_0);
            		

            			afterParserOrEnumRuleCall();
            		
            // InternalXtext.g:277:3: (kw= '.' this_ValidID_2= ruleValidID )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==17) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // InternalXtext.g:278:4: kw= '.' this_ValidID_2= ruleValidID
            	    {
            	    kw=(Token)match(input,17,FollowSets000.FOLLOW_3); 

            	    				current.merge(kw);
            	    				newLeafNode(kw, grammarAccess.getGrammarIDAccess().getFullStopKeyword_1_0());
            	    			

            	    				newCompositeNode(grammarAccess.getGrammarIDAccess().getValidIDParserRuleCall_1_1());
            	    			
            	    pushFollow(FollowSets000.FOLLOW_10);
            	    this_ValidID_2=ruleValidID();

            	    state._fsp--;


            	    				current.merge(this_ValidID_2);
            	    			

            	    				afterParserOrEnumRuleCall();
            	    			

            	    }
            	    break;

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


            }


            }


            	leaveRule();

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
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); }

		}
	}
333014
public final void mRULE_ID() throws RecognitionException {
        try {
            int _type = RULE_ID;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalSARL.g:48763:9: ( ( '^' )? ( RULE_IDENTIFIER_START | RULE_UNICODE_ESCAPE ) ( RULE_IDENTIFIER_PART | RULE_UNICODE_ESCAPE )* )
            // InternalSARL.g:48763:11: ( '^' )? ( RULE_IDENTIFIER_START | RULE_UNICODE_ESCAPE ) ( RULE_IDENTIFIER_PART | RULE_UNICODE_ESCAPE )*
            {
            // InternalSARL.g:48763:11: ( '^' )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0=='^') ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // InternalSARL.g:48763:11: '^'
                    {
                    match('^'); 

                    }
                    break;

            }

            // InternalSARL.g:48763:16: ( RULE_IDENTIFIER_START | RULE_UNICODE_ESCAPE )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0=='$'||(LA2_0>='A' && LA2_0<='Z')||LA2_0=='_'||(LA2_0>='a' && LA2_0<='z')||(LA2_0>='\u00A2' && LA2_0<='\u00A5')||LA2_0=='\u00AA'||LA2_0=='\u00B5'||LA2_0=='\u00BA'||(LA2_0>='\u00C0' && LA2_0<='\u00D6')||(LA2_0>='\u00D8' && LA2_0<='\u00F6')||(LA2_0>='\u00F8' && LA2_0<='\u0236')||(LA2_0>='\u0250' && LA2_0<='\u02C1')||(LA2_0>='\u02C6' && LA2_0<='\u02D1')||(LA2_0>='\u02E0' && LA2_0<='\u02E4')||LA2_0=='\u02EE'||LA2_0=='\u037A'||LA2_0=='\u0386'||(LA2_0>='\u0388' && LA2_0<='\u038A')||LA2_0=='\u038C'||(LA2_0>='\u038E' && LA2_0<='\u03A1')||(LA2_0>='\u03A3' && LA2_0<='\u03CE')||(LA2_0>='\u03D0' && LA2_0<='\u03F5')||(LA2_0>='\u03F7' && LA2_0<='\u03FB')||(LA2_0>='\u0400' && LA2_0<='\u0481')||(LA2_0>='\u048A' && LA2_0<='\u04CE')||(LA2_0>='\u04D0' && LA2_0<='\u04F5')||(LA2_0>='\u04F8' && LA2_0<='\u04F9')||(LA2_0>='\u0500' && LA2_0<='\u050F')||(LA2_0>='\u0531' && LA2_0<='\u0556')||LA2_0=='\u0559'||(LA2_0>='\u0561' && LA2_0<='\u0587')||(LA2_0>='\u05D0' && LA2_0<='\u05EA')||(LA2_0>='\u05F0' && LA2_0<='\u05F2')||(LA2_0>='\u0621' && LA2_0<='\u063A')||(LA2_0>='\u0640' && LA2_0<='\u064A')||(LA2_0>='\u066E' && LA2_0<='\u066F')||(LA2_0>='\u0671' && LA2_0<='\u06D3')||LA2_0=='\u06D5'||(LA2_0>='\u06E5' && LA2_0<='\u06E6')||(LA2_0>='\u06EE' && LA2_0<='\u06EF')||(LA2_0>='\u06FA' && LA2_0<='\u06FC')||LA2_0=='\u06FF'||LA2_0=='\u0710'||(LA2_0>='\u0712' && LA2_0<='\u072F')||(LA2_0>='\u074D' && LA2_0<='\u074F')||(LA2_0>='\u0780' && LA2_0<='\u07A5')||LA2_0=='\u07B1'||(LA2_0>='\u0904' && LA2_0<='\u0939')||LA2_0=='\u093D'||LA2_0=='\u0950'||(LA2_0>='\u0958' && LA2_0<='\u0961')||(LA2_0>='\u0985' && LA2_0<='\u098C')||(LA2_0>='\u098F' && LA2_0<='\u0990')||(LA2_0>='\u0993' && LA2_0<='\u09A8')||(LA2_0>='\u09AA' && LA2_0<='\u09B0')||LA2_0=='\u09B2'||(LA2_0>='\u09B6' && LA2_0<='\u09B9')||LA2_0=='\u09BD'||(LA2_0>='\u09DC' && LA2_0<='\u09DD')||(LA2_0>='\u09DF' && LA2_0<='\u09E1')||(LA2_0>='\u09F0' && LA2_0<='\u09F3')||(LA2_0>='\u0A05' && LA2_0<='\u0A0A')||(LA2_0>='\u0A0F' && LA2_0<='\u0A10')||(LA2_0>='\u0A13' && LA2_0<='\u0A28')||(LA2_0>='\u0A2A' && LA2_0<='\u0A30')||(LA2_0>='\u0A32' && LA2_0<='\u0A33')||(LA2_0>='\u0A35' && LA2_0<='\u0A36')||(LA2_0>='\u0A38' && LA2_0<='\u0A39')||(LA2_0>='\u0A59' && LA2_0<='\u0A5C')||LA2_0=='\u0A5E'||(LA2_0>='\u0A72' && LA2_0<='\u0A74')||(LA2_0>='\u0A85' && LA2_0<='\u0A8D')||(LA2_0>='\u0A8F' && LA2_0<='\u0A91')||(LA2_0>='\u0A93' && LA2_0<='\u0AA8')||(LA2_0>='\u0AAA' && LA2_0<='\u0AB0')||(LA2_0>='\u0AB2' && LA2_0<='\u0AB3')||(LA2_0>='\u0AB5' && LA2_0<='\u0AB9')||LA2_0=='\u0ABD'||LA2_0=='\u0AD0'||(LA2_0>='\u0AE0' && LA2_0<='\u0AE1')||LA2_0=='\u0AF1'||(LA2_0>='\u0B05' && LA2_0<='\u0B0C')||(LA2_0>='\u0B0F' && LA2_0<='\u0B10')||(LA2_0>='\u0B13' && LA2_0<='\u0B28')||(LA2_0>='\u0B2A' && LA2_0<='\u0B30')||(LA2_0>='\u0B32' && LA2_0<='\u0B33')||(LA2_0>='\u0B35' && LA2_0<='\u0B39')||LA2_0=='\u0B3D'||(LA2_0>='\u0B5C' && LA2_0<='\u0B5D')||(LA2_0>='\u0B5F' && LA2_0<='\u0B61')||LA2_0=='\u0B71'||LA2_0=='\u0B83'||(LA2_0>='\u0B85' && LA2_0<='\u0B8A')||(LA2_0>='\u0B8E' && LA2_0<='\u0B90')||(LA2_0>='\u0B92' && LA2_0<='\u0B95')||(LA2_0>='\u0B99' && LA2_0<='\u0B9A')||LA2_0=='\u0B9C'||(LA2_0>='\u0B9E' && LA2_0<='\u0B9F')||(LA2_0>='\u0BA3' && LA2_0<='\u0BA4')||(LA2_0>='\u0BA8' && LA2_0<='\u0BAA')||(LA2_0>='\u0BAE' && LA2_0<='\u0BB5')||(LA2_0>='\u0BB7' && LA2_0<='\u0BB9')||LA2_0=='\u0BF9'||(LA2_0>='\u0C05' && LA2_0<='\u0C0C')||(LA2_0>='\u0C0E' && LA2_0<='\u0C10')||(LA2_0>='\u0C12' && LA2_0<='\u0C28')||(LA2_0>='\u0C2A' && LA2_0<='\u0C33')||(LA2_0>='\u0C35' && LA2_0<='\u0C39')||(LA2_0>='\u0C60' && LA2_0<='\u0C61')||(LA2_0>='\u0C85' && LA2_0<='\u0C8C')||(LA2_0>='\u0C8E' && LA2_0<='\u0C90')||(LA2_0>='\u0C92' && LA2_0<='\u0CA8')||(LA2_0>='\u0CAA' && LA2_0<='\u0CB3')||(LA2_0>='\u0CB5' && LA2_0<='\u0CB9')||LA2_0=='\u0CBD'||LA2_0=='\u0CDE'||(LA2_0>='\u0CE0' && LA2_0<='\u0CE1')||(LA2_0>='\u0D05' && LA2_0<='\u0D0C')||(LA2_0>='\u0D0E' && LA2_0<='\u0D10')||(LA2_0>='\u0D12' && LA2_0<='\u0D28')||(LA2_0>='\u0D2A' && LA2_0<='\u0D39')||(LA2_0>='\u0D60' && LA2_0<='\u0D61')||(LA2_0>='\u0D85' && LA2_0<='\u0D96')||(LA2_0>='\u0D9A' && LA2_0<='\u0DB1')||(LA2_0>='\u0DB3' && LA2_0<='\u0DBB')||LA2_0=='\u0DBD'||(LA2_0>='\u0DC0' && LA2_0<='\u0DC6')||(LA2_0>='\u0E01' && LA2_0<='\u0E30')||(LA2_0>='\u0E32' && LA2_0<='\u0E33')||(LA2_0>='\u0E3F' && LA2_0<='\u0E46')||(LA2_0>='\u0E81' && LA2_0<='\u0E82')||LA2_0=='\u0E84'||(LA2_0>='\u0E87' && LA2_0<='\u0E88')||LA2_0=='\u0E8A'||LA2_0=='\u0E8D'||(LA2_0>='\u0E94' && LA2_0<='\u0E97')||(LA2_0>='\u0E99' && LA2_0<='\u0E9F')||(LA2_0>='\u0EA1' && LA2_0<='\u0EA3')||LA2_0=='\u0EA5'||LA2_0=='\u0EA7'||(LA2_0>='\u0EAA' && LA2_0<='\u0EAB')||(LA2_0>='\u0EAD' && LA2_0<='\u0EB0')||(LA2_0>='\u0EB2' && LA2_0<='\u0EB3')||LA2_0=='\u0EBD'||(LA2_0>='\u0EC0' && LA2_0<='\u0EC4')||LA2_0=='\u0EC6'||(LA2_0>='\u0EDC' && LA2_0<='\u0EDD')||LA2_0=='\u0F00'||(LA2_0>='\u0F40' && LA2_0<='\u0F47')||(LA2_0>='\u0F49' && LA2_0<='\u0F6A')||(LA2_0>='\u0F88' && LA2_0<='\u0F8B')||(LA2_0>='\u1000' && LA2_0<='\u1021')||(LA2_0>='\u1023' && LA2_0<='\u1027')||(LA2_0>='\u1029' && LA2_0<='\u102A')||(LA2_0>='\u1050' && LA2_0<='\u1055')||(LA2_0>='\u10A0' && LA2_0<='\u10C5')||(LA2_0>='\u10D0' && LA2_0<='\u10F8')||(LA2_0>='\u1100' && LA2_0<='\u1159')||(LA2_0>='\u115F' && LA2_0<='\u11A2')||(LA2_0>='\u11A8' && LA2_0<='\u11F9')||(LA2_0>='\u1200' && LA2_0<='\u1206')||(LA2_0>='\u1208' && LA2_0<='\u1246')||LA2_0=='\u1248'||(LA2_0>='\u124A' && LA2_0<='\u124D')||(LA2_0>='\u1250' && LA2_0<='\u1256')||LA2_0=='\u1258'||(LA2_0>='\u125A' && LA2_0<='\u125D')||(LA2_0>='\u1260' && LA2_0<='\u1286')||LA2_0=='\u1288'||(LA2_0>='\u128A' && LA2_0<='\u128D')||(LA2_0>='\u1290' && LA2_0<='\u12AE')||LA2_0=='\u12B0'||(LA2_0>='\u12B2' && LA2_0<='\u12B5')||(LA2_0>='\u12B8' && LA2_0<='\u12BE')||LA2_0=='\u12C0'||(LA2_0>='\u12C2' && LA2_0<='\u12C5')||(LA2_0>='\u12C8' && LA2_0<='\u12CE')||(LA2_0>='\u12D0' && LA2_0<='\u12D6')||(LA2_0>='\u12D8' && LA2_0<='\u12EE')||(LA2_0>='\u12F0' && LA2_0<='\u130E')||LA2_0=='\u1310'||(LA2_0>='\u1312' && LA2_0<='\u1315')||(LA2_0>='\u1318' && LA2_0<='\u131E')||(LA2_0>='\u1320' && LA2_0<='\u1346')||(LA2_0>='\u1348' && LA2_0<='\u135A')||(LA2_0>='\u13A0' && LA2_0<='\u13F4')||(LA2_0>='\u1401' && LA2_0<='\u166C')||(LA2_0>='\u166F' && LA2_0<='\u1676')||(LA2_0>='\u1681' && LA2_0<='\u169A')||(LA2_0>='\u16A0' && LA2_0<='\u16EA')||(LA2_0>='\u16EE' && LA2_0<='\u16F0')||(LA2_0>='\u1700' && LA2_0<='\u170C')||(LA2_0>='\u170E' && LA2_0<='\u1711')||(LA2_0>='\u1720' && LA2_0<='\u1731')||(LA2_0>='\u1740' && LA2_0<='\u1751')||(LA2_0>='\u1760' && LA2_0<='\u176C')||(LA2_0>='\u176E' && LA2_0<='\u1770')||(LA2_0>='\u1780' && LA2_0<='\u17B3')||LA2_0=='\u17D7'||(LA2_0>='\u17DB' && LA2_0<='\u17DC')||(LA2_0>='\u1820' && LA2_0<='\u1877')||(LA2_0>='\u1880' && LA2_0<='\u18A8')||(LA2_0>='\u1900' && LA2_0<='\u191C')||(LA2_0>='\u1950' && LA2_0<='\u196D')||(LA2_0>='\u1970' && LA2_0<='\u1974')||(LA2_0>='\u1D00' && LA2_0<='\u1D6B')||(LA2_0>='\u1E00' && LA2_0<='\u1E9B')||(LA2_0>='\u1EA0' && LA2_0<='\u1EF9')||(LA2_0>='\u1F00' && LA2_0<='\u1F15')||(LA2_0>='\u1F18' && LA2_0<='\u1F1D')||(LA2_0>='\u1F20' && LA2_0<='\u1F45')||(LA2_0>='\u1F48' && LA2_0<='\u1F4D')||(LA2_0>='\u1F50' && LA2_0<='\u1F57')||LA2_0=='\u1F59'||LA2_0=='\u1F5B'||LA2_0=='\u1F5D'||(LA2_0>='\u1F5F' && LA2_0<='\u1F7D')||(LA2_0>='\u1F80' && LA2_0<='\u1FB4')||(LA2_0>='\u1FB6' && LA2_0<='\u1FBC')||LA2_0=='\u1FBE'||(LA2_0>='\u1FC2' && LA2_0<='\u1FC4')||(LA2_0>='\u1FC6' && LA2_0<='\u1FCC')||(LA2_0>='\u1FD0' && LA2_0<='\u1FD3')||(LA2_0>='\u1FD6' && LA2_0<='\u1FDB')||(LA2_0>='\u1FE0' && LA2_0<='\u1FEC')||(LA2_0>='\u1FF2' && LA2_0<='\u1FF4')||(LA2_0>='\u1FF6' && LA2_0<='\u1FFC')||(LA2_0>='\u203F' && LA2_0<='\u2040')||LA2_0=='\u2054'||LA2_0=='\u2071'||LA2_0=='\u207F'||(LA2_0>='\u20A0' && LA2_0<='\u20B1')||LA2_0=='\u2102'||LA2_0=='\u2107'||(LA2_0>='\u210A' && LA2_0<='\u2113')||LA2_0=='\u2115'||(LA2_0>='\u2119' && LA2_0<='\u211D')||LA2_0=='\u2124'||LA2_0=='\u2126'||LA2_0=='\u2128'||(LA2_0>='\u212A' && LA2_0<='\u212D')||(LA2_0>='\u212F' && LA2_0<='\u2131')||(LA2_0>='\u2133' && LA2_0<='\u2139')||(LA2_0>='\u213D' && LA2_0<='\u213F')||(LA2_0>='\u2145' && LA2_0<='\u2149')||(LA2_0>='\u2160' && LA2_0<='\u2183')||(LA2_0>='\u3005' && LA2_0<='\u3007')||(LA2_0>='\u3021' && LA2_0<='\u3029')||(LA2_0>='\u3031' && LA2_0<='\u3035')||(LA2_0>='\u3038' && LA2_0<='\u303C')||(LA2_0>='\u3041' && LA2_0<='\u3096')||(LA2_0>='\u309D' && LA2_0<='\u309F')||(LA2_0>='\u30A1' && LA2_0<='\u30FF')||(LA2_0>='\u3105' && LA2_0<='\u312C')||(LA2_0>='\u3131' && LA2_0<='\u318E')||(LA2_0>='\u31A0' && LA2_0<='\u31B7')||(LA2_0>='\u31F0' && LA2_0<='\u31FF')||(LA2_0>='\u3400' && LA2_0<='\u4DB5')||(LA2_0>='\u4E00' && LA2_0<='\u9FA5')||(LA2_0>='\uA000' && LA2_0<='\uA48C')||(LA2_0>='\uAC00' && LA2_0<='\uD7A3')||(LA2_0>='\uF900' && LA2_0<='\uFA2D')||(LA2_0>='\uFA30' && LA2_0<='\uFA6A')||(LA2_0>='\uFB00' && LA2_0<='\uFB06')||(LA2_0>='\uFB13' && LA2_0<='\uFB17')||LA2_0=='\uFB1D'||(LA2_0>='\uFB1F' && LA2_0<='\uFB28')||(LA2_0>='\uFB2A' && LA2_0<='\uFB36')||(LA2_0>='\uFB38' && LA2_0<='\uFB3C')||LA2_0=='\uFB3E'||(LA2_0>='\uFB40' && LA2_0<='\uFB41')||(LA2_0>='\uFB43' && LA2_0<='\uFB44')||(LA2_0>='\uFB46' && LA2_0<='\uFBB1')||(LA2_0>='\uFBD3' && LA2_0<='\uFD3D')||(LA2_0>='\uFD50' && LA2_0<='\uFD8F')||(LA2_0>='\uFD92' && LA2_0<='\uFDC7')||(LA2_0>='\uFDF0' && LA2_0<='\uFDFC')||(LA2_0>='\uFE33' && LA2_0<='\uFE34')||(LA2_0>='\uFE4D' && LA2_0<='\uFE4F')||LA2_0=='\uFE69'||(LA2_0>='\uFE70' && LA2_0<='\uFE74')||(LA2_0>='\uFE76' && LA2_0<='\uFEFC')||LA2_0=='\uFF04'||(LA2_0>='\uFF21' && LA2_0<='\uFF3A')||LA2_0=='\uFF3F'||(LA2_0>='\uFF41' && LA2_0<='\uFF5A')||(LA2_0>='\uFF65' && LA2_0<='\uFFBE')||(LA2_0>='\uFFC2' && LA2_0<='\uFFC7')||(LA2_0>='\uFFCA' && LA2_0<='\uFFCF')||(LA2_0>='\uFFD2' && LA2_0<='\uFFD7')||(LA2_0>='\uFFDA' && LA2_0<='\uFFDC')||(LA2_0>='\uFFE0' && LA2_0<='\uFFE1')||(LA2_0>='\uFFE5' && LA2_0<='\uFFE6')) ) {
                alt2=1;
            }
            else if ( (LA2_0=='\\') ) {
                alt2=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }
            switch (alt2) {
                case 1 :
                    // InternalSARL.g:48763:17: RULE_IDENTIFIER_START
                    {
                    mRULE_IDENTIFIER_START(); 

                    }
                    break;
                case 2 :
                    // InternalSARL.g:48763:39: RULE_UNICODE_ESCAPE
                    {
                    mRULE_UNICODE_ESCAPE(); 

                    }
                    break;

            }

            // InternalSARL.g:48763:60: ( RULE_IDENTIFIER_PART | RULE_UNICODE_ESCAPE )*
            loop3:
            do {
                int alt3=3;
                int LA3_0 = input.LA(1);

                if ( ((LA3_0>='\u0000' && LA3_0<='\b')||(LA3_0>='\u000E' && LA3_0<='\u001B')||LA3_0=='$'||(LA3_0>='0' && LA3_0<='9')||(LA3_0>='A' && LA3_0<='Z')||LA3_0=='_'||(LA3_0>='a' && LA3_0<='z')||(LA3_0>='\u007F' && LA3_0<='\u009F')||(LA3_0>='\u00A2' && LA3_0<='\u00A5')||LA3_0=='\u00AA'||LA3_0=='\u00AD'||LA3_0=='\u00B5'||LA3_0=='\u00BA'||(LA3_0>='\u00C0' && LA3_0<='\u00D6')||(LA3_0>='\u00D8' && LA3_0<='\u00F6')||(LA3_0>='\u00F8' && LA3_0<='\u0236')||(LA3_0>='\u0250' && LA3_0<='\u02C1')||(LA3_0>='\u02C6' && LA3_0<='\u02D1')||(LA3_0>='\u02E0' && LA3_0<='\u02E4')||LA3_0=='\u02EE'||(LA3_0>='\u0300' && LA3_0<='\u0357')||(LA3_0>='\u035D' && LA3_0<='\u036F')||LA3_0=='\u037A'||LA3_0=='\u0386'||(LA3_0>='\u0388' && LA3_0<='\u038A')||LA3_0=='\u038C'||(LA3_0>='\u038E' && LA3_0<='\u03A1')||(LA3_0>='\u03A3' && LA3_0<='\u03CE')||(LA3_0>='\u03D0' && LA3_0<='\u03F5')||(LA3_0>='\u03F7' && LA3_0<='\u03FB')||(LA3_0>='\u0400' && LA3_0<='\u0481')||(LA3_0>='\u0483' && LA3_0<='\u0486')||(LA3_0>='\u048A' && LA3_0<='\u04CE')||(LA3_0>='\u04D0' && LA3_0<='\u04F5')||(LA3_0>='\u04F8' && LA3_0<='\u04F9')||(LA3_0>='\u0500' && LA3_0<='\u050F')||(LA3_0>='\u0531' && LA3_0<='\u0556')||LA3_0=='\u0559'||(LA3_0>='\u0561' && LA3_0<='\u0587')||(LA3_0>='\u0591' && LA3_0<='\u05A1')||(LA3_0>='\u05A3' && LA3_0<='\u05B9')||(LA3_0>='\u05BB' && LA3_0<='\u05BD')||LA3_0=='\u05BF'||(LA3_0>='\u05C1' && LA3_0<='\u05C2')||LA3_0=='\u05C4'||(LA3_0>='\u05D0' && LA3_0<='\u05EA')||(LA3_0>='\u05F0' && LA3_0<='\u05F2')||(LA3_0>='\u0600' && LA3_0<='\u0603')||(LA3_0>='\u0610' && LA3_0<='\u0615')||(LA3_0>='\u0621' && LA3_0<='\u063A')||(LA3_0>='\u0640' && LA3_0<='\u0658')||(LA3_0>='\u0660' && LA3_0<='\u0669')||(LA3_0>='\u066E' && LA3_0<='\u06D3')||(LA3_0>='\u06D5' && LA3_0<='\u06DD')||(LA3_0>='\u06DF' && LA3_0<='\u06E8')||(LA3_0>='\u06EA' && LA3_0<='\u06FC')||LA3_0=='\u06FF'||(LA3_0>='\u070F' && LA3_0<='\u074A')||(LA3_0>='\u074D' && LA3_0<='\u074F')||(LA3_0>='\u0780' && LA3_0<='\u07B1')||(LA3_0>='\u0901' && LA3_0<='\u0939')||(LA3_0>='\u093C' && LA3_0<='\u094D')||(LA3_0>='\u0950' && LA3_0<='\u0954')||(LA3_0>='\u0958' && LA3_0<='\u0963')||(LA3_0>='\u0966' && LA3_0<='\u096F')||(LA3_0>='\u0981' && LA3_0<='\u0983')||(LA3_0>='\u0985' && LA3_0<='\u098C')||(LA3_0>='\u098F' && LA3_0<='\u0990')||(LA3_0>='\u0993' && LA3_0<='\u09A8')||(LA3_0>='\u09AA' && LA3_0<='\u09B0')||LA3_0=='\u09B2'||(LA3_0>='\u09B6' && LA3_0<='\u09B9')||(LA3_0>='\u09BC' && LA3_0<='\u09C4')||(LA3_0>='\u09C7' && LA3_0<='\u09C8')||(LA3_0>='\u09CB' && LA3_0<='\u09CD')||LA3_0=='\u09D7'||(LA3_0>='\u09DC' && LA3_0<='\u09DD')||(LA3_0>='\u09DF' && LA3_0<='\u09E3')||(LA3_0>='\u09E6' && LA3_0<='\u09F3')||(LA3_0>='\u0A01' && LA3_0<='\u0A03')||(LA3_0>='\u0A05' && LA3_0<='\u0A0A')||(LA3_0>='\u0A0F' && LA3_0<='\u0A10')||(LA3_0>='\u0A13' && LA3_0<='\u0A28')||(LA3_0>='\u0A2A' && LA3_0<='\u0A30')||(LA3_0>='\u0A32' && LA3_0<='\u0A33')||(LA3_0>='\u0A35' && LA3_0<='\u0A36')||(LA3_0>='\u0A38' && LA3_0<='\u0A39')||LA3_0=='\u0A3C'||(LA3_0>='\u0A3E' && LA3_0<='\u0A42')||(LA3_0>='\u0A47' && LA3_0<='\u0A48')||(LA3_0>='\u0A4B' && LA3_0<='\u0A4D')||(LA3_0>='\u0A59' && LA3_0<='\u0A5C')||LA3_0=='\u0A5E'||(LA3_0>='\u0A66' && LA3_0<='\u0A74')||(LA3_0>='\u0A81' && LA3_0<='\u0A83')||(LA3_0>='\u0A85' && LA3_0<='\u0A8D')||(LA3_0>='\u0A8F' && LA3_0<='\u0A91')||(LA3_0>='\u0A93' && LA3_0<='\u0AA8')||(LA3_0>='\u0AAA' && LA3_0<='\u0AB0')||(LA3_0>='\u0AB2' && LA3_0<='\u0AB3')||(LA3_0>='\u0AB5' && LA3_0<='\u0AB9')||(LA3_0>='\u0ABC' && LA3_0<='\u0AC5')||(LA3_0>='\u0AC7' && LA3_0<='\u0AC9')||(LA3_0>='\u0ACB' && LA3_0<='\u0ACD')||LA3_0=='\u0AD0'||(LA3_0>='\u0AE0' && LA3_0<='\u0AE3')||(LA3_0>='\u0AE6' && LA3_0<='\u0AEF')||LA3_0=='\u0AF1'||(LA3_0>='\u0B01' && LA3_0<='\u0B03')||(LA3_0>='\u0B05' && LA3_0<='\u0B0C')||(LA3_0>='\u0B0F' && LA3_0<='\u0B10')||(LA3_0>='\u0B13' && LA3_0<='\u0B28')||(LA3_0>='\u0B2A' && LA3_0<='\u0B30')||(LA3_0>='\u0B32' && LA3_0<='\u0B33')||(LA3_0>='\u0B35' && LA3_0<='\u0B39')||(LA3_0>='\u0B3C' && LA3_0<='\u0B43')||(LA3_0>='\u0B47' && LA3_0<='\u0B48')||(LA3_0>='\u0B4B' && LA3_0<='\u0B4D')||(LA3_0>='\u0B56' && LA3_0<='\u0B57')||(LA3_0>='\u0B5C' && LA3_0<='\u0B5D')||(LA3_0>='\u0B5F' && LA3_0<='\u0B61')||(LA3_0>='\u0B66' && LA3_0<='\u0B6F')||LA3_0=='\u0B71'||(LA3_0>='\u0B82' && LA3_0<='\u0B83')||(LA3_0>='\u0B85' && LA3_0<='\u0B8A')||(LA3_0>='\u0B8E' && LA3_0<='\u0B90')||(LA3_0>='\u0B92' && LA3_0<='\u0B95')||(LA3_0>='\u0B99' && LA3_0<='\u0B9A')||LA3_0=='\u0B9C'||(LA3_0>='\u0B9E' && LA3_0<='\u0B9F')||(LA3_0>='\u0BA3' && LA3_0<='\u0BA4')||(LA3_0>='\u0BA8' && LA3_0<='\u0BAA')||(LA3_0>='\u0BAE' && LA3_0<='\u0BB5')||(LA3_0>='\u0BB7' && LA3_0<='\u0BB9')||(LA3_0>='\u0BBE' && LA3_0<='\u0BC2')||(LA3_0>='\u0BC6' && LA3_0<='\u0BC8')||(LA3_0>='\u0BCA' && LA3_0<='\u0BCD')||LA3_0=='\u0BD7'||(LA3_0>='\u0BE7' && LA3_0<='\u0BEF')||LA3_0=='\u0BF9'||(LA3_0>='\u0C01' && LA3_0<='\u0C03')||(LA3_0>='\u0C05' && LA3_0<='\u0C0C')||(LA3_0>='\u0C0E' && LA3_0<='\u0C10')||(LA3_0>='\u0C12' && LA3_0<='\u0C28')||(LA3_0>='\u0C2A' && LA3_0<='\u0C33')||(LA3_0>='\u0C35' && LA3_0<='\u0C39')||(LA3_0>='\u0C3E' && LA3_0<='\u0C44')||(LA3_0>='\u0C46' && LA3_0<='\u0C48')||(LA3_0>='\u0C4A' && LA3_0<='\u0C4D')||(LA3_0>='\u0C55' && LA3_0<='\u0C56')||(LA3_0>='\u0C60' && LA3_0<='\u0C61')||(LA3_0>='\u0C66' && LA3_0<='\u0C6F')||(LA3_0>='\u0C82' && LA3_0<='\u0C83')||(LA3_0>='\u0C85' && LA3_0<='\u0C8C')||(LA3_0>='\u0C8E' && LA3_0<='\u0C90')||(LA3_0>='\u0C92' && LA3_0<='\u0CA8')||(LA3_0>='\u0CAA' && LA3_0<='\u0CB3')||(LA3_0>='\u0CB5' && LA3_0<='\u0CB9')||(LA3_0>='\u0CBC' && LA3_0<='\u0CC4')||(LA3_0>='\u0CC6' && LA3_0<='\u0CC8')||(LA3_0>='\u0CCA' && LA3_0<='\u0CCD')||(LA3_0>='\u0CD5' && LA3_0<='\u0CD6')||LA3_0=='\u0CDE'||(LA3_0>='\u0CE0' && LA3_0<='\u0CE1')||(LA3_0>='\u0CE6' && LA3_0<='\u0CEF')||(LA3_0>='\u0D02' && LA3_0<='\u0D03')||(LA3_0>='\u0D05' && LA3_0<='\u0D0C')||(LA3_0>='\u0D0E' && LA3_0<='\u0D10')||(LA3_0>='\u0D12' && LA3_0<='\u0D28')||(LA3_0>='\u0D2A' && LA3_0<='\u0D39')||(LA3_0>='\u0D3E' && LA3_0<='\u0D43')||(LA3_0>='\u0D46' && LA3_0<='\u0D48')||(LA3_0>='\u0D4A' && LA3_0<='\u0D4D')||LA3_0=='\u0D57'||(LA3_0>='\u0D60' && LA3_0<='\u0D61')||(LA3_0>='\u0D66' && LA3_0<='\u0D6F')||(LA3_0>='\u0D82' && LA3_0<='\u0D83')||(LA3_0>='\u0D85' && LA3_0<='\u0D96')||(LA3_0>='\u0D9A' && LA3_0<='\u0DB1')||(LA3_0>='\u0DB3' && LA3_0<='\u0DBB')||LA3_0=='\u0DBD'||(LA3_0>='\u0DC0' && LA3_0<='\u0DC6')||LA3_0=='\u0DCA'||(LA3_0>='\u0DCF' && LA3_0<='\u0DD4')||LA3_0=='\u0DD6'||(LA3_0>='\u0DD8' && LA3_0<='\u0DDF')||(LA3_0>='\u0DF2' && LA3_0<='\u0DF3')||(LA3_0>='\u0E01' && LA3_0<='\u0E3A')||(LA3_0>='\u0E3F' && LA3_0<='\u0E4E')||(LA3_0>='\u0E50' && LA3_0<='\u0E59')||(LA3_0>='\u0E81' && LA3_0<='\u0E82')||LA3_0=='\u0E84'||(LA3_0>='\u0E87' && LA3_0<='\u0E88')||LA3_0=='\u0E8A'||LA3_0=='\u0E8D'||(LA3_0>='\u0E94' && LA3_0<='\u0E97')||(LA3_0>='\u0E99' && LA3_0<='\u0E9F')||(LA3_0>='\u0EA1' && LA3_0<='\u0EA3')||LA3_0=='\u0EA5'||LA3_0=='\u0EA7'||(LA3_0>='\u0EAA' && LA3_0<='\u0EAB')||(LA3_0>='\u0EAD' && LA3_0<='\u0EB9')||(LA3_0>='\u0EBB' && LA3_0<='\u0EBD')||(LA3_0>='\u0EC0' && LA3_0<='\u0EC4')||LA3_0=='\u0EC6'||(LA3_0>='\u0EC8' && LA3_0<='\u0ECD')||(LA3_0>='\u0ED0' && LA3_0<='\u0ED9')||(LA3_0>='\u0EDC' && LA3_0<='\u0EDD')||LA3_0=='\u0F00'||(LA3_0>='\u0F18' && LA3_0<='\u0F19')||(LA3_0>='\u0F20' && LA3_0<='\u0F29')||LA3_0=='\u0F35'||LA3_0=='\u0F37'||LA3_0=='\u0F39'||(LA3_0>='\u0F3E' && LA3_0<='\u0F47')||(LA3_0>='\u0F49' && LA3_0<='\u0F6A')||(LA3_0>='\u0F71' && LA3_0<='\u0F84')||(LA3_0>='\u0F86' && LA3_0<='\u0F8B')||(LA3_0>='\u0F90' && LA3_0<='\u0F97')||(LA3_0>='\u0F99' && LA3_0<='\u0FBC')||LA3_0=='\u0FC6'||(LA3_0>='\u1000' && LA3_0<='\u1021')||(LA3_0>='\u1023' && LA3_0<='\u1027')||(LA3_0>='\u1029' && LA3_0<='\u102A')||(LA3_0>='\u102C' && LA3_0<='\u1032')||(LA3_0>='\u1036' && LA3_0<='\u1039')||(LA3_0>='\u1040' && LA3_0<='\u1049')||(LA3_0>='\u1050' && LA3_0<='\u1059')||(LA3_0>='\u10A0' && LA3_0<='\u10C5')||(LA3_0>='\u10D0' && LA3_0<='\u10F8')||(LA3_0>='\u1100' && LA3_0<='\u1159')||(LA3_0>='\u115F' && LA3_0<='\u11A2')||(LA3_0>='\u11A8' && LA3_0<='\u11F9')||(LA3_0>='\u1200' && LA3_0<='\u1206')||(LA3_0>='\u1208' && LA3_0<='\u1246')||LA3_0=='\u1248'||(LA3_0>='\u124A' && LA3_0<='\u124D')||(LA3_0>='\u1250' && LA3_0<='\u1256')||LA3_0=='\u1258'||(LA3_0>='\u125A' && LA3_0<='\u125D')||(LA3_0>='\u1260' && LA3_0<='\u1286')||LA3_0=='\u1288'||(LA3_0>='\u128A' && LA3_0<='\u128D')||(LA3_0>='\u1290' && LA3_0<='\u12AE')||LA3_0=='\u12B0'||(LA3_0>='\u12B2' && LA3_0<='\u12B5')||(LA3_0>='\u12B8' && LA3_0<='\u12BE')||LA3_0=='\u12C0'||(LA3_0>='\u12C2' && LA3_0<='\u12C5')||(LA3_0>='\u12C8' && LA3_0<='\u12CE')||(LA3_0>='\u12D0' && LA3_0<='\u12D6')||(LA3_0>='\u12D8' && LA3_0<='\u12EE')||(LA3_0>='\u12F0' && LA3_0<='\u130E')||LA3_0=='\u1310'||(LA3_0>='\u1312' && LA3_0<='\u1315')||(LA3_0>='\u1318' && LA3_0<='\u131E')||(LA3_0>='\u1320' && LA3_0<='\u1346')||(LA3_0>='\u1348' && LA3_0<='\u135A')||(LA3_0>='\u1369' && LA3_0<='\u1371')||(LA3_0>='\u13A0' && LA3_0<='\u13F4')||(LA3_0>='\u1401' && LA3_0<='\u166C')||(LA3_0>='\u166F' && LA3_0<='\u1676')||(LA3_0>='\u1681' && LA3_0<='\u169A')||(LA3_0>='\u16A0' && LA3_0<='\u16EA')||(LA3_0>='\u16EE' && LA3_0<='\u16F0')||(LA3_0>='\u1700' && LA3_0<='\u170C')||(LA3_0>='\u170E' && LA3_0<='\u1714')||(LA3_0>='\u1720' && LA3_0<='\u1734')||(LA3_0>='\u1740' && LA3_0<='\u1753')||(LA3_0>='\u1760' && LA3_0<='\u176C')||(LA3_0>='\u176E' && LA3_0<='\u1770')||(LA3_0>='\u1772' && LA3_0<='\u1773')||(LA3_0>='\u1780' && LA3_0<='\u17D3')||LA3_0=='\u17D7'||(LA3_0>='\u17DB' && LA3_0<='\u17DD')||(LA3_0>='\u17E0' && LA3_0<='\u17E9')||(LA3_0>='\u180B' && LA3_0<='\u180D')||(LA3_0>='\u1810' && LA3_0<='\u1819')||(LA3_0>='\u1820' && LA3_0<='\u1877')||(LA3_0>='\u1880' && LA3_0<='\u18A9')||(LA3_0>='\u1900' && LA3_0<='\u191C')||(LA3_0>='\u1920' && LA3_0<='\u192B')||(LA3_0>='\u1930' && LA3_0<='\u193B')||(LA3_0>='\u1946' && LA3_0<='\u196D')||(LA3_0>='\u1970' && LA3_0<='\u1974')||(LA3_0>='\u1D00' && LA3_0<='\u1D6B')||(LA3_0>='\u1E00' && LA3_0<='\u1E9B')||(LA3_0>='\u1EA0' && LA3_0<='\u1EF9')||(LA3_0>='\u1F00' && LA3_0<='\u1F15')||(LA3_0>='\u1F18' && LA3_0<='\u1F1D')||(LA3_0>='\u1F20' && LA3_0<='\u1F45')||(LA3_0>='\u1F48' && LA3_0<='\u1F4D')||(LA3_0>='\u1F50' && LA3_0<='\u1F57')||LA3_0=='\u1F59'||LA3_0=='\u1F5B'||LA3_0=='\u1F5D'||(LA3_0>='\u1F5F' && LA3_0<='\u1F7D')||(LA3_0>='\u1F80' && LA3_0<='\u1FB4')||(LA3_0>='\u1FB6' && LA3_0<='\u1FBC')||LA3_0=='\u1FBE'||(LA3_0>='\u1FC2' && LA3_0<='\u1FC4')||(LA3_0>='\u1FC6' && LA3_0<='\u1FCC')||(LA3_0>='\u1FD0' && LA3_0<='\u1FD3')||(LA3_0>='\u1FD6' && LA3_0<='\u1FDB')||(LA3_0>='\u1FE0' && LA3_0<='\u1FEC')||(LA3_0>='\u1FF2' && LA3_0<='\u1FF4')||(LA3_0>='\u1FF6' && LA3_0<='\u1FFC')||(LA3_0>='\u200C' && LA3_0<='\u200F')||(LA3_0>='\u202A' && LA3_0<='\u202E')||(LA3_0>='\u203F' && LA3_0<='\u2040')||LA3_0=='\u2054'||(LA3_0>='\u2060' && LA3_0<='\u2063')||(LA3_0>='\u206A' && LA3_0<='\u206F')||LA3_0=='\u2071'||LA3_0=='\u207F'||(LA3_0>='\u20A0' && LA3_0<='\u20B1')||(LA3_0>='\u20D0' && LA3_0<='\u20DC')||LA3_0=='\u20E1'||(LA3_0>='\u20E5' && LA3_0<='\u20EA')||LA3_0=='\u2102'||LA3_0=='\u2107'||(LA3_0>='\u210A' && LA3_0<='\u2113')||LA3_0=='\u2115'||(LA3_0>='\u2119' && LA3_0<='\u211D')||LA3_0=='\u2124'||LA3_0=='\u2126'||LA3_0=='\u2128'||(LA3_0>='\u212A' && LA3_0<='\u212D')||(LA3_0>='\u212F' && LA3_0<='\u2131')||(LA3_0>='\u2133' && LA3_0<='\u2139')||(LA3_0>='\u213D' && LA3_0<='\u213F')||(LA3_0>='\u2145' && LA3_0<='\u2149')||(LA3_0>='\u2160' && LA3_0<='\u2183')||(LA3_0>='\u3005' && LA3_0<='\u3007')||(LA3_0>='\u3021' && LA3_0<='\u302F')||(LA3_0>='\u3031' && LA3_0<='\u3035')||(LA3_0>='\u3038' && LA3_0<='\u303C')||(LA3_0>='\u3041' && LA3_0<='\u3096')||(LA3_0>='\u3099' && LA3_0<='\u309A')||(LA3_0>='\u309D' && LA3_0<='\u309F')||(LA3_0>='\u30A1' && LA3_0<='\u30FF')||(LA3_0>='\u3105' && LA3_0<='\u312C')||(LA3_0>='\u3131' && LA3_0<='\u318E')||(LA3_0>='\u31A0' && LA3_0<='\u31B7')||(LA3_0>='\u31F0' && LA3_0<='\u31FF')||(LA3_0>='\u3400' && LA3_0<='\u4DB5')||(LA3_0>='\u4E00' && LA3_0<='\u9FA5')||(LA3_0>='\uA000' && LA3_0<='\uA48C')||(LA3_0>='\uAC00' && LA3_0<='\uD7A3')||(LA3_0>='\uF900' && LA3_0<='\uFA2D')||(LA3_0>='\uFA30' && LA3_0<='\uFA6A')||(LA3_0>='\uFB00' && LA3_0<='\uFB06')||(LA3_0>='\uFB13' && LA3_0<='\uFB17')||(LA3_0>='\uFB1D' && LA3_0<='\uFB28')||(LA3_0>='\uFB2A' && LA3_0<='\uFB36')||(LA3_0>='\uFB38' && LA3_0<='\uFB3C')||LA3_0=='\uFB3E'||(LA3_0>='\uFB40' && LA3_0<='\uFB41')||(LA3_0>='\uFB43' && LA3_0<='\uFB44')||(LA3_0>='\uFB46' && LA3_0<='\uFBB1')||(LA3_0>='\uFBD3' && LA3_0<='\uFD3D')||(LA3_0>='\uFD50' && LA3_0<='\uFD8F')||(LA3_0>='\uFD92' && LA3_0<='\uFDC7')||(LA3_0>='\uFDF0' && LA3_0<='\uFDFC')||(LA3_0>='\uFE00' && LA3_0<='\uFE0F')||(LA3_0>='\uFE20' && LA3_0<='\uFE23')||(LA3_0>='\uFE33' && LA3_0<='\uFE34')||(LA3_0>='\uFE4D' && LA3_0<='\uFE4F')||LA3_0=='\uFE69'||(LA3_0>='\uFE70' && LA3_0<='\uFE74')||(LA3_0>='\uFE76' && LA3_0<='\uFEFC')||LA3_0=='\uFEFF'||LA3_0=='\uFF04'||(LA3_0>='\uFF10' && LA3_0<='\uFF19')||(LA3_0>='\uFF21' && LA3_0<='\uFF3A')||LA3_0=='\uFF3F'||(LA3_0>='\uFF41' && LA3_0<='\uFF5A')||(LA3_0>='\uFF65' && LA3_0<='\uFFBE')||(LA3_0>='\uFFC2' && LA3_0<='\uFFC7')||(LA3_0>='\uFFCA' && LA3_0<='\uFFCF')||(LA3_0>='\uFFD2' && LA3_0<='\uFFD7')||(LA3_0>='\uFFDA' && LA3_0<='\uFFDC')||(LA3_0>='\uFFE0' && LA3_0<='\uFFE1')||(LA3_0>='\uFFE5' && LA3_0<='\uFFE6')||(LA3_0>='\uFFF9' && LA3_0<='\uFFFB')) ) {
                    alt3=1;
                }
                else if ( (LA3_0=='\\') ) {
                    alt3=2;
                }


                switch (alt3) {
            	case 1 :
            	    // InternalSARL.g:48763:61: RULE_IDENTIFIER_PART
            	    {
            	    mRULE_IDENTIFIER_PART(); 

            	    }
            	    break;
            	case 2 :
            	    // InternalSARL.g:48763:82: RULE_UNICODE_ESCAPE
            	    {
            	    mRULE_UNICODE_ESCAPE(); 

            	    }
            	    break;

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


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
347767
private BigInteger parseHexLiteral(Token input) {
		String text = input.text;
		// Start past 0x
		for (int i = 2; i != text.length(); ++i) {
			char c = text.charAt(i);
			if(c != '_' && !isHexDigit(c)) {
				syntaxError("invalid hex literal (invalid characters)", input);
			}
		}
		// Remove "0x" and "_"
		text = input.text.substring(2).replace("_", "");
		return new BigInteger(text,16);
	}
302816
public final void mRULE_DECIMAL() throws RecognitionException {
        try {
            int _type = RULE_DECIMAL;
            int _channel = DEFAULT_TOKEN_CHANNEL;
            // InternalSARL.g:48793:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
            // InternalSARL.g:48793:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
            {
            mRULE_INT(); 
            // InternalSARL.g:48793:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( (LA42_0=='E'||LA42_0=='e') ) {
                alt42=1;
            }
            switch (alt42) {
                case 1 :
                    // InternalSARL.g:48793:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                    {
                    if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                        input.consume();

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

                    // InternalSARL.g:48793:36: ( '+' | '-' )?
                    int alt41=2;
                    int LA41_0 = input.LA(1);

                    if ( (LA41_0=='+'||LA41_0=='-') ) {
                        alt41=1;
                    }
                    switch (alt41) {
                        case 1 :
                            // InternalSARL.g:
                            {
                            if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
                                input.consume();

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


                            }
                            break;

                    }

                    mRULE_INT(); 

                    }
                    break;

            }

            // InternalSARL.g:48793:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
            int alt43=3;
            int LA43_0 = input.LA(1);

            if ( (LA43_0=='B'||LA43_0=='b') ) {
                alt43=1;
            }
            else if ( (LA43_0=='D'||LA43_0=='F'||LA43_0=='L'||LA43_0=='d'||LA43_0=='f'||LA43_0=='l') ) {
                alt43=2;
            }
            switch (alt43) {
                case 1 :
                    // InternalSARL.g:48793:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                    {
                    if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                        input.consume();

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

                    if ( input.LA(1)=='D'||input.LA(1)=='I'||input.LA(1)=='d'||input.LA(1)=='i' ) {
                        input.consume();

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


                    }
                    break;
                case 2 :
                    // InternalSARL.g:48793:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
                    {
                    if ( input.LA(1)=='D'||input.LA(1)=='F'||input.LA(1)=='L'||input.LA(1)=='d'||input.LA(1)=='f'||input.LA(1)=='l' ) {
                        input.consume();

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


                    }
                    break;

            }


            }

            state.type = _type;
            state.channel = _channel;
        }
        finally {
        }
    }
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;

        }

    }
48393
public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalPureXbase.g:1860:2: ( (kw= '+' | kw= '-' ) )
            // InternalPureXbase.g:1861:2: (kw= '+' | kw= '-' )
            {
            // InternalPureXbase.g:1861:2: (kw= '+' | kw= '-' )
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==44) ) {
                alt33=1;
            }
            else if ( (LA33_0==45) ) {
                alt33=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 33, 0, input);

                throw nvae;
            }
            switch (alt33) {
                case 1 :
                    // InternalPureXbase.g:1862:3: kw= '+'
                    {
                    kw=(Token)match(input,44,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0());
                      		
                    }

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

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1());
                      		
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
125169
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 {
            // InternalPureXbase.g:5457:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
            // InternalPureXbase.g:5458:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
            {
            // InternalPureXbase.g:5458:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
            // InternalPureXbase.g:5459:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
            {
            // InternalPureXbase.g:5459:3: ()
            // InternalPureXbase.g:5460:4: 
            {
            if ( state.backtracking==0 ) {

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

            }

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

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

              			newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
              		
            }
            // InternalPureXbase.g:5474:3: ( ( ruleQualifiedName ) )
            // InternalPureXbase.g:5475:4: ( ruleQualifiedName )
            {
            // InternalPureXbase.g:5475:4: ( ruleQualifiedName )
            // InternalPureXbase.g:5476: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_67);
            ruleQualifiedName();

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

              					afterParserOrEnumRuleCall();
              				
            }

            }


            }

            // InternalPureXbase.g:5490:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
            loop98:
            do {
                int alt98=2;
                int LA98_0 = input.LA(1);

                if ( (LA98_0==61) ) {
                    alt98=1;
                }


                switch (alt98) {
            	case 1 :
            	    // InternalPureXbase.g:5491:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
            	    {
            	    // InternalPureXbase.g:5491:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
            	    // InternalPureXbase.g:5492:5: lv_arrayDimensions_4_0= ruleArrayBrackets
            	    {
            	    if ( state.backtracking==0 ) {

            	      					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0());
            	      				
            	    }
            	    pushFollow(FOLLOW_67);
            	    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 loop98;
                }
            } 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;
    }
1201227
public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;


        	enterRule();

        try {
            // InternalPureXbase.g:1498:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
            // InternalPureXbase.g:1499:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
            {
            // InternalPureXbase.g:1499:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
            int alt27=4;
            switch ( input.LA(1) ) {
            case 30:
                {
                alt27=1;
                }
                break;
            case 28:
                {
                int LA27_2 = input.LA(2);

                if ( (LA27_2==EOF||(LA27_2>=RULE_STRING && LA27_2<=RULE_ID)||(LA27_2>=14 && LA27_2<=15)||LA27_2==28||(LA27_2>=44 && LA27_2<=45)||LA27_2==50||(LA27_2>=58 && LA27_2<=59)||LA27_2==61||LA27_2==64||LA27_2==66||(LA27_2>=69 && LA27_2<=80)) ) {
                    alt27=4;
                }
                else if ( (LA27_2==20) ) {
                    alt27=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 27, 2, input);

                    throw nvae;
                }
                }
                break;
            case 29:
                {
                alt27=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 27, 0, input);

                throw nvae;
            }

            switch (alt27) {
                case 1 :
                    // InternalPureXbase.g:1500:3: kw= '>='
                    {
                    kw=(Token)match(input,30,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0());
                      		
                    }

                    }
                    break;
                case 2 :
                    // InternalPureXbase.g:1506:3: (kw= '<' kw= '=' )
                    {
                    // InternalPureXbase.g:1506:3: (kw= '<' kw= '=' )
                    // InternalPureXbase.g:1507:4: kw= '<' kw= '='
                    {
                    kw=(Token)match(input,28,FOLLOW_13); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				current.merge(kw);
                      				newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0());
                      			
                    }
                    kw=(Token)match(input,20,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      				current.merge(kw);
                      				newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1());
                      			
                    }

                    }


                    }
                    break;
                case 3 :
                    // InternalPureXbase.g:1519:3: kw= '>'
                    {
                    kw=(Token)match(input,29,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2());
                      		
                    }

                    }
                    break;
                case 4 :
                    // InternalPureXbase.g:1525:3: kw= '<'
                    {
                    kw=(Token)match(input,28,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3());
                      		
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

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