app/django/utils/simplejson/scanner.py
changeset 323 ff1a9aa48cfd
parent 54 03e267d67478
--- a/app/django/utils/simplejson/scanner.py	Tue Oct 14 12:36:55 2008 +0000
+++ b/app/django/utils/simplejson/scanner.py	Tue Oct 14 16:00:59 2008 +0000
@@ -1,18 +1,21 @@
 """
 Iterator based sre token scanner
 """
-import sre_parse, sre_compile, sre_constants
+import re
+from re import VERBOSE, MULTILINE, DOTALL
+import sre_parse
+import sre_compile
+import sre_constants
 from sre_constants import BRANCH, SUBPATTERN
-from re import VERBOSE, MULTILINE, DOTALL
-import re
 
 __all__ = ['Scanner', 'pattern']
 
 FLAGS = (VERBOSE | MULTILINE | DOTALL)
+
 class Scanner(object):
     def __init__(self, lexicon, flags=FLAGS):
         self.actions = [None]
-        # combine phrases into a compound pattern
+        # Combine phrases into a compound pattern
         s = sre_parse.Pattern()
         s.flags = flags
         p = []
@@ -26,10 +29,10 @@
             p.append(subpattern)
             self.actions.append(token)
 
+        s.groups = len(p) + 1 # NOTE(guido): Added to make SRE validation work
         p = sre_parse.SubPattern(s, [(BRANCH, (None, p))])
         self.scanner = sre_compile.compile(p)
 
-
     def iterscan(self, string, idx=0, context=None):
         """
         Yield match, end_idx for each match
@@ -54,10 +57,11 @@
                     match = self.scanner.scanner(string, matchend).match
                 yield rval, matchend
             lastend = matchend
-            
+
+
 def pattern(pattern, flags=FLAGS):
     def decorator(fn):
         fn.pattern = pattern
         fn.regex = re.compile(pattern, flags)
         return fn
-    return decorator
+    return decorator
\ No newline at end of file