HeadlinesBriefing HeadlinesBriefing.com

Yantra: Generador de analizadores C++ con recorrido de AST

Hacker News •
×

Yantra es un generador de analizadores C++ que construye todo el AST primero, luego lo recorre de arriba a abajo en un paso separado, llamando a las acciones semánticas. A diferencia de la mayoría de los generadores de analizadores LALR (Yacc, Bison, Lemon) que ejecutan acciones semánticas durante el análisis, Yantra permite que la acción de una regla padre se ejecute antes de que se visiten sus hijos. Esto permite que una sola gramática defina múltiples recorridores, como uno que emite C++ y otro que emite Java. Las clases de AST y recorredor se generan automáticamente. Yantra cuenta con un analizador léxico integrado con soporte para modos de comentarios anidados, salida opcional de un solo archivo amalgamado con main() generado, y requiere solo un compilador C++23. Está licenciado bajo MIT y actualmente está en la versión 0.5.1, pre-1.0, mantenido por un solo desarrollador.

Un pequeño ejemplo de gramática demuestra el comportamiento de recorrido de arriba a abajo: al analizar "1 + 2 + 3", se imprime "Adding" primero (la raíz), seguido por las salidas de números. Este orden solo es posible porque el árbol completo existe antes de que se ejecute cualquier acción.

Las limitaciones conocidas están documentadas en la página de GitHub del proyecto. El repositorio está disponible en https://github.com/TantrixAuto/yantra, con comentarios y preguntas bienvenidos por el mantenedor.

La herramienta usa CMake para compilar y produce el ejecutable ycc para generar analizadores desde archivos de gramática.

Entidades clave: Empresas: TantrixAuto

Fuente: Hacker News · Resumido por HeadlinesBriefing