如何编写程序让 Lua (或 python) 解释器执行程序提供的语句?

我正在使用 Cent OS 7。

我希望编写一个程序(用 Java 或其他语言编写),可以与 Lua 解释器进行交互。 我希望我的程序可以将语句提供给 Lua 解释器,并在实时执行时得到执行,同时保留之前的变量。

例如,我的程序将a = 4; print(a);提供给 Lua 解释器,则屏幕上会打印出 4。然后程序可以进行其他工作。稍后,我的程序将n = 0; for i=1,4 do n = n + i; end; print(n);提供给解释器,屏幕上会打印出 10

注意: 我希望 Lua 解释器在我的程序提供语句时执行它,同时保留之前的状态。我的程序不需要访问 Lua 解释器中的变量。

我尝试分别调用 Lua 解释器,但没有达到预期的效果。 另一个解决方案是记录所有之前的语句,并在要运行新语句之前运行它们。但这显然不是高效的。

有没有简单的方法来实现这一点?比如创建子进程并进行系统调用?

点赞
用户1314743
用户1314743

由于您的问题非常广泛(解释Lua或Python,在任何语言中),所以我只能给你一些提示。

如果您使用C或C ++编写,则可以直接使用Lua库。它可能允许您执行Lua语句,在C中使值对Lua代码可见,使C函数对Lua代码可用,并访问Lua代码的值。

如果您使用Java编写,则可以编写Lua库的JNI包装器,或使用另一个Lua实现。请参见[如何在Java中嵌入Lua?](https://stackoverflow.com/q/2113432/1314743)。

对于其他语言,您基本上有相同的选择:要么使用(如果可用)您最喜欢的语言中的其他实现,要么找到一种方法从您的语言中访问C库函数。后者对于大多数相关编程语言来说是可能的。

对于Python,情况类似。例如,参见[Java Python Integration](https://stackoverflow.com/q/1119696/1314743)和[Integrating Python With Other Languages](https://wiki.python.org/moin/IntegratingPythonWithOtherLanguages)。

2016-09-22 16:08:22