2011-12-31 11 views
5

Wiem, jak osadzić Lua w innych językach, ale chciałbym ponownie użyć TYLKO parser do parsowania kodu i dać mi wynik na przykład jako AST. Jaki jest najłatwiejszy sposób zrobienia tego z platformą Lua?Jaki jest najlepszy sposób ponownego użycia parsera Lua?

Dzięki!

+2

Parser lua nie generuje AST - kod źródłowy przechodzi w jedno przejście od tekstu do kodu bajtowego –

+0

Czy to oznacza, że ​​chcę, aby to niemożliwe? Analizatora składni nie można użyć ponownie? – CharlesS

+1

Co chcesz zrobić z AST? – lhf

Odpowiedz

3

Ktoś już dokonał ANTLR gramatyki dla języka Lua:

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

lub jeśli używasz antlr v4:

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

mam używany ANTLR na parze projekty z dobrymi wynikami. Będzie generował parser C (ANTLR v3) lub C++ (ANTLR v2), w tym generowanie AST, jeśli o to poprosisz.

+1

Dlaczego v2 produkuje C++, podczas gdy v3 produkuje C? –

+2

I interesujące pytanie. v2 miał kilka celów, w tym C++, Java i C#. v3 obsługuje C, Java, C#, Python i Objective C. Choć może być oczywiste, dlaczego dodano Python i Objective C, nie jest tak jasne, dlaczego porzucili C++. Jeden z opiekunów ANTLR powiedział kilka razy, że napisał cel C++ dla ANTLR v3, ale nigdy tego nie zrobił. Być może inni nie próbowali, ponieważ ciasteczko jest mokre (http://blogs.msdn.com/b/oldnewthing/archive/2009/12/01/9930480.aspx). W jaki sposób cel C++ z v2 "zniknął" z wersji 3? To dlatego, że przeprojektowali docelowy interfejs API, aby ułatwić dodawanie języków. –

+0

@JohnZwinck Link nie działa. –

Powiązane problemy