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-09-05 07:23:58 (GMT)
committer Reinier Heeres <reinier@heeres.eu>2007-09-05 07:23:58 (GMT)
commit9e5d2a340de2c4c1655c5e79518f6cefff3a0eaa (patch)
tree3ba930f16b8d5dc582a1c084c7165ce01ada314e /eqnparser.py
parent5049d605a1b07eb61e0765672b563e6a210f65dc (diff)
Error propagation fix
Diffstat (limited to 'eqnparser.py')
-rw-r--r--eqnparser.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/eqnparser.py b/eqnparser.py
index 1e966c1..f8e3017 100644
--- a/eqnparser.py
+++ b/eqnparser.py
@@ -146,6 +146,8 @@ class EqnParser:
self.register_function('factorize', 1, lambda x: self.ml.factorize(x[0]))
+ self.register_function('plot', 2, lambda x: self.pl.plot(x[0], x[1]))
+
self.register_operator('+', self.OP_DIADIC, 0, lambda x: self.ml.add(x[0], x[1]))
self.register_operator('+', self.OP_PRE, 1, lambda x: x[0])
self.register_operator('-', self.OP_DIADIC, 0, lambda x: self.ml.sub(x[0], x[1]))
@@ -197,6 +199,12 @@ class EqnParser:
def set_var(self, name, val):
self.variables[name] = val
+ def get_var(self, name, val):
+ if name in self.variables:
+ return self.variables[name]
+ else:
+ return None
+
def lookup_var(self, name, ps):
c = self.ml.get_constant(name)
if c is not None:
@@ -207,7 +215,10 @@ class EqnParser:
# _logger.error('EqnParser.lookup_var(): recursion detected')
# return None
# self.variables[name].highest_level = level
- return self.parse(self.variables[name])
+ if type(self.variables[name]) is types.StringType:
+ return self.parse(self.variables[name])
+ else:
+ return self.variables[name]
else:
_logger.debug('variable %s not defined', name)
ps.set_type(self.TYPE_SYMBOLIC)
@@ -444,6 +455,8 @@ class EqnParser:
elif otype == self.OP_INVALID:
_logger.debug('Invalid operator')
+ ps.set_error_code(ParserState.PARSE_ERROR)
+ return None
# Parse variable or function
else: