【发布时间】:2012-03-23 06:36:06
【问题描述】:
我目前正在进行一项实验,我正在为旧的游戏内脚本语言实现解释器。这是一种基于第四种语言的语言,所以我认为将说明(一旦经过验证和清理)放入一个大列表是相当容易的。
一旦我将代码放入列表中,我将尝试在一个 for 循环中迭代整个程序,该循环一次处理一条指令。某些项目,如字符串,可以放在保存当前堆栈的变量上,这很容易。但我卡住的地方是让命令发生。
我有一个很大的有效函数列表,如果有任何指令匹配它们,我希望它在哪里调用相关函数。
例如,如果我有:
"Hello, world!" notify
...代码将检查列表中的通知,然后执行通知功能。底线是:如何将字符串翻译成函数名?
【问题讨论】:
-
所以你想让
"Hello, world!" notify表现得像notify("Hello, world!")? -
嗯,它实际上会调用 notify 函数,该函数将获取堆栈变量并从其中弹出所需的项目以执行通知,但或多或少是的。
-
我不熟悉 Python 中的正则表达式使用,但看起来您必须将字符串与引号中的所有内容(唯一)匹配,并确保检查转义引号。然后,您将使用捕获组来确定要调用的函数。解析总是很麻烦。