2008-02-01から1ヶ月間の記事一覧

アドレス情報を保持するコンパイラ

宣言された変数に対して,順番にアドレスを確保していくコンパイラ Parse> r "var a; var b; a=3; b=a+2;" Loading package parsec-2.0 ... linking ... done. Found value[ ["VarDecl","0"], ["VarDecl","1"], ["0","3","=","POP"], ["1","0","Read","2","+…

しょうがないから作ってみた

module Map where put :: (Eq k) => [(k,v)] -> k -> v -> [(k,v)] put nk nv = [(nk,nv)] put ((k,v):rest) nk nv = if (k==nk) then (nk,nv):rest else (k,v):(put rest nk nv) get :: (Eq k) => [(k,v)] -> k -> Maybe v get k = Nothing get ((k,v):rest…

非破壊Hash

ひさしぶりにParsecをいじってみた.前回,(http://d.hatena.ne.jp/hoge1e3/20080129) var a; a=3; var b; b=a+3; というプログラムがあったときに,a や b にアドレスを割り付けたい,と言ったので,この部分の実装をやろうとした,が失敗. var a; という…

プログラミング言語のDOM

久しぶりに JDTのソース を読み進めてみる,けど違うパッケージを読んでみるorg.eclipse.jdt.core.domDOM というとXMLとかHTML のものという印象が強いけど,やっぱりJava にもあるのか ... ... ... こんな感じで,クラスの中に field とか method とかを,…