最近のトラックバック

2019年5月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

« 2011年6月 | トップページ | 2011年8月 »

2011年7月

Schluessel Ver. 0.3.1をリリースしました

Schluessel Ver.0.3.1をリリースしました。

以下のサイトでダウンロードできます。
http://schluessel.sourceforge.jp/download.html

変更点は以下の通りです。

  • サウンド機能を追加しました
  • 形式言語によるパーサを構築できるようにしました。LALR(1)の言語クラスが使用できます
  • 正規表現による字句解析器(トークナイザ)が構築できるようになりました
  • Schluesselプラグイン機構を作成しました
  • sqrt/expt手続きの結果を可能な限り正確な数値で返すようにしました
  • SRFI-60,67,94をサポートしました

SRFI-67(比較手続き)サポート

SRFI-67(比較手続き)をサポートしました。

形式文法によるパーサを生成する

「形式文法を用いてパーサを生成する」機能をつけました。
yaccやlexの機能をコード生成でなくオブジェクトにしたというようなイメージです。
この機能により、ドメイン特化言語(DSL)等を容易に記述することができます。
文法のクラスはLALR(1)です。

例えば、
S → S + T
S → S - T
S → T
T → T * F
T → T / F
T → F
F → lparen S rparen
F → num
のような文法があったとき、次のようにしてパーサを生成できます。
  (make-grammar
    `((S (S + T)           ,(lambda (t1 x t2) (+ t1 t2)))
      (S (S - T)           ,(lambda (t1 x t2) (- t1 t2)))
      (S (T)               ,(lambda (t1) t1))
      (T (T * F)           ,(lambda (f1 x f2) (* f1 f2)))
      (T (T / F)           ,(lambda (f1 x f2) (* f1 f2)))
      (T (F)               ,(lambda (f1) f1))
      (F (lparen S rparen) ,(lambda (x s1 y) s1))
      (F (num)             ,(lambda (v1) (string->number v1)))))

字句解析器(lexer)は終端記号のシンボルとセマンティクスな解析結果の2値を返す手続きとしています。

【再掲】サンプルプログラムを公開しました

サンプルプログラムの場所のリンクを張り忘れたので再度掲載します。
サンプルプログラムは以下の場所にあります。
http://schluessel.sourceforge.jp/demo.html

Schluesselで動作するサンプルプログラムを公開しました。
今回公開したサンプルは次の通りです。

  1. SICP式に画像を表示するプログラム
  2. サウンド端子を使用する簡易「オシロスコープ」

サンプルは随時追加・更新していきたいと思います。

サウンドファイル再生機能追加

サウンドファイルを再生する機能を追加しました。
標準ではwavファイルを再生できます。
外部プラグインによりmp3ファイルも再生できます。
ループ再生もサポートしています。

サンプルプログラムを公開しました

Schluesselで動作するサンプルプログラムを公開しました。
今回公開したサンプルは次の通りです。

  1. SICP式に画像を表示するプログラム
  2. サウンド端子を使用する簡易「オシロスコープ」

サンプルは随時追加・更新していきたいと思います。

プラグイン機構を追加しました

決められた形式で記述されたjarファイルをプラグインとして読み込むことをできるようにしました。
このことで、特殊な処理をするプログラムをプラグインとして分離できるようになります。
プラグインの初期設定はMANIFESTファイルで指定します。
プラグインの作成方法については機会があればまとめたいと思います。

SRFI-60(ビット操作)をサポートしました

SRFI-60(ビット操作)をサポートしました。
任意制度の整数についてのビット演算が可能になります。
負の整数は整数の後ろに1が無限に続くと見なしています。
例: -2 → 1...111110

SRFI-94(型の制約のある数値関数)

SRFI-94(型の制約のある数値関数)をサポートしました。
SRFI-94モードと通常のモードは変数*srfi-94-safe-mode*に#f以外の値を束縛することで変えられます。

« 2011年6月 | トップページ | 2011年8月 »