繁体   English   中英

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

[英]How can programs make Lua(or python) interpreter execute statements provided by the program?

我正在使用 Cent OS 7。

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

例如,我的程序输入a = 4; print(a); a = 4; print(a); 到 Lua 解释器4打印在屏幕上。 然后程序执行其他工作。 稍后它提供n = 0; for i=1,4 do n = n + i; end; print(n); n = 0; for i=1,4 do n = n + i; end; print(n); 到解释器,屏幕上会打印10

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

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

有没有简单的方法来做到这一点? 比如只是创建子进程和进行系统调用?

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

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

如果您使用 Java 编写,您可以为 Lua 库编写 JNI 包装器,或者使用另一个 Lua 实现。 看看我如何在 java 中嵌入 lua? .

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

对于 Python,情况类似。 例如,请参阅Java Python 集成将 Python 与其他语言集成

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM