ワンクリックで
rebrgen-overview
rebrgen プロジェクトの全体像、アーキテクチャ、ファイル構成の概要。プロジェクトを把握したいとき、どこに何があるか確認したいときに参照する。**作業開始前に必ず読むこと。**
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
rebrgen プロジェクトの全体像、アーキテクチャ、ファイル構成の概要。プロジェクトを把握したいとき、どこに何があるか確認したいときに参照する。**作業開始前に必ず読むこと。**
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
rebrgen の設計判断を ADR として記録するか検討する。設計方針の議論、選択肢の比較、既存判断の変更、判断理由を残す場面で使用する。
rebrgen のビルド、初期セットアップ、EBM再生成、ebmcodegen復旧、新言語ジェネレーター追加を行うときに使用する。
rebrgen のコンパイルエラー、テスト失敗、想定外の挙動を調査するときに使用する。型や構造の定義から原因を追跡するデバッグ手順を提供する。
rebrgen 内部の機能、マクロ、Context型、実装場所や構造を調べるときに使用する。開発中に関連定義やAPIの所在を確認するための知識を提供する。
rebrgen の複数言語ジェネレーターにまたがるリファクタリング、共通部分の整理、EBM構造変更の影響調査を行うときに使用する。
rebrgen のコードジェネレーターへ新機能を追加するときに使用する。共通処理と言語固有処理の配置、EBM変更の判断、実装時の注意点を提供する。
| name | rebrgen-overview |
| description | rebrgen プロジェクトの全体像、アーキテクチャ、ファイル構成の概要。プロジェクトを把握したいとき、どこに何があるか確認したいときに参照する。**作業開始前に必ず読むこと。** |
rebrgen は brgen(バイナリフォーマット定義言語)のコードジェネレーター構築フレームワーク。
.bgn ファイル → AST → 各言語コード(直接変換).bgn ファイル → AST → EBM (IR) → 各言語コード(IR 経由)IR を挟むことで、言語間の共通化・最適化パスを実現する。
.bgn → [src2json] → brgen AST (JSON)
↓
[ebmgen] → EBM (.ebm)
↓
[ebm2<lang>] → 各言語コード
ebmcodegen はコードジェネレーター自体のスケルトンを生成するメタツール。
READ_DATA のような「何をするか」だけを記述。「どうするか」は各言語バックエンドが担うsrc/
├── ebm/
│ ├── extended_binary_module.bgn # EBM 構造定義(編集対象)
│ ├── extended_binary_module.hpp # 自動生成(編集禁止)
│ └── extended_binary_module.cpp # 自動生成(編集禁止)
│
├── ebmgen/ # AST → EBM 変換ツール
│ ├── convert/ # 変換ロジック(statement/expression/type/encode/decode)
│ ├── transform/ # IR 最適化パス(CFG、ビット操作、IO ベクトル化など)
│ ├── interactive/ # インタラクティブデバッガー・クエリエンジン
│ └── GEMINI.md # 詳細ガイド(長い)
│
├── ebmcodegen/ # コードジェネレーター生成メタツール
│ ├── default_codegen_visitor/ # デフォルトビジター実装(各 lang が継承可能)
│ ├── stub/ # 共通スタブ(entry.hpp, output.hpp)
│ ├── body_subset.cpp # 自動生成(編集禁止)
│ └── class_based.cpp # クラスベースフックシステム生成ロジック
│
├── ebmcg/ # default codegen visitor を継承する generator (CodeWriter 中心)
│ ├── ebm2c/ # 言語及び実装hook一覧は`python script/ebmtemplate.py list all` で確認可能
│ ├── ebm2go/
│ ├── ebm2python/
│ ├── ebm2p4/
│ ├── ebm2rust/
| ...
│
└── ebmip/ # default codegen visitor が不適な generator (interpreter, serialization, 可視化等)
├── ebm2rmw/ # interpreter。言語及び実装hook一覧は`python script/ebmtemplate_ip.py list all` で確認可能
├── ebm2json/ # EBM シリアライズ出力
... # ADR 0005 参照
各 ebm2<lang>/ の構成:
ebm2<lang>/
├── main.cpp # 自動生成(編集禁止)
├── codegen.hpp # 自動生成(編集禁止)
├── visitor/
│ ├── entry_before_class.hpp # 言語設定 + フック登録(編集対象)
│ ├── Flags.hpp # フラグ定義(編集対象)
│ └── *_class.hpp # 各ノード用フック(量が増えたら分割)
└── config.json # 言語設定(任意)
あなたの検索すべき範囲はbrgen/ディレクトリ及びrebrgen/内のみです。外側のディレクトリはbrgen自体とは一切関係ない(名前が似ていたとしても)ので探索時に誤って外に行かないように。
| スキル | 用途 |
|---|---|
/rebrgen-build | ビルド・再生成手順 |
/rebrgen-test | unictest テスト実行実行手順及び機能実装進捗確認 |
/rebrgen-new-lang | 新言語ジェネレーター追加 |
/rebrgen-debug | コンパイルエラー・デバッグ戦略 |
/rebrgen-query | EBM クエリエンジンの使い方 |
/rebrgen-inter-lang-refactor | リファクタリングの方針と手法 |
/rebrgen-new-feature | 新機能追加手順及び開発者への対処 |