トップ «前の日記(2014-06-28 (Sat)) 最新 次の日記(2014-07-10 (Thu))» 編集

uDiary

海野秀之(うんのひでゆき)の外部記憶

Twitter (twilog) / RSS / アンテナ / ぶくま

2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|08|
2010|01|02|03|05|06|07|10|11|
2011|03|08|
2012|02|04|07|08|10|
2013|01|02|03|05|06|08|11|12|
2014|01|02|05|06|07|08|09|12|
2015|01|02|03|04|

2014-07-07 (Mon)

[Tiger][Haskell] chap7 まだつづき

少し間が空いてしまった。まだ7章。

https://github.com/unnohideyuki/Tiger-in-Haskell

Frame.Frag を定義、Semant.transDec では [TL.Exp] や [Frame.Frag] を出力するようにし、LetExp の処理では [TL.Exp] を変数初期化式として用いるように。

[Frags] は、transDec の出力に加えるだけでは不十分で、transExp, transDec がつねに引き回さないといけない(状態)。

つぎは、[Frags] を状態として引き回す改造から、ソース部分としてのつづきは trexp for ArrayExp のあたりから続き。

また、Alex で Unicode を扱う方法についても、少し調べた。

Alex 3.x では UTF-8 を自然に扱えるようになっている。GHC のコードでは、Alex 2.x との互換性のために、getChar のなかで種別を判定して、種別ごとに「つぶした」値を返すようなトリックが用いられている。

Alex 3.x では、そのようなトリックは使わなくてもいいが、$uniwhite などを自前で定義してやらないといけない。

手で書いてはいられないので、生成するプログラムを書いた。
(unicateg.hs, まだローカルにしかない)

Lex.x にコピペで埋め込むのは可読性を下げるので、include しよう。少し不本意だけど cpp -P する。


2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|08|
2010|01|02|03|05|06|07|10|11|
2011|03|08|
2012|02|04|07|08|10|
2013|01|02|03|05|06|08|11|12|
2014|01|02|05|06|07|08|09|12|
2015|01|02|03|04|
Categories 3imp | Card | Cutter | Dalvik | Euler | Football | GAE/J | Hand | Haskell | Re:View | Ruby | Scheme | TQD | Tiger | TigerBook読 | UikiTeXi | Verilog | Violin | Web | parconc | tDiary | お勉強 | エントロピー | ツン読 | | 将棋 | 政治について | | 模写してみよう | 確率論 | 設定など | 雑文 | 音声