kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

WEB+DB Press Vol.125の特集記事「作って学ぶプログラミング言語のしくみ」を執筆しました

 色々苦労も多かったですが、無事、全工程を終え、後は発売日の10月23日(土)を待つのみで、感慨もひとしおです。

f:id:kmizushima:20211007131117j:plain
WEB+DB Press Vol.125

 「プログラミング言語を作る」系の書籍や雑誌記事は時々見かけるくらいには珍しくなくなっていますが、構文解析器を記述するのにPEGを使ってたり、構文解析を後回しにして先に抽象構文木インタプリタを書いてもらうなど、これまで「プログラミング言語を作る」というテーマについて色々考えた結果を詰め込んでいるのが、私っぽさと言えるかもしれません。

 30ページで、以下のような最低限「まともな」プログラミング言語としての機能を装備したものを作って解説するのは色々苦労も多かったですが、「プログラミング言語を作ってみたいけど、しんどそう」という人の糧になればいいなと思います。

  • 算術式あり
  • 関数定義と呼び出しあり
  • ローカル変数とグローバル変数あり
  • 条件分岐+ループ構文あり
  • 拡張構文として:for-in式、ラベル引数あり

 ラベル引数とか中途半端にリッチな機能がある割に、コード量と解説の分量を抑えるために、データ型が整数のみになっているのはややアンバランスに感じられるかもしれません(構文糖衣として書ける機能は、処理系のコード量をそれ程増やさずに済むのでデータ型の方を絞るという設計判断になったという事情はありますが)。

 ページ数制限のために全てのコードを文中に掲載することは出来ませんでしたが、プログラミング言語ToysソースコードGitHub上でOSSとして公開されています。この辺りも「今どき」と言えるかもしれません。

 完成に至るまではWEB+DB Pressの編集様には原稿が遅れたりと至らないことがありましたが、おかげさまで無事、完成までこぎつけられたと思います。この場を借りて御礼申し上げます。    そして皆様、書店で見かけたら是非ともお買い求め頂けると嬉しいです(とはいえ、プログラミング言語を作った事のある方には少々退屈な内容かもしれません)。よろしくお願いします。