Yantraは完全なASTを最初に構築し、その後別パスでトップダウンにウォークし、セマンティックアクションを呼び出すC++パーサージェネレータです。ほとんどのLALRパーサージェネレータ(Yacc、Bison、Lemon)とは異なり、パース中にセマンティックアクションを実行するのではなく、Yantraは親ルールのアクションを子ノードが訪問される前に実行することを許可します。これにより、単一の文法から複数のウォーカーを定義できます。たとえば、一つはC++を出力し、もう一つはJavaを出力します。ASTクラスとウォーカークラスは両方とも自動的に生成されます。Yantraはネストされたコメントのためのモードサポートを備えた統合字句解析器を持ち、オプションでamalgamated単一ファイル出力(生成されたmain()付き)を提供し、C++23コンパイラのみを必要とします。MITライセンスの下で提供され、現在のバージョンは0.5.1(pre-1.0)で、単一の開発者によってメンテナンスされています。
トップダウンウォークの振る舞いを示す小さな文法の例:"1 + 2 + 3"をパースすると、まず"Adding"(ルート)が印刷され、その後に数値の出力が続きます。この順序は、あらゆるアクションが実行される前に完全なASTが存在するためのみ可能です。
既知の制限事項はプロジェクトのGitHubページに文書化されています。リポジトリはhttps://github.com/TantrixAuto/yantraにあり、フィードバックと質問はメンテナーによって歓迎されています。
このツールはCMakeを使用してビルドされ、文法ファイルからパーサーを生成するycc実行可能ファイルを生成します。
主要なエンティティ: 企業: TantrixAuto
出典: Hacker News · 要約:HeadlinesBriefing