From c0799e3a26f5da0613e7b7506e1d717750b84530 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 21 Sep 2014 22:47:30 +0300 Subject: Issue #22423: Fixed debugging output of the GROUPREF_EXISTS opcode in the re module. --- Lib/sre_parse.py | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) (limited to 'Lib/sre_parse.py') diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py index 0a361abc70..b85ce88c34 100644 --- a/Lib/sre_parse.py +++ b/Lib/sre_parse.py @@ -94,33 +94,42 @@ class SubPattern: self.data = data self.width = None def dump(self, level=0): - nl = 1 - seqtypes = type(()), type([]) + seqtypes = (tuple, list) for op, av in self.data: - print level*" " + op,; nl = 0 - if op == "in": + print level*" " + op, + if op == IN: # member sublanguage - print; nl = 1 + print for op, a in av: print (level+1)*" " + op, a - elif op == "branch": - print; nl = 1 - i = 0 - for a in av[1]: - if i > 0: + elif op == BRANCH: + print + for i, a in enumerate(av[1]): + if i: print level*" " + "or" - a.dump(level+1); nl = 1 - i = i + 1 - elif type(av) in seqtypes: + a.dump(level+1) + elif op == GROUPREF_EXISTS: + condgroup, item_yes, item_no = av + print condgroup + item_yes.dump(level+1) + if item_no: + print level*" " + "else" + item_no.dump(level+1) + elif isinstance(av, seqtypes): + nl = 0 for a in av: if isinstance(a, SubPattern): - if not nl: print - a.dump(level+1); nl = 1 + if not nl: + print + a.dump(level+1) + nl = 1 else: - print a, ; nl = 0 + print a, + nl = 0 + if not nl: + print else: - print av, ; nl = 0 - if not nl: print + print av def __repr__(self): return repr(self.data) def __len__(self): -- cgit v1.2.1