code: def if_statement(self):
          
          self._process(Nature.IF)
          if_condition = self.logical_or_expr()
          if_body = self.compound()
  
          else_compound = None
          else_if_compounds = []
          while self.token.nature == Nature.ELSE:
              self._process(Nature.ELSE)
  
              if self.token.nature == Nature.IF:
                  self._process(Nature.IF)
                  else_if_compounds.append((self.logical_or_expr(), self.compound()))
              else:
                  else_compound = (None, self.compound())
  
          return IfStatement(
              if_compound=(if_condition, if_body),
              else_if_compounds=else_if_compounds,
              else_compound=else_compound,
          )
docs: if_statement: 'if' logical_or_expr compound
                      ('else' 'if' local_or_expr compound)*
                      ['else' compound]