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 {
            // InternalXbaseWithAnnotations.g:5794:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
            // InternalXbaseWithAnnotations.g:5795:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
            {
            // InternalXbaseWithAnnotations.g:5795:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
            // InternalXbaseWithAnnotations.g:5796:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
            {
            if ( state.backtracking==0 ) {

              			newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0());
              		
            }
            pushFollow(FOLLOW_72);
            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();
              		
            }
            // InternalXbaseWithAnnotations.g:5806:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
            loop99:
            do {
                int alt99=2;
                int LA99_0 = input.LA(1);

                if ( (LA99_0==52) ) {
                    int LA99_2 = input.LA(2);

                    if ( (LA99_2==RULE_ID) ) {
                        int LA99_3 = input.LA(3);

                        if ( (synpred48_InternalXbaseWithAnnotations()) ) {
                            alt99=1;
                        }


                    }


                }


                switch (alt99) {
            	case 1 :
            	    // InternalXbaseWithAnnotations.g:5807:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
            	    {
            	    // InternalXbaseWithAnnotations.g:5807:4: ( ( '.' )=>kw= '.' )
            	    // InternalXbaseWithAnnotations.g:5808:5: ( '.' )=>kw= '.'
            	    {
            	    kw=(Token)match(input,52,FOLLOW_3); 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_72);
            	    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 loop99;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
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 { { { if ( state . backtracking == 0 ) { newCompositeNode ( grammarAccess . getQualifiedNameAccess ( ) . getValidIDParserRuleCall_0 ( ) ) ; } pushFollow ( FOLLOW_72 ) ; 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 ( ) ; } loop99 : do { int alt99 = 2 ; int LA99_0 = input . LA ( 1 ) ; if ( ( LA99_0 == 52 ) ) { int LA99_2 = input . LA ( 2 ) ; if ( ( LA99_2 == RULE_ID ) ) { int LA99_3 = input . LA ( 3 ) ; if ( ( synpred48_InternalXbaseWithAnnotations ( ) ) ) { alt99 = 1 ; } } } switch ( alt99 ) { case 1 : { { kw = ( Token ) match ( input , 52 , FOLLOW_3 ) ; 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_72 ) ; 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 loop99 ; } } while ( true ) ; } } if ( state . backtracking == 0 ) { leaveRule ( ) ; } } catch ( RecognitionException re ) { recover ( input , re ) ; appendSkippedTokens ( ) ; } finally { } return current ; }
InternalXbaseWithAnnotations.g:5788:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;