[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freewnn:00580] Re: cpp for pubdicplus
- To: freewnn@tomo.gr.jp
- Subject: [freewnn:00580] Re: cpp for pubdicplus
- From: YABUKI Youichi <yabuki@XXXX>
- Date: Mon, 21 May 2001 19:50:39 +0900
- In-Reply-To: Your message of "Sat, 19 May 2001 02:10:59 JST." <20010519021059R.nagae@tk.airnet.ne.jp>
- Reply-To: freewnn@tomo.gr.jp
- User-Agent: EMH/1.10.0 SEMI/1.13.7 (粟津
)CLIME/1.13.6 (中ノ庄
) Emacs/20.7(i386-vine-linux-gnu) MULE/4.1 (葵
)
> 永江と申します。
> 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" にすれば必ず解決するのかどうか、よくわかりません。
tWnn はよく分からないのですが,cWnn, kWnn の CPP の使われ方を
見てみると,
Xsi/kWnn/kdic/Makefile.in
fzk.master を CPP で処理している.
fzk.master は他の fzk.* を単に順番に #include しているだけ.
fzk.master 以外の fzk.* では C プリプロセッサの機能を使っていない.
Xsi/cWnn/cdic/Makefile.in
con.master, con.masterR を CPP で処理している.
con.master, con.masterR は他の con.* を単に順番に #include して
いるだけ.
con.master, con.masterR 以外の con.* では C プリプロセッサの
機能を使っていない.
となっているので,locale の問題があるなら,CPP を使わずとも,
*.master の代わりに, #include されているファイルを cat で集める
だけで充分と思います.
> > >> (4) そもそも cpp は C 言語向けなので,他のファイルに使うといらぬ
> > >> 副作用があるやもしれないので,もっと別の方法で辞書ファイルの
> > >> 生成を行なうようにする.
> >
> > 個人的には(3)か(4)がよいと思います。しかしもしpubdic+の部
> > 分がas-isのままで取り込まれているのならば、変に追加・変更
> > するのがよいのかが少し気になります。(1)ベースのパッチを
> > (誰も手を上げなければ、叩き台として)作ってみましょうか?
>
> GNU のガイドでは C 以外の入力には m4 を使うことが推奨されている
> という話だったと思います。
これも記憶に残ってなかったのですが,確かにそういう話が出てましたね.
(GNU Coding Standards の翻訳保守担当者でありながら,この話に
気づいていませんでした.しかし,今見てみると,見当たらない…)
> それなら m4 にしようかという話もあったのですが、
> やはり #ifdef 〜 #endif の記法の方が馴染みやすいのではないか
> という意見もありました。
> m4 だと (ifdef `XXX' `...' `...') ですね。
>
> sed で /^#ifdef XXX/,/^#endif/d みたいに書けば対応できるかな
> という話もあったのですが、
> 何箇所か #ifdef 〜 #endif が入れ子になっている部分があって、
> これだけでは対応できませんでした。
Xsi/PubdicPlus/fzk.con ですね.確かに入れ子になってますね.
うーむ.
#ifdef KOUGO
...
#ifdef KANSAI
...
#endif KANSAI
...
#endfi KOUGO
これって #ifdef KANSAI の部分を#ifdef KOUGO の外に出すのって
できないんでしょうかね?
(fzk.master の #if KANSAI && !KOUGO 〜 #define KOUGO 〜 #endif も
何やらわかりにくいですね.)
> 実際には、cpp を様々な設定ファイルの前処理に使うという例はあるわけで、
> C 以外で使うことも黙認されているとは思います。
> (例えば X の xrdb コマンド)
そうですね.
> それで、これは私のごく個人的な感想ですが、
> もしすべての環境に対応するのが難しく、なおかつ
> 実際に必要な機能が #ifdef 〜 #endif など限られたものであれば、
> いっそ cpp のサブセットとなるプログラムを
> ディストリビューション中に入れてしまって、
> それで辞書を生成しちゃうという手もあるかなと思います。
それもありますね.昔の X11 に imake 関連ツールとして cpp が
入れてあったなと思って探したんですが,記憶違いか見つけられませんでした.
個人的には,依然として CPP 使わない方向が良いと思ってますが.
--
矢吹洋一@SRA Linux ソリューション部