2011-12-31 26 views
5

Sé cómo incrustar Lua en otros idiomas, pero me gustaría volver a utilizar SOLAMENTE el analizador para analizar el código y darme el resultado como AST, por ejemplo. ¿Cuál es la forma más fácil de hacerlo con la plataforma Lua?¿Cuál es la mejor manera de reutilizar el analizador Lua?

Gracias!

+2

El lua parser no genera un AST - el código fuente va en una sola pasada del texto al bytecode –

+0

¿Eso significa que lo que quiero es imposible? El analizador no puede ser reutilizado? – CharlesS

+1

¿Qué desea hacer con un AST? – lhf

Respuesta

3

Alguien ya hizo una gramática ANTLR para el lenguaje Lua:

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

O si está usando antlr v4:

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

que he usado en un par antlr proyectos con buenos resultados. Generará un analizador C (ANTLR v3) o C++ (ANTLR v2) que incluye generación AST si lo solicita.

+1

¿Por qué v2 produce C++ mientras que v3 produce C? –

+2

Y pregunta interesante. v2 tenía varios objetivos, incluidos C++, Java y C#. v3 admite C, Java, C#, Python y Objective C. Si bien puede ser obvio por qué agregaron Python y Objective C, no está tan claro por qué abandonaron C++. Un mantenedor de ANTLR dijo varias veces que escribiría un objetivo de C++ para ANTLR v3, pero nunca lo hizo. Quizás otros no lo hayan intentado porque la cookie está mojada (http://blogs.msdn.com/b/oldnewthing/archive/2009/12/01/9930480.aspx). ¿Cómo desapareció el objetivo de C++ de v2 de v3? Eso se debe a que rediseñaron la API objetivo para que sea más fácil agregar idiomas. –

+0

@JohnZwinck Link parece que no funciona. –

Cuestiones relacionadas