【问题标题】:Lua C: How would I use the Lua source code to create a Lua interpreter that will execute given blocks of Lua code?Lua C:我将如何使用 Lua 源代码创建一个 Lua 解释器来执行给定的 Lua 代码块?
【发布时间】:2010-11-24 21:50:59
【问题描述】:

我想要一个详细的解释。

我将如何使用 Lua 源代码来创建一个 Lua 解释器来执行给定的 Lua 代码块? Lua 代码块将作为char 发送。

【问题讨论】:

    标签: c api compiler-construction lua


    【解决方案1】:

    您需要调用lua_load 来编译代码块,然后调用lua_call 来运行它。有关如何完成此操作的一个非常好的示例,请查看example provided here:

    任何Lua api函数的第一个参数总是解释器状态,即lua_open()的返回值

    该示例实际上使用了luaL_loadbuffer,它将对lua_load 的调用包装起来,以使编译c 字符串更容易一些。您可以在涵盖The Auxiliary Library 的参考手册的章节中阅读如何使用它。这会在 lua 堆栈的顶部留下一个 lua chunk,然后可以使用 lua_call 调用它,但该示例使用 lua_pcall,它提供了一些错误捕获。由于您刚刚编译的块不带任何参数(它是块而不是函数)并且没有您感兴趣的任何返回值,并且您希望看到错误与生成的完全相同,所有除了第一个参数(始终是 lua 解释器状态)之外的参数可以为零。

    【讨论】:

    【解决方案2】:
    猜你喜欢
    • 2017-11-07
    • 2017-10-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多