From: Takahiro Kambe Date: 2005-10-19T14:49:27+09:00 Subject: [ruby-dev:27444] Re: cannot build ruby with byacc (1.8) In message <20051019143938.4FADC000.ocean@m2.ccsnet.ne.jp> on Wed, 19 Oct 2005 14:39:39 +0900, H.Yamamoto wrote: > >$ head -3 parse.c > >#ifndef lint > >static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; > >#endif > > > >parser stackをstaticにとるタイプですね。しかし、12年前ですか。 > > 12年前!? なんでそんなに古いんだろう。。。 これは、大元のBSDのSCCSで残された変更日です。日付からすると、4.2BSDよ りも前です。今時の *BSD では、続けて CVS による修正日情報が続いている 場合があります。 例えば、NetBSD current(最新ではない)では、以下のようになります。 #include #ifndef lint #if 0 static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; #else #if defined(__NetBSD__) && defined(__IDSTRING) __IDSTRING(yyrcsid, "$NetBSD: skeleton.c,v 1.25 2003/08/07 11:17:54 agc Exp $"); #endif /* __NetBSD__ && __IDSTRING */ #endif /* 0 */ #endif /* lint */ #define YYBYACC 1 #define YYMAJOR 1 #define YYMINOR 9 #define YYLEX yylex() #define YYEMPTY -1 #define yyclearin (yychar=(YYEMPTY)) #define yyerrok (yyerrflag=0) #define YYRECOVERING (yyerrflag!=0) ... それ以外のOSでは、どのようにスケルトンの部分を変えているかどうかに依存 します。言い替えれば、そこのあたりを変えていなければ、yacc(1)で生成さ れた結果から、yacc(1)のバージョンに関連する情報は得られないことになり ます。 -- 神戸 隆博(かんべ たかひろ) at 仕事場