java
javaで実装していたSchemeが動くようになったので、 とりあえず公開してみる事にした。 WEBアプリケーション化したのですぐに試せます。 名前は『JNanoScheme』とする事にしました。 動作デモは以下から JNanoScheme デフォルトでフィボナッチ数列を計算する…
パーサの実装 パーサ難しすぎ! 今の力じゃまだ上手く書けそうにありません。誰かのソース見てみようか。 いや、でもせっかくここまで自力で来たし。。。 なのでとりあえず穴だらけの簡易実装をしてみた。 処理順はこんな感じ。 入力されたソースを正規表現…
リストのevalの実装 後回しにしていたConsクラスのevalを実装する。 public class Cons implements List { public SymbolExp eval(Context ctx) { Function func = (Function)this.car().eval(ctx); List args = (List)this.cdr(); if (!(func instanceof Sp…
リストの実装 ここは結構、肝となる部分かな。 素直に実装するならConsセルクラスを作って、carとcdrプロパティを持たせて、 セル同士を繋いでいくという実装になるだろう。 つまりリストアルゴリズムの自力実装なわけだけど、問題点があって、 評価器の実行…
そろそろ評価部分の作りこみをするので先にJavaの例外を定義しとこう。 Schemeの実行フェイズは 読み込み 字句解析 評価 に大別でき、あとはこれの繰り返し処理となる。 例外処理はフェイズ単位でよさそうなので以下の例外を定義。 public class IOException…
データ型クラスをいくつか実装しました。 数値型、文字列型、真偽値型 親クラスとして後で判定に役に立ちそうなのでAtomクラスを定義。 クラス名はそれぞれ、 Num(数値), Str(文字列), Bool(真偽値)。 標準パッケージjava.langに Number, String, Bool…
処理系の裏側をもっと覗いてみたくなったので自分で作ってみる事にした。 言語処理系は初めてなんだけど、去年からJavaScriptを深いところまでがっつり 勉強したおかげでなんとなくインタプリタのやっている事がイメージできる。 ここにはその作成経過を記録…
[E]:Eclipse [N]:NetBeans Grep [E] Ctrl + H [N] Ctrl + Shift + F importの編成 [E] Ctrl + Shift + O [N] Ctrl + Shift + I Code Fix [E] Ctrl + 1 [N] Alt + Enter コード整形 [E] Ctrl + Shift + F [N] Alt + Shift + F ファイル名指定で開く [E] Ctr…
今さらながらJavaの匿名クラスから、 ローカル変数が参照できる事を最近知った。 まずはコードを public abstract class DBAccessor { public DBAccessor() throws SQLException{ Connection conn = null; try { conn = DriverManager.getConnection(""); yi…
感動もんだわこれわ。 今までJavaではIDEとしてEclipseを使ってたけど、 あっさり乗り換えです。 導入から、設定まで全てが楽な上に、 起動が速く、そして軽い。 それで何を書くのに使ったかっていうと 実はRailsアプリ。 EclipseでRailsアプリだとRadRails…