GWEB: Go言語のためのリテラルプログラミングツール
(github.com/sjnam)GWEBは、Go言語のためのリテラルプログラミング(Literate Programming)システムです。ドナルド・クヌース(Donald Knuth)のCWEB構造を緊密にモデル化して開発されました。
開発者は、1つの.wソースファイルにTeX文書(説明)とGoコードを並行して記述します。 このファイルは、機械と人間のための2種類の成果物へ変換されます。
中核ツールと機能
GWEBシステムは、大きく2つの中核コマンドで動作します。
- gtangle: 文書の説明を除き、Goコードのセクションだけを集めてコンパイル可能な
.goファイルを生成します。出力時に自動でgofmtスタイルに整形されます。 - gweave: 人が読みやすい、美しく組版された文書(
.tex➡️ PDF)を生成します。予約語は太字、識別子はイタリックで表現され、相互参照インデックスが自動生成されます。
主な特徴と利点
- 直感的なフォーマット:
//lineディレクティブを標準でサポートしており、コンパイルエラーやパニック発生時に.goファイルではなく元の.wファイルの行位置を正確に案内します。 - セルフホスティングシステム: GWEB自体もリテラルプログラミング方式で開発されています。
lit/フォルダ内の.wファイル群がGWEBの実際のソース原本です。 - エディタ対応: VS Code、Vim、Emacsユーザー向けのシンタックスハイライト設定機能も提供します。
GWEBを使うことで、複雑なGoプロジェクトの設計意図やアルゴリズムを、1冊の本を書くように優雅に記録し管理できます。
まだコメントはありません。