[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freewnn:00570] Re: cpp for pubdicplus



永江と申します。
FreeWnn 発足当時、autoconf 化や automake 化の作業に少し関係した者です。

From: aono@cc.osaka-kyoiku.ac.jp (Tomoki AONO)
Subject: [freewnn:00568] cpp for pubdicplus (Re: cvs server for freewnn.org)
Date: Fri, 18 May 2001 21:04:34 +0900 (JST)

> >> で,この,辞書ファイルの生成(という理解で良いのかどうか実は
> >> 知らないのですが)に使われる cpp をどうするかに限っていうと,
> >> 対処方法としては,以下のようなものが思いつきますが,いかがでしょうか?

これは、確かに当時も問題になっていました。

例えば locale をサポートした環境の cpp だと、
想定した文字コード以外のファイルが入力だとエラーになるものがあります。
確か cWnn か tWnn かの辞書ファイルがエラーになる環境があったはずです。
locale を "C" にすれば必ず解決するのかどうか、よくわかりません。

> >> (4) そもそも cpp は C 言語向けなので,他のファイルに使うといらぬ
> >>     副作用があるやもしれないので,もっと別の方法で辞書ファイルの
> >>     生成を行なうようにする.
> 
> 個人的には(3)か(4)がよいと思います。しかしもしpubdic+の部
> 分がas-isのままで取り込まれているのならば、変に追加・変更
> するのがよいのかが少し気になります。(1)ベースのパッチを
> (誰も手を上げなければ、叩き台として)作ってみましょうか?

GNU のガイドでは C 以外の入力には m4 を使うことが推奨されている
という話だったと思います。
それなら m4 にしようかという話もあったのですが、
やはり #ifdef 〜 #endif の記法の方が馴染みやすいのではないか
という意見もありました。
m4 だと (ifdef `XXX' `...' `...') ですね。

sed で /^#ifdef XXX/,/^#endif/d みたいに書けば対応できるかな
という話もあったのですが、
何箇所か #ifdef 〜 #endif が入れ子になっている部分があって、
これだけでは対応できませんでした。

実際には、cpp を様々な設定ファイルの前処理に使うという例はあるわけで、
C 以外で使うことも黙認されているとは思います。
(例えば X の xrdb コマンド)

それで、これは私のごく個人的な感想ですが、
もしすべての環境に対応するのが難しく、なおかつ
実際に必要な機能が #ifdef 〜 #endif など限られたものであれば、
いっそ cpp のサブセットとなるプログラムを
ディストリビューション中に入れてしまって、
それで辞書を生成しちゃうという手もあるかなと思います。

諸般の事情により、
オープンソースソフトの開発に関係することが難しくなってしまいまして…。
申し訳ないことです。

--
 永江   英武     mailto:nagae@tk.airnet.ne.jp
Nagae Hidetake   http://www.tk.airnet.ne.jp/nagae/


http://www.freewnn.org/ FreeWnn Project