docs: public final EObject ruleAtom() throws RecognitionException {
          EObject current = null;
  
          EObject this_ParenthesizedExpression_0 = null;
  
          EObject this_NumberLiteral_1 = null;
  
          EObject this_MethodCall_2 = null;
  
          EObject this_BooleanLiteral_3 = null;
  
  
           enterRule(); 
              
          try {
              // InternalSimpleExpressions.g:420:28: ( (this_ParenthesizedExpression_0= ruleParenthesizedExpression | this_NumberLiteral_1= ruleNumberLiteral | this_MethodCall_2= ruleMethodCall | this_BooleanLiteral_3= ruleBooleanLiteral ) )
              // InternalSimpleExpressions.g:421:1: (this_ParenthesizedExpression_0= ruleParenthesizedExpression | this_NumberLiteral_1= ruleNumberLiteral | this_MethodCall_2= ruleMethodCall | this_BooleanLiteral_3= ruleBooleanLiteral )
              {
              // InternalSimpleExpressions.g:421:1: (this_ParenthesizedExpression_0= ruleParenthesizedExpression | this_NumberLiteral_1= ruleNumberLiteral | this_MethodCall_2= ruleMethodCall | this_BooleanLiteral_3= ruleBooleanLiteral )
              int alt7=4;
              switch ( input.LA(1) ) {
              case 13:
                  {
                  alt7=1;
                  }
                  break;
              case RULE_INT:
                  {
                  alt7=2;
                  }
                  break;
              case RULE_ID:
                  {
                  alt7=3;
                  }
                  break;
              case 22:
              case 23:
                  {
                  alt7=4;
                  }
                  break;
              default:
                  NoViableAltException nvae =
                      new NoViableAltException("", 7, 0, input);
  
                  throw nvae;
              }
  
              switch (alt7) {
                  case 1 :
                      // InternalSimpleExpressions.g:422:5: this_ParenthesizedExpression_0= ruleParenthesizedExpression
                      {
                       
                              newCompositeNode(grammarAccess.getAtomAccess().getParenthesizedExpressionParserRuleCall_0()); 
                          
                      pushFollow(FOLLOW_2);
                      this_ParenthesizedExpression_0=ruleParenthesizedExpression();
  
                      state._fsp--;
  
                       
                              current = this_ParenthesizedExpression_0; 
                              afterParserOrEnumRuleCall();
                          
  
                      }
                      break;
                  case 2 :
                      // InternalSimpleExpressions.g:432:5: this_NumberLiteral_1= ruleNumberLiteral
                      {
                       
                              newCompositeNode(grammarAccess.getAtomAccess().getNumberLiteralParserRuleCall_1()); 
                          
                      pushFollow(FOLLOW_2);
                      this_NumberLiteral_1=ruleNumberLiteral();
  
                      state._fsp--;
  
                       
                              current = this_NumberLiteral_1; 
                              afterParserOrEnumRuleCall();
                          
  
                      }
                      break;
                  case 3 :
                      // InternalSimpleExpressions.g:442:5: this_MethodCall_2= ruleMethodCall
                      {
                       
                              newCompositeNode(grammarAccess.getAtomAccess().getMethodCallParserRuleCall_2()); 
                          
                      pushFollow(FOLLOW_2);
                      this_MethodCall_2=ruleMethodCall();
  
                      state._fsp--;
  
                       
                              current = this_MethodCall_2; 
                              afterParserOrEnumRuleCall();
                          
  
                      }
                      break;
                  case 4 :
                      // InternalSimpleExpressions.g:452:5: this_BooleanLiteral_3= ruleBooleanLiteral
                      {
                       
                              newCompositeNode(grammarAccess.getAtomAccess().getBooleanLiteralParserRuleCall_3()); 
                          
                      pushFollow(FOLLOW_2);
                      this_BooleanLiteral_3=ruleBooleanLiteral();
  
                      state._fsp--;
  
                       
                              current = this_BooleanLiteral_3; 
                              afterParserOrEnumRuleCall();
                          
  
                      }
                      break;
  
              }
  
  
              }
  
               leaveRule(); 
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }