我正在尝试为brainfuck实现一个解释器,截至目前,我只使用了一系列if / elif语句。
if(i == ">"):
...
elif(i == "<"):
...
elif(i == "+"):
...
elif(i == "-"):
...
然而,这对我来说似乎非常笨拙和不py。是否有更好的(更清洁/更快/更美观)的方式来实现它?
答案 0 :(得分:6)
我在GitHub repo中快速实现了针对Python的Brainfuck解释器。简而言之,您可以保留一个字典,其中键是Brainfuck字符,值是函数(或方法)对象,然后在其上发送。像这样:
instructions = {
'+': increment,
'-': decrement,
# Other functions
}
def run(tape):
ch = next_token(tape)
if ch in instructions:
instructions[ch]()
(不是实际的实现,只是一个快速的说明。)