for文をwhileに書き換えることで実装しようとしたらcontinue文の処理で詰まってしまって出来なかったので、仕方なくfor文専用のコードを付けくわえた。Ruiさんによるとそれでいいとのこと。下手に一般化しないほうが良いらしい。gotoあたりはまとめられると思うけど、まぁおいおい。それでfor文の3つめの式にi++とか書きそうになったわけだけどインクリメントを実装していなかったので実装した。前置と後置の違いはinclとpushqの順番だけだった。a;といった変数宣言を読み込めるようにした。同じ名前の変数が宣言できるとまずいし、宣言していない変数が使われるのもまずい。この処理は従来通りコード生成の部分で行うことも可能だったかもしれないけど、そうすると変数宣言をパーズする意味がなくなるし、後々、式に型を与えるのがつらくなりそうだったので、前々から思っていた「記号表をパーズ時に作る」ようにした。するとかなり大規模にコードを書き換える必要があったので大変だった。演習」という授業)の時間を全部とかして、しかも45分くらい延長してから帰宅した。後半はコンピネをやるつもりだったのになぁ。仕方がないから帰りの電車の中でやったけど、途中で寝た。intを3時間位かけて読み込ませた後、スコープと言うか環境を作った。変数の情報を持つMapをトラバースする方法がなくてつらかったけれど、よく考えるとMapとVectorの両方を持たないといけないことに気づいた。stmts)の環境は別だっていうこと。いうことで少し情報が重複してダサい実装になっているけど仕方がない。本質的に8ccとこのあたりは同様。いうかあれのコードを見て実装したので自然と似る。段々とaqccが8ccの劣化コピーになってきていていやだなぁと思っている。8ccはグローバル変数とstatic変数の使い方がうまい。C++とかを普段使っていると(?)グローバル変数は理由なく悪という気分になってくるし、実際現状のaqccはグローバル変数を使っていない。並列処理とかをするわけでもないんだから必要なところは適宜使ったほうが、結果的にコードが短くなるのかもしれない。8ccだと、グローバル変数にアクセスする関数を制限していて、見通しが良くなっている。lccとかもちょっと見ようと思ったんだけど、かなり読みにくかった。Cコンパイラとして8ccはかなり読みやすいというのは事実のようだ。あとpccも見たかったんだけどDLする場所が見当たらなかった。帰ってから電電回路のレポーヨを作った。鮟鱇ランドで@rocoに助けてもらった。