示例#1
0
def print_line(inter):
    file_num = u.pop_with_zero(inter)
    line = u.collect_string_from_stack(inter)

    try:
        inter.files[file_num]['file'].write(f'{line}\n')
        inter.stack.append(file_num)
    except Exception:
        inter.delta = u.multiply_delta(inter, -1)
示例#2
0
文件: STRN.py 项目: hiba9201/Befunge
def put_to_pos(inter):
    y = u.pop_with_zero(inter)
    x = u.pop_with_zero(inter)
    string = u.collect_string_from_stack(inter)

    while len(inter.program) <= y:
        inter.program.append([' '] * u.get_max_len(inter.program))

    for letter in string:
        inter.program[y][x] = letter
        x += 1
    inter.program[y][x] = '0'
示例#3
0
def input_file(inter):
    filename = u.collect_string_from_stack(inter)
    y = u.pop_with_zero(inter)
    x = u.pop_with_zero(inter)
    try:
        with open(filename, "r") as f:
            last_x, last_y = u.write_file_to_program(inter, f, x, y)
            inter.stack.append(last_x)
            inter.stack.append(last_y)

    except OSError:
        execute_command(inter, "r")
示例#4
0
def output_file(inter):
    filename = u.collect_string_from_stack(inter)
    f_y = u.pop_with_zero(inter)
    f_x = u.pop_with_zero(inter)

    s_y = u.pop_with_zero(inter)
    s_x = u.pop_with_zero(inter)

    lines_len = s_x - f_x

    try:
        with open(filename, "w") as f:
            for y in range(f_y, s_y + 1):
                f.write(u.get_line_from_space(inter, f_x, y,
                                              lines_len))
    except OSError:
        execute_command(inter, "r")
示例#5
0
def open_file(inter):
    filename = u.collect_string_from_stack(inter)
    m = u.pop_with_zero(inter)
    y = u.pop_with_zero(inter)
    x = u.pop_with_zero(inter)

    try:
        mode = open_file_mode[m]
    except IndexError:
        inter.delta = u.multiply_delta(inter, -1)
        return

    try:
        opened_file = open(filename, mode, encoding='utf-8')
        inter.files.append({'file': opened_file,
                            'buffer_start': [x, y],
                            'buffer_end': x})
        inter.stack.append(len(inter.files) - 1)
    except OSError:
        inter.delta = u.multiply_delta(inter, -1)
示例#6
0
def delete_file(inter):
    filename = u.collect_string_from_stack(inter)
    try:
        os.remove(filename)
    except OSError:
        inter.delta = u.multiply_delta(inter, -1)
示例#7
0
def execute(inter):
    inter.stack.append(os.system(u.collect_string_from_stack(inter)))
示例#8
0
文件: STRN.py 项目: hiba9201/Befunge
def length(inter):
    string = u.collect_string_from_stack(inter)
    u.write_string_to_stack(inter, string)
    inter.stack.append(len(string))
示例#9
0
文件: STRN.py 项目: hiba9201/Befunge
def substr(inter):
    count = u.pop_with_zero(inter)
    start = u.pop_with_zero(inter)
    string = u.collect_string_from_stack(inter)

    u.write_string_to_stack(inter, string[start:start + count])
示例#10
0
文件: STRN.py 项目: hiba9201/Befunge
def right(inter):
    count = u.pop_with_zero(inter)
    string = u.collect_string_from_stack(inter)

    u.write_string_to_stack(inter, string[-count:])
示例#11
0
文件: STRN.py 项目: hiba9201/Befunge
def append(inter):
    a = u.collect_string_from_stack(inter)
    b = u.collect_string_from_stack(inter)
    u.write_string_to_stack(inter, b + a)
示例#12
0
文件: STRN.py 项目: hiba9201/Befunge
def left(inter):
    count = u.pop_with_zero(inter)
    string = u.collect_string_from_stack(inter)

    u.write_string_to_stack(inter, string[:count])
示例#13
0
文件: STRN.py 项目: hiba9201/Befunge
def display(inter):
    a = u.collect_string_from_stack(inter)
    inter.io.write(a)
示例#14
0
文件: STRN.py 项目: hiba9201/Befunge
def compare(inter):
    a = u.collect_string_from_stack(inter)
    b = u.collect_string_from_stack(inter)
    inter.stack.append(int(a == b))
示例#15
0
文件: STRN.py 项目: hiba9201/Befunge
def num_to_str(inter):
    string = u.collect_string_from_stack(inter)
    inter.stack.append(int(string))