这个问题可能很难正确界定。但问题的实质是:是否可以将诸如break
、return
和continue
之类的python控制语句放入字典中以供以后使用?在
你可能会问,为什么那些头脑正常的人会想这么做?想象一下你在写一个计算机编程语言的解释器。您正在遍历一个抽象语法树,在一个叶上遇到break语句。现在要实现这一点,您可以在AST的loop interior节点处抛出一个异常。内部节点在python中实现一个while循环,它表示正在解释的代码中的一个循环。在
所以你要做的就是减少这些代码:
def visitWhileStatement(self, ctx):
while ctx.children[2].accept(self):
try:
ctx.children[4].accept(self)
except LoopControl as lc:
if lc.value == "break":
break
if lc.value == "continue":
continue
看起来更像:
^{pr2}$就像您通过字典将==
等运算符映射到函数时所做的那样:
我想将break
映射到python控制语句:
LoopControl.actions = { "break": break }
但那当然不行。在
这种字典背后的动机是减少重复代码的数量。然后代码在LoopControl中只出现一次,而不是在所实现的语言的每种类型的可中断循环的实现中作为一系列if语句出现。在
目前没有回答
相关问题 更多 >
编程相关推荐