summaryrefslogtreecommitdiffstats
path: root/Lib/sre_parse.py
diff options
context:
space:
mode:
authorFredrik Lundh <fredrik@pythonware.com>2000-07-02 17:33:27 (GMT)
committerFredrik Lundh <fredrik@pythonware.com>2000-07-02 17:33:27 (GMT)
commit7cafe4d7e466996d5fc32e871fe834e0e0c94282 (patch)
treedc3572d1d6bd95316c7a044cfd8639be014e3520 /Lib/sre_parse.py
parentb19948b7fb96cfc2ed69bb58f2205d1399f1f9f5 (diff)
downloadcpython-7cafe4d7e466996d5fc32e871fe834e0e0c94282.zip
cpython-7cafe4d7e466996d5fc32e871fe834e0e0c94282.tar.gz
cpython-7cafe4d7e466996d5fc32e871fe834e0e0c94282.tar.bz2
- actually enabled charset anchors in the engine (still not
used by the code generator) - changed max repeat value in engine (to match earlier array fix) - added experimental "which part matched?" mechanism to sre; see http://hem.passagen.se/eff/2000_07_01_bot-archive.htm#416954 or python-dev for details.
Diffstat (limited to 'Lib/sre_parse.py')
-rw-r--r--Lib/sre_parse.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py
index b263256..81ca217 100644
--- a/Lib/sre_parse.py
+++ b/Lib/sre_parse.py
@@ -451,6 +451,23 @@ def _parse(source, state):
if gid is None:
raise error, "unknown group name"
subpattern.append((GROUP, gid))
+ elif source.match("#"):
+ index = ""
+ while 1:
+ char = source.get()
+ if char is None:
+ raise error, "unterminated index"
+ if char == ")":
+ break
+ index = index + char
+ try:
+ index = int(index)
+ if index < 0 or index > MAXREPEAT:
+ raise ValueError
+ except ValueError:
+ raise error, "illegal index"
+ subpattern.append((INDEX, index))
+ continue
else:
char = source.get()
if char is None: