def __run_command(self, command, params): command = DataProvider.get_service_command(command) if ModuleManager.module_was_loaded('CORE'): for idx, param in enumerate(params): try: CommonValidator.validate_name_variable(param) CommonValidator.check_if_variable_exists(param) variable = param[1:] params[idx] = DataProvider.get_variable_value(variable) except Exception: pass try: self.__validator.validate('command', (command.get_name(), params)) except (Validator.ValidationError, CommonValidator.ValidationError) as exception: raise Interpreter.RunTimeError( f'Command: `{command.get_name()}`. ' + str(exception)) param_types = command.get_param_types() for idx, param in enumerate(params): if inspect.isclass(param_types[idx]): params[idx] = param_types[idx](params[idx]) else: break try: self.__validator.validate('command', (command.get_name(), params)) except (Validator.ValidationError, CommonValidator.ValidationError) as exception: raise Interpreter.RunTimeError( f'Command: `{command.get_name()}`. ' + str(exception)) if command.get_name() == Semantic.get_symbol('var'): new_command, *new_params = params[2:] self.__run_command(new_command, new_params) params = params[:2] params.append(DataProvider.get_returned_value()) DataProvider.return_value(None) if command.get_name() == Semantic.get_symbol('import'): return try: command.get_exec_func()(*params) except CommonLogic.RunTimeError as exception: raise Interpreter.RunTimeError(f'Command: {command.get_name()}. ' f'{str(exception)}')
def get_variable(name: str): name = name.lstrip('%') return DataProvider.get_variable_value(name)