docs: public final void mID() throws RecognitionException {
          try {
              int _type = ID;
              int _channel = DEFAULT_TOKEN_CHANNEL;
              // src/riemann/Query.g:85:5: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* )
              // src/riemann/Query.g:85:7: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
              {
              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;}
  
              // src/riemann/Query.g:85:31: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )*
              loop1:
              do {
                  int alt1=2;
                  int LA1_0 = input.LA(1);
  
                  if ( ((LA1_0>='0' && LA1_0<='9')||(LA1_0>='A' && LA1_0<='Z')||LA1_0=='_'||(LA1_0>='a' && LA1_0<='z')) ) {
                      alt1=1;
                  }
  
  
                  switch (alt1) {
              	case 1 :
              	    // src/riemann/Query.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 loop1;
                  }
              } while (true);
  
  
              }
  
              state.type = _type;
              state.channel = _channel;
          }
          finally {
          }
      }