[Prev] [Up] [Next] [Index] [Contents]
1 StreamedSapid とは

1 StreamedSapid とは

現在のSapidは、ソースプログラムの解析結果をリポジトリに格納しており、ARやソフトウェア操作言語などを介してアクセスする必要がある。すなわち、ツールを記述する基本言語がC言語やソフトウェア操作言語などに固定され、Sapidが提供する環境は閉鎖的である。

また、現在のSapidはリポジトリの変更機能を備えていない。これは、変更操作に伴なう制約が複雑に絡み合っているために、整合性を保持した変更操作を規定することが難しいことに原因がある。この問題を解決するために、制約を三種類に分類して管理する三層構造が提案されているが、残念ながら開発は進んでいない。

そこで、Sapidの閉鎖性と変更の容易性の欠如を解決する方法として``|Sapid|''を提案する。``|Sapid|''では、ソースプログラムを構文に基づいて分解し、各要素を特別な形式で一列に並べたデータ形式を採用する。各要素は構文要素に対応するだけでなく、その構文要素のテキスト表現も含み、各テキスト表現を組み合わせることで元のソースプログラムを再現できる。また、各要素は単純な構造を持った文字列として表現することで、sed や awk などの文字列操作言語を用いて変更操作を行なうことができる。

さらに、データ形式としての整合性を保っている限り、パイプを使って複数のツールを繋ぎ、ツール間で直接データを渡すことができる。名前の``|Sapid|''は、パイプによってツールを繋ぐことができることに因んでいる。また、``|Sapid|''の読み方は``StreamedSapid''であり、``Streamed''はツール間に細粒度のデータの流れ(ストリーム)が生じることに因んでいる。また、リダイレクションなどによって、操作結果をファイルに保存することも可能である。これらのことは従来からUNIXで用いられているツールの開発スタイルと一致し、UNIXを開発環境として利用しているプログラマに適している。

なお、開放性を持つことは必ずしも利点ではなく、ソースプログラムとしての整合性が保証の困難さが欠点として存在する。``|Sapid|''では、この整合性の保証はツール開発者の責任し、特別な対処は行なわない。ツール開発者は、操作を実行する前にその操作が整合性を保つか否かを検証するか、実際に操作を実行してから整合性を調べて、不整合の場合には変更結果を破棄するなどの処理をツールの中に含める必要がある。


[Prev] [Up] [Next] [Index] [Contents]