Yantra ist ein C++-Parser-Generator, der zuerst den vollständigen AST erstellt, dann ihn top-down in einem separaten Durchlauf durchläuft und semantische Aktionen aufruft. Im Gegensatz zu den meisten LALR-Parser-Generatoren (Yacc, Bison, Lemon), die semantische Aktionen während des Parsens ausführen, ermöglicht Yantra, dass die Aktion einer Elternregel ausgeführt wird, bevor ihre Kinder besucht werden. Dadurch kann eine einzelne Grammatik mehrere Walker definieren, beispielsweise einen, der C++ ausgibt, und einen anderen, der Java ausgibt. Die AST- und Walker-Klassen werden automatisch generiert. Yantra verfügt über einen integrierten Lexer mit Modusunterstützung für verschachtelte Kommentare, optionale Einzelausgabe in einer amalgamierten Datei mit generierter main()-Funktion und benötigt lediglich einen C++23-Compiler. Er ist unter der MIT-Lizenz lizenziert und befindet sich derzeit in der Version 0.5.1 (pre-1.0), gewartet von einem einzelnen Entwickler.
Ein kleines Beispielgrammatik demonstriert das top-down-Walk-Verhalten: Beim Parsen von "1 + 2 + 3" wird zuerst "Adding" (die Wurzel) ausgegeben, gefolgt von den Zahlenausgaben. Diese Reihenfolge ist nur möglich, weil der vollständige Baum vor der Ausführung irgendeiner Aktion existiert.
Bekannte Einschränkungen sind auf der GitHub-Seite des Projekts dokumentiert. Das Repository ist unter https://github.com/TantrixAuto/yantra verfügbar, und Feedback sowie Fragen werden vom Maintainer willkommen geheißen.
Das Tool verwendet CMake zum Bauen und erzeugt die ausführbare Datei ycc zum Generieren von Parsern aus Grammatikdateien.
Wichtige Entitäten: Unternehmen: TantrixAuto
Quelle: Hacker News · Zusammengefasst von HeadlinesBriefing