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

时间:2016-09-22 15:52:31

标签: java python linux lua

我正在使用Cent OS 7。

我想编写一个可以与Lua解释器交互的程序(用Java或其他语言编写)。 我希望我的程序可以将语句提供给Lua解释器,并实时执行,而以前的变量仍然可用。

例如,我的程序将a = 4; print(a);提供给Lua解释程序4将打印在屏幕上。然后程序做其他工作。之后它将n = 0; for i=1,4 do n = n + i; end; print(n);提供给翻译,并在屏幕上打印10

注意:我想要的只是Lua解释器在我的程序提供一个语句时执行语句,同时保持其先前的状态。我的程序不需要在Lua解释器中访问变量。

我尝试单独调用Lua解释器,但它没有按预期工作。 另一种解决方案是记录所有先前的语句,并在新语句运行之前运行它们。但这显然效率不高。

有一种简单的方法吗?比如创建子流程和进行系统调用?

1 个答案:

答案 0 :(得分:0)

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

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

如果您使用Java编写,您可以为Lua库编写JNI包装器,也可以使用其他Lua实现。请参阅how can I embed lua in java?

对于其他语言,您基本上具有相同的选项:使用您喜欢的语言中的其他实现(如果可用),或者找到一种如何从您的语言访问C库函数的方法。后者适用于大多数相关的编程语言。

对于Python,情况类似。例如,请参阅Java Python IntegrationIntegrating Python With Other Languages