我正在尝试为brainfuck 实现一个解释器,到目前为止,我只是在使用一系列 if/elif 语句。
if(i == ">"):
...
elif(i == "<"):
...
elif(i == "+"):
...
elif(i == "-"):
...
然而,这对我来说似乎非常笨拙和不符合pythonic。是否有更好(更清洁/更快/更美观)的方式来实现这一点?
我在GitHub 存储库中有一个用于 Python 的 Brainfuck 解释器的快速实现。不过,简而言之,您可以保留一个字典,其中键是 Brainfuck 字符,值是函数(或方法)对象,然后对其进行调度。像这样的东西:
instructions = {
'+': increment,
'-': decrement,
# Other functions
}
def run(tape):
ch = next_token(tape)
if ch in instructions:
instructions[ch]()
(不是实际的实现,只是一个简单的说明。)