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

[debian-devel:12978] Re: TWM i18n



佐野@浜松です。

In <20001003111716I.kubota@xxxxxxxxxxxxxxxxxxxxx>,
  on "Tue, 3 Oct 2000 11:13:31 +0900',
   with "[debian-devel:12973] Re: TWM i18n",
 Tomohiro KUBOTA <kubota@xxxxxxxxxxxxxxxxxxxxx> さん wrote:

> 日本語マニュアルはあまり内容がなくて、英語マニュアルを読むと、
> YY_INPUT マクロの説明とかがありました。これで、doinput() が
> どこから呼ばれているのか謎だったのが解決しました。

喜瀬さんが日本語訳の場所を教えてくださいましたが、英語で良ければ
 info flex でけっこう詳しい説明がでてくるようです。

bison のパッケージにも info ファイルが含まれているんですが、
何故か info bison すると bison の man page が表示されてしまいます。

 info -f /usr/share/info/bison.info.gz するとそれなりに詳しい説明が
あるようです。

> > 問題の doinuput() は cflow parse.c gram.c lex.c | less してみると
> 
> そんな便利なものもあるんですね。ただ、
> 
> 
> > 40                                      yy_get_next_buffer {lex.l 276}
> 
> lex.l は 144 行しかないですが...

 $ grep yy_get_next_buffer lex.l
 $ grep -n yy_get_next_buffer lex.c
277:static int yy_get_next_buffer YY_PROTO(( void ));
931:            else switch ( yy_get_next_buffer() )
940:                                     * yy_get_next_buffer() to have set up
993:/* yy_get_next_buffer - try to read in a new buffer
1001:static int yy_get_next_buffer()
1262:                   switch ( yy_get_next_buffer() )

 lex.l の中では定義されていない (flex にかけた後で出現する) 関数なので
 lex.c の行番号で表示されているみたいですね。

 doinput のように lex.l に定義されている関数は lex.l の行番号で
表示されるようです。

 $ grep -n doinput lex.l
72:#define YY_INPUT(buf,result,size) ((result) = doinput((buf),(size)))
73:int doinput (char *buf, int size)
 $ grep -n doinput lex.c
493:#define YY_INPUT(buf,result,size) ((result) = doinput((buf),(size)))
494:int doinput (char *buf, int size)

 cflow は全体のつながりを見るのに結構便利です。自分の作ったプログラムで
さえも何がどうなっていたのか忘れてしまうことがあるので、重宝します。

他人の作ったプログラムを保守するような場合には手放せないですね。

 FORTRAN 用の fflow というのもあって、よく使ってますが Debian package には
まだ無いので /usr/local/bin にインストールしてあります。

 http://www.xs4all.nl/~ripley/ForUtil.html からダウンロードできるらしい。
手元にはバイナリの tar ball と man の tar ball しか無いのですが、GPL だと
書いてあるので誰かパッケージ化してくれると嬉しいかも。

-- 
     # (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
    <kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)