2011-06-29 1 views
1

私はゲームのための "コンパイラ"を作成しようとしています(人がintresting stuffを実行してコードを挿入できないようにする)、主に宣言的な "コード"です。 。。。である(この:;表さプレイヤーがそれをしないときに呼び出される をとにかく、それは私が(関数にネストされた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のようなlibを使って独自のパーサーを書いています。 –

+1

'code'は正確に何を保持していますか?あなたのプログラムは私のためにうまくいきました、それはそのような構文エラーを与えませんでした。 'code'が保持できる文字列の例を挙げてください。 –

+6

この[以前の応答](http://stackoverflow.com/questions/4484872/in-python-why-doesnt-exec-work-in-a-function-with-a-subfunction)を試してください。彼らは同じ問題を抱えていて、それを解決したように見えます。 – thegrinner

答えて

0

答えは、this questionで述べられているように、文脈の欠如です。私はlocals()、globals()内のexecコードを望んでいました

関連する問題