suikyo は決定性オートマトンに基づいて, 文字列の変換を行うライブラリです. 主には「ローマ字ひらがな変換」に使用されます. 例えば "suikyou" という 文字列から "すいきょう" と変換を行なったり, 逆に "すいきょう" から "suikyou" に変換することが可能です.
変換を行うためのルールを表すフォーマットについては詳しくは後述しますが, canna の .kpdef フォーマットとほぼ同様です. そのため .kpdef フォーマットに よる変換ルールをそのまま利用できます.
suikyo は 2003-12-30 の時点で, 以下の言語用ライブラリがあります. 各言語別の説明は以下のリンクからのページにあります.
Debian パッケージを http://taiyaki.org/debian/から 取得できます. パッケージ名は suikyo-table, libsuikyo-ruby, suikyo-elisp です. 高宮安仁さんに 作成していただきました. ありがとうございます.
http://taiyaki.org/suikyo/src/ からダウンロードして下さい.
suikyo のディレクトリ直下にある suikyo.config を編集して, インストール先の ディレクトリを設定して下さい. おそらくはデフォルトのままでも問題ないと 思います.
編集後 "make install" を実行すると, 変換ルールのファイル, Ruby 用ライブラリ, Emacs Lisp 用ライブラリがインストールされます.
"make uninstall" の実行でアンインストールされます. ただし, suikyo.config がインストール時と同じ内容である必要があります.
基本的な変換ルールは, 以下に示すように, タブまたは空白で区切られた 2つもしくは 3つの項目から構成されます. ( 実際のファイル)
a あ ta た tt っ t
1つ目の項目が「入力データ」, 2つ目の項目が「変換データ」, 3つ目の項目が「保留データ」です. 入力データを変換データに置き換える というのが基本的なルールになります.
3つ目の保留データがある場合, 変換後, 保留データが未変換の文字列の先頭に 追加されます. 例えば "tta" と入力した場合, "tt" が "っ" に変換されて "t" が書き戻されて, 未変換の文字列は "ta" になります. その後, "ta" が "た" に変換されて, 最終的に "tta" が "った" に変換されます.
行頭が '#' で始まる 1行, または行頭が '/*' で始まり '*/' を含む行までを コメントとして扱います. '/*' も行頭で始まる必要があり, また '*/' 以降の 文字列もコメントして扱われてしまうので注意して下さい.
canna の .kpdef フォーマットでは '#ifdef' などにより条件分岐が可能ですが, suikyo では条件分岐はできません. '#ifdef' もただのコメントとして 扱われます.
実用には問題ないと判断したので, いい加減なコメントの仕様になっています. そのうち適切に修正する予定ですが, 現時点での優先順位は低いです.
バックスラッシュ (または円記号) '\' は特殊文字です. '\' に続く文字との組み合わせによって, さまざまな意味を表します.
記号 | 意味 |
---|---|
\\ | バックスラッシュ '\' を表します. |
\# | シャープ '#' を表します. |
\0 | 空文字 '' を表します. 便宜上用意してありますが, 何も書かなくても同じ意味になります. |
\xNN | 16 進数 NN で示された文字を表します. 例えば '\x22' なら, ダブルクウォーテーション '"' になります. |
2003-12-30 現在, 以下の変換用テーブルが用意されています.
ファイル名 | 機能 | ||
---|---|---|---|
romaji | ローマ字 | → | ひらがな |
romaji_reverse | ひらがな | → | ローマ字 |
kana | かな配列 | → | ひらがな |
kana_reverse | ひらがな | → | かな配列 |
egg-mark | egg記号入力 | → | 記号 |
egg-mark_reverse | 記号 | → | egg記号入力 |
hiragana-katakana | ひらがな | → | カタカナ |
katakana-hiragana | カタカナ | → | ひらがな |
romaji-kana | ローマ字 | → | ひらがな (obsolete) |
kana-romaji | ひらがな | → | ローマ字 (obsolete) |
azik | azik入力 | → | ひらがな |
skk-mark | SKK記号入力 | → | 記号 |
skk-mark_reverse | 記号 | → | SKK記号入力 |
tcode | T-Code | → | 文字 |
tcode_reverse | 文字 | → | T-Code |
tcode-dvorak | T-Code | → | 文字 (Dvorak 配列) |
tcode-dvorak_reverse | 文字 | → | T-Code (Dvorak 配列) |
T-Code 用のテーブルは, 高橋直人から御提供いただきました. ありがとうございます.