Help us understand the problem. What is going on with this article?

「低レイヤを知りたい人のためのCコンパイラ作成入門」の紹介

始めに

Rui Ueyama氏による、C言語コンパイラ作成の入門書。
そんなに多くは無いですが、幾つかのコンパイラコンパイラ系書籍を読んだのですが今一つ理解が深まりませんでした。
そんな中、今回紹介する
低レイヤを知りたい人のためのCコンパイラ作成入門」は私に”構文解析”を教えてくれました。

氏は書中で「本」と記述されていますので今回の記事中でも「低レイヤを知りたい人のためのCコンパイラ作成入門」を本として紹介したいと思います。

本書の中でも書かれていますが、従来の解説では目的の言語の仕様を決めてからコンパイラの各開発ステップの解説を行うと。
この場合全てのステップが終わるまで全体を試すことが出来ない。
この点を回避するために、まずは極端にも思えるほど簡単な内容の言語仕様を決定し、それを完成させる。
その後言語仕様をバージョンアップし、再度コンパイラを完成。
このステップを繰り返すことで最終的にC言語(っぽい)コンパイラの完成を目指すのが本書です。

目からウロコ的であり、よくよく考えたら私、個人的には普段そんな開発手法をとっていました。

そして、この手法による解説を1項目ずつ読み進めながら実際にコンパイラを書いていくことでこれまで理解できなかった構文解析部分が理解できるようになりました。

コラム

本書の中でちょいちょい挟まれているコラムも大変興味深く、これまで考えたこともなかったC言語の進化の歴史を垣間見ることが出来ました。
また、CPUなどのよりハードウェア側の事情を解説されているところなども、とても勉強になりました。

今後について

私は6月ごろの内容で一度通読し、実際にコンパイラを作って試してみました。
久しぶりにサイトを訪れた所情報が更新されていました。
6月以降に追加されていた内容は読んだだけで実際に試してはいませんが、時間があれば試してみたくなる内容でした。

今回記事にするに当たり、改めて全体を読み返してみました。
本書冒頭に「このオンラインブックは執筆中です。完成版ではありません。」と記述されていたり、そのほかにも執筆途中を思わせる記述がありました。今後もアップデートされていくものと思います。

最後に

今回久しぶりにサイトを見た所内容が大きく更新されていたこともあり、著者の方への感謝の気持ちも込めてQiitaの記事にしようと思いました。
コンパイラやその周辺技術について関心のある方は一度ご覧になり、実際にご自分の手でコンパイラを作ってみてはいかがでしょうか。
為になること請け合いです。
私は6月当時、本書の内容に従ってコンパイラを作成するのにおよそ1か月ほどかかりました。
内容が更新されていることもあり、今ですともう少し時間がかかるかもしれません。

本書で学習した内容を踏まえ、現在ラズベリーパイで動作するPLCを作成中です。>>こちら
積年の目論見に手を付けられたのも、素晴らしい本書を公開していただいたRui Ueyama氏のおかげだと思います。ありがとうございます。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away