]> granicus.if.org Git - python/commitdiff
- fixed another split problem
authorFredrik Lundh <fredrik@pythonware.com>
Thu, 29 Jun 2000 18:03:25 +0000 (18:03 +0000)
committerFredrik Lundh <fredrik@pythonware.com>
Thu, 29 Jun 2000 18:03:25 +0000 (18:03 +0000)
  (those semantics are weird...)

- got rid of $Id$'s (for the moment, at least).  in other
  words, there should be no more "empty" checkins.

- internal: some minor cleanups.

Lib/sre.py
Lib/sre_compile.py
Lib/sre_constants.py
Lib/sre_parse.py
Modules/_sre.c
Modules/sre.h

index e0a51e345bcec2af9ed35ac861d6d79805a3a704..49e3140bd4f06d5db723fe48ba8df68c6ab81fdb 100644 (file)
@@ -1,6 +1,5 @@
 #
 # Secret Labs' Regular Expression Engine
-# $Id$
 #
 # re-compatible interface for the sre matching engine
 #
@@ -135,13 +134,14 @@ def _split(pattern, string, maxsplit=0):
         if not m:
             break
        b, e = m.span()
-       if e == i:
+       if b == e:
+           if i >= len(string):
+               break
            continue
         append(string[i:b])
        if g and b != e:
            extend(m.groups())
        i = e
         n = n + 1
-    if i < len(string):
-        append(string[i:])
+    append(string[i:])
     return s
index a51531b4980d1e75f11fb03f5017770557659697..c0423750e3b9073e58c072f5ac262772484a2c4b 100644 (file)
@@ -1,6 +1,5 @@
 #
 # Secret Labs' Regular Expression Engine
-# $Id$
 #
 # convert template to internal format
 #
index 1c9810fbcf02af40b6c963a865a5eb2a927122a1..f5e7894e3bae44bef3b2ccb74669386cb742fdab 100644 (file)
@@ -1,6 +1,5 @@
 #
 # Secret Labs' Regular Expression Engine
-# $Id$
 #
 # various symbols used by the regular expression engine.
 # run this script to update the _sre include files!
index 8ab36c8698453906e86ae840f812be884c881933..93a7b5dc997b1fe3e3fe2369c8974a518ad18571 100644 (file)
@@ -1,6 +1,5 @@
 #
 # Secret Labs' Regular Expression Engine
-# $Id$
 #
 # convert re-style regular expression to sre pattern
 #
index dba2afd8eb75d4e0a21697d762e99f7a8d4ed65e..206e8d0fe28f4ea2e2df9fc0eaf9b57df0a323f7 100644 (file)
@@ -1,7 +1,6 @@
 /* -*- Mode: C; tab-width: 4 -*-
  *
  * Secret Labs' Regular Expression Engine
- * $Id$
  *
  * regular expression matching engine
  *
@@ -31,7 +30,7 @@
 #ifndef SRE_RECURSIVE
 
 static char
-copyright[] = " SRE 0.9.1 Copyright (c) 1997-2000 by Secret Labs AB ";
+copyright[] = " SRE 0.9.2 Copyright (c) 1997-2000 by Secret Labs AB ";
 
 #include "Python.h"
 
@@ -56,7 +55,7 @@ copyright[] = " SRE 0.9.1 Copyright (c) 1997-2000 by Secret Labs AB ";
 #define HAVE_UNICODE
 #endif
 
-#if defined(WIN32) /* FIXME: <fl> don't assume Windows == MSVC */
+#if defined(_MSC_VER)
 #pragma optimize("agtw", on) /* doesn't seem to make much difference... */
 /* fastest possible local call under MSVC */
 #define LOCAL(type) static __inline type __fastcall
@@ -298,16 +297,21 @@ SRE_AT(SRE_STATE* state, SRE_CHAR* ptr, SRE_CODE at)
        int this, that;
 
        switch (at) {
+
        case SRE_AT_BEGINNING:
                return ((void*) ptr == state->beginning);
+
        case SRE_AT_BEGINNING_LINE:
                return ((void*) ptr == state->beginning ||
                 SRE_IS_LINEBREAK((int) ptr[-1]));
+
        case SRE_AT_END:
                return ((void*) ptr == state->end);
+
        case SRE_AT_END_LINE:
                return ((void*) ptr == state->end ||
                 SRE_IS_LINEBREAK((int) ptr[0]));
+
        case SRE_AT_BOUNDARY:
                if (state->beginning == state->end)
                        return 0;
@@ -316,6 +320,7 @@ SRE_AT(SRE_STATE* state, SRE_CHAR* ptr, SRE_CODE at)
                this = ((void*) ptr < state->end) ?
                        SRE_IS_WORD((int) ptr[0]) : 0;
                return this != that;
+
        case SRE_AT_NON_BOUNDARY:
                if (state->beginning == state->end)
                        return 0;
@@ -365,7 +370,8 @@ SRE_MEMBER(SRE_CODE* set, SRE_CHAR ch)
                        break;
 
                default:
-                       /* FIXME: internal error */
+                       /* internal error -- there's not much we can do about it
+               here, so let's just pretend it didn't match... */
                        return 0;
                }
        }
@@ -910,14 +916,19 @@ SRE_SEARCH(SRE_STATE* state, SRE_CODE* pattern)
        SRE_CHAR* ptr = state->start;
        SRE_CHAR* end = state->end;
        int status = 0;
+    int prefix_len = 0;
+    SRE_CODE* prefix = NULL;
 
     if (pattern[0] == SRE_OP_INFO) {
-        /* don't look too far */
+        /* args: <skip> <min> <max> <prefix> <prefix data...> */
         end -= pattern[2];
+        prefix_len = pattern[4];
+        prefix = pattern + 5;
         pattern += pattern[1];
-        /* FIXME: add support for fast scan */
     }
 
+    /* if (prefix_len > 0) ... */
+
        if (pattern[0] == SRE_OP_LITERAL) {
                /* pattern starts with a literal */
                SRE_CHAR chr = (SRE_CHAR) pattern[1];
index 722f890499052ff984a3e7d5dbde6c34e8f63c6a..274f085541e59041c8c025565bda19539ee8fd9a 100644 (file)
@@ -1,8 +1,7 @@
 /*
  * Secret Labs' Regular Expression Engine
- * $Id$
  *
- * simple regular expression matching engine
+ * regular expression matching engine
  *
  * Copyright (c) 1997-2000 by Secret Labs AB.  All rights reserved.
  *