2010-11-24 15 views
0

編集2:ルアC質問

**詳細な説明をしたいと思います。私はC言語のNOOBです。

Luaソースコードを使って、Luaコードのブロックを実行するLuaインタプリタを作成するにはどうすればよいですか? Luaコードのブロックはcharとして送信されます。

答えて

2

からのLuaを呼び出すことを教えてくれます、同じタイプのものブロックを実行し、それを実行するためにlua_callへの呼び出しを行います。これがどのように行われたかについての本当の良い例については、example provided here:をご覧ください。

任意LuaのAPI関数への最初の引数は常にlua_open()

例の戻り値であるインタプリタ状態であり、実際には少し簡単C文字列をコンパイルするためにlua_loadへの呼び出しをラップしたluaL_loadbufferを使用します。 The Auxiliary Libraryを扱うリファレンスマニュアルの章で、その使い方を読むことができます。これにより、luaスタックの先頭にチャンクが残されます。これはlua_callで呼び出すことができますが、この例ではエラートラップを提供するlua_pcallを使用しています。あなたがちょうどコンパイルしたチャンクは何も引数を取らず(チャンクで関数ではありません)、興味のある戻り値を持たず、エラーが生成されたのと全く同じものを見たいので、最初の引数(常にluaインタプリタの状態)以外の引数はゼロにすることができます。

+0

いいね。試してみる –

+0

この関数でargsをどのように満たすことができますか? –

+1

他の質問への私の答えを見てください:http://stackoverflow.com/questions/4272231/how-does-lua-load-work/4272661#4272661 – lhf