中井 央
コンパイラとは,テキストファイルであるソースプログラムを実行可能な形式のファイルに変換してくれるソフトウエアである.授業やその他の場面で,プログラミングに関わったことのある人は,聞いたことのある言葉だろう. コンパイラというプログラムには,プログラミングに関しての多くの要素が含まれている.このため,プログラミングの基礎を勉強したいと思っている人には,コンパイラの構成法を勉強することが非常に役に立つと思われる.このための入門書として,以下に数冊をあげる.
1.コンパイラ,中田育男著,オーム社,1995 [007.64:N-43]
コンパイラを最初に学ぼうとするものにとって,非常に分かりやすい入門書
2.Compilers, Principles, Techniques, and Tools, Aho 他著, ADDISON-WESLEY, 1986 [007.64:A‐21]
コンパイラの教科書としてはバイブル的なもの.英語も読みやすいものであるので,技術英語を学ぶにもよい.
3.コンパイラT,U, 原田賢一著, サイエンス社, 1990 [007.64:A-21]
2.の邦訳
4.プログラミング言語処理系, 佐々政孝著, 岩波書店, 1989 [007.63:I-95:5]
かなり詳しい日本語の教科書.プログラミング言語の意味記述の方法である属性文法について一つの章を割いている. 次にコンパイラコンパイラに関してであるが,この言葉は聞き慣れない人も多いだろう.コンパイラを仕様記述にしたがって自動生成するプログラムをコンパイラコンパイラという. コンパイラのする仕事には,単語を切り出す(字句解析),構造を解析する(構文解析),というものがある.単語の種類は正規表現を使って記述することができ,構造は文脈自由文法を使って記述することができる.字句解析をするプログラムおよび構文解析をするプログラムは,それぞれの記述から自動的に生成することができる. このような自動生成を行うプログラムとして,LexとYaccがある.Lexは,字句解析器生成系と呼ばれ,Yaccは構文解析器生成系と呼ばれる.これらはコンパイラに限らず,様々なプログラムでのちょっとした入力の解析にも利用できる. Lex/Yaccの参考書を以下にあげる.
1.lex & yacc, John R.Levine 他著, 村上列訳, アスキー出版局
この本は,オライリー社のA NUTSHELL HANDBOOKシリーズの一冊. yaccとlexには様々な亜種があるが,それらについても論じられている.
2.UNIX yaccとlexの使い方, 田中正弘著, HBJ出版局
入出力に関する細かいプログラミングについてよく述べてある.
3.yacc/lex, 五月女健治著, 啓学出版
絶版. 入門者にとって分かりやすく,特にyaccでのエラー処理に関して詳しい.改訂されたものが,テクノプレスから出ている. *Books for Studying Compilers and Colmpiler Compilers, by Hisashi NAKAI *本学助手