2013-01-01から1年間の記事一覧

スタックをListで表すと分かりやすいよって話

スタックをListで表すと分かりやすいよって話 とりあえず、スタックマシンの説明を書いてみます。 スタックマシンの説明 スタックマシンとは以下のような規則でスタックを操作する事で計算する事が出来ます。 ①プログラムのコードがpush nならスタックに1を…

パターンマッチ実装奮闘記(2)

前回は、簡単なパターンマッチを実装するのにLLVMを使う事にする事を考え、具体的なコードも書いてみました。 今回はどうやってLLVMにコンパイル出来るようになるかを考えます。 開発方針を決める事で、見通しが良くなるはずです。 コンパイラの作成段階 何…

パターンマッチ実装奮闘記(1)

はじめに パターンマッチが出来る簡単なコンパイラをつくりたいんだけど、作った経験がありません。とにかく1度作ってみたいのですがなかなか簡単に作る事が出来ません。 パターンマッチというと、正規表現がありますが、ここで言うパターンマッチとは、デ…

ラムダ計算を実装してみる

まず、OCaml版のラムダ計算があればうれしいので、ラムダ計算入門 *1 を参考に、TAPLのソースにあわせる形で、Scalaに書き換えてみました。 package _01lambda trait Term // λ式を表すデータ型 case class TmVar(s:String) extends Term // 変数 // 変数名…

ド・ブラン・インデックス 引き続きTAPLを読んでます。 TAPL*1のuntyped*2の実装でムツカシイところは、ド・ブラン・インデックスでした。 6章に詳しくかいてありますが、名前ではなくて環境中の何番目にあるかを持つ事で、宣言していない変数の参照をチェッ…

はてなブログにするよ

はてなブログにしてみる 最近は markdown でドキュメントを書いてます。 なので、ブログも markdown でブログを書きたい。 はてな記法のほうが好きだったんだけど、世界標準にあわせた方が良い。 ということで、はてブロを使ってみることにしました。 で、良…