Loading ...
Sorry, an error occurred while loading the content.

Patch 7.3.1014

Expand Messages
  • Bram Moolenaar
    Patch 7.3.1014 Problem: New regexp state dump is hard to read. Solution: Make the state dump more pretty. (Taro Muraoka) Files: src/regexp_nfa.c ...
    Message 1 of 1 , May 25, 2013
    • 0 Attachment
      Patch 7.3.1014
      Problem: New regexp state dump is hard to read.
      Solution: Make the state dump more pretty. (Taro Muraoka)
      Files: src/regexp_nfa.c


      *** ../vim-7.3.1013/src/regexp_nfa.c 2013-05-25 12:18:34.000000000 +0200
      --- src/regexp_nfa.c 2013-05-25 12:25:43.000000000 +0200
      ***************
      *** 183,189 ****
      #ifdef DEBUG
      static void nfa_set_code __ARGS((int c));
      static void nfa_postfix_dump __ARGS((char_u *expr, int retval));
      ! static void nfa_print_state __ARGS((FILE *debugf, nfa_state_T *state, int ident));
      static void nfa_dump __ARGS((nfa_regprog_T *prog));
      #endif
      static int *re2post __ARGS((void));
      --- 183,190 ----
      #ifdef DEBUG
      static void nfa_set_code __ARGS((int c));
      static void nfa_postfix_dump __ARGS((char_u *expr, int retval));
      ! static void nfa_print_state __ARGS((FILE *debugf, nfa_state_T *state));
      ! static void nfa_print_state2 __ARGS((FILE *debugf, nfa_state_T *state, garray_T *indent));
      static void nfa_dump __ARGS((nfa_regprog_T *prog));
      #endif
      static int *re2post __ARGS((void));
      ***************
      *** 1811,1839 ****
      * Print the NFA starting with a root node "state".
      */
      static void
      ! nfa_print_state(debugf, state, ident)
      FILE *debugf;
      nfa_state_T *state;
      - int ident;
      {
      ! int i;

      if (state == NULL)
      return;

      fprintf(debugf, "(%2d)", abs(state->id));
      ! for (i = 0; i < ident; i++)
      ! fprintf(debugf, "%c", ' ');

      nfa_set_code(state->c);
      ! fprintf(debugf, "%s %s (%d) (id=%d)\n",
      ! state->negated ? "NOT" : "", code, state->c, abs(state->id));
      if (state->id < 0)
      return;

      state->id = abs(state->id) * -1;
      ! nfa_print_state(debugf, state->out, ident + 4);
      ! nfa_print_state(debugf, state->out1, ident + 4);
      }

      /*
      --- 1812,1885 ----
      * Print the NFA starting with a root node "state".
      */
      static void
      ! nfa_print_state(debugf, state)
      FILE *debugf;
      nfa_state_T *state;
      {
      ! garray_T indent;
      !
      ! ga_init2(&indent, 1, 64);
      ! ga_append(&indent, '\0');
      ! nfa_print_state2(debugf, state, &indent);
      ! ga_clear(&indent);
      ! }
      !
      ! static void
      ! nfa_print_state2(debugf, state, indent)
      ! FILE *debugf;
      ! nfa_state_T *state;
      ! garray_T *indent;
      ! {
      ! char_u *p;

      if (state == NULL)
      return;

      fprintf(debugf, "(%2d)", abs(state->id));
      !
      ! /* Output indent */
      ! p = (char_u *)indent->ga_data;
      ! if (indent->ga_len >= 3)
      ! {
      ! int last = indent->ga_len - 3;
      ! char_u save[2];
      !
      ! STRNCPY(save, &p[last], 2);
      ! STRNCPY(&p[last], "+-", 2);
      ! fprintf(debugf, " %s", p);
      ! STRNCPY(&p[last], save, 2);
      ! }
      ! else
      ! fprintf(debugf, " %s", p);

      nfa_set_code(state->c);
      ! fprintf(debugf, "%s%s (%d) (id=%d)\n",
      ! state->negated ? "NOT " : "", code, state->c, abs(state->id));
      if (state->id < 0)
      return;

      state->id = abs(state->id) * -1;
      !
      ! /* grow indent for state->out */
      ! indent->ga_len -= 1;
      ! if (state->out1)
      ! ga_concat(indent, "| ");
      ! else
      ! ga_concat(indent, " ");
      ! ga_append(indent, '\0');
      !
      ! nfa_print_state2(debugf, state->out, indent);
      !
      ! /* replace last part of indent for state->out1 */
      ! indent->ga_len -= 3;
      ! ga_concat(indent, " ");
      ! ga_append(indent, '\0');
      !
      ! nfa_print_state2(debugf, state->out1, indent);
      !
      ! /* shrink indent */
      ! indent->ga_len -= 3;
      ! ga_append(indent, '\0');
      }

      /*
      ***************
      *** 1847,1853 ****

      if (debugf != NULL)
      {
      ! nfa_print_state(debugf, prog->start, 0);
      fclose(debugf);
      }
      }
      --- 1893,1899 ----

      if (debugf != NULL)
      {
      ! nfa_print_state(debugf, prog->start);
      fclose(debugf);
      }
      }
      ***************
      *** 3505,3511 ****
      #endif
      fprintf(f, "\tInput text is \"%s\" \n", reginput);
      fprintf(f, " =======================================================\n\n\n\n\n\n\n");
      ! nfa_print_state(f, start, 0);
      fprintf(f, "\n\n");
      fclose(f);
      }
      --- 3551,3557 ----
      #endif
      fprintf(f, "\tInput text is \"%s\" \n", reginput);
      fprintf(f, " =======================================================\n\n\n\n\n\n\n");
      ! nfa_print_state(f, start);
      fprintf(f, "\n\n");
      fclose(f);
      }
      *** ../vim-7.3.1013/src/version.c 2013-05-25 12:18:34.000000000 +0200
      --- src/version.c 2013-05-25 12:27:22.000000000 +0200
      ***************
      *** 730,731 ****
      --- 730,733 ----
      { /* Add new patch number below this line */
      + /**/
      + 1014,
      /**/

      --
      Lower life forms have more fun!

      /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
      /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
      \\\ an exciting new programming language -- http://www.Zimbu.org ///
      \\\ help me help AIDS victims -- http://ICCF-Holland.org ///

      --
      --
      You received this message from the "vim_dev" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php

      ---
      You received this message because you are subscribed to the Google Groups "vim_dev" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    Your message has been successfully submitted and would be delivered to recipients shortly.