2023/01/03
楽しくて為になる写経
やったこと
- PL/0' コンパイラ写経
- じいちゃんのパソコンの質問に答える
年末から少しずつやっていた PL/0' コンパイラの写経の続きをやった。
これは『コンパイラ 作りながら学ぶ』(中田育男)を読みながらやっているもので、本では C 言語で実装されているがただ全部写すだけではおもしろくないと思い、 Go で写経中。
しかしこの選択が誤りで、本に載っているコードはファイルが密結合だったりグローバル変数を使っていたりして Go で写経する際に相性が悪かった。
そこは書き直して Go like にして綺麗にすればいいじゃんという話だが、本を一通り読んだとはいえ、どう実装していくか全く分かっていなかったため素直に写経し始めてしまっていた。
あと単純に Go に共用体が無かったり switch 文の仕様が地味に違ったりするのはつらいポイントだった。
はじめは写経楽しくないし知識が身につくのかと疑問だったが、理解しながら書いていくうちに全容が掴めたり、理解が曖昧だった理論の補強ができたりして徐々に楽しくなってきた。
言語処理系の実装というと、字句解析、構文解析、意味解析、仮想マシンなどのフェーズがあり、フェーズ毎にトークンや構文木、機械語などの異なる形式のデータを入出力して最終的な実行結果を得るイメージがあったが、この本では LL(1) 文法やスタックマシンを採用することで、字句解析と構文解析、意味解析、誤りの訂正、機械語の生成を一つずつのトークンに対して行っている (ワンパスコンパイラというらしい)。
じいちゃん家に行ってパソコンの質問をされたので答えた。 Windows のことはよく分からないから毎回調べているが、だいたいの場合解決する (アプリをインストールしたいとか、ログインの方法を変えたいとかなので)。 実質僕はほぼ何もしていないが、解決すると天才エンジニア 1 だと言ってくれるのでいいことした感じがする。
思ったこと
冷静に考えて背景が黒っぽい色で文字が白っぽい色のブログが読みにくいことに気づいて、ブログだけでもカラースキームを変えようかと思い、いい感じの配色を探していた。 探してもピンと来るものが無くて結局今使っているものがしっくりくるという結論になった。
ざつ旅の一巻を買ったから読んだ。 すごい旅をしたくなった。 去年は東京観光したから、今年の夏は別の所に行きたいなーと思ってる。
今日の英会話
Samsung は最初は麺など食料品を売る企業だったという話。 知らなかった。
脚注
-
天才エンジニアです。 ↩