2011-12-31 7 views
5

Я знаю, как вставлять Lua на другие языки, но я хотел бы повторно использовать ТОЛЬКО парсер для анализа кода и дать мне результат, например, для АСТ. Каков самый простой способ сделать это с помощью платформы Lua?Каков наилучший способ повторного использования анализатора Lua?

Спасибо!

+2

Анализатор lua не генерирует AST - исходный код идет за один проход от текста к байткоду –

+0

Означает ли это, что я хочу, невозможно? Парсер нельзя использовать повторно? – CharlesS

+1

Что вы хотите сделать с АСТ? – lhf

ответ

3

Кто-то уже сделал ANTLR грамматику для языка Lua:

http://www.antlr3.org/grammar/1178608849736/Lua.g

Или, если вы используете ANTLR v4:

https://github.com/antlr/grammars-v4/blob/master/lua/Lua.g4

я использовал ANTLR на пару проекты с хорошими результатами. Он будет генерировать парсер C (ANTLR v3) или C++ (ANTLR v2), включая генерацию AST, если вы попросите его.

+1

Почему v2 производит C++, в то время как v3 производит C? –

+2

И интересный вопрос. v2 имел несколько целей, включая C++, Java и C#. v3 поддерживает C, Java, C#, Python и Objective C. Хотя очевидно, почему они добавили Python и Objective C, не совсем понятно, почему они отказались от C++. Один из сторонников ANTLR несколько раз говорил, что он написал цель C++ для ANTLR v3, но так и не сделал. Возможно, другие не пробовали, потому что куки-мокрый (http://blogs.msdn.com/b/oldnewthing/archive/2009/12/01/9930480.aspx). Как цель C++ из v2 исчезла из v3? Это потому, что они переработали целевой API, чтобы упростить добавление языков. –

+0

@JohnZwinck Ссылка не работает. –

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