code: def p_horizon_spec_section(self, p):
          '''horizon_spec_section : HORIZON ASSIGN_EQUAL pos_int_type_or_pos_inf SEMI
                                  | HORIZON ASSIGN_EQUAL TERMINATE_WHEN LPAREN expr RPAREN'''
          if len(p) == 5:
              p[0] = ('horizon', p[3])
          elif len(p) == 7:
              p[0] = ('horizon', p[5])
          self._print_verbose('horizon'f p_horizon_spec_section(self, p):
          '''horizon_spec_section : HORIZON ASSIGN_EQUAL pos_int_type_or_pos_inf SEMI
                                  | HORIZON ASSIGN_EQUAL TERMINATE_WHEN LPAREN expr RPAREN'''
          if len(p) == 5:
              p[0] = ('horizon', p[3])
          elif len(p) == 7:
              p[0] = ('horizon', p[5])
          self._print_verbose('horizon')
docs: horizon_spec_section : HORIZON ASSIGN_EQUAL pos_int_type_or_pos_inf SEMI
                                  | HORIZON ASSIGN_EQUAL TERMINATE_WHEN LPAREN expr RPAREN