From MAILER-DAEMON Tue Jul 12 16:32:35 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRQg-0003uw-Hv for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:32:34 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DYjxf-00034L-8p for bison-patches@gnu.org; Thu, 19 May 2005 08:17:11 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DYjxb-00033X-3b for bison-patches@gnu.org; Thu, 19 May 2005 08:17:07 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DYjxa-00031Q-19 for bison-patches@gnu.org; Thu, 19 May 2005 08:17:06 -0400 Received: from [81.228.8.83] (helo=pne-smtpout1-sn2.hy.skanova.net) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DYk0w-00039c-GC for bison-patches@gnu.org; Thu, 19 May 2005 08:20:36 -0400 Received: from [83.250.195.133] (83.250.193.161) by pne-smtpout1-sn2.hy.skanova.net (7.1.026.7) id 41E32167015C76A4 for bison-patches@gnu.org; Thu, 19 May 2005 14:12:04 +0200 Mime-Version: 1.0 Message-Id: To: Bison Patches From: Hans Aberg Content-Type: multipart/mixed; boundary="============_-1095617775==_============" Subject: Re: %code and %typed X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Thu, 19 May 2005 12:17:12 -0000 X-Original-Date: Thu, 19 May 2005 14:11:55 +0200 X-List-Received-Date: Thu, 19 May 2005 12:17:12 -0000 --============_-1095617775==_============ Content-Type: text/plain; charset="us-ascii" ; format="flowed" I attach the patches I made to bison-2.0. I implementing the %code command using some context switches. I am happy if somebody can suggest a better implementation. The parse-gram.y syntax is as follows: declaration: grammar_declaration | PROLOGUE { prologue_augment ($1, @1); } | "%debug" { debug_flag = true; } | "%define" string_content string_content { muscle_insert ($2, $3); } | "%code" { include_braces = false; other_id = true; } OTHER_ID BRACED_CODE { muscle_insert ($3, $4); include_braces = true; other_id = false; } | "%defines" { defines_flag = true; } Here, a problem is that I do not want the outermost braces included in BRACED_CODE. The reason is that I want to place top level C++ code. Therefore as a quick fix, I made a context switch "include_braces" in the lexer that excludes it. An alternative would have to either zip out the first and last character of $4 above (BRACED_CODE string value), or to do it in a variation of muscle_insert(). But the obstacks seem to not be made for such an operation. An alternative would be to always exclude the outermost braces in BRACED_CODE, and add them in the skeleton file instead. Another context switch was added for OTHER_ID. Here the problem is that Bison scans for ID, which has the same lexer syntax as OTHER_ID, but is doing semantic work in the lexer, entering it as a grammar symbol. I just want to pick up the string. I choose this syntax, because then one adds code by a construct like %code header_code { ... } which feels natural. -- Hans Aberg --============_-1095617775==_============ Content-Id: Content-Type: application/octet-stream; name="parse-gram.y" ; x-mac-type="00000000" ; x-mac-creator="00000000" Content-Disposition: attachment; filename="parse-gram.y" ; modification-date="Wed, 18 May 2005 00:45:41 +0200" Content-Transfer-Encoding: x-uuencode begin 644 parse-gr.y M)7LO*B!":7-O;B!'2!O9B!T:&4@1TY5($=E;F5R86P@4'5B;&EC($QI8V5N6UL:7-T+F@B"@HC9&5F:6YE(%E9 M3$Q/0U]$149!54Q4*$-U6YT87@@97)R M;W(@;65S7!E+"`F5F%L=64I M"G-T871I8R!V;VED('!R:6YT7W1O:V5N7W9A;'5E("A&24Q%("HL(&EN="P@ M65E35%E012!C;VYS="`J*3L*"G-T871I8R!V;VED(&%D9%]P87)A;2`H8VAA M6T["G5N:7%S='(@8W5R7!E(#T@,#L*'1EPH@('-Y;6)O;"`J MRXN+GTB M"@HE=&]K96X@4$520T5.5%]53DE/3B`@("`@("`B)75N:6]N('LN+BY](@HE M=&]K96X@4$520T5.5%]465!%1"`@("`@("`B)71Y<&5D(@H*)71O:V5N(%!% M4D-%3E1?3$5&5"`@("`@("`@(B5L969T(@HE=&]K96X@4$520T5.5%]224=( M5"`@("`@("`B)7)I9VAT(@HE=&]K96X@4$520T5.5%].3TY!4U-/0R`@("`B M)6YO;F%S'!E8W0M"(*("!015)#14Y47T=,4E]005)315(@("`@("`B)6=L"UP M87)A;2![+BXN?2(*("!015)#14Y47TQ/0T%424].4R`@("`@("`B)6QO8V%T M:6]N7!E(#QC:&%R MRXN+GTB"@D@("`@("`B)6EN:71I86PM86-T:6]N('LN+BY](@H)("`@("`@ M(B5L97@M<&%R86T@>RXN+GTB"@D@("`@("`B)7!A6UB;VP@7!E(#QA7!E(#QL:7-T/B`@R!D96)U9U]F;&%G(#T@=')U M93L@?0I\("(E9&5F:6YE(B!S=')I;F=?8V]N=&5N="!S=')I;F=?8V]N=&5N M="`@>R!M=7-C;&5?:6YS97)T("@D,BP@)#,I.R!]"GP@(B5C;V1E(B![(&EN M8VQU9&5?8G)A8V5S(#T@9F%L'!E M8W0M"(@(CTB('-T"UP87)A;2![+BXN?2()"0D@("![(&%D M9%]P87)A;2`H(FQE>%]P87)A;2(L("0Q+"!`,2D[('T*?"`B)6QO8V%T:6]N M"(@(CTB('-TR!N;U]L:6YE MR!N;VYD971ER!S:V5L971O;B`]("0R.R!]"GP@(B5T;VME;BUT M86)L92(@("`@("`@("`@("`@("`@("`@("`@("`@("![('1O:V5N7W1A8FQE M7V9L86<@/2!T6%C8R(@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@ M>R!Y86-C7V9L86<@/2!TPH@("`@("!T>7!E9"`]('1R=64["B`@("`@($U5 M4T-,15])3E-%4E1?24Y4("@B7!E9"(*("`@('L*("`@("`@='EP960@/2!T6UB;VQ?9&5S=')U8W1O'0I"@ES>6UB;VQ?<')I;G1EPH@ M("`@("!D969A=6QT7W!R96,@/2!TPH@("`@("!D969A=6QT7W!R96,@/2!F86QS93L*("`@ M('T*.PH*6UB;VQ?9&5F7!E(#T@3E5,3#L*("`@('T*?"`B)71O:V5N(B![(&-U6T[('T@PH@("`@("!C M=7)R96YT7V-L87-S(#T@=6YK;F]W;E]S>6T["B`@("`@(&-U7!E(B!465!%('-Y;6)O;',N,0H@("`@ M>PH@("`@("!S>6UB;VQ?;&ES="`J;&ES=#L*("`@("`@9F]R("AL:7-T(#T@ M)#,[(&QI6TL("0R+"!`,BD["B`@("`@('-Y;6)O;%]L:7-T7V9R964@ M*"0S*3L*("`@('T*.PH*<')E8V5D96YC95]D96-L87)A=&EO;CH*("!PPH)("!S>6UB;VQ?='EP95]S970@*&QI7!E+"!`,BD["@D@('-Y;6)O;%]P7!E(#T@3E5,3#L*("`@('T* M.PH*<')E8V5D96YC95]D96-L87)A=&]R.@H@("(E;&5F="(@("`@('L@)"0@ M/2!L969T7V%SR`D)"`](')I9VAT7V%S MR`D)"`](&YO;E]A7!E+F]P=#H*("`O*B!.;W1H:6YG+B`J+R![(&-U6UB;VQS+C$Z"B`@R`D)"`]('-Y M;6)O;%]L:7-T7VYE=R`H)#$L($`Q*3L@?0I\('-Y;6)O;',N,2!S>6UB;VP@ M('L@)"0@/2!S>6UB;VQ?;&ES=%]P6UB;VQ?='EP95]S970@*"0Q+"!C M=7)R96YT7W1Y<&4L($`Q*3L*("`@("!]"GP@240@24Y4"B`@("!["B`@("`@ M('-Y;6)O;%]C;&%S7!E7W-E="`H)#$L(&-U6UB;VQ?=7-E7!E+"!`,2D["B`@("`@('-Y M;6)O;%]M86ME7V%L:6%S("@D,2P@)#(L($`D*3L*("`@('T*?"!)1"!)3E0@ M7!E7W-E="`H M)#$L(&-U6UB;VQ?=7-E6UB;VP@9&5F:6YI=&EO;G,N("HO"G-Y;6)O;%]D969S+C$Z"B`@PH@ M("`@("!Y>65RR!G6UB;VQ?87!P M96YD("@D,BP@0#(I.R!]"GP@R!GR!GR!G6UB;VQ?9V5T("@D,2P@0#$I.PH@("`@("!S>6UB;VQ?8VQA MPH@("`@("`D)"`] M("0Q("L@,3L*("`@("`@)"1;&5D(&EN(#2!N;VYT97)M:6YA;',@ M:&%V92!T:&4@'EZ M(@H@("`@(D%"0T1%1D=(24I+3$U.3U!14E-455976%E:(@H@("`@(E\B"B`@ M("`B,#$R,S0U-CF5O9B!A;'!H86YU;2`M(#$P*2D*("`@("`@;F%M95]S=&%R="`]('`[ M"@H@("\J(%-TR<@86YD("=])RP@86YD M(&%N>2!B;&%N:W,@:G5S="!I;G-I9&4*("`@("!T:&4@8G)A8V5S+B`@*B\* M("!W:&EL92`H*BTM<"`]/2`G("<@?'P@*G`@/3T@)UQT)RD*("`@(&-O;G1I M;G5E.PH@('!;,5T@/2`G7#`G.PH@('=H:6QE("@J*RMD96-L(#T]("<@)R!\ M?"`J9&5C;"`]/2`G7'0G*0H@("`@8V]N=&EN=64["@H@(&EF("@A(&YA;65? M2!T;VME;G,G('9A;'5EPH@(&9P=71C M("@G("6UB M;VPM/G1A9RD["B`@("`@(&)R96%K.PH*("`@(&-AR`EPH@(&-O;7!L86EN7V%T M("@J;&]C+"`B)7,B+"!M7ET;F%M95MT>7!E73L*?0IE ` end --============_-1095617775==_============ Content-Id: Content-Type: application/octet-stream; name="scan-gram.l" ; x-mac-type="00000000" ; x-mac-creator="00000000" Content-Disposition: attachment; filename="scan-gram.l" ; modification-date="Wed, 18 May 2005 00:53:29 +0200" Content-Transfer-Encoding: x-uuencode begin 644 scan-gra.l M+RH@0FES;VX@1W)A;6UA2!O9@H@("!-15)#2$%. M5$%"24Q)5%D@;W(@1DE43D534R!&3U(@02!005)424-53$%2(%!54E!/4T4N M("!3964@=&AE"B`@($=.52!'96YE7=R87`@ M;F5V97(M:6YT97)A8W1I=F4*)6]P=&EO;B!P7DN8R(*"B5["B-I;F-L=61E(")S>7-T96TN:"(*"B-I;F-L M=61E(#QM8G-W:61T:"YH/@HC:6YC;'5D92`\9V5T+65R2!S8V%N;F5R7V-U7ET97AT+"!Y>6QE;FF5?="!N;U]C7EI;BP@8G5F+"!S:7IE*2D*"@HO*B!/0E-404-+7T9/4E]35%))3D<@+2T@ M57-E9"!T;R!S=&]R92!A;&P@=&AE(&-H87)A8W1E2!S879E9"!T;VME;BX@("HO M"G-T871I8R!C:&%R("IL87-T7W-T7ET97AT+"!Y>6QE;F7,@=VAE6YC M;&EN92`H8VAA%]T97AT*3L*'!E8W1E9%]E;V8@ M*&)O=6YD87)Y+"!C:&%R(&-O;G-T("HI.PIS=&%T:6,@=F]I9"!U;F5X<&5C M=&5D7VYE=VQI;F4@*&)O=6YD87)Y+"!C:&%R(&-O;G-T("HI.PH*+RH@0V]N M=&5X="!S=VET8V@L(&1E8VED:6YG('=H97)E('1H92!O=71ED%" M0T1%1D=(24I+3$U.3U!14E-455976%E:7UT*:60)("![;&5T=&5R?2A[;&5T M=&5R?7Q;,"TY72DJ"F1IVQE='1EVQE='1E2!A;&UO7!E($E&7TQ)3E0@*#T@,"D["@H@("\J($QO8V%T:6]N(&]F(&UO M7EL97@@:7,@:6YV;VME9"!I;B!T:&4@4T-?15!)3$]'544* M("`@("!S=&%R="!C;VYD:71I;VXN("`J+PH@(&)O=6YD87)Y(&-O9&5?PH@("`@=&]K96Y?(B-L:6YE(")[:6YT?2(@ M7"(B+BHB7")<;B(@>PH@("`@:&%N9&QE7W-Y;F-L:6YE("AY>71E>'0@*R!S M:7IE;V8@(B-L:6YE("(@+2`Q*3L*("!]"GT*"@H@("\J+2TM+2TM+2TM+2TM M+2TM+2TM+2TM+2TM+2TM+2X*("!\(%-C86YN:6YG($)IPH@("(E8FEN87)Y(B`@("`@("`@("`@("`@(')E='5R;B!015)# M14Y47TY/3D%34T]#.PH@("(E9&5B=6'!E8W0B6RU?72)R"(@ M("`@("`@("`@7!E M(#T@4$520T5.5%]04DE.5$52.R!"14=)3B!30U]04D5?0T]$13L*("`B)7!U M6%C8R(@("`@("`@("`@("`@("`@(')E='5R;B!0 M15)#14Y47UE!0T,["@H@('MD:7)E8W1I=F5]('L*("`@(&-O;7!L86EN7V%T M("@J;&]C+"!?*")I;G9A;&ED(&1IVED?2!["@D):68@*&]T:&5R7VED*2![ M"@D)"5-44DE.1U]'4D]7.PH)"0E35%))3D=?1DE.25-(.PH)"0EL;V,M/G-T M87)T(#T@8V]D95]S=&%R=#L*"0D)=F%L+3YC:&%R6UB;VP@/2!S M>6UB;VQ?9V5T("AY>71E>'0L("IL;V,I.PH@("`@:61?;&]C(#T@*FQO8SL* M("`@(')U;&5?;&5N9W1H*RL["B`@("!"14=)3B!30U]!1E1%4E])1$5.5$E& M2452.PH@('T*"B`@>VEN='T@>PH@("`@=F%L+3YI;G1E9V5R(#T@71E>'0L(#$P+"`J;&]C*3L*("`@(')E='5R;B!)3E0["B`@ M?0H@(#!;>%A=6S`M.6%B8V1E9D%"0T1%1ETK('L*("`@('9A;"T^:6YT96=E M7ET97AT+"`Q-BP@*FQO8RD["B`@("!R971U M7!E(#T@0E)!0T5$7T-/1$4["B`@("!BPH@ M("(Z(B!["B`@("!R=6QE7VQE;F=T:"`](#`["B`@("`J;&]C(#T@:61?;&]C M.PH@("`@0D5'24X@24Y)5$E!3#L*("`@(')E='5R;B!)1%]#3TQ/3CL*("!] M"B`@+B!["B`@("!S8V%N;F5R7V-U71E>'0L('EY;&5N9RP@,"D["B`@("!Y>6QEPH@("`@*FQO8R`](&ED7VQO8SL*("`@($)%1TE. M($E.251)04P["B`@("!R971U2!E871E;BX@('P*("!@+2TM+2TM M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM M+2TM+2TM+2TM+2TM*B\*"CQ30U]904-#7T-/34U%3E0^"GL*("`B*B\B("`@ M("!"14=)3B!C;VYT97AT7W-T871E.PH@("Y\7&X)("`@.PH@(#P\14]&/CX@ M('5N97AP96-T961?96]F("AT;VME;E]S=&%R="P@(BHO(BD[($)%1TE.(&-O M;G1E>'1?'1?'1?PH@(")< M;B()"2!35%))3D=?1U)/5SL@0D5'24X@8V]N=&5X=%]S=&%T93L*("!['!E8W1E M9%]E;V8@*'1O:V5N7W-T87)T+"`B7"(B*3L)0D5'24X@24Y)5$E!3#L*?0H* M("`O*BTM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM M+2TM+2TM+2TM+2TM+2TM+2TN"B`@?"!38V%N;FEN9R!A($)I2!E871E;BX)"0D@("`@("!\"B`@ M8"TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM M+2TM+2TM+2TM+2TM+2TJ+PH*/%-#7T530T%0141?0TA!4D%#5$52/@I["B`@ M(B6UB;VPL('1O:V5N7W-Y;2P@*FQO8RD["B`@("!L87-T7W-T6UB;VQ?=7-E'!E8W1E9%]N M97=L:6YE("AT;VME;E]S=&%R="P@(BPH@(%Q< M6S`M-UU[,2PS?2!["B`@("!U;G-I9VYE9"!L;VYG(&EN="!C(#T@7ET97AT("L@,2P@,"P@."D["B`@("!I9B`H54-(05)?34%8(#P@8RD* M("`@("`@8V]M<&QA:6Y?870@*"IL;V,L(%\H(FEN=F%L:60@97-C87!E('-E M<75E;F-E.B`E7ET97AT*2D["B`@("!E;'-E(&EF("@A M(&,I(`H@("`@("!C;VUP;&%I;E]A="`H*FQO8RP@7R@B:6YV86QI9"!N=6QL M(&-H87)A8W1E%LP+3EA8F-D969!0D-$149=*R!["B`@("!U;G-I9VYE9"!L M;VYG(&EN="!C.PH@("`@S1]*5LP+3EA8F-D M969!0D-$149=>S1]('L*("`@(&EN="!C(#T@8V]N=F5R=%]U8VY?=&]?8GET M92`H>7ET97AT*3L*("`@(&EF("AC(#P@,"D*("`@("`@8V]M<&QA:6Y?870@ M*"IL;V,L(%\H(FEN=F%L:60@97-C87!E('-E<75E;F-E.B`E7ET97AT*2D["B`@("!E;'-E(&EF("@A(&,I"B`@("`@(&-O;7!L86EN M7V%T("@J;&]C+"!?*")I;G9A;&ED(&YU;&P@8VAA7ET97AT*2D["B`@("!E;'-E"B`@("`@(&]B'!E8W1E9%]E;V8@*'1O:V5N7W-T87)T+"`B)R(I M.R!"14=)3B!C;VYT97AT7W-T871E.PI]"@H\4T-?4U1224Y'/@I["B`@(EPB M(@D)4U1224Y'7T=23U<[($)%1TE.(&-O;G1E>'1?'!E8W1E9%]E;V8@*'1O:V5N M7W-T87)T+"`B7"(B*3L@0D5'24X@8V]N=&5X=%]S=&%T93L*?0H*"B`@+RHM M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM M+2TM+2TN"B`@?"!3=')I;F=S+"!C;VUM96YTPH@("`@4U12 M24Y'7T=23U<["B`@("!C;VYT97AT7W-T871E(#T@65E?4U1!4E0["B`@("!T M;VME;E]S=&%R="`](&QO8RT^PH@("`@4U1224Y'7T=23U<["B`@("!C;VYT97AT M7W-T871E(#T@65E?4U1!4E0["B`@("!T;VME;E]S=&%R="`](&QO8RT^W-P;&EC97TB+R(@>PH@("`@4U1224Y' M7T=23U<["B`@("!C;VYT97AT7W-T871E(#T@65E?4U1!4E0["B`@("!"14=) M3B!30U],24Y%7T-/34U%3E0["B`@?0I]"@H*("`O*BTM+2TM+2TM+2TM+2TM M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM M+2TM+2X*("!\(%-C86YN:6YG(&%F=&5R("5U;FEO;B!E=&,N+"!P;W-S:6)L M>2!F;VQL;W=E9"!B>2!W:&ET92!S<&%C92X@('P*("!\($9O2P@86QL;W<@87)B:71R87)Y($,@8V]D92!T;R!A<'!E87(@8F5F;W)E M('1H92`@('P*("!\(&9O;&QO=VEN9R!BPH@("X@>PH@("`@8F]O;"!V86QI9"`]('EY=&5X=%LP M72`]/2`G>R<@?'P@=&]K96Y?='EP92`]/2!015)#14Y47U5.24]..PH@("`@ M7ET97AT+"!Y M>6QE;F7EL97-S("@P*3L*"B`@("!I9B`H=F%L:60I"B`@ M("`@('L*"6)R86-EPH@(")[(GPB/")['1E;G-I;VXL(&%P<&5N9"!@.R<@8F5F;W)E('1H92!L M87-T"B`@("`@("!B0H@("`@("`@:&5R92P@86YD('-H;W5L9"!O;6ET('1H92!S M96UI8V]L;VX@:68@:70@6%C8SL@:70*("`@("`@('-H;W5L M9"!D97!E;F0@;VX@82!N97<@+2UP961A;G1I8R!O<'1I;VXL('=H:6-H('=O M=6QD(&-A=7-E"B`@("`@("!":7-O;B!T;R!W87)N(&EF(&ET(&1E=&5C=',@ M86X@97AT96YS:6]N('1O(%!/4TE8+B`@+2UP961A;G1I8PH@("`@("`@'!E8W1E9%]E M;V8@*&-O9&5?R(@*&%L'!E8W1E9%]E;V8@*&-O9&5?PH@(#P\14]&/CX@>PH@ M("`@4U1224Y'7T9)3DE32#L*("`@(&QO8RT^2!D969A=6QT M+"!G2!T:&4*("`@F4@ M4TE:12X@(%)E='5R;B!T:&4*("`@;G5M8F5R(&]F(&)Y=&5S(')E860N("!2 M96UO=F4@)UQR)R!FF5?="!S:7IE*0I["B`@PH)("!C M:&%R(&-O;G-T("IR(#T@*RMW.PH)("!C:&%R(&-O;G-T("IL:6T@/2!B=68@ M*R!B>71E0H)"2`G7&XG('1H870@:6UM961I871E;'D@9F]L;&]WPH) M"2`@:6YT(&-H(#T@9V5T8R`H9G`I.PH)"2`@:68@*&-H("$]("=<;B<@)B8@ M=6YG971C("AC:"P@9G`I("$](&-H*0H)"2`@("!B7!E7VYA M;64@/2!.54Q,.PH@(&-H87(@*F-P(#T@=&5X="`K(#$["@H@(&EF("@A(&-U M7!E(&YA;64@:68@97AP;&EC:70N("HO"B`@:68@*"IC<"`]/2`G/"7!E7VYA;65? M9V5T("AC=7)R96YT7W)U;&4L(&QO8RP@,"D["B`@("`@(&EF("@A='EP95]N M86UE("8F('1Y<&5D*0H)8V]M<&QA:6Y?870@*&QO8RP@7R@B)"0@;V8@8"5S M)R!H87,@;F\@9&5C;&%R960@='EP92(I+`H)"2`@("`@8W5R6TM/G1A9RD["B`@("`@(&EF("@A='EP95]N86UE*0H)='EP95]N86UE M(#T@(B(["B`@("`@(&]BPH@("`@("!L;VYG(&EN="!N=6T["B`@ M("`@('-E=%]E7!E7VYA;64@/2!S>6UB;VQ?;&ES M=%]N7W1Y<&5?;F%M95]G970@*&-U7!E7VYA;64@)B8@='EP960I"@D@("`@8V]M<&QA:6Y?870@*&QO M8RP@7R@B)"5D(&]F(&`E7!E7VYA;64@/2`B(CL*"2`@;V)S=&%C:U]F9W)O=S,@*"9O M8G-T86-K7V9O6UB;VPL(&1E<&5N9&EN9R!O M;B!I=',@5$]+14Y?5%E012!\"GP@*&%R92!W92!I;B!A;B!A8W1I;VX_*2X@ M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@('P*8"TM M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM M+2TM+2TM+2TM+2TM+2TM+2TJ+PH*'0L(&QO8V%T:6]N(&QO8RD* M>PH@('-W:71C:"`H=&]K96Y?='EP92D*("`@('L*("`@(&-A'1;,5T@ M/3T@)R0G*0H)>PH)("!O8G-T86-K7W-G'0@*R`Q.PH@(&QO8V%T:6]NPH)("!I;G0@;B`](&YU;3L*"2`@;V)S=&%C:U]F9W)O=S(@ M*"9O8G-T86-K7V9O7!E+"!C M:&%R("IT97AT+"!L;V-A=&EO;B!L;V,I"GL*("!S=VET8V@@*'1O:V5N7W1Y M<&4I"B`@("!["B`@("!C87-E($)204-%1%]#3T1%.@H@("`@("!H86YD;&5? M86-T:6]N7V%T("AT97AT+"!L;V,I.PH@("`@("!R971U'1;,5T@/3T@)R0G*0H)>PH)("!O8G-T86-K7W-G'0I*3L*?0H*"B\J+2TM+2TM+2TM+2TM+2TM+2TM+2TM M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+@I\(%-C86X@3E5- M0D52(&9O71E(&-H87)A8W1E71E("AC:&%R(&-O;G-T("IU8VXI"GL*("!U;G-I9VYE M9"!L;VYG(&EN="!C;V1E(#T@71EPH@("`@+RH@02!N;VXM05-#24D@:&]S="X@(%5S92!#3T1%('1O(&EN M9&5X(&EN=&\@82!T86)L92!O9B!T:&4@0PH@("`@("`@8F%S:6,@97AE8W5T M:6]N(&-H87)A8W1EPH))UPP)RP@("`M,2P@("`M,2P@("`M,2P@("`M,2P@("`M M,2P@("`M,2P@)UQA)RP*"2=<8B2!S:VEP<&5D(&`C;&EN92`G+B`@?`I@+2TM+2TM+2TM+2TM+2TM+2TM M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM M+2HO"@IS=&%T:6,@=F]I9`IH86YD;&5?2!T:&%T(&%N(&5N9"!M87)K97(@=V%S(&9O=6YD(&)E9F]R90D)("!\ M"GP@=&AE(&5X<&5C=&5D(%1/2T5.7T5.1"X)"0D)"2`@?`I@+2TM+2TM+2TM M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM M+2TM+2TM+2TM+2HO"@IS=&%T:6,@=F]I9`IU;F5X<&5C=&5D7V5N9"`H8F]U M;F1APH@('5N97AP96-T961?96YD("AS=&%R="P@3E\H(FUIPH@('5N97AP96-T961?96YD("AS=&%R="P@3E\H(FUI MF4@=&AE M('-C86YN97(N("!\"F`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM*B\*"G9O M:60*2!A;&QO8V%T960@=&\@=&AE('-C86YN97(N("!\"F`M+2TM M+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2TM+2HO M"@IV;VED"G-C86YN97)?9G)E92`H=F]I9"D*>PH@(&]B7E?9&5L971E7V)U9F9E From: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: base64 Subject: Hi how is it going X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Fri, 20 May 2005 18:00:59 -0000 X-Original-Date: Fri, 20 May 2005 13:58:17 -0400 X-List-Received-Date: Fri, 20 May 2005 18:00:59 -0000 SGksDQoNCiANCg0KSSB3b3VsZCBsaWtlIHRvIHRyYWRlIGxpbmtzIHdpdGggeW91ciBzaXRlLiBX ZSBhcmUgb25seSBhY2NlcHRpbmcgcXVhbGl0eSBsaW5rcyBhbmQgeW91IGNhbiBleHBlY3QgdGhl IHNhbWUuIFdoZXJlIHdlIHdvdWxkIHB1dCB5b3VyIGxpbmsgaXM6DQoNCiANCg0KaHR0cDovL3d3 dy53ZWJsaW5raG9zdGluZy5jb20vbGlua3MvaW5kZXguaHRtbA0KDQogDQoNCllvdSBjYW4gYWxz byBnZXQgdGhlcmUgYnkgZ29pbmcgdG8gaHR0cDovL3d3dy53ZWJsaW5raG9zdGluZy5jb20gYW5k IHNjcm9sbGluZyBkb3duIGFuZCBjbGlja2luZyBvbiB0aGUgk2xpbmtzlCBsaW5rIGF0IHRoZSBi b3R0b20gcmlnaHQgaGFuZCBjb3JuZXIgb2YgdGhlIHBhZ2UuIFdlIHJlY2VpdmUgYWJvdXQgMTEw LDAwMCB1bmlxdWUgdmlzaXRvcnMgZXZlcnkgbW9udGguIFdlIHdvdWxkIGxpa2UgdG8gcGxhY2Ug b3VyIGxpbmsgb24geW91ciBmcm9udCBwYWdlIG9yIGF0IHRoZSBsZWZ0IGhhbmQgY29sdW1uIHVu ZGVyIHRoZSBsaW5rOg0KDQogDQoNCldlYiBQYWdlIEhvc3RpbmcNCldlYiBQYWdlIEhvc3Rpbmcg YW5kIFdlYkhvc3RpbmcgU2VydmljZSBCcm91Z2h0IFRvIHlvdSBCeSBXZWJMaW5rSG9zdGluZy5j b20uIFNlcnZpbmcgb3ZlciAyMTAsMDAwIHNpdGVzIQ0KDQogDQoNClRoZSBsaW5rIHdvdWxkIGdv IHRvIG91ciB3ZWJzaXRlOiBodHRwOi8vd3d3LndlYmxpbmtob3N0aW5nLmNvbQ0KDQogDQoNClBs ZWFzZSBsZXQgbWUga25vdywgdGhpcyB3YXkgd2UgY2FuIGJvdGggYmUgYmVuZWZpdGVkIGZyb20g dGhpcyBhbmQgSSBhbSBsb29raW5nIGZvciBhIGxvbmcgdGVybSByZWxhdGlvbnNoaXAuIFRoYW5r IHlvdS4NCg0KIA0KDQpSZWdhcmRzLA0KDQogDQoNClRvbnkgVGViYW5vDQoNCldlYmxpbmtob3N0 aW5nLmNvbQ0K From MAILER-DAEMON Tue Jul 12 16:33:11 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRRG-00045X-8Y for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:33:10 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DZEcD-0004O2-Vm for bison-patches@gnu.org; Fri, 20 May 2005 17:01:06 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DZEcB-0004Ls-8t for bison-patches@gnu.org; Fri, 20 May 2005 17:01:03 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DZEcB-0004Lb-4v for bison-patches@gnu.org; Fri, 20 May 2005 17:01:03 -0400 Received: from [4.7.251.189] (helo=csgholding.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DZEiB-00031Q-0n for bison-patches@gnu.org; Fri, 20 May 2005 17:07:15 -0400 From: "Gormlaith Bowen" To: "Edie Goldstein" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0008_01C56C27.428E4F5E" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: My Girl Loves the New Me X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Fri, 20 May 2005 21:01:06 -0000 X-Original-Date: Fri, 20 May 2005 20:58:06 -0500 X-List-Received-Date: Fri, 20 May 2005 21:01:06 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0008_01C56C27.428E4F5E Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, Probably. side, half way up the hillside, there was a deeply worn game Give us another anecdote. I was not here in the old days so I cannot tell you about I dont know. We didnt count. Five or six, I guess. Im not sore. Im tired, he said. I could believe it bec down, pointed at the old mans face and laughed and shook his hea else that had been moving, in the bush on the flats, or coming do A plantation, he said. It is all gone except that lorr exploding, clanking sound. They would come, later, in the dark, Go ahead, Karl said. Then Garrick came up. All cows, he said. Very big cows. Then we trailed him very slowly, on to hard stony ground a hanging, their faces stained a red-brown, leaning on their spea a very big sable track, the hoof marks spread wide, the tracks Have a nice day. ------=_NextPart_000_0008_01C56C27.428E4F5E Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
Hello,
 
I am dating a younger woman (21).  = Before we=20 began dating I was hearing stories of
guys younger than me taking Vitamin V. =
 
Guys in their 20's and thirties were using = VlAGRRA and so=20 I decided that I needed
that same edge the younger guys were = getting.=20
 
25 mg is best for me and I have found that = VlAGRRA makes=20 me a super stud and
the girl rides me and always has an orgasm or = two. It=20 has made me much better
in bed and I give her some very long and = extended=20 foreplay now.
 
It has really helped my confidence knowing that = if needed=20 I can give it to her any
time she wants it.
 
V. has to be the greatest invention since sliced = bread.=20
 
Try it with Pharamacy-By-MAlLL SHOP
 
 
 

Probably. = side, half way up the hillside, there was a deeply worn game
= Give us another
anecdote. = I was not here in the old days so I cannot tell you
about = I dont know. We didnt count. Five or six, I
guess. = Im not sore. Im tired, he said. I could believe it
bec = down, pointed at the old mans face and laughed and shook his
hea = else that had been moving, in the bush on the flats, or coming
do = A plantation, he said. It is all gone except that
lorr = exploding, clanking sound. They would come, later, in the dark,
= Go ahead, Karl
said. = Then Garrick came up. All cows, he said. Very big
cows. = Then we trailed him very slowly, on to hard stony ground
a = hanging, their faces stained a red-brown, leaning on their
spea = a very big sable track, the hoof marks spread wide, the
tracks =
------=_NextPart_000_0008_01C56C27.428E4F5E-- From MAILER-DAEMON Tue Jul 12 16:33:23 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRRS-0004Ch-BI for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:33:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DZQSe-0006Bl-QW for bison-patches@gnu.org; Sat, 21 May 2005 05:40:01 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DZQSd-0006B5-Jo for bison-patches@gnu.org; Sat, 21 May 2005 05:39:59 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DZQSX-00069f-Ic; Sat, 21 May 2005 05:39:53 -0400 Received: from [128.32.153.227] (helo=tully.CS.Berkeley.EDU) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DZQYO-000224-2Q; Sat, 21 May 2005 05:45:56 -0400 Received: from tully.CS.Berkeley.EDU (localhost [127.0.0.1]) by tully.CS.Berkeley.EDU (8.12.7/8.12.7/3.141592645) with ESMTP id j4L9aq9S009185; Sat, 21 May 2005 02:36:52 -0700 (PDT) Received: from tully.CS.Berkeley.EDU (hilfingr@localhost) by tully.CS.Berkeley.EDU (8.12.7/8.12.7/Submit) with ESMTP id j4L9ap7M009182; Sat, 21 May 2005 02:36:52 -0700 (PDT) Message-Id: <200505210936.j4L9ap7M009182@tully.CS.Berkeley.EDU> To: Michel Rosien In-Reply-To: Message from Michel Rosien of "Wed, 20 Apr 2005 16:28:25 +0200." <008501c545b5$39926620$180c5982@dynamic.ewi.utwente.nl> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <9178.1116668211.1@tully.CS.Berkeley.EDU> From: Paul Hilfinger Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: glr-parser: Infinite loop in yymergeOptionSets: yySemanticOption linked list doesn't terminate with NULL [patch] X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sat, 21 May 2005 09:40:02 -0000 X-Original-Date: Sat, 21 May 2005 02:36:51 -0700 X-List-Received-Date: Sat, 21 May 2005 09:40:02 -0000 M. Rosien, I have found the problem you reported. A patch is appended (which I have also checked into the repository). Looking into this reminded me that at some point, it would be nice to redo glr.c with an eye towards getting closer to the theoretical space efficiency. Currently, it causes quite a bit of redundant computation. Paul Hilfinger ChangeLog: 2005-05-20 Paul Hilfinger * data/glr.c (YY_SYMBOL_PRINT): Don't print newline at end to fix a small glitch in debugging output. (yyprocessOneStack, yyrecoverSyntaxError, yyparse): Print newline after YY_SYMBOL_PRINT where needed. (struct yyGLRState): Add some comments. (struct yySemanticOption): Add some comments. (union yyGLRStackItem): Add comment. (yymergeOptionSets): Correct this to properly perform the union, avoiding infinite reported by Michael Rosien. Update comment. * tests/glr-regression.at: Add test for GLR merging error reported by M. Rosien. Index: bison-1_5.96/data/glr.c --- bison-1_5.96/data/glr.c Wed, 18 May 2005 21:15:55 -0700 hilfingr (glrbison/e/14_glr-parser 1.27.1.33.1.5.1.7 644) +++ bison-1_5.97/data/glr.c Sat, 21 May 2005 01:32:28 -0700 hilfingr (glrbison/e/14_glr-parser 1.27.1.33.1.5.1.8 644) @@ -509,7 +509,6 @@ do { \ YYFPRINTF (stderr, "%s ", Title); \ yysymprint (stderr, \ Type, Value]b4_location_if([, Location])[); \ - YYFPRINTF (stderr, "\n"); \ } \ } while (0) @@ -575,15 +574,26 @@ typedef struct yyGLRStack yyGLRStack; typedef struct yyGLRStateSet yyGLRStateSet; struct yyGLRState { + /** Type tag: always true. */ yybool yyisState; + /** Type tag for yysemantics. If true, yysval applies, otherwise + * yyfirstVal applies. */ yybool yyresolved; + /** Number of corresponding LALR(1) machine state. */ yyStateNum yylrState; + /** Preceding state in this stack */ yyGLRState* yypred; + /** Source position of the first token produced by my symbol */ size_t yyposn; union { + /** First in a chain of alternative reductions producing the + * non-terminal corresponding to this state, threaded through + * yynext. */ yySemanticOption* yyfirstVal; + /** Semantic value for this state. */ YYSTYPE yysval; } yysemantics; + /** Source location for this state. */ YYLTYPE yyloc; }; @@ -593,12 +603,19 @@ struct yyGLRStateSet { }; struct yySemanticOption { + /** Type tag: always false. */ yybool yyisState; + /** Rule number for this reduction */ yyRuleNum yyrule; + /** The last RHS state in the list of states to be reduced. */ yyGLRState* yystate; + /** Next sibling in chain of options. To facilitate merging, + * options are chained in decreasing order by address. */ yySemanticOption* yynext; }; +/** Type of the items in the GLR stack. The yyisState field + * indicates which item of the union is valid. */ union yyGLRStackItem { yyGLRState yystate; yySemanticOption yyoption; @@ -1282,9 +1299,8 @@ yyidenticalOptions (yySemanticOption* yy return yyfalse; } -/** Assuming identicalOptions (Y0,Y1), (destructively) merge the - * alternative semantic values for the RHS-symbols of Y1 into the - * corresponding semantic value sets of the symbols of Y0. */ +/** Assuming identicalOptions (Y0,Y1), destructively merge the + * alternative semantic values for the RHS-symbols of Y1 and Y0. */ static void yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1) { @@ -1294,16 +1310,46 @@ yymergeOptionSets (yySemanticOption* yyy yyn = yyrhsLength (yyy0->yyrule); yyn > 0; yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1) - if (yys0 == yys1) - break; - else if (! yys0->yyresolved && ! yys1->yyresolved) - { - yySemanticOption* yyz; - for (yyz = yys0->yysemantics.yyfirstVal; yyz->yynext != NULL; - yyz = yyz->yynext) - continue; - yyz->yynext = yys1->yysemantics.yyfirstVal; - } + { + if (yys0 == yys1) + break; + else if (yys0->yyresolved) + { + yys1->yyresolved = yytrue; + yys1->yysemantics.yysval = yys0->yysemantics.yysval; + } + else if (yys1->yyresolved) + { + yys0->yyresolved = yytrue; + yys0->yysemantics.yysval = yys1->yysemantics.yysval; + } + else + { + yySemanticOption** yyz0p; + yySemanticOption* yyz1; + yyz0p = &yys0->yysemantics.yyfirstVal; + yyz1 = yys1->yysemantics.yyfirstVal; + while (yytrue) + { + if (yyz1 == *yyz0p || yyz1 == NULL) + break; + else if (*yyz0p == NULL) + { + *yyz0p = yyz1; + break; + } + else if (*yyz0p < yyz1) + { + yySemanticOption* yyz = *yyz0p; + *yyz0p = yyz1; + yyz1 = yyz1->yynext; + (*yyz0p)->yynext = yyz; + } + yyz0p = &(*yyz0p)->yynext; + } + yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal; + } + } } /** Y0 and Y1 represent two possible actions to take in a given @@ -1579,6 +1625,7 @@ yyprocessOneStack (yyGLRStack* yystack, yychar = YYLEX; *yytokenp = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", *yytokenp, yylvalp, yyllocp); + YYDPRINTF ((stderr, "\n")); } yygetLRActions (yystate, *yytokenp, &yyaction, &yyconflicts); @@ -1744,6 +1791,7 @@ yyrecoverSyntaxError (yyGLRStack* yystac yychar = YYLEX; *yytokenp = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", *yytokenp, yylvalp, yyllocp); + YYDPRINTF ((stderr, "\n")); yyj = yypact[yystack->yytops.yystates[0]->yylrState]; if (yyis_pact_ninf (yyj)) return; @@ -1786,6 +1834,7 @@ yyrecoverSyntaxError (yyGLRStack* yystac YYLLOC_DEFAULT (yyerrloc, yystack->yyerror_range, 2);]])[ YY_SYMBOL_PRINT ("Shifting", yystos[yytable[yyj]], yylvalp, &yyerrloc); + YYDPRINTF ((stderr, "\n")); yyglrShift (yystack, 0, yytable[yyj], yys->yyposn, *yylvalp, &yyerrloc]b4_user_args[); yys = yystack->yytops.yystates[0]; @@ -1905,6 +1954,7 @@ b4_syncline([@oline@], [@ofile@])])dnl yychar = YYLEX; yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, yylvalp, yyllocp); + YYDPRINTF ((stderr, "\n")); } yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts); if (*yyconflicts != 0) @@ -1912,6 +1962,7 @@ b4_syncline([@oline@], [@ofile@])])dnl if (yyisShiftAction (yyaction)) { YY_SYMBOL_PRINT ("Shifting", yytoken, yylvalp, yyllocp); + YYDPRINTF ((stderr, "\n")); if (yytoken != YYEOF) yytoken = YYEMPTY; yyposn += 1; Index: bison-1_5.96/tests/glr-regression.at --- bison-1_5.96/tests/glr-regression.at Wed, 18 May 2005 21:15:55 -0700 hilfingr (glrbison/h/9_glr-regr1. 1.10 644) +++ bison-1_5.97/tests/glr-regression.at Sat, 21 May 2005 01:32:28 -0700 hilfingr (glrbison/h/9_glr-regr1. 1.11 644) @@ -222,3 +222,105 @@ AT_CHECK([[echo s VARIABLE_3 t v x | ./g AT_CLEANUP + +## ------------------------------------------------------------ ## +## Improper merging of GLR delayed action sets ## +## ------------------------------------------------------------ ## + +AT_SETUP([Improper merging of GLR delayed action sets]) + +AT_DATA_GRAMMAR([glr-regr3.y], +[[/* Regression Test: Improper merging of GLR delayed action sets. */ +/* Reported by M. Rosien */ + +%{ +#include +#include + +static int MergeRule (int x0, int x1); +static void yyerror(char const * s); + +#define RULE(x) (1 << (x)) + +%} + +%glr-parser + +%token BAD_CHAR +%token P1 P2 T1 T2 T3 T4 O1 O2 + +%% + +S : P1 T4 O2 NT6 P2 { printf ("Result: %x\n", $4); } +; + +NT1 : P1 T1 O1 T2 P2 { $$ = RULE(2); } %merge +; + +NT2 : NT1 { $$ = RULE(3); } %merge + | P1 NT1 O1 T3 P2 { $$ = RULE(4); } %merge +; + +NT3 : T3 { $$ = RULE(5); } %merge + | P1 NT1 O1 T3 P2 { $$ = RULE(6); } %merge +; + +NT4 : NT3 { $$ = RULE(7); } %merge + | NT2 { $$ = RULE(8); } %merge + | P1 NT2 O1 NT3 P2 { $$ = RULE(9); } %merge +; + +NT5 : NT4 { $$ = RULE(10); } %merge +; + +NT6 : P1 NT1 O1 T3 P2 { $$ = RULE(11) | $2; } %merge + | NT5 { $$ = RULE(12) | $1; } %merge +; + +%% + +static int MergeRule (int x0, int x1) { + return x0 | x1; +} + +static void yyerror(char const * s) { + fprintf(stderr,"error: %s\n",s); +} + +FILE *yyin = NULL; + +int P[] = { P1, P2 }; +int O[] = { O1, O2 }; +int T[] = { T1, T2, T3, T4 }; + +int yylex (void) +{ + char inp[3]; + if (fscanf (yyin, "%2s", inp) == EOF) + return 0; + switch (inp[0]) + { + case 'p': return P[inp[1] - '1']; + case 't': return T[inp[1] - '1']; + case 'o': return O[inp[1] - '1']; + } + return BAD_CHAR; +} + +int main(int argc, char* argv[]) { + yyin = stdin; + if (argc == 2 && !(yyin = fopen (argv[1], "r"))) return 1; + return yyparse (); +} +]]) + +AT_CHECK([[bison -o glr-regr3.c glr-regr3.y]], 0, [], +[glr-regr3.y: conflicts: 1 shift/reduce, 1 reduce/reduce +]) +AT_COMPILE([glr-regr3]) + +AT_CHECK([[echo p1 t4 o2 p1 p1 t1 o1 t2 p2 o1 t3 p2 p2 | ./glr-regr3]], 0, +[[Result: 1c04 +]], []) + +AT_CLEANUP From MAILER-DAEMON Tue Jul 12 16:33:40 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRRk-0004LV-33 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:33:40 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DZjBn-0003gd-Gl for bison-patches@gnu.org; Sun, 22 May 2005 01:39:51 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DZjBl-0003fR-D7 for bison-patches@gnu.org; Sun, 22 May 2005 01:39:50 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DZjBi-0003dH-M4; Sun, 22 May 2005 01:39:46 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DZj5C-0003KO-4f; Sun, 22 May 2005 01:33:02 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4M5NhL18689; Sat, 21 May 2005 22:23:43 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1DZiwB-0002SO-00; Sat, 21 May 2005 22:23:43 -0700 To: Wolfgang Spraul References: <200505201334.07235.wspraul@q-ag.de> From: Paul Eggert In-Reply-To: <200505201334.07235.wspraul@q-ag.de> (Wolfgang Spraul's message of "Fri, 20 May 2005 13:34:06 -0400") Message-ID: <87is1bq1eo.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Paul Eggert Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: yyabortlab bug report (and proposed fix) X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sun, 22 May 2005 05:39:52 -0000 X-Original-Date: Sat, 21 May 2005 22:23:43 -0700 X-List-Received-Date: Sun, 22 May 2005 05:39:52 -0000 Wolfgang Spraul writes: > One could argue why setting yychar = YYEMPTY is necessary, True; thanks for pointing it out. > I have crashes in some cases where the lookahead item is destructed > twice. Thanks very much for mentioning it. I installed the following generalization of the patch idea that you proposed. 2005-05-21 Paul Eggert Fix a destructor bug reported by Wolfgang Spraul in . * data/yacc.c (yyabortlab): Don't call destructor, and don't set yychar to EMPTY. (yyoverflowlab): Don't call destructor. (yyreturn): Call destructor, if yychar is neither YYEOF nor YYEMPTY. * tests/calc.at (AT_CHECK_CALC): Expect one fewer output lines, since we no longer output the message "discarding lookahead token end of input ()". Index: data/yacc.c =================================================================== RCS file: /cvsroot/bison/bison/data/yacc.c,v retrieving revision 1.88 diff -p -u -r1.88 yacc.c --- data/yacc.c 14 May 2005 06:49:46 -0000 1.88 +++ data/yacc.c 22 May 2005 05:10:29 -0000 @@ -135,7 +135,7 @@ m4_changecom() m4_divert(0)dnl @output @output_parser_name@ b4_copyright([Skeleton parser for Yacc-like parsing with Bison], - [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004])[ + [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005])[ /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. @@ -1296,9 +1296,6 @@ yyacceptlab: | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: - yydestruct (_("Error: discarding lookahead"), - yytoken, &yylval]b4_location_if([, &yylloc])[); - yychar = YYEMPTY; yyresult = 1; goto yyreturn; @@ -1308,13 +1305,14 @@ yyabortlab: `----------------------------------------------*/ yyoverflowlab: yyerror (]b4_yyerror_args[_("parser stack overflow")); - yydestruct (_("Error: discarding lookahead"), - yytoken, &yylval]b4_location_if([, &yylloc])[); yyresult = 2; /* Fall through. */ #endif yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct (_("Error: discarding lookahead"), + yytoken, &yylval]b4_location_if([, &yylloc])[); if (yyssp != yyss) for (;;) { @@ -1337,7 +1335,7 @@ b4_epilogue m4_if(b4_defines_flag, 0, [], [@output @output_header_name@ b4_copyright([Skeleton parser for Yacc-like parsing with Bison], - [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004]) + [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005]) /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. Index: tests/calc.at =================================================================== RCS file: /cvsroot/bison/bison/tests/calc.at,v retrieving revision 1.73 diff -p -u -r1.73 calc.at --- tests/calc.at 14 May 2005 06:49:48 -0000 1.73 +++ tests/calc.at 22 May 2005 05:10:30 -0000 @@ -480,7 +480,7 @@ _AT_CHECK_CALC_ERROR([$1], [1], [16], [2.0: syntax error, unexpected '+']) # Exercise error messages with EOF: work on an empty file. -_AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [5], +_AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [4], [1.0: syntax error, unexpected end of input]) # Exercise the error token: without it, we die at the first error, From MAILER-DAEMON Tue Jul 12 16:33:45 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRRo-0004N1-Ax for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:33:44 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DZlZz-0004N9-Tp for bison-patches@gnu.org; Sun, 22 May 2005 04:13:00 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DZlZx-0004MN-RH for bison-patches@gnu.org; Sun, 22 May 2005 04:12:58 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DZlZx-0004K5-Oi for bison-patches@gnu.org; Sun, 22 May 2005 04:12:57 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DZlcr-0001pp-86 for bison-patches@gnu.org; Sun, 22 May 2005 04:15:57 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4M86lL23832 for ; Sun, 22 May 2005 01:06:47 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1DZlTz-0002BC-00 for ; Sun, 22 May 2005 01:06:47 -0700 To: bison-patches@gnu.org Message-Id: From: Paul Eggert Subject: Bison patches to avoid rare misuses of file descriptors X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sun, 22 May 2005 08:13:03 -0000 X-Original-Date: Sun, 22 May 2005 01:06:47 -0700 X-List-Received-Date: Sun, 22 May 2005 08:13:03 -0000 I installed this. It requires a re-bootstrap. 2005-05-22 Paul Eggert * bootstrap: Add stdio-safer, unistd-safer modules. Remove m4/glibc2.m4 (introduced by latest gnulib, but we don't need it). * lib/.cvsignore: Add dup-safer.c, fd-safer.c, fopen-safer.c, stdio-safer.h, unistd-safer.h. * lib/subpipe.c: Include "unistd-safer.h". (create_subpipe): Make sure all the newly-created file descriptors are > 2, so that diagnostics don't get sent down them (which might cause Bison to hang, in theory). * m4/.cvsignore: Add stdio-safer.m4, unistd-safer.m4. * src/files.c (xfopen): Use fopen_safer, not fopen. Index: bootstrap =================================================================== RCS file: /cvsroot/bison/bison/bootstrap,v retrieving revision 1.17 diff -p -u -r1.17 bootstrap --- bootstrap 14 May 2005 06:49:46 -0000 1.17 +++ bootstrap 22 May 2005 07:50:24 -0000 @@ -105,7 +105,9 @@ obstack quote quotearg stdbool +stdio-safer stpcpy +unistd-safer xalloc xalloc-die xstrndup @@ -197,6 +199,7 @@ intl_files_to_remove=' intl m4/codeset.m4 m4/gettext.m4 + m4/glibc2.m4 m4/glibc21.m4 m4/intdiv0.m4 m4/intmax.m4 Index: lib/.cvsignore =================================================================== RCS file: /cvsroot/bison/bison/lib/.cvsignore,v retrieving revision 1.12 diff -p -u -r1.12 .cvsignore --- lib/.cvsignore 9 Dec 2004 07:54:47 -0000 1.12 +++ lib/.cvsignore 22 May 2005 07:50:24 -0000 @@ -9,11 +9,14 @@ argmatch.h basename.c dirname.c dirname.h +dup-safer.c error.c error.h exit.h exitfail.c exitfail.h +fd-safer.c +fopen-safer.c getopt.c getopt.h getopt1.c @@ -37,6 +40,7 @@ quotearg.h realloc.c stdbool.h stdbool_.h +stdio-safer.h stpcpy.c stpcpy.h strdup.c @@ -46,6 +50,7 @@ strncasecmp.c strndup.c strndup.h strnlen.c +unistd-safer.h unlocked-io.h xalloc-die.c xalloc.h Index: lib/subpipe.c =================================================================== RCS file: /cvsroot/bison/bison/lib/subpipe.c,v retrieving revision 1.3 diff -p -u -r1.3 subpipe.c --- lib/subpipe.c 14 May 2005 06:49:47 -0000 1.3 +++ lib/subpipe.c 22 May 2005 07:50:24 -0000 @@ -1,6 +1,6 @@ /* Subprocesses with pipes. - Copyright (C) 2002, 2004 Free Software Foundation, Inc. + Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -68,6 +68,7 @@ #endif #include "error.h" +#include "unistd-safer.h" #include "gettext.h" #define _(Msgid) gettext (Msgid) @@ -105,15 +106,13 @@ create_subpipe (char const * const *argv int to_out_fd; pid_t pid; - if (pipe (pipe_fd) != 0) + if (pipe (pipe_fd) != 0 + || (to_in_fd = fd_safer (pipe_fd[0])) < 0 + || (to_out_fd = fd_safer (pipe_fd[1])) < 0 + || pipe (pipe_fd) != 0 + || (from_in_fd = fd_safer (pipe_fd[0])) < 0 + || (from_out_fd = fd_safer (pipe_fd[1])) < 0) error (EXIT_FAILURE, errno, "pipe"); - to_in_fd = pipe_fd[0]; - to_out_fd = pipe_fd[1]; - - if (pipe (pipe_fd) != 0) - error (EXIT_FAILURE, errno, "pipe"); - from_in_fd = pipe_fd[0]; - from_out_fd = pipe_fd[1]; pid = vfork (); if (pid < 0) @@ -124,23 +123,16 @@ create_subpipe (char const * const *argv /* Child. */ close (to_out_fd); close (from_in_fd); - - if (to_in_fd != STDIN_FILENO) - { - dup2 (to_in_fd, STDIN_FILENO); - close (to_in_fd); - } - if (from_out_fd != STDOUT_FILENO) - { - dup2 (from_out_fd, STDOUT_FILENO); - close (from_out_fd); - } + dup2 (to_in_fd, STDIN_FILENO); + close (to_in_fd); + dup2 (from_out_fd, STDOUT_FILENO); + close (from_out_fd); /* The cast to (char **) rather than (char * const *) is needed for portability to older hosts with a nonstandard prototype for execvp. */ execvp (argv[0], (char **) argv); - + _exit (errno == ENOENT ? 127 : 126); } Index: m4/.cvsignore =================================================================== RCS file: /cvsroot/bison/bison/m4/.cvsignore,v retrieving revision 1.11 diff -p -u -r1.11 .cvsignore --- m4/.cvsignore 9 Dec 2004 07:55:04 -0000 1.11 +++ m4/.cvsignore 22 May 2005 07:50:24 -0000 @@ -26,11 +26,13 @@ progtest.m4 quote.m4 quotearg.m4 stdbool.m4 +stdio-safer.m4 stpcpy.m4 strdup.m4 strerror_r.m4 strndup.m4 strnlen.m4 +unistd-safer.m4 unlocked-io.m4 xalloc.m4 xstrndup.m4 Index: src/files.c =================================================================== RCS file: /cvsroot/bison/bison/src/files.c,v retrieving revision 1.87 diff -p -u -r1.87 files.c --- src/files.c 14 May 2005 06:49:47 -0000 1.87 +++ src/files.c 22 May 2005 07:50:24 -0000 @@ -1,6 +1,6 @@ /* Open and close files for Bison. - Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004 + Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -95,7 +95,7 @@ xfopen (const char *name, const char *mo { FILE *ptr; - ptr = fopen (name, mode); + ptr = fopen_safer (name, mode); if (!ptr) error (EXIT_FAILURE, get_errno (), _("cannot open file `%s'"), name); From MAILER-DAEMON Tue Jul 12 16:33:51 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRRt-0004OD-It for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:33:51 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DZn0s-0001yw-Bh for bison-patches@gnu.org; Sun, 22 May 2005 05:44:50 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DZn0a-0001mg-7Z for bison-patches@gnu.org; Sun, 22 May 2005 05:44:49 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DZn0M-0001Sv-Tr; Sun, 22 May 2005 05:44:19 -0400 Received: from [81.228.11.98] (helo=pne-smtpout1-sn1.fre.skanova.net) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DZn0N-0002ue-5C; Sun, 22 May 2005 05:44:19 -0400 Received: from [83.250.192.47] (83.250.192.47) by pne-smtpout1-sn1.fre.skanova.net (7.1.026.7) id 42885ED5001B6232; Sun, 22 May 2005 11:34:58 +0200 Mime-Version: 1.0 Message-Id: In-Reply-To: <87is1bq1eo.fsf@penguin.cs.ucla.edu> References: <200505201334.07235.wspraul@q-ag.de> <87is1bq1eo.fsf@penguin.cs.ucla.edu> To: Paul Eggert From: Hans Aberg Content-Type: text/plain; charset="us-ascii" ; format="flowed" Cc: Wolfgang Spraul , bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: yyabortlab bug report (and proposed fix) X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sun, 22 May 2005 09:44:51 -0000 X-Original-Date: Sun, 22 May 2005 11:34:51 +0200 X-List-Received-Date: Sun, 22 May 2005 09:44:51 -0000 There might be a problem also at all the other places where yydestruct() occurs. At 22:23 -0700 2005/05/21, Paul Eggert wrote: >Wolfgang Spraul writes: > >> One could argue why setting yychar = YYEMPTY is necessary, > >True; thanks for pointing it out. > >> I have crashes in some cases where the lookahead item is destructed >> twice. > >Thanks very much for mentioning it. I installed the following >generalization of the patch idea that you proposed. > >2005-05-21 Paul Eggert > > Fix a destructor bug reported by Wolfgang Spraul in > . > * data/yacc.c (yyabortlab): Don't call destructor, and > don't set yychar to EMPTY. > (yyoverflowlab): Don't call destructor. > (yyreturn): Call destructor, if yychar is neither YYEOF nor YYEMPTY. > * tests/calc.at (AT_CHECK_CALC): Expect one fewer output lines, > since we no longer output the message "discarding lookahead token > end of input ()". > >Index: data/yacc.c >=================================================================== >RCS file: /cvsroot/bison/bison/data/yacc.c,v >retrieving revision 1.88 >diff -p -u -r1.88 yacc.c >--- data/yacc.c 14 May 2005 06:49:46 -0000 1.88 >+++ data/yacc.c 22 May 2005 05:10:29 -0000 >@@ -135,7 +135,7 @@ m4_changecom() > m4_divert(0)dnl > @output @output_parser_name@ > b4_copyright([Skeleton parser for Yacc-like parsing with Bison], >- [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004])[ >+ [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005])[ > > /* As a special exception, when this file is copied by Bison into a > Bison output file, you may use that output file without restriction. >@@ -1296,9 +1296,6 @@ yyacceptlab: > | yyabortlab -- YYABORT comes here. | > `-----------------------------------*/ > yyabortlab: >- yydestruct (_("Error: discarding lookahead"), >- yytoken, &yylval]b4_location_if([, &yylloc])[); >- yychar = YYEMPTY; > yyresult = 1; > goto yyreturn; > >@@ -1308,13 +1305,14 @@ yyabortlab: > `----------------------------------------------*/ > yyoverflowlab: > yyerror (]b4_yyerror_args[_("parser stack overflow")); >- yydestruct (_("Error: discarding lookahead"), >- yytoken, &yylval]b4_location_if([, &yylloc])[); > yyresult = 2; > /* Fall through. */ > #endif > > yyreturn: >+ if (yychar != YYEOF && yychar != YYEMPTY) >+ yydestruct (_("Error: discarding lookahead"), >+ yytoken, &yylval]b4_location_if([, &yylloc])[); > if (yyssp != yyss) > for (;;) > { >@@ -1337,7 +1335,7 @@ b4_epilogue > m4_if(b4_defines_flag, 0, [], > [@output @output_header_name@ > b4_copyright([Skeleton parser for Yacc-like parsing with Bison], >- [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004]) >+ [1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005]) > > /* As a special exception, when this file is copied by Bison into a > Bison output file, you may use that output file without restriction. >Index: tests/calc.at >=================================================================== >RCS file: /cvsroot/bison/bison/tests/calc.at,v >retrieving revision 1.73 >diff -p -u -r1.73 calc.at >--- tests/calc.at 14 May 2005 06:49:48 -0000 1.73 >+++ tests/calc.at 22 May 2005 05:10:30 -0000 >@@ -480,7 +480,7 @@ _AT_CHECK_CALC_ERROR([$1], [1], > [16], > [2.0: syntax error, unexpected '+']) > # Exercise error messages with EOF: work on an empty file. >-_AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [5], >+_AT_CHECK_CALC_ERROR([$1], [1], [/dev/null], [4], > [1.0: syntax error, unexpected end of input]) > > # Exercise the error token: without it, we die at the first error, -- Hans Aberg From MAILER-DAEMON Tue Jul 12 16:33:44 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRRo-0004Ms-3B for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:33:44 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DZl84-0000B3-SM for bison-patches@gnu.org; Sun, 22 May 2005 03:44:09 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DZl7w-00005z-Be for bison-patches@gnu.org; Sun, 22 May 2005 03:44:00 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DZl7u-0008VX-Lk for bison-patches@gnu.org; Sun, 22 May 2005 03:43:58 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DZl6c-00074M-02 for bison-patches@gnu.org; Sun, 22 May 2005 03:42:38 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4M7XSL22915 for ; Sun, 22 May 2005 00:33:28 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1DZkxj-0007qg-00 for ; Sun, 22 May 2005 00:33:27 -0700 To: bison-patches@gnu.org Message-Id: From: Paul Eggert Subject: porting yesterday's yacc.c patches to lalr1.cc X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sun, 22 May 2005 07:44:14 -0000 X-Original-Date: Sun, 22 May 2005 00:33:27 -0700 X-List-Received-Date: Sun, 22 May 2005 07:44:14 -0000 I installed this: 2005-05-22 Paul Eggert * data/lalr1.cc (yy::]b4_parser_class_name[::parse): Port yesterday's yacc.c fix. --- lalr1.cc 22 May 2005 06:26:13 -0000 1.84 +++ lalr1.cc 22 May 2005 07:31:24 -0000 1.85 @@ -544,6 +544,8 @@ yy::]b4_parser_class_name[::set_debug_le int yy::]b4_parser_class_name[::parse () { + int yyresult_; + YYCDEBUG << "Starting parse" << std::endl; yynerrs_ = 0; @@ -813,14 +815,18 @@ yyerrlab1: /* Accept. */ yyacceptlab: - return 0; + yyresult_ = 0; + goto yyreturn; /* Abort. */ yyabortlab: - /* Free the lookahead. */ - yydestruct_ ("Error: discarding lookahead", yyilooka_, &yylval, &yylloc); - yylooka_ = yyempty_; - return 1; + yyresult_ = 1; + goto yyreturn; + +yyreturn: + if (yylooka_ != yyeof_ && yylooka_ != yyempty_) + yydestruct_ ("Error: discarding lookahead", yyilooka_, &yylval, &yylloc); + return yyresult_; } void From MAILER-DAEMON Tue Jul 12 16:33:53 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRRx-0004PI-0x for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:33:53 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DZuZc-0000rV-5f for bison-patches@gnu.org; Sun, 22 May 2005 13:49:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DZuZa-0000qA-7O for bison-patches@gnu.org; Sun, 22 May 2005 13:49:10 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DZuZa-0000q7-4P for bison-patches@gnu.org; Sun, 22 May 2005 13:49:10 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DZugV-0004zg-Qg for bison-patches@gnu.org; Sun, 22 May 2005 13:56:20 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4MHl4L20292 for ; Sun, 22 May 2005 10:47:04 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1DZuXY-0005Qx-00 for ; Sun, 22 May 2005 10:47:04 -0700 To: bison-patches@gnu.org Message-Id: From: Paul Eggert Subject: various maintainer cleanups X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sun, 22 May 2005 17:49:14 -0000 X-Original-Date: Sun, 22 May 2005 10:47:04 -0700 X-List-Received-Date: Sun, 22 May 2005 17:49:14 -0000 I installed this change to modernize Bison's maintainer procedures a bit. You may need to check out fresh sources and run 'bootstrap' after this. 2005-05-22 Paul Eggert Various maintainer cleanups. * .cvsignore: Add a.exe, a.out, b.out,, conf[0-9]*, confdefs*, conftest*, for benefit of CVS commands run at the same time as "configure". Add build-aux, since "bootstrap" now creates it and its subfiles. * Makefile.cfg (move_if_change): Remove. * Makefile.maint: Remove the update stuff; we now use "bootstrap". (ftp-gnu, www-gnu, move_if_change, local_updates, update): (po_repo, do-po-update, po-update, wget_files, get-targets): (config.guess-url_prefix, config.sub-url_prefix): (ansi2knr.c-url_prefix, texinfo.tex-url_prefix): (standards.texi-url_prefix, make-stds.texi-url_prefix, taget, url): ($(get-targets), cvs-files, automake_repo, wget-update, cvs-update): Remove. * configure.ac (AC_CONFIG_AUX_DIR): Change from config to build-aux; this is now the recommended name. * config/.cvsignore: Remove config.guess, config.rpath, config.sub, depcomp, install-sh, mdate-sh, missing, mkinstalldirs, texinfo.tex, ylwrap. These files now go into build-aux. * config/move-if-change: Remove. * config/prev-version.txt: Bump from 1.75 to 2.0. Index: .cvsignore =================================================================== RCS file: /cvsroot/bison/bison/.cvsignore,v retrieving revision 1.22 diff -p -u -r1.22 .cvsignore --- .cvsignore 9 Oct 2004 17:57:06 -0000 1.22 +++ .cvsignore 22 May 2005 17:43:40 -0000 @@ -7,9 +7,15 @@ INSTALL Makefile Makefile.in _* +a.exe +a.out aclocal.m4 autom4te.cache +b.out bison-* +build-aux +conf[0-9]* +confdefs* config.cache config.h config.hin @@ -17,6 +23,7 @@ config.log config.status configure configure.lineno +conftest* intl patches releases Index: Makefile.cfg =================================================================== RCS file: /cvsroot/bison/bison/Makefile.cfg,v retrieving revision 1.2 diff -p -u -r1.2 Makefile.cfg --- Makefile.cfg 14 May 2005 06:49:46 -0000 1.2 +++ Makefile.cfg 22 May 2005 17:43:41 -0000 @@ -17,7 +17,6 @@ # 02110-1301, USA. prev_version_file = $(srcdir)/config/prev-version.txt -move_if_change = $(srcdir)/config/move-if-change announce_gen = $(srcdir)/config/announce-gen release_archive_dir = releases Index: Makefile.maint =================================================================== RCS file: /cvsroot/bison/bison/Makefile.maint,v retrieving revision 1.17 diff -p -u -r1.17 Makefile.maint --- Makefile.maint 14 May 2005 06:49:46 -0000 1.17 +++ Makefile.maint 22 May 2005 17:43:41 -0000 @@ -395,103 +395,6 @@ announcement: NEWS ChangeLog $(rel-files $(addprefix --url-dir=, $(url_dir_list)) \ -## ---------------- ## -## Updating files. ## -## ---------------- ## - -ftp-gnu = ftp://ftp.gnu.org/gnu -www-gnu = http://www.gnu.org - -# Use mv, if you don't have/want move-if-change. -move_if_change ?= move-if-change - - -# --------------------- # -# Updating everything. # -# --------------------- # - -.PHONY: update -local_updates ?= wget-update cvs-update po-update -update: $(local_updates) - - -# ------------------- # -# Updating PO files. # -# ------------------- # - -po_repo = http://www.iro.umontreal.ca/contrib/po/maint/$(PACKAGE) -.PHONY: do-po-update po-update -do-po-update: - tmppo=/tmp/$(PACKAGE)-$(VERSION)-po &&\ - rm -rf $$tmppo && \ - mkdir $$tmppo && \ - (cd $$tmppo && \ - $(WGET) $(WGETFLAGS) -r -l1 -nd --no-parent -A '*.po' $(po_repo)) &&\ - cp $$tmppo/*.po po - cd po && $(MAKE) update-po - $(MAKE) po-check - -po-update: - if test -d "po"; then \ - $(MAKE) do-po-update; \ - fi - -# -------------------------- # -# Updating GNU build tools. # -# -------------------------- # - -# The following pseudo table associates a local directory and a URL -# with each of the files that belongs to some other package and is -# regularly updated from the specified URL. -wget_files ?= $(srcdir)/config/config.guess \ - $(srcdir)/config/config.sub \ - $(srcdir)/src/ansi2knr.c \ - $(srcdir)/config/texinfo.tex -get-targets = $(patsubst %, get-%, $(wget_files)) - -config.guess-url_prefix = $(ftp-gnu)/config/ -config.sub-url_prefix = $(ftp-gnu)/config/ - -ansi2knr.c-url_prefix = ftp://ftp.cs.wisc.edu/ghost/ - -texinfo.tex-url_prefix = $(ftp-gnu)/texinfo/ - -standards.texi-url_prefix = $(www-gnu)/prep/ -make-stds.texi-url_prefix = $(standards.texi-url_prefix) - -target = $(patsubst get-%, %, $@) -url = $($(notdir $(target))-url_prefix)$(notdir $(target)) - -.PHONY: $(get-targets) -$(get-targets): - $(WGET) $(WGETFLAGS) $(url) -O $(target).t \ - && $(move_if_change) $(target).t $(target) - -cvs_files ?= \ - $(srcdir)/src/ansi2knr.c \ - $(srcdir)/config/depcomp \ - $(srcdir)/config/install-sh \ - $(srcdir)/config/missing \ - $(srcdir)/config/mkinstalldirs -automake_repo=:pserver:anoncvs:anoncvs@sources.redhat.com:/cvs/automake -.PHONY: wget-update -wget-update: $(get-targets) - -.PHONY: cvs-update -cvs-update: - fail=; \ - for f in $(cvs_files); do \ - test -f $$f || { echo "*** skipping $$f" 1>&2; continue; }; \ - cvs diff $$f > /dev/null \ - || { echo "*** $$f is locally modified; skipping it" 1>&2; \ - fail=yes; continue; }; \ - file=$$(basename $$f); \ - echo checking out $$file...; \ - $(CVS) -d $(automake_repo) co -p automake/lib/$$file> $$f.t \ - && $(move_if_change) $$f.t $$f; \ - done; \ - test "$$fail" && exit 1 - define emit-upload-commands echo ===================================== echo ===================================== Index: configure.ac =================================================================== RCS file: /cvsroot/bison/bison/configure.ac,v retrieving revision 1.53 diff -p -u -r1.53 configure.ac --- configure.ac 14 May 2005 06:49:46 -0000 1.53 +++ configure.ac 22 May 2005 17:43:41 -0000 @@ -24,7 +24,7 @@ AC_PREREQ(2.59) AC_INIT([GNU Bison], [2.0a], [bug-bison@gnu.org]) -AC_CONFIG_AUX_DIR([config]) +AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_MACRO_DIR([m4]) # We don't have a file m4/Makefile.am, so we need Automake 1.8 or later. Index: config/.cvsignore =================================================================== RCS file: /cvsroot/bison/bison/config/.cvsignore,v retrieving revision 1.8 diff -p -u -r1.8 .cvsignore --- config/.cvsignore 28 Apr 2004 20:00:53 -0000 1.8 +++ config/.cvsignore 22 May 2005 17:43:41 -0000 @@ -1,13 +1,3 @@ *.t Makefile Makefile.in -config.guess -config.rpath -config.sub -depcomp -install-sh -mdate-sh -missing -mkinstalldirs -texinfo.tex -ylwrap Index: config/Makefile.am =================================================================== RCS file: /cvsroot/bison/bison/config/Makefile.am,v retrieving revision 1.3 diff -p -u -r1.3 Makefile.am --- config/Makefile.am 3 May 2002 16:10:29 -0000 1.3 +++ config/Makefile.am 22 May 2005 17:43:41 -0000 @@ -1,2 +1,2 @@ ## Process this file with automake to produce Makefile.in -*-Makefile-*- -EXTRA_DIST = move-if-change prev-version.txt config.rpath +EXTRA_DIST = prev-version.txt Index: config/prev-version.txt =================================================================== RCS file: /cvsroot/bison/bison/config/prev-version.txt,v retrieving revision 1.6 diff -p -u -r1.6 prev-version.txt --- config/prev-version.txt 14 Oct 2002 18:15:05 -0000 1.6 +++ config/prev-version.txt 22 May 2005 17:43:41 -0000 @@ -1 +1 @@ -1.75 +2.0 From MAILER-DAEMON Tue Jul 12 16:33:53 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRRx-0004PQ-6b for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:33:53 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DZuy4-0004I8-E6 for bison-patches@gnu.org; Sun, 22 May 2005 14:14:29 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DZuxy-0004FX-EI for bison-patches@gnu.org; Sun, 22 May 2005 14:14:23 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DZuxu-0003z7-NW for bison-patches@gnu.org; Sun, 22 May 2005 14:14:19 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DZurX-0007wr-UF for bison-patches@gnu.org; Sun, 22 May 2005 14:07:44 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4MHwSL20832 for ; Sun, 22 May 2005 10:58:28 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1DZuia-0002Zy-00 for ; Sun, 22 May 2005 10:58:28 -0700 To: bison-patches@gnu.org Message-Id: From: Paul Eggert Subject: files.c should include stdio-safer.h X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sun, 22 May 2005 18:16:01 -0000 X-Original-Date: Sun, 22 May 2005 10:58:28 -0700 X-List-Received-Date: Sun, 22 May 2005 18:16:01 -0000 I installed this to fix a typo in yesterday's changes: 2005-05-22 Paul Eggert * src/files.c: Include "stdio-safer.h"; this fixes a typo in the previous change. --- files.c.~1.88.~ 2005-05-22 01:04:06 -0700 +++ files.c 2005-05-22 10:50:16 -0700 @@ -32,6 +32,7 @@ #include "files.h" #include "getargs.h" #include "gram.h" +#include "stdio-safer.h" /* From basename.c. Almost a lie, as it returns a char *. */ const char *base_name (char const *name); From MAILER-DAEMON Tue Jul 12 16:33:43 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRRm-0004Ma-PP for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:33:43 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DZkFQ-0006No-Jb for bison-patches@gnu.org; Sun, 22 May 2005 02:47:40 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DZkFM-0006MC-1Z for bison-patches@gnu.org; Sun, 22 May 2005 02:47:39 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DZkFK-0006Hh-Bz for bison-patches@gnu.org; Sun, 22 May 2005 02:47:34 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DZk5A-00012M-Pv for bison-patches@gnu.org; Sun, 22 May 2005 02:37:05 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4M6RtL20667 for ; Sat, 21 May 2005 23:27:55 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1DZjwI-0007IQ-00 for ; Sat, 21 May 2005 23:27:54 -0700 To: bison-patches@gnu.org From: Paul Eggert Message-ID: <87ekbzpyfp.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Paul Eggert Subject: updated copyright dates for data/glr.c, data/lalr1.cc X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sun, 22 May 2005 06:47:41 -0000 X-Original-Date: Sat, 21 May 2005 23:27:54 -0700 X-List-Received-Date: Sun, 22 May 2005 06:47:41 -0000 I installed this: 2005-05-21 Paul Eggert * data/glr.c, data/lalr1.cc: Update copyright date. Index: data/glr.c =================================================================== RCS file: /cvsroot/bison/bison/data/glr.c,v retrieving revision 1.92 diff -p -u -r1.92 glr.c --- data/glr.c 21 May 2005 08:35:51 -0000 1.92 +++ data/glr.c 22 May 2005 06:19:38 -0000 @@ -1,7 +1,7 @@ m4_divert(-1) -*- C -*- # GLR skeleton for Bison -# Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -137,7 +137,8 @@ m4_define([b4_rhs_location], m4_changecom() m4_divert(0)dnl @output @output_parser_name@ -b4_copyright([Skeleton parser for GLR parsing with Bison], [2002, 2003, 2004]) +b4_copyright([Skeleton parser for GLR parsing with Bison], + [2002, 2003, 2004, 2005]) [ /* This is the parser code for GLR (Generalized LR) parser. */ @@ -587,7 +588,7 @@ struct yyGLRState { size_t yyposn; union { /** First in a chain of alternative reductions producing the - * non-terminal corresponding to this state, threaded through + * non-terminal corresponding to this state, threaded through * yynext. */ yySemanticOption* yyfirstVal; /** Semantic value for this state. */ @@ -614,7 +615,7 @@ struct yySemanticOption { yySemanticOption* yynext; }; -/** Type of the items in the GLR stack. The yyisState field +/** Type of the items in the GLR stack. The yyisState field * indicates which item of the union is valid. */ union yyGLRStackItem { yyGLRState yystate; @@ -1313,7 +1314,7 @@ yymergeOptionSets (yySemanticOption* yyy { if (yys0 == yys1) break; - else if (yys0->yyresolved) + else if (yys0->yyresolved) { yys1->yyresolved = yytrue; yys1->yysemantics.yysval = yys0->yysemantics.yysval; @@ -1323,7 +1324,7 @@ yymergeOptionSets (yySemanticOption* yyy yys0->yyresolved = yytrue; yys0->yysemantics.yysval = yys1->yysemantics.yysval; } - else + else { yySemanticOption** yyz0p; yySemanticOption* yyz1; @@ -2101,7 +2102,8 @@ yypdumpstack (yyGLRStack* yystack) b4_epilogue m4_if(b4_defines_flag, 0, [], [@output @output_header_name@ -b4_copyright([Skeleton parser for GLR parsing with Bison], [2002, 2003, 2004]) +b4_copyright([Skeleton parser for GLR parsing with Bison], + [2002, 2003, 2004, 2005]) b4_token_defines(b4_tokens) Index: data/lalr1.cc =================================================================== RCS file: /cvsroot/bison/bison/data/lalr1.cc,v retrieving revision 1.83 diff -p -u -r1.83 lalr1.cc --- data/lalr1.cc 14 May 2005 06:49:46 -0000 1.83 +++ data/lalr1.cc 22 May 2005 06:19:38 -0000 @@ -115,7 +115,7 @@ m4_divert(0)dnl m4_if(b4_defines_flag, 0, [], [@output @output_header_name@ b4_copyright([C++ Skeleton parser for LALR(1) parsing with Bison], - [2002, 2003, 2004])[ + [2002, 2003, 2004, 2005])[ /* FIXME: This is wrong, we want computed header guards. I don't know why the macros are missing now. :( */ #ifndef PARSER_HEADER_H @@ -408,7 +408,7 @@ namespace yy ])dnl @output @output_parser_name@ b4_copyright([C++ Skeleton parser for LALR(1) parsing with Bison], - [2002, 2003, 2004]) + [2002, 2003, 2004, 2005]) m4_if(b4_prefix[], [yy], [], [ // Take the name prefix into account. @@ -1051,7 +1051,7 @@ const yy::]b4_parser_class_name[::token_ ]b4_epilogue dnl @output stack.hh -b4_copyright([stack handling for Bison C++ parsers], [2002, 2003, 2004])[ +b4_copyright([stack handling for Bison C++ parsers], [2002, 2003, 2004, 2005])[ #ifndef BISON_STACK_HH # define BISON_STACK_HH @@ -1150,7 +1150,7 @@ namespace yy #endif // not BISON_STACK_HH] dnl @output position.hh -b4_copyright([Position class for Bison C++ parsers], [2002, 2003, 2004])[ +b4_copyright([Position class for Bison C++ parsers], [2002, 2003, 2004, 2005])[ /** ** \file position.hh @@ -1263,7 +1263,7 @@ namespace yy } #endif // not BISON_POSITION_HH] @output location.hh -b4_copyright([Location class for Bison C++ parsers], [2002, 2003, 2004])[ +b4_copyright([Location class for Bison C++ parsers], [2002, 2003, 2004, 2005])[ /** ** \file location.hh From MAILER-DAEMON Tue Jul 12 16:34:00 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRS4-0004TM-AZ for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:34:00 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Da8L1-0007MT-7V for bison-patches@gnu.org; Mon, 23 May 2005 04:31:03 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Da8Kx-0007KZ-45 for bison-patches@gnu.org; Mon, 23 May 2005 04:30:59 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Da8Ki-0007DM-Qt; Mon, 23 May 2005 04:30:45 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Da8OZ-00070N-L9; Mon, 23 May 2005 04:34:44 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4N8PIL03485; Mon, 23 May 2005 01:25:18 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1Da8FS-000615-00; Mon, 23 May 2005 01:25:18 -0700 To: bug-bison@gnu.org, help-bison@gnu.org, bison-patches@gnu.org, bug-gnu-utils@gnu.org, translation@iro.umontreal.ca From: Paul Eggert Message-ID: <878y26cpsh.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Paul Eggert Cc: Subject: Bison test version 2.0a released X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Mon, 23 May 2005 08:31:05 -0000 X-Original-Date: Mon, 23 May 2005 01:25:18 -0700 X-List-Received-Date: Mon, 23 May 2005 08:31:05 -0000 Bison test version 2.0a is now available. It contains mostly bug fixes for Bison 2.0. Our intention is to generate a new official release soon, based on feedback from this test version. Here is the URL: ftp://alpha.gnu.org/gnu/bison/bison-2.0a.tar.gz Here is the MD5 checksum: 4304bcadc0115d0eb6c8744f83158a7e bison-2.0a.tar.gz To try this test version, please make sure you have GNU m4 1.4.3 installed, and then execute the following shell commands or their equivalents: wget ftp://alpha.gnu.org/gnu/bison/bison-2.0a.tar.gz gunzip . Bison is a parser generator that is compatible with Yacc. Please see for more info about Bison. Here is a list of user-visible changes in version 2.0a, compared to 2.0: * Bison-generated C parsers use the _ macro to translate strings from English to the user's language, e.g., _("syntax error"). By default, _ is defined to be a no-op macro so the strings are not translated. * When generating verbose diagnostics, Bison-generated C parsers no longer quote the literal strings associated with tokens. For example, for a syntax error associated with '%token NUM "number"' they might print 'syntax error, unexpected number' instead of 'syntax error, unexpected "number"'. From MAILER-DAEMON Tue Jul 12 16:34:18 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRSL-0004as-Dl for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:34:17 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DaHAv-0005g1-J9 for bison-patches@gnu.org; Mon, 23 May 2005 13:57:13 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DaHAt-0005eI-Oj for bison-patches@gnu.org; Mon, 23 May 2005 13:57:12 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DaHAK-0004tr-P1 for bison-patches@gnu.org; Mon, 23 May 2005 13:56:36 -0400 Received: from [81.155.26.69] (helo=jsitel.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DaGwv-00007o-Lo for bison-patches@gnu.org; Mon, 23 May 2005 13:42:46 -0400 From: "Karolina Stanley" To: "Dmitry Lyle" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0006_01C55FBD.841EDD00" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: Better CControl X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Mon, 23 May 2005 17:57:14 -0000 X-Original-Date: Mon, 23 May 2005 12:33:22 -0500 X-List-Received-Date: Mon, 23 May 2005 17:57:14 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0006_01C55FBD.841EDD00 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, English!"delivered it, he sank back exhausted, his eyes half-closed, = his browby surprise."about to give the order to strip for battle, = he almost fainted fromMeanwhile, no sooner had the deserters = weighed anchor than Captainthe fact that I shall send them word of = that intention. And sothere on the mole, waiting to buy my = uncle's leavings, and if youHaving delivered himself of his = decoction of fact and falsehood,the other four ships of the fleet = that is awaiting me there, tellingAnd then they came rattling and = clanking into the stone-flagged hallwhom it was that you were = desired to succour?"Rivarol when this nobleman with his fleet of = five men-of-war at lastperceived what was so obvious - or should = have been to an experiencedgarden's main avenue, that was fringed = with palm and sandalwood,to be blunt - that the accounts have been = falsified. Your bookstruth is that the lingering remains of the = regard in which he had ------=_NextPart_000_0006_01C55FBD.841EDD00 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
Hello, 

l am dating a much younger woman (21).  Before we began dating I was hearing
stories of guys younger than me taking Vitamin V.
 
Guys in their 20's and thirties were using VlAGRRA and so I decided that I needed
that same edge the younger guys were getting.
 
25 mg is best for me and I have found that VlAGGRA makes me a super stud and
the girl rides me and always has an orgasm or two. It has made me much better
in bed and I give her some very long and extended foreplay now.
 
It has really helped my confidence knowing that if needed I can give it to her any time she wants it.
 
V. has to be the greatest invention since sliced bread. 
 
Try it with PPhramacyByMail = Shop.
 
 
 
larger of the = two ships was the Arabella. Her companion was
for many a week. = At the moment it struck him silent, and sent him
and women of = all creeds and nationalities collected there to be
which went = disregarded now.
thick black hair, once so sedulously curled, = hung now in a lank,
Lord Julian bowed stiffly to the cowering = Deputy-Governor. "You
as is the custom among the Brethren of = the Coast."
perform it. I also know my duty to myself. I have = a private score
and they were alone in this. But, after all, = it was built of
testified briskly to the manner in which he had = found and taken the
piracy, with which he swore in his heart = that he had done for ever.
witness of this deciding of her = fate. He was thinking swiftly,
"That I have. I was two years = in a Spanish prison."
"None other, sir. His = lordship...."
between them, as they stood looking each at the = other. Then she
"It would be humiliating to send for me if you = treat me like an enemy."
------=_NextPart_000_0006_01C55FBD.841EDD00-- From MAILER-DAEMON Tue Jul 12 16:34:20 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRSN-0004c4-JP for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:34:19 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DaIDV-00005q-Uh for bison-patches@gnu.org; Mon, 23 May 2005 15:03:58 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DaIAc-0007f6-Bp for bison-patches@gnu.org; Mon, 23 May 2005 15:01:04 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DaIAZ-0007VF-PA for bison-patches@gnu.org; Mon, 23 May 2005 15:00:56 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DaHuz-0002DP-CX for bison-patches@gnu.org; Mon, 23 May 2005 14:44:49 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4NIilL12845 for ; Mon, 23 May 2005 11:44:47 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1DaHux-0001UW-00 for ; Mon, 23 May 2005 11:44:47 -0700 To: bison-patches@gnu.org From: Paul Eggert Message-ID: <87zmuldbog.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Paul Eggert Subject: removed bootstrap gettext problem workaround X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Mon, 23 May 2005 19:03:58 -0000 X-Original-Date: Mon, 23 May 2005 11:44:47 -0700 X-List-Received-Date: Mon, 23 May 2005 19:03:58 -0000 I installed this: 2005-05-23 Paul Eggert * bootstrap: Remove workaround for problem I encountered with gettext 0.14.1; it seems to be fixed now. --- bootstrap 22 May 2005 08:04:05 -0000 1.18 +++ bootstrap 23 May 2005 18:43:08 -0000 1.19 @@ -226,17 +226,6 @@ intl_files_to_remove=' echo $0: rm -fr $intl_files_to_remove ... rm -fr $intl_files_to_remove || exit -# Patch what appears to be a bug in gettext 0.14.1; -# remove this once the bug is fixed. -grep @top_builddir@ po/Makefile.in.in >/dev/null || { - echo "$0: prepending 'top_builddir=@top_builddir@' to po/Makefile.in.in ... " - old_contents=`cat po/Makefile.in.in` || exit - cat >po/Makefile.in.in <po/Makevars ..." sed '/^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-bison@gnu.org/' po/Makevars.template >po/Makevars From MAILER-DAEMON Tue Jul 12 16:34:22 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRSQ-0004d2-9O for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:34:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DaMgo-0005E6-W9 for bison-patches@gnu.org; Mon, 23 May 2005 19:50:31 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DaMXF-0002J9-Ol for bison-patches@gnu.org; Mon, 23 May 2005 19:40:49 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DaMXB-0002ER-LS; Mon, 23 May 2005 19:40:33 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DaMFU-0003of-5K; Mon, 23 May 2005 19:22:16 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4NNM0L11321; Mon, 23 May 2005 16:22:01 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1DaMFE-0001gp-00; Mon, 23 May 2005 16:22:00 -0700 To: Hans Aberg References: <878y26cpsh.fsf@penguin.cs.ucla.edu> <87d5rhd7gb.fsf@penguin.cs.ucla.edu> From: Paul Eggert In-Reply-To: (Hans Aberg's message of "Mon, 23 May 2005 23:37:45 +0200") Message-ID: <87mzqlbk9z.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Paul Eggert Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: Bison test version 2.0a released X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Mon, 23 May 2005 23:50:31 -0000 X-Original-Date: Mon, 23 May 2005 16:22:00 -0700 X-List-Received-Date: Mon, 23 May 2005 23:50:31 -0000 Hans Aberg writes: > Then perhaps there should perhaps be a more formal formulation: > "bison-2a is only supported for use with m4-1.4.3" Good suggestion; I installed the patch enclosed below. > Bison should make some check for version of m4. That might cause more problems than it cures, as some older versions will work as described below. I'd rather leave it alone for now. 2005-05-23 Paul Eggert * README: Mention m4 1.4.3. Remove obsolete advice about Sun Forte Developer 6 update 2, VMS, and MS-DOS. --- README.~1.12.~ 2005-05-13 23:52:28 -0700 +++ README 2005-05-23 16:18:32 -0700 @@ -3,34 +3,25 @@ This directory contains the Bison parser See the file INSTALL for generic compilation and installation instructions. See the file doc/FAQ for frequently asked questions. -Bison requires GNU m4 1.4 or later. Vanilla GNU m4 1.4 has some -serious bugs, so we recommend using m4 1.4 as patched by the standard -GNU/Linux distributions. If you're building GNU m4 1.4 from scratch -we suggest using this version: - -ftp://ftp.gnu.org/gnu/m4/m4-1.4.2.tar.gz - -Older versions of Sun Forte Developer 6 update 2 have a compiler bug -that cause "make check" to fail with a "Encounter BINCL entry" -diagnostic. To fix the bug, update to the latest set of Solaris and -Forte patches recommended by Sun. - -VMS and MS-DOS builds are probably broken right now. If you are able -to build Bison on either platform and you need to make changes to do -so, please submit those changes as a bug report. On VMS, you will -probably have to create Makefile from Makefile.in by hand. Remember -to do `SET COMMAND BISON' to install the data in `BISON.CLD'. - -Send bug reports to . Please include the version -number from `bison --version', and a complete, self-contained test -case in each bug report. +Bison requires GNU m4 1.4.3 or later. See: -If you have questions about using Bison which the documentation does -not answer, send mail to . +ftp://ftp.gnu.org/gnu/m4/m4-1.4.3.tar.gz + +Bison can work with pre-1.4.3 distributions of GNU m4 if they are +sufficiently patched, but if you encounter a bug with an older +distribution and report a bug we will probably suggest that you +upgrade to 1.4.3 as the first step in trying to fix it. + +Please send bug reports to . Please include the +version number from `bison --version', and a complete, self-contained +test case in each bug report. + +If you have questions about using Bison and the documentation does +not answer them, please send mail to . ----- -Copyright (C) 1992, 1998, 1999, 2003, 2004 Free Software Foundation, Inc. +Copyright (C) 1992, 1998, 1999, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. From MAILER-DAEMON Tue Jul 12 16:34:22 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRSQ-0004d5-Hf for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:34:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DaMxr-0006Q7-7X for bison-patches@gnu.org; Mon, 23 May 2005 20:08:07 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DaMxp-0006PU-2B for bison-patches@gnu.org; Mon, 23 May 2005 20:08:05 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DaMxc-0006GQ-Ks; Mon, 23 May 2005 20:07:52 -0400 Received: from [81.228.11.159] (helo=pne-smtpout2-sn1.fre.skanova.net) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DaMnz-0002MP-ON; Mon, 23 May 2005 19:57:56 -0400 Received: from [83.250.192.47] (83.250.192.47) by pne-smtpout2-sn1.fre.skanova.net (7.1.026.7) id 42687F2000873DC6; Tue, 24 May 2005 01:57:48 +0200 Mime-Version: 1.0 Message-Id: In-Reply-To: <87mzqlbk9z.fsf@penguin.cs.ucla.edu> References: <878y26cpsh.fsf@penguin.cs.ucla.edu> <87d5rhd7gb.fsf@penguin.cs.ucla.edu> <87mzqlbk9z.fsf@penguin.cs.ucla.edu> To: Paul Eggert From: Hans Aberg Content-Type: text/plain; charset="us-ascii" ; format="flowed" Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: Bison test version 2.0a released X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 24 May 2005 00:08:08 -0000 X-Original-Date: Tue, 24 May 2005 01:57:41 +0200 X-List-Received-Date: Tue, 24 May 2005 00:08:08 -0000 At 16:22 -0700 2005/05/23, Paul Eggert wrote: > > Then perhaps there should perhaps be a more formal formulation: >> "bison-2a is only supported for use with m4-1.4.3" > >Good suggestion; I installed the patch enclosed below. The patch is OK. > > Bison should make some check for version of m4. > >That might cause more problems than it cures, as some older versions will >work as described below. I'd rather leave it alone for now. This is only a suggestion about psychology: I have a hunch how things will be used and reported. :-) -- Hans Aberg From MAILER-DAEMON Tue Jul 12 16:34:27 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRSV-0004eM-5v for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:34:27 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DaPvY-0006x6-15 for bison-patches@gnu.org; Mon, 23 May 2005 23:17:56 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DaPvW-0006w7-4j for bison-patches@gnu.org; Mon, 23 May 2005 23:17:54 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DaPr6-0004yp-1x for bison-patches@gnu.org; Mon, 23 May 2005 23:13:20 -0400 Received: from [193.138.222.88] (helo=host.swa7.com) by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24) (Exim 4.34) id 1DaPnw-0000O8-I0 for bison-patches@gnu.org; Mon, 23 May 2005 23:10:05 -0400 Received: from nobody by host.swa7.com with local (Exim 4.44) id 1DaNMM-00058H-LS for bison-patches@gnu.org; Tue, 24 May 2005 02:33:26 +0200 To: bison-patches@gnu.org From: Citibank security MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Message-Id: X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - host.swa7.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [99 32003] / [47 12] X-AntiAbuse: Sender Address Domain - host.swa7.com X-Source: X-Source-Args: X-Source-Dir: Subject: Active your citibank account X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: citi-group@citibank.com List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 24 May 2005 03:17:57 -0000 X-Original-Date: Tue, 24 May 2005 02:33:26 +0200 X-List-Received-Date: Tue, 24 May 2005 03:17:57 -0000 Citi - verify your account information

HomeMy CitiSite MapSign In/Out


Dear CitiBank member,

This email was sent by the Citibank server to verify your e-mail address. You must complete this process by clicking on the link below and entering your account information . This is done for your protection , becaurse some of our members no longer have access to their online access and we must verify it. To verify your e-mail address and access your bank account, click on the link below.

https://web.da-us.citibank.com/signin/citifi/verify/%?6488820019

Please fill in the required information.
This is required for us to continue to offer you a safe and risk free environment .

Thank you
Accounts Management


Citigroup Privacy Promise
Terms & Conditions
Copyright © 2004 Citicorp

From MAILER-DAEMON Tue Jul 12 16:34:44 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRSm-0004oG-0b for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:34:44 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Daaxu-0003gz-W7 for bison-patches@gnu.org; Tue, 24 May 2005 11:05:07 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Daaxt-0003gb-NM for bison-patches@gnu.org; Tue, 24 May 2005 11:05:06 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Daaxt-0003gW-Ez for bison-patches@gnu.org; Tue, 24 May 2005 11:05:05 -0400 Received: from [82.51.74.168] (helo=futureengine.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1Daav5-0004NZ-0i for bison-patches@gnu.org; Tue, 24 May 2005 11:02:12 -0400 From: "Shir Majors" To: "Nestore Carranza" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0012_01C56071.8C385480" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: Re: Happy Daddyy X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 24 May 2005 15:05:07 -0000 X-Original-Date: Tue, 24 May 2005 10:02:05 -0500 X-List-Received-Date: Tue, 24 May 2005 15:05:07 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0012_01C56071.8C385480 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, "You're hanging men without trial? Faith, then, it's mistaken I = am.heightened now by a recklessness begotten of his outlawry, that = hisinsufficient knowledge.said it, and seemed to have something to = add. But whatever it was,were, in his case, acquired. Her = father, Tom Bishop - that sameHagthorpe, with whom was the now = shipless Cahusac and the bulk ofamong which was the clause that = any man found guilty of abstractingas valuable at least as Colonel = Bishop. Yet he bade me depart; notstirred Levasseur's quick = anger. The blood crept slowly back intoCaptain Blood, who stood = beside him.He was not to suppose the Royalist commander so = indifferentlyGovernor's house - which Captain Blood had = appropriated to hissaid Wolverstone, rising. "Meanwhile ye'll = please to remember theopen under the full glare of the tropical = sun, and its blisteringof harm's way."the guns abruptly ceased. ------=_NextPart_000_0012_01C56071.8C385480 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
 
Our new greaHe = might have said more, but he checked upon perceiving that = thet offer:
VlAinconvenient = fellow in the prow. Their first attention must be forGRA = Ccommission on the spot, and Bishop = all but choked hisself with ragelALlS order about what was to do.VALlUM = LEVlTfrom the overflowing gaol at = Bridgewater to be summarily hanged inRA and many "So I heard," she admitted in a small = voice. She was very white,other
 
for VERY REASO"But... Are you not Spanish, then?"NABLE = PRlCES.
 
With each purc"Where she is concerned see that you make sure that I am = right.hase you get:
 
  • Top Those are the terms upon which I = sell myself to the King. Let LordquaIity
  • Homof harm's way."e = deIivery
  • Total confidenBishop that restrained = him. That they should be destined never = totiaIity
  •  
    Just try us and you will of being able to pick and choose the crews = for his augmented fleet,not be disappointed!
     
    ------=_NextPart_000_0012_01C56071.8C385480-- From MAILER-DAEMON Tue Jul 12 16:34:51 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRSs-0004tJ-5T for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:34:50 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DadyC-0001al-Nf for bison-patches@gnu.org; Tue, 24 May 2005 14:17:37 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DadyA-0001Zr-Ry for bison-patches@gnu.org; Tue, 24 May 2005 14:17:35 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dady6-0001Vi-R6; Tue, 24 May 2005 14:17:30 -0400 Received: from [81.228.8.164] (helo=pne-smtpout2-sn2.hy.skanova.net) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dadtg-0008OD-5i; Tue, 24 May 2005 14:12:56 -0400 Received: from [83.250.192.47] (83.250.192.47) by pne-smtpout2-sn2.hy.skanova.net (7.2.059.6) id 42931E1F000155A0; Tue, 24 May 2005 20:12:08 +0200 Mime-Version: 1.0 Message-Id: In-Reply-To: <87mzqlbk9z.fsf@penguin.cs.ucla.edu> References: <878y26cpsh.fsf@penguin.cs.ucla.edu> <87d5rhd7gb.fsf@penguin.cs.ucla.edu> <87mzqlbk9z.fsf@penguin.cs.ucla.edu> To: Paul Eggert From: Hans Aberg Content-Type: text/plain; charset="us-ascii" ; format="flowed" Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: Bison test version 2.0a released X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 24 May 2005 18:17:40 -0000 X-Original-Date: Tue, 24 May 2005 20:11:56 +0200 X-List-Received-Date: Tue, 24 May 2005 18:17:40 -0000 At 16:22 -0700 2005/05/23, Paul Eggert wrote: > > Bison should make some check for version of m4. > >That might cause more problems than it cures, as some older versions will >work as described below. I'd rather leave it alone for now. I got the idea to do write out the M4 version number in the output parser file, though I failed on my first attempt -- so I understand if you do not want to implement anything like it now. In short though the idea is to do the following: In file output.c, output_skeleton(), open up a pipe "m4 --version", and put its out in a M4 macro b4_m4_version, by a MUSCLE_INSERT_STRING ("m4_version", buf); Then, in data/c.m4, change the line to: m4_define([b4_copyright], [/* A Bison parser, made by GNU Bison b4_version, using GNU M4 b4_m4_version. */ I am not sure it is worth the effort. M4 must be run twice, as M4 does not seem to have a built-in macro by which its version can be reached. If there was such a macro available, it could be used instead of the b4_m4_version created above. -- Hans Aberg From MAILER-DAEMON Tue Jul 12 16:35:00 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRT2-000511-8i for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:35:00 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DalxK-0008QK-Gp for bison-patches@gnu.org; Tue, 24 May 2005 22:49:15 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DalxB-0008Mm-QC for bison-patches@gnu.org; Tue, 24 May 2005 22:49:06 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DalxB-0008BZ-8o for bison-patches@gnu.org; Tue, 24 May 2005 22:49:05 -0400 Received: from [24.86.120.243] (helo=s01060010dc556efe.vc.shawcable.net) by monty-python.gnu.org with smtp (Exim 4.34) id 1Dalec-0000tG-UV for bison-patches@gnu.org; Tue, 24 May 2005 22:29:55 -0400 Received: from vZi@localhost by 1RI3.int (8.11.6/8.11.6); Tue, 24 May 2005 23:53:29 -0400 Message-ID: From: "Randi Hagen" To: bison-patches@gnu.org MIME-Version: 1.0 X-MimeOLE: Produced By Microsoft MimeOLE V4.71.2730.2 X-Sender: YvonneParham@absolutelyeverything.co.uk Content-Type: multipart/mixed; boundary="--yGmG2WQGLq9bPfd" Cc: bj@gnu.org Subject: Windows XP Pro $49.95, Office 2003 $69.95 Adobe, Windows X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Randi Hagen List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Wed, 25 May 2005 02:49:48 -0000 X-Original-Date: Tue, 24 May 2005 21:50:29 -0600 X-List-Received-Date: Wed, 25 May 2005 02:49:48 -0000 t4P ----yGmG2WQGLq9bPfd Content-Type: text/html; Content-Transfer-Encoding: quoted-printable h
    Opt-in Email Special Offer &n= bsp;   unsubscribe me
    SEARCH

    <= tr vAlign=3Dtop bgColor=3D#333399>

    TOP 10 NEW TITLES

    <= /td>
    5

     = ON SALE NOW!

     1 O= ffice Pro 2003
     2 Window= s XP Pro
     3 Adobe Cre= ative Suite Premium
     4 Norton Antivirus 2005
      Flash MX 2004
     6 Corel Draw 12
     7 Adobe = Acrobat 7.0
     8 Window= s 2003 Server
     9 Alias = Maya 6 Wavefrt
     10 Adobe = Premiere
      See more= by this manufacturer
     <= /td>  Microsoft<= /td>
       Apple Software
      Customers also bought
       <= font face=3Dverdana,arial,helvetica size=3D1> these other items...
    <= /td>



    Microsoft Offi= ce Professional Edition *2003*
    Microsoft
    Choose= :
    &= nbsp;
    =
    List Price:$899.00
    Price:$69.99<= /b>
    You Save:$830.01 (92= %)



    Availability:= Available for INSTANT download!
    Coupon Code: ISe229
    Med= ia: CD-ROM / Download

    System requirements  |  Accessories  |  Other Versions

    Features:

    • Analyze= and manage business information using Access databases
    • Exchange data with other systems using enhance= d XML technology
    • Control inf= ormation sharing rules with enhanced IRM technology
    • Easy-to-use wizards to create e-mail newsletters a= nd printed marketing materials
    • More than 20 preformatted business reports
    Sales Rank: #1
    Shipping: Int= ernational/US or via instant download
    Date Coupon Expires: June= 30th, 2005
    Average Customer Review: = 3D"5 Based on 1,768 reviews. Write a= review.

    Microsoft Windows XP Professional or = Longhorn Edition
    Microsoft =
    Choose:
    <= /td> <= /a>

    List Price:$279.00
    Price:$49.99
    You Save:<= /td>$229.01 (= 85%)



    Availability:= Available for INSTANT download!
    Coupon Code: ISe229
    Med= ia: CD-ROM / Download

    System requirements  |  Accessories  |  Other Versions

    Features:

    • Desi= gned for businesses of all sizes
    • Manage digital pictures, music, video, DVDs, and more
    • More security with the ability to encrypt f= iles and folders
    • Built-in vo= ice, video, and instant messaging support
    • <= font size=3D1>Integration with Windows servers and management solutions

    Sales Rank: #2
    Shipping: International/US or via instant download
    Date Co= upon Expires: June 30th, 2005
    Average= Customer Review: 3D"5 Based on 868 reviews. Write a review.


    Adobe Photoshop CS2 V 9= 0
    Adobe=
    Choose:=
     

    List Price:<= /td> $599.00
    Price:$69.99
    You Save:$529.01 (90%)



    = Availability: Available for INSTANT download!
    Coupon Code: ISe229
    Media: CD-ROM / Download

    System requirements  |&nb= sp; Accessories  |  Other Versions

    Features:

    • Customized workspace; save personalized workspace and tool se= ttings; create customized shortcuts
    • Unparalleled efficiency--automate production tasks with built-in = or customized scripts
    • Improv= ed file management, new design possibilities, and a more intuitive way to = create for the Web
    • Support f= or 16-bit images, digital camera raw data, and non-square pixels
    • Create or modify photos using paintin= g, drawing, and retouching tools

    Sales Rank: #3
    Shipping: International= /US or via instant download
    Date Coupon Expires: June 30th, 200= 5
    Average Customer Review: 3D"5 B= ased on 498 reviews. Write a review.=

    ----yGmG2WQGLq9bPfd-- From MAILER-DAEMON Tue Jul 12 16:35:41 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRTg-0005RU-7X for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:35:40 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Db255-00053J-ES for bison-patches@gnu.org; Wed, 25 May 2005 16:02:20 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Db24z-00050e-1X for bison-patches@gnu.org; Wed, 25 May 2005 16:02:16 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Db24x-0004xY-8V; Wed, 25 May 2005 16:02:11 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Db1vB-0007bG-Fh; Wed, 25 May 2005 15:52:05 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4PJpIL13613; Wed, 25 May 2005 12:51:18 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1Db1uQ-0001Rc-00; Wed, 25 May 2005 12:51:18 -0700 To: Bruno Haible References: <200505251203.48263.bruno@clisp.org> From: Paul Eggert In-Reply-To: <200505251203.48263.bruno@clisp.org> (Bruno Haible's message of "Wed, 25 May 2005 12:03:47 +0200") Message-ID: <87k6ln9j9l.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Paul Eggert Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison-2.0a feedback X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Wed, 25 May 2005 20:02:21 -0000 X-Original-Date: Wed, 25 May 2005 12:51:18 -0700 X-List-Received-Date: Wed, 25 May 2005 20:02:21 -0000 Bruno Haible writes: > Some test results of bison-2.0a. Thanks for reporting these. > /boot/home/gnubuild/bison-2.0a/src/scan-gram.l:134: warning: `braces_level' might be used uninitialized in this function To pacify GCC for incorrect warnings about uninitialized variables, you can compile with -Dlint. This is the convention used by coreutils. Hmm, it's a bit awkward though, since it means people have to remember to use -Dlint. > subpipe.c:103: warning: variable `from_in_fd' might be clobbered by `longjmp' or `vfork' I take it that it's OK to put information into an array rather than a variable that might be put into a register? The patch below does that. I hope it fixes things for FreeBSD 4.0 i386 with gcc-2.95.3. > 2005-05-24 Bruno Haible > > * tests/synclines.at (AT_SYNCLINES_COMPILE): Add support for the > error message syntax used by gcc-4.0. Thanks for doing that. I assume "Fehler" should be "error" in an English locale. I installed this patch to attempt to fix the glitches you reported (other than the -Dlint one). 2005-05-25 Paul Eggert Fix BeOS, FreeBSD, MacOS porting problems reported by Bruno Haible. * lib/bitset.c (bitset_print): Don't assume size_t can be printed with %d format. * lib/ebitset.c (min, max): Undef before defining. * lib/vbitset.c (min, max): Likewise. * lib/subpipe.c (create_subpipe): Save local variables in case vfork clobbers them. 2005-05-24 Bruno Haible * tests/synclines.at (AT_SYNCLINES_COMPILE): Add support for the error message syntax used by gcc-4.0. Index: lib/bitset.c =================================================================== RCS file: /cvsroot/bison/bison/lib/bitset.c,v retrieving revision 1.12 diff -p -u -b -w -r1.12 bitset.c --- lib/bitset.c 14 May 2005 06:49:47 -0000 1.12 +++ lib/bitset.c 25 May 2005 19:43:32 -0000 @@ -1,5 +1,5 @@ /* General bitsets. - Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz). This program is free software; you can redistribute it and/or modify @@ -307,7 +307,7 @@ bitset_print (FILE *file, bitset bset, b pos = 0; } - fprintf (file, "%d ", i); + fprintf (file, "%lu ", (unsigned long int) i); pos += 1 + (i >= 10) + (i >= 100); }; Index: lib/ebitset.c =================================================================== RCS file: /cvsroot/bison/bison/lib/ebitset.c,v retrieving revision 1.15 diff -p -u -b -w -r1.15 ebitset.c --- lib/ebitset.c 14 May 2005 06:49:47 -0000 1.15 +++ lib/ebitset.c 25 May 2005 19:43:32 -0000 @@ -1,5 +1,5 @@ /* Functions to support expandable bitsets. - Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz). This program is free software; you can redistribute it and/or modify @@ -115,11 +115,11 @@ static ebitset_elt *ebitset_free_list; / ((BSET)->b.cindex = (EINDEX) * EBITSET_ELT_WORDS, \ (BSET)->b.cdata = EBITSET_WORDS (EBITSET_ELTS (BSET) [EINDEX])) - +#undef min +#undef max #define min(a, b) ((a) > (b) ? (b) : (a)) #define max(a, b) ((a) > (b) ? (a) : (b)) - static bitset_bindex ebitset_resize (bitset src, bitset_bindex n_bits) { Index: lib/subpipe.c =================================================================== RCS file: /cvsroot/bison/bison/lib/subpipe.c,v retrieving revision 1.4 diff -p -u -b -w -r1.4 subpipe.c --- lib/subpipe.c 22 May 2005 08:04:06 -0000 1.4 +++ lib/subpipe.c 25 May 2005 19:43:32 -0000 @@ -114,6 +114,13 @@ create_subpipe (char const * const *argv || (from_out_fd = fd_safer (pipe_fd[1])) < 0) error (EXIT_FAILURE, errno, "pipe"); + /* Save the local variables in the parent now, in case vfork + clobbers them. */ + fd[0] = to_out_fd; + fd[1] = from_in_fd; + pipe_fd[0] = to_in_fd; + pipe_fd[1] = from_out_fd; + pid = vfork (); if (pid < 0) error (EXIT_FAILURE, errno, "fork"); @@ -137,10 +144,8 @@ create_subpipe (char const * const *argv } /* Parent. */ - close (to_in_fd); - close (from_out_fd); - fd[0] = to_out_fd; - fd[1] = from_in_fd; + close (pipe_fd[0]); + close (pipe_fd[1]); return pid; } Index: lib/vbitset.c =================================================================== RCS file: /cvsroot/bison/bison/lib/vbitset.c,v retrieving revision 1.5 diff -p -u -b -w -r1.5 vbitset.c --- lib/vbitset.c 14 May 2005 06:49:47 -0000 1.5 +++ lib/vbitset.c 25 May 2005 19:43:32 -0000 @@ -1,5 +1,5 @@ /* Variable array bitsets. - Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz). This program is free software; you can redistribute it and/or modify @@ -48,7 +48,8 @@ static bitset_bindex vbitset_list_revers #define VBITSET_SIZE(X) ((X)->b.csize) #define VBITSET_ASIZE(X) ((X)->v.size) - +#undef min +#undef max #define min(a, b) ((a) > (b) ? (b) : (a)) #define max(a, b) ((a) > (b) ? (a) : (b)) Index: tests/synclines.at =================================================================== RCS file: /cvsroot/bison/bison/tests/synclines.at,v retrieving revision 1.11 diff -p -u -b -w -r1.11 synclines.at --- tests/synclines.at 14 May 2005 06:49:48 -0000 1.11 +++ tests/synclines.at 25 May 2005 19:43:32 -0000 @@ -1,5 +1,5 @@ # Executing Actions. -*- Autotest -*- -# Copyright (C) 2002, 2004 Free Software Foundation, Inc. +# Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -29,11 +29,13 @@ m4_define([AT_SYNCLINES_COMPILE], [AT_CHECK([$CC $CFLAGS $CPPFLAGS -c $1], [ignore], [], [stderr]) # In case GCC displays column information, strip it down. # -# input.y:4:2: #error "4" or input.y:4.2: #error "4" +# input.y:4:2: #error "4" or +# input.y:4.2: #error "4" or +# input.y:4:2: error: #error "4" # => # input.y:4: #error "4" # -AT_CHECK([[sed 's/^\([^:]*:[^:.]*\)[.:][^:]*:\(.*\)$/\1:\2/' stderr]], 0, [stdout]) +AT_CHECK([[sed -e 's/^\([^:]*:[^:.]*\)[.:][^:]*:\(.*\)$/\1:\2/' -e 's/^\([^:]*:[^:]*:\)[^@%:@]*\( @%:@error\)/\1\2/' stderr]], 0, [stdout]) ]) # AT_TEST_SYNCLINE(TITLE, INPUT, ERROR-MSG) From MAILER-DAEMON Tue Jul 12 16:35:41 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRTh-0005Ru-4Z for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:35:41 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Db2JL-0002FI-Kl for bison-patches@gnu.org; Wed, 25 May 2005 16:17:05 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Db2JF-0002CQ-4D for bison-patches@gnu.org; Wed, 25 May 2005 16:16:57 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Db2JE-0002C3-VM; Wed, 25 May 2005 16:16:57 -0400 Received: from [81.80.162.195] (helo=ftp.ilog.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Db2HB-00032q-Op; Wed, 25 May 2005 16:14:50 -0400 Received: from laposte.ilog.fr (cerbere-qfe0 [81.80.162.193]) by ftp.ilog.fr (8.13.4/8.13.3) with ESMTP id j4PKEGD7019095; Wed, 25 May 2005 22:14:16 +0200 (MET DST) Received: from honolulu.ilog.fr ([172.16.15.121]) by laposte.ilog.fr (8.13.1/8.13.1) with ESMTP id j4PKEBDo015225; Wed, 25 May 2005 22:14:11 +0200 (MET DST) Received: from localhost (localhost [127.0.0.1]) by honolulu.ilog.fr (Postfix) with ESMTP id 97E233B3A1; Wed, 25 May 2005 20:13:50 +0000 (UTC) From: Bruno Haible To: Paul Eggert User-Agent: KMail/1.5 References: <200505251203.48263.bruno@clisp.org> <87k6ln9j9l.fsf@penguin.cs.ucla.edu> In-Reply-To: <87k6ln9j9l.fsf@penguin.cs.ucla.edu> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200505252213.49219.bruno@clisp.org> Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison-2.0a feedback X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Wed, 25 May 2005 20:17:07 -0000 X-Original-Date: Wed, 25 May 2005 22:13:49 +0200 X-List-Received-Date: Wed, 25 May 2005 20:17:07 -0000 Paul Eggert wrote: > > 2005-05-24 Bruno Haible > > > > * tests/synclines.at (AT_SYNCLINES_COMPILE): Add support for the > > error message syntax used by gcc-4.0. > > Thanks for doing that. I assume "Fehler" should be "error" in an > English locale. Yes, actually I got error messages like input.y:4:2: error: #error "4" but I was anticipating what it looks like when this error message will be localized. The comment was meant to explain why the second sed expression removes anything between ":" and "#error" and not just sed -e 's/: error: #error/: #error/'. Bruno From MAILER-DAEMON Tue Jul 12 16:36:36 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRUa-0005zD-JV for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:36:36 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dbboe-0007vl-4R for bison-patches@gnu.org; Fri, 27 May 2005 06:11:44 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dbboc-0007uW-Bh for bison-patches@gnu.org; Fri, 27 May 2005 06:11:42 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dbbob-0007tR-3o for bison-patches@gnu.org; Fri, 27 May 2005 06:11:41 -0400 Received: from [203.227.53.80] (helo=jecsi.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1Dbbka-0001Ck-GH for bison-patches@gnu.org; Fri, 27 May 2005 06:07:33 -0400 From: "Boutros Langley" To: "Nadab Hauser" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0036_01C562A3.D6088100" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: Re: 25 mg did the trick X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Fri, 27 May 2005 10:11:46 -0000 X-Original-Date: Fri, 27 May 2005 05:07:06 -0500 X-List-Received-Date: Fri, 27 May 2005 10:11:46 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0036_01C562A3.D6088100 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, anchor well within the Spaniards' view, but just out of range ofit. He = sneered and snorted at the notion of Blood's word being goodYou are = not afraid to die, Don Diego?You speak excellent Spanish.Blood = departed to his cabin.this gun will fire the answer. I make myself = clear, I hope?once to have been white - looked like a horde of = savages, theThe Colonel looked more closely. Gad's my life! he = crowed on aColonel Bishop had acquired. Men who understood the sea = werecracked on the word. What the devil...? Apple-blossoms! Hesail = for the Antilles.the great gates into the courtyard. Half-a-dozen = soldiers loungedthirds of them were armed with muskets, some of which = they had foundBishop, and pointing up the line with a silver-hilted = riding-whipBridgewater in their worship of the handsome = Monmouth.costly apparel had nowise suffered by the adventure through = which ------=_NextPart_000_0036_01C562A3.D6088100 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
    Hello, do yThe = megalomania of Louis XIV had set Europe in a blaze of war.ou = want to spend Iess on your drrugs?
     
    The PHARMACdispose of those defences. He proposed that the French ships = shouldY-BY-MAlL SHOP  offers you&nbsLook, said Miss Bishop, pointing; and to his = infinite amazementp;a great deaI
     
    he nodded, = muttering, Yes, and again, Yes. He looked up, toVlAGRA I don't remember it, said his lordship, with = sincerity.VALlUM ClALlrival as = that, a man of parts, moreover, as he was bound to admit?S = LEVlTRbe slain at sight, they used him = with the civility which his ownA and many other.
     
    With eachIt came to = Mr. Blood, as he trudged forward under the laden purchase you = get:
  • Great Prway he hitched his sword-belt = round, so that the wrought hilt ofices
  • ToOn the contrary. The others are all = worthy rebels. I am not.p quaIity
  • Home pimento, and aromatic cedars. He = lost himself in unprofitabledeIivery
  • Total confidenThat is so, said Nuttall, = who conceived that for him this wastiaIity
  •  
    Try us and you will not be disforce.appointed!
    ------=_NextPart_000_0036_01C562A3.D6088100-- From MAILER-DAEMON Tue Jul 12 16:36:42 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRUg-00060o-NQ for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:36:42 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dbd68-0003mD-1d for bison-patches@gnu.org; Fri, 27 May 2005 07:33:52 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dbd62-0003i7-8C for bison-patches@gnu.org; Fri, 27 May 2005 07:33:47 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dbd61-0003fS-4J; Fri, 27 May 2005 07:33:45 -0400 Received: from [81.80.162.195] (helo=ftp.ilog.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DbczR-0005Qx-He; Fri, 27 May 2005 07:26:57 -0400 Received: from laposte.ilog.fr (cerbere-qfe0 [81.80.162.193]) by ftp.ilog.fr (8.13.4/8.13.3) with ESMTP id j4RBQ0J6019484; Fri, 27 May 2005 13:26:00 +0200 (MET DST) Received: from honolulu.ilog.fr ([172.16.15.122]) by laposte.ilog.fr (8.13.1/8.13.1) with ESMTP id j4RBPtUg017313; Fri, 27 May 2005 13:25:55 +0200 (MET DST) Received: from localhost (localhost [127.0.0.1]) by honolulu.ilog.fr (Postfix) with ESMTP id DC31E3B3A3; Fri, 27 May 2005 11:25:29 +0000 (UTC) From: Bruno Haible To: Paul Eggert User-Agent: KMail/1.5 References: <200505251203.48263.bruno@clisp.org> <87k6ln9j9l.fsf@penguin.cs.ucla.edu> In-Reply-To: <87k6ln9j9l.fsf@penguin.cs.ucla.edu> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200505271325.28452.bruno@clisp.org> Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison-2.0a feedback X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Fri, 27 May 2005 11:33:54 -0000 X-Original-Date: Fri, 27 May 2005 13:25:28 +0200 X-List-Received-Date: Fri, 27 May 2005 11:33:54 -0000 Paul Eggert wrote: > > subpipe.c:103: warning: variable `from_in_fd' might be clobbered by `longjmp' or `vfork' > > I take it that it's OK to put information into an array rather than a > variable that might be put into a register? Yes, it looks like even gcc-4.0 cannot optimize these two arrays into registers. > The patch below does that. > I hope it fixes things for FreeBSD 4.0 i386 with gcc-2.95.3. It doesn't fix the warnings, because gcc-2.95.3 doesn't have enough dataflow capabilities to distinguish the (pid > 0) and (pid == 0) cases. But I'm convinced that it fixes the problem gcc warns about. Bruno From MAILER-DAEMON Tue Jul 12 16:36:43 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRUh-00061H-3o for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:36:43 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dbh7f-0005nM-7x for bison-patches@gnu.org; Fri, 27 May 2005 11:51:43 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dbh7c-0005m9-DQ for bison-patches@gnu.org; Fri, 27 May 2005 11:51:40 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dbh7c-0005kk-7L; Fri, 27 May 2005 11:51:40 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1Dbh0u-0000Wz-Bv; Fri, 27 May 2005 11:44:44 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.44) id 1Dbh00-0008Fu-7i; Fri, 27 May 2005 17:43:48 +0200 To: Paul Eggert References: <200505251203.48263.bruno@clisp.org> <87k6ln9j9l.fsf@penguin.cs.ucla.edu> From: Akim Demaille In-Reply-To: <87k6ln9j9l.fsf@penguin.cs.ucla.edu> (Paul Eggert's message of "Wed, 25 May 2005 12:51:18 -0700") Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Bruno Haible , bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison-2.0a feedback X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Fri, 27 May 2005 15:51:44 -0000 X-Original-Date: Fri, 27 May 2005 17:43:47 +0200 X-List-Received-Date: Fri, 27 May 2005 15:51:44 -0000 >>> "Paul" == Paul Eggert writes: >> subpipe.c:103: warning: variable `from_in_fd' might be clobbered by `longjmp' or `vfork' > I take it that it's OK to put information into an array rather than a > variable that might be put into a register? Wouldn't (void) &from_in_fd; do the trick? Taking the address of a variable should ensure it is not in a register. From MAILER-DAEMON Tue Jul 12 16:36:43 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRUg-00060z-Tu for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:36:43 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dbd6E-0003pb-Iz for bison-patches@gnu.org; Fri, 27 May 2005 07:33:58 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dbd5z-0003ga-PJ for bison-patches@gnu.org; Fri, 27 May 2005 07:33:56 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dbd5z-0003fS-FM; Fri, 27 May 2005 07:33:43 -0400 Received: from [81.80.162.195] (helo=ftp.ilog.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dbd2x-00062C-OO; Fri, 27 May 2005 07:30:36 -0400 Received: from laposte.ilog.fr (cerbere-qfe0 [81.80.162.193]) by ftp.ilog.fr (8.13.4/8.13.3) with ESMTP id j4RBTcGo019578; Fri, 27 May 2005 13:29:38 +0200 (MET DST) Received: from honolulu.ilog.fr ([172.16.15.122]) by laposte.ilog.fr (8.13.1/8.13.1) with ESMTP id j4RBTUV2017511; Fri, 27 May 2005 13:29:30 +0200 (MET DST) Received: from localhost (localhost [127.0.0.1]) by honolulu.ilog.fr (Postfix) with ESMTP id EE9233B3A3; Fri, 27 May 2005 11:29:04 +0000 (UTC) From: Bruno Haible To: Paul Eggert , bug-bison@gnu.org, bison-patches@gnu.org User-Agent: KMail/1.5.4 MIME-Version: 1.0 Content-Disposition: inline Content-Type: Multipart/Mixed; boundary="Boundary-00=_/RwlCrEWe/WOh6H" Message-Id: <200505271329.03827.bruno@clisp.org> Cc: bug-gnu-gettext@gnu.org Subject: bison and i18n X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Fri, 27 May 2005 11:34:00 -0000 X-Original-Date: Fri, 27 May 2005 13:29:03 +0200 X-List-Received-Date: Fri, 27 May 2005 11:34:00 -0000 --Boundary-00=_/RwlCrEWe/WOh6H Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline Content-Transfer-Encoding: 7bit Hi, bison-2.0a contains this NEWS entry: * Bison-generated C parsers use the _ macro to translate strings from English to the user's language, e.g., _("syntax error"). By default, _ is defined to be a no-op macro so the strings are not translated. The way this is implemented, it has several flaws: 1) It puts repeated burden on the translators. Namely, the translators will have to translate the bison specific messages for each package that uses a bison generated parser, over and over again. This is very bad. This wouldn't be a problem if all translators for a given language would share a common translation memory, but that's far from reality. In reality, 1. Translators from the TP, GNOME, KDE and smaller translation projects don't even know about each other; 2. Many translation teams don't have a common translation memory; 3. The translation of different packages that use bison will usually be done by different people. 2) The maintainer needs to modify his .y file in a way specific to bison, namely to define the _() macro so that it uses gettext() or dgettext(). We had this situation already twice in the past: - The bison skeleton uses NULL, which made it necessary, for the sake of SunOS 4, to add #include to the .y file. (Remember that on SunOS 4 doesn't define NULL.) - The bison skeleton uses alloca(), and on AIX 3 this requires a #pragma alloca to be added first. IMO, bison should attempt harder to not require modifications of the .y file. 3) The gettext documentation recommends that generated files don't be added to the POTFILES.in file. If you tell people to add a bison generated .c file to POTFILES.in, you are making a bad precedent. The reasons for preferring the source file over the generated file in POTFILES.in are - When the translator needs some context, the translator tools should better show them the real source rather than a generated file. - Comments for translators might be dropped from the generated file (depending on the transformation process). Instead, here is a proposed solution that 1) doesn't put extra burden on the translators, 2) doesn't require modification of the .y file, 3) doesn't violate best practices regarding POTFILES.in, 4) minimizes the changes that maintainers need to do to their configure.ac + Makefile.am infrastructure, 5) allows different programs to be 100% localized even if they use different versions of bison and even if they are installed with different --prefixes. The idea is that - bison provides a set of .po / .mo files for the use of the programs at runtime, - bison provides an autoconf macro and automake support that copies these .mo files from an installed bison into the package that uses bison, and during "make install" into the LOCALEDIR used by the program. (This also applies to some gnulib modules; expect to see some gnulib modules to be accompanied with po/ directories in the future.) Find attached a patch that implements this. I've tested it with GNU awk. So that in a German locale $ gawk '+&52#' gawk: +&52# gawk: ^ Syntaxfehler The patch contains a German translation catalog, for testing purposes. The patch contains also updated documentation. I've removed the paragraph from the "Bison Parser" section, which is an introductory section, and preferred to explain these things in a later section in chapter "Parser C-Language Interface". I hope you can apply this patch before bison-2.1, because putting repeated burden on the translators is really a thing one should not do. Better tell the maintainer to perform an optional 8-step procedure once than to let the translators re-translate the same things over and over again. Bruno --Boundary-00=_/RwlCrEWe/WOh6H Content-Type: text/plain; charset="us-ascii"; name="bison-diffs" Content-Disposition: attachment; filename="bison-diffs" Content-Transfer-Encoding: quoted-printable X-MIME-Autoconverted: from 8bit to quoted-printable by ftp.ilog.fr id j4RBTcGo019578 2005-05-26 Bruno Haible * data/yacc.c: Include when NLS is enabled. (BISON_I18N): Renamed from _. Use dcgettext when NLS is enabled. * po/POTFILES.in: Remove autogenerated file src/parse-gram.c. * skeleton-po: New directory. * skeleton-po/Makefile.in.in: New file, copied from po/. * skeleton-po/Rules-quot: Likewise. * skeleton-po/quot.sed: Likewise. * skeleton-po/boldquot.sed: Likewise. * skeleton-po/en@quot.header: Likewise. * skeleton-po/en@boldquot.header: Likewise. * skeleton-po/insert-header.sin: Likewise. * skeleton-po/remove-potcdate.sin: Likewise. * skeleton-po/Makevars: New file. * skeleton-po/POTFILES.in: New file. * skeleton-po/LINGUAS: New file. * skeleton-po/de.po: New file. * data/bison-po: New directory. * data/bison-po/Makefile.am: New file. * data/Makefile.am (bisonpodir, bisonpo_DATA): New variables. * m4/bison.m4: New file. * Makefile.am (SUBDIRS): Add skeleton-po. (aclocaldir, aclocal_DATA): New variables. * configure.ac: Add AC_CONFIG_FILES of skeleton-po/Makefile.in. Define aclocaldir. * src/getargs.c (usage): Document --print-localedir option. (PRINT_LOCALEDIR_OPTION): New enum item. (long_options): Add --print-localedir option. (getargs): Handle --print-localedir option. * doc/bison.texinfo (Bison Parser): Remove paragraph about _(). (Internationalization): New section. diff -r -c3 --unidirectional-new-file bison-2.0a.orig/data/yacc.c bison-2= .0a/data/yacc.c *** bison-2.0a.orig/data/yacc.c 2005-05-21 19:12:32.000000000 +0200 --- bison-2.0a/data/yacc.c 2005-05-26 13:23:27.000000000 +0200 *************** *** 261,266 **** --- 261,271 ---- #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ =20 =20 + #if ENABLE_NLS && defined PACKAGE && (defined (__STDC__) || defined (__= cplusplus)) + # include + #endif +=20 +=20 #if (! defined (yyoverflow) \ && (! defined (__cplusplus) \ || (]b4_location_if([[defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIV= IAL \ *************** *** 388,395 **** #endif =20 /* INFRINGES ON USER NAME SPACE */ ! #ifndef _ ! # define _(msgid) msgid #endif =20 # ifdef YYPRINT --- 393,404 ---- #endif =20 /* INFRINGES ON USER NAME SPACE */ ! #ifndef BISON_I18N ! # if ENABLE_NLS && defined PACKAGE && (defined (__STDC__) || defined (_= _cplusplus)) ! # define BISON_I18N(msgid) dgettext (PACKAGE "-bison", msgid) ! # else ! # define BISON_I18N(msgid) msgid ! # endif #endif =20 # ifdef YYPRINT *************** *** 509,515 **** } \ else \ { \ ! yyerror (]b4_yyerror_args[_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) --- 518,524 ---- } \ else \ { \ ! yyerror (]b4_yyerror_args[BISON_I18N("syntax error: cannot back u= p")); \ YYERROR; \ } \ while (0) *************** *** 603,609 **** [[short int *bottom], [bottom]], [[short int *top], [top]])[ { ! YYFPRINTF (stderr, _("Stack now")); for (/* Nothing. */; bottom <=3D top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); --- 612,618 ---- [[short int *bottom], [bottom]], [[short int *top], [top]])[ { ! YYFPRINTF (stderr, BISON_I18N("Stack now")); for (/* Nothing. */; bottom <=3D top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); *************** *** 625,631 **** { int yyi; unsigned int yylno =3D yyrline[yyrule]; ! YYFPRINTF (stderr, _("Reducing stack by rule %d (line %u), "), yyrule - 1, yylno); /* Print the symbols being reduced, and their result. */ for (yyi =3D yyprhs[yyrule]; 0 <=3D yyrhs[yyi]; yyi++) --- 634,640 ---- { int yyi; unsigned int yylno =3D yyrline[yyrule]; ! YYFPRINTF (stderr, BISON_I18N("Reducing stack by rule %d (line %u), "= ), yyrule - 1, yylno); /* Print the symbols being reduced, and their result. */ for (yyi =3D yyprhs[yyrule]; 0 <=3D yyrhs[yyi]; yyi++) *************** *** 894,900 **** data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ ! yyoverflow (_("parser stack overflow"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), ]b4_location_if([ &yyls1, yysize * sizeof (*yylsp),])[ --- 903,909 ---- data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ ! yyoverflow (BISON_I18N("parser stack overflow"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), ]b4_location_if([ &yyls1, yysize * sizeof (*yylsp),])[ *************** *** 934,947 **** yyvsp =3D yyvs + yysize - 1; ]b4_location_if([ yylsp =3D yyls + yysize - 1;])[ =20 ! YYDPRINTF ((stderr, _("Stack size increased to %lu\n"), (unsigned long int) yystacksize)); =20 if (yyss + yystacksize - 1 <=3D yyssp) YYABORT; } =20 ! YYDPRINTF ((stderr, _("Entering state %d\n"), yystate)); =20 goto yybackup; =20 --- 943,956 ---- yyvsp =3D yyvs + yysize - 1; ]b4_location_if([ yylsp =3D yyls + yysize - 1;])[ =20 ! YYDPRINTF ((stderr, BISON_I18N("Stack size increased to %lu\n"), (unsigned long int) yystacksize)); =20 if (yyss + yystacksize - 1 <=3D yyssp) YYABORT; } =20 ! YYDPRINTF ((stderr, BISON_I18N("Entering state %d\n"), yystate)); =20 goto yybackup; =20 *************** *** 965,983 **** /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. *= / if (yychar =3D=3D YYEMPTY) { ! YYDPRINTF ((stderr, _("Reading a token: "))); yychar =3D YYLEX; } =20 if (yychar <=3D YYEOF) { yychar =3D yytoken =3D YYEOF; ! YYDPRINTF ((stderr, _("Now at end of input.\n"))); } else { yytoken =3D YYTRANSLATE (yychar); ! YY_SYMBOL_PRINT (_("Next token is"), yytoken, &yylval, &yylloc); } =20 /* If the proper action on seeing token YYTOKEN is to reduce or to --- 974,992 ---- /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. *= / if (yychar =3D=3D YYEMPTY) { ! YYDPRINTF ((stderr, BISON_I18N("Reading a token: "))); yychar =3D YYLEX; } =20 if (yychar <=3D YYEOF) { yychar =3D yytoken =3D YYEOF; ! YYDPRINTF ((stderr, BISON_I18N("Now at end of input.\n"))); } else { yytoken =3D YYTRANSLATE (yychar); ! YY_SYMBOL_PRINT (BISON_I18N("Next token is"), yytoken, &yylval, &= yylloc); } =20 /* If the proper action on seeing token YYTOKEN is to reduce or to *************** *** 998,1004 **** YYACCEPT; =20 /* Shift the look-ahead token. */ ! YY_SYMBOL_PRINT (_("Shifting"), yytoken, &yylval, &yylloc); =20 /* Discard the token being shifted unless it is eof. */ if (yychar !=3D YYEOF) --- 1007,1013 ---- YYACCEPT; =20 /* Shift the look-ahead token. */ ! YY_SYMBOL_PRINT (BISON_I18N("Shifting"), yytoken, &yylval, &yylloc); =20 /* Discard the token being shifted unless it is eof. */ if (yychar !=3D YYEOF) *************** *** 1106,1116 **** #if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ ! _("syntax error, unexpected %s"); ! _("syntax error, unexpected %s, expecting %s"); ! _("syntax error, unexpected %s, expecting %s or %s"); ! _("syntax error, unexpected %s, expecting %s or %s or %s"); ! _("syntax error, unexpected %s, expecting %s or %s or %s or %s"); #endif char *yyfmt; char const *yyf; --- 1115,1125 ---- #if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ ! BISON_I18N("syntax error, unexpected %s"); ! BISON_I18N("syntax error, unexpected %s, expecting %s"); ! BISON_I18N("syntax error, unexpected %s, expecting %s or %s"); ! BISON_I18N("syntax error, unexpected %s, expecting %s or %s or %s"); ! BISON_I18N("syntax error, unexpected %s, expecting %s or %s or %s or= %s"); #endif char *yyfmt; char const *yyf; *************** *** 1153,1159 **** yyprefix =3D yyor; } =20 ! yyf =3D _(yyformat); yysize1 =3D yysize + strlen (yyf); yysize_overflow |=3D yysize1 < yysize; yysize =3D yysize1; --- 1162,1168 ---- yyprefix =3D yyor; } =20 ! yyf =3D BISON_I18N(yyformat); yysize1 =3D yysize + strlen (yyf); yysize_overflow |=3D yysize1 < yysize; yysize =3D yysize1; *************** *** 1184,1194 **** YYSTACK_FREE (yymsg); } else ! yyerror (]b4_yyerror_args[_("syntax error; also memory exhausted")= ); } else #endif /* YYERROR_VERBOSE */ ! yyerror (]b4_yyerror_args[_("syntax error")); } =20 ]b4_location_if([[ yyerror_range[0] =3D yylloc;]])[ --- 1193,1203 ---- YYSTACK_FREE (yymsg); } else ! yyerror (]b4_yyerror_args[BISON_I18N("syntax error; also memory ex= hausted")); } else #endif /* YYERROR_VERBOSE */ ! yyerror (]b4_yyerror_args[BISON_I18N("syntax error")); } =20 ]b4_location_if([[ yyerror_range[0] =3D yylloc;]])[ *************** *** 1207,1213 **** } else { ! yydestruct (_("Error: discarding"), yytoken, &yylval]b4_location_if(= [, &yylloc])[); yychar =3D YYEMPTY; } } --- 1216,1222 ---- } else { ! yydestruct (BISON_I18N("Error: discarding"), yytoken, &yylval]b4_loc= ation_if([, &yylloc])[); yychar =3D YYEMPTY; } } *************** *** 1261,1267 **** YYABORT; =20 ]b4_location_if([[ yyerror_range[0] =3D *yylsp;]])[ ! yydestruct (_("Error: popping"), yystos[yystate], yyvsp]b4_locati= on_if([, yylsp])[); YYPOPSTACK; yystate =3D *yyssp; YY_STACK_PRINT (yyss, yyssp); --- 1270,1276 ---- YYABORT; =20 ]b4_location_if([[ yyerror_range[0] =3D *yylsp;]])[ ! yydestruct (BISON_I18N("Error: popping"), yystos[yystate], yyvsp]= b4_location_if([, yylsp])[); YYPOPSTACK; yystate =3D *yyssp; YY_STACK_PRINT (yyss, yyssp); *************** *** 1279,1285 **** *++yylsp =3D yyloc;]])[ =20 /* Shift the error token. */ ! YY_SYMBOL_PRINT (_("Shifting"), yystos[yyn], yyvsp, yylsp); =20 yystate =3D yyn; goto yynewstate; --- 1288,1294 ---- *++yylsp =3D yyloc;]])[ =20 /* Shift the error token. */ ! YY_SYMBOL_PRINT (BISON_I18N("Shifting"), yystos[yyn], yyvsp, yylsp); =20 yystate =3D yyn; goto yynewstate; *************** *** 1304,1317 **** | yyoverflowlab -- parser overflow comes here. | `----------------------------------------------*/ yyoverflowlab: ! yyerror (]b4_yyerror_args[_("parser stack overflow")); yyresult =3D 2; /* Fall through. */ #endif =20 yyreturn: if (yychar !=3D YYEOF && yychar !=3D YYEMPTY) ! yydestruct (_("Error: discarding lookahead"), yytoken, &yylval]b4_location_if([, &yylloc])[); if (yyssp !=3D yyss) for (;;) --- 1313,1326 ---- | yyoverflowlab -- parser overflow comes here. | `----------------------------------------------*/ yyoverflowlab: ! yyerror (]b4_yyerror_args[BISON_I18N("parser stack overflow")); yyresult =3D 2; /* Fall through. */ #endif =20 yyreturn: if (yychar !=3D YYEOF && yychar !=3D YYEMPTY) ! yydestruct (BISON_I18N("Error: discarding lookahead"), yytoken, &yylval]b4_location_if([, &yylloc])[); if (yyssp !=3D yyss) for (;;) *************** *** 1320,1326 **** YYPOPSTACK; if (yyssp =3D=3D yyss) break; ! yydestruct (_("Error: popping"), yystos[*yyssp], yyvsp]b4_location_if([, yylsp])[); } #ifndef yyoverflow --- 1329,1335 ---- YYPOPSTACK; if (yyssp =3D=3D yyss) break; ! yydestruct (BISON_I18N("Error: popping"), yystos[*yyssp], yyvsp]b4_location_if([, yylsp])[); } #ifndef yyoverflow diff -r -c3 --unidirectional-new-file bison-2.0a.orig/po/POTFILES.in biso= n-2.0a/po/POTFILES.in *** bison-2.0a.orig/po/POTFILES.in 2005-04-14 01:55:19.000000000 +0200 --- bison-2.0a/po/POTFILES.in 2005-05-26 12:14:58.000000000 +0200 *************** *** 4,10 **** src/getargs.c src/gram.c src/main.c - src/parse-gram.c src/parse-gram.y src/print.c src/reader.c --- 4,9 ---- diff -r -c3 --unidirectional-new-file bison-2.0a.orig/skeleton-po/Makefil= e.in.in bison-2.0a/skeleton-po/Makefile.in.in *** bison-2.0a.orig/skeleton-po/Makefile.in.in 1970-01-01 01:00:00.000000= 000 +0100 --- bison-2.0a/skeleton-po/Makefile.in.in 2005-05-26 12:21:34.000000000 += 0200 *************** *** 0 **** --- 1,353 ---- + # Makefile for PO directory in any package using GNU gettext. + # Copyright (C) 1995-1997, 2000-2003 by Ulrich Drepper + # + # This file can be copied and used freely without restrictions. It can + # be used in projects which are not available under the GNU General Pub= lic + # License but which still want to provide support for the GNU gettext + # functionality. + # Please note that the actual code of GNU gettext is covered by the GNU + # General Public License and is *not* in the public domain. +=20 + PACKAGE =3D @PACKAGE@ + VERSION =3D @VERSION@ +=20 + SHELL =3D /bin/sh + @SET_MAKE@ +=20 + srcdir =3D @srcdir@ + top_srcdir =3D @top_srcdir@ + VPATH =3D @srcdir@ +=20 + prefix =3D @prefix@ + exec_prefix =3D @exec_prefix@ + datadir =3D @datadir@ + localedir =3D $(datadir)/locale + gettextsrcdir =3D $(datadir)/gettext/po +=20 + INSTALL =3D @INSTALL@ + INSTALL_DATA =3D @INSTALL_DATA@ + MKINSTALLDIRS =3D @MKINSTALLDIRS@ + mkinstalldirs =3D $(SHELL) $(MKINSTALLDIRS) +=20 + GMSGFMT =3D @GMSGFMT@ + MSGFMT =3D @MSGFMT@ + XGETTEXT =3D @XGETTEXT@ + MSGMERGE =3D msgmerge + MSGMERGE_UPDATE =3D @MSGMERGE@ --update + MSGINIT =3D msginit + MSGCONV =3D msgconv + MSGFILTER =3D msgfilter +=20 + POFILES =3D @POFILES@ + GMOFILES =3D @GMOFILES@ + UPDATEPOFILES =3D @UPDATEPOFILES@ + DUMMYPOFILES =3D @DUMMYPOFILES@ + DISTFILES.common =3D Makefile.in.in remove-potcdate.sin \ + $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.commo= n.extra3) + DISTFILES =3D $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot st= amp-po \ + $(POFILES) $(GMOFILES) \ + $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) +=20 + POTFILES =3D \ +=20 + CATALOGS =3D @CATALOGS@ +=20 + # Makevars gets inserted here. (Don't remove this line!) +=20 + .SUFFIXES: + .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update +=20 + .po.mo: + @echo "$(MSGFMT) -c -o $@ $<"; \ + $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ +=20 + .po.gmo: + @lang=3D`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" =3D . && cdcmd=3D"" || cdcmd=3D"cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${= lang}.gmo $${lang}.po"; \ + cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-= $${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo +=20 + .sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ +=20 +=20 + all: all-@USE_NLS@ +=20 + all-yes: stamp-po + all-no: +=20 + # stamp-po is a timestamp denoting the last time at which the CATALOGS = have + # been loosely updated. Its purpose is that when a developer or transla= tor + # checks out the package via CVS, and the $(DOMAIN).pot file is not in = CVS, + # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequ= ent + # invocations of "make" will do nothing. This timestamp would not be ne= cessary + # if updating the $(CATALOGS) would always touch them; however, the rul= e for + # $(POFILES) has been designed to not touch files that don't need to be + # changed. + stamp-po: $(srcdir)/$(DOMAIN).pot + test -z "$(CATALOGS)" || $(MAKE) $(CATALOGS) + @echo "touch stamp-po" + @echo timestamp > stamp-poT + @mv stamp-poT stamp-po +=20 + # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', + # otherwise packages like GCC can not be built if only parts of the sou= rce + # have been downloaded. +=20 + # This target rebuilds $(DOMAIN).pot; it is an expensive operation. + # Note that $(DOMAIN).pot is not touched if it doesn't need to be chang= ed. + $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate= .sed + $(XGETTEXT) --default-domain=3D$(DOMAIN) --directory=3D$(top_srcdir) \ + --add-comments=3DTRANSLATORS: $(XGETTEXT_OPTIONS) \ + --files-from=3D$(srcdir)/POTFILES.in \ + --copyright-holder=3D'$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address=3D'$(MSGID_BUGS_ADDRESS)' + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot; then \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1= po && \ + sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ + if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ + else \ + rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + else \ + mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + fi; \ + } +=20 + # This rule has no dependencies: we don't need to update $(DOMAIN).pot = at + # every "make" invocation, only create it when it is missing. + # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. + $(srcdir)/$(DOMAIN).pot: + $(MAKE) $(DOMAIN).pot-update +=20 + # This target rebuilds a PO file if $(DOMAIN).pot has changed. + # Note that a PO file is not touched if it doesn't need to be changed. + $(POFILES): $(srcdir)/$(DOMAIN).pot + @lang=3D`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ + test "$(srcdir)" =3D . && cdcmd=3D"" || cdcmd=3D"cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ + cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot +=20 +=20 + install: install-exec install-data + install-exec: + install-data: install-data-@USE_NLS@ + if test "$(PACKAGE)" =3D "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + for file in $(DISTFILES.common) Makevars.template; do \ + $(INSTALL_DATA) $(srcdir)/$$file \ + $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + for file in Makevars; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + install-data-no: all + install-data-yes: all + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs=3D'$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=3D`basename $$cat`; \ + lang=3D`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=3D$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + if test -r $$cat; then realcat=3D$$cat; else realcat=3D$(srcdir)/$$c= at; fi; \ + $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=3DC ls -l -d $$lc= 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=3D`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=3DC ls -l -= d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$= $lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc= /$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/= $$lc/$(DOMAIN).mo 2>/dev/null || \ + ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DEST= DIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ + cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(D= ESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang= /$$lc/$(DOMAIN).mo"; \ + fi; \ + done; \ + done +=20 + install-strip: install +=20 + installdirs: installdirs-exec installdirs-data + installdirs-exec: + installdirs-data: installdirs-data-@USE_NLS@ + if test "$(PACKAGE)" =3D "gettext-tools"; then \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ + else \ + : ; \ + fi + installdirs-data-no: + installdirs-data-yes: + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs=3D'$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=3D`basename $$cat`; \ + lang=3D`echo $$cat | sed -e 's/\.gmo$$//'`; \ + dir=3D$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ + if test -n "$$lc"; then \ + if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=3DC ls -l -d $$lc= 2>/dev/null) | grep ' -> ' >/dev/null; then \ + link=3D`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=3DC ls -l -= d $$lc | sed -e 's/^.* -> //'`; \ + mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$= $lang/$$lc.old; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ + for file in *; do \ + if test -f $$file; then \ + ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc= /$$file; \ + fi; \ + done); \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ + else \ + if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ + :; \ + else \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ + mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ + fi; \ + fi; \ + fi; \ + done; \ + done +=20 + # Define this as empty until I found a useful application. + installcheck: +=20 + uninstall: uninstall-exec uninstall-data + uninstall-exec: + uninstall-data: uninstall-data-@USE_NLS@ + if test "$(PACKAGE)" =3D "gettext-tools"; then \ + for file in $(DISTFILES.common) Makevars.template; do \ + rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + uninstall-data-no: + uninstall-data-yes: + catalogs=3D'$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=3D`basename $$cat`; \ + lang=3D`echo $$cat | sed -e 's/\.gmo$$//'`; \ + for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ + rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ + done; \ + done +=20 + check: all +=20 + info dvi ps pdf html tags TAGS ctags CTAGS ID: +=20 + mostlyclean: + rm -f remove-potcdate.sed + rm -f stamp-poT + rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -fr *.o +=20 + clean: mostlyclean +=20 + distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo +=20 + maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f stamp-po $(GMOFILES) +=20 + distdir =3D $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 + # This is a separate target because 'update-po' must be executed before. + dist2: $(DISTFILES) + dists=3D"$(DISTFILES)"; \ + if test "$(PACKAGE)" =3D "gettext-tools"; then \ + dists=3D"$$dists Makevars.template"; \ + fi; \ + if test -f $(srcdir)/ChangeLog; then \ + dists=3D"$$dists ChangeLog"; \ + fi; \ + for i in 0 1 2 3 4 5 6 7 8 9; do \ + if test -f $(srcdir)/ChangeLog.$$i; then \ + dists=3D"$$dists ChangeLog.$$i"; \ + fi; \ + done; \ + if test -f $(srcdir)/LINGUAS; then dists=3D"$$dists LINGUAS"; fi; \ + for file in $$dists; do \ + if test -f $$file; then \ + cp -p $$file $(distdir); \ + else \ + cp -p $(srcdir)/$$file $(distdir); \ + fi; \ + done +=20 + update-po: Makefile + $(MAKE) $(DOMAIN).pot-update + test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) + $(MAKE) update-gmo +=20 + # General rule for updating PO files. +=20 + .nop.po-update: + @lang=3D`echo $@ | sed -e 's/\.po-update$$//'`; \ + if test "$(PACKAGE)" =3D "gettext-tools"; then PATH=3D`pwd`/../src:$$P= ATH; fi; \ + tmpdir=3D`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" =3D . && cdcmd=3D"" || cdcmd=3D"cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; = \ + cd $(srcdir); \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then= \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang= .new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "msgmerge for $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi +=20 + $(DUMMYPOFILES): +=20 + update-gmo: Makefile $(GMOFILES) + @: +=20 + Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@ + cd $(top_builddir) \ + && CONFIG_FILES=3D$(subdir)/$@.in CONFIG_HEADERS=3D \ + $(SHELL) ./config.status +=20 + force: +=20 + # Tell versions [3.59,3.63) of GNU make not to export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: diff -r -c3 --unidirectional-new-file bison-2.0a.orig/skeleton-po/Rules-q= uot bison-2.0a/skeleton-po/Rules-quot *** bison-2.0a.orig/skeleton-po/Rules-quot 1970-01-01 01:00:00.000000000 = +0100 --- bison-2.0a/skeleton-po/Rules-quot 2004-09-27 22:43:21.000000000 +0200 *************** *** 0 **** --- 1,42 ---- + # Special Makefile rules for English message catalogs with quotation ma= rks. +=20 + DISTFILES.common.extra1 =3D quot.sed boldquot.sed en@quot.header en@bol= dquot.header insert-header.sin Rules-quot +=20 + .SUFFIXES: .insert-header .po-update-en +=20 + en@quot.po-update: en@quot.po-update-en + en@boldquot.po-update: en@boldquot.po-update-en +=20 + .insert-header.po-update-en: + @lang=3D`echo $@ | sed -e 's/\.po-update-en$$//'`; \ + if test "$(PACKAGE)" =3D "gettext"; then PATH=3D`pwd`/../src:$$PATH; G= ETTEXTLIBDIR=3D`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ + tmpdir=3D`pwd`; \ + echo "$$lang:"; \ + ll=3D`echo $$lang | sed -e 's/@.*//'`; \ + LC_ALL=3DC; export LC_ALL; \ + cd $(srcdir); \ + if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/nul= l | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFIL= TER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$= $lang.new.po; then \ + if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ + rm -f $$tmpdir/$$lang.new.po; \ + else \ + if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + :; \ + else \ + echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.= new.po to $$lang.po" 1>&2; \ + exit 1; \ + fi; \ + fi; \ + else \ + echo "creation of $$lang.po failed!" 1>&2; \ + rm -f $$tmpdir/$$lang.new.po; \ + fi +=20 + en@quot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.= sin > en@quot.insert-header +=20 + en@boldquot.insert-header: insert-header.sin + sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-hea= der.sin > en@boldquot.insert-header +=20 + mostlyclean: mostlyclean-quot + mostlyclean-quot: + rm -f *.insert-header diff -r -c3 --unidirectional-new-file bison-2.0a.orig/skeleton-po/en@quot= .header bison-2.0a/skeleton-po/en@quot.header *** bison-2.0a.orig/skeleton-po/en@quot.header 1970-01-01 01:00:00.000000= 000 +0100 --- bison-2.0a/skeleton-po/en@quot.header 2004-09-27 22:43:22.000000000 += 0200 *************** *** 0 **** --- 1,22 ---- + # All this catalog "translates" are quotation characters. + # The msgids must be ASCII and therefore cannot contain real quotation + # characters, only substitutes like grave accent (0x60), apostrophe (0x= 27) + # and double quote (0x22). These substitutes look strange; see + # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html + # + # This catalog translates grave accent (0x60) and apostrophe (0x27) to + # left single quotation mark (U+2018) and right single quotation mark (= U+2019). + # It also translates pairs of apostrophe (0x27) to + # left single quotation mark (U+2018) and right single quotation mark (= U+2019) + # and pairs of quotation mark (0x22) to + # left double quotation mark (U+201C) and right double quotation mark (= U+201D). + # + # When output to an UTF-8 terminal, the quotation characters appear per= fectly. + # When output to an ISO-8859-1 terminal, the single quotation marks are + # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to + # grave/acute accent (by libiconv), and the double quotation marks are + # transliterated to 0x22. + # When output to an ASCII terminal, the single quotation marks are + # transliterated to apostrophes, and the double quotation marks are + # transliterated to 0x22. + # diff -r -c3 --unidirectional-new-file bison-2.0a.orig/skeleton-po/en@bold= quot.header bison-2.0a/skeleton-po/en@boldquot.header *** bison-2.0a.orig/skeleton-po/en@boldquot.header 1970-01-01 01:00:00.00= 0000000 +0100 --- bison-2.0a/skeleton-po/en@boldquot.header 2004-09-27 22:43:21.0000000= 00 +0200 *************** *** 0 **** --- 1,25 ---- + # All this catalog "translates" are quotation characters. + # The msgids must be ASCII and therefore cannot contain real quotation + # characters, only substitutes like grave accent (0x60), apostrophe (0x= 27) + # and double quote (0x22). These substitutes look strange; see + # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html + # + # This catalog translates grave accent (0x60) and apostrophe (0x27) to + # left single quotation mark (U+2018) and right single quotation mark (= U+2019). + # It also translates pairs of apostrophe (0x27) to + # left single quotation mark (U+2018) and right single quotation mark (= U+2019) + # and pairs of quotation mark (0x22) to + # left double quotation mark (U+201C) and right double quotation mark (= U+201D). + # + # When output to an UTF-8 terminal, the quotation characters appear per= fectly. + # When output to an ISO-8859-1 terminal, the single quotation marks are + # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to + # grave/acute accent (by libiconv), and the double quotation marks are + # transliterated to 0x22. + # When output to an ASCII terminal, the single quotation marks are + # transliterated to apostrophes, and the double quotation marks are + # transliterated to 0x22. + # + # This catalog furthermore displays the text between the quotation mark= s in + # bold face, assuming the VT100/XTerm escape sequences. + # diff -r -c3 --unidirectional-new-file bison-2.0a.orig/skeleton-po/insert-= header.sin bison-2.0a/skeleton-po/insert-header.sin *** bison-2.0a.orig/skeleton-po/insert-header.sin 1970-01-01 01:00:00.000= 000000 +0100 --- bison-2.0a/skeleton-po/insert-header.sin 2004-09-27 22:43:22.00000000= 0 +0200 *************** *** 0 **** --- 1,23 ---- + # Sed script that inserts the file called HEADER before the header entr= y. + # + # At each occurrence of a line starting with "msgid ", we execute the f= ollowing + # commands. At the first occurrence, insert the file. At the following + # occurrences, do nothing. The distinction between the first and the fo= llowing + # occurrences is achieved by looking at the hold space. + /^msgid /{ + x + # Test if the hold space is empty. + s/m/m/ + ta + # Yes it was empty. First occurrence. Read the file. + r HEADER + # Output the file's contents by reading the next line. But don't lose t= he + # current line while doing this. + g + N + bb + :a + # The hold space was nonempty. Following occurrences. Do nothing. + x + :b + } diff -r -c3 --unidirectional-new-file bison-2.0a.orig/skeleton-po/remove-= potcdate.sin bison-2.0a/skeleton-po/remove-potcdate.sin *** bison-2.0a.orig/skeleton-po/remove-potcdate.sin 1970-01-01 01:00:00.0= 00000000 +0100 --- bison-2.0a/skeleton-po/remove-potcdate.sin 2004-09-27 22:43:22.000000= 000 +0200 *************** *** 0 **** --- 1,19 ---- + # Sed script that remove the POT-Creation-Date line in the header entry + # from a POT file. + # + # The distinction between the first and the following occurrences of th= e + # pattern is achieved by looking at the hold space. + /^"POT-Creation-Date: .*"$/{ + x + # Test if the hold space is empty. + s/P/P/ + ta + # Yes it was empty. First occurrence. Remove the line. + g + d + bb + :a + # The hold space was nonempty. Following occurrences. Do nothing. + x + :b + } diff -r -c3 --unidirectional-new-file bison-2.0a.orig/skeleton-po/Makevar= s bison-2.0a/skeleton-po/Makevars *** bison-2.0a.orig/skeleton-po/Makevars 1970-01-01 01:00:00.000000000 +0= 100 --- bison-2.0a/skeleton-po/Makevars 2005-05-26 12:31:31.000000000 +0200 *************** *** 0 **** --- 1,41 ---- + # Makefile variables for PO directory in any package using GNU gettext. +=20 + # Usually the message domain is the same as the package name. + DOMAIN =3D bison-skeleton +=20 + # These two variables depend on the location of this directory. + subdir =3D skeleton-po + top_builddir =3D .. +=20 + # These options get passed to xgettext. + XGETTEXT_OPTIONS =3D --keyword=3DBISON_I18N +=20 + # This is the copyright holder that gets inserted into the header of th= e + # $(DOMAIN).pot file. Set this to the copyright holder of the surround= ing + # package. (Note that the msgstr strings, extracted from the package's + # sources, belong to the copyright holder of the package.) Translators= are + # expected to transfer the copyright for their translations to this per= son + # or entity, or to disclaim their copyright. The empty string stands f= or + # the public domain; in this case the translators are expected to discl= aim + # their copyright. + COPYRIGHT_HOLDER =3D Free Software Foundation, Inc. +=20 + # This is the email address or URL to which the translators shall repor= t + # bugs in the untranslated strings: + # - Strings which are not entire sentences, see the maintainer guidelin= es + # in the GNU gettext documentation, section 'Preparing Strings'. + # - Strings which use unclear terms or require additional context to be + # understood. + # - Strings which make invalid assumptions about notation of date, time= or + # money. + # - Pluralisation problems. + # - Incorrect English spelling. + # - Incorrect formatting. + # It can be your email address, or a mailing list address where transla= tors + # can write to without being subscribed, or the URL of a web page throu= gh + # which the translators can contact you. + MSGID_BUGS_ADDRESS =3D bug-bison@gnu.org +=20 + # This is the list of locale categories, beyond LC_MESSAGES, for which = the + # message catalogs shall be used. It is usually empty. + EXTRA_LOCALE_CATEGORIES =3D diff -r -c3 --unidirectional-new-file bison-2.0a.orig/skeleton-po/POTFILE= S.in bison-2.0a/skeleton-po/POTFILES.in *** bison-2.0a.orig/skeleton-po/POTFILES.in 1970-01-01 01:00:00.000000000= +0100 --- bison-2.0a/skeleton-po/POTFILES.in 2005-05-26 12:28:44.000000000 +020= 0 *************** *** 0 **** --- 1 ---- + data/yacc.c diff -r -c3 --unidirectional-new-file bison-2.0a.orig/skeleton-po/LINGUAS= bison-2.0a/skeleton-po/LINGUAS *** bison-2.0a.orig/skeleton-po/LINGUAS 1970-01-01 01:00:00.000000000 +01= 00 --- bison-2.0a/skeleton-po/LINGUAS 2005-05-26 12:33:37.000000000 +0200 *************** *** 0 **** --- 1 ---- + de diff -r -c3 --unidirectional-new-file bison-2.0a.orig/skeleton-po/bison-s= keleton.pot bison-2.0a/skeleton-po/bison-skeleton.pot *** bison-2.0a.orig/skeleton-po/bison-skeleton.pot 1970-01-01 01:00:00.00= 0000000 +0100 --- bison-2.0a/skeleton-po/bison-skeleton.pot 2005-05-26 13:24:16.0000000= 00 +0200 *************** *** 0 **** --- 1,105 ---- + # SOME DESCRIPTIVE TITLE. + # Copyright (C) YEAR Free Software Foundation, Inc. + # This file is distributed under the same license as the PACKAGE packag= e. + # FIRST AUTHOR , YEAR. + # + #, fuzzy + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: bug-bison@gnu.org\n" + "POT-Creation-Date: 2005-05-26 13:24+0200\n" + "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" + "Last-Translator: FULL NAME \n" + "Language-Team: LANGUAGE \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=3DCHARSET\n" + "Content-Transfer-Encoding: 8bit\n" +=20 + #: data/yacc.c:521 + msgid "syntax error: cannot back up" + msgstr "" +=20 + #: data/yacc.c:615 + msgid "Stack now" + msgstr "" +=20 + #: data/yacc.c:637 + #, c-format + msgid "Reducing stack by rule %d (line %u), " + msgstr "" +=20 + #: data/yacc.c:906 data/yacc.c:1316 + msgid "parser stack overflow" + msgstr "" +=20 + #: data/yacc.c:946 + #, c-format + msgid "Stack size increased to %lu\n" + msgstr "" +=20 + #: data/yacc.c:953 + #, c-format + msgid "Entering state %d\n" + msgstr "" +=20 + #: data/yacc.c:977 + msgid "Reading a token: " + msgstr "" +=20 + #: data/yacc.c:984 + msgid "Now at end of input.\n" + msgstr "" +=20 + #: data/yacc.c:989 + msgid "Next token is" + msgstr "" +=20 + #: data/yacc.c:1010 data/yacc.c:1291 + msgid "Shifting" + msgstr "" +=20 + #: data/yacc.c:1118 + #, c-format + msgid "syntax error, unexpected %s" + msgstr "" +=20 + #: data/yacc.c:1119 + #, c-format + msgid "syntax error, unexpected %s, expecting %s" + msgstr "" +=20 + #: data/yacc.c:1120 + #, c-format + msgid "syntax error, unexpected %s, expecting %s or %s" + msgstr "" +=20 + #: data/yacc.c:1121 + #, c-format + msgid "syntax error, unexpected %s, expecting %s or %s or %s" + msgstr "" +=20 + #: data/yacc.c:1122 + #, c-format + msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s" + msgstr "" +=20 + #: data/yacc.c:1196 + msgid "syntax error; also memory exhausted" + msgstr "" +=20 + #: data/yacc.c:1200 + msgid "syntax error" + msgstr "" +=20 + #: data/yacc.c:1219 + msgid "Error: discarding" + msgstr "" +=20 + #: data/yacc.c:1273 data/yacc.c:1332 + msgid "Error: popping" + msgstr "" +=20 + #: data/yacc.c:1323 + msgid "Error: discarding lookahead" + msgstr "" diff -r -c3 --unidirectional-new-file bison-2.0a.orig/skeleton-po/de.po b= ison-2.0a/skeleton-po/de.po *** bison-2.0a.orig/skeleton-po/de.po 1970-01-01 01:00:00.000000000 +0100 --- bison-2.0a/skeleton-po/de.po 2005-05-27 00:07:19.000000000 +0200 *************** *** 0 **** --- 1,109 ---- + # translation of de.po to Deutsch + # German translations for GNU Bison package + # German messages for GNU Bison. + # Copyright (C) 2005 Free Software Foundation, Inc. + # This file is distributed under the same license as the GNU Bison pack= age. + # Bruno Haible , 2005. + # + msgid "" + msgstr "" + "Project-Id-Version: de\n" + "Report-Msgid-Bugs-To: bug-bison@gnu.org\n" + "POT-Creation-Date: 2005-05-26 13:24+0200\n" + "PO-Revision-Date: 2005-05-26 12:54+0200\n" + "Last-Translator: Bruno Haible \n" + "Language-Team: Deutsch \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=3DUTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "Plural-Forms: nplurals=3D2; plural=3D(n !=3D 1);\n" + "X-Generator: KBabel 1.0.2\n" +=20 + #: data/yacc.c:521 + msgid "syntax error: cannot back up" + msgstr "" +=20 + #: data/yacc.c:615 + msgid "Stack now" + msgstr "Stapel jetzt:" +=20 + #: data/yacc.c:637 + #, c-format + msgid "Reducing stack by rule %d (line %u), " + msgstr "Stapel verkleinert durch Regel %d (Zeile %u), " +=20 + #: data/yacc.c:906 data/yacc.c:1316 + msgid "parser stack overflow" + msgstr "=C3=9Cberlauf des Parser-Stapels" +=20 + #: data/yacc.c:946 + #, c-format + msgid "Stack size increased to %lu\n" + msgstr "Stapel wurde auf %lu Elemente vergr=C3=B6=C3=9Fert.\n" +=20 + #: data/yacc.c:953 + #, c-format + msgid "Entering state %d\n" + msgstr "Eintritt in Zustand %d\n" +=20 + #: data/yacc.c:977 + msgid "Reading a token: " + msgstr "Lese ein Token: " +=20 + #: data/yacc.c:984 + msgid "Now at end of input.\n" + msgstr "Am Ende des Eingabestroms angelangt.\n" +=20 + #: data/yacc.c:989 + msgid "Next token is" + msgstr "Das n=C3=A4chste Token ist" +=20 + #: data/yacc.c:1010 data/yacc.c:1291 + msgid "Shifting" + msgstr "Schieben" +=20 + #: data/yacc.c:1118 + #, c-format + msgid "syntax error, unexpected %s" + msgstr "Syntaxfehler, %s wird hier nicht erwartet" +=20 + #: data/yacc.c:1119 + #, c-format + msgid "syntax error, unexpected %s, expecting %s" + msgstr "Syntaxfehler, %s wird hier nicht erwartet, sondern %s" +=20 + #: data/yacc.c:1120 + #, c-format + msgid "syntax error, unexpected %s, expecting %s or %s" + msgstr "Syntaxfehler, %s wird hier nicht erwartet, sondern %s oder %s" +=20 + #: data/yacc.c:1121 + #, c-format + msgid "syntax error, unexpected %s, expecting %s or %s or %s" + msgstr "Syntaxfehler, %s wird hier nicht erwartet, sondern %s oder %s o= der %s" +=20 + #: data/yacc.c:1122 + #, c-format + msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s" + msgstr "" + "Syntaxfehler, %s wird hier nicht erwartet, sondern %s oder %s oder %s = oder %s" +=20 + #: data/yacc.c:1196 + msgid "syntax error; also memory exhausted" + msgstr "Syntaxfehler und kein Speicher mehr" +=20 + #: data/yacc.c:1200 + msgid "syntax error" + msgstr "Syntaxfehler" +=20 + #: data/yacc.c:1219 + msgid "Error: discarding" + msgstr "Fehler, ignoriere" +=20 + #: data/yacc.c:1273 data/yacc.c:1332 + msgid "Error: popping" + msgstr "Fehler, entferne" +=20 + #: data/yacc.c:1323 + msgid "Error: discarding lookahead" + msgstr "Fehler, ignoriere bereits gelesenes Token" diff -r -c3 --unidirectional-new-file bison-2.0a.orig/data/bison-po/Makef= ile.am bison-2.0a/data/bison-po/Makefile.am *** bison-2.0a.orig/data/bison-po/Makefile.am 1970-01-01 01:00:00.0000000= 00 +0100 --- bison-2.0a/data/bison-po/Makefile.am 2005-05-26 22:24:37.000000000 +0= 200 *************** *** 0 **** --- 1,142 ---- + ## Makefile for the bison-po directory + ## Copyright (C) 2005 Free Software Foundation, Inc. + ## + ## This program is free software; you can redistribute it and/or modify + ## it under the terms of the GNU General Public License as published by + ## the Free Software Foundation; either version 2, or (at your option) + ## any later version. + ## + ## This program is distributed in the hope that it will be useful, + ## but WITHOUT ANY WARRANTY; without even the implied warranty of + ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ## GNU General Public License for more details. + ## + ## You should have received a copy of the GNU General Public License + ## along with this program; if not, write to the Free Software Foundati= on, + ## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +=20 + ## Process this file with automake to produce Makefile.in. +=20 + # These rules assume that the version of bison doesn't change between + # 'configure' and 'make install'. After installing a new version of bis= on, + # you need to "make distclean" and re-configure. +=20 + BISON_DOMAIN =3D $(PACKAGE)-bison +=20 + localedir =3D $(datadir)/locale +=20 + all-local: LINGUAS +=20 + # The LINGUAS file contains the list of languages for which translation= s are + # provided. It also serves as a stamp file. It and the *.mo files are + # updated everytime bison is invoked. + LINGUAS: @BISON_BUILT_FILES@ + if test @BISON_USE_NLS@ =3D yes; then \ + linguas=3D""; \ + for bisoncat in "@BISON_LOCALEDIR@"/*/LC_MESSAGES/bison-skeleton.mo;= do \ + lang=3D`echo "$$bisoncat" | sed -e 's,^.*/\([^/]*\)/[^/]*/[^/]*$$,= \1,'` ; \ + cp -p "@BISON_LOCALEDIR@"/$$lang/LC_MESSAGES/bison-skeleton.mo $(s= rcdir)/$$lang.mo; \ + linguas=3D"$$linguas$$lang "; \ + done; \ + echo "$$linguas" > $(srcdir)/LINGUAS; \ + fi +=20 + install-data-local: install-data-bison-nls-@BISON_USE_NLS@ + install-data-bison-nls-no: all-local + install-data-bison-nls-yes: all-local + @linguas=3D""; \ + for presentlang in `cat $(srcdir)/LINGUAS`; do \ + useit=3Dno; \ + if test "%UNSET%" !=3D "@USER_LINGUAS@"; then \ + desiredlanguages=3D"@USER_LINGUAS@"; \ + for desiredlang in $$desiredlanguages; do \ + case "$$desiredlang" in \ + "$$presentlang"*) useit=3Dyes;; \ + esac; \ + done; \ + else \ + useit=3Dyes; \ + fi; \ + if test $$useit =3D yes; then \ + lang=3D$$presentlang; \ + dir=3D"$(localedir)"/$$lang/LC_MESSAGES; cat=3D$(BISON_DOMAIN).mo;= \ + $(mkinstalldirs) "$(DESTDIR)$$dir"; \ + if test -r $$lang.mo; then realcat=3D$$lang.mo; else realcat=3D$(s= rcdir)/$$lang.mo; fi; \ + $(INSTALL_DATA) "$$realcat" "$(DESTDIR)$$dir"/$$cat; \ + echo "installing $$realcat as $(DESTDIR)$$dir/$$cat"; \ + fi; \ + done +=20 + installdirs-local: installdirs-bison-nls-@BISON_USE_NLS@ + installdirs-bison-nls-no: all-local + installdirs-bison-nls-yes: all-local + @linguas=3D""; \ + for presentlang in `cat $(srcdir)/LINGUAS`; do \ + useit=3Dno; \ + if test "%UNSET%" !=3D "@USER_LINGUAS@"; then \ + desiredlanguages=3D"@USER_LINGUAS@"; \ + for desiredlang in $$desiredlanguages; do \ + case "$$desiredlang" in \ + "$$presentlang"*) useit=3Dyes;; \ + esac; \ + done; \ + else \ + useit=3Dyes; \ + fi; \ + if test $$useit =3D yes; then \ + lang=3D$$presentlang; \ + echo "$(mkinstalldirs) $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES";= \ + $(mkinstalldirs) "$(DESTDIR)$(localedir)"/$$lang/LC_MESSAGES; \ + fi; \ + done +=20 + uninstall-local: uninstall-bison-nls-@BISON_USE_NLS@ + uninstall-bison-nls-no: all-local + uninstall-bison-nls-yes: all-local + @linguas=3D""; \ + for presentlang in `cat $(srcdir)/LINGUAS`; do \ + useit=3Dno; \ + if test "%UNSET%" !=3D "@USER_LINGUAS@"; then \ + desiredlanguages=3D"@USER_LINGUAS@"; \ + for desiredlang in $$desiredlanguages; do \ + case "$$desiredlang" in \ + "$$presentlang"*) useit=3Dyes;; \ + esac; \ + done; \ + else \ + useit=3Dyes; \ + fi; \ + if test $$useit =3D yes; then \ + lang=3D$$presentlang; \ + echo "rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(BISON_DOMA= IN).mo"; \ + rm -f "$(DESTDIR)$(localedir)"/$$lang/LC_MESSAGES/$(BISON_DOMAIN).= mo; \ + fi; \ + done +=20 + # We have to handle Makefile.am and Makefile.in here, because since + # automake-1.5 it is impossible to extend the 'distdir' rule: a distdir + # declaration overrides the default distdir rule, and a distdir-local + # declaration is ignored. + # Everything would be so easy if we could write + # EXTRA_DIST =3D \ + # `if test -f $(srcdir)/LINGUAS; then \ + # echo LINGUAS; \ + # for lang in \`cat $(srcdir)/LINGUAS\`; do echo $$lang.mo; done= ; \ + # fi` + distdir: + for file in Makefile.am Makefile.in; do \ + cp -p $(srcdir)/$$file $(distdir)/$$file || exit 1; \ + done; \ + if test -f $(srcdir)/LINGUAS; then \ + for file in LINGUAS; do \ + if test -f $$file; then d=3D.; else d=3D$(srcdir); fi; \ + cp -p $$d/$$file $(distdir)/$$file || exit 1; \ + done; \ + for lang in `cat $(srcdir)/LINGUAS`; do \ + file=3D$$lang.mo; \ + if test -f $$file; then d=3D.; else d=3D$(srcdir); fi; \ + cp -p $$d/$$file $(distdir)/$$file || exit 1; \ + done; \ + fi +=20 + MAINTAINERCLEANFILES =3D LINGUAS *.mo diff -r -c3 --unidirectional-new-file bison-2.0a.orig/data/Makefile.am bi= son-2.0a/data/Makefile.am *** bison-2.0a.orig/data/Makefile.am 2005-05-14 08:52:28.000000000 +0200 --- bison-2.0a/data/Makefile.am 2005-05-26 22:37:34.000000000 +0200 *************** *** 1,4 **** ! ## Copyright (C) 2002 Free Software Foundation, Inc. =20 ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by --- 1,4 ---- ! ## Copyright (C) 2002, 2005 Free Software Foundation, Inc. =20 ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by *************** *** 19,21 **** --- 19,24 ---- =20 m4sugardir =3D $(pkgdatadir)/m4sugar dist_m4sugar_DATA =3D m4sugar/m4sugar.m4 +=20 + bisonpodir =3D $(pkgdatadir)/bison-po + bisonpo_DATA =3D bison-po/Makefile.am diff -r -c3 --unidirectional-new-file bison-2.0a.orig/m4/bison.m4 bison-2= .0a/m4/bison.m4 *** bison-2.0a.orig/m4/bison.m4 1970-01-01 01:00:00.000000000 +0100 --- bison-2.0a/m4/bison.m4 2005-05-26 21:48:17.000000000 +0200 *************** *** 0 **** --- 1,63 ---- + # bison.m4 serial 1 (bison-2.1) + dnl Copyright (C) 2005 Free Software Foundation, Inc. + dnl This file is free software; the Free Software Foundation + dnl gives unlimited permission to copy and/or distribute it, + dnl with or without modifications, as long as this notice is preserved. +=20 + dnl From Bruno Haible. +=20 + dnl Support for internationalization of bison-generated parsers. +=20 + dnl BISON_I18N(BISON_BUILT_FILES) + dnl should be used in configure.ac, after AM_GNU_GETTEXT. + dnl It sets BISON_USE_NLS to yes or no. If yes, it also sets BISON_LOCA= LEDIR + dnl to indicate where to find the bison-skeleton.mo files and USER_LING= UAS + dnl to indicate the languages for which the user wants support. + AC_DEFUN([BISON_I18N], + [ + if test -z "$USE_NLS"; then + echo "The BISON-I18N macro is used without being preceded by AM-GNU= -GETTEXT." 1>&2 + exit 1 + fi + BISON_BUILT_FILES=3D + for f in $1; do + BISON_BUILT_FILES=3D"$BISON_BUILT_FILES ../$f" + done + AC_SUBST(BISON_BUILT_FILES) + BISON_LOCALEDIR=3D + if test "$USE_NLS" =3D yes; then + dnl AC_PROG_YACC sets the YACC variable; other macros set the BISON= variable. + if test -n "$YACC"; then + case "$YACC" in + *bison*) + if ($YACC --print-localedir) >/dev/null 2>&1; then + BISON_LOCALEDIR=3D`$YACC --print-localedir` + fi + ;; + esac + else + if test -n "$BISON"; then + if test "$BISON" !=3D ":"; then + if ($BISON --print-localedir) >/dev/null 2>&1; then + BISON_LOCALEDIR=3D`$BISON --print-localedir` + fi + fi + fi + fi + if test -n "$BISON_LOCALEDIR"; then + AC_SUBST(BISON_LOCALEDIR) + USER_LINGUAS=3D"${LINGUAS-%UNSET%}" + AC_SUBST(USER_LINGUAS) + if test -n "$USER_LINGUAS"; then + BISON_USE_NLS=3Dyes + else + BISON_USE_NLS=3Dno + fi + else + BISON_USE_NLS=3Dno + fi + else + BISON_USE_NLS=3Dno + fi + AC_SUBST(BISON_USE_NLS) + ]) diff -r -c3 --unidirectional-new-file bison-2.0a.orig/Makefile.am bison-2= .0a/Makefile.am *** bison-2.0a.orig/Makefile.am 2005-05-14 08:52:28.000000000 +0200 --- bison-2.0a/Makefile.am 2005-05-26 13:04:41.000000000 +0200 *************** *** 1,5 **** ## Process this file with automake to produce Makefile.in -*-Makefile-*= - ! ## Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. =20 ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by --- 1,5 ---- ## Process this file with automake to produce Makefile.in -*-Makefile-*= - ! ## Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation,= Inc. =20 ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by *************** *** 18,24 **** =20 ACLOCAL_AMFLAGS =3D -I m4 =20 ! SUBDIRS =3D config po lib data src doc tests =20 EXTRA_DIST =3D REFERENCES OChangeLog Makefile.maint GNUmakefile Makefil= e.cfg =20 --- 18,28 ---- =20 ACLOCAL_AMFLAGS =3D -I m4 =20 ! SUBDIRS =3D config po skeleton-po lib data src doc tests !=20 ! # Files installed for use by automake. ! aclocaldir =3D @aclocaldir@ ! aclocal_DATA =3D m4/bison.m4 =20 EXTRA_DIST =3D REFERENCES OChangeLog Makefile.maint GNUmakefile Makefil= e.cfg =20 diff -r -c3 --unidirectional-new-file bison-2.0a.orig/configure.ac bison-= 2.0a/configure.ac *** bison-2.0a.orig/configure.ac 2005-05-22 08:44:16.000000000 +0200 --- bison-2.0a/configure.ac 2005-05-26 13:06:45.000000000 +0200 *************** *** 107,115 **** =20 # gnulib and gettext. GNULIB_AUTOCONF_SNIPPET ! # We use po/Makevars.template, so we need at least gettext 0.12. AM_GNU_GETTEXT_VERSION([0.12]) =20 # Initialize the test suite. AC_CONFIG_TESTDIR(tests) AC_CONFIG_FILES([tests/Makefile tests/atlocal]) --- 107,121 ---- =20 # gnulib and gettext. GNULIB_AUTOCONF_SNIPPET ! # We use po/Makevars, so we need at least gettext 0.12. AM_GNU_GETTEXT_VERSION([0.12]) =20 + # Internationalized parsers. + AC_CONFIG_FILES([skeleton-po/Makefile.in]) + # Autoconf macros for packages using internationalized parsers. + aclocaldir=3D'${datadir}/aclocal' + AC_SUBST(aclocaldir) +=20 # Initialize the test suite. AC_CONFIG_TESTDIR(tests) AC_CONFIG_FILES([tests/Makefile tests/atlocal]) diff -r -c3 --unidirectional-new-file bison-2.0a.orig/src/getargs.c bison= -2.0a/src/getargs.c *** bison-2.0a.orig/src/getargs.c 2005-05-14 08:52:29.000000000 +0200 --- bison-2.0a/src/getargs.c 2005-05-26 13:16:14.000000000 +0200 *************** *** 207,215 **** =20 fputs (_("\ Operation modes:\n\ ! -h, --help display this help and exit\n\ ! -V, --version output version information and exit\n\ ! -y, --yacc emulate POSIX yacc\n"), stdout); putc ('\n', stdout); =20 fputs (_("\ --- 207,216 ---- =20 fputs (_("\ Operation modes:\n\ ! -h, --help display this help and exit\n\ ! -V, --version output version information and exit\n\ ! --print-localedir output directory containing locale-depende= nt data\n\ ! -y, --yacc emulate POSIX yacc\n"), stdout); putc ('\n', stdout); =20 fputs (_("\ *************** *** 289,302 **** /* Values for long options that do not have single-letter equivalents. = */ enum { ! LOCATIONS_OPTION =3D CHAR_MAX + 1 }; =20 static struct option const long_options[] =3D { /* Operation modes. */ ! { "help", no_argument, 0, 'h' }, ! { "version", no_argument, 0, 'V' }, =20 /* Parser. */ { "name-prefix", required_argument, 0, 'p' }, --- 290,305 ---- /* Values for long options that do not have single-letter equivalents. = */ enum { ! LOCATIONS_OPTION =3D CHAR_MAX + 1, ! PRINT_LOCALEDIR_OPTION =3D CHAR_MAX + 2 }; =20 static struct option const long_options[] =3D { /* Operation modes. */ ! { "help", no_argument, 0, 'h' }, ! { "version", no_argument, 0, 'V' }, ! { "print-localedir", no_argument, 0, PRINT_LOCALEDIR_OPTION }, =20 /* Parser. */ { "name-prefix", required_argument, 0, 'p' }, *************** *** 364,369 **** --- 367,376 ---- version (); exit (EXIT_SUCCESS); =20 + case PRINT_LOCALEDIR_OPTION: + printf ("%s\n", LOCALEDIR); + exit (EXIT_SUCCESS); +=20 case 'g': /* Here, the -g and --graph=3DFILE options are differentiated. */ graph_flag =3D true; diff -r -c3 --unidirectional-new-file bison-2.0a.orig/doc/bison.texinfo b= ison-2.0a/doc/bison.texinfo *** bison-2.0a.orig/doc/bison.texinfo 2005-05-14 08:52:28.000000000 +0200 --- bison-2.0a/doc/bison.texinfo 2005-05-27 00:02:57.000000000 +0200 *************** *** 242,247 **** --- 242,249 ---- which reads tokens. * Error Reporting:: You must supply a function @code{yyerror}. * Action Features:: Special features for use in actions. + * Internationalization:: How to let the parser speak in the user's + native language. =20 The Lexical Analyzer Function @code{yylex} =20 *************** *** 1166,1179 **** arrange for it to call @code{yyparse} or the parser will never run. @xref{Interface, ,Parser C-Language Interface}. =20 ! If your code defines a C preprocessor macro @code{_} (a single ! underscore), Bison assumes that it can be used to translate ! English-language strings to the user's preferred language using a ! function-like syntax, e.g., @code{_("syntax error")}. Otherwise, ! Bison defines a no-op macro by that name that merely returns its ! argument, so strings are not translated. !=20 ! Aside from @code{_} and the token type names and the symbols in the act= ions you write, all symbols defined in the Bison parser file itself begin with @samp{yy} or @samp{YY}. This includes interface functions such as the lexical analyzer function @code{yylex}, the error reporting --- 1168,1174 ---- arrange for it to call @code{yyparse} or the parser will never run. @xref{Interface, ,Parser C-Language Interface}. =20 ! Aside from the token type names and the symbols in the actions you write, all symbols defined in the Bison parser file itself begin with @samp{yy} or @samp{YY}. This includes interface functions such as the lexical analyzer function @code{yylex}, the error reporting *************** *** 4229,4234 **** --- 4224,4231 ---- which reads tokens. * Error Reporting:: You must supply a function @code{yyerror}. * Action Features:: Special features for use in actions. + * Internationalization:: How to let the parser speak in the user's + native language. @end menu =20 @node Parser Function *************** *** 4791,4796 **** --- 4788,4891 ---- Tracking Locations}. @end deffn =20 + @node Internationalization + @section Parser Internationalization + @cindex internationalization + @cindex i18n + @cindex NLS + @cindex gettext + @cindex bison-po +=20 + The parser can print diagnostics -- error messages and tracing messages= --. + By default, they appear in English. However, Bison also supports to ou= tput + them in the user's native language. To make this work, the user only h= as + to set the usual environment variables; see the @file{ABOUT-NLS} file f= or + details. The maintainer of a package that uses a bison-generated parse= r + enables the internationalization of the parser's output through the + following steps. Here we assume a package that uses GNU autoconf and + GNU automake. +=20 + @enumerate + @item + In the top-level directory of your package, create a subdirectory calle= d + @samp{bison-po}. It will contain localization files borrowed from the + Bison installation. + @smallexample + $ mkdir bison-po + @end smallexample +=20 + @item + Into the @samp{bison-po} directory, copy the @samp{Makefile.am} file + installed by Bison under @samp{share/bison/bison-po/Makefile.am} in Bis= on's + installation directory. For example, if the @file{bison} program is + installed as @file{/usr/local/bin/bison}, you will find the file under + @file{/usr/local/share/bison/bison-po/Makefile.am}. + @smallexample + $ cp /usr/local/share/bison/bison-po/Makefile.am bison-po/Makefile.am + @end smallexample + The other files in this directory will be created later, automatically. +=20 + @item + Into the directory containing the GNU autoconf macros used by the packa= ge + -- often called @file{m4/} -- copy the @samp{bison.m4} file installed b= y + Bison under @samp{share/aclocal/bison.m4} in Bison's installation direc= tory. + Example: + @smallexample + $ cp /usr/local/share/aclocal/bison.m4 m4/bison.m4 + @end smallexample +=20 + @item + In the top-level @file{Makefile.am}, add @samp{bison-po} to the SUBDIRS + variable and, if present, also to the DIST_SUBDIRS variable. It should + be mentioned after directories that contain .y files that are processed + by Bison, such as -- usually -- @samp{src}. Example: + @smallexample + SUBDIRS =3D doc lib src po bison-po tests + @end smallexample +=20 + @item + In the top-level @file{configure.ac}, add @samp{bison-po/Makefile} to t= he + @code{AC_CONFIG_FILES} command that lists the autogenerated Makefiles. + Example: + @smallexample + AC_CONFIG_FILES([doc/Makefile lib/Makefile src/Makefile \ + po/Makefile.in bison-po/Makefile tests/Makefile]) + @end smallexample +=20 + @item + In the top-level @file{configure.ac}, after the @code{AM_GNU_GETTEXT} + invocation, add an invocation of @code{BISON_I18N}. As argument, you p= ass + a space-separated list of parser code files generated by Bison. Exampl= e: + @smallexample + BISON_I18N([rpcalc.c]) + @end smallexample + The @code{BISON_I18N} macro is defined in @file{bison.m4} that you copi= ed + earlier. It will cause @samp{configure} to find the values of some var= iables + that are used by @code{bison-po/Makefile.am}. +=20 + @item + In the @code{main()} function of your program, designate the directory = where + Bison's message catalogs will be copied to, through a call to + @samp{bindtextdomain}. By convention, the @code{gettext} domain name i= s + formed by contatenating the package name and a @code{"-bison"} suffix. + Typically this call will occur next to the call for the package's own + message domain. Example: + @smallexample + bindtextdomain (PACKAGE, LOCALEDIR); + bindtextdomain (PACKAGE "-bison", LOCALEDIR); + @end smallexample + Note that here we rely on @samp{PACKAGE} to be defined as a literal str= ing + macro through @code{config.h}, and on @samp{LOCALEDIR} to be defined as= a + literal string through the @file{Makefile}. +=20 + @item + Finally, invoke @samp{autoreconf}, to rebuild the autoconf/automake gen= erated + build infrastructure. + @smallexample + $ autoreconf + @end smallexample + @end enumerate +=20 =20 @node Algorithm @chapter The Bison Parser Algorithm *** /dev/null 2003-09-23 19:59:22.000000000 +0200 --- bison-2.0a/skeleton-po/quot.sed 2004-09-27 22:43:22.000000000 +0200 *************** *** 0 **** --- 1,6 ---- + s/"\([^"]*\)"/=E2=80=9C\1=E2=80=9D/g + s/`\([^`']*\)'/=E2=80=98\1=E2=80=99/g + s/ '\([^`']*\)' / =E2=80=98\1=E2=80=99 /g + s/ '\([^`']*\)'$/ =E2=80=98\1=E2=80=99/g + s/^'\([^`']*\)' /=E2=80=98\1=E2=80=99 /g + s/=E2=80=9C=E2=80=9D/""/g *** /dev/null 2003-09-23 19:59:22.000000000 +0200 --- bison-2.0a/skeleton-po/boldquot.sed 2004-09-27 22:43:21.000000000 +02= 00 *************** *** 0 **** --- 1,10 ---- + s/"\([^"]*\)"/=E2=80=9C\1=E2=80=9D/g + s/`\([^`']*\)'/=E2=80=98\1=E2=80=99/g + s/ '\([^`']*\)' / =E2=80=98\1=E2=80=99 /g + s/ '\([^`']*\)'$/ =E2=80=98\1=E2=80=99/g + s/^'\([^`']*\)' /=E2=80=98\1=E2=80=99 /g + s/=E2=80=9C=E2=80=9D/""/g + s/=E2=80=9C/=E2=80=9C=1B[1m/g + s/=E2=80=9D/=1B[0m=E2=80=9D/g + s/=E2=80=98/=E2=80=98=1B[1m/g + s/=E2=80=99/=1B[0m=E2=80=99/g --Boundary-00=_/RwlCrEWe/WOh6H-- From MAILER-DAEMON Tue Jul 12 16:36:45 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRUj-00062u-91 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:36:45 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DboFs-0006GK-Tj for bison-patches@gnu.org; Fri, 27 May 2005 19:28:41 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DboFp-0006DA-RO for bison-patches@gnu.org; Fri, 27 May 2005 19:28:38 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DboFp-00068h-KT; Fri, 27 May 2005 19:28:37 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DboBq-0000MM-VH; Fri, 27 May 2005 19:24:31 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4RNN7L27144; Fri, 27 May 2005 16:23:07 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1DboAV-0003Sy-00; Fri, 27 May 2005 16:23:07 -0700 To: Bruno Haible References: <200505271326.20047.bruno@clisp.org> From: Paul Eggert In-Reply-To: <200505271326.20047.bruno@clisp.org> (Bruno Haible's message of "Fri, 27 May 2005 13:26:20 +0200") Message-ID: <87vf54w8x0.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Paul Eggert Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison-2.0a doc bug X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Fri, 27 May 2005 23:28:44 -0000 X-Original-Date: Fri, 27 May 2005 16:23:07 -0700 X-List-Received-Date: Fri, 27 May 2005 23:28:44 -0000 Bruno Haible writes: > The bison doc says "On some non-GNU hosts, `', `', and > `' are included as needed ..." > But is also included on GNU systems by default, as you can see > by doing "gcc -E" on a bison generated file. Thanks for reporting that: it's a bug in the implementation. I installed this: 2005-05-27 Paul Eggert Fix infringement on user name space reported by Bruno Haible. * data/yacc.c (YYSIZE_T): Define first, so that later decls can use it. Prefer GCC's __SIZE_TYPE__ if available, so that we don't infringe on the user's name space. (alloca): Include to get it, if it's not built in. (YYMALLOC, YYFREE): Define only if needed. (malloc, free): Declare, but only if needed, as this infringes on the user name space. Index: data/yacc.c =================================================================== RCS file: /cvsroot/bison/bison/data/yacc.c,v retrieving revision 1.89 diff -p -u -r1.89 yacc.c --- data/yacc.c 22 May 2005 05:20:01 -0000 1.89 +++ data/yacc.c 27 May 2005 23:19:33 -0000 @@ -214,14 +214,21 @@ typedef struct YYLTYPE /* Line __line__ of yacc.c. */ b4_syncline([@oline@], [@ofile@])[ -#if ! defined (yyoverflow) || YYERROR_VERBOSE +#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) +# define YYSIZE_T __SIZE_TYPE__ +#endif +#if ! defined (YYSIZE_T) && defined (size_t) +# define YYSIZE_T size_t +#endif +#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus)) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +#endif +#if ! defined (YYSIZE_T) +# define YYSIZE_T unsigned int +#endif -# ifndef YYFREE -# define YYFREE free -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# endif +#if ! defined (yyoverflow) || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -231,6 +238,10 @@ b4_syncline([@oline@], [@ofile@])[ # define YYSTACK_ALLOC __builtin_alloca # else # define YYSTACK_ALLOC alloca +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYINCLUDED_STDLIB_H +# endif # endif # endif # endif @@ -246,17 +257,25 @@ b4_syncline([@oline@], [@ofile@])[ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */ # endif # else -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned long int -# endif # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1) # endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \ + && (defined (__STDC__) || defined (__cplusplus))) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \ + && (defined (__STDC__) || defined (__cplusplus))) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif # endif #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ @@ -463,22 +482,6 @@ static const ]b4_int_type_for([b4_stos]) ]b4_stos[ }; -#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) -# define YYSIZE_T __SIZE_TYPE__ -#endif -#if ! defined (YYSIZE_T) && defined (size_t) -# define YYSIZE_T size_t -#endif -#if ! defined (YYSIZE_T) -# if defined (__STDC__) || defined (__cplusplus) -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# endif -#endif -#if ! defined (YYSIZE_T) -# define YYSIZE_T unsigned int -#endif - #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) From MAILER-DAEMON Tue Jul 12 16:36:46 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRUj-000632-IU for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:36:45 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dbp4V-00072k-Fp for bison-patches@gnu.org; Fri, 27 May 2005 20:20:59 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dbp4P-0006yH-PL for bison-patches@gnu.org; Fri, 27 May 2005 20:20:55 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dbp4P-0006xP-Fo; Fri, 27 May 2005 20:20:53 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dbp2l-0003D4-U3; Fri, 27 May 2005 20:19:12 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4S0I9L00475; Fri, 27 May 2005 17:18:09 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1Dbp1l-0003Tj-00; Fri, 27 May 2005 17:18:09 -0700 To: Bruno Haible References: <200505271329.03827.bruno@clisp.org> From: Paul Eggert In-Reply-To: <200505271329.03827.bruno@clisp.org> (Bruno Haible's message of "Fri, 27 May 2005 13:29:03 +0200") Message-ID: <87is14w6da.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Paul Eggert Cc: bug-gnu-gettext@gnu.org, bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison and i18n X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sat, 28 May 2005 00:21:01 -0000 X-Original-Date: Fri, 27 May 2005 17:18:09 -0700 X-List-Received-Date: Sat, 28 May 2005 00:21:01 -0000 Thanks very much for these suggestions. I agree Bison 2.1 should be put off until this is fixed. Two quick thoughts. First, shouldn't BISON_I18N be renamed to YYI18N? That way, it won't infringe on the user name space, since leading YY is reserved to Yacc and Bison. (I also thought of the name "YY_", but perhaps brevity isn't needed here.) Second, can you please start the ball rolling on signing copyright papers for Bison? I hate for this to delay things but I guess that's what we have to do. Thanks again. From MAILER-DAEMON Tue Jul 12 16:36:44 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRUh-00061Z-Fc for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:36:43 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DbheK-0003XL-1K for bison-patches@gnu.org; Fri, 27 May 2005 12:25:28 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DbheI-0003Wl-KG for bison-patches@gnu.org; Fri, 27 May 2005 12:25:27 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DbheH-0003UR-VP; Fri, 27 May 2005 12:25:26 -0400 Received: from [81.80.162.195] (helo=ftp.ilog.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DbhaY-0003MC-Hn; Fri, 27 May 2005 12:21:34 -0400 Received: from laposte.ilog.fr (cerbere-qfe0 [81.80.162.193]) by ftp.ilog.fr (8.13.4/8.13.3) with ESMTP id j4RGKZJ1000601; Fri, 27 May 2005 18:20:35 +0200 (MET DST) Received: from honolulu.ilog.fr ([172.16.15.122]) by laposte.ilog.fr (8.13.1/8.13.1) with ESMTP id j4RGKUbb003181; Fri, 27 May 2005 18:20:30 +0200 (MET DST) Received: from localhost (localhost [127.0.0.1]) by honolulu.ilog.fr (Postfix) with ESMTP id 718CF3B3E4; Fri, 27 May 2005 16:20:04 +0000 (UTC) From: Bruno Haible To: Akim Demaille , Paul Eggert User-Agent: KMail/1.5 References: <200505251203.48263.bruno@clisp.org> <87k6ln9j9l.fsf@penguin.cs.ucla.edu> In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200505271820.02650.bruno@clisp.org> Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: avoiding longjmp/vfork warnings X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Fri, 27 May 2005 16:25:30 -0000 X-Original-Date: Fri, 27 May 2005 18:20:02 +0200 X-List-Received-Date: Fri, 27 May 2005 16:25:30 -0000 Akim Demaille wrote: > Wouldn't > > (void) &from_in_fd; > > do the trick? Taking the address of a variable should ensure it is > not in a register. This doesn't work any more in gcc-4.0. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21160 The gcc people recommend to use 'volatile' instead; this is consistent with ISO C 7.13.2.1.(3). Bruno From MAILER-DAEMON Tue Jul 12 16:36:57 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRUv-00066e-57 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:36:57 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DbtCO-0000Ah-6r for bison-patches@gnu.org; Sat, 28 May 2005 00:45:24 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DbtCM-00009X-Ic for bison-patches@gnu.org; Sat, 28 May 2005 00:45:22 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DbtCL-00008f-Pw for bison-patches@gnu.org; Sat, 28 May 2005 00:45:21 -0400 Received: from [71.4.53.231] (helo=jacko.cspot-interworks.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1Dbt7U-0005bn-4r for bison-patches@gnu.org; Sat, 28 May 2005 00:40:20 -0400 Received: from jacko.cspot-interworks.com (localhost.localdomain [127.0.0.1]) by jacko.cspot-interworks.com (8.12.8/8.12.8) with ESMTP id j4S4R3e4023062 for ; Fri, 27 May 2005 21:27:03 -0700 Received: (from kevin@localhost) by jacko.cspot-interworks.com (8.12.8/8.12.8/Submit) id j4S4R3fL023060; Fri, 27 May 2005 21:27:03 -0700 Message-Id: <200505280427.j4S4R3fL023060@jacko.cspot-interworks.com> To: bison-patches@gnu.org From: eBay Content-Type: text/html Subject: Place or Update Accont on File X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sat, 28 May 2005 04:45:25 -0000 X-Original-Date: Fri, 27 May 2005 21:27:03 -0700 X-List-Received-Date: Sat, 28 May 2005 04:45:25 -0000

     Place or Update 

     

    Dear eBay member,

    During our regulary schedule account maintenance and verification we have detected a slight error in your billing information on file with eBay. This might be due to either following reasons:

                 - A recent change in your personal information (i.e. change of address)
                 - Submiting invalid information during the initial sign up process.
                 - An inability to accurately verify your selected option of payment due an internal error within
                   our processors.

    Please sign in to your eBay account and update your billing information:

    http://signin.ebay.com/.aw-cgi/ebayISAPI.dll?Update;Account=h:h:sin:US

    If your account information is not update, your ability to sell or bid on eBay will become restricted.

    Thank you,
    eBay Billing Department


    eBay treats your personal information with the utmost care, and our Privacy Policy is designed to protect you and your information. eBay will never ask their users for personal information, such as bank account numbers, credit card numbers, pin numbers, passwords, or Social Security numbers in an email. For more information on how to protect your eBay password and your account, please visit User Account Protection.

    This eBay notice was sent to you based on your eBay account preferences and in accordance with our Privacy Policy. To change your notification preferences, click here. If you would like to receive this email in text format, click here.

    Copyright © 2005 eBay Inc. All Rights Reserved.
    Designated trademarks and brands are the property of their respective owners.
    eBay and the eBay logo are trademarks of eBay Inc.

     

    From MAILER-DAEMON Tue Jul 12 16:37:30 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRVS-0006VC-4C for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:37:30 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DcXgc-00033B-9F for bison-patches@gnu.org; Sun, 29 May 2005 19:59:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DcXgU-0002yI-CE for bison-patches@gnu.org; Sun, 29 May 2005 19:59:10 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DcXgU-0002si-1P for bison-patches@gnu.org; Sun, 29 May 2005 19:59:10 -0400 Received: from [84.99.174.100] (helo=juniperpartners.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DcXVu-0004QN-ND for bison-patches@gnu.org; Sun, 29 May 2005 19:48:15 -0400 From: "Melete Shorter" To: "Finella Mckay" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_002F_01C564D2.8C51AD80" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: Re: Tryying It By Yourself X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sun, 29 May 2005 23:59:22 -0000 X-Original-Date: Sun, 29 May 2005 23:46:31 -0500 X-List-Received-Date: Sun, 29 May 2005 23:59:22 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_002F_01C564D2.8C51AD80 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, long he would continue to pursue the trade for which he hadwere still = cursing him when a second shot, better aimed than theforehead with = the letters F. T., that all might know him for aThe third and last of = these ships with which we are at presenttemptingly open to assault, = there is shoal water for over half atouched off his guns. As the = thunder of them rolled out, histucked under his arm, the messenger = disengaged himself from thosewas become a pirate in his turn. The = Supreme Council of CastileI must have known then, if I had not = already learnt it, that I hadphenomenon sufficiently rare to command = attention. On his side,If they so much as put a shot across my bows, = up goes theirit's like to do me.enquired where the Captain might be = found. Being informed that hewould be no further question of the = Spaniards attempting to removenothing else to do. But his laughter = was charged with more angertrial - by my peers, as the doctor has = said. ------=_NextPart_000_002F_01C564D2.8C51AD80 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
    Hello,
     
    My boyfriend began having problems with erections = (he's older) andWith the Admiral's = homage, he said, then bowed, and withdrew. I suggested he look = into VlAGRRA.
     
        Boy, am I glad he = did!
     
    The first time he tried it, one 50 mg piIl did = nothing so he took another and that was a mistake. Three hours later = he was still rock hard and had come multiple times (so had I)!! Since = then a single 50 mg dose does it very well--hKent paused a moment, as his hastily armed guard dashed forth, = toe's now good for almost 2 hours of good hard sex that leaves = both of us worn out.
     
        - Bobbie, 21 femaledozen grapnels fell, and tore and caught in = the timbers of the USA
     
    ------=_NextPart_000_002F_01C564D2.8C51AD80-- From MAILER-DAEMON Tue Jul 12 16:37:31 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRVS-0006Vs-Oj for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:37:30 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dcd4x-0001pM-Dy for bison-patches@gnu.org; Mon, 30 May 2005 01:44:47 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dcd4t-0001nO-0C for bison-patches@gnu.org; Mon, 30 May 2005 01:44:44 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dcd4q-0001hh-6D for bison-patches@gnu.org; Mon, 30 May 2005 01:44:41 -0400 Received: from [24.21.180.190] (helo=c-24-21-180-190.hsd1.or.comcast.net) by monty-python.gnu.org with smtp (Exim 4.34) id 1Dccf5-0003OZ-Gh for bison-patches@gnu.org; Mon, 30 May 2005 01:18:04 -0400 FCC: mailbox://hwqgqmwmdyh@yahoo.com/Sent X-Identity-Key: id1 From: Carson Elkins X-Accept-Language: en-us, en MIME-Version: 1.0 To: bison-patches@gnu.org Content-Type: multipart/related; boundary="------------000700080300050501010000" Message-Id: Subject: re[21] X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Mon, 30 May 2005 05:44:48 -0000 X-Original-Date: Mon, 30 May 2005 09:12:44 +0300 X-List-Received-Date: Mon, 30 May 2005 05:44:48 -0000 This is a multi-part message in MIME format. --------------000700080300050501010000 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit

    Nicholas Kristof Coyote Ugly in 1997 fine

    in 1812 Sims

    --------------000700080300050501010000 Content-Type: image/gif; name="millard.GIF" Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="millard.GIF" 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 tvmU3bmZjrmXx3mY3rmYJ/9JmGcZlXb5nOi5m9ZJndi5ltqZm9xpmeoZm/B5mZVZkuRpmHT5SfrJnPxJ nTTZnnbZlmIZn8xpnKiZnm5pk7e5ldW5mPWZn/epoAk6mGUpoOHJnqFkoBmqnMV5osGJoHAJoEHQovRZ n6PpoRHKmxr6og7KA2Q5nyEany/pl1zJmisKpBUapDv6mpFJpBB6nTOJojE6mRQqnRjanih6o/dpoqtZ nfgJnUp6nkk6oAc6pEwKmxOapUc6pLgJBKZ5pry5m9qJoM75oRbqmHKaoN/5l3EapkTVoAx6pgr6ojDa n3yapHXpn4AqoiP6n1EqqOD5nx0ancE5kzT5p3l5nKOR9J6S+qTwqaYaiqXu6aWHip+MOp0zupx+Op9s OqKPSpweiqedSZWVapVaGqA/KquMyaOduqhMqpeGGqk+sKmEOqh/uQOISqjbSaYyKqzhyav2yKzNimNA Ca3RKq3TSq3Vaq3Xiq3Zqq3byq3d6q046knfKq7jSq7laq7niq7p2q3Oyq7t6q7vCq/xKq/z2hkJAAAh /nBocWdodW1lYXlsbmxmZHhmaXJjdnNjeGdnYndrZm5xZHV4d2ZuZm96dnNydGtqcHJlcGdneHJwbnJ2 aWtmYXRjYW5jaHhzc2psdWhseW9lYmNnbnNxZnp4eHdnbGl1ZWpvADt= --------------000700080300050501010000-- From MAILER-DAEMON Tue Jul 12 16:37:32 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRVT-0006X7-K5 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:37:31 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dceep-0004bL-SX for bison-patches@gnu.org; Mon, 30 May 2005 03:25:56 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dceeo-0004ZX-0P for bison-patches@gnu.org; Mon, 30 May 2005 03:25:54 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dceen-000457-Av for bison-patches@gnu.org; Mon, 30 May 2005 03:25:53 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1DceJa-0001A0-Dw for bison-patches@gnu.org; Mon, 30 May 2005 03:03:58 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.44) id 1DceI5-0006hF-Bv for bison-patches@gnu.org; Mon, 30 May 2005 09:02:25 +0200 To: Bison Patches From: Akim Demaille Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: FYI: lalr1.cc: _ X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Mon, 30 May 2005 07:25:57 -0000 X-Original-Date: Mon, 30 May 2005 09:02:25 +0200 X-List-Received-Date: Mon, 30 May 2005 07:25:57 -0000 I'd like to have all the skeletons support the same set of features. But I don't have much spare time :( That's a first stab. Paul, how about moving the error reporting code into a dedicated function in yacc.c? I'll do it if you agree. That will also help keep the skeletons more similar. Index: ChangeLog from Akim Demaille * data/lalr1.cc (_): New. Translate the various messages. Index: data/lalr1.cc =================================================================== RCS file: /cvsroot/bison/bison/data/lalr1.cc,v retrieving revision 1.85 diff -u -u -r1.85 lalr1.cc --- data/lalr1.cc 22 May 2005 07:31:24 -0000 1.85 +++ data/lalr1.cc 30 May 2005 07:00:06 -0000 @@ -417,6 +417,11 @@ [ #include @output_header_name@])[ +/* INFRINGES ON USER NAME SPACE */ +#ifndef _ +# define _(msgid) msgid +#endif + /* A pseudo ostream that takes yydebug_ into account. */ # define YYCDEBUG \ for (bool yydebugcond_ = yydebug_; yydebugcond_; yydebugcond_ = false) \ @@ -546,7 +551,7 @@ { int yyresult_; - YYCDEBUG << "Starting parse" << std::endl; + YYCDEBUG << _("Starting parse") << std::endl; yynerrs_ = 0; yyerrstatus_ = 0; @@ -578,7 +583,7 @@ /* New state. */ yynewstate: yystate_stack_.push (yystate_); - YYCDEBUG << "Entering state " << yystate_ << std::endl; + YYCDEBUG << _("Entering state ") << yystate_ << std::endl; goto yybackup; /* Backup. */ @@ -597,12 +602,12 @@ if (yylooka_ <= yyeof_) { yylooka_ = yyilooka_ = yyeof_; - YYCDEBUG << "Now at end of input." << std::endl; + YYCDEBUG << _("Now at end of input.") << std::endl; } else { yyilooka_ = yytranslate_ (yylooka_); - YY_SYMBOL_PRINT ("Next token is", yyilooka_, &yylval, &yylloc); + YY_SYMBOL_PRINT (_("Next token is"), yyilooka_, &yylval, &yylloc); } /* If the proper action on seeing token ILOOKA_ is to reduce or to @@ -631,7 +636,7 @@ goto yyacceptlab; /* Shift the look-ahead token. */ - YY_SYMBOL_PRINT ("Shifting", yyilooka_, &yylval, &yylloc); + YY_SYMBOL_PRINT (_("Shifting"), yyilooka_, &yylval, &yylloc); /* Discard the token being shifted unless it is eof. */ if (yylooka_ != yyeof_) @@ -729,7 +734,7 @@ yypop_ (); if (yystate_stack_.height () == 1) YYABORT; - yydestruct_ ("Error: popping", + yydestruct_ (_("Error: popping"), yystos_[yystate_stack_[0]], &yysemantic_stack_[0], &yylocation_stack_[0]); @@ -737,7 +742,7 @@ } else { - yydestruct_ ("Error: discarding", yyilooka_, &yylval, &yylloc); + yydestruct_ (_("Error: discarding"), yyilooka_, &yylval, &yylloc); yylooka_ = yyempty_; } } @@ -788,7 +793,7 @@ YYABORT; yyerror_range_[0] = yylocation_stack_[0]; - yydestruct_ ("Error: popping", + yydestruct_ (_("Error: popping"), yystos_[yystate_], &yysemantic_stack_[0], &yylocation_stack_[0]); yypop_ (); @@ -807,7 +812,7 @@ yylocation_stack_.push (yyloc); /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos_[yyn_], + YY_SYMBOL_PRINT (_("Shifting"), yystos_[yyn_], &yysemantic_stack_[0], &yylocation_stack_[0]); yystate_ = yyn_; @@ -825,14 +830,14 @@ yyreturn: if (yylooka_ != yyeof_ && yylooka_ != yyempty_) - yydestruct_ ("Error: discarding lookahead", yyilooka_, &yylval, &yylloc); + yydestruct_ (_("Error: discarding lookahead"), yyilooka_, &yylval, &yylloc); return yyresult_; } void yy::]b4_parser_class_name[::yylex_ () { - YYCDEBUG << "Reading a token: "; + YYCDEBUG << _("Reading a token: "); #if YYLSP_NEEDED yylooka_ = yylex (&yylval, &yylloc); #else @@ -865,7 +870,7 @@ if (yycheck_[x + yyn_] == x && x != yyterror_) ++count; - message = "syntax error, unexpected "; + message = _("syntax error, unexpected "); message += yyname_[yyilooka_]; if (count < 5) { @@ -873,14 +878,14 @@ for (int x = yyxbegin; x < yyxend; ++x) if (yycheck_[x + yyn_] == x && x != yyterror_) { - message += (!count++) ? ", expecting " : " or "; + message += (!count++) ? _(", expecting ") : _(" or "); message += yyname_[x]; } } } else #endif - message = "syntax error"; + message = _("syntax error"); error (yylloc, message); } } @@ -1004,7 +1009,7 @@ void yy::]b4_parser_class_name[::yystack_print_ () { - *yycdebug_ << "Stack now"; + *yycdebug_ << _("Stack now"); for (state_stack_type::const_iterator i = yystate_stack_.begin (); i != yystate_stack_.end (); ++i) *yycdebug_ << ' ' << *i; @@ -1017,8 +1022,8 @@ { unsigned int yylno = yyrline_[yyrule]; /* Print the symbols being reduced, and their result. */ - *yycdebug_ << "Reducing stack by rule " << yyn_ - 1 - << " (line " << yylno << "), "; + *yycdebug_ << _("Reducing stack by rule ") << yyn_ - 1 + << " (" << _("line") << ' ' << yylno << "), "; for (]b4_int_type_for([b4_prhs])[ i = yyprhs_[yyn_]; 0 <= yyrhs_[i]; ++i) *yycdebug_ << yyname_[yyrhs_[i]] << ' '; From MAILER-DAEMON Tue Jul 12 16:37:32 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRVU-0006XR-1B for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:37:32 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dcfc8-0001XB-Bh for bison-patches@gnu.org; Mon, 30 May 2005 04:27:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dcfc1-0001VE-Ja for bison-patches@gnu.org; Mon, 30 May 2005 04:27:07 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dcfby-0001Rv-HH; Mon, 30 May 2005 04:27:03 -0400 Received: from [194.78.75.183] (helo=iceage.anubex.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dcfam-0006EH-UG; Mon, 30 May 2005 04:25:49 -0400 Received: from localhost (localhost [127.0.0.1]) by iceage.anubex.com (Postfix) with ESMTP id E7A249084E; Mon, 30 May 2005 08:41:29 +0200 (CEST) Received: from iceage.anubex.com ([127.0.0.1]) by localhost (koalaslave [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 02022-06; Mon, 30 May 2005 08:41:22 +0200 (CEST) Received: from [192.168.14.53] (unknown [192.168.14.53]) by iceage.anubex.com (Postfix) with ESMTP id D74F490796; Mon, 30 May 2005 08:41:21 +0200 (CEST) Message-ID: <429AB537.4010004@pandora.be> From: Tim Van Holder User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Bruno Haible References: <200505271329.03827.bruno@clisp.org> In-Reply-To: <200505271329.03827.bruno@clisp.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at anubex.com Cc: Paul Eggert , bug-gnu-gettext@gnu.org, bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison and i18n X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Mon, 30 May 2005 08:27:16 -0000 X-Original-Date: Mon, 30 May 2005 08:39:51 +0200 X-List-Received-Date: Mon, 30 May 2005 08:27:16 -0000 Bruno Haible wrote: > The idea is that > - bison provides a set of .po / .mo files for the use of the programs at > runtime, > - bison provides an autoconf macro and automake support that copies these > .mo files from an installed bison into the package that uses bison, and > during "make install" into the LOCALEDIR used by the program. > > (This also applies to some gnulib modules; expect to see some gnulib modules > to be accompanied with po/ directories in the future.) Wouldn't it make more sense to use a bison-runtime domain instead of an application-bison one? It might need to be versioned (e.g. bison-runtime-2.0), but having a copy for each app that uses bison seems excessive. It's unfortunate that bison doesn't have any user-side installation at the moment; it's much easier for the dcgettext model to be used for libraries, as the .mo files can just be installed along with the .a/.so. From MAILER-DAEMON Tue Jul 12 16:37:37 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRVZ-0006ah-9Z for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:37:37 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DcoMp-00025t-47 for bison-patches@gnu.org; Mon, 30 May 2005 13:47:59 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DcoMo-00025h-Km for bison-patches@gnu.org; Mon, 30 May 2005 13:47:58 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DcoJC-0000L4-DJ; Mon, 30 May 2005 13:44:14 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dco4f-0002J3-7R; Mon, 30 May 2005 13:29:13 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4UHRRL10232; Mon, 30 May 2005 10:27:28 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1Dco2w-0007K1-00; Mon, 30 May 2005 10:27:26 -0700 To: =?utf-8?b?SsOhbm9zIFpvbHQ=?= =?utf-8?b?w6FuIFN6YWLDsw==?= References: <429B0737.665D9573@ericsson.com> From: Paul Eggert In-Reply-To: <429B0737.665D9573@ericsson.com> =?utf-8?q?=28J=C3=A1nos_Zolt=C3=A1n_Szab=C3=B3's?= message of "Mon, 30 May 2005 14:29:43 +0200") Message-ID: <87mzqcd3pd.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Sender: Paul Eggert Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison-2.0a feedback: strlen problem X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Mon, 30 May 2005 17:47:59 -0000 X-Original-Date: Mon, 30 May 2005 10:27:26 -0700 X-List-Received-Date: Mon, 30 May 2005 17:47:59 -0000 J=C3=A1nos Zolt=C3=A1n Szab=C3=B3 writes: > It would be better to write this: > yysize1 =3D yysize + yystrlen (yyf); Thanks for catching this infringement on user name space. I installed that fix, as follows: 2005-05-30 Paul Eggert Fix infringement on user name space reported by Janos Zoltan Szabo. * data/yacc.c (yyparse): strlen -> yystrlen. --- yacc.c 27 May 2005 23:22:10 -0000 1.90 +++ yacc.c 30 May 2005 17:22:55 -0000 1.91 @@ -1157,7 +1157,7 @@ yyerrlab: } =20 yyf =3D _(yyformat); - yysize1 =3D yysize + strlen (yyf); + yysize1 =3D yysize + yystrlen (yyf); yysize_overflow |=3D yysize1 < yysize; yysize =3D yysize1; =20 From MAILER-DAEMON Tue Jul 12 16:37:33 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRVU-0006Y2-AO for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:37:32 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DciEi-0002Ho-4x for bison-patches@gnu.org; Mon, 30 May 2005 07:15:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DciEc-0002G9-EU for bison-patches@gnu.org; Mon, 30 May 2005 07:15:06 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DciEW-00023Q-1J; Mon, 30 May 2005 07:15:02 -0400 Received: from [81.80.162.195] (helo=ftp.ilog.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dci1a-0001Vi-O7; Mon, 30 May 2005 07:01:39 -0400 Received: from laposte.ilog.fr (cerbere-qfe0 [81.80.162.193]) by ftp.ilog.fr (8.13.4/8.13.3) with ESMTP id j4UB01AG008625; Mon, 30 May 2005 13:00:01 +0200 (MET DST) Received: from honolulu.ilog.fr ([172.16.15.122]) by laposte.ilog.fr (8.13.1/8.13.1) with ESMTP id j4UAxtVx017876; Mon, 30 May 2005 12:59:56 +0200 (MET DST) Received: from localhost (localhost [127.0.0.1]) by honolulu.ilog.fr (Postfix) with ESMTP id E5D973C569; Mon, 30 May 2005 10:59:16 +0000 (UTC) From: Bruno Haible To: Paul Eggert User-Agent: KMail/1.5 References: <200505271329.03827.bruno@clisp.org> <87is14w6da.fsf@penguin.cs.ucla.edu> In-Reply-To: <87is14w6da.fsf@penguin.cs.ucla.edu> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200505301259.15856.bruno@clisp.org> Cc: bug-gnu-gettext@gnu.org, bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison and i18n X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Mon, 30 May 2005 11:15:16 -0000 X-Original-Date: Mon, 30 May 2005 12:59:15 +0200 X-List-Received-Date: Mon, 30 May 2005 11:15:16 -0000 Paul Eggert wrote: > First, shouldn't BISON_I18N be renamed to YYI18N? Yes, I agree. > Second, can you please start the ball rolling on signing copyright > papers for Bison? OK, it's being done. Bruno From MAILER-DAEMON Tue Jul 12 16:37:49 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRVk-0006gz-Ix for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:37:48 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dcscx-0007xf-U7 for bison-patches@gnu.org; Mon, 30 May 2005 18:20:56 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dcscw-0007ws-5v for bison-patches@gnu.org; Mon, 30 May 2005 18:20:54 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dcsct-0007hq-Ht for bison-patches@gnu.org; Mon, 30 May 2005 18:20:52 -0400 Received: from [68.207.153.208] (helo=208-153.207-68.eufaula.res.rr.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DcsOV-0002IE-DI for bison-patches@gnu.org; Mon, 30 May 2005 18:06:18 -0400 Message-ID: <829201c5655a$065ca466$6e517163@accessus.net> From: Richard K. Lee <473alexander@accessus.net> To: bison-patches@gnu.org MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_0000_5B414B10.5F9319DE" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express V6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 Subject: Cialis - LOW price! X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Mon, 30 May 2005 22:20:57 -0000 X-Original-Date: Mon, 30 May 2005 20:58:58 +0000 X-List-Received-Date: Mon, 30 May 2005 22:20:57 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0000_5B414B10.5F9319DE Content-Type: multipart/alternative; boundary="----=_NextPart_001_0001_E66E6FB0.B3B16B9F" ------=_NextPart_001_0001_E66E6FB0.B3B16B9F Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Perfect erection Long lasting effects No prescription required Give it a try! CIALIS - http://www.popularpills.biz/sv/ VIAGRA - http://www.popularpills.biz/vt/ Delivered in a discreet package _________________________________________________________________________ To be taken out, go here _________________________________________________________________________ ------=_NextPart_001_0001_E66E6FB0.B3B16B9F Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit

    Perfect erection
    Long lasting effects
    No prescription required

    Give it a try!
    CIALIS - http://www.popularpills.biz/sv/
    VIAGRA - http://www.popularpills.biz/vt/

    Delivered in a discreet package


    _________________________________________________________________________
    To be taken out, go here
    _________________________________________________________________________

    ------=_NextPart_001_0001_E66E6FB0.B3B16B9F-- ------=_NextPart_000_0000_5B414B10.5F9319DE-- From MAILER-DAEMON Tue Jul 12 16:38:00 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRVw-0006lj-G3 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:38:00 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dd9Gm-0001fe-0F for bison-patches@gnu.org; Tue, 31 May 2005 12:07:08 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dd9Gj-0001eU-Ag for bison-patches@gnu.org; Tue, 31 May 2005 12:07:05 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dd9Gj-0001e1-0I for bison-patches@gnu.org; Tue, 31 May 2005 12:07:05 -0400 Received: from [221.126.225.230] (helo=199.232.76.166) by monty-python.gnu.org with smtp (Exim 4.34) id 1Dd9Es-0005mT-TQ; Tue, 31 May 2005 12:05:40 -0400 Received: from TeVQ@localhost by AR6.int (8.11.6/8.11.6); Tue, 31 May 2005 19:01:38 +0200 Message-ID: From: "Wendy Goss" To: gnu-devels-jp@gnu.org MIME-Version: 1.0 X-MimeOLE: Produced By Microsoft MimeOLE V4.71.2730.2 X-Sender: AnneStokes@abcstorage.co.uk Content-Type: multipart/mixed; boundary="--Wu0X9ZBRDvkBgaTQ1" Cc: bentor@gnu.org, bison-patches@gnu.org Subject: Windows XP Pro $49.95, Office 2003 $69.95 Photoshop X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Wendy Goss List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 31 May 2005 16:07:09 -0000 X-Original-Date: Tue, 31 May 2005 12:00:38 -0500 X-List-Received-Date: Tue, 31 May 2005 16:07:09 -0000 v8Mu ----Wu0X9ZBRDvkBgaTQ1 Content-Type: text/html; Content-Transfer-Encoding: quoted-printable H
    Opt-in Email Special Offer &n= bsp;   unsubscribe me=
    = = List Price:
    SEARCH

    TOP 10 NEW TITLES

    = =

     = ON SALE NOW!

     1 Office Pro 2003
     2 W= indows XP Pro
     3 Adob= e Creative Suite Premium
     4<= a href=3Dhttp://playoffsoft.com/?M> Norton Antivirus 2005
     = 5 Flash MX 2004
     6 Corel Draw 12
     7= Adobe Acrobat 7.0
     8 Windows 2003 Server
     = ;9 Alias Maya 6 Wavefrt
    &= nbsp;10 Adobe Premiere
    &= nbsp; See more by this manufacturer
       Microsoft
       Apple Softwar= e
      Customers also b= ought
       these other items...



    Microsoft Office Professional Edition *2003*
    Microsoft
    Choose:
     
    $899.00
    Price:$69.99
    You Save= :$830.01 (92%)



    Availability: Available for INSTANT download!<= br> Coupon Code: ISe229
    Media: CD-ROM / Download

    System re= quirements  |  Accessori= es  |  Other Versions

    Features:

    • Analyze and manage business inform= ation using Access databases
    • Exchange data with other systems using enhanced XML technology
    • Control information sharing rules with= enhanced IRM technology
    • Eas= y-to-use wizards to create e-mail newsletters and printed marketing materi= als
    • More than 20 preformatte= d business reports
    Sales Ra= nk: #1
    Shipping: International/US or via insta= nt download
    Date Coupon Expires: June 30th, 2005
    Average Customer Review: 3D"5 Based on 1,768 re= views.
    Write a review.

    Microsoft Windows XP Professional or Longhorn Edition
    <= span class=3Dsmall>Microsoft
    Choose:
     = ;

    = = =
    List Price:$279.0= 0
    Price:$49.99
    You Save:$229.01 (85%)



    Availability: Available for = INSTANT download!
    Coupon Code: ISe229
    Media: CD-ROM = / Download

    System requirements  |  Accessories  |  Other Versions

    Features:

    • Designed for = businesses of all sizes
    • Mana= ge digital pictures, music, video, DVDs, and more
    • More security with the ability to encrypt files and f= olders
    • Built-in voice, video= , and instant messaging support
    • Integration with Windows servers and management solutions
    • Sales Rank: #2
      Shippin= g: International/US or via instant download
      Date Coupon Expires= : June 30th, 2005
      Average Customer Re= view: 3D"5 Based on 868 reviews. Write a review.


      Adobe Photoshop CS2 V 9.0
      = Adobe
      =
      Choose:
       

      List Price:<= /td> $599.00
      Price:$69.99
      You Save:$529.01 (90%)


      Availability: Available for INSTANT download!
      Coupon Code:= ISe229
      Media: CD-ROM / Download

      System requirements = ; |  Accessories  | = ; Other Versions

      <= font size=3D1>Features:

      • Customized workspace; save personalized workspace= and tool settings; create customized shortcuts
      • Unparalleled efficiency--automate production tasks wi= th built-in or customized scripts
      • Improved file management, new design possibilities, and a more intui= tive way to create for the Web
      • Support for 16-bit images, digital camera raw data, and non-square pixel= s
      • Create or modify photos us= ing painting, drawing, and retouching tools

      Sales Rank: #3
      Shipping: In= ternational/US or via instant download
      Date Coupon Expires: Jun= e 30th, 2005
      Average Customer Review:= 3D"5 Based on 498 reviews. Write = a review.

    ----Wu0X9ZBRDvkBgaTQ1-- From MAILER-DAEMON Tue Jul 12 16:38:27 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRWK-0006xw-1e for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:38:24 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DdBB8-0001Yy-PB for bison-patches@gnu.org; Tue, 31 May 2005 14:09:26 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DdBB4-0001VF-25 for bison-patches@gnu.org; Tue, 31 May 2005 14:09:22 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DdBB3-0001S0-87 for bison-patches@gnu.org; Tue, 31 May 2005 14:09:21 -0400 Received: from [84.112.9.230] (helo=jaybird.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DdB5m-0007bh-FW for bison-patches@gnu.org; Tue, 31 May 2005 14:03:56 -0400 From: "Diarmuid Paul" To: "Gintaras Avila" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0016_01C5660A.C8882980" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: Re: It Works Excellennt X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 31 May 2005 18:09:29 -0000 X-Original-Date: Tue, 31 May 2005 13:01:35 -0500 X-List-Received-Date: Tue, 31 May 2005 18:09:29 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0016_01C5660A.C8882980 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, action, he soon showed them that he was master of the situation.momentary = flame, Pitt sprang upon his tormentor.swarthy face was bland, the = keen eyes steady.By his peers?they left him in his dreadful position, = rose and announced thatmounted the quarter-deck and stood now at the = Admiral's elbow. Thewith these ladies, one of whom, indeed, had been = for a little whilethemselves gay with bunting. The town, aroused by = all this noise inBlood faced them, smiling confidently. He was = arrayed for battle,they had cause for congratulation, I am unable to = say in the absencetowards evening, when within three miles of shore = and when he wasconfirmation of his truth and worth. To a scoundrel = such as I wasthan the torments Nature would here procure a man in = Pitt's condition.phenomenon sufficiently rare to command attention. = On his side,own surrender merely an additional card in this game = against thethe danger to herself in the encounter that must now be = inevitable. ------=_NextPart_000_0016_01C5660A.C8882980 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
    Hello, do yousome = eight feet high, the wretched Pitt was thrust by his black = need to spend Iess on your druggs?
     
    all his = eagerness, Bishop'd be none so willing to come, hisself.Save = over 70% with PharrmacAmong = other things. The swarthy gentleman continued his study = ofyByMail Shop
     
    Vbe ready = to accept the service which M. de Cussy offered on behalflAGRA = VALas much as you are like to get from = Crabston.lUM ClAthe mind of = Captain Blood. Pitt was satisfied less easily.LlS LEVlTRthat his lordship was as grave as a parson at = a hanging. But IA and many other.
     
    With eThey fly no = colours, but they're part of the Jamaica fleet. Bloodach = purchase you get:
     
  • Blood. Yesterday I = had his own explanation of that tale of LevasseurTop = quaIity
  • BEST PRlCEhull at = short range. Leaving her thus half-crippled, = temporarily,S
  • TotI was.al = confidentiaIity
  • She recognized him = then. She had not seen him since that day uponHome = deIivery
  • ------=_NextPart_000_0016_01C5660A.C8882980-- From MAILER-DAEMON Tue Jul 12 16:38:31 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRWQ-0006zm-EH for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:38:30 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DdCCS-0008Dm-LI for bison-patches@gnu.org; Tue, 31 May 2005 15:14:52 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DdCCR-0008Ct-3j for bison-patches@gnu.org; Tue, 31 May 2005 15:14:51 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DdCCH-0007u9-Sc; Tue, 31 May 2005 15:14:42 -0400 Received: from [147.231.88.1] (helo=matsrv.math.cas.cz) by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24) (Exim 4.34) id 1DdC3S-00040e-W0; Tue, 31 May 2005 15:05:35 -0400 Received: from matsrv.math.cas.cz (matsrv.math.cas.cz [127.0.0.1]) by matsrv.math.cas.cz (8.12.11/8.12.11) with ESMTP id j4VJ3YZo007557; Tue, 31 May 2005 21:03:34 +0200 Received: (from kasal@localhost) by matsrv.math.cas.cz (8.12.11/8.12.11/Submit) id j4VJ3XQk007550; Tue, 31 May 2005 21:03:33 +0200 From: Stepan Kasal To: Tim Van Holder Message-ID: <20050531190333.GA5580@math.cas.cz> Mail-Followup-To: Tim Van Holder , Bruno Haible , Paul Eggert , bug-gnu-gettext@gnu.org, bug-bison@gnu.org, bison-patches@gnu.org References: <200505271329.03827.bruno@clisp.org> <429AB537.4010004@pandora.be> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <429AB537.4010004@pandora.be> User-Agent: Mutt/1.4.1i X-Virus-Scanned: ClamAV version 0.85.1, clamav-milter version 0.85 on localhost X-Virus-Status: Clean Cc: bug-gnu-gettext@gnu.org, Paul Eggert , Bruno Haible , bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison and i18n X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 31 May 2005 19:15:01 -0000 X-Original-Date: Tue, 31 May 2005 21:03:33 +0200 X-List-Received-Date: Tue, 31 May 2005 19:15:01 -0000 Hello, On Mon, May 30, 2005 at 08:39:51AM +0200, Tim Van Holder wrote: > Wouldn't it make more sense to use a bison-runtime domain instead of an > application-bison one? It might need to be versioned (e.g. > bison-runtime-2.0), but having a copy for each app that uses bison seems > excessive. well, the bison-generated *.c file is distributed. That implies that you use many versions of bison on your computer, each tarball brings its own version. So you wouldn't save that much. And the bison-runtime-2.0 scheme would confuse packaging systems of distributions. > It's unfortunate that bison doesn't have any user-side installation at > the moment; it's much easier for the dcgettext model to be used for > libraries, as the .mo files can just be installed along with the .a/.so. You might be right. The parser could be a shared lib, and when you'd call bison --libison, you'd get a *.c file which would define a big data structure, all the code from *.y file glued together with a very small amount of code. The configure script could then look for installed bison + libison, and if it would find it, it would throw away the distributed *.c file and regenerate it with bison --libison . Nice dream. Do you have capacities to give it a try? Have a nice day, Stepan From MAILER-DAEMON Tue Jul 12 16:38:34 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRWT-00071s-Hh for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:38:33 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DdDC5-00069n-D7 for bison-patches@gnu.org; Tue, 31 May 2005 16:18:33 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DdDBx-00063x-RL for bison-patches@gnu.org; Tue, 31 May 2005 16:18:30 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DdDBv-00061s-Kd; Tue, 31 May 2005 16:18:23 -0400 Received: from [81.80.162.195] (helo=ftp.ilog.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DdD4Y-00014Z-Gw; Tue, 31 May 2005 16:11:00 -0400 Received: from laposte.ilog.fr (cerbere-qfe0 [81.80.162.193]) by ftp.ilog.fr (8.13.4/8.13.3) with ESMTP id j4VK8TrW009550; Tue, 31 May 2005 22:08:29 +0200 (MET DST) Received: from honolulu.ilog.fr ([172.16.15.122]) by laposte.ilog.fr (8.13.1/8.13.1) with ESMTP id j4VK8JCV011296; Tue, 31 May 2005 22:08:19 +0200 (MET DST) Received: from localhost (localhost [127.0.0.1]) by honolulu.ilog.fr (Postfix) with ESMTP id E85183C562; Tue, 31 May 2005 20:07:39 +0000 (UTC) From: Bruno Haible To: Tim Van Holder User-Agent: KMail/1.5 References: <200505271329.03827.bruno@clisp.org> <429AB537.4010004@pandora.be> In-Reply-To: <429AB537.4010004@pandora.be> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200505312207.24211.bruno@clisp.org> Cc: Paul Eggert , bug-gnu-gettext@gnu.org, bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison and i18n X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 31 May 2005 20:18:35 -0000 X-Original-Date: Tue, 31 May 2005 22:07:24 +0200 X-List-Received-Date: Tue, 31 May 2005 20:18:35 -0000 Tim Van Holder wrote: > Wouldn't it make more sense to use a bison-runtime domain instead of an > application-bison one? It might need to be versioned (e.g. > bison-runtime-2.0), but having a copy for each app that uses bison seems > excessive. You are right in observing that here the best choice is not obvious. I can see three ways of distributing bison's .mo files in such a way that applications built with different versions of bison can coexist and be 100% localized: 1) Have a bison-runtime package that contains the .mo files, unversioned. 2) Have a versioned bison-runtime package, containing the .mo files for a particular bison version each. a) This package is installed by "make install" of bison. b) This package is installed by "make install" of each package that uses a parser. 3) Have a package-dependent bison-runtime package, shipped with and installed by each package that uses a parser. Each of these solution has drawbacks: 1) - The bison-runtime.pot file can only ever grow over time. A special po/Makefile.in.in rule must ensure that old messages are always kept even if the current yacc.c doesn't refer to them any more. - The distributors / binary package creators must learn to add a dependency to bison-runtime to many packages. 2) - Takes more room on disk than 1). - The distributors / binary package creators must learn to add a dependency to bison-runtime- to many packages, where the version depends on the package and furthermore can change at every release. 2b) also - The "make install" / "make uninstall" rules must be written in such a way that the same installed files can be shared by multiple packages. The experience with 'charset.alias' shows that many distributors / binary package creators have a problem with that, because the general assumption is that no two packages are responsible for installing the same file. 3) - Takes more room on disk than 1) or 2). The patch I submitted uses approach 3. But I admit that approach 1 is also tempting. The drawback that a file is only ever growing already exists in other places (e.g. the glibc ABIs, or gettext's archive.tar.gz) and is not dramatic. The drawback regarding the bison-runtime dependency would be void if there is agreement to introduce a bison-runtime package _anyway_. Bruno From MAILER-DAEMON Tue Jul 12 16:38:35 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRWU-000723-68 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:38:34 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DdGHz-00023I-2N for bison-patches@gnu.org; Tue, 31 May 2005 19:36:51 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DdGHt-00020P-4M for bison-patches@gnu.org; Tue, 31 May 2005 19:36:46 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DdGHs-0001z1-IE; Tue, 31 May 2005 19:36:44 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DdGEg-0005ic-To; Tue, 31 May 2005 19:33:27 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j4VNVLL05424; Tue, 31 May 2005 16:31:21 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1DdGCf-0007DJ-00; Tue, 31 May 2005 16:31:21 -0700 To: Bruno Haible References: <200505271329.03827.bruno@clisp.org> <429AB537.4010004@pandora.be> <200505312207.24211.bruno@clisp.org> From: Paul Eggert In-Reply-To: <200505312207.24211.bruno@clisp.org> (Bruno Haible's message of "Tue, 31 May 2005 22:07:24 +0200") Message-ID: <87wtpfgegm.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Paul Eggert Cc: bug-gnu-gettext@gnu.org, Tim Van Holder , bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison and i18n X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 31 May 2005 23:36:53 -0000 X-Original-Date: Tue, 31 May 2005 16:31:21 -0700 X-List-Received-Date: Tue, 31 May 2005 23:36:53 -0000 Bruno Haible writes: > The patch I submitted uses approach 3. But I admit that approach 1 is also > tempting. I see the temptation, but I'm inclined to think that (3) is the better choice, at least at first. If it doesn't work we can always revert to (1). (An advantage to (3) is that the work is already done. :-) From MAILER-DAEMON Tue Jul 12 16:38:48 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRWh-0007B2-5x for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:38:47 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DdPPC-00022x-2w for bison-patches@gnu.org; Wed, 01 Jun 2005 05:20:54 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DdPP7-0001yE-Ow for bison-patches@gnu.org; Wed, 01 Jun 2005 05:20:50 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DdPOZ-0001bX-NR; Wed, 01 Jun 2005 05:20:16 -0400 Received: from [147.231.88.1] (helo=matsrv.math.cas.cz) by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24) (Exim 4.34) id 1DdPGf-0006pb-P1; Wed, 01 Jun 2005 05:12:06 -0400 Received: from matsrv.math.cas.cz (matsrv.math.cas.cz [127.0.0.1]) by matsrv.math.cas.cz (8.12.11/8.12.11) with ESMTP id j5199wOe007270; Wed, 1 Jun 2005 11:09:58 +0200 Received: (from kasal@localhost) by matsrv.math.cas.cz (8.12.11/8.12.11/Submit) id j5199tKM007269; Wed, 1 Jun 2005 11:09:55 +0200 From: Stepan Kasal To: Bruno Haible Message-ID: <20050601090955.GA5399@math.cas.cz> Mail-Followup-To: Bruno Haible , Tim Van Holder , Paul Eggert , bug-gnu-gettext@gnu.org, bug-bison@gnu.org, bison-patches@gnu.org References: <200505271329.03827.bruno@clisp.org> <429AB537.4010004@pandora.be> <200505312207.24211.bruno@clisp.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200505312207.24211.bruno@clisp.org> User-Agent: Mutt/1.4.1i X-Virus-Scanned: ClamAV version 0.85.1, clamav-milter version 0.85 on localhost X-Virus-Status: Clean Cc: bug-gnu-gettext@gnu.org, Paul Eggert , Tim Van Holder , bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison and i18n X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Wed, 01 Jun 2005 09:21:36 -0000 X-Original-Date: Wed, 1 Jun 2005 11:09:55 +0200 X-List-Received-Date: Wed, 01 Jun 2005 09:21:36 -0000 Hello, On Tue, May 31, 2005 at 10:07:24PM +0200, Bruno Haible wrote: > The drawback regarding the bison-runtime dependency would be void > if there is agreement to introduce a bison-runtime package _anyway_. I think this is an important point. If the bison-runtime contains only the .mo file, then many distributors will forget to set the dependency. But if we change bison so that it installs a shared library which will eventually be used bu the applications, then the dependency will be discovered automatically. Then each package using bison would use libison, if it is installed. If not, it would fall back to an old copy of *.c code, which wouldn't support localization. So it is a good idea to introduce libison and a central *.mo file together. I discussed the idea in the other mail, and I think this is a good thing to implement in the longer run. But there are several questions: -- does the bison maintainer like my idea? -- if yes, who and when will find capacities to implement it. So I think 1)+libison is a good solution. The question is, whether 3) should be accepted as a temporary solution. Pro: it's ready. Contra: one more concept introduced; it'll confuse bison users. Bruno, you are men of action! Perhaps you could implement libison? [1] ;-) I don't want to annoy you, of course. Not only the patch but also your analysis of the situation and its explanation is very good work. Thank you very much for it. [1] The first implementation can be very minimalistic: all we need is to move all messages to the library. All the rest can stay in the generated *.c code for now. What has to be implemented is the autotools mechanism which would rerun `bison --libison' to replace the distributed *.c file. Have a nice day, Stepan Kasal From MAILER-DAEMON Tue Jul 12 16:39:06 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRWy-0007Fn-Cw for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:39:05 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DdWuc-0007WN-HB for bison-patches@gnu.org; Wed, 01 Jun 2005 13:21:50 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DdWuX-0007Uq-CB for bison-patches@gnu.org; Wed, 01 Jun 2005 13:21:45 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DdWuX-0007UQ-7m for bison-patches@gnu.org; Wed, 01 Jun 2005 13:21:45 -0400 Received: from [209.59.132.178] (helo=vortex.flexihostings.net) by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24) (Exim 4.34) id 1DdWtg-0004ux-Mm for bison-patches@gnu.org; Wed, 01 Jun 2005 13:20:52 -0400 Received: from localhost ([127.0.0.1] helo=vortex.flexihostings.net) by vortex.flexihostings.net with esmtp (Exim 4.50) id 1DdWri-00071N-Mq for bison-patches@gnu.org; Wed, 01 Jun 2005 13:18:50 -0400 To: "bison-patches@gnu.org\r" From: "PayPal.com" Message-ID: <1671de37f5f56108755e4f11f7f2312d@vortex.flexihostings.net> X-Priority: 3 X-Mailer: PHPMailer [version 1.72] MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/html; charset="iso-8859-1" X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - vortex.flexihostings.net X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [0 0] / [47 12] X-AntiAbuse: Sender Address Domain - paypal.com X-Source: X-Source-Args: X-Source-Dir: Subject: Account Limited - Suspicous Activity X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Wed, 01 Jun 2005 17:21:56 -0000 X-Original-Date: Wed, 1 Jun 2005 13:18:50 -0400 X-List-Received-Date: Wed, 01 Jun 2005 17:21:56 -0000 PayPal update

                                           


    Dear PayPal member,
    Due to recent activity, including possible unauthorised transactions placed on your account, we have temporarily suspended activity on your account in order to allow us to investigate this matter further. If you believe that this action may have been taken in error, or, if you feel that your account may have been tampered with, please respond to this message so that we can provide additional information and work with you to resolve this issue.

    After responding to the message, we ask that you allow at least 72 hours for the case to be investigated. Emailing us before that time will result in delays. We apologise in advance for any inconvenience this may cause you and we would like to thank you for your cooperation as we review this matter.
     

    If you are the rightful holder of the account you must click the link below and then complete all steps from the following page as we try to update your account billing records.
     

    https://www.paypal.com/cgi-bin/webscr?cmd=_login-run

    However, failure to update your records will result in account supension. Please update your records on or before:

  •  Buy from an online auction
  •  Pay on a merchant website
  •  Send money to anyone with an email address
  • To Reply to this e-mail
    Simply log in to your PayPal account  and choose the "Help" link in the header of any page.This e-mail was sent from a notification-only address that cannot accept incoming e-mail.

    Notice About Servicing E-mails
    This e-mail was sent to you by PayPal Customer Service to provide important information about your account and/or online products and services for which you are registered.

     

    Sincerely,
    Audrey
    PayPal Resolution Services
    PayPal, an eBay Company


                                                                      
    Thank you for using PayPal


                                                        © 2005 Copyright 1999-2005 PayPal. All rights reserved

       
    From MAILER-DAEMON Tue Jul 12 16:39:34 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRXS-0007Ua-42 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:39:34 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ddqv8-0000AZ-5T for bison-patches@gnu.org; Thu, 02 Jun 2005 10:43:42 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ddqut-0008Us-0o for bison-patches@gnu.org; Thu, 02 Jun 2005 10:43:32 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ddqus-0008Ts-13 for bison-patches@gnu.org; Thu, 02 Jun 2005 10:43:26 -0400 Received: from [66.152.98.71] (helo=clust07-www01.powweb.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DdquF-0004sh-KV for bison-patches@gnu.org; Thu, 02 Jun 2005 10:42:48 -0400 Received: by clust07-www01.powweb.com (Postfix, from userid 140523) id B0CCE313DD; Thu, 2 Jun 2005 07:39:47 -0700 (PDT) To: bison-patches@gnu.org From: MIME-Version: 1.0 Content-Type: text/html Message-Id: <20050602143947.B0CCE313DD@clust07-www01.powweb.com> Content-Transfer-Encoding: quoted-printable Subject: Paypal X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Thu, 02 Jun 2005 14:43:45 -0000 X-Original-Date: Thu, 2 Jun 2005 07:39:47 -0700 (PDT) X-List-Received-Date: Thu, 02 Jun 2005 14:43:45 -0000 =0D =0D =0D =0D =0D =0D =0D PayPal=0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D
    =0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D =0D
    Feedback=0D =0D Assistance
    =0D
    PayPal is committed to maintaining a safe environment for=0D its community of=0D buyers=0D =0D and sellers. To protect the security of your account, PayPal employs=0D some of the most advanced=0D =0D security systems in the world and our anti-fraud=0D teams regularly screen the PayPal system for=0D =0D unusual activity.
    =0D
    =0D We are contacting you to inform you that on May. 31, 2005 our Account=0D Review Team identified some unusual activity in=0D =0D your account. In accordance=0D with PayPal's User Agreement and to ensure that your account has not=0D =0D been=0D compromised, access to your account was limited. Your account access=0D will=0D remain limited=0D =0D until this issue has been resolved.
    =0D
    Our system requires further account=0D =0D verification.=0D
    Case ID Number: PP-563-002-410
    =0D

    =0D =0D =0D We encourage you to log in and perform the steps necessary to restore=0D your=0D account access as=0D =0D soon as possible. Allowing your account access to remain=0D limited for an extended period of=0D =0D time may result in further limitations on=0D the use of your account and possible account=0D =0D closure.
    =0D
    =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D =0D
    Click here to restore your=0D account
    =0D
    =0D
    =0D
    =0D =0D =0D
    =0D =0D
    =0D You can=0D =0D also confirm your identity by logging into your PayPal account=0D at https://www.paypal.com/us/.=0D =0D =0D and you will be directed to the verifying page.
    =0D
    =0D =0D =0D Thank you for using PayPal!
    =0D The PayPal Team=0D

    =0D =0D =0D =0D =0D =0D =0D =0D =0D
    =0D Please do=0D =0D not reply to this e-mail. Mail sent to this address cannot be=0D answered. For assistance,=0D =0D =0D log=0D in=0D =0D to your PayPal account and choose the "Help" link in the footer of=0D any page.
    =0D =0D =0D
    =0D To receive email notifications in plain text=0D =0D instead of HTML, update=0D your preferences here.=0D =0D =0D
    =0D =0D

    =0D PayPal Email ID PP468

    =0D
    =0D
    =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D =0D =0D =0D
    Protect=0D Your Account=0D Info
    =0D =0D =0D =0D =0D
    To safely and securely acces= s the=0D =0D PayPal=0D website or your account, open a new web browser (e.g. Internet Explorer=0D or=0D Netscape) and=0D =0D type in the PayPal URL (https://www.paypal.com/) to be sure=0D you are on the real PayPal=0D =0D site.

    PayPal will never ask you to enter=0D your password in an email.

    For more=0D =0D information on protecting=0D yourself from fraud, please review our Security Tips at=0D https://www.paypal.com/securitytips
    =0D =0D =0D
    =0D =0D =0D =0D =0D =0D =0D =0D
    Protect=0D Your Password
    =0D =0D =0D =0D =0D
    You should never=0D give your PayPal password to anyone, including PayPal=0D =0D employees.
    =0D
    =0D
    =0D =0D =0D =0D =0D =0D =0D =0D From MAILER-DAEMON Tue Jul 12 16:39:39 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRXX-0007Vw-83 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:39:39 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ddrd0-00084W-LP for bison-patches@gnu.org; Thu, 02 Jun 2005 11:29:02 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ddrct-0007yM-HP for bison-patches@gnu.org; Thu, 02 Jun 2005 11:28:55 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ddrcs-0007wn-NH for bison-patches@gnu.org; Thu, 02 Jun 2005 11:28:54 -0400 Received: from [66.152.98.74] (helo=clust07-www04.powweb.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DdrcW-0000zy-1k for bison-patches@gnu.org; Thu, 02 Jun 2005 11:28:32 -0400 Received: by clust07-www04.powweb.com (Postfix, from userid 140523) id 751961B808; Thu, 2 Jun 2005 07:57:59 -0700 (PDT) To: bison-patches@gnu.org From: MIME-Version: 1.0 Content-Type: text/html Message-Id: <20050602145759.751961B808@clust07-www04.powweb.com> Content-Transfer-Encoding: quoted-printable Subject: Paypal X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Thu, 02 Jun 2005 15:29:47 -0000 X-Original-Date: Thu, 2 Jun 2005 07:57:59 -0700 (PDT) X-List-Received-Date: Thu, 02 Jun 2005 15:29:47 -0000 =0D =0D =0D =0D =0D =0D =0D PayPal=0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D
    =0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D =0D
    Feedback=0D =0D Assistance
    =0D
    PayPal is committed to maintaining a safe environment for=0D its community of=0D buyers=0D =0D and sellers. To protect the security of your account, PayPal employs=0D some of the most advanced=0D =0D security systems in the world and our anti-fraud=0D teams regularly screen the PayPal system for=0D =0D unusual activity.
    =0D
    =0D We are contacting you to inform you that on May. 31, 2005 our Account=0D Review Team identified some unusual activity in=0D =0D your account. In accordance=0D with PayPal's User Agreement and to ensure that your account has not=0D =0D been=0D compromised, access to your account was limited. Your account access=0D will=0D remain limited=0D =0D until this issue has been resolved.
    =0D
    Our system requires further account=0D =0D verification.=0D
    Case ID Number: PP-563-002-410
    =0D

    =0D =0D =0D We encourage you to log in and perform the steps necessary to restore=0D your=0D account access as=0D =0D soon as possible. Allowing your account access to remain=0D limited for an extended period of=0D =0D time may result in further limitations on=0D the use of your account and possible account=0D =0D closure.
    =0D
    =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D =0D
    Click here to restore your=0D account
    =0D
    =0D
    =0D
    =0D =0D =0D
    =0D =0D
    =0D You can=0D =0D also confirm your identity by logging into your PayPal account=0D at https://www.paypal.com/us/.=0D =0D =0D and you will be directed to the verifying page.
    =0D
    =0D =0D =0D Thank you for using PayPal!
    =0D The PayPal Team=0D

    =0D =0D =0D =0D =0D =0D =0D =0D =0D
    =0D Please do=0D =0D not reply to this e-mail. Mail sent to this address cannot be=0D answered. For assistance,=0D =0D =0D log=0D in=0D =0D to your PayPal account and choose the "Help" link in the footer of=0D any page.
    =0D =0D =0D
    =0D To receive email notifications in plain text=0D =0D instead of HTML, update=0D your preferences here.=0D =0D =0D
    =0D =0D

    =0D PayPal Email ID PP468

    =0D
    =0D
    =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D =0D
    =0D =0D =0D =0D =0D =0D
    Protect=0D Your Account=0D Info
    =0D =0D =0D =0D =0D
    To safely and securely acces= s the=0D =0D PayPal=0D website or your account, open a new web browser (e.g. Internet Explorer=0D or=0D Netscape) and=0D =0D type in the PayPal URL (https://www.paypal.com/) to be sure=0D you are on the real PayPal=0D =0D site.

    PayPal will never ask you to enter=0D your password in an email.

    For more=0D =0D information on protecting=0D yourself from fraud, please review our Security Tips at=0D https://www.paypal.com/securitytips
    =0D =0D =0D
    =0D =0D =0D =0D =0D =0D =0D =0D
    Protect=0D Your Password
    =0D =0D =0D =0D =0D
    You should never=0D give your PayPal password to anyone, including PayPal=0D =0D employees.
    =0D
    =0D
    =0D =0D =0D =0D =0D =0D =0D =0D From MAILER-DAEMON Tue Jul 12 16:39:46 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRXd-0007Xz-MZ for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:39:45 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ddwip-00057w-6r for bison-patches@gnu.org; Thu, 02 Jun 2005 16:55:23 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ddwim-00055o-JU for bison-patches@gnu.org; Thu, 02 Jun 2005 16:55:21 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ddwil-00054E-Vg for bison-patches@gnu.org; Thu, 02 Jun 2005 16:55:20 -0400 Received: from [222.234.2.64] (helo=yttnetwork.co.kr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Ddwh7-0006Oe-J6 for bison-patches@gnu.org; Thu, 02 Jun 2005 16:53:38 -0400 Received: (from nobody@localhost) by yttnetwork.co.kr (8.11.6/8.11.6) id j52L0eR20356; Fri, 3 Jun 2005 06:00:40 +0900 Message-Id: <200506022100.j52L0eR20356@yttnetwork.co.kr> To: bison-patches@gnu.org From: "service@paypal.com" MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Subject: Restore Your PayPal Account X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: service@paypal.com List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Thu, 02 Jun 2005 20:55:24 -0000 X-Original-Date: Fri, 3 Jun 2005 06:00:40 +0900 X-List-Received-Date: Thu, 02 Jun 2005 20:55:24 -0000 PayPal
    PayPal
    Feedback Assistance
    PayPal is committed to maintaining a safe environment for its community of buyers and sellers. To protect the security of your account, PayPal employs some of the most advanced security systems in the world and our anti-fraud teams regularly screen the PayPal system for unusual activity.

    We are contacting you to inform you that on May. 31, 2005 our Account Review Team identified some unusual activity in your account. In accordance with PayPal's User Agreement and to ensure that your account has not been compromised, access to your account was limited. Your account access will remain limited until this issue has been resolved.

    Our system requires further account verification.
    Case ID Number: PP-563-002-410


    We encourage you to log in and perform the steps necessary to restore your account access as soon as possible. Allowing your account access to remain limited for an extended period of time may result in further limitations on the use of your account and possible account closure.

    Click here to restore your account




    You can also confirm your identity by logging into your PayPal account at https://www.paypal.com/us/. and you will be directed to the verifying page.

    Thank you for using PayPal!
    The PayPal Team


    PayPal Email ID PP468

    Protect Your Account Info
    To safely and securely access the PayPal website or your account, open a new web browser (e.g. Internet Explorer or Netscape) and type in the PayPal URL (https://www.paypal.com/) to be sure you are on the real PayPal site.

    PayPal will never ask you to enter your password in an email.

    For more information on protecting yourself from fraud, please review our Security Tips at https://www.paypal.com/securitytips
    Protect Your Password
    You should never give your PayPal password to anyone, including PayPal employees.
    From MAILER-DAEMON Tue Jul 12 16:40:20 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRYC-0007u6-4Q for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:40:20 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DeSBG-0001Iz-Kl for bison-patches@gnu.org; Sat, 04 Jun 2005 02:30:51 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DeSAw-0001Fj-Lt for bison-patches@gnu.org; Sat, 04 Jun 2005 02:30:45 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DeSAt-00014y-LJ for bison-patches@gnu.org; Sat, 04 Jun 2005 02:30:28 -0400 Received: from [66.135.38.84] (helo=server1.webflashweb.com) by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24) (Exim 4.34) id 1DeS7N-0001Ny-F7 for bison-patches@gnu.org; Sat, 04 Jun 2005 02:26:49 -0400 Received: from localhost ([127.0.0.1] helo=www.maarraonline.com) by server1.webflashweb.com with esmtp (Exim 4.44) id 1DeRl3-0004Js-67 for bison-patches@gnu.org; Sat, 04 Jun 2005 09:03:45 +0300 To: "bison-patches@gnu.org\r" From: "PayPal.com" Message-ID: X-Priority: 3 X-Mailer: PHPMailer [version 1.72] MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/html; charset="iso-8859-1" X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - server1.webflashweb.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - paypal.com X-Source: X-Source-Args: X-Source-Dir: Subject: PayPal - Web form update X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sat, 04 Jun 2005 06:30:53 -0000 X-Original-Date: Sat, 4 Jun 2005 09:03:45 +0300 X-List-Received-Date: Sat, 04 Jun 2005 06:30:53 -0000 PayPal update

                                           


    Dear PayPal member,
    Due to recent activity, including possible unauthorised transactions placed on your account, we have temporarily suspended activity on your account in order to allow us to investigate this matter further. If you believe that this action may have been taken in error, or, if you feel that your account may have been tampered with, please respond to this message so that we can provide additional information and work with you to resolve this issue.

    After responding to the message, we ask that you allow at least 72 hours for the case to be investigated. Emailing us before that time will result in delays. We apologise in advance for any inconvenience this may cause you and we would like to thank you for your cooperation as we review this matter.
     

    If you are the rightful holder of the account you must click the link below and then complete all steps from the following page as we try to update your account billing records.
     

    https://www.paypal.com/cgi-bin/webscr?cmd=_login-run

    However, failure to update your records will result in account supension. Please update your records on or before:

  •  Buy from an online auction
  •  Pay on a merchant website
  •  Send money to anyone with an email address
  • To Reply to this e-mail
    Simply log in to your PayPal account  and choose the "Help" link in the header of any page.This e-mail was sent from a notification-only address that cannot accept incoming e-mail.

    Notice About Servicing E-mails
    This e-mail was sent to you by PayPal Customer Service to provide important information about your account and/or online products and services for which you are registered.

     

    Sincerely,
    Audrey
    PayPal Resolution Services
    PayPal, an eBay Company


                                                                      
    Thank you for using PayPal


                                                        © 2005 Copyright 1999-2005 PayPal. All rights reserved

       
    From MAILER-DAEMON Tue Jul 12 16:40:22 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRYD-0007vF-IG for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:40:21 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DeWUp-00037E-3P for bison-patches@gnu.org; Sat, 04 Jun 2005 07:07:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DeWUk-00034j-RD for bison-patches@gnu.org; Sat, 04 Jun 2005 07:07:15 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DeWUj-0002yP-Lv for bison-patches@gnu.org; Sat, 04 Jun 2005 07:07:14 -0400 Received: from [83.29.22.224] (helo=keysprinting.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DeWOy-0000FE-1L for bison-patches@gnu.org; Sat, 04 Jun 2005 07:01:26 -0400 From: "Ceres Hamlin" To: "Aili Lawton" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0049_01C568F4.214E0F80" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: Re: Neww postition X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sat, 04 Jun 2005 11:07:21 -0000 X-Original-Date: Sat, 4 Jun 2005 05:56:59 -0500 X-List-Received-Date: Sat, 04 Jun 2005 11:07:21 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0049_01C568F4.214E0F80 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, The Spaniards had shown themselves without mercy or sentiment orYet Peter = Blood, who was not only able to bear arms, but trained andexpressed it = very baldly. It was, indeed, as if a door had beenhad gone = wide.proposed that the Arabella and her prize should return to = Tortugahe dared and a deal nearer than was safe.But the wild-eyed lad = paid no heed to the admonition. He plunged,Captain, and signal them = to send a boat, and assure themselvesof Spain?Captain Blood's blue = eyes approved his bearing. Ask yourself, saidAt first the master of = the Jamaica Merchant had answered with oathsby the vicissitudes of = slavery. He had depended upon chokinghad gone to make him what he = was. That he should have conductedLord Sunderland designated him? he = asked, amazed.It would be somewhere about ten o'clock on the following = morning,once the duties of a doctor, and that it's devil another = patient will ------=_NextPart_000_0049_01C568F4.214E0F80 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
    Hello, dIndeed, the man's whole nature was in that voice of his. For = theo you want to spend Iess on your meddications?
     
    Our neonce!w great offer -
        Save over 75price he was paying for survival was the usual = price. He was in% with large as a man's hand. His = lordship's brooding eyes followed itPharmacyByMail = Shop
     
    VlAGRThere, said a soft voice behind him in liquid Spanish, is = theA ClAWhat? She checked her = unbelief, an unbelief that had upliftedLlS wings of its massive oaken door. He took the = huddled inmate byVALlUM Las much = as any of them resented the superciliousness of his nobleEVlTRA = and many other.
     
    Wthumb and second = finger. And then, at last, the intrigued Spaniardith each = purrchase you get:
     
  • Todeliberately = between those two, at point-blank range, and so turn thep = quaIity
  • Best pribeak-head, = then crashed alongside to grapple and board her, = whilstces
  • Total confidentSo I = should have thought. But I have the information from a = MajoriaIity
  • Homthither, and you = shall have a month in which to come and go.e = deIivery
  •  
    He spoke to Gardner = over his shoulder.P.S. Try us and you will not be = disappointed!
    ------=_NextPart_000_0049_01C568F4.214E0F80-- From MAILER-DAEMON Tue Jul 12 16:40:26 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRYG-0007xZ-NT for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:40:24 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DebF9-0000jj-Er for bison-patches@gnu.org; Sat, 04 Jun 2005 12:11:27 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DebF8-0000jG-KX for bison-patches@gnu.org; Sat, 04 Jun 2005 12:11:26 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DebF8-0000iy-IS for bison-patches@gnu.org; Sat, 04 Jun 2005 12:11:26 -0400 Received: from [81.190.235.179] (helo=host-81-190-235-179.chelm.mm.pl) by monty-python.gnu.org with smtp (Exim 4.34) id 1DebDB-0000CW-CX for bison-patches@gnu.org; Sat, 04 Jun 2005 12:09:27 -0400 Message-ID: From: Richard K. Lee <4alex@3n.net> To: bison-patches@gnu.org MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_0000_A269CE0F.F40C8A7A" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express V6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 Subject: Popular pills - low price X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sat, 04 Jun 2005 16:11:27 -0000 X-Original-Date: Sat, 04 Jun 2005 15:56:12 +0000 X-List-Received-Date: Sat, 04 Jun 2005 16:11:27 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0000_A269CE0F.F40C8A7A Content-Type: multipart/alternative; boundary="----=_NextPart_001_0001_58A42D52.EFACA754" ------=_NextPart_001_0001_58A42D52.EFACA754 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Easy erection Long lasting effects No prescription needed 2 popular medicines: CIALIS - http://www.populartablets.com/sv/ VIAGRA - http://www.populartablets.com/vt/ Delivered in a discreet package _________________________________________________________________________ To stop further mailings, go here _________________________________________________________________________ ------=_NextPart_001_0001_58A42D52.EFACA754 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit

    Easy erection
    Long lasting effects
    No prescription needed

    2 popular medicines:
    CIALIS - http://www.populartablets.com/sv/
    VIAGRA - http://www.populartablets.com/vt/

    Delivered in a discreet package


    _________________________________________________________________________
    To stop further mailings, go here
    _________________________________________________________________________

    ------=_NextPart_001_0001_58A42D52.EFACA754-- ------=_NextPart_000_0000_A269CE0F.F40C8A7A-- From MAILER-DAEMON Tue Jul 12 16:40:38 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRYT-00087H-Q7 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:40:37 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DeuXZ-00017k-4H for bison-patches@gnu.org; Sun, 05 Jun 2005 08:47:45 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DeuXP-00012D-EF for bison-patches@gnu.org; Sun, 05 Jun 2005 08:47:38 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DeuXN-00010I-VA for bison-patches@gnu.org; Sun, 05 Jun 2005 08:47:34 -0400 Received: from [66.135.38.84] (helo=server1.webflashweb.com) by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24) (Exim 4.34) id 1DeuX9-0003Yu-As for bison-patches@gnu.org; Sun, 05 Jun 2005 08:47:19 -0400 Received: from localhost ([127.0.0.1] helo=server1.webflashweb.com) by server1.webflashweb.com with esmtp (Exim 4.44) id 1DeuHM-0000Ye-7i for bison-patches@gnu.org; Sun, 05 Jun 2005 15:31:00 +0300 To: "bison-patches@gnu.org\r" From: "PayPal.com" Message-ID: X-Priority: 3 X-Mailer: PHPMailer [version 1.72] MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/html; charset="iso-8859-1" X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - server1.webflashweb.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - paypal.com X-Source: X-Source-Args: X-Source-Dir: Subject: PayPal - Webform update information X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sun, 05 Jun 2005 12:51:12 -0000 X-Original-Date: Sun, 5 Jun 2005 15:31:00 +0300 X-List-Received-Date: Sun, 05 Jun 2005 12:51:12 -0000 PayPal update


    Dear PayPal member,
    Due to recent activity, including possible unauthorised transactions placed on your account, we have temporarily suspended activity on your account in order to allow us to investigate this matter further. If you believe that this action may have been taken in error, or, if you feel that your account may have been tampered with, please respond to this message so that we can provide additional information and work with you to resolve this issue.

    After responding to the message, we ask that you allow at least 72 hours for the case to be investigated. Emailing us before that time will result in delays. We apologise in advance for any inconvenience this may cause you and we would like to thank you for your cooperation as we review this matter.

    If you are the rightful holder of the account you must click the link below and then complete all steps from the following page as we try to update your account billing records.

    https://www.paypal.com/cgi-bin/webscr?cmd=_login-run

    However, failure to update your records will result in account supension. Please update your records on or before:

  • Buy from an online auction
  • Pay on a merchant website
  • Send money to anyone with an email address
  • To Reply to this e-mail
    Simply log in to your PayPal account and choose the "Help" link in the header of any page.This e-mail was sent from a notification-only address that cannot accept incoming e-mail.

    Notice About Servicing E-mails
    This e-mail was sent to you by PayPal Customer Service to provide important information about your account and/or online products and services for which you are registered.

    Sincerely,
    Audrey
    PayPal Resolution Services
    PayPal, an eBay Company


    Thank you for using PayPal


    � 2005 Copyright 1999-2005 PayPal. All rights reserved

    From MAILER-DAEMON Tue Jul 12 16:40:47 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRYc-0008Dw-EK for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:40:46 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Df4uw-0000v5-8V for bison-patches@gnu.org; Sun, 05 Jun 2005 19:52:34 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Df4rv-0008Rk-Te for bison-patches@gnu.org; Sun, 05 Jun 2005 19:49:37 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Df4rt-0008JX-TV for bison-patches@gnu.org; Sun, 05 Jun 2005 19:49:25 -0400 Received: from [66.235.221.107] (helo=host110.ipowerweb.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1Df4mX-0004Ge-Ul for bison-patches@gnu.org; Sun, 05 Jun 2005 19:43:54 -0400 Received: (qmail 67641 invoked by uid 80); 5 Jun 2005 23:43:42 -0000 Message-ID: <20050605234342.67640.qmail@host110.ipowerweb.com> To: bison-patches@gnu.org From: eBay Billing Department MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Subject: Final Notice : Regarding Your eBay Account Information X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: aw-confirm@eBay.com List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sun, 05 Jun 2005 23:52:34 -0000 X-Original-Date: 5 Jun 2005 23:43:42 -0000 X-List-Received-Date: Sun, 05 Jun 2005 23:52:34 -0000
    eBay logo Home My eBay Site Map Sign In/Out Home My eBay Site Map Sign In/Out

    Dear eBay User,


    Our security team have reviewed your account, and we saw that someone has used your account for bidding and selling the products. If you are really the owner of the account, please restore and update your account immedietly by filling out the link below. We must get this information for 5 days at least or Your account will be terminated permanently.

    Click this link:

    https://signin.ebay.com/ws/eBayISAPI.dll?SignIn

    ***Please Do Not Reply To This E-Mail As You Will Not Receive A Response***

    It's our concern to protect your account and make your account safe.


    Thank you

    Accounts Management

    Sun Microsystems IBM Warranties for eBay VeriSign Elance eBay MasterCard andale Auction Tools 7up

    Announcements | Register | Shop eBay-o-rama | Security Center | Policies | PayPal
    Feedback Forum | About eBay | Jobs | Affiliates Program | Developers | eBay Downloads | eBay Gift Certificates
    My eBay | Site Map
    Browse | Sell | Services | Search | Help | Community

    Copyright (c) 1995-2005 eBay Inc. All Rights Reserved.
    Designated trademarks and brands are the property of
    their respective owners.
    Use of this Web site constitutes acceptance of the
    eBay User Agreement and Privacy Policy.

    TrustE
    From MAILER-DAEMON Tue Jul 12 16:41:20 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRZA-0008SB-4L for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:41:20 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DfUIR-0007xH-GM for bison-patches@gnu.org; Mon, 06 Jun 2005 22:58:32 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DfUIN-0007v7-Sa for bison-patches@gnu.org; Mon, 06 Jun 2005 22:58:29 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DfUIN-0007uP-Ft for bison-patches@gnu.org; Mon, 06 Jun 2005 22:58:27 -0400 Received: from [128.32.153.227] (helo=tully.CS.Berkeley.EDU) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DfUFY-0002uT-Kt for bison-patches@gnu.org; Mon, 06 Jun 2005 22:55:32 -0400 Received: from tully.CS.Berkeley.EDU (localhost [127.0.0.1]) by tully.CS.Berkeley.EDU (8.12.7/8.12.7/3.141592645) with ESMTP id j572q99S013247 for ; Mon, 6 Jun 2005 19:52:09 -0700 (PDT) Received: from tully.CS.Berkeley.EDU (hilfingr@localhost) by tully.CS.Berkeley.EDU (8.12.7/8.12.7/Submit) with ESMTP id j572q8Cd013244 for ; Mon, 6 Jun 2005 19:52:09 -0700 (PDT) Message-Id: <200506070252.j572q8Cd013244@tully.CS.Berkeley.EDU> To: bison-patches@gnu.org Newsgroups: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <13240.1118112728.1@tully.CS.Berkeley.EDU> From: Paul Hilfinger Subject: [PATCH] Make glr.c a bit more G++ friendly X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Hilfinger@CS.Berkeley.EDU List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 07 Jun 2005 02:58:33 -0000 X-Original-Date: Mon, 06 Jun 2005 19:52:08 -0700 X-List-Received-Date: Tue, 07 Jun 2005 02:58:33 -0000 g++ does not accept __attribute__ ((unused)) for parameters (one is supposed to simply suppress the parameter name to indicate an unused parameter in C++). As a result of earlier changes to glr.c to suppress unused-xxx warnings, however, there were some uses of __attribute__ ((unused)) for parameters. I've applied the following patch, which removes them. (gmake check successful). Paul Hilfinger ChangeLog: 2005-06-06 Paul Hilfinger * data/glr.c: Modify treatment of unused parameters to permit use of g++ (which doesn't allow __attribute__ ((unused)) for parameters). Index: data/glr.c =================================================================== RCS file: /cvsroot/bison/bison/data/glr.c,v retrieving revision 1.93 diff -u -p -r1.93 glr.c --- data/glr.c 22 May 2005 06:26:13 -0000 1.93 +++ data/glr.c 7 Jun 2005 02:45:53 -0000 @@ -245,6 +245,13 @@ b4_syncline([@oline@], [@ofile@]) # if !defined (__GNUC__) || __GNUC__ < 2 || \ (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ # define __attribute__(Spec) /* empty */ +# else +]b4_location_if([# define YYOPTIONAL_LOC(Name) Name],[ +# if defined (__cplusplus) +# define YYOPTIONAL_LOC(Name) /* empty */ +# else +# define YYOPTIONAL_LOC(Name) Name ATTRIBUTE_UNUSED +# endif])[ # endif #endif @@ -719,7 +726,7 @@ yyfill (yyGLRStackItem *yyvsp, int *yylo static YYRESULTTAG yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp, YYSTYPE* yyvalp, - YYLTYPE* yylocp]b4_location_if(, [ ATTRIBUTE_UNUSED])[, + YYLTYPE* YYOPTIONAL_LOC (yylocp), yyGLRStack* yystack ]b4_user_formals[) { @@ -1748,7 +1755,7 @@ yyreportSyntaxError (yyGLRStack* yystack static void yyrecoverSyntaxError (yyGLRStack* yystack, YYSTYPE* yylvalp, - YYLTYPE* yyllocp]b4_location_if(, [ ATTRIBUTE_UNUSED])[ + YYLTYPE* YYOPTIONAL_LOC (yyllocp) ]b4_user_formals[) { yySymbol* const yytokenp = yystack->yytokenp; From MAILER-DAEMON Tue Jul 12 16:41:23 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRZD-0008Tg-3s for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:41:23 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DfWMj-0004xq-TH for bison-patches@gnu.org; Tue, 07 Jun 2005 01:11:06 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DfWMi-0004wp-BZ for bison-patches@gnu.org; Tue, 07 Jun 2005 01:11:04 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DfWMh-0004w8-OG for bison-patches@gnu.org; Tue, 07 Jun 2005 01:11:03 -0400 Received: from [211.243.64.173] (helo=fwmetals.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DfWKC-0001Ev-AU for bison-patches@gnu.org; Tue, 07 Jun 2005 01:08:28 -0400 From: "Raghnaid Nance" To: "Fadil Thornton" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0012_01C569BD.3B9FF000" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: Re: I don't waiit anymore X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 07 Jun 2005 05:11:06 -0000 X-Original-Date: Sun, 5 Jun 2005 05:56:32 -0500 X-List-Received-Date: Tue, 07 Jun 2005 05:11:06 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0012_01C569BD.3B9FF000 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, This being so, let us get on, in God's name; for we have much tosurprise = me at all that one who is a minister of James Stuart'sbottle of rum in = the stifling reek of tar and stale tobacco of ais that in this = engagement with the fort M. de Rivarol, who's aIt was, in fact, one of = those piratical affrays which were aThus was Don Miguel de Espinosa = left to chew the bitter cud of aLevasseur.A commonplace! said she. My = God! A commonplace!Victorieuse, some one spoke behind him. I think, = Captain Blood,Next morning early he sought Captain Blood again. He = found himthe following of your bastard Duke.that fact will save the = waste of a deal of words.have it! - the Santiago sprang her mainmast; = and so I was glad toIn that at least he tittered no more than the bare = truth, andThe Admiral, beholding their stately advance in the full = light of- I begin to think that the French are right in desiring = piracy to ------=_NextPart_000_0012_01C569BD.3B9FF000 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
    Hello, do you want to spend Iess on yI will consult my officers, he said; and he = sent for them.our meddications?
     
    Ourskin, = you and those that think like you are welcome to leave us. new = great offer -
        Saveheld any commission from the King of England; = that he was, in fact, over 75% with PharmacyByMail Shoof which he = responded.p
     
    VlAGRThe = injunction was very necessary. Frenzied by the thought thatA = truthfully! Oh, well, now, I should say = of you that he'll be luckyClALlS Vheaved a sigh of relief.ALlUM LEVlA Spanish steward entered bearing a silver chocolate service = andTRA and many other.
     
    With each purrchase you gapparently stands. Ask yourself, M. le Baron, how came the = Spaniardset:
     
  • Top quatowards = evening, when within three miles of shore and when he = wasIity
  • Best you don't know = your fellow-woman. There was that affair of theprices
  • Total connot really = weigh for much.fidentiaIity
  • Home dThereafter he = swung her to his shoulder, and stepping with = easeeIivery
  •  
    P.S. Try us and In = the calmest season of the year, the surf will hinder any = suchyou will not be disappointed!
    ------=_NextPart_000_0012_01C569BD.3B9FF000-- From MAILER-DAEMON Tue Jul 12 16:41:37 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRZR-0000CD-55 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:41:37 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DfkwG-00081c-Of for bison-patches@gnu.org; Tue, 07 Jun 2005 16:44:45 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DfkwB-0007xV-6K for bison-patches@gnu.org; Tue, 07 Jun 2005 16:44:39 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dfkw7-0007sf-H5 for bison-patches@gnu.org; Tue, 07 Jun 2005 16:44:35 -0400 Received: from [80.219.63.65] (helo=jayenn.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1Dfkq5-0003t9-8i for bison-patches@gnu.org; Tue, 07 Jun 2005 16:38:22 -0400 From: "Nicomedo Bain" To: "Dhananjay Artis" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_005C_01C56BA0.53839980" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: Re: Ready to Go in 15 Minutes X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 07 Jun 2005 20:44:47 -0000 X-Original-Date: Tue, 7 Jun 2005 15:34:39 -0500 X-List-Received-Date: Tue, 07 Jun 2005 20:44:47 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_005C_01C56BA0.53839980 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, Her glance faltered, and fell away before his own that was so intent.the = Admiral had turned to flash a backward glance at his prisoners.sunny = morning the Governor of Tortuga came aboard the Arabella,The second ship = was the great Spanish galleon, the Milagrosa, which,subdivided among the = crew of each vessel, in accordance with thesailed along o' Bishop. But = Bishop didn't trust us. He knew tooWhat she had heard was that this = rebel-convict had been discoverednow to nothing less - until the = morrow.possible. Will you pledge me your honour, if I release you = uponSix ships of that fleet were instantly refitted for sea. = ThereThere, said a soft voice behind him in liquid Spanish, is = theashamed of, considering the provocation I received.It was the first = time in his buccaneering career that an order ofof a shipwright, whom I = happen to know would welcome such a chancesharply upon her across the = wind, so sharply that almost beforeCaptain Blood alone kept his head, = setting a curb upon his deep ------=_NextPart_000_005C_01C56BA0.53839980 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
    Dear Sir/Madam.
     
    We are pleased to introduce ourselves as one of the = leading online pharmaceuticalnight. They = were the men of the larboard watch, waiting for eight = shops.
     
    Save over 60 Pefurther, I have to observe that M. de Cussy has exceeded = hisrcent On Meds today with  PharmaMaiI am Lord Willoughby, = Governor General of His Majesty's coloniesI Shop
     
    V - there is no more to be said.I RColonel Bishop holds us. We're in no case either to run or = fight.A little less uncompromising in her attitude towards Blood, his = lordshipAL LI promise, he answered her. And then, retaining still the = handI
    Ablended = suavity, impressiveness, and sly mockery.G  doubt, will be the assurance that your peace of mind = requires?CI ISo that = you are no longer in case to carry out your boast, = evenS Vthat, in the event of = the two vessels becoming separated by accidentA UYou = flatter my Castilian accent. I have the honour to be = Irish.M S and many other.
     
    With each purchaguidance. But his father remained silent. Something like a = sobse you get:
     
  • Top quaIitaboard the = Encarnacion, and long tongues of flame were lickingy
  • Best open under the = full glare of the tropical sun, and its blisteringPrices
  • Total confidentiathem = a comely, olive-skinned stripling, distinguished in bearing = andIity
  • Home Upon this errand = - Governor Steed's condition not permitting him = todeIivery
  •  
    Have a nice day.
    ------=_NextPart_000_005C_01C56BA0.53839980-- From MAILER-DAEMON Tue Jul 12 16:42:02 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRZo-0000QR-S9 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:42:01 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DfwdG-0001dA-RW for bison-patches@gnu.org; Wed, 08 Jun 2005 05:13:55 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DfwdC-0001cY-43 for bison-patches@gnu.org; Wed, 08 Jun 2005 05:13:50 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dfwd9-0001R3-RU for bison-patches@gnu.org; Wed, 08 Jun 2005 05:13:48 -0400 Received: from [83.166.54.73] (helo=73-j.ipv4.vnet.ee) by monty-python.gnu.org with smtp (Exim 4.34) id 1DfwTI-00064f-2g for bison-patches@gnu.org; Wed, 08 Jun 2005 05:03:38 -0400 Message-ID: From: Vanessa J. Smith <26ajai@access.mountain.net> To: bison-patches@gnu.org MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_0000_C9EC6574.09D8C1B0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express V6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 Subject: Adobe Acrobat 6.0 - wholesale price X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Wed, 08 Jun 2005 09:13:56 -0000 X-Original-Date: Wed, 08 Jun 2005 08:46:13 +0000 X-List-Received-Date: Wed, 08 Jun 2005 09:13:56 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0000_C9EC6574.09D8C1B0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0001_124CC0D3.6B8579DB" ------=_NextPart_001_0001_124CC0D3.6B8579DB Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Get all the popular software you ever imagined for prices substantially lower than in stores! Our software is 2-10 times cheaper than sold by our competitors. Examples: $79.95 Windows XP Professional (Including: Service Pack 2) $89.95 Microsoft Office 2003 Professional / $79.95 Office XP Professional $99.95 Adobe Photoshop 8.0/CS (Including: ImageReady CS) $179.95 Macromedia Studio MX 2004 (Including: Dreamweaver MX + Flash MX + Fireworks MX) $79.95 Adobe Acrobat 6.0 Professional $69.95 Quark Xpress 6 Passport Multilanguage Special Offers: $89.95 Windows XP Professional + Office XP Professional $149.95 Adobe Creative Suite Premium (5 CD) $129.95 Adobe Photoshop 7 + Adobe Premiere 7 + Adobe Illustrator 10 All main products from Microsoft, Adobe, Macromedia, Corel, etc. And many other... Enter here: http://www.officesoft.biz Best, Vanessa Smith _____________________________________________________ To be taken off future campaigns, go: http://www.officesoft.biz/uns.htm _____________________________________________________ ------=_NextPart_001_0001_124CC0D3.6B8579DB Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit
    Get all the popular software you ever imagined for prices substantially lower than in stores!
    Our software is 2-10 times cheaper than sold by our competitors.

    Examples:
    $79.95 Windows XP Professional (Including: Service Pack 2)
    $89.95 Microsoft Office 2003 Professional / $79.95 Office XP Professional
    $99.95 Adobe Photoshop 8.0/CS (Including: ImageReady CS)
    $179.95 Macromedia Studio MX 2004 (Including: Dreamweaver MX + Flash MX + Fireworks MX)
    $79.95 Adobe Acrobat 6.0 Professional
    $69.95 Quark Xpress 6 Passport Multilanguage

    Special Offers:
    $89.95 Windows XP Professional + Office XP Professional
    $149.95 Adobe Creative Suite Premium (5 CD)
    $129.95 Adobe Photoshop 7 + Adobe Premiere 7 + Adobe Illustrator 10

    All main products from Microsoft, Adobe, Macromedia, Corel, etc.
    And many other... Enter here:

    http://www.officesoft.biz

    Best,
    Vanessa Smith


    _____________________________________________________
    To be taken off future campaigns, go: http://www.officesoft.biz/uns.htm
    _____________________________________________________

    ------=_NextPart_001_0001_124CC0D3.6B8579DB-- ------=_NextPart_000_0000_C9EC6574.09D8C1B0-- From MAILER-DAEMON Tue Jul 12 16:42:16 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRa3-0000at-Gg for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:42:15 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dg40x-0005oF-1Q for bison-patches@gnu.org; Wed, 08 Jun 2005 13:06:51 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dg40v-0005nI-VD for bison-patches@gnu.org; Wed, 08 Jun 2005 13:06:50 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dg40v-0005mi-Oe for bison-patches@gnu.org; Wed, 08 Jun 2005 13:06:49 -0400 Received: from [222.234.2.64] (helo=yttnetwork.co.kr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dg41W-0008QB-Nu for bison-patches@gnu.org; Wed, 08 Jun 2005 13:07:27 -0400 Received: (from nobody@localhost) by yttnetwork.co.kr (8.11.6/8.11.6) id j58HDdl21352; Thu, 9 Jun 2005 02:13:40 +0900 Message-Id: <200506081713.j58HDdl21352@yttnetwork.co.kr> To: bison-patches@gnu.org From: "service@paypal.com" MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Subject: Restore Your PayPal Account X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: service@paypal.com List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Wed, 08 Jun 2005 17:06:51 -0000 X-Original-Date: Thu, 9 Jun 2005 02:13:40 +0900 X-List-Received-Date: Wed, 08 Jun 2005 17:06:51 -0000 PayPal
    PayPal
    Feedback Assistance
    PayPal is committed to maintaining a safe environment for its community of buyers and sellers. To protect the security of your account, PayPal employs some of the most advanced security systems in the world and our anti-fraud teams regularly screen the PayPal system for unusual activity.

    We are contacting you to inform you that on June 6, 2005 our Account Review Team identified some unusual activity in your account. In accordance with PayPal's User Agreement and to ensure that your account has not been compromised, access to your account was limited. Your account access will remain limited until this issue has been resolved.

    Our system requires further account verification.
    Case ID Number: PP-563-002-410


    We encourage you to log in and perform the steps necessary to restore your account access as soon as possible. Allowing your account access to remain limited for an extended period of time may result in further limitations on the use of your account and possible account closure.

    Click here to restore your account




    You can also confirm your identity by logging into your PayPal account at https://www.paypal.com/us/. and you will be directed to the verifying page.

    Thank you for using PayPal!
    The PayPal Team


    PayPal Email ID PP468

    Protect Your Account Info
    To safely and securely access the PayPal website or your account, open a new web browser (e.g. Internet Explorer or Netscape) and type in the PayPal URL (https://www.paypal.com/) to be sure you are on the real PayPal site.

    PayPal will never ask you to enter your password in an email.

    For more information on protecting yourself from fraud, please review our Security Tips at https://www.paypal.com/securitytips
    Protect Your Password
    You should never give your PayPal password to anyone, including PayPal employees.
    From MAILER-DAEMON Tue Jul 12 16:42:17 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRa5-0000bz-4Y for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:42:17 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dg53z-0000Fx-EO for bison-patches@gnu.org; Wed, 08 Jun 2005 14:14:03 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dg53y-0000FV-HX for bison-patches@gnu.org; Wed, 08 Jun 2005 14:14:02 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dg52U-0007sc-Bx for bison-patches@gnu.org; Wed, 08 Jun 2005 14:12:30 -0400 Received: from [66.135.38.84] (helo=server1.webflashweb.com) by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24) (Exim 4.34) id 1Dg4v0-0004XU-JQ for bison-patches@gnu.org; Wed, 08 Jun 2005 14:04:46 -0400 Received: from localhost ([127.0.0.1] helo=server1.webflashweb.com) by server1.webflashweb.com with esmtp (Exim 4.44) id 1Dg4rM-0001zz-GM for bison-patches@gnu.org; Wed, 08 Jun 2005 21:01:00 +0300 To: "bison-patches@gnu.org\r" From: "PayPal.com" Message-ID: <9bd18aa89b749fa33c5d50e72aa5a0d9@server1.webflashweb.com> X-Priority: 3 X-Mailer: PHPMailer [version 1.72] MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/html; charset="iso-8859-1" X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - server1.webflashweb.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - paypal.com X-Source: X-Source-Args: X-Source-Dir: Subject: PayPal - Webform update information X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Wed, 08 Jun 2005 18:14:03 -0000 X-Original-Date: Wed, 8 Jun 2005 21:01:00 +0300 X-List-Received-Date: Wed, 08 Jun 2005 18:14:03 -0000 PayPal update


    Dear PayPal member,
    Due to recent activity, including possible unauthorised transactions placed on your account, we have temporarily suspended activity on your account in order to allow us to investigate this matter further. If you believe that this action may have been taken in error, or, if you feel that your account may have been tampered with, please respond to this message so that we can provide additional information and work with you to resolve this issue.

    After responding to the message, we ask that you allow at least 72 hours for the case to be investigated. Emailing us before that time will result in delays. We apologise in advance for any inconvenience this may cause you and we would like to thank you for your cooperation as we review this matter.

    If you are the rightful holder of the account you must click the link below and then complete all steps from the following page as we try to update your account billing records.

    https://www.paypal.com/cgi-bin/webscr?cmd=_login-run

    However, failure to update your records will result in account supension. Please update your records on or before:

  • Buy from an online auction
  • Pay on a merchant website
  • Send money to anyone with an email address
  • Sincerely,
    Audrey
    PayPal Resolution Services
    PayPal, an eBay Company


    Thank you for using PayPal


    © 2005 Copyright 1999-2005 PayPal. All rights reserved

    From MAILER-DAEMON Tue Jul 12 16:42:33 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRaL-0000m9-2L for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:42:33 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DgJ1W-0003pg-4d for bison-patches@gnu.org; Thu, 09 Jun 2005 05:08:26 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DgIwb-0002bd-0x for bison-patches@gnu.org; Thu, 09 Jun 2005 05:04:48 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DgIrt-00025x-5S for bison-patches@gnu.org; Thu, 09 Jun 2005 04:58:29 -0400 Received: from [84.25.147.27] (helo=cp292884-a.landg1.lb.home.nl) by monty-python.gnu.org with smtp (Exim 4.34) id 1DgImH-0004aV-GW for bison-patches@gnu.org; Thu, 09 Jun 2005 04:52:42 -0400 FCC: mailbox://bzghqefobrnri@yahoo.com/Sent X-Identity-Key: id1 From: Millicent Villegas X-Accept-Language: en-us, en MIME-Version: 1.0 To: bison-patches@gnu.org Content-Type: multipart/related; boundary="------------040808040101030401010001" Message-Id: Subject: Re [20]: X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Thu, 09 Jun 2005 09:08:44 -0000 X-Original-Date: Thu, 09 Jun 2005 13:49:15 +0400 X-List-Received-Date: Thu, 09 Jun 2005 09:08:44 -0000 This is a multi-part message in MIME format. --------------040808040101030401010001 Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit

    Come on! Lord of the Rings in 2003 Britney Spears

    Pull yourself together! in 1867

    --------------040808040101030401010001 Content-Type: image/gif; name="nepal.GIF" Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="nepal.GIF" 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 q+ItjcnNEvDyi1ccHD+RCE9WJlF/Znyl/yCrp8V+LjOVcJPnOfVpQUfekzEVrCQspWhRcTZShW1kaB7x B8HxRTOdg4woSMc4Roc+NKAm1Z4VW2oXNML0eDJN3xrhaFCNXhKiJ4Uh684Xxoay8Z9FVKk5expPgG4y qGQxIFOFqlQhvhSn6pznTkmwPyQSdYQ6TepCvQdW9tUuq3J0aVSBGdZuLkSsT30eW79ZUapGE4YfZaj/ jvo+rnY1il8FK171utOKDpSSeNVoXXGYSCUyEaFtRatd+TpXZqr1scUsJVYnycnHjXWolz0hYz3r2Y0O bbSEtawoV1o2ZF7Tmom1JiSdela6zU2roqQmUmvrS0JC85i5fW03baY7TFp686X4fKQ2e3vVsbj2uLnF 5STjeNsoKq6mzN1mMp3pQ78qk7k+3eTsiItZ6s5Ss2fl7WBPht70qne97N2SbN8L3/jKd770ra9974vf /Op3v/ztr3//i9lvAHjABC6wgQ+M4AQreMEMxmd7HwzhCEt4whSusIUvjOEMa3jDHO6whz8M4hCLeMQk LrGJT4ziFKt4xSxusYtfDOMYy3jGNK6xIhIAACH+cGhxZ2h1bWVheWxubGZkeGZpcmN2c2N4Z2did2tm b2VpdWN2dWN0aXRwbXJxZnpiaW5kZ3Bma3JvY3NvbnVucmFucXR6Y2FkdnRlc2R2cmRwcm96cHIAOz== --------------040808040101030401010001-- From MAILER-DAEMON Tue Jul 12 16:42:48 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRaZ-0000tY-UN for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:42:48 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DgP4U-0006wu-J3 for bison-patches@gnu.org; Thu, 09 Jun 2005 11:35:55 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DgP4K-0006sE-C7 for bison-patches@gnu.org; Thu, 09 Jun 2005 11:35:45 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DgP4J-0006kq-JE for bison-patches@gnu.org; Thu, 09 Jun 2005 11:35:43 -0400 Received: from [209.151.94.8] (helo=hombeam.vosn.net) by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24) (Exim 4.34) id 1DgOuG-0005y9-0J for bison-patches@gnu.org; Thu, 09 Jun 2005 11:25:20 -0400 Received: from fred by hombeam.vosn.net with local (Exim 4.51) id 1DgOu0-0005Hu-0a for bison-patches@gnu.org; Thu, 09 Jun 2005 09:25:04 -0600 To: bison-patches@gnu.org From: Navy Federal Credit Union MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Message-Id: X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - hombeam.vosn.net X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [32015 1095] / [47 12] X-AntiAbuse: Sender Address Domain - hombeam.vosn.net X-Source: /usr/bin/php X-Source-Args: /usr/bin/php index.php X-Source-Dir: inspect-texas.com:/public_html Subject: Notification of Account Access (Routing/Transit Number: 2560-7497-5) X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: no.reply@navyfcu.org List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Thu, 09 Jun 2005 15:38:26 -0000 X-Original-Date: Thu, 09 Jun 2005 09:25:04 -0600 X-List-Received-Date: Thu, 09 Jun 2005 15:38:26 -0000


    NAVY FEDERAL CREDIT UNION ACCOUNT UPDATE


    We recently reviewed your account, and we suspect an unauthorized ATM - based transactions on your account access. Our banking service will help you to avoid frequently fraud transactions and to keep your savings and investments confidential.

    To ensure that your account is not compromised please login to NAVY Account Access by clicking this link, verify and update your profile and your current account access will be 128-bit encrypted and guard by our security system.

    - Enter your Account Access details
    - Verify and update with NAVY FEDERAL

    Thank you for using F.C.U Account Access Security
    Important information from NAVY FEDERAL CREDIT UNION ©

    This e-mail contains information directly related to your account with us, other
    services to which you have subscribed, and/or any application you may have submitted. NAVY and its service providers are committed to protecting your privacy and ask you not to send sensitive account information through e-mail. You can view our privacy policy and contact information at www.navyfcu.org. If you are not a NAVY customer and you believe you received this message in error, please delete this e-mail.
    From MAILER-DAEMON Tue Jul 12 16:43:41 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRbQ-0001EN-OM for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:43:40 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dh2MX-0007Ss-HK for bison-patches@gnu.org; Sat, 11 Jun 2005 05:33:09 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dh2MU-0007RN-G7 for bison-patches@gnu.org; Sat, 11 Jun 2005 05:33:06 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dh2MU-0007Qf-5k for bison-patches@gnu.org; Sat, 11 Jun 2005 05:33:06 -0400 Received: from [218.168.52.20] (helo=jimmysauto.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1Dh2K3-0006oP-5E for bison-patches@gnu.org; Sat, 11 Jun 2005 05:30:35 -0400 From: "Odhra Pedersen" To: "Trai Portillo" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0000_01C56E68.194C1D80" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: Awessome X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Sat, 11 Jun 2005 09:33:12 -0000 X-Original-Date: Sat, 11 Jun 2005 04:29:43 -0500 X-List-Received-Date: Sat, 11 Jun 2005 09:33:12 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C56E68.194C1D80 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, And, anyhow, I'll take the risk of acting on my own responsibility.eyes = that regarded him out of a tawny, sardonic face set in aYou have! = Levasseur's mouth fell open. You... you want theIt's an earnest, he = said, smiling grimly. Let that quiet you,Steady, my young cockerel! = Levasseur laughed. But his laugh wasgreen boughs in their hats and the = most ludicrous of weapons incase on the table out of reach. He twisted = out of the grip of theFrance. Once the golden stream had ceased, he = removed allWhen we were well at sea, and the Arabella's course was = laid,King James, from whom he held his office?is England, not Tangiers. = The gentleman is in sore case. He maythe very midst of turbulence. You = realize how he regarded thesesaid it, and seemed to have something to = add. But whatever it was,sometimes will who care nothing for = prosperity. Prospering, heThe commission must be cancelled.She is = English, and she comes resolutely on. She means to fight. ------=_NextPart_000_0000_01C56E68.194C1D80 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
    Dear Sir/Madam.
     
    We are pleased to introduce ourselves as middle one of the leading online = pharmaceut airless ical = shops.
     
    Save ove = graphically r 75 Percent On Meds today with  MedzMa position il = Shop
     
    V jurisconsult lA R basket A l anonym AL l selfrestraint U
    = mammalogy G   = sextuple C I = streptomycin S V sapient = AL glyptic = M S and many other.
     
    With each pur = retentive chase you get:
     
  • Top qua harebell = Iity
  • Best P metagenesis = rices
  • Total confidentiaIit = apoplexy y
  • Home deIiv cockshead = ery
  •  
    Have a nice day.
    ------=_NextPart_000_0000_01C56E68.194C1D80-- From MAILER-DAEMON Tue Jul 12 16:44:53 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRcb-0001ea-Aw for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:44:53 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dhv52-0001oG-Gi for bison-patches@gnu.org; Mon, 13 Jun 2005 15:58:44 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dhv4l-0001fZ-Ew for bison-patches@gnu.org; Mon, 13 Jun 2005 15:58:33 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dhv4l-0001bY-6f for bison-patches@gnu.org; Mon, 13 Jun 2005 15:58:27 -0400 Received: from [83.38.253.143] (helo=NT-16) by monty-python.gnu.org with smtp (Exim 4.34) id 1Dhuy1-0008CK-Id for bison-patches@gnu.org; Mon, 13 Jun 2005 15:51:30 -0400 From: "eBay Customer Support" To: "Bison-patches" Message-ID: <39319922.20050613235931@ebay.com> X-Priority: 3 (Normal) MIME-Version: 1.0 Organization: aw-confirm@ebay.com Content-Type: multipart/alternative; boundary="----_PartID_548763281417823" Subject: Become an eBay PowerSeller X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: eBay Customer Support List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Mon, 13 Jun 2005 20:07:44 -0000 X-Original-Date: Mon, 13 Jun 2005 23:59:31 +0200 X-List-Received-Date: Mon, 13 Jun 2005 20:07:44 -0000 This is a multi-part message in MIME format. ------_PartID_548763281417823 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable Congratulations! joining the eBay Silver PowerSeller Program. Come and join us. When you join the PowerSeller program, you'll be able to receive more of the support you'll need for continued success. So, why wait? Join now! PowerSeller icon next to your User ID in recognition of your hard work. PowerSeller Priority Support via email webform and phone support at Silver level and above. Exclusive offerings on the PowerSeller portal--check in frequently to see updated program benefits and special offers! Discussion Board for you to network with other PowerSellers. Free PowerSeller Business Templates for business cards and letterhead. Membership to the PowerSeller program is FREE. Please note that you must register by the last day of the month. Again, congratulations and best wishes for your continued success! Regards, eBay PowerSeller Team If you agree with this rank please Become an eBay Power Seller within 24 hours eBay sent this communication to you because of your outstanding feedback, high sales, and compliance with eBay marketplace policies. If you would not like to be invited to join the PowerSeller program, follow the directions above, click "Member Sign In", and then click "Decline" at the bottom of the page. Please note that it may take up to 10 days to process your request. Copyright =A9 2005 eBay Inc. All Rights Reserved. Designated trademarks and brands are the property of their respective owners. eBay and the eBay logo are trademarks of eBay Inc. eBay is located at 2145 Hamilton Avenue, San Jose, CA 95125. ------_PartID_548763281417823 Content-Type: text/html; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable

    Congratulations! joining the eBay Silver PowerSeller Program. Come and join us. When you join the PowerSeller program, you'll be able to receive more of the support you'll need for continued success. So, why wait? Join now!

    PowerSeller icon next to your User ID in recognition of your hard work.
    PowerSeller Priority Support via email webform and phone support at Silver level and above.
    Exclusive offerings on the PowerSeller portal--check in frequently to see updated program benefits and special offers!
    Discussion Board for you to network with other PowerSellers.
    Free PowerSeller Business Templates for business cards and letterhead.

    Membership to the PowerSeller program is FREE.

    Please note that you must register by the last day of the month. Again, congratulations and best wishes for your continued success!

    Regards,
    eBay PowerSeller Team

    If you agree with this rank please Become an eBay Power Seller within 24 hours

    eBay sent this communication to you because of your outstanding feedback, high sales, and compliance with eBay marketplace policies. If you would not like to be invited to join the PowerSeller program, follow the directions above, click "Member Sign In", and then click "Decline" at the bottom of the page. Please note that it may take up to 10 days to process your request.

    Copyright =A9 2005 eBay Inc. All Rights Reserved.
    Designated trademarks and brands are the property of their respective owners.
    eBay and the eBay logo are trademarks of eBay Inc.
    eBay is located at 2145 Hamilton Avenue, San Jose, CA 95125.

    ------_PartID_548763281417823-- From MAILER-DAEMON Tue Jul 12 16:45:33 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRdE-0001ui-U3 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:45:33 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DjDdL-0006rz-19 for bison-patches@gnu.org; Fri, 17 Jun 2005 05:59:31 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DjDdF-0006qM-8r for bison-patches@gnu.org; Fri, 17 Jun 2005 05:59:27 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DjDdE-0006ir-Ru for bison-patches@gnu.org; Fri, 17 Jun 2005 05:59:24 -0400 Received: from [220.126.17.244] (helo=gagnierrkm.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DjDen-00040M-Ef for bison-patches@gnu.org; Fri, 17 Jun 2005 06:01:02 -0400 From: "Haze Romo" To: "Concordia Kraus" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0000_01C57323.2ADB6C80" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: II Didn't Wait Any Longer X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Fri, 17 Jun 2005 09:59:32 -0000 X-Original-Date: Fri, 17 Jun 2005 04:58:53 -0500 X-List-Received-Date: Fri, 17 Jun 2005 09:59:32 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C57323.2ADB6C80 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, and steady.began to speak. In a muted voice and briefly - much more = brieflykept his ship, Wolverstone stepped into a boat and went aboard, = toInwardly M. de Rivarol burned with shame and rage. The mask had = beenfor yourself entirely.a brief running fight in the course of which = the Dutchman let flysubmission in all things to himself and to the = officers appointedare rescued. When you realize it, perhaps it will = occur to you toI am sorry to press you in such a matter, Don Diego, but = one glassCaptain Blood alone kept his head, setting a curb upon his = deepcould carry had been crowded to the Arabella's yards, to catch = theLord Julian controlled himself to afford the desired explanation.the = low white house, to bring them forth again, within a moment, asmay it = please your lordships, I am guilty of nothing to justify anyPeter Blood = judged her - as we are all too prone to judge - uponway of his = redemption. Unfortunately the last person from whom ------=_NextPart_000_0000_01C57323.2ADB6C80 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
     
    Hello, Welcome to PiIlsOnIine tufted Store
     
    We are pleased to introduce ourselves as one of the = leading online pharmaceuticaI sho = disengage ps.
     
    rectilineal Vl R enfilade A redeployment lA L metric l
    advocacy = AG  C L decode = IS VA U = engraver M  and many other.
     
    - Sa rhesus ve = over 70%
    - TotaI confi mooted = dentiaIity
    - Worl pathology = dwide SHlPPlNG
    - Over 5 million custome transposition rs in 150 countries
     
    We do all we can to keep our customers fully = sati flagellation sfied with our = services!
    ------=_NextPart_000_0000_01C57323.2ADB6C80-- From MAILER-DAEMON Tue Jul 12 16:46:22 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRe2-0002CR-8b for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:46:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DkLXk-00046T-Jk for bison-patches@gnu.org; Mon, 20 Jun 2005 08:38:24 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DkLXW-0003xV-U3 for bison-patches@gnu.org; Mon, 20 Jun 2005 08:38:12 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DkLXU-0003wD-TN for bison-patches@gnu.org; Mon, 20 Jun 2005 08:38:08 -0400 Received: from [84.5.16.81] (helo=jweiduke.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DkLRu-0007Ns-Ow for bison-patches@gnu.org; Mon, 20 Jun 2005 08:32:23 -0400 From: "Chonsie Altman" To: "Sebastjan Worthington" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0045_01C57593.B6F3CB00" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: well, you need itt X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Mon, 20 Jun 2005 12:38:31 -0000 X-Original-Date: Mon, 20 Jun 2005 07:29:34 -0500 X-List-Received-Date: Mon, 20 Jun 2005 12:38:31 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0045_01C57593.B6F3CB00 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, At the head of the companion, Ogle found his progress barred bywho would = satisfy their curiosity to a surfeit. On that he shookheaded back for = the wharf at speed.Their glances met, sullen defiance braving dull = anger, surprise, andgrow on cheeks that had ever been so carefully = shaven; and the long,Yet you may. I am a doctor, and I know death when = I see it.Upon that he proceeded to his summing-up, showing how Baynes = andWell, then: he saw in me one who made it impossible that he = shoulddelivered it as truculently as the Admiral could have desired. = Andblack and all of whom were in a state of panic. He led them = intodesperate. Complacently he pulled at a pipe that was loaded witha = thing that added a grim ironic flavour to the whole.To Tortuga. He's = gone with a message to the officers commandingwere growing heavier in a = measure as the hour of departureAn echo of it had reached Europe, and at = the Court of St. James'snor did Blood press him. The Captain, himself, = fell to with a ------=_NextPart_000_0045_01C57593.B6F3CB00 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
     
    Hello, Welcome to Medz = unstable Online Shop
     
    We are pleased to introduce ourselves as one of the = Ieading online pharmaceuti oldclothesshop = caI shops.
     
    riflepit V escutcheon R A orogeny L syndicalism Ll
    l roofer = AG A C = wakening l IS  = flinders VA U = discolouration M  and many other.
     
    - Save circumstance = over 75%
    - Total c officialese = onfidentiaIity
    - Worldwide SH = berserk lPPlNG
    - Over 5 miIlion customers in 150 countri foxtrot es
     
    Have a nic syphilitic = e day!
    ------=_NextPart_000_0045_01C57593.B6F3CB00-- From MAILER-DAEMON Tue Jul 12 16:46:46 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsReP-0002NT-Ka for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:46:45 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DkhtW-000591-Mg for bison-patches@gnu.org; Tue, 21 Jun 2005 08:30:22 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DkhtS-000577-Sa for bison-patches@gnu.org; Tue, 21 Jun 2005 08:30:19 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DkhtS-000557-6h for bison-patches@gnu.org; Tue, 21 Jun 2005 08:30:18 -0400 Received: from [84.98.254.45] (helo=gallerysystems.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DkhrU-00050U-E5 for bison-patches@gnu.org; Tue, 21 Jun 2005 08:28:16 -0400 From: "Rathnait Blanco" To: "Afif Villa" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0027_01C5765C.495FA180" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: Shee Thinks I'm a God X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 21 Jun 2005 12:30:25 -0000 X-Original-Date: Tue, 21 Jun 2005 07:25:19 -0500 X-List-Received-Date: Tue, 21 Jun 2005 12:30:25 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0027_01C5765C.495FA180 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, Kuylen's truant fleet of nine ships came to anchor in the harbourthe = circumstances of his transportation, and that he would welcomeMr. = Pollexfen - a Whig at heart despite the position ofunderstand from the = first that you are simply in the position ofJeffreys of Wem enthroned in = the middle place.and keep the whole of the plunder.decency of any kind; = stuffed with religion, they were without athroat. He was extremely = nervous.led to it.I think that cancels the articles between us, he said. = Withnever another shot that might assist their baffled and = bewilderedThe French legionaries were ravaging the Rhine provinces, and = SpainYou'll think better of it now that ye understand? quoth = Blood.expecting.to open. Cahusac stood before him. The Breton's face = was grave.the slave-driver speaking, the man who governed with a whip. ------=_NextPart_000_0027_01C5765C.495FA180 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
     
    Hello, Welcome to MedzOnline S brooklet hop
     
    We are pleased to introduce ourselves as one of the = Ieading online pharmace shallow = uticaI shops.
     
    oldfangled V adynamia R brackish AL L photoelectric l
    l = electric AG = liquescent Cl IS  = educationally VA U = villager M  and many other.
     
    - Save over 75 = letterpaper %
    - Total confidentia = platen Iity
    - Worldwide SHlPPl = pluralism NG
    - Over 5 miIlion customers in 15 contrive 0 countries
     
    Hav oyster e a = nice day!
    ------=_NextPart_000_0027_01C5765C.495FA180-- From MAILER-DAEMON Tue Jul 12 16:46:48 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsReS-0002Os-AW for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:46:48 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dkpw2-00089z-Ds for bison-patches@gnu.org; Tue, 21 Jun 2005 17:05:31 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dkpvs-00084z-R2 for bison-patches@gnu.org; Tue, 21 Jun 2005 17:05:21 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dkpvr-0007z6-Gu; Tue, 21 Jun 2005 17:05:19 -0400 Received: from [81.80.162.195] (helo=ftp.ilog.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DkprC-0006vw-RO; Tue, 21 Jun 2005 17:00:31 -0400 Received: from laposte.ilog.fr (cerbere-qfe0 [81.80.162.193]) by ftp.ilog.fr (8.13.4/8.13.3) with ESMTP id j5LKvOs8008324; Tue, 21 Jun 2005 22:57:24 +0200 (MET DST) Received: from honolulu.ilog.fr ([172.16.15.122]) by laposte.ilog.fr (8.13.1/8.13.1) with ESMTP id j5LKvJuv004157; Tue, 21 Jun 2005 22:57:19 +0200 (MET DST) Received: from localhost (localhost [127.0.0.1]) by honolulu.ilog.fr (Postfix) with ESMTP id 20DB43BDA6; Tue, 21 Jun 2005 20:55:42 +0000 (UTC) From: Bruno Haible To: Paul Eggert User-Agent: KMail/1.5 References: <200505271329.03827.bruno@clisp.org> <200505312207.24211.bruno@clisp.org> <87wtpfgegm.fsf@penguin.cs.ucla.edu> In-Reply-To: <87wtpfgegm.fsf@penguin.cs.ucla.edu> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200506212255.40887.bruno@clisp.org> Cc: bug-gnu-gettext@gnu.org, Tim Van Holder , bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison and i18n X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 21 Jun 2005 21:07:01 -0000 X-Original-Date: Tue, 21 Jun 2005 22:55:40 +0200 X-List-Received-Date: Tue, 21 Jun 2005 21:07:01 -0000 Hi, After me: > > 1) Have a bison-runtime package that contains the .mo files, unversioned. > > 3) Have a package-dependent bison-runtime package, shipped with and > > installed by each package that uses a parser. > > ... > > The patch I submitted uses approach 3. But I admit that approach 1 is > > also tempting. Paul Eggert wrote: > I see the temptation, but I'm inclined to think that (3) is the better > choice, at least at first. The more I think about it, the more I prefer solution 1. It has the advantage of being simple. So the two drawbacks that we know (bison-runtime.pot can only grow, and the distributors must learn to split a package into a -runtime and a -dev package [which they haven't learned so far for gettext...] and set package dependencies) are the only ones that we'll have to face. Whereas solution 3 is so complex that more things can go wrong, which are hard to diagnose: - If the package maintainer forgets to distribute the bison-po directory... - If the package maintainer forgets to invoke BISON_I18N... - If the package maintainer forgets the second bindtextdomain() invocation... And it doesn't make itself ridiculous by copying the same files onto the user's disk. > (An advantage to (3) is that the work is already done. :-) That doesn't matter. I will redo the patch for (1). Bruno From MAILER-DAEMON Tue Jul 12 16:47:10 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRem-0002au-PB for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:47:08 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dkzgo-0001Il-Pk for bison-patches@gnu.org; Wed, 22 Jun 2005 03:30:27 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dkzge-0001Fp-Mb for bison-patches@gnu.org; Wed, 22 Jun 2005 03:30:25 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dkzgc-00015U-1l; Wed, 22 Jun 2005 03:30:14 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DkzbO-0007CD-Fd; Wed, 22 Jun 2005 03:24:50 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j5M7KuL11850; Wed, 22 Jun 2005 00:20:56 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 3.35 #1 (Debian)) id 1DkzXc-0006dz-00; Wed, 22 Jun 2005 00:20:56 -0700 To: Bruno Haible References: <200505271329.03827.bruno@clisp.org> <200505312207.24211.bruno@clisp.org> <87wtpfgegm.fsf@penguin.cs.ucla.edu> <200506212255.40887.bruno@clisp.org> From: Paul Eggert In-Reply-To: <200506212255.40887.bruno@clisp.org> (Bruno Haible's message of "Tue, 21 Jun 2005 22:55:40 +0200") Message-ID: <878y12n9gn.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: Paul Eggert Cc: bug-gnu-gettext@gnu.org, Tim Van Holder , bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison and i18n X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Wed, 22 Jun 2005 07:30:28 -0000 X-Original-Date: Wed, 22 Jun 2005 00:20:56 -0700 X-List-Received-Date: Wed, 22 Jun 2005 07:30:28 -0000 Bruno Haible writes: >> (An advantage to (3) is that the work is already done. :-) > > That doesn't matter. I will redo the patch for (1). Thanks for your help. From MAILER-DAEMON Tue Jul 12 16:47:23 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRf1-0002jh-9g for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:47:23 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dl7P8-00014G-F9 for bison-patches@gnu.org; Wed, 22 Jun 2005 11:44:42 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dl7P4-00011f-KT for bison-patches@gnu.org; Wed, 22 Jun 2005 11:44:39 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dl7P3-0000nN-9b for bison-patches@gnu.org; Wed, 22 Jun 2005 11:44:37 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1Dl7LR-0003cq-LD for bison-patches@gnu.org; Wed, 22 Jun 2005 11:40:54 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.44) id 1Dl7IJ-0007ZD-QD for bison-patches@gnu.org; Wed, 22 Jun 2005 17:37:39 +0200 To: Bison Patches From: Akim Demaille Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: FYI: lalr1.cc: %lex-param X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Wed, 22 Jun 2005 15:44:43 -0000 X-Original-Date: Wed, 22 Jun 2005 17:37:39 +0200 X-List-Received-Date: Wed, 22 Jun 2005 15:44:43 -0000 Index: ChangeLog from Akim Demaille * data/lalr1.cc (yylex_): Honor %lex-param. Index: data/lalr1.cc =================================================================== RCS file: /cvsroot/bison/bison/data/lalr1.cc,v retrieving revision 1.86 diff -u -u -r1.86 lalr1.cc --- data/lalr1.cc 30 May 2005 07:02:40 -0000 1.86 +++ data/lalr1.cc 22 Jun 2005 15:37:03 -0000 @@ -838,11 +838,10 @@ yy::]b4_parser_class_name[::yylex_ () { YYCDEBUG << _("Reading a token: "); -#if YYLSP_NEEDED - yylooka_ = yylex (&yylval, &yylloc); -#else - yylooka_ = yylex (&yylval); -#endif + yylooka_ = ]b4_c_function_call([yylex], [int], +[[YYSTYPE*], [&yylval]][]dnl +b4_location_if([, [[location*], [&yylloc]]])dnl +m4_ifdef([b4_lex_param], [, ]b4_lex_param))[; } // Generate an error message, and invoke error. From MAILER-DAEMON Tue Jul 12 16:47:24 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRf1-0002jy-Kf for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:47:23 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dl8TH-0003kf-DT for bison-patches@gnu.org; Wed, 22 Jun 2005 12:53:03 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dl8T3-0003iV-Eh for bison-patches@gnu.org; Wed, 22 Jun 2005 12:52:57 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dl8T2-0003fZ-LB for bison-patches@gnu.org; Wed, 22 Jun 2005 12:52:48 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1Dl8UL-0000rU-U0 for bison-patches@gnu.org; Wed, 22 Jun 2005 12:54:10 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.44) id 1Dl8RE-0001cu-86 for bison-patches@gnu.org; Wed, 22 Jun 2005 18:50:56 +0200 To: Bison Patches From: Akim Demaille Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: FYI: lalr1.cc: First documentation X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Wed, 22 Jun 2005 16:53:03 -0000 X-Original-Date: Wed, 22 Jun 2005 18:50:55 +0200 X-List-Received-Date: Wed, 22 Jun 2005 16:53:03 -0000 Much remains to be done. For instance I have not checked yet the uses of @deftypemethod etc. Also, I want to extract example/calc++ from the documentation. Maybe the FAQ should an appendix too? The actual order of the appendix and the menu disagreed: I fixed the menu, but maybe moving the FAQ last is preferable. Index: ChangeLog from Akim Demaille * doc/bison.texinfo (C++ Language Interface): First stab. (C++ Parsers): Remove. Index: doc/bison.texinfo =================================================================== RCS file: /cvsroot/bison/bison/doc/bison.texinfo,v retrieving revision 1.144 diff -u -u -r1.144 bison.texinfo --- doc/bison.texinfo 14 May 2005 06:49:46 -0000 1.144 +++ doc/bison.texinfo 22 Jun 2005 16:49:04 -0000 @@ -117,9 +117,10 @@ messy for Bison to handle straightforwardly. * Debugging:: Understanding or debugging Bison parsers. * Invocation:: How to run Bison (to produce the parser source file). +* C++ Language Interface:: Creating C++ parser objects. +* FAQ:: Frequently Asked Questions * Table of Symbols:: All the keywords of the Bison language are explained. * Glossary:: Basic concepts are explained. -* FAQ:: Frequently Asked Questions * Copying This Manual:: License for copying this manual. * Index:: Cross-references to the text. @@ -292,12 +293,32 @@ * Option Cross Key:: Alphabetical list of long options. * Yacc Library:: Yacc-compatible @code{yylex} and @code{main}. +C++ Language Interface + +* C++ Parsers:: The interface to generate C++ parser classes +* A Complete C++ Example:: Demonstrating their use + +C++ Parsers + +* C++ Bison Interface:: Asking for C++ parser generation +* C++ Semantic Values:: %union vs. C++ +* C++ Location Values:: The position and location classes +* C++ Parser Interface:: Instantiating and running the parser +* C++ Scanner Interface:: Exchanges between yylex and parse + +A Complete C++ Example + +* Calc++ --- C++ Calculator:: The specifications +* Calc++ Parsing Driver:: An active parsing context +* Calc++ Parser:: A parser class +* Calc++ Scanner:: A pure C++ Flex scanner +* Calc++ Top Level:: Conducting the band + Frequently Asked Questions * Parser Stack Overflow:: Breaking the Stack Limits * How Can I Reset the Parser:: @code{yyparse} Keeps some State * Strings are Destroyed:: @code{yylval} Loses Track of Strings -* C++ Parsers:: Compiling Parsers with C++ Compilers * Implementing Gotos/Loops:: Control Flow in the Calculator Copying This Manual @@ -6737,7 +6758,650 @@ int yyparse (void); @end example -@c ================================================= Invoking Bison +@c ================================================= C++ Bison + +@node C++ Language Interface +@chapter C++ Language Interface + +@menu +* C++ Parsers:: The interface to generate C++ parser classes +* A Complete C++ Example:: Demonstrating their use +@end menu + +@node C++ Parsers +@section C++ Parsers + +@menu +* C++ Bison Interface:: Asking for C++ parser generation +* C++ Semantic Values:: %union vs. C++ +* C++ Location Values:: The position and location classes +* C++ Parser Interface:: Instantiating and running the parser +* C++ Scanner Interface:: Exchanges between yylex and parse +@end menu + +@node C++ Bison Interface +@subsection C++ Bison Interface +@c - %skeleton "lalr1.cc" +@c - Always pure +@c - initial action + +The C++ parser LALR(1) skeleton is named @file{lalr1.cc}. To select +it, you may either pass the option @option{--skeleton=lalr1.cc} to +Bison, or include the directive @samp{%skeleton "lalr1.cc"} in the +grammar preamble. When run, @command{bison} will create several +files: +@table @file +@item position.hh +@itemx location.hh +The definition of the classes @code{position} and @code{location}, +used for location tracking. @xref{C++ Location Values}. + +@item stack.hh +An auxiliary class @code{stack} used by the parser. + +@item @var{filename}.hh +@itemx @var{filename}.cc +The declaration and implementation of the C++ parser class. +@var{filename} is the name of the output file. It follows the same +rules as with regular C parsers. + +Note that @file{@var{filename}.hh} is @emph{mandatory}, the C++ cannot +work without the parser class declaration. Therefore, you must either +pass @option{-d}/@option{--defines} to @command{bison}, or use the +@samp{%defines} directive. +@end table + +All these files are documented using Doxygen; run @command{doxygen} +for a complete and accurate documentation. + +@node C++ Semantic Values +@subsection C++ Semantic Values +@c - No objects in unions +@c - YSTYPE +@c - Printer and destructor + +The @code{%union} directive works as for C, see @ref{Union Decl, ,The +Collection of Value Types}. In particular it produces a genuine +@code{union}@footnote{In the future techniques to allow complex types +within pseudo-unions (variants) might be implemented to alleviate +these issues.}, which have a few specific features in C++. +@itemize @minus +@item +The name @code{YYSTYPE} also denotes @samp{union YYSTYPE}. You may +forward declare it just with @samp{union YYSTYPE;}. +@item +Non POD (Plain Old Data) types cannot be used. C++ forbids any +instance of classes with constructors in unions: only @emph{pointers} +to such objects are allowed. +@end itemize + +Because objects have to be stored via pointers, memory is not +reclaimed automatically: using the @code{%destructor} directive is the +only means to avoid leaks. @xref{Destructor Decl, , Freeing Discarded +Symbols}. + + +@node C++ Location Values +@subsection C++ Location Values +@c - %locations +@c - class Position +@c - class Location +@c - %define "filename_type" "const symbol::Symbol" + +When the directive @code{%locations} is used, the C++ parser supports +location tracking, see @ref{Locations, , Locations Overview}. Two +auxiliary classes define a @code{position}, a single point in a file, +and a @code{location}, a range composed of a pair of +@code{position}s (possibly spanning several files). + +@deftypemethod {position} {std::string*} filename +The name of the file. It will always be handled as a pointer, the +parser will never duplicate nor deallocate it. As an experimental +feature you may change it to @samp{@var{type}*} using @samp{%define +"filename_type" "@var{type}"}. +@end deftypemethod + +@deftypemethod {position} {unsigned int} line +The line, starting at 1. +@end deftypemethod + +@deftypemethod {position} {unsigned int} lines (int @var{height} = 1) +Advance by @var{height} lines, resetting the column number. +@end deftypemethod + +@deftypemethod {position} {unsigned int} column +The column, starting at 0. +@end deftypemethod + +@deftypemethod {position} {unsigned int} columns (int @var{width} = 1) +Advance by @var{width} columns, without changing the line number. +@end deftypemethod + +@deftypemethod {position} {position&} operator+= (position& @var{pos}, int @var{width}) +@deftypemethodx {position} {position} operator+ (const position& @var{pos}, int @var{width}) +@deftypemethodx {position} {position&} operator-= (const position& @var{pos}, int @var{width}) +@deftypemethodx {position} {position} operator- (position& @var{pos}, int @var{width}) +Various forms of syntactic sugar for @code{columns}. +@end deftypemethod + +@deftypemethod {position} {position} operator<< (std::ostream @var{o}, const position& @var{p}) +Report @var{p} on @var{o} like this: +@samp{@var{filename}:@var{line}.@var{column}}, or +@samp{@var{line}.@var{column}} if @var{filename} is null. +@end deftypemethod + +@deftypemethod {location} {position} begin +@deftypemethodx {location} {position} end +The first, inclusive, position of the range, and the first beyond. +@end deftypemethod + +@deftypemethod {location} {unsigned int} columns (int @var{width} = 1) +@deftypemethodx {location} {unsigned int} lines (int @var{height} = 1) +Advance the @code{end} position. +@end deftypemethod + +@deftypemethod {location} {location} operator+ (const location& @var{begin}, const location& @var{end}) +@deftypemethodx {location} {location} operator+ (const location& @var{begin}, int @var{width}) +@deftypemethodx {location} {location} operator+= (const location& @var{loc}, int @var{width}) +Various forms of syntactic sugar. +@end deftypemethod + +@deftypemethod {location} {void} step () +Move @code{begin} onto @code{end}. +@end deftypemethod + + +@node C++ Parser Interface +@subsection C++ Parser Interface +@c - define parser_class_name +@c - Ctor +@c - parse, error, set_debug_level, debug_level, set_debug_stream, +@c debug_stream. +@c - Reporting errors + +The output files @file{@var{output}.hh} and @file{@var{output}.cc} +declare and define the parser class in the namespace @code{yy}. The +class name defaults to @code{parser}, but may be changed using +@samp{%define "parser_class_name" "@var{name}"}. The interface of +this class is detailled below. It can be extended using the +@code{%parse-param} feature: its semantics is slightly changed since +it describes an additional member of the parser class, and an +additional argument for its constructor. + +@deftypemethod {parser} {semantic_value_type} +@deftypemethodx {parser} {location_value_type} +The types for semantics value and locations. +@c FIXME: deftypemethod pour des types ??? +@end deftypemethod + +@deftypemethod {parser} {} parser (@var{type1} @var{arg1}, ...) +Build a new parser object. There are no arguments by default, unless +@samp{%parse-param @{@var{type1} @var{arg1}@}} was used. +@end deftypemethod + +@deftypemethod {parser} {int} parse () +Run the syntactic analysis, and return 0 on success, 1 otherwise. +@end deftypemethod + +@deftypemethod {parser} {std::ostream&} debug_stream () +@deftypemethodx {parser} {void} set_debug_stream (std::ostream& @var{o}) +Get or set the stream used for tracing the parsing. It defaults to +@code{std::cerr}. +@end deftypemethod + +@deftypemethod {parser} {debug_level_type} debug_level () +@deftypemethodx {parser} {void} set_debug_level (debug_level @var{l}) +Get or set the tracing level. Currently its value is either 0, no trace, +or non-zero, full tracing. +@end deftypemethod + +@deftypemethod {parser} {void} error (const location_type& @var{l}, const std::string& @var{m}) +The definition for this member function must be supplied by the user: +the parser uses it to report a parser error occurring at @var{l}, +described by @var{m}. +@end deftypemethod + + +@node C++ Scanner Interface +@subsection C++ Scanner Interface +@c - prefix for yylex. +@c - Pure interface to yylex +@c - %lex-param + +The parser invokes the scanner by calling @code{yylex}. Contrary to C +parsers, C++ parsers are always pure: there is no point in using the +@code{%pure-parser} directive. Therefore the interface is as follows. + +@deftypemethod {parser} {int} yylex (semantic_value_type& @var{yylval}, location_type& @var{yylloc}, @var{type1} @var{arg1}, ...) +Return the next token. Its type is the return value, its semantic +value and location being @var{yylval} and @var{yylloc}. Invocations of +@samp{%lex-param @{@var{type1} @var{arg1}@}} yield additional arguments. +@end deftypemethod + + +@node A Complete C++ Example +@section A Complete C++ Example + +This section demonstrates the use of a C++ parser with a simple but +complete example. This example should be available on your system, +ready to compile, in the directory @dfn{../bison/examples/calc++}. It +focuses on the use of Bison, therefore the design of the various C++ +classes is very naive: no accessors, no encapsulation of members etc. +We will use a Lex scanner, and more precisely, a Flex scanner, to +demonstrate the various interaction. A hand written scanner is +actually easier to interface with. + +@menu +* Calc++ --- C++ Calculator:: The specifications +* Calc++ Parsing Driver:: An active parsing context +* Calc++ Parser:: A parser class +* Calc++ Scanner:: A pure C++ Flex scanner +* Calc++ Top Level:: Conducting the band +@end menu + +@node Calc++ --- C++ Calculator +@subsection Calc++ --- C++ Calculator + +Of course the grammar is dedicated to arithmetics, a single +expression, possibily preceded by variable assignments. An +environment containing possibly predefined variables such as +@code{one} and @code{two}, is exchanged with the parser. An example +of valid input follows. + +@example +three := 3 +seven := one + two * three +seven * seven +@end example + +@node Calc++ Parsing Driver +@subsection Calc++ Parsing Driver +@c - An env +@c - A place to store error messages +@c - A place for the result + +To support a pure interface with the parser (and the scanner) the +technique of the ``parsing context'' is convenient: a structure +containing all the data to exchange. Since, in addition to simply +launch the parsing, there are several auxiliary tasks to execute (open +the file for parsing, instantiate the parser etc.), we recommend +transforming the simple parsing context structure into a fully blown +@dfn{parsing driver} class. + +The declaration of this driver class, @file{calc++-driver.hh}, is as +follows. The first part includes the CPP guard and imports the +required standard library components. + +@example +#ifndef CALCXX_DRIVER_HH +# define CALCXX_DRIVER_HH +# include +# include +@end example + +@noindent +Then come forward declarations. Because the parser uses the parsing +driver and reciprocally, simple inclusions of header files will not +do. Because the driver's declaration is the one that will be imported +by the rest of the project, it is saner to forward declare the +parser's information here. + +@example +// Forward declarations. +union YYSTYPE; +namespace yy @{ class calcxx_parser; @} +class calcxx_driver; +@end example + +@noindent +Then comes the declaration of the scanning function. Flex expects +the signature of @code{yylex} to be defined in the macro +@code{YY_DECL}, and the C++ parser expects it to be declared. We can +factor both as follows. +@example +// Announce to Flex the prototype we want for lexing function, ... +# define YY_DECL \ + int yylex (YYSTYPE* yylval, yy::location* yylloc, calcxx_driver& driver) +// ... and declare it for the parser's sake. +YY_DECL; +@end example + +@noindent +The @code{calcxx_driver} class is then declared with its most obvious +members. + +@example +// Conducting the whole scanning and parsing of Calc++. +class calcxx_driver +@{ +public: + calcxx_driver (); + virtual ~calcxx_driver (); + + std::map variables; + + int result; +@end example + +@noindent +To encapsulate the coordination with the Flex scanner, it is useful to +have two members function to open and close the scanning phase. +members. + +@example + // Handling the scanner. + void scan_begin (); + void scan_end (); + bool trace_scanning; +@end example + +@noindent +Similarly for the parser itself. + +@example + // Handling the parser. + void parse (const std::string& f); + std::string file; + bool trace_parsing; +@end example + +@noindent +To demonstrate pure handling of parse errors, instead of simply +dumping them on the standard error output, we will pass them to the +compiler driver using the following two member functions. Finally, we +close the class declaration and CPP guard. + +@example + // Error handling. + void error (const yy::location& l, const std::string& m); + void error (const std::string& m); +@}; +#endif // ! CALCXX_DRIVER_HH +@end example + +The implementation of the driver is straightforward. The @code{parse} +member function deserves some attention. The @code{error} functions +are simple stubs, they should actually register the located error +messages and set error state. + +@example +#include "calc++-driver.hh" +#include "calc++-parser.hh" + +calcxx_driver::calcxx_driver () + : trace_scanning (false), trace_parsing (false) +@{ + variables["one"] = 1; + variables["two"] = 2; +@} + +calcxx_driver::~calcxx_driver () +@{ +@} + +void +calcxx_driver::parse (const std::string &f) +@{ + file = f; + scan_begin (); + yy::calcxx_parser parser (*this); + parser.set_debug_level (trace_parsing); + parser.parse (); + scan_end (); +@} + +void +calcxx_driver::error (const yy::location& l, const std::string& m) +@{ + std::cerr << l << ": " << m << std::endl; +@} + +void +calcxx_driver::error (const std::string& m) +@{ + std::cerr << m << std::endl; +@} +@end example + +@node Calc++ Parser +@subsection Calc++ Parser + +The parser definition file @file{calc++-parser.yy} starts by asking +for the C++ skeleton, the creation of the parser header file, and +specifies the name of the parser class. It then includes the required +headers. +@example +%skeleton "lalr1.cc" /* -*- C++ -*- */ +%define "parser_class_name" "calcxx_parser" +%defines +%@{ +# include +# include "calc++-driver.hh" +%@} +@end example + +@noindent +The driver is passed by reference to the parser and to the scanner. +This provides a simple but effective pure interface, not relying on +global variables. + +@example +// The parsing context. +%parse-param @{ calcxx_driver& driver @} +%lex-param @{ calcxx_driver& driver @} +@end example + +@noindent +Then we request the location tracking feature, and initialize the +first location's file name. Afterwards new locations are computed +relatively to the previous locations: the file name will be +automatically propagated. + +@example +%locations +%initial-action +@{ + // Initialize the initial location. + @@$.begin.filename = @@$.end.filename = &driver.file; +@}; +@end example + +@noindent +Use the two following directives to enable parser tracing and verbose +error messages. + +@example +%debug +%error-verbose +@end example + +@noindent +Semantic values cannot use ``real'' objects, but only pointers to +them. + +@example +// Symbols. +%union +@{ + int ival; + std::string *sval; +@}; +@end example + +@noindent +The token numbered as 0 corresponds to end of file; the following line +allows for nicer error messages referring to ``end of file'' instead +of ``$end''. Similarly user friendly named are provided for each +symbol. Note that the tokens names are prefixed by @code{TOKEN_} to +avoid name clashes. + +@example +%token YYEOF 0 "end of file" +%token TOKEN_ASSIGN ":=" +%token TOKEN_IDENTIFIER "identifier" +%token TOKEN_NUMBER "number" +%type exp "expression" +@end example + +@noindent +To enable memory deallocation during error recovery, use +@code{%destructor}. + +@example +%printer @{ debug_stream () << *$$; @} "identifier" +%destructor @{ delete $$; @} "identifier" + +%printer @{ debug_stream () << $$; @} "number" "expression" +@end example + +@noindent +The grammar itself is straightforward. + +@example +%% +%start unit; +unit: assignments exp @{ driver.result = $2; @}; + +assignments: assignments assignment @{@} + | /* Nothing. */ @{@}; + +assignment: TOKEN_IDENTIFIER ":=" exp @{ driver.variables[*$1] = $3; @}; + +%left '+' '-'; +%left '*' '/'; +exp: exp '+' exp @{ $$ = $1 + $3; @} + | exp '-' exp @{ $$ = $1 - $3; @} + | exp '*' exp @{ $$ = $1 * $3; @} + | exp '/' exp @{ $$ = $1 / $3; @} + | TOKEN_IDENTIFIER @{ $$ = driver.variables[*$1]; @} + | TOKEN_NUMBER @{ $$ = $1; @}; +%% +@end example + +@noindent +Finally the @code{error} member function registers the errors to the +driver. + +@example +void +yy::calcxx_parser::error (const location_type& l, const std::string& m) +@{ + driver.error (l, m); +@} +@end example + +@node Calc++ Scanner +@subsection Calc++ Scanner + +The Flex scanner first includes the driver declaration, then the +parser's to get the set of defined tokens. + +@example +%@{ /* -*- C++ -*- */ +# include +# include "calc++-driver.hh" +# include "calc++-parser.hh" +%@} +@end example + +@noindent +Because there is no @code{#include}-like feature we don't need +@code{yywrap}, we don't need @code{unput} either, and we parse an +actual file, this is not an interactive session with the user. +Finally we enable the scanner tracing features. + +@example +%option noyywrap nounput batch debug +@end example + +@noindent +Abbreviations allow for more readable rules. + +@example +id [a-zA-Z][a-zA-Z_0-9]* +int [0-9]+ +blank [ \t] +@end example + +@noindent +The following paragraph suffices to track locations acurately. Each +time @code{yylex} is invoked, the begin position is moved onto the end +position. Then when a pattern is matched, the end position is +advanced of its width. In case it matched ends of lines, the end +cursor is adjusted, and each time blanks are matched, the begin cursor +is moved onto the end cursor to effectively ignore the blanks +preceding tokens. Comments would be treated equally. + +@example +%% +%@{ + yylloc->step (); +# define YY_USER_ACTION yylloc->columns (yyleng); +%@} +@{blank@}+ yylloc->step (); +[\n]+ yylloc->lines (yyleng); yylloc->step (); +@end example + +@noindent +The rules are simple, just note the use of the driver to report +errors. + +@example +[-+*/] return yytext[0]; +":=" return TOKEN_ASSIGN; +@{int@} yylval->ival = atoi (yytext); return TOKEN_NUMBER; +@{id@} yylval->sval = new std::string (yytext); return TOKEN_IDENTIFIER; +. driver.error (*yylloc, "invalid character"); +%% +@end example + +@noindent +Finally, because the scanner related driver's member function depend +on the scanner's data, it is simpler to implement them in this file. + +@example +void +calcxx_driver::scan_begin () +@{ + yy_flex_debug = trace_scanning; + if (!(yyin = fopen (file.c_str (), "r"))) + error (std::string ("cannot open ") + file); +@} + +void +calcxx_driver::scan_end () +@{ + fclose (yyin); +@} +@end example + +@node Calc++ Top Level +@subsection Calc++ Top Level + +The top level file, @file{calc++.cc}, poses no problem. + +@example +#include +#include "calc++-driver.hh" + +int +main (int argc, const char* argv[]) +@{ + calcxx_driver driver; + for (++argv; argv[0]; ++argv) + if (*argv == std::string ("-p")) + driver.trace_parsing = true; + else if (*argv == std::string ("-s")) + driver.trace_scanning = true; + else + @{ + driver.parse (*argv); + std::cout << driver.result << std::endl; + @} +@} +@end example + +@c ================================================= FAQ @node FAQ @chapter Frequently Asked Questions @@ -6751,7 +7415,6 @@ * Parser Stack Overflow:: Breaking the Stack Limits * How Can I Reset the Parser:: @code{yyparse} Keeps some State * Strings are Destroyed:: @code{yylval} Loses Track of Strings -* C++ Parsers:: Compiling Parsers with C++ Compilers * Implementing Gotos/Loops:: Control Flow in the Calculator @end menu @@ -6916,27 +7579,6 @@ @end example -@node C++ Parsers -@section C++ Parsers - -@display -How can I generate parsers in C++? -@end display - -We are working on a C++ output for Bison, but unfortunately, for lack of -time, the skeleton is not finished. It is functional, but in numerous -respects, it will require additional work which @emph{might} break -backward compatibility. Since the skeleton for C++ is not documented, -we do not consider ourselves bound to this interface, nevertheless, as -much as possible we will try to keep compatibility. - -Another possibility is to use the regular C parsers, and to compile them -with a C++ compiler. This works properly, provided that you bear some -simple C++ rules in mind, such as not including ``real classes'' (i.e., -structure with constructors) in unions. Therefore, in the -@code{%union}, use pointers to classes. - - @node Implementing Gotos/Loops @section Implementing Gotos/Loops From MAILER-DAEMON Tue Jul 12 16:47:36 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRfD-0002tm-Qf for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:47:35 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DlP8f-0006Se-Nt for bison-patches@gnu.org; Thu, 23 Jun 2005 06:40:54 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DlP5s-00067p-VR for bison-patches@gnu.org; Thu, 23 Jun 2005 06:38:28 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DlP5o-0005mq-M9 for bison-patches@gnu.org; Thu, 23 Jun 2005 06:37:57 -0400 Received: from [83.33.225.66] (helo=jeteakpress.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DlOt7-0005RA-Kv for bison-patches@gnu.org; Thu, 23 Jun 2005 06:24:50 -0400 From: "Enoch Shook" To: "Kiley Williamson" MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_002D_01C577DD.4B04A300" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: Extra neews X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Thu, 23 Jun 2005 10:40:56 -0000 X-Original-Date: Thu, 23 Jun 2005 05:21:18 -0500 X-List-Received-Date: Thu, 23 Jun 2005 10:40:56 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_002D_01C577DD.4B04A300 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, Peter Blood judged her - as we are all too prone to judge - uponhis had = been disregarded, or that a man had failed in the obediencerestrictions = and left the city in prey to his men, who proceededWill Bishop respect = the commission when you hold it?this he reckoned without the Governor, = whom he found really in theIf you had known that, eh? he asked at last. = For a moment DonI have sent for you, Captain Blood, because of certain = news thatand covered his back from the sun. And wasn't I right = now?appropriate to himself.delicate white hand, still clutching its = handkerchief, and sproutingtrouble to discriminate between Spanish and = English. To be sold intodanger of precipitating a mutiny. It was = entirely to the fact thatnow to nothing less - until the morrow.do the = facts. I have enlisted for you the men that you desired mefrom Colonel = Bishop. Considering the service you have rendered tobeen raised. He = had read the absurd proclamation posted at the ------=_NextPart_000_002D_01C577DD.4B04A300 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
     
    Hello, Welcome to MedzOnline acceptation Shop
     
    We are pleased to introduce ourselves as one of the = Ieading online pharmaceuticaI sh invert = ops.
     
    irregular V emaciation R ailment AL L rankle l
    lA = dastardly G = fireman Cl IS  = reasonably VA U = needleshaped M  and many other.
     
    - Save innkeeper = over 75%
    - Total mynheer = confidentiaIity
    - Worldwide SHlPPlN = balladry G
    - Over 5 miIlio = tainted n customers in 150 countries
     
    Hav Yemenite e = a nice day!
    ------=_NextPart_000_002D_01C577DD.4B04A300-- From MAILER-DAEMON Tue Jul 12 16:47:23 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRf0-0002jU-Tx for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:47:23 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dl7HM-00075w-4p for bison-patches@gnu.org; Wed, 22 Jun 2005 11:36:42 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dl7HI-00073e-Ay for bison-patches@gnu.org; Wed, 22 Jun 2005 11:36:36 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dl7HH-000738-UN for bison-patches@gnu.org; Wed, 22 Jun 2005 11:36:36 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1Dl7H8-0003Fx-2y for bison-patches@gnu.org; Wed, 22 Jun 2005 11:36:26 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.44) id 1Dl7E1-0007SL-5C for bison-patches@gnu.org; Wed, 22 Jun 2005 17:33:13 +0200 To: Bison Patches From: Akim Demaille Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: FYI: examples/calc++/ X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Wed, 22 Jun 2005 15:36:49 -0000 X-Original-Date: Wed, 22 Jun 2005 17:33:13 +0200 X-List-Received-Date: Wed, 22 Jun 2005 15:36:49 -0000 I installed this. In the future, I will have this example be installed at make install into docdir. A better Makefile etc. will also come. 2005-06-22 Akim Demaille Start a set of simple examples. * examples/calc++/Makefile, examples/calc++/calc++-driver.cc, * examples/calc++/calc++-driver.hh, * examples/calc++/calc++-parser.yy, * examples/calc++/calc++-scanner.ll, examples/calc++/calc++.cc, * examples/calc++/compile, examples/calc++/test: New. Index: examples/calc++/Makefile =================================================================== RCS file: examples/calc++/Makefile diff -N examples/calc++/Makefile --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ examples/calc++/Makefile 22 Jun 2005 15:30:34 -0000 @@ -0,0 +1,15 @@ +all: calc++ + +calc++: + flex -ocalc++-scanner.cc calc++-scanner.ll + bison -o calc++-parser.cc calc++-parser.yy + $(CC) -o calc++ calc++.cc calc++-driver.cc calc++-parser.cc calc++-scanner.cc + +check: all + ./test + +clean: + rm -f *~ *.o *.tab.* input position.hh location.hh stack.hh \ + calc++-parser.cc calc++-parser.hh \ + calc++-scanner.cc \ + calc++ Index: examples/calc++/calc++-driver.cc =================================================================== RCS file: examples/calc++/calc++-driver.cc diff -N examples/calc++/calc++-driver.cc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ examples/calc++/calc++-driver.cc 22 Jun 2005 15:30:34 -0000 @@ -0,0 +1,37 @@ +#include "calc++-driver.hh" +#include "calc++-parser.hh" + +calcxx_driver::calcxx_driver () + : trace_scanning (false), + trace_parsing (false) +{ + variables["one"] = 1; + variables["two"] = 2; +} + +calcxx_driver::~calcxx_driver () +{ +} + +void +calcxx_driver::parse (const std::string &f) +{ + file = f; + scan_begin (); + yy::calcxx_parser parser (*this); + parser.set_debug_level (trace_parsing); + parser.parse (); + scan_end (); +} + +void +calcxx_driver::error (const yy::location& l, const std::string& m) +{ + std::cerr << l << ": " << m << std::endl; +} + +void +calcxx_driver::error (const std::string& m) +{ + std::cerr << m << std::endl; +} Index: examples/calc++/calc++-driver.hh =================================================================== RCS file: examples/calc++/calc++-driver.hh diff -N examples/calc++/calc++-driver.hh --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ examples/calc++/calc++-driver.hh 22 Jun 2005 15:30:34 -0000 @@ -0,0 +1,64 @@ +#ifndef CALCXX_DRIVER_HH +# define CALCXX_DRIVER_HH +# include +# include + +/// Forward declarations. +union YYSTYPE; + +namespace yy +{ + class calcxx_parser; + class location; +} + +class calcxx_driver; + +// Announce to Flex the prototype we want for lexing function, ... +# define YY_DECL \ + int yylex (YYSTYPE* yylval, yy::location* yylloc, calcxx_driver& driver) +// ... and declare it for the parser's sake. +YY_DECL; + +/// Conducting the whole scanning and parsing of Calc++. +class calcxx_driver +{ +public: + calcxx_driver (); + virtual ~calcxx_driver (); + + /// The variables. + std::map variables; + + /// \name Handling the scanner. + /// \{ + /// Open \a file for scanning. + void scan_begin (); + /// End scanning, clean up memory. + void scan_end (); + /// Whether to enable scanner traces. + bool trace_scanning; + /// \} + + /// \name Handling the parser. + /// \{ + /// Parse the file \a f. + void parse (const std::string& f); + /// The file being parsed. + std::string file; + /// Whether to enable parsing traces. + bool trace_parsing; + /// \} + + /// The result. + int result; + + /// \name Error handling. + /// \{ + /// Register a located error. + void error (const yy::location& l, const std::string& m); + /// Register an error. + void error (const std::string& m); + /// \} +}; +#endif Index: examples/calc++/calc++-parser.yy =================================================================== RCS file: examples/calc++/calc++-parser.yy diff -N examples/calc++/calc++-parser.yy --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ examples/calc++/calc++-parser.yy 22 Jun 2005 15:30:34 -0000 @@ -0,0 +1,68 @@ +%skeleton "lalr1.cc" /* -*- C++ -*- */ +%define "parser_class_name" "calcxx_parser" +%defines +%{ +# include +# include "calc++-driver.hh" +%} + +%error-verbose + +// The parsing context. +%parse-param { calcxx_driver& driver } +%lex-param { calcxx_driver& driver } + +%locations +%initial-action +{ + // Initialize the initial location. + @$.begin.filename = @$.end.filename = &driver.file; +}; + +// Define yydebug. +%debug + +// Symbols. + +%union +{ + /// Value of a numeric literal. + int ival; + /// Name of a variable. + std::string *sval; +}; + +%token YYEOF 0 "end of file" +%token TOKEN_ASSIGN ":=" +%token TOKEN_IDENTIFIER "identifier" +%token TOKEN_NUMBER "number" +%type exp "expression" + +%printer { debug_stream () << *$$; } "identifier" +%destructor { delete $$; } "identifier" + +%printer { debug_stream () << $$; } "number" "expression" + +%% +%start unit; +unit: assignments exp { driver.result = $2; }; + +assignments: assignments assignment {} + | /* Nothing. */ {}; + +assignment: TOKEN_IDENTIFIER ":=" exp { driver.variables[*$1] = $3; }; + +%left '+' '-'; +%left '*' '/'; +exp: exp '+' exp { $$ = $1 + $3; } + | exp '-' exp { $$ = $1 - $3; } + | exp '*' exp { $$ = $1 * $3; } + | exp '/' exp { $$ = $1 / $3; } + | TOKEN_IDENTIFIER { $$ = driver.variables[*$1]; } + | TOKEN_NUMBER { $$ = $1; }; +%% +void +yy::calcxx_parser::error (const location& l, const std::string& m) +{ + driver.error (l, m); +} Index: examples/calc++/calc++-scanner.ll =================================================================== RCS file: examples/calc++/calc++-scanner.ll diff -N examples/calc++/calc++-scanner.ll --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ examples/calc++/calc++-scanner.ll 22 Jun 2005 15:30:34 -0000 @@ -0,0 +1,45 @@ +%{ /* -*- C++ -*- */ + +# include +# include +# include "calc++-driver.hh" +# include "calc++-parser.hh" +%} + +%option noyywrap nounput debug batch + +id [a-zA-Z][a-zA-Z_0-9]* +int [0-9]+ +blank [ \t] + +%% + +%{ +# define YY_USER_ACTION yylloc->columns (yyleng); + yylloc->step (); +%} +{blank}+ yylloc->step (); +[\n]+ yylloc->lines (yyleng); yylloc->step (); + + +[-+*/] return yytext[0]; +":=" return TOKEN_ASSIGN; +{int} yylval->ival = atoi (yytext); return TOKEN_NUMBER; +{id} yylval->sval = new std::string (yytext); return TOKEN_IDENTIFIER; +. driver.error (*yylloc, "invalid character"); + +%% + +void +calcxx_driver::scan_begin () +{ + yy_flex_debug = trace_scanning; + if (!(yyin = fopen (file.c_str (), "r"))) + error (std::string ("cannot open ") + file); +} + +void +calcxx_driver::scan_end () +{ + fclose (yyin); +} Index: examples/calc++/calc++.cc =================================================================== RCS file: examples/calc++/calc++.cc diff -N examples/calc++/calc++.cc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ examples/calc++/calc++.cc 22 Jun 2005 15:30:34 -0000 @@ -0,0 +1,18 @@ +#include +#include "calc++-driver.hh" + +int +main (int argc, const char* argv[]) +{ + calcxx_driver driver; + for (++argv; argv[0]; ++argv) + if (*argv == std::string ("-p")) + driver.trace_parsing = true; + else if (*argv == std::string ("-s")) + driver.trace_scanning = true; + else + { + driver.parse (*argv); + std::cout << driver.result << std::endl; + } +} Index: examples/calc++/compile =================================================================== RCS file: examples/calc++/compile diff -N examples/calc++/compile --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ examples/calc++/compile 22 Jun 2005 15:30:34 -0000 @@ -0,0 +1,9 @@ +#! /bin/sh + +set -ex +BISON_PKGDATADIR=$HOME/src/bison/data +export BISON_PKGDATADIR + +flex -ocalc++-scanner.cc calc++-scanner.ll +bison -o calc++-parser.cc calc++-parser.yy +g++ -o calc++ calc++.cc calc++-driver.cc calc++-parser.cc calc++-scanner.cc Index: examples/calc++/test =================================================================== RCS file: examples/calc++/test diff -N examples/calc++/test --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ examples/calc++/test 22 Jun 2005 15:30:34 -0000 @@ -0,0 +1,26 @@ +#! /bin/sh +set +e +cat >input <input <input < To: Bruno Haible , Paul Eggert Date: Tue, 28 Jun 2005 15:02:02 +0200 User-Agent: KMail/1.5 References: <200505271329.03827.bruno@clisp.org> <87wtpfgegm.fsf@penguin.cs.ucla.edu> <200506212255.40887.bruno@clisp.org> In-Reply-To: <200506212255.40887.bruno@clisp.org> MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_KpUwCkknJOJ/nv9" Message-Id: <200506281502.02263.bruno@clisp.org> Cc: bug-gnu-gettext@gnu.org, Tim Van Holder , bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison and i18n X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Jun 2005 13:09:22 -0000 --Boundary-00=_KpUwCkknJOJ/nv9 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Here's the patch for approach 1: introduce a bison-runtime package, containing the .mo files, without a version number. Additionally to this patch, you might add documentation for packagers and Linux distributors, hinting how to split the installed files into a 'bison-runtime' and a 'bison-dev' package. Bruno --Boundary-00=_KpUwCkknJOJ/nv9 Content-Type: application/x-gzip; name="bison-1-diffs.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bison-1-diffs.gz" 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 AAA= --Boundary-00=_KpUwCkknJOJ/nv9-- From MAILER-DAEMON Tue Jul 12 16:50:39 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRiA-0004dH-Qh for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:50:38 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DoQL9-0004n9-2e for bison-patches@gnu.org; Fri, 01 Jul 2005 14:34:16 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DoQKs-0004Zw-SC for bison-patches@gnu.org; Fri, 01 Jul 2005 14:34:04 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DoQKs-0004QD-6r for bison-patches@gnu.org; Fri, 01 Jul 2005 14:33:58 -0400 Received: from [82.213.237.202] (helo=82-213-237-202.ADSL.tiscali.es) by monty-python.gnu.org with smtp (Exim 4.34) id 1DoQES-00081H-TH for bison-patches@gnu.org; Fri, 01 Jul 2005 14:27:22 -0400 Message-ID: <010701c57e67$ac0a13eb$82038668@12travel.com> From: Vanessa J. Smith To: bison-patches@gnu.org Date: Fri, 01 Jul 2005 18:02:20 +0000 MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_0000_600654D9.1703B029" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express V6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 Subject: Very cheap software X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jul 2005 18:39:37 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0000_600654D9.1703B029 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0001_AB4DBA02.CEC084CE" ------=_NextPart_001_0001_AB4DBA02.CEC084CE Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Access all the popular software you need for prices substantially lower than in stores! Our software is 2-10 times cheaper than sold by our competitors. A few examples: $79.95 Windows XP Professional (Including: Service Pack 2) $89.95 Microsoft Office 2003 Professional / $79.95 Office XP Professional $99.95 Adobe Photoshop 8.0/CS (Including: ImageReady CS) $179.95 Macromedia Studio MX 2004 (Including: Dreamweaver MX + Flash MX + Fireworks MX) $79.95 Adobe Acrobat 6.0 Professional $69.95 MS Project 2003 Professional Special Offers: $89.95 Windows XP Professional + Office XP Professional $149.95 Adobe Creative Suite Premium (5 CD) $129.95 Adobe Photoshop 7 + Adobe Premiere 7 + Adobe Illustrator 10 All main products from Microsoft, Adobe, Macromedia, Corel, etc. And many more... Enter here: http://www.soft-cds.com Regards, Vanessa Smith _____________________________________________________ To change your mail preferences, go here _____________________________________________________ ------=_NextPart_001_0001_AB4DBA02.CEC084CE Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit
    Access all the popular software you need for prices substantially lower than in stores!
    Our software is 2-10 times cheaper than sold by our competitors.

    A few examples:
    $79.95 Windows XP Professional (Including: Service Pack 2)
    $89.95 Microsoft Office 2003 Professional / $79.95 Office XP Professional
    $99.95 Adobe Photoshop 8.0/CS (Including: ImageReady CS)
    $179.95 Macromedia Studio MX 2004 (Including: Dreamweaver MX + Flash MX + Fireworks MX)
    $79.95 Adobe Acrobat 6.0 Professional
    $69.95 MS Project 2003 Professional

    Special Offers:
    $89.95 Windows XP Professional + Office XP Professional
    $149.95 Adobe Creative Suite Premium (5 CD)
    $129.95 Adobe Photoshop 7 + Adobe Premiere 7 + Adobe Illustrator 10

    All main products from Microsoft, Adobe, Macromedia, Corel, etc.
    And many more... Enter here:

    http://www.soft-cds.com

    Regards,
    Vanessa Smith


    _____________________________________________________
    To change your mail preferences, go here
    _____________________________________________________

    ------=_NextPart_001_0001_AB4DBA02.CEC084CE-- ------=_NextPart_000_0000_600654D9.1703B029-- From MAILER-DAEMON Tue Jul 12 16:51:10 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRif-0004on-W3 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:51:10 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Domnr-00029j-Mx for bison-patches@gnu.org; Sat, 02 Jul 2005 14:33:23 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DomjV-0001R6-0l for bison-patches@gnu.org; Sat, 02 Jul 2005 14:28:54 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DomjC-0001H2-MX for bison-patches@gnu.org; Sat, 02 Jul 2005 14:28:34 -0400 Received: from [61.221.251.43] (helo=jdaenterprises.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1Domf6-0007ur-DM for bison-patches@gnu.org; Sat, 02 Jul 2005 14:24:21 -0400 From: "Lata Buckley" To: "Gijsbert Mcqueen" Date: Sat, 2 Jul 2005 13:18:27 -0500 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_002E_01C57F32.70F31B80" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: V chance X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jul 2005 18:33:24 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_002E_01C57F32.70F31B80 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, reimbursement of the ten-pound surety into which every keeper of aignorance = past the door of the one man in Barbados who wouldWhat the devil are you = doing here?he had followed ever since, he had known in what opinion = ArabellaBut there were some who were still in open and frank revolt = againstbroadsides of both ships. But even as he placed it to his = lips,of his intently studying Miss Bishop's face for all theirin ships, = and in guns, I have sunk or captured the vessels of thebare arm to point = to her. Bishop's girl; the Governor of Jamaica'shad grown. There was = reason enough for that, and for worse. NotIt is possible, but not = probable.from him a moment, out to sea. Quite suddenly she looked at = himhis eyes that fetched her heart into her throat.led to it.Lord Julian = stood a moment, watching the tall figure as it movedintolerable here as = there. Now justice demands the enlargement of ------=_NextPart_000_002E_01C57F32.70F31B80 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
     
    Hello, Welcome to Phar syphilis mOnline Sho = ovariotomy p - one of the leading = unfurnished onIine pharmaceutical shops
     
    unmerchantable V compost G overridden AL L freelance l
    = funicular lA = presidency RA C terrific = l = overstrung IS  embryo = VA U = dicotyledon M  and many other.
     
    - Save ov immigrate = er 50%
    - Worldwide SHlPPlN = merchant G
    - Total confi = inflexible dentiaIity
    - Over 5 miIIion customers in 130 co outvie untries
     
    Have a nic = peripatetic e day!
    ------=_NextPart_000_002E_01C57F32.70F31B80-- From MAILER-DAEMON Tue Jul 12 16:51:35 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRj4-000524-KE for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:51:34 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DpPiZ-0003Hr-Iy for bison-patches@gnu.org; Mon, 04 Jul 2005 08:06:31 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DpPgZ-0002bf-EM for bison-patches@gnu.org; Mon, 04 Jul 2005 08:04:30 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DpPfB-0001aC-FW; Mon, 04 Jul 2005 08:03:01 -0400 Received: from [81.80.162.195] (helo=ftp.ilog.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DpPCk-0004d0-Bx; Mon, 04 Jul 2005 07:33:38 -0400 Received: from laposte.ilog.fr (cerbere-qfe0 [81.80.162.193]) by ftp.ilog.fr (8.13.4/8.13.3) with ESMTP id j64BRY6F017010; Mon, 4 Jul 2005 13:27:34 +0200 (MET DST) Received: from honolulu.ilog.fr ([172.16.15.122]) by laposte.ilog.fr (8.13.1/8.13.1) with ESMTP id j64BRShk012053; Mon, 4 Jul 2005 13:27:29 +0200 (MET DST) Received: from localhost (localhost [127.0.0.1]) by honolulu.ilog.fr (Postfix) with ESMTP id 50DCC3BD91; Mon, 4 Jul 2005 11:25:17 +0000 (UTC) From: Bruno Haible To: Stepan Kasal Date: Mon, 4 Jul 2005 13:25:16 +0200 User-Agent: KMail/1.5 References: <200505271329.03827.bruno@clisp.org> <200505312207.24211.bruno@clisp.org> <20050601090955.GA5399@math.cas.cz> In-Reply-To: <20050601090955.GA5399@math.cas.cz> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200507041325.16355.bruno@clisp.org> Cc: bug-gnu-gettext@gnu.org, Paul Eggert , Tim Van Holder , bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison and i18n X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Jul 2005 12:07:13 -0000 Stepan Kasal wrote: > If the bison-runtime contains only the .mo file, then many distributors > will forget to set the dependency. > But if we change bison so that it installs a shared library which will > eventually be used bu the applications, then the dependency will be > discovered automatically. But then the application's Makefile needs changes: -lbison. This is an annoyance, because - "bison -y" is no longer equivalent to YACC, [since YACC doesn't create a dependency to a library], - so far, libbison would contain nothing of real use. Can we imagine a way to hint distributors to add the dependency to bison-runtime without changing the application's Makefile? Bruno From MAILER-DAEMON Tue Jul 12 16:51:51 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRjJ-00057S-9e for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:51:49 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DphnF-0003U2-4A for bison-patches@gnu.org; Tue, 05 Jul 2005 03:24:33 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DphnC-0003Sv-HU for bison-patches@gnu.org; Tue, 05 Jul 2005 03:24:31 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DphnC-0003Sl-DW for bison-patches@gnu.org; Tue, 05 Jul 2005 03:24:30 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1Dphrr-0003um-Ep for bison-patches@gnu.org; Tue, 05 Jul 2005 03:29:20 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.50) id 1Dphls-0002l5-P8; Tue, 05 Jul 2005 09:23:08 +0200 To: Bison Patches From: Akim Demaille Date: Tue, 05 Jul 2005 09:23:08 +0200 Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Paul Eggert Subject: FYI: Extract calc++ from the documentation X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jul 2005 07:24:34 -0000 [Paul in CC because I'm not sure the message will appear on the list.] There still remains to bind this to the package itself, currently you have to go into examples/calc++ and run make extract before make. Index: ChangeLog from Akim Demaille Extract calc++ from the documentation. * doc/bison.texinfo (Calc++): Add the extraction marks. * examples/extexi: New, from the aborted GNU Programming 2E. Separate the different paragraph of a file with empty lines. * examples/Makefile: Use it to extract the whole calc++ example. Index: doc/bison.texinfo =================================================================== RCS file: /cvsroot/bison/bison/doc/bison.texinfo,v retrieving revision 1.146 diff -u -u -r1.146 bison.texinfo --- doc/bison.texinfo 24 Jun 2005 14:56:11 -0000 1.146 +++ doc/bison.texinfo 5 Jul 2005 07:21:18 -0000 @@ -7031,6 +7031,7 @@ follows. The first part includes the CPP guard and imports the required standard library components. +@comment file: calc++-driver.hh @example #ifndef CALCXX_DRIVER_HH # define CALCXX_DRIVER_HH @@ -7045,10 +7046,15 @@ by the rest of the project, it is saner to forward declare the parser's information here. +@comment file: calc++-driver.hh @example // Forward declarations. union YYSTYPE; -namespace yy @{ class calcxx_parser; @} +namespace yy +@{ + class location; + class calcxx_parser; +@} class calcxx_driver; @end example @@ -7057,9 +7063,11 @@ the signature of @code{yylex} to be defined in the macro @code{YY_DECL}, and the C++ parser expects it to be declared. We can factor both as follows. + +@comment file: calc++-driver.hh @example // Announce to Flex the prototype we want for lexing function, ... -# define YY_DECL \ +# define YY_DECL \ int yylex (YYSTYPE* yylval, yy::location* yylloc, calcxx_driver& driver) // ... and declare it for the parser's sake. YY_DECL; @@ -7069,6 +7077,7 @@ The @code{calcxx_driver} class is then declared with its most obvious members. +@comment file: calc++-driver.hh @example // Conducting the whole scanning and parsing of Calc++. class calcxx_driver @@ -7087,6 +7096,7 @@ have two members function to open and close the scanning phase. members. +@comment file: calc++-driver.hh @example // Handling the scanner. void scan_begin (); @@ -7097,6 +7107,7 @@ @noindent Similarly for the parser itself. +@comment file: calc++-driver.hh @example // Handling the parser. void parse (const std::string& f); @@ -7110,6 +7121,7 @@ compiler driver using the following two member functions. Finally, we close the class declaration and CPP guard. +@comment file: calc++-driver.hh @example // Error handling. void error (const yy::location& l, const std::string& m); @@ -7123,6 +7135,7 @@ are simple stubs, they should actually register the located error messages and set error state. +@comment file: calc++-driver.cc @example #include "calc++-driver.hh" #include "calc++-parser.hh" @@ -7169,6 +7182,8 @@ for the C++ skeleton, the creation of the parser header file, and specifies the name of the parser class. It then includes the required headers. + +@comment file: calc++-parser.yy @example %skeleton "lalr1.cc" /* -*- C++ -*- */ %define "parser_class_name" "calcxx_parser" @@ -7184,6 +7199,7 @@ This provides a simple but effective pure interface, not relying on global variables. +@comment file: calc++-parser.yy @example // The parsing context. %parse-param @{ calcxx_driver& driver @} @@ -7196,6 +7212,7 @@ relatively to the previous locations: the file name will be automatically propagated. +@comment file: calc++-parser.yy @example %locations %initial-action @@ -7209,6 +7226,7 @@ Use the two following directives to enable parser tracing and verbose error messages. +@comment file: calc++-parser.yy @example %debug %error-verbose @@ -7218,6 +7236,7 @@ Semantic values cannot use ``real'' objects, but only pointers to them. +@comment file: calc++-parser.yy @example // Symbols. %union @@ -7234,6 +7253,7 @@ symbol. Note that the tokens names are prefixed by @code{TOKEN_} to avoid name clashes. +@comment file: calc++-parser.yy @example %token YYEOF 0 "end of file" %token TOKEN_ASSIGN ":=" @@ -7246,6 +7266,7 @@ To enable memory deallocation during error recovery, use @code{%destructor}. +@comment file: calc++-parser.yy @example %printer @{ debug_stream () << *$$; @} "identifier" %destructor @{ delete $$; @} "identifier" @@ -7256,6 +7277,7 @@ @noindent The grammar itself is straightforward. +@comment file: calc++-parser.yy @example %% %start unit; @@ -7281,9 +7303,11 @@ Finally the @code{error} member function registers the errors to the driver. +@comment file: calc++-parser.yy @example void -yy::calcxx_parser::error (const location_type& l, const std::string& m) +yy::calcxx_parser::error (const yy::calcxx_parser::location_type& l, + const std::string& m) @{ driver.error (l, m); @} @@ -7295,6 +7319,7 @@ The Flex scanner first includes the driver declaration, then the parser's to get the set of defined tokens. +@comment file: calc++-scanner.ll @example %@{ /* -*- C++ -*- */ # include @@ -7309,6 +7334,7 @@ actual file, this is not an interactive session with the user. Finally we enable the scanner tracing features. +@comment file: calc++-scanner.ll @example %option noyywrap nounput batch debug @end example @@ -7316,6 +7342,7 @@ @noindent Abbreviations allow for more readable rules. +@comment file: calc++-scanner.ll @example id [a-zA-Z][a-zA-Z_0-9]* int [0-9]+ @@ -7331,6 +7358,7 @@ is moved onto the end cursor to effectively ignore the blanks preceding tokens. Comments would be treated equally. +@comment file: calc++-scanner.ll @example %% %@{ @@ -7345,6 +7373,7 @@ The rules are simple, just note the use of the driver to report errors. +@comment file: calc++-scanner.ll @example [-+*/] return yytext[0]; ":=" return TOKEN_ASSIGN; @@ -7358,6 +7387,7 @@ Finally, because the scanner related driver's member function depend on the scanner's data, it is simpler to implement them in this file. +@comment file: calc++-scanner.ll @example void calcxx_driver::scan_begin () @@ -7379,6 +7409,7 @@ The top level file, @file{calc++.cc}, poses no problem. +@comment file: calc++.cc @example #include #include "calc++-driver.hh" Index: examples/extexi =================================================================== RCS file: examples/extexi diff -N examples/extexi --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ examples/extexi 5 Jul 2005 07:21:18 -0000 @@ -0,0 +1,133 @@ +# Extract all examples from the manual source. -*- AWK -*- + +# This file is part of GNU M4 +# Copyright 1992, 2000, 2001 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +# 02111-1307 USA + +# This script is for use with any New AWK. +# Well, now it uses ARGV/ARGC, and I don't know if it's New AWK portable. +# +# Usage: extexi input-file.texi ... -- [FILES to extract] +BEGIN { + if (!output_dir) + output_dir = "."; + for (argc = 1; argc < ARGC; ++argc) + if (ARGV[argc] == "--") + break; + for (i = argc + 1; i < ARGC; ++i) + file_wanted[ARGV[i]] = 1; + ARGC = argc; +} + +/^@node / { + if (seq > 0) + print "AT_CLEANUP"; + + split ($0, tmp, ","); + node = substr(tmp[1], 7); + seq = 0; +} + +/^@comment file: / { + if (!file_wanted[$3]) + message("ignoring " $3); + else + { + message("extracting " $3); + file = $3; + } +} + +/^@example$/, /^@end example$/ { + if (!file) + next; + + if ($0 ~ /^@example$/) + { + input = files_output[file] ? "\n" : ""; + + # FNR is starting at 0 instead of 1, and + # #line report the line number of the *next* line. + # => + 2. + # Note that recent Bison support it, but not Flex. + if (file ~ /\.[chy]*$/) + input = "#line " (FNR + 1) " \"" FILENAME "\"\n"; + next; + } + + if ($0 ~ /^@end example$/) + { + if (input == "") + fatal("no contents: " file); + + input = normalize(input); + # No spurious end of line: use printf. + if (files_output[file]) + printf ("%s", input) >> output_dir "/" file; + else + printf ("%s", input) > output_dir "/" file; + close (output_dir "/" file); + files_output[file] = 1; + + file = input = ""; + next; + } + + input = input $0 "\n"; +} + + +# We have to handle CONTENTS line per line, since anchors in AWK are +# referring to the whole string, not the lines. +function normalize(contents, i, lines, n, line, res) { + # Remove the Texinfo tags. + n = split (contents, lines, "\n"); + # We don't want the last field which empty: it's behind the last \n. + for (i = 1; i < n; ++i) + { + line = lines[i]; + + # Whole line commands. + if (line ~ /^@(c |comment|dots|end (ignore|group)|ignore|group)/) + # Gperf accepts empty lines as valid input!!! + if (file ~ /\.gperf$/) + continue; + else + line = ""; + + gsub (/^@result\{\}/, "", line); + gsub (/^@error\{\}/, "", line); + gsub ("@[{]", "{", line); + gsub ("@}", "}", line); + gsub ("@@", "@", line); + gsub ("@comment.*", "", line); + + res = res line "\n"; + } + return res; +} + + +function message(msg) { + # FNR starts at 0 instead of 1 for line numbers. + print "extexi: " FILENAME ":" (FNR + 1) ": " msg > "/dev/stderr"; +} + +function fatal(msg) { + message(msg); + exit 1 +} Index: examples/calc++/Makefile =================================================================== RCS file: /cvsroot/bison/bison/examples/calc++/Makefile,v retrieving revision 1.1 diff -u -u -r1.1 Makefile --- examples/calc++/Makefile 22 Jun 2005 15:32:10 -0000 1.1 +++ examples/calc++/Makefile 5 Jul 2005 07:21:18 -0000 @@ -13,3 +13,23 @@ calc++-parser.cc calc++-parser.hh \ calc++-scanner.cc \ calc++ + +## ------------ ## +## Extracting. ## +## ------------ ## + +EXTRACTED = \ +calc++-driver.hh calc++-driver.cc \ +calc++-parser.yy \ +calc++-scanner.ll \ +calc++.cc + +doc = ../../doc/bison.texinfo +extexi = gawk -f ../extexi + +RECURSIVE_TARGETS += extract + +$(EXTRACTED): $(doc) ../extexi + $(extexi) $(doc) -- $(EXTRACTED) + +extract extract-am: $(EXTRACTED) Index: examples/calc++/calc++-driver.cc =================================================================== RCS file: /cvsroot/bison/bison/examples/calc++/calc++-driver.cc,v retrieving revision 1.1 diff -u -u -r1.1 calc++-driver.cc --- examples/calc++/calc++-driver.cc 22 Jun 2005 15:32:10 -0000 1.1 +++ examples/calc++/calc++-driver.cc 5 Jul 2005 07:21:18 -0000 @@ -1,9 +1,9 @@ +#line 7140 "../../doc/bison.texinfo" #include "calc++-driver.hh" #include "calc++-parser.hh" calcxx_driver::calcxx_driver () - : trace_scanning (false), - trace_parsing (false) + : trace_scanning (false), trace_parsing (false) { variables["one"] = 1; variables["two"] = 2; Index: examples/calc++/calc++-driver.hh =================================================================== RCS file: /cvsroot/bison/bison/examples/calc++/calc++-driver.hh,v retrieving revision 1.1 diff -u -u -r1.1 calc++-driver.hh --- examples/calc++/calc++-driver.hh 22 Jun 2005 15:32:10 -0000 1.1 +++ examples/calc++/calc++-driver.hh 5 Jul 2005 07:21:18 -0000 @@ -1,64 +1,47 @@ +#line 7036 "../../doc/bison.texinfo" #ifndef CALCXX_DRIVER_HH # define CALCXX_DRIVER_HH # include # include - -/// Forward declarations. +#line 7051 "../../doc/bison.texinfo" +// Forward declarations. union YYSTYPE; - namespace yy { - class calcxx_parser; class location; + class calcxx_parser; } - class calcxx_driver; - +#line 7069 "../../doc/bison.texinfo" // Announce to Flex the prototype we want for lexing function, ... -# define YY_DECL \ +# define YY_DECL \ int yylex (YYSTYPE* yylval, yy::location* yylloc, calcxx_driver& driver) // ... and declare it for the parser's sake. YY_DECL; - -/// Conducting the whole scanning and parsing of Calc++. +#line 7082 "../../doc/bison.texinfo" +// Conducting the whole scanning and parsing of Calc++. class calcxx_driver { public: calcxx_driver (); virtual ~calcxx_driver (); - /// The variables. std::map variables; - /// \name Handling the scanner. - /// \{ - /// Open \a file for scanning. + int result; +#line 7101 "../../doc/bison.texinfo" + // Handling the scanner. void scan_begin (); - /// End scanning, clean up memory. void scan_end (); - /// Whether to enable scanner traces. bool trace_scanning; - /// \} - - /// \name Handling the parser. - /// \{ - /// Parse the file \a f. +#line 7112 "../../doc/bison.texinfo" + // Handling the parser. void parse (const std::string& f); - /// The file being parsed. std::string file; - /// Whether to enable parsing traces. bool trace_parsing; - /// \} - - /// The result. - int result; - - /// \name Error handling. - /// \{ - /// Register a located error. +#line 7126 "../../doc/bison.texinfo" + // Error handling. void error (const yy::location& l, const std::string& m); - /// Register an error. void error (const std::string& m); - /// \} }; -#endif +#endif // ! CALCXX_DRIVER_HH Index: examples/calc++/calc++-parser.yy =================================================================== RCS file: /cvsroot/bison/bison/examples/calc++/calc++-parser.yy,v retrieving revision 1.1 diff -u -u -r1.1 calc++-parser.yy --- examples/calc++/calc++-parser.yy 22 Jun 2005 15:32:10 -0000 1.1 +++ examples/calc++/calc++-parser.yy 5 Jul 2005 07:21:18 -0000 @@ -1,48 +1,44 @@ -%skeleton "lalr1.cc" /* -*- C++ -*- */ +#line 7188 "../../doc/bison.texinfo" +%skeleton "lalr1.cc" /* -*- C++ -*- */ %define "parser_class_name" "calcxx_parser" %defines %{ # include # include "calc++-driver.hh" %} - -%error-verbose - +#line 7204 "../../doc/bison.texinfo" // The parsing context. %parse-param { calcxx_driver& driver } %lex-param { calcxx_driver& driver } - +#line 7217 "../../doc/bison.texinfo" %locations %initial-action { // Initialize the initial location. @$.begin.filename = @$.end.filename = &driver.file; }; - -// Define yydebug. +#line 7231 "../../doc/bison.texinfo" %debug - +%error-verbose +#line 7241 "../../doc/bison.texinfo" // Symbols. - %union { - /// Value of a numeric literal. int ival; - /// Name of a variable. std::string *sval; }; - +#line 7258 "../../doc/bison.texinfo" %token YYEOF 0 "end of file" %token TOKEN_ASSIGN ":=" %token TOKEN_IDENTIFIER "identifier" %token TOKEN_NUMBER "number" %type exp "expression" - +#line 7271 "../../doc/bison.texinfo" %printer { debug_stream () << *$$; } "identifier" %destructor { delete $$; } "identifier" %printer { debug_stream () << $$; } "number" "expression" - +#line 7282 "../../doc/bison.texinfo" %% %start unit; unit: assignments exp { driver.result = $2; }; @@ -61,8 +57,10 @@ | TOKEN_IDENTIFIER { $$ = driver.variables[*$1]; } | TOKEN_NUMBER { $$ = $1; }; %% +#line 7308 "../../doc/bison.texinfo" void -yy::calcxx_parser::error (const location& l, const std::string& m) +yy::calcxx_parser::error (const yy::calcxx_parser::location_type& l, + const std::string& m) { driver.error (l, m); } Index: examples/calc++/calc++-scanner.ll =================================================================== RCS file: /cvsroot/bison/bison/examples/calc++/calc++-scanner.ll,v retrieving revision 1.1 diff -u -u -r1.1 calc++-scanner.ll --- examples/calc++/calc++-scanner.ll 22 Jun 2005 15:32:10 -0000 1.1 +++ examples/calc++/calc++-scanner.ll 5 Jul 2005 07:21:18 -0000 @@ -1,33 +1,28 @@ -%{ /* -*- C++ -*- */ - +%{ /* -*- C++ -*- */ # include -# include # include "calc++-driver.hh" # include "calc++-parser.hh" %} -%option noyywrap nounput debug batch +%option noyywrap nounput batch debug id [a-zA-Z][a-zA-Z_0-9]* int [0-9]+ blank [ \t] %% - %{ -# define YY_USER_ACTION yylloc->columns (yyleng); yylloc->step (); +# define YY_USER_ACTION yylloc->columns (yyleng); %} {blank}+ yylloc->step (); [\n]+ yylloc->lines (yyleng); yylloc->step (); - [-+*/] return yytext[0]; ":=" return TOKEN_ASSIGN; {int} yylval->ival = atoi (yytext); return TOKEN_NUMBER; {id} yylval->sval = new std::string (yytext); return TOKEN_IDENTIFIER; . driver.error (*yylloc, "invalid character"); - %% void Index: examples/calc++/calc++.cc =================================================================== RCS file: /cvsroot/bison/bison/examples/calc++/calc++.cc,v retrieving revision 1.1 diff -u -u -r1.1 calc++.cc --- examples/calc++/calc++.cc 22 Jun 2005 15:32:10 -0000 1.1 +++ examples/calc++/calc++.cc 5 Jul 2005 07:21:18 -0000 @@ -1,3 +1,4 @@ +#line 7414 "../../doc/bison.texinfo" #include #include "calc++-driver.hh" From MAILER-DAEMON Tue Jul 12 16:51:55 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRjP-00059b-8Z for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:51:55 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dpq49-0000uQ-58 for bison-patches@gnu.org; Tue, 05 Jul 2005 12:14:33 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dpq46-0000tE-RX for bison-patches@gnu.org; Tue, 05 Jul 2005 12:14:31 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dpq46-0000rr-BP for bison-patches@gnu.org; Tue, 05 Jul 2005 12:14:30 -0400 Received: from [84.95.80.12] (helo=ganderson.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1Dpq5e-00008b-5l for bison-patches@gnu.org; Tue, 05 Jul 2005 12:16:06 -0400 From: "Steffan Schneider" To: "Safi Skaggs" Date: Tue, 5 Jul 2005 11:09:39 -0500 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0022_01C5817B.F1F12380" X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: VlAGRRRA Scores! X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jul 2005 16:14:33 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0022_01C5817B.F1F12380 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello, be divided among our crews. So that you do that, it is conceivableHeld = fast in bondage by the thought of Arabella and her scorn of himis a = matter that asks serious thought.last of the daylight was fading from = the sky, Jeremy Pitt came forthask satisfaction for the insult. He knew = too well the kind ofshipmaster, who must be associated with him in this = business if ita wall. He caught her by the wrist.to hate him he was = very fully conscious.and trial.swore passionately to Heaven should at = all costs to himself beye do it! He laughed, and added: Praemonitus, = praemunitus.The remainder were equipped with knives and cutlasses.with = the scent of them. It was one of those pleasantround Cape Tiburon, and = thereafter, standing well out to sea, withvoice.Scraps of news filtered = into the gaol from the outside world. Some ------=_NextPart_000_0022_01C5817B.F1F12380 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
     
    Hello, Welcome to PharmOnlin registered e syenite Shop - on passionary e = of the leading onIine pharmaceutical shops
     
    unwritten V floatable G hateful AL L convey l
    l alluvia = A R cooper = A C broncho = l drubbing = IS  reckon = VA fabulist = UM  and many other.
     
    - S nonpareil = ave over 50%
    - Worldwide SHlPPl = equalizer NG
    - Total co turnip = nfidentiaIity
    - Over 5 miIIion cust = scollop omers in 130 countries
     
    H parcener ave = a nice day!
    ------=_NextPart_000_0022_01C5817B.F1F12380-- From MAILER-DAEMON Tue Jul 12 16:51:58 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRjS-0005BO-Jq for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:51:58 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dq22R-00060P-RI for bison-patches@gnu.org; Wed, 06 Jul 2005 01:01:35 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dq21l-0005kk-T1 for bison-patches@gnu.org; Wed, 06 Jul 2005 01:01:15 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dq21j-0005bq-C7 for bison-patches@gnu.org; Wed, 06 Jul 2005 01:00:51 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dq1eF-0000y7-25 for bison-patches@gnu.org; Wed, 06 Jul 2005 00:36:35 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j664UBL16571; Tue, 5 Jul 2005 21:30:11 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dq1Y2-0007Vx-IY; Tue, 05 Jul 2005 21:30:10 -0700 To: Hilfinger@cs.berkeley.edu References: <200507060244.j662iQQe013545@tully.CS.Berkeley.EDU> From: Paul Eggert Date: Tue, 05 Jul 2005 21:30:10 -0700 In-Reply-To: <200507060244.j662iQQe013545@tully.CS.Berkeley.EDU> (Paul Hilfinger's message of "Tue, 05 Jul 2005 19:44:26 -0700") Message-ID: <87irzod0a5.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: Bison GLR buffer-overflow and invalid pointer fixes X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Jul 2005 05:01:36 -0000 Thanks for looking at the patch. At the end of this message is the further patch that I installed in response to your comments. Paul Hilfinger writes: > I write > foo bar; > bar = baz; > rather than > foo bar = baz; > in cases where bar is a local variable that is going to be modified, > and I avoid ++ and -- as much as possible) OK, I adjusted to that style in code that is unique to glr.c. Some code is shared between yacc.c, though; I thought it better to leave that alone (please see below). > yyFail is called with a known set of arguments, so no resizing is > really needed. I suppose it can't hurt to protect against rogue calls > from user code. That's a a good point about the known set of arguments: I hadn't noticed that the printf-like functionality is needed at all. This simplifies things greatly (and also avoids relying on vsnprintf, which is a bit newfangled). However, we shouldn't need to worry about rogue calls: after all, user code can do rogue calls of any sort, and there is no real defense against that. > > (yyreportSyntaxError): Check for size-calculation overflow. > > This code is taken from yacc.c. > > This one I am less happy about. The original code should have tested > for memory overflow, true, but that requires just one small check. Actually, I think there are several places where checks are required. In general we need to check whenever two size_t values are added. Some of these checks can be omitted, but it's not clear to me that all can be omitted. Part of the extra complexity in yacc.c is needed to deal with the possibility that the strings become arbitrarily long after they are translated into the user's natural language. (A user could, for example, substitute a message catalog with super-long strings.) This complexity is not needed in glr.c yet, since it doesn't do translation yet, but my guess is that it will support translation soon once the kinks are ironed out elsewhere. All other things being equal I'd prefer glr.c to resemble yacc.c (by improving either or both modules) in areas like this where they're doing the same thing. I agree that the code is too complicated, but I don't offhand see how to simplify it. (Perhaps I'm too familiar with it....) > This replacement seems even more complex than the original and > introduces what seems to be a gratuitous limit on the number of > "expected" tokens reported. The gratuitous limit of 5 tokens was already in glr.c, albeit in an unobvious spot. Here it is (starting with line 1711 of revision 1.94 dated 2005-06-07): if (yycount == 5) { yysize = 0; break; } This same limit of 5 is also in yacc.c. The limit could be removed, but I think the limit is there because users typically don't want to see more than 5 possible tokens. Anyway, here's the further patch I just installed: 2005-07-05 Paul Eggert * data/glr.c (yyFail): Drastically simplify; since the format argument never had any % directives, we can simply pass it to yyerror. (yyparse): Use "t a; a=b;" rather than "t a = b;" when a will be modified later, as that is the usual style in glr.c. Problems reported by Paul Hilfinger. --- glr.c 5 Jul 2005 21:58:37 -0000 1.95 +++ glr.c 6 Jul 2005 04:12:23 -0000 1.96 @@ -678,37 +678,11 @@ struct yyGLRStack { static void yyexpandGLRStack (yyGLRStack* yystack]b4_pure_formals[); static void -yyFail (yyGLRStack* yystack]b4_pure_formals[, const char* yyformat, ...) +yyFail (yyGLRStack* yystack]b4_pure_formals[, const char* yymsg) { yystack->yyerrflag = 1; - if (yyformat != NULL) - { - char yysmallbuf[1024]; - char const *yymsg = yysmallbuf; - char *yybigbuf = NULL; - int yymsglen; - va_list yyap; - - va_start (yyap, yyformat); - yymsglen = vsnprintf (yysmallbuf, sizeof yysmallbuf, yyformat, yyap); - va_end (yyap); - - if (yymsglen < 0) - yymsg = "message is too long to be printed"; - else if (sizeof yysmallbuf <= yymsglen && yymsglen < YYSIZEMAX) - { - size_t yybigsize = yymsglen; - yybigsize++; - yymsg = yybigbuf = YYMALLOC (yybigsize); - - va_start (yyap, yyformat); - vsnprintf (yybigbuf, yybigsize, yyformat, yyap); - va_end (yyap); - } - - yyerror (]b4_yyerror_args[yymsg); - YYFREE (yybigbuf); - } + if (yymsg != NULL) + yyerror (]b4_yyerror_args[yymsg); longjmp (yystack->yyexception_buffer, 1); } @@ -1973,7 +1947,7 @@ yyrecoverSyntaxError (yyGLRStack* yystac ]b4_c_ansi_function_def([yyparse], [int], b4_parse_param)[ { - yySymbol yytoken = YYEMPTY; + yySymbol yytoken; yyGLRStack yystack; size_t yyposn; ]b4_pure_if( @@ -1989,6 +1963,8 @@ yyrecoverSyntaxError (yyGLRStack* yystac YYDPRINTF ((stderr, "Starting parse\n")); + yytoken = YYEMPTY; + if (setjmp (yystack.yyexception_buffer) != 0) goto yyDone; From MAILER-DAEMON Tue Jul 12 16:52:00 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRjU-0005DN-NZ for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:52:00 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DqCps-0000eT-DV for bison-patches@gnu.org; Wed, 06 Jul 2005 12:33:20 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DqCjZ-0007bI-Ky for bison-patches@gnu.org; Wed, 06 Jul 2005 12:27:00 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DqCjR-0007TL-So for bison-patches@gnu.org; Wed, 06 Jul 2005 12:26:44 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DqCY8-0002AJ-If for bison-patches@gnu.org; Wed, 06 Jul 2005 12:15:00 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j66G7wL27312; Wed, 6 Jul 2005 09:07:59 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DqCRJ-00028R-9G; Wed, 06 Jul 2005 09:07:57 -0700 To: Akim Demaille References: From: Paul Eggert Date: Wed, 06 Jul 2005 09:07:57 -0700 In-Reply-To: (Akim Demaille's message of "Wed, 06 Jul 2005 09:45:12 +0200") Message-ID: <871x6bgboi.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Bison Patches Subject: Re: FYI: Bind examples/calc++ to the package X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Jul 2005 16:33:20 -0000 Akim Demaille writes: > The sources of the example were under CVS, so they should be in > srcdir. Now that they are extracted, it is troublesome to keep them > in srcdir, but it makes it easy to check if the extraction went wrong > using cvs diff. Do you think we should keep them in srcdir and ship > them, or rather move everything into builddir? Hm. Then there is the > problem of making sure the extraction scheme is portable (currently it > calls gawk). Thanks. Let's keep them in srcdir, as the outputs are the same on all platforms and are relatively small. And, as you say, it's easier if we don't have to port the extraction scheme. From MAILER-DAEMON Tue Jul 12 16:51:59 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRjT-0005Bh-17 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:51:59 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dq4mN-0005HQ-Gd for bison-patches@gnu.org; Wed, 06 Jul 2005 03:57:11 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dq4kV-0004yH-7f for bison-patches@gnu.org; Wed, 06 Jul 2005 03:55:57 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dq4kR-0004lq-UK for bison-patches@gnu.org; Wed, 06 Jul 2005 03:55:13 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1Dq4gz-0004Dm-AG for bison-patches@gnu.org; Wed, 06 Jul 2005 03:51:38 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.50) id 1Dq4am-0000hw-Cj; Wed, 06 Jul 2005 09:45:12 +0200 To: Bison Patches From: Akim Demaille Date: Wed, 06 Jul 2005 09:45:12 +0200 Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Paul Eggert Subject: FYI: Bind examples/calc++ to the package X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Jul 2005 07:57:12 -0000 The sources of the example were under CVS, so they should be in srcdir. Now that they are extracted, it is troublesome to keep them in srcdir, but it makes it easy to check if the extraction went wrong using cvs diff. Do you think we should keep them in srcdir and ship them, or rather move everything into builddir? Hm. Then there is the problem of making sure the extraction scheme is portable (currently it calls gawk). Index: ChangeLog from Akim Demaille Bind examples/calc++ to the package. * examples/calc++/Makefile: Remove, replaced by... * examples/calc++/Makefile.am: ... this new file. * examples/calc++/compile: Remove. * examples/Makefile.am: New. * configure.ac, Makefile.am: Adjust. Index: Makefile.am =================================================================== RCS file: /cvsroot/bison/bison/Makefile.am,v retrieving revision 1.34 diff -u -u -r1.34 Makefile.am --- Makefile.am 14 May 2005 06:49:46 -0000 1.34 +++ Makefile.am 6 Jul 2005 07:42:21 -0000 @@ -1,5 +1,5 @@ ## Process this file with automake to produce Makefile.in -*-Makefile-*- -## Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +## Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by @@ -18,7 +18,7 @@ ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = config po lib data src doc tests +SUBDIRS = config po lib data src doc tests examples EXTRA_DIST = REFERENCES OChangeLog Makefile.maint GNUmakefile Makefile.cfg Index: configure.ac =================================================================== RCS file: /cvsroot/bison/bison/configure.ac,v retrieving revision 1.54 diff -u -u -r1.54 configure.ac --- configure.ac 22 May 2005 17:45:28 -0000 1.54 +++ configure.ac 6 Jul 2005 07:42:21 -0000 @@ -129,5 +129,7 @@ config/Makefile po/Makefile.in data/Makefile + examples/Makefile + examples/calc++/Makefile lib/Makefile src/Makefile doc/Makefile]) AC_OUTPUT Index: doc/bison.texinfo =================================================================== RCS file: /cvsroot/bison/bison/doc/bison.texinfo,v retrieving revision 1.147 diff -u -u -r1.147 bison.texinfo --- doc/bison.texinfo 5 Jul 2005 07:21:30 -0000 1.147 +++ doc/bison.texinfo 6 Jul 2005 07:42:22 -0000 @@ -7360,10 +7360,12 @@ @comment file: calc++-scanner.ll @example +%@{ +# define YY_USER_ACTION yylloc->columns (yyleng); +%@} %% %@{ yylloc->step (); -# define YY_USER_ACTION yylloc->columns (yyleng); %@} @{blank@}+ yylloc->step (); [\n]+ yylloc->lines (yyleng); yylloc->step (); Index: examples/Makefile.am =================================================================== RCS file: examples/Makefile.am diff -N examples/Makefile.am --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ examples/Makefile.am 6 Jul 2005 07:42:22 -0000 @@ -0,0 +1,21 @@ +## Process this file with automake to produce Makefile.in -*-Makefile-*- +## Copyright (C) 2005 Free Software Foundation, Inc. + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +## 02110-1301 USA + +SUBDIRS = calc++ + +dist_noinst_SCRIPTS = extexi Index: examples/calc++/Makefile =================================================================== RCS file: examples/calc++/Makefile diff -N examples/calc++/Makefile --- examples/calc++/Makefile 5 Jul 2005 07:21:30 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,35 +0,0 @@ -all: calc++ - -calc++: - flex -ocalc++-scanner.cc calc++-scanner.ll - bison -o calc++-parser.cc calc++-parser.yy - $(CC) -o calc++ calc++.cc calc++-driver.cc calc++-parser.cc calc++-scanner.cc - -check: all - ./test - -clean: - rm -f *~ *.o *.tab.* input position.hh location.hh stack.hh \ - calc++-parser.cc calc++-parser.hh \ - calc++-scanner.cc \ - calc++ - -## ------------ ## -## Extracting. ## -## ------------ ## - -EXTRACTED = \ -calc++-driver.hh calc++-driver.cc \ -calc++-parser.yy \ -calc++-scanner.ll \ -calc++.cc - -doc = ../../doc/bison.texinfo -extexi = gawk -f ../extexi - -RECURSIVE_TARGETS += extract - -$(EXTRACTED): $(doc) ../extexi - $(extexi) $(doc) -- $(EXTRACTED) - -extract extract-am: $(EXTRACTED) Index: examples/calc++/Makefile.am =================================================================== RCS file: examples/calc++/Makefile.am diff -N examples/calc++/Makefile.am --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ examples/calc++/Makefile.am 6 Jul 2005 07:42:22 -0000 @@ -0,0 +1,86 @@ +## Process this file with automake to produce Makefile.in -*-Makefile-*- +## Copyright (C) 2005 Free Software Foundation, Inc. + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +## 02110-1301 USA + +## ------------------------------------- ## +## Running the bison from this tarball. ## +## ------------------------------------- ## + +BISON = $(top_builddir)/tests/bison +BISON_IN = $(top_srcdir)/tests/bison.in + +$(BISON): $(BISON_IN) + cd $(top_builddir)/tests && $(MAKE) $(AM_MAKEFLAGS) bison + +## ------------ ## +## Extracting. ## +## ------------ ## + +doc = $(top_srcdir)/doc/bison.texinfo +extexi = $(top_srcdir)/examples/extexi +run_extexi = gawk -f $(extexi) +$(calc_sources_extracted): $(doc) $(extexi) +# Extract in src. + cd $(srcdir) && \ + gawk -f ../extexi ../../doc/bison.texinfo -- \ + calc++-scanner.ll calc++.cc calc++-driver.hh calc++-driver.cc + + +## ------------------- ## +## Parser generation. ## +## ------------------- ## + +# We do not use Automake features here. +BUILT_SOURCES = $(calc_sources_generated) +MAINTAINERCLEANFILES = $(calc_sources_generated) + +# Compile the parser and save cycles. +# This code comes from "Handling Tools that Produce Many Outputs", +# from the Automake documentation. +EXTRA_DIST = $(srcdir)/calc++-parser.stamp $(srcdir)/calc++-parser.yy +# Don't depend on $(BISON) otherwise we would rebuild these files +# in srcdir, including during distcheck, which is forbidden. +$(srcdir)/calc++-parser.stamp: $(srcdir)/calc++-parser.yy $(BISON_IN) + @rm -f calc++-parser.tmp + @touch calc++-parser.tmp + $(BISON) -S lalr1.cc $(srcdir)/calc++-parser.yy -o $(srcdir)/calc++-parser.cc -d -ra + @mv -f calc++-parser.tmp $@ + +$(calc_sources_generated): $(srcdir)/calc++-parser.stamp + @if test -f $@; then :; else x\ + rm -f $(srcdir)/calc++-parser.stamp; \ + $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/calc++-parser.stamp; \ + fi + + +## --------------------------- ## +## Building & testing calc++. ## +## --------------------------- ## + +noinst_PROGRAMS = calc++ + +calc_sources_extracted = $(srcdir)/calc++-scanner.ll $(srcdir)/calc++.cc \ +$(srcdir)/calc++-driver.hh $(srcdir)/calc++-driver.cc +calc_extracted = $(calc_sources_extracted) calc++-parser.yy +calc_sources_generated = \ + $(srcdir)/stack.hh $(srcdir)/position.hh $(srcdir)/location.hh \ + $(srcdir)/calc++-parser.hh $(srcdir)/calc++-parser.cc + +calc___SOURCES = $(calc_sources_extracted) $(calc_sources_generated) + +TESTS = tests +EXTRA_DIST += $(TESTS) Index: examples/calc++/calc++-scanner.ll =================================================================== RCS file: /cvsroot/bison/bison/examples/calc++/calc++-scanner.ll,v retrieving revision 1.2 diff -u -u -r1.2 calc++-scanner.ll --- examples/calc++/calc++-scanner.ll 5 Jul 2005 07:21:30 -0000 1.2 +++ examples/calc++/calc++-scanner.ll 6 Jul 2005 07:42:22 -0000 @@ -10,10 +10,12 @@ int [0-9]+ blank [ \t] +%{ +# define YY_USER_ACTION yylloc->columns (yyleng); +%} %% %{ yylloc->step (); -# define YY_USER_ACTION yylloc->columns (yyleng); %} {blank}+ yylloc->step (); [\n]+ yylloc->lines (yyleng); yylloc->step (); Index: examples/calc++/calc++.cc =================================================================== RCS file: /cvsroot/bison/bison/examples/calc++/calc++.cc,v retrieving revision 1.2 diff -u -u -r1.2 calc++.cc --- examples/calc++/calc++.cc 5 Jul 2005 07:21:30 -0000 1.2 +++ examples/calc++/calc++.cc 6 Jul 2005 07:42:22 -0000 @@ -1,4 +1,4 @@ -#line 7414 "../../doc/bison.texinfo" +#line 7416 "../../doc/bison.texinfo" #include #include "calc++-driver.hh" Index: examples/calc++/compile =================================================================== RCS file: examples/calc++/compile diff -N examples/calc++/compile --- examples/calc++/compile 22 Jun 2005 15:32:10 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,9 +0,0 @@ -#! /bin/sh - -set -ex -BISON_PKGDATADIR=$HOME/src/bison/data -export BISON_PKGDATADIR - -flex -ocalc++-scanner.cc calc++-scanner.ll -bison -o calc++-parser.cc calc++-parser.yy -g++ -o calc++ calc++.cc calc++-driver.cc calc++-parser.cc calc++-scanner.cc Index: examples/calc++/test =================================================================== RCS file: /cvsroot/bison/bison/examples/calc++/test,v retrieving revision 1.1 diff -u -u -r1.1 test --- examples/calc++/test 22 Jun 2005 15:32:10 -0000 1.1 +++ examples/calc++/test 6 Jul 2005 07:42:22 -0000 @@ -1,4 +1,5 @@ #! /bin/sh + set +e cat >input < From: Paul Eggert Date: Tue, 05 Jul 2005 14:58:09 -0700 In-Reply-To: <16813.80.126.59.26.1120546137.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Tue, 5 Jul 2005 06:48:57 -0000 (GMT)") Message-ID: <87pstwlxu6.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Bison GLR buffer-overflow and invalid pointer fixes X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jul 2005 22:02:30 -0000 twlevo@xs4all.nl writes: > malloc/realloc's in glr.c dont have checks. > small fix needed? Actually, it's more like a big fix. I installed the following patch. Paul H., can you please double-check this when you have the time? Thanks. 2005-07-05 Paul Eggert Rewrite GLR parser to catch more buffer overrun, storage exhaustion, and size overflow errors. * data/glr.c: Include etc. after user prolog, not before, in case the user prolog sets feature-test macros like _GNU_SOURCE. (YYSIZEMAX): New macro. (yystpcpy): New function, taken from yacc.c. (struct yyGLRStack.yyspaceLeft): Now size_t, not int. (yyinitGLRStack, yyfreeGLRstack): Remove unnecessary forward decls, so that we don't have to maintain their signatures. (yyFail): Check for buffer overflow, by using vsnprintf rather than vsprintf. Allocate a bigger buffer if possible. Report an error if buffer allocation fails. (yyStackOverflow): New function. (yyinitStateSet, yyinitGLRStack): Return a boolean indicating whether the initialization was successful. It might fail if storage was exhausted. (yyexpandGLRStack): Add more checks for storage allocation failure. Use yyStackOverflow to report failures. (yymarkStackDeleted, yyglrShift, yyglrShiftDefer, yydoAction): (yysplitStack, yyprocessOneStack, yyparse, yypstack): Don't assume stack number fits in int. (yysplitStack): Check for storage allocation failure. (yysplitStack, yyprocessOneStack): Add pure_formals, so that we can print diagnostics on storage allocation failure. All callers changed. (yyresolveValue): Use yybool for boolean. (yyreportSyntaxError): Check for size-calculation overflow. This code is taken from yacc.c. (yyparse): Check for storage allocation errors when allocating the initial stack. --- data/glr.c 7 Jun 2005 02:47:12 -0000 1.94 +++ data/glr.c 5 Jul 2005 21:56:35 -0000 @@ -142,12 +142,6 @@ b4_copyright([Skeleton parser for GLR pa [ /* This is the parser code for GLR (Generalized LR) parser. */ -#include -#include -#include -#include -#include - ]b4_identification m4_if(b4_prefix[], [yy], [], [/* Substitute the variable and function names. */ @@ -218,6 +212,12 @@ static YYSTYPE yyval_default; ]/* Line __line__ of glr.c. */ b4_syncline([@oline@], [@ofile@]) [ +#include +#include +#include +#include +#include + #ifndef YYFREE # define YYFREE free #endif @@ -228,6 +228,8 @@ b4_syncline([@oline@], [@ofile@]) # define YYREALLOC realloc #endif +#define YYSIZEMAX ((size_t) -1) + #ifdef __cplusplus typedef bool yybool; #else @@ -549,7 +551,7 @@ int yydebug; /* Minimum number of free items on the stack allowed after an allocation. This is to allow allocation and initialization - to be completed by functions that call expandGLRStack before the + to be completed by functions that call yyexpandGLRStack before the stack is expanded, thus insuring that all necessary pointers get properly redirected to new data. */ #define YYHEADROOM 2 @@ -563,6 +565,30 @@ int yydebug; #define YYSTACKEXPANDABLE 0 #endif +#if YYERROR_VERBOSE + +# ifndef yystpcpy +# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +#endif /* !YYERROR_VERBOSE */ + /** State numbers, as in LALR(1) machine */ typedef int yyStateNum; @@ -643,15 +669,13 @@ struct yyGLRStack { jmp_buf yyexception_buffer; yyGLRStackItem* yyitems; yyGLRStackItem* yynextFree; - int yyspaceLeft; + size_t yyspaceLeft; yyGLRState* yysplitPoint; yyGLRState* yylastDeleted; yyGLRStateSet yytops; }; -static void yyinitGLRStack (yyGLRStack* yystack, size_t yysize); static void yyexpandGLRStack (yyGLRStack* yystack]b4_pure_formals[); -static void yyfreeGLRStack (yyGLRStack* yystack); static void yyFail (yyGLRStack* yystack]b4_pure_formals[, const char* yyformat, ...) @@ -659,18 +683,43 @@ yyFail (yyGLRStack* yystack]b4_pure_form yystack->yyerrflag = 1; if (yyformat != NULL) { - char yymsg[256]; + char yysmallbuf[1024]; + char const *yymsg = yysmallbuf; + char *yybigbuf = NULL; + int yymsglen; va_list yyap; + va_start (yyap, yyformat); - vsprintf (yymsg, yyformat, yyap); + yymsglen = vsnprintf (yysmallbuf, sizeof yysmallbuf, yyformat, yyap); + va_end (yyap); + + if (yymsglen < 0) + yymsg = "message is too long to be printed"; + else if (sizeof yysmallbuf <= yymsglen && yymsglen < YYSIZEMAX) + { + size_t yybigsize = yymsglen; + yybigsize++; + yymsg = yybigbuf = YYMALLOC (yybigsize); + + va_start (yyap, yyformat); + vsnprintf (yybigbuf, yybigsize, yyformat, yyap); + va_end (yyap); + } + yyerror (]b4_yyerror_args[yymsg); + YYFREE (yybigbuf); } longjmp (yystack->yyexception_buffer, 1); } +static void +yyStackOverflow (yyGLRStack* yystack]b4_pure_formals[) +{ + yyFail (yystack]b4_pure_args[, "parser stack overflow"); +} + #if YYDEBUG || YYERROR_VERBOSE -/** A printable representation of TOKEN. Valid until next call to - * tokenName. */ +/** A printable representation of TOKEN. */ static inline const char* yytokenName (yySymbol yytoken) { @@ -909,13 +958,16 @@ yyaddDeferredAction (yyGLRStack* yystack /* GLRStacks */ /** Initialize SET to a singleton set containing an empty stack. */ -static void +static yybool yyinitStateSet (yyGLRStateSet* yyset) { yyset->yysize = 1; yyset->yycapacity = 16; yyset->yystates = (yyGLRState**) YYMALLOC (16 * sizeof yyset->yystates[0]); + if (! yyset->yystates) + return yyfalse; yyset->yystates[0] = NULL; + return yytrue; } static void yyfreeStateSet (yyGLRStateSet* yyset) @@ -925,7 +977,7 @@ static void yyfreeStateSet (yyGLRStateSe /** Initialize STACK to a single empty stack, with total maximum * capacity for all stacks of SIZE. */ -static void +static yybool yyinitGLRStack (yyGLRStack* yystack, size_t yysize) { yystack->yyerrflag = 0; @@ -936,7 +988,7 @@ yyinitGLRStack (yyGLRStack* yystack, siz (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystack->yynextFree[0]); yystack->yysplitPoint = NULL; yystack->yylastDeleted = NULL; - yyinitStateSet (&yystack->yytops); + return yyinitStateSet (&yystack->yytops) && yystack->yyitems; } #define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \ @@ -951,18 +1003,20 @@ static void yyexpandGLRStack (yyGLRStack* yystack]b4_pure_formals[) { #if YYSTACKEXPANDABLE - yyGLRStack yynewStack; + yyGLRStackItem* yynewItems; yyGLRStackItem* yyp0, *yyp1; size_t yysize, yynewSize; size_t yyn; yysize = yystack->yynextFree - yystack->yyitems; if (YYMAXDEPTH <= yysize) - yyFail (yystack][]b4_pure_args[, "parser stack overflow"); + yyStackOverflow (yystack]b4_pure_args[); yynewSize = 2*yysize; if (YYMAXDEPTH < yynewSize) yynewSize = YYMAXDEPTH; - yyinitGLRStack (&yynewStack, yynewSize); - for (yyp0 = yystack->yyitems, yyp1 = yynewStack.yyitems, yyn = yysize; + yynewItems = (yyGLRStackItem*) YYMALLOC (yynewSize * sizeof yynewItems[0]); + if (! yynewItems) + yyStackOverflow (yystack]b4_pure_args[); + for (yyp0 = yystack->yyitems, yyp1 = yynewItems, yyn = yysize; 0 < yyn; yyn -= 1, yyp0 += 1, yyp1 += 1) { @@ -989,22 +1043,22 @@ yyexpandGLRStack (yyGLRStack* yystack]b4 } } if (yystack->yysplitPoint != NULL) - yystack->yysplitPoint = YYRELOC (yystack->yyitems, yynewStack.yyitems, + yystack->yysplitPoint = YYRELOC (yystack->yyitems, yynewItems, yystack->yysplitPoint, yystate); for (yyn = 0; yyn < yystack->yytops.yysize; yyn += 1) if (yystack->yytops.yystates[yyn] != NULL) yystack->yytops.yystates[yyn] = - YYRELOC (yystack->yyitems, yynewStack.yyitems, + YYRELOC (yystack->yyitems, yynewItems, yystack->yytops.yystates[yyn], yystate); YYFREE (yystack->yyitems); - yystack->yyitems = yynewStack.yyitems; - yystack->yynextFree = yynewStack.yynextFree + yysize; - yystack->yyspaceLeft = yynewStack.yyspaceLeft - yysize; + yystack->yyitems = yynewItems; + yystack->yynextFree = yynewItems + yysize; + yystack->yyspaceLeft = yynewSize - yysize; #else - yyFail (yystack][]b4_pure_args[, "parser stack overflow"); + yyStackOverflow (yystack]b4_pure_args[); #endif } @@ -1027,7 +1081,7 @@ yyupdateSplit (yyGLRStack* yystack, yyGL /** Invalidate stack #K in STACK. */ static inline void -yymarkStackDeleted (yyGLRStack* yystack, int yyk) +yymarkStackDeleted (yyGLRStack* yystack, size_t yyk) { if (yystack->yytops.yystates[yyk] != NULL) yystack->yylastDeleted = yystack->yytops.yystates[yyk]; @@ -1080,7 +1134,8 @@ yyremoveDeletes (yyGLRStack* yystack) /** Shift to a new state on stack #K of STACK, corresponding to LR state * LRSTATE, at input position POSN, with (resolved) semantic value SVAL. */ static inline void -yyglrShift (yyGLRStack* yystack, int yyk, yyStateNum yylrState, size_t yyposn, +yyglrShift (yyGLRStack* yystack, size_t yyk, yyStateNum yylrState, + size_t yyposn, YYSTYPE yysval, YYLTYPE* yylocp]b4_user_formals[) { yyGLRStackItem* yynewItem; @@ -1104,7 +1159,7 @@ yyglrShift (yyGLRStack* yystack, int yyk * state YYLRSTATE, at input position YYPOSN, with the (unresolved) * semantic value of YYRHS under the action for YYRULE. */ static inline void -yyglrShiftDefer (yyGLRStack* yystack, int yyk, yyStateNum yylrState, +yyglrShiftDefer (yyGLRStack* yystack, size_t yyk, yyStateNum yylrState, size_t yyposn, yyGLRState* rhs, yyRuleNum yyrule]b4_pure_formals[) { yyGLRStackItem* yynewItem; @@ -1129,7 +1184,7 @@ yyglrShiftDefer (yyGLRStack* yystack, in * and *LOCP to the computed location (if any). Return value is as * for userAction. */ static inline YYRESULTTAG -yydoAction (yyGLRStack* yystack, int yyk, yyRuleNum yyrule, +yydoAction (yyGLRStack* yystack, size_t yyk, yyRuleNum yyrule, YYSTYPE* yyvalp, YYLTYPE* yylocp]b4_user_formals[) { int yynrhs = yyrhsLength (yyrule); @@ -1263,8 +1318,8 @@ yyglrReduce (yyGLRStack* yystack, size_t return yyok; } -static int -yysplitStack (yyGLRStack* yystack, int yyk) +static size_t +yysplitStack (yyGLRStack* yystack, size_t yyk]b4_pure_formals[) { if (yystack->yysplitPoint == NULL) { @@ -1273,11 +1328,15 @@ yysplitStack (yyGLRStack* yystack, int y } if (yystack->yytops.yysize >= yystack->yytops.yycapacity) { - yystack->yytops.yycapacity *= 2; - yystack->yytops.yystates = - (yyGLRState**) YYREALLOC (yystack->yytops.yystates, - (yystack->yytops.yycapacity - * sizeof yystack->yytops.yystates[0])); + yyGLRState** yynewStates; + if (! ((yystack->yytops.yycapacity + <= (YYSIZEMAX / (2 * sizeof yynewStates[0]))) + && (yynewStates = + (yyGLRState**) YYREALLOC (yystack->yytops.yystates, + ((yystack->yytops.yycapacity *= 2) + * sizeof yynewStates[0]))))) + yyStackOverflow (yystack]b4_pure_args[); + yystack->yytops.yystates = yynewStates; } yystack->yytops.yystates[yystack->yytops.yysize] = yystack->yytops.yystates[yyk]; @@ -1503,10 +1562,10 @@ yyresolveValue (yySemanticOption* yyopti { yySemanticOption* yybest; yySemanticOption* yyp; - int yymerge; + yybool yymerge; yybest = yyoptionList; - yymerge = 0; + yymerge = yyfalse; for (yyp = yyoptionList->yynext; yyp != NULL; yyp = yyp->yynext) { if (yyidenticalOptions (yybest, yyp)) @@ -1518,13 +1577,13 @@ yyresolveValue (yySemanticOption* yyopti yyreportAmbiguity (yybest, yyp, yystack]b4_pure_args[); break; case 1: - yymerge = 1; + yymerge = yytrue; break; case 2: break; case 3: yybest = yyp; - yymerge = 0; + yymerge = yyfalse; break; } } @@ -1598,9 +1657,9 @@ yycompressStack (yyGLRStack* yystack) } static YYRESULTTAG -yyprocessOneStack (yyGLRStack* yystack, int yyk, +yyprocessOneStack (yyGLRStack* yystack, size_t yyk, size_t yyposn, YYSTYPE* yylvalp, YYLTYPE* yyllocp - ]b4_user_formals[) + ]b4_pure_formals[) { int yyaction; const short int* yyconflicts; @@ -1610,7 +1669,8 @@ yyprocessOneStack (yyGLRStack* yystack, while (yystack->yytops.yystates[yyk] != NULL) { yyStateNum yystate = yystack->yytops.yystates[yyk]->yylrState; - YYDPRINTF ((stderr, "Stack %d Entering state %d\n", yyk, yystate)); + YYDPRINTF ((stderr, "Stack %lu Entering state %d\n", + (unsigned long int) yyk, yystate)); YYASSERT (yystate != YYFINAL); @@ -1619,7 +1679,8 @@ yyprocessOneStack (yyGLRStack* yystack, yyrule = yydefaultAction (yystate); if (yyrule == 0) { - YYDPRINTF ((stderr, "Stack %d dies.\n", yyk)); + YYDPRINTF ((stderr, "Stack %lu dies.\n", + (unsigned long int) yyk)); yymarkStackDeleted (yystack, yyk); return yyok; } @@ -1639,19 +1700,20 @@ yyprocessOneStack (yyGLRStack* yystack, while (*yyconflicts != 0) { - int yynewStack = yysplitStack (yystack, yyk); - YYDPRINTF ((stderr, "Splitting off stack %d from %d.\n", - yynewStack, yyk)); + size_t yynewStack = yysplitStack (yystack, yyk]b4_pure_args[); + YYDPRINTF ((stderr, "Splitting off stack %lu from %lu.\n", + (unsigned long int) yynewStack, + (unsigned long int) yyk)); YYCHK (yyglrReduce (yystack, yynewStack, *yyconflicts, yyfalse]b4_lpure_args[)); YYCHK (yyprocessOneStack (yystack, yynewStack, yyposn, - yylvalp, yyllocp]b4_user_args[)); + yylvalp, yyllocp]b4_pure_args[)); yyconflicts += 1; } if (yyisShiftAction (yyaction)) { - YYDPRINTF ((stderr, "On stack %d, ", yyk)); + YYDPRINTF ((stderr, "On stack %lu, ", (unsigned long int) yyk)); YY_SYMBOL_PRINT ("shifting", *yytokenp, yylvalp, yyllocp); yyglrShift (yystack, yyk, yyaction, yyposn+1, *yylvalp, yyllocp]b4_user_args[); @@ -1661,7 +1723,8 @@ yyprocessOneStack (yyGLRStack* yystack, } else if (yyisErrorAction (yyaction)) { - YYDPRINTF ((stderr, "Stack %d dies.\n", yyk)); + YYDPRINTF ((stderr, "Stack %lu dies.\n", + (unsigned long int) yyk)); yymarkStackDeleted (yystack, yyk); break; } @@ -1688,10 +1751,24 @@ yyreportSyntaxError (yyGLRStack* yystack yyn = yypact[yystack->yytops.yystates[0]->yylrState]; if (YYPACT_NINF < yyn && yyn < YYLAST) { - size_t yysize = 0; - const char* yyprefix; - char* yymsg; + size_t yysize0 = strlen (yytokenName (*yytokenp)); + size_t yysize = yysize0; + size_t yysize1; + yybool yysize_overflow = yyfalse; + char* yymsg = NULL; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ @@ -1700,41 +1777,53 @@ yyreportSyntaxError (yyGLRStack* yystack /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yycount = 0; + int yycount = 1; + + yyarg[0] = yytokenName (*yytokenp); + yyfmt = yystpcpy (yyformat, yyunexpected); - yyprefix = ", expecting "; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { - yysize += strlen (yyprefix) + strlen (yytokenName (yyx)); - yycount += 1; - if (yycount == 5) + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { - yysize = 0; + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; break; } - yyprefix = " or "; + yyarg[yycount++] = yytokenName (yyx); + yysize1 = yysize + strlen (yytokenName (yyx)); + yysize_overflow |= yysize1 < yysize; + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; } - yysize += (sizeof ("syntax error, unexpected ") - + strlen (yytokenName (*yytokenp))); - yymsg = (char*) YYMALLOC (yysize); - if (yymsg != 0) + + yyf = yyformat; + yysize1 = yysize + (yyfmt - yyformat); + yysize_overflow |= yysize1 < yysize; + yysize = yysize1; + + if (!yysize_overflow) + yymsg = (char *) YYMALLOC (yysize); + + if (yymsg) { - char* yyp = yymsg; - sprintf (yyp, "syntax error%s%s", - (*yytokenp == YYEMPTY ? "" : ", unexpected "), - yytokenName (*yytokenp)); - yyp += strlen (yyp); - if (yycount < 5) + char *yyp = yymsg; + int yyi = 0; + while ((*yyp = *yyf)) { - yyprefix = ", expecting "; - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - sprintf (yyp, "%s%s", yyprefix, yytokenName (yyx)); - yyp += strlen (yyp); - yyprefix = " or "; - } + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp = yystpcpy (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } } yyerror (]b4_lyyerror_args[yymsg); YYFREE (yymsg); @@ -1884,7 +1973,7 @@ yyrecoverSyntaxError (yyGLRStack* yystac ]b4_c_ansi_function_def([yyparse], [int], b4_parse_param)[ { - yySymbol yytoken; + yySymbol yytoken = YYEMPTY; yyGLRStack yystack; size_t yyposn; ]b4_pure_if( @@ -1898,14 +1987,15 @@ yyrecoverSyntaxError (yyGLRStack* yystac YYSTYPE* const yylvalp = &yylval; YYLTYPE* const yyllocp = &yylloc; - yyinitGLRStack (&yystack, YYINITDEPTH); - yystack.yytokenp = &yytoken; - YYDPRINTF ((stderr, "Starting parse\n")); if (setjmp (yystack.yyexception_buffer) != 0) goto yyDone; + if (! yyinitGLRStack (&yystack, YYINITDEPTH)) + goto yyDone; + yystack.yytokenp = &yytoken; + yylval = yyval_default; ]b4_location_if([ #if YYLTYPE_IS_TRIVIAL @@ -1924,7 +2014,6 @@ m4_popdef([b4_at_dollar])dnl b4_syncline([@oline@], [@ofile@])])dnl [ yyglrShift (&yystack, 0, 0, 0, yylval, &yylloc]b4_user_args[); - yytoken = YYEMPTY; yyposn = 0; while (yytrue) @@ -1992,11 +2081,11 @@ b4_syncline([@oline@], [@ofile@])])dnl while (yytrue) { - int yys; - int yyn = yystack.yytops.yysize; + size_t yys; + size_t yyn = yystack.yytops.yysize; for (yys = 0; yys < yyn; yys += 1) YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn, - yylvalp, yyllocp]b4_user_args[)); + yylvalp, yyllocp]b4_lpure_args[)); yytoken = YYEMPTY; yyposn += 1; yyremoveDeletes (&yystack); @@ -2036,7 +2125,7 @@ b4_syncline([@oline@], [@ofile@])])dnl /* DEBUGGING ONLY */ #ifdef YYDEBUG -static void yypstack (yyGLRStack* yystack, int yyk) ATTRIBUTE_UNUSED; +static void yypstack (yyGLRStack* yystack, size_t yyk) ATTRIBUTE_UNUSED; static void yypdumpstack (yyGLRStack* yystack) ATTRIBUTE_UNUSED; static void @@ -2061,7 +2150,7 @@ yypstates (yyGLRState* yyst) } static void -yypstack (yyGLRStack* yystack, int yyk) +yypstack (yyGLRStack* yystack, size_t yyk) { yypstates (yystack->yytops.yystates[yyk]); } From MAILER-DAEMON Tue Jul 12 16:52:28 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRjv-0005LI-Mf for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:52:27 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DqINi-0002tL-Ku for bison-patches@gnu.org; Wed, 06 Jul 2005 18:28:38 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DqINf-0002rU-CZ for bison-patches@gnu.org; Wed, 06 Jul 2005 18:28:37 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DqINe-0002l8-KA for bison-patches@gnu.org; Wed, 06 Jul 2005 18:28:34 -0400 Received: from [200.175.74.82] (helo=DIVINO) by monty-python.gnu.org with smtp (Exim 4.34) id 1DqIPG-0002hZ-88 for bison-patches@gnu.org; Wed, 06 Jul 2005 18:30:19 -0400 From: Agência Ar To: bison-patches@gnu.org Sender: Agência Ar Date: Wed, 6 Jul 2005 22:16:22 GMT Content-Transfer-Encoding: quoted-printable Content-Disposition: inline X-AntiAbuse: Priority: Normal X-MSMail-Priority: Normal X-Mailer: Message-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: NS Uma terra linda chamada Bonito X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Jul 2005 22:28:40 -0000 From MAILER-DAEMON Tue Jul 12 16:52:33 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRk1-0005N8-5o for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:52:33 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DqKvg-0004YQ-QP for bison-patches@gnu.org; Wed, 06 Jul 2005 21:11:53 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DqKvY-0004TP-4F for bison-patches@gnu.org; Wed, 06 Jul 2005 21:11:47 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DqKvW-0004SC-M1 for bison-patches@gnu.org; Wed, 06 Jul 2005 21:11:42 -0400 Received: from [218.169.84.236] (helo=judihoffman.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DqKvS-0004Tr-Lz for bison-patches@gnu.org; Wed, 06 Jul 2005 21:11:40 -0400 From: "Pharamond Jarrett" To: "Massimo Orr" Date: Wed, 6 Jul 2005 19:44:51 -0500 MIME-Version: 1.0 X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: A Good Boner Back in My Life X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jul 2005 01:11:59 -0000 Hello, food which to many of them was for a season at least so nauseatingI... I = shall never forget what you did, sir, said she, throughBlake and Mrs. = Musgrove, who - as the ballad runs - had ripped openand to stir up war = and rebellion to depose his said lord the KingOne day as he sat with = Hagthorpe and Wolverstone over a pipe and asmoke were belching each time = they swung broadside to the greatfellow died as a consequence of the = flogging.on the second day out, when halfway across the Gulf of = Gonaves.THE SERVICE OF KING WILLIAMCatholic Spain.have been saved. If = only I could have spoken to him again beforeof King James II.a = navigator, this amiable young man appears to have wielded anof the town. = Not only did that eminence afford them a valuable andthe sloop to the = prearranged moorings at the wharf, Peter Bloodmonths of captivity. His = grey eyes were round and questioning. From MAILER-DAEMON Tue Jul 12 16:52:52 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRkK-0005Vq-FG for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:52:52 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DqYHT-0002ii-JK for bison-patches@gnu.org; Thu, 07 Jul 2005 11:27:15 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DqYHF-0002be-Ev for bison-patches@gnu.org; Thu, 07 Jul 2005 11:27:14 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DqYHC-0002Q7-VD for bison-patches@gnu.org; Thu, 07 Jul 2005 11:26:59 -0400 Received: from [216.118.97.147] (helo=dianthe.webserversystems.com) by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24) (Exim 4.34) id 1DqYEm-0005cM-OJ for bison-patches@gnu.org; Thu, 07 Jul 2005 11:24:28 -0400 Received: from supervds by dianthe.webserversystems.com with local (Exim 4.51) id 1DqY8F-0002E8-Dt for bison-patches@gnu.org; Thu, 07 Jul 2005 11:17:43 -0400 To: bison-patches@gnu.org From: eBay Content-Transfer-Encoding: 8bit Message-Id: Date: Thu, 07 Jul 2005 11:17:43 -0400 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - dianthe.webserversystems.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [32390 501] / [47 12] X-AntiAbuse: Sender Address Domain - dianthe.webserversystems.com X-Source: /usr/bin/php X-Source-Args: /usr/bin/php send.php X-Source-Dir: super-vds.com:/public_html/cgi-bin MIME-Version: 1.0 Content-Type: text/plain X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: Important Notice from eBay X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: aw-confirm@ebay.com List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jul 2005 15:30:25 -0000 From MAILER-DAEMON Tue Jul 12 16:52:53 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRkK-0005WC-Lk for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:52:52 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DqZL7-0007F5-1z for bison-patches@gnu.org; Thu, 07 Jul 2005 12:35:05 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DqZL5-0007EW-Qk for bison-patches@gnu.org; Thu, 07 Jul 2005 12:35:04 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DqZKC-0006eT-M7; Thu, 07 Jul 2005 12:34:08 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DqZ1Q-0001j8-1a; Thu, 07 Jul 2005 12:14:44 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j67G7mL27989; Thu, 7 Jul 2005 09:07:48 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DqYuh-0006Bn-2I; Thu, 07 Jul 2005 09:07:47 -0700 To: twlevo@xs4all.nl References: <16813.80.126.59.26.1120546137.squirrel@80.126.59.26> <87pstwlxu6.fsf@penguin.cs.ucla.edu> <23785.80.126.59.26.1120616708.squirrel@80.126.59.26> <87mzp0d240.fsf@penguin.cs.ucla.edu> <21216.80.126.59.26.1120703696.squirrel@80.126.59.26> From: Paul Eggert Date: Thu, 07 Jul 2005 09:07:47 -0700 In-Reply-To: <21216.80.126.59.26.1120703696.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Thu, 7 Jul 2005 02:34:56 -0000 (GMT)") Message-ID: <871x6ak3ak.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org, bug-bison@gnu.org Subject: Re: bison bootstrap m4/gettext.m4 X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jul 2005 16:35:05 -0000 twlevo@xs4all.nl writes: > ./bootstrap: patching m4/gettext.m4 so that AM_INTL_SUBDIR is empty ... > sed: can't read m4/gettext.m4: No such file or directory Thanks for reporting that. I installed this patch: 2005-07-07 Paul Eggert * bootstrap (gnulib_modules): Add gettext, now that it's no longer implied by the other modules. --- bootstrap.~1.19.~ 2005-05-23 11:43:08.000000000 -0700 +++ bootstrap 2005-07-07 09:04:19.000000000 -0700 @@ -97,6 +97,7 @@ dirname error extensions getopt +gettext hard-locale hash malloc From MAILER-DAEMON Tue Jul 12 16:52:55 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRkL-0005Ye-Nw for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:52:53 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dqfn6-0007bg-4o for bison-patches@gnu.org; Thu, 07 Jul 2005 19:28:24 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dqfmz-0007Yk-DD for bison-patches@gnu.org; Thu, 07 Jul 2005 19:28:20 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dqfmy-0007Un-Qj; Thu, 07 Jul 2005 19:28:16 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DqfmF-0000Ut-Rp; Thu, 07 Jul 2005 19:27:32 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j67NKhL00463; Thu, 7 Jul 2005 16:20:43 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dqffd-0007ry-LG; Thu, 07 Jul 2005 16:20:41 -0700 To: bug-bison@gnu.org, bison-patches@gnu.org From: Paul Eggert Date: Thu, 07 Jul 2005 16:20:41 -0700 Message-ID: <87slyqi4om.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Subject: fixed bootstrapping issues with Bison examples X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jul 2005 23:28:26 -0000 I ran into some problems after "make maintainer-clean" and decided to modify the recently-added examples so that automatically generated files are not checked into CVS. Also, "mawk" and any POSIX Awk works. I installed this: 2005-07-07 Paul Eggert * examples/extexi: Clarify that this file is now part of Bison, not GNU M4, and that it works with any POSIX-compatible Awk. * examples/calc++/Makefile.am ($(calc_sources_extracted)): Use $(AWK), not gawk, since any conforming Awk will do. Put comment before action, since older 'make' can't handle comment in action. * examples/.cvsignore, examples/calc++/.cvsignore: New files. * examples/calc++/calc++-scanner.ll, examples/calc++/calc++.cc: * examples/calc++/calc++-driver.hh, examples/calc++/calc++-driver.cc: Remove; autogenerated. Index: examples/extexi =================================================================== RCS file: /cvsroot/bison/bison/examples/extexi,v retrieving revision 1.1 diff -p -u -r1.1 extexi --- examples/extexi 5 Jul 2005 07:21:30 -0000 1.1 +++ examples/extexi 7 Jul 2005 23:08:49 -0000 @@ -1,7 +1,7 @@ # Extract all examples from the manual source. -*- AWK -*- -# This file is part of GNU M4 -# Copyright 1992, 2000, 2001 Free Software Foundation, Inc. +# This file is part of GNU Bison +# Copyright 1992, 2000, 2001, 2005 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,8 +18,8 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA # 02111-1307 USA -# This script is for use with any New AWK. -# Well, now it uses ARGV/ARGC, and I don't know if it's New AWK portable. +# This script is for use with any Awk that conforms to POSIX. +# It was derived from a similar script tests/generate.awk in GNU m4. # # Usage: extexi input-file.texi ... -- [FILES to extract] BEGIN { Index: examples/calc++/Makefile.am =================================================================== RCS file: /cvsroot/bison/bison/examples/calc++/Makefile.am,v retrieving revision 1.1 diff -p -u -r1.1 Makefile.am --- examples/calc++/Makefile.am 6 Jul 2005 07:49:25 -0000 1.1 +++ examples/calc++/Makefile.am 7 Jul 2005 23:08:49 -0000 @@ -32,11 +32,11 @@ $(BISON): $(BISON_IN) doc = $(top_srcdir)/doc/bison.texinfo extexi = $(top_srcdir)/examples/extexi -run_extexi = gawk -f $(extexi) -$(calc_sources_extracted): $(doc) $(extexi) # Extract in src. +$(calc_extracted): $(doc) $(extexi) cd $(srcdir) && \ - gawk -f ../extexi ../../doc/bison.texinfo -- \ + $(AWK) -f ../extexi ../../doc/bison.texinfo -- \ + calc++-parser.yy \ calc++-scanner.ll calc++.cc calc++-driver.hh calc++-driver.cc @@ -44,9 +44,10 @@ $(calc_sources_extracted): $(doc) $(exte ## Parser generation. ## ## ------------------- ## -# We do not use Automake features here. -BUILT_SOURCES = $(calc_sources_generated) -MAINTAINERCLEANFILES = $(calc_sources_generated) +BUILT_SOURCES = $(calc_extracted) $(calc_sources_generated) +CLEANFILES = $(srcdir)/*.output *.tmp +MAINTAINERCLEANFILES = $(srcdir)/*.stamp \ + $(calc_extracted) $(calc_sources_generated) # Compile the parser and save cycles. # This code comes from "Handling Tools that Produce Many Outputs", @@ -57,15 +58,12 @@ EXTRA_DIST = $(srcdir)/calc++-parser.sta $(srcdir)/calc++-parser.stamp: $(srcdir)/calc++-parser.yy $(BISON_IN) @rm -f calc++-parser.tmp @touch calc++-parser.tmp - $(BISON) -S lalr1.cc $(srcdir)/calc++-parser.yy -o $(srcdir)/calc++-parser.cc -d -ra + $(BISON) -d -ra -S lalr1.cc -o $(srcdir)/calc++-parser.cc \ + $(srcdir)/calc++-parser.yy @mv -f calc++-parser.tmp $@ - $(calc_sources_generated): $(srcdir)/calc++-parser.stamp - @if test -f $@; then :; else x\ - rm -f $(srcdir)/calc++-parser.stamp; \ - $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/calc++-parser.stamp; \ - fi - + rm -f $(srcdir)/calc++-parser.stamp + $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/calc++-parser.stamp ## --------------------------- ## ## Building & testing calc++. ## @@ -74,8 +72,8 @@ $(calc_sources_generated): $(srcdir)/cal noinst_PROGRAMS = calc++ calc_sources_extracted = $(srcdir)/calc++-scanner.ll $(srcdir)/calc++.cc \ -$(srcdir)/calc++-driver.hh $(srcdir)/calc++-driver.cc -calc_extracted = $(calc_sources_extracted) calc++-parser.yy + $(srcdir)/calc++-driver.hh $(srcdir)/calc++-driver.cc +calc_extracted = $(calc_sources_extracted) $(srcdir)/calc++-parser.yy calc_sources_generated = \ $(srcdir)/stack.hh $(srcdir)/position.hh $(srcdir)/location.hh \ $(srcdir)/calc++-parser.hh $(srcdir)/calc++-parser.cc --- /dev/null 2005-06-27 15:40:05.000000000 -0700 +++ examples/.cvsignore 2005-07-07 09:54:02.000000000 -0700 @@ -0,0 +1,2 @@ +Makefile +Makefile.in --- /dev/null 2005-06-27 15:40:05.000000000 -0700 +++ examples/calc++/.cvsignore 2005-07-07 15:59:13.000000000 -0700 @@ -0,0 +1,10 @@ +*.cc +*.hh +*.ll +*.output +*.stamp +*.tmp +.deps +Makefile +Makefile.in +calc++ From MAILER-DAEMON Tue Jul 12 16:53:00 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRkS-0005gs-KQ for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:53:00 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dqr9o-0000X7-Tt for bison-patches@gnu.org; Fri, 08 Jul 2005 07:36:37 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dqr9m-0000VY-Ta for bison-patches@gnu.org; Fri, 08 Jul 2005 07:36:36 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dqr7J-0007t9-2i for bison-patches@gnu.org; Fri, 08 Jul 2005 07:34:01 -0400 Received: from [211.240.60.204] (helo=mail.qsv17.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DqrCX-00036V-Sr for bison-patches@gnu.org; Fri, 08 Jul 2005 07:39:26 -0400 Received: (qmail 21610 invoked by uid 509); 8 Jul 2005 14:45:11 +0900 Date: 8 Jul 2005 14:45:11 +0900 Message-ID: <20050708054511.21608.qmail@mail.qsv17.com> From: info@qsv17.com To: bison-patches@gnu.org Subject: $B2q$($k$s$G$9(B X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Jul 2005 11:36:38 -0000 $B!!!!!!!!!!!X!!2q$($J$$%5%$%H$K$@$^$5$l$J$$$G!!!Y(B $B:G6a!"2q$($J$$$N$K=P2q$$7O$rL>>h$C$F$$$k%5%$%H$,B?$$$h$&$K(B $B46$8$^$9!#$J$<2q$($J$$$+$H$$$&$H0[@-$K%a%C%;!<%8$rAw$C$F$b(B $B$=$N%a%C%;!<%8Fb$N%a%"%I$d7HBSHV9f$,8+$($J$/$5$l$F$7$^$&$+(B $B$i$G$9!#4A;z$GF~NO$7$?$j$7$F$b<+F0$G8+$($J$/$5$l$F$7$^$$$^(B $B$9!#$=$s$J%5%$%H$KF~2q$7$F$b$^$:2q$($J$$$G$7$g$&!#(B $BEv%5%$%H$G$O$=$N$h$&$J5!G=$O$4$6$$$^$;$s!#(B $B0B?4$7$F$4MxMQ$$$?$@$1$^$9!#(B $B=P2q$$7O%5%$%H$J$N$K$=$s$J5!G=$,$"$C$?$i2q$($^$;$s$N$G!#(B $BEv%5%$%H$O%a%"%I(B,$B7HBSHV9f$N8r49$,<+M3$G$9!#(B $B!!!!!!!!!!!!(Bhttp://www.lovegal2.net?deaeta08 $BG/Np$b?&6H$bB?e$,$C$F$-$F$$$FBg?M$J2q0wMM$,A}$($F$-$F$$$^$9!#(B $B$3$N5!2q$K$I$&$>$4MxMQ$/$@$5$$!#(B $B!!!!!!!!!!!!!!!Z8=:_9T$o$l$F$$$k4k2h![(B $B!!!!$J$k$Y$/$NAjD$7$?$$J}!"(B $B!!5$$K$J$k?M$,2?$r5a$a$F%5%$%H$KMh$F$$$k$N$+CN$j$?$$J}!"(B $B!!!!!!!!!!F1$85$;}$A$N0[@-$+$iO"Mm$,M_$7$$J}!"(B $B!!!!!!$=$s$JJ}$N$?$a$K4k2h$5$l$?Bh#3CF$,$G$7$?!#!d(B $B!!(B $B!!!!!!(Bhttp://www.lovegal2.net?deaeta08 $B!!!!"(2<5-$r$7$C$+$jFI$s$G$+$i;22C$7$F$/$@$5$$$M(B $B!!!!!!!a!a<+J,$,5a$a$F$$$kAj$N8r:]J}K!$N%-!<%o!<%I$rF~NO$7$F(B $B!!$/$@$5$$!#!J%-!<%o!<%I$O2<5-;2>H!K(B $B!!!!!!!!!!!!!!$?$C$?$3$l$@$1$N$3$H$G!"(B $B!!!!!!!!F1$8$h$&$J5$;}$A$N0[@-$+$iO"Mm$,Mh$^$9!*(B ------------------------------------------------------- $B%-!<%o!<%I(B $B!!(BS$B!!!!!!(BSEX$B%U%l%s%I!JITNQ9~$_!K$r4uK>(B $B!!(BL$B!!!!!!Nx0&Aj(B $B!!(BM$B!!!!!!7k:'Aj(B $B!!(BG$B!!!!!!5U!{=u8r:]Aj(B $B!!(BF$B!!!!!!%a%kM'(B,TEL$BM'!JIaDL$NM'C#9~$_!K$r4uK>(B ------------------------------------------------------- $B!!$3$N%-!<%o!<%I%j%9%H$O=w@-2q0w$NJ}$KG[I[$7$F$*$j$^$9!#(B $B$*, Tiger Patches From: Akim Demaille Date: Fri, 08 Jul 2005 16:57:36 +0200 Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Subject: Naming the symbols X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Jul 2005 15:10:10 -0000 Hi, I'm trying to put together two communities here: that of Bison --- parser generator --- , and that of MonoBURG --- code generator generator. They share several features, and this message is about trying to have a common syntax for one of these feature. Or not. Both take rules as input, decorated with actions referring to the values of the symbols. Bison, just like Yacc, uses $n, while MonoBURG was just equipped with symbol labels (before the values had to be accessed in a completely different way). As an example, here is a piece of MonoBURG input code as of today: move: Move(exp, Mem(b : Binop(binop_left : Const, binop_right : exp))) { short sign = (b.cast ()->oper_get () == Binop::sub) ? -1 : 1; EMIT (ASSEMBLY.load_build (binop_right->asm_get (), sign * binop_left.cast ()->value_get (), tree->left_get ()->asm_get ())); } here is a piece of Bison input : exp: "if" exp "then" exp { $$ = new ast::IfExp ($2, $4); } | "if" exp "then" exp "else" exp { $$ = new ast::IfExp ($2, $4, $6); } I dislike the latter, I would much rather have a labeling scheme, just as we introduced in MonoBURG. And `:' seems to be quite a nice symbols to this end : r:exp: "if" c:exp "then" t:exp { r = new ast::IfExp (c, t); } | "if" c:exp "then" t:exp "else" e:exp { r = new ast::IfExp (c, t, e); } But then we have several problems: the colon is seriously overloaded in the context of Bison. Contrary to MonoBURG, Bison can't require rules to be terminated (thanks to POSIX). Contrary to Bison, MonoBURG does not need to name its LHS. The result might be quite clumsy to read: r:exp: l:exp r:exp l:exp: s:symbol r:exp: s:symbol but I don't think it's becoming ambiguous. Labels are optional, of course. I would like to share the same syntax for both tools. So we have a set of choices: - use this syntax, it is human readable and natural. It is just probably very hard to implement in Bison's bison grammar :( Thanks POSIX. - use another syntax, say another separator, such as `@'. I don't like it too much, because it's a poor separator IMHO. But it is frequently used in functional languages for similar purpose. It is also usually bound to locations in Bison. - there is no reason for MonoBURG to escape from a nice an clean syntax just because Bison cannot keep the pace. - maybe it is time to use... the GLR parser to parse Bison's grammar file without having to resort to these horrible scanner hacks. Any opinion? From MAILER-DAEMON Tue Jul 12 16:53:05 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRkW-0005kI-FO for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:53:04 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dqvid-0003Hx-K8 for bison-patches@gnu.org; Fri, 08 Jul 2005 12:28:51 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DqviY-0003FG-RI for bison-patches@gnu.org; Fri, 08 Jul 2005 12:28:49 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DqviY-0003Ey-CS for bison-patches@gnu.org; Fri, 08 Jul 2005 12:28:46 -0400 Received: from [82.54.145.83] (helo=kbp.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1Dqvmf-0000H6-Qu for bison-patches@gnu.org; Fri, 08 Jul 2005 12:33:02 -0400 From: "Flavio Dorman" To: "Melicent Guillory" Date: Fri, 8 Jul 2005 11:25:54 -0500 MIME-Version: 1.0 X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: Workks Great X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: bison-patches.gnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Jul 2005 16:28:52 -0000 Hello, Wolverstone, and Dyke.minutes stood in talk with him over a list which the = latter producedfire. As the Arabella with the Elizabeth following = closely racedThe letter written, he bade them bring him from among the = prisonerssouthwest corner of Hispaniola. Aboard the Milagrosa sailed = theAnd he tightened his lips. I'll have the rods to you, until = there'sout of sight before he answered.articles under which we sailed = upon this cruise.enemies to locate them.Narrowly they missed the Jamaica = fleet with Colonel Bishop, whichWhich is less than the swine deserve, = growled Wolverstone.He twisted his lip a little, stroking his chin with = his hand theI don't understand. At Bridgetown three years ago there was = aoverboard in his turn, to be picked up presently by the longboatthe = wide hall stood Miss Arabella, a slim, virginal figure in white,those = who knew Lord Jeffreys regarded this as the lull before the From MAILER-DAEMON Tue Jul 12 16:53:19 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRkl-000633-2w for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:53:19 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dr9nB-0005ZC-R5 for bison-patches@gnu.org; Sat, 09 Jul 2005 03:30:30 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dr9n8-0005YD-DH for bison-patches@gnu.org; Sat, 09 Jul 2005 03:30:26 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dr9n7-0005VR-R8; Sat, 09 Jul 2005 03:30:25 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dr9ha-00026i-M6; Sat, 09 Jul 2005 03:24:42 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j697HaL06673; Sat, 9 Jul 2005 00:17:36 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dr9ag-0006Rl-3P; Sat, 09 Jul 2005 00:17:34 -0700 To: bug-bison@gnu.org, bison-patches@gnu.org Message-Id: From: Paul Eggert Date: Sat, 09 Jul 2005 00:17:34 -0700 Cc: Subject: yacc.c fix to avoid use of uninitialized variables in initial action X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 09 Jul 2005 07:30:46 -0000 I installed this: 2005-07-09 Paul Eggert * data/yacc.c (yyparse): In the initial action, set yylsp[0] and yyvsp[0] rather than yylloc and yylval. This avoids the use of undefined variables if the initial action does not set yylloc and/or yylval. Index: data/yacc.c =================================================================== RCS file: /cvsroot/bison/bison/data/yacc.c,v retrieving revision 1.92 diff -p -u -r1.92 yacc.c --- data/yacc.c 9 Jun 2005 20:44:28 -0000 1.92 +++ data/yacc.c 9 Jul 2005 07:11:18 -0000 @@ -859,8 +859,8 @@ b4_c_function_def([yyparse], [int], b4_p #endif ]]) m4_ifdef([b4_initial_action], [ -m4_pushdef([b4_at_dollar], [yylloc])dnl -m4_pushdef([b4_dollar_dollar], [yylval])dnl +m4_pushdef([b4_at_dollar], [[yylsp[0]]])dnl +m4_pushdef([b4_dollar_dollar], [[yyvsp[0]]])dnl /* User initialization code. */ b4_initial_action m4_popdef([b4_dollar_dollar])dnl @@ -868,10 +868,7 @@ m4_popdef([b4_at_dollar])dnl /* Line __line__ of yacc.c. */ b4_syncline([@oline@], [@ofile@])])dnl [ - yyvsp[0] = yylval; -]b4_location_if([[ yylsp[0] = yylloc; -]]) -[ goto yysetstate; + goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | From MAILER-DAEMON Tue Jul 12 16:53:28 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRkt-0006Bc-JR for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:53:27 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DrAr5-00066n-D5 for bison-patches@gnu.org; Sat, 09 Jul 2005 04:38:36 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DrAqa-0005z8-Sk for bison-patches@gnu.org; Sat, 09 Jul 2005 04:38:07 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DrAi4-0005JH-0P; Sat, 09 Jul 2005 04:29:17 -0400 Received: from [213.228.0.62] (helo=postfix4-1.free.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DrAM4-0004Zx-NU; Sat, 09 Jul 2005 04:06:32 -0400 Received: from [192.168.1.102] (bob75-1-81-57-9-20.fbx.proxad.net [81.57.9.20]) by postfix4-1.free.fr (Postfix) with ESMTP id 6AAA2318591; Sat, 9 Jul 2005 09:59:25 +0200 (CEST) In-Reply-To: References: Mime-Version: 1.0 (Apple Message framework v730) Content-Type: text/plain; charset=ISO-8859-1; format=flowed Message-Id: <73D917F5-4D32-49C6-BCAB-D31427F5351F@lrde.epita.fr> Content-Transfer-Encoding: quoted-printable From: Akim Demaille Date: Sat, 9 Jul 2005 09:59:22 +0200 To: Paul Eggert X-Mailer: Apple Mail (2.730) Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: yacc.c fix to avoid use of uninitialized variables in initial action X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 09 Jul 2005 08:39:04 -0000 Le 9 juil. 05 =E0 09:17, Paul Eggert a =E9crit : > I installed this: > > 2005-07-09 Paul Eggert > > * data/yacc.c (yyparse): In the initial action, set > yylsp[0] and yyvsp[0] rather than yylloc and yylval. > This avoids the use of undefined variables if the initial > action does not set yylloc and/or yylval. But then yylloc is no longer initialized. I usually initialized it there, and then it is the scanner that updates it. I really meant to have the previous version. And this value is not used, it is copied. A tool such as Valgrind makes the difference.= From MAILER-DAEMON Tue Jul 12 16:53:28 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRku-0006C8-3e for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:53:28 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DrAs4-0006vn-IV for bison-patches@gnu.org; Sat, 09 Jul 2005 04:39:37 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DrAr4-000664-Ob for bison-patches@gnu.org; Sat, 09 Jul 2005 04:38:39 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DrAom-0005sn-4B; Sat, 09 Jul 2005 04:36:13 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DrArg-0005tO-Ly; Sat, 09 Jul 2005 04:39:12 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j698VXL10530; Sat, 9 Jul 2005 01:31:33 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DrAkF-00018H-1r; Sat, 09 Jul 2005 01:31:31 -0700 To: Akim Demaille References: <73D917F5-4D32-49C6-BCAB-D31427F5351F@lrde.epita.fr> From: Paul Eggert Date: Sat, 09 Jul 2005 01:31:31 -0700 In-Reply-To: <73D917F5-4D32-49C6-BCAB-D31427F5351F@lrde.epita.fr> (Akim Demaille's message of "Sat, 9 Jul 2005 09:59:22 +0200") Message-ID: <87ackws7mk.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: yacc.c fix to avoid use of uninitialized variables in initial action X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 09 Jul 2005 08:39:53 -0000 Akim Demaille writes: > But then yylloc is no longer initialized. I usually initialized > it there, and then it is the scanner that updates it. I really > meant to have the previous version. OK, I installed the following patch; it causes the generated parser to copy yylloc to yylsp[0] only if the user initialization code sets yylloc. > And this value is not used, it is copied. A tool such as Valgrind > makes the difference. Sorry, I don't quite follow this point. We didn't find the problem with valgrind. The problem was found because GCC 4 is smart enough to warn that yylloc is used without being initialized, when the initial action doesn't set the line number. 2005-07-09 Paul Eggert * data/yacc.c (yyparse): Undo previous patch. Instead, set yylsp[0] and yyvsp[0] only if the initial action sets yylloc and yylval, respectively. --- yacc.c 9 Jul 2005 07:14:18 -0000 1.93 +++ yacc.c 9 Jul 2005 08:26:29 -0000 1.94 @@ -859,16 +859,20 @@ b4_c_function_def([yyparse], [int], b4_p #endif ]]) m4_ifdef([b4_initial_action], [ -m4_pushdef([b4_at_dollar], [[yylsp[0]]])dnl -m4_pushdef([b4_dollar_dollar], [[yyvsp[0]]])dnl +m4_pushdef([b4_at_dollar], [m4_define([b4_at_dollar_used])yylloc])dnl +m4_pushdef([b4_dollar_dollar], [m4_define([b4_dollar_dollar_used])yylval])dnl /* User initialization code. */ b4_initial_action m4_popdef([b4_dollar_dollar])dnl m4_popdef([b4_at_dollar])dnl /* Line __line__ of yacc.c. */ -b4_syncline([@oline@], [@ofile@])])dnl -[ - goto yysetstate; +b4_syncline([@oline@], [@ofile@]) +])dnl +m4_ifdef([b4_dollar_dollar_used],[[ yyvsp[0] = yylval; +]])dnl +m4_ifdef([b4_at_dollar_used], [[ yylsp[0] = yylloc; +]])dnl +[ goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | From MAILER-DAEMON Tue Jul 12 16:53:36 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRl2-0006I9-FM for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:53:36 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DrcJl-0005Pv-QG for bison-patches@gnu.org; Sun, 10 Jul 2005 09:58:03 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DrcJg-0005Oe-Ti for bison-patches@gnu.org; Sun, 10 Jul 2005 09:57:58 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DrcH3-0004Lx-Vh for bison-patches@gnu.org; Sun, 10 Jul 2005 09:55:14 -0400 Received: from [66.225.241.100] (helo=server.fcuk.org.uk) by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24) (Exim 4.34) id 1DrcMf-0005Ak-Gk for bison-patches@gnu.org; Sun, 10 Jul 2005 10:01:01 -0400 Received: from nobody by server.fcuk.org.uk with local (Exim 4.43) id 1DrbYl-0006We-Jd for bison-patches@gnu.org; Sun, 10 Jul 2005 14:09:27 +0100 To: bison-patches@gnu.org From: postcards.com Message-Id: Date: Sun, 10 Jul 2005 14:09:27 +0100 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - server.fcuk.org.uk X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [99 99] / [47 12] X-AntiAbuse: Sender Address Domain - server.fcuk.org.uk X-Source: X-Source-Args: X-Source-Dir: MIME-Version: 1.0 Content-Type: text/plain X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: You've received a postcard from a family member! X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Jul 2005 14:03:38 -0000 From MAILER-DAEMON Tue Jul 12 16:53:39 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRl5-0006JL-FE for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:53:39 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DrqKt-0001BX-A0 for bison-patches@gnu.org; Mon, 11 Jul 2005 00:56:07 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DrqKk-000168-KF for bison-patches@gnu.org; Mon, 11 Jul 2005 00:55:59 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DrqKi-00014Q-9U for bison-patches@gnu.org; Mon, 11 Jul 2005 00:55:56 -0400 Received: from [216.17.153.58] (helo=joseki.proulx.com) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DrqLp-0005PQ-E5 for bison-patches@gnu.org; Mon, 11 Jul 2005 00:57:05 -0400 Received: from dementia.proulx.com (dementia.proulx.com [192.168.1.115]) by joseki.proulx.com (Postfix) with ESMTP id C39834B52C for ; Sun, 10 Jul 2005 22:49:32 -0600 (MDT) Received: by dementia.proulx.com (Postfix, from userid 1000) id 9B48E14531C; Sun, 10 Jul 2005 22:49:32 -0600 (MDT) Date: Sun, 10 Jul 2005 22:49:32 -0600 To: bison-patches@gnu.org Message-ID: <20050711044932.GA16448@dementia.proulx.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.9i From: bob@proulx.com (Bob Proulx) X-Mailman-Approved-At: Mon, 11 Jul 2005 00:57:25 -0400 Subject: mailing list test message X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jul 2005 04:56:13 -0000 There are complaints that the list is not working and no messages have been archived for the past month. This is a test message to test the list functionality. Bob P.S. Normally I hate test messages to mailing lists. But at the moment I see no other option than to post one. From MAILER-DAEMON Tue Jul 12 16:53:40 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRl6-0006Jr-0I for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:53:40 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Drsfz-0004Pg-Ty for bison-patches@gnu.org; Mon, 11 Jul 2005 03:26:04 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Drsfv-0004Ne-Ew for bison-patches@gnu.org; Mon, 11 Jul 2005 03:26:00 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Drsfv-0004NG-8I; Mon, 11 Jul 2005 03:25:59 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1Drsl9-00063a-8k; Mon, 11 Jul 2005 03:31:23 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.50) id 1Drsdo-00030N-1w; Mon, 11 Jul 2005 09:23:48 +0200 To: Paul Eggert References: <73D917F5-4D32-49C6-BCAB-D31427F5351F@lrde.epita.fr> <87ackws7mk.fsf@penguin.cs.ucla.edu> From: Akim Demaille Date: Mon, 11 Jul 2005 09:23:47 +0200 In-Reply-To: <87ackws7mk.fsf@penguin.cs.ucla.edu> (Paul Eggert's message of "Sat, 09 Jul 2005 01:31:31 -0700") Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: yacc.c fix to avoid use of uninitialized variables in initial action X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jul 2005 07:26:06 -0000 >>> "Paul" == Paul Eggert writes: >> And this value is not used, it is copied. A tool such as Valgrind >> makes the difference. > Sorry, I don't quite follow this point. > We didn't find the problem with valgrind. The problem was found > because GCC 4 is smart enough to warn that yylloc is used without > being initialized, when the initial action doesn't set the line > number. OK. I meant that Valgrind is smarter (well, of course it can and GCC cannot in general) and reports actual use of initialized _values_. Here, it would only have complained if the value was truly used (copying being merely propagating). This patch is fine, but doesn't it apply to glr too? From MAILER-DAEMON Tue Jul 12 16:53:41 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRl7-0006Ke-Cg for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:53:41 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DrxaD-0003mR-Nb for bison-patches@gnu.org; Mon, 11 Jul 2005 08:40:26 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Drxa5-0003hW-3v for bison-patches@gnu.org; Mon, 11 Jul 2005 08:40:20 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Drxa3-0003eZ-Cb for bison-patches@gnu.org; Mon, 11 Jul 2005 08:40:15 -0400 Received: from [221.156.10.156] (helo=jenncorp.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DrxdN-0004fJ-GO for bison-patches@gnu.org; Mon, 11 Jul 2005 08:43:42 -0400 From: "Melisa Williamson" To: "Augusts Lopez" Date: Mon, 11 Jul 2005 07:35:48 -0500 MIME-Version: 1.0 X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: try it out X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jul 2005 12:40:28 -0000 Hello, Through his mind sang the line of Lovelace:The Baron had just sat down to = dinner with M. de Cussy when theaccounting me an ingrate as well. If I = have hesitated, it isInwardly M. de Rivarol burned with shame and rage. = The mask had beenThe prisoners filed in under guard. The crier called = for silencewho manned her were new to the seas of the Spanish Main, and = becauseRivarol, as down from a thistle by the winds of autumn. The = GeneralThey met at the gate of the luxuriant garden of Government = House,prevarication. But I see that all the pains in the world, and = allIt was not a man he was discussing; it was a beast of burden. = Pitt,very humbly.in no need of her bounty - as she no doubt observed - = since theyplucked at his uncle's sleeve. There they go! he cried, andof = a flogging that's due to me. Ye're a man of your word in suchDid you... = did you kill him? she asked, fearfully.rang together. From MAILER-DAEMON Tue Jul 12 16:53:42 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRl8-0006LU-4n for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:53:42 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DryK2-0005XC-Ly for bison-patches@gnu.org; Mon, 11 Jul 2005 09:27:47 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DryJt-0005WG-Mu for bison-patches@gnu.org; Mon, 11 Jul 2005 09:27:40 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DryJr-0005Vy-Ag for bison-patches@gnu.org; Mon, 11 Jul 2005 09:27:35 -0400 Received: from [211.112.49.209] (helo=mail.same-zansu.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DryPd-0000fe-5u for bison-patches@gnu.org; Mon, 11 Jul 2005 09:33:33 -0400 Received: (qmail 6747 invoked by uid 509); 11 Jul 2005 10:36:57 +0900 Date: 11 Jul 2005 10:36:57 +0900 Message-ID: <20050711013657.6745.qmail@mail.same-zansu.com> From: info@same-zansu.com To: bison-patches@gnu.org Subject: $B@-46%^%C%5!<%8$r7P83$7$?;v$O$"$j$^$9(B X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jul 2005 13:27:48 -0000 $B"(=w@-2q0w$K%^%C%5!<%8!J@-46$r4^$`!K$r(B1$B;~4V!A(B2$B;~4VDxEY$9$k$@$1$G$N=PD%%^%C(B $B%5!<%8%5!<%S%9$G$9!#(B $B!yL^O@!"EPO?$OL5NA$G$9!*$*;n$7EPO?#O#K!*(B $B!V$*9%$-$J=w@-G/Np$rA*Br$7$F2<$5$$!#!W(B 10$BBe!A(B25$B:P$N=w@-$O$3$A$i$X"-(B http://awg.webchu.com/sweet-s/?massage1 $B%3%a%s%H!'e$N=w@-$O$3$A$i"-(B http://awg.webchu.com/sweet-s/?massage3 $B%3%a%s%H!'=O!&=O=w$b!&!&9%$-$JCK@-$K$O0lHVNI$$$+$b(B.... $B"(=w@-2q0w$,5.J}$r5$$KF~$l$P(B2$B=54V0J>e!AD94|7@Ls$b2DG=$G$9!#(B $B"(7@Ls From: info@musume-min-min.com To: bison-patches@gnu.org Subject: $BM7$S463P$GNx?MBe9T$N;E;v$r$7$^$;$s$+(B X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jul 2005 12:35:23 -0000 $B!Z(B18$B6X![(B http://awg.webchu.com/sweet-s/?freely $B!T$3$s$J=w@-$?$A$,5.J}$rBT$C$F$^$9!U(B $B0l?M$G$$$?$/$J$$;~!"C/$+$KMj$j$?$$;~!"4E$($?$$;~!"$^$?!"0l?M$GJk$i$7$F$$$?(B $B$j!"2HB2$HJk$i$7$F$$$F$b2?$H$J$/NT$7$$;~!"Nx?M!&IW$,$$$J$$;~$K!TNx?MBe9T!U$r(B $B$4MxMQ$9$k=w@-$,B?$/$J$C$FMh$^$7$?!#(B [$B40(B][$BA4(B][$BL5(B][$BNA(B] [$BNx(B][$B?M(B][$BBe(B][$B9T(B] http://awg.webchu.com/sweet-s/?freely $B"(Be6b$O$9$Y$F5.J}$K(B...$B@hJ'$$2DG=(B *-*-*-*-*-*-*-*-*-*-*-* $B From: info@trifk.com To: bison-patches@gnu.org Subject: $B%;%C%/%9%+%&%s%;%i! List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jul 2005 13:04:22 -0000 $B"(5.J}$bM=LsBT$A$N%+%j%9%^=PD%%[%9%H$rL\;X$7$F8+$^$;$s$+!*(B $B!V<}F~(BUp$B$G2wE,$J@83h$r(B...$B!W(B http://awg.webchu.com/?favorite $B!V?M@87P83K-IY$J=OG/=PD%%[%9%H$+$i855$$Jn(B/$B%U%j!<%?!<(B/$B$J$I(B http://awg.webchu.com/?favorite $B"(6C$-$NJs=7$r2DG=$K$7$?$$J}$OD>$KGA$$$F2<$5$$!#(B $B"#"""#"""#"""#"""#"""#(B $B6=L#L5$$J}$O"-(B a245_goawg@poppymail.com $B"#"""#"""#"""#"""#"""#(B 18$B:PL$K~$OMxMQ6X;_$G$9!#(B From MAILER-DAEMON Tue Jul 12 16:53:55 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRlL-0006Sa-3g for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:53:55 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ds6wZ-0008Mi-5c for bison-patches@gnu.org; Mon, 11 Jul 2005 18:40:08 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ds6wQ-0008IP-SQ for bison-patches@gnu.org; Mon, 11 Jul 2005 18:40:00 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ds6wQ-0008GU-Es; Mon, 11 Jul 2005 18:39:58 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Ds70Z-0007U6-18; Mon, 11 Jul 2005 18:44:15 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6BMaUL28101; Mon, 11 Jul 2005 15:36:30 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Ds6t1-0006Q2-Hw; Mon, 11 Jul 2005 15:36:27 -0700 To: josephus References: <42CF12AC.4020207@earthlink.net> <874qb4o2yi.fsf@penguin.cs.ucla.edu> <42D08BD4.1060105@earthlink.net> From: Paul Eggert Date: Mon, 11 Jul 2005 15:36:27 -0700 In-Reply-To: <42D08BD4.1060105@earthlink.net> (dogbird@earthlink.net's message of "Sat, 09 Jul 2005 21:45:40 -0500") Message-ID: <873bqlynpw.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: a probablem with Bison X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: bug-bison@gnu.org List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jul 2005 22:40:12 -0000 josephus writes: > Because my grammar gets NO ERRORS, the failure is in bison's > algorithm. Possibly, but not necessarily. It could be a lot of things. For example, it could be the use of an uninitialized variable that just happens to work with other parser generators, but not with Bison. > I have a debug version of 20a and I can look at the problem if you > could send me a general descriptions or a pointer to a descriptions of > the general method of processing. I installed this patch to the documentation to put in a pointer to the general method used. For the exact details, I'm afraid that the Bison source code is the only reference. If you follow the URL below you will get a copy of the paper, if you have access to the ACM digital library. If not, please let me know, and I will email you a PDF privately; the paper's copyright notice grants me permission to do that. 2005-07-11 Paul Eggert * doc/bison.texinfo (Mystery Conflicts): Add reference to DeRemer and Pennello's paper. --- bison.texinfo.~1.148.~ 2005-07-08 23:24:55.000000000 -0700 +++ bison.texinfo 2005-07-11 15:27:28.000000000 -0700 @@ -5496,6 +5496,13 @@ return_spec: ; @end example +For a more detailed exposition of @acronym{LALR}(1) parsers and parser +generators, please see: +Frank DeRemer and Thomas Pennello, Efficient Computation of +@acronym{LALR}(1) Look-Ahead Sets, @cite{@acronym{ACM} Transactions on +Programming Languages and Systems}, Vol.@: 4, No.@: 4 (October 1982), +pp.@: 615--649 @uref{http://doi.acm.org/10.1145/69622.357187}. + @node Generalized LR Parsing @section Generalized @acronym{LR} (@acronym{GLR}) Parsing @cindex @acronym{GLR} parsing @@ -6785,7 +6792,7 @@ int yyparse (void); @c - Always pure @c - initial action -The C++ parser LALR(1) skeleton is named @file{lalr1.cc}. To select +The C++ parser @acronym{LALR}(1) skeleton is named @file{lalr1.cc}. To select it, you may either pass the option @option{--skeleton=lalr1.cc} to Bison, or include the directive @samp{%skeleton "lalr1.cc"} in the grammar preamble. When run, @command{bison} will create several From MAILER-DAEMON Tue Jul 12 16:54:02 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRlS-0006UA-8A for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:54:02 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DsEAz-00020q-I3 for bison-patches@gnu.org; Tue, 12 Jul 2005 02:23:29 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsEAw-0001zi-ID for bison-patches@gnu.org; Tue, 12 Jul 2005 02:23:28 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsEAv-0001wM-Kz; Tue, 12 Jul 2005 02:23:25 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DsEC3-0007Pb-7j; Tue, 12 Jul 2005 02:24:35 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6C6GAL23467; Mon, 11 Jul 2005 23:16:11 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DsE3r-0007GJ-T5; Mon, 11 Jul 2005 23:16:07 -0700 To: Akim Demaille References: <73D917F5-4D32-49C6-BCAB-D31427F5351F@lrde.epita.fr> <87ackws7mk.fsf@penguin.cs.ucla.edu> From: Paul Eggert Date: Mon, 11 Jul 2005 23:16:07 -0700 In-Reply-To: (Akim Demaille's message of "Mon, 11 Jul 2005 09:23:47 +0200") Message-ID: <87oe9835y0.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: yacc.c fix to avoid use of uninitialized variables in initial action X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jul 2005 06:23:31 -0000 Akim Demaille writes: > This patch is fine, but doesn't it apply to glr too? Yes, probably, but I was trying to figure out the simpler case of yacc.c before tackling the heights of glr.c, which has a similar bug that valgrind did find. Have you had a chance to look at that bug and at Paul Hilfinger's proposed fix? He writes "This is actually Akim's code rather than mine" (so much for Egoless Programming, eh? :-). http://lists.gnu.org/archive/html/bug-bison/2005-07/msg00011.html http://lists.gnu.org/archive/html/bug-bison/2005-07/msg00017.html From MAILER-DAEMON Tue Jul 12 16:54:18 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRlh-0006VY-Sf for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:54:17 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DsH4r-0006eP-7E for bison-patches@gnu.org; Tue, 12 Jul 2005 05:29:22 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsH4a-0006Xd-HS for bison-patches@gnu.org; Tue, 12 Jul 2005 05:29:13 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsH4Z-0006Nd-Pz for bison-patches@gnu.org; Tue, 12 Jul 2005 05:29:03 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1DsGuf-0002wF-2z for bison-patches@gnu.org; Tue, 12 Jul 2005 05:18:49 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.50) id 1DsGn5-0008UP-3K; Tue, 12 Jul 2005 11:10:59 +0200 To: Paul Eggert References: <87k6jw35cw.fsf@penguin.cs.ucla.edu> From: Akim Demaille Date: Tue, 12 Jul 2005 11:10:58 +0200 In-Reply-To: <87k6jw35cw.fsf@penguin.cs.ucla.edu> (Paul Eggert's message of "Mon, 11 Jul 2005 23:28:47 -0700") Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Paul Hilfinger , Tiger Patches , Bob Proulx , Bison Patches Subject: Re: [Akim Demaille] Naming the symbols X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jul 2005 09:29:28 -0000 >>> "Paul" == Paul Eggert writes: > Akim Demaille writes: >> - use this syntax, it is human readable and natural. > I dunno, I find it a bit hard to read, with ":" being overloaded so > seriously, not only in the grammar, but also in your C++ code. There > sure are a lot of colons there. Yep. But of course there is code between braces that also help keeping the rhythm. > As long as you're redoing the syntax, why not go all the way and use > "->" rather than ":" to separate the head of the grammar from the > body? Then, you can allow your extension only for new-style grammar > rules that use "->". Something like this: > r:exp -> > "if" c:exp "then" t:exp > { r = new ast::IfExp (c, t); } >> "if" c:exp "then" t:exp "else" e:exp > { r = new ast::IfExp (c, t, e); } > ; > You can insist on a terminating ";" here, of course. I resisted this idea because I don't like when TMTOWTDI. But why not indeed. But then, why -> instead of the more traditional `::='. Both are OK. > I'd think this extension would be LALR(1), if you play your cards right. That's not clear to me, if you consider things like exp: exp '+' exp exp -> exp '-' exp we have the same problem: where does the first rule end. I still think dropping the scanner hacks and moving towards using the GLR parser is a better road. Whatever the syntax we choose. And then, there is no longer any need to define two syntax for rules, we merely define several syntax for the `->' token. From MAILER-DAEMON Tue Jul 12 16:54:18 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRli-0006Vs-HU for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:54:18 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DsLKn-0004Ja-1L for bison-patches@gnu.org; Tue, 12 Jul 2005 10:02:05 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsLKj-0004Hf-AG for bison-patches@gnu.org; Tue, 12 Jul 2005 10:02:01 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsLKj-0004Hc-6a for bison-patches@gnu.org; Tue, 12 Jul 2005 10:02:01 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1DsL9S-00080j-6O for bison-patches@gnu.org; Tue, 12 Jul 2005 09:50:22 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.50) id 1DsL1p-0007LT-Uj; Tue, 12 Jul 2005 15:42:29 +0200 To: Bison Patches From: Akim Demaille Date: Tue, 12 Jul 2005 15:42:29 +0200 Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Paul Eggert Subject: FYI: Debugging tools X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jul 2005 14:02:09 -0000 Index: ChangeLog from Akim Demaille * src/symtab.h, src/symtab.c (symbol_print): New. * src/symlist.h, src/symlist.c (symbol_list_print): New. * src/symlist.c (symbol_list_n_type_name_get): Report the culprit. 2005-07-11 Paul Eggert Index: src/symlist.c =================================================================== RCS file: /cvsroot/bison/bison/src/symlist.c,v retrieving revision 1.9 diff -u -u -r1.9 symlist.c --- src/symlist.c 14 May 2005 06:49:48 -0000 1.9 +++ src/symlist.c 12 Jul 2005 13:41:14 -0000 @@ -1,6 +1,6 @@ /* Lists of symbols for Bison - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2005 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -44,6 +44,18 @@ } +/*------------------. +| Print this list. | +`------------------*/ + +void +symbol_list_print (FILE *f, symbol_list *l) +{ + for (/* Nothing. */; l; l = l->next) + symbol_print (f, l->sym); +} + + /*---------------------------------. | Prepend SYM at LOC to the LIST. | `---------------------------------*/ @@ -94,7 +106,7 @@ if (n < 0) { - complain_at (loc, _("invalid $ value")); + complain_at (loc, _("invalid $ value: $%d"), n); return NULL; } @@ -105,7 +117,8 @@ rp = rp->next; if (rp == NULL || rp->sym == NULL) { - complain_at (loc, _("invalid $ value")); + complain_at (loc, _("invalid $ value: $%d"), n); return NULL; } ++i; Index: src/symlist.h =================================================================== RCS file: /cvsroot/bison/bison/src/symlist.h,v retrieving revision 1.8 diff -u -u -r1.8 symlist.h --- src/symlist.h 14 May 2005 06:49:48 -0000 1.8 +++ src/symlist.h 12 Jul 2005 13:41:14 -0000 @@ -1,6 +1,6 @@ /* Lists of symbols for Bison - Copyright (C) 2002 Free Software Foundation, Inc. + Copyright (C) 2002, 2005 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -43,6 +43,9 @@ /* Create a list containing SYM at LOC. */ symbol_list *symbol_list_new (symbol *sym, location loc); + +/* Print it. */ +void symbol_list_print (FILE *f, symbol_list *l); /* Prepend SYM at LOC to the LIST. */ symbol_list *symbol_list_prepend (symbol_list *list, Index: src/symtab.c =================================================================== RCS file: /cvsroot/bison/bison/src/symtab.c,v retrieving revision 1.62 diff -u -u -r1.62 symtab.c --- src/symtab.c 14 May 2005 06:49:48 -0000 1.62 +++ src/symtab.c 12 Jul 2005 13:41:14 -0000 @@ -74,6 +74,25 @@ } +/*-----------------. +| Print a symbol. | +`-----------------*/ + +#define SYMBOL_ATTR_PRINT(Attr) \ + if (s->Attr) \ + fprintf (stderr, " %s { %s }", #Attr, s->Attr) + +void +symbol_print (FILE *f, symbol *s) +{ + fprintf (stderr, "\"%s\"", s->tag); + SYMBOL_ATTR_PRINT (type_name); + SYMBOL_ATTR_PRINT (destructor); + SYMBOL_ATTR_PRINT (printer); +} + +#undef SYMBOL_ATTR_PRINT + /*------------------------------------------------------------------. | Complain that S's WHAT is redeclared at SECOND, and was first set | | at FIRST. | Index: src/symtab.h =================================================================== RCS file: /cvsroot/bison/bison/src/symtab.h,v retrieving revision 1.55 diff -u -u -r1.55 symtab.h --- src/symtab.h 14 May 2005 06:49:48 -0000 1.55 +++ src/symtab.h 12 Jul 2005 13:41:14 -0000 @@ -1,6 +1,6 @@ /* Definitions for symtab.c and callers, part of Bison. - Copyright (C) 1984, 1989, 1992, 2000, 2001, 2002, 2004 + Copyright (C) 1984, 1989, 1992, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -91,6 +91,8 @@ /* Undefined internal token number. */ #define NUMBER_UNDEFINED (-1) +/* Print a symbol (for debugging). */ +void symbol_print (FILE *f, symbol *s); /* Fetch (or create) the symbol associated to KEY. */ symbol *symbol_get (const char *key, location loc); From MAILER-DAEMON Tue Jul 12 16:54:19 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRli-0006W2-VO for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:54:18 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DsLL1-0004Q9-7H for bison-patches@gnu.org; Tue, 12 Jul 2005 10:02:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsLKu-0004NH-OE for bison-patches@gnu.org; Tue, 12 Jul 2005 10:02:15 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsLKu-0004Hc-Db for bison-patches@gnu.org; Tue, 12 Jul 2005 10:02:12 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1DsLMF-0000PT-3m for bison-patches@gnu.org; Tue, 12 Jul 2005 10:03:35 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.50) id 1DsLEc-0007fF-FL for bison-patches@gnu.org; Tue, 12 Jul 2005 15:55:42 +0200 To: Bison Patches From: Akim Demaille Date: Tue, 12 Jul 2005 15:55:42 +0200 Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: FYI: Use %printer X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jul 2005 14:02:21 -0000 I'm trying to use the glr parser, but I'm facing problems I don't understand well... So I go step by step. Index: ChangeLog from Akim Demaille * src/parse-gram.y: Use %printer instead of YYPRINT. Index: src/parse-gram.y =================================================================== RCS file: /cvsroot/bison/bison/src/parse-gram.y,v retrieving revision 1.54 diff -u -u -r1.54 parse-gram.y --- src/parse-gram.y 14 May 2005 06:49:47 -0000 1.54 +++ src/parse-gram.y 12 Jul 2005 13:53:20 -0000 @@ -46,10 +46,6 @@ gram_error (&yylloc, Msg) static void gram_error (location const *, char const *); -#define YYPRINT(File, Type, Value) \ - print_token_value (File, Type, &Value) -static void print_token_value (FILE *, int, YYSTYPE const *); - static void add_param (char const *, char *, location); symbol_class current_class = unknown_sym; @@ -61,6 +57,7 @@ %} %debug +%verbose %defines %locations %pure-parser @@ -164,9 +161,25 @@ "%union {...}" BRACED_CODE action PROLOGUE EPILOGUE +%printer { fprintf (stderr, "\"%s\"", $$); } + STRING string_content +%printer { fprintf (stderr, "{\n%s\n}", $$); } + "%destructor {...}" + "%initial-action {...}" + "%lex-param {...}" + "%parse-param {...}" + "%printer {...}" + "%union {...}" + BRACED_CODE action + PROLOGUE EPILOGUE %type TYPE +%printer { fprintf (stderr, "<%s>", $$); } TYPE %type INT -%type ID ID_COLON symbol string_as_id +%printer { fprintf (stderr, "%d", $$); } INT +%type ID symbol string_as_id +%printer { fprintf (stderr, "%s", $$->tag); } ID symbol string_as_id +%type ID_COLON +%printer { fprintf (stderr, "%s:", $$->tag); } ID_COLON %type precedence_declarator %type symbols.1 %% @@ -514,49 +527,6 @@ } scanner_last_string_free (); -} - -/*----------------------------------------------------. -| When debugging the parser, display tokens' values. | -`----------------------------------------------------*/ - -static void -print_token_value (FILE *file, int type, YYSTYPE const *value) -{ - fputc (' ', file); - switch (type) - { - case ID: - fprintf (file, " = %s", value->symbol->tag); - break; - - case INT: - fprintf (file, " = %d", value->integer); - break; - - case STRING: - fprintf (file, " = \"%s\"", value->chars); - break; - - case TYPE: - fprintf (file, " = <%s>", value->uniqstr); - break; - - case BRACED_CODE: - case PERCENT_DESTRUCTOR: - case PERCENT_LEX_PARAM: - case PERCENT_PARSE_PARAM: - case PERCENT_PRINTER: - case PERCENT_UNION: - case PROLOGUE: - case EPILOGUE: - fprintf (file, " = {{ %s }}", value->chars); - break; - - default: - fprintf (file, "unknown token type"); - break; - } } static void From MAILER-DAEMON Tue Jul 12 16:54:19 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRlj-0006WC-42 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:54:19 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DsLM1-0004mD-IE for bison-patches@gnu.org; Tue, 12 Jul 2005 10:03:22 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsLLz-0004lQ-Nq for bison-patches@gnu.org; Tue, 12 Jul 2005 10:03:20 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsLLT-0004Hc-HY for bison-patches@gnu.org; Tue, 12 Jul 2005 10:02:47 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1DsL5L-0007nL-RX for bison-patches@gnu.org; Tue, 12 Jul 2005 09:46:08 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.50) id 1DsKxg-0007GZ-Qq; Tue, 12 Jul 2005 15:38:12 +0200 To: Bison Patches From: Akim Demaille Date: Tue, 12 Jul 2005 15:38:12 +0200 Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Paul Hilfinger , Paul Eggert Subject: FYI: glr.c: typo X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jul 2005 14:03:22 -0000 Index: ChangeLog from Akim Demaille * data/glr.c (b4_syncline): Fix (swap) the definition of b4_at_dollar and b4_dollar_dollar. Index: data/glr.c =================================================================== RCS file: /cvsroot/bison/bison/data/glr.c,v retrieving revision 1.96 diff -u -u -r1.96 glr.c --- data/glr.c 6 Jul 2005 04:12:23 -0000 1.96 +++ data/glr.c 12 Jul 2005 13:37:51 -0000 @@ -1980,8 +1980,8 @@ #endif ]) m4_ifdef([b4_initial_action], [ -m4_pushdef([b4_at_dollar], [yylval])dnl -m4_pushdef([b4_dollar_dollar], [yylloc])dnl +m4_pushdef([b4_at_dollar], [yylloc])dnl +m4_pushdef([b4_dollar_dollar], [yylval])dnl /* User initialization code. */ b4_initial_action m4_popdef([b4_dollar_dollar])dnl From MAILER-DAEMON Tue Jul 12 16:54:20 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRlk-0006Wm-IY for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:54:20 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DsNet-0003oj-Td for bison-patches@gnu.org; Tue, 12 Jul 2005 12:31:00 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsNer-0003nm-93 for bison-patches@gnu.org; Tue, 12 Jul 2005 12:30:58 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsNeq-0003nO-TP for bison-patches@gnu.org; Tue, 12 Jul 2005 12:30:56 -0400 Received: from [211.112.11.54] (helo=mail.specialtechnician.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DsNkH-0005Hn-O5 for bison-patches@gnu.org; Tue, 12 Jul 2005 12:36:34 -0400 Received: (qmail 30117 invoked by uid 509); 12 Jul 2005 12:02:45 +0900 Date: 12 Jul 2005 12:02:45 +0900 Message-ID: <20050712030245.30115.qmail@mail.specialtechnician.com> From: info@specialtechnician.com To: bison-patches@gnu.org Subject: $B!yD69k2Z%W%l%<%s%H List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jul 2005 16:31:00 -0000 $BEv%5%$%H$O#2<~G/$r7^$(!"8=:_6H3&$K$*$$$FBgJQ0B?4$7$FMxMQ$G$-$k%5%$%H$H$7$F$N(B $B8|$$?.MQ$r!"$*0~MM$G3MF@$9$k$3$H$,$G$-$^$7$?!#K\Ev$KM-Fq$&$4$6$$$^$9!#(B $B$3$NEY!"%5%$%H$r%j%K%e!<%"%kCW$7$^$7$?$N$G@'Hs0lEY$*1[$72<$5$$$^$;!#(B $B!~(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,!~(B $B(-(B $B!y!#!&!,!z(B $B%j%K%e!<%"%k4k2hBh0lCF!!!y!#!&!,!z(B $B!!(B $B!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(-(B $B!~(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(B http://awg.webchu.com/?kensyo $B!~(B $B"'8=:_!V?75,$4EPO?!W$N3'MM$NCf$+$iCjA*$G(B100$BL>$NJ}$K9k2Z%W%l%<%s%H$rB#DhCf!*(B 1. Louis Vuitton $B%H%j%W%k%3%$%k(B 2. Louis Vuitton $B%@%_%((B $B%H%j%"%J(B 3. ROREX $B%7!<%I%%%(%i!<(B [ W$B%A%c%s%9"v(B] SONY NW-507L $B%"!<%:%k%V%k!<(B $B%a%b%j!<%*!<%G%#%*(B 1GB $B!}$9$01~Jg"v"*(B http://awg.webchu.com/?kensyo $B!,!}!#!y!,!#!~!!!y(B $B40A4L5NA%(%s%H%j!<8e!"!V(B10,000$B1_!WJ,L5NA%]%$%s%H!JMW(BTel$BG'>Z!KB#DhCf!*(B $B!@%W%l%<%s%H!?(B $B(.(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(/(B $B!!!@!@!!!?!?!!!V9k2Z%W%l%<%s%H!W$H!V??2F$N%(%C%AAj)$a$7$^$9!*@'Hs$*;n$72<$5$$$^$;!#(B $B(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(B $B"($=$NB>HqMQ$O0l@Z3]$+$i$J$$$3$H$rL@8@$5$;$FD:$-$^$9$N$G0B?4$7$F$*;n$72<$5$$!#(B $B"(L5NA%]%$%s%H>C2=8e!"5$$KF~$C$FD:$1$^$7$?$i!"Z!W$b$NJ}$O!"$* Date: Tue, 12 Jul 2005 18:55:05 +0200 (CEST) From: KIMAEVE LIOUDMILA To: bison-patches@gnu.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_548_21570718.1121187305157" X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: STRICTLY CONFIDENTIAL X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: KIMAEVE LIOUDMILA List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jul 2005 17:07:22 -0000 ------=_Part_548_21570718.1121187305157 Content-Transfer-Encoding: 7bit MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" ------=_Part_548_21570718.1121187305157-- From MAILER-DAEMON Tue Jul 12 16:54:22 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRlm-0006Xa-Au for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:54:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DsQ6X-0008Lp-CA for bison-patches@gnu.org; Tue, 12 Jul 2005 15:07:41 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsQ6U-0008K9-Tx for bison-patches@gnu.org; Tue, 12 Jul 2005 15:07:39 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsQ21-00073v-Jb for bison-patches@gnu.org; Tue, 12 Jul 2005 15:03:01 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DsPp0-0006kd-7Q for bison-patches@gnu.org; Tue, 12 Jul 2005 14:49:34 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6CIesL03242; Tue, 12 Jul 2005 11:40:54 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DsPga-0000hc-0F; Tue, 12 Jul 2005 11:40:52 -0700 To: Akim Demaille References: <87k6jw35cw.fsf@penguin.cs.ucla.edu> From: Paul Eggert Date: Tue, 12 Jul 2005 11:40:51 -0700 In-Reply-To: (Akim Demaille's message of "Tue, 12 Jul 2005 11:10:58 +0200") Message-ID: <87ll4bg958.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Paul Hilfinger , Tiger Patches , Bob Proulx , Bison Patches Subject: Re: [Akim Demaille] Naming the symbols X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jul 2005 19:07:43 -0000 Akim Demaille writes: > That's not clear to me, if you consider things like > > exp: exp '+' exp > exp -> exp '-' exp > > we have the same problem: where does the first rule end. But we can insist on ";" after the first rule, too. Once the user's grammar contains "->", we can place any other restrictions that we like on the grammar; POSIX won't care. > I still think dropping the scanner hacks and moving towards using > the GLR parser is a better road. Yes, that could be true. But I suspect it's a bigger project, and in particular it will require considerably more testing. > But then, why -> instead of the more traditional `::='. Both are OK. Aack! Too many colons! Besides, I thought that right-arrow was more traditional than "::=". Didn't Chomsky use a right-arrow in 1956? (::::-) (Seriously: "::=" is fine with me too.) From MAILER-DAEMON Tue Jul 12 16:54:19 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsRlj-0006WJ-95 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 16:54:19 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DsLih-0005r6-RM for bison-patches@gnu.org; Tue, 12 Jul 2005 10:26:49 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsLiY-0005mP-DS for bison-patches@gnu.org; Tue, 12 Jul 2005 10:26:39 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsLiY-0005lp-6b for bison-patches@gnu.org; Tue, 12 Jul 2005 10:26:38 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1DsLny-00039a-OB for bison-patches@gnu.org; Tue, 12 Jul 2005 10:32:14 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.50) id 1DsLgL-0008OG-CV; Tue, 12 Jul 2005 16:24:21 +0200 To: Bison Patches References: From: Akim Demaille Date: Tue, 12 Jul 2005 16:24:21 +0200 In-Reply-To: (Akim Demaille's message of "Tue, 12 Jul 2005 15:55:42 +0200") Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Paul Eggert Subject: Re: FYI: Use %printer X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jul 2005 14:26:50 -0000 >>> "Akim" == Akim Demaille writes: > I'm trying to use the glr parser, but I'm facing problems I don't > understand well... Damn it. I forgot there are lexical tie-ins in our grammar. That's bad :( From MAILER-DAEMON Tue Jul 12 20:01:21 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsUgi-0007Pm-12 for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 20:01:20 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DsUgd-0007OZ-82 for bison-patches@gnu.org; Tue, 12 Jul 2005 20:01:15 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsUga-0007Nh-NO for bison-patches@gnu.org; Tue, 12 Jul 2005 20:01:14 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsUgM-00073y-Be; Tue, 12 Jul 2005 20:00:58 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DsUX7-00060G-J8; Tue, 12 Jul 2005 19:51:25 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6CNhRL25248; Tue, 12 Jul 2005 16:43:27 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DsUPM-0005TT-Cu; Tue, 12 Jul 2005 16:43:24 -0700 To: bug-bison@gnu.org, bison-patches@gnu.org From: Paul Eggert Date: Tue, 12 Jul 2005 16:43:24 -0700 Message-ID: <87vf3fegkj.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Cc: Bruno Haible Subject: Bison i18n patches installed X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2005 00:01:16 -0000 --=-=-= I installed the Bison internationalization patch that Bruno Haible suggested in . I then installed the following additional patch to clean up problems I found when bootstrapping, as well as to have Bison eat its own dog food in this area (Bison uses a Bison-generated parser, so...). Bruno, can you please take a look at this patch when you have the time? An extra pair of eyes would be appreciated. Thanks. 2005-07-12 Paul Eggert * NEWS: Document recent i18n improvements. * bootstrap: Get runtime translations into runtime-po. Create runtime-po files automatically, if possible. * configure.ac: Invoke BISON_I18N, so that we eat our own dog food. * data/yacc.c: Rewrite inclusion of so that ENABLE_NLS does not infringe on the user's name space. (YYENABLE_NLS): Renamed from ENABLE_BISON_NLS. * doc/bison.texinfo (Internationalization): Revamp the English and Texinfo syntax a bit, to try to make it clearer. (Bison Options, Option Cross Key): Mention --print-localedir. * m4/bison-i18n.m4 (BISON_I18N): Rename ENABLE_BISON_NLS to YYENABLE_NLS. Quote a bit more. * runtime-po/.cvsignore: New file. * runtime-po/Makefile.in.in (mostlyclean): Remove *.old.pot. * runtime-po/Rules-quot: Remove; now created by bootstrap. * runtime-po/quot.sed: Likewise. * runtime-po/boldquot.sed: Likewise. * runtime-po/en@quot.header: Likewise. * runtime-po/en@boldquot.header: Likewise. * runtime-po/insert-header.sin: Likewise. * runtime-po/remove-potcdate.sin: Likewise. * runtime-po/Makevars: Likewise. * runtime-po/LINGUAS: Likewise. * runtime-po/de.po: Likewise; we will rely on the translation project to maintain this, so "bootstrap" should get it. * src/getarg.s (PRINT_LOCALEDIR_OPTION): Let the C compiler determine its value. * src/main.c (main): Bind the bison-runtime domain, too. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=d2.patch Content-Description: Bison i18n followup patch --- bison-i18n-bruno/Makefile.am 2005-07-12 14:27:00.000000000 -0700 +++ bison-i18n/Makefile.am 2005-07-12 14:44:19.000000000 -0700 @@ -20,7 +20,7 @@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = config po runtime-po lib data src doc tests -# Files installed for use by automake. +# Files installed for use by Automake. aclocaldir = @aclocaldir@ aclocal_DATA = m4/bison-i18n.m4 --- bison-i18n-bruno/NEWS 2005-05-22 23:48:08.000000000 -0700 +++ bison-i18n/NEWS 2005-07-12 16:40:19.000000000 -0700 @@ -1,11 +1,15 @@ Bison News ---------- -Changes in version 2.0a, 2005-05-22: +Changes in the next version (not yet released): -* Bison-generated C parsers use the _ macro to translate strings from - English to the user's language, e.g., _("syntax error"). By default, - _ is defined to be a no-op macro so the strings are not translated. +* Bison-generated C parsers now support the translation of diagnostics like + "syntax error" into languages other than English. The default + language is still English. For details, please see the new + Internationalization section of the Bison manual. Thanks to Bruno + Haible for this new feature. + +The following change was also in version 2.0a, 2005-05-22: * When generating verbose diagnostics, Bison-generated C parsers no longer quote the literal strings associated with tokens. For example, for --- bison-i18n-bruno/bootstrap 2005-07-07 09:06:50.000000000 -0700 +++ bison-i18n/bootstrap 2005-07-12 15:16:56.000000000 -0700 @@ -170,7 +170,18 @@ case $SKIP_PO in wget -nv -nd -r -l 1 -A .po -C off \ http://www.iro.umontreal.ca/translation/maint/$package/ && ls *.po | sed 's/\.po$//' >LINGUAS - ) || exit;; + ) || exit + + case $package in + bison) + echo "$0: getting translations into po (please ignore the robots.txt ERROR 404)..." + (cd runtime-po && + rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po$/p'` && + wget -nv -nd -r -l 1 -A .po -C off \ + http://www.iro.umontreal.ca/translation/maint/$package-runtime/ && + ls *.po | sed 's/\.po$//' >LINGUAS + ) || exit + esac;; esac @@ -231,6 +242,15 @@ rm -fr $intl_files_to_remove || exit echo "$0: sed '/^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-bison@gnu.org/' po/Makevars.template >po/Makevars ..." sed '/^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-bison@gnu.org/' po/Makevars.template >po/Makevars +# Likewise for runtime-po/Makevars, except also change a few other parameters. +sed ' + s/^\(DOMAIN\) *=.*/\1 = bison-runtime/ + s/^\(subdir\) *=.*/\1 = runtime-po/ + s/^\(XGETTEXT_OPTIONS\) *=.*/\1 = --keyword=YYI18N/ +' runtime-po/Makevars + +# Copy identical files from po to runtime-po. +(cd po && cp -p *-quot *.header *.sed *.sin ../runtime-po) # if src/parse-gram.[ch] are out of date, rebuild them. parse_gram_y=`find src/parse-gram.y \ --- bison-i18n-bruno/configure.ac 2005-07-12 14:25:45.000000000 -0700 +++ bison-i18n/configure.ac 2005-07-12 14:44:19.000000000 -0700 @@ -109,6 +109,7 @@ BISON_PREREQ_TIMEVAR GNULIB_AUTOCONF_SNIPPET # We use po/Makevars, so we need at least gettext 0.12. AM_GNU_GETTEXT_VERSION([0.12]) +BISON_I18N # Internationalized parsers. AC_CONFIG_FILES([runtime-po/Makefile.in]) --- bison-i18n-bruno/data/yacc.c 2005-07-12 14:26:21.000000000 -0700 +++ bison-i18n/data/yacc.c 2005-07-12 14:44:19.000000000 -0700 @@ -286,11 +286,6 @@ void free (void *); /* INFRINGES ON USER #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ -#if ENABLE_NLS && ENABLE_BISON_NLS -# include -#endif - - #if (! defined (yyoverflow) \ && (! defined (__cplusplus) \ || (]b4_location_if([[defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \ @@ -418,9 +413,13 @@ static const char *const yytname[] = #endif #ifndef YYI18N -# if ENABLE_NLS && ENABLE_BISON_NLS -# define YYI18N(msgid) dgettext ("bison-runtime", msgid) -# else +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YYI18N(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YYI18N # define YYI18N(msgid) msgid # endif #endif @@ -526,7 +525,7 @@ do \ } \ else \ { \ - yyerror (]b4_yyerror_args[YYI18N("syntax error: cannot back up")); \ + yyerror (]b4_yyerror_args[YYI18N ("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) @@ -620,7 +619,7 @@ do { \ [[short int *bottom], [bottom]], [[short int *top], [top]])[ { - YYFPRINTF (stderr, YYI18N("Stack now")); + YYFPRINTF (stderr, YYI18N ("Stack now")); for (/* Nothing. */; bottom <= top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); @@ -642,7 +641,7 @@ do { \ { int yyi; unsigned int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, YYI18N("Reducing stack by rule %d (line %u), "), + YYFPRINTF (stderr, YYI18N ("Reducing stack by rule %d (line %u), "), yyrule - 1, yylno); /* Print the symbols being reduced, and their result. */ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) @@ -912,7 +911,7 @@ m4_ifdef([b4_at_dollar_used], [[ yylsp[ data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ - yyoverflow (YYI18N("parser stack overflow"), + yyoverflow (YYI18N ("parser stack overflow"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), ]b4_location_if([ &yyls1, yysize * sizeof (*yylsp),])[ @@ -952,14 +951,14 @@ m4_ifdef([b4_at_dollar_used], [[ yylsp[ yyvsp = yyvs + yysize - 1; ]b4_location_if([ yylsp = yyls + yysize - 1;])[ - YYDPRINTF ((stderr, YYI18N("Stack size increased to %lu\n"), + YYDPRINTF ((stderr, YYI18N ("Stack size increased to %lu\n"), (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } - YYDPRINTF ((stderr, YYI18N("Entering state %d\n"), yystate)); + YYDPRINTF ((stderr, YYI18N ("Entering state %d\n"), yystate)); goto yybackup; @@ -983,19 +982,19 @@ yybackup: /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, YYI18N("Reading a token: "))); + YYDPRINTF ((stderr, YYI18N ("Reading a token: "))); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, YYI18N("Now at end of input.\n"))); + YYDPRINTF ((stderr, YYI18N ("Now at end of input.\n"))); } else { yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT (YYI18N("Next token is"), yytoken, &yylval, &yylloc); + YY_SYMBOL_PRINT (YYI18N ("Next token is"), yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to @@ -1016,7 +1015,7 @@ yybackup: YYACCEPT; /* Shift the look-ahead token. */ - YY_SYMBOL_PRINT (YYI18N("Shifting"), yytoken, &yylval, &yylloc); + YY_SYMBOL_PRINT (YYI18N ("Shifting"), yytoken, &yylval, &yylloc); /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) @@ -1124,11 +1123,11 @@ yyerrlab: #if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ - YYI18N("syntax error, unexpected %s"); - YYI18N("syntax error, unexpected %s, expecting %s"); - YYI18N("syntax error, unexpected %s, expecting %s or %s"); - YYI18N("syntax error, unexpected %s, expecting %s or %s or %s"); - YYI18N("syntax error, unexpected %s, expecting %s or %s or %s or %s"); + YYI18N ("syntax error, unexpected %s"); + YYI18N ("syntax error, unexpected %s, expecting %s"); + YYI18N ("syntax error, unexpected %s, expecting %s or %s"); + YYI18N ("syntax error, unexpected %s, expecting %s or %s or %s"); + YYI18N ("syntax error, unexpected %s, expecting %s or %s or %s or %s"); #endif char *yyfmt; char const *yyf; @@ -1171,7 +1170,7 @@ yyerrlab: yyprefix = yyor; } - yyf = YYI18N(yyformat); + yyf = YYI18N (yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= yysize1 < yysize; yysize = yysize1; @@ -1202,11 +1201,11 @@ yyerrlab: YYSTACK_FREE (yymsg); } else - yyerror (]b4_yyerror_args[YYI18N("syntax error; also memory exhausted")); + yyerror (]b4_yyerror_args[YYI18N ("syntax error; also memory exhausted")); } else #endif /* YYERROR_VERBOSE */ - yyerror (]b4_yyerror_args[YYI18N("syntax error")); + yyerror (]b4_yyerror_args[YYI18N ("syntax error")); } ]b4_location_if([[ yyerror_range[0] = yylloc;]])[ @@ -1225,7 +1224,7 @@ yyerrlab: } else { - yydestruct (YYI18N("Error: discarding"), yytoken, &yylval]b4_location_if([, &yylloc])[); + yydestruct (YYI18N ("Error: discarding"), yytoken, &yylval]b4_location_if([, &yylloc])[); yychar = YYEMPTY; } } @@ -1279,7 +1278,7 @@ yyerrlab1: YYABORT; ]b4_location_if([[ yyerror_range[0] = *yylsp;]])[ - yydestruct (YYI18N("Error: popping"), yystos[yystate], yyvsp]b4_location_if([, yylsp])[); + yydestruct (YYI18N ("Error: popping"), yystos[yystate], yyvsp]b4_location_if([, yylsp])[); YYPOPSTACK; yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -1297,7 +1296,7 @@ yyerrlab1: *++yylsp = yyloc;]])[ /* Shift the error token. */ - YY_SYMBOL_PRINT (YYI18N("Shifting"), yystos[yyn], yyvsp, yylsp); + YY_SYMBOL_PRINT (YYI18N ("Shifting"), yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -1322,14 +1321,14 @@ yyabortlab: | yyoverflowlab -- parser overflow comes here. | `----------------------------------------------*/ yyoverflowlab: - yyerror (]b4_yyerror_args[YYI18N("parser stack overflow")); + yyerror (]b4_yyerror_args[YYI18N ("parser stack overflow")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) - yydestruct (YYI18N("Error: discarding lookahead"), + yydestruct (YYI18N ("Error: discarding lookahead"), yytoken, &yylval]b4_location_if([, &yylloc])[); if (yyssp != yyss) for (;;) @@ -1338,7 +1337,7 @@ yyreturn: YYPOPSTACK; if (yyssp == yyss) break; - yydestruct (YYI18N("Error: popping"), + yydestruct (YYI18N ("Error: popping"), yystos[*yyssp], yyvsp]b4_location_if([, yylsp])[); } #ifndef yyoverflow --- bison-i18n-bruno/doc/bison.texinfo 2005-07-12 14:25:45.000000000 -0700 +++ bison-i18n/doc/bison.texinfo 2005-07-12 16:10:51.000000000 -0700 @@ -4817,65 +4817,74 @@ Tracking Locations}. @cindex gettext @cindex bison-po -The parser can print diagnostics -- error messages and tracing messages --. -By default, they appear in English. However, Bison also supports to output -them in the user's native language. To make this work, the user only has -to set the usual environment variables; see the @file{ABOUT-NLS} file for -details. The maintainer of a package that uses a bison-generated parser -enables the internationalization of the parser's output through the -following steps. Here we assume a package that uses GNU autoconf and -GNU automake. +A Bison-generated parser can print diagnostics, including error and +tracing messages. By default, they appear in English. However, Bison +also supports outputting diagnostics in the user's native language. +To make this work, the user should set the usual environment +variables. @xref{Using gettextized software, , User influence on +@code{gettext}, libc, The GNU C Library Reference Manual}. For +example, the shell command @samp{export LC_ALL=fr_CA.UTF-8} might set +the user's locale to French Canadian using the @acronym{UTF}-8 +encoding. The exact set of available locales depends on the user's +installation. + +The maintainer of a package that uses a Bison-generated parser enables +the internationalization of the parser's output through the following +steps. Here we assume a package that uses @acronym{GNU} Autoconf and +@acronym{GNU} Automake. @enumerate @item -Into the directory containing the GNU autoconf macros used by the package --- often called @file{m4/} -- copy the @samp{bison-i18n.m4} file installed by -Bison under @samp{share/aclocal/bison-i18n.m4} in Bison's installation -directory. Example: -@smallexample -$ cp /usr/local/share/aclocal/bison-i18n.m4 m4/bison-i18n.m4 -@end smallexample +Into the directory containing the @acronym{GNU} Autoconf macros used +by the package---often called @file{m4}---copy the +@file{bison-i18n.m4} file installed by Bison under +@samp{share/aclocal/bison-i18n.m4} in Bison's installation directory. +For example: + +@example +cp /usr/local/share/aclocal/bison-i18n.m4 m4/bison-i18n.m4 +@end example @item In the top-level @file{configure.ac}, after the @code{AM_GNU_GETTEXT} -invocation, add an invocation of @code{BISON_I18N}. Example: -@smallexample -BISON_I18N -@end smallexample -The @code{BISON_I18N} macro is defined in @file{bison-i18n.m4} that you copied -earlier. It will cause @samp{configure} to find the value of the -@code{BISON_LOCALEDIR} variable (see below). +invocation, add an invocation of @code{BISON_I18N}. This macro is +defined in the file @file{bison-i18n.m4} that you copied earlier. It +causes @samp{configure} to find the value of the +@code{BISON_LOCALEDIR} variable. @item -In the @code{main()} function of your program, designate the directory where -Bison's message catalogs will be copied to, through a call to -@samp{bindtextdomain}. The @code{gettext} domain name is -@code{"bison-runtime"}. Example: -@smallexample -bindtextdomain (PACKAGE, LOCALEDIR); +In the @code{main} function of your program, designate the directory +containing Bison's runtime message catalog, through a call to +@samp{bindtextdomain} with domain name @samp{bison-runtime}. +For example: + +@example bindtextdomain ("bison-runtime", BISON_LOCALEDIR); -@end smallexample -Note that here we rely on @samp{BISON_LOCALEDIR} to be defined as a string -through the @file{Makefile}. +@end example + +Typically this appears after any other call @code{bindtextdomain +(PACKAGE, LOCALEDIR)} that your package already has. Here we rely on +@samp{BISON_LOCALEDIR} to be defined as a string through the +@file{Makefile}. @item -In the @file{Makefile.am} that controls the compilation of the @code{main()} +In the @file{Makefile.am} that controls the compilation of the @code{main} function, make @samp{BISON_LOCALEDIR} available as a C preprocessor macro, -either in @samp{DEFS} or in @samp{AM_CPPFLAGS}. Example: -@smallexample -DEFS = @@DEFS@@ -DBISON_LOCALEDIR="\"$(BISON_LOCALEDIR)\"" -@end smallexample -or -@smallexample -AM_CPPFLAGS = -DBISON_LOCALEDIR="\"$(BISON_LOCALEDIR)\"" -@end smallexample +either in @samp{DEFS} or in @samp{AM_CPPFLAGS}. For example: + +@example +DEFS = @@DEFS@@ -DBISON_LOCALEDIR='"$(BISON_LOCALEDIR)"' +@end example + +or: + +@example +AM_CPPFLAGS = -DBISON_LOCALEDIR='"$(BISON_LOCALEDIR)"' +@end example @item -Finally, invoke @samp{autoreconf}, to rebuild the autoconf/automake generated -build infrastructure. -@smallexample -$ autoreconf -@end smallexample +Finally, invoke the command @command{autoreconf} to generate the build +infrastructure. @end enumerate @@ -6641,6 +6650,9 @@ Print a summary of the command-line opti @itemx --version Print the version number of Bison and exit. +@item --print-localedir +Print the name of the directory containing locale-dependent data. + @need 1750 @item -y @itemx --yacc @@ -6780,6 +6792,7 @@ the corresponding short option. \line{ --no-lines \leaderfill -l} \line{ --no-parser \leaderfill -n} \line{ --output \leaderfill -o} +\line{ --print-localedir} \line{ --token-table \leaderfill -k} \line{ --verbose \leaderfill -v} \line{ --version \leaderfill -V} @@ -6798,6 +6811,7 @@ the corresponding short option. --no-lines -l --no-parser -n --output=@var{outfile} -o @var{outfile} +--print-localedir --token-table -k --verbose -v --version -V --- bison-i18n-bruno/m4/bison-i18n.m4 2005-07-12 14:25:40.000000000 -0700 +++ bison-i18n/m4/bison-i18n.m4 2005-07-12 14:40:52.000000000 -0700 @@ -11,7 +11,7 @@ dnl Support for internationalization of dnl BISON_I18N dnl should be used in configure.ac, after AM_GNU_GETTEXT. If USE_NLS is yes, it dnl sets BISON_LOCALEDIR to indicate where to find the bison-runtime.mo files -dnl and defines ENABLE_BISON_NLS if there are bison-runtime.mo files at all. +dnl and defines YYENABLE_NLS if there are bison-runtime.mo files at all. AC_DEFUN([BISON_I18N], [ if test -z "$USE_NLS"; then @@ -38,7 +38,7 @@ AC_DEFUN([BISON_I18N], fi fi fi - AC_SUBST(BISON_LOCALEDIR) + AC_SUBST([BISON_LOCALEDIR]) if test -n "$BISON_LOCALEDIR"; then USER_LINGUAS="${LINGUAS-%UNSET%}" if test -n "$USER_LINGUAS"; then @@ -53,7 +53,7 @@ AC_DEFUN([BISON_I18N], BISON_USE_NLS=no fi if test $BISON_USE_NLS = yes; then - AC_DEFINE([ENABLE_BISON_NLS], 1, - [Define to 1 if bison runtime messages shall be internationalized.]) + AC_DEFINE([YYENABLE_NLS], 1, + [Define to 1 to internationalize bison runtime messages.]) fi ]) --- bison-i18n-bruno/runtime-po/.cvsignore 1969-12-31 16:00:00.000000000 -0800 +++ bison-i18n/runtime-po/.cvsignore 2005-07-12 14:36:27.000000000 -0700 @@ -0,0 +1,17 @@ +*.gmo +*.po +LINGUAS +Makefile +Makefile.in +Makevars +POTFILES +Rules-quot +bison-runtime.old.pot +boldquot.sed +en@boldquot.header +en@quot.header +insert-header.sin +quot.sed +remove-potcdate.sed +remove-potcdate.sin +stamp-po Only in bison-i18n-bruno/runtime-po: LINGUAS --- bison-i18n-bruno/runtime-po/Makefile.in.in 2005-07-12 14:25:40.000000000 -0700 +++ bison-i18n/runtime-po/Makefile.in.in 2005-07-12 15:10:33.000000000 -0700 @@ -268,6 +268,7 @@ mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po + rm -f *.old.pot rm -fr *.o clean: mostlyclean Only in bison-i18n-bruno/runtime-po: Makevars Only in bison-i18n-bruno/runtime-po: Rules-quot Only in bison-i18n-bruno/runtime-po: boldquot.sed Only in bison-i18n-bruno/runtime-po: de.po Only in bison-i18n-bruno/runtime-po: en@boldquot.header Only in bison-i18n-bruno/runtime-po: en@quot.header Only in bison-i18n-bruno/runtime-po: insert-header.sin Only in bison-i18n-bruno/runtime-po: quot.sed Only in bison-i18n-bruno/runtime-po: remove-potcdate.sin --- bison-i18n-bruno/src/getargs.c 2005-07-12 14:25:45.000000000 -0700 +++ bison-i18n/src/getargs.c 2005-07-12 14:44:19.000000000 -0700 @@ -291,7 +291,7 @@ const char *short_options = "yvegdhr:ltk enum { LOCATIONS_OPTION = CHAR_MAX + 1, - PRINT_LOCALEDIR_OPTION = CHAR_MAX + 2 + PRINT_LOCALEDIR_OPTION }; static struct option const long_options[] = --- bison-i18n-bruno/src/main.c 2005-05-13 23:49:47.000000000 -0700 +++ bison-i18n/src/main.c 2005-07-12 14:44:19.000000000 -0700 @@ -56,8 +56,9 @@ main (int argc, char *argv[]) { program_name = argv[0]; setlocale (LC_ALL, ""); - (void) bindtextdomain (PACKAGE, LOCALEDIR); - (void) textdomain (PACKAGE); + bindtextdomain (PACKAGE, LOCALEDIR); + bindtextdomain ("bison-runtime", LOCALEDIR); + textdomain (PACKAGE); uniqstrs_new (); --=-=-=-- From MAILER-DAEMON Tue Jul 12 20:23:42 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsV23-0008Fg-7e for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 20:23:23 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DsV1x-00087e-EF for bison-patches@gnu.org; Tue, 12 Jul 2005 20:23:17 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsV1q-00080e-Fv for bison-patches@gnu.org; Tue, 12 Jul 2005 20:23:12 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsV1p-0007uj-OG for bison-patches@gnu.org; Tue, 12 Jul 2005 20:23:09 -0400 Received: from [59.104.20.201] (helo=kegworks.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DsV7F-0000D7-Or for bison-patches@gnu.org; Tue, 12 Jul 2005 20:28:46 -0400 From: "Cyrille Hoover" To: "Mikki Bowling" Date: Tue, 12 Jul 2005 19:20:35 -0500 MIME-Version: 1.0 X-Priority: 3 X-MSMail-Priority: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: OOh Boy. X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2005 00:23:20 -0000 Hello, headed back for the wharf at speed.D'ye hear that now? And did ye ever = hear the like? But what didthat was of the colour of old ivory. Her = countenance was cast inThis was a slight that at another time Captain = Blood would not havepity's sake, Arabella.That night he slept on board = his ship, which with characteristicBaynes checked in his stride, and = swung round writhing, his faceslowly.garden's main avenue, that was = fringed with palm and sandalwood,All things considered, there is not a = doubt that it would haveventuring his life to save her, he had been = driven by the thoughtthe wealth of the city.destroyed and partly = captured. But then, he argued, he had beenHe is my father.yielded to = their demand, they would retain her as a hostage.apprehension, and was = about to speak when a shaft of light clove From MAILER-DAEMON Tue Jul 12 22:35:51 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsX6F-0005pX-BB for mharc-bison-patches@gnu.org; Tue, 12 Jul 2005 22:35:51 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DsX68-0005kj-Jy for bison-patches@gnu.org; Tue, 12 Jul 2005 22:35:45 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsX65-0005h6-M3 for bison-patches@gnu.org; Tue, 12 Jul 2005 22:35:42 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsWvo-0001N0-GN for bison-patches@gnu.org; Tue, 12 Jul 2005 22:25:04 -0400 Received: from [72.22.69.19] (helo=host334.ipowerweb.com) by monty-python.gnu.org with smtp (Exim 4.34) id 1DsWpg-00082M-D9 for bison-patches@gnu.org; Tue, 12 Jul 2005 22:18:44 -0400 Received: (qmail 77416 invoked from network); 13 Jul 2005 02:07:10 -0000 Received: from unknown (HELO info3@servicepaypai.com) (80.97.190.156) by host334.ipowerweb.com with SMTP; 13 Jul 2005 02:07:10 -0000 From: "eBay" To: Date: Tue, 12 Jul 2005 20:10:41 -0600 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1106 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Message-Id: Subject: Important Notice: Verification Required To Avoid Account Suspension X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: eBay List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2005 02:35:46 -0000 eBay Case ID number: PP 261-449-806 Recently, our Account Review Team identified some unusual activity in your account. In accordance with eBay's User Agreement and to ensure that your account has not been compromised, access to your account was limited. Your account access will remain limited until this issue has been resolved. Protecting the security of your eBay account is our primary concern, and we apologize for any inconvenience this may cause. In order to secure your account and quickly restore full access, we may require some specific information from you. To restore your account to its regular status, you must complete the following steps: 1. Verify your primary e-mail address by clicking the verification link 2. Confirm your identity by completing the account verification process Once you have updated your account records, your eBay session will not be interrupted and will continue as normal. To verify your eBay records ,click on the following link: http://privacy-ebay.com/.signin.ebay.com/ws/eBayISAPI.dll/?SignIn&UsingSSL=1&pUserId=&ru We encourage you to log in and restore full access as soon as possible. Should access to your account remain limited for an extended period of time, it may result in further limitations on the use of your account or may result in eventual account closure. Thank you for your prompt attention to this matter. Please understand that this is a security measure meant to help protect you and your account. We apologize for any inconvenience. Sincerely, eBay Account Review Department From MAILER-DAEMON Wed Jul 13 01:29:25 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsZoC-0004kB-T5 for mharc-bison-patches@gnu.org; Wed, 13 Jul 2005 01:29:24 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DsZoA-0004j2-N2 for bison-patches@gnu.org; Wed, 13 Jul 2005 01:29:22 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsZms-00041U-4E for bison-patches@gnu.org; Wed, 13 Jul 2005 01:28:09 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsZml-0003kx-Pz for bison-patches@gnu.org; Wed, 13 Jul 2005 01:27:55 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DsZYF-0001si-M2 for bison-patches@gnu.org; Wed, 13 Jul 2005 01:12:55 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6D54IL10341; Tue, 12 Jul 2005 22:04:18 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DsZPr-0005WI-I1; Tue, 12 Jul 2005 22:04:15 -0700 To: Akim Demaille References: From: Paul Eggert Date: Tue, 12 Jul 2005 22:04:15 -0700 In-Reply-To: (Akim Demaille's message of "Mon, 30 May 2005 09:02:25 +0200") Message-ID: <87pstnmh4g.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Bison Patches Subject: Re: FYI: lalr1.cc: _ X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2005 05:29:23 -0000 Akim Demaille writes in : > Paul, how about moving the error reporting code into a dedicated > function in yacc.c? I'll do it if you agree. That sounds reasonable to me. (Sorry, I didn't receive your email until just now -- bison-patches was broken.) From MAILER-DAEMON Wed Jul 13 04:07:02 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DscGj-0005mn-He for mharc-bison-patches@gnu.org; Wed, 13 Jul 2005 04:07:01 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DscGe-0005hh-Ca for bison-patches@gnu.org; Wed, 13 Jul 2005 04:06:56 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DscGa-0005fh-K1 for bison-patches@gnu.org; Wed, 13 Jul 2005 04:06:53 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DscGa-0005f0-7R for bison-patches@gnu.org; Wed, 13 Jul 2005 04:06:52 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1DscLc-0004PD-LO for bison-patches@gnu.org; Wed, 13 Jul 2005 04:12:04 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.50) id 1DscDo-0006to-Vg; Wed, 13 Jul 2005 10:04:00 +0200 To: Paul Eggert References: <87k6jw35cw.fsf@penguin.cs.ucla.edu> <87ll4bg958.fsf@penguin.cs.ucla.edu> From: Akim Demaille Date: Wed, 13 Jul 2005 10:04:00 +0200 In-Reply-To: <87ll4bg958.fsf@penguin.cs.ucla.edu> (Paul Eggert's message of "Tue, 12 Jul 2005 11:40:51 -0700") Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Paul Hilfinger , Tiger Patches , Bob Proulx , Bison Patches Subject: Re: [Akim Demaille] Naming the symbols X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2005 08:06:58 -0000 >>> "Paul" == Paul Eggert writes: > Akim Demaille writes: >> I still think dropping the scanner hacks and moving towards using >> the GLR parser is a better road. > Yes, that could be true. But I suspect it's a bigger project, and in > particular it will require considerably more testing. But more freedom in the end! >> But then, why -> instead of the more traditional `::='. Both are OK. > Aack! Too many colons! Well, they are bound together, they won't make anything more complex :) > Besides, I thought that right-arrow was more traditional than "::=". > Didn't Chomsky use a right-arrow in 1956? (::::-) It depends what community you consider. -> is definitely in the spirit (err, letter) of Chomsky, but Backus introduced ::= to define Algol. Naur kept it, and therefore `::=' is really _the_ traditional BNF symbol. Not that it matters (nor that departing from -> was a nice move). From MAILER-DAEMON Wed Jul 13 05:46:23 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dsdos-0000Da-7Y for mharc-bison-patches@gnu.org; Wed, 13 Jul 2005 05:46:22 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dsdom-000059-UC for bison-patches@gnu.org; Wed, 13 Jul 2005 05:46:17 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dsdoi-0008Ms-6H for bison-patches@gnu.org; Wed, 13 Jul 2005 05:46:15 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dsdog-0008DU-OW for bison-patches@gnu.org; Wed, 13 Jul 2005 05:46:10 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1DsdtV-00035A-KV for bison-patches@gnu.org; Wed, 13 Jul 2005 05:51:09 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.50) id 1Dsdlh-0001BR-19; Wed, 13 Jul 2005 11:43:05 +0200 To: Paul Eggert References: <878y26cpsh.fsf@penguin.cs.ucla.edu> From: Akim Demaille Date: Wed, 13 Jul 2005 11:43:05 +0200 In-Reply-To: <878y26cpsh.fsf@penguin.cs.ucla.edu> (Paul Eggert's message of "Mon, 23 May 2005 01:25:18 -0700") Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: Bison test version 2.0a released X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2005 09:46:18 -0000 >>> "Paul" == Paul Eggert writes: > * When generating verbose diagnostics, Bison-generated C parsers no longer s/C //, that's not specific to C. > quote the literal strings associated with tokens. For example, for > a syntax error associated with '%token NUM "number"' they might > print 'syntax error, unexpected number' instead of 'syntax error, > unexpected "number"'. From MAILER-DAEMON Wed Jul 13 07:57:32 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dsfrn-0006db-DC for mharc-bison-patches@gnu.org; Wed, 13 Jul 2005 07:57:31 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DsfoT-0005qW-40 for bison-patches@gnu.org; Wed, 13 Jul 2005 07:54:05 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsfoK-0005kk-W8 for bison-patches@gnu.org; Wed, 13 Jul 2005 07:53:58 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsfoJ-0005b0-4e for bison-patches@gnu.org; Wed, 13 Jul 2005 07:53:55 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1Dsfmh-0004C2-1G for bison-patches@gnu.org; Wed, 13 Jul 2005 07:52:15 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.50) id 1Dsfer-0004Bp-Tl; Wed, 13 Jul 2005 13:44:09 +0200 To: Paul Eggert References: From: Akim Demaille Date: Wed, 13 Jul 2005 13:44:09 +0200 In-Reply-To: (Paul Eggert's message of "Sun, 22 May 2005 00:33:27 -0700") Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: porting yesterday's yacc.c patches to lalr1.cc X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2005 11:57:27 -0000 >>> "Paul" == Paul Eggert writes: > I installed this: > 2005-05-22 Paul Eggert > * data/lalr1.cc (yy::]b4_parser_class_name[::parse): Port > yesterday's yacc.c fix. BTW, was there a test case for this? It would be great to keep at least one test case covering all these issues, so that new skeletons could benefit from the experience of the others. From MAILER-DAEMON Wed Jul 13 08:00:31 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dsfue-0000kG-Bi for mharc-bison-patches@gnu.org; Wed, 13 Jul 2005 08:00:30 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dsfoa-0005vE-Np for bison-patches@gnu.org; Wed, 13 Jul 2005 07:54:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsfoO-0005mP-DU for bison-patches@gnu.org; Wed, 13 Jul 2005 07:54:01 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsfoL-0005b0-R0 for bison-patches@gnu.org; Wed, 13 Jul 2005 07:53:57 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1Dsflr-00048z-TL for bison-patches@gnu.org; Wed, 13 Jul 2005 07:51:24 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.50) id 1Dsfe2-0004B2-MH; Wed, 13 Jul 2005 13:43:18 +0200 To: Paul Eggert References: From: Akim Demaille Date: Wed, 13 Jul 2005 13:43:18 +0200 In-Reply-To: (Paul Eggert's message of "Sun, 22 May 2005 00:33:27 -0700") Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: porting yesterday's yacc.c patches to lalr1.cc X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2005 12:00:26 -0000 >>> "Paul" == Paul Eggert writes: > I installed this: > 2005-05-22 Paul Eggert > * data/lalr1.cc (yy::]b4_parser_class_name[::parse): Port > yesterday's yacc.c fix. Thanks! From MAILER-DAEMON Wed Jul 13 08:08:17 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dsg2C-0005z8-93 for mharc-bison-patches@gnu.org; Wed, 13 Jul 2005 08:08:16 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dsfzx-0005Hu-Jh for bison-patches@gnu.org; Wed, 13 Jul 2005 08:05:57 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dsfzj-00058O-CY for bison-patches@gnu.org; Wed, 13 Jul 2005 08:05:45 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsfzZ-0004bq-Uk for bison-patches@gnu.org; Wed, 13 Jul 2005 08:05:34 -0400 Received: from [163.5.254.26] (helo=kualalumpur.lrde.epita.fr) by monty-python.gnu.org with esmtp (TLS-1.0:RSA_AES_128_CBC_SHA:16) (Exim 4.34) id 1Dsfxe-0004s2-QZ for bison-patches@gnu.org; Wed, 13 Jul 2005 08:03:35 -0400 Received: from nostromo.lrde.epita.fr ([192.168.101.52] ident=akim) by kualalumpur.lrde.epita.fr with esmtp (Exim 4.50) id 1Dsfpp-0004Vw-Ji for bison-patches@gnu.org; Wed, 13 Jul 2005 13:55:29 +0200 To: Bison Patches From: Akim Demaille Date: Wed, 13 Jul 2005 13:55:29 +0200 Message-ID: User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: FYI: TODO X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2005 12:08:13 -0000 A quick update... Index: TODO =================================================================== RCS file: /cvsroot/bison/bison/TODO,v retrieving revision 1.92 diff -u -u -r1.92 TODO --- TODO 14 May 2005 06:49:46 -0000 1.92 +++ TODO 13 Jul 2005 11:55:07 -0000 @@ -12,18 +12,16 @@ find something clean (not like YYLSP_NEEDED...). -* URGENT: Documenting C++ output -Write a first documentation for C++ output. - - * Documentation Before releasing, make sure the documentation ("Understanding your parser") refers to the current `output' format. +* lalr1.cc +** vector +Move to using vector, drop stack.hh. -* GLR & C++ -Currently, the GLR parser cannot compile with a C++ compiler. - +** I18n +Catch up with yacc.c. * Report @@ -52,14 +50,7 @@ * Extensions -** %destructor -I think we should document it as experimental, and allow its use in -the next releases. But we also need to port it to GLR. What about -lalr1.cc? Well, read what Hans reported, maybe we don't want -%detructor. On the other hand, there is no reason not to provide it: -users can avoid its use. - -** $foo +** Labeling the symbols Have a look at the Lemon parser generator: instead of $1, $2 etc. they can name the values. This is much more pleasant. For instance: @@ -68,6 +59,21 @@ I love this. I have been bitten too often by the removal of the symbol, and forgetting to shift all the $n to $n-1. If you are unlucky, it compiles... + +But instead of using $a etc., we can use regular variables. And +instead of using (), I propose to use `:' (again). Paul suggests +supporting `->' in addition to `:' to separate LHS and RHS. In other +words: + + r:exp -> a:exp '+' b:exp { r = a + b; }; + +That requires an significant improvement of the grammar parser. Using +GLR would be nice. It also requires that Bison know the type of the +symbols (which will be useful for %include anyway). So we have some +time before... + +Note that there remains the problem of locations: `@r'? + ** $-1 We should find a means to provide an access to values deep in the From MAILER-DAEMON Wed Jul 13 19:41:27 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dsqqu-0007Ee-Ix for mharc-bison-patches@gnu.org; Wed, 13 Jul 2005 19:41:20 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dsqqo-0007Cf-P8 for bison-patches@gnu.org; Wed, 13 Jul 2005 19:41:15 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DslCi-0000ZF-SD for bison-patches@gnu.org; Wed, 13 Jul 2005 13:39:30 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DslCi-0000Yy-FA for bison-patches@gnu.org; Wed, 13 Jul 2005 13:39:28 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DslIl-0007My-NU for bison-patches@gnu.org; Wed, 13 Jul 2005 13:45:44 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6DHavL20458; Wed, 13 Jul 2005 10:36:57 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DslAE-0007N7-Gd; Wed, 13 Jul 2005 10:36:54 -0700 To: Akim Demaille References: From: Paul Eggert Date: Wed, 13 Jul 2005 10:36:54 -0700 In-Reply-To: (Akim Demaille's message of "Wed, 13 Jul 2005 13:44:09 +0200") Message-ID: <87oe966215.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: porting yesterday's yacc.c patches to lalr1.cc X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2005 23:41:18 -0000 Akim Demaille writes: > BTW, was there a test case for this? Not as far as I know; sorry. (But to be honest, I've forgotten the subject of the patch entirely.) From MAILER-DAEMON Wed Jul 13 19:48:37 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DsqwM-0000kf-7L for mharc-bison-patches@gnu.org; Wed, 13 Jul 2005 19:46:58 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dsqtq-0008Iy-J7 for bison-patches@gnu.org; Wed, 13 Jul 2005 19:44:23 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DsmKQ-0006oT-S5 for bison-patches@gnu.org; Wed, 13 Jul 2005 14:51:31 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DsmBn-00018x-NN for bison-patches@gnu.org; Wed, 13 Jul 2005 14:42:35 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DsluF-0001S8-SP for bison-patches@gnu.org; Wed, 13 Jul 2005 14:24:28 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6DIGFL23879; Wed, 13 Jul 2005 11:16:16 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DslmG-0007TC-CQ; Wed, 13 Jul 2005 11:16:12 -0700 To: Bruno Haible References: <87vf3fegkj.fsf@penguin.cs.ucla.edu> <200507131344.03004.bruno@clisp.org> From: Paul Eggert Date: Wed, 13 Jul 2005 11:16:12 -0700 In-Reply-To: <200507131344.03004.bruno@clisp.org> (Bruno Haible's message of "Wed, 13 Jul 2005 13:44:03 +0200") Message-ID: <87eka2607n.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: Bison i18n patches installed X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Jul 2005 23:46:50 -0000 Bruno Haible writes: > - You refer to the glibc documentation where I referred to ABOUT-NLS. > ABOUT-NLS is platform independent. Is your problem with ABOUT-NLS that > it is not installed as an info file? Yes; I want a reference that readers can easily follow, since I'm assuming they're reading info (or a web page, or a PDF document, or whatever). If there's a better such reference than the glibc manual please let me now. > - src/main.c uses > bindtextdomain ("bison-runtime", LOCALEDIR); > where the doc says that it should use > bindtextdomain ("bison-runtime", BISON_LOCALEDIR); > I assume this is because the bison package is distributed with a parser > made by itself, not the previously installed version of bison? Yes, that's it. I always bootstrap the parser with itself before a release. > - * src/getarg.s (PRINT_LOCALEDIR_OPTION): ... > should be src/getarg.c Thanks; I've fixed that. > - In runtime-po/ it would make sense to save the diff between the normal > po/Makefile.in.in and this one, and enhance the bootstrap script to > apply these diffs. This should make the migration to gettext-0.15 etc. > smoother, without introducing inconsistencies (i.e. without risking > use of a 0.15 gettext.m4 with a 0.14.5 Makefile.in.in). I've been thinking about that too, but I have a more radical proposal (A): simply revert to the standard Makefile.in.in (so that we don't have to maintain any difference), and place the old translation strings, whatever they are, in some file maintained by hand. A problem with the current approach is that translation strings survive even when they shouldn't. For example, if I misspell a diagnostic, the misspelling will accumulate into the .pot file even though I correct the misspelling before the next official release. This problem is already starting to happen, because I see that the formats in the current diagnostics aren't quite right for 64-bit machines (once we fix some other deficiencies), and I'd like to fix this before Bison 2.1 comes out. Perhaps a better solution would be (B): maintain a stable of old .pot files from established releases (bison-2.1.pot whenever Bison 2.1 comes out, etc.), and automatically include all the strings that each of these old .pot files contain. This stable could be gotten from CVS, so we wouldn't have to maintain it by hand. All we would have to maintain is a list of old release numbers. To help implement this, can a .pot file be in POTFILES.in? That is, would it work if runtime-po/POTFILES.in looked like this? data/yacc.c runtime-po/bison-2.1.pot runtime-po/bison-2.2.pot If not, would it be reasonable to modify gettext to support this? (A) and (B) are equivalent until after 2.1 is released, so perhaps I'll just implement their intersection for now. > - Maybe one could add some advice for distributors regarding the split > between the runtime package and the developer tools package? Like I > do in gettext-0.14.5/PACKAGING? Thanks for reminding me about that. I installed the following patch. Please let me know if you see any problems with it. I also plan to have some other i18n-related patches soon, since I've spotted some other problems with our recent changes. I'll CC: them to you if you don't mind. 2005-07-13 Paul Eggert * PACKAGING: New file, suggested by Bruno Haible and taken from similar wording in gettext's PACKAGING file. * NEWS: Mention PACKAGING. * Makefile.am (EXTRA_DIST): Add PACKAGING. Index: Makefile.am =================================================================== RCS file: /cvsroot/bison/bison/Makefile.am,v retrieving revision 1.36 diff -p -u -r1.36 Makefile.am --- Makefile.am 12 Jul 2005 23:28:54 -0000 1.36 +++ Makefile.am 13 Jul 2005 18:12:04 -0000 @@ -24,7 +24,8 @@ SUBDIRS = config po runtime-po lib data aclocaldir = @aclocaldir@ aclocal_DATA = m4/bison-i18n.m4 -EXTRA_DIST = REFERENCES OChangeLog Makefile.maint GNUmakefile Makefile.cfg +EXTRA_DIST = GNUmakefile Makefile.cfg Makefile.maint \ + OChangeLog PACKAGING REFERENCES .PHONY: maintainer-check maintainer-check: Index: NEWS =================================================================== RCS file: /cvsroot/bison/bison/NEWS,v retrieving revision 1.117 diff -p -u -r1.117 NEWS --- NEWS 13 Jul 2005 17:35:34 -0000 1.117 +++ NEWS 13 Jul 2005 18:12:04 -0000 @@ -6,8 +6,9 @@ Changes in the next version (not yet rel * Bison-generated parsers now support the translation of diagnostics like "syntax error" into languages other than English. The default language is still English. For details, please see the new - Internationalization section of the Bison manual. Thanks to Bruno - Haible for this new feature. + Internationalization section of the Bison manual. Software + distributors should also see the new PACKAGING file. Thanks to + Bruno Haible for this new feature. The following change was also in version 2.0a, 2005-05-22: --- /dev/null 2005-06-27 15:40:05.000000000 -0700 +++ PACKAGING 2005-07-13 11:11:24.000000000 -0700 @@ -0,0 +1,56 @@ +Packaging hints for binary package distributors +=============================================== + +Although the source of the bison package comes as a single package, +in distributions of binary packages the installed files should +be split into two packages: + + bison-runtime + Contents: Runtime libraries and programs. + Audience: Anyone who wants to run internationalized programs + that contain Bison-generated parsers. + + bison + Contents: Tools and documentation for developers that use Bison. + Audience: Anyone who wants to develop programs that use parsers. + Dependencies: requires bison-runtime. + +The 'bison-runtime' binary package is much smaller than the 'bison' +binary package. It should be included in any distribution that +contains programs that use the diagnostics contained in +Bison-generated parsers, e.g., Gawk, GCC, Perl. + +If you want to install both packages at the same time, you simply do +at the toplevel directory: + + ./configure + make + make install + +After installation, the files + + $prefix/share/locale/*/LC_MESSAGES/bison-runtime.mo + +belong to the bison-runtime package; all other installed files belong +to in the bison package. + +----- + +Copyright (C) 2002, 2005 Free Software Foundation, Inc. + +This file is part of Bison, the GNU Compiler Compiler. + +Bison is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +Bison is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with autoconf; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. From MAILER-DAEMON Thu Jul 14 01:29:31 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DswHq-0004W2-O7 for mharc-bison-patches@gnu.org; Thu, 14 Jul 2005 01:29:30 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DswHo-0004UW-5M for bison-patches@gnu.org; Thu, 14 Jul 2005 01:29:28 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DswHJ-0004FH-F3 for bison-patches@gnu.org; Thu, 14 Jul 2005 01:29:06 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DswHD-00049p-Eu; Thu, 14 Jul 2005 01:28:51 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dsw7Z-00039T-GK; Thu, 14 Jul 2005 01:18:53 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6E5AML04154; Wed, 13 Jul 2005 22:10:22 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DsvzH-00047u-FN; Wed, 13 Jul 2005 22:10:19 -0700 To: Paul Hilfinger References: <200507090257.j692vit9009630@tully.CS.Berkeley.EDU> From: Paul Eggert Date: Wed, 13 Jul 2005 22:10:19 -0700 In-Reply-To: <200507090257.j692vit9009630@tully.CS.Berkeley.EDU> (Paul Hilfinger's message of "Fri, 08 Jul 2005 19:57:43 -0700") Message-ID: <87br56q8g4.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org, twlevo@xs4all.nl, bug-bison@gnu.org Subject: Re: bison valgrind X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Jul 2005 05:29:29 -0000 Paul Hilfinger writes in : > I request a second set of eyes take a look at the > suggested patch below, inspired by yacc.c, and tell me what you think. Akim and Frank both liked it, and I installed it. Thanks. And thanks to the 2nd and 3rd pairs of eyes, too. From MAILER-DAEMON Thu Jul 14 13:32:14 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dt7ZF-0003HG-Ej for mharc-bison-patches@gnu.org; Thu, 14 Jul 2005 13:32:13 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dt7ZC-0003Fu-Dq for bison-patches@gnu.org; Thu, 14 Jul 2005 13:32:10 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dt7ZB-0003FF-K0 for bison-patches@gnu.org; Thu, 14 Jul 2005 13:32:09 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dt7ZB-0003FC-HF for bison-patches@gnu.org; Thu, 14 Jul 2005 13:32:09 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dt7eY-0005L7-LI for bison-patches@gnu.org; Thu, 14 Jul 2005 13:37:42 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6EHTBL10150; Thu, 14 Jul 2005 10:29:11 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dt7WF-0000X7-Ej; Thu, 14 Jul 2005 10:29:07 -0700 To: twlevo@xs4all.nl References: <10875.80.126.59.26.1121335263.squirrel@80.126.59.26> From: Paul Eggert Date: Thu, 14 Jul 2005 10:29:07 -0700 In-Reply-To: <10875.80.126.59.26.1121335263.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Thu, 14 Jul 2005 20:01:03 +1000 (EST)") Message-ID: <87slyhcn4s.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: typo g++ X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Jul 2005 17:32:11 -0000 twlevo@xs4all.nl writes: > And Bison needs valgrind-2.4.0 or better. fixed. Older versions of valgrind work too, I think. As far as I have observed it's just a few intermediate valgrind versions that didn't work. I don't know which ones, unfortunately. Or perhaps it's an installation option for valgrind. > ./bootstrap is looking for > http://www.iro.umontreal.ca/translation/maint/bison-runtime/ > but that doesn't exists yet. We have to distribute bison-2.0b first, before we can notify the translators. In the meantime the bootstrap will still work, though. > looks like there is a typo in tests/Makefile.am > needed for `make maintainer-check' to use g++... > Now only `make maintainer-check' fails at these: > ## ------------------------ ## > ## Summary of the failures. ## > ## ------------------------ ## > Failed tests: > GNU Bison 2.0a test suite test groups: > > NUM: FILENAME:LINE TEST-GROUP-NAME > KEYWORDS > > 119: cxx-type.at:316 GLR: Resolve ambiguity, impure, no locations > 120: cxx-type.at:323 GLR: Resolve ambiguity, impure, locations > 121: cxx-type.at:329 GLR: Resolve ambiguity, pure, no locations > 122: cxx-type.at:336 GLR: Resolve ambiguity, pure, locations > 123: cxx-type.at:343 GLR: Merge conflicting parses, impure, no locations > 124: cxx-type.at:350 GLR: Merge conflicting parses, impure, locations > 125: cxx-type.at:357 GLR: Merge conflicting parses, pure, no locations > 126: cxx-type.at:363 GLR: Merge conflicting parses, pure, locations > 127: cxx-type.at:370 GLR: Verbose messages, resolve ambiguity, impure, > no locations > 129: glr-regression.at:117 Improper handling of embedded actions and > dollar(-N) in GLR parsers > 130: glr-regression.at:230 Improper merging of GLR delayed action sets Thanks for reporting that. I installed this fix: 2005-07-14 Paul Eggert Fix problems reported by twlevo@xs4all.nl. * tests/Makefile.am (maintainer-check-g++): Fix a stray $(GXX) that escaped the renaming of GXX to CXX. Remove bogus test for valgrind; valgrind is independent of g++. (maintainer-check-posix): Add _POSIX2_VERSION=200112, to check for compatibility with POSIX 1003.1-2001 (if running coreutils). * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Port to stricter C++. Use a destructor, so that we can expand the stack. Change YYSTYPE to char * so that we can free it. Cast result of malloc. Index: tests/Makefile.am =================================================================== RCS file: /cvsroot/bison/bison/tests/Makefile.am,v retrieving revision 1.37 diff -p -u -r1.37 Makefile.am --- tests/Makefile.am 14 May 2005 06:49:48 -0000 1.37 +++ tests/Makefile.am 14 Jul 2005 17:22:52 -0000 @@ -1,7 +1,9 @@ ## Process this file with automake to create Makefile.in. ## Makefile for Bison testsuite. -## Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + +## Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Free Software +## Foundation, Inc. ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by @@ -77,15 +79,11 @@ installcheck-local: # Be real mean with it. .PHONY: maintainer-check-g++ maintainer-check-g++: $(TESTSUITE) - if test -n "$(VALGRIND)"; then \ - $(TESTSUITE) CC='$(GXX)'; \ - else \ - true; \ - fi + $(TESTSUITE) CC='$(CXX)' .PHONY: maintainer-check-posix maintainer-check-posix: $(TESTSUITE) - $(TESTSUITE) POSIXLY_CORRECT=1 + $(TESTSUITE) POSIXLY_CORRECT=1 _POSIX2_VERSION=200112 .PHONY: maintainer-check-valgrind maintainer-check-valgrind: $(TESTSUITE) Index: tests/cxx-type.at =================================================================== RCS file: /cvsroot/bison/bison/tests/cxx-type.at,v retrieving revision 1.19 diff -p -u -r1.19 cxx-type.at --- tests/cxx-type.at 14 May 2005 06:49:48 -0000 1.19 +++ tests/cxx-type.at 14 Jul 2005 17:22:56 -0000 @@ -1,5 +1,5 @@ # Checking GLR Parsing. -*- Autotest -*- -# Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -34,7 +34,7 @@ $1 %{ #include - #define YYSTYPE char const * + #define YYSTYPE char * ]m4_bmatch([$2], [stmtMerge], [ static YYSTYPE stmtMerge (YYSTYPE x0, YYSTYPE x1);])[ #define YYINITDEPTH 10 @@ -65,6 +65,8 @@ $1 %glr-parser +%destructor { free ($$); } TYPENAME ID + %% prog : @@ -171,7 +173,7 @@ yylex (LEX_PARAMETERS) ungetc (c, stdin); buffer[i++] = 0; tok = isupper ((unsigned char) buffer[0]) ? TYPENAME : ID; - yylval = strcpy (malloc (i), buffer); + yylval = strcpy ((char *) malloc (i), buffer); } else { @@ -209,7 +211,7 @@ format (char const *form, ...) va_start (args, form); vsprintf (buffer, form, args); va_end (args); - return strcpy (malloc (strlen (buffer) + 1), buffer); + return strcpy ((char *) malloc (strlen (buffer) + 1), buffer); } ]] From MAILER-DAEMON Thu Jul 14 18:16:52 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DtC0h-0003sN-MX for mharc-bison-patches@gnu.org; Thu, 14 Jul 2005 18:16:51 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DtC0e-0003mN-NS for bison-patches@gnu.org; Thu, 14 Jul 2005 18:16:48 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DtC0d-0003lH-P2 for bison-patches@gnu.org; Thu, 14 Jul 2005 18:16:48 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DtBud-0008HP-22 for bison-patches@gnu.org; Thu, 14 Jul 2005 18:10:35 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DtBd4-0004zL-Gd for bison-patches@gnu.org; Thu, 14 Jul 2005 17:52:27 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6ELhhL27967; Thu, 14 Jul 2005 14:43:44 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DtBUa-0004GT-0Z; Thu, 14 Jul 2005 14:43:40 -0700 To: twlevo@xs4all.nl References: <16277.80.126.59.26.1121357273.squirrel@80.126.59.26> From: Paul Eggert Date: Thu, 14 Jul 2005 14:43:40 -0700 In-Reply-To: <16277.80.126.59.26.1121357273.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Thu, 14 Jul 2005 16:07:53 -0000 (GMT)") Message-ID: <87vf3daws3.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: 130. Improper merging of GLR delayed action sets (fix) X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Jul 2005 22:16:49 -0000 twlevo@xs4all.nl writes: > 130. Improper merging of GLR delayed action sets (glr-regression.at:230): > > file: tests/glr-regression.at (line 245) > > Seems to need forward declaration `int yylex (void);' > to fix a failure at `maintainer-check-g++' Thanks for reporting that. I installed this patch: 2005-07-14 Paul Eggert * tests/glr-regression.at (Improper merging of GLR delayed action sets): Declare yylex before using it. --- glr-regression.at.~1.6.~ 2005-05-21 22:12:23.000000000 -0700 +++ glr-regression.at 2005-07-14 14:40:35.000000000 -0700 @@ -239,6 +239,7 @@ AT_DATA_GRAMMAR([glr-regr3.y], static int MergeRule (int x0, int x1); static void yyerror(char const * s); +int yylex (void); #define RULE(x) (1 << (x)) From MAILER-DAEMON Thu Jul 14 19:26:09 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DtD5j-0002rT-2s for mharc-bison-patches@gnu.org; Thu, 14 Jul 2005 19:26:07 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DtD5Z-0002pA-DF for bison-patches@gnu.org; Thu, 14 Jul 2005 19:25:57 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DtD5V-0002oV-Jx for bison-patches@gnu.org; Thu, 14 Jul 2005 19:25:54 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DtD5S-0002mK-1G for bison-patches@gnu.org; Thu, 14 Jul 2005 19:25:50 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DtD5V-00021R-Gs for bison-patches@gnu.org; Thu, 14 Jul 2005 19:25:53 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6ENH8L04890; Thu, 14 Jul 2005 16:17:13 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DtCwy-0002k1-I2; Thu, 14 Jul 2005 16:17:04 -0700 To: twlevo@xs4all.nl References: <18710.80.126.59.26.1121365726.squirrel@80.126.59.26> From: Paul Eggert Date: Thu, 14 Jul 2005 16:17:04 -0700 In-Reply-To: <18710.80.126.59.26.1121365726.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Thu, 14 Jul 2005 18:28:46 -0000 (GMT)") Message-ID: <87br55asgf.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: typo g++ X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Jul 2005 23:25:59 -0000 twlevo@xs4all.nl writes: > After this patch still errors at `maintainer-check-g++' see below. Thanks for reporting those problems. I installed these additional patches. 2005-07-14 Paul Eggert Fix problems reported by twlevo@xs4all.nl. * data/glr.c (YYSTACKEXPANDABLE): Don't define if already defined. (yyuserMerge): Provide a default case if b4_mergers is empty. * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Define YYSTACKEXPANDABLE. * tests/glr-regression.at (Improper handling of embedded actions and dollar(-N) in GLR parsers): YYSTYPE is char *, not char const *, so that strcpy ($$, ...) works. Index: data/glr.c =================================================================== RCS file: /cvsroot/bison/bison/data/glr.c,v retrieving revision 1.98 diff -p -u -r1.98 glr.c --- data/glr.c 14 Jul 2005 05:08:03 -0000 1.98 +++ data/glr.c 14 Jul 2005 23:07:37 -0000 @@ -556,13 +556,14 @@ int yydebug; properly redirected to new data. */ #define YYHEADROOM 2 -#if (! defined (YYSTACKEXPANDABLE) \ - && (! defined (__cplusplus) \ - || (]b4_location_if([[defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \ - && ]])[defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))) -#define YYSTACKEXPANDABLE 1 -#else -#define YYSTACKEXPANDABLE 0 +#ifndef YYSTACKEXPANDABLE +# if (! defined (__cplusplus) \ + || (]b4_location_if([[defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \ + && ]])[defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)) +# define YYSTACKEXPANDABLE 1 +# else +# define YYSTACKEXPANDABLE 0 +# endif #endif #if YYERROR_VERBOSE @@ -812,6 +813,7 @@ yyuserMerge (int yyn, YYSTYPE* yy0, YYST switch (yyn) { b4_mergers + default: break; } } [ Index: tests/cxx-type.at =================================================================== RCS file: /cvsroot/bison/bison/tests/cxx-type.at,v retrieving revision 1.20 diff -p -u -r1.20 cxx-type.at --- tests/cxx-type.at 14 Jul 2005 17:27:01 -0000 1.20 +++ tests/cxx-type.at 14 Jul 2005 23:07:37 -0000 @@ -38,6 +38,7 @@ $1 ]m4_bmatch([$2], [stmtMerge], [ static YYSTYPE stmtMerge (YYSTYPE x0, YYSTYPE x1);])[ #define YYINITDEPTH 10 + #define YYSTACKEXPANDABLE 1 static char *format (char const *, ...); struct YYLTYPE; #if YYPURE Index: tests/glr-regression.at =================================================================== RCS file: /cvsroot/bison/bison/tests/glr-regression.at,v retrieving revision 1.7 diff -p -u -r1.7 glr-regression.at --- tests/glr-regression.at 14 Jul 2005 21:42:40 -0000 1.7 +++ tests/glr-regression.at 14 Jul 2005 23:07:37 -0000 @@ -121,7 +121,7 @@ AT_DATA_GRAMMAR([glr-regr2a.y], /* Reported by S. Eken */ %{ - #define YYSTYPE char const * + #define YYSTYPE char * #define yyfalse 0 #define yytrue 1 From MAILER-DAEMON Thu Jul 14 20:28:05 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DtE3g-0005XV-To for mharc-bison-patches@gnu.org; Thu, 14 Jul 2005 20:28:05 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DtE3R-0005Sa-Df for bison-patches@gnu.org; Thu, 14 Jul 2005 20:27:49 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DtE3K-0005PJ-T3 for bison-patches@gnu.org; Thu, 14 Jul 2005 20:27:44 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DtE3J-0005Bn-TC for bison-patches@gnu.org; Thu, 14 Jul 2005 20:27:41 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DtDjf-0004Kw-9M for bison-patches@gnu.org; Thu, 14 Jul 2005 20:07:23 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6ENwuL07246 for ; Thu, 14 Jul 2005 16:58:57 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DtDbR-000188-FN for bison-patches@gnu.org; Thu, 14 Jul 2005 16:58:53 -0700 To: bison-patches@gnu.org From: Paul Eggert Date: Thu, 14 Jul 2005 16:58:53 -0700 Message-ID: <87y8899bya.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: yet another fix to pacify C++ compilers in the test suite X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Jul 2005 00:27:52 -0000 I installed this: 2005-07-14 Paul Eggert * tests/glr-regression.at (Improper handling of embedded actions and dollar(-N) in GLR parsers): Add casts to pacify C++ compilers. --- glr-regression.at 14 Jul 2005 23:15:47 -0000 1.8 +++ glr-regression.at 14 Jul 2005 23:57:28 -0000 1.9 @@ -121,7 +121,7 @@ AT_DATA_GRAMMAR([glr-regr2a.y], /* Reported by S. Eken */ %{ - #define YYSTYPE char * + #define YYSTYPE char const * #define yyfalse 0 #define yytrue 1 @@ -156,10 +156,11 @@ var_list: { $$ = $1; } | var ',' var_list { - $$ = malloc (strlen ($1) + 1 + strlen ($3) + 1); - strcpy ($$, $1); - strcat ($$, ","); - strcat ($$, $3); + char *s = (char *) malloc (strlen ($1) + 1 + strlen ($3) + 1); + strcpy (s, $1); + strcat (s, ","); + strcat (s, $3); + $$ = s; } ; @@ -174,6 +175,7 @@ int yylex (void) { char buf[50]; + char *s; switch (fscanf (yyin, " %1[a-z,]", buf)) { case 1: return buf[0]; @@ -186,8 +188,9 @@ yylex (void) abort (); if (sizeof buf - 1 <= strlen (buf)) abort (); - yylval = malloc (strlen (buf) + 1); - strcpy (yylval, buf); + s = (char *) malloc (strlen (buf) + 1); + strcpy (s, buf); + yylval = s; return 'V'; } From MAILER-DAEMON Sun Jul 17 03:56:16 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Du40S-00075l-Gl for mharc-bison-patches@gnu.org; Sun, 17 Jul 2005 03:56:13 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Du3zq-00071v-Nf for bison-patches@gnu.org; Sun, 17 Jul 2005 03:55:36 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Du3zk-00070J-3Z for bison-patches@gnu.org; Sun, 17 Jul 2005 03:55:29 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Du3zh-0006to-Tl; Sun, 17 Jul 2005 03:55:25 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Du3q1-0001AJ-KT; Sun, 17 Jul 2005 03:45:25 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6H7aJL15915; Sun, 17 Jul 2005 00:36:19 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Du3h9-0004di-FU; Sun, 17 Jul 2005 00:36:15 -0700 To: twlevo@xs4all.nl References: <23586.80.126.59.26.1121524593.squirrel@80.126.59.26> From: Paul Eggert Date: Sun, 17 Jul 2005 00:36:15 -0700 In-Reply-To: <23586.80.126.59.26.1121524593.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Sat, 16 Jul 2005 14:36:33 -0000 (GMT)") Message-ID: <87y885evf4.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: data/glr.c yyinitGLRStack() (fix) X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 17 Jul 2005 07:55:41 -0000 twlevo@xs4all.nl writes: > static yybool > yyinitGLRStack (yyGLRStack* yystack, size_t yysize) > { > yystack->yyerrflag = 0; > yystack->yyerrState = 0; > yynerrs = 0; > yystack->yynextFree = 0; <------ inits added > yystack->yyitems = 0; <------ > yystack->yyspaceLeft = 0; <------ > yystack->yysplitPoint = NULL; <------ > yystack->yylastDeleted = NULL; <------ Hmm, I don't see why these initializations are needed; the values aren't used if yyinitGLRStack returns false. > yystack->yynextFree = yystack->yyitems = > (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystack->yynextFree[0]); > if (! yystack->yyitems) > return yyfalse; <------ check added Nor do I see why this check is needed; yyinitGLRStack returns false eventually anyway. > static void > yyfreeGLRStack (yyGLRStack* yystack) > { > if (yystack->yyitems) <------ yystack->yyitems can be 0 > at malloc() failure > YYFREE (yystack->yyitems); YYFREE is supposed to behave like free, and free (NULL) is a no-op. (glr.c can assume C89 semantics.) > static void yyfreeStateSet (yyGLRStateSet* yyset) > { > YYFREE (yyset->yystates); <-------- this Similarly here. > If simulating malloc() failure doing `return yyfalse;' then segfault: > > 48. actions.at:529: testing ... > actions.at:529: bison -o input.c input.y > actions.at:529: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS > stderr: > stdout: > actions.at:529: $PREPARSER ./input '(x)' > --- /dev/null 2004-10-02 10:38:03.000000000 +0200 > +++ /home/gcc/bison/tests/testsuite.dir/at-stderr 2005-07-16 > 15:41:50.725320192 +0200 > @@ -0,0 +1 @@ > +./testsuite: line 904: 8658 Segmentation fault $PREPARSER ./input Hmm, I don't get a segfault. I assume you're using the latest CVS version? Which call to YYMALLOC, exactly, did you have return NULL? (I did the first one.) However, I did notice a problem in that area, though: yyparse was returning 0 when the initial YYMMALLOC failed. I installed this patch to fix things. Does it fix your segmentation fault as well? If not, can you give a backtrace? 2005-07-17 Paul Eggert * data/glr.c (yyparse): Don't assume that the initial calls to YYMALLOC succeed; in that case, yyparse incorrectly returned 0. Print a stack-overflow message and fail instead. Initialize the line-number information before creating the stack, so that the stack-overflow message can report line zero safely. --- glr.c.~1.99.~ 2005-07-14 16:01:32.000000000 -0700 +++ glr.c 2005-07-17 00:24:43.000000000 -0700 @@ -1967,14 +1967,6 @@ yyrecoverSyntaxError (yyGLRStack* yystac YYDPRINTF ((stderr, "Starting parse\n")); yytoken = YYEMPTY; - - if (setjmp (yystack.yyexception_buffer) != 0) - goto yyDone; - - if (! yyinitGLRStack (&yystack, YYINITDEPTH)) - goto yyDone; - yystack.yytokenp = &yytoken; - yylval = yyval_default; ]b4_location_if([ #if YYLTYPE_IS_TRIVIAL @@ -1992,6 +1984,11 @@ m4_popdef([b4_at_dollar])dnl /* Line __line__ of glr.c. */ b4_syncline([@oline@], [@ofile@])])dnl [ + if (setjmp (yystack.yyexception_buffer) != 0) + goto yyDone; + if (! yyinitGLRStack (&yystack, YYINITDEPTH)) + yyStackOverflow (&yystack]b4_lpure_args[); + yystack.yytokenp = &yytoken; yyglrShift (&yystack, 0, 0, 0, yylval, &yylloc]b4_user_args[); yyposn = 0; From MAILER-DAEMON Mon Jul 18 02:25:01 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DuP3j-00019u-QF for mharc-bison-patches@gnu.org; Mon, 18 Jul 2005 02:25:00 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DuP3W-00016q-QP for bison-patches@gnu.org; Mon, 18 Jul 2005 02:24:53 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DuP3T-00015J-P1 for bison-patches@gnu.org; Mon, 18 Jul 2005 02:24:44 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DuP3T-0000uD-0F for bison-patches@gnu.org; Mon, 18 Jul 2005 02:24:43 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DuP4r-0006ZI-LN for bison-patches@gnu.org; Mon, 18 Jul 2005 02:26:09 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6I6GbL12464; Sun, 17 Jul 2005 23:16:38 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DuOvZ-0000qT-MV; Sun, 17 Jul 2005 23:16:33 -0700 To: twlevo@xs4all.nl References: <9172.80.126.59.26.1121589248.squirrel@80.126.59.26> From: Paul Eggert Date: Sun, 17 Jul 2005 23:16:33 -0700 In-Reply-To: <9172.80.126.59.26.1121589248.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Sun, 17 Jul 2005 18:34:08 +1000 (EST)") Message-ID: <873bqcy6ym.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: 99 100 Exploding the Stack Size exit status X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2005 06:24:56 -0000 twlevo@xs4all.nl writes: > 99 100 Exploding the Stack Size exit status > > These tests: > 99: torture.at:441 Exploding the Stack Size with Alloca > 100: torture.at:466 Exploding the Stack Size with Malloc > > Test 99 and 100 return 1 instead of 2 when simulating malloc failure. > Test 96 and 97 return 2 and there never happen segfaults in yacc.c. > > doing this in data/yacc.c: > > { > short int *yyss1 = yyss; > union yyalloc *yyptr = (union yyalloc *) 0; /* YYSTACK_ALLOC > (YYSTACK_BYTES (yystacksize)); */ > // if (! yyptr) > goto yyoverflowlab; > YYSTACK_RELOCATE (yyss); > YYSTACK_RELOCATE (yyvs); > > Should the exit status not be 2 in test 99 and 100? Yes, it should. > Solution is to remove the exit(1); in tests/torture.at:407 Thanks. I found some other instances of the problem as well. I installed the patch enclosed below. > [fully tested the yacc.c and it never segfaults at malloc() failures] > > [these testcases are not there: multiple glr parsers in one program, > multiple yacc parsers in one program, multiple lexers+glr parsers > in one program, multiple lexers+yacc parsers in one program] Yes, these would be nice improvements to the test suite. 2005-07-17 Paul Eggert * tests/conflicts.at (%nonassoc and eof): Don't exit with status 1 on syntax error; just let yyparse do its thing. * tests/glr-regression.at (Badly Collapsed GLR States): Likewise. * tests/torture.at (AT_DATA_STACK_TORTURE): Likewise. (Exploding the Stack Size with Alloca): (Exploding the Stack Size with Malloc): Expect exit status 2, not 1, since the parser is supposed to blow its stack. Problem reported by twlevo@xs4all.nl. Index: tests/conflicts.at =================================================================== RCS file: /cvsroot/bison/bison/tests/conflicts.at,v retrieving revision 1.29 diff -p -u -r1.29 conflicts.at --- tests/conflicts.at 14 May 2005 06:49:48 -0000 1.29 +++ tests/conflicts.at 18 Jul 2005 06:06:20 -0000 @@ -62,7 +62,6 @@ static void yyerror (const char *msg) { fprintf (stderr, "%s\n", msg); - exit (1); } /* The current argument. */ Index: tests/glr-regression.at =================================================================== RCS file: /cvsroot/bison/bison/tests/glr-regression.at,v retrieving revision 1.9 diff -p -u -r1.9 glr-regression.at --- tests/glr-regression.at 14 Jul 2005 23:57:28 -0000 1.9 +++ tests/glr-regression.at 18 Jul 2005 06:06:20 -0000 @@ -74,7 +74,6 @@ int yyerror (char const *msg) { fprintf (stderr, "%s\n", msg); - exit (4); } Index: tests/torture.at =================================================================== RCS file: /cvsroot/bison/bison/tests/torture.at,v retrieving revision 1.26 diff -p -u -r1.26 torture.at --- tests/torture.at 14 May 2005 06:49:48 -0000 1.26 +++ tests/torture.at 18 Jul 2005 06:06:21 -0000 @@ -404,7 +404,6 @@ static void yyerror (const char *msg) { fprintf (stderr, "%s\n", msg); - exit (1); } /* There are YYLVAL_MAX of WAIT_FOR_EOFs. */ @@ -452,7 +451,7 @@ AT_PARSER_CHECK([./input 20], 0, [], [ig AT_PARSER_CHECK([./input 900], 0, [], [ignore]) # Fails: beyond the limit of 10,000 (which we don't reach anyway since we # multiply by two starting at 200 => 5120 is the last possible). -AT_PARSER_CHECK([./input 10000], 1, [], [ignore]) +AT_PARSER_CHECK([./input 10000], 2, [], [ignore]) AT_CLEANUP @@ -473,6 +472,6 @@ AT_PARSER_CHECK([./input 20], 0, [], [ig AT_PARSER_CHECK([./input 900], 0, [], [ignore]) # Fails: beyond the limit of 10,000 (which we don't reach anyway since we # multiply by two starting at 200 => 5120 is the possible). -AT_PARSER_CHECK([./input 10000], 1, [], [ignore]) +AT_PARSER_CHECK([./input 10000], 2, [], [ignore]) AT_CLEANUP From MAILER-DAEMON Mon Jul 18 07:52:16 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DuUAR-00025O-VJ for mharc-bison-patches@gnu.org; Mon, 18 Jul 2005 07:52:16 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DuUAO-00024D-IM for bison-patches@gnu.org; Mon, 18 Jul 2005 07:52:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DuUAL-00022y-LM for bison-patches@gnu.org; Mon, 18 Jul 2005 07:52:10 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DuUAL-00022o-Im for bison-patches@gnu.org; Mon, 18 Jul 2005 07:52:09 -0400 Received: from [81.80.162.195] (helo=ftp.ilog.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DuUGr-0002Ur-N9 for bison-patches@gnu.org; Mon, 18 Jul 2005 07:58:54 -0400 Received: from laposte.ilog.fr (cerbere-qfe0 [81.80.162.193]) by ftp.ilog.fr (8.13.4/8.13.3) with ESMTP id j6IBnb5j009990; Mon, 18 Jul 2005 13:49:37 +0200 (MET DST) Received: from honolulu.ilog.fr ([172.16.15.122]) by laposte.ilog.fr (8.13.1/8.13.1) with ESMTP id j6IBnVhb013463; Mon, 18 Jul 2005 13:49:31 +0200 (MET DST) Received: from localhost (localhost [127.0.0.1]) by honolulu.ilog.fr (Postfix) with ESMTP id 01B383BD93; Mon, 18 Jul 2005 11:46:40 +0000 (UTC) From: Bruno Haible To: Paul Eggert Date: Mon, 18 Jul 2005 13:46:40 +0200 User-Agent: KMail/1.5 References: <87vf3fegkj.fsf@penguin.cs.ucla.edu> <200507131344.03004.bruno@clisp.org> <87eka2607n.fsf@penguin.cs.ucla.edu> In-Reply-To: <87eka2607n.fsf@penguin.cs.ucla.edu> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200507181346.40108.bruno@clisp.org> Cc: bison-patches@gnu.org Subject: Re: Bison i18n patches installed X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2005 11:52:13 -0000 Paul Eggert wrote: > > - You refer to the glibc documentation where I referred to ABOUT-NLS. > > ABOUT-NLS is platform independent. Is your problem with ABOUT-NLS that > > it is not installed as an info file? > > Yes; I want a reference that readers can easily follow, since I'm > assuming they're reading info (or a web page, or a PDF document, or > whatever). If there's a better such reference than the glibc manual > please let me now. Yes, could you please add a reference to node 'Users' in gettext.info as primary reference? It doesn't yet contain the complete info from ABOUT-NLS, but I'm adding it before gettext-0.15. You can leave glibc as secondary reference, I don't mind. > > - In runtime-po/ it would make sense to save the diff between the normal > > po/Makefile.in.in and this one, and enhance the bootstrap script to > > apply these diffs. This should make the migration to gettext-0.15 etc. > > smoother, without introducing inconsistencies (i.e. without risking > > use of a 0.15 gettext.m4 with a 0.14.5 Makefile.in.in). > > I've been thinking about that too, but I have a more radical proposal > (A): simply revert to the standard Makefile.in.in (so that we don't > have to maintain any difference), and place the old translation > strings, whatever they are, in some file maintained by hand. > > A problem with the current approach is that translation strings > survive even when they shouldn't. For example, if I misspell a > diagnostic, the misspelling will accumulate into the .pot file even > though I correct the misspelling before the next official release. > This problem is already starting to happen, because I see that the > formats in the current diagnostics aren't quite right for 64-bit > machines (once we fix some other deficiencies), and I'd like to fix > this before Bison 2.1 comes out. You're right. I didn't think at that. Actually the way I maintain archive.tar.gz in gettext in similar, with a special modification done by hand before "make dist". > To help implement this, can a .pot file be in POTFILES.in? That is, > would it work if runtime-po/POTFILES.in looked like this? > > data/yacc.c > runtime-po/bison-2.1.pot > runtime-po/bison-2.2.pot Yes, absolutely, this will work. You just need to add runtime-po/bison-2.?.pot to the toplevel Makefile.am's EXTRA_DIST. Actually, among runtime-po/bison-2.1.pot and runtime-po/bison-2.2.pot you only need the last one. (Because it's supposed to contain all messages from the earlier releases.) > I installed the following patch. > Please let me know if you see any problems with it. > 2005-07-13 Paul Eggert > > * PACKAGING: New file, suggested by Bruno Haible and taken from > similar wording in gettext's PACKAGING file. > * NEWS: Mention PACKAGING. > * Makefile.am (EXTRA_DIST): Add PACKAGING. Looks all fine to me, except for a typo in PACKAGING: "to in the bison package". Bruno From MAILER-DAEMON Mon Jul 18 14:35:11 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DuaSN-0001Kd-F7 for mharc-bison-patches@gnu.org; Mon, 18 Jul 2005 14:35:11 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DuaLQ-00084d-BX for bison-patches@gnu.org; Mon, 18 Jul 2005 14:28:00 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DuaL1-0007tu-VQ for bison-patches@gnu.org; Mon, 18 Jul 2005 14:27:49 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DuaKz-0007my-Hd for bison-patches@gnu.org; Mon, 18 Jul 2005 14:27:34 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DuaGp-0006H5-Bc for bison-patches@gnu.org; Mon, 18 Jul 2005 14:23:15 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6IIDVL24500; Mon, 18 Jul 2005 11:13:32 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dua7L-0004Wo-0s; Mon, 18 Jul 2005 11:13:27 -0700 To: twlevo@xs4all.nl References: <8225.80.126.59.26.1121597744.squirrel@80.126.59.26> From: Paul Eggert Date: Mon, 18 Jul 2005 11:13:27 -0700 In-Reply-To: <8225.80.126.59.26.1121597744.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Sun, 17 Jul 2005 20:55:44 +1000 (EST)") Message-ID: <878y04geyg.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: Re_ data_glr.c yyinitGLRStack() (fix) X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2005 18:35:09 -0000 twlevo@xs4all.nl writes: > Re_ data_glr.c yyinitGLRStack() (fix) > > When doing this in glr.c it appears the > ` yyStackOverflow (&yystack]b4_lpure_args[); ' > line is perfectly fine but testsuite.log does > not show the yyparse() status expected to be 2. > > fix? Thanks for reporting that. I installed this fix. By the way, it appears to me that there can be memory leaks in the GLR parser if the stack overflows or the user invokes YYABORT, because yyfreeGLRStack does not invoke yydestruct on the items remaining in the parser stack. Paul Hilfinger, does this diagnosis make sense to you? 2005-07-18 Paul Eggert Improve tests for stack overflow in GLR parser. Problem reported by twlevo@xs4all.nl. * data/glr.c (struct yyGLRStack): Remove yyerrflag member. All uses removed. (yyStackOverflow): Just longjmp, but with value 2 so that caller can handle the problem. (YYCHK1): Use goto (a la yacc.c) rather than setting a flag. (yyparse): New local variable yyresult to record the result. Use result of setjmp to set it, rather than storing itinto struct. (yyDone): Remove label. (yyacceptlab, yyabortlab, yyoverflowlab, yyreturn): New labels, to mimic yacc.c. Do not discard lookahead if it's EOF (possible if YYABORT is used). * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Exit with yyparse status; put status > 1 into diagnostic. Check that status==2 works. * tests/calc.at, tests/cxx-type.at, tests/glr-regression.at: Use exit status 3 for failure to open (which shouldn't happen). Index: data/glr.c =================================================================== RCS file: /cvsroot/bison/bison/data/glr.c,v retrieving revision 1.100 diff -p -u -r1.100 glr.c --- data/glr.c 17 Jul 2005 07:30:38 -0000 1.100 +++ data/glr.c 18 Jul 2005 18:00:23 -0000 @@ -657,7 +657,6 @@ union yyGLRStackItem { }; struct yyGLRStack { - int yyerrflag; int yyerrState; ]b4_location_if([[ /* To compute the location of the error token. */ yyGLRStackItem yyerror_range[3];]])[ @@ -681,7 +680,6 @@ static void yyexpandGLRStack (yyGLRStack static void yyFail (yyGLRStack* yystack]b4_pure_formals[, const char* yymsg) { - yystack->yyerrflag = 1; if (yymsg != NULL) yyerror (]b4_yyerror_args[yymsg); longjmp (yystack->yyexception_buffer, 1); @@ -690,7 +688,7 @@ yyFail (yyGLRStack* yystack]b4_pure_form static void yyStackOverflow (yyGLRStack* yystack]b4_pure_formals[) { - yyFail (yystack]b4_pure_args[, "parser stack overflow"); + longjmp (yystack->yyexception_buffer, 2); } #if YYDEBUG || YYERROR_VERBOSE @@ -957,7 +955,6 @@ static void yyfreeStateSet (yyGLRStateSe static yybool yyinitGLRStack (yyGLRStack* yystack, size_t yysize) { - yystack->yyerrflag = 0; yystack->yyerrState = 0; yynerrs = 0; yystack->yyspaceLeft = yysize; @@ -1933,11 +1930,9 @@ yyrecoverSyntaxError (yyGLRStack* yystac default: \ break; \ case yyabort: \ - yystack.yyerrflag = 1; \ - goto yyDone; \ + goto yyabortlab; \ case yyaccept: \ - yystack.yyerrflag = 0; \ - goto yyDone; \ + goto yyacceptlab; \ case yyerr: \ goto yyuser_error; \ } \ @@ -1950,6 +1945,7 @@ yyrecoverSyntaxError (yyGLRStack* yystac ]b4_c_ansi_function_def([yyparse], [int], b4_parse_param)[ { + int yyresult; yySymbol yytoken; yyGLRStack yystack; size_t yyposn; @@ -1984,10 +1980,13 @@ m4_popdef([b4_at_dollar])dnl /* Line __line__ of glr.c. */ b4_syncline([@oline@], [@ofile@])])dnl [ - if (setjmp (yystack.yyexception_buffer) != 0) - goto yyDone; if (! yyinitGLRStack (&yystack, YYINITDEPTH)) - yyStackOverflow (&yystack]b4_lpure_args[); + goto yyoverflowlab; + switch (setjmp (yystack.yyexception_buffer)) + { + case 1: goto yyabortlab; + case 2: goto yyoverflowlab; + } yystack.yytokenp = &yytoken; yyglrShift (&yystack, 0, 0, 0, yylval, &yylloc]b4_user_args[); yyposn = 0; @@ -2007,7 +2006,7 @@ b4_syncline([@oline@], [@ofile@])])dnl yyStateNum yystate = yystack.yytops.yystates[0]->yylrState; YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) - goto yyDone; + goto yyacceptlab; if (yyisDefaultedState (yystate)) { yyrule = yydefaultAction (yystate); @@ -2089,14 +2088,27 @@ b4_syncline([@oline@], [@ofile@])])dnl yyrecoverSyntaxError (&yystack, yylvalp, yyllocp]b4_user_args[); yyposn = yystack.yytops.yystates[0]->yyposn; } - yyDone: - /* On YYABORT, free the lookahead. */ - if (yystack.yyerrflag == 1 && yytoken != YYEMPTY) + + yyacceptlab: + yyresult = 0; + goto yyreturn; + + yyabortlab: + yyresult = 1; + goto yyreturn; + + yyoverflowlab: + yyerror (]b4_lyyerror_args["parser stack overflow"); + yyresult = 2; + /* Fall through. */ + + yyreturn: + if (yytoken != YYEOF && yytoken != YYEMPTY) yydestruct ("Error: discarding lookahead", yytoken, yylvalp]b4_location_if([, yyllocp])[); yyfreeGLRStack (&yystack); - return yystack.yyerrflag; + return yyresult; } /* DEBUGGING ONLY */ Index: tests/actions.at =================================================================== RCS file: /cvsroot/bison/bison/tests/actions.at,v retrieving revision 1.49 diff -p -u -r1.49 actions.at --- tests/actions.at 14 May 2005 06:49:48 -0000 1.49 +++ tests/actions.at 18 Jul 2005 18:00:23 -0000 @@ -337,16 +337,18 @@ yyerror (const char *msg) int main (int argc, const char *argv[]) { + int status; yydebug = !!getenv ("YYDEBUG"); assert (argc == 2); yysource = argv[1]; - if (yyparse ()) + status = yyparse (); + switch (status) { - printf ("Parsing FAILED.\n"); - exit (1); + case 0: printf ("Successful parse.\n"); break; + case 1: printf ("Parsing FAILED.\n"); break; + default: printf ("Parsing FAILED (status %d).\n", status); break; } - printf ("Successful parse.\n"); - return 0; + return status; } ]]) @@ -450,7 +452,7 @@ Parsing FAILED. # Upon stack overflow, all symbols on the stack should be destroyed. # Only check for yacc.c. AT_YACC_IF([ -AT_PARSER_CHECK([./input '(x)(x)(x)(x)(x)(x)(x)'], 1, +AT_PARSER_CHECK([./input '(x)(x)(x)(x)(x)(x)(x)'], 2, [[sending: '(' (0@0-9) sending: 'x' (1@10-19) thing (1@10-19): 'x' (1@10-19) @@ -493,7 +495,7 @@ Freeing nterm line (9@90-119) Freeing nterm line (6@60-89) Freeing nterm line (3@30-59) Freeing nterm line (0@0-29) -Parsing FAILED. +Parsing FAILED (status 2). ]]) ]) Index: tests/calc.at =================================================================== RCS file: /cvsroot/bison/bison/tests/calc.at,v retrieving revision 1.74 diff -p -u -r1.74 calc.at --- tests/calc.at 22 May 2005 05:20:01 -0000 1.74 +++ tests/calc.at 18 Jul 2005 18:00:23 -0000 @@ -288,7 +288,7 @@ power (int base, int exponent) { int res = 1; if (exponent < 0) - exit (1); + exit (3); for (/* Niente */; exponent; --exponent) res *= base; return res; @@ -315,7 +315,7 @@ main (int argc, const char **argv) if (!yyin) { perror (argv[1]); - exit (1); + return 3; } ]AT_LALR1_CC_IF([], [m4_bmatch([$4], [%debug], Index: tests/cxx-type.at =================================================================== RCS file: /cvsroot/bison/bison/tests/cxx-type.at,v retrieving revision 1.21 diff -p -u -r1.21 cxx-type.at --- tests/cxx-type.at 14 Jul 2005 23:15:47 -0000 1.21 +++ tests/cxx-type.at 18 Jul 2005 18:00:23 -0000 @@ -115,8 +115,8 @@ main (int argc, char **argv) if (argc != 2) abort (); if (!freopen (argv[1], "r", stdin)) - abort (); - exit (yyparse ()); + return 3; + return yyparse (); } int Index: tests/glr-regression.at =================================================================== RCS file: /cvsroot/bison/bison/tests/glr-regression.at,v retrieving revision 1.10 diff -p -u -r1.10 glr-regression.at --- tests/glr-regression.at 18 Jul 2005 06:14:16 -0000 1.10 +++ tests/glr-regression.at 18 Jul 2005 18:00:23 -0000 @@ -202,7 +202,7 @@ int main (int argc, char **argv) { yyin = stdin; - if (argc == 2 && !(yyin = fopen (argv[1], "r"))) return 1; + if (argc == 2 && !(yyin = fopen (argv[1], "r"))) return 3; return yyparse (); } ]]) @@ -312,7 +312,7 @@ int yylex (void) int main(int argc, char* argv[]) { yyin = stdin; - if (argc == 2 && !(yyin = fopen (argv[1], "r"))) return 1; + if (argc == 2 && !(yyin = fopen (argv[1], "r"))) return 3; return yyparse (); } ]]) From MAILER-DAEMON Mon Jul 18 14:55:50 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DuamJ-0000Jj-ET for mharc-bison-patches@gnu.org; Mon, 18 Jul 2005 14:55:47 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Duam4-0000Bw-Ew for bison-patches@gnu.org; Mon, 18 Jul 2005 14:55:32 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Duam1-0000Ar-4H for bison-patches@gnu.org; Mon, 18 Jul 2005 14:55:29 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Duam0-00006z-Q7 for bison-patches@gnu.org; Mon, 18 Jul 2005 14:55:28 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Duahd-0008G7-1U for bison-patches@gnu.org; Mon, 18 Jul 2005 14:50:57 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6IIfTL27880; Mon, 18 Jul 2005 11:41:29 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DuaYO-0001NH-JY; Mon, 18 Jul 2005 11:41:24 -0700 To: twlevo@xs4all.nl References: <21540.80.126.59.26.1121701874.squirrel@80.126.59.26> From: Paul Eggert Date: Mon, 18 Jul 2005 11:41:24 -0700 In-Reply-To: <21540.80.126.59.26.1121701874.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Mon, 18 Jul 2005 15:51:14 -0000 (GMT)") Message-ID: <871x5wgdnv.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: typo's in tests/testfiles.at X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2005 18:55:38 -0000 twlevo@xs4all.nl writes: > typo in glr-regression.at line 186 let it return 0 (EOF) at (fscanf > (yyin, "%49s", buf) != 1) or (sizeof buf - 1 <= strlen (buf)) > typo in cxx-type.at line 195 should it be `void yyerror()' ? Thanks for catching those. I installed the patch enclosed below. > typo in calc.at line 291 let it return 77 at (exponent<0) error > typo in calc.at line 318 let it return 77 at (!yyin) error > typo in calc.at line 325 let it return 77 at (global_result != result) > typo in glr-regression.at line 205 let it return 77 at fopen() error > typo in glr-regression.at line 315 let it return 77 at fopen() error > typo in cxx-type.at line 122 let it return 77 at (argc != 2) or (!freopen > (argv[1], "r", stdin)) > typo in torture.at line 425 let it return 77 at (argc != 2) error > line 325: these abort() ? why not just return yyparse() status or 77 ? None of these should happen in a test run; if they do happen, we should report an error instead of skipping the test. > typo in cxx-type.at line 168 let it return 0 (EOF) at (i == sizeof buffer > - 1) That means the input cannot be handled by the lexer; it's better to report an error. (It shouldn't happen in any of our test cases.) > typo in actions.at line 344 let it return yyparse() status 1 or 2 > malloc() failure simulation in yyinitGLRStack() in glr.c still returns > yyparse() 1 instead of 2 > in calc.at let it return something else then 0/1/2 > and exit(77) is used in other places in the at files. These should be fixed by the patch I just emailed you previously. > _ There was (once) some gcc issue with `!!getenv()' Those problems should be absent now that the tests always include before invoking getenv. Perhaps there might be a problem with ancient hosts that lacked a proper stdlib.h (GCC 1, maybe?) but let's not worry about them unless someone actually runs into them. Thanks again for reporting these problems. 2005-07-18 Paul Eggert Fix yyerror / yylex test glitches noted by twlevo@xs4all.nl. * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Have yyerror return void, not int. * tests/glr-regression.at (Badly Collapsed GLR States): Likewise. (Improper handling of embedded actions and dollar(-N) in GLR parsers): yylex should return 0 at EOF rather than aborting. Index: tests/cxx-type.at =================================================================== RCS file: /cvsroot/bison/bison/tests/cxx-type.at,v retrieving revision 1.22 diff -p -u -r1.22 cxx-type.at --- tests/cxx-type.at 18 Jul 2005 18:09:40 -0000 1.22 +++ tests/cxx-type.at 18 Jul 2005 18:34:21 -0000 @@ -56,7 +56,7 @@ $1 # define ERROR_PARAMETERS char const *s #endif int yylex (LEX_PARAMETERS); - int yyerror (ERROR_PARAMETERS); + void yyerror (ERROR_PARAMETERS); %} %token TYPENAME ID @@ -191,7 +191,7 @@ yylex (LEX_PARAMETERS) } } -int +void yyerror (ERROR_PARAMETERS) { #if YYPURE && YYLSP_NEEDED Index: tests/glr-regression.at =================================================================== RCS file: /cvsroot/bison/bison/tests/glr-regression.at,v retrieving revision 1.11 diff -p -u -r1.11 glr-regression.at --- tests/glr-regression.at 18 Jul 2005 18:09:40 -0000 1.11 +++ tests/glr-regression.at 18 Jul 2005 18:34:21 -0000 @@ -34,7 +34,7 @@ AT_DATA_GRAMMAR([glr-regr1.y], #define YYSTYPE int static YYSTYPE exprMerge (YYSTYPE x0, YYSTYPE x1); int yylex (void); -int yyerror (char const *msg); +void yyerror (char const *msg); %} @@ -70,7 +70,7 @@ main (void) return yyparse (); } -int +void yyerror (char const *msg) { fprintf (stderr, "%s\n", msg); @@ -184,7 +184,7 @@ yylex (void) break; } if (fscanf (yyin, "%49s", buf) != 1) - abort (); + return 0; if (sizeof buf - 1 <= strlen (buf)) abort (); s = (char *) malloc (strlen (buf) + 1); From MAILER-DAEMON Mon Jul 18 18:25:54 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Due3c-0003hO-DW for mharc-bison-patches@gnu.org; Mon, 18 Jul 2005 18:25:52 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Due3U-0003dW-Lh for bison-patches@gnu.org; Mon, 18 Jul 2005 18:25:45 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Due3M-0003Y5-BH for bison-patches@gnu.org; Mon, 18 Jul 2005 18:25:42 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Due3H-0003V9-5Y for bison-patches@gnu.org; Mon, 18 Jul 2005 18:25:31 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Due16-0004I7-3p for bison-patches@gnu.org; Mon, 18 Jul 2005 18:23:16 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6IMDTL16861; Mon, 18 Jul 2005 15:13:29 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DudrY-0000dA-KO; Mon, 18 Jul 2005 15:13:24 -0700 To: Bruno Haible References: <87vf3fegkj.fsf@penguin.cs.ucla.edu> <200507131344.03004.bruno@clisp.org> <87eka2607n.fsf@penguin.cs.ucla.edu> <200507181346.40108.bruno@clisp.org> From: Paul Eggert Date: Mon, 18 Jul 2005 15:13:24 -0700 In-Reply-To: <200507181346.40108.bruno@clisp.org> (Bruno Haible's message of "Mon, 18 Jul 2005 13:46:40 +0200") Message-ID: <87wtnng3uj.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: Bison i18n patches installed X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2005 22:25:45 -0000 Bruno Haible writes: > could you please add a reference to node 'Users' in gettext.info as > primary reference? .... > Looks all fine to me, except for a typo in PACKAGING: > "to in the bison package". Thanks for checking it. I fixed those two issues in the patch enclosed below, which I installed into Bison. This patch also addresses some other issues, as described in the ChangeLog. Most importantly, the C++ skeleton i18n is broken (look for FIXME), but I don't use C++ so I can't easily fix it. Akim is the guy who usually worries about the C++ skeleton. I believe he was thinking of factoring the i18n stuff out into another file, but don't know exactly how that would work. Akim? 2005-07-18 Paul Eggert Add i18n support to the GLR skeleton. Partially fix the C++ skeleton; a C++ expert needs to finish this. Remove debugging msgids; there's little point to having them translated, since they can be understood only by someone who can read the (English-language) source code. Generate runtime-po/bison-runtime.pot automatically, so that we don't have to worry about garbage getting in that file. We'll make sure after the next official release that old msgids don't get lost. See . * runtime-po/Makefile.in.in, runtime-po/bison-runtime.pot: Remove. Now auto-generated. * PACKAGING: Don't claim that Gawk, GCC, Perl use this method yet. Fix typos in explanations of the runtime file. * bootstrap: Change gettext keyword from YYI18N to YY_. Use standard Makefile.in.in in runtime-po, since we'll arrange for backward-compatible bison-runtime.po files in a different way. * data/glr.c (YY_): New macro, from yacc.c. (yyuserAction, yyreportAmbiguity, yyreportSyntaxError, yyparse): Translate messages intended for users. (yyreportSyntaxError): Change "virtual memory" to "memory" to match the wording in the other skeletons. We don't know that the memory is virtual. * data/lalr1.cc (YY_): Renamed from _. All uses changed. Use same method that yacc.c uses. Don't translate debugging messages. (yy::yyreport_syntax_error): Put in a FIXME for the i18n stuff; it doesn't work (yet), and requires C++ expertise to fix. * data/yacc.c (YY_): Renamed from YY18N. All uses changed. Move defn to a more logical place, to be consistent with other skeletons. Don't translate debugging messages. Don't assume line numbers fit in unsigned int; use unsigned long fmts. * doc/bison.texinfo: Mention . Change glibc cross reference to gettext cross reference. Add indexing terms. Mention YYENABLE_NLS. * runtime-po/POTFILES.in: Add data/glr.c, data/lalr1.cc. Index: PACKAGING =================================================================== RCS file: /cvsroot/bison/bison/PACKAGING,v retrieving revision 1.1 diff -p -u -r1.1 PACKAGING --- PACKAGING 13 Jul 2005 18:16:30 -0000 1.1 +++ PACKAGING 18 Jul 2005 22:07:12 -0000 @@ -17,8 +17,8 @@ be split into two packages: The 'bison-runtime' binary package is much smaller than the 'bison' binary package. It should be included in any distribution that -contains programs that use the diagnostics contained in -Bison-generated parsers, e.g., Gawk, GCC, Perl. +contains localized programs that use the diagnostics contained in +Bison-generated parsers. If you want to install both packages at the same time, you simply do at the toplevel directory: @@ -27,12 +27,12 @@ at the toplevel directory: make make install -After installation, the files +After installation, the file $prefix/share/locale/*/LC_MESSAGES/bison-runtime.mo -belong to the bison-runtime package; all other installed files belong -to in the bison package. +belongs to the bison-runtime package; all other installed files belong +to the bison package. ----- Index: bootstrap =================================================================== RCS file: /cvsroot/bison/bison/bootstrap,v retrieving revision 1.21 diff -p -u -r1.21 bootstrap --- bootstrap 12 Jul 2005 23:28:54 -0000 1.21 +++ bootstrap 18 Jul 2005 22:07:12 -0000 @@ -246,11 +246,11 @@ sed '/^MSGID_BUGS_ADDRESS *=/s/=.*/= bug sed ' s/^\(DOMAIN\) *=.*/\1 = bison-runtime/ s/^\(subdir\) *=.*/\1 = runtime-po/ - s/^\(XGETTEXT_OPTIONS\) *=.*/\1 = --keyword=YYI18N/ + s/^\(XGETTEXT_OPTIONS\) *=.*/\1 = --keyword=YY_/ ' runtime-po/Makevars # Copy identical files from po to runtime-po. -(cd po && cp -p *-quot *.header *.sed *.sin ../runtime-po) +(cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po) # if src/parse-gram.[ch] are out of date, rebuild them. parse_gram_y=`find src/parse-gram.y \ Index: data/glr.c =================================================================== RCS file: /cvsroot/bison/bison/data/glr.c,v retrieving revision 1.101 diff -p -u -r1.101 glr.c --- data/glr.c 18 Jul 2005 18:09:40 -0000 1.101 +++ data/glr.c 18 Jul 2005 22:07:12 -0000 @@ -218,6 +218,18 @@ b4_syncline([@oline@], [@ofile@]) #include #include +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + #ifndef YYFREE # define YYFREE free #endif @@ -771,7 +783,7 @@ yyuserAction (yyRuleNum yyn, int yyrhsle # define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal) # undef YYBACKUP # define YYBACKUP(Token, Value) \ - return yyerror (]b4_yyerror_args["syntax error: cannot back up"), \ + return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")), \ yyerrok, yyerr yylow = 1; @@ -1524,7 +1536,7 @@ yyreportAmbiguity (yySemanticOption* yyx yyreportTree (yyx1, 2); YYFPRINTF (stderr, "\n"); #endif - yyFail (yystack][]b4_pure_args[, "ambiguity detected"); + yyFail (yystack][]b4_pure_args[, YY_("ambiguity detected")); } @@ -1774,8 +1786,8 @@ yyreportSyntaxError (yyGLRStack* yystack yyprefix = yyor; } - yyf = yyformat; - yysize1 = yysize + (yyfmt - yyformat); + yyf = YY_(yyformat); + yysize1 = yysize + strlen (yyf); yysize_overflow |= yysize1 < yysize; yysize = yysize1; @@ -1803,11 +1815,11 @@ yyreportSyntaxError (yyGLRStack* yystack YYFREE (yymsg); } else - yyerror (]b4_lyyerror_args["syntax error; also virtual memory exhausted"); + yyerror (]b4_lyyerror_args[YY_("syntax error; also memory exhausted")); } else #endif /* YYERROR_VERBOSE */ - yyerror (]b4_lyyerror_args["syntax error"); + yyerror (]b4_lyyerror_args[YY_("syntax error")); yynerrs += 1; } } @@ -2068,7 +2080,7 @@ b4_syncline([@oline@], [@ofile@])])dnl { yyundeleteLastStack (&yystack); if (yystack.yytops.yysize == 0) - yyFail (&yystack][]b4_lpure_args[, "syntax error"); + yyFail (&yystack][]b4_lpure_args[, YY_("syntax error")); YYCHK1 (yyresolveStack (&yystack]b4_user_args[)); YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); ]b4_location_if([[ yystack.yyerror_range[1].yystate.yyloc = *yyllocp;]])[ @@ -2098,7 +2110,7 @@ b4_syncline([@oline@], [@ofile@])])dnl goto yyreturn; yyoverflowlab: - yyerror (]b4_lyyerror_args["parser stack overflow"); + yyerror (]b4_lyyerror_args[YY_("parser stack overflow")); yyresult = 2; /* Fall through. */ Index: data/lalr1.cc =================================================================== RCS file: /cvsroot/bison/bison/data/lalr1.cc,v retrieving revision 1.87 diff -p -u -r1.87 lalr1.cc --- data/lalr1.cc 22 Jun 2005 15:37:22 -0000 1.87 +++ data/lalr1.cc 18 Jul 2005 22:07:12 -0000 @@ -417,9 +417,16 @@ m4_if(b4_defines_flag, 0, [], [ #include @output_header_name@])[ -/* INFRINGES ON USER NAME SPACE */ -#ifndef _ -# define _(msgid) msgid +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* FIXME: INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif #endif /* A pseudo ostream that takes yydebug_ into account. */ @@ -551,7 +558,7 @@ yy::]b4_parser_class_name[::parse () { int yyresult_; - YYCDEBUG << _("Starting parse") << std::endl; + YYCDEBUG << "Starting parse" << std::endl; yynerrs_ = 0; yyerrstatus_ = 0; @@ -583,7 +590,7 @@ b4_syncline([@oline@], [@ofile@])])dnl /* New state. */ yynewstate: yystate_stack_.push (yystate_); - YYCDEBUG << _("Entering state ") << yystate_ << std::endl; + YYCDEBUG << "Entering state " << yystate_ << std::endl; goto yybackup; /* Backup. */ @@ -602,12 +609,12 @@ yybackup: if (yylooka_ <= yyeof_) { yylooka_ = yyilooka_ = yyeof_; - YYCDEBUG << _("Now at end of input.") << std::endl; + YYCDEBUG << "Now at end of input." << std::endl; } else { yyilooka_ = yytranslate_ (yylooka_); - YY_SYMBOL_PRINT (_("Next token is"), yyilooka_, &yylval, &yylloc); + YY_SYMBOL_PRINT ("Next token is", yyilooka_, &yylval, &yylloc); } /* If the proper action on seeing token ILOOKA_ is to reduce or to @@ -636,7 +643,7 @@ yybackup: goto yyacceptlab; /* Shift the look-ahead token. */ - YY_SYMBOL_PRINT (_("Shifting"), yyilooka_, &yylval, &yylloc); + YY_SYMBOL_PRINT ("Shifting", yyilooka_, &yylval, &yylloc); /* Discard the token being shifted unless it is eof. */ if (yylooka_ != yyeof_) @@ -734,7 +741,7 @@ yyerrlab: yypop_ (); if (yystate_stack_.height () == 1) YYABORT; - yydestruct_ (_("Error: popping"), + yydestruct_ ("Error: popping", yystos_[yystate_stack_[0]], &yysemantic_stack_[0], &yylocation_stack_[0]); @@ -742,7 +749,7 @@ yyerrlab: } else { - yydestruct_ (_("Error: discarding"), yyilooka_, &yylval, &yylloc); + yydestruct_ ("Error: discarding", yyilooka_, &yylval, &yylloc); yylooka_ = yyempty_; } } @@ -793,7 +800,7 @@ yyerrlab1: YYABORT; yyerror_range_[0] = yylocation_stack_[0]; - yydestruct_ (_("Error: popping"), + yydestruct_ ("Error: popping", yystos_[yystate_], &yysemantic_stack_[0], &yylocation_stack_[0]); yypop_ (); @@ -812,7 +819,7 @@ yyerrlab1: yylocation_stack_.push (yyloc); /* Shift the error token. */ - YY_SYMBOL_PRINT (_("Shifting"), yystos_[yyn_], + YY_SYMBOL_PRINT ("Shifting", yystos_[yyn_], &yysemantic_stack_[0], &yylocation_stack_[0]); yystate_ = yyn_; @@ -830,14 +837,14 @@ yyabortlab: yyreturn: if (yylooka_ != yyeof_ && yylooka_ != yyempty_) - yydestruct_ (_("Error: discarding lookahead"), yyilooka_, &yylval, &yylloc); + yydestruct_ ("Error: discarding lookahead", yyilooka_, &yylval, &yylloc); return yyresult_; } void yy::]b4_parser_class_name[::yylex_ () { - YYCDEBUG << _("Reading a token: "); + YYCDEBUG << "Reading a token: "; yylooka_ = ]b4_c_function_call([yylex], [int], [[YYSTYPE*], [&yylval]][]dnl b4_location_if([, [[location*], [&yylloc]]])dnl @@ -869,7 +876,15 @@ yy::]b4_parser_class_name[::yyreport_syn if (yycheck_[x + yyn_] == x && x != yyterror_) ++count; - message = _("syntax error, unexpected "); + // FIXME: This method of building the message is not compatible + // with internationalization. It should work like yacc.c does it. + // That is, first build a string that looks like this: + // "syntax error, unexpected %s or %s or %s" + // Then, invoke YY_ on this string. + // Finally, use the string as a format to output + // yyname_[yyilooka_], etc. + // Until this gets fixed, this message appears in English only. + message = "syntax error, unexpected "; message += yyname_[yyilooka_]; if (count < 5) { @@ -877,14 +892,14 @@ yy::]b4_parser_class_name[::yyreport_syn for (int x = yyxbegin; x < yyxend; ++x) if (yycheck_[x + yyn_] == x && x != yyterror_) { - message += (!count++) ? _(", expecting ") : _(" or "); + message += (!count++) ? ", expecting " : " or "; message += yyname_[x]; } } } else #endif - message = _("syntax error"); + message = YY_("syntax error"); error (yylloc, message); } } @@ -1008,7 +1023,7 @@ yy::]b4_parser_class_name[::yyrline_[] = void yy::]b4_parser_class_name[::yystack_print_ () { - *yycdebug_ << _("Stack now"); + *yycdebug_ << "Stack now"; for (state_stack_type::const_iterator i = yystate_stack_.begin (); i != yystate_stack_.end (); ++i) *yycdebug_ << ' ' << *i; @@ -1021,8 +1036,8 @@ yy::]b4_parser_class_name[::yyreduce_pri { unsigned int yylno = yyrline_[yyrule]; /* Print the symbols being reduced, and their result. */ - *yycdebug_ << _("Reducing stack by rule ") << yyn_ - 1 - << " (" << _("line") << ' ' << yylno << "), "; + *yycdebug_ << "Reducing stack by rule " << yyn_ - 1 + << " (line " << yylno << "), "; for (]b4_int_type_for([b4_prhs])[ i = yyprhs_[yyn_]; 0 <= yyrhs_[i]; ++i) *yycdebug_ << yyname_[yyrhs_[i]] << ' '; Index: data/yacc.c =================================================================== RCS file: /cvsroot/bison/bison/data/yacc.c,v retrieving revision 1.95 diff -p -u -r1.95 yacc.c --- data/yacc.c 12 Jul 2005 23:28:54 -0000 1.95 +++ data/yacc.c 18 Jul 2005 22:07:13 -0000 @@ -228,6 +228,18 @@ b4_syncline([@oline@], [@ofile@])[ # define YYSIZE_T unsigned int #endif +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + #if ! defined (yyoverflow) || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -412,18 +424,6 @@ static const char *const yytname[] = }; #endif -#ifndef YYI18N -# if YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YYI18N(msgid) dgettext ("bison-runtime", msgid) -# endif -# endif -# ifndef YYI18N -# define YYI18N(msgid) msgid -# endif -#endif - # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ @@ -525,7 +525,7 @@ do \ } \ else \ { \ - yyerror (]b4_yyerror_args[YYI18N ("syntax error: cannot back up")); \ + yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) @@ -619,7 +619,7 @@ do { \ [[short int *bottom], [bottom]], [[short int *top], [top]])[ { - YYFPRINTF (stderr, YYI18N ("Stack now")); + YYFPRINTF (stderr, "Stack now"); for (/* Nothing. */; bottom <= top; ++bottom) YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); @@ -640,8 +640,8 @@ do { \ [[int yyrule], [yyrule]])[ { int yyi; - unsigned int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, YYI18N ("Reducing stack by rule %d (line %u), "), + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ", yyrule - 1, yylno); /* Print the symbols being reduced, and their result. */ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) @@ -911,7 +911,7 @@ m4_ifdef([b4_at_dollar_used], [[ yylsp[ data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ - yyoverflow (YYI18N ("parser stack overflow"), + yyoverflow (YY_("parser stack overflow"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), ]b4_location_if([ &yyls1, yysize * sizeof (*yylsp),])[ @@ -951,14 +951,14 @@ m4_ifdef([b4_at_dollar_used], [[ yylsp[ yyvsp = yyvs + yysize - 1; ]b4_location_if([ yylsp = yyls + yysize - 1;])[ - YYDPRINTF ((stderr, YYI18N ("Stack size increased to %lu\n"), + YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } - YYDPRINTF ((stderr, YYI18N ("Entering state %d\n"), yystate)); + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); goto yybackup; @@ -982,19 +982,19 @@ yybackup: /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, YYI18N ("Reading a token: "))); + YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, YYI18N ("Now at end of input.\n"))); + YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT (YYI18N ("Next token is"), yytoken, &yylval, &yylloc); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to @@ -1015,7 +1015,7 @@ yybackup: YYACCEPT; /* Shift the look-ahead token. */ - YY_SYMBOL_PRINT (YYI18N ("Shifting"), yytoken, &yylval, &yylloc); + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) @@ -1123,11 +1123,11 @@ yyerrlab: #if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ - YYI18N ("syntax error, unexpected %s"); - YYI18N ("syntax error, unexpected %s, expecting %s"); - YYI18N ("syntax error, unexpected %s, expecting %s or %s"); - YYI18N ("syntax error, unexpected %s, expecting %s or %s or %s"); - YYI18N ("syntax error, unexpected %s, expecting %s or %s or %s or %s"); + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); #endif char *yyfmt; char const *yyf; @@ -1170,7 +1170,7 @@ yyerrlab: yyprefix = yyor; } - yyf = YYI18N (yyformat); + yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= yysize1 < yysize; yysize = yysize1; @@ -1201,11 +1201,11 @@ yyerrlab: YYSTACK_FREE (yymsg); } else - yyerror (]b4_yyerror_args[YYI18N ("syntax error; also memory exhausted")); + yyerror (]b4_yyerror_args[YY_("syntax error; also memory exhausted")); } else #endif /* YYERROR_VERBOSE */ - yyerror (]b4_yyerror_args[YYI18N ("syntax error")); + yyerror (]b4_yyerror_args[YY_("syntax error")); } ]b4_location_if([[ yyerror_range[0] = yylloc;]])[ @@ -1224,7 +1224,7 @@ yyerrlab: } else { - yydestruct (YYI18N ("Error: discarding"), yytoken, &yylval]b4_location_if([, &yylloc])[); + yydestruct ("Error: discarding", yytoken, &yylval]b4_location_if([, &yylloc])[); yychar = YYEMPTY; } } @@ -1278,7 +1278,7 @@ yyerrlab1: YYABORT; ]b4_location_if([[ yyerror_range[0] = *yylsp;]])[ - yydestruct (YYI18N ("Error: popping"), yystos[yystate], yyvsp]b4_location_if([, yylsp])[); + yydestruct ("Error: popping", yystos[yystate], yyvsp]b4_location_if([, yylsp])[); YYPOPSTACK; yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -1296,7 +1296,7 @@ yyerrlab1: *++yylsp = yyloc;]])[ /* Shift the error token. */ - YY_SYMBOL_PRINT (YYI18N ("Shifting"), yystos[yyn], yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -1321,14 +1321,14 @@ yyabortlab: | yyoverflowlab -- parser overflow comes here. | `----------------------------------------------*/ yyoverflowlab: - yyerror (]b4_yyerror_args[YYI18N ("parser stack overflow")); + yyerror (]b4_yyerror_args[YY_("parser stack overflow")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) - yydestruct (YYI18N ("Error: discarding lookahead"), + yydestruct ("Error: discarding lookahead", yytoken, &yylval]b4_location_if([, &yylloc])[); if (yyssp != yyss) for (;;) @@ -1337,7 +1337,7 @@ yyreturn: YYPOPSTACK; if (yyssp == yyss) break; - yydestruct (YYI18N ("Error: popping"), + yydestruct ("Error: popping", yystos[*yyssp], yyvsp]b4_location_if([, yylsp])[); } #ifndef yyoverflow Index: doc/bison.texinfo =================================================================== RCS file: /cvsroot/bison/bison/doc/bison.texinfo,v retrieving revision 1.150 diff -p -u -r1.150 bison.texinfo --- doc/bison.texinfo 12 Jul 2005 23:28:54 -0000 1.150 +++ doc/bison.texinfo 18 Jul 2005 22:07:13 -0000 @@ -1203,7 +1203,9 @@ In some cases the Bison parser file incl those cases your code should respect the identifiers reserved by those headers. On some non-@acronym{GNU} hosts, @code{}, @code{}, and @code{} are included as needed to -declare memory allocators and related types. Other system headers may +declare memory allocators and related types. @code{} is +included if message translation is in use +(@pxref{Internationalization}). Other system headers may be included if you define @code{YYDEBUG} to a nonzero value (@pxref{Tracing, ,Tracing Your Parser}). @@ -4821,8 +4823,8 @@ A Bison-generated parser can print diagn tracing messages. By default, they appear in English. However, Bison also supports outputting diagnostics in the user's native language. To make this work, the user should set the usual environment -variables. @xref{Using gettextized software, , User influence on -@code{gettext}, libc, The GNU C Library Reference Manual}. For +variables. @xref{Users, , The User's View, gettext, GNU +@code{gettext} utilities}. For example, the shell command @samp{export LC_ALL=fr_CA.UTF-8} might set the user's locale to French Canadian using the @acronym{UTF}-8 encoding. The exact set of available locales depends on the user's @@ -4835,6 +4837,7 @@ steps. Here we assume a package that us @enumerate @item +@cindex bison-i18n.m4 Into the directory containing the @acronym{GNU} Autoconf macros used by the package---often called @file{m4}---copy the @file{bison-i18n.m4} file installed by Bison under @@ -4846,11 +4849,16 @@ cp /usr/local/share/aclocal/bison-i18n.m @end example @item +@findex BISON_I18N +@vindex BISON_LOCALEDIR +@vindex YYENABLE_NLS In the top-level @file{configure.ac}, after the @code{AM_GNU_GETTEXT} invocation, add an invocation of @code{BISON_I18N}. This macro is defined in the file @file{bison-i18n.m4} that you copied earlier. It causes @samp{configure} to find the value of the -@code{BISON_LOCALEDIR} variable. +@code{BISON_LOCALEDIR} variable, and it defines the source-language +symbol @code{YYENABLE_NLS} to enable translations in the +Bison-generated parser. @item In the @code{main} function of your program, designate the directory Index: runtime-po/POTFILES.in =================================================================== RCS file: /cvsroot/bison/bison/runtime-po/POTFILES.in,v retrieving revision 1.1 diff -p -u -r1.1 POTFILES.in --- runtime-po/POTFILES.in 12 Jul 2005 23:28:54 -0000 1.1 +++ runtime-po/POTFILES.in 18 Jul 2005 22:07:13 -0000 @@ -1 +1,3 @@ +data/glr.c +data/lalr1.cc data/yacc.c From MAILER-DAEMON Mon Jul 18 18:26:11 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Due3u-0003pV-Pp for mharc-bison-patches@gnu.org; Mon, 18 Jul 2005 18:26:11 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Due3S-0003cZ-UH for bison-patches@gnu.org; Mon, 18 Jul 2005 18:25:43 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Due3G-0003Xd-Tr for bison-patches@gnu.org; Mon, 18 Jul 2005 18:25:32 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Due3G-0003V9-Hx for bison-patches@gnu.org; Mon, 18 Jul 2005 18:25:30 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Due3V-0004Np-8O for bison-patches@gnu.org; Mon, 18 Jul 2005 18:25:45 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6IMGJL17021 for ; Mon, 18 Jul 2005 15:16:19 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DuduI-0000dZ-Sb for bison-patches@gnu.org; Mon, 18 Jul 2005 15:16:14 -0700 To: bison-patches@gnu.org From: Paul Eggert Date: Mon, 18 Jul 2005 15:16:14 -0700 Message-ID: <87slybg3pt.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: c.m4 typo: fprintf should be YYFPRINTF X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jul 2005 22:25:47 -0000 I installed this patch for what seems to be an obvious typo: 2005-07-18 Paul Eggert * data/c.m4 (b4_yysymprint_generate): Use YYFPRINTF, not fprintf. --- c.m4 14 May 2005 06:49:46 -0000 1.27 +++ c.m4 18 Jul 2005 22:14:15 -0000 1.29 @@ -403,7 +403,7 @@ b4_location_if([ (void) yylocationp; YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); ]b4_location_if([ YY_LOCATION_PRINT (yyoutput, *yylocationp); - fprintf (yyoutput, ": "); + YYFPRINTF (yyoutput, ": "); ])dnl [ # ifdef YYPRINT From MAILER-DAEMON Mon Jul 18 20:17:09 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DufnI-0007Kx-Mj for mharc-bison-patches@gnu.org; Mon, 18 Jul 2005 20:17:08 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DufnB-0007In-3M for bison-patches@gnu.org; Mon, 18 Jul 2005 20:17:01 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dufmx-00078t-HM for bison-patches@gnu.org; Mon, 18 Jul 2005 20:16:55 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dufmw-00077l-6w for bison-patches@gnu.org; Mon, 18 Jul 2005 20:16:46 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dufpw-0001ol-Ms for bison-patches@gnu.org; Mon, 18 Jul 2005 20:19:53 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6J0AQL24861 for ; Mon, 18 Jul 2005 17:10:27 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dufgk-00031R-3K for bison-patches@gnu.org; Mon, 18 Jul 2005 17:10:22 -0700 To: bison-patches@gnu.org From: Paul Eggert Date: Mon, 18 Jul 2005 17:10:22 -0700 Message-ID: <87oe8zfyfl.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: revamped skeletons to simplify Bison messages needing translation X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2005 00:17:02 -0000 I installed the following patch in order to regularize the bison-runtime messages needing translation. We want this set to be small and stable, since it will be used by all Bison-generated parsers. I'd like to generate a new Bison test version in the next day or so, so that we can give these messages to the translation teams. We can then follow up with Bison 2.1 after they've had a bit of time to translate. Any comments or objections? After this patch is installed, only the following strings require translation in Bison-generated parsers: memory exhausted syntax error syntax error, unexpected %s syntax error, unexpected %s, expecting %s syntax error, unexpected %s, expecting %s or %s syntax error, unexpected %s, expecting %s or %s or %s syntax error, unexpected %s, expecting %s or %s or %s or %s syntax error: cannot back up syntax is ambiguous The last message is new: it's used only by GLR parsers. The other messages are shared among all the skeletons. 2005-07-18 Paul Eggert * NEWS: Document minor wording changes in diagnostics of Bison-generated parsers. * data/glr.c (yyMemoryExhausted): Renamed from yyStackOverflow. Remove unused formals. All uses changed. (yyreportAmbiguity): "ambiguity detected" -> "syntax is ambiguous". (yyparse): Rename yyoverflowlab to yyexhaustedlab. * data/yacc.c (yyparse): "parser stack overflow" -> "memory exhausted". Rename yyoverflowab to yyexhaustedlab. When memory exhaustion occurs during syntax-error reporting, report it separately rather than in a single diagnostic; this eases translation. * doc/bison.texinfo (Memory Management): Renamed from Stack Overflow. (Memory Exhausted): Renamed from Parser Stack Overflow. Revamp wording slightly to prefer "memory exhaustion". * tests/actions.at: "parser stack overflow" -> "memory exhausted". Index: NEWS =================================================================== RCS file: /cvsroot/bison/bison/NEWS,v retrieving revision 1.118 diff -p -u -r1.118 NEWS --- NEWS 13 Jul 2005 18:16:30 -0000 1.118 +++ NEWS 18 Jul 2005 23:59:06 -0000 @@ -10,6 +10,11 @@ Changes in the next version (not yet rel distributors should also see the new PACKAGING file. Thanks to Bruno Haible for this new feature. +* Wording in the Bison-generated parsers has been changed slightly to + simplify translation. In particular, the message "memory exhausted" + has replaced "parser stack overflow", as the old message was not + always accurate for modern Bison-generated parsers. + The following change was also in version 2.0a, 2005-05-22: * When generating verbose diagnostics, Bison-generated parsers no longer Index: data/glr.c =================================================================== RCS file: /cvsroot/bison/bison/data/glr.c,v retrieving revision 1.102 diff -p -u -r1.102 glr.c --- data/glr.c 18 Jul 2005 22:10:15 -0000 1.102 +++ data/glr.c 18 Jul 2005 23:59:07 -0000 @@ -698,7 +698,7 @@ yyFail (yyGLRStack* yystack]b4_pure_form } static void -yyStackOverflow (yyGLRStack* yystack]b4_pure_formals[) +yyMemoryExhausted (yyGLRStack* yystack) { longjmp (yystack->yyexception_buffer, 2); } @@ -995,13 +995,13 @@ yyexpandGLRStack (yyGLRStack* yystack]b4 size_t yyn; yysize = yystack->yynextFree - yystack->yyitems; if (YYMAXDEPTH <= yysize) - yyStackOverflow (yystack]b4_pure_args[); + yyMemoryExhausted (yystack); yynewSize = 2*yysize; if (YYMAXDEPTH < yynewSize) yynewSize = YYMAXDEPTH; yynewItems = (yyGLRStackItem*) YYMALLOC (yynewSize * sizeof yynewItems[0]); if (! yynewItems) - yyStackOverflow (yystack]b4_pure_args[); + yyMemoryExhausted (yystack); for (yyp0 = yystack->yyitems, yyp1 = yynewItems, yyn = yysize; 0 < yyn; yyn -= 1, yyp0 += 1, yyp1 += 1) @@ -1044,7 +1044,7 @@ yyexpandGLRStack (yyGLRStack* yystack]b4 #else - yyStackOverflow (yystack]b4_pure_args[); + yyMemoryExhausted (yystack); #endif } @@ -1321,7 +1321,7 @@ yysplitStack (yyGLRStack* yystack, size_ (yyGLRState**) YYREALLOC (yystack->yytops.yystates, ((yystack->yytops.yycapacity *= 2) * sizeof yynewStates[0]))))) - yyStackOverflow (yystack]b4_pure_args[); + yyMemoryExhausted (yystack); yystack->yytops.yystates = yynewStates; } yystack->yytops.yystates[yystack->yytops.yysize] @@ -1536,7 +1536,7 @@ yyreportAmbiguity (yySemanticOption* yyx yyreportTree (yyx1, 2); YYFPRINTF (stderr, "\n"); #endif - yyFail (yystack][]b4_pure_args[, YY_("ambiguity detected")); + yyFail (yystack][]b4_pure_args[, YY_("syntax is ambiguous")); } @@ -1815,7 +1815,10 @@ yyreportSyntaxError (yyGLRStack* yystack YYFREE (yymsg); } else - yyerror (]b4_lyyerror_args[YY_("syntax error; also memory exhausted")); + { + yyerror (]b4_lyyerror_args[YY_("syntax error")); + yyMemoryExhausted (yystack); + } } else #endif /* YYERROR_VERBOSE */ @@ -1993,11 +1996,11 @@ m4_popdef([b4_at_dollar])dnl b4_syncline([@oline@], [@ofile@])])dnl [ if (! yyinitGLRStack (&yystack, YYINITDEPTH)) - goto yyoverflowlab; + goto yyexhaustedlab; switch (setjmp (yystack.yyexception_buffer)) { case 1: goto yyabortlab; - case 2: goto yyoverflowlab; + case 2: goto yyexhaustedlab; } yystack.yytokenp = &yytoken; yyglrShift (&yystack, 0, 0, 0, yylval, &yylloc]b4_user_args[); @@ -2109,8 +2112,8 @@ b4_syncline([@oline@], [@ofile@])])dnl yyresult = 1; goto yyreturn; - yyoverflowlab: - yyerror (]b4_lyyerror_args[YY_("parser stack overflow")); + yyexhaustedlab: + yyerror (]b4_lyyerror_args[YY_("memory exhausted")); yyresult = 2; /* Fall through. */ Index: data/yacc.c =================================================================== RCS file: /cvsroot/bison/bison/data/yacc.c,v retrieving revision 1.96 diff -p -u -r1.96 yacc.c --- data/yacc.c 18 Jul 2005 22:10:15 -0000 1.96 +++ data/yacc.c 18 Jul 2005 23:59:07 -0000 @@ -911,7 +911,7 @@ m4_ifdef([b4_at_dollar_used], [[ yylsp[ data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("parser stack overflow"), + yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), ]b4_location_if([ &yyls1, yysize * sizeof (*yylsp),])[ @@ -922,11 +922,11 @@ m4_ifdef([b4_at_dollar_used], [[ yylsp[ } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE - goto yyoverflowlab; + goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyoverflowlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; @@ -936,7 +936,7 @@ m4_ifdef([b4_at_dollar_used], [[ yylsp[ union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) - goto yyoverflowlab; + goto yyexhaustedlab; YYSTACK_RELOCATE (yyss); YYSTACK_RELOCATE (yyvs); ]b4_location_if([ YYSTACK_RELOCATE (yyls);])[ @@ -1201,7 +1201,10 @@ yyerrlab: YYSTACK_FREE (yymsg); } else - yyerror (]b4_yyerror_args[YY_("syntax error; also memory exhausted")); + { + yyerror (]b4_yyerror_args[YY_("syntax error")); + goto yyexhaustedlab; + } } else #endif /* YYERROR_VERBOSE */ @@ -1317,11 +1320,11 @@ yyabortlab: goto yyreturn; #ifndef yyoverflow -/*----------------------------------------------. -| yyoverflowlab -- parser overflow comes here. | -`----------------------------------------------*/ -yyoverflowlab: - yyerror (]b4_yyerror_args[YY_("parser stack overflow")); +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (]b4_yyerror_args[YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif Index: doc/bison.texinfo =================================================================== RCS file: /cvsroot/bison/bison/doc/bison.texinfo,v retrieving revision 1.151 diff -p -u -r1.151 bison.texinfo --- doc/bison.texinfo 18 Jul 2005 22:10:15 -0000 1.151 +++ doc/bison.texinfo 18 Jul 2005 23:59:07 -0000 @@ -267,7 +267,7 @@ The Bison Parser Algorithm * Reduce/Reduce:: When two rules are applicable in the same situation. * Mystery Conflicts:: Reduce/reduce conflicts that look unjustified. * Generalized LR Parsing:: Parsing arbitrary context-free grammars. -* Stack Overflow:: What happens when stack gets full. How to avoid it. +* Memory Management:: What happens when memory is exhausted. How to avoid it. Operator Precedence @@ -318,7 +318,7 @@ A Complete C++ Example Frequently Asked Questions -* Parser Stack Overflow:: Breaking the Stack Limits +* Memory Exhausted:: Breaking the Stack Limits * How Can I Reset the Parser:: @code{yyparse} Keeps some State * Strings are Destroyed:: @code{yylval} Loses Track of Strings * Implementing Gotos/Loops:: Control Flow in the Calculator @@ -4592,13 +4592,16 @@ declarations section (@pxref{Bison Decla Section}), then Bison provides a more verbose and specific error message string instead of just plain @w{@code{"syntax error"}}. -The parser can detect one other kind of error: stack overflow. This -happens when the input contains constructions that are very deeply +The parser can detect one other kind of error: memory exhaustion. This +can happen when the input contains constructions that are very deeply nested. It isn't likely you will encounter this, since the Bison -parser extends its stack automatically up to a very large limit. But -if overflow happens, @code{yyparse} calls @code{yyerror} in the usual -fashion, except that the argument string is @w{@code{"parser stack -overflow"}}. +parser normally extends its stack automatically up to a very large limit. But +if memory is exhausted, @code{yyparse} calls @code{yyerror} in the usual +fashion, except that the argument string is @w{@code{"memory exhausted"}}. + +In some cases diagnostics like @w{@code{"syntax error"}} are +translated automatically from English to some other language before +they are passed to @code{yyerror}. @xref{Internationalization}. The following definition suffices in simple programs: @@ -4961,7 +4964,7 @@ This kind of parser is known in the lite * Reduce/Reduce:: When two rules are applicable in the same situation. * Mystery Conflicts:: Reduce/reduce conflicts that look unjustified. * Generalized LR Parsing:: Parsing arbitrary context-free grammars. -* Stack Overflow:: What happens when stack gets full. How to avoid it. +* Memory Management:: What happens when memory is exhausted. How to avoid it. @end menu @node Look-Ahead @@ -5672,16 +5675,17 @@ London, Department of Computer Science, @uref{http://www.cs.rhul.ac.uk/research/languages/publications/tomita_style_1.ps}, (2000-12-24). -@node Stack Overflow -@section Stack Overflow, and How to Avoid It +@node Memory Management +@section Memory Management, and How to Avoid Memory Exhaustion +@cindex memory exhaustion +@cindex memory management @cindex stack overflow @cindex parser stack overflow @cindex overflow of parser stack -The Bison parser stack can overflow if too many tokens are shifted and +The Bison parser stack can run out of memory if too many tokens are shifted and not reduced. When this happens, the parser function @code{yyparse} -returns a nonzero value, pausing only to call @code{yyerror} to report -the overflow. +calls @code{yyerror} and then returns 2. Because Bison parsers have growing stacks, hitting the upper limit usually results from using a right recursion instead of a left @@ -5689,12 +5693,12 @@ recursion, @xref{Recursion, ,Recursive R @vindex YYMAXDEPTH By defining the macro @code{YYMAXDEPTH}, you can control how deep the -parser stack can become before a stack overflow occurs. Define the +parser stack can become before memory is exhausted. Define the macro with a value that is an integer. This value is the maximum number of tokens that can be shifted (and not reduced) before overflow. The stack space allowed is not necessarily allocated. If you specify a -large value for @code{YYMAXDEPTH}, the parser actually allocates a small +large value for @code{YYMAXDEPTH}, the parser normally allocates a small stack at first, and then makes it bigger by stages as needed. This increasing allocation happens automatically and silently. Therefore, you do not need to make @code{YYMAXDEPTH} painfully small merely to save @@ -5716,17 +5720,14 @@ macro @code{YYINITDEPTH} to a positive i unless you are assuming C99 or some other target language or compiler that allows variable-length arrays. The default is 200. -Do not allow @code{YYINITDEPTH} to be a value so large that arithmetic -overflow would occur when calculating the size of the stack space. -Also, do not allow @code{YYINITDEPTH} to be greater than -@code{YYMAXDEPTH}. +Do not allow @code{YYINITDEPTH} to be greater than @code{YYMAXDEPTH}. @c FIXME: C++ output. Because of semantical differences between C and C++, the -@acronym{LALR}(1) parsers in C produced by Bison by compiled as C++ -cannot grow. In this precise case (compiling a C parser as C++) you are -suggested to grow @code{YYINITDEPTH}. In the near future, a C++ output -output will be provided which addresses this issue. +@acronym{LALR}(1) parsers in C produced by Bison cannot grow when compiled +by C++ compilers. In this precise case (compiling a C parser as C++) you are +suggested to grow @code{YYINITDEPTH}. The Bison maintainers hope to fix +this deficiency in a future release. @node Error Recovery @chapter Error Recovery @@ -7539,17 +7540,17 @@ Several questions about Bison come up oc are addressed. @menu -* Parser Stack Overflow:: Breaking the Stack Limits +* Memory Exhausted:: Breaking the Stack Limits * How Can I Reset the Parser:: @code{yyparse} Keeps some State * Strings are Destroyed:: @code{yylval} Loses Track of Strings * Implementing Gotos/Loops:: Control Flow in the Calculator @end menu -@node Parser Stack Overflow -@section Parser Stack Overflow +@node Memory Exhausted +@section Memory Exhausted @display -My parser returns with error with a @samp{parser stack overflow} +My parser returns with error with a @samp{memory exhausted} message. What can I do? @end display @@ -8031,7 +8032,7 @@ use for @code{YYERROR_VERBOSE}, just whe @deffn {Macro} YYINITDEPTH Macro for specifying the initial size of the parser stack. -@xref{Stack Overflow}. +@xref{Memory Management}. @end deffn @deffn {Function} yylex @@ -8069,8 +8070,8 @@ variable within @code{yyparse}, and its @end deffn @deffn {Macro} YYMAXDEPTH -Macro for specifying the maximum size of the parser stack. @xref{Stack -Overflow}. +Macro for specifying the maximum size of the parser stack. @xref{Memory +Management}. @end deffn @deffn {Variable} yynerrs Index: tests/actions.at =================================================================== RCS file: /cvsroot/bison/bison/tests/actions.at,v retrieving revision 1.50 diff -p -u -r1.50 actions.at --- tests/actions.at 18 Jul 2005 18:09:40 -0000 1.50 +++ tests/actions.at 18 Jul 2005 23:59:07 -0000 @@ -487,7 +487,7 @@ sending: '(' (18@180-189) sending: 'x' (19@190-199) thing (19@190-199): 'x' (19@190-199) sending: ')' (20@200-209) -200-209: parser stack overflow +200-209: memory exhausted Freeing nterm thing (19@190-199) Freeing nterm line (15@150-179) Freeing nterm line (12@120-149) From MAILER-DAEMON Mon Jul 18 22:53:43 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DuiEo-0003wg-Tj for mharc-bison-patches@gnu.org; Mon, 18 Jul 2005 22:53:43 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DuiEk-0003vJ-Tx for bison-patches@gnu.org; Mon, 18 Jul 2005 22:53:39 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DuiEf-0003s5-Rn for bison-patches@gnu.org; Mon, 18 Jul 2005 22:53:34 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DuiEe-0003i6-Nx for bison-patches@gnu.org; Mon, 18 Jul 2005 22:53:32 -0400 Received: from [128.32.153.227] (helo=tully.CS.Berkeley.EDU) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dui7Y-0000GX-I6 for bison-patches@gnu.org; Mon, 18 Jul 2005 22:46:12 -0400 Received: from tully.CS.Berkeley.EDU (localhost [127.0.0.1]) by tully.CS.Berkeley.EDU (8.12.7/8.12.7/3.141592645) with ESMTP id j6J2al9S007965; Mon, 18 Jul 2005 19:36:47 -0700 (PDT) Received: from tully.CS.Berkeley.EDU (hilfingr@localhost) by tully.CS.Berkeley.EDU (8.12.7/8.12.7/Submit) with ESMTP id j6J2akvN007960; Mon, 18 Jul 2005 19:36:46 -0700 (PDT) Message-Id: <200507190236.j6J2akvN007960@tully.CS.Berkeley.EDU> To: Paul Eggert In-Reply-To: Message from Paul Eggert of "Mon, 18 Jul 2005 11:13:27 PDT." <878y04geyg.fsf@penguin.cs.ucla.edu> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <7956.1121740605.1@tully.CS.Berkeley.EDU> Date: Mon, 18 Jul 2005 19:36:46 -0700 From: Paul Hilfinger Cc: twlevo@xs4all.nl, bison-patches@gnu.org Subject: Re: Re_ data_glr.c yyinitGLRStack() (fix) X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2005 02:53:40 -0000 > By the way, it appears to me that there can be memory leaks in the GLR > parser if the stack overflows or the user invokes YYABORT, because > yyfreeGLRStack does not invoke yydestruct on the items remaining in > the parser stack. Paul Hilfinger, does this diagnosis make sense to > you? Yes, that does seem to be true (not entirely surprising, since the destructor code that's now there isn't mine, having been added later pretty much in parallel with yacc.c). Paul H. From MAILER-DAEMON Mon Jul 18 23:52:49 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DujA1-0000BM-1X for mharc-bison-patches@gnu.org; Mon, 18 Jul 2005 23:52:49 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Duj9z-0000Ag-7A for bison-patches@gnu.org; Mon, 18 Jul 2005 23:52:47 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Duj9N-0008WS-E1 for bison-patches@gnu.org; Mon, 18 Jul 2005 23:52:30 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Duj9K-0008RN-LS for bison-patches@gnu.org; Mon, 18 Jul 2005 23:52:07 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Duj2S-0003X1-V7 for bison-patches@gnu.org; Mon, 18 Jul 2005 23:45:01 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6J3ZRL07055; Mon, 18 Jul 2005 20:35:27 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Duit8-0003KX-Ik; Mon, 18 Jul 2005 20:35:22 -0700 To: twlevo@xs4all.nl References: <23440.80.126.59.26.1121732895.squirrel@80.126.59.26> From: Paul Eggert Date: Mon, 18 Jul 2005 20:35:22 -0700 In-Reply-To: <23440.80.126.59.26.1121732895.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Tue, 19 Jul 2005 00:28:15 -0000 (GMT)") Message-ID: <87zmsjzcw5.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: typo cxx-type.at X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2005 03:52:47 -0000 twlevo@xs4all.nl writes: > cxx-type.at line 195 the `return 0;' gives errors Thanks for that bug report. I installed this obvious patch: 2005-07-18 Paul Eggert * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): yyerror now returns void, so omit 'return 0;'. --- cxx-type.at 18 Jul 2005 18:39:01 -0000 1.23 +++ cxx-type.at 19 Jul 2005 03:32:40 -0000 1.24 @@ -200,7 +200,6 @@ yyerror (ERROR_PARAMETERS) abort (); #endif fprintf (stderr, "%s\n", s); - return 0; } From MAILER-DAEMON Tue Jul 19 03:36:05 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dume5-0000Rh-0Q for mharc-bison-patches@gnu.org; Tue, 19 Jul 2005 03:36:05 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dumdv-0000Oe-U9 for bison-patches@gnu.org; Tue, 19 Jul 2005 03:35:56 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dumds-0000NW-9k for bison-patches@gnu.org; Tue, 19 Jul 2005 03:35:54 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DumbF-00081L-Dg for bison-patches@gnu.org; Tue, 19 Jul 2005 03:33:11 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DumFh-0006C5-Qw for bison-patches@gnu.org; Tue, 19 Jul 2005 03:10:54 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6J71OL17475 for ; Tue, 19 Jul 2005 00:01:24 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dum6R-0003WZ-N0 for bison-patches@gnu.org; Tue, 19 Jul 2005 00:01:19 -0700 To: bison-patches@gnu.org References: <200507190236.j6J2akvN007960@tully.CS.Berkeley.EDU> From: Paul Eggert Date: Tue, 19 Jul 2005 00:01:19 -0700 In-Reply-To: <200507190236.j6J2akvN007960@tully.CS.Berkeley.EDU> (Paul Hilfinger's message of "Mon, 18 Jul 2005 19:36:46 -0700") Message-ID: <87vf37z3cw.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: Re: Re_ data_glr.c yyinitGLRStack() (fix) X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jul 2005 07:35:58 -0000 Paul Hilfinger writes: >> By the way, it appears to me that there can be memory leaks in the GLR >> parser if the stack overflows or the user invokes YYABORT.... > > Yes, that does seem to be true (not entirely surprising, since the > destructor code that's now there isn't mine, having been added later > pretty much in parallel with yacc.c). Thanks for checking that. I installed the following patch, to fix this bug and some others that I discovered in the neighborhood. The biggest user-visible change is that the start-symbol's value is now consistently destroyed after a successful parse. All 3 parser skeletons got a little shorter as a result of this patch, which is a good sign. 2005-07-18 Paul Eggert Destructor cleanups and regularization among the three skeletons. * NEWS: Document the behavior changes. * data/glr.c (yyrecoverSyntaxError): Don't bother to pop the stack before failing, as the cleanup code will do it for us now. * data/lalr1.cc (yyerrlab): Likewise. * data/glr.c (yyparse): Pop everything off the stack before freeing it, so that destructors get called properly. * data/lalr1.cc (yyreturn): Likewise. * data/yacc.c (yyreturn): Pop and destroy the start symbol, too. This is more consistent. * doc/bison.texinfo (Destructor Decl): Mention more reasons why destructors might be called. 1.875 -> 2.1. (Destructor Decl, Decl Summary, Table of Symbols): Some English-language cleanups for %destructor. * tests/actions.at (_AT_CHECK_PRINTER_AND_DESTRUCTOR): Add output line for destructor of start symbol. * tests/calc.at (AT_CHECK_CALC): Add one to line counts, because of that same extra output line. Index: NEWS =================================================================== RCS file: /cvsroot/bison/bison/NEWS,v retrieving revision 1.119 diff -p -u -r1.119 NEWS --- NEWS 19 Jul 2005 00:05:57 -0000 1.119 +++ NEWS 19 Jul 2005 06:55:02 -0000 @@ -15,6 +15,10 @@ Changes in the next version (not yet rel has replaced "parser stack overflow", as the old message was not always accurate for modern Bison-generated parsers. +* Destructors are now called when the parser aborts, for all symbols left + behind on the stack. Also, the start symbol is now destroyed after a + successful parse. In both cases, the behavior was formerly inconsistent. + The following change was also in version 2.0a, 2005-05-22: * When generating verbose diagnostics, Bison-generated parsers no longer Index: data/glr.c =================================================================== RCS file: /cvsroot/bison/bison/data/glr.c,v retrieving revision 1.103 diff -p -u -r1.103 glr.c --- data/glr.c 19 Jul 2005 00:05:57 -0000 1.103 +++ data/glr.c 19 Jul 2005 06:55:02 -0000 @@ -1846,21 +1846,7 @@ yyrecoverSyntaxError (yyGLRStack* yystac while (yytrue) { if (*yytokenp == YYEOF) - { - /* Now pop stack until empty and fail. */ - while (yystack->yytops.yystates[0] != NULL) - { - yyGLRState *yys = yystack->yytops.yystates[0]; -]b4_location_if([[ yystack->yyerror_range[1].yystate.yyloc = yys->yyloc;]])[ - yydestruct ("Error: popping", - yystos[yys->yylrState], - &yys->yysemantics.yysval]b4_location_if([, &yys->yyloc])[); - yystack->yytops.yystates[0] = yys->yypred; - yystack->yynextFree -= 1; - yystack->yyspaceLeft += 1; - } - yyFail (yystack][]b4_lpure_args[, NULL); - } + yyFail (yystack][]b4_lpure_args[, NULL); if (*yytokenp != YYEMPTY) {]b4_location_if([[ /* We throw away the lookahead, but the error range @@ -2121,6 +2107,19 @@ b4_syncline([@oline@], [@ofile@])])dnl if (yytoken != YYEOF && yytoken != YYEMPTY) yydestruct ("Error: discarding lookahead", yytoken, yylvalp]b4_location_if([, yyllocp])[); + + /* Now pop stack until empty, destroying its entries as we go. */ + while (yystack.yytops.yystates[0] != NULL) + { + yyGLRState *yys = yystack.yytops.yystates[0]; +]b4_location_if([[ yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]])[ + yydestruct ("Error: popping", + yystos[yys->yylrState], + &yys->yysemantics.yysval]b4_location_if([, &yys->yyloc])[); + yystack.yytops.yystates[0] = yys->yypred; + yystack.yynextFree -= 1; + yystack.yyspaceLeft += 1; + } yyfreeGLRStack (&yystack); return yyresult; Index: data/lalr1.cc =================================================================== RCS file: /cvsroot/bison/bison/data/lalr1.cc,v retrieving revision 1.88 diff -p -u -r1.88 lalr1.cc --- data/lalr1.cc 18 Jul 2005 22:10:15 -0000 1.88 +++ data/lalr1.cc 19 Jul 2005 06:55:02 -0000 @@ -729,23 +729,11 @@ yyerrlab: /* If just tried and failed to reuse look-ahead token after an error, discard it. */ - /* Return failure if at end of input. */ if (yylooka_ <= yyeof_) { - /* If at end of input, pop the error token, - then the rest of the stack, then return failure. */ + /* Return failure if at end of input. */ if (yylooka_ == yyeof_) - for (;;) - { - yyerror_range_[0] = yylocation_stack_[0]; - yypop_ (); - if (yystate_stack_.height () == 1) - YYABORT; - yydestruct_ ("Error: popping", - yystos_[yystate_stack_[0]], - &yysemantic_stack_[0], - &yylocation_stack_[0]); - } + YYABORT; } else { @@ -768,7 +756,7 @@ yyerrorlab: YYERROR and the label yyerrorlab therefore never appears in user code. */ if (false) - goto yyerrorlab; + goto yyerrorlab; yyerror_range_[0] = yylocation_stack_[yylen_ - 1]; yypop_ (yylen_); @@ -838,6 +826,16 @@ yyabortlab: yyreturn: if (yylooka_ != yyeof_ && yylooka_ != yyempty_) yydestruct_ ("Error: discarding lookahead", yyilooka_, &yylval, &yylloc); + + while (yystate_stack_.height () != 1) + { + yydestruct_ ("Error: popping", + yystos_[yystate_stack_[0]], + &yysemantic_stack_[0], + &yylocation_stack_[0]); + yypop_ (); + } + return yyresult_; } Index: data/yacc.c =================================================================== RCS file: /cvsroot/bison/bison/data/yacc.c,v retrieving revision 1.97 diff -p -u -r1.97 yacc.c --- data/yacc.c 19 Jul 2005 00:05:57 -0000 1.97 +++ data/yacc.c 19 Jul 2005 06:55:02 -0000 @@ -1220,8 +1220,7 @@ yyerrlab: if (yychar <= YYEOF) { - /* If at end of input, pop the error token, - then the rest of the stack, then return failure. */ + /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } @@ -1333,16 +1332,12 @@ yyreturn: if (yychar != YYEOF && yychar != YYEMPTY) yydestruct ("Error: discarding lookahead", yytoken, &yylval]b4_location_if([, &yylloc])[); - if (yyssp != yyss) - for (;;) - { -]b4_location_if([[ yyerror_range[0] = *yylsp;]])[ - YYPOPSTACK; - if (yyssp == yyss) - break; - yydestruct ("Error: popping", - yystos[*yyssp], yyvsp]b4_location_if([, yylsp])[); - } + while (yyssp != yyss) + { + yydestruct ("Error: popping", + yystos[*yyssp], yyvsp]b4_location_if([, yylsp])[); + YYPOPSTACK; + } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); Index: doc/bison.texinfo =================================================================== RCS file: /cvsroot/bison/bison/doc/bison.texinfo,v retrieving revision 1.152 diff -p -u -r1.152 bison.texinfo --- doc/bison.texinfo 19 Jul 2005 00:05:57 -0000 1.152 +++ doc/bison.texinfo 19 Jul 2005 06:55:02 -0000 @@ -3792,28 +3792,31 @@ For instance, if your locations use a fi @cindex freeing discarded symbols @findex %destructor -Some symbols can be discarded by the parser. For instance, during error -recovery (@pxref{Error Recovery}), embarrassing symbols already pushed -on the stack, and embarrassing tokens coming from the rest of the file -are thrown away until the parser falls on its feet. If these symbols -convey heap based information, this memory is lost. While this behavior -can be tolerable for batch parsers, such as in compilers, it is not for -possibly ``never ending'' parsers such as shells, or implementations of -communication protocols. +Some symbols can be discarded by the parser. During error +recovery (@pxref{Error Recovery}), symbols already pushed +on the stack and tokens coming from the rest of the file +are discarded until the parser falls on its feet. If the parser +runs out of memory, all the symbols on the stack must be discarded. +Even if the parser succeeds, it must discard the start symbol. + +When discarded symbols convey heap based information, this memory is +lost. While this behavior can be tolerable for batch parsers, such as +in traditional compilers, it is unacceptable for programs like shells +or protocol implementations that may parse and execute indefinitely. -The @code{%destructor} directive allows for the definition of code that -is called when a symbol is thrown away. +The @code{%destructor} directive defines code that +is called when a symbol is discarded. @deffn {Directive} %destructor @{ @var{code} @} @var{symbols} @findex %destructor -Declare that the @var{code} must be invoked for each of the -@var{symbols} that will be discarded by the parser. The @var{code} -should use @code{$$} to designate the semantic value associated to the -@var{symbols}. The additional parser parameters are also available +Invoke @var{code} whenever the parser discards one of the +@var{symbols}. Within @var{code}, @code{$$} designates the semantic +value associated with the discarded symbol. The additional +parser parameters are also available (@pxref{Parser Function, , The Parser Function @code{yyparse}}). -@strong{Warning:} as of Bison 1.875, this feature is still considered as -experimental, as there was not enough user feedback. In particular, +@strong{Warning:} as of Bison 2.1, this feature is still +experimental, as there has not been enough user feedback. In particular, the syntax might still change. @end deffn @@ -3830,7 +3833,7 @@ For instance: @end smallexample @noindent -guarantees that when a @code{STRING} or a @code{string} will be discarded, +guarantees that when a @code{STRING} or a @code{string} is discarded, its associated memory will be freed. Note that in the future, Bison might also consider that right hand side @@ -3862,8 +3865,11 @@ stacked symbols popped during the first @item incoming terminals during the second phase of error recovery, @item -the current look-ahead when the parser aborts (either via an explicit -call to @code{YYABORT}, or as a consequence of a failed error recovery). +the current look-ahead and the entire stack when the parser aborts +(either via an explicit call to @code{YYABORT}, or as a consequence of +a failed error recovery or of memory exhaustion), and +@item +the start symbol, when the parser succeeds. @end itemize @@ -4085,7 +4091,7 @@ above-mentioned declarations and to the @end deffn @deffn {Directive} %destructor -Specifying how the parser should reclaim the memory associated to +Specify how the parser should reclaim the memory associated to discarded symbols. @xref{Destructor Decl, , Freeing Discarded Symbols}. @end deffn @@ -7821,7 +7827,7 @@ Bison declaration to create a header fil @end deffn @deffn {Directive} %destructor -Specifying how the parser should reclaim the memory associated to +Specify how the parser should reclaim the memory associated to discarded symbols. @xref{Destructor Decl, , Freeing Discarded Symbols}. @end deffn Index: tests/actions.at =================================================================== RCS file: /cvsroot/bison/bison/tests/actions.at,v retrieving revision 1.51 diff -p -u -r1.51 actions.at --- tests/actions.at 19 Jul 2005 00:05:57 -0000 1.51 +++ tests/actions.at 19 Jul 2005 06:55:02 -0000 @@ -373,6 +373,7 @@ line (0@0-29): '(' (0@0-9) thing (1@10-1 sending: EOF (3@30-39) input (0@29-29): /* Nothing */ input (2@0-29): line (0@0-29) input (0@29-29) +Freeing nterm input (2@0-29) Successful parse. ]]) @@ -391,6 +392,7 @@ line (-1@0-29): '(' (0@0-9) error (@10-1 sending: EOF (3@30-39) input (0@29-29): /* Nothing */ input (2@0-29): line (-1@0-29) input (0@29-29) +Freeing nterm input (2@0-29) Successful parse. ]]) Index: tests/calc.at =================================================================== RCS file: /cvsroot/bison/bison/tests/calc.at,v retrieving revision 1.75 diff -p -u -r1.75 calc.at --- tests/calc.at 18 Jul 2005 18:09:40 -0000 1.75 +++ tests/calc.at 19 Jul 2005 06:55:02 -0000 @@ -463,7 +463,7 @@ _AT_CHECK_CALC([$1], 2^2^3 = 256 (2^2)^3 = 64], - [570]) + [571]) # Some syntax errors. _AT_CHECK_CALC_ERROR([$1], [1], [0 0], [13], @@ -501,7 +501,7 @@ _AT_CHECK_CALC_ERROR([$1], [1], [/dev/nu # _AT_CHECK_CALC_ERROR([$1], [0], [() + (1 + 1 + 1 +) + (* * *) + (1 * 2 * *) = 1], - [188], + [189], [1.1: syntax error, unexpected ')', expecting number or '-' or '(' or '!' 1.17: syntax error, unexpected ')', expecting number or '-' or '(' or '!' 1.22: syntax error, unexpected '*', expecting number or '-' or '(' or '!' @@ -510,10 +510,10 @@ calc: error: 4444 != 1]) # The same, but this time exercising explicitly triggered syntax errors. # POSIX says the look-ahead causing the error should not be discarded. -_AT_CHECK_CALC_ERROR([$1], [0], [(!) + (0 0) = 1], [75], +_AT_CHECK_CALC_ERROR([$1], [0], [(!) + (0 0) = 1], [76], [1.9: syntax error, unexpected number calc: error: 2222 != 1]) -_AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (0 0) = 1], [85], +_AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (0 0) = 1], [86], [1.3: syntax error, unexpected '*', expecting number or '-' or '(' or '!' 1.11: syntax error, unexpected number calc: error: 2222 != 1]) From MAILER-DAEMON Wed Jul 20 17:23:21 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DvM2B-0000DM-Uh for mharc-bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:20 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DvM23-00006E-3N for bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:11 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DvM1w-0008VF-MF for bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:05 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DvM1w-0008Ud-A5 for bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:04 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DvM8z-0004Q4-E2 for bison-patches@gnu.org; Wed, 20 Jul 2005 17:30:21 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6KLKXL18331 for ; Wed, 20 Jul 2005 14:20:33 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DvLzQ-0003lL-5n for bison-patches@gnu.org; Wed, 20 Jul 2005 14:20:28 -0700 To: bison-patches@gnu.org From: Paul Eggert Date: Wed, 20 Jul 2005 14:20:28 -0700 Message-ID: <87mzohqin7.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: cxx-type.at patch for overly picky C compilers X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2005 21:23:15 -0000 I installed this: 2005-07-20 Paul Eggert * tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): Work even with overly-picky compilers that reject 'char *foo = "bar";'. --- tests/cxx-type.at 19 Jul 2005 03:32:40 -0000 1.24 +++ tests/cxx-type.at 20 Jul 2005 21:00:43 -0000 @@ -82,7 +82,7 @@ prog : stmt : expr ';' $2 { $$ = ]$[1; } | decl $3 - | error ';' { $$ = ""; } + | error ';' { static char error_msg[] = ""; $$ = error_msg; } | '@' { YYACCEPT; } ; @@ -178,9 +178,10 @@ yylex (LEX_PARAMETERS) } else { + static char empty_string[] = ""; colNum += 1; tok = c; - yylval = ""; + yylval = empty_string; } #if YYLSP_NEEDED yylloc.last_column = colNum-1; From MAILER-DAEMON Wed Jul 20 17:23:34 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DvM2O-0000Kr-HR for mharc-bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:32 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DvM27-0000Be-Lu for bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:18 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DvM21-00007g-3Z for bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:09 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DvM20-0008Ud-GN for bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:08 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DvM3k-00047V-4j for bison-patches@gnu.org; Wed, 20 Jul 2005 17:24:57 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6KLF4L17759 for ; Wed, 20 Jul 2005 14:15:04 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DvLu7-0003kw-K9 for bison-patches@gnu.org; Wed, 20 Jul 2005 14:14:59 -0700 To: bison-patches@gnu.org From: Paul Eggert Date: Wed, 20 Jul 2005 14:14:59 -0700 Message-ID: <87vf35qiwc.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: lib/subpipe.c changes to avoid GCC 4 warnings X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2005 21:23:22 -0000 GCC 4 is a bit different about generating vfork-realted warnings, so I modified lib/subpipe.c to pacify it, as follows. The old code should work but it's nicer not to have to paw through the bogus warnings. 2005-07-20 Paul Eggert * lib/subpipe.c (create_subpipe): Rewrite slightly to avoid warnings from GCC 4. --- subpipe.c.~1.5.~ 2005-05-25 12:48:00.000000000 -0700 +++ subpipe.c 2005-07-20 14:10:01.000000000 -0700 @@ -100,27 +100,17 @@ pid_t create_subpipe (char const * const *argv, int fd[2]) { int pipe_fd[2]; - int from_in_fd; - int from_out_fd; - int to_in_fd; - int to_out_fd; + int child_fd[2]; pid_t pid; - if (pipe (pipe_fd) != 0 - || (to_in_fd = fd_safer (pipe_fd[0])) < 0 - || (to_out_fd = fd_safer (pipe_fd[1])) < 0 + if (pipe (child_fd) != 0 + || (child_fd[0] = fd_safer (child_fd[0])) < 0 + || (fd[0] = fd_safer (child_fd[1])) < 0 || pipe (pipe_fd) != 0 - || (from_in_fd = fd_safer (pipe_fd[0])) < 0 - || (from_out_fd = fd_safer (pipe_fd[1])) < 0) + || (fd[1] = fd_safer (pipe_fd[0])) < 0 + || (child_fd[1] = fd_safer (pipe_fd[1])) < 0) error (EXIT_FAILURE, errno, "pipe"); - /* Save the local variables in the parent now, in case vfork - clobbers them. */ - fd[0] = to_out_fd; - fd[1] = from_in_fd; - pipe_fd[0] = to_in_fd; - pipe_fd[1] = from_out_fd; - pid = vfork (); if (pid < 0) error (EXIT_FAILURE, errno, "fork"); @@ -128,12 +118,12 @@ create_subpipe (char const * const *argv if (! pid) { /* Child. */ - close (to_out_fd); - close (from_in_fd); - dup2 (to_in_fd, STDIN_FILENO); - close (to_in_fd); - dup2 (from_out_fd, STDOUT_FILENO); - close (from_out_fd); + close (fd[0]); + close (fd[1]); + dup2 (child_fd[0], STDIN_FILENO); + close (child_fd[0]); + dup2 (child_fd[1], STDOUT_FILENO); + close (child_fd[1]); /* The cast to (char **) rather than (char * const *) is needed for portability to older hosts with a nonstandard prototype @@ -144,8 +134,8 @@ create_subpipe (char const * const *argv } /* Parent. */ - close (pipe_fd[0]); - close (pipe_fd[1]); + close (child_fd[0]); + close (child_fd[1]); return pid; } From MAILER-DAEMON Wed Jul 20 17:23:35 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DvM2N-0000K0-FY for mharc-bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:31 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DvM27-0000Aa-LE for bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:18 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DvM1y-000056-WA for bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:07 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DvM1y-0008Ud-2X for bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:06 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DvM6W-0004Eo-4Z for bison-patches@gnu.org; Wed, 20 Jul 2005 17:27:48 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6KLHxL18030 for ; Wed, 20 Jul 2005 14:17:59 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DvLww-0003lA-DH for bison-patches@gnu.org; Wed, 20 Jul 2005 14:17:54 -0700 To: bison-patches@gnu.org From: Paul Eggert Date: Wed, 20 Jul 2005 14:17:54 -0700 Message-ID: <87r7dtqirh.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: src/symtab.c typo introduced July 12 X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2005 21:23:22 -0000 I installed this obvious (I think :-) patch: 2005-07-20 Paul Eggert * src/symtab.c (SYMBOL_ATTR_PRINT, symbol_print): Direct output to FILE * parameter, not to stderr. This fixes a typo introduced in the 2005-07-12 change. --- src/symtab.c 12 Jul 2005 15:58:49 -0000 1.64 +++ src/symtab.c 20 Jul 2005 21:00:43 -0000 @@ -80,12 +80,12 @@ symbol_new (uniqstr tag, location loc) #define SYMBOL_ATTR_PRINT(Attr) \ if (s->Attr) \ - fprintf (stderr, " %s { %s }", #Attr, s->Attr) + fprintf (f, " %s { %s }", #Attr, s->Attr) void symbol_print (symbol *s, FILE *f) { - fprintf (stderr, "\"%s\"", s->tag); + fprintf (f, "\"%s\"", s->tag); SYMBOL_ATTR_PRINT (type_name); SYMBOL_ATTR_PRINT (destructor); SYMBOL_ATTR_PRINT (printer); From MAILER-DAEMON Wed Jul 20 17:24:14 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DvM2R-0000Mn-FP for mharc-bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:35 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DvM2I-0000Gv-Bn for bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:27 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DvM23-00008u-5l for bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:23 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DvM22-0008Ud-6M for bison-patches@gnu.org; Wed, 20 Jul 2005 17:23:10 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DvLy1-0003uh-Ni for bison-patches@gnu.org; Wed, 20 Jul 2005 17:19:02 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6KL9BL17307 for ; Wed, 20 Jul 2005 14:09:12 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DvLoQ-0000hP-TU for bison-patches@gnu.org; Wed, 20 Jul 2005 14:09:06 -0700 To: bison-patches@gnu.org From: Paul Eggert Date: Wed, 20 Jul 2005 14:09:06 -0700 Message-ID: <87zmshqj65.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: glr.c minor simplifications to remove unused parameters X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2005 21:23:33 -0000 GCC issues warnings about glr.c if you use the right -W options. This is because of the recent revamping of how stack overflow is handled. I installed this patch to simplify glr.c and pacify GCC: 2005-07-20 Paul Eggert * data/glr.c (yyexpandGLRStack, yyaddDeferredAction, yyexpandGLRStack): (yyglrShiftDefer, yysplitStack): Remove unused parameters b4_pure_formals. All uses changed. (yyglrShift): Remove unused parameters b4_user_formals. All uses changed. (yyglrReduce): Removed unused parameter yylocp. All uses changed. --- data/glr.c 19 Jul 2005 06:56:43 -0000 1.104 +++ data/glr.c 20 Jul 2005 21:00:43 -0000 @@ -687,7 +687,7 @@ struct yyGLRStack { yyGLRStateSet yytops; }; -static void yyexpandGLRStack (yyGLRStack* yystack]b4_pure_formals[); +static void yyexpandGLRStack (yyGLRStack* yystack); static void yyFail (yyGLRStack* yystack]b4_pure_formals[, const char* yymsg) @@ -927,7 +927,7 @@ yyisErrorAction (int yyaction) static void yyaddDeferredAction (yyGLRStack* yystack, yyGLRState* yystate, - yyGLRState* rhs, yyRuleNum yyrule]b4_pure_formals[) + yyGLRState* rhs, yyRuleNum yyrule) { yySemanticOption* yynewItem; yynewItem = &yystack->yynextFree->yyoption; @@ -939,7 +939,7 @@ yyaddDeferredAction (yyGLRStack* yystack yynewItem->yynext = yystate->yysemantics.yyfirstVal; yystate->yysemantics.yyfirstVal = yynewItem; if (yystack->yyspaceLeft < YYHEADROOM) - yyexpandGLRStack (yystack]b4_pure_args[); + yyexpandGLRStack (yystack); } /* GLRStacks */ @@ -986,7 +986,7 @@ yyinitGLRStack (yyGLRStack* yystack, siz allocation, so that we can avoid having external pointers exist across an allocation. */ static void -yyexpandGLRStack (yyGLRStack* yystack]b4_pure_formals[) +yyexpandGLRStack (yyGLRStack* yystack) { #if YYSTACKEXPANDABLE yyGLRStackItem* yynewItems; @@ -1043,7 +1043,6 @@ yyexpandGLRStack (yyGLRStack* yystack]b4 yystack->yyspaceLeft = yynewSize - yysize; #else - yyMemoryExhausted (yystack); #endif } @@ -1122,7 +1121,7 @@ yyremoveDeletes (yyGLRStack* yystack) static inline void yyglrShift (yyGLRStack* yystack, size_t yyk, yyStateNum yylrState, size_t yyposn, - YYSTYPE yysval, YYLTYPE* yylocp]b4_user_formals[) + YYSTYPE yysval, YYLTYPE* yylocp) { yyGLRStackItem* yynewItem; @@ -1138,7 +1137,7 @@ yyglrShift (yyGLRStack* yystack, size_t yynewItem->yystate.yysemantics.yysval = yysval; yynewItem->yystate.yyloc = *yylocp; if (yystack->yyspaceLeft < YYHEADROOM) - yyexpandGLRStack (yystack]b4_pure_args[); + yyexpandGLRStack (yystack); } /** Shift stack #K of YYSTACK, to a new state corresponding to LR @@ -1146,7 +1145,7 @@ yyglrShift (yyGLRStack* yystack, size_t * semantic value of YYRHS under the action for YYRULE. */ static inline void yyglrShiftDefer (yyGLRStack* yystack, size_t yyk, yyStateNum yylrState, - size_t yyposn, yyGLRState* rhs, yyRuleNum yyrule]b4_pure_formals[) + size_t yyposn, yyGLRState* rhs, yyRuleNum yyrule) { yyGLRStackItem* yynewItem; @@ -1160,7 +1159,7 @@ yyglrShiftDefer (yyGLRStack* yystack, si yystack->yytops.yystates[yyk] = &yynewItem->yystate; yystack->yynextFree += 1; yystack->yyspaceLeft -= 1; - yyaddDeferredAction (yystack, &yynewItem->yystate, rhs, yyrule]b4_pure_args[); + yyaddDeferredAction (yystack, &yynewItem->yystate, rhs, yyrule); } /** Pop the symbols consumed by reduction #RULE from the top of stack @@ -1245,7 +1244,7 @@ yy_reduce_print (size_t yyk, yyRuleNum y */ static inline YYRESULTTAG yyglrReduce (yyGLRStack* yystack, size_t yyk, yyRuleNum yyrule, - yybool yyforceEval]b4_pure_formals[) + yybool yyforceEval]b4_user_formals[) { size_t yyposn = yystack->yytops.yystates[yyk]->yyposn; @@ -1259,7 +1258,7 @@ yyglrReduce (yyGLRStack* yystack, size_t yyglrShift (yystack, yyk, yyLRgotoState (yystack->yytops.yystates[yyk]->yylrState, yylhsNonterm (yyrule)), - yyposn, yysval, &yyloc]b4_user_args[); + yyposn, yysval, &yyloc); } else { @@ -1288,7 +1287,7 @@ yyglrReduce (yyGLRStack* yystack, size_t { if (yyp->yylrState == yynewLRState && yyp->yypred == yys) { - yyaddDeferredAction (yystack, yyp, yys0, yyrule]b4_pure_args[); + yyaddDeferredAction (yystack, yyp, yys0, yyrule); yymarkStackDeleted (yystack, yyk); YYDPRINTF ((stderr, "Merging stack %lu into stack %lu.\n", (unsigned long int) yyk, @@ -1299,13 +1298,13 @@ yyglrReduce (yyGLRStack* yystack, size_t } } yystack->yytops.yystates[yyk] = yys; - yyglrShiftDefer (yystack, yyk, yynewLRState, yyposn, yys0, yyrule]b4_pure_args[); + yyglrShiftDefer (yystack, yyk, yynewLRState, yyposn, yys0, yyrule); } return yyok; } static size_t -yysplitStack (yyGLRStack* yystack, size_t yyk]b4_pure_formals[) +yysplitStack (yyGLRStack* yystack, size_t yyk) { if (yystack->yysplitPoint == NULL) { @@ -1670,7 +1669,7 @@ yyprocessOneStack (yyGLRStack* yystack, yymarkStackDeleted (yystack, yyk); return yyok; } - YYCHK (yyglrReduce (yystack, yyk, yyrule, yyfalse]b4_lpure_args[)); + YYCHK (yyglrReduce (yystack, yyk, yyrule, yyfalse]b4_user_args[)); } else { @@ -1686,12 +1685,12 @@ yyprocessOneStack (yyGLRStack* yystack, while (*yyconflicts != 0) { - size_t yynewStack = yysplitStack (yystack, yyk]b4_pure_args[); + size_t yynewStack = yysplitStack (yystack, yyk); YYDPRINTF ((stderr, "Splitting off stack %lu from %lu.\n", (unsigned long int) yynewStack, (unsigned long int) yyk)); YYCHK (yyglrReduce (yystack, yynewStack, - *yyconflicts, yyfalse]b4_lpure_args[)); + *yyconflicts, yyfalse]b4_user_args[)); YYCHK (yyprocessOneStack (yystack, yynewStack, yyposn, yylvalp, yyllocp]b4_pure_args[)); yyconflicts += 1; @@ -1702,7 +1701,7 @@ yyprocessOneStack (yyGLRStack* yystack, YYDPRINTF ((stderr, "On stack %lu, ", (unsigned long int) yyk)); YY_SYMBOL_PRINT ("shifting", *yytokenp, yylvalp, yyllocp); yyglrShift (yystack, yyk, yyaction, yyposn+1, - *yylvalp, yyllocp]b4_user_args[); + *yylvalp, yyllocp); YYDPRINTF ((stderr, ", now in state #%d\n", yystack->yytops.yystates[yyk]->yylrState)); break; @@ -1715,7 +1714,7 @@ yyprocessOneStack (yyGLRStack* yystack, break; } else - YYCHK (yyglrReduce (yystack, yyk, -yyaction, yyfalse]b4_lpure_args[)); + YYCHK (yyglrReduce (yystack, yyk, -yyaction, yyfalse]b4_user_args[)); } } return yyok; @@ -1908,7 +1907,7 @@ yyrecoverSyntaxError (yyGLRStack* yystac yylvalp, &yyerrloc); YYDPRINTF ((stderr, "\n")); yyglrShift (yystack, 0, yytable[yyj], - yys->yyposn, *yylvalp, &yyerrloc]b4_user_args[); + yys->yyposn, *yylvalp, &yyerrloc); yys = yystack->yytops.yystates[0]; break; } @@ -1989,7 +1988,7 @@ b4_syncline([@oline@], [@ofile@])])dnl case 2: goto yyexhaustedlab; } yystack.yytokenp = &yytoken; - yyglrShift (&yystack, 0, 0, 0, yylval, &yylloc]b4_user_args[); + yyglrShift (&yystack, 0, 0, 0, yylval, &yylloc); yyposn = 0; while (yytrue) @@ -2017,7 +2016,7 @@ b4_syncline([@oline@], [@ofile@])])dnl yyreportSyntaxError (&yystack, yylvalp, yyllocp]b4_user_args[); goto yyuser_error; } - YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue]b4_lpure_args[)); + YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue]b4_user_args[)); } else { @@ -2039,8 +2038,7 @@ b4_syncline([@oline@], [@ofile@])])dnl if (yytoken != YYEOF) yytoken = YYEMPTY; yyposn += 1; - yyglrShift (&yystack, 0, yyaction, yyposn, - yylval, yyllocp]b4_user_args[); + yyglrShift (&yystack, 0, yyaction, yyposn, yylval, yyllocp); if (0 < yystack.yyerrState) yystack.yyerrState -= 1; } @@ -2051,7 +2049,7 @@ b4_syncline([@oline@], [@ofile@])])dnl goto yyuser_error; } else - YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue]b4_lpure_args[)); + YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue]b4_user_args[)); } } From MAILER-DAEMON Wed Jul 20 17:27:04 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DvM5o-0001Im-0e for mharc-bison-patches@gnu.org; Wed, 20 Jul 2005 17:27:04 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DvM5j-0001Hs-TI for bison-patches@gnu.org; Wed, 20 Jul 2005 17:27:00 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DvM5i-0001H0-9s for bison-patches@gnu.org; Wed, 20 Jul 2005 17:26:58 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DvM5h-0001GT-Su for bison-patches@gnu.org; Wed, 20 Jul 2005 17:26:57 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DvMCs-0004uN-BK for bison-patches@gnu.org; Wed, 20 Jul 2005 17:34:22 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6KLOXL18617 for ; Wed, 20 Jul 2005 14:24:33 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DvM3J-0003lg-02 for bison-patches@gnu.org; Wed, 20 Jul 2005 14:24:29 -0700 To: bison-patches@gnu.org From: Paul Eggert Date: Wed, 20 Jul 2005 14:24:28 -0700 Message-ID: <87irz5qigj.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: patch to pacify GCC when flex 2.5.31 is used X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2005 21:27:00 -0000 I installed this awful hack. Suggestions for improvement are welcome. 2005-07-20 Paul Eggert * src/scan-gram.l (gram_get_lineno, gram_get_in, gram_get_out): (gram_get_leng, gram_get_text, gram_set_lineno, gram_set_in): (gram_set_out, gram_get_debug, gram_set_debug, gram_lex_destroy): Add declarations to pacify "gcc -Wmissing-prototypes" when flex 2.5.31 is used. * src/scan-skel.l (skel_get_lineno, skel_get_in, skel_get_out): (skel_get_leng, skel_get_text, skel_set_lineno, skel_set_in): (skel_set_out, skel_get_debug, skel_set_debug, skel_lex_destroy): Likewise. Index: src/scan-gram.l =================================================================== RCS file: /cvsroot/bison/bison/src/scan-gram.l,v retrieving revision 1.73 diff -p -u -r1.73 scan-gram.l --- src/scan-gram.l 14 May 2005 06:49:48 -0000 1.73 +++ src/scan-gram.l 20 Jul 2005 21:20:45 -0000 @@ -48,6 +48,19 @@ } \ while (0) +/* Pacify "gcc -Wmissing-prototypes" when flex 2.5.31 is used. */ +int gram_get_lineno (void); +FILE *gram_get_in (void); +FILE *gram_get_out (void); +int gram_get_leng (void); +char *gram_get_text (void); +void gram_set_lineno (int); +void gram_set_in (FILE *); +void gram_set_out (FILE *); +int gram_get_debug (void); +void gram_set_debug (int); +int gram_lex_destroy (void); + /* Location of scanner cursor. */ boundary scanner_cursor; Index: src/scan-skel.l =================================================================== RCS file: /cvsroot/bison/bison/src/scan-skel.l,v retrieving revision 1.30 diff -p -u -r1.30 scan-skel.l --- src/scan-skel.l 14 May 2005 06:49:48 -0000 1.30 +++ src/scan-skel.l 20 Jul 2005 21:20:45 -0000 @@ -34,6 +34,19 @@ int skel_lex (void); +/* Pacify "gcc -Wmissing-prototypes" when flex 2.5.31 is used. */ +int skel_get_lineno (void); +FILE *skel_get_in (void); +FILE *skel_get_out (void); +int skel_get_leng (void); +char *skel_get_text (void); +void skel_set_lineno (int); +void skel_set_in (FILE *); +void skel_set_out (FILE *); +int skel_get_debug (void); +void skel_set_debug (int); +int skel_lex_destroy (void); + #define QPUTS(String) \ fputs (quotearg_style (c_quoting_style, (String)), yyout) From MAILER-DAEMON Wed Jul 20 17:51:29 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DvMTQ-0001UD-Sg for mharc-bison-patches@gnu.org; Wed, 20 Jul 2005 17:51:28 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DvMSJ-0001HI-OI for bison-patches@gnu.org; Wed, 20 Jul 2005 17:50:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DvMRu-00016h-23 for bison-patches@gnu.org; Wed, 20 Jul 2005 17:49:54 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DvMRt-000162-V4 for bison-patches@gnu.org; Wed, 20 Jul 2005 17:49:53 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DvMXk-00061E-RS for bison-patches@gnu.org; Wed, 20 Jul 2005 17:55:57 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6KLjvL20488; Wed, 20 Jul 2005 14:45:57 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DvMO0-0000dT-Vr; Wed, 20 Jul 2005 14:45:53 -0700 To: twlevo@xs4all.nl References: <17742.80.126.59.26.1121791835.squirrel@80.126.59.26> From: Paul Eggert Date: Wed, 20 Jul 2005 14:45:52 -0700 In-Reply-To: <17742.80.126.59.26.1121791835.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Tue, 19 Jul 2005 16:50:35 -0000 (GMT)") Message-ID: <87ek9tqhgv.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: GLR init X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2005 21:51:27 -0000 twlevo@xs4all.nl writes: > At init of glr.c there are _always_ 2 malloc's done, > but the respons at malloc() failures is this: > > situation: first malloc() oke, 2nd one failure, > result: exit code 139, and a segfault Thanks for reporting that. > [would merge yyinitGLRStack and yyinitStateSet] Yes, that might make sense, but I'd like Paul Hilfinger's opinion. In the meantime I installed this fix: 2005-07-20 Paul Eggert * data/glr.c (yyreturn): Don't pop stack if yyinitStateSet failed, as the stack isn't valid in that case. Problem reported by twlevo@xs4all.nl. Index: data/glr.c =================================================================== RCS file: /cvsroot/bison/bison/data/glr.c,v retrieving revision 1.105 diff -p -u -r1.105 glr.c --- data/glr.c 20 Jul 2005 21:06:26 -0000 1.105 +++ data/glr.c 20 Jul 2005 21:41:37 -0000 @@ -2107,17 +2107,21 @@ b4_syncline([@oline@], [@ofile@])])dnl yytoken, yylvalp]b4_location_if([, yyllocp])[); /* Now pop stack until empty, destroying its entries as we go. */ - while (yystack.yytops.yystates[0] != NULL) - { - yyGLRState *yys = yystack.yytops.yystates[0]; -]b4_location_if([[ yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]])[ - yydestruct ("Error: popping", - yystos[yys->yylrState], - &yys->yysemantics.yysval]b4_location_if([, &yys->yyloc])[); - yystack.yytops.yystates[0] = yys->yypred; - yystack.yynextFree -= 1; - yystack.yyspaceLeft += 1; - } + { + yyGLRState** yystates = yystack.yytops.yystates; + if (yystates) + while (yystates[0]) + { + yyGLRState *yys = yystates[0]; +]b4_location_if([[ yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]] +)[ yydestruct ("Error: popping", + yystos[yys->yylrState], + &yys->yysemantics.yysval]b4_location_if([, &yys->yyloc])[); + yystates[0] = yys->yypred; + yystack.yynextFree -= 1; + yystack.yyspaceLeft += 1; + } + } yyfreeGLRStack (&yystack); return yyresult; From MAILER-DAEMON Wed Jul 20 18:30:59 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DvN5e-0005Hu-AF for mharc-bison-patches@gnu.org; Wed, 20 Jul 2005 18:30:58 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DvN5S-0005Bx-7y for bison-patches@gnu.org; Wed, 20 Jul 2005 18:30:46 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DvN5E-00053X-Bt for bison-patches@gnu.org; Wed, 20 Jul 2005 18:30:37 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DvN5C-0004yR-Pv for bison-patches@gnu.org; Wed, 20 Jul 2005 18:30:30 -0400 Received: from [128.32.153.227] (helo=tully.CS.Berkeley.EDU) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DvN2C-0007wR-5p for bison-patches@gnu.org; Wed, 20 Jul 2005 18:27:24 -0400 Received: from tully.CS.Berkeley.EDU (localhost [127.0.0.1]) by tully.CS.Berkeley.EDU (8.12.7/8.12.7/3.141592645) with ESMTP id j6KMHX9S016389; Wed, 20 Jul 2005 15:17:33 -0700 (PDT) Received: from tully.CS.Berkeley.EDU (hilfingr@localhost) by tully.CS.Berkeley.EDU (8.12.7/8.12.7/Submit) with ESMTP id j6KMHXux016386; Wed, 20 Jul 2005 15:17:33 -0700 (PDT) Message-Id: <200507202217.j6KMHXux016386@tully.CS.Berkeley.EDU> To: Paul Eggert In-Reply-To: Message from Paul Eggert of "Wed, 20 Jul 2005 14:45:52 PDT." <87ek9tqhgv.fsf@penguin.cs.ucla.edu> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-ID: <16382.1121897852.1@tully.CS.Berkeley.EDU> Date: Wed, 20 Jul 2005 15:17:32 -0700 From: Paul Hilfinger Cc: twlevo@xs4all.nl, bison-patches@gnu.org Subject: Re: GLR init X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2005 22:30:50 -0000 > > [would merge yyinitGLRStack and yyinitStateSet] > > Yes, that might make sense, but I'd like Paul Hilfinger's opinion. > In the meantime I installed this fix: > It's a matter of indifference to me, since "state set" is not a particularly self-contained abstraction. If you do, however, be sure also to merge yyfreeStateSet into yyfreeGLRStack. Paul H. From MAILER-DAEMON Wed Jul 20 18:36:04 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DvN5t-0005LN-Iz for mharc-bison-patches@gnu.org; Wed, 20 Jul 2005 18:31:13 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DvN5j-0005JW-8y for bison-patches@gnu.org; Wed, 20 Jul 2005 18:31:03 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DvN5g-0005Ih-A0 for bison-patches@gnu.org; Wed, 20 Jul 2005 18:31:01 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DvN5W-0004yR-P7 for bison-patches@gnu.org; Wed, 20 Jul 2005 18:30:51 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DvMp5-0007Q0-LL for bison-patches@gnu.org; Wed, 20 Jul 2005 18:13:51 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6KM3tL21766; Wed, 20 Jul 2005 15:03:55 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DvMfO-0000hA-OP; Wed, 20 Jul 2005 15:03:50 -0700 To: twlevo@xs4all.nl References: <23288.80.126.59.26.1121874984.squirrel@80.126.59.26> From: Paul Eggert Date: Wed, 20 Jul 2005 15:03:50 -0700 In-Reply-To: <23288.80.126.59.26.1121874984.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Wed, 20 Jul 2005 15:56:24 -0000 (GMT)") Message-ID: <871x5tqgmx.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: cxx-type.at exit status X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2005 22:31:05 -0000 twlevo@xs4all.nl writes: > Tests do not print the exit status in the testsuite.log file : > 119: cxx-type.at:318 GLR: Resolve ambiguity, impure, no locations > ... > > expected to see lines like : > cxx-type.at:318: exit code was 2, expected 0 Thanks for reporting that. I installed this fix: 2005-07-20 Paul Eggert * tests/cxx-type.at: Don't pipe output of ./types through sed to remove trailing spaces. This loses the exit status of ./types, and isn't needed since ./types shouldn't be emitting trailing spaces. Index: cxx-type.at =================================================================== RCS file: /cvsroot/bison/bison/tests/cxx-type.at,v retrieving revision 1.25 retrieving revision 1.26 diff -p -u -r1.25 -r1.26 --- cxx-type.at 20 Jul 2005 21:19:40 -0000 1.25 +++ cxx-type.at 20 Jul 2005 22:01:47 -0000 1.26 @@ -319,60 +319,60 @@ m4_define([_AT_VERBOSE_GLR_STDERR], AT_SETUP([GLR: Resolve ambiguity, impure, no locations]) _AT_TEST_GLR_CXXTYPES([], [%dprec 1], [%dprec 2]) -AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, +AT_PARSER_CHECK([[./types test-input]], 0, _AT_RESOLVED_GLR_OUTPUT, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Resolve ambiguity, impure, locations]) _AT_TEST_GLR_CXXTYPES([%locations],[%dprec 1],[%dprec 2]) -AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, +AT_PARSER_CHECK([[./types test-input]], 0, _AT_RESOLVED_GLR_OUTPUT_WITH_LOC, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Resolve ambiguity, pure, no locations]) _AT_TEST_GLR_CXXTYPES([%pure-parser], [%dprec 1], [%dprec 2]) -AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, +AT_PARSER_CHECK([[./types test-input]], 0, _AT_RESOLVED_GLR_OUTPUT, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Resolve ambiguity, pure, locations]) _AT_TEST_GLR_CXXTYPES([%pure-parser %locations], [%dprec 1], [%dprec 2]) -AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, +AT_PARSER_CHECK([[./types test-input]], 0, _AT_RESOLVED_GLR_OUTPUT_WITH_LOC, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Merge conflicting parses, impure, no locations]) _AT_TEST_GLR_CXXTYPES([], [%merge ], [%merge ]) -AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, +AT_PARSER_CHECK([[./types test-input]], 0, _AT_AMBIG_GLR_OUTPUT, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Merge conflicting parses, impure, locations]) _AT_TEST_GLR_CXXTYPES([%locations], [%merge ], [%merge ]) -AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, +AT_PARSER_CHECK([[./types test-input]], 0, _AT_AMBIG_GLR_OUTPUT_WITH_LOC, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Merge conflicting parses, pure, no locations]) _AT_TEST_GLR_CXXTYPES([%pure-parser], [%merge ], [%merge ]) -AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, +AT_PARSER_CHECK([[./types test-input]], 0, _AT_AMBIG_GLR_OUTPUT, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Merge conflicting parses, pure, locations]) _AT_TEST_GLR_CXXTYPES([%pure-parser %locations], [%merge ],[%merge ]) -AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, +AT_PARSER_CHECK([[./types test-input]], 0, _AT_AMBIG_GLR_OUTPUT_WITH_LOC, _AT_GLR_STDERR) AT_CLEANUP AT_SETUP([GLR: Verbose messages, resolve ambiguity, impure, no locations]) _AT_TEST_GLR_CXXTYPES([%error-verbose], [%merge ], [%merge ]) -AT_PARSER_CHECK([[./types test-input | sed 's/ *$//']], 0, +AT_PARSER_CHECK([[./types test-input]], 0, _AT_AMBIG_GLR_OUTPUT, _AT_VERBOSE_GLR_STDERR) AT_CLEANUP From MAILER-DAEMON Thu Jul 21 17:26:33 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DviYq-0007MH-TM for mharc-bison-patches@gnu.org; Thu, 21 Jul 2005 17:26:33 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DviWt-0006dt-JT for bison-patches@gnu.org; Thu, 21 Jul 2005 17:24:31 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DviWp-0006c3-PR for bison-patches@gnu.org; Thu, 21 Jul 2005 17:24:29 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DviWo-0006LQ-Ri; Thu, 21 Jul 2005 17:24:27 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DviNf-00076c-8L; Thu, 21 Jul 2005 17:14:59 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6LL4hL12588; Thu, 21 Jul 2005 14:04:43 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DviDd-0000VO-TS; Thu, 21 Jul 2005 14:04:37 -0700 To: Anthony Heading References: <42DB0370.2050200@ajrh.net> <87u0isgj4a.fsf@penguin.cs.ucla.edu> <42DDCDF9.6030908@ajrh.net> From: Paul Eggert Date: Thu, 21 Jul 2005 14:04:37 -0700 In-Reply-To: <42DDCDF9.6030908@ajrh.net> (Anthony Heading's message of "Wed, 20 Jul 2005 00:07:21 -0400") Message-ID: <87ek9rx44a.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Jan Nieuwenhuizen , bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison 2.0a token quoting change X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jul 2005 21:26:31 -0000 In , Anthony Heading writes: > yytname is unchanged, but yytstring is an new array of size NTOKENS, > containing the literal token string if one exists, or NULL if it > doesn't. I thought about this for a while, and looked at the documentation (which doesn't match what the code does), and decided to revert the change to yytname instead. That way, yytname will be unambiguous and code that relies on the Bison 2.0-and-earlier convention will continue to work. To solve the problem mentioned in and originally fixed in the 2005-04-17 patch , I modified the skeletons to dequote the yytname entries if needed. This undoes some (but not all) of the 2005-04-17 patch, but I hope it accomplishes what Jan Nieuwenhuizen was asking for. I installed this: 2005-07-21 Paul Eggert * data/glr.c (yytnamerr): New function. (yyreportSyntaxError): Use it to dequote most string literals. * data/lalr1.c (yytname_): Renamed from yyname_, for compatibility with other skeletons. All uses changed. (yytnameerr_): New function. (yyreport_syntax_error): Use it to dequote most string literals. * data/yacc.c (yytnamerr): New function. (yyerrlab): Use it to decode most string literals. * doc/bison.texinfo (Decl Summary, Calling Convention): Clarify quoting convention of yytname. * src/output.c (prepare_symbols): Quote all names. This undoes the 2005-04-17 change, which is now accomplished (mostly) via changes in the parsers as described above. * tests/regression.at (Token definitions, Web2c Actions): Undo most 2005-04-17 change here, too. Index: data/glr.c =================================================================== RCS file: /cvsroot/bison/bison/data/glr.c,v retrieving revision 1.106 diff -p -u -r1.106 glr.c --- data/glr.c 20 Jul 2005 21:43:32 -0000 1.106 +++ data/glr.c 21 Jul 2005 20:50:01 -0000 @@ -332,7 +332,7 @@ static const ]b4_int_type_for([b4_rline] #endif #if (YYDEBUG) || YYERROR_VERBOSE -/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { @@ -600,6 +600,54 @@ yystpcpy (char *yydest, const char *yysr # endif # endif +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static size_t +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + size_t yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return strlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + #endif /* !YYERROR_VERBOSE */ /** State numbers, as in LALR(1) machine */ @@ -1736,7 +1784,7 @@ yyreportSyntaxError (yyGLRStack* yystack yyn = yypact[yystack->yytops.yystates[0]->yylrState]; if (YYPACT_NINF < yyn && yyn < YYLAST) { - size_t yysize0 = strlen (yytokenName (*yytokenp)); + size_t yysize0 = yytnamerr (NULL, yytokenName (*yytokenp)); size_t yysize = yysize0; size_t yysize1; yybool yysize_overflow = yyfalse; @@ -1778,7 +1826,7 @@ yyreportSyntaxError (yyGLRStack* yystack break; } yyarg[yycount++] = yytokenName (yyx); - yysize1 = yysize + strlen (yytokenName (yyx)); + yysize1 = yysize + yytnamerr (NULL, yytokenName (yyx)); yysize_overflow |= yysize1 < yysize; yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); @@ -1801,7 +1849,7 @@ yyreportSyntaxError (yyGLRStack* yystack { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { - yyp = yystpcpy (yyp, yyarg[yyi++]); + yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else Index: data/lalr1.cc =================================================================== RCS file: /cvsroot/bison/bison/data/lalr1.cc,v retrieving revision 1.89 diff -p -u -r1.89 lalr1.cc --- data/lalr1.cc 19 Jul 2005 06:56:43 -0000 1.89 +++ data/lalr1.cc 21 Jul 2005 20:50:01 -0000 @@ -323,7 +323,12 @@ namespace yy #if YYDEBUG || YYERROR_VERBOSE /// For a symbol, its name in clear. - static const char* const yyname_[]; + static const char* const yytname_[]; +#endif + +#if YYERROR_VERBOSE + /// Convert the symbol name \a n to a form suitable for a diagnostic. + virtual std::string yytnamerr_ (const char *n); #endif #if YYDEBUG @@ -471,6 +476,47 @@ do { \ #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab +#if YYERROR_VERBOSE + +/* Return YYSTR after stripping away unnecessary quotes and + backslashes, so that it's suitable for yyerror. The heuristic is + that double-quoting is unnecessary unless the string contains an + apostrophe, a comma, or backslash (other than backslash-backslash). + YYSTR is taken from yytname. */ +std::string +yy::]b4_parser_class_name[::yytnamerr_ (const char *yystr) +{ + if (*yystr == '"') + { + std::string yyr = ""; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + yyr += *yyp; + break; + + case '"': + return yyr; + } + do_not_strip_quotes: ; + } + + return yystr; +} + +#endif + #if YYDEBUG /*--------------------------------. | Print this symbol on YYOUTPUT. | @@ -488,7 +534,7 @@ yy::]b4_parser_class_name[::yysymprint_ (void) cdebug_; *yycdebug_ << (yytype < yyntokens_ ? "token" : "nterm") - << ' ' << yyname_[yytype] << " (" + << ' ' << yytname_[yytype] << " (" << *yylocationp << ": "; switch (yytype) { @@ -880,10 +926,10 @@ yy::]b4_parser_class_name[::yyreport_syn // "syntax error, unexpected %s or %s or %s" // Then, invoke YY_ on this string. // Finally, use the string as a format to output - // yyname_[yyilooka_], etc. + // yytname_[yyilooka_], etc. // Until this gets fixed, this message appears in English only. message = "syntax error, unexpected "; - message += yyname_[yyilooka_]; + message += yytnamerr_ (yytname_[yyilooka_]); if (count < 5) { count = 0; @@ -891,7 +937,7 @@ yy::]b4_parser_class_name[::yyreport_syn if (yycheck_[x + yyn_] == x && x != yyterror_) { message += (!count++) ? ", expecting " : " or "; - message += yyname_[x]; + message += yytnamerr_ (yytname_[x]); } } } @@ -988,7 +1034,7 @@ yy::]b4_parser_class_name[::yyr2_[] = /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at \a yyntokens_, nonterminals. */ const char* -const yy::]b4_parser_class_name[::yyname_[] = +const yy::]b4_parser_class_name[::yytname_[] = { ]b4_tname[ }; @@ -1038,8 +1084,8 @@ yy::]b4_parser_class_name[::yyreduce_pri << " (line " << yylno << "), "; for (]b4_int_type_for([b4_prhs])[ i = yyprhs_[yyn_]; 0 <= yyrhs_[i]; ++i) - *yycdebug_ << yyname_[yyrhs_[i]] << ' '; - *yycdebug_ << "-> " << yyname_[yyr1_[yyn_]] << std::endl; + *yycdebug_ << yytname_[yyrhs_[i]] << ' '; + *yycdebug_ << "-> " << yytname_[yyr1_[yyn_]] << std::endl; } #endif // YYDEBUG Index: data/yacc.c =================================================================== RCS file: /cvsroot/bison/bison/data/yacc.c,v retrieving revision 1.98 diff -p -u -r1.98 yacc.c --- data/yacc.c 19 Jul 2005 06:56:43 -0000 1.98 +++ data/yacc.c 21 Jul 2005 20:50:01 -0000 @@ -416,7 +416,7 @@ static const ]b4_int_type_for([b4_rline] #endif #if YYDEBUG || YYERROR_VERBOSE -/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { @@ -645,8 +645,8 @@ do { \ yyrule - 1, yylno); /* Print the symbols being reduced, and their result. */ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) - YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); - YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]); + YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]); + YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]); } # define YY_REDUCE_PRINT(Rule) \ @@ -735,7 +735,55 @@ yystpcpy (yydest, yysrc) # endif # endif -#endif /* !YYERROR_VERBOSE */ +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + size_t yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +#endif /* YYERROR_VERBOSE */ @@ -1111,7 +1159,7 @@ yyerrlab: if (YYPACT_NINF < yyn && yyn < YYLAST) { int yytype = YYTRANSLATE (yychar); - YYSIZE_T yysize0 = yystrlen (yytname[yytype]); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; @@ -1163,7 +1211,7 @@ yyerrlab: break; } yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yystrlen (yytname[yyx]); + yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= yysize1 < yysize; yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); @@ -1188,7 +1236,7 @@ yyerrlab: { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { - yyp = yystpcpy (yyp, yyarg[yyi++]); + yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else Index: doc/bison.texinfo =================================================================== RCS file: /cvsroot/bison/bison/doc/bison.texinfo,v retrieving revision 1.153 diff -p -u -r1.153 bison.texinfo --- doc/bison.texinfo 19 Jul 2005 06:56:43 -0000 1.153 +++ doc/bison.texinfo 21 Jul 2005 20:50:01 -0000 @@ -4164,15 +4164,14 @@ three elements of @code{yytname} corresp @code{"error"}, and @code{"$undefined"}; after these come the symbols defined in the grammar file. -For single-character literal tokens and literal string tokens, the name -in the table includes the single-quote or double-quote characters: for -example, @code{"'+'"} is a single-character literal and @code{"\"<=\""} -is a literal string token. All the characters of the literal string -token appear verbatim in the string found in the table; even -double-quote characters are not escaped. For example, if the token -consists of three characters @samp{*"*}, its string in @code{yytname} -contains @samp{"*"*"}. (In C, that would be written as -@code{"\"*\"*\""}). +The name in the table includes all the characters needed to represent +the token in Bison. For single-character literals and literal +strings, this includes the surrounding quoting characters and any +escape sequences. For example, the Bison single-character literal +@code{'+'} corresponds to a three-character name, represented in C as +@code{"'+'"}; and the Bison two-character literal string @code{"\\/"} +corresponds to a five-character name, represented in C as +@code{"\"\\\\/\""}. When you specify @code{%token-table}, Bison also generates macro definitions for macros @code{YYNTOKENS}, @code{YYNNTS}, and @@ -4413,11 +4412,13 @@ the grammar file has no effect on @code{ table. The index of the token in the table is the token type's code. The name of a multicharacter token is recorded in @code{yytname} with a double-quote, the token's characters, and another double-quote. The -token's characters are not escaped in any way; they appear verbatim in -the contents of the string in the table. +token's characters are escaped as necessary to be suitable as input +to Bison. -Here's code for looking up a token in @code{yytname}, assuming that the -characters of the token are stored in @code{token_buffer}. +Here's code for looking up a multicharacter token in @code{yytname}, +assuming that the characters of the token are stored in +@code{token_buffer}, and assuming that the token does not contain any +characters like @samp{"} that require escaping. @smallexample for (i = 0; i < YYNTOKENS; i++) Index: src/output.c =================================================================== RCS file: /cvsroot/bison/bison/src/output.c,v retrieving revision 1.232 diff -p -u -r1.232 output.c --- src/output.c 14 May 2005 06:49:47 -0000 1.232 +++ src/output.c 21 Jul 2005 20:50:01 -0000 @@ -60,7 +60,7 @@ bool error_verbose = false; #define GENERATE_MUSCLE_INSERT_TABLE(Name, Type) \ \ static void \ -Name (const char *name, \ +Name (char const *name, \ Type *table_data, \ Type first, \ int begin, \ @@ -162,10 +162,7 @@ prepare_symbols (void) int j = 2; for (i = 0; i < nsyms; i++) { - char const *tag = symbols[i]->tag; - char const *cp = (*tag == '"' - ? tag - : quotearg_style (c_quoting_style, tag)); + char const *cp = quotearg_style (c_quoting_style, symbols[i]->tag); /* Width of the next token, including the two quotes, the comma and the space. */ int width = strlen (cp) + 2; Index: tests/regression.at =================================================================== RCS file: /cvsroot/bison/bison/tests/regression.at,v retrieving revision 1.91 diff -p -u -r1.91 regression.at --- tests/regression.at 14 May 2005 06:49:48 -0000 1.91 +++ tests/regression.at 21 Jul 2005 20:50:02 -0000 @@ -324,9 +324,9 @@ int yylex (void); %token B_TOKEN "b" %token C_TOKEN 'c' %token 'd' D_TOKEN -%token SPECIAL "\\\'\?\"\n\t??!" +%token SPECIAL "\\\'\?\"\a\b\f\n\r\t\v\001\377\x001\x0000ff??!" %% -exp: "a" "\\\'\?\"\n\t??!"; +exp: "a" "\\\'\?\"\a\b\f\n\r\t\v\001\377\x001\x0000ff??!"; %% void yyerror (char const *s) @@ -350,8 +350,7 @@ main (void) AT_CHECK([bison -o input.c input.y]) AT_COMPILE([input]) AT_PARSER_CHECK([./input], 1, [], -[syntax error, unexpected \'?" - ??!, expecting a +[syntax error, unexpected "\\'?\"\a\b\f\n\r\t\v\001\377\001\377?\?!", expecting a ]) AT_CLEANUP @@ -635,8 +634,8 @@ static const unsigned char yyrline[] = }; static const char *const yytname[] = { - "$end", "error", "$undefined", "if", "const", "then", "else", "$accept", - "statement", "struct_stat", "if", "else", 0 + "$end", "error", "$undefined", "\"if\"", "\"const\"", "\"then\"", + "\"else\"", "$accept", "statement", "struct_stat", "if", "else", 0 }; static const unsigned short int yytoknum[] = { From MAILER-DAEMON Fri Jul 22 01:21:51 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dvpyp-000610-ED for mharc-bison-patches@gnu.org; Fri, 22 Jul 2005 01:21:51 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DvpwV-0005ZN-1g for bison-patches@gnu.org; Fri, 22 Jul 2005 01:19:27 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DvpwH-0005Pg-94 for bison-patches@gnu.org; Fri, 22 Jul 2005 01:19:18 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DvpwB-0005NF-Pl for bison-patches@gnu.org; Fri, 22 Jul 2005 01:19:07 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dvpm2-0004Qx-Uq for bison-patches@gnu.org; Fri, 22 Jul 2005 01:08:39 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6M4wBL07328; Thu, 21 Jul 2005 21:58:12 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dvpbq-0006J5-OC; Thu, 21 Jul 2005 21:58:06 -0700 To: twlevo@xs4all.nl References: <17742.80.126.59.26.1121791835.squirrel@80.126.59.26> <87ek9tqhgv.fsf@penguin.cs.ucla.edu> <8051.80.126.59.26.1121969984.squirrel@80.126.59.26> <873bq7x0qx.fsf@penguin.cs.ucla.edu> <21148.80.126.59.26.1121990179.squirrel@80.126.59.26> From: Paul Eggert Date: Thu, 21 Jul 2005 21:58:06 -0700 In-Reply-To: <21148.80.126.59.26.1121990179.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Thu, 21 Jul 2005 23:56:19 -0000 (GMT)") Message-ID: <877jfjphcx.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: GLR init X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2005 05:21:49 -0000 twlevo@xs4all.nl writes: > When malloc() returns 0 there is a reason for it. > Then doing 2nd malloc()? risky. No, it's not risky in practice, in my experience. However, to save time arguing about it, I installed this: 2005-07-21 Paul Eggert * data/glr.c (yyinitGLRStack, yyreturn): Don't call malloc again if the first call fails. --- glr.c 21 Jul 2005 20:53:03 -0000 1.107 +++ glr.c 22 Jul 2005 04:56:14 -0000 1.108 @@ -1018,11 +1018,14 @@ yyinitGLRStack (yyGLRStack* yystack, siz yystack->yyerrState = 0; yynerrs = 0; yystack->yyspaceLeft = yysize; - yystack->yynextFree = yystack->yyitems = + yystack->yyitems = (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystack->yynextFree[0]); + if (!yystack->yyitems) + return yyfalse; + yystack->yynextFree = yystack->yyitems; yystack->yysplitPoint = NULL; yystack->yylastDeleted = NULL; - return yyinitStateSet (&yystack->yytops) && yystack->yyitems; + return yyinitStateSet (&yystack->yytops); } #define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \ @@ -2154,24 +2157,27 @@ b4_syncline([@oline@], [@ofile@])])dnl yydestruct ("Error: discarding lookahead", yytoken, yylvalp]b4_location_if([, yyllocp])[); - /* Now pop stack until empty, destroying its entries as we go. */ - { - yyGLRState** yystates = yystack.yytops.yystates; - if (yystates) - while (yystates[0]) - { - yyGLRState *yys = yystates[0]; + /* If the stack is well-formed, pop the stack until it is empty, + destroying its entries as we go. But free the stack regardless + of whether it is well-formed. */ + if (yystack.yyitems) + { + yyGLRState** yystates = yystack.yytops.yystates; + if (yystates) + while (yystates[0]) + { + yyGLRState *yys = yystates[0]; ]b4_location_if([[ yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]] -)[ yydestruct ("Error: popping", - yystos[yys->yylrState], - &yys->yysemantics.yysval]b4_location_if([, &yys->yyloc])[); - yystates[0] = yys->yypred; - yystack.yynextFree -= 1; - yystack.yyspaceLeft += 1; - } - } +)[ yydestruct ("Error: popping", + yystos[yys->yylrState], + &yys->yysemantics.yysval]b4_location_if([, &yys->yyloc])[); + yystates[0] = yys->yypred; + yystack.yynextFree -= 1; + yystack.yyspaceLeft += 1; + } + yyfreeGLRStack (&yystack); + } - yyfreeGLRStack (&yystack); return yyresult; } From MAILER-DAEMON Fri Jul 22 17:01:16 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dw4dv-00006W-Th for mharc-bison-patches@gnu.org; Fri, 22 Jul 2005 17:01:15 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dw4du-00005d-4N for bison-patches@gnu.org; Fri, 22 Jul 2005 17:01:14 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dw4dt-00005A-6Z for bison-patches@gnu.org; Fri, 22 Jul 2005 17:01:13 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dw4dZ-0007zJ-BO; Fri, 22 Jul 2005 17:00:53 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dw4HP-0001RS-JG; Fri, 22 Jul 2005 16:38:00 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6MHCiL10359; Fri, 22 Jul 2005 10:12:44 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dw14g-00045C-R4; Fri, 22 Jul 2005 10:12:38 -0700 To: Anthony Heading References: <42DB0370.2050200@ajrh.net> <87u0isgj4a.fsf@penguin.cs.ucla.edu> <42DDCDF9.6030908@ajrh.net> <87ek9rx44a.fsf@penguin.cs.ucla.edu> <42E0E73E.4010202@ajrh.net> From: Paul Eggert Date: Fri, 22 Jul 2005 10:12:38 -0700 In-Reply-To: <42E0E73E.4010202@ajrh.net> (Anthony Heading's message of "Fri, 22 Jul 2005 08:31:58 -0400") Message-ID: <87ll3ypxx5.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: bison 2.0a token quoting change X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2005 21:01:14 -0000 Anthony Heading writes: > Only remaining question - this array is hidden behind > #if YYDEBUG || YYERROR_VERBOSE > neither of which seem necessarily linked to all the > uses of the token string data. Could it be > #if YYDEBUG || YYERROR_VERBOSE || YYTNAME > instead, just to provide a focussed way of exposing > the symbol? Thanks for noticing that bug. I installed this patch. 2005-07-22 Paul Eggert Fix problem reported by Anthony Heading. * data/glr.c (YYTOKEN_TABLE): New macro. (yytname): Define if YYTOKEN_TABLE. * data/yacc.c (YYTOKEN_TABLE, yytname): Likewise. * data/lalr1.cc (YYTOKEN_TABLE, yytname_): Likewise. (YYERROR_VERBOSE): Define the same way the other skeletons do. * src/output.c (prepare_symbols): Output token_table_flag. Index: data/glr.c =================================================================== RCS file: /cvsroot/bison/bison/data/glr.c,v retrieving revision 1.108 diff -p -u -r1.108 glr.c --- data/glr.c 22 Jul 2005 04:56:14 -0000 1.108 +++ data/glr.c 22 Jul 2005 17:03:18 -0000 @@ -172,6 +172,11 @@ b4_pre_prologue[ # define YYERROR_VERBOSE ]b4_error_verbose[ #endif +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE ]b4_token_table[ +#endif + #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) ]m4_ifdef([b4_stype], [b4_syncline([b4_stype_line], [b4_filename]) @@ -331,7 +336,7 @@ static const ]b4_int_type_for([b4_rline] }; #endif -#if (YYDEBUG) || YYERROR_VERBOSE +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = Index: data/lalr1.cc =================================================================== RCS file: /cvsroot/bison/bison/data/lalr1.cc,v retrieving revision 1.90 diff -p -u -r1.90 lalr1.cc --- data/lalr1.cc 21 Jul 2005 20:53:03 -0000 1.90 +++ data/lalr1.cc 22 Jul 2005 17:03:18 -0000 @@ -149,11 +149,19 @@ b4_syncline([@oline@], [@ofile@])[ # define YYDEBUG ]b4_debug[ #endif -/* Enabling verbose error message. */ -#ifndef YYERROR_VERBOSE +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else # define YYERROR_VERBOSE ]b4_error_verbose[ #endif +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE ]b4_token_table[ +#endif + #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) ]m4_ifdef([b4_stype], [b4_syncline([b4_stype_line], [b4_filename]) @@ -321,7 +329,7 @@ namespace yy /// For a rule, its RHS length. static const ]b4_int_type_for([b4_r2])[ yyr2_[]; -#if YYDEBUG || YYERROR_VERBOSE +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /// For a symbol, its name in clear. static const char* const yytname_[]; #endif @@ -1030,7 +1038,7 @@ yy::]b4_parser_class_name[::yyr2_[] = ]b4_r2[ }; -#if YYDEBUG || YYERROR_VERBOSE +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at \a yyntokens_, nonterminals. */ const char* Index: data/yacc.c =================================================================== RCS file: /cvsroot/bison/bison/data/yacc.c,v retrieving revision 1.99 diff -p -u -r1.99 yacc.c --- data/yacc.c 21 Jul 2005 20:53:03 -0000 1.99 +++ data/yacc.c 22 Jul 2005 17:03:19 -0000 @@ -182,6 +182,11 @@ b4_location_if([#define yylloc b4_prefix # define YYERROR_VERBOSE ]b4_error_verbose[ #endif +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE ]b4_token_table[ +#endif + #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) ]m4_ifdef([b4_stype], [b4_syncline([b4_stype_line], [b4_filename]) @@ -415,7 +420,7 @@ static const ]b4_int_type_for([b4_rline] }; #endif -#if YYDEBUG || YYERROR_VERBOSE +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = Index: src/output.c =================================================================== RCS file: /cvsroot/bison/bison/src/output.c,v retrieving revision 1.233 diff -p -u -r1.233 output.c --- src/output.c 21 Jul 2005 20:53:03 -0000 1.233 +++ src/output.c 22 Jul 2005 17:03:19 -0000 @@ -145,6 +145,7 @@ escaped_output (FILE *out, char const *s static void prepare_symbols (void) { + MUSCLE_INSERT_BOOL ("token_table", token_table_flag); MUSCLE_INSERT_INT ("tokens_number", ntokens); MUSCLE_INSERT_INT ("nterms_number", nvars); MUSCLE_INSERT_INT ("undef_token_number", undeftoken->number); From MAILER-DAEMON Fri Jul 22 17:08:14 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dw4kf-0002x3-Q4 for mharc-bison-patches@gnu.org; Fri, 22 Jul 2005 17:08:13 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dw4ke-0002wF-8E for bison-patches@gnu.org; Fri, 22 Jul 2005 17:08:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dw4kc-0002vF-Fz for bison-patches@gnu.org; Fri, 22 Jul 2005 17:08:11 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dw4da-0007zJ-Vc for bison-patches@gnu.org; Fri, 22 Jul 2005 17:00:55 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dw4HK-0001RS-Bi; Fri, 22 Jul 2005 16:37:54 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6MImnL20002; Fri, 22 Jul 2005 11:48:49 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dw2Zf-000430-NY; Fri, 22 Jul 2005 11:48:43 -0700 To: bison-patches@gnu.org, bug-gnu-gettext@gnu.org From: Paul Eggert Date: Fri, 22 Jul 2005 11:48:43 -0700 Message-ID: <878xzypth0.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Subject: priming bison-runtime's pump X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2005 21:08:12 -0000 Bison CVS's bison-runtime directory didn't have any .po files. Initially I thought I'd just let the translation teams fix this one by one, but that will delay acceptance of bison-runtime. So I installed the following patch to generate these .po files automatically from the old po/*.po files until the translation teams supersede this with manual translations. I ran into some problems with gettext while doing this, so I thought I'd CC: this to bug-gnu-gettext. I'll send a detailed bug report via separate email. 2005-07-22 Paul Eggert * bootstrap: For translations that have not yet been upgraded to the new runtime-po domain, prime the pump by extracting the relevant strings from the obsolete translations. This code can be removed once the bison-runtime domain has been translated by each team. --- bootstrap.~1.22.~ 2005-07-18 15:10:15.000000000 -0700 +++ bootstrap 2005-07-22 11:33:44.000000000 -0700 @@ -179,6 +179,34 @@ case $SKIP_PO in rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po$/p'` && wget -nv -nd -r -l 1 -A .po -C off \ http://www.iro.umontreal.ca/translation/maint/$package-runtime/ && + + # For translations that have not yet been upgraded to the new + # runtime-po domain, prime the pump by extracting the relevant + # strings from the obsolete translations. + # This code can be removed once the bison-runtime domain + # has been translated by each team. + for po in ../po/*.po; do + test -f "$po" || continue + runpo=`basename $po` + test -f $runpo || { + msggrep -K \ + -e 'memory exhausted' \ + -e 'syntax error' \ + $po 2>/dev/null | + sed ' + s/^#~ // + /^msgid "syntax error; also memory exhausted"$/,/^$/d + /^$/,${ /^#/d; } + ' >$runpo- + if cmp -s $runpo- $runpo; then + rm $runpo- + else + mv $runpo- $runpo + fi + test -s $runpo || rm -f $runpo + } || exit + done && + ls *.po | sed 's/\.po$//' >LINGUAS ) || exit esac;; From MAILER-DAEMON Fri Jul 22 17:08:19 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dw4kl-000301-Bl for mharc-bison-patches@gnu.org; Fri, 22 Jul 2005 17:08:19 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dw4kj-0002z9-BN for bison-patches@gnu.org; Fri, 22 Jul 2005 17:08:17 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dw4ki-0002yZ-CL for bison-patches@gnu.org; Fri, 22 Jul 2005 17:08:16 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dw4da-0007zJ-NY for bison-patches@gnu.org; Fri, 22 Jul 2005 17:00:54 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dw4HL-0001RS-5h; Fri, 22 Jul 2005 16:37:55 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6MIrjL20876; Fri, 22 Jul 2005 11:53:45 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dw2eS-000435-9w; Fri, 22 Jul 2005 11:53:40 -0700 To: bug-gnu-gettext@gnu.org From: Paul Eggert Date: Fri, 22 Jul 2005 11:53:40 -0700 Message-ID: <874qampt8r.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: msggrep problems when priming bison-runtime's pump X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2005 21:08:17 -0000 Here are the problems I ran into gettext when trying to prime Bison's pump as I mentioned in my previous email. Quite likely these problems result from my misunderstandings, but then perhaps the --help strings or manual could be improved to avoid similar misunderstandings. I wanted to extract from (say) po/et.po the subset of msgids that are mentioned in runtime-po/bison-runtime.pot. The Gettext manual gives this as an example: msggrep --location src/getopt.c -o compendium.po file.po So I tried this command: msggrep --location runtime-po/bison-runtime.pot po/et.po But this didn't output anything. msggrep --help says this: Message selection: [-N SOURCEFILE]... [-M DOMAINNAME]... [-K MSGID-PATTERN] [-T MSGSTR-PATTERN] [-C COMMENT-PATTERN] so I then generated the msgids by hand (there are only a few) and tried this: msggrep -K 'memory exhausted' -K 'syntax error' po/et.po but this isn't the correct usage for msggrep. That --help message is a bit confusing. I then looked at the msggrep source code and tried this: msggrep -K -e 'memory exhausted' -e 'syntax error' po/et.po This worked, except that I didn't want one of the 'syntax error' messages. That is, of the following msgids extracted by that msggrep: msgid "memory exhausted" msgid "syntax error" msgid "syntax error, unexpected %s" msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s" msgid "syntax error, unexpected %s, expecting %s or %s or %s" msgid "syntax error, unexpected %s, expecting %s or %s" msgid "syntax error, unexpected %s, expecting %s" msgid "syntax error: cannot back up" msgid "syntax error; also memory exhausted" I didn't want the last one (since it's no longer in bison-runtime). However, I couldn't come up with a pattern to do that. For example, msggrep -K -E -e 'memory exhausted' -e '^syntax error($|[^;])' po/et.po still outputs that last msgid. I ended up filtering it out with 'sed'. Finally, msggrep outputs lots of messages like this: msggrep: warning: Locale charset "UTF-8" is different from input file charset "ISO-8859-15". Output of 'msggrep' might be incorrect. Possible workarounds are: - Set LC_ALL to a locale with encoding ISO-8859-15. - Convert the translation catalog to UTF-8 using 'msgconv', then apply 'msggrep', then convert back to ISO-8859-15 using 'msgconv'. These messages are alarming, and I don't think they apply here. Or perhaps it's always safe if I set LC_ALL=C before running msggrep? At any rate, there should be a reliable way to do this little task without getting the warning, and without having to set LC_ALL to a different value for each catalog, in a catalog-dependent way. From MAILER-DAEMON Fri Jul 22 17:08:21 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dw4km-00030m-MP for mharc-bison-patches@gnu.org; Fri, 22 Jul 2005 17:08:20 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dw4kl-000302-Cp for bison-patches@gnu.org; Fri, 22 Jul 2005 17:08:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dw4kj-0002zE-GU for bison-patches@gnu.org; Fri, 22 Jul 2005 17:08:18 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dw4da-0007zJ-BU for bison-patches@gnu.org; Fri, 22 Jul 2005 17:00:54 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dw4HL-0001RS-Sv for bison-patches@gnu.org; Fri, 22 Jul 2005 16:37:57 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6MHxcL15685 for ; Fri, 22 Jul 2005 10:59:38 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dw1o5-000484-85 for bison-patches@gnu.org; Fri, 22 Jul 2005 10:59:33 -0700 To: bison-patches@gnu.org From: Paul Eggert Date: Fri, 22 Jul 2005 10:59:33 -0700 Message-ID: <87d5papvqy.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: removed double-quoting from a Bison diagnostic X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2005 21:08:19 -0000 I installed this: 2005-07-22 Paul Eggert * src/scan-gram.l (.): Don't double-quote token names, now that token names are already quoted. --- scan-gram.l.~1.74.~ 2005-07-19 09:13:16.000000000 -0700 +++ scan-gram.l 2005-07-22 09:38:01.000000000 -0700 @@ -549,7 +549,7 @@ splice (\\[ \f\t\v]*\n)* } else { - complain_at (*loc, _("missing `{' in `%s'"), + complain_at (*loc, _("missing `{' in %s"), token_name (token_type)); obstack_sgrow (&obstack_for_string, "{}"); STRING_FINISH; From MAILER-DAEMON Fri Jul 22 18:37:05 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dw68d-0006mX-F3 for mharc-bison-patches@gnu.org; Fri, 22 Jul 2005 18:37:05 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dw68b-0006li-Cp for bison-patches@gnu.org; Fri, 22 Jul 2005 18:37:01 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dw68Y-0006kZ-Ui for bison-patches@gnu.org; Fri, 22 Jul 2005 18:36:59 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dw68Y-0006k7-PN for bison-patches@gnu.org; Fri, 22 Jul 2005 18:36:58 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dw6Ec-0004wF-0r for bison-patches@gnu.org; Fri, 22 Jul 2005 18:43:14 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6MMWuL08303 for ; Fri, 22 Jul 2005 15:32:56 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dw64Z-00063r-Ez for bison-patches@gnu.org; Fri, 22 Jul 2005 15:32:51 -0700 To: bison-patches@gnu.org From: Paul Eggert Date: Fri, 22 Jul 2005 15:32:51 -0700 Message-ID: <87d5pao4j0.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: bitset minor cleanup to pacify "make maintainer-distcheck" X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jul 2005 22:37:01 -0000 I installed this: 2005-07-22 Paul Eggert * lib/bitset.c (bitset_alloc): Don't cast xcalloc result. * lib/bitset_stats.c (bitset_stats_init): Likewise. * lib/bitsetv.c (bitsetv_alloc): Likewise. Index: lib/bitset.c =================================================================== RCS file: /cvsroot/bison/bison/lib/bitset.c,v retrieving revision 1.13 diff -p -u -r1.13 bitset.c --- lib/bitset.c 25 May 2005 19:47:59 -0000 1.13 +++ lib/bitset.c 22 Jul 2005 22:29:29 -0000 @@ -138,7 +138,7 @@ bitset_alloc (bitset_bindex n_bits, enum bytes = bitset_bytes (type, n_bits); - bset = (bitset) xcalloc (1, bytes); + bset = xcalloc (1, bytes); /* The cache is disabled until some elements are allocated. If we have variable length arrays, then we may need to allocate a dummy Index: lib/bitset_stats.c =================================================================== RCS file: /cvsroot/bison/bison/lib/bitset_stats.c,v retrieving revision 1.13 diff -p -u -r1.13 bitset_stats.c --- lib/bitset_stats.c 14 May 2005 06:49:47 -0000 1.13 +++ lib/bitset_stats.c 22 Jul 2005 22:29:29 -0000 @@ -698,25 +698,25 @@ bitset_stats_init (bitset bset, bitset_b { case BITSET_ARRAY: bytes = abitset_bytes (n_bits); - sbset = (bitset) xcalloc (1, bytes); + sbset = xcalloc (1, bytes); abitset_init (sbset, n_bits); break; case BITSET_LIST: bytes = lbitset_bytes (n_bits); - sbset = (bitset) xcalloc (1, bytes); + sbset = xcalloc (1, bytes); lbitset_init (sbset, n_bits); break; case BITSET_TABLE: bytes = ebitset_bytes (n_bits); - sbset = (bitset) xcalloc (1, bytes); + sbset = xcalloc (1, bytes); ebitset_init (sbset, n_bits); break; case BITSET_VARRAY: bytes = vbitset_bytes (n_bits); - sbset = (bitset) xcalloc (1, bytes); + sbset = xcalloc (1, bytes); vbitset_init (sbset, n_bits); break; Index: lib/bitsetv.c =================================================================== RCS file: /cvsroot/bison/bison/lib/bitsetv.c,v retrieving revision 1.10 diff -p -u -r1.10 bitsetv.c --- lib/bitsetv.c 14 May 2005 06:49:47 -0000 1.10 +++ lib/bitsetv.c 22 Jul 2005 22:29:29 -0000 @@ -47,7 +47,7 @@ bitsetv_alloc (bitset_bindex n_vecs, bit /* Allocate vector table at head of bitset array. */ vector_bytes = (n_vecs + 1) * sizeof (bitset) + bytes - 1; vector_bytes -= vector_bytes % bytes; - bsetv = (bitset *) xcalloc (1, vector_bytes + bytes * n_vecs); + bsetv = xcalloc (1, vector_bytes + bytes * n_vecs); for (i = 0; i < n_vecs; i++) { From MAILER-DAEMON Sat Jul 23 13:13:25 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DwNYy-0004g7-Kk for mharc-bison-patches@gnu.org; Sat, 23 Jul 2005 13:13:24 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DwNYp-0004cW-UE for bison-patches@gnu.org; Sat, 23 Jul 2005 13:13:16 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DwNYh-0004Xn-W2 for bison-patches@gnu.org; Sat, 23 Jul 2005 13:13:08 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DwNYh-0004WI-3K for bison-patches@gnu.org; Sat, 23 Jul 2005 13:13:07 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DwNeJ-0004Lg-2B for bison-patches@gnu.org; Sat, 23 Jul 2005 13:18:55 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6NH8QL18321 for ; Sat, 23 Jul 2005 10:08:26 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DwNU5-0007qV-3z for bison-patches@gnu.org; Sat, 23 Jul 2005 10:08:21 -0700 To: bison-patches@gnu.org Message-Id: From: Paul Eggert Date: Sat, 23 Jul 2005 10:08:21 -0700 Subject: extexi patches to simplify "make maintainer-distcheck" checking X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 23 Jul 2005 17:13:20 -0000 I installed this: 2005-07-23 Paul Eggert * examples/extexi (message): Don't print a message more than once, and omit line-number decoration that makes Emacs compile think that informative messages are worth worrying about. --- extexi.~1.2.~ 2005-07-07 16:16:46.000000000 -0700 +++ extexi 2005-07-23 10:04:12.000000000 -0700 @@ -123,8 +123,11 @@ function normalize(contents, i, lines function message(msg) { - # FNR starts at 0 instead of 1 for line numbers. - print "extexi: " FILENAME ":" (FNR + 1) ": " msg > "/dev/stderr"; + if (! message_printed[msg]) + { + print "extexi: " msg > "/dev/stderr"; + message_printed[msg] = 1; + } } function fatal(msg) { From MAILER-DAEMON Sun Jul 24 03:32:09 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dwaxj-00055k-7O for mharc-bison-patches@gnu.org; Sun, 24 Jul 2005 03:31:52 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DwaxY-0004zw-2j for bison-patches@gnu.org; Sun, 24 Jul 2005 03:31:40 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dwawl-0004nY-8x for bison-patches@gnu.org; Sun, 24 Jul 2005 03:31:38 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dwawj-0004hn-KG for bison-patches@gnu.org; Sun, 24 Jul 2005 03:30:50 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DwawZ-00079B-8I for bison-patches@gnu.org; Sun, 24 Jul 2005 03:30:39 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6O7JhL16623; Sun, 24 Jul 2005 00:19:43 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dwalt-00043o-Ko; Sun, 24 Jul 2005 00:19:37 -0700 To: twlevo@xs4all.nl References: <21648.80.126.59.26.1122139716.squirrel@80.126.59.26> From: Paul Eggert Date: Sun, 24 Jul 2005 00:19:37 -0700 In-Reply-To: <21648.80.126.59.26.1122139716.squirrel@80.126.59.26> (twlevo@xs4all.nl's message of "Sat, 23 Jul 2005 20:28:36 +0300 (EEST)") Message-ID: <87mzocvfg6.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bison-patches@gnu.org Subject: Re: glr.c yysplitStack() yynewStates init X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Jul 2005 07:31:48 -0000 twlevo@xs4all.nl writes: > glr.c yysplitStack() yynewStates init > > Gcc gave warning about yynewStates below, Which version of GCC? What options did you give GCC? > and maybe better to init it, like this:.... > > yyGLRState** yynewStates = (yyGLRState **)0; <-------------- this init > if (! ((yystack->yytops.yycapacity > <= (YYSIZEMAX / (2 * sizeof yynewStates[0]))) > && (yynewStates = > (yyGLRState**) YYREALLOC (yystack->yytops.yystates, > ((yystack->yytops.yycapacity *= 2) > * sizeof yynewStates[0]))))) > yyMemoryExhausted (yystack); > yystack->yytops.yystates = yynewStates; I'd rather avoid needless initializations if possible, if only because they can make the code more confusing to the human reader. I installed this patch instead. Does it fix your problem? 2005-07-24 Paul Eggert * data/glr.c (ATTRIBUTE_UNUSED): Remove, since it infringes on the user's name space. All uses changed to __attribute__ ((__unused__)). (yyFail, yyMemoryExhausted, yyreportAmbiguity): Add __attribute__ ((__noreturn__)). --- glr.c 22 Jul 2005 17:07:31 -0000 1.109 +++ glr.c 24 Jul 2005 07:17:06 -0000 1.110 @@ -269,7 +269,7 @@ b4_syncline([@oline@], [@ofile@]) # if defined (__cplusplus) # define YYOPTIONAL_LOC(Name) /* empty */ # else -# define YYOPTIONAL_LOC(Name) Name ATTRIBUTE_UNUSED +# define YYOPTIONAL_LOC(Name) Name __attribute__ ((__unused__)) # endif])[ # endif #endif @@ -278,10 +278,6 @@ b4_syncline([@oline@], [@ofile@]) # define YYASSERT(condition) ((void) ((condition) || (abort (), 0))) #endif -#ifndef ATTRIBUTE_UNUSED -# define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -#endif - /* YYFINAL -- State number of the termination state. */ #define YYFINAL ]b4_final_state_number[ /* YYLAST -- Last index in YYTABLE. */ @@ -742,6 +738,8 @@ struct yyGLRStack { static void yyexpandGLRStack (yyGLRStack* yystack); +static void yyFail (yyGLRStack* yystack]b4_pure_formals[, const char* yymsg) + __attribute__ ((__noreturn__)); static void yyFail (yyGLRStack* yystack]b4_pure_formals[, const char* yymsg) { @@ -750,6 +748,8 @@ yyFail (yyGLRStack* yystack]b4_pure_form longjmp (yystack->yyexception_buffer, 1); } +static void yyMemoryExhausted (yyGLRStack* yystack) + __attribute__ ((__noreturn__)); static void yyMemoryExhausted (yyGLRStack* yystack) { @@ -772,7 +772,7 @@ yytokenName (yySymbol yytoken) * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred * containing the pointer to the next state in the chain. Assumes * YYLOW1 < YYLOW0. */ -static void yyfillin (yyGLRStackItem *, int, int) ATTRIBUTE_UNUSED; +static void yyfillin (yyGLRStackItem *, int, int) __attribute__ ((__unused__)); static void yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1) { @@ -793,7 +793,7 @@ yyfillin (yyGLRStackItem *yyvsp, int yyl YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1. For convenience, always return YYLOW1. */ static inline int yyfill (yyGLRStackItem *, int *, int, yybool) - ATTRIBUTE_UNUSED; + __attribute__ ((__unused__)); static inline int yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal) { @@ -817,7 +817,8 @@ yyuserAction (yyRuleNum yyn, int yyrhsle yyGLRStack* yystack ]b4_user_formals[) { - yybool yynormal ATTRIBUTE_UNUSED = (yystack->yysplitPoint == NULL); + yybool yynormal __attribute__ ((__unused__)) = + (yystack->yysplitPoint == NULL); int yylow; # undef yyerrok @@ -1575,6 +1576,9 @@ yyreportTree (yySemanticOption* yyx, int } #endif +static void yyreportAmbiguity (yySemanticOption* yyx0, yySemanticOption* yyx1, + yyGLRStack* yystack]b4_pure_formals[) + __attribute__ ((__noreturn__)); static void yyreportAmbiguity (yySemanticOption* yyx0, yySemanticOption* yyx1, yyGLRStack* yystack]b4_pure_formals[) @@ -2188,8 +2192,9 @@ b4_syncline([@oline@], [@ofile@])])dnl /* DEBUGGING ONLY */ #ifdef YYDEBUG -static void yypstack (yyGLRStack* yystack, size_t yyk) ATTRIBUTE_UNUSED; -static void yypdumpstack (yyGLRStack* yystack) ATTRIBUTE_UNUSED; +static void yypstack (yyGLRStack* yystack, size_t yyk) + __attribute__ ((__unused__)); +static void yypdumpstack (yyGLRStack* yystack) __attribute__ ((__unused__)); static void yy_yypstack (yyGLRState* yys) From MAILER-DAEMON Sun Jul 24 03:34:01 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dwazo-0005oF-Ct for mharc-bison-patches@gnu.org; Sun, 24 Jul 2005 03:34:00 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dwazi-0005kC-29 for bison-patches@gnu.org; Sun, 24 Jul 2005 03:33:54 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DwazX-0005eI-UL for bison-patches@gnu.org; Sun, 24 Jul 2005 03:33:53 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DwazW-0005dt-PA for bison-patches@gnu.org; Sun, 24 Jul 2005 03:33:43 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dwb7N-0007jI-H6 for bison-patches@gnu.org; Sun, 24 Jul 2005 03:41:50 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6O7VDL17010 for ; Sun, 24 Jul 2005 00:31:13 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dwax1-0006Lv-62 for bison-patches@gnu.org; Sun, 24 Jul 2005 00:31:07 -0700 To: bison-patches@gnu.org From: Paul Eggert Date: Sun, 24 Jul 2005 00:31:07 -0700 Message-ID: <87irz0vex0.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: patches to prepare for Bison 2.0b X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Jul 2005 07:33:55 -0000 I installed this patch, to fix up a bunch of minor details before Bison test version 2.0b can be released. Most of these things were caught by "make maintainer-distcheck". I'll wait a bit before generating the actual test release. 2005-07-24 Paul Eggert * NEWS: Version 2.0b. * etc/clcommit: Remove. We weren't using it, and it failed "make maintainer-distcheck". * Makefile.maint: Merge from coreutils. (CVS_LIST, CVS_LIST_EXCEPT): New macros. (syntax-check-rules): Change list of rules as described below. (sc_cast_of_alloca_return_value, sc_dd_max_sym_length): (sc_file_system, sc_obsolete_symbols, sc_prohibit_atoi_atof): (sc_prohibit_jm_in_m4, sc_root_tests, sc_tight_scope): (sc_trailing_space): New rules. (sc_xalloc_h_in_src): Remove. (sc_cast_of_argument_to_free, sc_cast_of_x_alloc_return_value): (sc_space_tab, sc_error_exit_success, sc_changelog): (sc_system_h_headers, sc_sun_os_names, sc_unmarked_diagnostics): (makefile-check, po-check, author_mark_check): (makefile_path_separator_check, copyright-check): Use grep -n, to make it easier to find violations. Use CVS_LIST and CVS_LIST_EXCEPT. (header_regexp, h_re): Remove. (dd_c): New macro. (sc_dd_max_sym_length, .re-list, news-date-check): New rules. (my-distcheck): Use more-modern GCC flags. (signatures, %.asc): Remove. (rel-files, announcement): Remove signatures. Restore old updating code, even though we don't use it, so that we're the same as coreutils. (alpha, beta, major): Depend on news-date-check. Make the upload commands. * data/c.m4, data/lalr1.cc, data/yacc.c: Normalize white space. * lib/abitset.h, lib/bbitset.h, lib/bitset.h: Likewise. * lib/bitset_stats.c, lib/ebitset.h, lib/lbitset.c: Likewise. * lib/libitset.h, lib/timevar.c, lib/vbitset.h: Likewise. * src/Makefile.am, src/gram.c, src/muscle_tab.h: Likewise. * src/parse-gram.y, src/system.h, src/tables.c, src/vcg.c: Likewise. * src/vcg_defaults.h, tests/cxx-type.at, tests/existing.at: Likewise. * tests/sets.at: Likewise. * data/m4sugar/m4sugar.m4: Sync from Autoconf, except that we comment out the Autoconf version number. * doc/bison.texinfo (Calc++ Scanner): Don't use atoi, as it's error-prone and "make maintainer-distcheck" rejects it. * lib/subpipe.c: Include without checking for HAVE_FCNTL_H. Indent calls to "error" to pacify "make maintainer-distcheck", when the calls are not intended to be translated. * m4/subpipe.m4 (BISON_PREREQ_SUBPIPE): Don't check for fcntl.h. * src/Makefile.am (DEFS): Use +=, to pacify "make maintainer-distcheck". (bison_SOURCES): Add scan-skel.h. (sc_tight_scope): New rule, from coreutils. * src/files.c (src_extension, header_extension): Now static, not extern. * src/getargs.c (short_options): Likewise. * src/muscle_tab.c (muscle_table): Likewise. * src/parse-gram.y (current_class, current_type, current_prec): Likewise. * src/reader.c (grammar_end, previous_rule_end): Likewise. * src/getargs.h: Redo comments to pacify "make maintainer-distcheck". * src/main.c (main): Cast bindtextdomain and textdomain calls to void, to avoid warning when NLS is disabled. * src/output.c: Include scan-skel.h. (scan_skel): Remove decl, since scan-skel.h does this. (output_skeleton): Indent calls to "error" to pacify "make maintainer-distcheck". * src/print_graph.c: Don't include , as system.h does this. * src/reader.h (gram_end, gram_lineno): New decls to pacify "make maintainer-distcheck". * src/scan-skel.l (skel_lex, skel_get_lineno, skel_get_in): (skel_get_out, skel_get_leng, skel_get_text, skel_set_lineno): (skel_set_in, skel_set_out, skel_get_debug, skel_set_debug): (skel_lex_destroy, scan_skel): Move these decls to... * src/scan-skel.h: New file. * src/uniqstr.c (uniqstr_assert): Indent calls to "error" to pacify "make maintainer-distcheck". * tests/Makefile.am ($(srcdir)/package.m4): Use $(VAR), not @VAR@. * tests/torture.at: Revamp to avoid misuse of atoi that "make maintainer-distcheck" complained about. Index: Makefile.maint =================================================================== RCS file: /cvsroot/bison/bison/Makefile.maint,v retrieving revision 1.18 diff -p -u -r1.18 Makefile.maint --- Makefile.maint 22 May 2005 17:45:28 -0000 1.18 +++ Makefile.maint 24 Jul 2005 07:20:54 -0000 @@ -2,7 +2,7 @@ # This Makefile fragment is shared between the coreutils, # CPPI, Bison, and Autoconf. -## Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +## Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by @@ -24,6 +24,7 @@ ME := Makefile.maint # Do not save the original name or timestamp in the .tar.gz file. +# Use --rsyncable if available. GZIP_ENV = \ "--no-name --best$$( \ case $$(gzip --help) in \ @@ -33,6 +34,20 @@ GZIP_ENV = \ CVS = cvs +CVS_LIST = sh -c ' \ + (cvsu --find --types=AFGM $$*) 2>/dev/null || \ + awk -F/ '\''{ \ + if (!$$1 && $$3 !~ /^-/) { \ + f=FILENAME; \ + sub(/CVS\/Entries/, "", f); \ + print f $$2; \ + }}'\'' \ + $$(find $${*-*} -name Entries -print) /dev/null \ + ' dummy + +CVS_LIST_EXCEPT = \ + $(CVS_LIST) | if test -f .x-$@; then grep -vEf .x-$@; else grep -v ChangeLog; fi + ifeq ($(origin prev_version_file), undefined) prev_version_file = .prev-version endif @@ -69,126 +84,184 @@ local-checks-available = \ local-check = $(filter-out $(local-checks-to-skip), $(local-checks-available)) -# Make sure C source files in src/ don't include xalloc.h directly, -# since they all already include it via sys2.h. -# It's not a big deal -- just aesthetics. .PHONY: $(syntax-check-rules) syntax-check-rules = \ sc_cast_of_argument_to_free \ sc_cast_of_x_alloc_return_value \ + sc_cast_of_alloca_return_value \ sc_changelog \ + sc_dd_max_sym_length \ sc_error_exit_success \ + sc_file_system \ + sc_obsolete_symbols \ + sc_prohibit_atoi_atof \ + sc_prohibit_jm_in_m4 \ + sc_root_tests \ sc_space_tab \ sc_sun_os_names \ sc_system_h_headers \ - sc_unmarked_diagnostics \ - sc_xalloc_h_in_src + sc_tight_scope \ + sc_trailing_space \ + sc_unmarked_diagnostics syntax-check: $(syntax-check-rules) -# @grep -E '# *include <(limits|std(def|arg|bool))\.h>' \ +# @grep -nE '# *include <(limits|std(def|arg|bool))\.h>' \ # $$(find -type f -name '*.[chly]') && \ # { echo '$(ME): found conditional include' 1>&2; \ # exit 1; } || : -# grep -E '^# *include <(string|stdlib)\.h>' \ +# grep -nE '^# *include <(string|stdlib)\.h>' \ # $(srcdir)/{lib,src}/*.[chy] && \ # { echo '$(ME): FIXME' 1>&2; \ # exit 1; } || : # FIXME: don't allow `#include .strings\.h' anywhere -# Look for diagnostics that aren't marked for translation. -# This won't find any for which error's format string is on a separate line. -sc_unmarked_diagnostics: - @grep --exclude=$(srcdir)/src/shred.c -E \ - '\&2; \ - exit 1; } || : - sc_cast_of_argument_to_free: - @grep -E '\&2; \ exit 1; } || : sc_cast_of_x_alloc_return_value: - @grep -E --exclude=$(srcdir)/lib/regex.c \ - '\*\) *x(m|c|re)alloc\>' $(srcdir)/{lib,src}/*.[chy] && \ + @grep -nE --exclude=$(srcdir)/lib/regex.c \ + '\*\) *x(m|c|re)alloc\>' \ + $(srcdir)/{lib,src}/*.[chy] && \ { echo '$(ME): don'\''t cast x*alloc return value' 1>&2; \ exit 1; } || : +sc_cast_of_alloca_return_value: + @grep -nE '\*\) *alloca\>' \ + $(srcdir)/src/*.[chy] && \ + { echo '$(ME): don'\''t cast alloca return value' 1>&2; \ + exit 1; } || : + sc_space_tab: - @( cvsu --list ) > /dev/null 2>&1 || : && \ - grep '[ ] ' \ - $$(cvsu --list | grep -vEf .x-$@ ) && \ + @grep -n '[ ] ' \ + $$($(CVS_LIST_EXCEPT)) && \ { echo '$(ME): found SPACE-TAB sequence; remove the SPACE' \ 1>&2; exit 1; } || : +# Don't use the old ato* functions in `real' code. +# They provide no error checking mechanism. +# Instead, use strto* functions. +sc_prohibit_atoi_atof: + @grep -nE '\<(ato[filq]|ato''ll)\>' \ + $$($(CVS_LIST_EXCEPT)) && \ + { echo '$(ME): do not use ato''f, ato''i, ato''l, ato''ll, or ato''q' \ + 1>&2; exit 1; } || : + # Using EXIT_SUCCESS as the first argument to error is misleading, # since when that parameter is 0, error does not exit. Use `0' instead. sc_error_exit_success: - @grep -F 'error (EXIT_SUCCESS,' \ + @grep -nF 'error (EXIT_SUCCESS,' \ $$(find -type f -name '*.[chly]') && \ { echo '$(ME): found error (EXIT_SUCCESS' 1>&2; \ exit 1; } || : -# FIXME: merge this with sc_system_h_headers below. -# xalloc.h is included via system.h, so should not be included -# directly by any file in src/. -sc_xalloc_h_in_src: - @if test -f $(srcdir)/src/sys2.h; then \ - if grep 'xalloc\.h' $(srcdir)/src/*.c; then \ - exit 1; \ - fi; \ - fi +sc_file_system: + @grep -ni 'file''system' \ + $$($(CVS_LIST_EXCEPT)) && \ + { echo '$(ME): found use of "file''system";' \ + 'rewrite to use "file system"' 1>&2; \ + exit 1; } || : + +sc_obsolete_symbols: + @grep -nE '\<(HAVE_''FCNTL_H)\>' \ + $$($(CVS_LIST_EXCEPT)) && \ + { echo '$(ME): do not use HAVE_''FCNTL_H' \ + 1>&2; exit 1; } || : # FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ # Each nonempty line must start with a year number, or a TAB. sc_changelog: - @grep '^[^12 ]' $$(find . -name ChangeLog -maxdepth 2) && \ + @grep -n '^[^12 ]' $$(find . -maxdepth 2 -name ChangeLog) && \ { echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2; \ exit 1; } || : -header_regexp = \ - alloca\ - |closeout\ - |ctype\ - |dirent\ - |errno\ - |fcntl\ - |inttypes\ - |limits\ - |locale\ - |pathmax\ - |std(lib|bool)\ - |string\ - |sys/(stat|dir|time)\ - |time\ - |unistd\ - |utime\ - |version-etc\ - |xalloc -h_re := $(shell echo '$(header_regexp)'|tr -d ' ') +# Ensure that dd's definition of LONGEST_SYMBOL stays in sync +# with the strings from the two affected variables. +dd_c = $(srcdir)/src/dd.c +sc_dd_max_sym_length: +ifneq ($(wildcard $(dd_c)),) + @len=$$( (sed -n '/conversions\[\] =$$/,/^};/p' $(dd_c);\ + sed -n '/flags\[\] =$$/,/^};/p' $(dd_c) ) \ + |sed -n '/"/s/^[^"]*"\([^"]*\)".*/\1/p' \ + | wc --max-line-length); \ + max=$$(sed -n '/^#define LONGEST_SYMBOL /s///p' $(dd_c) \ + |tr -d '"' | wc --max-line-length); \ + if test "$$len" = "$$max"; then :; else \ + echo 'dd.c: LONGEST_SYMBOL is not longest' 1>&2; \ + exit 1; \ + fi +endif + +# Many m4 macros names once began with `jm_'. +# On 2004-04-13, they were all changed to start with gl_ instead. +# Make sure that none are inadvertently reintroduced. +sc_prohibit_jm_in_m4: + @grep -nE 'jm_[A-Z]' \ + $$($(CVS_LIST) $(srcdir)/m4 |grep '\.m4$$') && \ + { echo '$(ME): do not use jm_ in m4 macro names' \ + 1>&2; exit 1; } || : + +sc_root_tests: + @t1=sc-root.expected; t2=sc-root.actual; \ + grep -nl '^PRIV_CHECK_ARG=require-root' \ + $$($(CVS_LIST) tests) |sed s,tests,., |sort > $$t1; \ + sed -n 's, cd \([^ ]*\) .*MAKE..check TESTS=\(.*\),./\1/\2,p' \ + $(srcdir)/tests/Makefile.am |sort > $$t2; \ + diff -u $$t1 $$t2 || diff=1; \ + rm -f $$t1 $$t2; \ + test "$$diff" \ + && { echo 'tests/Makefile.am: missing check-root action'>&2; \ + exit 1; } || : + +# Create a list of regular expressions matching the names +# of files included from system.h. Exclude a couple. +.re-list: + @sed -n '/^# *include /s///p' $(srcdir)/src/system.h \ + | grep -Ev 'sys/(param|file)\.h' \ + | sed 's/ .*//;;s/^["<]/^# *include [<"]/;s/\.h[">]$$/\\.h[">]/' \ + > $@-t + @mv $@-t $@ # Files in src/ should not include directly any of # the headers already included via system.h. -# Get list of candidates with this: -# grep -h include src/sys*.h|sed 's/.*include //'|sort - -sc_system_h_headers: - @( cvsu --list ) > /dev/null 2>&1 || : && \ - grep -E '^# *include ["<]($(h_re))\.h[">]' \ - $$(cvsu --list src | grep -Ev 'sys(2|tem)\.h$$') \ - && { echo '$(ME): the above are already included via system.h'\ - 1>&2; exit 1; } || : +sc_system_h_headers: .re-list + if test -f $(srcdir)/src/system.h; then \ + trap 'rc=$$?; rm -f .re-list; exit $$rc' 0 1 2 3 15; \ + grep -nE -f .re-list \ + $$($(CVS_LIST) src | \ + grep -Ev '((copy|system)\.h|parse-gram\.c)$$') \ + && { echo '$(ME): the above are already included via system.h'\ + 1>&2; exit 1; } || :; \ + fi sc_sun_os_names: - @( cvsu --list ) > /dev/null 2>&1 || : && \ - grep -Ei \ + @grep -nEi \ 'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \ - $$(cvsu --list | grep -vEf .x-$@ ) && \ + $$($(CVS_LIST_EXCEPT)) && \ { echo '$(ME): found misuse of Sun OS version numbers' 1>&2; \ exit 1; } || : +sc_tight_scope: + $(MAKE) -C src $@ + +sc_trailing_space: + @grep -n '[ ]$$' \ + $$($(CVS_LIST_EXCEPT)) && \ + { echo '$(ME): found trailing space(s)' \ + 1>&2; exit 1; } || : + +# Look for diagnostics that aren't marked for translation. +# This won't find any for which error's format string is on a separate line. +sc_unmarked_diagnostics: + @grep -nE \ + '\&2; \ + exit 1; } || : + # Ensure that date's --help output stays in sync with the info # documentation for GNU strftime. The only exception is %N, # which date accepts but GNU strftime does not. @@ -208,8 +281,17 @@ strftime-check: # not @...@ in Makefile.am, now that we can rely on automake # to emit a definition for each substituted variable. makefile-check: - grep -E '@[A-Z_0-9]+@' `find . -name Makefile.am` \ - && { echo 'Makefile.maint: use $(...), not @...@' 1>&2; exit 1; } || : + grep -nE '@[A-Z_0-9]+@' `find . -name Makefile.am` \ + && { echo 'Makefile.maint: use $$(...), not @...@' 1>&2; exit 1; } || : + +news-date-check: NEWS + today=`date +%Y-%m-%d`; \ + if head NEWS | grep '^\*.*'$$today >/dev/null; then \ + :; \ + else \ + echo "today's date is not in NEWS" 1>&2; \ + exit 1; \ + fi changelog-check: if head ChangeLog | grep 'Version $(VERSION)' >/dev/null; then \ @@ -225,28 +307,30 @@ m4-check: exit 1; } || : # Verify that all source files using _() are listed in po/POTFILES.in. +# FIXME: don't hard-code src/false.c below; use a more general mechanism. po-check: - if test -f po/POTFILES.in; then \ - grep -E -v '^(#|$$)' po/POTFILES.in | sort > $@-1; \ - files=; \ + if test -f po/POTFILES.in; then \ + grep -E -v '^(#|$$)' po/POTFILES.in \ + | grep -v '^src/false\.c$$' | sort > $@-1; \ + files=; \ for file in lib/*.[chly] src/*.[chly]; do \ - case $$file in \ - *.[ch]) \ - base=`expr " $$file" : ' \(.*\)\..'`; \ - { test -f $$base.l || test -f $$base.y; } && continue;; \ - esac; \ - files="$$files $$file"; \ - done; \ - grep -E -l '\bN?_\([^)"]*("|$$)' $$files | sort > $@-2; \ - diff -u $@-1 $@-2 || exit 1; \ - rm -f $@-1 $@-2; \ + case $$file in \ + *.[ch]) \ + base=`expr " $$file" : ' \(.*\)\..'`; \ + { test -f $$base.l || test -f $$base.y; } && continue;; \ + esac; \ + files="$$files $$file"; \ + done; \ + grep -E -l '\bN?_\([^)"]*("|$$)' $$files | sort > $@-2; \ + diff -u $@-1 $@-2 || exit 1; \ + rm -f $@-1 $@-2; \ fi # In a definition of #define AUTHORS "... and ..." where the RHS contains # the English word `and', the string must be marked with `N_ (...)' so that # gettext recognizes it as a string requiring translation. author_mark_check: - @grep '^# *define AUTHORS "[^"]* and ' src/*.c |grep -v ' N_ (' && \ + @grep -n '^# *define AUTHORS "[^"]* and ' src/*.c |grep -v ' N_ (' && \ { echo 'Makefile.maint: enclose the above strings in N_ (...)' 1>&2; \ exit 1; } || : @@ -258,7 +342,7 @@ author_mark_check: # that we'd have to worry about limits on command line length. msg = 'Makefile.maint: Do not use `:'\'' above; use @PATH_SEPARATOR@ instead' makefile_path_separator_check: - @grep 'PATH=.*:' `find $(srcdir) -name Makefile.am` \ + @grep -n 'PATH=.*:' `find $(srcdir) -name Makefile.am` \ && { echo $(msg) 1>&2; exit 1; } || : # Check that `make alpha' will not fail at the end of the process. @@ -279,7 +363,7 @@ v_etc_file = lib/version-etc.c # Make sure that the copyright date in $(v_etc_file) is up to date. copyright-check: @if test -f $(v_etc_file); then \ - grep '"Copyright (C) $(shell date +%Y) Free' $(v_etc_file) \ + grep 'enum { COPYRIGHT_YEAR = 2005 };' $(v_etc_file) \ >/dev/null \ || { echo 'out of date copyright in $(v_etc_file); update it' 1>&2; \ exit 1; }; \ @@ -330,21 +414,23 @@ null_AM_MAKEFLAGS = \ # Detect format-string/arg-list mismatches that would normally be obscured # by the use of _(). The --disable-nls effectively defines away that macro, # and building with CFLAGS='-Wformat -Werror' causes any format warning to be -# treated as a failure. +# treated as a failure. Also, check for shadowing problems with -Wshadow. +# These CFLAGS are pretty strict. If you build this target, you probably +# have to have a recent version of gcc and glibc headers. TMPDIR ?= /tmp t=$(TMPDIR)/$(PACKAGE)/test my-distcheck: $(local-check) -rm -rf $(t) mkdir -p $(t) GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz - cd $(t)/$(distdir) \ - && ./configure --disable-nls \ - && $(MAKE) CFLAGS='-Wformat -Werror' \ - AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)' \ - && $(MAKE) dvi \ - && $(MAKE) check \ + cd $(t)/$(distdir) \ + && ./configure --disable-nls \ + && $(MAKE) CFLAGS='-Werror -Wall -Wformat -Wshadow' \ + AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)' \ + && $(MAKE) dvi \ + && $(MAKE) check \ && $(MAKE) distclean - (cd $(t) && mv $(distdir) $(distdir).old \ + (cd $(t) && mv $(distdir) $(distdir).old \ && $(AMTAR) -zxf - ) < $(distdir).tar.gz diff -ur $(t)/$(distdir).old $(t)/$(distdir) -rm -rf $(t) @@ -377,15 +463,9 @@ rel-check: prev-tgz = $(PACKAGE)-$(PREV_VERSION).tar.gz xd-delta = $(PACKAGE)-$(PREV_VERSION)-$(VERSION).xdelta -signatures ?= $(distdir).tar.bz2.asc $(distdir).tar.gz.asc -%.asc: % - rm -f $@ - gpg --armor --detach-sign -o $@ $< - -rel-files = $(xd-delta) $(distdir).tar.bz2 $(distdir).tar.gz $(signatures) -announce_gen ?= ./announce-gen -announcement: NEWS ChangeLog $(rel-files) $(signatures) - @$(announce_gen) \ +rel-files = $(xd-delta) $(DIST_ARCHIVES) +announcement: NEWS ChangeLog $(rel-files) + @./announce-gen \ --release-type=$(RELEASE_TYPE) \ --package=$(PACKAGE) \ --prev=$(PREV_VERSION) \ @@ -395,25 +475,125 @@ announcement: NEWS ChangeLog $(rel-files $(addprefix --url-dir=, $(url_dir_list)) \ -define emit-upload-commands - echo ===================================== - echo ===================================== - echo upload $(PACKAGE) $(PREV_VERSION) $(VERSION) - echo '# send the /tmp/announcement e-mail' - echo ===================================== - echo ===================================== -endef +## ---------------- ## +## Updating files. ## +## ---------------- ## + +ftp-gnu = ftp://ftp.gnu.org/gnu +www-gnu = http://www.gnu.org + +# Use mv, if you don't have/want move-if-change. +move_if_change ?= move-if-change + + +# --------------------- # +# Updating everything. # +# --------------------- # + +.PHONY: update +local_updates ?= wget-update cvs-update po-update +update: $(local_updates) + + +# ------------------- # +# Updating PO files. # +# ------------------- # + +po_repo = http://www.iro.umontreal.ca/contrib/po/maint/$(PACKAGE) +.PHONY: do-po-update po-update +do-po-update: + tmppo=/tmp/$(PACKAGE)-$(VERSION)-po &&\ + rm -rf $$tmppo && \ + mkdir $$tmppo && \ + (cd $$tmppo && \ + $(WGET) $(WGETFLAGS) -r -l1 -nd --no-parent -A '*.po' $(po_repo)) &&\ + cp $$tmppo/*.po po + cd po && $(MAKE) update-po + $(MAKE) po-check + +po-update: + if test -d "po"; then \ + $(MAKE) do-po-update; \ + fi + +# -------------------------- # +# Updating GNU build tools. # +# -------------------------- # + +# The following pseudo table associates a local directory and a URL +# with each of the files that belongs to some other package and is +# regularly updated from the specified URL. +wget_files ?= \ + $(srcdir)/build-aux/config.guess \ + $(srcdir)/build-aux/config.sub \ + $(srcdir)/build-aux/texinfo.tex \ + $(srcdir)/src/ansi2knr.c + +get-targets = $(patsubst %, get-%, $(wget_files)) + +config.guess-url_prefix = $(ftp-gnu)/build-aux/ +config.sub-url_prefix = $(ftp-gnu)/build-aux/ + +ansi2knr.c-url_prefix = ftp://ftp.cs.wisc.edu/ghost/ + +texinfo.tex-url_prefix = $(ftp-gnu)/texinfo/ + +standards.texi-url_prefix = $(www-gnu)/prep/ +make-stds.texi-url_prefix = $(standards.texi-url_prefix) + +target = $(patsubst get-%, %, $@) +url = $($(notdir $(target))-url_prefix)$(notdir $(target)) + +.PHONY: $(get-targets) +$(get-targets): + $(WGET) $(WGETFLAGS) $(url) -O $(target).t \ + && $(move_if_change) $(target).t $(target) + +cvs_files ?= \ + $(srcdir)/build-aux/depcomp \ + $(srcdir)/build-aux/install-sh \ + $(srcdir)/build-aux/missing \ + $(srcdir)/build-aux/mkinstalldirs \ + $(srcdir)/src/ansi2knr.c +automake_repo=:pserver:anoncvs:anoncvs@sources.redhat.com:/cvs/automake +.PHONY: wget-update +wget-update: $(get-targets) + +.PHONY: cvs-update +cvs-update: + fail=; \ + for f in $(cvs_files); do \ + test -f $$f || { echo "*** skipping $$f" 1>&2; continue; }; \ + cvs diff $$f > /dev/null \ + || { echo "*** $$f is locally modified; skipping it" 1>&2; \ + fail=yes; continue; }; \ + file=$$(basename $$f); \ + echo checking out $$file...; \ + $(CVS) -d $(automake_repo) co -p automake/lib/$$file> $$f.t \ + && $(move_if_change) $$f.t $$f; \ + done; \ + test "$$fail" && exit 1 + +emit_upload_commands: + @echo ===================================== + @echo ===================================== + @echo "$(srcdir)/gnupload $(GNUPLOADFLAGS) \\" + @echo " --to $(gnu_rel_host):coreutils \\" + @echo " $(rel-files)" + @echo '# send the /tmp/announcement e-mail' + @echo ===================================== + @echo ===================================== $(xd-delta): $(release_archive_dir)/$(prev-tgz) $(distdir).tar.gz xdelta delta -9 $^ $@ || : .PHONY: alpha beta major -alpha beta major: $(local-check) +alpha beta major: news-date-check $(local-check) $(MAKE) cvs-dist $(MAKE) $(xd-delta) $(MAKE) -s announcement RELEASE_TYPE=$@ > /tmp/announce-$(my_distdir) ln $(rel-files) $(release_archive_dir) chmod a-w $(rel-files) + $(MAKE) -s emit_upload_commands RELEASE_TYPE=$@ echo $(VERSION) > $(prev_version_file) $(CVS) ci -m. $(prev_version_file) - @$(emit-upload-commands) Index: NEWS =================================================================== RCS file: /cvsroot/bison/bison/NEWS,v retrieving revision 1.120 diff -p -u -r1.120 NEWS --- NEWS 19 Jul 2005 06:56:43 -0000 1.120 +++ NEWS 24 Jul 2005 07:20:54 -0000 @@ -1,7 +1,7 @@ Bison News ---------- -Changes in the next version (not yet released): +Changes in version 2.0b, 2005-07-24: * Bison-generated parsers now support the translation of diagnostics like "syntax error" into languages other than English. The default @@ -19,7 +19,10 @@ Changes in the next version (not yet rel behind on the stack. Also, the start symbol is now destroyed after a successful parse. In both cases, the behavior was formerly inconsistent. -The following change was also in version 2.0a, 2005-05-22: +* The yytname array now contains the same contents that it did in 2.0, + undoing an incompatible and undocumented change made in 2.0a. + +Changes in version 2.0a, 2005-05-22: * When generating verbose diagnostics, Bison-generated parsers no longer quote the literal strings associated with tokens. For example, for Index: data/c.m4 =================================================================== RCS file: /cvsroot/bison/bison/data/c.m4,v retrieving revision 1.29 diff -p -u -r1.29 c.m4 --- data/c.m4 18 Jul 2005 22:14:15 -0000 1.29 +++ data/c.m4 24 Jul 2005 07:20:54 -0000 @@ -119,7 +119,7 @@ m4_define([b4_int_type], m4_eval([0 <= $1]), [1], [unsigned int], - [int])]) + [int])]) # b4_int_type_for(NAME) Index: data/lalr1.cc =================================================================== RCS file: /cvsroot/bison/bison/data/lalr1.cc,v retrieving revision 1.91 diff -p -u -r1.91 lalr1.cc --- data/lalr1.cc 22 Jul 2005 17:07:31 -0000 1.91 +++ data/lalr1.cc 24 Jul 2005 07:20:54 -0000 @@ -946,7 +946,7 @@ yy::]b4_parser_class_name[::yyreport_syn { message += (!count++) ? ", expecting " : " or "; message += yytnamerr_ (yytname_[x]); - } + } } } else Index: data/yacc.c =================================================================== RCS file: /cvsroot/bison/bison/data/yacc.c,v retrieving revision 1.100 diff -p -u -r1.100 yacc.c --- data/yacc.c 22 Jul 2005 17:07:31 -0000 1.100 +++ data/yacc.c 24 Jul 2005 07:20:55 -0000 @@ -82,7 +82,7 @@ m4_define([b4_int_type], m4_eval([0 <= $1]), [1], [unsigned int], - [int])]) + [int])]) ## ----------------- ## @@ -390,7 +390,7 @@ union yyalloc #define YYUNDEFTOK ]b4_undef_token_number[ #define YYMAXUTOK ]b4_user_token_number_max[ -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ @@ -529,7 +529,7 @@ do \ goto yybackup; \ } \ else \ - { \ + { \ yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")); \ YYERROR; \ } \ @@ -609,7 +609,7 @@ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ - yysymprint (stderr, \ + yysymprint (stderr, \ Type, Value]b4_location_if([, Location])[); \ YYFPRINTF (stderr, "\n"); \ } \ Index: data/m4sugar/m4sugar.m4 =================================================================== RCS file: /cvsroot/bison/bison/data/m4sugar/m4sugar.m4,v retrieving revision 1.7 diff -p -u -r1.7 m4sugar.m4 --- data/m4sugar/m4sugar.m4 14 May 2005 06:49:46 -0000 1.7 +++ data/m4sugar/m4sugar.m4 24 Jul 2005 07:20:55 -0000 @@ -2,7 +2,9 @@ divert(-1)# # This file is part of Autoconf. # Base M4 layer. # Requires GNU M4. -# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software +# Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -58,7 +60,7 @@ changequote([, ]) # long macros we define. ifdef([__gnu__], , [errprint(M4sugar requires GNU M4. Install it before installing M4sugar or -set the M4 environment variable to its path name.) +set the M4 environment variable to its absolute file name.) m4exit(2)]) @@ -83,12 +85,12 @@ m4_undefine([undefine]) # Define DST as the definition of SRC. # What's the difference between: # 1. m4_copy([from], [to]) -# 2. m4_define([from], [to($@)]) -# Well, obviously 1 is more expansive in space. Maybe 2 is more expansive +# 2. m4_define([to], [from($@)]) +# Well, obviously 1 is more expensive in space. Maybe 2 is more expensive # in time, but because of the space cost of 1, it's not that obvious. # Nevertheless, one huge difference is the handling of `$0'. If `from' # uses `$0', then with 1, `to''s `$0' is `to', while it is `from' in 2. -# The user will certainly prefer see `from'. +# The user will certainly prefer to see `to'. m4_define([m4_copy], [m4_define([$2], m4_defn([$1]))]) @@ -131,7 +133,7 @@ m4_rename_m4([eval]) m4_rename_m4([format]) m4_rename_m4([ifdef]) m4_rename([ifelse], [m4_if]) -m4_rename_m4([include]) +m4_undefine([include]) m4_rename_m4([incr]) m4_rename_m4([index]) m4_rename_m4([indir]) @@ -144,7 +146,7 @@ m4_undefine([popdef]) m4_rename_m4([pushdef]) m4_rename([regexp], [m4_bregexp]) m4_rename_m4([shift]) -m4_rename_m4([sinclude]) +m4_undefine([sinclude]) m4_rename_m4([substr]) m4_rename_m4([symbols]) m4_rename_m4([syscmd]) @@ -199,76 +201,29 @@ m4_define([m4_assert], [m4_fatal([assert failed: $1], [$2])])]) + ## ------------- ## ## 3. Warnings. ## ## ------------- ## -# m4_warning_ifelse(CATEGORY, IF-TRUE, IF-FALSE) -# ---------------------------------------------- -# If the CATEGORY of warnings is enabled, expand IF_TRUE otherwise -# IF-FALSE. -# -# The variable `m4_warnings' contains a comma separated list of -# warnings which order is the converse from the one specified by -# the user, i.e., if she specified `-W error,none,obsolete', -# `m4_warnings' is `obsolete,none,error'. We read it from left to -# right, and: -# - if none or noCATEGORY is met, run IF-FALSE -# - if all or CATEGORY is met, run IF-TRUE -# - if there is nothing left, run IF-FALSE. -m4_define([m4_warning_ifelse], -[_m4_warning_ifelse([$1], [$2], [$3], m4_warnings)]) - - -# _m4_warning_ifelse(CATEGORY, IF-TRUE, IF-FALSE, WARNING1, ...) -# -------------------------------------------------------------- -# Implementation of the loop described above. -m4_define([_m4_warning_ifelse], -[m4_case([$4], - [$1], [$2], - [all], [$2], - [], [$3], - [none], [$3], - [no-$1], [$3], - [$0([$1], [$2], [$3], m4_shiftn(4, $@))])]) - - -# _m4_warning_error_ifelse(IF-TRUE, IF-FALSE) -# ------------------------------------------- -# The same as m4_warning_ifelse, but scan for `error' only. -m4_define([_m4_warning_error_ifelse], -[__m4_warning_error_ifelse([$1], [$2], m4_warnings)]) - - -# __m4_warning_error_ifelse(IF-TRUE, IF-FALSE) -# -------------------------------------------- -# The same as _m4_warning_ifelse, but scan for `error' only. -m4_define([__m4_warning_error_ifelse], -[m4_case([$3], - [error], [$1], - [], [$2], - [no-error], [$2], - [$0([$1], [$2], m4_shiftn(3, $@))])]) - - - -# _m4_warn(MESSAGE) -# ----------------- -# Report MESSAGE as a warning, unless the user requested -W error, -# in which case report a fatal error. -m4_define([_m4_warn], -[_m4_warning_error_ifelse([m4_fatal([$1])], - [m4_warning([$1])])]) +# _m4_warn(CATEGORY, MESSAGE, STACK-TRACE) +# ---------------------------------------- +# Report a MESSAGE to the user if the CATEGORY of warnings is enabled. +# This is for traces only. +# The STACK-TRACE is a \n-separated list of "LOCATION: MESSAGE". +m4_define([_m4_warn], []) # m4_warn(CATEGORY, MESSAGE) # -------------------------- -# Report a MESSAGE to the autoconf user if the CATEGORY of warnings -# is requested (in fact, not disabled). +# Report a MESSAGE to the user if the CATEGORY of warnings is enabled. m4_define([m4_warn], -[m4_warning_ifelse([$1], [_m4_warn([$2])])]) - +[_m4_warn([$1], [$2], +m4_ifdef([m4_expansion_stack], + [m4_defn([m4_expansion_stack]) +m4_location[: the top level]]))dnl +]) @@ -294,7 +249,7 @@ m4_define([m4_warn], # been included. m4_define([m4_include_unique], [m4_ifdef([m4_include($1)], - [m4_warn([syntax], [file `$1' included several times])])dnl + [m4_warn([syntax], [file `$1' included several times])])dnl m4_define([m4_include($1)])]) @@ -347,7 +302,7 @@ m4_define([m4_ifval], m4_define([m4_n], [m4_if([$1], [], [], - [$1 + [$1 ])]) @@ -358,7 +313,7 @@ m4_define([m4_n], m4_define([m4_ifvaln], [m4_if([$1], [], [m4_n([$3])], - [m4_n([$2])])]) + [m4_n([$2])])]) # m4_ifset(MACRO, [IF-TRUE], [IF-FALSE]) @@ -367,8 +322,8 @@ m4_define([m4_ifvaln], # expand IF-FALSE, otherwise IF-TRUE. m4_define([m4_ifset], [m4_ifdef([$1], - [m4_if(m4_defn([$1]), [], [$3], [$2])], - [$3])]) + [m4_ifval(m4_defn([$1]), [$2], [$3])], + [$3])]) # m4_ifndef(NAME, [IF-NOT-DEFINED], [IF-DEFINED]) @@ -419,23 +374,32 @@ m4_define([m4_case], # All the values are optional, and the macro is robust to active symbols # properly quoted. m4_define([m4_bmatch], -[m4_if([$#], 0, [], - [$#], 1, [], +[m4_if([$#], 0, [m4_fatal([$0: too few arguments: $#])], + [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])], [$#], 2, [$2], [m4_if(m4_bregexp([$1], [$2]), -1, [$0([$1], m4_shiftn(3, $@))], [$3])])]) +# m4_car(LIST) +# m4_cdr(LIST) +# ------------ +# Manipulate m4 lists. +m4_define([m4_car], [[$1]]) +m4_define([m4_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) + + # m4_map(MACRO, LIST) # ------------------- # Invoke MACRO($1), MACRO($2) etc. where $1, $2... are the elements # of LIST (which can be lists themselves, for multiple arguments MACROs). m4_define([m4_fst], [$1]) m4_define([m4_map], -[m4_if([$2], [], [], - [$2], [[]], [], - [$1(m4_fst($2))[]dnl -m4_map([$1], m4_cdr($2))])]) +[m4_ifval([$2], + [$1(m4_fst($2))[]m4_map([$1], m4_cdr($2))])]) # m4_map_sep(MACRO, SEPARATOR, LIST) @@ -444,20 +408,16 @@ m4_map([$1], m4_cdr($2))])]) # are the elements of LIST (which can be lists themselves, for multiple # arguments MACROs). m4_define([m4_map_sep], -[m4_if([$3], [[]], [], - [$1(m4_fst($3))[]dnl -m4_if(m4_cdr($3), - [[]], [], - [$2])[]dnl -m4_map_sep([$1], [$2], m4_cdr($3))])]) +[m4_ifval([$3], + [$1(m4_fst($3))[]m4_map([$2[]$1], m4_cdr($3))])]) ## ---------------------------------------- ## ## 6. Enhanced version of some primitives. ## ## ---------------------------------------- ## -# m4_patsubsts(STRING, RE1, SUBST1, RE2, SUBST2, ...) -# --------------------------------------------------- +# m4_bpatsubsts(STRING, RE1, SUBST1, RE2, SUBST2, ...) +# ---------------------------------------------------- # m4 equivalent of # # $_ = STRING; @@ -468,7 +428,7 @@ m4_map_sep([$1], [$2], m4_cdr($3))])]) # All the values are optional, and the macro is robust to active symbols # properly quoted. # -# I would have liked to name this macro `m4_patsubst', unfortunately, +# I would have liked to name this macro `m4_bpatsubst', unfortunately, # due to quotation problems, I need to double quote $1 below, therefore # the anchors are broken :( I can't let users be trapped by that. m4_define([m4_bpatsubsts], @@ -476,7 +436,7 @@ m4_define([m4_bpatsubsts], [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])], [$#], 2, [m4_builtin([patsubst], $@)], [$0(m4_builtin([patsubst], [[$1]], [$2], [$3]), - m4_shiftn(3, $@))])]) + m4_shiftn(3, $@))])]) @@ -511,7 +471,7 @@ m4_define([m4_default], # undefined. m4_define([m4_defn], [m4_ifndef([$1], - [m4_fatal([$0: undefined macro: $1])])dnl + [m4_fatal([$0: undefined macro: $1])])dnl m4_builtin([defn], $@)]) @@ -519,7 +479,7 @@ m4_builtin([defn], $@)]) # --------------------- m4_define([_m4_dumpdefs_up], [m4_ifdef([$1], - [m4_pushdef([_m4_dumpdefs], m4_defn([$1]))dnl + [m4_pushdef([_m4_dumpdefs], m4_defn([$1]))dnl m4_dumpdef([$1])dnl m4_popdef([$1])dnl _m4_dumpdefs_up([$1])])]) @@ -529,7 +489,7 @@ _m4_dumpdefs_up([$1])])]) # ----------------------- m4_define([_m4_dumpdefs_down], [m4_ifdef([_m4_dumpdefs], - [m4_pushdef([$1], m4_defn([_m4_dumpdefs]))dnl + [m4_pushdef([$1], m4_defn([_m4_dumpdefs]))dnl m4_popdef([_m4_dumpdefs])dnl _m4_dumpdefs_down([$1])])]) @@ -549,7 +509,7 @@ _m4_dumpdefs_down([$1])]) # undefined. m4_define([m4_popdef], [m4_ifndef([$1], - [m4_fatal([$0: undefined macro: $1])])dnl + [m4_fatal([$0: undefined macro: $1])])dnl m4_builtin([popdef], $@)]) @@ -594,7 +554,7 @@ m4_define([_m4_shiftn], # undefined. m4_define([m4_undefine], [m4_ifndef([$1], - [m4_fatal([$0: undefined macro: $1])])dnl + [m4_fatal([$0: undefined macro: $1])])dnl m4_builtin([undefine], $@)]) @@ -609,8 +569,8 @@ m4_builtin([undefine], $@)]) # Both limits are included, and bounds are checked for consistency. m4_define([m4_for], [m4_case(m4_sign(m4_eval($3 - $2)), - 1, [m4_assert(m4_sign(m4_default($4, 1)) == 1)], - -1, [m4_assert(m4_sign(m4_default($4, -1)) == -1)])dnl + 1, [m4_assert(m4_sign(m4_default($4, 1)) == 1)], + -1, [m4_assert(m4_sign(m4_default($4, -1)) == -1)])dnl m4_pushdef([$1], [$2])dnl m4_if(m4_eval([$3 > $2]), 1, [_m4_for([$1], [$3], m4_default([$4], 1), [$5])], @@ -639,8 +599,8 @@ m4_if($1, [$2], [], # | [m4_pushdef([$1])_foreach([$1], [$2], [$3])m4_popdef([$1])]) # | m4_define([_arg1], [$1]) # | m4_define([_foreach], -# | [m4_if([$2], [()], , -# | [m4_define([$1], _arg1$2)$3[]_foreach([$1], +# | [m4_if([$2], [()], , +# | [m4_define([$1], _arg1$2)$3[]_foreach([$1], # | (shift$2), # | [$3])])]) # @@ -670,7 +630,7 @@ m4_if($1, [$2], [], # | m4_define([_arg1], [[$1]]) # | m4_define([_foreach], # | [m4_if($2, [()], , -# | [m4_define([$1], [_arg1$2])$3[]_foreach([$1], +# | [m4_define([$1], [_arg1$2])$3[]_foreach([$1], # | [(shift$2)], # | [$3])])]) # @@ -695,7 +655,7 @@ m4_if($1, [$2], [], # | m4_define([_arg1], [$1]) # | m4_define([_foreach], # | [m4_if($2, [], , -# | [m4_define([$1], [_arg1($2)])$3[]_foreach([$1], +# | [m4_define([$1], [_arg1($2)])$3[]_foreach([$1], # | [shift($2)], # | [$3])])]) # @@ -726,14 +686,25 @@ m4_if($1, [$2], [], m4_define([m4_foreach], [m4_pushdef([$1])_m4_foreach($@)m4_popdef([$1])]) -# Low level macros used to define m4_foreach. -m4_define([m4_car], [[$1]]) -m4_define([m4_cdr], [m4_dquote(m4_shift($@))]) m4_define([_m4_foreach], -[m4_if([$2], [[]], [], - [m4_define([$1], m4_car($2))$3[]_m4_foreach([$1], - m4_cdr($2), - [$3])])]) +[m4_ifval([$2], + [m4_define([$1], m4_car($2))$3[]dnl +_m4_foreach([$1], m4_cdr($2), [$3])])]) + + +# m4_foreach_w(VARIABLE, LIST, EXPRESSION) +# ---------------------------------------- +# +# Like m4_foreach, but the list is whitespace separated. +# +# This macro is robust to active symbols: +# m4_foreach_w([Var], [ active +# b act\ +# ive ], [-Var-])end +# => -active--b--active-end +# +m4_define([m4_foreach_w], +[m4_foreach([$1], m4_split(m4_normalize([$2])), [$3])]) @@ -745,23 +716,29 @@ m4_define([_m4_foreach], # _m4_divert(DIVERSION-NAME or NUMBER) # ------------------------------------ # If DIVERSION-NAME is the name of a diversion, return its number, -# otherwise if is a NUMBER return it. +# otherwise if it is a NUMBER return it. m4_define([_m4_divert], [m4_ifdef([_m4_divert($1)], - [m4_indir([_m4_divert($1)])], - [$1])]) + [m4_indir([_m4_divert($1)])], + [$1])]) # KILL is only used to suppress output. m4_define([_m4_divert(KILL)], -1) +# _m4_divert_n_stack +# ------------------ +# Print m4_divert_stack with newline prepended, if it's nonempty. +m4_define([_m4_divert_n_stack], +[m4_ifdef([m4_divert_stack], [ +m4_defn([m4_divert_stack])])]) + + # m4_divert(DIVERSION-NAME) # ------------------------- # Change the diversion stream to DIVERSION-NAME. m4_define([m4_divert], -[m4_define([m4_divert_stack], - m4_location[: $0: $1]m4_ifdef([m4_divert_stack], [ -m4_defn([m4_divert_stack])]))dnl +[m4_define([m4_divert_stack], m4_location[: $0: $1]_m4_divert_n_stack)dnl m4_builtin([divert], _m4_divert([$1]))dnl ]) @@ -770,11 +747,9 @@ m4_builtin([divert], _m4_divert([$1]))dn # ------------------------------ # Change the diversion stream to DIVERSION-NAME, while stacking old values. m4_define([m4_divert_push], -[m4_pushdef([m4_divert_stack], - m4_location[: $0: $1]m4_ifdef([m4_divert_stack], [ -m4_defn([m4_divert_stack])]))dnl +[m4_pushdef([m4_divert_stack], m4_location[: $0: $1]_m4_divert_n_stack)dnl m4_pushdef([_m4_divert_diversion], [$1])dnl -m4_builtin([divert], _m4_divert(_m4_divert_diversion))dnl +m4_builtin([divert], _m4_divert([$1]))dnl ]) @@ -782,18 +757,19 @@ m4_builtin([divert], _m4_divert(_m4_dive # ------------------------------- # Change the diversion stream to its previous value, unstacking it. # If specified, verify we left DIVERSION-NAME. +# When we pop the last value from the stack, we divert to -1. m4_define([m4_divert_pop], -[m4_ifval([$1], - [m4_if(_m4_divert([$1]), m4_divnum, [], - [m4_fatal([$0($1): diversion mismatch: ] -m4_defn([m4_divert_stack]))])])dnl +[m4_ifndef([_m4_divert_diversion], + [m4_fatal([too many m4_divert_pop])])dnl +m4_if([$1], [], [], + [$1], m4_defn([_m4_divert_diversion]), [], + [m4_fatal([$0($1): diversion mismatch: ]_m4_divert_n_stack)])dnl +m4_popdef([m4_divert_stack])dnl m4_popdef([_m4_divert_diversion])dnl -dnl m4_ifndef([_m4_divert_diversion], -dnl [m4_fatal([too many m4_divert_pop])])dnl m4_builtin([divert], - m4_ifdef([_m4_divert_diversion], - [_m4_divert(_m4_divert_diversion)], -1))dnl -m4_popdef([m4_divert_stack])dnl + m4_ifdef([_m4_divert_diversion], + [_m4_divert(m4_defn([_m4_divert_diversion]))], + -1))dnl ]) @@ -866,18 +842,18 @@ m4_define([m4_undivert], # must keep the expansions of the various level of m4_require separated. # Right before executing the epilogue of TEST1, we have: # -# GROW - 2: Test...3 -# GROW - 1: Test...2 -# GROW: Test...1 -# BODY: +# GROW - 2: Test...3 +# GROW - 1: Test...2 +# GROW: Test...1 +# BODY: # # Finally the epilogue of TEST1 undiverts GROW - 2, GROW - 1, and # GROW into the regular flow, BODY. # -# GROW - 2: -# GROW - 1: -# GROW: -# BODY: Test...3; Test...2; Test...1 +# GROW - 2: +# GROW - 1: +# GROW: +# BODY: Test...3; Test...2; Test...1 # # (The semicolons are here for clarification, but of course are not # emitted.) This is what Autoconf 2.0 (I think) to 2.13 (I'm sure) @@ -901,27 +877,27 @@ m4_define([m4_undivert], # # The dependencies between the macros are: # -# 3 --- 2b -# / \ is m4_require'd by -# / \ left -------------------- right -# 2a ------------ 1 +# 3 --- 2b +# / \ is m4_require'd by +# / \ left -------------------- right +# 2a ------------ 1 # # If you strictly apply the rules given in the previous section you get: # -# GROW - 2: TEST3 -# GROW - 1: TEST2a; TEST2b -# GROW: TEST1 -# BODY: +# GROW - 2: TEST3 +# GROW - 1: TEST2a; TEST2b +# GROW: TEST1 +# BODY: # # (TEST2a, although required by TEST3 is not expanded in GROW - 3 # because is has already been expanded before in GROW - 1, so it has # been AC_PROVIDE'd, so it is not expanded again) so when you undivert # the stack of diversions, you get: # -# GROW - 2: -# GROW - 1: -# GROW: -# BODY: TEST3; TEST2a; TEST2b; TEST1 +# GROW - 2: +# GROW - 1: +# GROW: +# BODY: TEST3; TEST2a; TEST2b; TEST1 # # i.e., TEST2a is expanded after TEST3 although the latter required the # former. @@ -939,48 +915,48 @@ m4_define([m4_undivert], # In the example above, when TEST2a is expanded, but it's epilogue is # not run yet, you have: # -# GROW - 2: -# GROW - 1: TEST2a -# GROW: Elaboration of TEST1 -# BODY: +# GROW - 2: +# GROW - 1: TEST2a +# GROW: Elaboration of TEST1 +# BODY: # # The epilogue of TEST2a emits it immediately: # -# GROW - 2: -# GROW - 1: -# GROW: Elaboration of TEST1 -# BODY: TEST2a +# GROW - 2: +# GROW - 1: +# GROW: Elaboration of TEST1 +# BODY: TEST2a # # TEST2b then requires TEST3, so right before the epilogue of TEST3, you # have: # -# GROW - 2: TEST3 -# GROW - 1: Elaboration of TEST2b -# GROW: Elaboration of TEST1 -# BODY: TEST2a +# GROW - 2: TEST3 +# GROW - 1: Elaboration of TEST2b +# GROW: Elaboration of TEST1 +# BODY: TEST2a # # The epilogue of TEST3 emits it: # -# GROW - 2: -# GROW - 1: Elaboration of TEST2b -# GROW: Elaboration of TEST1 -# BODY: TEST2a; TEST3 +# GROW - 2: +# GROW - 1: Elaboration of TEST2b +# GROW: Elaboration of TEST1 +# BODY: TEST2a; TEST3 # # TEST2b is now completely expanded, and emitted: # -# GROW - 2: -# GROW - 1: -# GROW: Elaboration of TEST1 -# BODY: TEST2a; TEST3; TEST2b +# GROW - 2: +# GROW - 1: +# GROW: Elaboration of TEST1 +# BODY: TEST2a; TEST3; TEST2b # # and finally, TEST1 is finished and emitted: # -# GROW - 2: -# GROW - 1: -# GROW: -# BODY: TEST2a; TEST3; TEST2b: TEST1 +# GROW - 2: +# GROW - 1: +# GROW: +# BODY: TEST2a; TEST3; TEST2b: TEST1 # -# The idea, is simple, but the implementation is a bit evolved. If you +# The idea is simple, but the implementation is a bit evolved. If you # are like me, you will want to see the actual functioning of this # implementation to be convinced. The next section gives the full # details. @@ -991,18 +967,18 @@ m4_define([m4_undivert], # # We consider the macros above, and this configure.ac: # -# AC_INIT -# TEST1 +# AC_INIT +# TEST1 # # You should keep the definitions of _m4_defun_pro, _m4_defun_epi, and # m4_require at hand to follow the steps. # -# This implements tries not to assume that of the current diversion is +# This implements tries not to assume that the current diversion is # BODY, so as soon as a macro (m4_defun'd) is expanded, we first # record the current diversion under the name _m4_divert_dump (denoted # DUMP below for short). This introduces an important difference with # the previous versions of Autoconf: you cannot use m4_require if you -# were not inside an m4_defun'd macro, and especially, you cannot +# are not inside an m4_defun'd macro, and especially, you cannot # m4_require directly from the top level. # # We have not tried to simulate the old behavior (better yet, we @@ -1017,104 +993,64 @@ m4_define([m4_undivert], # diversion stack: BODY |- # # * TEST1 is expanded -# The prologue of TEST1 sets AC_DIVERSION_DUMP, which is the diversion +# The prologue of TEST1 sets _m4_divert_dump, which is the diversion # where the current elaboration will be dumped, to the current # diversion. It also m4_divert_push to GROW, where the full # expansion of TEST1 and its dependencies will be elaborated. -# DUMP: BODY -# BODY: empty -# diversions: GROW, BODY |- -# -# * TEST1 requires TEST2a: prologue -# m4_require m4_divert_pushes another temporary diversion GROW - 1 (in -# fact, the diversion whose number is one less than the current -# diversion), and expands TEST2a in there. -# DUMP: BODY -# BODY: empty -# diversions: GROW-1, GROW, BODY |- -# -# * TEST2a is expanded. -# Its prologue pushes the current diversion again. -# DUMP: BODY -# BODY: empty -# diversions: GROW - 1, GROW - 1, GROW, BODY |- -# It is expanded in GROW - 1, and GROW - 1 is popped by the epilogue -# of TEST2a. # DUMP: BODY -# BODY: nothing +# BODY: empty +# diversions: GROW, BODY |- +# +# * TEST1 requires TEST2a +# _m4_require_call m4_divert_pushes another temporary diversion, +# GROW - 1, and expands TEST2a in there. +# DUMP: BODY +# BODY: empty # GROW - 1: TEST2a # diversions: GROW - 1, GROW, BODY |- +# Than the content of the temporary diversion is moved to DUMP and the +# temporary diversion is popped. +# DUMP: BODY +# BODY: TEST2a +# diversions: GROW, BODY |- +# +# * TEST1 requires TEST2b +# Again, _m4_require_call pushes GROW - 1 and heads to expand TEST2b. +# DUMP: BODY +# BODY: TEST2a +# diversions: GROW - 1, GROW, BODY |- +# +# * TEST2b requires TEST3 +# _m4_require_call pushes GROW - 2 and expands TEST3 here. +# (TEST3 requires TEST2a, but TEST2a has already been m4_provide'd, so +# nothing happens.) +# DUMP: BODY +# BODY: TEST2a +# GROW - 2: TEST3 +# diversions: GROW - 2, GROW - 1, GROW, BODY |- +# Than the diversion is appended to DUMP, and popped. +# DUMP: BODY +# BODY: TEST2a; TEST3 +# diversions: GROW - 1, GROW, BODY |- # -# * TEST1 requires TEST2a: epilogue -# The content of the current diversion is appended to DUMP (and removed -# from the current diversion). A diversion is popped. -# DUMP: BODY -# BODY: TEST2a -# diversions: GROW, BODY |- -# -# * TEST1 requires TEST2b: prologue -# m4_require pushes GROW - 1 and expands TEST2b. -# DUMP: BODY -# BODY: TEST2a -# diversions: GROW - 1, GROW, BODY |- -# -# * TEST2b is expanded. -# Its prologue pushes the current diversion again. -# DUMP: BODY -# BODY: TEST2a -# diversions: GROW - 1, GROW - 1, GROW, BODY |- -# The body is expanded here. -# -# * TEST2b requires TEST3: prologue -# m4_require pushes GROW - 2 and expands TEST3. -# DUMP: BODY -# BODY: TEST2a -# diversions: GROW - 2, GROW - 1, GROW - 1, GROW, BODY |- -# -# * TEST3 is expanded. -# Its prologue pushes the current diversion again. -# DUMP: BODY -# BODY: TEST2a -# diversions: GROW-2, GROW-2, GROW-1, GROW-1, GROW, BODY |- -# TEST3 requires TEST2a, but TEST2a has already been AC_PROVIDE'd, so -# nothing happens. It's body is expanded here, and its epilogue pops a -# diversion. -# DUMP: BODY -# BODY: TEST2a -# GROW - 2: TEST3 -# diversions: GROW - 2, GROW - 1, GROW - 1, GROW, BODY |- -# -# * TEST2b requires TEST3: epilogue -# The current diversion is appended to DUMP, and a diversion is popped. -# DUMP: BODY -# BODY: TEST2a; TEST3 -# diversions: GROW - 1, GROW - 1, GROW, BODY |- -# The content of TEST2b is expanded here. -# DUMP: BODY -# BODY: TEST2a; TEST3 -# GROW - 1: TEST2b, -# diversions: GROW - 1, GROW - 1, GROW, BODY |- -# The epilogue of TEST2b pops a diversion. -# DUMP: BODY -# BODY: TEST2a; TEST3 -# GROW - 1: TEST2b, -# diversions: GROW - 1, GROW, BODY |- -# -# * TEST1 requires TEST2b: epilogue -# The current diversion is appended to DUMP, and a diversion is popped. -# DUMP: BODY -# BODY: TEST2a; TEST3; TEST2b -# diversions: GROW, BODY |- +# * TEST1 requires TEST2b (contd.) +# The content of TEST2b is expanded... +# DUMP: BODY +# BODY: TEST2a; TEST3 +# GROW - 1: TEST2b, +# diversions: GROW - 1, GROW, BODY |- +# ... and moved to DUMP. +# DUMP: BODY +# BODY: TEST2a; TEST3; TEST2b +# diversions: GROW, BODY |- # # * TEST1 is expanded: epilogue -# TEST1's own content is in GROW, and it's epilogue pops a diversion. -# DUMP: BODY -# BODY: TEST2a; TEST3; TEST2b -# GROW: TEST1 -# diversions: BODY |- -# Here, the epilogue of TEST1 notices the elaboration is done because -# DUMP and the current diversion are the same, it then undiverts -# GROW by hand, and undefines DUMP. +# TEST1's own content is in GROW... +# DUMP: BODY +# BODY: TEST2a; TEST3; TEST2b +# GROW: TEST1 +# diversions: BODY |- +# ... and it's epilogue moves it to DUMP and then undefines DUMP. # DUMP: undefined # BODY: TEST2a; TEST3; TEST2b; TEST1 # diversions: BODY |- @@ -1136,37 +1072,21 @@ m4_define([m4_undivert], # we prepend its name in m4_expansion_stack, and when we exit the # macro, we remove it (thanks to pushdef/popdef). # -# In addition, we want to use the expansion stack to detect circular -# m4_require dependencies. This means we need to browse the stack to -# check whether a macro being expanded is m4_require'd. For ease of -# implementation, and certainly for the benefit of performances, we -# don't browse the m4_expansion_stack, rather each time we expand a -# macro FOO we define _m4_expanding(FOO). Then m4_require(BAR) simply -# needs to check whether _m4_expanding(BAR) is defined to diagnose a -# circular dependency. -# -# To improve the diagnostic, in addition to keeping track of the stack -# of macro calls, m4_expansion_stack also records the m4_require -# stack. Note that therefore an m4_defun'd macro being required will -# appear twice in the stack: the first time because it is required, -# the second because it is expanded. We can avoid this, but it has -# two small drawbacks: (i) the implementation is slightly more -# complex, and (ii) it hides the difference between define'd macros -# (which don't appear in m4_expansion_stack) and m4_defun'd macros -# (which do). The more debugging information, the better. +# In addition, we want to detect circular m4_require dependencies. +# Each time we expand a macro FOO we define _m4_expanding(FOO); and +# m4_require(BAR) simply checks whether _m4_expanding(BAR) is defined. # m4_expansion_stack_push(TEXT) # ----------------------------- m4_define([m4_expansion_stack_push], [m4_pushdef([m4_expansion_stack], - [$1]m4_ifdef([m4_expansion_stack], [ + [$1]m4_ifdef([m4_expansion_stack], [ m4_defn([m4_expansion_stack])]))]) # m4_expansion_stack_pop # ---------------------- -# Dump the expansion stack. m4_define([m4_expansion_stack_pop], [m4_popdef([m4_expansion_stack])]) @@ -1176,7 +1096,7 @@ m4_define([m4_expansion_stack_pop], # Dump the expansion stack. m4_define([m4_expansion_stack_dump], [m4_ifdef([m4_expansion_stack], - [m4_errprintn(m4_defn([m4_expansion_stack]))])dnl + [m4_errprintn(m4_defn([m4_expansion_stack]))])dnl m4_errprintn(m4_location[: the top level])]) @@ -1203,29 +1123,33 @@ m4_define([_m4_divert(GROW)], 1000 # ------------------------- # The prologue for Autoconf macros. m4_define([_m4_defun_pro], -[m4_expansion_stack_push(m4_defn([m4_location($1)])[: $1 is expanded from...])dnl +[m4_ifndef([m4_expansion_stack], [_m4_defun_pro_outer[]])dnl +m4_expansion_stack_push(m4_defn([m4_location($1)])[: $1 is expanded from...])dnl m4_pushdef([_m4_expanding($1)])dnl -m4_ifdef([_m4_divert_dump], - [m4_divert_push(m4_defn([_m4_divert_diversion]))], - [m4_copy([_m4_divert_diversion], [_m4_divert_dump])dnl -m4_divert_push([GROW])])dnl ]) +m4_define([_m4_defun_pro_outer], +[m4_copy([_m4_divert_diversion], [_m4_divert_dump])dnl +m4_divert_push([GROW])dnl +]) # _m4_defun_epi(MACRO-NAME) # ------------------------- # The Epilogue for Autoconf macros. MACRO-NAME only helps tracing # the PRO/EPI pairs. m4_define([_m4_defun_epi], -[m4_divert_pop()dnl -m4_if(_m4_divert_dump, _m4_divert_diversion, - [m4_undivert([GROW])dnl -m4_undefine([_m4_divert_dump])])dnl +[m4_popdef([_m4_expanding($1)])dnl m4_expansion_stack_pop()dnl -m4_popdef([_m4_expanding($1)])dnl +m4_ifndef([m4_expansion_stack], [_m4_defun_epi_outer[]])dnl m4_provide([$1])dnl ]) +m4_define([_m4_defun_epi_outer], +[m4_undefine([_m4_divert_dump])dnl +m4_divert_pop([GROW])dnl +m4_undivert([GROW])dnl +]) + # m4_defun(NAME, EXPANSION) # ------------------------- @@ -1240,7 +1164,7 @@ m4_provide([$1])dnl m4_define([m4_defun], [m4_define([m4_location($1)], m4_location)dnl m4_define([$1], - [_m4_defun_pro([$1])$2[]_m4_defun_epi([$1])])]) + [_m4_defun_pro([$1])$2[]_m4_defun_epi([$1])])]) # m4_defun_once(NAME, EXPANSION) @@ -1250,9 +1174,9 @@ m4_define([$1], m4_define([m4_defun_once], [m4_define([m4_location($1)], m4_location)dnl m4_define([$1], - [m4_provide_if([$1], - [m4_warn([syntax], [$1 invoked multiple times])], - [_m4_defun_pro([$1])$2[]_m4_defun_epi([$1])])])]) + [m4_provide_if([$1], + [m4_warn([syntax], [$1 invoked multiple times])], + [_m4_defun_pro([$1])$2[]_m4_defun_epi([$1])])])]) # m4_pattern_forbid(ERE, [WHY]) @@ -1278,7 +1202,7 @@ m4_define([m4_pattern_allow], []) # --------------------------------------------- m4_define([m4_before], [m4_provide_if([$2], - [m4_warn([syntax], [$2 was called before $1])])]) + [m4_warn([syntax], [$2 was called before $1])])]) # m4_require(NAME-TO-CHECK, [BODY-TO-EXPAND = NAME-TO-CHECK]) @@ -1314,34 +1238,48 @@ m4_define([m4_before], # `extension' prevents `AC_LANG_COMPILER' from having actual arguments that # it passes to `AC_LANG_COMPILER(C)'. m4_define([m4_require], -[m4_expansion_stack_push(m4_location[: $1 is required by...])dnl -m4_ifdef([_m4_expanding($1)], - [m4_fatal([$0: circular dependency of $1])])dnl +[m4_ifdef([_m4_expanding($1)], + [m4_fatal([$0: circular dependency of $1])])dnl m4_ifndef([_m4_divert_dump], - [m4_fatal([$0: cannot be used outside of an m4_defun'd macro])])dnl + [m4_fatal([$0($1): cannot be used outside of an m4_defun'd macro])])dnl m4_provide_if([$1], - [], - [m4_divert_push(m4_eval(m4_divnum - 1))dnl + [], + [_m4_require_call([$1], [$2])])dnl +]) + + +# _m4_require_call(BODY-TO-EXPAND) +# -------------------------------- +# If m4_require decides to expand the body, it calls this macro. +m4_define([_m4_require_call], +[m4_define([_m4_divert_grow], m4_decr(_m4_divert_grow))dnl +m4_divert_push(_m4_divert_grow)dnl m4_default([$2], [$1]) -m4_divert(m4_defn([_m4_divert_dump]))dnl -m4_undivert(m4_defn([_m4_divert_diversion]))dnl -m4_divert_pop(m4_defn([_m4_divert_dump]))])dnl m4_provide_if([$1], - [], - [m4_warn([syntax], - [$1 is m4_require'd but is not m4_defun'd])])dnl -m4_expansion_stack_pop()dnl + [], + [m4_warn([syntax], + [$1 is m4_require'd but not m4_defun'd])])dnl +m4_divert(m4_defn([_m4_divert_dump]))dnl +m4_undivert(_m4_divert_grow)dnl +m4_divert_pop(_m4_divert_grow)dnl +m4_define([_m4_divert_grow], m4_incr(_m4_divert_grow))dnl ]) +# _m4_divert_grow +# --------------- +# The counter for _m4_require_call. +m4_define([_m4_divert_grow], _m4_divert([GROW])) + + # m4_expand_once(TEXT, [WITNESS = TEXT]) # -------------------------------------- # If TEXT has never been expanded, expand it *here*. Use WITNESS as # as a memory that TEXT has already been expanded. m4_define([m4_expand_once], [m4_provide_if(m4_ifval([$2], [[$2]], [[$1]]), - [], - [m4_provide(m4_ifval([$2], [[$2]], [[$1]]))[]$1])]) + [], + [m4_provide(m4_ifval([$2], [[$2]], [[$1]]))[]$1])]) # m4_provide(MACRO-NAME) @@ -1358,7 +1296,7 @@ m4_define([m4_provide], # information is coded. m4_define([m4_provide_if], [m4_ifdef([m4_provide($1)], - [$2], [$3])]) + [$2], [$3])]) ## -------------------- ## @@ -1397,17 +1335,18 @@ m4_defn([m4_cr_digits])dnl # m4_re_escape(STRING) # -------------------- -# Escape BRE active characters in STRING. +# Escape RE active characters in STRING. m4_define([m4_re_escape], [m4_bpatsubst([$1], - [[][+*.]], [\\\&])]) + [[][*+.?\^$]], [\\\&])]) # m4_re_string # ------------ # Regexp for `[a-zA-Z_0-9]*' +# m4_dquote provides literal [] for the character class. m4_define([m4_re_string], -m4_defn([m4_cr_symbols2])dnl +m4_dquote(m4_defn([m4_cr_symbols2]))dnl [*]dnl ) @@ -1416,7 +1355,7 @@ m4_defn([m4_cr_symbols2])dnl # ---------- # Regexp for `[a-zA-Z_][a-zA-Z_0-9]*' m4_define([m4_re_word], -m4_defn([m4_cr_symbols1])dnl +m4_dquote(m4_defn([m4_cr_symbols1]))dnl m4_defn([m4_re_string])dnl ) @@ -1440,11 +1379,11 @@ m4_define([m4_toupper], # # REGEXP specifies where to split. Default is [\t ]+. # -# Pay attention to the m4_changequotes. Inner m4_changequotes exist for -# obvious reasons (we want to insert square brackets). Outer -# m4_changequotes are needed because otherwise the m4 parser, when it -# sees the closing bracket we add to the result, believes it is the -# end of the body of the macro we define. +# If STRING is empty, the result is an empty list. +# +# Pay attention to the m4_changequotes. When m4 reads the definition of +# m4_split, it still has quotes set to [ and ]. Luckily, these are matched +# in the macro body, so the definition is stored correctly. # # Also, notice that $1 is quoted twice, since we want the result to # be quoted. Then you should understand that the argument of @@ -1455,16 +1394,17 @@ m4_define([m4_toupper], # m4_split([active active ])end # => [active], [active], []end -m4_changequote(<<, >>) -m4_define(<>, -<>) -m4_changequote([, ]) +m4_changequote([, ])]) @@ -1491,13 +1431,10 @@ m4_define([m4_flatten], # # This macro is robust to active symbols. # m4_define(active, ACTIVE) -# m4_strip([ active active ])end +# m4_strip([ active active ])end # => active activeend # -# This macro is fun! Because we want to preserve active symbols, STRING -# must be quoted for each evaluation, which explains there are 4 levels -# of brackets around $1 (don't forget that the result must be quoted -# too, hence one more quoting than applications). +# Because we want to preserve active symbols, STRING must be double-quoted. # # Then notice the 2 last patterns: they are in charge of removing the # leading/trailing spaces. Why not just `[^ ]'? Because they are @@ -1506,9 +1443,9 @@ m4_define([m4_flatten], # character, since there are two leading `['; equally for the last pattern. m4_define([m4_strip], [m4_bpatsubsts([[$1]], - [[ ]+], [ ], - [^\(..\) ], [\1], - [ \(..\)$], [\1])]) + [[ ]+], [ ], + [^\(..\) ], [\1], + [ \(..\)$], [\1])]) # m4_normalize(STRING) @@ -1533,9 +1470,9 @@ m4_define([m4_normalize], # Produce ARG1SEPARG2...SEPARGn. m4_defun([m4_join], [m4_case([$#], - [1], [], - [2], [[$2]], - [[$2][$1]$0([$1], m4_shiftn(2, $@))])]) + [1], [], + [2], [[$2]], + [[$2][$1]$0([$1], m4_shiftn(2, $@))])]) @@ -1573,7 +1510,7 @@ m4_defun([m4_join], # => active m4_define([m4_append], [m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])$3])[$2])]) + m4_ifdef([$1], [m4_defn([$1])$3])[$2])]) # m4_append_uniq(MACRO-NAME, STRING, [SEPARATOR]) @@ -1581,18 +1518,18 @@ m4_define([m4_append], # As `m4_append', but append only if not yet present. m4_define([m4_append_uniq], [m4_ifdef([$1], - [m4_bmatch([$3]m4_defn([$1])[$3], m4_re_escape([$3$2$3]), [], - [m4_append($@)])], - [m4_append($@)])]) + [m4_bmatch([$3]m4_defn([$1])[$3], m4_re_escape([$3$2$3]), [], + [m4_append($@)])], + [m4_append($@)])]) # m4_text_wrap(STRING, [PREFIX], [FIRST-PREFIX], [WIDTH]) # ------------------------------------------------------- # Expands into STRING wrapped to hold in WIDTH columns (default = 79). -# If prefix is set, each line is prefixed with it. If FIRST-PREFIX is -# specified, then the first line is prefixed with it. As a special -# case, if the length of the first prefix is greater than that of -# PREFIX, then FIRST-PREFIX will be left alone on the first line. +# If PREFIX is given, each line is prefixed with it. If FIRST-PREFIX is +# specified, then the first line is prefixed with it. As a special case, +# if the length of FIRST-PREFIX is greater than that of PREFIX, then +# FIRST-PREFIX will be left alone on the first line. # # Typical outputs are: # @@ -1612,19 +1549,22 @@ m4_define([m4_append_uniq], # # m4_text_wrap([Super long documentation.], [ ], [ --too-wide ], 30) # => --too-wide -# => Super long -# => documentation. +# => Super long +# => documentation. # # FIXME: there is no checking of a longer PREFIX than WIDTH, but do # we really want to bother with people trying each single corner # of a software? # +# more important: +# FIXME: handle quadrigraphs correctly, both in TEXT and in FIRST_PREFIX. +# # This macro does not leave a trailing space behind the last word, # what complicates it a bit. The algorithm is stupid simple: all the # words are preceded by m4_Separator which is defined to empty for the # first word, and then ` ' (single space) for all the others. m4_define([m4_text_wrap], -[m4_pushdef([m4_Prefix], m4_default([$2], []))dnl +[m4_pushdef([m4_Prefix], [$2])dnl m4_pushdef([m4_Prefix1], m4_default([$3], [m4_Prefix]))dnl m4_pushdef([m4_Width], m4_default([$4], 79))dnl m4_pushdef([m4_Cursor], m4_len(m4_Prefix1))dnl @@ -1633,13 +1573,13 @@ m4_Prefix1[]dnl m4_if(m4_eval(m4_Cursor > m4_len(m4_Prefix)), 1, [m4_define([m4_Cursor], m4_len(m4_Prefix)) m4_Prefix])[]dnl -m4_foreach([m4_Word], m4_quote(m4_split(m4_normalize([$1]))), +m4_foreach_w([m4_Word], [$1], [m4_define([m4_Cursor], m4_eval(m4_Cursor + m4_len(m4_defn([m4_Word])) + 1))dnl dnl New line if too long, else insert a space unless it is the first dnl of the words. m4_if(m4_eval(m4_Cursor > m4_Width), 1, [m4_define([m4_Cursor], - m4_eval(m4_len(m4_Prefix) + m4_len(m4_defn([m4_Word])) + 1))] + m4_eval(m4_len(m4_Prefix) + m4_len(m4_defn([m4_Word])) + 1))] m4_Prefix, [m4_Separator])[]dnl m4_defn([m4_Word])[]dnl @@ -1661,6 +1601,21 @@ m4_define([m4_text_box], ]) +# m4_qlen(STRING) +# --------------- +# Expands to the length of STRING after autom4te converts all quadrigraphs. +m4_define([m4_qlen], +[m4_len(m4_bpatsubsts([[$1]], [@\(<:\|:>\|S|\|%:\)@], [P], [@&t@]))]) + + +# m4_qdelta(STRING) +# ----------------- +# Expands to the net change in the length of STRING from autom4te converting the +# quadrigraphs in STRING. This number is always negative or zero. +m4_define([m4_qdelta], +[m4_eval(m4_qlen([$1]) - m4_len([$1]))]) + + ## ----------------------- ## ## 10. Number processing. ## @@ -1672,9 +1627,9 @@ m4_define([m4_text_box], # The sign of the integer A. m4_define([m4_sign], [m4_bmatch([$1], - [^-], -1, - [^0+], 0, - 1)]) + [^-], -1, + [^0+], 0, + 1)]) # m4_cmp(A, B) # ------------ @@ -1703,9 +1658,9 @@ m4_define([m4_list_cmp], [$1], [()], [$0((0), [$2])], [$2], [()], [$0([$1], (0))], [m4_case(m4_cmp(m4_car$1, m4_car$2), - -1, -1, - 1, 1, - 0, [$0((m4_shift$1), (m4_shift$2))])])]) + -1, -1, + 1, 1, + 0, [$0((m4_shift$1), (m4_shift$2))])])]) @@ -1725,14 +1680,14 @@ m4_define([m4_list_cmp], # reasonable version numbers and is valid up to `z', no double letters. m4_define([m4_version_unletter], [m4_translit(m4_bpatsubsts([$1], - [\([0-9]+\)\([abcdefghi]\)], - [m4_eval(\1 + 1).-1.\2], - [\([0-9]+\)\([jklmnopqrs]\)], - [m4_eval(\1 + 1).-1.1\2], - [\([0-9]+\)\([tuvwxyz]\)], - [m4_eval(\1 + 1).-1.2\2]), - [abcdefghijklmnopqrstuvwxyz], - [12345678901234567890123456])]) + [\([0-9]+\)\([abcdefghi]\)], + [m4_eval(\1 + 1).-1.\2], + [\([0-9]+\)\([jklmnopqrs]\)], + [m4_eval(\1 + 1).-1.1\2], + [\([0-9]+\)\([tuvwxyz]\)], + [m4_eval(\1 + 1).-1.2\2]), + [abcdefghijklmnopqrstuvwxyz], + [12345678901234567890123456])]) # m4_version_compare(VERSION-1, VERSION-2) @@ -1743,7 +1698,16 @@ m4_define([m4_version_unletter], # 1 if > m4_define([m4_version_compare], [m4_list_cmp((m4_split(m4_version_unletter([$1]), [\.])), - (m4_split(m4_version_unletter([$2]), [\.])))]) + (m4_split(m4_version_unletter([$2]), [\.])))]) + + +# m4_PACKAGE_NAME +# m4_PACKAGE_TARNAME +# m4_PACKAGE_VERSION +# m4_PACKAGE_STRING +# m4_PACKAGE_BUGREPORT +# -------------------- +#m4_include([m4sugar/version.m4]) # This is needed for Autoconf, but not Bison. # m4_version_prereq(VERSION, [IF-OK], [IF-NOT = FAIL]) @@ -1752,7 +1716,8 @@ m4_define([m4_version_compare], m4_define([m4_version_prereq], [m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], - [m4_fatal([Autoconf version $1 or higher is required])])], + [m4_fatal([Autoconf version $1 or higher is required], + 63)])], [$2])[]dnl ]) @@ -1795,8 +1760,7 @@ m4_pattern_forbid([^dnl$]) # Check the divert push/pop perfect balance. m4_wrap([m4_ifdef([_m4_divert_diversion], - [m4_fatal([$0: unbalanced m4_divert_push:] -m4_defn([m4_divert_stack]))])[]]) + [m4_fatal([$0: unbalanced m4_divert_push:]_m4_divert_n_stack)])[]]) m4_divert_push([KILL]) m4_wrap([m4_divert_pop([KILL])[]]) Index: doc/bison.texinfo =================================================================== RCS file: /cvsroot/bison/bison/doc/bison.texinfo,v retrieving revision 1.154 diff -p -u -r1.154 bison.texinfo --- doc/bison.texinfo 21 Jul 2005 20:53:03 -0000 1.154 +++ doc/bison.texinfo 24 Jul 2005 07:20:55 -0000 @@ -7425,6 +7425,9 @@ parser's to get the set of defined token @comment file: calc++-scanner.ll @example %@{ /* -*- C++ -*- */ +# include +# include +# include # include # include "calc++-driver.hh" # include "calc++-parser.hh" @@ -7482,7 +7485,14 @@ errors. @example [-+*/] return yytext[0]; ":=" return TOKEN_ASSIGN; -@{int@} yylval->ival = atoi (yytext); return TOKEN_NUMBER; +@{int@} @{ + errno = 0; + long n = strtol (yytext, NULL, 10); + if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE)) + driver.error (*yylloc, "integer is out of range"); + yylval->ival = n; + return TOKEN_NUMBER; +@} @{id@} yylval->sval = new std::string (yytext); return TOKEN_IDENTIFIER; . driver.error (*yylloc, "invalid character"); %% Index: lib/abitset.h =================================================================== RCS file: /cvsroot/bison/bison/lib/abitset.h,v retrieving revision 1.5 diff -p -u -r1.5 abitset.h --- lib/abitset.h 14 May 2005 06:49:47 -0000 1.5 +++ lib/abitset.h 24 Jul 2005 07:20:55 -0000 @@ -17,7 +17,7 @@ along with this program; if not, write t Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _ABITSET_H -#define _ABITSET_H +#define _ABITSET_H #include "bitset.h" Index: lib/bbitset.h =================================================================== RCS file: /cvsroot/bison/bison/lib/bbitset.h,v retrieving revision 1.17 diff -p -u -r1.17 bbitset.h --- lib/bbitset.h 14 May 2005 06:49:47 -0000 1.17 +++ lib/bbitset.h 24 Jul 2005 07:20:55 -0000 @@ -34,7 +34,7 @@ Foundation, Inc., 51 Franklin Street, Fi BITSET_TABLE: Expandable table of pointers to arrays of bits (variable size, less storage for large sparse sets). Faster than BITSET_LIST for random access. - BITSET_VARRAY: Variable array of bits (variable size, fast for + BITSET_VARRAY: Variable array of bits (variable size, fast for dense bitsets). BITSET_STATS: Wrapper bitset for internal use only. Used for gathering statistics and/or better run-time checking. Index: lib/bitset.h =================================================================== RCS file: /cvsroot/bison/bison/lib/bitset.h,v retrieving revision 1.17 diff -p -u -r1.17 bitset.h --- lib/bitset.h 14 May 2005 06:49:47 -0000 1.17 +++ lib/bitset.h 24 Jul 2005 07:20:55 -0000 @@ -309,8 +309,8 @@ extern void bitset_dump (FILE *, bitset) */ #define BITSET_FOR_EACH(ITER, BSET, INDEX, MIN) \ for (ITER.next = (MIN), ITER.num = BITSET_LIST_SIZE; \ - (ITER.num == BITSET_LIST_SIZE) \ - && (ITER.num = bitset_list (BSET, ITER.list, \ + (ITER.num == BITSET_LIST_SIZE) \ + && (ITER.num = bitset_list (BSET, ITER.list, \ BITSET_LIST_SIZE, &ITER.next));) \ for (ITER.i = 0; \ ITER.i < ITER.num && ((INDEX) = ITER.list[ITER.i], 1); \ @@ -331,7 +331,7 @@ extern void bitset_dump (FILE *, bitset) */ #define BITSET_FOR_EACH_REVERSE(ITER, BSET, INDEX, MIN) \ for (ITER.next = (MIN), ITER.num = BITSET_LIST_SIZE; \ - (ITER.num == BITSET_LIST_SIZE) \ + (ITER.num == BITSET_LIST_SIZE) \ && (ITER.num = bitset_list_reverse (BSET, ITER.list, \ BITSET_LIST_SIZE, &ITER.next));) \ for (ITER.i = 0; \ @@ -386,4 +386,3 @@ extern void debug_bitset (bitset); extern void debug_bitset_stats (void); #endif /* _BITSET_H */ - Index: lib/bitset_stats.c =================================================================== RCS file: /cvsroot/bison/bison/lib/bitset_stats.c,v retrieving revision 1.15 diff -p -u -r1.15 bitset_stats.c --- lib/bitset_stats.c 22 Jul 2005 22:31:40 -0000 1.15 +++ lib/bitset_stats.c 24 Jul 2005 07:20:55 -0000 @@ -50,29 +50,29 @@ /* Accessor macros. */ -#define BITSET_STATS_ALLOCS_INC(TYPE) \ +#define BITSET_STATS_ALLOCS_INC(TYPE) \ bitset_stats_info->types[(TYPE)].allocs++ -#define BITSET_STATS_FREES_INC(BSET) \ +#define BITSET_STATS_FREES_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].frees++ -#define BITSET_STATS_SETS_INC(BSET) \ +#define BITSET_STATS_SETS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].sets++ -#define BITSET_STATS_CACHE_SETS_INC(BSET) \ +#define BITSET_STATS_CACHE_SETS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].cache_sets++ -#define BITSET_STATS_RESETS_INC(BSET) \ +#define BITSET_STATS_RESETS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].resets++ -#define BITSET_STATS_CACHE_RESETS_INC(BSET) \ +#define BITSET_STATS_CACHE_RESETS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].cache_resets++ -#define BITSET_STATS_TESTS_INC(BSET) \ +#define BITSET_STATS_TESTS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].tests++ -#define BITSET_STATS_CACHE_TESTS_INC(BSET) \ +#define BITSET_STATS_CACHE_TESTS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].cache_tests++ -#define BITSET_STATS_LISTS_INC(BSET) \ +#define BITSET_STATS_LISTS_INC(BSET) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].lists++ -#define BITSET_STATS_LIST_COUNTS_INC(BSET, I) \ +#define BITSET_STATS_LIST_COUNTS_INC(BSET, I) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].list_counts[(I)]++ -#define BITSET_STATS_LIST_SIZES_INC(BSET, I) \ +#define BITSET_STATS_LIST_SIZES_INC(BSET, I) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].list_sizes[(I)]++ -#define BITSET_STATS_LIST_DENSITY_INC(BSET, I) \ +#define BITSET_STATS_LIST_DENSITY_INC(BSET, I) \ bitset_stats_info->types[BITSET_TYPE_ (BSET)].list_density[(I)]++ Index: lib/ebitset.h =================================================================== RCS file: /cvsroot/bison/bison/lib/ebitset.h,v retrieving revision 1.7 diff -p -u -r1.7 ebitset.h --- lib/ebitset.h 14 May 2005 06:49:47 -0000 1.7 +++ lib/ebitset.h 24 Jul 2005 07:20:55 -0000 @@ -17,7 +17,7 @@ along with this program; if not, write t Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _EBITSET_H -#define _EBITSET_H +#define _EBITSET_H #include "bitset.h" Index: lib/lbitset.c =================================================================== RCS file: /cvsroot/bison/bison/lib/lbitset.c,v retrieving revision 1.15 diff -p -u -r1.15 lbitset.c --- lib/lbitset.c 14 May 2005 06:49:47 -0000 1.15 +++ lib/lbitset.c 24 Jul 2005 07:20:55 -0000 @@ -41,7 +41,7 @@ /* Number of words to use for each element. The larger the value the greater the size of the cache and the shorter the time to find a given bit but the more memory wasted for sparse bitsets and the longer the time - to search for set bits. + to search for set bits. The routines that dominate timing profiles are lbitset_elt_find and lbitset_elt_link, especially when accessing the bits randomly. */ @@ -888,18 +888,18 @@ lbitset_unused_clear (bitset dst) n_bits = BITSET_SIZE_ (dst); last_bit = n_bits % LBITSET_ELT_BITS; - + if (last_bit) { lbitset_elt *elt; bitset_windex windex; bitset_word *srcp; - + elt = LBITSET_TAIL (dst); srcp = elt->words; windex = n_bits / BITSET_WORD_BITS; - - srcp[windex - elt->index] &= ((bitset_word) 1 << last_bit) - 1; + + srcp[windex - elt->index] &= ((bitset_word) 1 << last_bit) - 1; windex++; for (; (windex - elt->index) < LBITSET_ELT_WORDS; windex++) Index: lib/lbitset.h =================================================================== RCS file: /cvsroot/bison/bison/lib/lbitset.h,v retrieving revision 1.7 diff -p -u -r1.7 lbitset.h --- lib/lbitset.h 14 May 2005 06:49:47 -0000 1.7 +++ lib/lbitset.h 24 Jul 2005 07:20:55 -0000 @@ -17,7 +17,7 @@ along with this program; if not, write t Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _LBITSET_H -#define _LBITSET_H +#define _LBITSET_H #include "bitset.h" Index: lib/subpipe.c =================================================================== RCS file: /cvsroot/bison/bison/lib/subpipe.c,v retrieving revision 1.6 diff -p -u -r1.6 subpipe.c --- lib/subpipe.c 20 Jul 2005 21:12:54 -0000 1.6 +++ lib/subpipe.c 24 Jul 2005 07:20:55 -0000 @@ -44,9 +44,7 @@ # define STDOUT_FILENO 1 #endif #if ! HAVE_DUP2 && ! defined dup2 -# if HAVE_FCNTL_H -# include -# endif +# include # define dup2(f, t) (close (t), fcntl (f, F_DUPFD, t)) #endif @@ -109,11 +107,13 @@ create_subpipe (char const * const *argv || pipe (pipe_fd) != 0 || (fd[1] = fd_safer (pipe_fd[0])) < 0 || (child_fd[1] = fd_safer (pipe_fd[1])) < 0) - error (EXIT_FAILURE, errno, "pipe"); + error (EXIT_FAILURE, errno, + "pipe"); pid = vfork (); if (pid < 0) - error (EXIT_FAILURE, errno, "fork"); + error (EXIT_FAILURE, errno, + "fork"); if (! pid) { @@ -148,7 +148,8 @@ reap_subpipe (pid_t pid, char const *pro #if HAVE_WAITPID || defined waitpid int wstatus; if (waitpid (pid, &wstatus, 0) < 0) - error (EXIT_FAILURE, errno, "waitpid"); + error (EXIT_FAILURE, errno, + "waitpid"); else { int status = WIFEXITED (wstatus) ? WEXITSTATUS (wstatus) : -1; Index: lib/timevar.c =================================================================== RCS file: /cvsroot/bison/bison/lib/timevar.c,v retrieving revision 1.7 diff -p -u -r1.7 timevar.c --- lib/timevar.c 14 May 2005 06:49:47 -0000 1.7 +++ lib/timevar.c 24 Jul 2005 07:20:55 -0000 @@ -31,7 +31,7 @@ Software Foundation, 51 Franklin Street, /* This source file is taken from the GCC source code, with slight modifications that are under control of the IN_GCC preprocessor variable. The !IN_GCC part of this file is specific to Bison. */ - + # include "../src/system.h" # if HAVE_SYS_TIME_H # include Index: lib/vbitset.h =================================================================== RCS file: /cvsroot/bison/bison/lib/vbitset.h,v retrieving revision 1.3 diff -p -u -r1.3 vbitset.h --- lib/vbitset.h 14 May 2005 06:49:47 -0000 1.3 +++ lib/vbitset.h 24 Jul 2005 07:20:55 -0000 @@ -17,7 +17,7 @@ along with this program; if not, write t Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _VBITSET_H -#define _VBITSET_H +#define _VBITSET_H #include "bitset.h" Index: m4/subpipe.m4 =================================================================== RCS file: /cvsroot/bison/bison/m4/subpipe.m4,v retrieving revision 1.3 diff -p -u -r1.3 subpipe.m4 --- m4/subpipe.m4 14 May 2005 06:49:47 -0000 1.3 +++ m4/subpipe.m4 24 Jul 2005 07:20:55 -0000 @@ -1,7 +1,7 @@ # -*- Autoconf -*- # Checks required to run `subpipe'. # -# Copyright (C) 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -23,7 +23,6 @@ AC_DEFUN([BISON_PREREQ_SUBPIPE], [ AC_TYPE_PID_T - AC_CHECK_HEADERS([fcntl.h]) AC_HEADER_SYS_WAIT AC_CHECK_FUNCS(dup2 waitpid) AC_FUNC_FORK Index: src/Makefile.am =================================================================== RCS file: /cvsroot/bison/bison/src/Makefile.am,v retrieving revision 1.64 diff -p -u -r1.64 Makefile.am --- src/Makefile.am 14 May 2005 06:49:47 -0000 1.64 +++ src/Makefile.am 24 Jul 2005 07:20:55 -0000 @@ -15,9 +15,7 @@ ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA ## 02110-1301 USA -DEFS = @DEFS@ \ - -DPKGDATADIR=\"$(pkgdatadir)\" \ - -DLOCALEDIR=\"$(datadir)/locale\" +DEFS += -DPKGDATADIR=\"$(pkgdatadir)\" -DLOCALEDIR=\"$(datadir)/locale\" AM_CFLAGS = $(WARNING_CFLAGS) $(WERROR_CFLAGS) AM_CPPFLAGS = -I$(top_srcdir)/lib -I../lib @@ -33,7 +31,7 @@ bin_PROGRAMS = bison bin_SCRIPTS = $(YACC_SCRIPT) EXTRA_SCRIPTS = yacc -bison_SOURCES = \ +bison_SOURCES = \ LR0.c LR0.h \ assoc.c assoc.h \ closure.c closure.h \ @@ -56,7 +54,7 @@ bison_SOURCES = \ reduce.c reduce.h \ relation.c relation.h \ scan-gram.l \ - scan-skel.l \ + scan-skel.h scan-skel.l \ state.c state.h \ symlist.c symlist.h \ symtab.c symtab.h \ @@ -77,3 +75,34 @@ yacc: echo: echo $(bison_SOURCES) $(noinst_HEADERS) + +# The following rule is not designed to be portable, +# and relies on tools that not everyone has. + +# Most functions in src/*.c should have static scope. +# Any that don't must be marked with `extern', but `main' +# and `usage' are exceptions. They're always extern, but +# don't need to be marked. +# +# The second nm|grep checks for file-scope variables with `extern' scope. +sc_tight_scope: $(all_programs) + @t=exceptions-$$$$; \ + trap 's=$$?; rm -f $$t; exit $$s' 0 1 2 13 15; \ + ( printf '^main$$\n^usage$$\n'; \ + grep -h -A1 '^extern .*[^;]$$' $(SOURCES) \ + | grep -vE '^(extern |--)' |sed 's/^/^/;s/ .*/$$/' ) > $$t; \ + if nm -e *.$(OBJEXT) \ + | sed -n 's/.* T //p' \ + | grep -Ev -f $$t; then \ + echo 'the above functions should have static scope' 1>&2; \ + exit 1; \ + fi; \ + ( printf '^program_name$$\n'; \ + sed -n 's/^extern .*[* ]\([a-zA-Z_][a-zA-Z_0-9]*\);$$/^\1$$/p' \ + $$(ls $(SOURCES) | grep '\.h$$') /dev/null) > $$t; \ + if nm -e *.$(OBJEXT) \ + | sed -n 's/.* [BD] //p' \ + | grep -Ev -f $$t; then \ + echo 'the above variables should have static scope' 1>&2; \ + exit 1; \ + fi Index: src/files.c =================================================================== RCS file: /cvsroot/bison/bison/src/files.c,v retrieving revision 1.89 diff -p -u -r1.89 files.c --- src/files.c 22 May 2005 17:52:12 -0000 1.89 +++ src/files.c 24 Jul 2005 07:20:55 -0000 @@ -66,9 +66,9 @@ static char *full_base_name = NULL; char *short_base_name = NULL; /* C source file extension (the parser source). */ -const char *src_extension = NULL; +static char const *src_extension = NULL; /* Header file extension (if option ``-d'' is specified). */ -const char *header_extension = NULL; +static char const *header_extension = NULL; /*-----------------------------------------------------------------. | Return a newly allocated string composed of the concatenation of | Index: src/getargs.c =================================================================== RCS file: /cvsroot/bison/bison/src/getargs.c,v retrieving revision 1.62 diff -p -u -r1.62 getargs.c --- src/getargs.c 12 Jul 2005 23:28:54 -0000 1.62 +++ src/getargs.c 24 Jul 2005 07:20:55 -0000 @@ -285,7 +285,7 @@ warranty; not even for MERCHANTABILITY o `----------------------*/ /* Shorts options. */ -const char *short_options = "yvegdhr:ltknVo:b:p:S:T::"; +static char const short_options[] = "yvegdhr:ltknVo:b:p:S:T::"; /* Values for long options that do not have single-letter equivalents. */ enum Index: src/getargs.h =================================================================== RCS file: /cvsroot/bison/bison/src/getargs.h,v retrieving revision 1.27 diff -p -u -r1.27 getargs.h --- src/getargs.h 14 May 2005 06:49:47 -0000 1.27 +++ src/getargs.h 24 Jul 2005 07:20:55 -0000 @@ -1,5 +1,5 @@ /* Parse command line arguments for bison. - Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004 + Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -23,8 +23,12 @@ # define GETARGS_H_ /* flags set by % directives */ -extern const char *skeleton; /* for -S */ -extern const char *include; /* for -I */ + +/* for -S */ +extern char const *skeleton; + +/* for -I */ +extern char const *include; extern bool debug_flag; /* for -t */ extern bool defines_flag; /* for -d */ Index: src/gram.c =================================================================== RCS file: /cvsroot/bison/bison/src/gram.c,v retrieving revision 1.54 diff -p -u -r1.54 gram.c --- src/gram.c 14 May 2005 06:49:47 -0000 1.54 +++ src/gram.c 24 Jul 2005 07:20:55 -0000 @@ -269,7 +269,7 @@ grammar_dump (FILE *out, const char *tit rule *rule_i = &rules[i]; item_number *rp = NULL; unsigned int rhs_itemno = rule_i->rhs - ritem; - unsigned int rhs_count = 0; + unsigned int rhs_count = 0; /* Find the last RHS index in ritems. */ for (rp = rule_i->rhs; *rp >= 0; ++rp) ++rhs_count; Index: src/main.c =================================================================== RCS file: /cvsroot/bison/bison/src/main.c,v retrieving revision 1.81 diff -p -u -r1.81 main.c --- src/main.c 12 Jul 2005 23:28:54 -0000 1.81 +++ src/main.c 24 Jul 2005 07:20:55 -0000 @@ -56,9 +56,9 @@ main (int argc, char *argv[]) { program_name = argv[0]; setlocale (LC_ALL, ""); - bindtextdomain (PACKAGE, LOCALEDIR); - bindtextdomain ("bison-runtime", LOCALEDIR); - textdomain (PACKAGE); + (void) bindtextdomain (PACKAGE, LOCALEDIR); + (void) bindtextdomain ("bison-runtime", LOCALEDIR); + (void) textdomain (PACKAGE); uniqstrs_new (); Index: src/muscle_tab.c =================================================================== RCS file: /cvsroot/bison/bison/src/muscle_tab.c,v retrieving revision 1.35 diff -p -u -r1.35 muscle_tab.c --- src/muscle_tab.c 14 May 2005 06:49:47 -0000 1.35 +++ src/muscle_tab.c 24 Jul 2005 07:20:55 -0000 @@ -41,7 +41,7 @@ struct obstack muscle_obstack; /* Initial capacity of muscles hash table. */ #define HT_INITIAL_CAPACITY 257 -struct hash_table *muscle_table = NULL; +static struct hash_table *muscle_table = NULL; static bool hash_compare_muscles (void const *x, void const *y) Index: src/muscle_tab.h =================================================================== RCS file: /cvsroot/bison/bison/src/muscle_tab.h,v retrieving revision 1.14 diff -p -u -r1.14 muscle_tab.h --- src/muscle_tab.h 14 May 2005 06:49:47 -0000 1.14 +++ src/muscle_tab.h 24 Jul 2005 07:20:55 -0000 @@ -40,14 +40,14 @@ extern struct obstack muscle_obstack; #define MUSCLE_INSERT_INT(Key, Value) \ { \ - obstack_fgrow1 (&muscle_obstack, "%d", Value); \ + obstack_fgrow1 (&muscle_obstack, "%d", Value); \ obstack_1grow (&muscle_obstack, 0); \ muscle_insert (Key, obstack_finish (&muscle_obstack)); \ } #define MUSCLE_INSERT_LONG_INT(Key, Value) \ { \ - obstack_fgrow1 (&muscle_obstack, "%ld", Value); \ + obstack_fgrow1 (&muscle_obstack, "%ld", Value); \ obstack_1grow (&muscle_obstack, 0); \ muscle_insert (Key, obstack_finish (&muscle_obstack)); \ } Index: src/output.c =================================================================== RCS file: /cvsroot/bison/bison/src/output.c,v retrieving revision 1.234 diff -p -u -r1.234 output.c --- src/output.c 22 Jul 2005 17:07:31 -0000 1.234 +++ src/output.c 24 Jul 2005 07:20:55 -0000 @@ -36,12 +36,10 @@ #include "muscle_tab.h" #include "output.h" #include "reader.h" +#include "scan-skel.h" #include "symtab.h" #include "tables.h" -/* From src/scan-skel.l. */ -void scan_skel (FILE *); - static struct obstack format_obstack; @@ -559,7 +557,8 @@ output_skeleton (void) out = fdopen (filter_fd[0], "w"); if (! out) - error (EXIT_FAILURE, get_errno (), "fdopen"); + error (EXIT_FAILURE, get_errno (), + "fdopen"); /* Output the definitions of all the muscles. */ fputs ("m4_init()\n", out); @@ -580,7 +579,8 @@ output_skeleton (void) timevar_push (TV_M4); in = fdopen (filter_fd[1], "r"); if (! in) - error (EXIT_FAILURE, get_errno (), "fdopen"); + error (EXIT_FAILURE, get_errno (), + "fdopen"); scan_skel (in); xfclose (in); reap_subpipe (pid, m4); Index: src/parse-gram.y =================================================================== RCS file: /cvsroot/bison/bison/src/parse-gram.y,v retrieving revision 1.55 diff -p -u -r1.55 parse-gram.y --- src/parse-gram.y 12 Jul 2005 13:54:41 -0000 1.55 +++ src/parse-gram.y 24 Jul 2005 07:20:55 -0000 @@ -48,12 +48,12 @@ static void gram_error (location const * static void add_param (char const *, char *, location); -symbol_class current_class = unknown_sym; -uniqstr current_type = 0; +static symbol_class current_class = unknown_sym; +static uniqstr current_type = 0; symbol *current_lhs; location current_lhs_location; assoc current_assoc; -int current_prec = 0; +static int current_prec = 0; %} %debug @@ -206,7 +206,7 @@ declaration: | "%defines" { defines_flag = true; } | "%error-verbose" { error_verbose = true; } | "%expect" INT { expected_sr_conflicts = $2; } -| "%expect-rr" INT { expected_rr_conflicts = $2; } +| "%expect-rr" INT { expected_rr_conflicts = $2; } | "%file-prefix" "=" string_content { spec_file_prefix = $3; } | "%glr-parser" { @@ -221,7 +221,7 @@ declaration: | "%locations" { locations_flag = true; } | "%name-prefix" "=" string_content { spec_name_prefix = $3; } | "%no-lines" { no_lines_flag = true; } -| "%nondeterministic-parser" { nondeterministic_parser = true; } +| "%nondeterministic-parser" { nondeterministic_parser = true; } | "%output" "=" string_content { spec_outfile = $3; } | "%parse-param {...}" { add_param ("parse_param", $1, @1); } | "%pure-parser" { pure_parser = true; } Index: src/print_graph.c =================================================================== RCS file: /cvsroot/bison/bison/src/print_graph.c,v retrieving revision 1.58 diff -p -u -r1.58 print_graph.c --- src/print_graph.c 14 May 2005 06:49:48 -0000 1.58 +++ src/print_graph.c 24 Jul 2005 07:20:55 -0000 @@ -1,6 +1,6 @@ /* Output a VCG description on generated parser, for Bison, - Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -21,7 +21,6 @@ #include "system.h" -#include #include #include "LR0.h" Index: src/reader.c =================================================================== RCS file: /cvsroot/bison/bison/src/reader.c,v retrieving revision 1.237 diff -p -u -r1.237 reader.c --- src/reader.c 14 May 2005 06:49:48 -0000 1.237 +++ src/reader.c 24 Jul 2005 07:20:55 -0000 @@ -159,7 +159,7 @@ free_merger_functions (void) `-------------------------------------------------------------------*/ /* The (currently) last symbol of GRAMMAR. */ -symbol_list *grammar_end = NULL; +static symbol_list *grammar_end = NULL; /* Append SYM to the grammar. */ void @@ -179,7 +179,7 @@ grammar_symbol_append (symbol *sym, loca CURRENT_RULE points to the first LHS of the current rule, while PREVIOUS_RULE_END points to the *end* of the previous rule (NULL). */ symbol_list *current_rule = NULL; -symbol_list *previous_rule_end = NULL; +static symbol_list *previous_rule_end = NULL; /*----------------------------------------------. Index: src/reader.h =================================================================== RCS file: /cvsroot/bison/bison/src/reader.h,v retrieving revision 1.43 diff -p -u -r1.43 reader.h --- src/reader.h 14 May 2005 06:49:48 -0000 1.43 +++ src/reader.h 24 Jul 2005 07:20:55 -0000 @@ -43,6 +43,11 @@ void scanner_initialize (void); void scanner_free (void); void scanner_last_string_free (void); +/* These are declared by the scanner, but not used. We put them here + to pacify "make syntax-check". */ +extern FILE *gram_out; +extern int gram_lineno; + # define YY_DECL int gram_lex (YYSTYPE *val, location *loc) YY_DECL; Index: src/scan-skel.l =================================================================== RCS file: /cvsroot/bison/bison/src/scan-skel.l,v retrieving revision 1.31 diff -p -u -r1.31 scan-skel.l --- src/scan-skel.l 20 Jul 2005 21:23:35 -0000 1.31 +++ src/scan-skel.l 24 Jul 2005 07:20:55 -0000 @@ -31,21 +31,7 @@ #include "complain.h" #include "getargs.h" #include "files.h" - -int skel_lex (void); - -/* Pacify "gcc -Wmissing-prototypes" when flex 2.5.31 is used. */ -int skel_get_lineno (void); -FILE *skel_get_in (void); -FILE *skel_get_out (void); -int skel_get_leng (void); -char *skel_get_text (void); -void skel_set_lineno (int); -void skel_set_in (FILE *); -void skel_set_out (FILE *); -int skel_get_debug (void); -void skel_set_debug (int); -int skel_lex_destroy (void); +#include "scan-skel.h" #define QPUTS(String) \ fputs (quotearg_style (c_quoting_style, (String)), yyout) @@ -109,8 +95,6 @@ int skel_lex_destroy (void); /*------------------------. | Scan a Bison skeleton. | `------------------------*/ - -void scan_skel (FILE *); void scan_skel (FILE *in) Index: src/system.h =================================================================== RCS file: /cvsroot/bison/bison/src/system.h,v retrieving revision 1.67 diff -p -u -r1.67 system.h --- src/system.h 14 May 2005 06:49:48 -0000 1.67 +++ src/system.h 24 Jul 2005 07:20:55 -0000 @@ -130,9 +130,9 @@ typedef size_t uintptr_t; | Obstacks. | `-----------*/ -# define obstack_chunk_alloc xmalloc -# define obstack_chunk_free free -# include +#define obstack_chunk_alloc xmalloc +#define obstack_chunk_free free +#include #define obstack_sgrow(Obs, Str) \ obstack_grow (Obs, Str, strlen (Str)) Index: src/tables.c =================================================================== RCS file: /cvsroot/bison/bison/src/tables.c,v retrieving revision 1.27 diff -p -u -r1.27 tables.c --- src/tables.c 14 May 2005 06:49:48 -0000 1.27 +++ src/tables.c 24 Jul 2005 07:20:55 -0000 @@ -173,7 +173,7 @@ table_grow (int desired) /*-------------------------------------------------------------------. | For GLR parsers, for each conflicted token in S, as indicated | -| by non-zero entries in CONFLROW, create a list of possible | +| by non-zero entries in CONFLROW, create a list of possible | | reductions that are alternatives to the shift or reduction | | currently recorded for that token in S. Store the alternative | | reductions followed by a 0 in CONFLICT_LIST, updating | Index: src/uniqstr.c =================================================================== RCS file: /cvsroot/bison/bison/src/uniqstr.c,v retrieving revision 1.5 diff -p -u -r1.5 uniqstr.c --- src/uniqstr.c 14 May 2005 06:49:48 -0000 1.5 +++ src/uniqstr.c 24 Jul 2005 07:20:55 -0000 @@ -1,6 +1,6 @@ /* Keep a unique copy of strings. - Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -63,7 +63,8 @@ uniqstr_assert (char const *str) { if (!hash_lookup (uniqstrs_table, str)) { - error (0, 0, "not a uniqstr: %s", quotearg (str)); + error (0, 0, + "not a uniqstr: %s", quotearg (str)); abort (); } } Index: src/vcg.c =================================================================== RCS file: /cvsroot/bison/bison/src/vcg.c,v retrieving revision 1.20 diff -p -u -r1.20 vcg.c --- src/vcg.c 14 May 2005 06:49:48 -0000 1.20 +++ src/vcg.c 24 Jul 2005 07:20:55 -0000 @@ -203,7 +203,7 @@ new_edge (edge *e) } /*----------------------------------------------. -| Get functions. | +| Get functions. | | Return string corresponding to an enum value. | `----------------------------------------------*/ @@ -374,7 +374,7 @@ get_arrowstyle_str (enum arrowstyle arro } /*------------------------------. -| Add functions. | +| Add functions. | | Edge and nodes into a graph. | `------------------------------*/ Index: src/vcg_defaults.h =================================================================== RCS file: /cvsroot/bison/bison/src/vcg_defaults.h,v retrieving revision 1.8 diff -p -u -r1.8 vcg_defaults.h --- src/vcg_defaults.h 14 May 2005 06:49:48 -0000 1.8 +++ src/vcg_defaults.h 24 Jul 2005 07:20:55 -0000 @@ -48,11 +48,11 @@ # define G_TEXTMODE centered # define G_SHAPE box -# define G_VERTICAL_ORDER 0 /* Unspecified for subgraphs. */ -# define G_HORIZONTAL_ORDER 0 /* Unspecified for subgraphs. */ +# define G_VERTICAL_ORDER 0 /* Unspecified for subgraphs. */ +# define G_HORIZONTAL_ORDER 0 /* Unspecified for subgraphs. */ -# define G_XMAX 90 /* Not output */ -# define G_YMAX 90 /* Not output */ +# define G_XMAX 90 /* Not output. */ +# define G_YMAX 90 /* Not output. */ # define G_XBASE 5 # define G_YBASE 5 @@ -65,9 +65,9 @@ # define G_YRASTER 1 # define G_XLRASTER 1 -# define G_HIDDEN (-1) /* No default value. */ +# define G_HIDDEN (-1) /* No default value. */ -# define G_CLASSNAME NULL /* No class name association */ +# define G_CLASSNAME NULL /* No class name association. */ # define G_INFONAME NULL # define G_COLORENTRY NULL Index: tests/Makefile.am =================================================================== RCS file: /cvsroot/bison/bison/tests/Makefile.am,v retrieving revision 1.40 diff -p -u -r1.40 Makefile.am --- tests/Makefile.am 14 Jul 2005 17:27:01 -0000 1.40 +++ tests/Makefile.am 24 Jul 2005 07:20:55 -0000 @@ -32,11 +32,11 @@ MAINTAINERCLEANFILES = Makefile.in $(TES $(srcdir)/package.m4: $(top_srcdir)/configure.ac { \ echo '# Signature of the current package.'; \ - echo 'm4_define([AT_PACKAGE_NAME], [@PACKAGE_NAME@])'; \ - echo 'm4_define([AT_PACKAGE_TARNAME], [@PACKAGE_TARNAME@])'; \ - echo 'm4_define([AT_PACKAGE_VERSION], [@PACKAGE_VERSION@])'; \ - echo 'm4_define([AT_PACKAGE_STRING], [@PACKAGE_STRING@])'; \ - echo 'm4_define([AT_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \ + echo 'm4_define([AT_PACKAGE_NAME], [$(PACKAGE_NAME)])'; \ + echo 'm4_define([AT_PACKAGE_TARNAME], [$(PACKAGE_TARNAME)])'; \ + echo 'm4_define([AT_PACKAGE_VERSION], [$(PACKAGE_VERSION)])'; \ + echo 'm4_define([AT_PACKAGE_STRING], [$(PACKAGE_STRING)])'; \ + echo 'm4_define([AT_PACKAGE_BUGREPORT], [$(PACKAGE_BUGREPORT)])'; \ } >$(srcdir)/package.m4 ## ------------ ## Index: tests/cxx-type.at =================================================================== RCS file: /cvsroot/bison/bison/tests/cxx-type.at,v retrieving revision 1.26 diff -p -u -r1.26 cxx-type.at --- tests/cxx-type.at 20 Jul 2005 22:01:47 -0000 1.26 +++ tests/cxx-type.at 24 Jul 2005 07:20:55 -0000 @@ -83,7 +83,7 @@ prog : stmt : expr ';' $2 { $$ = ]$[1; } | decl $3 | error ';' { static char error_msg[] = ""; $$ = error_msg; } - | '@' { YYACCEPT; } + | '@' { YYACCEPT; } ; expr : ID @@ -145,7 +145,7 @@ yylex (LEX_PARAMETERS) break; case ' ': case '\f': colNum += 1; - break; + break; case '\n': lineNum += 1; colNum = 0; Index: tests/existing.at =================================================================== RCS file: /cvsroot/bison/bison/tests/existing.at,v retrieving revision 1.7 diff -p -u -r1.7 existing.at --- tests/existing.at 14 May 2005 06:49:48 -0000 1.7 +++ tests/existing.at 24 Jul 2005 07:20:55 -0000 @@ -408,7 +408,7 @@ AT_DATA([[input.y]], HBEGPAR HENDPAR HEQR HNER HADD HSUB HMUL HDIV HINTDIV HEXP - HDOTDOTDOT + HDOTDOTDOT %token HIDENTIFIER %token HBOOLEANKONST HINTEGERKONST HCHARACTERKONST @@ -450,7 +450,7 @@ AT_DATA([[input.y]], MAIN_MODULE : { categ=CLOCAL; mout(MBLOCK); beginBlock(KBLOKK);separat_comp=FALSE;} MODULS { endBlock(NULL,CCNO); mout(MENDBLOCK);} - | error HSTATEMENTSEPARATOR MBEE_DECLSTMS + | error HSTATEMENTSEPARATOR MBEE_DECLSTMS ; EXT_DECLARATION : HEXTERNAL MBEE_TYPE @@ -548,7 +548,7 @@ MBEE_ELSE_PART : /*EMPT*/ /* | HELSE HIF EXPRESSION - HTHEN { mout(MELSE); + HTHEN { mout(MELSE); mout(MIF); OBSBLOCK();} BLOCK { MBEEENDBLOCK();} @@ -588,7 +588,7 @@ WHEN_CLAUSE_LIST: HWHEN HIDENTIFIER HDO { beginBlock(KCON); mout(MIDENTIFIER); OBSBLOCK(); moutId($2); - mout(MWHEN);} + mout(MWHEN);} BLOCK { endBlock(NULL,CCNO); MBEEENDBLOCK(); mout(MENDWHEN);} | WHEN_CLAUSE_LIST @@ -596,7 +596,7 @@ WHEN_CLAUSE_LIST: HWHEN HIDENTIFIER HDO { beginBlock(KCON); mout(MIDENTIFIER); OBSBLOCK(); moutId($3); - mout(MWHEN);} + mout(MWHEN);} BLOCK { endBlock(NULL,CCNO); MBEEENDBLOCK(); mout(MENDWHEN);} ; @@ -645,8 +645,8 @@ MODULSTATEMENT : HWHILE HDO { STOPOBSBLOCK(); mout(MWHILE); OBSBLOCK();} BLOCK { MBEEENDBLOCK(); mout(MENDWHILE); - $$=STATEMENT;} - | HIF + $$=STATEMENT;} + | HIF EXPRESSION HTHEN { STOPOBSBLOCK(); mout(MIF); OBSBLOCK();} @@ -709,7 +709,7 @@ MODULSTATEMENT : HWHILE { STOPOBSBLOCK(); $$=STATEMENT; mout(MENDASSIGN);} | ACTIVATOR EXPRESSION SCHEDULE - { $$=STATEMENT; + { $$=STATEMENT; mout(MENDSEP); mout(MARGUMENTSEP); mout(MARGUMENTSEP); @@ -836,10 +836,10 @@ MBEE_DECLSTMSU : DECLSTATEMENT MODULS : MODULSTATEMENT { if($1==DECLARATION) {separat_comp=TRUE;gettimestamp();} $$=$1;} - | MODULS HSTATEMENTSEPARATOR MODULSTATEMENT + | MODULS HSTATEMENTSEPARATOR MODULSTATEMENT { if($1>=STATEMENT && $3<=DECLARATION) yerror (26);else - if($1>=STATEMENT + if($1>=STATEMENT && $3!=EMPTYSTATEMENT)yerror (25); if(separat_comp && $3==STATEMENT) yerror (25); @@ -939,7 +939,7 @@ FPP_CATEG : HNAME HLABELSEPA ; FPP_PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE HIDENTIFIER - { $$=categ; + { $$=categ; regDecl($3, type, KPROC, categ); beginBlock(KPROC);} FPP_HEADING @@ -1008,7 +1008,7 @@ SPECIFIER : TYPE ; PROC_DECL_IN_SPEC: MBEE_TYPE HPROCEDURE HIDENTIFIER - { $$=categ; + { $$=categ; regDecl($3, type, KPROC, categ); beginBlock(KPROC);} HEADING @@ -1292,7 +1292,7 @@ AT_DATA([[input.y]], %token AND %token HERE %token DOT_N -%token DOT_E +%token DOT_E %token DOT_W %token DOT_S %token DOT_NE @@ -1378,7 +1378,7 @@ parses properly. */ %left CHOP SOLID DASHED DOTTED UP DOWN FILL COLORED OUTLINED %left LABEL -%left VARIABLE NUMBER '(' SIN COS ATAN2 LOG EXP SQRT K_MAX K_MIN INT RAND SRAND LAST +%left VARIABLE NUMBER '(' SIN COS ATAN2 LOG EXP SQRT K_MAX K_MIN INT RAND SRAND LAST %left ORDINAL HERE '`' %left BOX CIRCLE ELLIPSE ARC LINE ARROW SPLINE '[' /* ] */ @@ -1518,7 +1518,7 @@ placeless_element: } | COPY TEXT THRU { delim_flag = 2; } - DELIMITED + DELIMITED { delim_flag = 0; } until { @@ -1542,13 +1542,13 @@ placeless_element: a_delete $6; } | FOR VARIABLE '=' expr TO expr optional_by DO - { delim_flag = 1; } + { delim_flag = 1; } DELIMITED - { + { delim_flag = 0; if (yychar < 0) do_lookahead(); - do_for($2, $4, $6, $7.is_multiplicative, $7.val, $10); + do_for($2, $4, $6, $7.is_multiplicative, $7.val, $10); } | simple_if { @@ -1617,7 +1617,7 @@ print_args: ; print_arg: - expr %prec ',' + expr %prec ',' { $$.str = new char[GDIGITS + 1]; sprintf($$.str, "%g", $1); @@ -1652,14 +1652,14 @@ until: | UNTIL TEXT { $$ = $2.str; } ; - + any_expr: expr { $$ = $1; } | text_expr { $$ = $1; } ; - + text_expr: text EQUALEQUAL text { @@ -1831,7 +1831,7 @@ object_spec: $3.filename, $3.lineno); a_delete $3.str; } - | '[' + | '[' { saved_state *p = new saved_state; $$ = p; @@ -2014,7 +2014,7 @@ object_spec: $$->segment_pos.y += $3.y; } | object_spec THEN - { + { $$ = $1; if ($$->flags & HAS_SEGMENT) { $$->segment_list = new segment($$->segment_pos, @@ -2088,7 +2088,7 @@ object_spec: strcpy($$->outlined, $3.str); } | object_spec CHOP - { + { $$ = $1; // line chop chop means line chop 0 chop 0 if ($$->flags & IS_DEFAULT_CHOPPED) { @@ -2258,10 +2258,10 @@ sprintf_args: ; position: - position_not_place + position_not_place { $$ = $1; } | place - { + { position pos = $1; $$.x = pos.x; $$.y = pos.y; @@ -2377,7 +2377,7 @@ ordinal: optional_ordinal_last: LAST { $$ = 1; } - | ordinal LAST + | ordinal LAST { $$ = $1; } ; @@ -2416,7 +2416,7 @@ nth_primitive: object_type: BOX - { $$ = BOX_OBJECT; } + { $$ = BOX_OBJECT; } | CIRCLE { $$ = CIRCLE_OBJECT; } | ELLIPSE @@ -2436,7 +2436,7 @@ object_type: ; label_path: - '.' LABEL + '.' LABEL { $$ = new path($2); } | label_path '.' LABEL { @@ -2450,7 +2450,7 @@ relative_path: { $$ = new path($1); } /* give this a lower precedence than LEFT and RIGHT so that [A: box] with .A left == [A: box] with (.A left) */ - | label_path %prec TEXT + | label_path %prec TEXT { $$ = $1; } | label_path corner { @@ -2497,7 +2497,7 @@ path: corner: DOT_N { $$ = &object::north; } - | DOT_E + | DOT_E { $$ = &object::east; } | DOT_W { $$ = &object::west; } @@ -2517,7 +2517,7 @@ corner: { $$ = &object::start; } | DOT_END { $$ = &object::end; } - | TOP + | TOP { $$ = &object::north; } | BOTTOM { $$ = &object::south; } @@ -2573,12 +2573,12 @@ expr: | NUMBER { $$ = $1; } | place DOT_X - { + { if ($1.obj != 0) $$ = $1.obj->origin().x; else $$ = $1.x; - } + } | place DOT_Y { if ($1.obj != 0) Index: tests/sets.at =================================================================== RCS file: /cvsroot/bison/bison/tests/sets.at,v retrieving revision 1.18 diff -p -u -r1.18 sets.at --- tests/sets.at 14 May 2005 06:49:48 -0000 1.18 +++ tests/sets.at 24 Jul 2005 07:20:55 -0000 @@ -1,5 +1,5 @@ # Exercising Bison Grammar Sets. -*- Autotest -*- -# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -29,25 +29,25 @@ m4_define([AT_EXTRACT_SETS], :null p n - /^[ ]*$/ !b null + /^[ ]*$/ !b null } /^FIRSTS$/ { :firsts p n - /^[ ]*$/ !b firsts + /^[ ]*$/ !b firsts } /^FDERIVES$/ { :fderiv p n - /^[ ]*$/ !b fderiv + /^[ ]*$/ !b fderiv } /^DERIVES$/ { :deriv p n - /^[ ]*$/ !b deriv + /^[ ]*$/ !b deriv } ]]) AT_CHECK([sed -f extract.sed $1], 0, [stdout]) Index: tests/torture.at =================================================================== RCS file: /cvsroot/bison/bison/tests/torture.at,v retrieving revision 1.27 diff -p -u -r1.27 torture.at --- tests/torture.at 18 Jul 2005 06:14:16 -0000 1.27 +++ tests/torture.at 24 Jul 2005 07:20:56 -0000 @@ -388,6 +388,8 @@ m4_define([AT_DATA_STACK_TORTURE], # exp: AT_DATA([input.y], [[%{ +#include +#include #include #include ]$1[ @@ -406,9 +408,6 @@ yyerror (const char *msg) fprintf (stderr, "%s\n", msg); } -/* There are YYLVAL_MAX of WAIT_FOR_EOFs. */ -unsigned int yylval_max; - static int yylex (void) { @@ -421,9 +420,14 @@ yylex (void) int main (int argc, const char **argv) { + char *endp; if (argc != 2) abort (); - yylval = atoi (argv[1]); + yylval = strtol (argv[1], &endp, 10); + if (! (argv[1] != endp + && 0 <= yylval && yylval <= INT_MAX + && errno != ERANGE)) + abort (); yydebug = 1; return yyparse (); } --- /dev/null 2005-06-27 15:40:05.000000000 -0700 +++ src/scan-skel.h 2005-07-23 21:53:39.000000000 -0700 @@ -0,0 +1,41 @@ +/* Scan Bison Skeletons. + + Copyright (C) 2005 Free Software Foundation, Inc. + + This file is part of Bison, the GNU Compiler Compiler. + + Bison is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + Bison is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Bison; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +void scan_skel (FILE *); + +/* Pacify "make syntax-check". */ +extern FILE *skel_in; +extern FILE *skel_out; +extern int skel__flex_debug; +extern int skel_lineno; + +/* Pacify "gcc -Wmissing-prototypes" when flex 2.5.31 is used. */ +int skel_get_lineno (void); +FILE *skel_get_in (void); +FILE *skel_get_out (void); +int skel_get_leng (void); +char *skel_get_text (void); +void skel_set_lineno (int); +void skel_set_in (FILE *); +void skel_set_out (FILE *); +int skel_get_debug (void); +void skel_set_debug (int); +int skel_lex_destroy (void); From MAILER-DAEMON Mon Jul 25 00:00:39 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dwu8t-0001K0-2h for mharc-bison-patches@gnu.org; Mon, 25 Jul 2005 00:00:39 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Dwu8q-0001In-OX for bison-patches@gnu.org; Mon, 25 Jul 2005 00:00:36 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dwu7M-0000tW-5F for bison-patches@gnu.org; Sun, 24 Jul 2005 23:59:13 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dwu7L-0000kx-3j; Sun, 24 Jul 2005 23:59:03 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Dwu0J-0005Qs-IY; Sun, 24 Jul 2005 23:51:47 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6P3ewL04228; Sun, 24 Jul 2005 20:40:58 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dwtpk-0005XA-8d; Sun, 24 Jul 2005 20:40:52 -0700 To: Pablo De Napoli References: <20050724185543.73886.qmail@web40504.mail.yahoo.com> From: Paul Eggert Date: Sun, 24 Jul 2005 20:40:52 -0700 In-Reply-To: <20050724185543.73886.qmail@web40504.mail.yahoo.com> (Pablo De Napoli's message of "Sun, 24 Jul 2005 11:55:42 -0700 (PDT)") Message-ID: <87d5p7h7sr.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: bug-bison@gnu.org, bison-patches@gnu.org Subject: Re: segmentation fault when reading a directive with a sintax error X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jul 2005 04:00:37 -0000 Pablo De Napoli writes: > I want to report a problem with bison (though you might be aware of it) > %pure-parser > %parse-param a Thanks for reporting that; I didn't know about the problem. I installed this patch: 2005-07-24 Paul Eggert Fix core dump reported by Pablo De Napoli in . * tests/regression.at (Invalid inputs with {}): New test. * src/parse-gram.y (token_name): Translate type before using it as an index. Index: src/parse-gram.y =================================================================== RCS file: /cvsroot/bison/bison/src/parse-gram.y,v retrieving revision 1.56 diff -p -u -r1.56 parse-gram.y --- src/parse-gram.y 24 Jul 2005 07:24:22 -0000 1.56 +++ src/parse-gram.y 25 Jul 2005 03:33:28 -0000 @@ -538,5 +538,5 @@ gram_error (location const *loc, char co char const * token_name (int type) { - return yytname[type]; + return yytname[YYTRANSLATE (type)]; } Index: tests/regression.at =================================================================== RCS file: /cvsroot/bison/bison/tests/regression.at,v retrieving revision 1.92 diff -p -u -r1.92 regression.at --- tests/regression.at 21 Jul 2005 20:53:03 -0000 1.92 +++ tests/regression.at 25 Jul 2005 03:33:28 -0000 @@ -303,6 +303,27 @@ input.y:7.1-8.0: missing `%}' at end of AT_CLEANUP +AT_SETUP([Invalid inputs with {}]) + +AT_DATA([input.y], +[[ +%destructor +%initial-action +%lex-param +%parse-param +%printer +%union +]]) + +AT_CHECK([bison input.y], [1], [], +[[input.y:3.1: missing `{' in "%destructor {...}" +input.y:4.1: missing `{' in "%initial-action {...}" +input.y:4.1: syntax error, unexpected %initial-action {...}, expecting string or identifier +]]) + +AT_CLEANUP + + ## ------------------- ## ## Token definitions. ## From MAILER-DAEMON Mon Jul 25 00:32:29 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1Dwudh-0008CX-2O for mharc-bison-patches@gnu.org; Mon, 25 Jul 2005 00:32:29 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DwucD-0007T2-TF for bison-patches@gnu.org; Mon, 25 Jul 2005 00:30:58 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dwuc0-0007I1-84 for bison-patches@gnu.org; Mon, 25 Jul 2005 00:30:45 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dwuby-0007Gn-9f for bison-patches@gnu.org; Mon, 25 Jul 2005 00:30:42 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DwufR-0007GE-67 for bison-patches@gnu.org; Mon, 25 Jul 2005 00:34:17 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6P4NSL05823 for ; Sun, 24 Jul 2005 21:23:28 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DwuUs-0001AH-Jh for bison-patches@gnu.org; Sun, 24 Jul 2005 21:23:22 -0700 To: bison-patches@gnu.org From: Paul Eggert Date: Sun, 24 Jul 2005 21:23:22 -0700 Message-ID: <878xzvh5tx.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: GLR patch for non-GCC compilers X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jul 2005 04:32:27 -0000 I installed this to fix a problem when attempting to use a GLR parser with non-GCC compilers. (Apparently I was the first person to test Bison CVS with a non-GCC compiler since June 6!) 2005-07-24 Paul Eggert * data/glr.c (YYOPTIONAL_LOC): Define even if it's not a recent version of GCC, since the macro is used with non-GCC compilers. --- glr.c 24 Jul 2005 07:17:06 -0000 1.110 +++ glr.c 25 Jul 2005 04:20:39 -0000 1.111 @@ -261,18 +261,18 @@ b4_syncline([@oline@], [@ofile@]) #ifndef __attribute__ /* This feature is available in gcc versions 2.5 and later. */ -# if !defined (__GNUC__) || __GNUC__ < 2 || \ -(__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ +# if (!defined (__GNUC__) || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__) # define __attribute__(Spec) /* empty */ -# else -]b4_location_if([# define YYOPTIONAL_LOC(Name) Name],[ -# if defined (__cplusplus) -# define YYOPTIONAL_LOC(Name) /* empty */ -# else -# define YYOPTIONAL_LOC(Name) Name __attribute__ ((__unused__)) -# endif])[ # endif #endif + +]b4_location_if([#define YYOPTIONAL_LOC(Name) Name],[ +#ifdef __cplusplus +# define YYOPTIONAL_LOC(Name) /* empty */ +#else +# define YYOPTIONAL_LOC(Name) Name __attribute__ ((__unused__)) +#endif])[ #ifndef YYASSERT # define YYASSERT(condition) ((void) ((condition) || (abort (), 0))) From MAILER-DAEMON Mon Jul 25 02:46:27 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DwwjK-0005WS-TC for mharc-bison-patches@gnu.org; Mon, 25 Jul 2005 02:46:27 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DwwjI-0005Uz-0U for bison-patches@gnu.org; Mon, 25 Jul 2005 02:46:24 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DwwjF-0005Tb-85 for bison-patches@gnu.org; Mon, 25 Jul 2005 02:46:22 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DwwjD-0005NJ-Px for bison-patches@gnu.org; Mon, 25 Jul 2005 02:46:20 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DwwlQ-0004pd-16 for bison-patches@gnu.org; Mon, 25 Jul 2005 02:48:36 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6P6bjL11345 for ; Sun, 24 Jul 2005 23:37:45 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dwwap-0003e2-KX for bison-patches@gnu.org; Sun, 24 Jul 2005 23:37:39 -0700 To: bison-patches@gnu.org From: Paul Eggert Date: Sun, 24 Jul 2005 23:37:39 -0700 Message-ID: <874qajgzm4.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: Bison patch to port to OpenBSD 3.4 (porting problems with echo, isprint) X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jul 2005 06:46:25 -0000 I installed this patch to port Bison CVS to OpenBSD 3.4. 2005-07-24 Paul Eggert * tests/regression.at (Token definitions): Don't rely on AT_PARSER_CHECK for data that contains backslashes. It currently uses 'echo', and 'echo' isn't portable if its argument contains backslashes. Problem found on OpenBSD 3.4. Also, do not assume that the byte '\0xff' is not printable in the C locale; it is, under OpenBSD 3.4 (!). Luckily, '\0x80' through '\0x9e' are not printable, so use '\0x81' to test. Index: tests/regression.at =================================================================== RCS file: /cvsroot/bison/bison/tests/regression.at,v retrieving revision 1.93 diff -p -u -r1.93 regression.at --- tests/regression.at 25 Jul 2005 03:38:42 -0000 1.93 +++ tests/regression.at 25 Jul 2005 06:35:29 -0000 @@ -345,9 +345,9 @@ int yylex (void); %token B_TOKEN "b" %token C_TOKEN 'c' %token 'd' D_TOKEN -%token SPECIAL "\\\'\?\"\a\b\f\n\r\t\v\001\377\x001\x0000ff??!" +%token SPECIAL "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!" %% -exp: "a" "\\\'\?\"\a\b\f\n\r\t\v\001\377\x001\x0000ff??!"; +exp: "a" "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!"; %% void yyerror (char const *s) @@ -370,9 +370,10 @@ main (void) AT_CHECK([bison -o input.c input.y]) AT_COMPILE([input]) -AT_PARSER_CHECK([./input], 1, [], -[syntax error, unexpected "\\'?\"\a\b\f\n\r\t\v\001\377\001\377?\?!", expecting a -]) +AT_DATA([experr], +[[syntax error, unexpected "\\'?\"\a\b\f\n\r\t\v\001\201\001\201?\?!", expecting a +]]) +AT_PARSER_CHECK([./input], 1, [], [experr]) AT_CLEANUP From MAILER-DAEMON Mon Jul 25 03:03:02 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DwwzJ-0002Ij-GY for mharc-bison-patches@gnu.org; Mon, 25 Jul 2005 03:02:58 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DwwzA-0002H3-2H for bison-patches@gnu.org; Mon, 25 Jul 2005 03:02:49 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Dwwyv-0002Dt-8p for bison-patches@gnu.org; Mon, 25 Jul 2005 03:02:44 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Dwwyt-0002Bu-Kh for bison-patches@gnu.org; Mon, 25 Jul 2005 03:02:31 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DwwwL-0005cd-R3 for bison-patches@gnu.org; Mon, 25 Jul 2005 02:59:54 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6P6n3L11824 for ; Sun, 24 Jul 2005 23:49:03 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1Dwwll-0004Ua-V5 for bison-patches@gnu.org; Sun, 24 Jul 2005 23:48:57 -0700 To: bison-patches@gnu.org Message-Id: From: Paul Eggert Date: Sun, 24 Jul 2005 23:48:57 -0700 Subject: Bison "make check" output ends with "All 1 tests passed"? X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jul 2005 07:02:52 -0000 I noticed that the output of "make check" ended with this text: PASS: test ================== All 1 tests passed ================== because "make check" finished up with examples/calc++, which has one test. This is a little disconcerting, since Bison has a lot more than one test. Akim, did you intend to add that test case in a different directory? Anyway, I worked around the problem this way: 2005-07-24 Paul Eggert * Makefile.am (SUBDIRS): Put examples before tests, so that "make check" doesn't finish with "All 1 tests passed". --- Makefile.am 22 Jul 2005 23:02:50 -0000 1.38 +++ Makefile.am 25 Jul 2005 06:45:32 -0000 1.39 @@ -18,7 +18,7 @@ ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = config po runtime-po lib data src doc tests examples +SUBDIRS = config po runtime-po lib data src doc examples tests # Files installed for use by Automake. aclocaldir = @aclocaldir@ From MAILER-DAEMON Tue Jul 26 16:40:09 2005 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1DxWDd-0003z2-NL for mharc-bison-patches@gnu.org; Tue, 26 Jul 2005 16:40:05 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1DxWDV-0003ti-GC for bison-patches@gnu.org; Tue, 26 Jul 2005 16:39:57 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1DxWDR-0003ra-0K for bison-patches@gnu.org; Tue, 26 Jul 2005 16:39:54 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1DxWDQ-0003qH-Hw; Tue, 26 Jul 2005 16:39:52 -0400 Received: from [131.179.128.19] (helo=kiwi.cs.ucla.edu) by monty-python.gnu.org with esmtp (Exim 4.34) id 1DxWIw-0000f6-PO; Tue, 26 Jul 2005 16:45:35 -0400 Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by kiwi.cs.ucla.edu (8.11.7p1+Sun/8.11.7/UCLACS-5.2) with ESMTP id j6QKYL409747; Tue, 26 Jul 2005 13:34:21 -0700 (PDT) Received: from eggert by penguin.cs.ucla.edu with local (Exim 4.50) id 1DxW7z-0001ua-ED; Tue, 26 Jul 2005 13:34:15 -0700 To: info-gnu@gnu.org From: Paul Eggert Date: Tue, 26 Jul 2005 13:34:15 -0700 Message-ID: <87br4pi9x4.fsf@penguin.cs.ucla.edu> User-Agent: Gnus/5.1007 (Gnus v5.10.7) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: help-bison@gnu.org, translation@iro.umontreal.ca, bug-bison@gnu.org, bison-patches@gnu.org Subject: Bison test version 2.0b available X-BeenThere: bison-patches@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug fixes and other improvements to Bison List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jul 2005 20:40:03 -0000 Bison test version 2.0b is now available. It contains mostly bug fixes for Bison 2.0. Our intention is to generate a new official release soon, based on feedback from this test version. Here is the URL: http://www.cs.ucla.edu/~eggert/bison/bison-2.0b.tar.gz I've asked the GNU FTP upload gurus to copy it to here: ftp://alpha.gnu.org/gnu/bison/bison-2.0b.tar.gz Here is the MD5 checksum: 47e84c977910be6e136ee6b4bf4967c7 bison-2.0b.tar.gz To try this test version, please make sure you have GNU m4 1.4.3 installed, and then execute the following shell commands or their equivalents: wget http://www.cs.ucla.edu/~eggert/bison/bison-2.0b.tar.gz gunzip . Bison is a parser generator that is compatible with Yacc. Please see for more info about Bison. Here is a list of user-visible changes since Bison 2.0: Changes in version 2.0b, 2005-07-24: * Bison-generated parsers now support the translation of diagnostics like "syntax error" into languages other than English. The default language is still English. For details, please see the new Internationalization section of the Bison manual. Software distributors should also see the new PACKAGING file. Thanks to Bruno Haible for this new feature. * Wording in the Bison-generated parsers has been changed slightly to simplify translation. In particular, the message "memory exhausted" has replaced "parser stack overflow", as the old message was not always accurate for modern Bison-generated parsers. * Destructors are now called when the parser aborts, for all symbols left behind on the stack. Also, the start symbol is now destroyed after a successful parse. In both cases, the behavior was formerly inconsistent. * The yytname array now contains the same contents that it did in 2.0, undoing an incompatible and undocumented change made in 2.0a. Changes in version 2.0a, 2005-05-22: * When generating verbose diagnostics, Bison-generated parsers no longer quote the literal strings associated with tokens. For example, for a syntax error associated with '%token NUM "number"' they might print 'syntax error, unexpected number' instead of 'syntax error, unexpected "number"'.