summaryrefslogtreecommitdiff
path: root/pyparsing/core.py
diff options
context:
space:
mode:
authorptmcg <ptmcg@austin.rr.com>2021-09-24 08:44:30 -0500
committerptmcg <ptmcg@austin.rr.com>2021-09-24 08:44:30 -0500
commit9adaf2e261f4b10b60f16bd553fcae88e541c471 (patch)
tree10fb72c587fa686a06331c2fe1e258329dac24a0 /pyparsing/core.py
parent8d1083f7db349d00c25993a7bd4dab415af0582e (diff)
downloadpyparsing-git-9adaf2e261f4b10b60f16bd553fcae88e541c471.tar.gz
Allow multiplying an expr by 0 or (0,0)
Diffstat (limited to 'pyparsing/core.py')
-rw-r--r--pyparsing/core.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/pyparsing/core.py b/pyparsing/core.py
index a8d1f32..17428bf 100644
--- a/pyparsing/core.py
+++ b/pyparsing/core.py
@@ -1386,7 +1386,7 @@ class ParserElement(ABC):
"second tuple value must be greater or equal to first tuple value"
)
if minElements == optElements == 0:
- raise ValueError("cannot multiply ParserElement by 0 or (0, 0)")
+ return And([])
if optElements:
@@ -3629,10 +3629,12 @@ class And(ParseExpression):
exprs[:] = tmp
super().__init__(exprs, savelist)
self.mayReturnEmpty = all(e.mayReturnEmpty for e in self.exprs)
- self.set_whitespace_chars(
- self.exprs[0].whiteChars, copy_defaults=self.exprs[0].copyDefaultWhiteChars
- )
- self.skipWhitespace = self.exprs[0].skipWhitespace
+ if self.exprs:
+ self.set_whitespace_chars(
+ self.exprs[0].whiteChars,
+ copy_defaults=self.exprs[0].copyDefaultWhiteChars,
+ )
+ self.skipWhitespace = self.exprs[0].skipWhitespace
self.callPreparse = True
def streamline(self):