/[pcre]/code/trunk/pcre_dfa_exec.c
ViewVC logotype

Diff of /code/trunk/pcre_dfa_exec.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 178 by ph10, Wed Jun 13 08:44:34 2007 UTC revision 200 by ph10, Wed Aug 1 09:10:40 2007 UTC
# Line 44  FSM). This is NOT Perl- compatible, but Line 44  FSM). This is NOT Perl- compatible, but
44  applications. */  applications. */
45    
46    
47    #ifdef HAVE_CONFIG_H
48    #include <config.h>
49    #endif
50    
51  #define NLBLOCK md             /* Block containing newline information */  #define NLBLOCK md             /* Block containing newline information */
52  #define PSSTART start_subject  /* Field containing processed string start */  #define PSSTART start_subject  /* Field containing processed string start */
53  #define PSEND   end_subject    /* Field containing processed string end */  #define PSEND   end_subject    /* Field containing processed string end */
# Line 63  applications. */ Line 67  applications. */
67    
68  /* These are offsets that are used to turn the OP_TYPESTAR and friends opcodes  /* These are offsets that are used to turn the OP_TYPESTAR and friends opcodes
69  into others, under special conditions. A gap of 20 between the blocks should be  into others, under special conditions. A gap of 20 between the blocks should be
70  enough. The resulting opcodes don't have to be less than 256 because they are  enough. The resulting opcodes don't have to be less than 256 because they are
71  never stored, so we push them well clear of the normal opcodes. */  never stored, so we push them well clear of the normal opcodes. */
72    
73  #define OP_PROP_EXTRA       300  #define OP_PROP_EXTRA       300
# Line 585  for (;;) Line 589  for (;;)
589            case OP_ANYNL: codevalue += OP_ANYNL_EXTRA; break;            case OP_ANYNL: codevalue += OP_ANYNL_EXTRA; break;
590            case OP_EXTUNI: codevalue += OP_EXTUNI_EXTRA; break;            case OP_EXTUNI: codevalue += OP_EXTUNI_EXTRA; break;
591            case OP_NOT_HSPACE:            case OP_NOT_HSPACE:
592            case OP_HSPACE: codevalue += OP_HSPACE_EXTRA; break;            case OP_HSPACE: codevalue += OP_HSPACE_EXTRA; break;
593            case OP_NOT_VSPACE:            case OP_NOT_VSPACE:
594            case OP_VSPACE: codevalue += OP_VSPACE_EXTRA; break;            case OP_VSPACE: codevalue += OP_VSPACE_EXTRA; break;
595            default: break;            default: break;
596            }            }
597          }          }
# Line 1105  for (;;) Line 1109  for (;;)
1109        if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }        if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
1110        if (clen > 0)        if (clen > 0)
1111          {          {
1112          BOOL OK;          BOOL OK;
1113          switch (c)          switch (c)
1114            {            {
1115            case 0x000a:            case 0x000a:
# Line 1116  for (;;) Line 1120  for (;;)
1120            case 0x2028:            case 0x2028:
1121            case 0x2029:            case 0x2029:
1122            OK = TRUE;            OK = TRUE;
1123            break;            break;
1124    
1125            default:            default:
1126            OK = FALSE;            OK = FALSE;
1127            break;            break;
1128            }            }
1129    
1130          if (OK == (d == OP_VSPACE))          if (OK == (d == OP_VSPACE))
1131            {            {
1132            if (count > 0 && codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSPLUS)            if (count > 0 && codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSPLUS)
1133              {              {
1134              active_count--;           /* Remove non-match possibility */              active_count--;           /* Remove non-match possibility */
# Line 1144  for (;;) Line 1148  for (;;)
1148        if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }        if (count > 0) { ADD_ACTIVE(state_offset + 2, 0); }
1149        if (clen > 0)        if (clen > 0)
1150          {          {
1151          BOOL OK;          BOOL OK;
1152          switch (c)          switch (c)
1153            {            {
1154            case 0x09:      /* HT */            case 0x09:      /* HT */
# Line 1168  for (;;) Line 1172  for (;;)
1172            case 0x3000:    /* IDEOGRAPHIC SPACE */            case 0x3000:    /* IDEOGRAPHIC SPACE */
1173            OK = TRUE;            OK = TRUE;
1174            break;            break;
1175    
1176            default:            default:
1177            OK = FALSE;            OK = FALSE;
1178            break;            break;
1179            }            }
1180    
1181          if (OK == (d == OP_HSPACE))          if (OK == (d == OP_HSPACE))
1182            {            {
1183            if (count > 0 && codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSPLUS)            if (count > 0 && codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSPLUS)
1184              {              {
1185              active_count--;           /* Remove non-match possibility */              active_count--;           /* Remove non-match possibility */
# Line 1346  for (;;) Line 1350  for (;;)
1350        ADD_ACTIVE(state_offset + 2, 0);        ADD_ACTIVE(state_offset + 2, 0);
1351        if (clen > 0)        if (clen > 0)
1352          {          {
1353          BOOL OK;          BOOL OK;
1354          switch (c)          switch (c)
1355            {            {
1356            case 0x000a:            case 0x000a:
# Line 1358  for (;;) Line 1362  for (;;)
1362            case 0x2029:            case 0x2029:
1363            OK = TRUE;            OK = TRUE;
1364            break;            break;
1365    
1366            default:            default:
1367            OK = FALSE;            OK = FALSE;
1368            break;            break;
1369            }            }
1370          if (OK == (d == OP_VSPACE))          if (OK == (d == OP_VSPACE))
1371            {            {
1372            if (codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSSTAR ||            if (codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSSTAR ||
1373                codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSQUERY)                codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSQUERY)
1374              {              {
# Line 1392  for (;;) Line 1396  for (;;)
1396        ADD_ACTIVE(state_offset + 2, 0);        ADD_ACTIVE(state_offset + 2, 0);
1397        if (clen > 0)        if (clen > 0)
1398          {          {
1399          BOOL OK;          BOOL OK;
1400          switch (c)          switch (c)
1401            {            {
1402            case 0x09:      /* HT */            case 0x09:      /* HT */
# Line 1416  for (;;) Line 1420  for (;;)
1420            case 0x3000:    /* IDEOGRAPHIC SPACE */            case 0x3000:    /* IDEOGRAPHIC SPACE */
1421            OK = TRUE;            OK = TRUE;
1422            break;            break;
1423    
1424            default:            default:
1425            OK = FALSE;            OK = FALSE;
1426            break;            break;
1427            }            }
1428    
1429          if (OK == (d == OP_HSPACE))          if (OK == (d == OP_HSPACE))
1430            {            {
1431            if (codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSSTAR ||            if (codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSSTAR ||
1432                codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSQUERY)                codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSQUERY)
1433              {              {
# Line 1574  for (;;) Line 1578  for (;;)
1578        count = current_state->count;  /* Number already matched */        count = current_state->count;  /* Number already matched */
1579        if (clen > 0)        if (clen > 0)
1580          {          {
1581          BOOL OK;          BOOL OK;
1582          switch (c)          switch (c)
1583            {            {
1584            case 0x000a:            case 0x000a:
# Line 1586  for (;;) Line 1590  for (;;)
1590            case 0x2029:            case 0x2029:
1591            OK = TRUE;            OK = TRUE;
1592            break;            break;
1593    
1594            default:            default:
1595            OK = FALSE;            OK = FALSE;
1596            }            }
1597    
1598          if (OK == (d == OP_VSPACE))          if (OK == (d == OP_VSPACE))
1599            {            {
1600            if (codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSUPTO)            if (codevalue == OP_VSPACE_EXTRA + OP_TYPEPOSUPTO)
1601              {              {
1602              active_count--;           /* Remove non-match possibility */              active_count--;           /* Remove non-match possibility */
# Line 1616  for (;;) Line 1620  for (;;)
1620        count = current_state->count;  /* Number already matched */        count = current_state->count;  /* Number already matched */
1621        if (clen > 0)        if (clen > 0)
1622          {          {
1623          BOOL OK;          BOOL OK;
1624          switch (c)          switch (c)
1625            {            {
1626            case 0x09:      /* HT */            case 0x09:      /* HT */
# Line 1640  for (;;) Line 1644  for (;;)
1644            case 0x3000:    /* IDEOGRAPHIC SPACE */            case 0x3000:    /* IDEOGRAPHIC SPACE */
1645            OK = TRUE;            OK = TRUE;
1646            break;            break;
1647    
1648            default:            default:
1649            OK = FALSE;            OK = FALSE;
1650            break;            break;
1651            }            }
1652    
1653          if (OK == (d == OP_HSPACE))          if (OK == (d == OP_HSPACE))
1654            {            {
1655            if (codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSUPTO)            if (codevalue == OP_HSPACE_EXTRA + OP_TYPEPOSUPTO)
1656              {              {
1657              active_count--;           /* Remove non-match possibility */              active_count--;           /* Remove non-match possibility */
# Line 1771  for (;;) Line 1775  for (;;)
1775          case 0x2028:          case 0x2028:
1776          case 0x2029:          case 0x2029:
1777          break;          break;
1778    
1779          default:          default:
1780          ADD_NEW(state_offset + 1, 0);          ADD_NEW(state_offset + 1, 0);
1781          break;          break;
1782          }          }
# Line 1791  for (;;) Line 1795  for (;;)
1795          case 0x2029:          case 0x2029:
1796          ADD_NEW(state_offset + 1, 0);          ADD_NEW(state_offset + 1, 0);
1797          break;          break;
1798    
1799          default: break;          default: break;
1800          }          }
1801        break;        break;
# Line 1820  for (;;) Line 1824  for (;;)
1824          case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */          case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */
1825          case 0x3000:    /* IDEOGRAPHIC SPACE */          case 0x3000:    /* IDEOGRAPHIC SPACE */
1826          break;          break;
1827    
1828          default:          default:
1829          ADD_NEW(state_offset + 1, 0);          ADD_NEW(state_offset + 1, 0);
1830          break;          break;
1831          }          }

Legend:
Removed from v.178  
changed lines
  Added in v.200

  ViewVC Help
Powered by ViewVC 1.1.5