2011-06-29 44 views
1

我试图为我的游戏制作一个“编译器”(以便人们可以做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.

我该如何解决这个问题?

+3

您可能想要使用类似pyparsing的库编写自己的解析器。 –

+1

'code'究竟保存了什么?你的程序对我来说工作得很好,它没有给出任何这样的语法错误。举一个什么字符串“代码”可以容纳的例子。 –

+6

试试这[以前的答复](http://stackoverflow.com/questions/4484872/in-python-why-doesnt-exec-work-in-a-function-with-a-subfunction)。看起来他们有同样的问题并解决了它。 – thegrinner

回答

0

答案如this question所述,缺少背景。我希望执行代码在本地(),全局()

相关问题