def equate_operation_working(): """Проверка работы команды приравнивания""" setting.initialisation("program.yovc") objects.Create(["chars", "Крутой язык"]) str_num = make.string_segment("Ё") objects.Find(["link", str_num]) name_num = pull.memory_stack() value_num = pull.memory_stack() objects.Equate(name_num, value_num) namespace_num = find.attribute(seg_links["system"], "target_namespace") view.namespace_items(namespace_num) console.Output(name_num) list_num = make.list_segment([0, 1, 2, 3, 4, 5]) index_num = make.entity("number", 3) objects.Sub_object(["link", list_num], ["link", index_num]) elem_num = pull.memory_stack() objects.Create(["array", [6, 7, 8]]) value_num = pull.memory_stack() objects.Equate(elem_num, value_num) console.Output(elem_num) objects.Sub_object(["link", list_num], ["link", index_num]) str_num = make.string_segment("array") objects.Find(["link", str_num]) name_num = pull.memory_stack() elem_num = pull.memory_stack() objects.Equate(name_num, elem_num) view.namespace_items(namespace_num) console.Output(name_num)
def length_operation_working(): """Проверка работы операции нахождения длины объекта""" real_string_segment_size = minimal_data_length["string_segment"] minimal_data_length["string_segment"] = 4 real_list_segment_size = minimal_data_length["list_segment"] minimal_data_length["list_segment"] = 4 setting.initialisation("program.yovc") str_num = add.string_segment() put.string_segment(str_num, "char_list", "Эта строка не влезет в маленький сегмент") list_num = add.list_segment() put.list_segment(list_num, "link_list", [i for i in range(40)]) view.tape() print(get.string_segment(str_num)) view.string_segment(str_num) print(get.list_segment(list_num)) view.list_segment(list_num) objects.Length(["link", str_num]) kind, length_link = pull.memory_stack() draw.entity_link(length_link) objects.Length(["link", list_num]) kind, length_link = pull.memory_stack() draw.entity_link(length_link) string_num = make.string_segment("a") objects.Find(["link", string_num]) name_num = pull.memory_stack() objects.Equate(name_num, ["link", list_num]) objects.Length(name_num) kind, length_link = pull.memory_stack() draw.entity_link(length_link) minimal_data_length["string_segment"] = real_string_segment_size minimal_data_length["list_segment"] = real_list_segment_size
def list_and_string_segments_making(): """Проверка на создание сегментов строки и списка с данными""" setting.initialisation("program.yovc") str_num = make.string_segment("Эта строка должна влезть") list_num = make.list_segment([i for i in range(40)]) view.tape() view.string_segment(str_num) view.list_segment(list_num)
def Input(): global input_data if constants.mode == "console": value = input() elif constants.mode == "editor": string, press = QInputDialog.getText(editor, "Ввод", "Программа запрашивает ввод") value = string if press else "" constants.input_data = constants.input_data + [value] else: raise UndefinedBehaviour(f"Неопределённое поведение команды ввода " f"для режима {constants.mode}") num = make.string_segment(value) append.memory_stack("link", num)
def find_operation_working(): """Проверка работы команды поиска""" real_namespace_size = minimal_data_length["namespace"] minimal_data_length["namespace"] = 2 setting.initialisation("program.yovc") prog_num = find.attribute(seg_links["system"], "main_program") name_num = find.attribute(prog_num, "namespace") view.namespace_items(name_num) str_num = make.string_segment("J") objects.Find(["link", str_num]) value_link = pull.memory_stack() draw.link_on_link(value_link) view.namespace_items(name_num) item.write_namespace_name(name_num, ["string_segment", "Yo"], value=["number", 1]) str_num = make.string_segment("Yo") view.tape() view.data_segment() objects.Find(["link", str_num]) view.namespace_items(name_num) value_link = pull.memory_stack() draw.link_on_link(value_link) minimal_data_length["namespace"] = real_namespace_size
def Create(arg): arg_type, arg_value = arg if arg_type == "none": res_num = append.data_segment(arg_type, arg_value) elif arg_type == "logic": res_num = append.data_segment(arg_type, arg_value) elif arg_type == "number": res_num = append.data_segment(arg_type, arg_value) elif arg_type == "chars": res_num = make.string_segment(arg_value) elif arg_type == "array": res_num = make.list_segment(arg_value) else: raise UndefinedArgument(f"Создание объекта командой Crt типа " f"{arg_type} не определено") append.memory_stack("link", res_num)