Я делаю компилятор для Brainfuck в Python, как практика с языком. Большинство символов не было слишком сложной задачей, но я абсолютно озадачен [
и ]
.
Вот что у меня есть
global cells
global pointer
cells = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
pointer = 0
#bfcode = list(input())
bfcode = list("+x+++,[>++++<-]>.")
for i in range(len(bfcode)):
if(bfcode[i] == "."):
print(cells[pointer])
elif(bfcode[i] == ","):
charin = list(input("Write one character: "))[0]
cells[pointer] = ord(charin)
elif(bfcode[i] == "+"):
cells[pointer] += 1
elif(bfcode[i] == "-"):
cells[pointer] -= 1
elif(bfcode[i] == ">"):
pointer += 1
elif(bfcode[i] == "<"):
pointer -= 1
elif(bfcode[i] == "["):
print("PLACEHOLDER")
elif(bfcode[i] == "]"):
print("PLACEHOLDER")
else:
print("Non-brainfuck character detected")
print(cells)
Итак, как новичок в Python, мой первый инстинкт - как-то вернуться в цикл for, но из того, что я могу сказать, это невозможно в Python. Я гуглил решения для того, чтобы вернуться назад в цикле, но все они сейчас находятся за пределами моего понимания ...
Есть ли простой способ вернуться назад в цикле for, который я как-то пропустил? Или, может быть, есть более простой способ сделать все это вместе?
Другие советы и предложения для моего кода также приветствуются, так как я все еще учусь:)