【发布时间】: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