4

我正在尝试为brainfuck 实现一个解释器,到目前为止,我只是在使用一系列 if/elif 语句。

if(i == ">"):
    ...
elif(i == "<"):
    ...
elif(i == "+"):
    ...
elif(i == "-"):
    ...

然而,这对我来说似乎非常笨拙和不符合pythonic。是否有更好(更清洁/更快/更美观)的方式来实现这一点?

4

1 回答 1

6

我在GitHub 存储库中有一个用于 Python 的 Brainfuck 解释器的快速实现。不过,简而言之,您可以保留一个字典,其中键是 Brainfuck 字符,值是函数(或方法)对象,然后对其进行调度。像这样的东西:

instructions = {
  '+': increment,
  '-': decrement,
  # Other functions
}

def run(tape):
  ch = next_token(tape)
  if ch in instructions:
    instructions[ch]()

(不是实际的实现,只是一个简单的说明。)

于 2013-07-31T17:30:25.193 回答