2014-09-30 3 views
1

Что такое самый простой способ получить абстрактно-синтаксическое дерево внутри C# из сценария Lua? Я пытаюсь сделать простой статический анализ кода в C# для сценария Lua.Lua AST в C#

Многие существующие инструменты анализа кода, такие как LuaInspect, основаны на MetaLua, но я не вижу простого способа интегрировать MetaLua в C#. И такие проекты, как Lua for Irony, похоже, находятся в альфа-стадии или развитие прекратилось много лет назад.

Что вы хотели бы получить AST для LUA в C# для анализа статического кода?

ответ

0

Если вы можете использовать код Lua, ничто не мешает вам интегрировать LuaInspect и MetaLua. В более ранних версиях MetaLua требовалась некоторая ручная работа, чтобы избежать этапов компиляции, но последние версии (0.7+) не требуют большой работы. Поколение AST так просто, как:

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

Обратите внимание, что LuaInspect не была обновлена ​​для поддержки lineinfo изменения формата в последних версиях metalua, так что если вы планируете использовать его с ML 0.7+, вы можете просмотреть these changes Я сделал, чтобы он работал в Lua IDE, над которым я работаю.

1

Вы могли бы хотеть попробовать monosharp: http://www.moonsharp.org/

Он использует ANTLR построить C# AST. Вероятно, вам придется выполнять некоторые операции с программным обеспечением, поскольку его главная цель заключается не в создании AST, а на самом деле «интерпретации Lua непосредственно на C#».

Смежные вопросы