Python 为什么嵌套在函数中的exec会出错?
我正在尝试为我的游戏制作一个编译器,这样人们就可以做有趣的事情,而不是注入代码,对于主要是去极化的代码,它看起来是这样的:{player_location:IceHall.A7,print,你被传送到某个地方,tiles:{firplace.B3:{'Type':Corner,Actions+:{…}}。这就是行动的表现方式;当玩家这样做时,它被调用。 无论如何,它必须被编译成一个函数。当我在交互式口译员中尝试类似的东西时:Python 为什么嵌套在函数中的exec会出错?,python,compiler-construction,Python,Compiler Construction,我正在尝试为我的游戏制作一个编译器,这样人们就可以做有趣的事情,而不是注入代码,对于主要是去极化的代码,它看起来是这样的:{player_location:IceHall.A7,print,你被传送到某个地方,tiles:{firplace.B3:{'Type':Corner,Actions+:{…}}。这就是行动的表现方式;当玩家这样做时,它被调用。 无论如何,它必须被编译成一个函数。当我在交互式口译员中尝试类似的东西时: def compile(code): def act():
def compile(code):
def act():
exec code
return act
。这或多或少是最终的结果,除了我正在构建的代码引发了一个奇怪的错误:
文件,第3行语法错误:
不允许在中使用不合格的exec
函数“act”它是一个嵌套的
功能
我该如何解决这个问题?如中所述,答案是缺乏背景。我想要本地、全局的exec代码您可能想使用pyparsing这样的库来编写自己的解析器。代码到底包含什么?你的程序对我来说运行得很好,它没有给出任何这样的语法错误。给出一个字符串代码可以容纳的示例。试试这个。看起来他们遇到了同样的问题并且解决了。好吧,我想这就解决了。谢谢大家。