Yantra 是一款 C++23 编译器和 LALR(1) 解析器生成器,除标准库外不依赖任何其他库。它提供集成式推入式词法分析器、Unicode/UTF-8 支持、词法分析器模式、AST 构建以及多种自顶向下 AST 遍历器。它既可以生成包含 `main()` 的独立合并式解析器,也可以生成独立的 `.hpp` 和 `.cpp` 文件。
与 Bison、Yacc 和 Lemon 不同,这些工具在归约过程中自底向上执行语义动作;Yantra 会先构建完整的 AST,然后自顶向下遍历它,从而允许父节点的动作在子节点之前执行。它具备 LALR(1) 的效率,同时避免了 ANTLR 的 LL(*) 和自适应预测开销,并且仍然是原生 C++ 工具,不需要 JVM。不过,Yantra 较新、成熟度较低,仅支持 C++,并且并非为增量解析或 tree-sitter 一类的编辑器集成而设计。
使用 CMake 构建它以生成 `ycc`,然后从 `.y` 语法文件生成解析器,并使用 Clang、GCC 或 MSVC 编译。输入可以来自文件、字符串、交互式会话,或套接字等流式数据源。Yantra 采用 MIT 许可证,由 Renji Panicker 维护。