在Python中实现解释器的更好方法

时间:2013-07-31 17:25:00

标签: python brainfuck

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

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

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

1 个答案:

答案 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]()

(不是实际的实现,只是一个快速的说明。)