簡體   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