suikyo は決定性オートマトンに基づいて, 文字列の変換を行うライブラリです. 主には「ローマ字ひらがな変換」に使用されます. 例えば "suikyou" という 文字列から "すいきょう" と変換を行なったり, 逆に "すいきょう" から "suikyou" に変換することが可能です.
変換を行うためのルールを表すフォーマットについての詳細は後述しますが, canna の .kpdef フォーマットとほぼ同様です. そのため .kpdef フォーマットに よる変換ルールをそのまま利用できます.
suikyo は 2004-08-29 の時点で, 以下の言語用ライブラリがあります. 各言語別の説明は以下のリンクからのページにあります.
Debian, RPM, Gentoo, FreeBSD, Fink, PINEAPPLE, KNOPPIX 等のパッケージを 準備していただきました. 詳しくは PRIME のインストールページをご覧ください.
http://prime.sourceforge.jp/src/ から suikyo のアーカイブをダウンロードしてください.
SourceForge.jp から, CVS 版のダウンロード が可能です. 以下のように実行してダウンロードしてください. パスワード入力時には, 単純にエンターキーだけを入力してください.
cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/prime login cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/prime co suikyo
configure でファイルパス等の設定を行ったあと, make, make install で インストール可能です. CVS 版では autogen.sh を最初に実行する必要があります.
./autogen.sh (CVS 版のみ必要) ./configure make make install
アーカイブを展開したディレクトリで "make uninstall" を実行すれば, アンインストールされます.
configure では以下の設定が行えます.
基本的な変換ルールは, 以下に示すように, タブまたは空白で区切られた 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' なら, ダブルクウォーテーション '"' になります. |
バージョン 1.3.0 より, 空白 (" ", 0x20) が入力の区切りとなりました. 具体的には, ローマ字変換において, "n" の変換結果は "n" のままになり, "n " と空白を加えると "ん" と変換されるようになりました. "n" のままでは "na (な)" と続く可能があるからです.
2004-12-04 現在, 以下の変換用テーブルが用意されています.
ファイル名 | 機能 | ||
---|---|---|---|
romaji | ローマ字 | → | ひらがな |
romaji_reverse | ひらがな | → | ローマ字 |
romaji-hepburn_reverse | ひらがな | → | ローマ字 (ヘボン式) |
kana | かな配列 | → | ひらがな |
kana_reverse | ひらがな | → | かな配列 |
egg-mark | egg記号入力 | → | 記号 |
egg-mark_reverse | 記号 | → | egg記号入力 |
ascii-wideascii | ASCII | → | 全角ASCII |
wideascii-ascii | 全角ASCII | → | ASCII |
hiragana-katakana | ひらがな | → | カタカナ |
katakana-hiragana | カタカナ | → | ひらがな |
hiragana-halfkatakana | ひらがな | → | 半角カタカナ |
halfkatakana-hiragana | 半角カタカナ | → | ひらがな |
katakana-halfkatakana | カタカナ | → | 半角カタカナ |
halfkatakana-katakana | 半角カタカナ | → | カタカナ |
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 配列) |
tcode | TUT-Code | → | 文字 |
tcode_reverse | 文字 | → | TUT-Code |
kuten | 区点コード | → | 文字 |
kuten_reverse | 文字 | → | 区点コード |
T-Code 用のテーブルは, 高橋直人さんから御提供いただきました. ありがとうございます.
TUT-Code 用のテーブルは, TUT-code HomePageから御提供いただきました. ありがとうございます. このテーブルのライセンスは TUT-Code のライセンスに従います.