2014-09-30 60 views
1

從Lua腳本中獲取C#中的抽象語法樹最簡單的方法是什麼?我正在嘗試在C#中爲Lua腳本進行簡單的靜態代碼分析。C#中的Lua AST

許多現有的代碼分析工具,如LuaInspect基於MetaLua,但我沒有看到一種簡單的方法來將MetaLua集成到C#中。像Lua for Irony這樣的項目似乎處於alpha階段,或者幾年前開發已停止。

對於靜態代碼分析,你有什麼建議在C#中爲LUA獲取AST?

回答

0

如果你可以運行Lua代碼,沒有什麼能阻止你整合LuaInspect和MetaLua。 MetaLua的早期版本需要一些手動工作來避免編譯步驟,但最新版本(0.7+)不需要太多工作。 AST的產生是非常簡單:

require('metalua.compiler').new():src_to_ast(src, filename) 

注意LuaInspect尚未更新,以支持最新版本的metalua格式lineinfo變化,所以如果你打算使用它與ML 0.7+,您可以查看these changes我使它在我正在開發的Lua IDE中工作。

1

你可能會想嘗試monosharp:http://www.moonsharp.org/

它使用ANTLR生成C#AST。雖然你可能需要做一些代碼探測,因爲它的主要目標不是「創建AST」,而是「直接在C#中解釋Lua」。