...
    def interpret(self, expression):
        possible_parameters = {'commands': self.commands,
            'expression': expression, 'variables': self.variables}
        try:
            command = self.commands.match(expression)
            args = self._get_args(command.execute)
            params = self._find_parameters(possible_parameters, args)
            return command.execute(**params)
        except Exception, e:
            return e
            return 'null'
...