2011-06-29 77 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所述,缺少背景。我希望執行代碼在本地(),全局()

相關問題