我正在使用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解释器,但它没有按预期工作。 另一种解决方案是记录所有先前的语句,并在新语句运行之前运行它们。但这显然效率不高。
有一种简单的方法吗?比如创建子流程和进行系统调用?
答案 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 Integration和Integrating Python With Other Languages。