home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / patches / 7.3 / 7.3.1118 < prev    next >
Encoding:
Internet Message Format  |  2013-06-04  |  4.5 KB

  1. To: vim_dev@googlegroups.com
  2. Subject: Patch 7.3.1118
  3. Fcc: outbox
  4. From: Bram Moolenaar <Bram@moolenaar.net>
  5. Mime-Version: 1.0
  6. Content-Type: text/plain; charset=UTF-8
  7. Content-Transfer-Encoding: 8bit
  8. ------------
  9.  
  10. Patch 7.3.1118
  11. Problem:    Match failure rate is not very specific.
  12. Solution:   Tune the failure rate for match items.
  13. Files:        src/regexp_nfa.c
  14.  
  15.  
  16. *** ../vim-7.3.1117/src/regexp_nfa.c    2013-06-05 11:05:12.000000000 +0200
  17. --- src/regexp_nfa.c    2013-06-05 11:41:09.000000000 +0200
  18. ***************
  19. *** 3956,3980 ****
  20.       if (depth > 4)
  21.       return 1;
  22.   
  23. !     if (c == NFA_SPLIT)
  24.       {
  25. !     if (state->out->c == NFA_SPLIT || state->out1->c == NFA_SPLIT)
  26.           return 1;
  27. !     l = failure_chance(state->out, depth + 1);
  28. !     r = failure_chance(state->out1, depth + 1);
  29. !     return l < r ? l : r;
  30. !     }
  31. !     if (c == NFA_ANY)
  32. !     return 1;
  33. !     if (c > 0)
  34. !     return 99;
  35. !     if ((c >= NFA_MOPEN && c <= NFA_MOPEN9)
  36.   #ifdef FEAT_SYN_HL
  37. !         || (c >= NFA_ZOPEN && c <= NFA_ZOPEN9)
  38.   #endif
  39. !         || c == NFA_NOPEN)
  40. !     return failure_chance(state->out, depth + 1);
  41. !     /* something else */
  42.       return 50;
  43.   }
  44.   
  45. --- 3956,4093 ----
  46.       if (depth > 4)
  47.       return 1;
  48.   
  49. !     switch (c)
  50.       {
  51. !     case NFA_SPLIT:
  52. !         if (state->out->c == NFA_SPLIT || state->out1->c == NFA_SPLIT)
  53. !         /* avoid recursive stuff */
  54. !         return 1;
  55. !         /* two alternatives, use the lowest failure chance */
  56. !         l = failure_chance(state->out, depth + 1);
  57. !         r = failure_chance(state->out1, depth + 1);
  58. !         return l < r ? l : r;
  59. !     case NFA_ANY:
  60. !         /* matches anything, unlikely to fail */
  61.           return 1;
  62. !     case NFA_MATCH:
  63. !         /* empty match works always */
  64. !         return 0;
  65. !     case NFA_BOL:
  66. !     case NFA_EOL:
  67. !     case NFA_BOF:
  68. !     case NFA_EOF:
  69. !     case NFA_NEWL:
  70. !         return 99;
  71. !     case NFA_BOW:
  72. !     case NFA_EOW:
  73. !         return 90;
  74. !     case NFA_MOPEN:
  75. !     case NFA_MOPEN1:
  76. !     case NFA_MOPEN2:
  77. !     case NFA_MOPEN3:
  78. !     case NFA_MOPEN4:
  79. !     case NFA_MOPEN5:
  80. !     case NFA_MOPEN6:
  81. !     case NFA_MOPEN7:
  82. !     case NFA_MOPEN8:
  83. !     case NFA_MOPEN9:
  84. ! #ifdef FEAT_SYN_HL
  85. !     case NFA_ZOPEN:
  86. !     case NFA_ZOPEN1:
  87. !     case NFA_ZOPEN2:
  88. !     case NFA_ZOPEN3:
  89. !     case NFA_ZOPEN4:
  90. !     case NFA_ZOPEN5:
  91. !     case NFA_ZOPEN6:
  92. !     case NFA_ZOPEN7:
  93. !     case NFA_ZOPEN8:
  94. !     case NFA_ZOPEN9:
  95. !     case NFA_ZCLOSE:
  96. !     case NFA_ZCLOSE1:
  97. !     case NFA_ZCLOSE2:
  98. !     case NFA_ZCLOSE3:
  99. !     case NFA_ZCLOSE4:
  100. !     case NFA_ZCLOSE5:
  101. !     case NFA_ZCLOSE6:
  102. !     case NFA_ZCLOSE7:
  103. !     case NFA_ZCLOSE8:
  104. !     case NFA_ZCLOSE9:
  105. ! #endif
  106. !     case NFA_NOPEN:
  107. !     case NFA_MCLOSE:
  108. !     case NFA_MCLOSE1:
  109. !     case NFA_MCLOSE2:
  110. !     case NFA_MCLOSE3:
  111. !     case NFA_MCLOSE4:
  112. !     case NFA_MCLOSE5:
  113. !     case NFA_MCLOSE6:
  114. !     case NFA_MCLOSE7:
  115. !     case NFA_MCLOSE8:
  116. !     case NFA_MCLOSE9:
  117. !     case NFA_NCLOSE:
  118. !         return failure_chance(state->out, depth + 1);
  119. !     case NFA_BACKREF1:
  120. !     case NFA_BACKREF2:
  121. !     case NFA_BACKREF3:
  122. !     case NFA_BACKREF4:
  123. !     case NFA_BACKREF5:
  124. !     case NFA_BACKREF6:
  125. !     case NFA_BACKREF7:
  126. !     case NFA_BACKREF8:
  127. !     case NFA_BACKREF9:
  128.   #ifdef FEAT_SYN_HL
  129. !     case NFA_ZREF1:
  130. !     case NFA_ZREF2:
  131. !     case NFA_ZREF3:
  132. !     case NFA_ZREF4:
  133. !     case NFA_ZREF5:
  134. !     case NFA_ZREF6:
  135. !     case NFA_ZREF7:
  136. !     case NFA_ZREF8:
  137. !     case NFA_ZREF9:
  138.   #endif
  139. !         /* backreferences don't match in many places */
  140. !         return 94;
  141. !     case NFA_LNUM_GT:
  142. !     case NFA_LNUM_LT:
  143. !     case NFA_COL_GT:
  144. !     case NFA_COL_LT:
  145. !     case NFA_VCOL_GT:
  146. !     case NFA_VCOL_LT:
  147. !     case NFA_MARK_GT:
  148. !     case NFA_MARK_LT:
  149. ! #ifdef FEAT_VISUAL
  150. !     case NFA_VISUAL:
  151. ! #endif
  152. !         /* before/after positions don't match very often */
  153. !         return 85;
  154. !     case NFA_LNUM:
  155. !         return 90;
  156. !     case NFA_CURSOR:
  157. !     case NFA_COL:
  158. !     case NFA_VCOL:
  159. !     case NFA_MARK:
  160. !         /* specific positions rarely match */
  161. !         return 98;
  162. !     case NFA_COMPOSING:
  163. !         return 95;
  164. !     default:
  165. !         if (c > 0)
  166. !         /* character match fails often */
  167. !         return 95;
  168. !     }
  169. !     /* something else, includes character classes */
  170.       return 50;
  171.   }
  172.   
  173. *** ../vim-7.3.1117/src/version.c    2013-06-05 11:05:12.000000000 +0200
  174. --- src/version.c    2013-06-05 11:41:58.000000000 +0200
  175. ***************
  176. *** 730,731 ****
  177. --- 730,733 ----
  178.   {   /* Add new patch number below this line */
  179. + /**/
  180. +     1118,
  181.   /**/
  182.  
  183. -- 
  184. From "know your smileys":
  185.  :~)    A man with a tape recorder up his nose
  186.  
  187.  /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
  188. ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
  189. \\\  an exciting new programming language -- http://www.Zimbu.org        ///
  190.  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
  191.