【问题标题】:Why am I getting errors with execs nested in functions? [duplicate]为什么嵌套在函数中的 exec 会出错? [复制]
【发布时间】:2011-06-29 11:00:51
【问题描述】:

我正在尝试为我的游戏制作一个“编译器”(以便人们可以做一些有趣的事情,但不能注入代码),主要用于声明性“代码”(看起来像这样:{"player_location":"IceHall.A7", "print", "You are teleported somewhere", "tiles":{"FirePlace.B3":{'Type':"Corner", "Actions+":{....}}}}。这就是表示一个动作;当玩家执行它时调用它。 无论如何,它必须被编译成一个函数。当我在交互式解释器中尝试类似的东西时(特别是:

def compile(code):
    def act():
       exec code
    return act

)。这(这或多或少会是最终结果,除了我正在构建的“代码”)引发了一个奇怪的错误:

文件“”,第 3 行语法错误:
不允许不合格的 exec 函数'act'它是一个嵌套的 功能。

我该如何解决这个问题?

【问题讨论】:

  • 您可能想使用 pyparsing 之类的库编写自己的解析器。
  • code 到底是什么意思?你的程序对我来说很好,它没有给出任何这样的语法错误。举例说明code 可以容纳什么字符串。
  • 试试这个previous response。看起来他们遇到了同样的问题并解决了。
  • 好的,我认为解决了。谢谢大家。

标签: python compiler-construction


【解决方案1】:

正如this question 中所说,答案是缺乏上下文。我想要在 locals(), globals() 中执行代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 2021-09-18
    • 2021-05-11
    • 1970-01-01
    • 2023-04-01
    • 2018-08-19
    • 1970-01-01
    相关资源
    最近更新 更多