(命令リストから制御フローグラフをつくる関数)を書きかけていたまま、しばらく間があいてしまって忘れかけていたのを読んだ。完成寸前のところで止まっていたので、今日いちおう完成させて、動かしてみた。章の残り、生存解析に進む(干渉グラフの生成)です。レジスタ割付けを人手でやってどうにか動かしたんだが、あれから10章(生存解析)、11章(レジスタ割付け)を経て、晴れて全部コンパイラでできるようになった。実行結果のスクリーンショットが上、ソースが下である。ように書いたらうまくいかなかった。それはそうと、うまくいかないときに「残念ながらアプリは停止しました」しか情報がないのがつらい。print("...\n")end以下、完全に自分むけメモだけど、今日の修正について。複数命令を含んでいることによるもの。出口生存でないときにハザードを起した。1命令に対応するように実装すべきだったかも。新しいラベルが保留中の前方参照を解決するときに、そのラベルと次の命令をただしく継げられていなかった。この後、以下のように確認・デバッグを進めようかな。コンパイラを書いてみる」プロジェクトに移行。(抽象構文)の作成を並行してやる感じかなぁと思いつつとりかかっていた。んが、「一通りこなした」部分もきちんと勉強しなおそうというのも同時にやっていて、正規言語やら文脈自由言語やらその解析方法やらも復習している。Haskell』にもそういう章があったなと8章を見直したり。あそこに述べられているのは、バックトラックのある(予測型ではない)再帰下降パーサーだな。文法に直すとこまでやっているのに、予測型再帰下降パーサにはせずに終わっている。デバッグができるようになった。開始の位置に来たときの動作が変いずれも、直したつもり。21)]うーん、いっぱいだ。ことで、小さいやつを用意したのがあとの3つ。節の最初のトークンが文字列だった場合のやつ。挿入されてしまっていた。結果が正しいかどうかは、明日みましょ。212ひとつひとつ、文法の曖昧なのをなくしていこう。ひとつの問題で沢山の衝突が引き起される傾向があるようなので、この数ほど修正箇所はないだろう。トークンをつかうレイアウト規則では、そうしないと構文エラーになる箇所には仮想閉じブレースが補われることになっている。そこで、仮想ブレースが閉じていないのを許容する文法にすればいいのかなと思ったんだけど、こういうのはいかにも衝突の原因になる。マニュアルにもそういう利用方法が書かれている。