1 diff -r 85c04c7963d1 -r 43de4ebbe7ad src/regexp_nfa.c
2 --- src/regexp_nfa.c Tue Jun 04 14:23:05 2013 +0200
3 +++ src/regexp_nfa.c Tue Jun 04 17:47:05 2013 +0200
9 - /* Each of these variables takes up a char in "config[]",
10 - * in the order they are here. */
11 - int not = FALSE, af = FALSE, AF = FALSE, az = FALSE, AZ = FALSE,
12 - o7 = FALSE, o9 = FALSE, underscore = FALSE, newl = FALSE;
13 +# define CLASS_not 0x80
14 +# define CLASS_af 0x40
15 +# define CLASS_AF 0x20
16 +# define CLASS_az 0x10
17 +# define CLASS_AZ 0x08
18 +# define CLASS_o7 0x04
19 +# define CLASS_o9 0x02
20 +# define CLASS_underscore 0x01
25 - int classid[NCONFIGS] = {
26 - NFA_DIGIT, NFA_NDIGIT, NFA_HEX, NFA_NHEX,
27 - NFA_OCTAL, NFA_NOCTAL, NFA_WORD, NFA_NWORD,
28 - NFA_HEAD, NFA_NHEAD, NFA_ALPHA, NFA_NALPHA,
29 - NFA_LOWER, NFA_NLOWER, NFA_UPPER, NFA_NUPPER
31 - char_u myconfig[10];
32 - char_u config[NCONFIGS][9] = {
33 - "000000100", /* digit */
34 - "100000100", /* non digit */
35 - "011000100", /* hex-digit */
36 - "111000100", /* non hex-digit */
37 - "000001000", /* octal-digit */
38 - "100001000", /* [^0-7] */
39 - "000110110", /* [0-9A-Za-z_] */
40 - "100110110", /* [^0-9A-Za-z_] */
41 - "000110010", /* head of word */
42 - "100110010", /* not head of word */
43 - "000110000", /* alphabetic char a-z */
44 - "100110000", /* non alphabetic char */
45 - "000100000", /* lowercase letter */
46 - "100100000", /* non lowercase */
47 - "000010000", /* uppercase */
48 - "100010000" /* non uppercase */
52 if (extra_newl == TRUE)
59 + config |= CLASS_not;
103 + config |= CLASS_AF;
112 + config |= CLASS_underscore;
116 @@ -495,38 +475,45 @@
120 - /* build the config that represents the ranges we gathered */
121 - STRCPY(myconfig, "000000000");
136 - if (underscore == TRUE)
139 + extra_newl = ADD_NL;
144 - extra_newl = ADD_NL;
146 + return extra_newl + NFA_DIGIT;
147 + case CLASS_not | CLASS_o9:
148 + return extra_newl + NFA_NDIGIT;
149 + case CLASS_af | CLASS_AF | CLASS_o9:
150 + return extra_newl + NFA_HEX;
151 + case CLASS_not | CLASS_af | CLASS_AF | CLASS_o9:
152 + return extra_newl + NFA_NHEX;
154 + return extra_newl + NFA_OCTAL;
155 + case CLASS_not | CLASS_o7:
156 + return extra_newl + NFA_NOCTAL;
157 + case CLASS_az | CLASS_AZ | CLASS_o9 | CLASS_underscore:
158 + return extra_newl + NFA_WORD;
159 + case CLASS_not | CLASS_az | CLASS_AZ | CLASS_o9 | CLASS_underscore:
160 + return extra_newl + NFA_NWORD;
161 + case CLASS_az | CLASS_AZ | CLASS_underscore:
162 + return extra_newl + NFA_HEAD;
163 + case CLASS_not | CLASS_az | CLASS_AZ | CLASS_underscore:
164 + return extra_newl + NFA_NHEAD;
165 + case CLASS_az | CLASS_AZ:
166 + return extra_newl + NFA_ALPHA;
167 + case CLASS_not | CLASS_az | CLASS_AZ:
168 + return extra_newl + NFA_NALPHA;
170 + return extra_newl + NFA_LOWER;
171 + case CLASS_not | CLASS_az:
172 + return extra_newl + NFA_NLOWER;
174 + return extra_newl + NFA_UPPER;
175 + case CLASS_not | CLASS_AZ:
176 + return extra_newl + NFA_NUPPER;
178 - /* try to recognize character classes */
179 - for (i = 0; i < NCONFIGS; i++)
180 - if (STRNCMP(myconfig, config[i], 8) == 0)
181 - return classid[i] + extra_newl;
183 - /* fallthrough => no success so far */
191 EMSG_RET_FAIL(_(e_z1_not_allowed));
192 EMIT(NFA_ZREF1 + (no_Magic(c) - '1'));
193 /* No need to set nfa_has_backref, the sub-matches don't
194 - * change when \z1 .. \z9 maches or not. */
195 + * change when \z1 .. \z9 matches or not. */
199 @@ -4658,7 +4645,7 @@
203 - /* skip ofer the matched characters, set character
204 + /* skip over the matched characters, set character
205 * count in NFA_SKIP */
207 add_state = t->state->out;
208 diff -r 85c04c7963d1 -r 43de4ebbe7ad src/testdir/test36.in
209 --- src/testdir/test36.in Tue Jun 04 14:23:05 2013 +0200
210 +++ src/testdir/test36.in Tue Jun 04 17:47:05 2013 +0200
212 -Test character classes in regexp
213 +Test character classes in regexp using regexpengine 0, 1, 2.
261 +p:s/\%#=0[0-9A-Fa-f]//g
262 +p:s/\%#=1[0-9A-Fa-f]//g
263 +p:s/\%#=2[0-9A-Fa-f]//g
267 +p:s/\%#=0[^0-9A-Fa-f]//g
268 +p:s/\%#=1[^0-9A-Fa-f]//g
269 +p:s/\%#=2[^0-9A-Fa-f]//g
273 +p:s/\%#=0[0-9A-Za-z_]//g
274 +p:s/\%#=1[0-9A-Za-z_]//g
275 +p:s/\%#=2[0-9A-Za-z_]//g
279 +p:s/\%#=0[^0-9A-Za-z_]//g
280 +p:s/\%#=1[^0-9A-Za-z_]//g
281 +p:s/\%#=2[^0-9A-Za-z_]//g
285 +p:s/\%#=0[A-Za-z_]//g
286 +p:s/\%#=1[A-Za-z_]//g
287 +p:s/\%#=2[A-Za-z_]//g
291 +p:s/\%#=0[^A-Za-z_]//g
292 +p:s/\%#=1[^A-Za-z_]//g
293 +p:s/\%#=2[^A-Za-z_]//g
297 +p:s/\%#=0[A-Za-z]//g
298 +p:s/\%#=1[A-Za-z]//g
299 +p:s/\%#=2[A-Za-z]//g
303 +p:s/\%#=0[^A-Za-z]//g
304 +p:s/\%#=1[^A-Za-z]//g
305 +p:s/\%#=2[^A-Za-z]//g
330 :/^start-here/+1,$wq! test.out
334 \f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
335 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
336 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
337 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
338 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
339 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
340 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
341 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
342 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
343 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
344 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
345 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
346 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
347 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
348 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
349 -
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
350 diff -r 85c04c7963d1 -r 43de4ebbe7ad src/testdir/test36.ok
351 --- src/testdir/test36.ok Tue Jun 04 14:23:05 2013 +0200
352 +++ src/testdir/test36.ok Tue Jun 04 17:47:05 2013 +0200
354 +
\f\r !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
355 +
\f\r !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
356 +
\f\r !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
357 +
\f\r !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
358 +
\f\r !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
359 \f\r !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
366 +
\f\r !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
367 +
\f\r !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
368 +
\f\r !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
369 +
\f\r !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
370 +
\f\r !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
371 \f\r !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
378 +
\f\r !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
379 +
\f\r !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
380 +
\f\r !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
381 +
\f\r !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
382 +
\f\r !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
383 \f\r !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
384 0123456789ABCDEFabcdef
385 +0123456789ABCDEFabcdef
386 +0123456789ABCDEFabcdef
387 +0123456789ABCDEFabcdef
388 +0123456789ABCDEFabcdef
389 +0123456789ABCDEFabcdef
390 +
\f\r !"#$%&'()#+'-./:;<=>?@[\]^`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
391 +
\f\r !"#$%&'()#+'-./:;<=>?@[\]^`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
392 +
\f\r !"#$%&'()#+'-./:;<=>?@[\]^`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
393 +
\f\r !"#$%&'()#+'-./:;<=>?@[\]^`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
394 +
\f\r !"#$%&'()#+'-./:;<=>?@[\]^`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
395 \f\r !"#$%&'()#+'-./:;<=>?@[\]^`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
396 0123456789ABCDEFGHIXYZ_abcdefghiwxyz
397 +0123456789ABCDEFGHIXYZ_abcdefghiwxyz
398 +0123456789ABCDEFGHIXYZ_abcdefghiwxyz
399 +0123456789ABCDEFGHIXYZ_abcdefghiwxyz
400 +0123456789ABCDEFGHIXYZ_abcdefghiwxyz
401 +0123456789ABCDEFGHIXYZ_abcdefghiwxyz
402 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
403 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
404 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
405 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
406 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
407 \f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
408 ABCDEFGHIXYZ_abcdefghiwxyz
409 +ABCDEFGHIXYZ_abcdefghiwxyz
410 +ABCDEFGHIXYZ_abcdefghiwxyz
411 +ABCDEFGHIXYZ_abcdefghiwxyz
412 +ABCDEFGHIXYZ_abcdefghiwxyz
413 +ABCDEFGHIXYZ_abcdefghiwxyz
414 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
415 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
416 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
417 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
418 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
419 \f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
420 ABCDEFGHIXYZabcdefghiwxyz
421 +ABCDEFGHIXYZabcdefghiwxyz
422 +ABCDEFGHIXYZabcdefghiwxyz
423 +ABCDEFGHIXYZabcdefghiwxyz
424 +ABCDEFGHIXYZabcdefghiwxyz
425 +ABCDEFGHIXYZabcdefghiwxyz
426 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
427 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
428 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
429 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
430 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
431 \f\r !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~
\7f\80\82\90\9b¦±¼ÇÓé
438 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
439 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
440 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
441 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
442 +
\f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
443 \f\r !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~
\7f\80\82\90\9b¦±¼ÇÓé
450 diff -r 85c04c7963d1 -r 43de4ebbe7ad src/version.c
451 --- src/version.c Tue Jun 04 14:23:05 2013 +0200
452 +++ src/version.c Tue Jun 04 17:47:05 2013 +0200
454 static int included_patches[] =
455 { /* Add new patch number below this line */