2010-11-10 9 views
3

первые вещи сначала;C# Lua Parser/Analyzer

Я пишу немного LUA-Ide в C#. Исполнение кода выполняется сборкой с именем LuaInterface. Редактирование кода выполняется с помощью Scintilla-Port & Интерфейс RAD/UI через расширяемую визуальную среду IDesignSurfaceExt (однокоординатное генерирование кода). Обработка файлов обеспечивается небольшим sql-lite-db, используемым в качестве файла проекта-пакета.

Так что в целом у меня есть все, что нужно вместе ...

Единственная проблема нерешенной является синтаксический анализатор/лексер для Lua. Я не хочу загружать & выполнить код! Я просто хочу проанализировать строку, содержащую код Lua, и получить некоторую информацию об этом как функции и глобальные vars. Я действительно не хочу полностью писать парсер ... (Я ненавижу регулярное выражение - я все время ошибаюсь ^^)

Кто-нибудь получил ссылку на синтаксический анализатор .net lua?

Просто для уточнения - я только хочу анализировать Свода на данный момент - я DonT wnat к запустить это!

Заранее благодарен!

Corelgott

ответ

3

Только для записи:

Я пошел с comibination из:

http://irony.codeplex.com/ - Kit реализации языка A, который может быть адаптирован для анализа нескольких языков , (. Кстати, этот один не получил практически никакого ducumentation, что так всегда ... Так что код-комментарии не Docs ... но очень весело ...)

и адаптированная версия

http://luairony.codeplex.com/ - Lua Синтаксис для иронии (добавлена ​​некорректная погрешность погрешности)

Но я должен администратор, оба довольно тяжелые вещи ... и вы открываете коробку новых проблем, а также множество возможностей ...

Cheers, Corelgott

0

This не совсем то, что вы после этого, но, возможно, половина из них может обеспечить половину ответа.

Он преобразует Lua в C, анализируя Lua в AST. Затем вы можете извлечь необходимую информацию из АСТ. Это написано в Lua, но вы уже знаете, как называть это :)

0

Посмотрите здесь: Lua recipes for LPeg Возможно, вы можете использовать его: в противном случае я бы рассмотрел использование расширенного BNF из документации.