|
Kisp
とは,構造化されたプレインテキストを構文定義に従って構文解析し,構文木を出力するためのミドルウェアである.次のような特徴がある
( 図
1) .
・
扱える構文とマークアップが豊富である.
・
ユーザーが自由に構文を定義できる.
・
文章要素ごとに構文を定義できる
( 構文定義の入れ子が可能
) .
・
構文木の妥当性が検証できる
(RELAX NG 相当
) .
・
BSD ライクライセンスである.
プロジェクトでは以下のものを作成した.
・
Kisp パーサ
・
投票相関図生成アプリ
Jinvot
データのテキスト表現として
XML が主流であるが,タグが多すぎて見苦しく,エディタで編集するのも困難である.タグの問題を解決するために
YAML というフォーマットが考案されたが,ユニコード限定であり,構文も問題領域以上に複雑である.ところで,近年一般に浸透しつつある
Wiki や
Blog のデータテキスト表現は,非常にシンプルで書きやすく,分かりやすい.この種の構文を専門に扱う構文解析器があれば,シンプルで書きやすいテキスト表現をマンマシンインタフェースとして広く活用することが出来る.
Kisp はまさに
Wiki 風構文専門のパーサである.
平内 図
1 Kisp
全体の構造
開発した二つのソフトウェアの詳細は以下の通り.
(1)
Kisp パーサ関連
(Kisp モジュール )
ユーザー定義の構文によって,一般的な
Wiki や
Blog のテキストデータを構文解析することができる.ただし,開発期間中にはインデントによって階層化したテキストデータの構文解析のみのサポートが完了した.
サポート範囲が狭くなってしまったのは,
Kisp の言語仕様をプロジェクト途中で大幅に増強改訂したために,実装の大幅な手戻りがあったためである.当初の仕様では,多様な要求を満足できなかった.
Kisp
が出力した構文木を Kisp
アプリに合わせて加工するためのフィルタ群の開発を行なった.ここで, validator
は RELAX
NG の Haskell
によるリファレンス実装をそのまま Scheme
に移植した.また, S
式を XML
に変換するためのモジュールは, Gauche
に組み込まれていたのでそれを利用した.
(2)
投票相関図生成アプリ
(Kisp アプリ )
Kisp
の応用例として,既存の図形生成アプリ (dot) を利用した投票相関図生成アプリを作成した
( 図 2 ,図 3)
.これは, dot のような猥雑なデータ形式に対するラッパーをどのように作るかをユーザに示すためのサンプルプログラムである.その仕組みを図
4 に示す.
平内 図
2 ネットワークゲーム人狼での投票例
平内 図
3 それをベースにした投票相関図
平内 図
4 投票から投票相関図が生成される流れ
|