最近は前に比べてちょっとレイヤーが低めな仕事をするようになり、わからないことが増えた。
中でもc言語やメモリのこと、cpuのことなどなどは全くもってわからない。
ミドルウェアはcで書かれていることが多かったり、ハード的な制約に影響されることが出てきたりするけど、さっぱりわからない、という場面にちょいちょい遭遇するようになった。
これではまずい、cくらいわかるようにならなければ・・・他にも色々・・・
ということで、最近コンパイラを作り始めた。
最終的には最適化とかは全然しないけど動くバイナリが吐ける簡単なcコンパイラを作りたいと思っているけど、今のところ練習として数式のパーサを書いた。
調べ物とか既存のコードを参考にしたりせず思いつくまま書き下したらどんなんができるかと思ってやってみたら案の定ひどいものができた。
数式をパースして構文木を作るのと、評価することはできる。 ただし適当に作ったら右結合になっていて、intの範囲なので割り算でおかしくなったりする。
バックエンドがあまりにも難しいので色々と調べ物をしているが実装するに至らないので、バックエンドの理解が進むまでフロントエンドをもう少し真面目に書こうということでオートマトンなどを調べている(今まで全然知らなかった)
字句解析と構文解析に分けてみようと思う。