Yantra é um gerador de analisador C++ que constrói toda a AST primeiro, depois a percorre de cima para baixo em um passo separado, chamando ações semânticas. Ao contrário da maioria dos geradores de analisador LALR (Yacc, Bison, Lemon) que executam ações semânticas durante a análise, o Yantra permite que a ação de uma regra pai seja executada antes de seus filhos serem visitados. Isso permite que uma única gramática defina múltiplos percursos, como um que emite C++ e outro que emite Java. As classes AST e de percurso são geradas automaticamente. O Yantra possui um léxico integrado com suporte a modos para comentários aninhados, saída opcional de arquivo único amalgamado com main() gerado, e requer apenas um compilador C++23. Está licenciado sob MIT e atualmente está na versão 0.5.1, pré-1.0, mantido por um único desenvolvedor.
Um pequeno exemplo de gramática demonstra o comportamento de percurso de cima para baixo: ao analisar "1 + 2 + 3", ele imprime "Adding" primeiro (a raiz), seguido pelas saídas de números. Essa ordem só é possível porque a árvore completa existe antes de qualquer ação ser executada.
As limitações conhecidas estão documentadas na página do GitHub do projeto. O repositório está disponível em https://github.com/TantrixAuto/yantra, com feedback e perguntas bem-vindos pelo mantenedor.
A ferramenta usa o CMake para construção e produz o executável ycc para gerar analisadores a partir de arquivos de gramática.
Entidades-chave: Empresas: TantrixAuto
Fonte: Hacker News · Resumido por HeadlinesBriefing