docs: public final AntlrDatatypeRuleToken ruleFQN() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token this_ID_0=null;
          Token kw=null;
          Token this_ID_2=null;
  
           enterRule(); 
              
          try {
              // InternalSimpleExpressions.g:772:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
              // InternalSimpleExpressions.g:773:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
              {
              // InternalSimpleExpressions.g:773:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
              // InternalSimpleExpressions.g:773:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
              {
              this_ID_0=(Token)match(input,RULE_ID,FOLLOW_15); 
  
              		current.merge(this_ID_0);
                  
               
                  newLeafNode(this_ID_0, grammarAccess.getFQNAccess().getIDTerminalRuleCall_0()); 
                  
              // InternalSimpleExpressions.g:780:1: (kw= '.' this_ID_2= RULE_ID )*
              loop14:
              do {
                  int alt14=2;
                  int LA14_0 = input.LA(1);
  
                  if ( (LA14_0==25) ) {
                      alt14=1;
                  }
  
  
                  switch (alt14) {
              	case 1 :
              	    // InternalSimpleExpressions.g:781:2: kw= '.' this_ID_2= RULE_ID
              	    {
              	    kw=(Token)match(input,25,FOLLOW_16); 
  
              	            current.merge(kw);
              	            newLeafNode(kw, grammarAccess.getFQNAccess().getFullStopKeyword_1_0()); 
              	        
              	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_15); 
  
              	    		current.merge(this_ID_2);
              	        
              	     
              	        newLeafNode(this_ID_2, grammarAccess.getFQNAccess().getIDTerminalRuleCall_1_1()); 
              	        
  
              	    }
              	    break;
  
              	default :
              	    break loop14;
                  }
              } while (true);
  
  
              }
  
  
              }
  
               leaveRule(); 
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }