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

[debian-users:38052] woody と sarge の flex/m4 の違い



山本直孝と申します。

flex を使っているのですが woody では問題無く通っていたコードが sarge 
では通らないという現象に当たってしまいました。flex or m4 の問題なのか
ソース自体を修正すべきなのか分からないので、ご助言頂けますでしょうか。

環境としては、woody と sarge で flex と m4 のバージョンは以下のように
なっています。m4 は見比べてみましたが、 debian/ 以下のみの修正のようで
した。flex のバージョンアップで何か違いが出ていると思われます。

woody
ii  flex           2.5.4a-24      A fast lexical analyzer generator.
ii  m4             1.4-14         a macro processing language

sarge:
ii  flex                      2.5.31-12                 A fast lexical analyzer generator.
ii  m4                        1.4-15                    a macro processing language

sarge での出力は、以下のようになっています。
> flex ./cmd.l
stdin:2464: m4: Warning: Excess arguments to built-in `m4_ifdef' ignored

また、生成される C のソースコードを見ると途中で解析を止めているのか、
最後の方に書いてある関数が C のソースからは消えているような状態です。

少し調べましたところ、
http://www.winehq.org/hypermail/wine-patches/2003/05/0295.html
にある記事と同じ現象だったので ]] を ] ] に修正(スペースを入れる)した
ところ、問題無くコンパイルすることが出来ました。

具体的には、以下の修正をソースに施しました。
diff -r1.1 cmd.l
55c55
<  { "open",    token(OPEN),    "open [<server> [<port>]]", "Connect a server." },
---
>  { "open",    token(OPEN),    "open [<server> [<port>] ]", "Connect a server." },

ソースを修正すべきなのか(暫定的にはソースの修正で回避しましたが)、
flex もしくはm4 に某かの不具合がありそうかご助言頂ければ幸いです。

よろしくお願い致します。

----------
産総研・グリッド研究センター http://unit.aist.go.jp/grid/
太陽系観隊	http://centaurs.mtk.nao.ac.jp/swat/
		山本直孝 Naotaka Yamamoto
		E-mail: naotaka@xxxxxxxxxxxxxx