Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/eqnparser.py
diff options
context:
space:
mode:
authorReinier Heeres <reinier@heeres.eu>2007-12-28 21:43:00 (GMT)
committer Reinier Heeres <reinier@heeres.eu>2007-12-28 21:43:00 (GMT)
commitf0a4be3d698ad001d18f5dfef3763bf1ef741482 (patch)
tree494b87de1a0964619d61031494bfc56cf9acf0fb /eqnparser.py
parente5f42d1c4de7701ca8755bf54006944eb229ecb3 (diff)
Some parser fixes, #5734
Diffstat (limited to 'eqnparser.py')
-rw-r--r--eqnparser.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/eqnparser.py b/eqnparser.py
index bdcf1b2..83b2af4 100644
--- a/eqnparser.py
+++ b/eqnparser.py
@@ -105,6 +105,9 @@ class ParserState:
_logger.debug('Setting offset: %d', self.ofs)
self.error_range = (self.ofs, self.ofs + 1)
+ def get_error(self):
+ return self.error_code
+
def set_error_range(self, r):
self.error_range = r
@@ -488,6 +491,11 @@ class EqnParser:
# Left parenthesis: parse sub-expression
elif ps.char == '(':
+ if not (left_val is None or left_val is not None and op is not None):
+ _logger.error('Parse error (left parenthesis)')
+ ps.set_error(ParserState.PARSE_ERROR, msg=_("Left parenthesis unexpected"))
+ return None
+
ps.next()
left_val = self._parse(ps)
@@ -515,7 +523,7 @@ class EqnParser:
_logger.debug('returning %s', self.ml.format_number(left_val))
return left_val
else:
- _logger.error_(('Parse error (right parenthesis, no level to close)'))
+ _logger.error(_('Parse error (right parenthesis, no level to close)'))
ps.set_error(ParserState.PARSE_ERROR, msg=_("Right parenthesis unexpected"))
return None
@@ -546,7 +554,11 @@ class EqnParser:
return left_val
else:
right_val = self._parse(ps, presedence=opres)
- if right_val == None:
+ if right_val is None and self.ps.get_error() == ParserState.OK:
+ _logger.error(_('Parse error: number or variable expected'))
+ ps.set_error(ParserState.PARSE_ERROR, msg=_("Number or variable expected"))
+ return None
+ elif right_val is None:
return None
res = of([left_val, right_val])