Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import inspect
- # Note that this is just a proxy to make the tests pass
- class Command(list):
- def matches(self, expression):
- pass
- class Interpreter:
- def __init__(self, command=None):
- self.command = command if command else Command()
- self.vars = {}
- def interpret(self, expression):
- try:
- return eval(expression, {}, self.vars)
- except NameError:
- if self.command.matches(expression):
- parameter_name = inspect.getargspec(self.command.execute)[0][0]
- if parameter_name == 'variables':
- return self.command.execute(self.vars)
- else:
- return self.command.execute([self.command, ])
- else:
- return 'null'
- except SyntaxError:
- l_value, r_value = expression.split('=')
- try:
- self.vars[l_value] = int(r_value)
- except ValueError:
- self.vars[l_value] = self.interpret(r_value)
Add Comment
Please, Sign In to add comment