Чего вы хотите достичь? Преобразуйте файлы lua в код C #, где вы хотите интенсивно работать с ними, или вам просто нужен какой-то код, который выполняет те же функции, что и исходный код.
Для первого типа конверсии ответ таков: это довольно сложно, но не невозможно. Вы должны проанализировать код и воссоздать ту же (динамическую) функциональность в C #. В этом могут помочь такие фреймворки, как LinFu.Reflection, поскольку они добавят динамическую функциональность в CLR.
Для второго типа моя идея состоит в том, чтобы преобразовать байт-код lua в C # вместо исходного кода. Это не должно быть слишком сложно, в основном потому, что у lua мало опкодов (около 30, если я правильно помню). Из этих кодов операций сложнее всего преобразовать операторы логики и перехода (потому что у вас нет goto в C #), но если вы оставите операторы потока нетронутыми (и конвертируете их в C # - это более или менее выполнимо), и только скомпилируйте код между ними и конвертируйте полученный байт-код в C #. Конечно, таким образом вы многое потеряете от читабельности исходного кода, и поддерживать его будет намного сложнее.
Вы также можете попытаться найти решение между этими двумя крайними случаями, которые я написал здесь. Некоторые конструкции могут быть легко перенесены (в основном, циклы и простые арифметические операторы), но для обработки таблиц прибегают к представлению кода операции.