我试图为我的游戏制作一个“编译器”(以便人们可以做intresting的东西,但不注入代码),主要是declaritive“代码”(它看起来像这样:{"player_location":"IceHall.A7", "print", "You are teleported somewhere", "tiles":{"FirePlace.B3":{'Type':"Corner", "Actions+":{....}}}}
。这是一个动作。表示;它被称为当玩家做它 不管怎么说,它必须被编译成一种功能,当我tryed出交互式解释(具体为:为什么我得到嵌套在函数中的exec错误?
def compile(code):
def act():
exec code
return act
)类似的(这是。将会或多或少地会在最后,除了由我构造的“代码”之外)提出了一个奇怪的错误:
File "", line 3 SyntaxError:
unqualified exec is not allowed in function 'act' it is a nested function.
我该如何解决这个问题?
您可能想要使用类似pyparsing的库编写自己的解析器。 –
'code'究竟保存了什么?你的程序对我来说工作得很好,它没有给出任何这样的语法错误。举一个什么字符串“代码”可以容纳的例子。 –
试试这[以前的答复](http://stackoverflow.com/questions/4484872/in-python-why-doesnt-exec-work-in-a-function-with-a-subfunction)。看起来他们有同样的问题并解决了它。 – thegrinner