■
というのはどうでもよくて、
pushQCodeDstVal :: A24ZParser a -> A24ZParser ([QCode],a) pushQCodeDstVal parser = do { save <- getQCodeDst -- 出力先を保存しといて ; setQCodeDst [] -- 出力先を空に ; v<-parser -- 実行 ; ret <- getQCodeDst -- 出力したのを取得 ; setQCodeDst save -- 保存しといたのを戻す ; return (ret,v) }
こういうコードを書いてしまうあたり、僕の脳はもはや副作用にやられすぎだと思った。
ノイマン脳の恐怖
- 全部のデータが32bit整数に見える
と、いうわけで、三番地文は生成できたので、CFG(Control Flow Graph)作ろー。作りかたは今から調べます。いや、その前にfoldConstか?
あー、僕も素人だから、ここらへん、適当なことが書けるよなー、というのもあったりするんですが、そういうときは、Web2.0的文脈で、「素人が参加できるのは素晴らしい」とかいうことにできるんではないですかね、多分。