May 2024
Intermediate to advanced
276 pages
3h 51m
Japanese
Awk は「専用言語」のトランスレータ開発に用いられることが多い。ここで言う専用言語とは、用途を限定した簡易言語 (little language、小さな言語) を意味する。トランスレータを取り上げた理由の 1 つに、言語処理系の動作を学ぶことがある。本章ではまずアセンブラを例に取り上げ、アセンブリ動作の基礎を簡単に示す。このアセンブラには、アセンブルしたプログラムを実行するインタプリタが付属しており、この組み合わせを用い、アセンブリ言語とコンピュータアーキテクチャの基礎を示す。その他に電卓の基本演算例と、Awk 言語のサブセットを対象とした、再帰下降型トランスレータの基本動作を示す例も取り上げる。
実装に多くの労力を費やす前に、言語の構文や意味論を検証するのが良いだろう。その例として本章では、グラフ作成言語、ソートコマンドのオプション生成言語を取り上げる。
実用性を備えた言語を実装したい向きもあるだろう。本章ではさまざまな電卓も例に取り上げる。
ここで取り上げる言語処理系は、次図に示す概念を基に構築する。

フロントエンドのアナライザ (字句解析、解析器) は、ソースプログラムを読み込み、演算子、オペランドなどの字句単位に分解する。ソースプログラムの解析時には文法的に正しいかどうかも検査し、誤りがあればエラーメッセージを出力する。最終的にソースプログラムをなんらかの中間形式へトランスレート (翻訳) し、出力するまでがアナライザの仕事だ。その中間形式からターゲットプログラムを生成するのは、バックエンドのシンセサイザ ...