コンパイラ
概要
コンパイラ(Compiler)は、あるプログラミング言語で書かれたソースコードを、別の形式(機械語・バイトコード・他言語)へ 変換するプログラム です。言語処理系の中核であり、字句解析から最適化・コード生成までの定番のパイプラインを持ちます。
典型的なパイプライン
- 字句解析(Lexing) — 文字列をトークン列に分割(トークン化 と同名だが別概念)
- 構文解析(Parsing) — トークンから構文木(AST)を構築
- 意味解析 — 型検査などの検証
- 中間表現(IR)への変換
- 最適化(Optimization) — インライン化などコードを効率化(Go の
//go:fix inlineなど) - コード生成 — 機械語・バイトコード・別言語を出力
関連トピック
- トランスパイラ — 高水準言語から別の高水準言語へ(WebAssembly へのコンパイル、Verilog→回路など)
- JIT / AOT — 実行時/事前コンパイル
- 言語処理系を学ぶと、字句解析〜評価まで(言語の庭 のブラウザ処理系もこの構成)の理解が深まる
式の評価から学ぶ基礎
括弧や優先順位を含む四則演算式を正しく処理するには、コンパイラの基礎が役立ちます。「四則演算プログラムとコンパイラの仕組み」は次の 3 つで解説します。
- 逆ポーランド記法(RPN) — 計算順序が一意に定まる形式へ変換
- スタックマシン — 数値をスタックに積んで評価する実行モデル
- yacc(コンパイラコンパイラ) — 「式とは式+式であり式×式である」のような再帰文法から自動でパーサーを生成し、優先順位を処理させる
AI 時代でも、プログラムがどう動くかを理解することは問題解決の基盤になる、という主張。参考: 四則演算プログラムとコンパイラの仕組み
関連ページ
参考資料(Daily フィード)
- (HN)“Want to Write a Compiler? Just Read These Two Papers (2008)”
- (HN)“A Verilog to Factorio Compiler and Simulator (Working RISC-V CPU)”