java

とりあえず公開してみる

javaで実装していたSchemeが動くようになったので、 とりあえず公開してみる事にした。 WEBアプリケーション化したのですぐに試せます。 名前は『JNanoScheme』とする事にしました。 動作デモは以下から JNanoScheme デフォルトでフィボナッチ数列を計算する…

はじめての処理系実装(Scheme on Java) その6

パーサの実装 パーサ難しすぎ! 今の力じゃまだ上手く書けそうにありません。誰かのソース見てみようか。 いや、でもせっかくここまで自力で来たし。。。 なのでとりあえず穴だらけの簡易実装をしてみた。 処理順はこんな感じ。 入力されたソースを正規表現…

はじめての処理系実装(Scheme on Java) その5

リストの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…

はじめての処理系実装 その3

リストの実装 ここは結構、肝となる部分かな。 素直に実装するならConsセルクラスを作って、carとcdrプロパティを持たせて、 セル同士を繋いでいくという実装になるだろう。 つまりリストアルゴリズムの自力実装なわけだけど、問題点があって、 評価器の実行…

はじめての処理系実装(Scheme on Java) その4

そろそろ評価部分の作りこみをするので先にJavaの例外を定義しとこう。 Schemeの実行フェイズは 読み込み 字句解析 評価 に大別でき、あとはこれの繰り返し処理となる。 例外処理はフェイズ単位でよさそうなので以下の例外を定義。 public class IOException…

はじめての処理系実装 その2

データ型クラスをいくつか実装しました。 数値型、文字列型、真偽値型 親クラスとして後で判定に役に立ちそうなのでAtomクラスを定義。 クラス名はそれぞれ、 Num(数値), Str(文字列), Bool(真偽値)。 標準パッケージjava.langに Number, String, Bool…

はじめての処理系実装 その1

処理系の裏側をもっと覗いてみたくなったので自分で作ってみる事にした。 言語処理系は初めてなんだけど、去年からJavaScriptを深いところまでがっつり 勉強したおかげでなんとなくインタプリタのやっている事がイメージできる。 ここにはその作成経過を記録…

NetBeansショートカットキー割り当て

[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…

SunのNetBeansを触ってみた

感動もんだわこれわ。 今までJavaではIDEとしてEclipseを使ってたけど、 あっさり乗り換えです。 導入から、設定まで全てが楽な上に、 起動が速く、そして軽い。 それで何を書くのに使ったかっていうと 実はRailsアプリ。 EclipseでRailsアプリだとRadRails…