行きの電車の中で関数定義の中にintを書けるようにした。昨日はその後帰りの京阪が人身事故で止まっているスキにポインタを扱えるようにした。みたいなコードを通すのに苦労した。unary-exprとして読んで、その次に=が来ているかどうかで分岐して、来ていなければunary-exprを読む前の状態に戻って、みたいな実装をした。Doc(編注:Ruiさんのテキスト)がめっちゃ増えていた。掲示板の方にも貼ったようだ。今日は一日中微積やら確率論やらをやっていたため進捗は無し。来週いっぱいはこういう日が続きそうだ。実装上の指摘をいただいた。エラー出力にトークンを出力。test.cをtest.incにしてもいい。aqcc.hには不完全定義しかかかないほうがいい。VectorやMapなど。これはもともとtest.cとかのためにこういう実装にしたんだけど、今の状態だとそれでも動きそう。Appleしか使ってないそうな。指摘がなかったので良かった(?)みんなグローバル変数を使っていないらしい。グローバル変数は悪っていう風潮だかんねぇと思ったり思わなかったり。typeにバイト数をもたせる方がtype2byteとかいう謎の関数を呼ぶよりいいと思い候。構造体とかも楽に書けるし。TY_INTとかは一々newするのがアホらしいので、get_int_type()みたいな関数を作って、static変数のアドレスを返すようにするつもり。この辺りも8ccの影響だかんねぇ。エラー出力にトークンを合わせて出力するのは一筋縄では行かないのでとりあえず放置。周りに関して全部intで取り扱っているのはどうにかしたいと思っていたりする。Cの列挙型対応って確か不十分なんだよね......。文字列リテラルまでちゃんと実装した暁にはアレしたい。朝から確率論をやっていて、今JFR(編注:情報符号理論)に移行した。思い出したので書き留めておく。今の関節参照の実装がまずい。正常にコンパイルできない。*があるときの代入式のコード生成を変える必要がある。コードをダンプした後、それをpopして、そこのアドレスを使うようにすれば良い。簡単にできる変更だがまだやっていない。代わりに今日Slackで少し話題になっていた%rspが16バイト境界にないといけないというのを実装した。8バイトでも関数呼出しが出来ているのでよくわからない。