mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-08-18 23:24:26 +00:00
Compare commits
745
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8e86444744 | ||
|
|
beda758b1f | ||
|
|
5ece6d436f | ||
|
|
5bb18f9a19 | ||
|
|
894dd62eb2 | ||
|
|
2992e1e967 | ||
|
|
82841af7d0 | ||
|
|
318b76e913 | ||
|
|
30d2f3d50f | ||
|
|
30f8c3953f | ||
|
|
29ae55f112 | ||
|
|
2b548aa648 | ||
|
|
bb0146c2a9 | ||
|
|
4518a4baae | ||
|
|
bec30531f7 | ||
|
|
fc6edc45c0 | ||
|
|
5e5d541531 | ||
|
|
52d1aeee3d | ||
|
|
44ea3fbdf5 | ||
|
|
338963d177 | ||
|
|
e1dd105c0a | ||
|
|
a10778dc32 | ||
|
|
d9e9746c06 | ||
|
|
c57b2479ff | ||
|
|
b85810aec0 | ||
|
|
cae601224e | ||
|
|
ae40480115 | ||
|
|
22312b71e0 | ||
|
|
a67cef01b1 | ||
|
|
e9f87b5b7d | ||
|
|
2b25d624f6 | ||
|
|
3460813bdb | ||
|
|
73784c645d | ||
|
|
25d810906c | ||
|
|
a9b8959efa | ||
|
|
e2742e46ba | ||
|
|
1109455ce9 | ||
|
|
7ea5e9779b | ||
|
|
fab5b110fb | ||
|
|
aed7fd9b97 | ||
|
|
24fad99e2b | ||
|
|
a4b36db458 | ||
|
|
1239777d4f | ||
|
|
9b3add5beb | ||
|
|
3cd5bcdd19 | ||
|
|
b5b61c616b | ||
|
|
8c9a50bee1 | ||
|
|
d99361e657 | ||
|
|
b9cecb91a0 | ||
|
|
aea13e9790 | ||
|
|
931394cbc1 | ||
|
|
704a47c475 | ||
|
|
091e20bbee | ||
|
|
cce7171088 | ||
|
|
82c035a823 | ||
|
|
8419d367e1 | ||
|
|
375d580671 | ||
|
|
f51cb8ff8c | ||
|
|
29e8831621 | ||
|
|
b9f71f19cc | ||
|
|
1a2b5d37e1 | ||
|
|
1cca533e2e | ||
|
|
c03ae96659 | ||
|
|
5a670b1ed9 | ||
|
|
ad949da96b | ||
|
|
0e78e603f6 | ||
|
|
213e640e1e | ||
|
|
e7b8bef1b1 | ||
|
|
b68e774421 | ||
|
|
78d5bae94e | ||
|
|
ff44279401 | ||
|
|
610ab194c8 | ||
|
|
29d29c8fff | ||
|
|
7c6b64d023 | ||
|
|
3d4daee374 | ||
|
|
9e7f6bbd59 | ||
|
|
255ef6389e | ||
|
|
0d8a73638f | ||
|
|
5499894828 | ||
|
|
3db472b9eb | ||
|
|
b365aa0589 | ||
|
|
30171f79ab | ||
|
|
75142d452b | ||
|
|
b7c49edf13 | ||
|
|
ec2da99ffe | ||
|
|
8adfa272f7 | ||
|
|
80dac38c5e | ||
|
|
2cec70b9f1 | ||
|
|
13ca549a75 | ||
|
|
5092aba5a7 | ||
|
|
11e2becaac | ||
|
|
dac3c91005 | ||
|
|
d0b0fefa03 | ||
|
|
adc8c84856 | ||
|
|
14d293acb2 | ||
|
|
f499b06243 | ||
|
|
d945f5cd8e | ||
|
|
d200e455d0 | ||
|
|
f9507c28ae | ||
|
|
065fbd27af | ||
|
|
1b177bd731 | ||
|
|
7742ddebf1 | ||
|
|
1fa140687e | ||
|
|
b9752825a0 | ||
|
|
776209d6c7 | ||
|
|
dee049eb91 | ||
|
|
275fc3ad0f | ||
|
|
897668ee8d | ||
|
|
ab3399e0c6 | ||
|
|
4947ebdb4c | ||
|
|
c527b2d483 | ||
|
|
23a1adea4a | ||
|
|
3877f72ba2 | ||
|
|
331dbc1bb7 | ||
|
|
be750e4c49 | ||
|
|
709ae8c6ee | ||
|
|
f87685c324 | ||
|
|
837491d810 | ||
|
|
796d61fbdd | ||
|
|
64d15509b6 | ||
|
|
367c7a47d4 | ||
|
|
fbc8ecb7ef | ||
|
|
f0440388e9 | ||
|
|
a79986b830 | ||
|
|
bcb05e75f5 | ||
|
|
4ec8e00f60 | ||
|
|
5ee2aaf2fa | ||
|
|
a64d6fe0c3 | ||
|
|
1a4648ff0d | ||
|
|
8165afc445 | ||
|
|
9c2c67e6fe | ||
|
|
93ede233f5 | ||
|
|
2666f92821 | ||
|
|
428046f8d4 | ||
|
|
ea52d7066d | ||
|
|
3f96f4dc41 | ||
|
|
51576fb3c6 | ||
|
|
50d780b566 | ||
|
|
2648a72df7 | ||
|
|
92790e5bf0 | ||
|
|
927c155774 | ||
|
|
b7575ffe6f | ||
|
|
02a81e05f9 | ||
|
|
ed8e1f68e9 | ||
|
|
cb581495e6 | ||
|
|
2e729273d6 | ||
|
|
107f7dfbd0 | ||
|
|
9b53a24f31 | ||
|
|
dbfb6dcd33 | ||
|
|
c79cea6dff | ||
|
|
c3a8cbaaad | ||
|
|
c3995d9998 | ||
|
|
c25fb64881 | ||
|
|
710ddc4f18 | ||
|
|
e83d80b8ed | ||
|
|
fbbf9b3bb9 | ||
|
|
971d51580b | ||
|
|
f64b50a08c | ||
|
|
5edafffd36 | ||
|
|
0279f8e90c | ||
|
|
190c4f5f0a | ||
|
|
2a73b93df4 | ||
|
|
74392f6a54 | ||
|
|
37c82725c8 | ||
|
|
6a164e0c96 | ||
|
|
7215de245c | ||
|
|
80e25d4d46 | ||
|
|
0ab3728b12 | ||
|
|
78af9bbcd3 | ||
|
|
bdef2a413a | ||
|
|
3735969c7d | ||
|
|
49701457c2 | ||
|
|
0edad74997 | ||
|
|
5449dd0f25 | ||
|
|
a870c5670e | ||
|
|
75addd5e5f | ||
|
|
80df876864 | ||
|
|
f693ad146e | ||
|
|
74ffbcb6bf | ||
|
|
07708e1946 | ||
|
|
448b17aa3c | ||
|
|
92b16366dd | ||
|
|
076ab0334d | ||
|
|
3843c413d0 | ||
|
|
4316896018 | ||
|
|
b2872512f1 | ||
|
|
23cbcc6c19 | ||
|
|
03ec521cc5 | ||
|
|
3a7456dd96 | ||
|
|
1cbcf2e795 | ||
|
|
841822701a | ||
|
|
3f6f053ce5 | ||
|
|
7a5350baa0 | ||
|
|
5e893e1c88 | ||
|
|
35687a9d8c | ||
|
|
d954473dee | ||
|
|
9839bbe557 | ||
|
|
9f136c0720 | ||
|
|
b608206eca | ||
|
|
52afa962d1 | ||
|
|
e74dc3213f | ||
|
|
768fca8336 | ||
|
|
a17e599f81 | ||
|
|
a04bc34180 | ||
|
|
c8ea038e69 | ||
|
|
aa2aab3c16 | ||
|
|
b178c8ccc4 | ||
|
|
f67d13aa6c | ||
|
|
c2713865e3 | ||
|
|
9887c18aca | ||
|
|
4d4f699ca4 | ||
|
|
80a6975034 | ||
|
|
fe96109760 | ||
|
|
e3e4e81446 | ||
|
|
630e182b7b | ||
|
|
81b51460c9 | ||
|
|
3067fbef53 | ||
|
|
7d27c823de | ||
|
|
2729e106a7 | ||
|
|
c2bea5f96f | ||
|
|
f11966ffc5 | ||
|
|
2c8a9dfa1d | ||
|
|
f4e421e6e4 | ||
|
|
7093d0f541 | ||
|
|
fd51e5ffa2 | ||
|
|
7d13ff5f2f | ||
|
|
892a39950d | ||
|
|
68f1e3edc3 | ||
|
|
d2d1b42b07 | ||
|
|
760b53a84b | ||
|
|
002389585a | ||
|
|
396452de26 | ||
|
|
600f9b0ccc | ||
|
|
04a76783ab | ||
|
|
147e184ccc | ||
|
|
84b113cd22 | ||
|
|
426cf563bd | ||
|
|
ec93a21372 | ||
|
|
c7925b99cb | ||
|
|
5b5d192929 | ||
|
|
8850be4b1c | ||
|
|
9113b58f6f | ||
|
|
4a38e61393 | ||
|
|
4b35e1c1dd | ||
|
|
d2b04478d4 | ||
|
|
2c4c30aa95 | ||
|
|
576890b7ee | ||
|
|
cb487d7d0d | ||
|
|
6013d43f59 | ||
|
|
cb4956ee99 | ||
|
|
648185ab4a | ||
|
|
b3324f97a8 | ||
|
|
68254a0303 | ||
|
|
d2079671fb | ||
|
|
04d843a2a8 | ||
|
|
eeeb962b2f | ||
|
|
e0327bc8b4 | ||
|
|
000f1a3cb2 | ||
|
|
26cfe0be87 | ||
|
|
a12f5cabb2 | ||
|
|
f6bd542788 | ||
|
|
a220f55509 | ||
|
|
2ca209c11d | ||
|
|
0e41b407b9 | ||
|
|
e0c40012bd | ||
|
|
5e147124b5 | ||
|
|
a034c8b849 | ||
|
|
b83f0407c6 | ||
|
|
c64a20f3dc | ||
|
|
5b0d29bb52 | ||
|
|
722c4bfec2 | ||
|
|
6255b43511 | ||
|
|
b29b2ed560 | ||
|
|
b497173564 | ||
|
|
a81b1d4ad4 | ||
|
|
c1ecb3c1f5 | ||
|
|
cc72668cfb | ||
|
|
fbe01355c8 | ||
|
|
81e895c01e | ||
|
|
d38d6e7c76 | ||
|
|
6bb1878b51 | ||
|
|
d9ec2d0749 | ||
|
|
720e5c1bc3 | ||
|
|
fb9087861f | ||
|
|
125ecb5684 | ||
|
|
d8cf039f97 | ||
|
|
7bec0760a8 | ||
|
|
c87d4863f6 | ||
|
|
9bfe901c33 | ||
|
|
97db7bd4a1 | ||
|
|
2c5f66eda7 | ||
|
|
300f275f23 | ||
|
|
f59c437a25 | ||
|
|
6986fd9e3b | ||
|
|
4bc30f78dc | ||
|
|
08a946e008 | ||
|
|
f047348491 | ||
|
|
e41dc70020 | ||
|
|
652a871c29 | ||
|
|
b2ed6e5826 | ||
|
|
edad70670f | ||
|
|
3feec03433 | ||
|
|
ddcd5fdff6 | ||
|
|
bb527fc271 | ||
|
|
a845a69707 | ||
|
|
f004bf6ac4 | ||
|
|
de326cc0de | ||
|
|
90b4416b5b | ||
|
|
9703cc49e0 | ||
|
|
d803322e27 | ||
|
|
3d76b07def | ||
|
|
09b503c8e1 | ||
|
|
0f37a9942f | ||
|
|
fa63c49821 | ||
|
|
d39d93b834 | ||
|
|
9edcd89542 | ||
|
|
7da99edea7 | ||
|
|
ba9dda1a2e | ||
|
|
337c5bd131 | ||
|
|
c73a41af8e | ||
|
|
0df87bb609 | ||
|
|
e4d3d4de4c | ||
|
|
6d7d248e72 | ||
|
|
e9e4c32114 | ||
|
|
5f7e08323a | ||
|
|
e3f1699f55 | ||
|
|
65be086611 | ||
|
|
e4d910bf0f | ||
|
|
1964ad8c34 | ||
|
|
951366c145 | ||
|
|
9f4503d6e9 | ||
|
|
d8988b2fff | ||
|
|
92fcb5efbe | ||
|
|
6468d18e5c | ||
|
|
6b7e85b994 | ||
|
|
cd5aafcf8c | ||
|
|
037ca2f14c | ||
|
|
270a173cf3 | ||
|
|
561f9a30af | ||
|
|
f987e9d257 | ||
|
|
de76abc1e9 | ||
|
|
4a0d893695 | ||
|
|
0846f581e8 | ||
|
|
490abf53b1 | ||
|
|
3c1a79b314 | ||
|
|
5d52e7d045 | ||
|
|
004b178558 | ||
|
|
3bcfa9dedd | ||
|
|
631aa1d3dc | ||
|
|
ee006e3a4c | ||
|
|
9449f6d3a8 | ||
|
|
c07c873533 | ||
|
|
f6ec6d13dc | ||
|
|
342b8b6e21 | ||
|
|
0150aabe35 | ||
|
|
8484abf02c | ||
|
|
bafbfdd24c | ||
|
|
20e0b9749c | ||
|
|
3a7bc75ff7 | ||
|
|
40b97583b8 | ||
|
|
c20e2bdcf1 | ||
|
|
1c8c2190b1 | ||
|
|
180d45ba81 | ||
|
|
c51d1a1973 | ||
|
|
577c6c8499 | ||
|
|
6f9344dadf | ||
|
|
652def8074 | ||
|
|
209215672e | ||
|
|
25b222faf6 | ||
|
|
6bc35ae56a | ||
|
|
31b53af2fa | ||
|
|
a474de9b9a | ||
|
|
c0629aa10f | ||
|
|
82b6d266fd | ||
|
|
75f5aaea27 | ||
|
|
f508cb0ac9 | ||
|
|
f3c383d683 | ||
|
|
13105fc158 | ||
|
|
b0c4483ed2 | ||
|
|
714720fcfe | ||
|
|
4766a52862 | ||
|
|
11d82f03b4 | ||
|
|
a0ed1cb86a | ||
|
|
f753cd6292 | ||
|
|
93a37297e6 | ||
|
|
4134cae3c5 | ||
|
|
682d48cd09 | ||
|
|
53cdf751a3 | ||
|
|
087c8fdae3 | ||
|
|
7a999fcb7b | ||
|
|
dda680cb80 | ||
|
|
6b7d911c5d | ||
|
|
9e644e648d | ||
|
|
17da6427fe | ||
|
|
01ed3db59b | ||
|
|
e8cb70b957 | ||
|
|
63c2d5de0f | ||
|
|
675bc4e954 | ||
|
|
d8cb51834b | ||
|
|
6c686258e3 | ||
|
|
c111e171cd | ||
|
|
8f451ef727 | ||
|
|
5086915ebd | ||
|
|
416bd7a9f3 | ||
|
|
997b6fd0c7 | ||
|
|
2ba3b73c58 | ||
|
|
ff48177d25 | ||
|
|
4e5caae2c6 | ||
|
|
b33160bf45 | ||
|
|
535c0e75d1 | ||
|
|
d1a2daf76a | ||
|
|
2b763dfe15 | ||
|
|
f1a87ef6ad | ||
|
|
cbd8990652 | ||
|
|
82e236e2d6 | ||
|
|
b0cfa28a12 | ||
|
|
6fc7423473 | ||
|
|
40a64a7a48 | ||
|
|
944bc6ce43 | ||
|
|
9c76d118cc | ||
|
|
a8289c62db | ||
|
|
b6610515d5 | ||
|
|
26f609ffc3 | ||
|
|
6f43b11362 | ||
|
|
dd3127cf7a | ||
|
|
aa321494cf | ||
|
|
68bd3b6bfa | ||
|
|
bbb5bcc6f8 | ||
|
|
667a550e7b | ||
|
|
713fa62a74 | ||
|
|
83cd972a1a | ||
|
|
8c7d6a3de8 | ||
|
|
e795bd7376 | ||
|
|
7cae438bd8 | ||
|
|
c427611526 | ||
|
|
45f8dd1ec5 | ||
|
|
e5aa395b38 | ||
|
|
0b8afb7723 | ||
|
|
683e29a634 | ||
|
|
f0130d39ff | ||
|
|
f9a8293a3f | ||
|
|
150ca7a72e | ||
|
|
0a3b9e5fb5 | ||
|
|
69b5cec495 | ||
|
|
f2b5126e47 | ||
|
|
4ecbf79698 | ||
|
|
95fb566259 | ||
|
|
78d09da9a5 | ||
|
|
5a009f2c4c | ||
|
|
1e41465a20 | ||
|
|
79282c6c57 | ||
|
|
fabd3b431d | ||
|
|
ec0926311c | ||
|
|
b02deb443c | ||
|
|
c67a198d15 | ||
|
|
09a6de7e50 | ||
|
|
b77b9ee0a3 | ||
|
|
a940e84e29 | ||
|
|
6f42a3e682 | ||
|
|
f1c63ceddc | ||
|
|
3e259915e1 | ||
|
|
ca96bc2d17 | ||
|
|
fd6b609da9 | ||
|
|
b6de699170 | ||
|
|
459ff06402 | ||
|
|
4e8ef709e6 | ||
|
|
08a161353c | ||
|
|
fdc6758b79 | ||
|
|
957d4dbf16 | ||
|
|
600cad3b84 | ||
|
|
0eca3194d6 | ||
|
|
976e528f02 | ||
|
|
20e8e5cadf | ||
|
|
c4b661269e | ||
|
|
ea4e548a4a | ||
|
|
3e3da79762 | ||
|
|
78348431f2 | ||
|
|
22c2cbc078 | ||
|
|
ce4d5ce009 | ||
|
|
7333d40316 | ||
|
|
8416323152 | ||
|
|
8303fc422a | ||
|
|
70a84437e1 | ||
|
|
2ce1014469 | ||
|
|
1e3e4bc116 | ||
|
|
42b45b7fab | ||
|
|
8f13fe33b7 | ||
|
|
df3b6776d3 | ||
|
|
be64244492 | ||
|
|
dc2825ae89 | ||
|
|
fdb5fc3863 | ||
|
|
b37ba92cf6 | ||
|
|
45faaf3f26 | ||
|
|
b0ce604668 | ||
|
|
d01c415b93 | ||
|
|
459dd1a681 | ||
|
|
53b74c0c4c | ||
|
|
d995fee754 | ||
|
|
234a3be303 | ||
|
|
847bf1f538 | ||
|
|
73975f004c | ||
|
|
35b995c934 | ||
|
|
d074a105ae | ||
|
|
b99357cde6 | ||
|
|
3419715d61 | ||
|
|
62ab6972e8 | ||
|
|
45bed1a559 | ||
|
|
1e24cc5b41 | ||
|
|
32dfccf8f8 | ||
|
|
cd5bd6ac4f | ||
|
|
5141b01619 | ||
|
|
447992b9f1 | ||
|
|
274d42cecb | ||
|
|
22c821f312 | ||
|
|
66075dcfc8 | ||
|
|
18569462db | ||
|
|
0d8f3c8a7a | ||
|
|
7400308fa3 | ||
|
|
f17bcd1f66 | ||
|
|
511e79b3d4 | ||
|
|
0d6508efab | ||
|
|
6deb44470e | ||
|
|
dde188fc64 | ||
|
|
a4b0592b5a | ||
|
|
705db0b507 | ||
|
|
ff4423cc28 | ||
|
|
956dba3a7c | ||
|
|
337bab46f2 | ||
|
|
5d3214b854 | ||
|
|
29092a5740 | ||
|
|
ea5607fd01 | ||
|
|
27110317b8 | ||
|
|
19c50364f3 | ||
|
|
573c1d9ff8 | ||
|
|
ef7ddeddaa | ||
|
|
ff61dabdba | ||
|
|
55b9634155 | ||
|
|
358c15b71e | ||
|
|
7de3329eea | ||
|
|
bfb0787482 | ||
|
|
1addd145c2 | ||
|
|
c95f2d781f | ||
|
|
69b4e0c5ea | ||
|
|
3abcd45995 | ||
|
|
2a91a95e9e | ||
|
|
14d3eb9bf4 | ||
|
|
d7045ec672 | ||
|
|
6fd54b73c3 | ||
|
|
4c50eae6a0 | ||
|
|
a35f64eade | ||
|
|
7de23534ac | ||
|
|
aa7815f5c6 | ||
|
|
5af1f54933 | ||
|
|
553e2b222f | ||
|
|
8a4f41d6ed | ||
|
|
090c5ebfa8 | ||
|
|
095a3fb52f | ||
|
|
d1cdce7c1c | ||
|
|
9311529bc5 | ||
|
|
d16e8d3cd7 | ||
|
|
d8880f69ff | ||
|
|
0dbb648e3f | ||
|
|
896fe5c10a | ||
|
|
dd60faeca4 | ||
|
|
8c7ebe4946 | ||
|
|
77aee78982 | ||
|
|
f1320c03a4 | ||
|
|
43591cec98 | ||
|
|
1e9798d569 | ||
|
|
f282676b7e | ||
|
|
550a72a3be | ||
|
|
131e2fef68 | ||
|
|
79282c5ad0 | ||
|
|
ff4a34be27 | ||
|
|
14ded68250 | ||
|
|
8e03724b11 | ||
|
|
a9e64249c8 | ||
|
|
42a0c7760b | ||
|
|
e02cf9e74a | ||
|
|
da9abf4366 | ||
|
|
8f52a1e790 | ||
|
|
c33638bb30 | ||
|
|
444c570aad | ||
|
|
89cab50df1 | ||
|
|
d6c2cba06d | ||
|
|
5a35a6cb71 | ||
|
|
71da9eeacc | ||
|
|
95e36146a5 | ||
|
|
d7020c2078 | ||
|
|
1916f98ef8 | ||
|
|
d7913476c4 | ||
|
|
340ef48922 | ||
|
|
b2ca4022ea | ||
|
|
403b315bb1 | ||
|
|
07a58c1301 | ||
|
|
0619caf0b1 | ||
|
|
3519ec76a3 | ||
|
|
85bcaacc59 | ||
|
|
015acc4834 | ||
|
|
8963a27bde | ||
|
|
a70083a3ed | ||
|
|
abadc11757 | ||
|
|
720d742f8e | ||
|
|
f2acea59d9 | ||
|
|
d019d65507 | ||
|
|
6c89f1c138 | ||
|
|
d5796688b1 | ||
|
|
d9efd18111 | ||
|
|
c29240e74b | ||
|
|
2fa6973e6f | ||
|
|
499daa504f | ||
|
|
cc84fd5dc7 | ||
|
|
db5b3a89b4 | ||
|
|
ceed8467b7 | ||
|
|
05a1d24b1e | ||
|
|
cbd25751d4 | ||
|
|
1386333308 | ||
|
|
0d533154e4 | ||
|
|
e79137accc | ||
|
|
8aa892b461 | ||
|
|
4a120d45e6 | ||
|
|
27821bff0f | ||
|
|
dd877b0c39 | ||
|
|
ab3bec2946 | ||
|
|
00f4332938 | ||
|
|
630f521258 | ||
|
|
e1edb685d9 | ||
|
|
cfe5fbc0a1 | ||
|
|
cb7db13e45 | ||
|
|
3628146521 | ||
|
|
a0f6b07611 | ||
|
|
10a9273b34 | ||
|
|
1853982561 | ||
|
|
9f306f2a73 | ||
|
|
c7a71c07ca | ||
|
|
adf5fa1318 | ||
|
|
1c9c92b1c2 | ||
|
|
0ba347b638 | ||
|
|
aa5fd0ee9a | ||
|
|
dbe7f27171 | ||
|
|
75bbe78d87 | ||
|
|
7b306f528a | ||
|
|
e87b57008e | ||
|
|
ae3c316400 | ||
|
|
4dc58e7c76 | ||
|
|
0a6384c401 | ||
|
|
3cef001a70 | ||
|
|
ca36d2efbc | ||
|
|
6666f98f4f | ||
|
|
41aca2e038 | ||
|
|
dc08c1d53b | ||
|
|
9ee3c97bce | ||
|
|
0de741ca66 | ||
|
|
bb10be5408 | ||
|
|
b07b484a41 | ||
|
|
361f60b34e | ||
|
|
8c44d3ec49 | ||
|
|
f95997e708 | ||
|
|
aefb051ce0 | ||
|
|
583ad9fe3a | ||
|
|
8dc26b76ae | ||
|
|
65c7d7aa04 | ||
|
|
eefc3a8c5f | ||
|
|
f87a220598 | ||
|
|
96042d8155 | ||
|
|
ff2ecbaee1 | ||
|
|
9ecbd1257c | ||
|
|
5191ef2421 | ||
|
|
649d71cc96 | ||
|
|
abf14fb697 | ||
|
|
bb99b87ec3 | ||
|
|
d2e00347cb | ||
|
|
3e2bf5adf6 | ||
|
|
8ae7664ea0 | ||
|
|
6822137867 | ||
|
|
6ed6122606 | ||
|
|
2411ba6bea | ||
|
|
6d42748fae | ||
|
|
0f3e47c1b3 | ||
|
|
dad49092a9 | ||
|
|
66a69320b2 | ||
|
|
86b7964abb | ||
|
|
8a278a045d | ||
|
|
e0d27f5f08 | ||
|
|
3114db31fd | ||
|
|
4723d52125 | ||
|
|
8ebbae2a91 | ||
|
|
eba41a1d10 | ||
|
|
3dcf6735ff | ||
|
|
e5335b7401 | ||
|
|
f9b730cd59 | ||
|
|
bbcb769c0e | ||
|
|
ca1d9e53ce | ||
|
|
1c7aefa94e | ||
|
|
7903d3b5de | ||
|
|
59b31ad972 | ||
|
|
5aafad1ddf | ||
|
|
e7ae9cfb47 | ||
|
|
5c31c3c2c8 | ||
|
|
e569a4351c | ||
|
|
9eceb6c6d3 | ||
|
|
315f05ae6c | ||
|
|
f35167cb24 | ||
|
|
8cd0d0f2ce | ||
|
|
f51dbca105 | ||
|
|
97088b85c5 | ||
|
|
8d57fff0a9 | ||
|
|
cbbe75051d | ||
|
|
2686a6e713 | ||
|
|
a693bf18ef | ||
|
|
29620c5d9c | ||
|
|
2d97f5ccb7 | ||
|
|
c49a8e71ce | ||
|
|
c9c4ffaa5d | ||
|
|
74a53b4b48 | ||
|
|
a889d44ce2 | ||
|
|
e6011337c3 | ||
|
|
d2729d44ab | ||
|
|
4be07551f5 | ||
|
|
0308924772 | ||
|
|
3202e65182 | ||
|
|
bd088c911c | ||
|
|
118fb2053c | ||
|
|
7bb4d91420 | ||
|
|
bd2a2393ed | ||
|
|
bd773d7399 | ||
|
|
de4d0c7525 | ||
|
|
792d6b7cda | ||
|
|
df1af54c81 | ||
|
|
c55c697eb1 | ||
|
|
9e4e995adb | ||
|
|
604cc97b12 | ||
|
|
5b2a15fd2f | ||
|
|
f310d2132a | ||
|
|
6f82addcd5 | ||
|
|
4562bb7764 | ||
|
|
341a3cfb10 | ||
|
|
5b2e3c8982 | ||
|
|
d968a24b6e | ||
|
|
6f515a274e | ||
|
|
5c9ba6311a | ||
|
|
bc77bc1cd2 | ||
|
|
11443f4acf | ||
|
|
ab1375029c | ||
|
|
b059f9990f |
+21
@@ -0,0 +1,21 @@
|
|||||||
|
Makefile
|
||||||
|
config.cache
|
||||||
|
config.h
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
stamp-h*
|
||||||
|
bison-*
|
||||||
|
patches
|
||||||
|
*.patch *.log log patches applied
|
||||||
|
*.prj
|
||||||
|
releases
|
||||||
|
*.flc
|
||||||
|
autom4te.cache
|
||||||
|
intl
|
||||||
|
Makefile.in
|
||||||
|
configure
|
||||||
|
config.hin
|
||||||
|
aclocal.m4
|
||||||
|
ABOUT-NLS
|
||||||
|
INSTALL
|
||||||
|
COPYING
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
Authors of GNU Bison.
|
||||||
|
|
||||||
|
Bison was written primarily by Robert Corbett.
|
||||||
|
|
||||||
|
Richard Stallman made it Yacc-compatible.
|
||||||
|
|
||||||
|
Wilfred Hansen of Carnegie Mellon University added multicharacter
|
||||||
|
string literals and other features.
|
||||||
@@ -0,0 +1,340 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Library General
|
||||||
|
Public License instead of this License.
|
||||||
+32
@@ -0,0 +1,32 @@
|
|||||||
|
# Having a separate GNUmakefile lets me `include' the dynamically
|
||||||
|
# generated rules created via Makefile.maint as well as Makefile.maint itself.
|
||||||
|
# This makefile is used only if you run GNU Make.
|
||||||
|
# It is necessary if you want to build targets usually of interest
|
||||||
|
# only to the maintainer.
|
||||||
|
|
||||||
|
# Systems where /bin/sh is not the default shell need this. The $(shell)
|
||||||
|
# command below won't work with e.g. stock DOS/Windows shells.
|
||||||
|
SHELL = /bin/sh
|
||||||
|
|
||||||
|
have-Makefile := $(shell test -f Makefile && echo yes)
|
||||||
|
|
||||||
|
# If the user runs GNU make but has not yet run ./configure,
|
||||||
|
# give them a diagnostic.
|
||||||
|
ifeq ($(have-Makefile),yes)
|
||||||
|
|
||||||
|
include Makefile
|
||||||
|
include $(srcdir)/Makefile.maint
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
all:
|
||||||
|
@echo There seems to be no Makefile in this directory.
|
||||||
|
@echo "You must run ./configure before running \`make'."
|
||||||
|
@exit 1
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Tell version 3.79 and up of GNU make to not build goals in this
|
||||||
|
# directory in parallel. This is necessary in case someone tries to
|
||||||
|
# build multiple targets on one command line.
|
||||||
|
.NOTPARALLEL:
|
||||||
+47
@@ -0,0 +1,47 @@
|
|||||||
|
## Copyright 2001, 2002 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
|
||||||
|
|
||||||
|
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
||||||
|
AUTOMAKE_OPTIONS = 1.5 check-news readme-alpha dist-bzip2
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
|
SUBDIRS = config intl po lib data src doc m4 tests
|
||||||
|
|
||||||
|
EXTRA_DIST = REFERENCES configure.bat OChangeLog Makefile.maint GNUmakefile
|
||||||
|
|
||||||
|
DISTCLEANFILES = intl/libintl.h
|
||||||
|
|
||||||
|
|
||||||
|
## ---------------------------- ##
|
||||||
|
## Customizing Makefile.maint. ##
|
||||||
|
## ---------------------------- ##
|
||||||
|
|
||||||
|
move_if_change = $(srcdir)/config/move-if-change
|
||||||
|
prev_version_file = $(srcdir)/config/prev-version.txt
|
||||||
|
release_archive_dir = releases
|
||||||
|
|
||||||
|
# Uploading betas.
|
||||||
|
hosts = alpha
|
||||||
|
alpha_host = alpha.gnu.org
|
||||||
|
alpha_url_dir = gnu/bison
|
||||||
|
|
||||||
|
# Files to update automatically.
|
||||||
|
wget_files = $(srcdir)/config/config.guess $(srcdir)/config/config.sub \
|
||||||
|
$(srcdir)/config/texinfo.tex
|
||||||
|
|
||||||
|
cvs_files = $(srcdir)/config/missing
|
||||||
-200
@@ -1,200 +0,0 @@
|
|||||||
# Makefile for bison
|
|
||||||
# Copyright (C) 1988, 1989, 1991, 1993 Bob Corbett and 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, 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
|
|
||||||
#### Start of system configuration section. ####
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
|
|
||||||
CC = @CC@
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
MAKEINFO = makeinfo
|
|
||||||
|
|
||||||
# Things you might add to DEFS:
|
|
||||||
# -DSTDC_HEADERS If you have ANSI C headers and libraries.
|
|
||||||
# -DHAVE_STRING_H If you don't have ANSI C headers but have string.h.
|
|
||||||
# -DHAVE_MEMORY_H If you don't have ANSI C headers and have memory.h.
|
|
||||||
# -DHAVE_STRERROR If you have strerror function.
|
|
||||||
DEFS = @DEFS@
|
|
||||||
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
|
|
||||||
LIBS = @LIBS@
|
|
||||||
|
|
||||||
# Some System V machines do not come with libPW. If this is true, use
|
|
||||||
# the GNU alloca.o here.
|
|
||||||
ALLOCA = @ALLOCA@
|
|
||||||
|
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
|
|
||||||
# where the installed binary goes
|
|
||||||
bindir = $(exec_prefix)/bin
|
|
||||||
|
|
||||||
# where the parsers go
|
|
||||||
datadir = $(prefix)/share
|
|
||||||
|
|
||||||
# where the info files go
|
|
||||||
infodir = $(prefix)/info
|
|
||||||
|
|
||||||
# where manual pages go and what their extensions should be
|
|
||||||
mandir = $(prefix)/man/man$(manext)
|
|
||||||
manext = 1
|
|
||||||
|
|
||||||
# hope this works on non-gnu makes.
|
|
||||||
bison_version = `sed -e '/version_string/!d' -e 's/[^0-9.]*\([0-9.]*\).*/\1/' -e q version.c`
|
|
||||||
|
|
||||||
#### End of system configuration section. ####
|
|
||||||
|
|
||||||
DISTFILES = COPYING ChangeLog Makefile.in configure configure.in \
|
|
||||||
REFERENCES bison.1 bison.rnh configure.bat \
|
|
||||||
bison.simple bison.hairy \
|
|
||||||
LR0.c allocate.c closure.c conflicts.c derives.c \
|
|
||||||
files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \
|
|
||||||
output.c print.c reader.c reduce.c symtab.c version.c \
|
|
||||||
warshall.c files.h gram.h lex.h machine.h alloc.h state.h \
|
|
||||||
symtab.h system.h types.h bison.cld build.com vmsgetargs.c \
|
|
||||||
vmshlp.mar README INSTALL NEWS bison.texinfo bison.info* texinfo.tex \
|
|
||||||
getopt.c getopt.h getopt1.c alloca.c mkinstalldirs install-sh
|
|
||||||
|
|
||||||
|
|
||||||
SHELL = /bin/sh
|
|
||||||
|
|
||||||
# This rule allows us to supply the necessary -D options
|
|
||||||
# in addition to whatever the user asks for.
|
|
||||||
.c.o:
|
|
||||||
$(CC) -c $(DEFS) -I$(srcdir)/../include $(CPPFLAGS) $(CFLAGS) $<
|
|
||||||
|
|
||||||
# names of parser files
|
|
||||||
PFILE = bison.simple
|
|
||||||
PFILE1 = bison.hairy
|
|
||||||
|
|
||||||
PFILES = -DXPFILE=\"$(datadir)/$(PFILE)\" \
|
|
||||||
-DXPFILE1=\"$(datadir)/$(PFILE1)\"
|
|
||||||
|
|
||||||
OBJECTS = LR0.o allocate.o closure.o conflicts.o derives.o files.o \
|
|
||||||
getargs.o gram.o lalr.o lex.o \
|
|
||||||
main.o nullable.o output.o print.o reader.o reduce.o symtab.o \
|
|
||||||
warshall.o version.o \
|
|
||||||
getopt.o getopt1.o $(ALLOCA)
|
|
||||||
|
|
||||||
all: bison bison.info bison.s1
|
|
||||||
|
|
||||||
Makefile: config.status Makefile.in
|
|
||||||
CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status
|
|
||||||
|
|
||||||
config.status: configure
|
|
||||||
./config.status --recheck
|
|
||||||
|
|
||||||
configure: configure.in
|
|
||||||
cd $(srcdir) && autoconf
|
|
||||||
|
|
||||||
# Copy bison.simple, inserting directory name into the #line commands.
|
|
||||||
bison.s1: bison.simple
|
|
||||||
-rm -f bison.s1
|
|
||||||
sed -e "/^#line/ s|bison|$(datadir)/bison|" -e "s/@bison_version@/$(bison_version)/" < $(srcdir)/$(PFILE) > $@-tmp
|
|
||||||
mv $@-tmp $@
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f *.o core bison bison.s1 config.status config.log
|
|
||||||
|
|
||||||
mostlyclean: clean
|
|
||||||
|
|
||||||
distclean: clean
|
|
||||||
rm -f Makefile
|
|
||||||
|
|
||||||
realclean: distclean
|
|
||||||
rm -f TAGS *.info*
|
|
||||||
|
|
||||||
# Most of these deps are in case using RCS.
|
|
||||||
install: all bison.1 $(srcdir)/$(PFILE) $(srcdir)/$(PFILE1) installdirs uninstall
|
|
||||||
$(INSTALL_PROGRAM) bison $(bindir)/bison
|
|
||||||
$(INSTALL_DATA) bison.s1 $(datadir)/$(PFILE)
|
|
||||||
$(INSTALL_DATA) $(srcdir)/$(PFILE1) $(datadir)/$(PFILE1)
|
|
||||||
cd $(srcdir); for f in bison.info*; \
|
|
||||||
do $(INSTALL_DATA) $$f $(infodir)/$$f; done
|
|
||||||
-$(INSTALL_DATA) $(srcdir)/bison.1 $(mandir)/bison.$(manext)
|
|
||||||
|
|
||||||
# Make sure all installation directories, e.g. $(bindir) actually exist by
|
|
||||||
# making them if necessary.
|
|
||||||
installdirs:
|
|
||||||
-sh $(srcdir)/mkinstalldirs $(bindir) $(datadir) $(libdir) $(infodir) $(mandir)
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
rm -f $(bindir)/bison
|
|
||||||
-cd $(datadir); rm -f $(PFILE) $(PFILE1)
|
|
||||||
rm -f $(mandir)/bison.$(manext) $(infodir)/bison.info*
|
|
||||||
|
|
||||||
check:
|
|
||||||
@echo "No checks implemented (yet)."
|
|
||||||
|
|
||||||
bison: $(OBJECTS)
|
|
||||||
$(CC) $(LDFLAGS) $(CFLAGS) -o $@ $(OBJECTS) $(LIBS)
|
|
||||||
|
|
||||||
# We don't use $(srcdir) in this rule
|
|
||||||
# because it is normally used in the master source dir
|
|
||||||
# in which configure has not been run.
|
|
||||||
dist: bison.info
|
|
||||||
echo bison-$(bison_version) > .fname
|
|
||||||
-rm -rf `cat .fname`
|
|
||||||
mkdir `cat .fname`
|
|
||||||
dst=`cat .fname`; for f in $(DISTFILES); do \
|
|
||||||
if test -L $$f; then \
|
|
||||||
cp $$f $$dst/$$f; chmod a-w $$dst/$$f; \
|
|
||||||
else \
|
|
||||||
ln $$f $$dst/$$f; \
|
|
||||||
fi \
|
|
||||||
done
|
|
||||||
tar --gzip -chf `cat .fname`.tar.gz `cat .fname`
|
|
||||||
-rm -rf `cat .fname` .fname
|
|
||||||
|
|
||||||
bison.info: bison.texinfo
|
|
||||||
$(MAKEINFO) $(srcdir)/bison.texinfo
|
|
||||||
|
|
||||||
TAGS: *.c *.h
|
|
||||||
etags *.c *.h
|
|
||||||
|
|
||||||
# This file is different to pass the parser file names to the compiler.
|
|
||||||
files.o: files.c
|
|
||||||
$(CC) -c $(PFILES) $(DEFS) $(CPPFLAGS) $(CFLAGS) \
|
|
||||||
$(srcdir)/files.c $(OUTPUT_OPTION)
|
|
||||||
|
|
||||||
LR0.o: system.h machine.h alloc.h gram.h state.h
|
|
||||||
allocate.o: system.h
|
|
||||||
closure.o: system.h machine.h alloc.h gram.h
|
|
||||||
conflicts.o: system.h machine.h alloc.h files.h gram.h state.h
|
|
||||||
derives.o: system.h alloc.h types.h gram.h
|
|
||||||
files.o: system.h files.h alloc.h gram.h
|
|
||||||
getargs.o: system.h files.h
|
|
||||||
lalr.o: system.h machine.h types.h state.h alloc.h gram.h
|
|
||||||
lex.o: system.h files.h symtab.h lex.h
|
|
||||||
main.o: system.h machine.h
|
|
||||||
nullable.o: system.h types.h gram.h alloc.h
|
|
||||||
output.o: system.h machine.h alloc.h files.h gram.h state.h
|
|
||||||
print.o: system.h machine.h alloc.h files.h gram.h state.h
|
|
||||||
reader.o: system.h files.h alloc.h symtab.h lex.h gram.h
|
|
||||||
reduce.o: system.h machine.h files.h alloc.h gram.h
|
|
||||||
symtab.o: system.h alloc.h symtab.h gram.h
|
|
||||||
warshall.o: system.h machine.h
|
|
||||||
|
|
||||||
# Prevent GNU make v3 from overflowing arg limit on SysV.
|
|
||||||
.NOEXPORT:
|
|
||||||
+346
@@ -0,0 +1,346 @@
|
|||||||
|
# -*-Makefile-*-
|
||||||
|
# This Makefile fragment is shared between fileutils, sh-utils, textutils,
|
||||||
|
# CPPI, Bison, and Autoconf.
|
||||||
|
|
||||||
|
## Copyright 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, 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.
|
||||||
|
|
||||||
|
# Do not save the original name or timestamp in the .tar.gz file.
|
||||||
|
GZIP_ENV = '--no-name --best'
|
||||||
|
|
||||||
|
CVS = cvs
|
||||||
|
|
||||||
|
prev_version_file ?= .prev-version
|
||||||
|
|
||||||
|
THIS_VERSION_REGEXP = $(subst .,\.,$(VERSION))
|
||||||
|
PREV_VERSION := $(shell cat $(prev_version_file))
|
||||||
|
PREV_VERSION_REGEXP := $(shell echo $(PREV_VERSION)|sed 's/\./\\./g')
|
||||||
|
|
||||||
|
tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
|
||||||
|
tag-this-version = $(subst .,_,$(VERSION))
|
||||||
|
tag-prev-version = $(subst .,_,$(PREV_VERSION))
|
||||||
|
this-cvs-tag = $(tag-package)-$(tag-this-version)
|
||||||
|
prev-cvs-tag = $(tag-package)-$(tag-prev-version)
|
||||||
|
my_distdir = $(PACKAGE)-$(VERSION)
|
||||||
|
|
||||||
|
# Old releases are stored here.
|
||||||
|
# Used for diffs and xdeltas.
|
||||||
|
release_archive_dir ?= ../release
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## ---------------- ##
|
||||||
|
## Updating files. ##
|
||||||
|
## ---------------- ##
|
||||||
|
|
||||||
|
WGET = wget
|
||||||
|
ftp-gnu = ftp://ftp.gnu.org/gnu
|
||||||
|
|
||||||
|
# Use mv, if you don't have/want move-if-change.
|
||||||
|
move_if_change ?= move-if-change
|
||||||
|
|
||||||
|
# ------------------- #
|
||||||
|
# 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) -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.guess $(srcdir)/config.sub \
|
||||||
|
$(srcdir)/src/ansi2knr.c \
|
||||||
|
$(srcdir)/doc/texinfo.tex
|
||||||
|
wget-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 = $(ftp-gnu)/GNUinfo/
|
||||||
|
make-stds.texi-url_prefix = $(ftp-gnu)/GNUinfo/
|
||||||
|
|
||||||
|
target = $(patsubst get-%, %, $@)
|
||||||
|
url = $($(notdir $(target))-url_prefix)$(notdir $(target))
|
||||||
|
|
||||||
|
.PHONY: $(wget-targets)
|
||||||
|
$(wget-targets):
|
||||||
|
$(WGET) $(url) -O $(target).t \
|
||||||
|
&& $(move_if_change) $(target).t $(target)
|
||||||
|
|
||||||
|
.PHONY: wget-update
|
||||||
|
wget-update: $(wget-targets)
|
||||||
|
|
||||||
|
|
||||||
|
# Updating tools via CVS.
|
||||||
|
cvs_files ?= depcomp missing
|
||||||
|
cvs-targets = $(patsubst %, get-%, $(cvs_files))
|
||||||
|
|
||||||
|
automake_repo = :pserver:[email protected]:/cvs/automake
|
||||||
|
.PHONY: $(cvs-targets)
|
||||||
|
$(cvs-targets):
|
||||||
|
$(CVS) -d $(automake_repo) co -p automake/lib/$(notdir $(target)) \
|
||||||
|
>$(target).t \
|
||||||
|
&& $(move_if_change) $(target).t $(target);
|
||||||
|
|
||||||
|
.PHONY: cvs-update
|
||||||
|
cvs-update: $(cvs-targets)
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------- #
|
||||||
|
# Updating everything. #
|
||||||
|
# --------------------- #
|
||||||
|
|
||||||
|
.PHONY: update
|
||||||
|
update: wget-update cvs-update po-update
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## --------------- ##
|
||||||
|
## Sanity checks. ##
|
||||||
|
## --------------- ##
|
||||||
|
|
||||||
|
# Checks that don't require cvs. Run `changelog-check' last as
|
||||||
|
# previous test may reveal problems requiring new ChangeLog entries.
|
||||||
|
local-check: po-check copyright-check writable-files changelog-check
|
||||||
|
|
||||||
|
changelog-check:
|
||||||
|
if head ChangeLog | grep 'Version $(VERSION)' >/dev/null; then \
|
||||||
|
:; \
|
||||||
|
else \
|
||||||
|
echo "$(VERSION) not in ChangeLog" 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verify that all source files using _() are listed in po/POTFILES.in.
|
||||||
|
po-check:
|
||||||
|
if test -f po/POTFILES.in; then \
|
||||||
|
grep -E -v '^(#|$$)' po/POTFILES.in | sort > $@-1; \
|
||||||
|
grep -E -l '\b_\(' lib/*.c src/*.c | sort > $@-2; \
|
||||||
|
diff -u $@-1 $@-2 || exit 1; \
|
||||||
|
rm -f $@-1 $@-2; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check that `make alpha' will not fail at the end of the process.
|
||||||
|
writable-files:
|
||||||
|
if test -d $(release_archive_dir); then :; else \
|
||||||
|
mkdir $(release_archive_dir); \
|
||||||
|
fi
|
||||||
|
for file in $(distdir).tar.gz $(xd-delta) \
|
||||||
|
$(release_archive_dir)/$(distdir).tar.gz \
|
||||||
|
$(release_archive_dir)/$(xd-delta); do \
|
||||||
|
test -e $$file || continue; \
|
||||||
|
test -w $$file \
|
||||||
|
|| { echo ERROR: $$file is not writable; fail=1; }; \
|
||||||
|
done; \
|
||||||
|
test "$$fail" && exit 1 || :
|
||||||
|
|
||||||
|
# Make sure that the copyright date in lib/version-etc.c is up to date.
|
||||||
|
copyright-check:
|
||||||
|
@if test -f lib/version-etc.c; then \
|
||||||
|
grep 'N_("Copyright (C) $(shell date +%Y) Free' lib/version-etc.c \
|
||||||
|
>/dev/null \
|
||||||
|
|| { echo 'out of date copyright in $<; update it' 1>&2; exit 1; }; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Sanity checks with the CVS repository.
|
||||||
|
cvs-tag-check:
|
||||||
|
echo $(this-cvs-tag); \
|
||||||
|
if $(CVS) -n log -h README | grep -e $(this-cvs-tag): >/dev/null; then \
|
||||||
|
echo "$(this-cvs-tag) as already been used; not tagging" 1>&2; \
|
||||||
|
exit 1; \
|
||||||
|
else :; fi
|
||||||
|
|
||||||
|
cvs-diff-check:
|
||||||
|
if $(CVS) diff >cvs-diffs; then \
|
||||||
|
rm cvs-diffs; \
|
||||||
|
else \
|
||||||
|
echo "Some files are locally modified:" 1>&2; \
|
||||||
|
cat cvs-diffs; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
cvs-check: cvs-diff-check cvs-tag-check
|
||||||
|
|
||||||
|
maintainer-distcheck: changelog-check
|
||||||
|
$(MAKE) distcheck
|
||||||
|
$(MAKE) my-distcheck
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## -------------- ##
|
||||||
|
## Making dists. ##
|
||||||
|
## -------------- ##
|
||||||
|
|
||||||
|
|
||||||
|
# Tag before making distribution. Also, don't make a distribution if
|
||||||
|
# checks fail. Also, make sure the NEWS file is up-to-date.
|
||||||
|
# FIXME: use dist-hook/my-dist like distcheck-hook/my-distcheck.
|
||||||
|
cvs-dist: local-check cvs-check maintainer-distcheck
|
||||||
|
$(CVS) update po
|
||||||
|
$(CVS) tag -c $(this-cvs-tag)
|
||||||
|
$(MAKE) dist
|
||||||
|
|
||||||
|
# Use this to make sure we don't run these programs when building
|
||||||
|
# from a virgin tgz file, below.
|
||||||
|
null_AM_MAKEFLAGS = \
|
||||||
|
ACLOCAL=false \
|
||||||
|
AUTOCONF=false \
|
||||||
|
AUTOM4TE=false \
|
||||||
|
AUTOMAKE=false \
|
||||||
|
AUTOHEADER=false \
|
||||||
|
MAKEINFO=false
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
t=./=test
|
||||||
|
my-distcheck: writable-files po-check
|
||||||
|
-rm -rf $(t)
|
||||||
|
mkdir $(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 \
|
||||||
|
&& $(MAKE) distclean
|
||||||
|
cd $(t) && mv $(distdir) $(distdir).old \
|
||||||
|
&& $(AMTAR) -zxf ../$(distdir).tar.gz
|
||||||
|
diff -ur $(t)/$(distdir).old $(t)/$(distdir)
|
||||||
|
-rm -rf $(t)
|
||||||
|
@echo "========================"; \
|
||||||
|
echo "$(distdir).tar.gz is ready for distribution"; \
|
||||||
|
echo "========================"
|
||||||
|
|
||||||
|
# This must be the same name on both hosts.
|
||||||
|
# Make it a symlink that points to the right place.
|
||||||
|
real_dir = fetish-ftp
|
||||||
|
|
||||||
|
url_dir_list = $(foreach x,$(hosts),ftp://$($(x)_host)/$($(x)_url_dir))
|
||||||
|
|
||||||
|
tgz-md5 = $(shell md5sum < $(my_distdir).tar.gz|sed 's/ -//')
|
||||||
|
tgz-sha1 = $(shell sha1sum < $(my_distdir).tar.gz|sed 's/ -//')
|
||||||
|
bz2-md5 = $(shell md5sum < $(my_distdir).tar.bz2|sed 's/ -//')
|
||||||
|
bz2-sha1 = $(shell sha1sum < $(my_distdir).tar.bz2|sed 's/ -//')
|
||||||
|
tgz-size = $(shell du --human $(my_distdir).tar.gz|sed 's/\([Mk]\).*/ \1B/')
|
||||||
|
bz2-size = $(shell du --human $(my_distdir).tar.bz2|sed 's/\([Mk]\).*/ \1B/')
|
||||||
|
xd-size = $(shell du --human $(xd-delta)|sed 's/\([Mk]\).*/ \1B/')
|
||||||
|
|
||||||
|
rel-check:
|
||||||
|
tarz=/tmp/rel-check-tarz-$$$$; \
|
||||||
|
md5_tmp=/tmp/rel-check-md5-$$$$; \
|
||||||
|
set -e; \
|
||||||
|
trap 'status=$$?; rm -f $$tarz $$md5_tmp; exit $$status' 0 1 2 3 15; \
|
||||||
|
$(WGET) -q --output-document=$$tarz $(url); \
|
||||||
|
echo "$(md5) -" > $$md5_tmp; \
|
||||||
|
md5sum -c $$md5_tmp < $$tarz
|
||||||
|
|
||||||
|
prev-tgz = $(PACKAGE)-$(PREV_VERSION).tar.gz
|
||||||
|
xd-delta = $(PACKAGE)-$(PREV_VERSION)-$(VERSION).xdelta
|
||||||
|
|
||||||
|
GZIP = gzip
|
||||||
|
BZIP2 = bzip2
|
||||||
|
$(my_distdir).tar.bz2: $(my_distdir).tar.gz
|
||||||
|
$(GZIP) -dc $< > $(my_distdir).tar
|
||||||
|
rm -f $@
|
||||||
|
$(BZIP2) -9 $(my_distdir).tar
|
||||||
|
|
||||||
|
rel-files = $(xd-delta) $(distdir).tar.bz2 $(distdir).tar.gz
|
||||||
|
announcement: NEWS ChangeLog $(rel-files)
|
||||||
|
@( \
|
||||||
|
echo Subject: $(my_distdir) released; \
|
||||||
|
echo; \
|
||||||
|
echo FIXME: put comments here; \
|
||||||
|
echo; \
|
||||||
|
for url in $(url_dir_list); do \
|
||||||
|
echo " $$url/$(my_distdir).tar.gz ($(tgz-size))"; \
|
||||||
|
echo " $$url/$(my_distdir).tar.bz2 ($(bz2-size))"; \
|
||||||
|
done; \
|
||||||
|
echo; \
|
||||||
|
echo And here are xdelta-style diffs; \
|
||||||
|
echo; \
|
||||||
|
for url in $(url_dir_list); do \
|
||||||
|
echo " $$url/$(xd-delta) ($(xd-size))"; \
|
||||||
|
done; \
|
||||||
|
echo; \
|
||||||
|
echo "Here are the MD5 and SHA1 signatures for the compressed tar files:"; \
|
||||||
|
echo; \
|
||||||
|
echo "$(tgz-md5) $(my_distdir).tar.gz"; \
|
||||||
|
echo "$(bz2-md5) $(my_distdir).tar.bz2"; \
|
||||||
|
echo "$(tgz-sha1) $(my_distdir).tar.gz"; \
|
||||||
|
echo "$(bz2-sha1) $(my_distdir).tar.bz2"; \
|
||||||
|
echo; \
|
||||||
|
echo NEWS:; \
|
||||||
|
sed -n "/$(THIS_VERSION_REGEXP)[]:]/,/$(PREV_VERSION_REGEXP)[]:]/p" NEWS \
|
||||||
|
| grep -v '^\['; \
|
||||||
|
echo; \
|
||||||
|
echo ChangeLog entries:; \
|
||||||
|
find . -name ChangeLog -maxdepth 2 \
|
||||||
|
| xargs $(CVS) diff -up -r$(prev-cvs-tag) -rHEAD \
|
||||||
|
| sed -n 's/^+//p' \
|
||||||
|
| perl -ne 'm!^\+\+ (\./)?! or print,next;' \
|
||||||
|
-e 'print "\n"."*"x70 ."\n"; s///; print; print "*"x70 ."\n"'; \
|
||||||
|
)
|
||||||
|
|
||||||
|
define emit-rsync-commands
|
||||||
|
echo =====================================
|
||||||
|
echo =====================================
|
||||||
|
echo 'for host in $(a_host) $(b_host); do \'
|
||||||
|
echo ' rsync -e ssh --pro -av $(xd-delta) $(my_distdir).tar.bz2 \'
|
||||||
|
echo ' $(my_distdir).tar.gz $$host:$(real_dir); done'
|
||||||
|
echo '# send the /tmp/announcement e-mail'
|
||||||
|
echo =====================================
|
||||||
|
echo =====================================
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(xd-delta): $(release_archive_dir)/$(prev-tgz) $(distdir).tar.gz
|
||||||
|
xdelta delta -9 $^ $@ || :
|
||||||
|
|
||||||
|
alpha:
|
||||||
|
$(MAKE) cvs-dist
|
||||||
|
$(MAKE) $(xd-delta)
|
||||||
|
$(MAKE) -s announcement > /tmp/announce-$(my_distdir)
|
||||||
|
ln $(rel-files) $(release_archive_dir)
|
||||||
|
chmod a-w $(rel-files)
|
||||||
|
echo $(VERSION) > $(prev_version_file)
|
||||||
|
$(CVS) ci -m. $(prev_version_file)
|
||||||
|
@$(emit-rsync-commands)
|
||||||
@@ -1,11 +1,188 @@
|
|||||||
Bison News
|
Bison News
|
||||||
----------
|
----------
|
||||||
|
|
||||||
Change in version 1.25:
|
Changes in version 1.49a:
|
||||||
|
|
||||||
|
* Items overflow
|
||||||
|
Bison no longer dumps core when there are too many items, it just
|
||||||
|
dies.
|
||||||
|
|
||||||
|
* Token end-of-file
|
||||||
|
The token end of file may be specified by the user, in which case,
|
||||||
|
the user symbol is used in the reports, the graphs, and the verbose
|
||||||
|
error messages instead of `$', which remains being the defaults.
|
||||||
|
For instance
|
||||||
|
%token YYEOF 0
|
||||||
|
or
|
||||||
|
%token YYEOF 0 "end of file"
|
||||||
|
|
||||||
|
Changes in version 1.31, 2002-01-14:
|
||||||
|
|
||||||
|
* Many Bug Fixes
|
||||||
|
|
||||||
|
* GNU Gettext and %expect
|
||||||
|
GNU Gettext asserts 10 s/r conflicts, but there are 7. Now that
|
||||||
|
Bison dies on incorrect %expectations, we fear there will be
|
||||||
|
too many bug reports for Gettext, so _for the time being_, %expect
|
||||||
|
does not trigger an error when the input file is named `plural.y'.
|
||||||
|
|
||||||
|
* Use of alloca in parsers
|
||||||
|
If YYSTACK_USE_ALLOCA is defined to 0, then the parsers will use
|
||||||
|
malloc exclusively. Since 1.29, but was not NEWS'ed.
|
||||||
|
|
||||||
|
alloca is used only when compiled with GCC, to avoid portability
|
||||||
|
problems as on AIX.
|
||||||
|
|
||||||
|
* When the generated parser lacks debugging code, YYDEBUG is now 0
|
||||||
|
(as POSIX requires) instead of being undefined.
|
||||||
|
|
||||||
|
* User Actions
|
||||||
|
Bison has always permitted actions such as { $$ = $1 }: it adds the
|
||||||
|
ending semicolon. Now if in Yacc compatibility mode, the semicolon
|
||||||
|
is no longer output: one has to write { $$ = $1; }.
|
||||||
|
|
||||||
|
* Better C++ compliance
|
||||||
|
The output parsers try to respect C++ namespaces.
|
||||||
|
|
||||||
|
* Reduced Grammars
|
||||||
|
Fixed bugs when reporting useless nonterminals.
|
||||||
|
|
||||||
|
* 64 bit hosts
|
||||||
|
The parsers work properly on 64 bit hosts.
|
||||||
|
|
||||||
|
* Error messages
|
||||||
|
Some calls to strerror resulted in scrambled or missing error messages.
|
||||||
|
|
||||||
|
* %expect
|
||||||
|
When the number of shift/reduce conflicts is correct, don't issue
|
||||||
|
any warning.
|
||||||
|
|
||||||
|
* The verbose report includes the rule line numbers.
|
||||||
|
|
||||||
|
* Rule line numbers are fixed in traces.
|
||||||
|
|
||||||
|
* Swedish translation
|
||||||
|
|
||||||
|
* Parse errors
|
||||||
|
Verbose parse error messages from the parsers are better looking.
|
||||||
|
Before: parse error: unexpected `'/'', expecting `"number"' or `'-'' or `'(''
|
||||||
|
Now: parse error: unexpected '/', expecting "number" or '-' or '('
|
||||||
|
|
||||||
|
* Fixed parser memory leaks.
|
||||||
|
When the generated parser was using malloc to extend its stacks, the
|
||||||
|
previous allocations were not freed.
|
||||||
|
|
||||||
|
* Fixed verbose output file.
|
||||||
|
Some newlines were missing.
|
||||||
|
Some conflicts in state descriptions were missing.
|
||||||
|
|
||||||
|
* Fixed conflict report.
|
||||||
|
Option -v was needed to get the result.
|
||||||
|
|
||||||
|
* %expect
|
||||||
|
Was not used.
|
||||||
|
Mismatches are errors, not warnings.
|
||||||
|
|
||||||
|
* Fixed incorrect processing of some invalid input.
|
||||||
|
|
||||||
|
* Fixed CPP guards: 9foo.h uses BISON_9FOO_H instead of 9FOO_H.
|
||||||
|
|
||||||
|
* Fixed some typos in the documentation.
|
||||||
|
|
||||||
|
* %token MY_EOF 0 is supported.
|
||||||
|
Before, MY_EOF was silently renumbered as 257.
|
||||||
|
|
||||||
|
* doc/refcard.tex is updated.
|
||||||
|
|
||||||
|
* %output, %file-prefix, %name-prefix.
|
||||||
|
New.
|
||||||
|
|
||||||
|
* --output
|
||||||
|
New, aliasing `--output-file'.
|
||||||
|
|
||||||
|
Changes in version 1.30:
|
||||||
|
|
||||||
|
* `--defines' and `--graph' have now an optionnal argument which is the
|
||||||
|
output file name. `-d' and `-g' do not change, they do not take any
|
||||||
|
argument.
|
||||||
|
|
||||||
|
* `%source_extension' and `%header_extension' are removed, failed
|
||||||
|
experiment.
|
||||||
|
|
||||||
|
* Portability fixes.
|
||||||
|
|
||||||
|
Changes in version 1.29, 2001-09-07:
|
||||||
|
|
||||||
|
* The output file does not define const, as this caused problems when used
|
||||||
|
with common autoconfiguration schemes. If you still use ancient compilers
|
||||||
|
that lack const, compile with the equivalent of the C compiler option
|
||||||
|
`-Dconst='. autoconf's AC_C_CONST macro provides one way to do this.
|
||||||
|
|
||||||
|
* Added `-g' and `--graph'.
|
||||||
|
|
||||||
|
* The Bison manual is now distributed under the terms of the GNU FDL.
|
||||||
|
|
||||||
|
* The input and the output files has automatically a similar extension.
|
||||||
|
|
||||||
|
* Russian translation added.
|
||||||
|
|
||||||
|
* NLS support updated; should hopefully be less troublesome.
|
||||||
|
|
||||||
|
* Added the old Bison reference card.
|
||||||
|
|
||||||
|
* Added `--locations' and `%locations'.
|
||||||
|
|
||||||
|
* Added `-S' and `--skeleton'.
|
||||||
|
|
||||||
|
* `%raw', `-r', `--raw' is disabled.
|
||||||
|
|
||||||
|
* Special characters are escaped when output. This solves the problems
|
||||||
|
of the #line lines with path names including backslashes.
|
||||||
|
|
||||||
|
* New directives.
|
||||||
|
`%yacc', `%fixed_output_files', `%defines', `%no_parser', `%verbose',
|
||||||
|
`%debug', `%source_extension' and `%header_extension'.
|
||||||
|
|
||||||
|
* @$
|
||||||
|
Automatic location tracking.
|
||||||
|
|
||||||
|
Changes in version 1.28, 1999-07-06:
|
||||||
|
|
||||||
|
* Should compile better now with K&R compilers.
|
||||||
|
|
||||||
|
* Added NLS.
|
||||||
|
|
||||||
|
* Fixed a problem with escaping the double quote character.
|
||||||
|
|
||||||
|
* There is now a FAQ.
|
||||||
|
|
||||||
|
Changes in version 1.27:
|
||||||
|
|
||||||
|
* The make rule which prevented bison.simple from being created on
|
||||||
|
some systems has been fixed.
|
||||||
|
|
||||||
|
Changes in version 1.26:
|
||||||
|
|
||||||
|
* Bison now uses automake.
|
||||||
|
|
||||||
|
* New mailing lists: <[email protected]> and <[email protected]>.
|
||||||
|
|
||||||
|
* Token numbers now start at 257 as previously documented, not 258.
|
||||||
|
|
||||||
|
* Bison honors the TMPDIR environment variable.
|
||||||
|
|
||||||
|
* A couple of buffer overruns have been fixed.
|
||||||
|
|
||||||
|
* Problems when closing files should now be reported.
|
||||||
|
|
||||||
|
* Generated parsers should now work even on operating systems which do
|
||||||
|
not provide alloca().
|
||||||
|
|
||||||
|
Changes in version 1.25, 1995-10-16:
|
||||||
|
|
||||||
* Errors in the input grammar are not fatal; Bison keeps reading
|
* Errors in the input grammar are not fatal; Bison keeps reading
|
||||||
the grammar file, and reports all the errors found in it.
|
the grammar file, and reports all the errors found in it.
|
||||||
|
|
||||||
* Tokens can now be specified as multiple-character strings: for
|
* Tokens can now be specified as multiple-character strings: for
|
||||||
example, you could use "<=" for a token which looks like <=, instead
|
example, you could use "<=" for a token which looks like <=, instead
|
||||||
of chosing a name like LESSEQ.
|
of chosing a name like LESSEQ.
|
||||||
@@ -42,3 +219,7 @@ Changes in version 1.22:
|
|||||||
Changes in version 1.20:
|
Changes in version 1.20:
|
||||||
|
|
||||||
Output file does not redefine const for C++.
|
Output file does not redefine const for C++.
|
||||||
|
|
||||||
|
Local Variables:
|
||||||
|
mode: outline
|
||||||
|
End:
|
||||||
|
|||||||
+1500
File diff suppressed because it is too large
Load Diff
-20
@@ -1,20 +0,0 @@
|
|||||||
# List of files which contain translatable strings.
|
|
||||||
# Copyright (C) 1996 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# Package source files
|
|
||||||
allocate.c
|
|
||||||
closure.c
|
|
||||||
conflicts.c
|
|
||||||
derives.c
|
|
||||||
getargs.c
|
|
||||||
lalr.c
|
|
||||||
lex.c
|
|
||||||
main.c
|
|
||||||
nullable.c
|
|
||||||
output.c
|
|
||||||
print.c
|
|
||||||
reader.c
|
|
||||||
reduce.c
|
|
||||||
|
|
||||||
# Common library files
|
|
||||||
getopt.c
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
This directory contains the Bison parser generator.
|
This directory contains the Bison parser generator.
|
||||||
|
|
||||||
See the file INSTALL for compilation and installation instructions.
|
See the file INSTALL for compilation and installation instructions.
|
||||||
|
See the file doc/FAQ for frequently asked questions.
|
||||||
|
|
||||||
It was once true that, when installing Bison on Sequent (or Pyramid?)
|
It was once true that, when installing Bison on Sequent (or Pyramid?)
|
||||||
systems, you had to be in the Berkeley universe. This may no longer
|
systems, you had to be in the Berkeley universe. This may no longer
|
||||||
@@ -10,6 +11,14 @@ 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
|
hand. Remember to do `SET COMMAND BISON' to install the data in
|
||||||
`BISON.CLD'.
|
`BISON.CLD'.
|
||||||
|
|
||||||
Send bug reports to [email protected]. Please include the
|
VMS and MS-DOS builds are probably broken right now. If you are able
|
||||||
version number from `bison --version', and a complete, self-contained
|
to build Bison on either platform and you need to make changes to do
|
||||||
test case in each bug report.
|
so, please submit those changes as a bug report.
|
||||||
|
|
||||||
|
Send bug reports to [email protected]. 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 which the documentation does
|
||||||
|
not answer, send mail to [email protected].
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
-*- text -*-
|
||||||
|
|
||||||
|
This is a test release of this package. Using it more or less
|
||||||
|
implicitly signs you up to help us find whatever problems you report.
|
||||||
|
|
||||||
|
The documentation still needs more work. Suggestions welcome.
|
||||||
|
Patches even more welcome.
|
||||||
|
|
||||||
|
Please send comments and problem reports about this test release to
|
||||||
|
[email protected]. This program will get better only if you report
|
||||||
|
the problems you encounter.
|
||||||
|
|
||||||
|
Please, *do not package this*, *do not distribute it* widely, it is
|
||||||
|
not ready for full scale use. Because it is not fully functional, if
|
||||||
|
you distribute this package, we will be buried under bug reports from
|
||||||
|
panicked users. We don't have time to spend on this, and nor do the
|
||||||
|
users.
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
Bison was originally written by Robert Corbett. It would not be what
|
||||||
|
it is today without the invaluable help of these people:
|
||||||
|
|
||||||
|
Airy Andre [email protected]
|
||||||
|
Akim Demaille [email protected]
|
||||||
|
Albert Chin-A-Young [email protected]
|
||||||
|
Alexander Belopolsky [email protected]
|
||||||
|
Arnold Robbins [email protected]
|
||||||
|
Cris van Pelt [email protected]
|
||||||
|
Daniel Hagerty [email protected]
|
||||||
|
David J. MacKenzie [email protected]
|
||||||
|
Dick Streefland [email protected]
|
||||||
|
Enrico Scholz [email protected]
|
||||||
|
Evgeny Stambulchik [email protected]
|
||||||
|
Fabrice Bauzac [email protected]
|
||||||
|
H. Merijn Brand [email protected]
|
||||||
|
Hans Aberg [email protected]
|
||||||
|
Jesse Thilo [email protected]
|
||||||
|
Jim Meyering [email protected]
|
||||||
|
Juan Manuel Guerrero [email protected]
|
||||||
|
Kees Zeelenberg [email protected]
|
||||||
|
Keith Browne [email protected]
|
||||||
|
Laurent Mascherpa [email protected]
|
||||||
|
Marc Autret [email protected]
|
||||||
|
Mike Castle [email protected]
|
||||||
|
Neil Booth [email protected]
|
||||||
|
Nelson H. F. Beebe [email protected]
|
||||||
|
Noah Friedman [email protected]
|
||||||
|
Pascal Bart [email protected]
|
||||||
|
Paul Eggert [email protected]
|
||||||
|
Per Allansson [email protected]
|
||||||
|
Peter Hámorský [email protected]
|
||||||
|
Piotr Gackiewicz [email protected]
|
||||||
|
Richard Stallman [email protected]
|
||||||
|
Robert Anisko [email protected]
|
||||||
|
Shura [email protected]
|
||||||
|
Tom Lane [email protected]
|
||||||
|
Tom Tromey [email protected]
|
||||||
|
Wayne Green [email protected]
|
||||||
|
Wolfram Wagner [email protected]
|
||||||
|
Wwp [email protected]
|
||||||
|
|
||||||
|
Many people are not named here because we lost track of them. We
|
||||||
|
thank them! Please, help us keeping this list up to date.
|
||||||
|
|
||||||
|
Local Variables:
|
||||||
|
mode: text
|
||||||
|
End:
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
-*- outline -*-
|
||||||
|
|
||||||
|
* NEWS
|
||||||
|
Sort from 1.31 NEWS.
|
||||||
|
|
||||||
|
* Prologue
|
||||||
|
The %union is declared after the user C declarations. It can be
|
||||||
|
a problem if YYSTYPE is declared after the user part. []
|
||||||
|
|
||||||
|
Actually, the real problem seems that the %union ought to be output
|
||||||
|
where it was defined. For instance, in gettext/intl/plural.y, we
|
||||||
|
have:
|
||||||
|
|
||||||
|
%{
|
||||||
|
...
|
||||||
|
#include "gettextP.h"
|
||||||
|
...
|
||||||
|
%}
|
||||||
|
|
||||||
|
%union {
|
||||||
|
unsigned long int num;
|
||||||
|
enum operator op;
|
||||||
|
struct expression *exp;
|
||||||
|
}
|
||||||
|
|
||||||
|
%{
|
||||||
|
...
|
||||||
|
static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
|
||||||
|
...
|
||||||
|
%}
|
||||||
|
|
||||||
|
Where the first part defines struct expression, the second uses it to
|
||||||
|
define YYSTYPE, and the last uses YYSTYPE. Only this order is valid.
|
||||||
|
|
||||||
|
* --graph
|
||||||
|
Show reductions. []
|
||||||
|
|
||||||
|
* Broken options ?
|
||||||
|
** %no-lines [ok]
|
||||||
|
** %no-parser []
|
||||||
|
** %pure-parser []
|
||||||
|
** %semantic-parser []
|
||||||
|
** %token-table []
|
||||||
|
** Options which could use parse_dquoted_param ().
|
||||||
|
Maybe transfered in lex.c.
|
||||||
|
*** %skeleton [ok]
|
||||||
|
*** %output []
|
||||||
|
*** %file-prefix []
|
||||||
|
*** %name-prefix []
|
||||||
|
|
||||||
|
** Skeleton strategy. []
|
||||||
|
Must we keep %no-parser?
|
||||||
|
%token-table?
|
||||||
|
*** New skeletons. []
|
||||||
|
|
||||||
|
* src/print_graph.c
|
||||||
|
Find the best graph parameters. []
|
||||||
|
|
||||||
|
* doc/bison.texinfo
|
||||||
|
** Update
|
||||||
|
informations about ERROR_VERBOSE. []
|
||||||
|
** Add explainations about
|
||||||
|
skeleton muscles. []
|
||||||
|
%skeleton. []
|
||||||
|
|
||||||
|
* testsuite
|
||||||
|
** tests/pure-parser.at []
|
||||||
|
New tests.
|
||||||
-760
@@ -1,760 +0,0 @@
|
|||||||
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
|
|
||||||
#line 3 "bison.simple"
|
|
||||||
/* This file comes from bison-@bison_version@. */
|
|
||||||
|
|
||||||
/* Skeleton output parser for bison,
|
|
||||||
Copyright (C) 1984, 1989, 1990 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
|
|
||||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
|
||||||
|
|
||||||
/* As a special exception, when this file is copied by Bison into a
|
|
||||||
Bison output file, you may use that output file without restriction.
|
|
||||||
This special exception was added by the Free Software Foundation
|
|
||||||
in version 1.24 of Bison. */
|
|
||||||
|
|
||||||
/* This is the parser code that is written into each bison parser
|
|
||||||
when the %semantic_parser declaration is not specified in the grammar.
|
|
||||||
It was written by Richard Stallman by simplifying the hairy parser
|
|
||||||
used when %semantic_parser is specified. */
|
|
||||||
|
|
||||||
#ifndef YYSTACK_USE_ALLOCA
|
|
||||||
#ifdef alloca
|
|
||||||
#define YYSTACK_USE_ALLOCA
|
|
||||||
#else /* alloca not defined */
|
|
||||||
#ifdef __GNUC__
|
|
||||||
#define YYSTACK_USE_ALLOCA
|
|
||||||
#define alloca __builtin_alloca
|
|
||||||
#else /* not GNU C. */
|
|
||||||
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
|
|
||||||
#define YYSTACK_USE_ALLOCA
|
|
||||||
#include <alloca.h>
|
|
||||||
#else /* not sparc */
|
|
||||||
/* We think this test detects Watcom and Microsoft C. */
|
|
||||||
/* This used to test MSDOS, but that is a bad idea
|
|
||||||
since that symbol is in the user namespace. */
|
|
||||||
#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
|
|
||||||
#if 0 /* No need for malloc.h, which pollutes the namespace;
|
|
||||||
instead, just don't use alloca. */
|
|
||||||
#include <malloc.h>
|
|
||||||
#endif
|
|
||||||
#else /* not MSDOS, or __TURBOC__ */
|
|
||||||
#if defined(_AIX)
|
|
||||||
/* I don't know what this was needed for, but it pollutes the namespace.
|
|
||||||
So I turned it off. rms, 2 May 1997. */
|
|
||||||
/* #include <malloc.h> */
|
|
||||||
#pragma alloca
|
|
||||||
#define YYSTACK_USE_ALLOCA
|
|
||||||
#else /* not MSDOS, or __TURBOC__, or _AIX */
|
|
||||||
#if 0
|
|
||||||
#ifdef __hpux /* [email protected] says this works for HPUX 9.05 and up,
|
|
||||||
and on HPUX 10. Eventually we can turn this on. */
|
|
||||||
#define YYSTACK_USE_ALLOCA
|
|
||||||
#define alloca __builtin_alloca
|
|
||||||
#endif /* __hpux */
|
|
||||||
#endif
|
|
||||||
#endif /* not _AIX */
|
|
||||||
#endif /* not MSDOS, or __TURBOC__ */
|
|
||||||
#endif /* not sparc */
|
|
||||||
#endif /* not GNU C */
|
|
||||||
#endif /* alloca not defined */
|
|
||||||
#endif /* YYSTACK_USE_ALLOCA not defined */
|
|
||||||
|
|
||||||
#ifdef YYSTACK_USE_ALLOCA
|
|
||||||
#define YYSTACK_ALLOC alloca
|
|
||||||
#else
|
|
||||||
#define YYSTACK_ALLOC malloc
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Note: there must be only one dollar sign in this file.
|
|
||||||
It is replaced by the list of actions, each action
|
|
||||||
as one case of the switch. */
|
|
||||||
|
|
||||||
#define yyerrok (yyerrstatus = 0)
|
|
||||||
#define yyclearin (yychar = YYEMPTY)
|
|
||||||
#define YYEMPTY -2
|
|
||||||
#define YYEOF 0
|
|
||||||
#define YYACCEPT goto yyacceptlab
|
|
||||||
#define YYABORT goto yyabortlab
|
|
||||||
#define YYERROR goto yyerrlab1
|
|
||||||
/* Like YYERROR except do call yyerror.
|
|
||||||
This remains here temporarily to ease the
|
|
||||||
transition to the new meaning of YYERROR, for GCC.
|
|
||||||
Once GCC version 2 has supplanted version 1, this can go. */
|
|
||||||
#define YYFAIL goto yyerrlab
|
|
||||||
#define YYRECOVERING() (!!yyerrstatus)
|
|
||||||
#define YYBACKUP(token, value) \
|
|
||||||
do \
|
|
||||||
if (yychar == YYEMPTY && yylen == 1) \
|
|
||||||
{ yychar = (token), yylval = (value); \
|
|
||||||
yychar1 = YYTRANSLATE (yychar); \
|
|
||||||
YYPOPSTACK; \
|
|
||||||
goto yybackup; \
|
|
||||||
} \
|
|
||||||
else \
|
|
||||||
{ yyerror ("syntax error: cannot back up"); YYERROR; } \
|
|
||||||
while (0)
|
|
||||||
|
|
||||||
#define YYTERROR 1
|
|
||||||
#define YYERRCODE 256
|
|
||||||
|
|
||||||
#ifndef YYPURE
|
|
||||||
#define YYLEX yylex()
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef YYPURE
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
#ifdef YYLEX_PARAM
|
|
||||||
#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
|
|
||||||
#else
|
|
||||||
#define YYLEX yylex(&yylval, &yylloc)
|
|
||||||
#endif
|
|
||||||
#else /* not YYLSP_NEEDED */
|
|
||||||
#ifdef YYLEX_PARAM
|
|
||||||
#define YYLEX yylex(&yylval, YYLEX_PARAM)
|
|
||||||
#else
|
|
||||||
#define YYLEX yylex(&yylval)
|
|
||||||
#endif
|
|
||||||
#endif /* not YYLSP_NEEDED */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* If nonreentrant, generate the variables here */
|
|
||||||
|
|
||||||
#ifndef YYPURE
|
|
||||||
|
|
||||||
int yychar; /* the lookahead symbol */
|
|
||||||
YYSTYPE yylval; /* the semantic value of the */
|
|
||||||
/* lookahead symbol */
|
|
||||||
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
YYLTYPE yylloc; /* location data for the lookahead */
|
|
||||||
/* symbol */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int yynerrs; /* number of parse errors so far */
|
|
||||||
#endif /* not YYPURE */
|
|
||||||
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
int yydebug; /* nonzero means print parse trace */
|
|
||||||
/* Since this is uninitialized, it does not stop multiple parsers
|
|
||||||
from coexisting. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* YYINITDEPTH indicates the initial size of the parser's stacks */
|
|
||||||
|
|
||||||
#ifndef YYINITDEPTH
|
|
||||||
#define YYINITDEPTH 200
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* YYMAXDEPTH is the maximum size the stacks can grow to
|
|
||||||
(effective only if the built-in stack extension method is used). */
|
|
||||||
|
|
||||||
#if YYMAXDEPTH == 0
|
|
||||||
#undef YYMAXDEPTH
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef YYMAXDEPTH
|
|
||||||
#define YYMAXDEPTH 10000
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define __yy_memcpy. Note that the size argument
|
|
||||||
should be passed with type unsigned int, because that is what the non-GCC
|
|
||||||
definitions require. With GCC, __builtin_memcpy takes an arg
|
|
||||||
of type size_t, but it can handle unsigned int. */
|
|
||||||
|
|
||||||
#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
|
|
||||||
#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
|
|
||||||
#else /* not GNU C or C++ */
|
|
||||||
#ifndef __cplusplus
|
|
||||||
|
|
||||||
/* This is the most reliable way to avoid incompatibilities
|
|
||||||
in available built-in functions on various systems. */
|
|
||||||
static void
|
|
||||||
__yy_memcpy (to, from, count)
|
|
||||||
char *to;
|
|
||||||
char *from;
|
|
||||||
unsigned int count;
|
|
||||||
{
|
|
||||||
register char *f = from;
|
|
||||||
register char *t = to;
|
|
||||||
register int i = count;
|
|
||||||
|
|
||||||
while (i-- > 0)
|
|
||||||
*t++ = *f++;
|
|
||||||
}
|
|
||||||
|
|
||||||
#else /* __cplusplus */
|
|
||||||
|
|
||||||
/* This is the most reliable way to avoid incompatibilities
|
|
||||||
in available built-in functions on various systems. */
|
|
||||||
static void
|
|
||||||
__yy_memcpy (char *to, char *from, unsigned int count)
|
|
||||||
{
|
|
||||||
register char *t = to;
|
|
||||||
register char *f = from;
|
|
||||||
register int i = count;
|
|
||||||
|
|
||||||
while (i-- > 0)
|
|
||||||
*t++ = *f++;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#line 216 "bison.simple"
|
|
||||||
|
|
||||||
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
|
|
||||||
into yyparse. The argument should have type void *.
|
|
||||||
It should actually point to an object.
|
|
||||||
Grammar actions can access the variable by casting it
|
|
||||||
to the proper pointer type. */
|
|
||||||
|
|
||||||
#ifdef YYPARSE_PARAM
|
|
||||||
#ifdef __cplusplus
|
|
||||||
#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
|
|
||||||
#define YYPARSE_PARAM_DECL
|
|
||||||
#else /* not __cplusplus */
|
|
||||||
#define YYPARSE_PARAM_ARG YYPARSE_PARAM
|
|
||||||
#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
|
|
||||||
#endif /* not __cplusplus */
|
|
||||||
#else /* not YYPARSE_PARAM */
|
|
||||||
#define YYPARSE_PARAM_ARG
|
|
||||||
#define YYPARSE_PARAM_DECL
|
|
||||||
#endif /* not YYPARSE_PARAM */
|
|
||||||
|
|
||||||
/* Prevent warning if -Wstrict-prototypes. */
|
|
||||||
#ifdef __GNUC__
|
|
||||||
#ifdef YYPARSE_PARAM
|
|
||||||
int yyparse (void *);
|
|
||||||
#else
|
|
||||||
int yyparse (void);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
|
||||||
yyparse(YYPARSE_PARAM_ARG)
|
|
||||||
YYPARSE_PARAM_DECL
|
|
||||||
{
|
|
||||||
register int yystate;
|
|
||||||
register int yyn;
|
|
||||||
register short *yyssp;
|
|
||||||
register YYSTYPE *yyvsp;
|
|
||||||
int yyerrstatus; /* number of tokens to shift before error messages enabled */
|
|
||||||
int yychar1 = 0; /* lookahead token as an internal (translated) token number */
|
|
||||||
|
|
||||||
short yyssa[YYINITDEPTH]; /* the state stack */
|
|
||||||
YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
|
|
||||||
|
|
||||||
short *yyss = yyssa; /* refer to the stacks thru separate pointers */
|
|
||||||
YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
|
|
||||||
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
|
|
||||||
YYLTYPE *yyls = yylsa;
|
|
||||||
YYLTYPE *yylsp;
|
|
||||||
|
|
||||||
#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
|
|
||||||
#else
|
|
||||||
#define YYPOPSTACK (yyvsp--, yyssp--)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int yystacksize = YYINITDEPTH;
|
|
||||||
int yyfree_stacks = 0;
|
|
||||||
|
|
||||||
#ifdef YYPURE
|
|
||||||
int yychar;
|
|
||||||
YYSTYPE yylval;
|
|
||||||
int yynerrs;
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
YYLTYPE yylloc;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
YYSTYPE yyval; /* the variable used to return */
|
|
||||||
/* semantic values from the action */
|
|
||||||
/* routines */
|
|
||||||
|
|
||||||
int yylen;
|
|
||||||
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
if (yydebug)
|
|
||||||
fprintf(stderr, "Starting parse\n");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
yystate = 0;
|
|
||||||
yyerrstatus = 0;
|
|
||||||
yynerrs = 0;
|
|
||||||
yychar = YYEMPTY; /* Cause a token to be read. */
|
|
||||||
|
|
||||||
/* Initialize stack pointers.
|
|
||||||
Waste one element of value and location stack
|
|
||||||
so that they stay on the same level as the state stack.
|
|
||||||
The wasted elements are never initialized. */
|
|
||||||
|
|
||||||
yyssp = yyss - 1;
|
|
||||||
yyvsp = yyvs;
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
yylsp = yyls;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Push a new state, which is found in yystate . */
|
|
||||||
/* In all cases, when you get here, the value and location stacks
|
|
||||||
have just been pushed. so pushing a state here evens the stacks. */
|
|
||||||
yynewstate:
|
|
||||||
|
|
||||||
*++yyssp = yystate;
|
|
||||||
|
|
||||||
if (yyssp >= yyss + yystacksize - 1)
|
|
||||||
{
|
|
||||||
/* Give user a chance to reallocate the stack */
|
|
||||||
/* Use copies of these so that the &'s don't force the real ones into memory. */
|
|
||||||
YYSTYPE *yyvs1 = yyvs;
|
|
||||||
short *yyss1 = yyss;
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
YYLTYPE *yyls1 = yyls;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Get the current used size of the three stacks, in elements. */
|
|
||||||
int size = yyssp - yyss + 1;
|
|
||||||
|
|
||||||
#ifdef yyoverflow
|
|
||||||
/* Each stack pointer address is followed by the size of
|
|
||||||
the data in use in that stack, in bytes. */
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
/* 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, size * sizeof (*yyssp),
|
|
||||||
&yyvs1, size * sizeof (*yyvsp),
|
|
||||||
&yyls1, size * sizeof (*yylsp),
|
|
||||||
&yystacksize);
|
|
||||||
#else
|
|
||||||
yyoverflow("parser stack overflow",
|
|
||||||
&yyss1, size * sizeof (*yyssp),
|
|
||||||
&yyvs1, size * sizeof (*yyvsp),
|
|
||||||
&yystacksize);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
yyss = yyss1; yyvs = yyvs1;
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
yyls = yyls1;
|
|
||||||
#endif
|
|
||||||
#else /* no yyoverflow */
|
|
||||||
/* Extend the stack our own way. */
|
|
||||||
if (yystacksize >= YYMAXDEPTH)
|
|
||||||
{
|
|
||||||
yyerror("parser stack overflow");
|
|
||||||
if (yyfree_stacks)
|
|
||||||
{
|
|
||||||
free (yyss);
|
|
||||||
free (yyvs);
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
free (yyls);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
return 2;
|
|
||||||
}
|
|
||||||
yystacksize *= 2;
|
|
||||||
if (yystacksize > YYMAXDEPTH)
|
|
||||||
yystacksize = YYMAXDEPTH;
|
|
||||||
#ifndef YYSTACK_USE_ALLOCA
|
|
||||||
yyfree_stacks = 1;
|
|
||||||
#endif
|
|
||||||
yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
|
|
||||||
__yy_memcpy ((char *)yyss, (char *)yyss1,
|
|
||||||
size * (unsigned int) sizeof (*yyssp));
|
|
||||||
yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
|
|
||||||
__yy_memcpy ((char *)yyvs, (char *)yyvs1,
|
|
||||||
size * (unsigned int) sizeof (*yyvsp));
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
|
|
||||||
__yy_memcpy ((char *)yyls, (char *)yyls1,
|
|
||||||
size * (unsigned int) sizeof (*yylsp));
|
|
||||||
#endif
|
|
||||||
#endif /* no yyoverflow */
|
|
||||||
|
|
||||||
yyssp = yyss + size - 1;
|
|
||||||
yyvsp = yyvs + size - 1;
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
yylsp = yyls + size - 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
if (yydebug)
|
|
||||||
fprintf(stderr, "Stack size increased to %d\n", yystacksize);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (yyssp >= yyss + yystacksize - 1)
|
|
||||||
YYABORT;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
if (yydebug)
|
|
||||||
fprintf(stderr, "Entering state %d\n", yystate);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
goto yybackup;
|
|
||||||
yybackup:
|
|
||||||
|
|
||||||
/* Do appropriate processing given the current state. */
|
|
||||||
/* Read a lookahead token if we need one and don't already have one. */
|
|
||||||
/* yyresume: */
|
|
||||||
|
|
||||||
/* First try to decide what to do without reference to lookahead token. */
|
|
||||||
|
|
||||||
yyn = yypact[yystate];
|
|
||||||
if (yyn == YYFLAG)
|
|
||||||
goto yydefault;
|
|
||||||
|
|
||||||
/* Not known => get a lookahead token if don't already have one. */
|
|
||||||
|
|
||||||
/* yychar is either YYEMPTY or YYEOF
|
|
||||||
or a valid token in external form. */
|
|
||||||
|
|
||||||
if (yychar == YYEMPTY)
|
|
||||||
{
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
if (yydebug)
|
|
||||||
fprintf(stderr, "Reading a token: ");
|
|
||||||
#endif
|
|
||||||
yychar = YYLEX;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Convert token to internal form (in yychar1) for indexing tables with */
|
|
||||||
|
|
||||||
if (yychar <= 0) /* This means end of input. */
|
|
||||||
{
|
|
||||||
yychar1 = 0;
|
|
||||||
yychar = YYEOF; /* Don't call YYLEX any more */
|
|
||||||
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
if (yydebug)
|
|
||||||
fprintf(stderr, "Now at end of input.\n");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
yychar1 = YYTRANSLATE(yychar);
|
|
||||||
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
if (yydebug)
|
|
||||||
{
|
|
||||||
fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
|
|
||||||
/* Give the individual parser a way to print the precise meaning
|
|
||||||
of a token, for further debugging info. */
|
|
||||||
#ifdef YYPRINT
|
|
||||||
YYPRINT (stderr, yychar, yylval);
|
|
||||||
#endif
|
|
||||||
fprintf (stderr, ")\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
yyn += yychar1;
|
|
||||||
if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
|
|
||||||
goto yydefault;
|
|
||||||
|
|
||||||
yyn = yytable[yyn];
|
|
||||||
|
|
||||||
/* yyn is what to do for this token type in this state.
|
|
||||||
Negative => reduce, -yyn is rule number.
|
|
||||||
Positive => shift, yyn is new state.
|
|
||||||
New state is final state => don't bother to shift,
|
|
||||||
just return success.
|
|
||||||
0, or most negative number => error. */
|
|
||||||
|
|
||||||
if (yyn < 0)
|
|
||||||
{
|
|
||||||
if (yyn == YYFLAG)
|
|
||||||
goto yyerrlab;
|
|
||||||
yyn = -yyn;
|
|
||||||
goto yyreduce;
|
|
||||||
}
|
|
||||||
else if (yyn == 0)
|
|
||||||
goto yyerrlab;
|
|
||||||
|
|
||||||
if (yyn == YYFINAL)
|
|
||||||
YYACCEPT;
|
|
||||||
|
|
||||||
/* Shift the lookahead token. */
|
|
||||||
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
if (yydebug)
|
|
||||||
fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Discard the token being shifted unless it is eof. */
|
|
||||||
if (yychar != YYEOF)
|
|
||||||
yychar = YYEMPTY;
|
|
||||||
|
|
||||||
*++yyvsp = yylval;
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
*++yylsp = yylloc;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* count tokens shifted since error; after three, turn off error status. */
|
|
||||||
if (yyerrstatus) yyerrstatus--;
|
|
||||||
|
|
||||||
yystate = yyn;
|
|
||||||
goto yynewstate;
|
|
||||||
|
|
||||||
/* Do the default action for the current state. */
|
|
||||||
yydefault:
|
|
||||||
|
|
||||||
yyn = yydefact[yystate];
|
|
||||||
if (yyn == 0)
|
|
||||||
goto yyerrlab;
|
|
||||||
|
|
||||||
/* Do a reduction. yyn is the number of a rule to reduce with. */
|
|
||||||
yyreduce:
|
|
||||||
yylen = yyr2[yyn];
|
|
||||||
if (yylen > 0)
|
|
||||||
yyval = yyvsp[1-yylen]; /* implement default value of the action */
|
|
||||||
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
if (yydebug)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
fprintf (stderr, "Reducing via rule %d (line %d), ",
|
|
||||||
yyn, yyrline[yyn]);
|
|
||||||
|
|
||||||
/* Print the symbols being reduced, and their result. */
|
|
||||||
for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
|
|
||||||
fprintf (stderr, "%s ", yytname[yyrhs[i]]);
|
|
||||||
fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
$ /* the action file gets copied in in place of this dollarsign */
|
|
||||||
#line 542 "bison.simple"
|
|
||||||
|
|
||||||
yyvsp -= yylen;
|
|
||||||
yyssp -= yylen;
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
yylsp -= yylen;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
if (yydebug)
|
|
||||||
{
|
|
||||||
short *ssp1 = yyss - 1;
|
|
||||||
fprintf (stderr, "state stack now");
|
|
||||||
while (ssp1 != yyssp)
|
|
||||||
fprintf (stderr, " %d", *++ssp1);
|
|
||||||
fprintf (stderr, "\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
*++yyvsp = yyval;
|
|
||||||
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
yylsp++;
|
|
||||||
if (yylen == 0)
|
|
||||||
{
|
|
||||||
yylsp->first_line = yylloc.first_line;
|
|
||||||
yylsp->first_column = yylloc.first_column;
|
|
||||||
yylsp->last_line = (yylsp-1)->last_line;
|
|
||||||
yylsp->last_column = (yylsp-1)->last_column;
|
|
||||||
yylsp->text = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
yylsp->last_line = (yylsp+yylen-1)->last_line;
|
|
||||||
yylsp->last_column = (yylsp+yylen-1)->last_column;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Now "shift" the result of the reduction.
|
|
||||||
Determine what state that goes to,
|
|
||||||
based on the state we popped back to
|
|
||||||
and the rule number reduced by. */
|
|
||||||
|
|
||||||
yyn = yyr1[yyn];
|
|
||||||
|
|
||||||
yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
|
|
||||||
if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
|
|
||||||
yystate = yytable[yystate];
|
|
||||||
else
|
|
||||||
yystate = yydefgoto[yyn - YYNTBASE];
|
|
||||||
|
|
||||||
goto yynewstate;
|
|
||||||
|
|
||||||
yyerrlab: /* here on detecting error */
|
|
||||||
|
|
||||||
if (! yyerrstatus)
|
|
||||||
/* If not already recovering from an error, report this error. */
|
|
||||||
{
|
|
||||||
++yynerrs;
|
|
||||||
|
|
||||||
#ifdef YYERROR_VERBOSE
|
|
||||||
yyn = yypact[yystate];
|
|
||||||
|
|
||||||
if (yyn > YYFLAG && yyn < YYLAST)
|
|
||||||
{
|
|
||||||
int size = 0;
|
|
||||||
char *msg;
|
|
||||||
int x, count;
|
|
||||||
|
|
||||||
count = 0;
|
|
||||||
/* Start X at -yyn if nec to avoid negative indexes in yycheck. */
|
|
||||||
for (x = (yyn < 0 ? -yyn : 0);
|
|
||||||
x < (sizeof(yytname) / sizeof(char *)); x++)
|
|
||||||
if (yycheck[x + yyn] == x)
|
|
||||||
size += strlen(yytname[x]) + 15, count++;
|
|
||||||
msg = (char *) malloc(size + 15);
|
|
||||||
if (msg != 0)
|
|
||||||
{
|
|
||||||
strcpy(msg, "parse error");
|
|
||||||
|
|
||||||
if (count < 5)
|
|
||||||
{
|
|
||||||
count = 0;
|
|
||||||
for (x = (yyn < 0 ? -yyn : 0);
|
|
||||||
x < (sizeof(yytname) / sizeof(char *)); x++)
|
|
||||||
if (yycheck[x + yyn] == x)
|
|
||||||
{
|
|
||||||
strcat(msg, count == 0 ? ", expecting `" : " or `");
|
|
||||||
strcat(msg, yytname[x]);
|
|
||||||
strcat(msg, "'");
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
yyerror(msg);
|
|
||||||
free(msg);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
yyerror ("parse error; also virtual memory exceeded");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif /* YYERROR_VERBOSE */
|
|
||||||
yyerror("parse error");
|
|
||||||
}
|
|
||||||
|
|
||||||
goto yyerrlab1;
|
|
||||||
yyerrlab1: /* here on error raised explicitly by an action */
|
|
||||||
|
|
||||||
if (yyerrstatus == 3)
|
|
||||||
{
|
|
||||||
/* if just tried and failed to reuse lookahead token after an error, discard it. */
|
|
||||||
|
|
||||||
/* return failure if at end of input */
|
|
||||||
if (yychar == YYEOF)
|
|
||||||
YYABORT;
|
|
||||||
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
if (yydebug)
|
|
||||||
fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
yychar = YYEMPTY;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Else will try to reuse lookahead token
|
|
||||||
after shifting the error token. */
|
|
||||||
|
|
||||||
yyerrstatus = 3; /* Each real token shifted decrements this */
|
|
||||||
|
|
||||||
goto yyerrhandle;
|
|
||||||
|
|
||||||
yyerrdefault: /* current state does not do anything special for the error token. */
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
/* This is wrong; only states that explicitly want error tokens
|
|
||||||
should shift them. */
|
|
||||||
yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
|
|
||||||
if (yyn) goto yydefault;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
yyerrpop: /* pop the current state because it cannot handle the error token */
|
|
||||||
|
|
||||||
if (yyssp == yyss) YYABORT;
|
|
||||||
yyvsp--;
|
|
||||||
yystate = *--yyssp;
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
yylsp--;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
if (yydebug)
|
|
||||||
{
|
|
||||||
short *ssp1 = yyss - 1;
|
|
||||||
fprintf (stderr, "Error: state stack now");
|
|
||||||
while (ssp1 != yyssp)
|
|
||||||
fprintf (stderr, " %d", *++ssp1);
|
|
||||||
fprintf (stderr, "\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
yyerrhandle:
|
|
||||||
|
|
||||||
yyn = yypact[yystate];
|
|
||||||
if (yyn == YYFLAG)
|
|
||||||
goto yyerrdefault;
|
|
||||||
|
|
||||||
yyn += YYTERROR;
|
|
||||||
if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
|
|
||||||
goto yyerrdefault;
|
|
||||||
|
|
||||||
yyn = yytable[yyn];
|
|
||||||
if (yyn < 0)
|
|
||||||
{
|
|
||||||
if (yyn == YYFLAG)
|
|
||||||
goto yyerrpop;
|
|
||||||
yyn = -yyn;
|
|
||||||
goto yyreduce;
|
|
||||||
}
|
|
||||||
else if (yyn == 0)
|
|
||||||
goto yyerrpop;
|
|
||||||
|
|
||||||
if (yyn == YYFINAL)
|
|
||||||
YYACCEPT;
|
|
||||||
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
if (yydebug)
|
|
||||||
fprintf(stderr, "Shifting error token, ");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
*++yyvsp = yylval;
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
*++yylsp = yylloc;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
yystate = yyn;
|
|
||||||
goto yynewstate;
|
|
||||||
|
|
||||||
yyacceptlab:
|
|
||||||
/* YYACCEPT comes here. */
|
|
||||||
if (yyfree_stacks)
|
|
||||||
{
|
|
||||||
free (yyss);
|
|
||||||
free (yyvs);
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
free (yyls);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
yyabortlab:
|
|
||||||
/* YYABORT comes here. */
|
|
||||||
if (yyfree_stacks)
|
|
||||||
{
|
|
||||||
free (yyss);
|
|
||||||
free (yyvs);
|
|
||||||
#ifdef YYLSP_NEEDED
|
|
||||||
free (yyls);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
+292
@@ -0,0 +1,292 @@
|
|||||||
|
/* config.hin. Generated from configure.in by autoheader. */
|
||||||
|
|
||||||
|
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
|
||||||
|
systems. This function is required for `alloca.c' support on those systems.
|
||||||
|
*/
|
||||||
|
#undef CRAY_STACKSEG_END
|
||||||
|
|
||||||
|
/* Define if using `alloca.c'. */
|
||||||
|
#undef C_ALLOCA
|
||||||
|
|
||||||
|
/* Define to 1 if translation of program messages to the user's native
|
||||||
|
language is requested. */
|
||||||
|
#undef ENABLE_NLS
|
||||||
|
|
||||||
|
/* Define if you have `alloca', as a function or macro. */
|
||||||
|
#undef HAVE_ALLOCA
|
||||||
|
|
||||||
|
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
|
||||||
|
#undef HAVE_ALLOCA_H
|
||||||
|
|
||||||
|
/* Define if you have the <argz.h> header file. */
|
||||||
|
#undef HAVE_ARGZ_H
|
||||||
|
|
||||||
|
/* Define if you have the <ctype.h> header file. */
|
||||||
|
#undef HAVE_CTYPE_H
|
||||||
|
|
||||||
|
/* Define if backslash-a works in C strings. */
|
||||||
|
#undef HAVE_C_BACKSLASH_A
|
||||||
|
|
||||||
|
/* Define if you have the `dcgettext' function. */
|
||||||
|
#undef HAVE_DCGETTEXT
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `memchr', and to 0 if you don't.
|
||||||
|
*/
|
||||||
|
#undef HAVE_DECL_MEMCHR
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't.
|
||||||
|
*/
|
||||||
|
#undef HAVE_DECL_STPCPY
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#undef HAVE_DECL_STRERROR_R
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `strndup', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#undef HAVE_DECL_STRNDUP
|
||||||
|
|
||||||
|
/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
|
||||||
|
don't. */
|
||||||
|
#undef HAVE_DECL_STRNLEN
|
||||||
|
|
||||||
|
/* Define if the malloc check has been performed. */
|
||||||
|
#undef HAVE_DONE_WORKING_MALLOC_CHECK
|
||||||
|
|
||||||
|
/* Define if the realloc check has been performed. */
|
||||||
|
#undef HAVE_DONE_WORKING_REALLOC_CHECK
|
||||||
|
|
||||||
|
/* Define if you have the `doprnt' function. */
|
||||||
|
#undef HAVE_DOPRNT
|
||||||
|
|
||||||
|
/* Define if you have the `feof_unlocked' function. */
|
||||||
|
#undef HAVE_FEOF_UNLOCKED
|
||||||
|
|
||||||
|
/* Define if you have the `fgets_unlocked' function. */
|
||||||
|
#undef HAVE_FGETS_UNLOCKED
|
||||||
|
|
||||||
|
/* Define if you have the `getcwd' function. */
|
||||||
|
#undef HAVE_GETCWD
|
||||||
|
|
||||||
|
/* Define if you have the `getegid' function. */
|
||||||
|
#undef HAVE_GETEGID
|
||||||
|
|
||||||
|
/* Define if you have the `geteuid' function. */
|
||||||
|
#undef HAVE_GETEUID
|
||||||
|
|
||||||
|
/* Define if you have the `getgid' function. */
|
||||||
|
#undef HAVE_GETGID
|
||||||
|
|
||||||
|
/* Define if you have the `getpagesize' function. */
|
||||||
|
#undef HAVE_GETPAGESIZE
|
||||||
|
|
||||||
|
/* Define if the GNU gettext() function is already present or preinstalled. */
|
||||||
|
#undef HAVE_GETTEXT
|
||||||
|
|
||||||
|
/* Define if you have the `getuid' function. */
|
||||||
|
#undef HAVE_GETUID
|
||||||
|
|
||||||
|
/* Define if you have the iconv() function. */
|
||||||
|
#undef HAVE_ICONV
|
||||||
|
|
||||||
|
/* Define if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define if you have the `isascii' function. */
|
||||||
|
#undef HAVE_ISASCII
|
||||||
|
|
||||||
|
/* Define if you have the `iswprint' function. */
|
||||||
|
#undef HAVE_ISWPRINT
|
||||||
|
|
||||||
|
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
|
||||||
|
#undef HAVE_LANGINFO_CODESET
|
||||||
|
|
||||||
|
/* Define if your <locale.h> file defines LC_MESSAGES. */
|
||||||
|
#undef HAVE_LC_MESSAGES
|
||||||
|
|
||||||
|
/* Define if you have the <limits.h> header file. */
|
||||||
|
#undef HAVE_LIMITS_H
|
||||||
|
|
||||||
|
/* Define if you have the <locale.h> header file. */
|
||||||
|
#undef HAVE_LOCALE_H
|
||||||
|
|
||||||
|
/* Define if you have the <malloc.h> header file. */
|
||||||
|
#undef HAVE_MALLOC_H
|
||||||
|
|
||||||
|
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
|
||||||
|
#undef HAVE_MBRTOWC
|
||||||
|
|
||||||
|
/* Define if you have the `mbsinit' function. */
|
||||||
|
#undef HAVE_MBSINIT
|
||||||
|
|
||||||
|
/* Define if you have the `memchr' function. */
|
||||||
|
#undef HAVE_MEMCHR
|
||||||
|
|
||||||
|
/* Define if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
|
/* Define if you have the `mempcpy' function. */
|
||||||
|
#undef HAVE_MEMPCPY
|
||||||
|
|
||||||
|
/* Define if you have the `mkstemp' function. */
|
||||||
|
#undef HAVE_MKSTEMP
|
||||||
|
|
||||||
|
/* Define if you have a working `mmap' system call. */
|
||||||
|
#undef HAVE_MMAP
|
||||||
|
|
||||||
|
/* Define if you have the `munmap' function. */
|
||||||
|
#undef HAVE_MUNMAP
|
||||||
|
|
||||||
|
/* Define if you have the <nl_types.h> header file. */
|
||||||
|
#undef HAVE_NL_TYPES_H
|
||||||
|
|
||||||
|
/* Define if you have the `putenv' function. */
|
||||||
|
#undef HAVE_PUTENV
|
||||||
|
|
||||||
|
/* Define if you have the `setenv' function. */
|
||||||
|
#undef HAVE_SETENV
|
||||||
|
|
||||||
|
/* Define if you have the `setlocale' function. */
|
||||||
|
#undef HAVE_SETLOCALE
|
||||||
|
|
||||||
|
/* Define if you have the <stddef.h> header file. */
|
||||||
|
#undef HAVE_STDDEF_H
|
||||||
|
|
||||||
|
/* Define if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
|
/* Define if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
|
/* Define if you have the `stpcpy' function. */
|
||||||
|
#undef HAVE_STPCPY
|
||||||
|
|
||||||
|
/* Define if you have the `strcasecmp' function. */
|
||||||
|
#undef HAVE_STRCASECMP
|
||||||
|
|
||||||
|
/* Define if you have the `strchr' function. */
|
||||||
|
#undef HAVE_STRCHR
|
||||||
|
|
||||||
|
/* Define if you have the `strdup' function. */
|
||||||
|
#undef HAVE_STRDUP
|
||||||
|
|
||||||
|
/* Define if you have the `strerror' function. */
|
||||||
|
#undef HAVE_STRERROR
|
||||||
|
|
||||||
|
/* Define if you have the `strerror_r' function. */
|
||||||
|
#undef HAVE_STRERROR_R
|
||||||
|
|
||||||
|
/* Define if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
|
/* Define if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define if you have the `strndup' function. */
|
||||||
|
#undef HAVE_STRNDUP
|
||||||
|
|
||||||
|
/* Define if you have the `strnlen' function. */
|
||||||
|
#undef HAVE_STRNLEN
|
||||||
|
|
||||||
|
/* Define if you have the `strspn' function. */
|
||||||
|
#undef HAVE_STRSPN
|
||||||
|
|
||||||
|
/* Define if you have the `strtoul' function. */
|
||||||
|
#undef HAVE_STRTOUL
|
||||||
|
|
||||||
|
/* Define if you have the <sys/param.h> header file. */
|
||||||
|
#undef HAVE_SYS_PARAM_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
|
/* Define if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
|
/* Define if you have the `tsearch' function. */
|
||||||
|
#undef HAVE_TSEARCH
|
||||||
|
|
||||||
|
/* Define if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/* Define if you have the `vprintf' function. */
|
||||||
|
#undef HAVE_VPRINTF
|
||||||
|
|
||||||
|
/* Define if you have the <wchar.h> header file. */
|
||||||
|
#undef HAVE_WCHAR_H
|
||||||
|
|
||||||
|
/* Define if you have the <wctype.h> header file. */
|
||||||
|
#undef HAVE_WCTYPE_H
|
||||||
|
|
||||||
|
/* Define to 1 if `strerror_r' returns a string. */
|
||||||
|
#undef HAVE_WORKING_STRERROR_R
|
||||||
|
|
||||||
|
/* Define if you have the `__argz_count' function. */
|
||||||
|
#undef HAVE___ARGZ_COUNT
|
||||||
|
|
||||||
|
/* Define if you have the `__argz_next' function. */
|
||||||
|
#undef HAVE___ARGZ_NEXT
|
||||||
|
|
||||||
|
/* Define if you have the `__argz_stringify' function. */
|
||||||
|
#undef HAVE___ARGZ_STRINGIFY
|
||||||
|
|
||||||
|
/* Define as const if the declaration of iconv() needs const. */
|
||||||
|
#undef ICONV_CONST
|
||||||
|
|
||||||
|
/* Name of package */
|
||||||
|
#undef PACKAGE
|
||||||
|
|
||||||
|
/* Define if compiler has function prototypes */
|
||||||
|
#undef PROTOTYPES
|
||||||
|
|
||||||
|
/* If using the C implementation of alloca, define if you know the
|
||||||
|
direction of stack growth for your system; otherwise it will be
|
||||||
|
automatically deduced at run-time.
|
||||||
|
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||||
|
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||||
|
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||||
|
#undef STACK_DIRECTION
|
||||||
|
|
||||||
|
/* Define if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
|
/* Version number of package */
|
||||||
|
#undef VERSION
|
||||||
|
|
||||||
|
/* Define if using the dmalloc debugging malloc package */
|
||||||
|
#undef WITH_DMALLOC
|
||||||
|
|
||||||
|
/* Define to 1 for GNU C library extensions. */
|
||||||
|
#undef _GNU_SOURCE
|
||||||
|
|
||||||
|
/* Define if on MINIX. */
|
||||||
|
#undef _MINIX
|
||||||
|
|
||||||
|
/* Define if the system does not provide POSIX.1 features except with this
|
||||||
|
defined. */
|
||||||
|
#undef _POSIX_1_SOURCE
|
||||||
|
|
||||||
|
/* Define if you need to in order for `stat' and other things to work. */
|
||||||
|
#undef _POSIX_SOURCE
|
||||||
|
|
||||||
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
|
#undef const
|
||||||
|
|
||||||
|
/* Define as `__inline' if that's what the C compiler calls it, or to nothing
|
||||||
|
if it is not supported. */
|
||||||
|
#undef inline
|
||||||
|
|
||||||
|
/* Define to rpl_malloc if the replacement function should be used. */
|
||||||
|
#undef malloc
|
||||||
|
|
||||||
|
/* Define to a type if <wchar.h> does not define. */
|
||||||
|
#undef mbstate_t
|
||||||
|
|
||||||
|
/* Define to `long' if <sys/types.h> does not define. */
|
||||||
|
#undef off_t
|
||||||
|
|
||||||
|
/* Define to rpl_realloc if the replacement function should be used. */
|
||||||
|
#undef realloc
|
||||||
|
|
||||||
|
/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||||
|
#undef size_t
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
Makefile
|
||||||
|
*.t
|
||||||
|
Makefile.in
|
||||||
|
mkinstalldirs
|
||||||
|
missing
|
||||||
|
config.sub
|
||||||
|
config.guess
|
||||||
|
mdate-sh
|
||||||
|
texinfo.tex
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
||||||
|
EXTRA_DIST = move-if-change prev-version.txt
|
||||||
Executable
+411
@@ -0,0 +1,411 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
# Copyright 1999, 2000 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
|
||||||
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
# 02111-1307, USA.
|
||||||
|
|
||||||
|
# As a special exception to the GNU General Public License, if you
|
||||||
|
# distribute this file as part of a program that contains a
|
||||||
|
# configuration script generated by Autoconf, you may include it under
|
||||||
|
# the same distribution terms that you use for the rest of that program.
|
||||||
|
|
||||||
|
# Originally written by Alexandre Oliva <[email protected]>.
|
||||||
|
|
||||||
|
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||||
|
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# `libtool' can also be set to `yes' or `no'.
|
||||||
|
|
||||||
|
depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`}
|
||||||
|
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||||
|
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
|
||||||
|
# Some modes work just like other modes, but use different flags. We
|
||||||
|
# parameterize here, but still list the modes in the big case below,
|
||||||
|
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||||
|
# here, because this file can only contain one case statement.
|
||||||
|
if test "$depmode" = hp; then
|
||||||
|
# HP compiler uses -M and no extra arg.
|
||||||
|
gccflag=-M
|
||||||
|
depmode=gcc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = dashXmstdout; then
|
||||||
|
# This is just like dashmstdout with a different argument.
|
||||||
|
dashmflag=-xM
|
||||||
|
depmode=dashmstdout
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$depmode" in
|
||||||
|
gcc3)
|
||||||
|
## gcc 3 implements dependency tracking that does exactly what
|
||||||
|
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||||
|
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||||
|
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
mv "$tmpdepfile" "$depfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
gcc)
|
||||||
|
## There are various ways to get dependency output from gcc. Here's
|
||||||
|
## why we pick this rather obscure method:
|
||||||
|
## - Don't want to use -MD because we'd like the dependencies to end
|
||||||
|
## up in a subdir. Having to rename by hand is ugly.
|
||||||
|
## (We might end up doing this anyway to support other compilers.)
|
||||||
|
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||||
|
## -MM, not -M (despite what the docs say).
|
||||||
|
## - Using -M directly means running the compiler twice (even worse
|
||||||
|
## than renaming).
|
||||||
|
if test -z "$gccflag"; then
|
||||||
|
gccflag=-MD,
|
||||||
|
fi
|
||||||
|
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||||
|
## The second -e expression handles DOS-style file names with drive letters.
|
||||||
|
sed -e 's/^[^:]*: / /' \
|
||||||
|
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||||
|
## This next piece of magic avoids the `deleted header file' problem.
|
||||||
|
## The problem is that when a header file which appears in a .P file
|
||||||
|
## is deleted, the dependency causes make to die (because there is
|
||||||
|
## typically no way to rebuild the header). We avoid this by adding
|
||||||
|
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||||
|
## this for us directly.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" |
|
||||||
|
## Some versions of gcc put a space before the `:'. On the theory
|
||||||
|
## that the space means something, we add a space to the output as
|
||||||
|
## well.
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
hp)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
sgi)
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||||
|
else
|
||||||
|
"$@" -MDupdate "$tmpdepfile"
|
||||||
|
fi
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
|
||||||
|
# Clip off the initial element (the dependent). Don't try to be
|
||||||
|
# clever and replace this with sed code, as IRIX sed won't handle
|
||||||
|
# lines with more than a fixed number of characters (4096 in
|
||||||
|
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||||
|
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||||
|
# dependency line.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||||
|
tr '
|
||||||
|
' ' ' >> $depfile
|
||||||
|
echo >> $depfile
|
||||||
|
|
||||||
|
# The second pass generates a dummy entry for each header file.
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" \
|
||||||
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||||
|
>> $depfile
|
||||||
|
else
|
||||||
|
# The sourcefile does not contain any dependencies, so just
|
||||||
|
# store a dummy comment line, to avoid errors with the Makefile
|
||||||
|
# "include basename.Plo" scheme.
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
aix)
|
||||||
|
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||||
|
# in a .u file. This file always lives in the current directory.
|
||||||
|
# Also, the AIX compiler puts `$object:' at the start of each line;
|
||||||
|
# $object doesn't have directory information.
|
||||||
|
stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
|
||||||
|
tmpdepfile="$stripped.u"
|
||||||
|
outname="$stripped.o"
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" -Wc,-M
|
||||||
|
else
|
||||||
|
"$@" -M
|
||||||
|
fi
|
||||||
|
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
# Each line is of the form `foo.o: dependent.h'.
|
||||||
|
# Do two passes, one to just change these to
|
||||||
|
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||||
|
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
|
||||||
|
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
# The sourcefile does not contain any dependencies, so just
|
||||||
|
# store a dummy comment line, to avoid errors with the Makefile
|
||||||
|
# "include basename.Plo" scheme.
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
tru64)
|
||||||
|
# The Tru64 AIX compiler uses -MD to generate dependencies as a side
|
||||||
|
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||||
|
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||||
|
# dependencies in `foo.d' instead, so we check for that too.
|
||||||
|
# Subdirectories are respected.
|
||||||
|
|
||||||
|
tmpdepfile1="$object.d"
|
||||||
|
tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'`
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
"$@" -Wc,-MD
|
||||||
|
else
|
||||||
|
"$@" -MD
|
||||||
|
fi
|
||||||
|
|
||||||
|
stat=$?
|
||||||
|
if test $stat -eq 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -f "$tmpdepfile1"; then
|
||||||
|
tmpdepfile="$tmpdepfile1"
|
||||||
|
else
|
||||||
|
tmpdepfile="$tmpdepfile2"
|
||||||
|
fi
|
||||||
|
if test -f "$tmpdepfile"; then
|
||||||
|
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||||
|
# That's a space and a tab in the [].
|
||||||
|
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||||
|
else
|
||||||
|
echo "#dummy" > "$depfile"
|
||||||
|
fi
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
#nosideeffect)
|
||||||
|
# This comment above is used by automake to tell side-effect
|
||||||
|
# dependency tracking mechanisms from slower ones.
|
||||||
|
|
||||||
|
dashmstdout)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the proprocessed file to stdout, regardless of -o,
|
||||||
|
# because we must use -o when running libtool.
|
||||||
|
test -z "$dashmflag" && dashmflag=-M
|
||||||
|
( IFS=" "
|
||||||
|
case " $* " in
|
||||||
|
*" --mode=compile "*) # this is libtool, let us make it quiet
|
||||||
|
for arg
|
||||||
|
do # cycle over the arguments
|
||||||
|
case "$arg" in
|
||||||
|
"--mode=compile")
|
||||||
|
# insert --quiet before "--mode=compile"
|
||||||
|
set fnord "$@" --quiet
|
||||||
|
shift # fnord
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # "$arg"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
"$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||||
|
) &
|
||||||
|
proc=$!
|
||||||
|
"$@"
|
||||||
|
stat=$?
|
||||||
|
wait "$proc"
|
||||||
|
if test "$stat" != 0; then exit $stat; fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
|
tr ' ' '
|
||||||
|
' < "$tmpdepfile" | \
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
dashXmstdout)
|
||||||
|
# This case only exists to satisfy depend.m4. It is never actually
|
||||||
|
# run, as this mode is specially recognized in the preamble.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
makedepend)
|
||||||
|
# X makedepend
|
||||||
|
(
|
||||||
|
shift
|
||||||
|
cleared=no
|
||||||
|
for arg in "$@"; do
|
||||||
|
case $cleared in no)
|
||||||
|
set ""; shift
|
||||||
|
cleared=yes
|
||||||
|
esac
|
||||||
|
case "$arg" in
|
||||||
|
-D*|-I*)
|
||||||
|
set fnord "$@" "$arg"; shift;;
|
||||||
|
-*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set fnord "$@" "$arg"; shift;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
||||||
|
touch "$tmpdepfile"
|
||||||
|
${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||||
|
) &
|
||||||
|
proc=$!
|
||||||
|
"$@"
|
||||||
|
stat=$?
|
||||||
|
wait "$proc"
|
||||||
|
if test "$stat" != 0; then exit $stat; fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
|
tail +3 "$tmpdepfile" | tr ' ' '
|
||||||
|
' | \
|
||||||
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
|
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||||
|
;;
|
||||||
|
|
||||||
|
cpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the proprocessed file to stdout, regardless of -o,
|
||||||
|
# because we must use -o when running libtool.
|
||||||
|
( IFS=" "
|
||||||
|
case " $* " in
|
||||||
|
*" --mode=compile "*)
|
||||||
|
for arg
|
||||||
|
do # cycle over the arguments
|
||||||
|
case $arg in
|
||||||
|
"--mode=compile")
|
||||||
|
# insert --quiet before "--mode=compile"
|
||||||
|
set fnord "$@" --quiet
|
||||||
|
shift # fnord
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # "$arg"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
"$@" -E |
|
||||||
|
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||||
|
sed '$ s: \\$::' > "$tmpdepfile"
|
||||||
|
) &
|
||||||
|
proc=$!
|
||||||
|
"$@"
|
||||||
|
stat=$?
|
||||||
|
wait "$proc"
|
||||||
|
if test "$stat" != 0; then exit $stat; fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
cat < "$tmpdepfile" >> "$depfile"
|
||||||
|
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvisualcpp)
|
||||||
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
|
# always write the proprocessed file to stdout, regardless of -o,
|
||||||
|
# because we must use -o when running libtool.
|
||||||
|
( IFS=" "
|
||||||
|
case " $* " in
|
||||||
|
*" --mode=compile "*)
|
||||||
|
for arg
|
||||||
|
do # cycle over the arguments
|
||||||
|
case $arg in
|
||||||
|
"--mode=compile")
|
||||||
|
# insert --quiet before "--mode=compile"
|
||||||
|
set fnord "$@" --quiet
|
||||||
|
shift # fnord
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
set fnord "$@" "$arg"
|
||||||
|
shift # fnord
|
||||||
|
shift # "$arg"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
"$@" -E |
|
||||||
|
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||||
|
) &
|
||||||
|
proc=$!
|
||||||
|
"$@"
|
||||||
|
stat=$?
|
||||||
|
wait "$proc"
|
||||||
|
if test "$stat" != 0; then exit $stat; fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||||
|
echo " " >> "$depfile"
|
||||||
|
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
none)
|
||||||
|
exec "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Unknown depmode $depmode" 1>&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
Executable
+251
@@ -0,0 +1,251 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
# This comes from X11R5 (mit/util/scripts/install.sh).
|
||||||
|
#
|
||||||
|
# Copyright 1991 by the Massachusetts Institute of Technology
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
# documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
# the above copyright notice appear in all copies and that both that
|
||||||
|
# copyright notice and this permission notice appear in supporting
|
||||||
|
# documentation, and that the name of M.I.T. not be used in advertising or
|
||||||
|
# publicity pertaining to distribution of the software without specific,
|
||||||
|
# written prior permission. M.I.T. makes no representations about the
|
||||||
|
# suitability of this software for any purpose. It is provided "as is"
|
||||||
|
# without express or implied warranty.
|
||||||
|
#
|
||||||
|
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||||
|
# `make' implicit rules from creating a file called install from it
|
||||||
|
# when there is no Makefile.
|
||||||
|
#
|
||||||
|
# This script is compatible with the BSD install script, but was written
|
||||||
|
# from scratch. It can only install one file at a time, a restriction
|
||||||
|
# shared with many OS's install programs.
|
||||||
|
|
||||||
|
|
||||||
|
# set DOITPROG to echo to test this script
|
||||||
|
|
||||||
|
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||||
|
doit="${DOITPROG-}"
|
||||||
|
|
||||||
|
|
||||||
|
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||||
|
|
||||||
|
mvprog="${MVPROG-mv}"
|
||||||
|
cpprog="${CPPROG-cp}"
|
||||||
|
chmodprog="${CHMODPROG-chmod}"
|
||||||
|
chownprog="${CHOWNPROG-chown}"
|
||||||
|
chgrpprog="${CHGRPPROG-chgrp}"
|
||||||
|
stripprog="${STRIPPROG-strip}"
|
||||||
|
rmprog="${RMPROG-rm}"
|
||||||
|
mkdirprog="${MKDIRPROG-mkdir}"
|
||||||
|
|
||||||
|
transformbasename=""
|
||||||
|
transform_arg=""
|
||||||
|
instcmd="$mvprog"
|
||||||
|
chmodcmd="$chmodprog 0755"
|
||||||
|
chowncmd=""
|
||||||
|
chgrpcmd=""
|
||||||
|
stripcmd=""
|
||||||
|
rmcmd="$rmprog -f"
|
||||||
|
mvcmd="$mvprog"
|
||||||
|
src=""
|
||||||
|
dst=""
|
||||||
|
dir_arg=""
|
||||||
|
|
||||||
|
while [ x"$1" != x ]; do
|
||||||
|
case $1 in
|
||||||
|
-c) instcmd="$cpprog"
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-d) dir_arg=true
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-m) chmodcmd="$chmodprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-s) stripcmd="$stripprog"
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
*) if [ x"$src" = x ]
|
||||||
|
then
|
||||||
|
src=$1
|
||||||
|
else
|
||||||
|
# this colon is to work around a 386BSD /bin/sh bug
|
||||||
|
:
|
||||||
|
dst=$1
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ x"$src" = x ]
|
||||||
|
then
|
||||||
|
echo "install: no input file specified"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dir_arg" != x ]; then
|
||||||
|
dst=$src
|
||||||
|
src=""
|
||||||
|
|
||||||
|
if [ -d $dst ]; then
|
||||||
|
instcmd=:
|
||||||
|
chmodcmd=""
|
||||||
|
else
|
||||||
|
instcmd=mkdir
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
|
||||||
|
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||||
|
# might cause directories to be created, which would be especially bad
|
||||||
|
# if $src (and thus $dsttmp) contains '*'.
|
||||||
|
|
||||||
|
if [ -f $src -o -d $src ]
|
||||||
|
then
|
||||||
|
true
|
||||||
|
else
|
||||||
|
echo "install: $src does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dst" = x ]
|
||||||
|
then
|
||||||
|
echo "install: no destination specified"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If destination is a directory, append the input filename; if your system
|
||||||
|
# does not like double slashes in filenames, you may need to add some logic
|
||||||
|
|
||||||
|
if [ -d $dst ]
|
||||||
|
then
|
||||||
|
dst="$dst"/`basename $src`
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
## this sed command emulates the dirname command
|
||||||
|
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||||
|
|
||||||
|
# Make sure that the destination directory exists.
|
||||||
|
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||||
|
|
||||||
|
# Skip lots of stat calls in the usual case.
|
||||||
|
if [ ! -d "$dstdir" ]; then
|
||||||
|
defaultIFS='
|
||||||
|
'
|
||||||
|
IFS="${IFS-${defaultIFS}}"
|
||||||
|
|
||||||
|
oIFS="${IFS}"
|
||||||
|
# Some sh's can't handle IFS=/ for some reason.
|
||||||
|
IFS='%'
|
||||||
|
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||||
|
IFS="${oIFS}"
|
||||||
|
|
||||||
|
pathcomp=''
|
||||||
|
|
||||||
|
while [ $# -ne 0 ] ; do
|
||||||
|
pathcomp="${pathcomp}${1}"
|
||||||
|
shift
|
||||||
|
|
||||||
|
if [ ! -d "${pathcomp}" ] ;
|
||||||
|
then
|
||||||
|
$mkdirprog "${pathcomp}"
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
pathcomp="${pathcomp}/"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dir_arg" != x ]
|
||||||
|
then
|
||||||
|
$doit $instcmd $dst &&
|
||||||
|
|
||||||
|
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
||||||
|
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
||||||
|
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
||||||
|
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
||||||
|
else
|
||||||
|
|
||||||
|
# If we're going to rename the final executable, determine the name now.
|
||||||
|
|
||||||
|
if [ x"$transformarg" = x ]
|
||||||
|
then
|
||||||
|
dstfile=`basename $dst`
|
||||||
|
else
|
||||||
|
dstfile=`basename $dst $transformbasename |
|
||||||
|
sed $transformarg`$transformbasename
|
||||||
|
fi
|
||||||
|
|
||||||
|
# don't allow the sed command to completely eliminate the filename
|
||||||
|
|
||||||
|
if [ x"$dstfile" = x ]
|
||||||
|
then
|
||||||
|
dstfile=`basename $dst`
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make a temp file name in the proper directory.
|
||||||
|
|
||||||
|
dsttmp=$dstdir/#inst.$$#
|
||||||
|
|
||||||
|
# Move or copy the file name to the temp name
|
||||||
|
|
||||||
|
$doit $instcmd $src $dsttmp &&
|
||||||
|
|
||||||
|
trap "rm -f ${dsttmp}" 0 &&
|
||||||
|
|
||||||
|
# and set any options; do chmod last to preserve setuid bits
|
||||||
|
|
||||||
|
# If any of these fail, we abort the whole thing. If we want to
|
||||||
|
# ignore errors from any of these, just make sure not to ignore
|
||||||
|
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||||
|
|
||||||
|
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
||||||
|
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
|
||||||
|
$doit $rmcmd -f $dstdir/$dstfile &&
|
||||||
|
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
||||||
|
|
||||||
|
fi &&
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
||||||
Executable
+17
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Like mv $1 $2, but if the files are the same, just delete $1.
|
||||||
|
# Status is 0 if $2 is changed, 1 otherwise.
|
||||||
|
if
|
||||||
|
test -r $2
|
||||||
|
then
|
||||||
|
if
|
||||||
|
cmp -s $1 $2
|
||||||
|
then
|
||||||
|
echo $2 is unchanged
|
||||||
|
rm -f $1
|
||||||
|
else
|
||||||
|
mv -f $1 $2
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
mv -f $1 $2
|
||||||
|
fi
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
1.29c
|
||||||
+103
-11
@@ -1,22 +1,114 @@
|
|||||||
dnl Process this file with autoconf to produce a configure script.
|
# Configure template for GNU Bison. -*-Autoconf-*-
|
||||||
AC_INIT(reduce.c)
|
#
|
||||||
|
# Copyright 2001, 2002 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
|
||||||
|
|
||||||
dnl Checks for programs.
|
# We need a recent Autoconf to run a recent Autotest.
|
||||||
|
AC_PREREQ(2.52g)
|
||||||
|
|
||||||
|
AC_INIT([GNU Bison], [1.49a], [[email protected]])
|
||||||
|
AC_CONFIG_AUX_DIR(config)
|
||||||
|
|
||||||
|
AM_INIT_AUTOMAKE([bison], [1.49a])
|
||||||
|
AM_CONFIG_HEADER(config.h:config.hin)
|
||||||
|
|
||||||
|
# Initialize the test suite.
|
||||||
|
AC_CONFIG_TESTDIR(tests)
|
||||||
|
AC_CONFIG_FILES([tests/Makefile tests/atlocal])
|
||||||
|
AC_CONFIG_FILES([tests/bison], [chmod +x tests/bison])
|
||||||
|
# Needed by tests/atlocal.in.
|
||||||
|
AC_SUBST([GCC])
|
||||||
|
|
||||||
|
# Checks for programs.
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_PROG_INSTALL
|
AM_PROG_LEX
|
||||||
|
AC_PROG_YACC
|
||||||
AC_MINIX
|
AC_MINIX
|
||||||
AC_ISC_POSIX
|
AC_ISC_POSIX
|
||||||
|
AM_PROG_CC_STDC
|
||||||
|
AC_PROG_RANLIB
|
||||||
|
AM_MISSING_PROG([AUTOM4TE], [autom4te])
|
||||||
|
|
||||||
dnl Checks for header files.
|
AC_ARG_ENABLE(gcc-warnings,
|
||||||
|
[ --enable-gcc-warnings turn on lots of GCC warnings (not recommended)],
|
||||||
|
[case "${enableval}" in
|
||||||
|
yes|no) ;;
|
||||||
|
*) AC_MSG_ERROR([bad value ${enableval} for gcc-warnings option]) ;;
|
||||||
|
esac],
|
||||||
|
[enableval=no])
|
||||||
|
if test "${enableval}" = yes; then
|
||||||
|
BISON_WARNING(-Werror)
|
||||||
|
AC_SUBST([WERROR_CFLAGS], [$WARNING_CFLAGS])
|
||||||
|
WARNING_CFLAGS=
|
||||||
|
BISON_WARNING(-Wall)
|
||||||
|
BISON_WARNING(-W)
|
||||||
|
BISON_WARNING(-Wbad-function-cast)
|
||||||
|
BISON_WARNING(-Wcast-align)
|
||||||
|
BISON_WARNING(-Wcast-qual)
|
||||||
|
BISON_WARNING(-Wformat)
|
||||||
|
BISON_WARNING(-Wmissing-declarations)
|
||||||
|
BISON_WARNING(-Wmissing-prototypes)
|
||||||
|
BISON_WARNING(-Wnested-externs)
|
||||||
|
BISON_WARNING(-Wshadow)
|
||||||
|
BISON_WARNING(-Wstrict-prototypes)
|
||||||
|
BISON_WARNING(-Wwrite-strings)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Checks for libraries.
|
||||||
|
AC_DEFINE([_GNU_SOURCE],1,[Define to 1 for GNU C library extensions.])
|
||||||
|
|
||||||
|
# Checks for header files.
|
||||||
AC_HEADER_STDC
|
AC_HEADER_STDC
|
||||||
AC_CHECK_HEADERS(string.h stdlib.h memory.h)
|
AC_CHECK_HEADERS(ctype.h locale.h memory.h stdlib.h string.h unistd.h)
|
||||||
|
|
||||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
# Checks for typedefs.
|
||||||
|
|
||||||
|
# Checks for structures.
|
||||||
|
|
||||||
|
# Checks for compiler characteristics.
|
||||||
AC_C_CONST
|
AC_C_CONST
|
||||||
|
AC_C_INLINE
|
||||||
|
AM_C_PROTOTYPES
|
||||||
|
|
||||||
dnl Checks for library functions.
|
# Checks for library functions.
|
||||||
AC_FUNC_ALLOCA
|
AC_FUNC_ALLOCA
|
||||||
AC_CHECK_FUNCS(strerror)
|
AC_FUNC_OBSTACK
|
||||||
|
AC_FUNC_ERROR_AT_LINE
|
||||||
|
AC_FUNC_STRNLEN
|
||||||
|
AC_CHECK_FUNCS(mkstemp setlocale)
|
||||||
|
AC_CHECK_DECLS([free, stpcpy, strchr, strspn, strnlen, malloc, memchr, memrchr])
|
||||||
|
AC_REPLACE_FUNCS(stpcpy strchr strspn memchr memrchr)
|
||||||
|
jm_FUNC_MALLOC
|
||||||
|
jm_FUNC_REALLOC
|
||||||
|
jm_PREREQ_QUOTEARG
|
||||||
|
jm_PREREQ_ERROR
|
||||||
|
AM_WITH_DMALLOC
|
||||||
|
|
||||||
AC_OUTPUT(Makefile)
|
ALL_LINGUAS="de es et fr it ja nl ru sv tr"
|
||||||
|
AM_GNU_GETTEXT(, need-ngettext)
|
||||||
|
|
||||||
|
# This is necessary so that .o files in LIBOBJS are also built via
|
||||||
|
# the ANSI2KNR-filtering rules.
|
||||||
|
LIB@&t@OBJS=`echo $LIB@&t@OBJS|sed 's/\.o /\$U.o /g;s/\.o$/\$U.o/'`
|
||||||
|
AC_SUBST(LIB@&t@OBJS)
|
||||||
|
|
||||||
|
AC_OUTPUT([Makefile
|
||||||
|
config/Makefile
|
||||||
|
intl/Makefile po/Makefile.in
|
||||||
|
data/Makefile
|
||||||
|
lib/Makefile src/Makefile doc/Makefile
|
||||||
|
m4/Makefile])
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
## Copyright 2002 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
|
||||||
|
|
||||||
|
dist_pkgdata_DATA = bison.simple bison.hairy bison.c++
|
||||||
+523
@@ -0,0 +1,523 @@
|
|||||||
|
%%{section} %%{output-prefix} %%{output-infix} %%".hh"
|
||||||
|
/* -*- C++ -*- */
|
||||||
|
|
||||||
|
/* A Bison parser, made from %%filename,
|
||||||
|
by GNU bison %%version. */
|
||||||
|
|
||||||
|
/* Skeleton output parser for bison,
|
||||||
|
Copyright 1984, 1989, 1990, 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, 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. */
|
||||||
|
|
||||||
|
/* As a special exception, when this file is copied by Bison into a
|
||||||
|
Bison output file, you may use that output file without restriction.
|
||||||
|
This special exception was added by the Free Software Foundation
|
||||||
|
in version 1.24 of Bison. */
|
||||||
|
|
||||||
|
#include "stack.hh"
|
||||||
|
/* #include "parser.hh" */
|
||||||
|
#include "location.hh"
|
||||||
|
|
||||||
|
namespace yy
|
||||||
|
{
|
||||||
|
class %%{name};
|
||||||
|
|
||||||
|
template < typename P >
|
||||||
|
struct Traits
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template < >
|
||||||
|
struct Traits< %%{name} >
|
||||||
|
{
|
||||||
|
typedef int StateType;
|
||||||
|
typedef %%{stype} SemanticType;
|
||||||
|
typedef Location LocationType;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
%%{prologue}
|
||||||
|
|
||||||
|
namespace yy
|
||||||
|
{
|
||||||
|
class %%{name}
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
typedef Traits< %%{name} >::StateType StateType;
|
||||||
|
typedef Traits< %%{name} >::SemanticType SemanticType;
|
||||||
|
typedef Traits< %%{name} >::LocationType LocationType;
|
||||||
|
|
||||||
|
typedef Stack< StateType > StateStack;
|
||||||
|
typedef Stack< SemanticType > SemanticStack;
|
||||||
|
typedef Stack< LocationType > LocationStack;
|
||||||
|
|
||||||
|
%%{name} () : debug (1)
|
||||||
|
{
|
||||||
|
looka = empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual int parse ();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
/* Call to lexical analyser. */
|
||||||
|
virtual
|
||||||
|
void
|
||||||
|
lex ()
|
||||||
|
{
|
||||||
|
looka = yylex (&value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Stacks. */
|
||||||
|
StateStack state_stack;
|
||||||
|
SemanticStack semantic_stack;
|
||||||
|
LocationStack location_stack;
|
||||||
|
|
||||||
|
/* Tables. */
|
||||||
|
static const short pact_[];
|
||||||
|
static const short defact_[];
|
||||||
|
static const short pgoto_[];
|
||||||
|
static const short defgoto_[];
|
||||||
|
static const short table_[];
|
||||||
|
static const short check_[];
|
||||||
|
static const short line_[];
|
||||||
|
static const short r1_[];
|
||||||
|
static const short r2_[];
|
||||||
|
static const char* const name_[];
|
||||||
|
|
||||||
|
/* More tables, for debugging. */
|
||||||
|
/* FIXME: These tables should not be printed when not in debug
|
||||||
|
mode. %%ifdef? */
|
||||||
|
static const short rhs_[];
|
||||||
|
static const short prhs_[];
|
||||||
|
static const short rline_[];
|
||||||
|
|
||||||
|
/* Even more tables. */
|
||||||
|
static inline char translate (int token);
|
||||||
|
|
||||||
|
/* Eof and empty. */
|
||||||
|
static const int eof;
|
||||||
|
static const int empty;
|
||||||
|
|
||||||
|
/* State. */
|
||||||
|
int n;
|
||||||
|
int len;
|
||||||
|
int debug;
|
||||||
|
int state;
|
||||||
|
|
||||||
|
/* Lookahead. */
|
||||||
|
int looka;
|
||||||
|
int ilooka;
|
||||||
|
|
||||||
|
/* @$ and $$. */
|
||||||
|
SemanticType value;
|
||||||
|
LocationType location;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
%%{section} %%{output-prefix} %%{output-infix} %%".cc"
|
||||||
|
#include "%%{output-prefix}%%{output-infix}.hh"
|
||||||
|
|
||||||
|
/* Enable debugging if requested. */
|
||||||
|
#if %%{debug}
|
||||||
|
|
||||||
|
# include <cstdio>
|
||||||
|
# define YYFPRINTF std::fprintf
|
||||||
|
|
||||||
|
# define YYDPRINTF(Args) \
|
||||||
|
do { \
|
||||||
|
if (debug) \
|
||||||
|
YYFPRINTF Args; \
|
||||||
|
} while (0)
|
||||||
|
/* Nonzero means print parse trace. [The following comment makes no
|
||||||
|
sense to me. Could someone clarify it? --akim] Since this is
|
||||||
|
uninitialized, it does not stop multiple parsers from coexisting.
|
||||||
|
*/
|
||||||
|
int yydebug;
|
||||||
|
#else /* !YYDEBUG */
|
||||||
|
# define YYDPRINTF(Args)
|
||||||
|
#endif /* !YYDEBUG */
|
||||||
|
|
||||||
|
/* Tokens. */
|
||||||
|
%%{tokendef}
|
||||||
|
|
||||||
|
int
|
||||||
|
yy::%%{name}::parse ()
|
||||||
|
{
|
||||||
|
/* Initialize stack. */
|
||||||
|
state_stack = StateStack (0);
|
||||||
|
semantic_stack = SemanticStack (1);
|
||||||
|
location_stack = LocationStack (1);
|
||||||
|
|
||||||
|
/* Reserve initial space. The C parser needed that, but is it really
|
||||||
|
useful here? */
|
||||||
|
state_stack.reserve (%%{initdepth});
|
||||||
|
semantic_stack.reserve (%%{initdepth});
|
||||||
|
location_stack.reserve (%%{initdepth});
|
||||||
|
|
||||||
|
/* Start. */
|
||||||
|
state = 0;
|
||||||
|
YYDPRINTF ((stderr, "Starting parse\n"));
|
||||||
|
|
||||||
|
/* New state. */
|
||||||
|
yynewstate:
|
||||||
|
state_stack.push (state);
|
||||||
|
YYDPRINTF ((stderr, "Entering state %d\n", state));
|
||||||
|
|
||||||
|
/* Backup. */
|
||||||
|
yybackup:
|
||||||
|
|
||||||
|
/* Try to take a decision without lookahead. */
|
||||||
|
n = pact_[state];
|
||||||
|
if (n == %%{flag})
|
||||||
|
goto yydefault;
|
||||||
|
|
||||||
|
/* Read a lookahead token. */
|
||||||
|
if (looka == empty)
|
||||||
|
{
|
||||||
|
YYDPRINTF ((stderr, "Reading a token: "));
|
||||||
|
lex ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Convert token to internal form. */
|
||||||
|
if (looka <= 0)
|
||||||
|
{
|
||||||
|
looka = eof;
|
||||||
|
ilooka = 0;
|
||||||
|
YYDPRINTF ((stderr, "Now at end of input.\n"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ilooka = translate (looka);
|
||||||
|
#if %%{debug}
|
||||||
|
YYFPRINTF (stderr, "Next token is %d (%s", looka, name_[ilooka]);
|
||||||
|
YYFPRINTF (stderr, ")\n");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
n += ilooka;
|
||||||
|
if (n < 0 || n > %%{last} || check_[n] != ilooka)
|
||||||
|
goto yydefault;
|
||||||
|
|
||||||
|
/* Reduce or error. */
|
||||||
|
n = table_[n];
|
||||||
|
if (n < 0)
|
||||||
|
{
|
||||||
|
if (n == %%{flag})
|
||||||
|
goto yyerrlab;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
n = -n;
|
||||||
|
goto yyreduce;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (n == 0)
|
||||||
|
goto yyerrlab;
|
||||||
|
|
||||||
|
/* Accept? */
|
||||||
|
if (n == %%{final})
|
||||||
|
goto yyacceptlab;
|
||||||
|
|
||||||
|
/* Shift the lookahead token. */
|
||||||
|
YYDPRINTF ((stderr, "Shifting token %d (%s), ", looka, name_[ilooka]));
|
||||||
|
|
||||||
|
/* Discard the token being shifted unless it is eof. */
|
||||||
|
if (looka != eof)
|
||||||
|
looka = empty;
|
||||||
|
|
||||||
|
semantic_stack.push (value);
|
||||||
|
location_stack.push (location);
|
||||||
|
state = n;
|
||||||
|
goto yynewstate;
|
||||||
|
|
||||||
|
/* Default action. */
|
||||||
|
yydefault:
|
||||||
|
n = defact_[state];
|
||||||
|
if (n == 0)
|
||||||
|
goto yyerrlab;
|
||||||
|
|
||||||
|
/* Reduce. */
|
||||||
|
yyreduce:
|
||||||
|
len = r2_[n];
|
||||||
|
value = semantic_stack[1 - len];
|
||||||
|
location = location_stack[1 - len];
|
||||||
|
|
||||||
|
#if %%{debug}
|
||||||
|
if (debug)
|
||||||
|
{
|
||||||
|
YYFPRINTF (stderr, "Reducing via rule %d (line %d), ", n - 1, rline_[n]);
|
||||||
|
for (unsigned i = prhs_[n];
|
||||||
|
rhs_[i] >= 0; ++i)
|
||||||
|
YYFPRINTF (stderr, "%s ", name_[rhs_[i]]);
|
||||||
|
YYFPRINTF (stderr, "-> %s\n", name_[r1_[n]]);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
{
|
||||||
|
SemanticType& yyval (value);
|
||||||
|
SemanticStack& yyvsp (semantic_stack);
|
||||||
|
|
||||||
|
switch (n)
|
||||||
|
{
|
||||||
|
%%{actions}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
state_stack.pop (len);
|
||||||
|
semantic_stack.pop (len);
|
||||||
|
location_stack.pop (len);
|
||||||
|
|
||||||
|
#if %%{debug}
|
||||||
|
if (debug)
|
||||||
|
{
|
||||||
|
YYFPRINTF (stderr, "state stack now");
|
||||||
|
for (StateStack::ConstIterator i = state_stack.begin ();
|
||||||
|
i != state_stack.end (); ++i)
|
||||||
|
YYFPRINTF (stderr, " %d", *i);
|
||||||
|
YYFPRINTF (stderr, "\n");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
semantic_stack.push (value);
|
||||||
|
location_stack.push (location);
|
||||||
|
|
||||||
|
/* Shift the result of the reduction. */
|
||||||
|
n = r1_[n];
|
||||||
|
state = pgoto_[n - %%{ntokens}] + state_stack[0];
|
||||||
|
if (state >= 0 && state <= %%{last} && check_[state] == state_stack[0])
|
||||||
|
state = table_[state];
|
||||||
|
else
|
||||||
|
state = defgoto_[n - %%{ntokens}];
|
||||||
|
goto yynewstate;
|
||||||
|
|
||||||
|
/* Report and recover from errors. This is very incomplete. */
|
||||||
|
yyerrlab:
|
||||||
|
std::cerr << "Parse error." << std::endl; // FIXME: Need something like yyerror?
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
/* Accept. */
|
||||||
|
yyacceptlab:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
|
||||||
|
STATE-NUM. */
|
||||||
|
const short
|
||||||
|
yy::%%{name}::pact_[] =
|
||||||
|
{
|
||||||
|
%%{pact}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
|
||||||
|
doesn't specify something else to do. Zero means the default is an
|
||||||
|
error. */
|
||||||
|
const short
|
||||||
|
yy::%%{name}::defact_[] =
|
||||||
|
{
|
||||||
|
%%{defact}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYPGOTO[NTERM-NUM]. */
|
||||||
|
const short
|
||||||
|
yy::%%{name}::pgoto_[] =
|
||||||
|
{
|
||||||
|
%%{pgoto}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYDEFGOTO[NTERM-NUM]. */
|
||||||
|
const short
|
||||||
|
yy::%%{name}::defgoto_[] =
|
||||||
|
{
|
||||||
|
%%{defgoto}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
|
||||||
|
positive, shift that token. If negative, reduce the rule which
|
||||||
|
number is the opposite. If zero, do what YYDEFACT says. */
|
||||||
|
const short
|
||||||
|
yy::%%{name}::table_[] =
|
||||||
|
{
|
||||||
|
%%{table}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYCHECK. */
|
||||||
|
const short
|
||||||
|
yy::%%{name}::check_[] =
|
||||||
|
{
|
||||||
|
%%{check}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
||||||
|
const short
|
||||||
|
yy::%%{name}::line_[] =
|
||||||
|
{
|
||||||
|
%%{line}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
|
||||||
|
const short
|
||||||
|
yy::%%{name}::r1_[] =
|
||||||
|
{
|
||||||
|
%%{r1}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
|
||||||
|
const short
|
||||||
|
yy::%%{name}::r2_[] =
|
||||||
|
{
|
||||||
|
%%{r2}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
|
||||||
|
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
|
||||||
|
const char*
|
||||||
|
const yy::%%{name}::name_[] =
|
||||||
|
{
|
||||||
|
%%{tname}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
||||||
|
const short
|
||||||
|
yy::%%{name}::rhs_[] =
|
||||||
|
{
|
||||||
|
%%{rhs}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
|
||||||
|
YYRHS. */
|
||||||
|
const short
|
||||||
|
yy::%%{name}::prhs_[] =
|
||||||
|
{
|
||||||
|
%%{prhs}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
|
||||||
|
const short
|
||||||
|
yy::%%{name}::rline_[] =
|
||||||
|
{
|
||||||
|
%%{rline}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
|
||||||
|
char
|
||||||
|
yy::%%{name}::translate (int token)
|
||||||
|
{
|
||||||
|
static
|
||||||
|
const char
|
||||||
|
translate_[] =
|
||||||
|
{
|
||||||
|
%%{translate}
|
||||||
|
};
|
||||||
|
return ((unsigned)(token) <= %%{maxtok} ? translate_[token] : %%{nsym});
|
||||||
|
}
|
||||||
|
|
||||||
|
const int yy::%%{name}::eof = 0;
|
||||||
|
const int yy::%%{name}::empty = -2;
|
||||||
|
|
||||||
|
%%{epilogue}
|
||||||
|
|
||||||
|
%%{section} %%"stack.hh"
|
||||||
|
#ifndef BISON_STACK_HH
|
||||||
|
# define BISON_STACK_HH
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace yy
|
||||||
|
{
|
||||||
|
template < class T, class S = std::vector< T > >
|
||||||
|
class Stack
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
typedef typename S::iterator Iterator;
|
||||||
|
typedef typename S::const_iterator ConstIterator;
|
||||||
|
|
||||||
|
Stack () : seq_ ()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Stack (unsigned n) : seq_ (n)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
T&
|
||||||
|
operator [] (int index)
|
||||||
|
{
|
||||||
|
return seq_[seq_.size () - 1 + index];
|
||||||
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
const T&
|
||||||
|
operator [] (int index) const
|
||||||
|
{
|
||||||
|
return seq_[seq_.size () - 1 + index];
|
||||||
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
void
|
||||||
|
push (const T& t)
|
||||||
|
{
|
||||||
|
seq_.push_back (t);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
void
|
||||||
|
pop (unsigned n = 1)
|
||||||
|
{
|
||||||
|
for (; n; --n)
|
||||||
|
seq_.pop_back ();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
void
|
||||||
|
reserve (unsigned n)
|
||||||
|
{
|
||||||
|
seq_.reserve (n);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline ConstIterator begin () const { return seq_.begin (); }
|
||||||
|
inline ConstIterator end () const { return seq_.end (); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
S seq_;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // not BISON_STACK_HH
|
||||||
|
|
||||||
|
%%{section} %%"location.hh"
|
||||||
|
#ifndef BISON_LOCATION_HH
|
||||||
|
# define BISON_LOCATION_HH
|
||||||
|
|
||||||
|
namespace yy
|
||||||
|
{
|
||||||
|
struct Position
|
||||||
|
{
|
||||||
|
int line;
|
||||||
|
int column;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Location
|
||||||
|
{
|
||||||
|
Position first;
|
||||||
|
Position last;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // not BISON_LOCATION_HH
|
||||||
@@ -0,0 +1,336 @@
|
|||||||
|
%%{section} %%{output-prefix} %%{output-infix} %%".c"
|
||||||
|
/* -*- C -*- */
|
||||||
|
|
||||||
|
/* YYERROR and YYCOST are set by guards. If yyerror is set to a
|
||||||
|
nonzero value by a guard, the reduction with which the guard is
|
||||||
|
associated is not performed, and the error recovery mechanism is
|
||||||
|
invoked. Yycost indicates the cost of performing the reduction
|
||||||
|
given the attributes of the symbols. */
|
||||||
|
static int yyerror;
|
||||||
|
static int yycost;
|
||||||
|
|
||||||
|
/* YYMAXDEPTH indicates the size of the parser's state and value
|
||||||
|
stacks. */
|
||||||
|
|
||||||
|
#ifndef YYMAXDEPTH
|
||||||
|
# define YYMAXDEPTH 500
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* YYMAXRULES must be at least as large as the number of rules that
|
||||||
|
could be placed in the rule queue. That number could be determined
|
||||||
|
from the grammar and the size of the stack, but, as yet, it is not.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef YYMAXRULES
|
||||||
|
# define YYMAXRULES 100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef YYMAXBACKUP
|
||||||
|
# define YYMAXBACKUP 100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* The state stack. */
|
||||||
|
static short yyss[YYMAXDEPTH];
|
||||||
|
/* The semantic value stack. */
|
||||||
|
static YYSTYPE yyvs[YYMAXDEPTH];
|
||||||
|
/* The location stack. */
|
||||||
|
static YYLTYPE yyls[YYMAXDEPTH];
|
||||||
|
/* The rule queue. */
|
||||||
|
static short yyrq[YYMAXRULES];
|
||||||
|
/* The lookahead symbol. */
|
||||||
|
static int yychar;
|
||||||
|
|
||||||
|
/* the semantic value of the lookahead symbol. */
|
||||||
|
static YYSTYPE yylval;
|
||||||
|
|
||||||
|
/* the semantic value for the state at the top of the state stack. */
|
||||||
|
static YYSTYPE yytval;
|
||||||
|
|
||||||
|
/* the variable used to return semantic values from the action
|
||||||
|
routines. */
|
||||||
|
static YYSTYPE yyval;
|
||||||
|
|
||||||
|
/* location data for the lookahead symbol. */
|
||||||
|
static YYLTYPE yylloc;
|
||||||
|
|
||||||
|
/* location data for the state at the top of the state stack. */
|
||||||
|
static YYLTYPE yytloc;
|
||||||
|
|
||||||
|
|
||||||
|
static int yynunlexed;
|
||||||
|
static short yyunchar[YYMAXBACKUP];
|
||||||
|
static YYSTYPE yyunval[YYMAXBACKUP];
|
||||||
|
static YYLTYPE yyunloc[YYMAXBACKUP];
|
||||||
|
|
||||||
|
/* a pointer to the top of the state stack; only set during error
|
||||||
|
recovery. */
|
||||||
|
static short *yygssp;
|
||||||
|
|
||||||
|
/* a pointer to the top of the value stack; only set during error
|
||||||
|
recovery. */
|
||||||
|
static YYSTYPE *yygvsp;
|
||||||
|
|
||||||
|
/* a pointer to the top of the location stack; only set during error
|
||||||
|
recovery. */
|
||||||
|
static YYLTYPE *yyglsp;
|
||||||
|
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------.
|
||||||
|
| Yyget is an interface between the parser and the lexical analyzer. |
|
||||||
|
| It is costly to provide such an interface, but it avoids requiring |
|
||||||
|
| the lexical analyzer to be able to back up the scan. |
|
||||||
|
`--------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
yyget (void)
|
||||||
|
{
|
||||||
|
if (yynunlexed > 0)
|
||||||
|
{
|
||||||
|
yynunlexed--;
|
||||||
|
yychar = yyunchar[yynunlexed];
|
||||||
|
yylval = yyunval[yynunlexed];
|
||||||
|
yylloc = yyunloc[yynunlexed];
|
||||||
|
}
|
||||||
|
else if (yychar <= 0)
|
||||||
|
yychar = 0;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
yychar = yylex ();
|
||||||
|
if (yychar < 0)
|
||||||
|
yychar = 0;
|
||||||
|
else
|
||||||
|
yychar = YYTRANSLATE (yychar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
yyunlex (int chr, YYSTYPE val, YYLTYPE loc)
|
||||||
|
{
|
||||||
|
yyunchar[yynunlexed] = chr;
|
||||||
|
yyunval[yynunlexed] = val;
|
||||||
|
yyunloc[yynunlexed] = loc;
|
||||||
|
yynunlexed++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
yyrestore (short *first, short *last)
|
||||||
|
{
|
||||||
|
short *ssp;
|
||||||
|
short *rp;
|
||||||
|
int symbol;
|
||||||
|
int state;
|
||||||
|
int tvalsaved;
|
||||||
|
|
||||||
|
ssp = yygssp;
|
||||||
|
yyunlex (yychar, yylval, yylloc);
|
||||||
|
|
||||||
|
tvalsaved = 0;
|
||||||
|
while (first != last)
|
||||||
|
{
|
||||||
|
symbol = yystos[*ssp];
|
||||||
|
if (symbol < YYNTBASE)
|
||||||
|
{
|
||||||
|
yyunlex (symbol, yytval, yytloc);
|
||||||
|
tvalsaved = 1;
|
||||||
|
ssp--;
|
||||||
|
}
|
||||||
|
|
||||||
|
ssp--;
|
||||||
|
|
||||||
|
if (first == yyrq)
|
||||||
|
first = yyrq + YYMAXRULES;
|
||||||
|
|
||||||
|
first--;
|
||||||
|
|
||||||
|
for (rp = yyrhs + yyprhs[*first]; symbol = *rp; rp++)
|
||||||
|
{
|
||||||
|
if (symbol < YYNTBASE)
|
||||||
|
state = yytable[yypact[*ssp] + symbol];
|
||||||
|
else
|
||||||
|
{
|
||||||
|
state = yypgoto[symbol - YYNTBASE] + *ssp;
|
||||||
|
|
||||||
|
if (state >= 0 && state <= YYLAST && yycheck[state] == *ssp)
|
||||||
|
state = yytable[state];
|
||||||
|
else
|
||||||
|
state = yydefgoto[symbol - YYNTBASE];
|
||||||
|
}
|
||||||
|
|
||||||
|
*++ssp = state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!tvalsaved && ssp > yyss)
|
||||||
|
{
|
||||||
|
yyunlex (yystos[*ssp], yytval, yytloc);
|
||||||
|
ssp--;
|
||||||
|
}
|
||||||
|
|
||||||
|
yygssp = ssp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
yyparse (void)
|
||||||
|
{
|
||||||
|
int yystate;
|
||||||
|
int yyn;
|
||||||
|
short *yyssp;
|
||||||
|
short *yyrq0;
|
||||||
|
short *yyptr;
|
||||||
|
YYSTYPE *yyvsp;
|
||||||
|
|
||||||
|
int yylen;
|
||||||
|
YYLTYPE *yylsp;
|
||||||
|
short *yyrq1;
|
||||||
|
short *yyrq2;
|
||||||
|
|
||||||
|
yystate = 0;
|
||||||
|
yyssp = yyss - 1;
|
||||||
|
yyvsp = yyvs - 1;
|
||||||
|
yylsp = yyls - 1;
|
||||||
|
yyrq0 = yyrq;
|
||||||
|
yyrq1 = yyrq0;
|
||||||
|
yyrq2 = yyrq0;
|
||||||
|
|
||||||
|
yychar = yylex ();
|
||||||
|
if (yychar < 0)
|
||||||
|
yychar = 0;
|
||||||
|
else
|
||||||
|
yychar = YYTRANSLATE (yychar);
|
||||||
|
|
||||||
|
yynewstate:
|
||||||
|
|
||||||
|
if (yyssp >= yyss + YYMAXDEPTH - 1)
|
||||||
|
{
|
||||||
|
yyabort ("Parser Stack Overflow");
|
||||||
|
YYABORT;
|
||||||
|
}
|
||||||
|
|
||||||
|
*++yyssp = yystate;
|
||||||
|
|
||||||
|
yyresume:
|
||||||
|
|
||||||
|
yyn = yypact[yystate];
|
||||||
|
if (yyn == YYFLAG)
|
||||||
|
goto yydefault;
|
||||||
|
|
||||||
|
yyn += yychar;
|
||||||
|
if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar)
|
||||||
|
goto yydefault;
|
||||||
|
|
||||||
|
yyn = yytable[yyn];
|
||||||
|
if (yyn < 0)
|
||||||
|
{
|
||||||
|
yyn = -yyn;
|
||||||
|
goto yyreduce;
|
||||||
|
}
|
||||||
|
else if (yyn == 0)
|
||||||
|
goto yyerrlab;
|
||||||
|
|
||||||
|
yystate = yyn;
|
||||||
|
|
||||||
|
yyptr = yyrq2;
|
||||||
|
while (yyptr != yyrq1)
|
||||||
|
{
|
||||||
|
yyn = *yyptr++;
|
||||||
|
yylen = yyr2[yyn];
|
||||||
|
yyvsp -= yylen;
|
||||||
|
yylsp -= yylen;
|
||||||
|
|
||||||
|
yyguard (yyn, yyvsp, yylsp);
|
||||||
|
if (yyerror)
|
||||||
|
goto yysemerr;
|
||||||
|
|
||||||
|
yyaction (yyn, yyvsp, yylsp);
|
||||||
|
*++yyvsp = yyval;
|
||||||
|
|
||||||
|
yylsp++;
|
||||||
|
if (yylen == 0)
|
||||||
|
{
|
||||||
|
yylsp->first_line = yytloc.first_line;
|
||||||
|
yylsp->first_column = yytloc.first_column;
|
||||||
|
yylsp->last_line = (yylsp - 1)->last_line;
|
||||||
|
yylsp->last_column = (yylsp - 1)->last_column;
|
||||||
|
yylsp->text = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
yylsp->last_line = (yylsp + yylen - 1)->last_line;
|
||||||
|
yylsp->last_column = (yylsp + yylen - 1)->last_column;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (yyptr == yyrq + YYMAXRULES)
|
||||||
|
yyptr = yyrq;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (yystate == YYFINAL)
|
||||||
|
YYACCEPT;
|
||||||
|
|
||||||
|
yyrq2 = yyptr;
|
||||||
|
yyrq1 = yyrq0;
|
||||||
|
|
||||||
|
*++yyvsp = yytval;
|
||||||
|
*++yylsp = yytloc;
|
||||||
|
yytval = yylval;
|
||||||
|
yytloc = yylloc;
|
||||||
|
yyget ();
|
||||||
|
|
||||||
|
goto yynewstate;
|
||||||
|
|
||||||
|
yydefault:
|
||||||
|
|
||||||
|
yyn = yydefact[yystate];
|
||||||
|
if (yyn == 0)
|
||||||
|
goto yyerrlab;
|
||||||
|
|
||||||
|
yyreduce:
|
||||||
|
|
||||||
|
*yyrq0++ = yyn;
|
||||||
|
|
||||||
|
if (yyrq0 == yyrq + YYMAXRULES)
|
||||||
|
yyrq0 = yyrq;
|
||||||
|
|
||||||
|
if (yyrq0 == yyrq2)
|
||||||
|
{
|
||||||
|
yyabort ("Parser Rule Queue Overflow");
|
||||||
|
YYABORT;
|
||||||
|
}
|
||||||
|
|
||||||
|
yyssp -= yyr2[yyn];
|
||||||
|
yyn = yyr1[yyn];
|
||||||
|
|
||||||
|
yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
|
||||||
|
if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
|
||||||
|
yystate = yytable[yystate];
|
||||||
|
else
|
||||||
|
yystate = yydefgoto[yyn - YYNTBASE];
|
||||||
|
|
||||||
|
goto yynewstate;
|
||||||
|
|
||||||
|
yysemerr:
|
||||||
|
*--yyptr = yyn;
|
||||||
|
yyrq2 = yyptr;
|
||||||
|
yyvsp += yyr2[yyn];
|
||||||
|
|
||||||
|
yyerrlab:
|
||||||
|
|
||||||
|
yygssp = yyssp;
|
||||||
|
yygvsp = yyvsp;
|
||||||
|
yyglsp = yylsp;
|
||||||
|
yyrestore (yyrq0, yyrq2);
|
||||||
|
yyrecover ();
|
||||||
|
yystate = *yygssp;
|
||||||
|
yyssp = yygssp;
|
||||||
|
yyvsp = yygvsp;
|
||||||
|
yyrq0 = yyrq;
|
||||||
|
yyrq1 = yyrq0;
|
||||||
|
yyrq2 = yyrq0;
|
||||||
|
goto yyresume;
|
||||||
|
}
|
||||||
|
|
||||||
|
%%{actions}
|
||||||
+1141
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,20 @@
|
|||||||
|
Makefile
|
||||||
|
bison.aux
|
||||||
|
bison.cp
|
||||||
|
bison.cps
|
||||||
|
bison.dvi
|
||||||
|
bison.fn
|
||||||
|
bison.ky
|
||||||
|
bison.log
|
||||||
|
bison.pg
|
||||||
|
bison.ps
|
||||||
|
bison.toc
|
||||||
|
bison.tp
|
||||||
|
bison.vr
|
||||||
|
refcard.dvi
|
||||||
|
refcard.log
|
||||||
|
refcard.ps
|
||||||
|
Makefile.in
|
||||||
|
*.info*
|
||||||
|
stamp-vti
|
||||||
|
version.texi
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
Frequently Asked Questions about Bison:
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q1. Is Bison Y2K compliant?
|
||||||
|
|
||||||
|
A1. If you're looking for a guarantee or certification, I can't
|
||||||
|
provide it. With a little thought you can answer this one for
|
||||||
|
yourself, though. (Hint: does a parser generator rely on the
|
||||||
|
date or time for anything?) If you're still confused, see
|
||||||
|
http://www.gnu.org/software/year2000.html for more information.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q2. I can't build Bison because "make" complains that "msgfmt" is not
|
||||||
|
fund. What should I do?
|
||||||
|
|
||||||
|
A2. Like most GNU packages with internationalization support, that
|
||||||
|
feature is turned on by default. If you have problems building
|
||||||
|
in the "po" subdirectory, it indicates that your system's
|
||||||
|
internationalization support is lacking. You can re-configure
|
||||||
|
Bison with "--disable-nls" to turn off this support, or you can
|
||||||
|
install GNU gettext from ftp://ftp.gnu.org/gnu/gettext/ and
|
||||||
|
re-configure Bison. See the file "ABOUT-NLS" for more
|
||||||
|
information.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q3. I'm having trouble using Bison. Where can I find help?
|
||||||
|
|
||||||
|
A3. First, read the fine manual which comes with bison. Beyond that,
|
||||||
|
you can send mail to <[email protected]>. This mailing list is
|
||||||
|
intended to be populated with people who are willing to answer
|
||||||
|
questions about using and installing Bison. Please keep in mind
|
||||||
|
that (most of) the people on the list have aspects of their lives
|
||||||
|
which are not related to Bison (!), so you may not receive an
|
||||||
|
answer to your question right away. This can be frustrating, but
|
||||||
|
please try not to honk them off; remember that any help they
|
||||||
|
provide is purely voluntary and out of the kindness of their
|
||||||
|
hearts.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q4. I found a bug. What should I include in the bug report?
|
||||||
|
|
||||||
|
A4. Before you send a bug report, make sure you are using the latest
|
||||||
|
version. Check ftp://ftp.gnu.org/pub/gnu/bison/ or one of its
|
||||||
|
mirrors. Be sure to include the version number in your bug
|
||||||
|
report. If the bug is present in the latest version but not in a
|
||||||
|
previous version, try to determine the most recent version which
|
||||||
|
did not contain the bug.
|
||||||
|
|
||||||
|
If the bug is parser-related, you should include the smallest
|
||||||
|
grammar you can which demonstrates the bug. The grammar file
|
||||||
|
should also be complete (i.e., I should be able to run it through
|
||||||
|
Bison without having to edit or add anything). The smaller and
|
||||||
|
simpler the grammar, the easier it will be to fix the bug.
|
||||||
|
|
||||||
|
Include information about your compilation environment, including
|
||||||
|
your operating system's name and version and your compiler's name
|
||||||
|
and version. If you have trouble compiling, you should also
|
||||||
|
include a transcript of the build session, starting with the
|
||||||
|
invocation of `configure'. Depending on the nature of the bug,
|
||||||
|
you may be asked to send additional files as well (such as
|
||||||
|
`config.h' or `config.cache').
|
||||||
|
|
||||||
|
Patches are most welcome, but not required. That is, do not
|
||||||
|
hesitate to send a bug report just because you can not provide a
|
||||||
|
fix.
|
||||||
|
|
||||||
|
Send bug reports to <[email protected]>.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q5. Will Bison ever have C++ support?
|
||||||
|
|
||||||
|
A5. Yes, it's in the works. Things are very chaotic right now, but
|
||||||
|
what little information floats around is posted to the bug-bison
|
||||||
|
mailing list. If you're interested in testing C++ support when
|
||||||
|
it becomes available, please consider subscribing to the list,
|
||||||
|
especially if you are willing to beta test other releases as
|
||||||
|
well.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q6. What is involved in being a beta tester?
|
||||||
|
|
||||||
|
A6. It's not terribly involved. Basically, you would download a test
|
||||||
|
release, compile it, and use it to build and run a parser or two.
|
||||||
|
After that, you would submit either a bug report or a message
|
||||||
|
saying that everything is okay. It is important to report
|
||||||
|
successes as well as failures because test releases eventually
|
||||||
|
become mainstream releases, but only if they are adequately
|
||||||
|
tested. If no one tests, development is essentially halted.
|
||||||
|
|
||||||
|
Beta testers are particularly needed for operating systems to
|
||||||
|
which I do not have access. I currently have easy access to
|
||||||
|
Linux (x86 glibc 2.1), Solaris (SPARC) 2.6 and 2.7, and HP-UX
|
||||||
|
10.20. Reports about other operating systems are especially
|
||||||
|
welcome.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Q7. How do I join the help-bison and bug-bison mailing lists?
|
||||||
|
|
||||||
|
A7. See http://www.gnu.org/ (the section about "GNU mailing lists")
|
||||||
|
for more information.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
||||||
|
AUTOMAKE_OPTIONS = 1.4
|
||||||
|
|
||||||
|
info_TEXINFOS = bison.texinfo
|
||||||
|
man_MANS = bison.1
|
||||||
|
bison_TEXINFOS = gpl.texi fdl.texi
|
||||||
|
|
||||||
|
EXTRA_DIST = FAQ bison.1 bison.rnh refcard.tex
|
||||||
|
|
||||||
|
CLEANFILES = refcard.dvi refcard.log refcard.ps
|
||||||
|
|
||||||
|
refcard.dvi: refcard.tex
|
||||||
|
tex refcard.tex
|
||||||
|
|
||||||
|
refcard.ps: refcard.dvi
|
||||||
+63
-34
@@ -10,7 +10,11 @@ bison \- GNU Project parser generator (yacc replacement)
|
|||||||
] [
|
] [
|
||||||
.B \-d
|
.B \-d
|
||||||
] [
|
] [
|
||||||
.B \-\-defines
|
.BI \-\-defines= defines-file
|
||||||
|
] [
|
||||||
|
.B \-g
|
||||||
|
] [
|
||||||
|
.BI \-\-graph= graph-file
|
||||||
] [
|
] [
|
||||||
.B \-k
|
.B \-k
|
||||||
] [
|
] [
|
||||||
@@ -32,10 +36,6 @@ bison \- GNU Project parser generator (yacc replacement)
|
|||||||
] [
|
] [
|
||||||
.BI \-\-name-prefix= prefix
|
.BI \-\-name-prefix= prefix
|
||||||
] [
|
] [
|
||||||
.B \-r
|
|
||||||
] [
|
|
||||||
.B \-\-raw
|
|
||||||
] [
|
|
||||||
.B \-t
|
.B \-t
|
||||||
] [
|
] [
|
||||||
.B \-\-debug
|
.B \-\-debug
|
||||||
@@ -75,13 +75,22 @@ Unlike
|
|||||||
.IR yacc ,
|
.IR yacc ,
|
||||||
the generated files do not have fixed names, but instead use the prefix
|
the generated files do not have fixed names, but instead use the prefix
|
||||||
of the input file.
|
of the input file.
|
||||||
|
Moreover, if you need to put
|
||||||
|
.IR C++
|
||||||
|
code in the input file, you can end his name by a C++-like extension
|
||||||
|
(.ypp or .y++), then bison will follow your extension to name the
|
||||||
|
output file (.cpp or .c++).
|
||||||
For instance, a grammar description file named
|
For instance, a grammar description file named
|
||||||
.B parse.y
|
.B parse.yxx
|
||||||
would produce the generated parser in a file named
|
would produce the generated parser in a file named
|
||||||
.BR parse.tab.c ,
|
.BR parse.tab.cxx ,
|
||||||
instead of
|
instead of
|
||||||
.IR yacc 's
|
.IR yacc 's
|
||||||
.BR y.tab.c .
|
.BR y.tab.c
|
||||||
|
or old
|
||||||
|
.IR Bison
|
||||||
|
versions
|
||||||
|
.BR parse.tab.c .
|
||||||
.PP
|
.PP
|
||||||
This description of the options that can be given to
|
This description of the options that can be given to
|
||||||
.I bison
|
.I bison
|
||||||
@@ -118,8 +127,6 @@ chosen as if the input file were named
|
|||||||
.B \-d
|
.B \-d
|
||||||
.br
|
.br
|
||||||
.ns
|
.ns
|
||||||
.TP
|
|
||||||
.B \-\-defines
|
|
||||||
Write an extra output file containing macro definitions for the token
|
Write an extra output file containing macro definitions for the token
|
||||||
type names defined in the grammar and the semantic value type
|
type names defined in the grammar and the semantic value type
|
||||||
.BR YYSTYPE ,
|
.BR YYSTYPE ,
|
||||||
@@ -140,31 +147,46 @@ in a separate source file, because
|
|||||||
needs to be able to refer to token type codes and the variable
|
needs to be able to refer to token type codes and the variable
|
||||||
.BR yylval .
|
.BR yylval .
|
||||||
.TP
|
.TP
|
||||||
.B \-r
|
.BI \-\-defines= defines-file
|
||||||
|
The behaviour of
|
||||||
|
.BI \-\-defines
|
||||||
|
is the same than
|
||||||
|
.BI \-d
|
||||||
|
option.
|
||||||
|
The only difference is that it has an optionnal argument which is
|
||||||
|
the name of the output filename.
|
||||||
|
.TP
|
||||||
|
.BI \-g
|
||||||
.br
|
.br
|
||||||
.ns
|
.ns
|
||||||
|
Output a VCG definition of the LALR(1) grammar automaton computed by
|
||||||
|
Bison. If the grammar file is
|
||||||
|
.BR foo.y
|
||||||
|
, the VCG output file will be
|
||||||
|
.BR foo.vcg .
|
||||||
.TP
|
.TP
|
||||||
.B \-\-raw
|
.BI \-\-graph= graph-file
|
||||||
The token numbers in the \fIname\fB.h\fR file are usually the Yacc compatible
|
The behaviour of
|
||||||
translations. If this switch is specified, Bison token numbers
|
.BI \-\-graph
|
||||||
are output instead. (Yacc numbers start at 257 except for single character
|
is the same than
|
||||||
tokens; Bison assigns token numbers sequentially for all tokens
|
.BI \-g
|
||||||
starting at 3.)
|
option. The only difference is that it has an optionnal argument which
|
||||||
|
is the name of the output graph filename.
|
||||||
.TP
|
.TP
|
||||||
.B \-k
|
.B \-k
|
||||||
.br
|
.br
|
||||||
.ns
|
.ns
|
||||||
.TP
|
.TP
|
||||||
.B \-\-token-table
|
.B \-\-token-table
|
||||||
This switch causes the \fIname\fB.tab.c\fR output to include a list of
|
This switch causes the \fIname\fB.tab.c\fR output to include a list of
|
||||||
token names in order by their token numbers; this is defined in the array
|
token names in order by their token numbers; this is defined in the array
|
||||||
.IR yytname .
|
.IR yytname .
|
||||||
Also generated
|
Also generated
|
||||||
are #defines for
|
are #defines for
|
||||||
.IR YYNTOKENS ,
|
.IR YYNTOKENS ,
|
||||||
.IR YYNNTS ,
|
.IR YYNNTS ,
|
||||||
.IR YYNRULES ,
|
.IR YYNRULES ,
|
||||||
and
|
and
|
||||||
.IR YYNSTATES .
|
.IR YYNSTATES .
|
||||||
.TP
|
.TP
|
||||||
.B \-l
|
.B \-l
|
||||||
@@ -188,10 +210,10 @@ parser file, treating it an independent source file in its own right.
|
|||||||
.TP
|
.TP
|
||||||
.B \-\-no-parser
|
.B \-\-no-parser
|
||||||
Do not generate the parser code into the output; generate only
|
Do not generate the parser code into the output; generate only
|
||||||
declarations. The generated \fIname\fB.tab.c\fR file will have only
|
declarations. The generated \fIname\fB.tab.c\fR file will have only
|
||||||
constant declarations. In addition, a \fIname\fB.act\fR file is
|
constant declarations. In addition, a \fIname\fB.act\fR file is
|
||||||
generated containing a switch statement body containing all the
|
generated containing a switch statement body containing all the
|
||||||
translated actions.
|
translated actions.
|
||||||
.TP
|
.TP
|
||||||
.BI \-o " outfile"
|
.BI \-o " outfile"
|
||||||
.br
|
.br
|
||||||
@@ -224,7 +246,7 @@ The precise list of symbols renamed is
|
|||||||
.BR yylex ,
|
.BR yylex ,
|
||||||
.BR yyerror ,
|
.BR yyerror ,
|
||||||
.BR yylval ,
|
.BR yylval ,
|
||||||
.BR yychar ,
|
.BR yychar ,
|
||||||
and
|
and
|
||||||
.BR yydebug .
|
.BR yydebug .
|
||||||
.sp
|
.sp
|
||||||
@@ -240,9 +262,9 @@ and so on.
|
|||||||
.ns
|
.ns
|
||||||
.TP
|
.TP
|
||||||
.B \-\-debug
|
.B \-\-debug
|
||||||
Output a definition of the macro
|
In the parser file, define the macro
|
||||||
.B YYDEBUG
|
.B YYDEBUG
|
||||||
into the parser file,
|
to 1 if it is not already defined,
|
||||||
so that the debugging facilities are compiled.
|
so that the debugging facilities are compiled.
|
||||||
.TP
|
.TP
|
||||||
.B \-v
|
.B \-v
|
||||||
@@ -320,14 +342,21 @@ bison \-y $*
|
|||||||
.ft R
|
.ft R
|
||||||
.sp
|
.sp
|
||||||
.RE
|
.RE
|
||||||
.PP
|
|
||||||
The long-named options can be introduced with `+' as well as `\-\-',
|
|
||||||
for compatibility with previous releases. Eventually support for `+'
|
|
||||||
will be removed, because it is incompatible with the POSIX.2 standard.
|
|
||||||
.SH FILES
|
.SH FILES
|
||||||
/usr/local/lib/bison.simple simple parser
|
/usr/local/share/bison/bison.simple simple parser
|
||||||
.br
|
.br
|
||||||
/usr/local/lib/bison.hairy complicated parser
|
/usr/local/share/bison/bison.hairy complicated parser
|
||||||
|
.SH "ENVIRONMENT VARIABLES"
|
||||||
|
.TP
|
||||||
|
.SM BISON_SIMPLE
|
||||||
|
If this is set, it specifies the location in which the
|
||||||
|
.B bison.simple
|
||||||
|
parser can be found.
|
||||||
|
.TP
|
||||||
|
.SM BISON_HAIRY
|
||||||
|
If this is set, it specifies the location in which the
|
||||||
|
.B bison.hairy
|
||||||
|
parser can be found.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.IR yacc (1)
|
.IR yacc (1)
|
||||||
.br
|
.br
|
||||||
|
|||||||
+2
-1
@@ -56,7 +56,8 @@ foo_tab.c.
|
|||||||
.indent -1
|
.indent -1
|
||||||
2 /DEBUG
|
2 /DEBUG
|
||||||
.skip
|
.skip
|
||||||
Output a definition of the macro YYDEBUG into the parser file,
|
In the parser file,
|
||||||
|
define the macro YYDEBUG to 1 if it is not already defined,
|
||||||
so that the debugging facilities are compiled.
|
so that the debugging facilities are compiled.
|
||||||
.skip
|
.skip
|
||||||
.indent -1
|
.indent -1
|
||||||
|
|||||||
+1295
-1041
File diff suppressed because it is too large
Load Diff
+401
@@ -0,0 +1,401 @@
|
|||||||
|
@node GNU Free Documentation License
|
||||||
|
@appendixsec GNU Free Documentation License
|
||||||
|
|
||||||
|
@cindex FDL, GNU Free Documentation License
|
||||||
|
@center Version 1.1, March 2000
|
||||||
|
|
||||||
|
@display
|
||||||
|
Copyright @copyright{} 2000 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
@end display
|
||||||
|
|
||||||
|
@enumerate 0
|
||||||
|
@item
|
||||||
|
PREAMBLE
|
||||||
|
|
||||||
|
The purpose of this License is to make a manual, textbook, or other
|
||||||
|
written document @dfn{free} in the sense of freedom: to assure everyone
|
||||||
|
the effective freedom to copy and redistribute it, with or without
|
||||||
|
modifying it, either commercially or noncommercially. Secondarily,
|
||||||
|
this License preserves for the author and publisher a way to get
|
||||||
|
credit for their work, while not being considered responsible for
|
||||||
|
modifications made by others.
|
||||||
|
|
||||||
|
This License is a kind of ``copyleft'', which means that derivative
|
||||||
|
works of the document must themselves be free in the same sense. It
|
||||||
|
complements the GNU General Public License, which is a copyleft
|
||||||
|
license designed for free software.
|
||||||
|
|
||||||
|
We have designed this License in order to use it for manuals for free
|
||||||
|
software, because free software needs free documentation: a free
|
||||||
|
program should come with manuals providing the same freedoms that the
|
||||||
|
software does. But this License is not limited to software manuals;
|
||||||
|
it can be used for any textual work, regardless of subject matter or
|
||||||
|
whether it is published as a printed book. We recommend this License
|
||||||
|
principally for works whose purpose is instruction or reference.
|
||||||
|
|
||||||
|
@item
|
||||||
|
APPLICABILITY AND DEFINITIONS
|
||||||
|
|
||||||
|
This License applies to any manual or other work that contains a
|
||||||
|
notice placed by the copyright holder saying it can be distributed
|
||||||
|
under the terms of this License. The ``Document'', below, refers to any
|
||||||
|
such manual or work. Any member of the public is a licensee, and is
|
||||||
|
addressed as ``you''.
|
||||||
|
|
||||||
|
A ``Modified Version'' of the Document means any work containing the
|
||||||
|
Document or a portion of it, either copied verbatim, or with
|
||||||
|
modifications and/or translated into another language.
|
||||||
|
|
||||||
|
A ``Secondary Section'' is a named appendix or a front-matter section of
|
||||||
|
the Document that deals exclusively with the relationship of the
|
||||||
|
publishers or authors of the Document to the Document's overall subject
|
||||||
|
(or to related matters) and contains nothing that could fall directly
|
||||||
|
within that overall subject. (For example, if the Document is in part a
|
||||||
|
textbook of mathematics, a Secondary Section may not explain any
|
||||||
|
mathematics.) The relationship could be a matter of historical
|
||||||
|
connection with the subject or with related matters, or of legal,
|
||||||
|
commercial, philosophical, ethical or political position regarding
|
||||||
|
them.
|
||||||
|
|
||||||
|
The ``Invariant Sections'' are certain Secondary Sections whose titles
|
||||||
|
are designated, as being those of Invariant Sections, in the notice
|
||||||
|
that says that the Document is released under this License.
|
||||||
|
|
||||||
|
The ``Cover Texts'' are certain short passages of text that are listed,
|
||||||
|
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
||||||
|
the Document is released under this License.
|
||||||
|
|
||||||
|
A ``Transparent'' copy of the Document means a machine-readable copy,
|
||||||
|
represented in a format whose specification is available to the
|
||||||
|
general public, whose contents can be viewed and edited directly and
|
||||||
|
straightforwardly with generic text editors or (for images composed of
|
||||||
|
pixels) generic paint programs or (for drawings) some widely available
|
||||||
|
drawing editor, and that is suitable for input to text formatters or
|
||||||
|
for automatic translation to a variety of formats suitable for input
|
||||||
|
to text formatters. A copy made in an otherwise Transparent file
|
||||||
|
format whose markup has been designed to thwart or discourage
|
||||||
|
subsequent modification by readers is not Transparent. A copy that is
|
||||||
|
not ``Transparent'' is called ``Opaque''.
|
||||||
|
|
||||||
|
Examples of suitable formats for Transparent copies include plain
|
||||||
|
@sc{ascii} without markup, Texinfo input format, La@TeX{} input format,
|
||||||
|
@acronym{SGML} or @acronym{XML} using a publicly available
|
||||||
|
@acronym{DTD}, and standard-conforming simple @acronym{HTML} designed
|
||||||
|
for human modification. Opaque formats include PostScript,
|
||||||
|
@acronym{PDF}, proprietary formats that can be read and edited only by
|
||||||
|
proprietary word processors, @acronym{SGML} or @acronym{XML} for which
|
||||||
|
the @acronym{DTD} and/or processing tools are not generally available,
|
||||||
|
and the machine-generated @acronym{HTML} produced by some word
|
||||||
|
processors for output purposes only.
|
||||||
|
|
||||||
|
The ``Title Page'' means, for a printed book, the title page itself,
|
||||||
|
plus such following pages as are needed to hold, legibly, the material
|
||||||
|
this License requires to appear in the title page. For works in
|
||||||
|
formats which do not have any title page as such, ``Title Page'' means
|
||||||
|
the text near the most prominent appearance of the work's title,
|
||||||
|
preceding the beginning of the body of the text.
|
||||||
|
|
||||||
|
@item
|
||||||
|
VERBATIM COPYING
|
||||||
|
|
||||||
|
You may copy and distribute the Document in any medium, either
|
||||||
|
commercially or noncommercially, provided that this License, the
|
||||||
|
copyright notices, and the license notice saying this License applies
|
||||||
|
to the Document are reproduced in all copies, and that you add no other
|
||||||
|
conditions whatsoever to those of this License. You may not use
|
||||||
|
technical measures to obstruct or control the reading or further
|
||||||
|
copying of the copies you make or distribute. However, you may accept
|
||||||
|
compensation in exchange for copies. If you distribute a large enough
|
||||||
|
number of copies you must also follow the conditions in section 3.
|
||||||
|
|
||||||
|
You may also lend copies, under the same conditions stated above, and
|
||||||
|
you may publicly display copies.
|
||||||
|
|
||||||
|
@item
|
||||||
|
COPYING IN QUANTITY
|
||||||
|
|
||||||
|
If you publish printed copies of the Document numbering more than 100,
|
||||||
|
and the Document's license notice requires Cover Texts, you must enclose
|
||||||
|
the copies in covers that carry, clearly and legibly, all these Cover
|
||||||
|
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
||||||
|
the back cover. Both covers must also clearly and legibly identify
|
||||||
|
you as the publisher of these copies. The front cover must present
|
||||||
|
the full title with all words of the title equally prominent and
|
||||||
|
visible. You may add other material on the covers in addition.
|
||||||
|
Copying with changes limited to the covers, as long as they preserve
|
||||||
|
the title of the Document and satisfy these conditions, can be treated
|
||||||
|
as verbatim copying in other respects.
|
||||||
|
|
||||||
|
If the required texts for either cover are too voluminous to fit
|
||||||
|
legibly, you should put the first ones listed (as many as fit
|
||||||
|
reasonably) on the actual cover, and continue the rest onto adjacent
|
||||||
|
pages.
|
||||||
|
|
||||||
|
If you publish or distribute Opaque copies of the Document numbering
|
||||||
|
more than 100, you must either include a machine-readable Transparent
|
||||||
|
copy along with each Opaque copy, or state in or with each Opaque copy
|
||||||
|
a publicly-accessible computer-network location containing a complete
|
||||||
|
Transparent copy of the Document, free of added material, which the
|
||||||
|
general network-using public has access to download anonymously at no
|
||||||
|
charge using public-standard network protocols. If you use the latter
|
||||||
|
option, you must take reasonably prudent steps, when you begin
|
||||||
|
distribution of Opaque copies in quantity, to ensure that this
|
||||||
|
Transparent copy will remain thus accessible at the stated location
|
||||||
|
until at least one year after the last time you distribute an Opaque
|
||||||
|
copy (directly or through your agents or retailers) of that edition to
|
||||||
|
the public.
|
||||||
|
|
||||||
|
It is requested, but not required, that you contact the authors of the
|
||||||
|
Document well before redistributing any large number of copies, to give
|
||||||
|
them a chance to provide you with an updated version of the Document.
|
||||||
|
|
||||||
|
@item
|
||||||
|
MODIFICATIONS
|
||||||
|
|
||||||
|
You may copy and distribute a Modified Version of the Document under
|
||||||
|
the conditions of sections 2 and 3 above, provided that you release
|
||||||
|
the Modified Version under precisely this License, with the Modified
|
||||||
|
Version filling the role of the Document, thus licensing distribution
|
||||||
|
and modification of the Modified Version to whoever possesses a copy
|
||||||
|
of it. In addition, you must do these things in the Modified Version:
|
||||||
|
|
||||||
|
@enumerate A
|
||||||
|
@item
|
||||||
|
Use in the Title Page (and on the covers, if any) a title distinct
|
||||||
|
from that of the Document, and from those of previous versions
|
||||||
|
(which should, if there were any, be listed in the History section
|
||||||
|
of the Document). You may use the same title as a previous version
|
||||||
|
if the original publisher of that version gives permission.
|
||||||
|
|
||||||
|
@item
|
||||||
|
List on the Title Page, as authors, one or more persons or entities
|
||||||
|
responsible for authorship of the modifications in the Modified
|
||||||
|
Version, together with at least five of the principal authors of the
|
||||||
|
Document (all of its principal authors, if it has less than five).
|
||||||
|
|
||||||
|
@item
|
||||||
|
State on the Title page the name of the publisher of the
|
||||||
|
Modified Version, as the publisher.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Preserve all the copyright notices of the Document.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Add an appropriate copyright notice for your modifications
|
||||||
|
adjacent to the other copyright notices.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Include, immediately after the copyright notices, a license notice
|
||||||
|
giving the public permission to use the Modified Version under the
|
||||||
|
terms of this License, in the form shown in the Addendum below.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Preserve in that license notice the full lists of Invariant Sections
|
||||||
|
and required Cover Texts given in the Document's license notice.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Include an unaltered copy of this License.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Preserve the section entitled ``History'', and its title, and add to
|
||||||
|
it an item stating at least the title, year, new authors, and
|
||||||
|
publisher of the Modified Version as given on the Title Page. If
|
||||||
|
there is no section entitled ``History'' in the Document, create one
|
||||||
|
stating the title, year, authors, and publisher of the Document as
|
||||||
|
given on its Title Page, then add an item describing the Modified
|
||||||
|
Version as stated in the previous sentence.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Preserve the network location, if any, given in the Document for
|
||||||
|
public access to a Transparent copy of the Document, and likewise
|
||||||
|
the network locations given in the Document for previous versions
|
||||||
|
it was based on. These may be placed in the ``History'' section.
|
||||||
|
You may omit a network location for a work that was published at
|
||||||
|
least four years before the Document itself, or if the original
|
||||||
|
publisher of the version it refers to gives permission.
|
||||||
|
|
||||||
|
@item
|
||||||
|
In any section entitled ``Acknowledgments'' or ``Dedications'',
|
||||||
|
preserve the section's title, and preserve in the section all the
|
||||||
|
substance and tone of each of the contributor acknowledgments
|
||||||
|
and/or dedications given therein.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Preserve all the Invariant Sections of the Document,
|
||||||
|
unaltered in their text and in their titles. Section numbers
|
||||||
|
or the equivalent are not considered part of the section titles.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Delete any section entitled ``Endorsements''. Such a section
|
||||||
|
may not be included in the Modified Version.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Do not retitle any existing section as ``Endorsements''
|
||||||
|
or to conflict in title with any Invariant Section.
|
||||||
|
@end enumerate
|
||||||
|
|
||||||
|
If the Modified Version includes new front-matter sections or
|
||||||
|
appendices that qualify as Secondary Sections and contain no material
|
||||||
|
copied from the Document, you may at your option designate some or all
|
||||||
|
of these sections as invariant. To do this, add their titles to the
|
||||||
|
list of Invariant Sections in the Modified Version's license notice.
|
||||||
|
These titles must be distinct from any other section titles.
|
||||||
|
|
||||||
|
You may add a section entitled ``Endorsements'', provided it contains
|
||||||
|
nothing but endorsements of your Modified Version by various
|
||||||
|
parties---for example, statements of peer review or that the text has
|
||||||
|
been approved by an organization as the authoritative definition of a
|
||||||
|
standard.
|
||||||
|
|
||||||
|
You may add a passage of up to five words as a Front-Cover Text, and a
|
||||||
|
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
||||||
|
of Cover Texts in the Modified Version. Only one passage of
|
||||||
|
Front-Cover Text and one of Back-Cover Text may be added by (or
|
||||||
|
through arrangements made by) any one entity. If the Document already
|
||||||
|
includes a cover text for the same cover, previously added by you or
|
||||||
|
by arrangement made by the same entity you are acting on behalf of,
|
||||||
|
you may not add another; but you may replace the old one, on explicit
|
||||||
|
permission from the previous publisher that added the old one.
|
||||||
|
|
||||||
|
The author(s) and publisher(s) of the Document do not by this License
|
||||||
|
give permission to use their names for publicity for or to assert or
|
||||||
|
imply endorsement of any Modified Version.
|
||||||
|
|
||||||
|
@item
|
||||||
|
COMBINING DOCUMENTS
|
||||||
|
|
||||||
|
You may combine the Document with other documents released under this
|
||||||
|
License, under the terms defined in section 4 above for modified
|
||||||
|
versions, provided that you include in the combination all of the
|
||||||
|
Invariant Sections of all of the original documents, unmodified, and
|
||||||
|
list them all as Invariant Sections of your combined work in its
|
||||||
|
license notice.
|
||||||
|
|
||||||
|
The combined work need only contain one copy of this License, and
|
||||||
|
multiple identical Invariant Sections may be replaced with a single
|
||||||
|
copy. If there are multiple Invariant Sections with the same name but
|
||||||
|
different contents, make the title of each such section unique by
|
||||||
|
adding at the end of it, in parentheses, the name of the original
|
||||||
|
author or publisher of that section if known, or else a unique number.
|
||||||
|
Make the same adjustment to the section titles in the list of
|
||||||
|
Invariant Sections in the license notice of the combined work.
|
||||||
|
|
||||||
|
In the combination, you must combine any sections entitled ``History''
|
||||||
|
in the various original documents, forming one section entitled
|
||||||
|
``History''; likewise combine any sections entitled ``Acknowledgments'',
|
||||||
|
and any sections entitled ``Dedications''. You must delete all sections
|
||||||
|
entitled ``Endorsements.''
|
||||||
|
|
||||||
|
@item
|
||||||
|
COLLECTIONS OF DOCUMENTS
|
||||||
|
|
||||||
|
You may make a collection consisting of the Document and other documents
|
||||||
|
released under this License, and replace the individual copies of this
|
||||||
|
License in the various documents with a single copy that is included in
|
||||||
|
the collection, provided that you follow the rules of this License for
|
||||||
|
verbatim copying of each of the documents in all other respects.
|
||||||
|
|
||||||
|
You may extract a single document from such a collection, and distribute
|
||||||
|
it individually under this License, provided you insert a copy of this
|
||||||
|
License into the extracted document, and follow this License in all
|
||||||
|
other respects regarding verbatim copying of that document.
|
||||||
|
|
||||||
|
@item
|
||||||
|
AGGREGATION WITH INDEPENDENT WORKS
|
||||||
|
|
||||||
|
A compilation of the Document or its derivatives with other separate
|
||||||
|
and independent documents or works, in or on a volume of a storage or
|
||||||
|
distribution medium, does not as a whole count as a Modified Version
|
||||||
|
of the Document, provided no compilation copyright is claimed for the
|
||||||
|
compilation. Such a compilation is called an ``aggregate'', and this
|
||||||
|
License does not apply to the other self-contained works thus compiled
|
||||||
|
with the Document, on account of their being thus compiled, if they
|
||||||
|
are not themselves derivative works of the Document.
|
||||||
|
|
||||||
|
If the Cover Text requirement of section 3 is applicable to these
|
||||||
|
copies of the Document, then if the Document is less than one quarter
|
||||||
|
of the entire aggregate, the Document's Cover Texts may be placed on
|
||||||
|
covers that surround only the Document within the aggregate.
|
||||||
|
Otherwise they must appear on covers around the whole aggregate.
|
||||||
|
|
||||||
|
@item
|
||||||
|
TRANSLATION
|
||||||
|
|
||||||
|
Translation is considered a kind of modification, so you may
|
||||||
|
distribute translations of the Document under the terms of section 4.
|
||||||
|
Replacing Invariant Sections with translations requires special
|
||||||
|
permission from their copyright holders, but you may include
|
||||||
|
translations of some or all Invariant Sections in addition to the
|
||||||
|
original versions of these Invariant Sections. You may include a
|
||||||
|
translation of this License provided that you also include the
|
||||||
|
original English version of this License. In case of a disagreement
|
||||||
|
between the translation and the original English version of this
|
||||||
|
License, the original English version will prevail.
|
||||||
|
|
||||||
|
@item
|
||||||
|
TERMINATION
|
||||||
|
|
||||||
|
You may not copy, modify, sublicense, or distribute the Document except
|
||||||
|
as expressly provided for under this License. Any other attempt to
|
||||||
|
copy, modify, sublicense or distribute the Document is void, and will
|
||||||
|
automatically terminate your rights under this License. However,
|
||||||
|
parties who have received copies, or rights, from you under this
|
||||||
|
License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
@item
|
||||||
|
FUTURE REVISIONS OF THIS LICENSE
|
||||||
|
|
||||||
|
The Free Software Foundation may publish new, revised versions
|
||||||
|
of the GNU Free Documentation License from time to time. Such new
|
||||||
|
versions will be similar in spirit to the present version, but may
|
||||||
|
differ in detail to address new problems or concerns. See
|
||||||
|
@uref{http://www.gnu.org/copyleft/}.
|
||||||
|
|
||||||
|
Each version of the License is given a distinguishing version number.
|
||||||
|
If the Document specifies that a particular numbered version of this
|
||||||
|
License ``or any later version'' applies to it, you have the option of
|
||||||
|
following the terms and conditions either of that specified version or
|
||||||
|
of any later version that has been published (not as a draft) by the
|
||||||
|
Free Software Foundation. If the Document does not specify a version
|
||||||
|
number of this License, you may choose any version ever published (not
|
||||||
|
as a draft) by the Free Software Foundation.
|
||||||
|
@end enumerate
|
||||||
|
|
||||||
|
@page
|
||||||
|
@appendixsubsec ADDENDUM: How to use this License for your documents
|
||||||
|
|
||||||
|
To use this License in a document you have written, include a copy of
|
||||||
|
the License in the document and put the following copyright and
|
||||||
|
license notices just after the title page:
|
||||||
|
|
||||||
|
@smallexample
|
||||||
|
@group
|
||||||
|
Copyright (C) @var{year} @var{your name}.
|
||||||
|
Permission is granted to copy, distribute and/or modify this document
|
||||||
|
under the terms of the GNU Free Documentation License, Version 1.1
|
||||||
|
or any later version published by the Free Software Foundation;
|
||||||
|
with the Invariant Sections being @var{list their titles}, with the
|
||||||
|
Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
|
||||||
|
A copy of the license is included in the section entitled ``GNU
|
||||||
|
Free Documentation License''.
|
||||||
|
@end group
|
||||||
|
@end smallexample
|
||||||
|
|
||||||
|
If you have no Invariant Sections, write ``with no Invariant Sections''
|
||||||
|
instead of saying which ones are invariant. If you have no
|
||||||
|
Front-Cover Texts, write ``no Front-Cover Texts'' instead of
|
||||||
|
``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
|
||||||
|
|
||||||
|
If your document contains nontrivial examples of program code, we
|
||||||
|
recommend releasing these examples in parallel under your choice of
|
||||||
|
free software license, such as the GNU General Public License,
|
||||||
|
to permit their use in free software.
|
||||||
|
|
||||||
|
@c Local Variables:
|
||||||
|
@c ispell-local-pdict: "ispell-dict"
|
||||||
|
@c End:
|
||||||
+392
@@ -0,0 +1,392 @@
|
|||||||
|
@node Copying
|
||||||
|
@unnumbered GNU GENERAL PUBLIC LICENSE
|
||||||
|
@center Version 2, June 1991
|
||||||
|
|
||||||
|
@c This file is intended to be included in another file.
|
||||||
|
|
||||||
|
@display
|
||||||
|
Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
@end display
|
||||||
|
|
||||||
|
@unnumberedsec Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software---to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
@iftex
|
||||||
|
@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
@end iftex
|
||||||
|
@ifinfo
|
||||||
|
@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
@end ifinfo
|
||||||
|
|
||||||
|
@enumerate 0
|
||||||
|
@item
|
||||||
|
This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The ``Program'', below,
|
||||||
|
refers to any such program or work, and a ``work based on the Program''
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term ``modification''.) Each licensee is addressed as ``you''.
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
@item
|
||||||
|
You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
@item
|
||||||
|
You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
@enumerate a
|
||||||
|
@item
|
||||||
|
You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
@item
|
||||||
|
You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
@item
|
||||||
|
If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
@end enumerate
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
@item
|
||||||
|
You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
@enumerate a
|
||||||
|
@item
|
||||||
|
Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
@item
|
||||||
|
Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
@item
|
||||||
|
Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
@end enumerate
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
@item
|
||||||
|
You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
@item
|
||||||
|
You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
@item
|
||||||
|
Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
@item
|
||||||
|
If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
@item
|
||||||
|
If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
@item
|
||||||
|
The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and ``any
|
||||||
|
later version'', you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
@item
|
||||||
|
If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
@iftex
|
||||||
|
@heading NO WARRANTY
|
||||||
|
@end iftex
|
||||||
|
@ifinfo
|
||||||
|
@center NO WARRANTY
|
||||||
|
@end ifinfo
|
||||||
|
|
||||||
|
@item
|
||||||
|
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
@item
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
@end enumerate
|
||||||
|
|
||||||
|
@iftex
|
||||||
|
@heading END OF TERMS AND CONDITIONS
|
||||||
|
@end iftex
|
||||||
|
@ifinfo
|
||||||
|
@center END OF TERMS AND CONDITIONS
|
||||||
|
@end ifinfo
|
||||||
|
|
||||||
|
@page
|
||||||
|
@unnumberedsec Appendix: How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the ``copyright'' line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
@smallexample
|
||||||
|
@var{one line to give the program's name and a brief idea of what it does.}
|
||||||
|
Copyright (C) @var{yyyy} @var{name of author}
|
||||||
|
|
||||||
|
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.
|
||||||
|
@end smallexample
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
@smallexample
|
||||||
|
Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author}
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
@end smallexample
|
||||||
|
|
||||||
|
The hypothetical commands @samp{show w} and @samp{show c} should show
|
||||||
|
the appropriate parts of the General Public License. Of course, the
|
||||||
|
commands you use may be called something other than @samp{show w} and
|
||||||
|
@samp{show c}; they could even be mouse-clicks or menu items---whatever
|
||||||
|
suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a ``copyright disclaimer'' for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
@example
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
@var{signature of Ty Coon}, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
@end example
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Library General
|
||||||
|
Public License instead of this License.
|
||||||
+512
@@ -0,0 +1,512 @@
|
|||||||
|
% Bison Quick Reference
|
||||||
|
|
||||||
|
%**start of header
|
||||||
|
\newcount\columnsperpage
|
||||||
|
|
||||||
|
% This file can be printed with 1 or 2 columns per page (see below).
|
||||||
|
% Specify how many you want here. Nothing else needs to be changed
|
||||||
|
% unless you are maintaining the documentation.
|
||||||
|
% For printing reference cards to use in books, specify one column
|
||||||
|
% per page and reduce to 80%.
|
||||||
|
% Note that if columnsperpage is set to 2, there will be a few overfull
|
||||||
|
% boxes, but they are not serious. Just uncomment \finalout.
|
||||||
|
|
||||||
|
\columnsperpage=1
|
||||||
|
|
||||||
|
% comment out this line if you want page numbers to appear.
|
||||||
|
\nopagenumbers
|
||||||
|
|
||||||
|
\def\finalout{\overfullrule=0pt}
|
||||||
|
%\finalout
|
||||||
|
|
||||||
|
% Copyright (c) 1998, 2001 Free Software Foundation, Inc.
|
||||||
|
%
|
||||||
|
% This file is part of Bison.
|
||||||
|
%
|
||||||
|
% Bison is free software; you can redistribute them and/or modify them
|
||||||
|
% 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 either Flex or Bison; see the file COPYING. If not, write
|
||||||
|
% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
% Boston, MA 02111-1307, USA.
|
||||||
|
%
|
||||||
|
% This file is intended to be processed by plain TeX (TeX82).
|
||||||
|
%
|
||||||
|
% The final reference card has two columns:
|
||||||
|
% This file can be used to produce it in any of three ways:
|
||||||
|
% 1 column per page
|
||||||
|
% produces two separate pages, each of which needs to be reduced to 80%.
|
||||||
|
% This gives the best resolution.
|
||||||
|
% 2 columns per page
|
||||||
|
% produces a single page.
|
||||||
|
% You will still need to cut and paste.
|
||||||
|
% Which mode to use is controlled by setting \columnsperpage above.
|
||||||
|
%
|
||||||
|
% Authors:
|
||||||
|
% Brendan Kehoe
|
||||||
|
% UUCP: widener!brendan
|
||||||
|
% Internet: [email protected]
|
||||||
|
%
|
||||||
|
% Gavin Nicol
|
||||||
|
% Internet: [email protected]
|
||||||
|
%
|
||||||
|
% This refcard format was created by Steve Gildea.
|
||||||
|
%
|
||||||
|
% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik
|
||||||
|
% for their many good ideas.
|
||||||
|
|
||||||
|
% We only change the following to change the version numbers and
|
||||||
|
% such.
|
||||||
|
|
||||||
|
\def\bisonversion{1.31} % the bison version
|
||||||
|
|
||||||
|
\def\refcardversion{0.5} % reference card version
|
||||||
|
\def\month{November} % month
|
||||||
|
\def\year{2001} % year
|
||||||
|
\def\version{\month\ \year, Bison Refcard Version \refcardversion}
|
||||||
|
|
||||||
|
% for copyright notices
|
||||||
|
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
|
||||||
|
\def\medium{\mediumfont\textfont2=\mediumsy\baselineskip=.8\baselineskip}
|
||||||
|
|
||||||
|
\def\copyrightnotice{
|
||||||
|
\vskip .15ex plus .25 fill
|
||||||
|
\begingroup\medium
|
||||||
|
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\centerline{\version}
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\centerline{designed by Brendan Kehoe and Gavin Nicol}
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\centerline{for Bison \bisonversion}
|
||||||
|
|
||||||
|
Permission is granted to make and distribute copies of this card
|
||||||
|
provided the copyright notice and this permission notice
|
||||||
|
are preserved on all copies.
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
For information, write to the:
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\centerline{Free Software Foundation, Inc.}
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\centerline{59 Temple Place - Suite 330}
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\centerline{Boston, MA 02111-1307 USA}
|
||||||
|
\endgroup}
|
||||||
|
|
||||||
|
%%%% smallcopyrightnotice for two column printing on one page.
|
||||||
|
\def\smallcopyrightnotice{
|
||||||
|
\vskip .15ex plus .25 fill
|
||||||
|
\begingroup\small
|
||||||
|
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\centerline{\version}
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\centerline{designed by Brendan Kehoe and Gavin Nicol}
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\centerline{for Bison \bisonversion}
|
||||||
|
|
||||||
|
Permission is granted to make and distribute copies of this card
|
||||||
|
provided the copyright notice and this permission notice
|
||||||
|
are preserved on all copies.
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
For information, write to the:
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\centerline{Free Software Foundation, Inc.}
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\centerline{59 Temple Place - Suite 330}
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\centerline{Boston, MA 02111-1307 USA}
|
||||||
|
\endgroup}
|
||||||
|
|
||||||
|
% make \bye not \outer so that the \def\bye in the \else clause below
|
||||||
|
% can be scanned without complaint.
|
||||||
|
\def\bye{\par\vfill\supereject\end}
|
||||||
|
|
||||||
|
\newdimen\intercolumnskip
|
||||||
|
\newbox\columna
|
||||||
|
\newbox\columnb
|
||||||
|
|
||||||
|
\def\ncolumns{\the\columnsperpage}
|
||||||
|
|
||||||
|
\message{[\ncolumns\space
|
||||||
|
column\if 1\ncolumns\else s\fi\space per page]}
|
||||||
|
|
||||||
|
\def\scaledmag#1{ scaled \magstep #1}
|
||||||
|
|
||||||
|
% This multi-way format was designed by Stephen Gildea
|
||||||
|
% October 1986.
|
||||||
|
\if 1\ncolumns
|
||||||
|
\hsize 4in
|
||||||
|
\vsize 10in
|
||||||
|
% We want output .3 inch *from top of paper edge*; i.e. -.7in from TeX default
|
||||||
|
\voffset -.7in % Comment out for xdvi viewing; include for printing.
|
||||||
|
\font\titlefont=\fontname\tenbf \scaledmag3
|
||||||
|
\font\headingfont=\fontname\tenbf \scaledmag2
|
||||||
|
\font\smallfont=cmr6
|
||||||
|
\font\smallsy=cmsy6
|
||||||
|
\font\mediumfont=cmr10
|
||||||
|
\font\mediumsy=cmsy10
|
||||||
|
|
||||||
|
|
||||||
|
% two lines below commented out in Yet Another Attempt to eliminate
|
||||||
|
% page numbers from the output.
|
||||||
|
\footline{\hss}
|
||||||
|
% \footline{\hss\folio}
|
||||||
|
\def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
|
||||||
|
\else
|
||||||
|
\hsize 3.2in
|
||||||
|
\vsize 7.95in
|
||||||
|
\hoffset -.75in
|
||||||
|
\voffset -.745in
|
||||||
|
\font\titlefont=cmbx10 \scaledmag2
|
||||||
|
\font\headingfont=cmbx10 \scaledmag1
|
||||||
|
\font\smallfont=cmr6
|
||||||
|
\font\smallsy=cmsy6
|
||||||
|
\font\eightrm=cmr8
|
||||||
|
\font\eightbf=cmbx8
|
||||||
|
\font\eightit=cmti8
|
||||||
|
\font\eighttt=cmtt8
|
||||||
|
\font\eightsy=cmsy8
|
||||||
|
\textfont0=\eightrm
|
||||||
|
\textfont2=\eightsy
|
||||||
|
\def\rm{\eightrm}
|
||||||
|
\def\bf{\eightbf}
|
||||||
|
\def\it{\eightit}
|
||||||
|
\def\tt{\eighttt}
|
||||||
|
%%%% Reduce skip from .8 to .75 to permit printing on two pages.
|
||||||
|
\normalbaselineskip=.75\normalbaselineskip
|
||||||
|
\normallineskip=.75\normallineskip
|
||||||
|
\normallineskiplimit=.75\normallineskiplimit
|
||||||
|
\normalbaselines\rm %make definitions take effect
|
||||||
|
|
||||||
|
\if 2\ncolumns
|
||||||
|
\let\maxcolumn=b
|
||||||
|
\footline{\hss\rm\folio\hss}
|
||||||
|
\def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
|
||||||
|
\font\mediumfont=cmr10
|
||||||
|
\font\mediumsy=cmsy10
|
||||||
|
|
||||||
|
% Leave 3 column code here in case size increases.
|
||||||
|
\else \if 3\ncolumns
|
||||||
|
\let\maxcolumn=c
|
||||||
|
\nopagenumbers
|
||||||
|
\font\mediumfont=cmr10
|
||||||
|
\font\mediumsy=cmsy10
|
||||||
|
|
||||||
|
\else
|
||||||
|
\errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
|
||||||
|
\errmessage{Illegal number of columns per page}
|
||||||
|
\fi\fi
|
||||||
|
|
||||||
|
\intercolumnskip=.46in
|
||||||
|
\def\abc{a}
|
||||||
|
\output={%
|
||||||
|
% This next line is useful when designing the layout.
|
||||||
|
%\immediate\write16{Column \folio\abc\space starts with \firstmark}
|
||||||
|
\if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
|
||||||
|
\else\if a\abc
|
||||||
|
\global\setbox\columna\columnbox \global\def\abc{b}
|
||||||
|
%% in case we never use \columnb (two-column mode)
|
||||||
|
\global\setbox\columnb\hbox to -\intercolumnskip{}
|
||||||
|
\else
|
||||||
|
\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
|
||||||
|
\def\multicolumnformat{\shipout\vbox{\makeheadline
|
||||||
|
\hbox{\box\columna\hskip\intercolumnskip
|
||||||
|
\box\columnb\hskip\intercolumnskip\columnbox}
|
||||||
|
\makefootline}\advancepageno}
|
||||||
|
\def\columnbox{\leftline{\pagebody}}
|
||||||
|
|
||||||
|
\def\bye{\par\vfill\supereject
|
||||||
|
\if a\abc \else\null\vfill\eject\fi
|
||||||
|
\if a\abc \else\null\vfill\eject\fi
|
||||||
|
\end}
|
||||||
|
\fi
|
||||||
|
|
||||||
|
% we won't be using math mode much, so redefine some of the characters
|
||||||
|
% we might want to talk about
|
||||||
|
\catcode`\^=12
|
||||||
|
\catcode`\_=12
|
||||||
|
|
||||||
|
\chardef\\=`\\
|
||||||
|
\chardef\{=`\{
|
||||||
|
\chardef\}=`\}
|
||||||
|
|
||||||
|
\hyphenation{mini-buf-fer}
|
||||||
|
|
||||||
|
\parindent 0pt
|
||||||
|
% \parskip 1ex plus .5ex minus .5ex
|
||||||
|
\parskip 0.5ex plus .25ex minus .25ex
|
||||||
|
|
||||||
|
\outer\def\newcolumn{\vfill\eject}
|
||||||
|
|
||||||
|
\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
|
||||||
|
|
||||||
|
\outer\def\section#1{\par\filbreak
|
||||||
|
\vskip 1.5ex plus 1ex minus 1ex {\headingfont #1}\mark{#1}%
|
||||||
|
\vskip 1ex plus .5ex minus 0.75ex}
|
||||||
|
|
||||||
|
\newdimen\keyindent
|
||||||
|
|
||||||
|
\def\beginindentedkeys{\keyindent=1em}
|
||||||
|
\def\endindentedkeys{\keyindent=0em}
|
||||||
|
\endindentedkeys
|
||||||
|
|
||||||
|
\def\paralign{\vskip\parskip\halign}
|
||||||
|
|
||||||
|
\def\<#1>{$\langle${\rm #1}$\rangle$}
|
||||||
|
|
||||||
|
\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
|
||||||
|
|
||||||
|
\def\beginexample{\par\leavevmode\begingroup
|
||||||
|
\obeylines\obeyspaces\parskip0pt\tt}
|
||||||
|
{\obeyspaces\global\let =\ }
|
||||||
|
\def\endexample{\endgroup}
|
||||||
|
\def\begincexample{%
|
||||||
|
\par\leavevmode\begingroup%
|
||||||
|
\obeylines\obeyspaces%
|
||||||
|
% bpk--added indentation
|
||||||
|
\advance\leftskip.25truein
|
||||||
|
% \parskip0pt%
|
||||||
|
\tt}
|
||||||
|
{\obeyspaces\global\let =\ }
|
||||||
|
\def\endcexample{\endgroup}
|
||||||
|
|
||||||
|
%%%%% Prime definition of key; redefined below to prevent overful hboxes
|
||||||
|
|
||||||
|
\def\key#1#2{\leavevmode\hbox to \hsize
|
||||||
|
{\vtop {\hsize=.67\hsize \rightskip=1em #1}
|
||||||
|
\kbd{#2}\hfil}}
|
||||||
|
|
||||||
|
\newbox\metaxbox
|
||||||
|
\setbox\metaxbox\hbox{\kbd{M-x }}
|
||||||
|
\newdimen\metaxwidth
|
||||||
|
\metaxwidth=\wd\metaxbox
|
||||||
|
|
||||||
|
\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
|
||||||
|
{\hskip\keyindent\relax#1\hfil}%
|
||||||
|
\hskip -\metaxwidth minus 1fil
|
||||||
|
\kbd{#2}\hfil}}
|
||||||
|
|
||||||
|
\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
|
||||||
|
&\kbd{#3}\quad\cr}
|
||||||
|
|
||||||
|
%**end of header
|
||||||
|
|
||||||
|
% ************
|
||||||
|
% ** BISON **
|
||||||
|
% ************
|
||||||
|
|
||||||
|
\title{Bison Quick Reference}
|
||||||
|
|
||||||
|
\section{Starting Bison}
|
||||||
|
%***********************
|
||||||
|
|
||||||
|
To use Bison, type: \kbd{bison {\it filename}}
|
||||||
|
|
||||||
|
Options can be used as: \kbd{bison {\it options} {\it filename}}
|
||||||
|
|
||||||
|
\section{Command Line Options}
|
||||||
|
%*****************************
|
||||||
|
|
||||||
|
\key{Display usage information.} {-h}
|
||||||
|
\key{Display version information.} {-V}
|
||||||
|
\key{Generate token and {\tt YYSTYPE} definitions.} {-d}
|
||||||
|
\key{Prepend a prefix to external symbols.} {-p {\it prefix}}
|
||||||
|
\key{Don't put {\tt \#line} directives in the parser.} {-l}
|
||||||
|
\key{Specify the output file.} {-o {\it filename}}
|
||||||
|
\key{Debug or {\it trace} mode.} {-t}
|
||||||
|
\key{Verbose description of the parser.} {-v}
|
||||||
|
\key{Emulate {\tt yacc} (generate {\tt y.tab.*} files).} {-y}
|
||||||
|
|
||||||
|
\vskip .10truein
|
||||||
|
{\bf Note:} The token and {\tt YYSTYPE} definitions are generated
|
||||||
|
to a file called {\tt y.tab.h} if the {\tt -y} option is used,
|
||||||
|
otherwise it will have the format {\tt {\it name}.tab.h}, where
|
||||||
|
{\it name} is the leading part of the parser definition filename.
|
||||||
|
|
||||||
|
\section{Definitions}
|
||||||
|
%********************
|
||||||
|
|
||||||
|
\key{Declare a terminal symbol.}{\%token <{\it t\/}>
|
||||||
|
{\it n}}
|
||||||
|
|
||||||
|
\key{Declare a terminal symbol, and define its association.}
|
||||||
|
{{\it association} <{\it t\/}> {\it n}}
|
||||||
|
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\key{Generate a reentrant (pure) parser.}
|
||||||
|
{\%pure_parser}
|
||||||
|
|
||||||
|
\key{Define the union of all data types used in the parser.}
|
||||||
|
{\%union\{{\it field list}\} }
|
||||||
|
|
||||||
|
\vskip .2\baselineskip
|
||||||
|
\key{Tell {\tt bison} where to start parsing.}
|
||||||
|
{\%start {\it m}}
|
||||||
|
|
||||||
|
\key{Tell {\tt bison} the data type of symbols.}
|
||||||
|
{\%type <{\it t\/}> {\it s1}\dots{\it sn}}
|
||||||
|
|
||||||
|
\vskip .10truein
|
||||||
|
|
||||||
|
In the above, {\it t} is a {\it type} defined in the {\tt \%union}
|
||||||
|
definition, {\it n} is a {\it terminal} symbol name, {\it m} is a
|
||||||
|
{\it non-terminal} symbol name, and {\it association} can be one of
|
||||||
|
{\tt \%left}, {\tt \%right}, or {\tt \%nonassoc}.
|
||||||
|
|
||||||
|
\vskip .10truein
|
||||||
|
|
||||||
|
The {\tt <{\it t\/}>} after {\tt \%token, \%left, \%right} and {\tt
|
||||||
|
\%nonassoc} is optional. Additionally, precedence may be overridden
|
||||||
|
in the rules with {\tt \%prec} commands.
|
||||||
|
|
||||||
|
\section{Parser Definition Files}
|
||||||
|
%*********************************
|
||||||
|
|
||||||
|
The general form for a parser definition is:
|
||||||
|
|
||||||
|
\begincexample
|
||||||
|
\{\%
|
||||||
|
/* Initial C code. */
|
||||||
|
\%\}
|
||||||
|
|
||||||
|
{\it Token and type definitions}
|
||||||
|
|
||||||
|
\%\%
|
||||||
|
|
||||||
|
Rule definition 1
|
||||||
|
\vdots
|
||||||
|
Rule definition {\it n}
|
||||||
|
|
||||||
|
\%\%
|
||||||
|
|
||||||
|
/* Other C code. */
|
||||||
|
\endcexample
|
||||||
|
|
||||||
|
|
||||||
|
% Decrease standard baselineskip for the second page
|
||||||
|
\baselineskip = .9\baselineskip
|
||||||
|
|
||||||
|
\section {Rule definitions}
|
||||||
|
%**************************
|
||||||
|
|
||||||
|
Rules take the form:
|
||||||
|
|
||||||
|
\vskip -\baselineskip
|
||||||
|
\beginexample
|
||||||
|
non-terminal : {\it statement} 1
|
||||||
|
| {\it statement} 2
|
||||||
|
\vdots
|
||||||
|
| {\it statement n}
|
||||||
|
;
|
||||||
|
\endexample
|
||||||
|
|
||||||
|
Where {\it statements} can be either empty, or contain
|
||||||
|
a mixture of C code (enclosed in {\tt \{...\}}), and the
|
||||||
|
symbols that make up the non-terminal. For example:
|
||||||
|
|
||||||
|
\vskip -\baselineskip
|
||||||
|
\beginexample
|
||||||
|
expression : number '$+$' number \{ \$\$ $=$ \$1 $+$ \$3 \}
|
||||||
|
| number '$-$' number \{ \$\$ $=$ \$1 $-$ \$3 \}
|
||||||
|
| number '$/$' number \{ \$\$ $=$ \$1 $/$ \$3 \}
|
||||||
|
| number '$*$' number \{ \$\$ $=$ \$1 $*$ \$3 \}
|
||||||
|
;
|
||||||
|
\endexample
|
||||||
|
|
||||||
|
For altering the precedence of a symbol use:
|
||||||
|
\vskip -\baselineskip
|
||||||
|
|
||||||
|
\beginexample
|
||||||
|
\%prec name
|
||||||
|
\endexample
|
||||||
|
|
||||||
|
For example:
|
||||||
|
\vskip -\baselineskip
|
||||||
|
\beginexample
|
||||||
|
foo : gnu bar gnu \%prec bar
|
||||||
|
;
|
||||||
|
\endexample
|
||||||
|
|
||||||
|
\section{Grammar Variables and Symbols}
|
||||||
|
%**************************************
|
||||||
|
|
||||||
|
\key{Recognize an error \& continue parsing.}{error}
|
||||||
|
\key{Access data associated with a symbol.} {\$\$, \$0\dots\${\it n}}
|
||||||
|
\key{Access a field of the data union.} {\$\$.{\it t},
|
||||||
|
\$0.{\it t}\dots\${\it n}.{\it t}}
|
||||||
|
\key{Access symbol's location.} {@\$, @0\dots@{\it n}}
|
||||||
|
\key{Access data's line location.} {@{\it x}.{\it line\_spec}}
|
||||||
|
\key{Access data's column location.} {@{\it x}.{\it column\_spec}}
|
||||||
|
|
||||||
|
|
||||||
|
\vskip .10truein
|
||||||
|
%
|
||||||
|
Where {\it t} is a type defined in the {\tt \%union}, {\it n} is a
|
||||||
|
number, {\it x} is a number or \$, {\it line\_spec} one of {\tt
|
||||||
|
first_line} and {\tt last_line}, and {\it column\_spec} is specified
|
||||||
|
as either {\tt first_column} or {\tt last_column}.
|
||||||
|
|
||||||
|
\section {Variables and Types}
|
||||||
|
%*****************************
|
||||||
|
|
||||||
|
\key{Current look ahead token.} {yychar}
|
||||||
|
\key{Debug mode flag.} {yydebug}
|
||||||
|
\key{Data associated with the current token.} {yylval}
|
||||||
|
\key{Source position of current token.} {yylloc}
|
||||||
|
\key{Number of errors encountered.} {yynerrs}
|
||||||
|
\key{Position information type.} {YYLTYPE}
|
||||||
|
\key{Data type associated with symbols.} {YYSTYPE}
|
||||||
|
|
||||||
|
\section {Functions}
|
||||||
|
%*******************
|
||||||
|
|
||||||
|
% Redefine to prevent overfull hboxes
|
||||||
|
\def\key#1#2{\leavevmode\hbox to \hsize
|
||||||
|
{\vtop {\hsize=.625\hsize \rightskip=1em #1}
|
||||||
|
\kbd{#2}\hfil}}
|
||||||
|
|
||||||
|
\key{User defined error handler.} {int yyerror(char *)}
|
||||||
|
\key{User defined lexical analyzer.} {int yylex()}
|
||||||
|
\key{The grammar parser.} {int yyparse()}
|
||||||
|
|
||||||
|
% Return to previous size
|
||||||
|
\def\key#1#2{\leavevmode\hbox to \hsize
|
||||||
|
{\vtop {\hsize=.67\hsize \rightskip=1em #1}
|
||||||
|
\kbd{#2}\hfil}}
|
||||||
|
|
||||||
|
\section{Macros}
|
||||||
|
%***************
|
||||||
|
|
||||||
|
\key{Quit parsing immediately. Return 1.} {YYABORT}
|
||||||
|
\key{Quit parsing immediately. Return 0.} {YYACCEPT}
|
||||||
|
\key{Pretend a syntax error occurred.} {YYERROR}
|
||||||
|
\key{Value in {\tt yychar} if no look-ahead token.} {YYEMPTY}
|
||||||
|
\key{Clear previous look ahead token.} {yyclearin}
|
||||||
|
\key{Recover normally from an error.} {yyerrok}
|
||||||
|
|
||||||
|
% **************
|
||||||
|
% ** The end **
|
||||||
|
% **************
|
||||||
|
|
||||||
|
\vskip \baselineskip
|
||||||
|
\if 1\ncolumns
|
||||||
|
\copyrightnotice
|
||||||
|
\else
|
||||||
|
\smallcopyrightnotice
|
||||||
|
\fi
|
||||||
|
|
||||||
|
\bye
|
||||||
|
|
||||||
|
|
||||||
|
% Local variables:
|
||||||
|
% compile-command: "tex refcard"
|
||||||
|
% End:
|
||||||
Executable
+300
@@ -0,0 +1,300 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# clcommit version 0.9.5
|
||||||
|
|
||||||
|
# Copyright (C) 1999, 2000, Free Software Foundation
|
||||||
|
|
||||||
|
# This script is Free Software, and it can be copied, distributed and
|
||||||
|
# modified as defined in the GNU General Public License. A copy of
|
||||||
|
# its license can be downloaded from http://www.gnu.org/copyleft/gpl.html
|
||||||
|
|
||||||
|
# Originally by Gary V. Vaughan <[email protected]>
|
||||||
|
# Pretty much rewritten by Alexandre Oliva <[email protected]>
|
||||||
|
|
||||||
|
# This scripts eases checking in changes to CVS-maintained projects
|
||||||
|
# with ChangeLog files. It will check that there have been no
|
||||||
|
# conflicting commits in the CVS repository and print which files it
|
||||||
|
# is going to commit to stderr. A list of files to compare and to
|
||||||
|
# check in can be given in the command line. If it is not given, all
|
||||||
|
# files in the current directory (and below, unless `-l' is given) are
|
||||||
|
# considered for check in.
|
||||||
|
|
||||||
|
# The commit message will be extracted from the differences between a
|
||||||
|
# file named ChangeLog* in the commit list, or named after -C, and the
|
||||||
|
# one in the repository (unless a message was specified with `-m' or
|
||||||
|
# `-F'). An empty message is not accepted (but a blank line is). If
|
||||||
|
# the message is acceptable, it will be presented for verification
|
||||||
|
# (and possible edition) using the $PAGER environment variable (or
|
||||||
|
# `more', if it is not set, or `cat', if the `-f' switch is given).
|
||||||
|
# If $PAGER exits successfully, the modified files (at that moment)
|
||||||
|
# are checked in, unless `-n' was specified, in which case nothing is
|
||||||
|
# checked in.
|
||||||
|
|
||||||
|
# usage: clcommit [-v] [-h] [-f] [-l] [-n] [-q] [-z N] [-C ChangeLog_file]
|
||||||
|
# [-m msg|-F msg_file|-1] [--] [file|dir ...]
|
||||||
|
|
||||||
|
# -f --force don't check (unless *followed* by -n), and just
|
||||||
|
# display commit message instead of running $PAGER
|
||||||
|
# -l --local don't descend into subdirectories
|
||||||
|
# -m msg --message=msg set commit message
|
||||||
|
# --msg=msg same as -m
|
||||||
|
# -F file --file=file read commit message from file
|
||||||
|
# -1 --first extract first entry from ChangeLog, no cvs diff
|
||||||
|
# -C file --changelog=file extract commit message from specified ChangeLog
|
||||||
|
# --fast same as --force --first
|
||||||
|
# -n --dry-run don't commit anything
|
||||||
|
# -q --quiet run cvs in quiet mode
|
||||||
|
# -zN --compress=N set compression level (0-9, 0=none, 9=max)
|
||||||
|
# -v --version print version information
|
||||||
|
# -h,-? --help print short or long help message
|
||||||
|
|
||||||
|
name=clcommit
|
||||||
|
: ${CVS=cvs}
|
||||||
|
cvsopt=
|
||||||
|
updateopt=
|
||||||
|
commitopt=
|
||||||
|
dry_run=false
|
||||||
|
commit=:
|
||||||
|
update=:
|
||||||
|
log_file="${TMPDIR-/tmp}/commitlog.$$"
|
||||||
|
first=false
|
||||||
|
|
||||||
|
rm -f "$log_file"
|
||||||
|
trap 'rm -f "$log_file"; exit 1' 1 2 15
|
||||||
|
|
||||||
|
# this just eases exit handling
|
||||||
|
main_repeat=":"
|
||||||
|
while $main_repeat; do
|
||||||
|
|
||||||
|
repeat="test $# -gt 0"
|
||||||
|
while $repeat; do
|
||||||
|
case "$1" in
|
||||||
|
--fast)
|
||||||
|
shift
|
||||||
|
set fnord --force --first ${1+"$@"}
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-f|--force)
|
||||||
|
update=false
|
||||||
|
PAGER=cat
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-l|--local)
|
||||||
|
updateopt="$updateopt -l"
|
||||||
|
commitopt="$commitopt -l"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-m|--message|--msg)
|
||||||
|
if test $# = 1; then
|
||||||
|
echo "$name: missing argument for $1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if $first || test -f "$log_file"; then
|
||||||
|
echo "$name: you can have at most one of -m, -F and -1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
echo "$1" > "$log_file"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-F|--file)
|
||||||
|
if $first || test -f "$log_file"; then
|
||||||
|
echo "$name: you can have at most one of -m, -F and -1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if test $# = 1; then
|
||||||
|
echo "$name: missing argument for $1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
if cat < "$1" > "$log_file"; then :; else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-1|--first)
|
||||||
|
if test -f "$log_File"; then
|
||||||
|
echo "$name: you can have at most one of -m, -F and -1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
first=:
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-C|--[cC]hange[lL]og)
|
||||||
|
if test $# = 1; then
|
||||||
|
echo "$name: missing argument for $1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
if test ! -f "$1"; then
|
||||||
|
echo "$name: ChangeLog file \`$1' does not exist" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
ChangeLog="$1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-n|--dry-run)
|
||||||
|
commit=false
|
||||||
|
update=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-q|--quiet)
|
||||||
|
cvsopt="$cvsopt -q"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-v|--verbose)
|
||||||
|
cvsopt="$cvsopt -t"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-z|--compress)
|
||||||
|
if test $# = 1; then
|
||||||
|
echo "$name: missing argument for $1" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
case "$2" in
|
||||||
|
[0-9]) :;;
|
||||||
|
*) echo "$name: invalid argument for $1" >&2
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
cvsopt="$cvsopt -z$2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
|
||||||
|
-m*|-F*|-C*|-z*)
|
||||||
|
opt=`echo "$1" | sed '1s/^\(..\).*$/\1/;q'`
|
||||||
|
arg=`echo "$1" | sed '1s/^-[a-zA-Z0-9]//'`
|
||||||
|
shift
|
||||||
|
set -- "$opt" "$arg" ${1+"$@"}
|
||||||
|
;;
|
||||||
|
--message=*|--msg=*|--file=*|--[Cc]hange[Ll]og=*|--compress=*)
|
||||||
|
opt=`echo "$1" | sed '1s/^\(--[^=]*\)=.*/\1/;q'`
|
||||||
|
arg=`echo "$1" | sed '1s/^--[^=]*=//'`
|
||||||
|
shift
|
||||||
|
set -- "$opt" "$arg" ${1+"$@"}
|
||||||
|
;;
|
||||||
|
|
||||||
|
-v|--version)
|
||||||
|
sed '/^# '$name' version /,/^# Heavily modified by/ { s/^# //; p; }; d' < $0
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-\?|-h)
|
||||||
|
sed '/^# usage:/,/# -h/ { s/^# //; p; }; d' < $0 &&
|
||||||
|
echo
|
||||||
|
echo "run \`$name --help | more' for full usage"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
--help)
|
||||||
|
sed '/^# '$name' version /,/^[^#]/ { /^[^#]/ d; s/^# //; p; }; d' < $0
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
--)
|
||||||
|
shift
|
||||||
|
repeat=false
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
echo "$name: invalid flag $1" >&2
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
repeat=false
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
# might have used break 2 within the previous loop, but so what
|
||||||
|
$repeat && break
|
||||||
|
|
||||||
|
$update && \
|
||||||
|
if echo "$name: checking for conflicts..." >&2
|
||||||
|
($CVS $cvsopt -q -n update $updateopt ${1+"$@"} 2>/dev/null \
|
||||||
|
| while read line; do
|
||||||
|
echo "$line"
|
||||||
|
echo "$line" >&3
|
||||||
|
done | grep '^C') 3>&1 >/dev/null; then
|
||||||
|
echo "$name: some conflicts were found, aborting..." >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test ! -f "$log_file"; then
|
||||||
|
if test -z "$ChangeLog"; then
|
||||||
|
for f in ${1+"$@"}; do
|
||||||
|
case "$f" in
|
||||||
|
ChangeLog* | */ChangeLog*)
|
||||||
|
if test -z "$ChangeLog"; then
|
||||||
|
ChangeLog="$f"
|
||||||
|
else
|
||||||
|
echo "$name: multiple ChangeLog files: $ChangeLog and $f" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$name: checking commit message..." >&2
|
||||||
|
if $first; then
|
||||||
|
skipping=:
|
||||||
|
sed 's,^,+,' < ${ChangeLog-ChangeLog} |
|
||||||
|
while read line; do
|
||||||
|
case "$line" in
|
||||||
|
"+2"*) if $skipping; then skipping=false; else break; fi;;
|
||||||
|
"+ "*)
|
||||||
|
echo "$name: *** Warning: lines should start with tabs, not spaces; ignoring line:" >&2
|
||||||
|
echo "$line" | sed 's/^.//' >&2;;
|
||||||
|
"+ "*)
|
||||||
|
$skipping || echo "$line" ;;
|
||||||
|
esac
|
||||||
|
done |
|
||||||
|
sed 's,^\+ ,,' > "$log_file" || break
|
||||||
|
else
|
||||||
|
$CVS $cvsopt diff -u ${ChangeLog-ChangeLog} |
|
||||||
|
while read line; do
|
||||||
|
case $line in
|
||||||
|
"--- "*) :;;
|
||||||
|
"-"*)
|
||||||
|
echo "$name: *** Warning: the following line in ChangeLog diff is suspicious:" >&2
|
||||||
|
echo "$line" | sed 's/^.//' >&2;;
|
||||||
|
"+ "*)
|
||||||
|
echo "$name: *** Warning: lines should start with tabs, not spaces; ignoring line:" >&2
|
||||||
|
echo "$line" | sed 's/^.//' >&2;;
|
||||||
|
"+") echo;;
|
||||||
|
"+ "*) echo "$line";;
|
||||||
|
esac
|
||||||
|
done |
|
||||||
|
sed -e 's,\+ ,,' -e '/./p' -e '/./d' -e '1d' -e '$d' > "$log_file" \
|
||||||
|
|| break
|
||||||
|
fi
|
||||||
|
# The sed script above removes "+TAB" from the beginning of a line, then
|
||||||
|
# deletes the first and/or the last line, when they happen to be empty
|
||||||
|
fi
|
||||||
|
|
||||||
|
if grep '[^ ]' < "$log_file" > /dev/null; then :; else
|
||||||
|
echo "$name: empty commit message, aborting" >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
if grep '^$' < "$log_file" > /dev/null; then
|
||||||
|
echo "$name: *** Warning: blank lines should not appear within commit messages." >&2
|
||||||
|
echo "$name: *** They should be used to separate distinct commits." >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
${PAGER-more} "$log_file" || break
|
||||||
|
|
||||||
|
sleep 1 # give the user some time for a ^C
|
||||||
|
|
||||||
|
# Do not check for empty $log_file again, even though the user might have
|
||||||
|
# zeroed it out. If s/he did, it was probably intentional.
|
||||||
|
|
||||||
|
if $commit; then
|
||||||
|
$CVS $cvsopt commit $commitopt -F $log_file ${1+"$@"} || break
|
||||||
|
fi
|
||||||
|
|
||||||
|
main_repeat=false
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -f "$log_file"
|
||||||
|
|
||||||
|
# if main_repeat was not set to `false', we failed
|
||||||
|
$main_repeat && exit 1
|
||||||
|
exit 0
|
||||||
Executable
+16
@@ -0,0 +1,16 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
for dir in . po src doc; do
|
||||||
|
(
|
||||||
|
cd $dir && rcs2log -r -l \
|
||||||
|
-u 'akim Akim Demaille [email protected]' \
|
||||||
|
-u 'djm David J. MacKenzie [email protected]' \
|
||||||
|
-u 'eggert Paul Eggert [email protected]' \
|
||||||
|
-u 'friedman Noah Friedman [email protected]' \
|
||||||
|
-u 'hag Daniel Hagerty [email protected]' \
|
||||||
|
-u 'jthilo Jesse Thilo [email protected]' \
|
||||||
|
-u 'meyering Jim Meyering [email protected]' \
|
||||||
|
-u 'rms Richard Stallman [email protected]' \
|
||||||
|
| sed -e 's,/opt/cvs/bison/bison/,,g' > ChangeLog
|
||||||
|
)
|
||||||
|
done
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
*_.c
|
||||||
|
.deps
|
||||||
|
Makefile
|
||||||
|
ansi2knr ansi2knr.*
|
||||||
|
Makefile.in
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
## Copyright 2001, 2002 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
|
||||||
|
|
||||||
|
AUTOMAKE_OPTIONS = ansi2knr
|
||||||
|
|
||||||
|
CFLAGS = @CFLAGS@ $(WARNING_CFLAGS)
|
||||||
|
|
||||||
|
noinst_LIBRARIES = libbison.a
|
||||||
|
|
||||||
|
# libintl.h in is build/intl, libgettext.h in src/intl/,
|
||||||
|
# config.h in build/., and system.h is in src/src/.
|
||||||
|
INCLUDES = -I$(top_builddir)/intl \
|
||||||
|
-I$(top_builddir) \
|
||||||
|
-I$(top_srcdir)/src \
|
||||||
|
-I$(top_srcdir)/intl \
|
||||||
|
-I$(top_srcdir)/lib
|
||||||
|
|
||||||
|
# Heck, we are still using an old version of Automake which does not
|
||||||
|
# understand LIBOBJ additions using $objext...
|
||||||
|
|
||||||
|
EXTRA_DIST = malloc.c realloc.c
|
||||||
|
|
||||||
|
libbison_a_SOURCES = \
|
||||||
|
basename.c dirname.h dirname.c \
|
||||||
|
getopt.h getopt.c getopt1.c \
|
||||||
|
hash.h hash.c \
|
||||||
|
quote.h quote.c quotearg.h quotearg.c \
|
||||||
|
xalloc.h xmalloc.c xstrdup.c xstrndup.c
|
||||||
|
|
||||||
|
libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@
|
||||||
|
libbison_a_DEPENDENCIES = $(libbison_a_LIBADD)
|
||||||
+504
@@ -0,0 +1,504 @@
|
|||||||
|
/* alloca.c -- allocate automatically reclaimed memory
|
||||||
|
(Mostly) portable public-domain implementation -- D A Gwyn
|
||||||
|
|
||||||
|
This implementation of the PWB library alloca function,
|
||||||
|
which is used to allocate space off the run-time stack so
|
||||||
|
that it is automatically reclaimed upon procedure exit,
|
||||||
|
was inspired by discussions with J. Q. Johnson of Cornell.
|
||||||
|
J.Otto Tennant <[email protected]> contributed the Cray support.
|
||||||
|
|
||||||
|
There are some preprocessor constants that can
|
||||||
|
be defined when compiling for your specific system, for
|
||||||
|
improved efficiency; however, the defaults should be okay.
|
||||||
|
|
||||||
|
The general concept of this implementation is to keep
|
||||||
|
track of all alloca-allocated blocks, and reclaim any
|
||||||
|
that are found to be deeper in the stack than the current
|
||||||
|
invocation. This heuristic does not reclaim storage as
|
||||||
|
soon as it becomes invalid, but it will do so eventually.
|
||||||
|
|
||||||
|
As a special case, alloca(0) reclaims storage without
|
||||||
|
allocating any. It is a good idea to use alloca(0) in
|
||||||
|
your main control loop, etc. to force garbage collection. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_STRING_H
|
||||||
|
# include <string.h>
|
||||||
|
#endif
|
||||||
|
#if HAVE_STDLIB_H
|
||||||
|
# include <stdlib.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef emacs
|
||||||
|
# include "blockinput.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* If compiling with GCC 2, this file's not needed. */
|
||||||
|
#if !defined (__GNUC__) || __GNUC__ < 2
|
||||||
|
|
||||||
|
/* If someone has defined alloca as a macro,
|
||||||
|
there must be some other way alloca is supposed to work. */
|
||||||
|
# ifndef alloca
|
||||||
|
|
||||||
|
# ifdef emacs
|
||||||
|
# ifdef static
|
||||||
|
/* actually, only want this if static is defined as ""
|
||||||
|
-- this is for usg, in which emacs must undefine static
|
||||||
|
in order to make unexec workable
|
||||||
|
*/
|
||||||
|
# ifndef STACK_DIRECTION
|
||||||
|
you
|
||||||
|
lose
|
||||||
|
-- must know STACK_DIRECTION at compile-time
|
||||||
|
# endif /* STACK_DIRECTION undefined */
|
||||||
|
# endif /* static */
|
||||||
|
# endif /* emacs */
|
||||||
|
|
||||||
|
/* If your stack is a linked list of frames, you have to
|
||||||
|
provide an "address metric" ADDRESS_FUNCTION macro. */
|
||||||
|
|
||||||
|
# if defined (CRAY) && defined (CRAY_STACKSEG_END)
|
||||||
|
long i00afunc ();
|
||||||
|
# define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
|
||||||
|
# else
|
||||||
|
# define ADDRESS_FUNCTION(arg) &(arg)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if __STDC__
|
||||||
|
typedef void *pointer;
|
||||||
|
# else
|
||||||
|
typedef char *pointer;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef NULL
|
||||||
|
# define NULL 0
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Different portions of Emacs need to call different versions of
|
||||||
|
malloc. The Emacs executable needs alloca to call xmalloc, because
|
||||||
|
ordinary malloc isn't protected from input signals. On the other
|
||||||
|
hand, the utilities in lib-src need alloca to call malloc; some of
|
||||||
|
them are very simple, and don't have an xmalloc routine.
|
||||||
|
|
||||||
|
Non-Emacs programs expect this to call xmalloc.
|
||||||
|
|
||||||
|
Callers below should use malloc. */
|
||||||
|
|
||||||
|
# ifndef emacs
|
||||||
|
# undef malloc
|
||||||
|
# define malloc xmalloc
|
||||||
|
# endif
|
||||||
|
extern pointer malloc ();
|
||||||
|
|
||||||
|
/* Define STACK_DIRECTION if you know the direction of stack
|
||||||
|
growth for your system; otherwise it will be automatically
|
||||||
|
deduced at run-time.
|
||||||
|
|
||||||
|
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||||
|
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||||
|
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||||
|
|
||||||
|
# ifndef STACK_DIRECTION
|
||||||
|
# define STACK_DIRECTION 0 /* Direction unknown. */
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# if STACK_DIRECTION != 0
|
||||||
|
|
||||||
|
# define STACK_DIR STACK_DIRECTION /* Known at compile-time. */
|
||||||
|
|
||||||
|
# else /* STACK_DIRECTION == 0; need run-time code. */
|
||||||
|
|
||||||
|
static int stack_dir; /* 1 or -1 once known. */
|
||||||
|
# define STACK_DIR stack_dir
|
||||||
|
|
||||||
|
static void
|
||||||
|
find_stack_direction ()
|
||||||
|
{
|
||||||
|
static char *addr = NULL; /* Address of first `dummy', once known. */
|
||||||
|
auto char dummy; /* To get stack address. */
|
||||||
|
|
||||||
|
if (addr == NULL)
|
||||||
|
{ /* Initial entry. */
|
||||||
|
addr = ADDRESS_FUNCTION (dummy);
|
||||||
|
|
||||||
|
find_stack_direction (); /* Recurse once. */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Second entry. */
|
||||||
|
if (ADDRESS_FUNCTION (dummy) > addr)
|
||||||
|
stack_dir = 1; /* Stack grew upward. */
|
||||||
|
else
|
||||||
|
stack_dir = -1; /* Stack grew downward. */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# endif /* STACK_DIRECTION == 0 */
|
||||||
|
|
||||||
|
/* An "alloca header" is used to:
|
||||||
|
(a) chain together all alloca'ed blocks;
|
||||||
|
(b) keep track of stack depth.
|
||||||
|
|
||||||
|
It is very important that sizeof(header) agree with malloc
|
||||||
|
alignment chunk size. The following default should work okay. */
|
||||||
|
|
||||||
|
# ifndef ALIGN_SIZE
|
||||||
|
# define ALIGN_SIZE sizeof(double)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
typedef union hdr
|
||||||
|
{
|
||||||
|
char align[ALIGN_SIZE]; /* To force sizeof(header). */
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
union hdr *next; /* For chaining headers. */
|
||||||
|
char *deep; /* For stack depth measure. */
|
||||||
|
} h;
|
||||||
|
} header;
|
||||||
|
|
||||||
|
static header *last_alloca_header = NULL; /* -> last alloca header. */
|
||||||
|
|
||||||
|
/* Return a pointer to at least SIZE bytes of storage,
|
||||||
|
which will be automatically reclaimed upon exit from
|
||||||
|
the procedure that called alloca. Originally, this space
|
||||||
|
was supposed to be taken from the current stack frame of the
|
||||||
|
caller, but that method cannot be made to work for some
|
||||||
|
implementations of C, for example under Gould's UTX/32. */
|
||||||
|
|
||||||
|
pointer
|
||||||
|
alloca (size_t size)
|
||||||
|
{
|
||||||
|
auto char probe; /* Probes stack depth: */
|
||||||
|
register char *depth = ADDRESS_FUNCTION (probe);
|
||||||
|
|
||||||
|
# if STACK_DIRECTION == 0
|
||||||
|
if (STACK_DIR == 0) /* Unknown growth direction. */
|
||||||
|
find_stack_direction ();
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Reclaim garbage, defined as all alloca'd storage that
|
||||||
|
was allocated from deeper in the stack than currently. */
|
||||||
|
|
||||||
|
{
|
||||||
|
register header *hp; /* Traverses linked list. */
|
||||||
|
|
||||||
|
# ifdef emacs
|
||||||
|
BLOCK_INPUT;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
for (hp = last_alloca_header; hp != NULL;)
|
||||||
|
if ((STACK_DIR > 0 && hp->h.deep > depth)
|
||||||
|
|| (STACK_DIR < 0 && hp->h.deep < depth))
|
||||||
|
{
|
||||||
|
register header *np = hp->h.next;
|
||||||
|
|
||||||
|
free ((pointer) hp); /* Collect garbage. */
|
||||||
|
|
||||||
|
hp = np; /* -> next header. */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
break; /* Rest are not deeper. */
|
||||||
|
|
||||||
|
last_alloca_header = hp; /* -> last valid storage. */
|
||||||
|
|
||||||
|
# ifdef emacs
|
||||||
|
UNBLOCK_INPUT;
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
|
||||||
|
if (size == 0)
|
||||||
|
return NULL; /* No allocation required. */
|
||||||
|
|
||||||
|
/* Allocate combined header + user data storage. */
|
||||||
|
|
||||||
|
{
|
||||||
|
register pointer new = malloc (sizeof (header) + size);
|
||||||
|
/* Address of header. */
|
||||||
|
|
||||||
|
if (new == 0)
|
||||||
|
abort();
|
||||||
|
|
||||||
|
((header *) new)->h.next = last_alloca_header;
|
||||||
|
((header *) new)->h.deep = depth;
|
||||||
|
|
||||||
|
last_alloca_header = (header *) new;
|
||||||
|
|
||||||
|
/* User storage begins just after header. */
|
||||||
|
|
||||||
|
return (pointer) ((char *) new + sizeof (header));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# if defined (CRAY) && defined (CRAY_STACKSEG_END)
|
||||||
|
|
||||||
|
# ifdef DEBUG_I00AFUNC
|
||||||
|
# include <stdio.h>
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef CRAY_STACK
|
||||||
|
# define CRAY_STACK
|
||||||
|
# ifndef CRAY2
|
||||||
|
/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */
|
||||||
|
struct stack_control_header
|
||||||
|
{
|
||||||
|
long shgrow:32; /* Number of times stack has grown. */
|
||||||
|
long shaseg:32; /* Size of increments to stack. */
|
||||||
|
long shhwm:32; /* High water mark of stack. */
|
||||||
|
long shsize:32; /* Current size of stack (all segments). */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* The stack segment linkage control information occurs at
|
||||||
|
the high-address end of a stack segment. (The stack
|
||||||
|
grows from low addresses to high addresses.) The initial
|
||||||
|
part of the stack segment linkage control information is
|
||||||
|
0200 (octal) words. This provides for register storage
|
||||||
|
for the routine which overflows the stack. */
|
||||||
|
|
||||||
|
struct stack_segment_linkage
|
||||||
|
{
|
||||||
|
long ss[0200]; /* 0200 overflow words. */
|
||||||
|
long sssize:32; /* Number of words in this segment. */
|
||||||
|
long ssbase:32; /* Offset to stack base. */
|
||||||
|
long:32;
|
||||||
|
long sspseg:32; /* Offset to linkage control of previous
|
||||||
|
segment of stack. */
|
||||||
|
long:32;
|
||||||
|
long sstcpt:32; /* Pointer to task common address block. */
|
||||||
|
long sscsnm; /* Private control structure number for
|
||||||
|
microtasking. */
|
||||||
|
long ssusr1; /* Reserved for user. */
|
||||||
|
long ssusr2; /* Reserved for user. */
|
||||||
|
long sstpid; /* Process ID for pid based multi-tasking. */
|
||||||
|
long ssgvup; /* Pointer to multitasking thread giveup. */
|
||||||
|
long sscray[7]; /* Reserved for Cray Research. */
|
||||||
|
long ssa0;
|
||||||
|
long ssa1;
|
||||||
|
long ssa2;
|
||||||
|
long ssa3;
|
||||||
|
long ssa4;
|
||||||
|
long ssa5;
|
||||||
|
long ssa6;
|
||||||
|
long ssa7;
|
||||||
|
long sss0;
|
||||||
|
long sss1;
|
||||||
|
long sss2;
|
||||||
|
long sss3;
|
||||||
|
long sss4;
|
||||||
|
long sss5;
|
||||||
|
long sss6;
|
||||||
|
long sss7;
|
||||||
|
};
|
||||||
|
|
||||||
|
# else /* CRAY2 */
|
||||||
|
/* The following structure defines the vector of words
|
||||||
|
returned by the STKSTAT library routine. */
|
||||||
|
struct stk_stat
|
||||||
|
{
|
||||||
|
long now; /* Current total stack size. */
|
||||||
|
long maxc; /* Amount of contiguous space which would
|
||||||
|
be required to satisfy the maximum
|
||||||
|
stack demand to date. */
|
||||||
|
long high_water; /* Stack high-water mark. */
|
||||||
|
long overflows; /* Number of stack overflow ($STKOFEN) calls. */
|
||||||
|
long hits; /* Number of internal buffer hits. */
|
||||||
|
long extends; /* Number of block extensions. */
|
||||||
|
long stko_mallocs; /* Block allocations by $STKOFEN. */
|
||||||
|
long underflows; /* Number of stack underflow calls ($STKRETN). */
|
||||||
|
long stko_free; /* Number of deallocations by $STKRETN. */
|
||||||
|
long stkm_free; /* Number of deallocations by $STKMRET. */
|
||||||
|
long segments; /* Current number of stack segments. */
|
||||||
|
long maxs; /* Maximum number of stack segments so far. */
|
||||||
|
long pad_size; /* Stack pad size. */
|
||||||
|
long current_address; /* Current stack segment address. */
|
||||||
|
long current_size; /* Current stack segment size. This
|
||||||
|
number is actually corrupted by STKSTAT to
|
||||||
|
include the fifteen word trailer area. */
|
||||||
|
long initial_address; /* Address of initial segment. */
|
||||||
|
long initial_size; /* Size of initial segment. */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* The following structure describes the data structure which trails
|
||||||
|
any stack segment. I think that the description in 'asdef' is
|
||||||
|
out of date. I only describe the parts that I am sure about. */
|
||||||
|
|
||||||
|
struct stk_trailer
|
||||||
|
{
|
||||||
|
long this_address; /* Address of this block. */
|
||||||
|
long this_size; /* Size of this block (does not include
|
||||||
|
this trailer). */
|
||||||
|
long unknown2;
|
||||||
|
long unknown3;
|
||||||
|
long link; /* Address of trailer block of previous
|
||||||
|
segment. */
|
||||||
|
long unknown5;
|
||||||
|
long unknown6;
|
||||||
|
long unknown7;
|
||||||
|
long unknown8;
|
||||||
|
long unknown9;
|
||||||
|
long unknown10;
|
||||||
|
long unknown11;
|
||||||
|
long unknown12;
|
||||||
|
long unknown13;
|
||||||
|
long unknown14;
|
||||||
|
};
|
||||||
|
|
||||||
|
# endif /* CRAY2 */
|
||||||
|
# endif /* not CRAY_STACK */
|
||||||
|
|
||||||
|
# ifdef CRAY2
|
||||||
|
/* Determine a "stack measure" for an arbitrary ADDRESS.
|
||||||
|
I doubt that "lint" will like this much. */
|
||||||
|
|
||||||
|
static long
|
||||||
|
i00afunc (long *address)
|
||||||
|
{
|
||||||
|
struct stk_stat status;
|
||||||
|
struct stk_trailer *trailer;
|
||||||
|
long *block, size;
|
||||||
|
long result = 0;
|
||||||
|
|
||||||
|
/* We want to iterate through all of the segments. The first
|
||||||
|
step is to get the stack status structure. We could do this
|
||||||
|
more quickly and more directly, perhaps, by referencing the
|
||||||
|
$LM00 common block, but I know that this works. */
|
||||||
|
|
||||||
|
STKSTAT (&status);
|
||||||
|
|
||||||
|
/* Set up the iteration. */
|
||||||
|
|
||||||
|
trailer = (struct stk_trailer *) (status.current_address
|
||||||
|
+ status.current_size
|
||||||
|
- 15);
|
||||||
|
|
||||||
|
/* There must be at least one stack segment. Therefore it is
|
||||||
|
a fatal error if "trailer" is null. */
|
||||||
|
|
||||||
|
if (trailer == 0)
|
||||||
|
abort ();
|
||||||
|
|
||||||
|
/* Discard segments that do not contain our argument address. */
|
||||||
|
|
||||||
|
while (trailer != 0)
|
||||||
|
{
|
||||||
|
block = (long *) trailer->this_address;
|
||||||
|
size = trailer->this_size;
|
||||||
|
if (block == 0 || size == 0)
|
||||||
|
abort ();
|
||||||
|
trailer = (struct stk_trailer *) trailer->link;
|
||||||
|
if ((block <= address) && (address < (block + size)))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the result to the offset in this segment and add the sizes
|
||||||
|
of all predecessor segments. */
|
||||||
|
|
||||||
|
result = address - block;
|
||||||
|
|
||||||
|
if (trailer == 0)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (trailer->this_size <= 0)
|
||||||
|
abort ();
|
||||||
|
result += trailer->this_size;
|
||||||
|
trailer = (struct stk_trailer *) trailer->link;
|
||||||
|
}
|
||||||
|
while (trailer != 0);
|
||||||
|
|
||||||
|
/* We are done. Note that if you present a bogus address (one
|
||||||
|
not in any segment), you will get a different number back, formed
|
||||||
|
from subtracting the address of the first block. This is probably
|
||||||
|
not what you want. */
|
||||||
|
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
# else /* not CRAY2 */
|
||||||
|
/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.
|
||||||
|
Determine the number of the cell within the stack,
|
||||||
|
given the address of the cell. The purpose of this
|
||||||
|
routine is to linearize, in some sense, stack addresses
|
||||||
|
for alloca. */
|
||||||
|
|
||||||
|
static long
|
||||||
|
i00afunc (long address)
|
||||||
|
{
|
||||||
|
long stkl = 0;
|
||||||
|
|
||||||
|
long size, pseg, this_segment, stack;
|
||||||
|
long result = 0;
|
||||||
|
|
||||||
|
struct stack_segment_linkage *ssptr;
|
||||||
|
|
||||||
|
/* Register B67 contains the address of the end of the
|
||||||
|
current stack segment. If you (as a subprogram) store
|
||||||
|
your registers on the stack and find that you are past
|
||||||
|
the contents of B67, you have overflowed the segment.
|
||||||
|
|
||||||
|
B67 also points to the stack segment linkage control
|
||||||
|
area, which is what we are really interested in. */
|
||||||
|
|
||||||
|
stkl = CRAY_STACKSEG_END ();
|
||||||
|
ssptr = (struct stack_segment_linkage *) stkl;
|
||||||
|
|
||||||
|
/* If one subtracts 'size' from the end of the segment,
|
||||||
|
one has the address of the first word of the segment.
|
||||||
|
|
||||||
|
If this is not the first segment, 'pseg' will be
|
||||||
|
nonzero. */
|
||||||
|
|
||||||
|
pseg = ssptr->sspseg;
|
||||||
|
size = ssptr->sssize;
|
||||||
|
|
||||||
|
this_segment = stkl - size;
|
||||||
|
|
||||||
|
/* It is possible that calling this routine itself caused
|
||||||
|
a stack overflow. Discard stack segments which do not
|
||||||
|
contain the target address. */
|
||||||
|
|
||||||
|
while (!(this_segment <= address && address <= stkl))
|
||||||
|
{
|
||||||
|
# ifdef DEBUG_I00AFUNC
|
||||||
|
fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);
|
||||||
|
# endif
|
||||||
|
if (pseg == 0)
|
||||||
|
break;
|
||||||
|
stkl = stkl - pseg;
|
||||||
|
ssptr = (struct stack_segment_linkage *) stkl;
|
||||||
|
size = ssptr->sssize;
|
||||||
|
pseg = ssptr->sspseg;
|
||||||
|
this_segment = stkl - size;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = address - this_segment;
|
||||||
|
|
||||||
|
/* If you subtract pseg from the current end of the stack,
|
||||||
|
you get the address of the previous stack segment's end.
|
||||||
|
This seems a little convoluted to me, but I'll bet you save
|
||||||
|
a cycle somewhere. */
|
||||||
|
|
||||||
|
while (pseg != 0)
|
||||||
|
{
|
||||||
|
# ifdef DEBUG_I00AFUNC
|
||||||
|
fprintf (stderr, "%011o %011o\n", pseg, size);
|
||||||
|
# endif
|
||||||
|
stkl = stkl - pseg;
|
||||||
|
ssptr = (struct stack_segment_linkage *) stkl;
|
||||||
|
size = ssptr->sssize;
|
||||||
|
pseg = ssptr->sspseg;
|
||||||
|
result += size;
|
||||||
|
}
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
# endif /* not CRAY2 */
|
||||||
|
# endif /* CRAY */
|
||||||
|
|
||||||
|
# endif /* no alloca */
|
||||||
|
#endif /* not GCC version 2 */
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
/* basename.c -- return the last element in a path
|
||||||
|
Copyright (C) 1990, 1998, 1999, 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, 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. */
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
#ifndef FILESYSTEM_PREFIX_LEN
|
||||||
|
# define FILESYSTEM_PREFIX_LEN(Filename) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PARAMS
|
||||||
|
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
|
# define PARAMS(Args) Args
|
||||||
|
# else
|
||||||
|
# define PARAMS(Args) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ISSLASH
|
||||||
|
# define ISSLASH(C) ((C) == '/')
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char *base_name PARAMS ((char const *name));
|
||||||
|
|
||||||
|
/* In general, we can't use the builtin `basename' function if available,
|
||||||
|
since it has different meanings in different environments.
|
||||||
|
In some environments the builtin `basename' modifies its argument.
|
||||||
|
If NAME is all slashes, be sure to return `/'. */
|
||||||
|
|
||||||
|
char *
|
||||||
|
base_name (char const *name)
|
||||||
|
{
|
||||||
|
char const *base = name += FILESYSTEM_PREFIX_LEN (name);
|
||||||
|
int all_slashes = 1;
|
||||||
|
char const *p;
|
||||||
|
|
||||||
|
for (p = name; *p; p++)
|
||||||
|
{
|
||||||
|
if (ISSLASH (*p))
|
||||||
|
base = p + 1;
|
||||||
|
else
|
||||||
|
all_slashes = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If NAME is all slashes, arrange to return `/'. */
|
||||||
|
if (*base == '\0' && ISSLASH (*name) && all_slashes)
|
||||||
|
--base;
|
||||||
|
|
||||||
|
/* Make sure the last byte is not a slash. */
|
||||||
|
assert (all_slashes || !ISSLASH (*(p - 1)));
|
||||||
|
|
||||||
|
return (char *) base;
|
||||||
|
}
|
||||||
+189
@@ -0,0 +1,189 @@
|
|||||||
|
/* dirname.c -- return all but the last element in a path
|
||||||
|
Copyright (C) 1990, 1998, 2000 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 Foundation,
|
||||||
|
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef STDC_HEADERS
|
||||||
|
# include <stdlib.h>
|
||||||
|
#else
|
||||||
|
char *malloc ();
|
||||||
|
#endif
|
||||||
|
#if defined STDC_HEADERS || defined HAVE_STRING_H
|
||||||
|
# include <string.h>
|
||||||
|
#else
|
||||||
|
# include <strings.h>
|
||||||
|
# ifndef strrchr
|
||||||
|
# define strrchr rindex
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
#ifndef HAVE_DECL_MEMRCHR
|
||||||
|
"this configure-time declaration test was not run"
|
||||||
|
#endif
|
||||||
|
#if !HAVE_DECL_MEMRCHR
|
||||||
|
void *memrchr ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "dirname.h"
|
||||||
|
|
||||||
|
#ifndef FILESYSTEM_PREFIX_LEN
|
||||||
|
# define FILESYSTEM_PREFIX_LEN(Filename) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ISSLASH
|
||||||
|
# define ISSLASH(C) ((C) == '/')
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BACKSLASH_IS_PATH_SEPARATOR ISSLASH ('\\')
|
||||||
|
|
||||||
|
/* Return the length of `dirname (PATH)' and set *RESULT to point
|
||||||
|
to PATH or to `"."', as appropriate. Works properly even if
|
||||||
|
there are trailing slashes (by effectively ignoring them).
|
||||||
|
WARNING: This function doesn't work for cwd-relative names like
|
||||||
|
`a:foo' that are specified with a drive-letter prefix. That case
|
||||||
|
is handled in the caller. */
|
||||||
|
static size_t
|
||||||
|
dir_name_r (char const *path, char const **result)
|
||||||
|
{
|
||||||
|
char const *slash;
|
||||||
|
size_t length; /* Length of result, not including NUL. */
|
||||||
|
|
||||||
|
slash = strrchr (path, '/');
|
||||||
|
if (BACKSLASH_IS_PATH_SEPARATOR)
|
||||||
|
{
|
||||||
|
char const *b = strrchr (path, '\\');
|
||||||
|
if (b && slash < b)
|
||||||
|
slash = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If the last byte of PATH is a slash, decrement SLASH until it's
|
||||||
|
pointing at the leftmost in a sequence of trailing slashes. */
|
||||||
|
if (slash && slash[1] == 0)
|
||||||
|
{
|
||||||
|
while (path < slash && ISSLASH (slash[-1]))
|
||||||
|
{
|
||||||
|
--slash;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (path < slash)
|
||||||
|
{
|
||||||
|
size_t len = slash - path;
|
||||||
|
slash = memrchr (path, '/', len);
|
||||||
|
if (BACKSLASH_IS_PATH_SEPARATOR)
|
||||||
|
{
|
||||||
|
char const *b = memrchr (path, '\\', len);
|
||||||
|
if (b && slash < b)
|
||||||
|
slash = b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (slash == 0)
|
||||||
|
{
|
||||||
|
/* File is in the current directory. */
|
||||||
|
|
||||||
|
length = FILESYSTEM_PREFIX_LEN (path);
|
||||||
|
|
||||||
|
if (length == 0)
|
||||||
|
{
|
||||||
|
path = ".";
|
||||||
|
length = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Remove any trailing slashes from the result. If we have a
|
||||||
|
canonicalized "d:/path", leave alone the root case "d:/". */
|
||||||
|
char const *lim = path + FILESYSTEM_PREFIX_LEN (path);
|
||||||
|
|
||||||
|
while (lim < slash && ISSLASH (*slash))
|
||||||
|
--slash;
|
||||||
|
|
||||||
|
length = slash - path + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
*result = path;
|
||||||
|
return length;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return the leading directories part of PATH,
|
||||||
|
allocated with malloc. If out of memory, return 0.
|
||||||
|
Works properly even if there are trailing slashes
|
||||||
|
(by effectively ignoring them). */
|
||||||
|
|
||||||
|
char *
|
||||||
|
dir_name (char const *path)
|
||||||
|
{
|
||||||
|
char const *result;
|
||||||
|
size_t length = dir_name_r (path, &result);
|
||||||
|
int append_dot = (length && length == FILESYSTEM_PREFIX_LEN (newpath));
|
||||||
|
char *newpath = (char *) malloc (length + append_dot + 1);
|
||||||
|
if (newpath == 0)
|
||||||
|
return 0;
|
||||||
|
strncpy (newpath, result, length);
|
||||||
|
/* If PATH is "d:foo", return "d:.", the CWD on drive d: */
|
||||||
|
if (append_dot)
|
||||||
|
newpath[length++] = '.';
|
||||||
|
newpath[length] = 0;
|
||||||
|
return newpath;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef TEST_DIRNAME
|
||||||
|
/*
|
||||||
|
|
||||||
|
Run the test like this (expect no output):
|
||||||
|
gcc -DHAVE_CONFIG_H -DTEST_DIRNAME -I.. -O -Wall memrchr.c dirname.c
|
||||||
|
sed -n '/^BEGIN-DATA$/,/^END-DATA$/p' dirname.c|grep -v DATA|./a.out
|
||||||
|
|
||||||
|
BEGIN-DATA
|
||||||
|
foo//// .
|
||||||
|
bar/foo//// bar
|
||||||
|
foo/ .
|
||||||
|
/ /
|
||||||
|
. .
|
||||||
|
a .
|
||||||
|
END-DATA
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
# define MAX_BUFF_LEN 1024
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <stdlib.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
char buff[MAX_BUFF_LEN + 1];
|
||||||
|
|
||||||
|
buff[MAX_BUFF_LEN] = 0;
|
||||||
|
while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0])
|
||||||
|
{
|
||||||
|
char path[MAX_BUFF_LEN];
|
||||||
|
char expected_result[MAX_BUFF_LEN];
|
||||||
|
char const *result;
|
||||||
|
sscanf (buff, "%s %s", path, expected_result);
|
||||||
|
result = dir_name (path);
|
||||||
|
if (strcmp (result, expected_result))
|
||||||
|
printf ("%s: got %s, expected %s\n", path, result, expected_result);
|
||||||
|
}
|
||||||
|
exit (0);
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/* Copyright (C) 1998 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 Foundation,
|
||||||
|
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#ifndef DIRNAME_H_
|
||||||
|
# define DIRNAME_H_ 1
|
||||||
|
|
||||||
|
# ifndef PARAMS
|
||||||
|
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
|
# define PARAMS(Args) Args
|
||||||
|
# else
|
||||||
|
# define PARAMS(Args) ()
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
char *
|
||||||
|
dir_name PARAMS ((const char *path));
|
||||||
|
|
||||||
|
#endif /* not DIRNAME_H_ */
|
||||||
+400
@@ -0,0 +1,400 @@
|
|||||||
|
/* Error handler for noninteractive utilities
|
||||||
|
Copyright (C) 1990-1998, 2000, 2001 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library. Its master source is NOT part of
|
||||||
|
the C library, however. The master source lives in /gd/gnu/lib.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library 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
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the GNU C Library; if not, write to the Free
|
||||||
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
|
02111-1307 USA. */
|
||||||
|
|
||||||
|
/* Written by David MacKenzie <[email protected]>. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#if HAVE_LIBINTL_H
|
||||||
|
# include <libintl.h>
|
||||||
|
#endif
|
||||||
|
#ifdef _LIBC
|
||||||
|
# include <wchar.h>
|
||||||
|
# define mbsrtowcs __mbsrtowcs
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_VPRINTF || HAVE_DOPRNT || _LIBC
|
||||||
|
# if __STDC__
|
||||||
|
# include <stdarg.h>
|
||||||
|
# define VA_START(args, lastarg) va_start(args, lastarg)
|
||||||
|
# else
|
||||||
|
# include <varargs.h>
|
||||||
|
# define VA_START(args, lastarg) va_start(args)
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define va_alist a1, a2, a3, a4, a5, a6, a7, a8
|
||||||
|
# define va_dcl char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if STDC_HEADERS || _LIBC
|
||||||
|
# include <stdlib.h>
|
||||||
|
# include <string.h>
|
||||||
|
#else
|
||||||
|
void exit ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "error.h"
|
||||||
|
|
||||||
|
#ifndef _
|
||||||
|
# define _(String) String
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* If NULL, error will flush stdout, then print on stderr the program
|
||||||
|
name, a colon and a space. Otherwise, error will call this
|
||||||
|
function without parameters instead. */
|
||||||
|
void (*error_print_progname) (
|
||||||
|
#if __STDC__ - 0
|
||||||
|
void
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
|
/* This variable is incremented each time `error' is called. */
|
||||||
|
unsigned int error_message_count;
|
||||||
|
|
||||||
|
#ifdef _LIBC
|
||||||
|
/* In the GNU C library, there is a predefined variable for this. */
|
||||||
|
|
||||||
|
# define program_name program_invocation_name
|
||||||
|
# include <errno.h>
|
||||||
|
|
||||||
|
/* In GNU libc we want do not want to use the common name `error' directly.
|
||||||
|
Instead make it a weak alias. */
|
||||||
|
extern void __error (int status, int errnum, const char *message, ...)
|
||||||
|
__attribute__ ((__format__ (__printf__, 3, 4)));
|
||||||
|
extern void __error_at_line (int status, int errnum, const char *file_name,
|
||||||
|
unsigned int line_number, const char *message,
|
||||||
|
...)
|
||||||
|
__attribute__ ((__format__ (__printf__, 5, 6)));;
|
||||||
|
# define error __error
|
||||||
|
# define error_at_line __error_at_line
|
||||||
|
|
||||||
|
# ifdef USE_IN_LIBIO
|
||||||
|
# include <libio/iolibio.h>
|
||||||
|
# define fflush(s) _IO_fflush (s)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#else /* not _LIBC */
|
||||||
|
|
||||||
|
# if !HAVE_DECL_STRERROR_R && STRERROR_R_CHAR_P
|
||||||
|
# ifndef HAVE_DECL_STRERROR_R
|
||||||
|
"this configure-time declaration test was not run"
|
||||||
|
# endif
|
||||||
|
char *strerror_r ();
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* The calling program should define program_name and set it to the
|
||||||
|
name of the executing program. */
|
||||||
|
extern char *program_name;
|
||||||
|
|
||||||
|
# if HAVE_STRERROR_R || defined strerror_r
|
||||||
|
# define __strerror_r strerror_r
|
||||||
|
# else
|
||||||
|
# if HAVE_STRERROR
|
||||||
|
# ifndef HAVE_DECL_STRERROR
|
||||||
|
"this configure-time declaration test was not run"
|
||||||
|
# endif
|
||||||
|
# if !HAVE_DECL_STRERROR
|
||||||
|
char *strerror ();
|
||||||
|
# endif
|
||||||
|
# else
|
||||||
|
static char *
|
||||||
|
private_strerror (int errnum)
|
||||||
|
{
|
||||||
|
extern char *sys_errlist[];
|
||||||
|
extern int sys_nerr;
|
||||||
|
|
||||||
|
if (errnum > 0 && errnum <= sys_nerr)
|
||||||
|
return _(sys_errlist[errnum]);
|
||||||
|
return _("Unknown system error");
|
||||||
|
}
|
||||||
|
# define strerror private_strerror
|
||||||
|
# endif /* HAVE_STRERROR */
|
||||||
|
# endif /* HAVE_STRERROR_R || defined strerror_r */
|
||||||
|
#endif /* not _LIBC */
|
||||||
|
|
||||||
|
static void
|
||||||
|
print_errno_message (int errnum)
|
||||||
|
{
|
||||||
|
char const *s;
|
||||||
|
|
||||||
|
#if defined HAVE_STRERROR_R || _LIBC
|
||||||
|
char errbuf[1024];
|
||||||
|
# if STRERROR_R_CHAR_P || _LIBC
|
||||||
|
s = __strerror_r (errnum, errbuf, sizeof errbuf);
|
||||||
|
# else
|
||||||
|
if (__strerror_r (errnum, errbuf, sizeof errbuf) == 0)
|
||||||
|
s = errbuf;
|
||||||
|
else
|
||||||
|
s = 0;
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
s = strerror (errnum);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !_LIBC
|
||||||
|
if (! s)
|
||||||
|
s = _("Unknown system error");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if _LIBC && USE_IN_LIBIO
|
||||||
|
if (_IO_fwide (stderr, 0) > 0)
|
||||||
|
{
|
||||||
|
__fwprintf (stderr, L": %s", s);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
fprintf (stderr, ": %s", s);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef VA_START
|
||||||
|
static void
|
||||||
|
error_tail (int status, int errnum, const char *message, va_list args)
|
||||||
|
{
|
||||||
|
# if HAVE_VPRINTF || _LIBC
|
||||||
|
# if _LIBC && USE_IN_LIBIO
|
||||||
|
if (_IO_fwide (stderr, 0) > 0)
|
||||||
|
{
|
||||||
|
# define ALLOCA_LIMIT 2000
|
||||||
|
size_t len = strlen (message) + 1;
|
||||||
|
wchar_t *wmessage = NULL;
|
||||||
|
mbstate_t st;
|
||||||
|
size_t res;
|
||||||
|
const char *tmp;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (len < ALLOCA_LIMIT)
|
||||||
|
wmessage = (wchar_t *) alloca (len * sizeof (wchar_t));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (wmessage != NULL && len / 2 < ALLOCA_LIMIT)
|
||||||
|
wmessage = NULL;
|
||||||
|
|
||||||
|
wmessage = (wchar_t *) realloc (wmessage,
|
||||||
|
len * sizeof (wchar_t));
|
||||||
|
|
||||||
|
if (wmessage == NULL)
|
||||||
|
{
|
||||||
|
fputws_unlocked (L"out of memory\n", stderr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
memset (&st, '\0', sizeof (st));
|
||||||
|
tmp =message;
|
||||||
|
}
|
||||||
|
while ((res = mbsrtowcs (wmessage, &tmp, len, &st)) == len);
|
||||||
|
|
||||||
|
if (res == (size_t) -1)
|
||||||
|
/* The string cannot be converted. */
|
||||||
|
wmessage = (wchar_t *) L"???";
|
||||||
|
|
||||||
|
__vfwprintf (stderr, wmessage, args);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
# endif
|
||||||
|
vfprintf (stderr, message, args);
|
||||||
|
# else
|
||||||
|
_doprnt (message, args, stderr);
|
||||||
|
# endif
|
||||||
|
va_end (args);
|
||||||
|
|
||||||
|
++error_message_count;
|
||||||
|
if (errnum)
|
||||||
|
print_errno_message (errnum);
|
||||||
|
# if _LIBC && USE_IN_LIBIO
|
||||||
|
if (_IO_fwide (stderr, 0) > 0)
|
||||||
|
putwc (L'\n', stderr);
|
||||||
|
else
|
||||||
|
# endif
|
||||||
|
putc ('\n', stderr);
|
||||||
|
fflush (stderr);
|
||||||
|
if (status)
|
||||||
|
exit (status);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Print the program name and error message MESSAGE, which is a printf-style
|
||||||
|
format string with optional args.
|
||||||
|
If ERRNUM is nonzero, print its corresponding system error message.
|
||||||
|
Exit with status STATUS if it is nonzero. */
|
||||||
|
/* VARARGS */
|
||||||
|
void
|
||||||
|
#if defined VA_START && __STDC__
|
||||||
|
error (int status, int errnum, const char *message, ...)
|
||||||
|
#else
|
||||||
|
error (status, errnum, message, va_alist)
|
||||||
|
int status;
|
||||||
|
int errnum;
|
||||||
|
char *message;
|
||||||
|
va_dcl
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
#ifdef VA_START
|
||||||
|
va_list args;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
fflush (stdout);
|
||||||
|
#ifdef _LIBC
|
||||||
|
# ifdef USE_IN_LIBIO
|
||||||
|
_IO_flockfile (stderr);
|
||||||
|
# else
|
||||||
|
__flockfile (stderr);
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
if (error_print_progname)
|
||||||
|
(*error_print_progname) ();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#if _LIBC && USE_IN_LIBIO
|
||||||
|
if (_IO_fwide (stderr, 0) > 0)
|
||||||
|
__fwprintf (stderr, L"%s: ", program_name);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
fprintf (stderr, "%s: ", program_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef VA_START
|
||||||
|
VA_START (args, message);
|
||||||
|
error_tail (status, errnum, message, args);
|
||||||
|
#else
|
||||||
|
fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8);
|
||||||
|
|
||||||
|
++error_message_count;
|
||||||
|
if (errnum)
|
||||||
|
print_errno_message (errnum);
|
||||||
|
putc ('\n', stderr);
|
||||||
|
fflush (stderr);
|
||||||
|
if (status)
|
||||||
|
exit (status);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _LIBC
|
||||||
|
# ifdef USE_IN_LIBIO
|
||||||
|
_IO_funlockfile (stderr);
|
||||||
|
# else
|
||||||
|
__funlockfile (stderr);
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sometimes we want to have at most one error per line. This
|
||||||
|
variable controls whether this mode is selected or not. */
|
||||||
|
int error_one_per_line;
|
||||||
|
|
||||||
|
void
|
||||||
|
#if defined VA_START && __STDC__
|
||||||
|
error_at_line (int status, int errnum, const char *file_name,
|
||||||
|
unsigned int line_number, const char *message, ...)
|
||||||
|
#else
|
||||||
|
error_at_line (status, errnum, file_name, line_number, message, va_alist)
|
||||||
|
int status;
|
||||||
|
int errnum;
|
||||||
|
const char *file_name;
|
||||||
|
unsigned int line_number;
|
||||||
|
char *message;
|
||||||
|
va_dcl
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
#ifdef VA_START
|
||||||
|
va_list args;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (error_one_per_line)
|
||||||
|
{
|
||||||
|
static const char *old_file_name;
|
||||||
|
static unsigned int old_line_number;
|
||||||
|
|
||||||
|
if (old_line_number == line_number
|
||||||
|
&& (file_name == old_file_name
|
||||||
|
|| strcmp (old_file_name, file_name) == 0))
|
||||||
|
/* Simply return and print nothing. */
|
||||||
|
return;
|
||||||
|
|
||||||
|
old_file_name = file_name;
|
||||||
|
old_line_number = line_number;
|
||||||
|
}
|
||||||
|
|
||||||
|
fflush (stdout);
|
||||||
|
#ifdef _LIBC
|
||||||
|
# ifdef USE_IN_LIBIO
|
||||||
|
_IO_flockfile (stderr);
|
||||||
|
# else
|
||||||
|
__flockfile (stderr);
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
if (error_print_progname)
|
||||||
|
(*error_print_progname) ();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#if _LIBC && USE_IN_LIBIO
|
||||||
|
if (_IO_fwide (stderr, 0) > 0)
|
||||||
|
__fwprintf (stderr, L"%s: ", program_name);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
fprintf (stderr, "%s:", program_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file_name != NULL)
|
||||||
|
{
|
||||||
|
#if _LIBC && USE_IN_LIBIO
|
||||||
|
if (_IO_fwide (stderr, 0) > 0)
|
||||||
|
__fwprintf (stderr, L"%s:%d: ", file_name, line_number);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
fprintf (stderr, "%s:%d: ", file_name, line_number);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef VA_START
|
||||||
|
VA_START (args, message);
|
||||||
|
error_tail (status, errnum, message, args);
|
||||||
|
#else
|
||||||
|
fprintf (stderr, message, a1, a2, a3, a4, a5, a6, a7, a8);
|
||||||
|
|
||||||
|
++error_message_count;
|
||||||
|
if (errnum)
|
||||||
|
print_errno_message (errnum);
|
||||||
|
putc ('\n', stderr);
|
||||||
|
fflush (stderr);
|
||||||
|
if (status)
|
||||||
|
exit (status);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _LIBC
|
||||||
|
# ifdef USE_IN_LIBIO
|
||||||
|
_IO_funlockfile (stderr);
|
||||||
|
# else
|
||||||
|
__funlockfile (stderr);
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _LIBC
|
||||||
|
/* Make the weak alias. */
|
||||||
|
# undef error
|
||||||
|
# undef error_at_line
|
||||||
|
weak_alias (__error, error)
|
||||||
|
weak_alias (__error_at_line, error_at_line)
|
||||||
|
#endif
|
||||||
+78
@@ -0,0 +1,78 @@
|
|||||||
|
/* Declaration for error-reporting function
|
||||||
|
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
|
||||||
|
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||||
|
Bugs can be reported to [email protected].
|
||||||
|
|
||||||
|
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
|
||||||
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
USA. */
|
||||||
|
|
||||||
|
#ifndef _ERROR_H
|
||||||
|
#define _ERROR_H 1
|
||||||
|
|
||||||
|
#ifndef __attribute__
|
||||||
|
/* This feature is available in gcc versions 2.5 and later. */
|
||||||
|
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
|
||||||
|
# define __attribute__(Spec) /* empty */
|
||||||
|
# endif
|
||||||
|
/* The __-protected variants of `format' and `printf' attributes
|
||||||
|
are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
|
||||||
|
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
|
||||||
|
# define __format__ format
|
||||||
|
# define __printf__ printf
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (__STDC__) && __STDC__
|
||||||
|
|
||||||
|
/* Print a message with `fprintf (stderr, FORMAT, ...)';
|
||||||
|
if ERRNUM is nonzero, follow it with ": " and strerror (ERRNUM).
|
||||||
|
If STATUS is nonzero, terminate the program with `exit (STATUS)'. */
|
||||||
|
|
||||||
|
extern void error (int status, int errnum, const char *format, ...)
|
||||||
|
__attribute__ ((__format__ (__printf__, 3, 4)));
|
||||||
|
|
||||||
|
extern void error_at_line (int status, int errnum, const char *fname,
|
||||||
|
unsigned int lineno, const char *format, ...)
|
||||||
|
__attribute__ ((__format__ (__printf__, 5, 6)));
|
||||||
|
|
||||||
|
/* If NULL, error will flush stdout, then print on stderr the program
|
||||||
|
name, a colon and a space. Otherwise, error will call this
|
||||||
|
function without parameters instead. */
|
||||||
|
extern void (*error_print_progname) (void);
|
||||||
|
|
||||||
|
#else
|
||||||
|
void error ();
|
||||||
|
void error_at_line ();
|
||||||
|
extern void (*error_print_progname) ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* This variable is incremented each time `error' is called. */
|
||||||
|
extern unsigned int error_message_count;
|
||||||
|
|
||||||
|
/* Sometimes we want to have at most one error per line. This
|
||||||
|
variable controls whether this mode is selected or not. */
|
||||||
|
extern int error_one_per_line;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* error.h */
|
||||||
+1068
File diff suppressed because it is too large
Load Diff
+180
@@ -0,0 +1,180 @@
|
|||||||
|
/* Declarations for getopt.
|
||||||
|
Copyright (C) 1989-1994, 1996-1999, 2001 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library 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
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the GNU C Library; if not, write to the Free
|
||||||
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
|
02111-1307 USA. */
|
||||||
|
|
||||||
|
#ifndef _GETOPT_H
|
||||||
|
|
||||||
|
#ifndef __need_getopt
|
||||||
|
# define _GETOPT_H 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* If __GNU_LIBRARY__ is not already defined, either we are being used
|
||||||
|
standalone, or this is the first header included in the source file.
|
||||||
|
If we are being used with glibc, we need to include <features.h>, but
|
||||||
|
that does not exist if we are standalone. So: if __GNU_LIBRARY__ is
|
||||||
|
not defined, include <ctype.h>, which will pull in <features.h> for us
|
||||||
|
if it's from glibc. (Why ctype.h? It's guaranteed to exist and it
|
||||||
|
doesn't flood the namespace with stuff the way some other headers do.) */
|
||||||
|
#if !defined __GNU_LIBRARY__
|
||||||
|
# include <ctype.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* For communication from `getopt' to the caller.
|
||||||
|
When `getopt' finds an option that takes an argument,
|
||||||
|
the argument value is returned here.
|
||||||
|
Also, when `ordering' is RETURN_IN_ORDER,
|
||||||
|
each non-option ARGV-element is returned here. */
|
||||||
|
|
||||||
|
extern char *optarg;
|
||||||
|
|
||||||
|
/* Index in ARGV of the next element to be scanned.
|
||||||
|
This is used for communication to and from the caller
|
||||||
|
and for communication between successive calls to `getopt'.
|
||||||
|
|
||||||
|
On entry to `getopt', zero means this is the first call; initialize.
|
||||||
|
|
||||||
|
When `getopt' returns -1, this is the index of the first of the
|
||||||
|
non-option elements that the caller should itself scan.
|
||||||
|
|
||||||
|
Otherwise, `optind' communicates from one call to the next
|
||||||
|
how much of ARGV has been scanned so far. */
|
||||||
|
|
||||||
|
extern int optind;
|
||||||
|
|
||||||
|
/* Callers store zero here to inhibit the error message `getopt' prints
|
||||||
|
for unrecognized options. */
|
||||||
|
|
||||||
|
extern int opterr;
|
||||||
|
|
||||||
|
/* Set to an option character which was unrecognized. */
|
||||||
|
|
||||||
|
extern int optopt;
|
||||||
|
|
||||||
|
#ifndef __need_getopt
|
||||||
|
/* Describe the long-named options requested by the application.
|
||||||
|
The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
|
||||||
|
of `struct option' terminated by an element containing a name which is
|
||||||
|
zero.
|
||||||
|
|
||||||
|
The field `has_arg' is:
|
||||||
|
no_argument (or 0) if the option does not take an argument,
|
||||||
|
required_argument (or 1) if the option requires an argument,
|
||||||
|
optional_argument (or 2) if the option takes an optional argument.
|
||||||
|
|
||||||
|
If the field `flag' is not NULL, it points to a variable that is set
|
||||||
|
to the value given in the field `val' when the option is found, but
|
||||||
|
left unchanged if the option is not found.
|
||||||
|
|
||||||
|
To have a long-named option do something other than set an `int' to
|
||||||
|
a compiled-in constant, such as set a value from `optarg', set the
|
||||||
|
option's `flag' field to zero and its `val' field to a nonzero
|
||||||
|
value (the equivalent single-letter option character, if there is
|
||||||
|
one). For long options that have a zero `flag' field, `getopt'
|
||||||
|
returns the contents of the `val' field. */
|
||||||
|
|
||||||
|
struct option
|
||||||
|
{
|
||||||
|
# if (defined __STDC__ && __STDC__) || defined __cplusplus
|
||||||
|
const char *name;
|
||||||
|
# else
|
||||||
|
char *name;
|
||||||
|
# endif
|
||||||
|
/* has_arg can't be an enum because some compilers complain about
|
||||||
|
type mismatches in all the code that assumes it is an int. */
|
||||||
|
int has_arg;
|
||||||
|
int *flag;
|
||||||
|
int val;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Names for the values of the `has_arg' field of `struct option'. */
|
||||||
|
|
||||||
|
# define no_argument 0
|
||||||
|
# define required_argument 1
|
||||||
|
# define optional_argument 2
|
||||||
|
#endif /* need getopt */
|
||||||
|
|
||||||
|
|
||||||
|
/* Get definitions and prototypes for functions to process the
|
||||||
|
arguments in ARGV (ARGC of them, minus the program name) for
|
||||||
|
options given in OPTS.
|
||||||
|
|
||||||
|
Return the option character from OPTS just read. Return -1 when
|
||||||
|
there are no more options. For unrecognized options, or options
|
||||||
|
missing arguments, `optopt' is set to the option letter, and '?' is
|
||||||
|
returned.
|
||||||
|
|
||||||
|
The OPTS string is a list of characters which are recognized option
|
||||||
|
letters, optionally followed by colons, specifying that that letter
|
||||||
|
takes an argument, to be placed in `optarg'.
|
||||||
|
|
||||||
|
If a letter in OPTS is followed by two colons, its argument is
|
||||||
|
optional. This behavior is specific to the GNU `getopt'.
|
||||||
|
|
||||||
|
The argument `--' causes premature termination of argument
|
||||||
|
scanning, explicitly telling `getopt' that there are no more
|
||||||
|
options.
|
||||||
|
|
||||||
|
If OPTS begins with `--', then non-option arguments are treated as
|
||||||
|
arguments to the option '\0'. This behavior is specific to the GNU
|
||||||
|
`getopt'. */
|
||||||
|
|
||||||
|
#if (defined __STDC__ && __STDC__) || defined __cplusplus
|
||||||
|
# ifdef __GNU_LIBRARY__
|
||||||
|
/* Many other libraries have conflicting prototypes for getopt, with
|
||||||
|
differences in the consts, in stdlib.h. To avoid compilation
|
||||||
|
errors, only prototype getopt for the GNU C library. */
|
||||||
|
extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
|
||||||
|
# else /* not __GNU_LIBRARY__ */
|
||||||
|
extern int getopt ();
|
||||||
|
# endif /* __GNU_LIBRARY__ */
|
||||||
|
|
||||||
|
# ifndef __need_getopt
|
||||||
|
extern int getopt_long (int __argc, char *const *__argv, const char *__shortopts,
|
||||||
|
const struct option *__longopts, int *__longind);
|
||||||
|
extern int getopt_long_only (int __argc, char *const *__argv,
|
||||||
|
const char *__shortopts,
|
||||||
|
const struct option *__longopts, int *__longind);
|
||||||
|
|
||||||
|
/* Internal only. Users should not call this directly. */
|
||||||
|
extern int _getopt_internal (int __argc, char *const *__argv,
|
||||||
|
const char *__shortopts,
|
||||||
|
const struct option *__longopts, int *__longind,
|
||||||
|
int __long_only);
|
||||||
|
# endif
|
||||||
|
#else /* not __STDC__ */
|
||||||
|
extern int getopt ();
|
||||||
|
# ifndef __need_getopt
|
||||||
|
extern int getopt_long ();
|
||||||
|
extern int getopt_long_only ();
|
||||||
|
|
||||||
|
extern int _getopt_internal ();
|
||||||
|
# endif
|
||||||
|
#endif /* __STDC__ */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Make sure we later can get all the definitions and declarations. */
|
||||||
|
#undef __need_getopt
|
||||||
|
|
||||||
|
#endif /* getopt.h */
|
||||||
+188
@@ -0,0 +1,188 @@
|
|||||||
|
/* getopt_long and getopt_long_only entry points for GNU getopt.
|
||||||
|
Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
|
||||||
|
Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library 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
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the GNU C Library; if not, write to the Free
|
||||||
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
|
02111-1307 USA. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "getopt.h"
|
||||||
|
|
||||||
|
#if !defined __STDC__ || !__STDC__
|
||||||
|
/* This is a separate conditional since some stdc systems
|
||||||
|
reject `defined (const)'. */
|
||||||
|
#ifndef const
|
||||||
|
#define const
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
/* Comment out all this code if we are using the GNU C Library, and are not
|
||||||
|
actually compiling the library itself. This code is part of the GNU C
|
||||||
|
Library, but also included in many other GNU distributions. Compiling
|
||||||
|
and linking in this code is a waste when using the GNU C library
|
||||||
|
(especially if it is a shared library). Rather than having every GNU
|
||||||
|
program understand `configure --with-gnu-libc' and omit the object files,
|
||||||
|
it is simpler to just do this in the source for each such file. */
|
||||||
|
|
||||||
|
#define GETOPT_INTERFACE_VERSION 2
|
||||||
|
#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
|
||||||
|
#include <gnu-versions.h>
|
||||||
|
#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
|
||||||
|
#define ELIDE_CODE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ELIDE_CODE
|
||||||
|
|
||||||
|
|
||||||
|
/* This needs to come after some library #include
|
||||||
|
to get __GNU_LIBRARY__ defined. */
|
||||||
|
#ifdef __GNU_LIBRARY__
|
||||||
|
#include <stdlib.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef NULL
|
||||||
|
#define NULL 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
getopt_long (argc, argv, options, long_options, opt_index)
|
||||||
|
int argc;
|
||||||
|
char *const *argv;
|
||||||
|
const char *options;
|
||||||
|
const struct option *long_options;
|
||||||
|
int *opt_index;
|
||||||
|
{
|
||||||
|
return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Like getopt_long, but '-' as well as '--' can indicate a long option.
|
||||||
|
If an option that starts with '-' (not '--') doesn't match a long option,
|
||||||
|
but does match a short option, it is parsed as a short option
|
||||||
|
instead. */
|
||||||
|
|
||||||
|
int
|
||||||
|
getopt_long_only (argc, argv, options, long_options, opt_index)
|
||||||
|
int argc;
|
||||||
|
char *const *argv;
|
||||||
|
const char *options;
|
||||||
|
const struct option *long_options;
|
||||||
|
int *opt_index;
|
||||||
|
{
|
||||||
|
return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* Not ELIDE_CODE. */
|
||||||
|
|
||||||
|
#ifdef TEST
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main (argc, argv)
|
||||||
|
int argc;
|
||||||
|
char **argv;
|
||||||
|
{
|
||||||
|
int c;
|
||||||
|
int digit_optind = 0;
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
int this_option_optind = optind ? optind : 1;
|
||||||
|
int option_index = 0;
|
||||||
|
static struct option long_options[] =
|
||||||
|
{
|
||||||
|
{"add", 1, 0, 0},
|
||||||
|
{"append", 0, 0, 0},
|
||||||
|
{"delete", 1, 0, 0},
|
||||||
|
{"verbose", 0, 0, 0},
|
||||||
|
{"create", 0, 0, 0},
|
||||||
|
{"file", 1, 0, 0},
|
||||||
|
{0, 0, 0, 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
c = getopt_long (argc, argv, "abc:d:0123456789",
|
||||||
|
long_options, &option_index);
|
||||||
|
if (c == -1)
|
||||||
|
break;
|
||||||
|
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
printf ("option %s", long_options[option_index].name);
|
||||||
|
if (optarg)
|
||||||
|
printf (" with arg %s", optarg);
|
||||||
|
printf ("\n");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '0':
|
||||||
|
case '1':
|
||||||
|
case '2':
|
||||||
|
case '3':
|
||||||
|
case '4':
|
||||||
|
case '5':
|
||||||
|
case '6':
|
||||||
|
case '7':
|
||||||
|
case '8':
|
||||||
|
case '9':
|
||||||
|
if (digit_optind != 0 && digit_optind != this_option_optind)
|
||||||
|
printf ("digits occur in two different argv-elements.\n");
|
||||||
|
digit_optind = this_option_optind;
|
||||||
|
printf ("option %c\n", c);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'a':
|
||||||
|
printf ("option a\n");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'b':
|
||||||
|
printf ("option b\n");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'c':
|
||||||
|
printf ("option c with value `%s'\n", optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'd':
|
||||||
|
printf ("option d with value `%s'\n", optarg);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '?':
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
printf ("?? getopt returned character code 0%o ??\n", c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (optind < argc)
|
||||||
|
{
|
||||||
|
printf ("non-option ARGV-elements: ");
|
||||||
|
while (optind < argc)
|
||||||
|
printf ("%s ", argv[optind++]);
|
||||||
|
printf ("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
exit (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* TEST */
|
||||||
+1009
File diff suppressed because it is too large
Load Diff
+120
@@ -0,0 +1,120 @@
|
|||||||
|
/* hash - hashing table processing.
|
||||||
|
Copyright (C) 1998, 1999 Free Software Foundation, Inc.
|
||||||
|
Written by Jim Meyering <[email protected]>, 1998.
|
||||||
|
|
||||||
|
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 Foundation,
|
||||||
|
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
/* A generic hash table package. */
|
||||||
|
|
||||||
|
/* Make sure USE_OBSTACK is defined to 1 if you want the allocator to use
|
||||||
|
obstacks instead of malloc, and recompile `hash.c' with same setting. */
|
||||||
|
|
||||||
|
#ifndef PARAMS
|
||||||
|
# if PROTOTYPES || __STDC__
|
||||||
|
# define PARAMS(Args) Args
|
||||||
|
# else
|
||||||
|
# define PARAMS(Args) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef unsigned (*Hash_hasher) PARAMS ((const void *, unsigned));
|
||||||
|
typedef bool (*Hash_comparator) PARAMS ((const void *, const void *));
|
||||||
|
typedef void (*Hash_data_freer) PARAMS ((void *));
|
||||||
|
typedef bool (*Hash_processor) PARAMS ((void *, void *));
|
||||||
|
|
||||||
|
struct hash_entry
|
||||||
|
{
|
||||||
|
void *data;
|
||||||
|
struct hash_entry *next;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct hash_tuning
|
||||||
|
{
|
||||||
|
/* This structure is mainly used for `hash_initialize', see the block
|
||||||
|
documentation of `hash_reset_tuning' for more complete comments. */
|
||||||
|
|
||||||
|
float shrink_threshold; /* ratio of used buckets to trigger a shrink */
|
||||||
|
float shrink_factor; /* ratio of new smaller size to original size */
|
||||||
|
float growth_threshold; /* ratio of used buckets to trigger a growth */
|
||||||
|
float growth_factor; /* ratio of new bigger size to original size */
|
||||||
|
bool is_n_buckets; /* if CANDIDATE really means table size */
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct hash_tuning Hash_tuning;
|
||||||
|
|
||||||
|
struct hash_table
|
||||||
|
{
|
||||||
|
/* The array of buckets starts at BUCKET and extends to BUCKET_LIMIT-1,
|
||||||
|
for a possibility of N_BUCKETS. Among those, N_BUCKETS_USED buckets
|
||||||
|
are not empty, there are N_ENTRIES active entries in the table. */
|
||||||
|
struct hash_entry *bucket;
|
||||||
|
struct hash_entry *bucket_limit;
|
||||||
|
unsigned n_buckets;
|
||||||
|
unsigned n_buckets_used;
|
||||||
|
unsigned n_entries;
|
||||||
|
|
||||||
|
/* Tuning arguments, kept in a physicaly separate structure. */
|
||||||
|
const Hash_tuning *tuning;
|
||||||
|
|
||||||
|
/* Three functions are given to `hash_initialize', see the documentation
|
||||||
|
block for this function. In a word, HASHER randomizes a user entry
|
||||||
|
into a number up from 0 up to some maximum minus 1; COMPARATOR returns
|
||||||
|
true if two user entries compare equally; and DATA_FREER is the cleanup
|
||||||
|
function for a user entry. */
|
||||||
|
Hash_hasher hasher;
|
||||||
|
Hash_comparator comparator;
|
||||||
|
Hash_data_freer data_freer;
|
||||||
|
|
||||||
|
/* A linked list of freed struct hash_entry structs. */
|
||||||
|
struct hash_entry *free_entry_list;
|
||||||
|
|
||||||
|
#if USE_OBSTACK
|
||||||
|
/* Whenever obstacks are used, it is possible to allocate all overflowed
|
||||||
|
entries into a single stack, so they all can be freed in a single
|
||||||
|
operation. It is not clear if the speedup is worth the trouble. */
|
||||||
|
struct obstack entry_stack;
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct hash_table Hash_table;
|
||||||
|
|
||||||
|
/* Information and lookup. */
|
||||||
|
unsigned hash_get_n_buckets PARAMS ((const Hash_table *));
|
||||||
|
unsigned hash_get_n_buckets_used PARAMS ((const Hash_table *));
|
||||||
|
unsigned hash_get_n_entries PARAMS ((const Hash_table *));
|
||||||
|
unsigned hash_get_max_bucket_length PARAMS ((const Hash_table *));
|
||||||
|
bool hash_table_ok PARAMS ((const Hash_table *));
|
||||||
|
void hash_print_statistics PARAMS ((const Hash_table *, FILE *));
|
||||||
|
void *hash_lookup PARAMS ((const Hash_table *, const void *));
|
||||||
|
|
||||||
|
/* Walking. */
|
||||||
|
void *hash_get_first PARAMS ((const Hash_table *));
|
||||||
|
void *hash_get_next PARAMS ((const Hash_table *, const void *));
|
||||||
|
unsigned hash_get_entries PARAMS ((const Hash_table *, void **, unsigned));
|
||||||
|
unsigned hash_do_for_each PARAMS ((const Hash_table *, Hash_processor, void *));
|
||||||
|
|
||||||
|
/* Allocation and clean-up. */
|
||||||
|
unsigned hash_string PARAMS ((const char *, unsigned));
|
||||||
|
void hash_reset_tuning PARAMS ((Hash_tuning *));
|
||||||
|
Hash_table *hash_initialize PARAMS ((unsigned, const Hash_tuning *,
|
||||||
|
Hash_hasher, Hash_comparator,
|
||||||
|
Hash_data_freer));
|
||||||
|
void hash_clear PARAMS ((Hash_table *));
|
||||||
|
void hash_free PARAMS ((Hash_table *));
|
||||||
|
|
||||||
|
/* Insertion and deletion. */
|
||||||
|
bool hash_rehash PARAMS ((Hash_table *, unsigned));
|
||||||
|
void *hash_insert PARAMS ((Hash_table *, const void *));
|
||||||
|
void *hash_delete PARAMS ((Hash_table *, const void *));
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/* Work around bug on some systems where malloc (0) fails.
|
||||||
|
Copyright (C) 1997, 1998 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 Foundation,
|
||||||
|
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
/* written by Jim Meyering */
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
#undef malloc
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
char *malloc ();
|
||||||
|
|
||||||
|
/* Allocate an N-byte block of memory from the heap.
|
||||||
|
If N is zero, allocate a 1-byte block. */
|
||||||
|
|
||||||
|
char *
|
||||||
|
rpl_malloc (size_t n)
|
||||||
|
{
|
||||||
|
if (n == 0)
|
||||||
|
n = 1;
|
||||||
|
return malloc (n);
|
||||||
|
}
|
||||||
+216
@@ -0,0 +1,216 @@
|
|||||||
|
/* Copyright (C) 1991,93,96,97,99,2000 Free Software Foundation, Inc.
|
||||||
|
Based on strlen implementation by Torbjorn Granlund ([email protected]),
|
||||||
|
with help from Dan Sahlin ([email protected]) and
|
||||||
|
commentary by Jim Blandy ([email protected]);
|
||||||
|
adaptation to memchr suggested by Dick Karpinski ([email protected]),
|
||||||
|
and implemented by Roland McGrath ([email protected]).
|
||||||
|
|
||||||
|
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||||
|
Bugs can be reported to [email protected].
|
||||||
|
|
||||||
|
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
|
||||||
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
USA. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef __ptr_t
|
||||||
|
#if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
|
||||||
|
# define __ptr_t void *
|
||||||
|
#else /* Not C++ or ANSI C. */
|
||||||
|
# define __ptr_t char *
|
||||||
|
#endif /* C++ or ANSI C. */
|
||||||
|
|
||||||
|
#if defined _LIBC
|
||||||
|
# include <string.h>
|
||||||
|
# include <memcopy.h>
|
||||||
|
#else
|
||||||
|
# define reg_char char
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_STDLIB_H || defined _LIBC
|
||||||
|
# include <stdlib.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_LIMITS_H || defined _LIBC
|
||||||
|
# include <limits.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define LONG_MAX_32_BITS 2147483647
|
||||||
|
|
||||||
|
#ifndef LONG_MAX
|
||||||
|
# define LONG_MAX LONG_MAX_32_BITS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#if HAVE_BP_SYM_H || defined _LIBC
|
||||||
|
# include <bp-sym.h>
|
||||||
|
#else
|
||||||
|
# define BP_SYM(sym) sym
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef memchr
|
||||||
|
#undef __memchr
|
||||||
|
|
||||||
|
/* Search no more than N bytes of S for C. */
|
||||||
|
__ptr_t
|
||||||
|
__memchr (s, c_in, n)
|
||||||
|
const __ptr_t s;
|
||||||
|
int c_in;
|
||||||
|
size_t n;
|
||||||
|
{
|
||||||
|
const unsigned char *char_ptr;
|
||||||
|
const unsigned long int *longword_ptr;
|
||||||
|
unsigned long int longword, magic_bits, charmask;
|
||||||
|
unsigned reg_char c;
|
||||||
|
|
||||||
|
c = (unsigned char) c_in;
|
||||||
|
|
||||||
|
/* Handle the first few characters by reading one character at a time.
|
||||||
|
Do this until CHAR_PTR is aligned on a longword boundary. */
|
||||||
|
for (char_ptr = (const unsigned char *) s;
|
||||||
|
n > 0 && ((unsigned long int) char_ptr
|
||||||
|
& (sizeof (longword) - 1)) != 0;
|
||||||
|
--n, ++char_ptr)
|
||||||
|
if (*char_ptr == c)
|
||||||
|
return (__ptr_t) char_ptr;
|
||||||
|
|
||||||
|
/* All these elucidatory comments refer to 4-byte longwords,
|
||||||
|
but the theory applies equally well to 8-byte longwords. */
|
||||||
|
|
||||||
|
longword_ptr = (unsigned long int *) char_ptr;
|
||||||
|
|
||||||
|
/* Bits 31, 24, 16, and 8 of this number are zero. Call these bits
|
||||||
|
the "holes." Note that there is a hole just to the left of
|
||||||
|
each byte, with an extra at the end:
|
||||||
|
|
||||||
|
bits: 01111110 11111110 11111110 11111111
|
||||||
|
bytes: AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD
|
||||||
|
|
||||||
|
The 1-bits make sure that carries propagate to the next 0-bit.
|
||||||
|
The 0-bits provide holes for carries to fall into. */
|
||||||
|
|
||||||
|
if (sizeof (longword) != 4 && sizeof (longword) != 8)
|
||||||
|
abort ();
|
||||||
|
|
||||||
|
#if LONG_MAX <= LONG_MAX_32_BITS
|
||||||
|
magic_bits = 0x7efefeff;
|
||||||
|
#else
|
||||||
|
magic_bits = ((unsigned long int) 0x7efefefe << 32) | 0xfefefeff;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Set up a longword, each of whose bytes is C. */
|
||||||
|
charmask = c | (c << 8);
|
||||||
|
charmask |= charmask << 16;
|
||||||
|
#if LONG_MAX > LONG_MAX_32_BITS
|
||||||
|
charmask |= charmask << 32;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Instead of the traditional loop which tests each character,
|
||||||
|
we will test a longword at a time. The tricky part is testing
|
||||||
|
if *any of the four* bytes in the longword in question are zero. */
|
||||||
|
while (n >= sizeof (longword))
|
||||||
|
{
|
||||||
|
/* We tentatively exit the loop if adding MAGIC_BITS to
|
||||||
|
LONGWORD fails to change any of the hole bits of LONGWORD.
|
||||||
|
|
||||||
|
1) Is this safe? Will it catch all the zero bytes?
|
||||||
|
Suppose there is a byte with all zeros. Any carry bits
|
||||||
|
propagating from its left will fall into the hole at its
|
||||||
|
least significant bit and stop. Since there will be no
|
||||||
|
carry from its most significant bit, the LSB of the
|
||||||
|
byte to the left will be unchanged, and the zero will be
|
||||||
|
detected.
|
||||||
|
|
||||||
|
2) Is this worthwhile? Will it ignore everything except
|
||||||
|
zero bytes? Suppose every byte of LONGWORD has a bit set
|
||||||
|
somewhere. There will be a carry into bit 8. If bit 8
|
||||||
|
is set, this will carry into bit 16. If bit 8 is clear,
|
||||||
|
one of bits 9-15 must be set, so there will be a carry
|
||||||
|
into bit 16. Similarly, there will be a carry into bit
|
||||||
|
24. If one of bits 24-30 is set, there will be a carry
|
||||||
|
into bit 31, so all of the hole bits will be changed.
|
||||||
|
|
||||||
|
The one misfire occurs when bits 24-30 are clear and bit
|
||||||
|
31 is set; in this case, the hole at bit 31 is not
|
||||||
|
changed. If we had access to the processor carry flag,
|
||||||
|
we could close this loophole by putting the fourth hole
|
||||||
|
at bit 32!
|
||||||
|
|
||||||
|
So it ignores everything except 128's, when they're aligned
|
||||||
|
properly.
|
||||||
|
|
||||||
|
3) But wait! Aren't we looking for C, not zero?
|
||||||
|
Good point. So what we do is XOR LONGWORD with a longword,
|
||||||
|
each of whose bytes is C. This turns each byte that is C
|
||||||
|
into a zero. */
|
||||||
|
|
||||||
|
longword = *longword_ptr++ ^ charmask;
|
||||||
|
|
||||||
|
/* Add MAGIC_BITS to LONGWORD. */
|
||||||
|
if ((((longword + magic_bits)
|
||||||
|
|
||||||
|
/* Set those bits that were unchanged by the addition. */
|
||||||
|
^ ~longword)
|
||||||
|
|
||||||
|
/* Look at only the hole bits. If any of the hole bits
|
||||||
|
are unchanged, most likely one of the bytes was a
|
||||||
|
zero. */
|
||||||
|
& ~magic_bits) != 0)
|
||||||
|
{
|
||||||
|
/* Which of the bytes was C? If none of them were, it was
|
||||||
|
a misfire; continue the search. */
|
||||||
|
|
||||||
|
const unsigned char *cp = (const unsigned char *) (longword_ptr - 1);
|
||||||
|
|
||||||
|
if (cp[0] == c)
|
||||||
|
return (__ptr_t) cp;
|
||||||
|
if (cp[1] == c)
|
||||||
|
return (__ptr_t) &cp[1];
|
||||||
|
if (cp[2] == c)
|
||||||
|
return (__ptr_t) &cp[2];
|
||||||
|
if (cp[3] == c)
|
||||||
|
return (__ptr_t) &cp[3];
|
||||||
|
#if LONG_MAX > 2147483647
|
||||||
|
if (cp[4] == c)
|
||||||
|
return (__ptr_t) &cp[4];
|
||||||
|
if (cp[5] == c)
|
||||||
|
return (__ptr_t) &cp[5];
|
||||||
|
if (cp[6] == c)
|
||||||
|
return (__ptr_t) &cp[6];
|
||||||
|
if (cp[7] == c)
|
||||||
|
return (__ptr_t) &cp[7];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
n -= sizeof (longword);
|
||||||
|
}
|
||||||
|
|
||||||
|
char_ptr = (const unsigned char *) longword_ptr;
|
||||||
|
|
||||||
|
while (n-- > 0)
|
||||||
|
{
|
||||||
|
if (*char_ptr == c)
|
||||||
|
return (__ptr_t) char_ptr;
|
||||||
|
else
|
||||||
|
++char_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#ifdef weak_alias
|
||||||
|
weak_alias (__memchr, BP_SYM (memchr))
|
||||||
|
#endif
|
||||||
+209
@@ -0,0 +1,209 @@
|
|||||||
|
/* memrchr -- find the last occurrence of a byte in a memory block
|
||||||
|
Copyright (C) 1991, 93, 96, 97, 99, 2000 Free Software Foundation, Inc.
|
||||||
|
Based on strlen implementation by Torbjorn Granlund ([email protected]),
|
||||||
|
with help from Dan Sahlin ([email protected]) and
|
||||||
|
commentary by Jim Blandy ([email protected]);
|
||||||
|
adaptation to memchr suggested by Dick Karpinski ([email protected]),
|
||||||
|
and implemented by Roland McGrath ([email protected]).
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library 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
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||||
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#undef __ptr_t
|
||||||
|
#if defined (__cplusplus) || (defined (__STDC__) && __STDC__)
|
||||||
|
# define __ptr_t void *
|
||||||
|
#else /* Not C++ or ANSI C. */
|
||||||
|
# define __ptr_t char *
|
||||||
|
#endif /* C++ or ANSI C. */
|
||||||
|
|
||||||
|
#if defined (_LIBC)
|
||||||
|
# include <string.h>
|
||||||
|
# include <memcopy.h>
|
||||||
|
#else
|
||||||
|
# define reg_char char
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (HAVE_LIMITS_H) || defined (_LIBC)
|
||||||
|
# include <limits.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define LONG_MAX_32_BITS 2147483647
|
||||||
|
|
||||||
|
#ifndef LONG_MAX
|
||||||
|
# define LONG_MAX LONG_MAX_32_BITS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#undef __memrchr
|
||||||
|
#undef memrchr
|
||||||
|
|
||||||
|
#ifndef weak_alias
|
||||||
|
# define __memrchr memrchr
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Search no more than N bytes of S for C. */
|
||||||
|
__ptr_t
|
||||||
|
__memrchr (s, c_in, n)
|
||||||
|
const __ptr_t s;
|
||||||
|
int c_in;
|
||||||
|
size_t n;
|
||||||
|
{
|
||||||
|
const unsigned char *char_ptr;
|
||||||
|
const unsigned long int *longword_ptr;
|
||||||
|
unsigned long int longword, magic_bits, charmask;
|
||||||
|
unsigned reg_char c;
|
||||||
|
|
||||||
|
c = (unsigned char) c_in;
|
||||||
|
|
||||||
|
/* Handle the last few characters by reading one character at a time.
|
||||||
|
Do this until CHAR_PTR is aligned on a longword boundary. */
|
||||||
|
for (char_ptr = (const unsigned char *) s + n;
|
||||||
|
n > 0 && ((unsigned long int) char_ptr
|
||||||
|
& (sizeof (longword) - 1)) != 0;
|
||||||
|
--n)
|
||||||
|
if (*--char_ptr == c)
|
||||||
|
return (__ptr_t) char_ptr;
|
||||||
|
|
||||||
|
/* All these elucidatory comments refer to 4-byte longwords,
|
||||||
|
but the theory applies equally well to 8-byte longwords. */
|
||||||
|
|
||||||
|
longword_ptr = (unsigned long int *) char_ptr;
|
||||||
|
|
||||||
|
/* Bits 31, 24, 16, and 8 of this number are zero. Call these bits
|
||||||
|
the "holes." Note that there is a hole just to the left of
|
||||||
|
each byte, with an extra at the end:
|
||||||
|
|
||||||
|
bits: 01111110 11111110 11111110 11111111
|
||||||
|
bytes: AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD
|
||||||
|
|
||||||
|
The 1-bits make sure that carries propagate to the next 0-bit.
|
||||||
|
The 0-bits provide holes for carries to fall into. */
|
||||||
|
|
||||||
|
if (sizeof (longword) != 4 && sizeof (longword) != 8)
|
||||||
|
abort ();
|
||||||
|
|
||||||
|
#if LONG_MAX <= LONG_MAX_32_BITS
|
||||||
|
magic_bits = 0x7efefeff;
|
||||||
|
#else
|
||||||
|
magic_bits = ((unsigned long int) 0x7efefefe << 32) | 0xfefefeff;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Set up a longword, each of whose bytes is C. */
|
||||||
|
charmask = c | (c << 8);
|
||||||
|
charmask |= charmask << 16;
|
||||||
|
#if LONG_MAX > LONG_MAX_32_BITS
|
||||||
|
charmask |= charmask << 32;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Instead of the traditional loop which tests each character,
|
||||||
|
we will test a longword at a time. The tricky part is testing
|
||||||
|
if *any of the four* bytes in the longword in question are zero. */
|
||||||
|
while (n >= sizeof (longword))
|
||||||
|
{
|
||||||
|
/* We tentatively exit the loop if adding MAGIC_BITS to
|
||||||
|
LONGWORD fails to change any of the hole bits of LONGWORD.
|
||||||
|
|
||||||
|
1) Is this safe? Will it catch all the zero bytes?
|
||||||
|
Suppose there is a byte with all zeros. Any carry bits
|
||||||
|
propagating from its left will fall into the hole at its
|
||||||
|
least significant bit and stop. Since there will be no
|
||||||
|
carry from its most significant bit, the LSB of the
|
||||||
|
byte to the left will be unchanged, and the zero will be
|
||||||
|
detected.
|
||||||
|
|
||||||
|
2) Is this worthwhile? Will it ignore everything except
|
||||||
|
zero bytes? Suppose every byte of LONGWORD has a bit set
|
||||||
|
somewhere. There will be a carry into bit 8. If bit 8
|
||||||
|
is set, this will carry into bit 16. If bit 8 is clear,
|
||||||
|
one of bits 9-15 must be set, so there will be a carry
|
||||||
|
into bit 16. Similarly, there will be a carry into bit
|
||||||
|
24. If one of bits 24-30 is set, there will be a carry
|
||||||
|
into bit 31, so all of the hole bits will be changed.
|
||||||
|
|
||||||
|
The one misfire occurs when bits 24-30 are clear and bit
|
||||||
|
31 is set; in this case, the hole at bit 31 is not
|
||||||
|
changed. If we had access to the processor carry flag,
|
||||||
|
we could close this loophole by putting the fourth hole
|
||||||
|
at bit 32!
|
||||||
|
|
||||||
|
So it ignores everything except 128's, when they're aligned
|
||||||
|
properly.
|
||||||
|
|
||||||
|
3) But wait! Aren't we looking for C, not zero?
|
||||||
|
Good point. So what we do is XOR LONGWORD with a longword,
|
||||||
|
each of whose bytes is C. This turns each byte that is C
|
||||||
|
into a zero. */
|
||||||
|
|
||||||
|
longword = *--longword_ptr ^ charmask;
|
||||||
|
|
||||||
|
/* Add MAGIC_BITS to LONGWORD. */
|
||||||
|
if ((((longword + magic_bits)
|
||||||
|
|
||||||
|
/* Set those bits that were unchanged by the addition. */
|
||||||
|
^ ~longword)
|
||||||
|
|
||||||
|
/* Look at only the hole bits. If any of the hole bits
|
||||||
|
are unchanged, most likely one of the bytes was a
|
||||||
|
zero. */
|
||||||
|
& ~magic_bits) != 0)
|
||||||
|
{
|
||||||
|
/* Which of the bytes was C? If none of them were, it was
|
||||||
|
a misfire; continue the search. */
|
||||||
|
|
||||||
|
const unsigned char *cp = (const unsigned char *) longword_ptr;
|
||||||
|
|
||||||
|
#if LONG_MAX > 2147483647
|
||||||
|
if (cp[7] == c)
|
||||||
|
return (__ptr_t) &cp[7];
|
||||||
|
if (cp[6] == c)
|
||||||
|
return (__ptr_t) &cp[6];
|
||||||
|
if (cp[5] == c)
|
||||||
|
return (__ptr_t) &cp[5];
|
||||||
|
if (cp[4] == c)
|
||||||
|
return (__ptr_t) &cp[4];
|
||||||
|
#endif
|
||||||
|
if (cp[3] == c)
|
||||||
|
return (__ptr_t) &cp[3];
|
||||||
|
if (cp[2] == c)
|
||||||
|
return (__ptr_t) &cp[2];
|
||||||
|
if (cp[1] == c)
|
||||||
|
return (__ptr_t) &cp[1];
|
||||||
|
if (cp[0] == c)
|
||||||
|
return (__ptr_t) cp;
|
||||||
|
}
|
||||||
|
|
||||||
|
n -= sizeof (longword);
|
||||||
|
}
|
||||||
|
|
||||||
|
char_ptr = (const unsigned char *) longword_ptr;
|
||||||
|
|
||||||
|
while (n-- > 0)
|
||||||
|
{
|
||||||
|
if (*--char_ptr == c)
|
||||||
|
return (__ptr_t) char_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#ifdef weak_alias
|
||||||
|
weak_alias (__memrchr, memrchr)
|
||||||
|
#endif
|
||||||
+623
@@ -0,0 +1,623 @@
|
|||||||
|
/* obstack.c - subroutines used implicitly by object stack macros
|
||||||
|
Copyright (C) 1988-1994,96,97,98,99,2000,2001 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library. Its master source is NOT part of
|
||||||
|
the C library, however. The master source lives in /gd/gnu/lib.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library 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
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the GNU C Library; if not, write to the Free
|
||||||
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
|
02111-1307 USA. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "obstack.h"
|
||||||
|
|
||||||
|
/* NOTE BEFORE MODIFYING THIS FILE: This version number must be
|
||||||
|
incremented whenever callers compiled using an old obstack.h can no
|
||||||
|
longer properly call the functions in this obstack.c. */
|
||||||
|
#define OBSTACK_INTERFACE_VERSION 1
|
||||||
|
|
||||||
|
/* Comment out all this code if we are using the GNU C Library, and are not
|
||||||
|
actually compiling the library itself, and the installed library
|
||||||
|
supports the same library interface we do. This code is part of the GNU
|
||||||
|
C Library, but also included in many other GNU distributions. Compiling
|
||||||
|
and linking in this code is a waste when using the GNU C library
|
||||||
|
(especially if it is a shared library). Rather than having every GNU
|
||||||
|
program understand `configure --with-gnu-libc' and omit the object
|
||||||
|
files, it is simpler to just do this in the source for each such file. */
|
||||||
|
|
||||||
|
#include <stdio.h> /* Random thing to get __GNU_LIBRARY__. */
|
||||||
|
#if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1
|
||||||
|
# include <gnu-versions.h>
|
||||||
|
# if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION
|
||||||
|
# define ELIDE_CODE
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined _LIBC && defined USE_IN_LIBIO
|
||||||
|
# include <wchar.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef ELIDE_CODE
|
||||||
|
|
||||||
|
|
||||||
|
# if defined __STDC__ && __STDC__
|
||||||
|
# define POINTER void *
|
||||||
|
# else
|
||||||
|
# define POINTER char *
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Determine default alignment. */
|
||||||
|
struct fooalign {char x; double d;};
|
||||||
|
# define DEFAULT_ALIGNMENT \
|
||||||
|
((PTR_INT_TYPE) ((char *) &((struct fooalign *) 0)->d - (char *) 0))
|
||||||
|
/* If malloc were really smart, it would round addresses to DEFAULT_ALIGNMENT.
|
||||||
|
But in fact it might be less smart and round addresses to as much as
|
||||||
|
DEFAULT_ROUNDING. So we prepare for it to do that. */
|
||||||
|
union fooround {long x; double d;};
|
||||||
|
# define DEFAULT_ROUNDING (sizeof (union fooround))
|
||||||
|
|
||||||
|
/* When we copy a long block of data, this is the unit to do it with.
|
||||||
|
On some machines, copying successive ints does not work;
|
||||||
|
in such a case, redefine COPYING_UNIT to `long' (if that works)
|
||||||
|
or `char' as a last resort. */
|
||||||
|
# ifndef COPYING_UNIT
|
||||||
|
# define COPYING_UNIT int
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
/* The functions allocating more room by calling `obstack_chunk_alloc'
|
||||||
|
jump to the handler pointed to by `obstack_alloc_failed_handler'.
|
||||||
|
This can be set to a user defined function which should either
|
||||||
|
abort gracefully or use longjump - but shouldn't return. This
|
||||||
|
variable by default points to the internal function
|
||||||
|
`print_and_abort'. */
|
||||||
|
# if defined __STDC__ && __STDC__
|
||||||
|
static void print_and_abort (void);
|
||||||
|
void (*obstack_alloc_failed_handler) (void) = print_and_abort;
|
||||||
|
# else
|
||||||
|
static void print_and_abort ();
|
||||||
|
void (*obstack_alloc_failed_handler) () = print_and_abort;
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Exit value used when `print_and_abort' is used. */
|
||||||
|
# if defined __GNU_LIBRARY__ || defined HAVE_STDLIB_H
|
||||||
|
# include <stdlib.h>
|
||||||
|
# endif
|
||||||
|
# ifndef EXIT_FAILURE
|
||||||
|
# define EXIT_FAILURE 1
|
||||||
|
# endif
|
||||||
|
int obstack_exit_failure = EXIT_FAILURE;
|
||||||
|
|
||||||
|
/* The non-GNU-C macros copy the obstack into this global variable
|
||||||
|
to avoid multiple evaluation. */
|
||||||
|
|
||||||
|
struct obstack *_obstack;
|
||||||
|
|
||||||
|
/* Define a macro that either calls functions with the traditional malloc/free
|
||||||
|
calling interface, or calls functions with the mmalloc/mfree interface
|
||||||
|
(that adds an extra first argument), based on the state of use_extra_arg.
|
||||||
|
For free, do not use ?:, since some compilers, like the MIPS compilers,
|
||||||
|
do not allow (expr) ? void : void. */
|
||||||
|
|
||||||
|
# if defined __STDC__ && __STDC__
|
||||||
|
# define CALL_CHUNKFUN(h, size) \
|
||||||
|
(((h) -> use_extra_arg) \
|
||||||
|
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
|
||||||
|
: (*(struct _obstack_chunk *(*) (long)) (h)->chunkfun) ((size)))
|
||||||
|
|
||||||
|
# define CALL_FREEFUN(h, old_chunk) \
|
||||||
|
do { \
|
||||||
|
if ((h) -> use_extra_arg) \
|
||||||
|
(*(h)->freefun) ((h)->extra_arg, (old_chunk)); \
|
||||||
|
else \
|
||||||
|
(*(void (*) (void *)) (h)->freefun) ((old_chunk)); \
|
||||||
|
} while (0)
|
||||||
|
# else
|
||||||
|
# define CALL_CHUNKFUN(h, size) \
|
||||||
|
(((h) -> use_extra_arg) \
|
||||||
|
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
|
||||||
|
: (*(struct _obstack_chunk *(*) ()) (h)->chunkfun) ((size)))
|
||||||
|
|
||||||
|
# define CALL_FREEFUN(h, old_chunk) \
|
||||||
|
do { \
|
||||||
|
if ((h) -> use_extra_arg) \
|
||||||
|
(*(h)->freefun) ((h)->extra_arg, (old_chunk)); \
|
||||||
|
else \
|
||||||
|
(*(void (*) ()) (h)->freefun) ((old_chunk)); \
|
||||||
|
} while (0)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Initialize an obstack H for use. Specify chunk size SIZE (0 means default).
|
||||||
|
Objects start on multiples of ALIGNMENT (0 means use default).
|
||||||
|
CHUNKFUN is the function to use to allocate chunks,
|
||||||
|
and FREEFUN the function to free them.
|
||||||
|
|
||||||
|
Return nonzero if successful, calls obstack_alloc_failed_handler if
|
||||||
|
allocation fails. */
|
||||||
|
|
||||||
|
int
|
||||||
|
_obstack_begin (h, size, alignment, chunkfun, freefun)
|
||||||
|
struct obstack *h;
|
||||||
|
int size;
|
||||||
|
int alignment;
|
||||||
|
# if defined __STDC__ && __STDC__
|
||||||
|
POINTER (*chunkfun) (long);
|
||||||
|
void (*freefun) (void *);
|
||||||
|
# else
|
||||||
|
POINTER (*chunkfun) ();
|
||||||
|
void (*freefun) ();
|
||||||
|
# endif
|
||||||
|
{
|
||||||
|
register struct _obstack_chunk *chunk; /* points to new chunk */
|
||||||
|
|
||||||
|
if (alignment == 0)
|
||||||
|
alignment = (int) DEFAULT_ALIGNMENT;
|
||||||
|
if (size == 0)
|
||||||
|
/* Default size is what GNU malloc can fit in a 4096-byte block. */
|
||||||
|
{
|
||||||
|
/* 12 is sizeof (mhead) and 4 is EXTRA from GNU malloc.
|
||||||
|
Use the values for range checking, because if range checking is off,
|
||||||
|
the extra bytes won't be missed terribly, but if range checking is on
|
||||||
|
and we used a larger request, a whole extra 4096 bytes would be
|
||||||
|
allocated.
|
||||||
|
|
||||||
|
These number are irrelevant to the new GNU malloc. I suspect it is
|
||||||
|
less sensitive to the size of the request. */
|
||||||
|
int extra = ((((12 + DEFAULT_ROUNDING - 1) & ~(DEFAULT_ROUNDING - 1))
|
||||||
|
+ 4 + DEFAULT_ROUNDING - 1)
|
||||||
|
& ~(DEFAULT_ROUNDING - 1));
|
||||||
|
size = 4096 - extra;
|
||||||
|
}
|
||||||
|
|
||||||
|
# if defined __STDC__ && __STDC__
|
||||||
|
h->chunkfun = (struct _obstack_chunk * (*)(void *, long)) chunkfun;
|
||||||
|
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
|
||||||
|
# else
|
||||||
|
h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
|
||||||
|
h->freefun = freefun;
|
||||||
|
# endif
|
||||||
|
h->chunk_size = size;
|
||||||
|
h->alignment_mask = alignment - 1;
|
||||||
|
h->use_extra_arg = 0;
|
||||||
|
|
||||||
|
chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);
|
||||||
|
if (!chunk)
|
||||||
|
(*obstack_alloc_failed_handler) ();
|
||||||
|
h->next_free = h->object_base = chunk->contents;
|
||||||
|
h->chunk_limit = chunk->limit
|
||||||
|
= (char *) chunk + h->chunk_size;
|
||||||
|
chunk->prev = 0;
|
||||||
|
/* The initial chunk now contains no empty object. */
|
||||||
|
h->maybe_empty_object = 0;
|
||||||
|
h->alloc_failed = 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
_obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
|
||||||
|
struct obstack *h;
|
||||||
|
int size;
|
||||||
|
int alignment;
|
||||||
|
# if defined __STDC__ && __STDC__
|
||||||
|
POINTER (*chunkfun) (POINTER, long);
|
||||||
|
void (*freefun) (POINTER, POINTER);
|
||||||
|
# else
|
||||||
|
POINTER (*chunkfun) ();
|
||||||
|
void (*freefun) ();
|
||||||
|
# endif
|
||||||
|
POINTER arg;
|
||||||
|
{
|
||||||
|
register struct _obstack_chunk *chunk; /* points to new chunk */
|
||||||
|
|
||||||
|
if (alignment == 0)
|
||||||
|
alignment = (int) DEFAULT_ALIGNMENT;
|
||||||
|
if (size == 0)
|
||||||
|
/* Default size is what GNU malloc can fit in a 4096-byte block. */
|
||||||
|
{
|
||||||
|
/* 12 is sizeof (mhead) and 4 is EXTRA from GNU malloc.
|
||||||
|
Use the values for range checking, because if range checking is off,
|
||||||
|
the extra bytes won't be missed terribly, but if range checking is on
|
||||||
|
and we used a larger request, a whole extra 4096 bytes would be
|
||||||
|
allocated.
|
||||||
|
|
||||||
|
These number are irrelevant to the new GNU malloc. I suspect it is
|
||||||
|
less sensitive to the size of the request. */
|
||||||
|
int extra = ((((12 + DEFAULT_ROUNDING - 1) & ~(DEFAULT_ROUNDING - 1))
|
||||||
|
+ 4 + DEFAULT_ROUNDING - 1)
|
||||||
|
& ~(DEFAULT_ROUNDING - 1));
|
||||||
|
size = 4096 - extra;
|
||||||
|
}
|
||||||
|
|
||||||
|
# if defined __STDC__ && __STDC__
|
||||||
|
h->chunkfun = (struct _obstack_chunk * (*)(void *,long)) chunkfun;
|
||||||
|
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
|
||||||
|
# else
|
||||||
|
h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
|
||||||
|
h->freefun = freefun;
|
||||||
|
# endif
|
||||||
|
h->chunk_size = size;
|
||||||
|
h->alignment_mask = alignment - 1;
|
||||||
|
h->extra_arg = arg;
|
||||||
|
h->use_extra_arg = 1;
|
||||||
|
|
||||||
|
chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);
|
||||||
|
if (!chunk)
|
||||||
|
(*obstack_alloc_failed_handler) ();
|
||||||
|
h->next_free = h->object_base = chunk->contents;
|
||||||
|
h->chunk_limit = chunk->limit
|
||||||
|
= (char *) chunk + h->chunk_size;
|
||||||
|
chunk->prev = 0;
|
||||||
|
/* The initial chunk now contains no empty object. */
|
||||||
|
h->maybe_empty_object = 0;
|
||||||
|
h->alloc_failed = 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allocate a new current chunk for the obstack *H
|
||||||
|
on the assumption that LENGTH bytes need to be added
|
||||||
|
to the current object, or a new object of length LENGTH allocated.
|
||||||
|
Copies any partial object from the end of the old chunk
|
||||||
|
to the beginning of the new one. */
|
||||||
|
|
||||||
|
void
|
||||||
|
_obstack_newchunk (h, length)
|
||||||
|
struct obstack *h;
|
||||||
|
int length;
|
||||||
|
{
|
||||||
|
register struct _obstack_chunk *old_chunk = h->chunk;
|
||||||
|
register struct _obstack_chunk *new_chunk;
|
||||||
|
register long new_size;
|
||||||
|
register long obj_size = h->next_free - h->object_base;
|
||||||
|
register long i;
|
||||||
|
long already;
|
||||||
|
char *object_base;
|
||||||
|
|
||||||
|
/* Compute size for new chunk. */
|
||||||
|
new_size = (obj_size + length) + (obj_size >> 3) + h->alignment_mask + 100;
|
||||||
|
if (new_size < h->chunk_size)
|
||||||
|
new_size = h->chunk_size;
|
||||||
|
|
||||||
|
/* Allocate and initialize the new chunk. */
|
||||||
|
new_chunk = CALL_CHUNKFUN (h, new_size);
|
||||||
|
if (!new_chunk)
|
||||||
|
(*obstack_alloc_failed_handler) ();
|
||||||
|
h->chunk = new_chunk;
|
||||||
|
new_chunk->prev = old_chunk;
|
||||||
|
new_chunk->limit = h->chunk_limit = (char *) new_chunk + new_size;
|
||||||
|
|
||||||
|
/* Compute an aligned object_base in the new chunk */
|
||||||
|
object_base =
|
||||||
|
__INT_TO_PTR ((__PTR_TO_INT (new_chunk->contents) + h->alignment_mask)
|
||||||
|
& ~ (h->alignment_mask));
|
||||||
|
|
||||||
|
/* Move the existing object to the new chunk.
|
||||||
|
Word at a time is fast and is safe if the object
|
||||||
|
is sufficiently aligned. */
|
||||||
|
if (h->alignment_mask + 1 >= DEFAULT_ALIGNMENT)
|
||||||
|
{
|
||||||
|
for (i = obj_size / sizeof (COPYING_UNIT) - 1;
|
||||||
|
i >= 0; i--)
|
||||||
|
((COPYING_UNIT *)object_base)[i]
|
||||||
|
= ((COPYING_UNIT *)h->object_base)[i];
|
||||||
|
/* We used to copy the odd few remaining bytes as one extra COPYING_UNIT,
|
||||||
|
but that can cross a page boundary on a machine
|
||||||
|
which does not do strict alignment for COPYING_UNITS. */
|
||||||
|
already = obj_size / sizeof (COPYING_UNIT) * sizeof (COPYING_UNIT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
already = 0;
|
||||||
|
/* Copy remaining bytes one by one. */
|
||||||
|
for (i = already; i < obj_size; i++)
|
||||||
|
object_base[i] = h->object_base[i];
|
||||||
|
|
||||||
|
/* If the object just copied was the only data in OLD_CHUNK,
|
||||||
|
free that chunk and remove it from the chain.
|
||||||
|
But not if that chunk might contain an empty object. */
|
||||||
|
if (h->object_base == old_chunk->contents && ! h->maybe_empty_object)
|
||||||
|
{
|
||||||
|
new_chunk->prev = old_chunk->prev;
|
||||||
|
CALL_FREEFUN (h, old_chunk);
|
||||||
|
}
|
||||||
|
|
||||||
|
h->object_base = object_base;
|
||||||
|
h->next_free = h->object_base + obj_size;
|
||||||
|
/* The new chunk certainly contains no empty object yet. */
|
||||||
|
h->maybe_empty_object = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return nonzero if object OBJ has been allocated from obstack H.
|
||||||
|
This is here for debugging.
|
||||||
|
If you use it in a program, you are probably losing. */
|
||||||
|
|
||||||
|
# if defined __STDC__ && __STDC__
|
||||||
|
/* Suppress -Wmissing-prototypes warning. We don't want to declare this in
|
||||||
|
obstack.h because it is just for debugging. */
|
||||||
|
int _obstack_allocated_p (struct obstack *h, POINTER obj);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
int
|
||||||
|
_obstack_allocated_p (h, obj)
|
||||||
|
struct obstack *h;
|
||||||
|
POINTER obj;
|
||||||
|
{
|
||||||
|
register struct _obstack_chunk *lp; /* below addr of any objects in this chunk */
|
||||||
|
register struct _obstack_chunk *plp; /* point to previous chunk if any */
|
||||||
|
|
||||||
|
lp = (h)->chunk;
|
||||||
|
/* We use >= rather than > since the object cannot be exactly at
|
||||||
|
the beginning of the chunk but might be an empty object exactly
|
||||||
|
at the end of an adjacent chunk. */
|
||||||
|
while (lp != 0 && ((POINTER) lp >= obj || (POINTER) (lp)->limit < obj))
|
||||||
|
{
|
||||||
|
plp = lp->prev;
|
||||||
|
lp = plp;
|
||||||
|
}
|
||||||
|
return lp != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Free objects in obstack H, including OBJ and everything allocate
|
||||||
|
more recently than OBJ. If OBJ is zero, free everything in H. */
|
||||||
|
|
||||||
|
# undef obstack_free
|
||||||
|
|
||||||
|
/* This function has two names with identical definitions.
|
||||||
|
This is the first one, called from non-ANSI code. */
|
||||||
|
|
||||||
|
void
|
||||||
|
_obstack_free (h, obj)
|
||||||
|
struct obstack *h;
|
||||||
|
POINTER obj;
|
||||||
|
{
|
||||||
|
register struct _obstack_chunk *lp; /* below addr of any objects in this chunk */
|
||||||
|
register struct _obstack_chunk *plp; /* point to previous chunk if any */
|
||||||
|
|
||||||
|
lp = h->chunk;
|
||||||
|
/* We use >= because there cannot be an object at the beginning of a chunk.
|
||||||
|
But there can be an empty object at that address
|
||||||
|
at the end of another chunk. */
|
||||||
|
while (lp != 0 && ((POINTER) lp >= obj || (POINTER) (lp)->limit < obj))
|
||||||
|
{
|
||||||
|
plp = lp->prev;
|
||||||
|
CALL_FREEFUN (h, lp);
|
||||||
|
lp = plp;
|
||||||
|
/* If we switch chunks, we can't tell whether the new current
|
||||||
|
chunk contains an empty object, so assume that it may. */
|
||||||
|
h->maybe_empty_object = 1;
|
||||||
|
}
|
||||||
|
if (lp)
|
||||||
|
{
|
||||||
|
h->object_base = h->next_free = (char *) (obj);
|
||||||
|
h->chunk_limit = lp->limit;
|
||||||
|
h->chunk = lp;
|
||||||
|
}
|
||||||
|
else if (obj != 0)
|
||||||
|
/* obj is not in any of the chunks! */
|
||||||
|
abort ();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This function is used from ANSI code. */
|
||||||
|
|
||||||
|
void
|
||||||
|
obstack_free (h, obj)
|
||||||
|
struct obstack *h;
|
||||||
|
POINTER obj;
|
||||||
|
{
|
||||||
|
register struct _obstack_chunk *lp; /* below addr of any objects in this chunk */
|
||||||
|
register struct _obstack_chunk *plp; /* point to previous chunk if any */
|
||||||
|
|
||||||
|
lp = h->chunk;
|
||||||
|
/* We use >= because there cannot be an object at the beginning of a chunk.
|
||||||
|
But there can be an empty object at that address
|
||||||
|
at the end of another chunk. */
|
||||||
|
while (lp != 0 && ((POINTER) lp >= obj || (POINTER) (lp)->limit < obj))
|
||||||
|
{
|
||||||
|
plp = lp->prev;
|
||||||
|
CALL_FREEFUN (h, lp);
|
||||||
|
lp = plp;
|
||||||
|
/* If we switch chunks, we can't tell whether the new current
|
||||||
|
chunk contains an empty object, so assume that it may. */
|
||||||
|
h->maybe_empty_object = 1;
|
||||||
|
}
|
||||||
|
if (lp)
|
||||||
|
{
|
||||||
|
h->object_base = h->next_free = (char *) (obj);
|
||||||
|
h->chunk_limit = lp->limit;
|
||||||
|
h->chunk = lp;
|
||||||
|
}
|
||||||
|
else if (obj != 0)
|
||||||
|
/* obj is not in any of the chunks! */
|
||||||
|
abort ();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
_obstack_memory_used (h)
|
||||||
|
struct obstack *h;
|
||||||
|
{
|
||||||
|
register struct _obstack_chunk* lp;
|
||||||
|
register int nbytes = 0;
|
||||||
|
|
||||||
|
for (lp = h->chunk; lp != 0; lp = lp->prev)
|
||||||
|
{
|
||||||
|
nbytes += lp->limit - (char *) lp;
|
||||||
|
}
|
||||||
|
return nbytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Define the error handler. */
|
||||||
|
# ifndef _
|
||||||
|
# if (HAVE_LIBINTL_H && ENABLE_NLS) || defined _LIBC
|
||||||
|
# include <libintl.h>
|
||||||
|
# ifndef _
|
||||||
|
# define _(Str) gettext (Str)
|
||||||
|
# endif
|
||||||
|
# else
|
||||||
|
# define _(Str) (Str)
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# if defined _LIBC && defined USE_IN_LIBIO
|
||||||
|
# include <libio/iolibio.h>
|
||||||
|
# define fputs(s, f) _IO_fputs (s, f)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef __attribute__
|
||||||
|
/* This feature is available in gcc versions 2.5 and later. */
|
||||||
|
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)
|
||||||
|
# define __attribute__(Spec) /* empty */
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
__attribute__ ((noreturn))
|
||||||
|
print_and_abort ()
|
||||||
|
{
|
||||||
|
/* Don't change any of these strings. Yes, it would be possible to add
|
||||||
|
the newline to the string and use fputs or so. But this must not
|
||||||
|
happen because the "memory exhausted" message appears in other places
|
||||||
|
like this and the translation should be reused instead of creating
|
||||||
|
a very similar string which requires a separate translation. */
|
||||||
|
# if defined _LIBC && defined USE_IN_LIBIO
|
||||||
|
if (_IO_fwide (stderr, 0) > 0)
|
||||||
|
__fwprintf (stderr, L"%s\n", _("memory exhausted"));
|
||||||
|
else
|
||||||
|
# endif
|
||||||
|
fprintf (stderr, "%s\n", _("memory exhausted"));
|
||||||
|
exit (obstack_exit_failure);
|
||||||
|
}
|
||||||
|
|
||||||
|
# if 0
|
||||||
|
/* These are now turned off because the applications do not use it
|
||||||
|
and it uses bcopy via obstack_grow, which causes trouble on sysV. */
|
||||||
|
|
||||||
|
/* Now define the functional versions of the obstack macros.
|
||||||
|
Define them to simply use the corresponding macros to do the job. */
|
||||||
|
|
||||||
|
# if defined __STDC__ && __STDC__
|
||||||
|
/* These function definitions do not work with non-ANSI preprocessors;
|
||||||
|
they won't pass through the macro names in parentheses. */
|
||||||
|
|
||||||
|
/* The function names appear in parentheses in order to prevent
|
||||||
|
the macro-definitions of the names from being expanded there. */
|
||||||
|
|
||||||
|
POINTER (obstack_base) (obstack)
|
||||||
|
struct obstack *obstack;
|
||||||
|
{
|
||||||
|
return obstack_base (obstack);
|
||||||
|
}
|
||||||
|
|
||||||
|
POINTER (obstack_next_free) (obstack)
|
||||||
|
struct obstack *obstack;
|
||||||
|
{
|
||||||
|
return obstack_next_free (obstack);
|
||||||
|
}
|
||||||
|
|
||||||
|
int (obstack_object_size) (obstack)
|
||||||
|
struct obstack *obstack;
|
||||||
|
{
|
||||||
|
return obstack_object_size (obstack);
|
||||||
|
}
|
||||||
|
|
||||||
|
int (obstack_room) (obstack)
|
||||||
|
struct obstack *obstack;
|
||||||
|
{
|
||||||
|
return obstack_room (obstack);
|
||||||
|
}
|
||||||
|
|
||||||
|
int (obstack_make_room) (obstack, length)
|
||||||
|
struct obstack *obstack;
|
||||||
|
int length;
|
||||||
|
{
|
||||||
|
return obstack_make_room (obstack, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
void (obstack_grow) (obstack, data, length)
|
||||||
|
struct obstack *obstack;
|
||||||
|
const POINTER data;
|
||||||
|
int length;
|
||||||
|
{
|
||||||
|
obstack_grow (obstack, data, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
void (obstack_grow0) (obstack, data, length)
|
||||||
|
struct obstack *obstack;
|
||||||
|
const POINTER data;
|
||||||
|
int length;
|
||||||
|
{
|
||||||
|
obstack_grow0 (obstack, data, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
void (obstack_1grow) (obstack, character)
|
||||||
|
struct obstack *obstack;
|
||||||
|
int character;
|
||||||
|
{
|
||||||
|
obstack_1grow (obstack, character);
|
||||||
|
}
|
||||||
|
|
||||||
|
void (obstack_blank) (obstack, length)
|
||||||
|
struct obstack *obstack;
|
||||||
|
int length;
|
||||||
|
{
|
||||||
|
obstack_blank (obstack, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
void (obstack_1grow_fast) (obstack, character)
|
||||||
|
struct obstack *obstack;
|
||||||
|
int character;
|
||||||
|
{
|
||||||
|
obstack_1grow_fast (obstack, character);
|
||||||
|
}
|
||||||
|
|
||||||
|
void (obstack_blank_fast) (obstack, length)
|
||||||
|
struct obstack *obstack;
|
||||||
|
int length;
|
||||||
|
{
|
||||||
|
obstack_blank_fast (obstack, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
POINTER (obstack_finish) (obstack)
|
||||||
|
struct obstack *obstack;
|
||||||
|
{
|
||||||
|
return obstack_finish (obstack);
|
||||||
|
}
|
||||||
|
|
||||||
|
POINTER (obstack_alloc) (obstack, length)
|
||||||
|
struct obstack *obstack;
|
||||||
|
int length;
|
||||||
|
{
|
||||||
|
return obstack_alloc (obstack, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
POINTER (obstack_copy) (obstack, address, length)
|
||||||
|
struct obstack *obstack;
|
||||||
|
const POINTER address;
|
||||||
|
int length;
|
||||||
|
{
|
||||||
|
return obstack_copy (obstack, address, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
POINTER (obstack_copy0) (obstack, address, length)
|
||||||
|
struct obstack *obstack;
|
||||||
|
const POINTER address;
|
||||||
|
int length;
|
||||||
|
{
|
||||||
|
return obstack_copy0 (obstack, address, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
# endif /* __STDC__ */
|
||||||
|
|
||||||
|
# endif /* 0 */
|
||||||
|
|
||||||
|
#endif /* !ELIDE_CODE */
|
||||||
+609
@@ -0,0 +1,609 @@
|
|||||||
|
/* obstack.h - object stack macros
|
||||||
|
Copyright (C) 1988,89,90,91,92,93,94,96,97,98,99 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is part of the GNU C Library. Its master source is NOT part of
|
||||||
|
the C library, however. The master source lives in /gd/gnu/lib.
|
||||||
|
|
||||||
|
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||||
|
Bugs can be reported to [email protected].
|
||||||
|
|
||||||
|
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
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library 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. */
|
||||||
|
|
||||||
|
/* Summary:
|
||||||
|
|
||||||
|
All the apparent functions defined here are macros. The idea
|
||||||
|
is that you would use these pre-tested macros to solve a
|
||||||
|
very specific set of problems, and they would run fast.
|
||||||
|
Caution: no side-effects in arguments please!! They may be
|
||||||
|
evaluated MANY times!!
|
||||||
|
|
||||||
|
These macros operate a stack of objects. Each object starts life
|
||||||
|
small, and may grow to maturity. (Consider building a word syllable
|
||||||
|
by syllable.) An object can move while it is growing. Once it has
|
||||||
|
been "finished" it never changes address again. So the "top of the
|
||||||
|
stack" is typically an immature growing object, while the rest of the
|
||||||
|
stack is of mature, fixed size and fixed address objects.
|
||||||
|
|
||||||
|
These routines grab large chunks of memory, using a function you
|
||||||
|
supply, called `obstack_chunk_alloc'. On occasion, they free chunks,
|
||||||
|
by calling `obstack_chunk_free'. You must define them and declare
|
||||||
|
them before using any obstack macros.
|
||||||
|
|
||||||
|
Each independent stack is represented by a `struct obstack'.
|
||||||
|
Each of the obstack macros expects a pointer to such a structure
|
||||||
|
as the first argument.
|
||||||
|
|
||||||
|
One motivation for this package is the problem of growing char strings
|
||||||
|
in symbol tables. Unless you are "fascist pig with a read-only mind"
|
||||||
|
--Gosper's immortal quote from HAKMEM item 154, out of context--you
|
||||||
|
would not like to put any arbitrary upper limit on the length of your
|
||||||
|
symbols.
|
||||||
|
|
||||||
|
In practice this often means you will build many short symbols and a
|
||||||
|
few long symbols. At the time you are reading a symbol you don't know
|
||||||
|
how long it is. One traditional method is to read a symbol into a
|
||||||
|
buffer, realloc()ating the buffer every time you try to read a symbol
|
||||||
|
that is longer than the buffer. This is beaut, but you still will
|
||||||
|
want to copy the symbol from the buffer to a more permanent
|
||||||
|
symbol-table entry say about half the time.
|
||||||
|
|
||||||
|
With obstacks, you can work differently. Use one obstack for all symbol
|
||||||
|
names. As you read a symbol, grow the name in the obstack gradually.
|
||||||
|
When the name is complete, finalize it. Then, if the symbol exists already,
|
||||||
|
free the newly read name.
|
||||||
|
|
||||||
|
The way we do this is to take a large chunk, allocating memory from
|
||||||
|
low addresses. When you want to build a symbol in the chunk you just
|
||||||
|
add chars above the current "high water mark" in the chunk. When you
|
||||||
|
have finished adding chars, because you got to the end of the symbol,
|
||||||
|
you know how long the chars are, and you can create a new object.
|
||||||
|
Mostly the chars will not burst over the highest address of the chunk,
|
||||||
|
because you would typically expect a chunk to be (say) 100 times as
|
||||||
|
long as an average object.
|
||||||
|
|
||||||
|
In case that isn't clear, when we have enough chars to make up
|
||||||
|
the object, THEY ARE ALREADY CONTIGUOUS IN THE CHUNK (guaranteed)
|
||||||
|
so we just point to it where it lies. No moving of chars is
|
||||||
|
needed and this is the second win: potentially long strings need
|
||||||
|
never be explicitly shuffled. Once an object is formed, it does not
|
||||||
|
change its address during its lifetime.
|
||||||
|
|
||||||
|
When the chars burst over a chunk boundary, we allocate a larger
|
||||||
|
chunk, and then copy the partly formed object from the end of the old
|
||||||
|
chunk to the beginning of the new larger chunk. We then carry on
|
||||||
|
accreting characters to the end of the object as we normally would.
|
||||||
|
|
||||||
|
A special macro is provided to add a single char at a time to a
|
||||||
|
growing object. This allows the use of register variables, which
|
||||||
|
break the ordinary 'growth' macro.
|
||||||
|
|
||||||
|
Summary:
|
||||||
|
We allocate large chunks.
|
||||||
|
We carve out one object at a time from the current chunk.
|
||||||
|
Once carved, an object never moves.
|
||||||
|
We are free to append data of any size to the currently
|
||||||
|
growing object.
|
||||||
|
Exactly one object is growing in an obstack at any one time.
|
||||||
|
You can run one obstack per control block.
|
||||||
|
You may have as many control blocks as you dare.
|
||||||
|
Because of the way we do it, you can `unwind' an obstack
|
||||||
|
back to a previous state. (You may remove objects much
|
||||||
|
as you would with a stack.)
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Don't do the contents of this file more than once. */
|
||||||
|
|
||||||
|
#ifndef _OBSTACK_H
|
||||||
|
#define _OBSTACK_H 1
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* We use subtraction of (char *) 0 instead of casting to int
|
||||||
|
because on word-addressable machines a simple cast to int
|
||||||
|
may ignore the byte-within-word field of the pointer. */
|
||||||
|
|
||||||
|
#ifndef __PTR_TO_INT
|
||||||
|
# define __PTR_TO_INT(P) ((P) - (char *) 0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __INT_TO_PTR
|
||||||
|
# define __INT_TO_PTR(P) ((P) + (char *) 0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* We need the type of the resulting object. If __PTRDIFF_TYPE__ is
|
||||||
|
defined, as with GNU C, use that; that way we don't pollute the
|
||||||
|
namespace with <stddef.h>'s symbols. Otherwise, if <stddef.h> is
|
||||||
|
available, include it and use ptrdiff_t. In traditional C, long is
|
||||||
|
the best that we can do. */
|
||||||
|
|
||||||
|
#ifdef __PTRDIFF_TYPE__
|
||||||
|
# define PTR_INT_TYPE __PTRDIFF_TYPE__
|
||||||
|
#else
|
||||||
|
# ifdef HAVE_STDDEF_H
|
||||||
|
# include <stddef.h>
|
||||||
|
# define PTR_INT_TYPE ptrdiff_t
|
||||||
|
# else
|
||||||
|
# define PTR_INT_TYPE long
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined _LIBC || defined HAVE_STRING_H
|
||||||
|
# include <string.h>
|
||||||
|
# define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
|
||||||
|
#else
|
||||||
|
# ifdef memcpy
|
||||||
|
# define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
|
||||||
|
# else
|
||||||
|
# define _obstack_memcpy(To, From, N) bcopy ((From), (To), (N))
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct _obstack_chunk /* Lives at front of each chunk. */
|
||||||
|
{
|
||||||
|
char *limit; /* 1 past end of this chunk */
|
||||||
|
struct _obstack_chunk *prev; /* address of prior chunk or NULL */
|
||||||
|
char contents[4]; /* objects begin here */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct obstack /* control current object in current chunk */
|
||||||
|
{
|
||||||
|
long chunk_size; /* preferred size to allocate chunks in */
|
||||||
|
struct _obstack_chunk *chunk; /* address of current struct obstack_chunk */
|
||||||
|
char *object_base; /* address of object we are building */
|
||||||
|
char *next_free; /* where to add next char to current object */
|
||||||
|
char *chunk_limit; /* address of char after current chunk */
|
||||||
|
PTR_INT_TYPE temp; /* Temporary for some macros. */
|
||||||
|
int alignment_mask; /* Mask of alignment for each object. */
|
||||||
|
#if defined __STDC__ && __STDC__
|
||||||
|
/* These prototypes vary based on `use_extra_arg', and we use
|
||||||
|
casts to the prototypeless function type in all assignments,
|
||||||
|
but having prototypes here quiets -Wstrict-prototypes. */
|
||||||
|
struct _obstack_chunk *(*chunkfun) (void *, long);
|
||||||
|
void (*freefun) (void *, struct _obstack_chunk *);
|
||||||
|
void *extra_arg; /* first arg for chunk alloc/dealloc funcs */
|
||||||
|
#else
|
||||||
|
struct _obstack_chunk *(*chunkfun) (); /* User's fcn to allocate a chunk. */
|
||||||
|
void (*freefun) (); /* User's function to free a chunk. */
|
||||||
|
char *extra_arg; /* first arg for chunk alloc/dealloc funcs */
|
||||||
|
#endif
|
||||||
|
unsigned use_extra_arg:1; /* chunk alloc/dealloc funcs take extra arg */
|
||||||
|
unsigned maybe_empty_object:1;/* There is a possibility that the current
|
||||||
|
chunk contains a zero-length object. This
|
||||||
|
prevents freeing the chunk if we allocate
|
||||||
|
a bigger chunk to replace it. */
|
||||||
|
unsigned alloc_failed:1; /* No longer used, as we now call the failed
|
||||||
|
handler on error, but retained for binary
|
||||||
|
compatibility. */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Declare the external functions we use; they are in obstack.c. */
|
||||||
|
|
||||||
|
#if defined __STDC__ && __STDC__
|
||||||
|
extern void _obstack_newchunk (struct obstack *, int);
|
||||||
|
extern void _obstack_free (struct obstack *, void *);
|
||||||
|
extern int _obstack_begin (struct obstack *, int, int,
|
||||||
|
void *(*) (long), void (*) (void *));
|
||||||
|
extern int _obstack_begin_1 (struct obstack *, int, int,
|
||||||
|
void *(*) (void *, long),
|
||||||
|
void (*) (void *, void *), void *);
|
||||||
|
extern int _obstack_memory_used (struct obstack *);
|
||||||
|
#else
|
||||||
|
extern void _obstack_newchunk ();
|
||||||
|
extern void _obstack_free ();
|
||||||
|
extern int _obstack_begin ();
|
||||||
|
extern int _obstack_begin_1 ();
|
||||||
|
extern int _obstack_memory_used ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined __STDC__ && __STDC__
|
||||||
|
|
||||||
|
/* Do the function-declarations after the structs
|
||||||
|
but before defining the macros. */
|
||||||
|
|
||||||
|
void obstack_init (struct obstack *obstack);
|
||||||
|
|
||||||
|
void * obstack_alloc (struct obstack *obstack, int size);
|
||||||
|
|
||||||
|
void * obstack_copy (struct obstack *obstack, const void *address, int size);
|
||||||
|
void * obstack_copy0 (struct obstack *obstack, const void *address, int size);
|
||||||
|
|
||||||
|
void obstack_free (struct obstack *obstack, void *block);
|
||||||
|
|
||||||
|
void obstack_blank (struct obstack *obstack, int size);
|
||||||
|
|
||||||
|
void obstack_grow (struct obstack *obstack, const void *data, int size);
|
||||||
|
void obstack_grow0 (struct obstack *obstack, const void *data, int size);
|
||||||
|
|
||||||
|
void obstack_1grow (struct obstack *obstack, int data_char);
|
||||||
|
void obstack_ptr_grow (struct obstack *obstack, const void *data);
|
||||||
|
void obstack_int_grow (struct obstack *obstack, int data);
|
||||||
|
|
||||||
|
void * obstack_finish (struct obstack *obstack);
|
||||||
|
|
||||||
|
int obstack_object_size (struct obstack *obstack);
|
||||||
|
|
||||||
|
int obstack_room (struct obstack *obstack);
|
||||||
|
void obstack_make_room (struct obstack *obstack, int size);
|
||||||
|
void obstack_1grow_fast (struct obstack *obstack, int data_char);
|
||||||
|
void obstack_ptr_grow_fast (struct obstack *obstack, const void *data);
|
||||||
|
void obstack_int_grow_fast (struct obstack *obstack, int data);
|
||||||
|
void obstack_blank_fast (struct obstack *obstack, int size);
|
||||||
|
|
||||||
|
void * obstack_base (struct obstack *obstack);
|
||||||
|
void * obstack_next_free (struct obstack *obstack);
|
||||||
|
int obstack_alignment_mask (struct obstack *obstack);
|
||||||
|
int obstack_chunk_size (struct obstack *obstack);
|
||||||
|
int obstack_memory_used (struct obstack *obstack);
|
||||||
|
|
||||||
|
#endif /* __STDC__ */
|
||||||
|
|
||||||
|
/* Non-ANSI C cannot really support alternative functions for these macros,
|
||||||
|
so we do not declare them. */
|
||||||
|
|
||||||
|
/* Error handler called when `obstack_chunk_alloc' failed to allocate
|
||||||
|
more memory. This can be set to a user defined function which
|
||||||
|
should either abort gracefully or use longjump - but shouldn't
|
||||||
|
return. The default action is to print a message and abort. */
|
||||||
|
#if defined __STDC__ && __STDC__
|
||||||
|
extern void (*obstack_alloc_failed_handler) (void);
|
||||||
|
#else
|
||||||
|
extern void (*obstack_alloc_failed_handler) ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Exit value used when `print_and_abort' is used. */
|
||||||
|
extern int obstack_exit_failure;
|
||||||
|
|
||||||
|
/* Pointer to beginning of object being allocated or to be allocated next.
|
||||||
|
Note that this might not be the final address of the object
|
||||||
|
because a new chunk might be needed to hold the final size. */
|
||||||
|
|
||||||
|
#define obstack_base(h) ((h)->object_base)
|
||||||
|
|
||||||
|
/* Size for allocating ordinary chunks. */
|
||||||
|
|
||||||
|
#define obstack_chunk_size(h) ((h)->chunk_size)
|
||||||
|
|
||||||
|
/* Pointer to next byte not yet allocated in current chunk. */
|
||||||
|
|
||||||
|
#define obstack_next_free(h) ((h)->next_free)
|
||||||
|
|
||||||
|
/* Mask specifying low bits that should be clear in address of an object. */
|
||||||
|
|
||||||
|
#define obstack_alignment_mask(h) ((h)->alignment_mask)
|
||||||
|
|
||||||
|
/* To prevent prototype warnings provide complete argument list in
|
||||||
|
standard C version. */
|
||||||
|
#if defined __STDC__ && __STDC__
|
||||||
|
|
||||||
|
# define obstack_init(h) \
|
||||||
|
_obstack_begin ((h), 0, 0, \
|
||||||
|
(void *(*) (long)) obstack_chunk_alloc, \
|
||||||
|
(void (*) (void *)) obstack_chunk_free)
|
||||||
|
|
||||||
|
# define obstack_begin(h, size) \
|
||||||
|
_obstack_begin ((h), (size), 0, \
|
||||||
|
(void *(*) (long)) obstack_chunk_alloc, \
|
||||||
|
(void (*) (void *)) obstack_chunk_free)
|
||||||
|
|
||||||
|
# define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
|
||||||
|
_obstack_begin ((h), (size), (alignment), \
|
||||||
|
(void *(*) (long)) (chunkfun), \
|
||||||
|
(void (*) (void *)) (freefun))
|
||||||
|
|
||||||
|
# define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
|
||||||
|
_obstack_begin_1 ((h), (size), (alignment), \
|
||||||
|
(void *(*) (void *, long)) (chunkfun), \
|
||||||
|
(void (*) (void *, void *)) (freefun), (arg))
|
||||||
|
|
||||||
|
# define obstack_chunkfun(h, newchunkfun) \
|
||||||
|
((h) -> chunkfun = (struct _obstack_chunk *(*)(void *, long)) (newchunkfun))
|
||||||
|
|
||||||
|
# define obstack_freefun(h, newfreefun) \
|
||||||
|
((h) -> freefun = (void (*)(void *, struct _obstack_chunk *)) (newfreefun))
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
# define obstack_init(h) \
|
||||||
|
_obstack_begin ((h), 0, 0, \
|
||||||
|
(void *(*) ()) obstack_chunk_alloc, \
|
||||||
|
(void (*) ()) obstack_chunk_free)
|
||||||
|
|
||||||
|
# define obstack_begin(h, size) \
|
||||||
|
_obstack_begin ((h), (size), 0, \
|
||||||
|
(void *(*) ()) obstack_chunk_alloc, \
|
||||||
|
(void (*) ()) obstack_chunk_free)
|
||||||
|
|
||||||
|
# define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
|
||||||
|
_obstack_begin ((h), (size), (alignment), \
|
||||||
|
(void *(*) ()) (chunkfun), \
|
||||||
|
(void (*) ()) (freefun))
|
||||||
|
|
||||||
|
# define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
|
||||||
|
_obstack_begin_1 ((h), (size), (alignment), \
|
||||||
|
(void *(*) ()) (chunkfun), \
|
||||||
|
(void (*) ()) (freefun), (arg))
|
||||||
|
|
||||||
|
# define obstack_chunkfun(h, newchunkfun) \
|
||||||
|
((h) -> chunkfun = (struct _obstack_chunk *(*)()) (newchunkfun))
|
||||||
|
|
||||||
|
# define obstack_freefun(h, newfreefun) \
|
||||||
|
((h) -> freefun = (void (*)()) (newfreefun))
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = achar)
|
||||||
|
|
||||||
|
#define obstack_blank_fast(h,n) ((h)->next_free += (n))
|
||||||
|
|
||||||
|
#define obstack_memory_used(h) _obstack_memory_used (h)
|
||||||
|
|
||||||
|
#if defined __GNUC__ && defined __STDC__ && __STDC__
|
||||||
|
/* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
|
||||||
|
does not implement __extension__. But that compiler doesn't define
|
||||||
|
__GNUC_MINOR__. */
|
||||||
|
# if __GNUC__ < 2 || (__NeXT__ && !__GNUC_MINOR__)
|
||||||
|
# define __extension__
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* For GNU C, if not -traditional,
|
||||||
|
we can define these macros to compute all args only once
|
||||||
|
without using a global variable.
|
||||||
|
Also, we can avoid using the `temp' slot, to make faster code. */
|
||||||
|
|
||||||
|
# define obstack_object_size(OBSTACK) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
|
(unsigned) (__o->next_free - __o->object_base); })
|
||||||
|
|
||||||
|
# define obstack_room(OBSTACK) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
|
(unsigned) (__o->chunk_limit - __o->next_free); })
|
||||||
|
|
||||||
|
# define obstack_make_room(OBSTACK,length) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
|
int __len = (length); \
|
||||||
|
if (__o->chunk_limit - __o->next_free < __len) \
|
||||||
|
_obstack_newchunk (__o, __len); \
|
||||||
|
(void) 0; })
|
||||||
|
|
||||||
|
# define obstack_empty_p(OBSTACK) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
|
(__o->chunk->prev == 0 && __o->next_free - __o->chunk->contents == 0); })
|
||||||
|
|
||||||
|
# define obstack_grow(OBSTACK,where,length) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
|
int __len = (length); \
|
||||||
|
if (__o->next_free + __len > __o->chunk_limit) \
|
||||||
|
_obstack_newchunk (__o, __len); \
|
||||||
|
_obstack_memcpy (__o->next_free, (where), __len); \
|
||||||
|
__o->next_free += __len; \
|
||||||
|
(void) 0; })
|
||||||
|
|
||||||
|
# define obstack_grow0(OBSTACK,where,length) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
|
int __len = (length); \
|
||||||
|
if (__o->next_free + __len + 1 > __o->chunk_limit) \
|
||||||
|
_obstack_newchunk (__o, __len + 1); \
|
||||||
|
_obstack_memcpy (__o->next_free, (where), __len); \
|
||||||
|
__o->next_free += __len; \
|
||||||
|
*(__o->next_free)++ = 0; \
|
||||||
|
(void) 0; })
|
||||||
|
|
||||||
|
# define obstack_1grow(OBSTACK,datum) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
|
if (__o->next_free + 1 > __o->chunk_limit) \
|
||||||
|
_obstack_newchunk (__o, 1); \
|
||||||
|
*(__o->next_free)++ = (datum); \
|
||||||
|
(void) 0; })
|
||||||
|
|
||||||
|
/* These assume that the obstack alignment is good enough for pointers
|
||||||
|
or ints, and that the data added so far to the current object
|
||||||
|
shares that much alignment. */
|
||||||
|
|
||||||
|
# define obstack_ptr_grow(OBSTACK,datum) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
|
if (__o->next_free + sizeof (void *) > __o->chunk_limit) \
|
||||||
|
_obstack_newchunk (__o, sizeof (void *)); \
|
||||||
|
*((void **)__o->next_free)++ = (datum); \
|
||||||
|
(void) 0; })
|
||||||
|
|
||||||
|
# define obstack_int_grow(OBSTACK,datum) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
|
if (__o->next_free + sizeof (int) > __o->chunk_limit) \
|
||||||
|
_obstack_newchunk (__o, sizeof (int)); \
|
||||||
|
*((int *)__o->next_free)++ = (datum); \
|
||||||
|
(void) 0; })
|
||||||
|
|
||||||
|
# define obstack_ptr_grow_fast(h,aptr) \
|
||||||
|
(*((void **) (h)->next_free)++ = (aptr))
|
||||||
|
|
||||||
|
# define obstack_int_grow_fast(h,aint) \
|
||||||
|
(*((int *) (h)->next_free)++ = (aint))
|
||||||
|
|
||||||
|
# define obstack_blank(OBSTACK,length) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
|
int __len = (length); \
|
||||||
|
if (__o->chunk_limit - __o->next_free < __len) \
|
||||||
|
_obstack_newchunk (__o, __len); \
|
||||||
|
__o->next_free += __len; \
|
||||||
|
(void) 0; })
|
||||||
|
|
||||||
|
# define obstack_alloc(OBSTACK,length) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__h = (OBSTACK); \
|
||||||
|
obstack_blank (__h, (length)); \
|
||||||
|
obstack_finish (__h); })
|
||||||
|
|
||||||
|
# define obstack_copy(OBSTACK,where,length) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__h = (OBSTACK); \
|
||||||
|
obstack_grow (__h, (where), (length)); \
|
||||||
|
obstack_finish (__h); })
|
||||||
|
|
||||||
|
# define obstack_copy0(OBSTACK,where,length) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__h = (OBSTACK); \
|
||||||
|
obstack_grow0 (__h, (where), (length)); \
|
||||||
|
obstack_finish (__h); })
|
||||||
|
|
||||||
|
/* The local variable is named __o1 to avoid a name conflict
|
||||||
|
when obstack_blank is called. */
|
||||||
|
# define obstack_finish(OBSTACK) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__o1 = (OBSTACK); \
|
||||||
|
void *value; \
|
||||||
|
value = (void *) __o1->object_base; \
|
||||||
|
if (__o1->next_free == value) \
|
||||||
|
__o1->maybe_empty_object = 1; \
|
||||||
|
__o1->next_free \
|
||||||
|
= __INT_TO_PTR ((__PTR_TO_INT (__o1->next_free)+__o1->alignment_mask)\
|
||||||
|
& ~ (__o1->alignment_mask)); \
|
||||||
|
if (__o1->next_free - (char *)__o1->chunk \
|
||||||
|
> __o1->chunk_limit - (char *)__o1->chunk) \
|
||||||
|
__o1->next_free = __o1->chunk_limit; \
|
||||||
|
__o1->object_base = __o1->next_free; \
|
||||||
|
value; })
|
||||||
|
|
||||||
|
# define obstack_free(OBSTACK, OBJ) \
|
||||||
|
__extension__ \
|
||||||
|
({ struct obstack *__o = (OBSTACK); \
|
||||||
|
void *__obj = (OBJ); \
|
||||||
|
if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) \
|
||||||
|
__o->next_free = __o->object_base = (char *)__obj; \
|
||||||
|
else (obstack_free) (__o, __obj); })
|
||||||
|
|
||||||
|
#else /* not __GNUC__ or not __STDC__ */
|
||||||
|
|
||||||
|
# define obstack_object_size(h) \
|
||||||
|
(unsigned) ((h)->next_free - (h)->object_base)
|
||||||
|
|
||||||
|
# define obstack_room(h) \
|
||||||
|
(unsigned) ((h)->chunk_limit - (h)->next_free)
|
||||||
|
|
||||||
|
# define obstack_empty_p(h) \
|
||||||
|
((h)->chunk->prev == 0 && (h)->next_free - (h)->chunk->contents == 0)
|
||||||
|
|
||||||
|
/* Note that the call to _obstack_newchunk is enclosed in (..., 0)
|
||||||
|
so that we can avoid having void expressions
|
||||||
|
in the arms of the conditional expression.
|
||||||
|
Casting the third operand to void was tried before,
|
||||||
|
but some compilers won't accept it. */
|
||||||
|
|
||||||
|
# define obstack_make_room(h,length) \
|
||||||
|
( (h)->temp = (length), \
|
||||||
|
(((h)->next_free + (h)->temp > (h)->chunk_limit) \
|
||||||
|
? (_obstack_newchunk ((h), (h)->temp), 0) : 0))
|
||||||
|
|
||||||
|
# define obstack_grow(h,where,length) \
|
||||||
|
( (h)->temp = (length), \
|
||||||
|
(((h)->next_free + (h)->temp > (h)->chunk_limit) \
|
||||||
|
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
|
||||||
|
_obstack_memcpy ((h)->next_free, (where), (h)->temp), \
|
||||||
|
(h)->next_free += (h)->temp)
|
||||||
|
|
||||||
|
# define obstack_grow0(h,where,length) \
|
||||||
|
( (h)->temp = (length), \
|
||||||
|
(((h)->next_free + (h)->temp + 1 > (h)->chunk_limit) \
|
||||||
|
? (_obstack_newchunk ((h), (h)->temp + 1), 0) : 0), \
|
||||||
|
_obstack_memcpy ((h)->next_free, (where), (h)->temp), \
|
||||||
|
(h)->next_free += (h)->temp, \
|
||||||
|
*((h)->next_free)++ = 0)
|
||||||
|
|
||||||
|
# define obstack_1grow(h,datum) \
|
||||||
|
( (((h)->next_free + 1 > (h)->chunk_limit) \
|
||||||
|
? (_obstack_newchunk ((h), 1), 0) : 0), \
|
||||||
|
(*((h)->next_free)++ = (datum)))
|
||||||
|
|
||||||
|
# define obstack_ptr_grow(h,datum) \
|
||||||
|
( (((h)->next_free + sizeof (char *) > (h)->chunk_limit) \
|
||||||
|
? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0), \
|
||||||
|
(*((const char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = (datum)))
|
||||||
|
|
||||||
|
# define obstack_int_grow(h,datum) \
|
||||||
|
( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \
|
||||||
|
? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \
|
||||||
|
(*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = (datum)))
|
||||||
|
|
||||||
|
# define obstack_ptr_grow_fast(h,aptr) \
|
||||||
|
(*((const char **) (h)->next_free)++ = (aptr))
|
||||||
|
|
||||||
|
# define obstack_int_grow_fast(h,aint) \
|
||||||
|
(*((int *) (h)->next_free)++ = (aint))
|
||||||
|
|
||||||
|
# define obstack_blank(h,length) \
|
||||||
|
( (h)->temp = (length), \
|
||||||
|
(((h)->chunk_limit - (h)->next_free < (h)->temp) \
|
||||||
|
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
|
||||||
|
((h)->next_free += (h)->temp))
|
||||||
|
|
||||||
|
# define obstack_alloc(h,length) \
|
||||||
|
(obstack_blank ((h), (length)), obstack_finish ((h)))
|
||||||
|
|
||||||
|
# define obstack_copy(h,where,length) \
|
||||||
|
(obstack_grow ((h), (where), (length)), obstack_finish ((h)))
|
||||||
|
|
||||||
|
# define obstack_copy0(h,where,length) \
|
||||||
|
(obstack_grow0 ((h), (where), (length)), obstack_finish ((h)))
|
||||||
|
|
||||||
|
# define obstack_finish(h) \
|
||||||
|
( ((h)->next_free == (h)->object_base \
|
||||||
|
? (((h)->maybe_empty_object = 1), 0) \
|
||||||
|
: 0), \
|
||||||
|
(h)->temp = __PTR_TO_INT ((h)->object_base), \
|
||||||
|
(h)->next_free \
|
||||||
|
= __INT_TO_PTR ((__PTR_TO_INT ((h)->next_free)+(h)->alignment_mask) \
|
||||||
|
& ~ ((h)->alignment_mask)), \
|
||||||
|
(((h)->next_free - (char *) (h)->chunk \
|
||||||
|
> (h)->chunk_limit - (char *) (h)->chunk) \
|
||||||
|
? ((h)->next_free = (h)->chunk_limit) : 0), \
|
||||||
|
(h)->object_base = (h)->next_free, \
|
||||||
|
__INT_TO_PTR ((h)->temp))
|
||||||
|
|
||||||
|
# if defined __STDC__ && __STDC__
|
||||||
|
# define obstack_free(h,obj) \
|
||||||
|
( (h)->temp = (char *) (obj) - (char *) (h)->chunk, \
|
||||||
|
(((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
|
||||||
|
? (int) ((h)->next_free = (h)->object_base \
|
||||||
|
= (h)->temp + (char *) (h)->chunk) \
|
||||||
|
: (((obstack_free) ((h), (h)->temp + (char *) (h)->chunk), 0), 0)))
|
||||||
|
# else
|
||||||
|
# define obstack_free(h,obj) \
|
||||||
|
( (h)->temp = (char *) (obj) - (char *) (h)->chunk, \
|
||||||
|
(((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
|
||||||
|
? (int) ((h)->next_free = (h)->object_base \
|
||||||
|
= (h)->temp + (char *) (h)->chunk) \
|
||||||
|
: (_obstack_free ((h), (h)->temp + (char *) (h)->chunk), 0)))
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif /* not __GNUC__ or not __STDC__ */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} /* C++ */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* obstack.h */
|
||||||
+45
@@ -0,0 +1,45 @@
|
|||||||
|
/* quote.c - quote arguments for output
|
||||||
|
Copyright (C) 1998, 1999, 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, 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. */
|
||||||
|
|
||||||
|
/* Written by Paul Eggert <[email protected]> */
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_STDDEF_H
|
||||||
|
# include <stddef.h> /* For the definition of size_t on windows w/MSVC. */
|
||||||
|
#endif
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include "quotearg.h"
|
||||||
|
#include "quote.h"
|
||||||
|
|
||||||
|
/* Return an unambiguous printable representated, allocated in slot N,
|
||||||
|
for NAME, suitable for diagnostics. */
|
||||||
|
char const *
|
||||||
|
quote_n (int n, char const *name)
|
||||||
|
{
|
||||||
|
return quotearg_n_style (n, locale_quoting_style, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return an unambiguous printable representation of NAME, suitable
|
||||||
|
for diagnostics. */
|
||||||
|
char const *
|
||||||
|
quote (char const *name)
|
||||||
|
{
|
||||||
|
return quote_n (0, name);
|
||||||
|
}
|
||||||
+28
@@ -0,0 +1,28 @@
|
|||||||
|
/* quote.h - prototypes for quote.c
|
||||||
|
Copyright (C) 1998, 1999, 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, 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. */
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef PARAMS
|
||||||
|
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
|
# define PARAMS(Args) Args
|
||||||
|
# else
|
||||||
|
# define PARAMS(Args) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char const *quote_n PARAMS ((int n, char const *name));
|
||||||
|
char const *quote PARAMS ((char const *name));
|
||||||
+635
@@ -0,0 +1,635 @@
|
|||||||
|
/* quotearg.c - quote arguments for output
|
||||||
|
Copyright (C) 1998, 1999, 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, 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. */
|
||||||
|
|
||||||
|
/* Written by Paul Eggert <[email protected]> */
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_STDDEF_H
|
||||||
|
# include <stddef.h> /* For the definition of size_t on windows w/MSVC. */
|
||||||
|
#endif
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include "quotearg.h"
|
||||||
|
#include "xalloc.h"
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
#if ENABLE_NLS
|
||||||
|
# include <libintl.h>
|
||||||
|
# define _(text) gettext (text)
|
||||||
|
#else
|
||||||
|
# define _(text) text
|
||||||
|
#endif
|
||||||
|
#define N_(text) text
|
||||||
|
|
||||||
|
#if HAVE_LIMITS_H
|
||||||
|
# include <limits.h>
|
||||||
|
#endif
|
||||||
|
#ifndef CHAR_BIT
|
||||||
|
# define CHAR_BIT 8
|
||||||
|
#endif
|
||||||
|
#ifndef SIZE_MAX
|
||||||
|
# define SIZE_MAX ((size_t) -1)
|
||||||
|
#endif
|
||||||
|
#ifndef UCHAR_MAX
|
||||||
|
# define UCHAR_MAX ((unsigned char) -1)
|
||||||
|
#endif
|
||||||
|
#ifndef UINT_MAX
|
||||||
|
# define UINT_MAX ((unsigned int) -1)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_C_BACKSLASH_A
|
||||||
|
# define ALERT_CHAR '\a'
|
||||||
|
#else
|
||||||
|
# define ALERT_CHAR '\7'
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_STDLIB_H
|
||||||
|
# include <stdlib.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_STRING_H
|
||||||
|
# include <string.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_WCHAR_H
|
||||||
|
|
||||||
|
/* BSD/OS 4.1 wchar.h requires FILE and struct tm to be declared. */
|
||||||
|
# include <stdio.h>
|
||||||
|
# include <time.h>
|
||||||
|
|
||||||
|
# include <wchar.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !HAVE_MBRTOWC
|
||||||
|
/* Disable multibyte processing entirely. Since MB_CUR_MAX is 1, the
|
||||||
|
other macros are defined only for documentation and to satisfy C
|
||||||
|
syntax. */
|
||||||
|
# undef MB_CUR_MAX
|
||||||
|
# define MB_CUR_MAX 1
|
||||||
|
# define mbrtowc(pwc, s, n, ps) ((*(pwc) = *(s)) != 0)
|
||||||
|
# define iswprint(wc) ISPRINT ((unsigned char) (wc))
|
||||||
|
# undef HAVE_MBSINIT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined mbsinit && !HAVE_MBSINIT
|
||||||
|
# define mbsinit(ps) 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef iswprint
|
||||||
|
# if HAVE_WCTYPE_H
|
||||||
|
# include <wctype.h>
|
||||||
|
# endif
|
||||||
|
# if !defined iswprint && !HAVE_ISWPRINT
|
||||||
|
# define iswprint(wc) 1
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define INT_BITS (sizeof (int) * CHAR_BIT)
|
||||||
|
|
||||||
|
#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
|
||||||
|
# define IN_CTYPE_DOMAIN(c) 1
|
||||||
|
#else
|
||||||
|
# define IN_CTYPE_DOMAIN(c) isascii(c)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Undefine to protect against the definition in wctype.h of solaris2.6. */
|
||||||
|
#undef ISPRINT
|
||||||
|
#define ISPRINT(c) (IN_CTYPE_DOMAIN (c) && isprint (c))
|
||||||
|
|
||||||
|
struct quoting_options
|
||||||
|
{
|
||||||
|
/* Basic quoting style. */
|
||||||
|
enum quoting_style style;
|
||||||
|
|
||||||
|
/* Quote the characters indicated by this bit vector even if the
|
||||||
|
quoting style would not normally require them to be quoted. */
|
||||||
|
int quote_these_too[(UCHAR_MAX / INT_BITS) + 1];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Names of quoting styles. */
|
||||||
|
char const *const quoting_style_args[] =
|
||||||
|
{
|
||||||
|
"literal",
|
||||||
|
"shell",
|
||||||
|
"shell-always",
|
||||||
|
"c",
|
||||||
|
"escape",
|
||||||
|
"locale",
|
||||||
|
"clocale",
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Correspondences to quoting style names. */
|
||||||
|
enum quoting_style const quoting_style_vals[] =
|
||||||
|
{
|
||||||
|
literal_quoting_style,
|
||||||
|
shell_quoting_style,
|
||||||
|
shell_always_quoting_style,
|
||||||
|
c_quoting_style,
|
||||||
|
escape_quoting_style,
|
||||||
|
locale_quoting_style,
|
||||||
|
clocale_quoting_style
|
||||||
|
};
|
||||||
|
|
||||||
|
/* The default quoting options. */
|
||||||
|
static struct quoting_options default_quoting_options;
|
||||||
|
|
||||||
|
/* Allocate a new set of quoting options, with contents initially identical
|
||||||
|
to O if O is not null, or to the default if O is null.
|
||||||
|
It is the caller's responsibility to free the result. */
|
||||||
|
struct quoting_options *
|
||||||
|
clone_quoting_options (struct quoting_options *o)
|
||||||
|
{
|
||||||
|
struct quoting_options *p
|
||||||
|
= (struct quoting_options *) xmalloc (sizeof (struct quoting_options));
|
||||||
|
*p = *(o ? o : &default_quoting_options);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get the value of O's quoting style. If O is null, use the default. */
|
||||||
|
enum quoting_style
|
||||||
|
get_quoting_style (struct quoting_options *o)
|
||||||
|
{
|
||||||
|
return (o ? o : &default_quoting_options)->style;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* In O (or in the default if O is null),
|
||||||
|
set the value of the quoting style to S. */
|
||||||
|
void
|
||||||
|
set_quoting_style (struct quoting_options *o, enum quoting_style s)
|
||||||
|
{
|
||||||
|
(o ? o : &default_quoting_options)->style = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* In O (or in the default if O is null),
|
||||||
|
set the value of the quoting options for character C to I.
|
||||||
|
Return the old value. Currently, the only values defined for I are
|
||||||
|
0 (the default) and 1 (which means to quote the character even if
|
||||||
|
it would not otherwise be quoted). */
|
||||||
|
int
|
||||||
|
set_char_quoting (struct quoting_options *o, char c, int i)
|
||||||
|
{
|
||||||
|
unsigned char uc = c;
|
||||||
|
int *p = (o ? o : &default_quoting_options)->quote_these_too + uc / INT_BITS;
|
||||||
|
int shift = uc % INT_BITS;
|
||||||
|
int r = (*p >> shift) & 1;
|
||||||
|
*p ^= ((i & 1) ^ r) << shift;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MSGID approximates a quotation mark. Return its translation if it
|
||||||
|
has one; otherwise, return either it or "\"", depending on S. */
|
||||||
|
static char const *
|
||||||
|
gettext_quote (char const *msgid, enum quoting_style s)
|
||||||
|
{
|
||||||
|
char const *translation = _(msgid);
|
||||||
|
if (translation == msgid && s == clocale_quoting_style)
|
||||||
|
translation = "\"";
|
||||||
|
return translation;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
|
||||||
|
argument ARG (of size ARGSIZE), using QUOTING_STYLE and the
|
||||||
|
non-quoting-style part of O to control quoting.
|
||||||
|
Terminate the output with a null character, and return the written
|
||||||
|
size of the output, not counting the terminating null.
|
||||||
|
If BUFFERSIZE is too small to store the output string, return the
|
||||||
|
value that would have been returned had BUFFERSIZE been large enough.
|
||||||
|
If ARGSIZE is -1, use the string length of the argument for ARGSIZE.
|
||||||
|
|
||||||
|
This function acts like quotearg_buffer (BUFFER, BUFFERSIZE, ARG,
|
||||||
|
ARGSIZE, O), except it uses QUOTING_STYLE instead of the quoting
|
||||||
|
style specified by O, and O may not be null. */
|
||||||
|
|
||||||
|
static size_t
|
||||||
|
quotearg_buffer_restyled (char *buffer, size_t buffersize,
|
||||||
|
char const *arg, size_t argsize,
|
||||||
|
enum quoting_style quoting_style,
|
||||||
|
struct quoting_options const *o)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
size_t len = 0;
|
||||||
|
char const *quote_string = 0;
|
||||||
|
size_t quote_string_len = 0;
|
||||||
|
int backslash_escapes = 0;
|
||||||
|
int unibyte_locale = MB_CUR_MAX == 1;
|
||||||
|
|
||||||
|
#define STORE(c) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
if (len < buffersize) \
|
||||||
|
buffer[len] = (c); \
|
||||||
|
len++; \
|
||||||
|
} \
|
||||||
|
while (0)
|
||||||
|
|
||||||
|
switch (quoting_style)
|
||||||
|
{
|
||||||
|
case c_quoting_style:
|
||||||
|
STORE ('"');
|
||||||
|
backslash_escapes = 1;
|
||||||
|
quote_string = "\"";
|
||||||
|
quote_string_len = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case escape_quoting_style:
|
||||||
|
backslash_escapes = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case locale_quoting_style:
|
||||||
|
case clocale_quoting_style:
|
||||||
|
{
|
||||||
|
/* Get translations for open and closing quotation marks.
|
||||||
|
|
||||||
|
The message catalog should translate "`" to a left
|
||||||
|
quotation mark suitable for the locale, and similarly for
|
||||||
|
"'". If the catalog has no translation,
|
||||||
|
locale_quoting_style quotes `like this', and
|
||||||
|
clocale_quoting_style quotes "like this".
|
||||||
|
|
||||||
|
For example, an American English Unicode locale should
|
||||||
|
translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
|
||||||
|
should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
|
||||||
|
MARK). A British English Unicode locale should instead
|
||||||
|
translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
|
||||||
|
U+2019 (RIGHT SINGLE QUOTATION MARK), respectively. */
|
||||||
|
|
||||||
|
char const *left = gettext_quote (N_("`"), quoting_style);
|
||||||
|
char const *right = gettext_quote (N_("'"), quoting_style);
|
||||||
|
for (quote_string = left; *quote_string; quote_string++)
|
||||||
|
STORE (*quote_string);
|
||||||
|
backslash_escapes = 1;
|
||||||
|
quote_string = right;
|
||||||
|
quote_string_len = strlen (quote_string);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case shell_always_quoting_style:
|
||||||
|
STORE ('\'');
|
||||||
|
quote_string = "'";
|
||||||
|
quote_string_len = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; ! (argsize == (size_t) -1 ? arg[i] == '\0' : i == argsize); i++)
|
||||||
|
{
|
||||||
|
unsigned char c;
|
||||||
|
unsigned char esc;
|
||||||
|
|
||||||
|
if (backslash_escapes
|
||||||
|
&& quote_string_len
|
||||||
|
&& i + quote_string_len <= argsize
|
||||||
|
&& memcmp (arg + i, quote_string, quote_string_len) == 0)
|
||||||
|
STORE ('\\');
|
||||||
|
|
||||||
|
c = arg[i];
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
case '?':
|
||||||
|
switch (quoting_style)
|
||||||
|
{
|
||||||
|
case shell_quoting_style:
|
||||||
|
goto use_shell_always_quoting_style;
|
||||||
|
|
||||||
|
case c_quoting_style:
|
||||||
|
if (i + 2 < argsize && arg[i + 1] == '?')
|
||||||
|
switch (arg[i + 2])
|
||||||
|
{
|
||||||
|
case '!': case '\'':
|
||||||
|
case '(': case ')': case '-': case '/':
|
||||||
|
case '<': case '=': case '>':
|
||||||
|
/* Escape the second '?' in what would otherwise be
|
||||||
|
a trigraph. */
|
||||||
|
i += 2;
|
||||||
|
c = arg[i + 2];
|
||||||
|
STORE ('?');
|
||||||
|
STORE ('\\');
|
||||||
|
STORE ('?');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ALERT_CHAR: esc = 'a'; goto c_escape;
|
||||||
|
case '\b': esc = 'b'; goto c_escape;
|
||||||
|
case '\f': esc = 'f'; goto c_escape;
|
||||||
|
case '\n': esc = 'n'; goto c_and_shell_escape;
|
||||||
|
case '\r': esc = 'r'; goto c_and_shell_escape;
|
||||||
|
case '\t': esc = 't'; goto c_and_shell_escape;
|
||||||
|
case '\v': esc = 'v'; goto c_escape;
|
||||||
|
case '\\': esc = c; goto c_and_shell_escape;
|
||||||
|
|
||||||
|
c_and_shell_escape:
|
||||||
|
if (quoting_style == shell_quoting_style)
|
||||||
|
goto use_shell_always_quoting_style;
|
||||||
|
c_escape:
|
||||||
|
if (backslash_escapes)
|
||||||
|
{
|
||||||
|
c = esc;
|
||||||
|
goto store_escape;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '#': case '~':
|
||||||
|
if (i != 0)
|
||||||
|
break;
|
||||||
|
/* Fall through. */
|
||||||
|
case ' ':
|
||||||
|
case '!': /* special in bash */
|
||||||
|
case '"': case '$': case '&':
|
||||||
|
case '(': case ')': case '*': case ';':
|
||||||
|
case '<': case '>': case '[':
|
||||||
|
case '^': /* special in old /bin/sh, e.g. SunOS 4.1.4 */
|
||||||
|
case '`': case '|':
|
||||||
|
/* A shell special character. In theory, '$' and '`' could
|
||||||
|
be the first bytes of multibyte characters, which means
|
||||||
|
we should check them with mbrtowc, but in practice this
|
||||||
|
doesn't happen so it's not worth worrying about. */
|
||||||
|
if (quoting_style == shell_quoting_style)
|
||||||
|
goto use_shell_always_quoting_style;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '\'':
|
||||||
|
switch (quoting_style)
|
||||||
|
{
|
||||||
|
case shell_quoting_style:
|
||||||
|
goto use_shell_always_quoting_style;
|
||||||
|
|
||||||
|
case shell_always_quoting_style:
|
||||||
|
STORE ('\'');
|
||||||
|
STORE ('\\');
|
||||||
|
STORE ('\'');
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '%': case '+': case ',': case '-': case '.': case '/':
|
||||||
|
case '0': case '1': case '2': case '3': case '4': case '5':
|
||||||
|
case '6': case '7': case '8': case '9': case ':': case '=':
|
||||||
|
case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
|
||||||
|
case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
|
||||||
|
case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
|
||||||
|
case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
|
||||||
|
case 'Y': case 'Z': case ']': case '_': case 'a': case 'b':
|
||||||
|
case 'c': case 'd': case 'e': case 'f': case 'g': case 'h':
|
||||||
|
case 'i': case 'j': case 'k': case 'l': case 'm': case 'n':
|
||||||
|
case 'o': case 'p': case 'q': case 'r': case 's': case 't':
|
||||||
|
case 'u': case 'v': case 'w': case 'x': case 'y': case 'z':
|
||||||
|
case '{': case '}':
|
||||||
|
/* These characters don't cause problems, no matter what the
|
||||||
|
quoting style is. They cannot start multibyte sequences. */
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
/* If we have a multibyte sequence, copy it until we reach
|
||||||
|
its end, find an error, or come back to the initial shift
|
||||||
|
state. For C-like styles, if the sequence has
|
||||||
|
unprintable characters, escape the whole sequence, since
|
||||||
|
we can't easily escape single characters within it. */
|
||||||
|
{
|
||||||
|
/* Length of multibyte sequence found so far. */
|
||||||
|
size_t m;
|
||||||
|
|
||||||
|
int printable;
|
||||||
|
|
||||||
|
if (unibyte_locale)
|
||||||
|
{
|
||||||
|
m = 1;
|
||||||
|
printable = ISPRINT (c);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mbstate_t mbstate;
|
||||||
|
memset (&mbstate, 0, sizeof mbstate);
|
||||||
|
|
||||||
|
m = 0;
|
||||||
|
printable = 1;
|
||||||
|
if (argsize == (size_t) -1)
|
||||||
|
argsize = strlen (arg);
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
wchar_t w;
|
||||||
|
size_t bytes = mbrtowc (&w, &arg[i + m],
|
||||||
|
argsize - (i + m), &mbstate);
|
||||||
|
if (bytes == 0)
|
||||||
|
break;
|
||||||
|
else if (bytes == (size_t) -1)
|
||||||
|
{
|
||||||
|
printable = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (bytes == (size_t) -2)
|
||||||
|
{
|
||||||
|
printable = 0;
|
||||||
|
while (i + m < argsize && arg[i + m])
|
||||||
|
m++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (! iswprint (w))
|
||||||
|
printable = 0;
|
||||||
|
m += bytes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (! mbsinit (&mbstate));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (1 < m || (backslash_escapes && ! printable))
|
||||||
|
{
|
||||||
|
/* Output a multibyte sequence, or an escaped
|
||||||
|
unprintable unibyte character. */
|
||||||
|
size_t ilim = i + m;
|
||||||
|
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
if (backslash_escapes && ! printable)
|
||||||
|
{
|
||||||
|
STORE ('\\');
|
||||||
|
STORE ('0' + (c >> 6));
|
||||||
|
STORE ('0' + ((c >> 3) & 7));
|
||||||
|
c = '0' + (c & 7);
|
||||||
|
}
|
||||||
|
if (ilim <= i + 1)
|
||||||
|
break;
|
||||||
|
STORE (c);
|
||||||
|
c = arg[++i];
|
||||||
|
}
|
||||||
|
|
||||||
|
goto store_c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! (backslash_escapes
|
||||||
|
&& o->quote_these_too[c / INT_BITS] & (1 << (c % INT_BITS))))
|
||||||
|
goto store_c;
|
||||||
|
|
||||||
|
store_escape:
|
||||||
|
STORE ('\\');
|
||||||
|
|
||||||
|
store_c:
|
||||||
|
STORE (c);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (quote_string)
|
||||||
|
for (; *quote_string; quote_string++)
|
||||||
|
STORE (*quote_string);
|
||||||
|
|
||||||
|
if (len < buffersize)
|
||||||
|
buffer[len] = '\0';
|
||||||
|
return len;
|
||||||
|
|
||||||
|
use_shell_always_quoting_style:
|
||||||
|
return quotearg_buffer_restyled (buffer, buffersize, arg, argsize,
|
||||||
|
shell_always_quoting_style, o);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
|
||||||
|
argument ARG (of size ARGSIZE), using O to control quoting.
|
||||||
|
If O is null, use the default.
|
||||||
|
Terminate the output with a null character, and return the written
|
||||||
|
size of the output, not counting the terminating null.
|
||||||
|
If BUFFERSIZE is too small to store the output string, return the
|
||||||
|
value that would have been returned had BUFFERSIZE been large enough.
|
||||||
|
If ARGSIZE is -1, use the string length of the argument for ARGSIZE. */
|
||||||
|
size_t
|
||||||
|
quotearg_buffer (char *buffer, size_t buffersize,
|
||||||
|
char const *arg, size_t argsize,
|
||||||
|
struct quoting_options const *o)
|
||||||
|
{
|
||||||
|
struct quoting_options const *p = o ? o : &default_quoting_options;
|
||||||
|
return quotearg_buffer_restyled (buffer, buffersize, arg, argsize,
|
||||||
|
p->style, p);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Use storage slot N to return a quoted version of the string ARG.
|
||||||
|
OPTIONS specifies the quoting options.
|
||||||
|
The returned value points to static storage that can be
|
||||||
|
reused by the next call to this function with the same value of N.
|
||||||
|
N must be nonnegative. N is deliberately declared with type "int"
|
||||||
|
to allow for future extensions (using negative values). */
|
||||||
|
static char *
|
||||||
|
quotearg_n_options (int n, char const *arg,
|
||||||
|
struct quoting_options const *options)
|
||||||
|
{
|
||||||
|
/* Preallocate a slot 0 buffer, so that the caller can always quote
|
||||||
|
one small component of a "memory exhausted" message in slot 0. */
|
||||||
|
static char slot0[256];
|
||||||
|
static unsigned int nslots = 1;
|
||||||
|
unsigned int n0 = n;
|
||||||
|
struct slotvec
|
||||||
|
{
|
||||||
|
size_t size;
|
||||||
|
char *val;
|
||||||
|
};
|
||||||
|
static struct slotvec slotvec0 = {sizeof slot0, slot0};
|
||||||
|
static struct slotvec *slotvec = &slotvec0;
|
||||||
|
|
||||||
|
if (n < 0)
|
||||||
|
abort ();
|
||||||
|
|
||||||
|
if (nslots <= n0)
|
||||||
|
{
|
||||||
|
unsigned int n1 = n0 + 1;
|
||||||
|
size_t s = n1 * sizeof *slotvec;
|
||||||
|
|
||||||
|
if (SIZE_MAX / UINT_MAX <= sizeof *slotvec
|
||||||
|
&& n1 != s / sizeof *slotvec)
|
||||||
|
xalloc_die ();
|
||||||
|
|
||||||
|
if (slotvec == &slotvec0)
|
||||||
|
{
|
||||||
|
slotvec = (struct slotvec *) xmalloc (sizeof *slotvec);
|
||||||
|
*slotvec = slotvec0;
|
||||||
|
}
|
||||||
|
slotvec = (struct slotvec *) xrealloc (slotvec, s);
|
||||||
|
memset (slotvec + nslots, 0, (n1 - nslots) * sizeof *slotvec);
|
||||||
|
nslots = n1;
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
size_t size = slotvec[n].size;
|
||||||
|
char *val = slotvec[n].val;
|
||||||
|
size_t qsize = quotearg_buffer (val, size, arg, (size_t) -1, options);
|
||||||
|
|
||||||
|
if (size <= qsize)
|
||||||
|
{
|
||||||
|
slotvec[n].size = size = qsize + 1;
|
||||||
|
slotvec[n].val = val = xrealloc (val == slot0 ? 0 : val, size);
|
||||||
|
quotearg_buffer (val, size, arg, (size_t) -1, options);
|
||||||
|
}
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
quotearg_n (int n, char const *arg)
|
||||||
|
{
|
||||||
|
return quotearg_n_options (n, arg, &default_quoting_options);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
quotearg (char const *arg)
|
||||||
|
{
|
||||||
|
return quotearg_n (0, arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
quotearg_n_style (int n, enum quoting_style s, char const *arg)
|
||||||
|
{
|
||||||
|
struct quoting_options o;
|
||||||
|
o.style = s;
|
||||||
|
memset (o.quote_these_too, 0, sizeof o.quote_these_too);
|
||||||
|
return quotearg_n_options (n, arg, &o);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
quotearg_style (enum quoting_style s, char const *arg)
|
||||||
|
{
|
||||||
|
return quotearg_n_style (0, s, arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
quotearg_char (char const *arg, char ch)
|
||||||
|
{
|
||||||
|
struct quoting_options options;
|
||||||
|
options = default_quoting_options;
|
||||||
|
set_char_quoting (&options, ch, 1);
|
||||||
|
return quotearg_n_options (0, arg, &options);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
quotearg_colon (char const *arg)
|
||||||
|
{
|
||||||
|
return quotearg_char (arg, ':');
|
||||||
|
}
|
||||||
+109
@@ -0,0 +1,109 @@
|
|||||||
|
/* quotearg.h - quote arguments for output
|
||||||
|
Copyright (C) 1998, 1999, 2000 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 Foundation,
|
||||||
|
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
/* Written by Paul Eggert <[email protected]> */
|
||||||
|
|
||||||
|
/* Basic quoting styles. */
|
||||||
|
enum quoting_style
|
||||||
|
{
|
||||||
|
literal_quoting_style, /* --quoting-style=literal */
|
||||||
|
shell_quoting_style, /* --quoting-style=shell */
|
||||||
|
shell_always_quoting_style, /* --quoting-style=shell-always */
|
||||||
|
c_quoting_style, /* --quoting-style=c */
|
||||||
|
escape_quoting_style, /* --quoting-style=escape */
|
||||||
|
locale_quoting_style, /* --quoting-style=locale */
|
||||||
|
clocale_quoting_style /* --quoting-style=clocale */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* For now, --quoting-style=literal is the default, but this may change. */
|
||||||
|
#ifndef DEFAULT_QUOTING_STYLE
|
||||||
|
# define DEFAULT_QUOTING_STYLE literal_quoting_style
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Names of quoting styles and their corresponding values. */
|
||||||
|
extern char const *const quoting_style_args[];
|
||||||
|
extern enum quoting_style const quoting_style_vals[];
|
||||||
|
|
||||||
|
struct quoting_options;
|
||||||
|
|
||||||
|
#ifndef PARAMS
|
||||||
|
# if defined PROTOTYPES || defined __STDC__
|
||||||
|
# define PARAMS(Args) Args
|
||||||
|
# else
|
||||||
|
# define PARAMS(Args) ()
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The functions listed below set and use a hidden variable
|
||||||
|
that contains the default quoting style options. */
|
||||||
|
|
||||||
|
/* Allocate a new set of quoting options, with contents initially identical
|
||||||
|
to O if O is not null, or to the default if O is null.
|
||||||
|
It is the caller's responsibility to free the result. */
|
||||||
|
struct quoting_options *clone_quoting_options
|
||||||
|
PARAMS ((struct quoting_options *o));
|
||||||
|
|
||||||
|
/* Get the value of O's quoting style. If O is null, use the default. */
|
||||||
|
enum quoting_style get_quoting_style PARAMS ((struct quoting_options *o));
|
||||||
|
|
||||||
|
/* In O (or in the default if O is null),
|
||||||
|
set the value of the quoting style to S. */
|
||||||
|
void set_quoting_style PARAMS ((struct quoting_options *o,
|
||||||
|
enum quoting_style s));
|
||||||
|
|
||||||
|
/* In O (or in the default if O is null),
|
||||||
|
set the value of the quoting options for character C to I.
|
||||||
|
Return the old value. Currently, the only values defined for I are
|
||||||
|
0 (the default) and 1 (which means to quote the character even if
|
||||||
|
it would not otherwise be quoted). */
|
||||||
|
int set_char_quoting PARAMS ((struct quoting_options *o, char c, int i));
|
||||||
|
|
||||||
|
/* Place into buffer BUFFER (of size BUFFERSIZE) a quoted version of
|
||||||
|
argument ARG (of size ARGSIZE), using O to control quoting.
|
||||||
|
If O is null, use the default.
|
||||||
|
Terminate the output with a null character, and return the written
|
||||||
|
size of the output, not counting the terminating null.
|
||||||
|
If BUFFERSIZE is too small to store the output string, return the
|
||||||
|
value that would have been returned had BUFFERSIZE been large enough.
|
||||||
|
If ARGSIZE is -1, use the string length of the argument for ARGSIZE. */
|
||||||
|
size_t quotearg_buffer PARAMS ((char *buffer, size_t buffersize,
|
||||||
|
char const *arg, size_t argsize,
|
||||||
|
struct quoting_options const *o));
|
||||||
|
|
||||||
|
/* Use storage slot N to return a quoted version of the string ARG.
|
||||||
|
Use the default quoting options.
|
||||||
|
The returned value points to static storage that can be
|
||||||
|
reused by the next call to this function with the same value of N.
|
||||||
|
N must be nonnegative. */
|
||||||
|
char *quotearg_n PARAMS ((int n, char const *arg));
|
||||||
|
|
||||||
|
/* Equivalent to quotearg_n (0, ARG). */
|
||||||
|
char *quotearg PARAMS ((char const *arg));
|
||||||
|
|
||||||
|
/* Use style S and storage slot N to return a quoted version of the string ARG.
|
||||||
|
This is like quotearg_n (N, ARG), except that it uses S with no other
|
||||||
|
options to specify the quoting method. */
|
||||||
|
char *quotearg_n_style PARAMS ((int n, enum quoting_style s, char const *arg));
|
||||||
|
|
||||||
|
/* Equivalent to quotearg_n_style (0, S, ARG). */
|
||||||
|
char *quotearg_style PARAMS ((enum quoting_style s, char const *arg));
|
||||||
|
|
||||||
|
/* Like quotearg (ARG), except also quote any instances of CH. */
|
||||||
|
char *quotearg_char PARAMS ((char const *arg, char ch));
|
||||||
|
|
||||||
|
/* Equivalent to quotearg_char (ARG, ':'). */
|
||||||
|
char *quotearg_colon PARAMS ((char const *arg));
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/* Work around bug on some systems where realloc (NULL, 0) fails.
|
||||||
|
Copyright (C) 1997 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 Foundation,
|
||||||
|
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
/* written by Jim Meyering */
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
#undef realloc
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
char *malloc ();
|
||||||
|
char *realloc ();
|
||||||
|
|
||||||
|
/* Change the size of an allocated block of memory P to N bytes,
|
||||||
|
with error checking. If N is zero, change it to 1. If P is NULL,
|
||||||
|
use malloc. */
|
||||||
|
|
||||||
|
char *
|
||||||
|
rpl_realloc (p, n)
|
||||||
|
char *p;
|
||||||
|
size_t n;
|
||||||
|
{
|
||||||
|
if (n == 0)
|
||||||
|
n = 1;
|
||||||
|
if (p == 0)
|
||||||
|
return malloc (n);
|
||||||
|
return realloc (p, n);
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
/* stpcpy.c -- copy a string and return pointer to end of new string
|
||||||
|
Copyright (C) 1992, 1995, 1997, 1998 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
NOTE: The canonical source of this file is maintained with the GNU C Library.
|
||||||
|
Bugs can be reported to [email protected].
|
||||||
|
|
||||||
|
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
|
||||||
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
|
||||||
|
USA. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#undef __stpcpy
|
||||||
|
#undef stpcpy
|
||||||
|
|
||||||
|
#ifndef weak_alias
|
||||||
|
# define __stpcpy stpcpy
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */
|
||||||
|
char *
|
||||||
|
__stpcpy (char *dest, const char *src)
|
||||||
|
{
|
||||||
|
register char *d = dest;
|
||||||
|
register const char *s = src;
|
||||||
|
|
||||||
|
do
|
||||||
|
*d++ = *s;
|
||||||
|
while (*s++ != '\0');
|
||||||
|
|
||||||
|
return d - 1;
|
||||||
|
}
|
||||||
|
#ifdef weak_alias
|
||||||
|
weak_alias (__stpcpy, stpcpy)
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/* Copyright (C) 2001 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library 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
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with this program; see the file COPYING.LIB. If not,
|
||||||
|
write to the Free Software Foundation, Inc., 59 Temple Place -
|
||||||
|
Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_STRING_H
|
||||||
|
# include <string.h>
|
||||||
|
#else
|
||||||
|
# include <strings.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char *
|
||||||
|
strchr (const char *s, int c)
|
||||||
|
{
|
||||||
|
return index (s, c);
|
||||||
|
}
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
/* Find the length of STRING, but scan at most MAXLEN characters.
|
||||||
|
Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library 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
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||||
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_STRING_H
|
||||||
|
# if !STDC_HEADERS && HAVE_MEMORY_H
|
||||||
|
# include <memory.h>
|
||||||
|
# endif
|
||||||
|
# include <string.h>
|
||||||
|
#else
|
||||||
|
# include <strings.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_DECL_MEMCHR
|
||||||
|
"this configure-time declaration test was not run"
|
||||||
|
#endif
|
||||||
|
#if !HAVE_DECL_MEMCHR
|
||||||
|
char *memchr ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef __strnlen
|
||||||
|
#undef strnlen
|
||||||
|
|
||||||
|
#ifndef weak_alias
|
||||||
|
# define __strnlen strnlen
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Find the length of STRING, but scan at most MAXLEN characters.
|
||||||
|
If no '\0' terminator is found in that many characters, return MAXLEN. */
|
||||||
|
|
||||||
|
size_t
|
||||||
|
__strnlen (const char *string, size_t maxlen)
|
||||||
|
{
|
||||||
|
const char *end = memchr (string, '\0', maxlen);
|
||||||
|
return end ? (size_t) (end - string) : maxlen;
|
||||||
|
}
|
||||||
|
#ifdef weak_alias
|
||||||
|
weak_alias (__strnlen, strnlen)
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
/* Copyright (C) 1991, 1997 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
NOTE: The canonical source of this file is maintained with the GNU
|
||||||
|
C Library. Bugs can be reported to [email protected].
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library 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
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with this program; see the file COPYING.LIB. If not,
|
||||||
|
write to the Free Software Foundation, Inc., 59 Temple Place -
|
||||||
|
Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined _LIBC || HAVE_STRING_H
|
||||||
|
# include <string.h>
|
||||||
|
#else
|
||||||
|
# include <strings.h>
|
||||||
|
# ifndef strchr
|
||||||
|
# define strchr index
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef strspn
|
||||||
|
|
||||||
|
/* Return the length of the maximum initial segment
|
||||||
|
of S which contains only characters in ACCEPT. */
|
||||||
|
size_t
|
||||||
|
strspn (s, accept)
|
||||||
|
const char *s;
|
||||||
|
const char *accept;
|
||||||
|
{
|
||||||
|
const char *p;
|
||||||
|
const char *a;
|
||||||
|
size_t count = 0;
|
||||||
|
|
||||||
|
for (p = s; *p != '\0'; ++p)
|
||||||
|
{
|
||||||
|
for (a = accept; *a != '\0'; ++a)
|
||||||
|
if (*p == *a)
|
||||||
|
break;
|
||||||
|
if (*a == '\0')
|
||||||
|
return count;
|
||||||
|
else
|
||||||
|
++count;
|
||||||
|
}
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
/* xalloc.h -- malloc with out-of-memory checking
|
||||||
|
Copyright (C) 1990-1998, 1999, 2000 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 Foundation,
|
||||||
|
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#ifndef XALLOC_H_
|
||||||
|
# define XALLOC_H_
|
||||||
|
|
||||||
|
# ifndef PARAMS
|
||||||
|
# if defined PROTOTYPES || (defined __STDC__ && __STDC__)
|
||||||
|
# define PARAMS(Args) Args
|
||||||
|
# else
|
||||||
|
# define PARAMS(Args) ()
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef __attribute__
|
||||||
|
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
|
||||||
|
# define __attribute__(x)
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifndef ATTRIBUTE_NORETURN
|
||||||
|
# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Exit value when the requested amount of memory is not available.
|
||||||
|
It is initialized to EXIT_FAILURE, but the caller may set it to
|
||||||
|
some other value. */
|
||||||
|
extern int xalloc_exit_failure;
|
||||||
|
|
||||||
|
/* If this pointer is non-zero, run the specified function upon each
|
||||||
|
allocation failure. It is initialized to zero. */
|
||||||
|
extern void (*xalloc_fail_func) PARAMS ((void));
|
||||||
|
|
||||||
|
/* If XALLOC_FAIL_FUNC is undefined or a function that returns, this
|
||||||
|
message is output. It is translated via gettext.
|
||||||
|
Its value is "memory exhausted". */
|
||||||
|
extern char const xalloc_msg_memory_exhausted[];
|
||||||
|
|
||||||
|
/* This function is always triggered when memory is exhausted. It is
|
||||||
|
in charge of honoring the three previous items. This is the
|
||||||
|
function to call when one wants the program to die because of a
|
||||||
|
memory allocation failure. */
|
||||||
|
extern void xalloc_die PARAMS ((void)) ATTRIBUTE_NORETURN;
|
||||||
|
|
||||||
|
void *xmalloc PARAMS ((size_t n));
|
||||||
|
void *xcalloc PARAMS ((size_t n, size_t s));
|
||||||
|
void *xrealloc PARAMS ((void *p, size_t n));
|
||||||
|
char *xstrdup PARAMS ((const char *str));
|
||||||
|
|
||||||
|
# define XMALLOC(Type, N_items) ((Type *) xmalloc (sizeof (Type) * (N_items)))
|
||||||
|
# define XCALLOC(Type, N_items) ((Type *) xcalloc (sizeof (Type), (N_items)))
|
||||||
|
# define XREALLOC(Ptr, Type, N_items) \
|
||||||
|
((Type *) xrealloc ((void *) (Ptr), sizeof (Type) * (N_items)))
|
||||||
|
|
||||||
|
/* Declare and alloc memory for VAR of type TYPE. */
|
||||||
|
# define NEW(Type, Var) Type *(Var) = XMALLOC (Type, 1)
|
||||||
|
|
||||||
|
/* Free VAR only if non NULL. */
|
||||||
|
# define XFREE(Var) \
|
||||||
|
do { \
|
||||||
|
if (Var) \
|
||||||
|
free (Var); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
/* Return a pointer to a malloc'ed copy of the array SRC of NUM elements. */
|
||||||
|
# define CCLONE(Src, Num) \
|
||||||
|
(memcpy (xmalloc (sizeof (*Src) * (Num)), (Src), sizeof (*Src) * (Num)))
|
||||||
|
|
||||||
|
/* Return a malloc'ed copy of SRC. */
|
||||||
|
# define CLONE(Src) CCLONE (Src, 1)
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* !XALLOC_H_ */
|
||||||
+116
@@ -0,0 +1,116 @@
|
|||||||
|
/* xmalloc.c -- malloc with out of memory checking
|
||||||
|
Copyright (C) 1990-1999, 2000 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 Foundation,
|
||||||
|
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#if STDC_HEADERS
|
||||||
|
# include <stdlib.h>
|
||||||
|
#else
|
||||||
|
void *calloc ();
|
||||||
|
void *malloc ();
|
||||||
|
void *realloc ();
|
||||||
|
void free ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLE_NLS
|
||||||
|
# include <libintl.h>
|
||||||
|
# define _(Text) gettext (Text)
|
||||||
|
#else
|
||||||
|
# define textdomain(Domain)
|
||||||
|
# define _(Text) Text
|
||||||
|
#endif
|
||||||
|
#define N_(Text) Text
|
||||||
|
|
||||||
|
#include "error.h"
|
||||||
|
#include "xalloc.h"
|
||||||
|
|
||||||
|
#ifndef EXIT_FAILURE
|
||||||
|
# define EXIT_FAILURE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_DONE_WORKING_MALLOC_CHECK
|
||||||
|
"you must run the autoconf test for a properly working malloc -- see malloc.m4"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_DONE_WORKING_REALLOC_CHECK
|
||||||
|
"you must run the autoconf test for a properly working realloc --see realloc.m4"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Exit value when the requested amount of memory is not available.
|
||||||
|
The caller may set it to some other value. */
|
||||||
|
int xalloc_exit_failure = EXIT_FAILURE;
|
||||||
|
|
||||||
|
/* If non NULL, call this function when memory is exhausted. */
|
||||||
|
void (*xalloc_fail_func) PARAMS ((void)) = 0;
|
||||||
|
|
||||||
|
/* If XALLOC_FAIL_FUNC is NULL, or does return, display this message
|
||||||
|
before exiting when memory is exhausted. Goes through gettext. */
|
||||||
|
char const xalloc_msg_memory_exhausted[] = N_("memory exhausted");
|
||||||
|
|
||||||
|
void
|
||||||
|
xalloc_die (void)
|
||||||
|
{
|
||||||
|
if (xalloc_fail_func)
|
||||||
|
(*xalloc_fail_func) ();
|
||||||
|
error (xalloc_exit_failure, 0, "%s", _(xalloc_msg_memory_exhausted));
|
||||||
|
/* The `noreturn' cannot be given to error, since it may return if
|
||||||
|
its first argument is 0. To help compilers understand the
|
||||||
|
xalloc_die does terminate, call exit. */
|
||||||
|
exit (EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allocate N bytes of memory dynamically, with error checking. */
|
||||||
|
|
||||||
|
void *
|
||||||
|
xmalloc (size_t n)
|
||||||
|
{
|
||||||
|
void *p;
|
||||||
|
|
||||||
|
p = malloc (n);
|
||||||
|
if (p == 0)
|
||||||
|
xalloc_die ();
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Change the size of an allocated block of memory P to N bytes,
|
||||||
|
with error checking. */
|
||||||
|
|
||||||
|
void *
|
||||||
|
xrealloc (void *p, size_t n)
|
||||||
|
{
|
||||||
|
p = realloc (p, n);
|
||||||
|
if (p == 0)
|
||||||
|
xalloc_die ();
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Allocate memory for N elements of S bytes, with error checking. */
|
||||||
|
|
||||||
|
void *
|
||||||
|
xcalloc (size_t n, size_t s)
|
||||||
|
{
|
||||||
|
void *p;
|
||||||
|
|
||||||
|
p = calloc (n, s);
|
||||||
|
if (p == 0)
|
||||||
|
xalloc_die ();
|
||||||
|
return p;
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/* xstrdup.c -- copy a string with out of memory checking
|
||||||
|
Copyright (C) 1990, 1996, 1998, 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, 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. */
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if STDC_HEADERS || HAVE_STRING_H
|
||||||
|
# include <string.h>
|
||||||
|
#else
|
||||||
|
# include <strings.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include "xalloc.h"
|
||||||
|
|
||||||
|
/* Return a newly allocated copy of STRING. */
|
||||||
|
|
||||||
|
char *
|
||||||
|
xstrdup (const char *string)
|
||||||
|
{
|
||||||
|
return strcpy (xmalloc (strlen (string) + 1), string);
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
/* Copyright (C) 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, 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. */
|
||||||
|
|
||||||
|
#if HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if STDC_HEADERS || HAVE_STRING_H
|
||||||
|
# include <string.h>
|
||||||
|
#else
|
||||||
|
# include <strings.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include "xalloc.h"
|
||||||
|
|
||||||
|
#ifndef HAVE_DECL_STRNLEN
|
||||||
|
"this configure-time declaration test was not run"
|
||||||
|
#endif
|
||||||
|
#if !HAVE_DECL_STRNLEN
|
||||||
|
size_t strnlen ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char *xstrndup (const char *s, size_t n);
|
||||||
|
|
||||||
|
char *
|
||||||
|
xstrndup (const char *s, size_t n)
|
||||||
|
{
|
||||||
|
size_t len = strnlen (s, n);
|
||||||
|
char *new = xmalloc (len + 1);
|
||||||
|
|
||||||
|
if (new == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
new[len] = '\0';
|
||||||
|
return (char *) memcpy (new, s, len);
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
||||||
|
EXTRA_DIST = \
|
||||||
|
c-bs-a.m4 \
|
||||||
|
codeset.m4 \
|
||||||
|
dmalloc.m4 \
|
||||||
|
error.m4 \
|
||||||
|
gettext.m4 \
|
||||||
|
glibc21.m4 \
|
||||||
|
iconv.m4 \
|
||||||
|
isc-posix.m4 \
|
||||||
|
lcmessage.m4 \
|
||||||
|
malloc.m4 \
|
||||||
|
mbrtowc.m4 \
|
||||||
|
mbstate_t.m4 \
|
||||||
|
prereq.m4 \
|
||||||
|
progtest.m4 \
|
||||||
|
realloc.m4 \
|
||||||
|
strerror_r.m4 \
|
||||||
|
warning.m4
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
#serial 4
|
||||||
|
|
||||||
|
dnl From Paul Eggert.
|
||||||
|
|
||||||
|
AC_DEFUN([AC_C_BACKSLASH_A],
|
||||||
|
[
|
||||||
|
AC_CACHE_CHECK([whether backslash-a works in strings], ac_cv_c_backslash_a,
|
||||||
|
[AC_TRY_COMPILE([],
|
||||||
|
[
|
||||||
|
#if '\a' == 'a'
|
||||||
|
syntax error;
|
||||||
|
#endif
|
||||||
|
char buf['\a' == 'a' ? -1 : 1];
|
||||||
|
buf[0] = '\a';
|
||||||
|
return buf[0] != "\a"[0];
|
||||||
|
],
|
||||||
|
ac_cv_c_backslash_a=yes,
|
||||||
|
ac_cv_c_backslash_a=no)])
|
||||||
|
if test $ac_cv_c_backslash_a = yes; then
|
||||||
|
AC_DEFINE(HAVE_C_BACKSLASH_A, 1,
|
||||||
|
[Define if backslash-a works in C strings.])
|
||||||
|
fi
|
||||||
|
])
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#serial AM1
|
||||||
|
|
||||||
|
dnl From Bruno Haible.
|
||||||
|
|
||||||
|
AC_DEFUN([AM_LANGINFO_CODESET],
|
||||||
|
[
|
||||||
|
AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
|
||||||
|
[AC_TRY_LINK([#include <langinfo.h>],
|
||||||
|
[char* cs = nl_langinfo(CODESET);],
|
||||||
|
am_cv_langinfo_codeset=yes,
|
||||||
|
am_cv_langinfo_codeset=no)
|
||||||
|
])
|
||||||
|
if test $am_cv_langinfo_codeset = yes; then
|
||||||
|
AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
|
||||||
|
[Define if you have <langinfo.h> and nl_langinfo(CODESET).])
|
||||||
|
fi
|
||||||
|
])
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
## ----------------------------------- ##
|
||||||
|
## Check if --with-dmalloc was given. ##
|
||||||
|
## From Franc,ois Pinard ##
|
||||||
|
## ----------------------------------- ##
|
||||||
|
|
||||||
|
# serial 1
|
||||||
|
|
||||||
|
AC_DEFUN([AM_WITH_DMALLOC],
|
||||||
|
[AC_MSG_CHECKING([if malloc debugging is wanted])
|
||||||
|
AC_ARG_WITH(dmalloc,
|
||||||
|
[ --with-dmalloc use dmalloc, as in
|
||||||
|
http://www.dmalloc.com/dmalloc.tar.gz],
|
||||||
|
[if test "$withval" = yes; then
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(WITH_DMALLOC,1,
|
||||||
|
[Define if using the dmalloc debugging malloc package])
|
||||||
|
LIBS="$LIBS -ldmalloc"
|
||||||
|
LDFLAGS="$LDFLAGS -g"
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi], [AC_MSG_RESULT(no)])
|
||||||
|
])
|
||||||
+13
@@ -0,0 +1,13 @@
|
|||||||
|
#serial 4
|
||||||
|
|
||||||
|
dnl FIXME: put these prerequisite-only *.m4 files in a separate
|
||||||
|
dnl directory -- otherwise, they'll conflict with existing files.
|
||||||
|
|
||||||
|
dnl These are the prerequisite macros for GNU's error.c file.
|
||||||
|
AC_DEFUN([jm_PREREQ_ERROR],
|
||||||
|
[
|
||||||
|
AC_CHECK_FUNCS(strerror vprintf doprnt)
|
||||||
|
AC_CHECK_DECLS([strerror])
|
||||||
|
AC_FUNC_STRERROR_R
|
||||||
|
AC_HEADER_STDC
|
||||||
|
])
|
||||||
+370
@@ -0,0 +1,370 @@
|
|||||||
|
# Macro to add for using GNU gettext.
|
||||||
|
# Ulrich Drepper <[email protected]>, 1995.
|
||||||
|
#
|
||||||
|
# This file can be copied and used freely without restrictions. It can
|
||||||
|
# be used in projects which are not available under the GNU General Public
|
||||||
|
# License or the GNU Library General Public License but which still want
|
||||||
|
# to provide support for the GNU gettext functionality.
|
||||||
|
# Please note that the actual code of the GNU gettext library is covered
|
||||||
|
# by the GNU Library General Public License, and the rest of the GNU
|
||||||
|
# gettext package package is covered by the GNU General Public License.
|
||||||
|
# They are *not* in the public domain.
|
||||||
|
|
||||||
|
# serial 10
|
||||||
|
|
||||||
|
dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]).
|
||||||
|
dnl If TOOLSYMBOL is specified and is 'use-libtool', then a libtool library
|
||||||
|
dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
|
||||||
|
dnl depending on --{enable,disable}-{shared,static} and on the presence of
|
||||||
|
dnl AM-DISABLE-SHARED). Otherwise, a static library
|
||||||
|
dnl $(top_builddir)/intl/libintl.a will be created.
|
||||||
|
dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
|
||||||
|
dnl implementations (in libc or libintl) without the ngettext() function
|
||||||
|
dnl will be ignored.
|
||||||
|
dnl LIBDIR is used to find the intl libraries. If empty,
|
||||||
|
dnl the value `$(top_builddir)/intl/' is used.
|
||||||
|
dnl
|
||||||
|
dnl The result of the configuration is one of three cases:
|
||||||
|
dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
|
||||||
|
dnl and used.
|
||||||
|
dnl Catalog format: GNU --> install in $(datadir)
|
||||||
|
dnl Catalog extension: .mo after installation, .gmo in source tree
|
||||||
|
dnl 2) GNU gettext has been found in the system's C library.
|
||||||
|
dnl Catalog format: GNU --> install in $(datadir)
|
||||||
|
dnl Catalog extension: .mo after installation, .gmo in source tree
|
||||||
|
dnl 3) No internationalization, always use English msgid.
|
||||||
|
dnl Catalog format: none
|
||||||
|
dnl Catalog extension: none
|
||||||
|
dnl The use of .gmo is historical (it was needed to avoid overwriting the
|
||||||
|
dnl GNU format catalogs when building on a platform with an X/Open gettext),
|
||||||
|
dnl but we keep it in order not to force irrelevant filename changes on the
|
||||||
|
dnl maintainers.
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([AM_WITH_NLS],
|
||||||
|
[AC_MSG_CHECKING([whether NLS is requested])
|
||||||
|
dnl Default is enabled NLS
|
||||||
|
AC_ARG_ENABLE(nls,
|
||||||
|
[ --disable-nls do not use Native Language Support],
|
||||||
|
USE_NLS=$enableval, USE_NLS=yes)
|
||||||
|
AC_MSG_RESULT($USE_NLS)
|
||||||
|
AC_SUBST(USE_NLS)
|
||||||
|
|
||||||
|
BUILD_INCLUDED_LIBINTL=no
|
||||||
|
USE_INCLUDED_LIBINTL=no
|
||||||
|
INTLLIBS=
|
||||||
|
|
||||||
|
dnl If we use NLS figure out what method
|
||||||
|
if test "$USE_NLS" = "yes"; then
|
||||||
|
AC_DEFINE(ENABLE_NLS, 1,
|
||||||
|
[Define to 1 if translation of program messages to the user's native language
|
||||||
|
is requested.])
|
||||||
|
AC_MSG_CHECKING([whether included gettext is requested])
|
||||||
|
AC_ARG_WITH(included-gettext,
|
||||||
|
[ --with-included-gettext use the GNU gettext library included here],
|
||||||
|
nls_cv_force_use_gnu_gettext=$withval,
|
||||||
|
nls_cv_force_use_gnu_gettext=no)
|
||||||
|
AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
|
||||||
|
|
||||||
|
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
|
||||||
|
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
|
||||||
|
dnl User does not insist on using GNU NLS library. Figure out what
|
||||||
|
dnl to use. If GNU gettext is available we use this. Else we have
|
||||||
|
dnl to fall back to GNU NLS library.
|
||||||
|
CATOBJEXT=NONE
|
||||||
|
|
||||||
|
dnl Add a version number to the cache macros.
|
||||||
|
define(gt_cv_func_gnugettext_libc, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libc])
|
||||||
|
define(gt_cv_func_gnugettext_libintl, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libintl])
|
||||||
|
|
||||||
|
AC_CHECK_HEADER(libintl.h,
|
||||||
|
[AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
|
||||||
|
[AC_TRY_LINK([#include <libintl.h>
|
||||||
|
extern int _nl_msg_cat_cntr;],
|
||||||
|
[bindtextdomain ("", "");
|
||||||
|
return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr],
|
||||||
|
gt_cv_func_gnugettext_libc=yes,
|
||||||
|
gt_cv_func_gnugettext_libc=no)])
|
||||||
|
|
||||||
|
if test "$gt_cv_func_gnugettext_libc" != "yes"; then
|
||||||
|
AC_CACHE_CHECK([for GNU gettext in libintl],
|
||||||
|
gt_cv_func_gnugettext_libintl,
|
||||||
|
[gt_save_LIBS="$LIBS"
|
||||||
|
LIBS="$LIBS -lintl $LIBICONV"
|
||||||
|
AC_TRY_LINK([#include <libintl.h>
|
||||||
|
extern int _nl_msg_cat_cntr;],
|
||||||
|
[bindtextdomain ("", "");
|
||||||
|
return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr],
|
||||||
|
gt_cv_func_gnugettext_libintl=yes,
|
||||||
|
gt_cv_func_gnugettext_libintl=no)
|
||||||
|
LIBS="$gt_save_LIBS"])
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl If an already present or preinstalled GNU gettext() is found,
|
||||||
|
dnl use it. But if this macro is used in GNU gettext, and GNU
|
||||||
|
dnl gettext is already preinstalled in libintl, we update this
|
||||||
|
dnl libintl. (Cf. the install rule in intl/Makefile.in.)
|
||||||
|
if test "$gt_cv_func_gnugettext_libc" = "yes" \
|
||||||
|
|| { test "$gt_cv_func_gnugettext_libintl" = "yes" \
|
||||||
|
&& test "$PACKAGE" != gettext; }; then
|
||||||
|
AC_DEFINE(HAVE_GETTEXT, 1,
|
||||||
|
[Define if the GNU gettext() function is already present or preinstalled.])
|
||||||
|
|
||||||
|
if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
|
||||||
|
dnl If iconv() is in a separate libiconv library, then anyone
|
||||||
|
dnl linking with libintl{.a,.so} also needs to link with
|
||||||
|
dnl libiconv.
|
||||||
|
INTLLIBS="-lintl $LIBICONV"
|
||||||
|
fi
|
||||||
|
|
||||||
|
gt_save_LIBS="$LIBS"
|
||||||
|
LIBS="$LIBS $INTLLIBS"
|
||||||
|
AC_CHECK_FUNCS(dcgettext)
|
||||||
|
LIBS="$gt_save_LIBS"
|
||||||
|
|
||||||
|
dnl Search for GNU msgfmt in the PATH.
|
||||||
|
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
|
||||||
|
[$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :)
|
||||||
|
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
|
||||||
|
|
||||||
|
dnl Search for GNU xgettext in the PATH.
|
||||||
|
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
|
||||||
|
[$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :)
|
||||||
|
|
||||||
|
CATOBJEXT=.gmo
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
if test "$CATOBJEXT" = "NONE"; then
|
||||||
|
dnl GNU gettext is not found in the C library.
|
||||||
|
dnl Fall back on GNU gettext library.
|
||||||
|
nls_cv_use_gnu_gettext=yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$nls_cv_use_gnu_gettext" = "yes"; then
|
||||||
|
dnl Mark actions used to generate GNU NLS library.
|
||||||
|
INTLOBJS="\$(GETTOBJS)"
|
||||||
|
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
|
||||||
|
[$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :)
|
||||||
|
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
|
||||||
|
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
|
||||||
|
[$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :)
|
||||||
|
AC_SUBST(MSGFMT)
|
||||||
|
BUILD_INCLUDED_LIBINTL=yes
|
||||||
|
USE_INCLUDED_LIBINTL=yes
|
||||||
|
CATOBJEXT=.gmo
|
||||||
|
INTLLIBS="ifelse([$3],[],\$(top_builddir)/intl,[$3])/libintl.ifelse([$1], use-libtool, [l], [])a $LIBICONV"
|
||||||
|
LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
|
||||||
|
dnl Test whether we really found GNU msgfmt.
|
||||||
|
if test "$GMSGFMT" != ":"; then
|
||||||
|
dnl If it is no GNU msgfmt we define it as : so that the
|
||||||
|
dnl Makefiles still can work.
|
||||||
|
if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then
|
||||||
|
: ;
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(
|
||||||
|
[found msgfmt program is not GNU msgfmt; ignore it])
|
||||||
|
GMSGFMT=":"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
|
||||||
|
dnl Test whether we really found GNU xgettext.
|
||||||
|
if test "$XGETTEXT" != ":"; then
|
||||||
|
dnl If it is no GNU xgettext we define it as : so that the
|
||||||
|
dnl Makefiles still can work.
|
||||||
|
if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then
|
||||||
|
: ;
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(
|
||||||
|
[found xgettext program is not GNU xgettext; ignore it])
|
||||||
|
XGETTEXT=":"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl We need to process the po/ directory.
|
||||||
|
POSUB=po
|
||||||
|
fi
|
||||||
|
AC_OUTPUT_COMMANDS(
|
||||||
|
[for ac_file in $CONFIG_FILES; do
|
||||||
|
# Support "outfile[:infile[:infile...]]"
|
||||||
|
case "$ac_file" in
|
||||||
|
*:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
|
||||||
|
esac
|
||||||
|
# PO directories have a Makefile.in generated from Makefile.in.in.
|
||||||
|
case "$ac_file" in */Makefile.in)
|
||||||
|
# Adjust a relative srcdir.
|
||||||
|
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
|
||||||
|
ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
|
||||||
|
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
|
||||||
|
# In autoconf-2.13 it is called $ac_given_srcdir.
|
||||||
|
# In autoconf-2.50 it is called $srcdir.
|
||||||
|
test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
|
||||||
|
case "$ac_given_srcdir" in
|
||||||
|
.) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
|
||||||
|
/*) top_srcdir="$ac_given_srcdir" ;;
|
||||||
|
*) top_srcdir="$ac_dots$ac_given_srcdir" ;;
|
||||||
|
esac
|
||||||
|
if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
|
||||||
|
rm -f "$ac_dir/POTFILES"
|
||||||
|
test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
|
||||||
|
sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES"
|
||||||
|
test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
|
||||||
|
sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done])
|
||||||
|
|
||||||
|
|
||||||
|
dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
|
||||||
|
dnl to 'yes' because some of the testsuite requires it.
|
||||||
|
if test "$PACKAGE" = gettext; then
|
||||||
|
BUILD_INCLUDED_LIBINTL=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl intl/plural.c is generated from intl/plural.y. It requires bison,
|
||||||
|
dnl because plural.y uses bison specific features. It requires at least
|
||||||
|
dnl bison-1.26 because earlier versions generate a plural.c that doesn't
|
||||||
|
dnl compile.
|
||||||
|
dnl bison is only needed for the maintainer (who touches plural.y). But in
|
||||||
|
dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
|
||||||
|
dnl the rule in general Makefile. Now, some people carelessly touch the
|
||||||
|
dnl files or have a broken "make" program, hence the plural.c rule will
|
||||||
|
dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
|
||||||
|
dnl present or too old.
|
||||||
|
AC_CHECK_PROGS([INTLBISON], [bison])
|
||||||
|
if test -z "$INTLBISON"; then
|
||||||
|
ac_verc_fail=yes
|
||||||
|
else
|
||||||
|
dnl Found it, now check the version.
|
||||||
|
AC_MSG_CHECKING([version of bison])
|
||||||
|
changequote(<<,>>)dnl
|
||||||
|
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
|
||||||
|
case $ac_prog_version in
|
||||||
|
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
||||||
|
1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
|
||||||
|
changequote([,])dnl
|
||||||
|
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
|
||||||
|
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
|
||||||
|
esac
|
||||||
|
AC_MSG_RESULT([$ac_prog_version])
|
||||||
|
fi
|
||||||
|
if test $ac_verc_fail = yes; then
|
||||||
|
INTLBISON=:
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl These rules are solely for the distribution goal. While doing this
|
||||||
|
dnl we only have to keep exactly one list of the available catalogs
|
||||||
|
dnl in configure.in.
|
||||||
|
for lang in $ALL_LINGUAS; do
|
||||||
|
GMOFILES="$GMOFILES $lang.gmo"
|
||||||
|
POFILES="$POFILES $lang.po"
|
||||||
|
done
|
||||||
|
|
||||||
|
dnl Make all variables we use known to autoconf.
|
||||||
|
AC_SUBST(BUILD_INCLUDED_LIBINTL)
|
||||||
|
AC_SUBST(USE_INCLUDED_LIBINTL)
|
||||||
|
AC_SUBST(CATALOGS)
|
||||||
|
AC_SUBST(CATOBJEXT)
|
||||||
|
AC_SUBST(GMOFILES)
|
||||||
|
AC_SUBST(INTLLIBS)
|
||||||
|
AC_SUBST(INTLOBJS)
|
||||||
|
AC_SUBST(POFILES)
|
||||||
|
AC_SUBST(POSUB)
|
||||||
|
|
||||||
|
dnl For backward compatibility. Some configure.ins may be using this.
|
||||||
|
nls_cv_header_intl=
|
||||||
|
nls_cv_header_libgt=
|
||||||
|
|
||||||
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
|
DATADIRNAME=share
|
||||||
|
AC_SUBST(DATADIRNAME)
|
||||||
|
|
||||||
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
|
INSTOBJEXT=.mo
|
||||||
|
AC_SUBST(INSTOBJEXT)
|
||||||
|
|
||||||
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
|
GENCAT=gencat
|
||||||
|
AC_SUBST(GENCAT)
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl Usage: Just like AM_WITH_NLS, which see.
|
||||||
|
AC_DEFUN([AM_GNU_GETTEXT],
|
||||||
|
[AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||||
|
AC_REQUIRE([AC_PROG_CC])dnl
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||||
|
AC_REQUIRE([AC_PROG_RANLIB])dnl
|
||||||
|
AC_REQUIRE([AC_ISC_POSIX])dnl
|
||||||
|
AC_REQUIRE([AC_HEADER_STDC])dnl
|
||||||
|
AC_REQUIRE([AC_C_CONST])dnl
|
||||||
|
AC_REQUIRE([AC_C_INLINE])dnl
|
||||||
|
AC_REQUIRE([AC_TYPE_OFF_T])dnl
|
||||||
|
AC_REQUIRE([AC_TYPE_SIZE_T])dnl
|
||||||
|
AC_REQUIRE([AC_FUNC_ALLOCA])dnl
|
||||||
|
AC_REQUIRE([AC_FUNC_MMAP])dnl
|
||||||
|
AC_REQUIRE([jm_GLIBC21])dnl
|
||||||
|
|
||||||
|
AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
|
||||||
|
stdlib.h string.h unistd.h sys/param.h])
|
||||||
|
AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getcwd getegid geteuid \
|
||||||
|
getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \
|
||||||
|
strdup strtoul tsearch __argz_count __argz_stringify __argz_next])
|
||||||
|
|
||||||
|
AM_ICONV
|
||||||
|
AM_LANGINFO_CODESET
|
||||||
|
AM_LC_MESSAGES
|
||||||
|
AM_WITH_NLS([$1],[$2],[$3])
|
||||||
|
|
||||||
|
if test "x$CATOBJEXT" != "x"; then
|
||||||
|
if test "x$ALL_LINGUAS" = "x"; then
|
||||||
|
LINGUAS=
|
||||||
|
else
|
||||||
|
AC_MSG_CHECKING(for catalogs to be installed)
|
||||||
|
NEW_LINGUAS=
|
||||||
|
for presentlang in $ALL_LINGUAS; do
|
||||||
|
useit=no
|
||||||
|
for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do
|
||||||
|
# Use the presentlang catalog if desiredlang is
|
||||||
|
# a. equal to presentlang, or
|
||||||
|
# b. a variant of presentlang (because in this case,
|
||||||
|
# presentlang can be used as a fallback for messages
|
||||||
|
# which are not translated in the desiredlang catalog).
|
||||||
|
case "$desiredlang" in
|
||||||
|
"$presentlang"*) useit=yes;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
if test $useit = yes; then
|
||||||
|
NEW_LINGUAS="$NEW_LINGUAS $presentlang"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
LINGUAS=$NEW_LINGUAS
|
||||||
|
AC_MSG_RESULT($LINGUAS)
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl Construct list of names of catalog files to be constructed.
|
||||||
|
if test -n "$LINGUAS"; then
|
||||||
|
for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
|
||||||
|
dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
|
||||||
|
dnl Try to locate is.
|
||||||
|
MKINSTALLDIRS=
|
||||||
|
if test -n "$ac_aux_dir"; then
|
||||||
|
MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
|
||||||
|
fi
|
||||||
|
if test -z "$MKINSTALLDIRS"; then
|
||||||
|
MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
|
||||||
|
fi
|
||||||
|
AC_SUBST(MKINSTALLDIRS)
|
||||||
|
|
||||||
|
dnl Enable libtool support if the surrounding package wishes it.
|
||||||
|
INTL_LIBTOOL_SUFFIX_PREFIX=ifelse([$1], use-libtool, [l], [])
|
||||||
|
AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
|
||||||
|
])
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#serial 2
|
||||||
|
|
||||||
|
# Test for the GNU C Library, version 2.1 or newer.
|
||||||
|
# From Bruno Haible.
|
||||||
|
|
||||||
|
AC_DEFUN([jm_GLIBC21],
|
||||||
|
[
|
||||||
|
AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
|
||||||
|
ac_cv_gnu_library_2_1,
|
||||||
|
[AC_EGREP_CPP([Lucky GNU user],
|
||||||
|
[
|
||||||
|
#include <features.h>
|
||||||
|
#ifdef __GNU_LIBRARY__
|
||||||
|
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
|
||||||
|
Lucky GNU user
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
],
|
||||||
|
ac_cv_gnu_library_2_1=yes,
|
||||||
|
ac_cv_gnu_library_2_1=no)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
AC_SUBST(GLIBC21)
|
||||||
|
GLIBC21="$ac_cv_gnu_library_2_1"
|
||||||
|
]
|
||||||
|
)
|
||||||
+69
@@ -0,0 +1,69 @@
|
|||||||
|
#serial AM2
|
||||||
|
|
||||||
|
dnl From Bruno Haible.
|
||||||
|
|
||||||
|
AC_DEFUN([AM_ICONV],
|
||||||
|
[
|
||||||
|
dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
|
||||||
|
dnl those with the standalone portable GNU libiconv installed).
|
||||||
|
|
||||||
|
AC_ARG_WITH([libiconv-prefix],
|
||||||
|
[ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [
|
||||||
|
for dir in `echo "$withval" | tr : ' '`; do
|
||||||
|
if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi
|
||||||
|
if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi
|
||||||
|
done
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
|
||||||
|
am_cv_func_iconv="no, consider installing GNU libiconv"
|
||||||
|
am_cv_lib_iconv=no
|
||||||
|
AC_TRY_LINK([#include <stdlib.h>
|
||||||
|
#include <iconv.h>],
|
||||||
|
[iconv_t cd = iconv_open("","");
|
||||||
|
iconv(cd,NULL,NULL,NULL,NULL);
|
||||||
|
iconv_close(cd);],
|
||||||
|
am_cv_func_iconv=yes)
|
||||||
|
if test "$am_cv_func_iconv" != yes; then
|
||||||
|
am_save_LIBS="$LIBS"
|
||||||
|
LIBS="$LIBS -liconv"
|
||||||
|
AC_TRY_LINK([#include <stdlib.h>
|
||||||
|
#include <iconv.h>],
|
||||||
|
[iconv_t cd = iconv_open("","");
|
||||||
|
iconv(cd,NULL,NULL,NULL,NULL);
|
||||||
|
iconv_close(cd);],
|
||||||
|
am_cv_lib_iconv=yes
|
||||||
|
am_cv_func_iconv=yes)
|
||||||
|
LIBS="$am_save_LIBS"
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
if test "$am_cv_func_iconv" = yes; then
|
||||||
|
AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
|
||||||
|
AC_MSG_CHECKING([for iconv declaration])
|
||||||
|
AC_CACHE_VAL(am_cv_proto_iconv, [
|
||||||
|
AC_TRY_COMPILE([
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <iconv.h>
|
||||||
|
extern
|
||||||
|
#ifdef __cplusplus
|
||||||
|
"C"
|
||||||
|
#endif
|
||||||
|
#if defined(__STDC__) || defined(__cplusplus)
|
||||||
|
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
|
||||||
|
#else
|
||||||
|
size_t iconv();
|
||||||
|
#endif
|
||||||
|
], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
|
||||||
|
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
|
||||||
|
am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
|
||||||
|
AC_MSG_RESULT([$]{ac_t:-
|
||||||
|
}[$]am_cv_proto_iconv)
|
||||||
|
AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
|
||||||
|
[Define as const if the declaration of iconv() needs const.])
|
||||||
|
fi
|
||||||
|
LIBICONV=
|
||||||
|
if test "$am_cv_lib_iconv" = yes; then
|
||||||
|
LIBICONV="-liconv"
|
||||||
|
fi
|
||||||
|
AC_SUBST(LIBICONV)
|
||||||
|
])
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
#serial 1
|
||||||
|
# This test replaces the one in autoconf.
|
||||||
|
# Currently this macro should have the same name as the autoconf macro
|
||||||
|
# because gettext's gettext.m4 (distributed in the automake package)
|
||||||
|
# still uses it. Otherwise, the use in gettext.m4 makes autoheader
|
||||||
|
# give these diagnostics:
|
||||||
|
# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
|
||||||
|
# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
|
||||||
|
|
||||||
|
undefine([AC_ISC_POSIX])
|
||||||
|
|
||||||
|
AC_DEFUN([AC_ISC_POSIX],
|
||||||
|
[
|
||||||
|
dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
|
||||||
|
AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
|
||||||
|
]
|
||||||
|
)
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Check whether LC_MESSAGES is available in <locale.h>.
|
||||||
|
# Ulrich Drepper <[email protected]>, 1995.
|
||||||
|
#
|
||||||
|
# This file can be copied and used freely without restrictions. It can
|
||||||
|
# be used in projects which are not available under the GNU General Public
|
||||||
|
# License or the GNU Library General Public License but which still want
|
||||||
|
# to provide support for the GNU gettext functionality.
|
||||||
|
# Please note that the actual code of the GNU gettext library is covered
|
||||||
|
# by the GNU Library General Public License, and the rest of the GNU
|
||||||
|
# gettext package package is covered by the GNU General Public License.
|
||||||
|
# They are *not* in the public domain.
|
||||||
|
|
||||||
|
# serial 2
|
||||||
|
|
||||||
|
AC_DEFUN([AM_LC_MESSAGES],
|
||||||
|
[if test $ac_cv_header_locale_h = yes; then
|
||||||
|
AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
|
||||||
|
[AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
|
||||||
|
am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
|
||||||
|
if test $am_cv_val_LC_MESSAGES = yes; then
|
||||||
|
AC_DEFINE(HAVE_LC_MESSAGES, 1,
|
||||||
|
[Define if your <locale.h> file defines LC_MESSAGES.])
|
||||||
|
fi
|
||||||
|
fi])
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
#serial 5
|
||||||
|
|
||||||
|
dnl From Jim Meyering.
|
||||||
|
dnl Determine whether malloc accepts 0 as its argument.
|
||||||
|
dnl If it doesn't, arrange to use the replacement function.
|
||||||
|
dnl
|
||||||
|
|
||||||
|
AC_DEFUN([jm_FUNC_MALLOC],
|
||||||
|
[
|
||||||
|
dnl xmalloc.c requires that this symbol be defined so it doesn't
|
||||||
|
dnl mistakenly use a broken malloc -- as it might if this test were omitted.
|
||||||
|
AC_DEFINE(HAVE_DONE_WORKING_MALLOC_CHECK, 1,
|
||||||
|
[Define if the malloc check has been performed. ])
|
||||||
|
|
||||||
|
AC_CACHE_CHECK([for working malloc], jm_cv_func_working_malloc,
|
||||||
|
[AC_TRY_RUN([
|
||||||
|
char *malloc ();
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
exit (malloc (0) ? 0 : 1);
|
||||||
|
}
|
||||||
|
],
|
||||||
|
jm_cv_func_working_malloc=yes,
|
||||||
|
jm_cv_func_working_malloc=no,
|
||||||
|
dnl When crosscompiling, assume malloc is broken.
|
||||||
|
jm_cv_func_working_malloc=no)
|
||||||
|
])
|
||||||
|
if test $jm_cv_func_working_malloc = no; then
|
||||||
|
AC_LIBOBJ(malloc)
|
||||||
|
AC_DEFINE(malloc, rpl_malloc,
|
||||||
|
[Define to rpl_malloc if the replacement function should be used.])
|
||||||
|
fi
|
||||||
|
])
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#serial 4
|
||||||
|
|
||||||
|
dnl From Paul Eggert
|
||||||
|
|
||||||
|
AC_DEFUN([jm_FUNC_MBRTOWC],
|
||||||
|
[
|
||||||
|
AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared],
|
||||||
|
jm_cv_func_mbrtowc,
|
||||||
|
[AC_TRY_LINK(
|
||||||
|
[#include <wchar.h>],
|
||||||
|
[mbstate_t state; return ! (sizeof state && mbrtowc);],
|
||||||
|
jm_cv_func_mbrtowc=yes,
|
||||||
|
jm_cv_func_mbrtowc=no)])
|
||||||
|
if test $jm_cv_func_mbrtowc = yes; then
|
||||||
|
AC_DEFINE(HAVE_MBRTOWC, 1,
|
||||||
|
[Define to 1 if mbrtowc and mbstate_t are properly declared.])
|
||||||
|
fi
|
||||||
|
])
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# serial 9
|
||||||
|
|
||||||
|
# From Paul Eggert.
|
||||||
|
|
||||||
|
# BeOS 5 has <wchar.h> but does not define mbstate_t,
|
||||||
|
# so you can't declare an object of that type.
|
||||||
|
# Check for this incompatibility with Standard C.
|
||||||
|
|
||||||
|
# Include stdlib.h first, because otherwise this test would fail on Linux
|
||||||
|
# (at least glibc-2.1.3) because the "_XOPEN_SOURCE 500" definition elicits
|
||||||
|
# a syntax error in wchar.h due to the use of undefined __int32_t.
|
||||||
|
|
||||||
|
AC_DEFUN([AC_MBSTATE_T],
|
||||||
|
[
|
||||||
|
AC_CHECK_HEADERS(stdlib.h)
|
||||||
|
|
||||||
|
AC_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t,
|
||||||
|
[AC_TRY_COMPILE([
|
||||||
|
#if HAVE_STDLIB_H
|
||||||
|
# include <stdlib.h>
|
||||||
|
#endif
|
||||||
|
#include <wchar.h>],
|
||||||
|
[mbstate_t x; return sizeof x;],
|
||||||
|
ac_cv_type_mbstate_t=yes,
|
||||||
|
ac_cv_type_mbstate_t=no)])
|
||||||
|
if test $ac_cv_type_mbstate_t = no; then
|
||||||
|
AC_DEFINE(mbstate_t, int,
|
||||||
|
[Define to a type if <wchar.h> does not define.])
|
||||||
|
fi])
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#serial 2
|
||||||
|
|
||||||
|
dnl These are the prerequisite macros for files in the lib/
|
||||||
|
dnl directories of Bison.
|
||||||
|
|
||||||
|
AC_DEFUN([jm_PREREQ_QUOTEARG],
|
||||||
|
[
|
||||||
|
AC_CHECK_FUNCS(isascii iswprint mbsinit)
|
||||||
|
jm_FUNC_MBRTOWC
|
||||||
|
AC_CHECK_HEADERS(limits.h stddef.h stdlib.h string.h wchar.h wctype.h)
|
||||||
|
AC_HEADER_STDC
|
||||||
|
AC_C_BACKSLASH_A
|
||||||
|
AC_MBSTATE_T
|
||||||
|
AM_C_PROTOTYPES
|
||||||
|
])
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# Search path for a program which passes the given test.
|
||||||
|
# Ulrich Drepper <[email protected]>, 1996.
|
||||||
|
#
|
||||||
|
# This file can be copied and used freely without restrictions. It can
|
||||||
|
# be used in projects which are not available under the GNU General Public
|
||||||
|
# License or the GNU Library General Public License but which still want
|
||||||
|
# to provide support for the GNU gettext functionality.
|
||||||
|
# Please note that the actual code of the GNU gettext library is covered
|
||||||
|
# by the GNU Library General Public License, and the rest of the GNU
|
||||||
|
# gettext package package is covered by the GNU General Public License.
|
||||||
|
# They are *not* in the public domain.
|
||||||
|
|
||||||
|
# serial 2
|
||||||
|
|
||||||
|
dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
|
||||||
|
dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
|
||||||
|
AC_DEFUN([AM_PATH_PROG_WITH_TEST],
|
||||||
|
[# Extract the first word of "$2", so it can be a program name with args.
|
||||||
|
set dummy $2; ac_word=[$]2
|
||||||
|
AC_MSG_CHECKING([for $ac_word])
|
||||||
|
AC_CACHE_VAL(ac_cv_path_$1,
|
||||||
|
[case "[$]$1" in
|
||||||
|
/*)
|
||||||
|
ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
||||||
|
for ac_dir in ifelse([$5], , $PATH, [$5]); do
|
||||||
|
test -z "$ac_dir" && ac_dir=.
|
||||||
|
if test -f $ac_dir/$ac_word; then
|
||||||
|
if [$3]; then
|
||||||
|
ac_cv_path_$1="$ac_dir/$ac_word"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS="$ac_save_ifs"
|
||||||
|
dnl If no 4th arg is given, leave the cache variable unset,
|
||||||
|
dnl so AC_PATH_PROGS will keep looking.
|
||||||
|
ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
|
||||||
|
])dnl
|
||||||
|
;;
|
||||||
|
esac])dnl
|
||||||
|
$1="$ac_cv_path_$1"
|
||||||
|
if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
|
||||||
|
AC_MSG_RESULT([$]$1)
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
AC_SUBST($1)dnl
|
||||||
|
])
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
#serial 5
|
||||||
|
|
||||||
|
dnl From Jim Meyering.
|
||||||
|
dnl Determine whether realloc works when both arguments are 0.
|
||||||
|
dnl If it doesn't, arrange to use the replacement function.
|
||||||
|
dnl
|
||||||
|
|
||||||
|
AC_DEFUN([jm_FUNC_REALLOC],
|
||||||
|
[
|
||||||
|
dnl xmalloc.c requires that this symbol be defined so it doesn't
|
||||||
|
dnl mistakenly use a broken realloc -- as it might if this test were omitted.
|
||||||
|
AC_DEFINE(HAVE_DONE_WORKING_REALLOC_CHECK, 1,
|
||||||
|
[Define if the realloc check has been performed. ])
|
||||||
|
|
||||||
|
AC_CACHE_CHECK([for working realloc], jm_cv_func_working_realloc,
|
||||||
|
[AC_TRY_RUN([
|
||||||
|
char *realloc ();
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
exit (realloc (0, 0) ? 0 : 1);
|
||||||
|
}
|
||||||
|
],
|
||||||
|
jm_cv_func_working_realloc=yes,
|
||||||
|
jm_cv_func_working_realloc=no,
|
||||||
|
dnl When crosscompiling, assume realloc is broken.
|
||||||
|
jm_cv_func_working_realloc=no)
|
||||||
|
])
|
||||||
|
if test $jm_cv_func_working_realloc = no; then
|
||||||
|
AC_LIBOBJ(realloc)
|
||||||
|
AC_DEFINE(realloc, rpl_realloc,
|
||||||
|
[Define to rpl_realloc if the replacement function should be used.])
|
||||||
|
fi
|
||||||
|
])
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
#serial 1003
|
||||||
|
# Experimental replacement for the function in the latest CVS autoconf.
|
||||||
|
# Use with the error.c file in ../lib.
|
||||||
|
|
||||||
|
# Copyright 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, 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. */
|
||||||
|
|
||||||
|
undefine([AC_FUNC_STRERROR_R])
|
||||||
|
|
||||||
|
# AC_FUNC_STRERROR_R
|
||||||
|
# ------------------
|
||||||
|
AC_DEFUN([AC_FUNC_STRERROR_R],
|
||||||
|
[AC_CHECK_DECLS([strerror_r])
|
||||||
|
AC_CHECK_FUNCS([strerror_r])
|
||||||
|
AC_CACHE_CHECK([whether strerror_r returns char *],
|
||||||
|
ac_cv_func_strerror_r_char_p,
|
||||||
|
[
|
||||||
|
ac_cv_func_strerror_r_char_p=no
|
||||||
|
if test $ac_cv_have_decl_strerror_r = yes; then
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
|
||||||
|
[[
|
||||||
|
char buf[100];
|
||||||
|
char x = *strerror_r (0, buf, sizeof buf);
|
||||||
|
char *p = strerror_r (0, buf, sizeof buf);
|
||||||
|
]])],
|
||||||
|
ac_cv_func_strerror_r_char_p=yes)
|
||||||
|
else
|
||||||
|
# strerror_r is not declared. Choose between
|
||||||
|
# systems that have relatively inaccessible declarations for the
|
||||||
|
# function. BeOS and DEC UNIX 4.0 fall in this category, but the
|
||||||
|
# former has a strerror_r that returns char*, while the latter
|
||||||
|
# has a strerror_r that returns `int'.
|
||||||
|
# This test should segfault on the DEC system.
|
||||||
|
AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT
|
||||||
|
extern char *strerror_r ();],
|
||||||
|
[[char buf[100];
|
||||||
|
char x = *strerror_r (0, buf, sizeof buf);
|
||||||
|
exit (!isalpha (x));]])],
|
||||||
|
ac_cv_func_strerror_r_char_p=yes, , :)
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
if test $ac_cv_func_strerror_r_char_p = yes; then
|
||||||
|
AC_DEFINE([STRERROR_R_CHAR_P], 1,
|
||||||
|
[Define to 1 if strerror_r returns char *.])
|
||||||
|
fi
|
||||||
|
])# AC_FUNC_STRERROR_R
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
AC_DEFUN(BISON_WARNING,
|
||||||
|
[AC_MSG_CHECKING(whether compiler accepts $1)
|
||||||
|
AC_SUBST(WARNING_CFLAGS)
|
||||||
|
ac_save_CFLAGS="$CFLAGS"
|
||||||
|
CFLAGS="$CFLAGS $1"
|
||||||
|
AC_TRY_COMPILE(,
|
||||||
|
[int x;],
|
||||||
|
WARNING_CFLAGS="$WARNING_CFLAGS $1"
|
||||||
|
AC_MSG_RESULT(yes),
|
||||||
|
AC_MSG_RESULT(no))
|
||||||
|
CFLAGS="$ac_save_CFLAGS"])
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
ChangeLog
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
POTFILES
|
||||||
|
bison.pot
|
||||||
|
stamp-cat-id
|
||||||
|
*.gmo
|
||||||
|
Makefile.in
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
2001-10-10 gettextize <[email protected]>
|
||||||
|
|
||||||
|
* Makefile.in.in: Upgrade to gettext-0.10.40.
|
||||||
|
* cat-id-tbl.c: Remove file.
|
||||||
|
|
||||||
|
2001-10-08 gettextize <[email protected]>
|
||||||
|
|
||||||
|
* Makefile.in.in: Upgrade to gettext-0.10.40.
|
||||||
|
|
||||||
|
2001-10-04 gettextize <[email protected]>
|
||||||
|
|
||||||
|
* Makefile.in.in: Upgrade to gettext-0.10.40.
|
||||||
|
* cat-id-tbl.c: Remove file.
|
||||||
|
|
||||||
|
2001-09-27 gettextize <[email protected]>
|
||||||
|
|
||||||
|
* Makefile.in.in: Upgrade to gettext-0.10.40.
|
||||||
|
* cat-id-tbl.c: Remove file.
|
||||||
|
|
||||||
|
2001-08-03 gettextize <[email protected]>
|
||||||
|
|
||||||
|
* Makefile.in.in: Upgrade to gettext-0.10.39.
|
||||||
|
* cat-id-tbl.c: Remove file.
|
||||||
|
|
||||||
|
2001-07-14 gettextize <[email protected]>
|
||||||
|
|
||||||
|
* Makefile.in.in: Upgrade to gettext-0.10.38.
|
||||||
|
* cat-id-tbl.c: Remove file.
|
||||||
|
* stamp-cat-id: Remove file.
|
||||||
|
|
||||||
|
2000-11-02 Akim Demaille <[email protected]>
|
||||||
|
|
||||||
|
* POTFILES.in: Adjust.
|
||||||
|
|
||||||
|
1999-07-26 Jesse Thilo <[email protected]>
|
||||||
|
|
||||||
|
* po/ru.po: Added Russian translation.
|
||||||
|
|
||||||
|
1999-06-14 Jesse Thilo <[email protected]>
|
||||||
|
|
||||||
|
* po/POTFILES.in: Got rid of version.c.
|
||||||
|
|
||||||
|
1999-04-18 Jesse Thilo <[email protected]>
|
||||||
|
|
||||||
|
* po/de.po, po/es.po, po/fr.po, po/nl.po, po/POTFILES.in:
|
||||||
|
Adjusted paths to reflect directory reorganization.
|
||||||
|
|
||||||
|
1999-03-23 Jesse Thilo <[email protected]>
|
||||||
|
|
||||||
|
* po/.cvsignore: Added i18n support.
|
||||||
|
|
||||||
|
1999-03-15 Jesse Thilo <[email protected]>
|
||||||
|
|
||||||
|
* po/es.po, po/fr.po, po/nl.po, po/de.po:
|
||||||
|
Added PO files from Translation Project.
|
||||||
|
|
||||||
|
1999-02-05 Jesse Thilo <[email protected]>
|
||||||
|
|
||||||
|
* po/Makefile.in.in, po/POTFILES.in:
|
||||||
|
Add `po' directory skeleton.
|
||||||
@@ -0,0 +1,196 @@
|
|||||||
|
# Makefile for program source directory in GNU NLS utilities package.
|
||||||
|
# Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper <[email protected]>
|
||||||
|
#
|
||||||
|
# This file file be copied and used freely without restrictions. It can
|
||||||
|
# be used in projects which are not available under the GNU General Public License
|
||||||
|
# but which still want to provide support for the GNU gettext functionality.
|
||||||
|
# Please note that the actual code is *not* freely available.
|
||||||
|
|
||||||
|
PACKAGE = @PACKAGE@
|
||||||
|
VERSION = @VERSION@
|
||||||
|
|
||||||
|
# These two variables depend on the location of this directory.
|
||||||
|
subdir = po
|
||||||
|
top_builddir = ..
|
||||||
|
|
||||||
|
SHELL = /bin/sh
|
||||||
|
@SET_MAKE@
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = @top_srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
datadir = @datadir@
|
||||||
|
localedir = $(datadir)/locale
|
||||||
|
gettextsrcdir = $(datadir)/gettext/po
|
||||||
|
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||||
|
mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac`
|
||||||
|
|
||||||
|
CC = @CC@
|
||||||
|
GMSGFMT = @GMSGFMT@
|
||||||
|
MSGFMT = @MSGFMT@
|
||||||
|
XGETTEXT = @XGETTEXT@
|
||||||
|
MSGMERGE = msgmerge
|
||||||
|
|
||||||
|
DEFS = @DEFS@
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
|
||||||
|
INCLUDES = -I.. -I$(top_srcdir)/intl
|
||||||
|
|
||||||
|
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
|
||||||
|
|
||||||
|
POFILES = @POFILES@
|
||||||
|
GMOFILES = @GMOFILES@
|
||||||
|
DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
|
||||||
|
$(POFILES) $(GMOFILES)
|
||||||
|
|
||||||
|
POTFILES = \
|
||||||
|
|
||||||
|
CATALOGS = @CATALOGS@
|
||||||
|
|
||||||
|
.SUFFIXES:
|
||||||
|
.SUFFIXES: .c .o .po .pox .gmo .mo
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
$(COMPILE) $<
|
||||||
|
|
||||||
|
.po.pox:
|
||||||
|
$(MAKE) $(PACKAGE).pot
|
||||||
|
$(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
|
||||||
|
|
||||||
|
.po.mo:
|
||||||
|
$(MSGFMT) -o $@ $<
|
||||||
|
|
||||||
|
.po.gmo:
|
||||||
|
file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
|
||||||
|
&& rm -f $$file && $(GMSGFMT) --statistics -o $$file $<
|
||||||
|
|
||||||
|
|
||||||
|
all: all-@USE_NLS@
|
||||||
|
|
||||||
|
all-yes: $(CATALOGS)
|
||||||
|
all-no:
|
||||||
|
|
||||||
|
# Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot',
|
||||||
|
# otherwise packages like GCC can not be built if only parts of the source
|
||||||
|
# have been downloaded.
|
||||||
|
|
||||||
|
$(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in
|
||||||
|
$(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
|
||||||
|
--add-comments --keyword=_ --keyword=N_ \
|
||||||
|
--files-from=$(srcdir)/POTFILES.in \
|
||||||
|
&& test ! -f $(PACKAGE).po \
|
||||||
|
|| ( rm -f $(srcdir)/$(PACKAGE).pot \
|
||||||
|
&& mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot )
|
||||||
|
|
||||||
|
|
||||||
|
install: install-exec install-data
|
||||||
|
install-exec:
|
||||||
|
install-data: install-data-@USE_NLS@
|
||||||
|
if test "$(PACKAGE)" = "gettext"; then \
|
||||||
|
$(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
|
||||||
|
$(INSTALL_DATA) $(srcdir)/Makefile.in.in \
|
||||||
|
$(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
install-data-no: all
|
||||||
|
install-data-yes: all
|
||||||
|
$(mkinstalldirs) $(DESTDIR)$(datadir)
|
||||||
|
@catalogs='$(CATALOGS)'; \
|
||||||
|
for cat in $$catalogs; do \
|
||||||
|
cat=`basename $$cat`; \
|
||||||
|
lang=`echo $$cat | sed 's/\.gmo$$//'`; \
|
||||||
|
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
||||||
|
$(mkinstalldirs) $(DESTDIR)$$dir; \
|
||||||
|
if test -r $$cat; then \
|
||||||
|
$(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
|
||||||
|
echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \
|
||||||
|
else \
|
||||||
|
$(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
|
||||||
|
echo "installing $(srcdir)/$$cat as" \
|
||||||
|
"$(DESTDIR)$$dir/$(PACKAGE).mo"; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
|
||||||
|
# Define this as empty until I found a useful application.
|
||||||
|
installcheck:
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
catalogs='$(CATALOGS)'; \
|
||||||
|
for cat in $$catalogs; do \
|
||||||
|
cat=`basename $$cat`; \
|
||||||
|
lang=`echo $$cat | sed 's/\.gmo$$//'`; \
|
||||||
|
rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \
|
||||||
|
done
|
||||||
|
if test "$(PACKAGE)" = "gettext"; then \
|
||||||
|
rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
check: all
|
||||||
|
|
||||||
|
dvi info tags TAGS ID:
|
||||||
|
|
||||||
|
mostlyclean:
|
||||||
|
rm -f core core.* *.pox $(PACKAGE).po *.new.po
|
||||||
|
rm -fr *.o
|
||||||
|
|
||||||
|
clean: mostlyclean
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile Makefile.in POTFILES *.mo
|
||||||
|
|
||||||
|
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 $(GMOFILES)
|
||||||
|
|
||||||
|
distdir = $(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="$(DISTFILES)"; \
|
||||||
|
for file in $$dists; do \
|
||||||
|
if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
|
||||||
|
cp -p $$dir/$$file $(distdir); \
|
||||||
|
done
|
||||||
|
|
||||||
|
update-po: Makefile
|
||||||
|
$(MAKE) $(PACKAGE).pot
|
||||||
|
if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \
|
||||||
|
cd $(srcdir); \
|
||||||
|
catalogs='$(GMOFILES)'; \
|
||||||
|
for cat in $$catalogs; do \
|
||||||
|
cat=`basename $$cat`; \
|
||||||
|
lang=`echo $$cat | sed 's/\.gmo$$//'`; \
|
||||||
|
echo "$$lang:"; \
|
||||||
|
if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \
|
||||||
|
mv -f $$lang.new.po $$lang.po; \
|
||||||
|
else \
|
||||||
|
echo "msgmerge for $$cat failed!"; \
|
||||||
|
rm -f $$lang.new.po; \
|
||||||
|
fi; \
|
||||||
|
done
|
||||||
|
$(MAKE) update-gmo
|
||||||
|
|
||||||
|
update-gmo: Makefile $(GMOFILES)
|
||||||
|
@:
|
||||||
|
|
||||||
|
Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in
|
||||||
|
cd $(top_builddir) \
|
||||||
|
&& CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
|
||||||
|
$(SHELL) ./config.status
|
||||||
|
|
||||||
|
# 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:
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
src/LR0.c
|
||||||
|
src/complain.c
|
||||||
|
src/conflicts.c
|
||||||
|
src/files.c
|
||||||
|
src/getargs.c
|
||||||
|
src/lalr.c
|
||||||
|
src/lex.c
|
||||||
|
src/main.c
|
||||||
|
src/output.c
|
||||||
|
src/print.c
|
||||||
|
src/print_graph.c
|
||||||
|
src/reader.c
|
||||||
|
src/reduce.c
|
||||||
|
|
||||||
|
lib/error.c
|
||||||
|
lib/getopt.c
|
||||||
|
lib/obstack.c
|
||||||
|
lib/quotearg.c
|
||||||
|
lib/xmalloc.c
|
||||||
@@ -0,0 +1,875 @@
|
|||||||
|
# German translation for message of GNU bison.
|
||||||
|
# Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
# Ulrich Drepper <[email protected]>, 1996.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: bison 1.25\n"
|
||||||
|
"POT-Creation-Date: 2002-01-29 17:17+0100\n"
|
||||||
|
"PO-Revision-Date: 1996-10-10 17:54 MET DST\n"
|
||||||
|
"Last-Translator: Ulrich Drepper <[email protected]>\n"
|
||||||
|
"Language-Team: German <[email protected]>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||||
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
|
||||||
|
#: src/LR0.c:194
|
||||||
|
#, c-format
|
||||||
|
msgid "too many states (max %d)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/error.c:128 lib/error.c:156 src/complain.c:99
|
||||||
|
msgid "Unknown system error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/complain.c:150
|
||||||
|
msgid "warning: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/complain.c:238
|
||||||
|
#, fuzzy
|
||||||
|
msgid "fatal error: "
|
||||||
|
msgstr "fataler Fehler: %s\n"
|
||||||
|
|
||||||
|
#: src/conflicts.c:46
|
||||||
|
#, c-format
|
||||||
|
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||||
|
msgstr "Konflikt in Zustand %d zwischen Regel %d and Token %s wurde %s.\n"
|
||||||
|
|
||||||
|
#: src/conflicts.c:111 src/conflicts.c:133
|
||||||
|
msgid "reduce"
|
||||||
|
msgstr "durch Reduzierung gelöst"
|
||||||
|
|
||||||
|
#: src/conflicts.c:116 src/conflicts.c:128
|
||||||
|
msgid "shift"
|
||||||
|
msgstr "durch Schieben gelöst"
|
||||||
|
|
||||||
|
#: src/conflicts.c:138
|
||||||
|
msgid "an error"
|
||||||
|
msgstr "als Fehler betrachtet"
|
||||||
|
|
||||||
|
#: src/conflicts.c:291
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d shift/reduce conflict"
|
||||||
|
msgid_plural "%d shift/reduce conflicts"
|
||||||
|
msgstr[0] " %d Schiebe/Reduziere Konflikte"
|
||||||
|
|
||||||
|
#: src/conflicts.c:298
|
||||||
|
#, fuzzy
|
||||||
|
msgid "and"
|
||||||
|
msgstr " und"
|
||||||
|
|
||||||
|
#: src/conflicts.c:304
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d reduce/reduce conflict"
|
||||||
|
msgid_plural "%d reduce/reduce conflicts"
|
||||||
|
msgstr[0] " %d Reduziere/Reduziere Konflikte"
|
||||||
|
|
||||||
|
#: src/conflicts.c:329
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "State %d contains "
|
||||||
|
msgstr "Zustand %d enthält"
|
||||||
|
|
||||||
|
#. If invoked with `--yacc', use the output format specified by
|
||||||
|
#. POSIX.
|
||||||
|
#: src/conflicts.c:376
|
||||||
|
msgid "conflicts: "
|
||||||
|
msgstr "Konflikte: "
|
||||||
|
|
||||||
|
#: src/conflicts.c:378
|
||||||
|
#, c-format
|
||||||
|
msgid " %d shift/reduce"
|
||||||
|
msgstr " %d Schiebe/Reduziere"
|
||||||
|
|
||||||
|
#: src/conflicts.c:382
|
||||||
|
#, c-format
|
||||||
|
msgid " %d reduce/reduce"
|
||||||
|
msgstr " %d Reduziere/Reduziere"
|
||||||
|
|
||||||
|
#: src/conflicts.c:387 src/reduce.c:499
|
||||||
|
#, c-format
|
||||||
|
msgid "%s contains "
|
||||||
|
msgstr "%s enthält "
|
||||||
|
|
||||||
|
#: src/conflicts.c:394
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "expected %d shift/reduce conflict\n"
|
||||||
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
|
msgstr[0] " %d Schiebe/Reduziere Konflikte"
|
||||||
|
|
||||||
|
#: src/files.c:159
|
||||||
|
#, c-format
|
||||||
|
msgid "cannot open file `%s'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/files.c:178
|
||||||
|
msgid "cannot close file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:55
|
||||||
|
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:59
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s [OPTION]... FILE\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:63
|
||||||
|
msgid ""
|
||||||
|
"If a long option shows an argument as mandatory, then it is mandatory\n"
|
||||||
|
"for the equivalent short option also. Similarly for optional arguments.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:69
|
||||||
|
msgid ""
|
||||||
|
"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"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:76
|
||||||
|
msgid ""
|
||||||
|
"Parser:\n"
|
||||||
|
" -S, --skeleton=FILE specify the skeleton to use\n"
|
||||||
|
" -t, --debug instrument the parser for debugging\n"
|
||||||
|
" --locations enable locations computation\n"
|
||||||
|
" -p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n"
|
||||||
|
" -l, --no-lines don't generate `#line' directives\n"
|
||||||
|
" -n, --no-parser generate the tables only\n"
|
||||||
|
" -k, --token-table include a table of token names\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:88
|
||||||
|
msgid ""
|
||||||
|
"Output:\n"
|
||||||
|
" -d, --defines also produce a header file\n"
|
||||||
|
" -v, --verbose also produce an explanation of the automaton\n"
|
||||||
|
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||||
|
" -o, --output=FILE leave output to FILE\n"
|
||||||
|
" -g, --graph also produce a VCG description of the "
|
||||||
|
"automaton\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:98
|
||||||
|
msgid "Report bugs to <[email protected]>.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:112
|
||||||
|
#, c-format
|
||||||
|
msgid "bison (GNU Bison) %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:117
|
||||||
|
msgid ""
|
||||||
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:121
|
||||||
|
msgid ""
|
||||||
|
"This is free software; see the source for copying conditions. There is NO\n"
|
||||||
|
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:200 src/lex.c:599
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' is no longer supported"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:224
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s --help' for more information.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:233
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: no grammar file given\n"
|
||||||
|
msgstr "%s: keine Grammatik-Datei angegeben\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:237
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s: extra arguments ignored after `%s'\n"
|
||||||
|
msgstr "%s: zusätzliche Argumente nach »%s« werden ignoriert\n"
|
||||||
|
|
||||||
|
#: src/lalr.c:175
|
||||||
|
#, c-format
|
||||||
|
msgid "too many gotos (max %d)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/lex.c:77
|
||||||
|
msgid "unexpected `/' found and ignored"
|
||||||
|
msgstr "»/« wird hier nicht erwartet und wird deshalb ignoriert"
|
||||||
|
|
||||||
|
#: src/lex.c:106 src/reader.c:302
|
||||||
|
msgid "unterminated comment"
|
||||||
|
msgstr "unbeendeter Kommentar"
|
||||||
|
|
||||||
|
#: src/lex.c:138
|
||||||
|
#, fuzzy
|
||||||
|
msgid "unexpected end of file"
|
||||||
|
msgstr "Datei endet unerwartet"
|
||||||
|
|
||||||
|
# Oder soll man den Begriff "Escapezeichen" verwenden?
|
||||||
|
#: src/lex.c:157
|
||||||
|
msgid "unescaped newline in constant"
|
||||||
|
msgstr "nicht maskiertes Zeilenendezeichen in Konstante"
|
||||||
|
|
||||||
|
#: src/lex.c:196
|
||||||
|
#, c-format
|
||||||
|
msgid "octal value outside range 0...255: `\\%o'"
|
||||||
|
msgstr "oktaler Zahlenwert außerhalb des Bereichs 0...255: »\\%o«"
|
||||||
|
|
||||||
|
#: src/lex.c:221
|
||||||
|
#, c-format
|
||||||
|
msgid "hexadecimal value above 255: `\\x%x'"
|
||||||
|
msgstr "hexadezimaler Zahlenwert größer als 255: »\\x%x«"
|
||||||
|
|
||||||
|
#: src/lex.c:233
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||||
|
msgstr "unbekanntes Fluchtzeichen: »\\« gefolgt von »%s«"
|
||||||
|
|
||||||
|
#: src/lex.c:264
|
||||||
|
msgid "unterminated type name at end of file"
|
||||||
|
msgstr "unerwarteter Typname am Ende der Datei"
|
||||||
|
|
||||||
|
#: src/lex.c:267
|
||||||
|
msgid "unterminated type name"
|
||||||
|
msgstr "unerwarteter Typname"
|
||||||
|
|
||||||
|
#: src/lex.c:359
|
||||||
|
msgid "use \"...\" for multi-character literal tokens"
|
||||||
|
msgstr "für Literal mit mehreren Zeichen bitte \"...\" verwenden"
|
||||||
|
|
||||||
|
#: src/lex.c:571
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' supports no argument: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/lex.c:588
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "`%s' requires an argument"
|
||||||
|
msgstr "%s: die Option »%s« erfordert ein Argument\n"
|
||||||
|
|
||||||
|
#: src/output.c:804
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "maximum table size (%d) exceeded"
|
||||||
|
msgstr "maximale Tabellengröße (%s) überschritten"
|
||||||
|
|
||||||
|
#: src/print.c:44
|
||||||
|
#, c-format
|
||||||
|
msgid " type %d is %s\n"
|
||||||
|
msgstr " Typ %d ist %s\n"
|
||||||
|
|
||||||
|
#: src/print.c:106
|
||||||
|
#, c-format
|
||||||
|
msgid " (rule %d)"
|
||||||
|
msgstr " (Regel %d)"
|
||||||
|
|
||||||
|
#: src/print.c:127
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\tshift, and go to state %d\n"
|
||||||
|
msgstr " %-4s\tSchiebe und gehe zu Zustand %d über\n"
|
||||||
|
|
||||||
|
#: src/print.c:144
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\terror (nonassociative)\n"
|
||||||
|
msgstr " %-4s\tFehler (nicht assoziativ)\n"
|
||||||
|
|
||||||
|
#: src/print.c:168
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\tgo to state %d\n"
|
||||||
|
msgstr " %-4s\tgehe zu Zustand %d über\n"
|
||||||
|
|
||||||
|
#: src/print.c:192 src/print.c:228
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
" $default\treduce using rule %d (%s)\n"
|
||||||
|
"\n"
|
||||||
|
msgstr ""
|
||||||
|
" $default\treduziere mit Regel %d (%s)\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/print.c:224 src/print.c:301
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||||
|
msgstr " %-4s\t[reduziere mit Regel %d (%s)]\n"
|
||||||
|
|
||||||
|
#: src/print.c:282 src/print.c:295
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||||
|
msgstr " %-4s\treduziere mit Tegel %d (%s)\n"
|
||||||
|
|
||||||
|
#: src/print.c:311
|
||||||
|
#, c-format
|
||||||
|
msgid " $default\treduce using rule %d (%s)\n"
|
||||||
|
msgstr " $default\treduziere mit Regel %d (%s)\n"
|
||||||
|
|
||||||
|
#: src/print.c:327
|
||||||
|
msgid " $default\taccept\n"
|
||||||
|
msgstr " $default\takzeptiere\n"
|
||||||
|
|
||||||
|
#: src/print.c:329
|
||||||
|
msgid " NO ACTIONS\n"
|
||||||
|
msgstr " KEINE AKTIONEN\n"
|
||||||
|
|
||||||
|
#: src/print.c:342
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "state %d"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"Zustand %d\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#. rule # : LHS -> RHS
|
||||||
|
#: src/print.c:373
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Grammar"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Grammatik\n"
|
||||||
|
|
||||||
|
#: src/print.c:374
|
||||||
|
msgid "Number, Line, Rule"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/print.c:379
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " %3d %3d %s ->"
|
||||||
|
msgstr "Regel %-4d %s ->"
|
||||||
|
|
||||||
|
#: src/print.c:386
|
||||||
|
msgid "empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||||
|
#: src/print.c:393
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Terminals, with rules where they appear"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Terminale und die Regeln un denen sie verwendet werden\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/print.c:416
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Nonterminals, with rules where they appear"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Nicht-Terminal und die Regeln in denen sie verwendet werden\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/print.c:442
|
||||||
|
msgid " on left:"
|
||||||
|
msgstr " auf der linken Seite:"
|
||||||
|
|
||||||
|
#: src/print.c:457
|
||||||
|
msgid " on right:"
|
||||||
|
msgstr " auf der rechten Seite:"
|
||||||
|
|
||||||
|
#: src/reader.c:100
|
||||||
|
msgid " Skipping to next \\n"
|
||||||
|
msgstr " Überspringe Zeichen bis zum nächsten \\n"
|
||||||
|
|
||||||
|
#: src/reader.c:102
|
||||||
|
#, c-format
|
||||||
|
msgid " Skipping to next %c"
|
||||||
|
msgstr " Überspringe Zeichen bis zum nächten %c"
|
||||||
|
|
||||||
|
#: src/reader.c:153 src/reader.c:165
|
||||||
|
msgid "invalid $ value"
|
||||||
|
msgstr "unzulässiger $ Wert"
|
||||||
|
|
||||||
|
#: src/reader.c:192 src/reader.c:207
|
||||||
|
msgid "unterminated string at end of file"
|
||||||
|
msgstr "unbeendete Zeichenkette am Ende der Datei"
|
||||||
|
|
||||||
|
#: src/reader.c:195
|
||||||
|
msgid "unterminated string"
|
||||||
|
msgstr "unbeendete Zeichenkette"
|
||||||
|
|
||||||
|
#: src/reader.c:337 src/reader.c:401
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "invalid value: %s%d"
|
||||||
|
msgstr "unzulässiger $ Wert"
|
||||||
|
|
||||||
|
#: src/reader.c:351 src/reader.c:423
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s is invalid"
|
||||||
|
msgstr "@%s ist unzulässig"
|
||||||
|
|
||||||
|
#: src/reader.c:391
|
||||||
|
#, c-format
|
||||||
|
msgid "$$ of `%s' has no declared type"
|
||||||
|
msgstr "$$ von »%s« hat keine deklarierten Wert"
|
||||||
|
|
||||||
|
#: src/reader.c:415
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "$%d of `%s' has no declared type"
|
||||||
|
msgstr "»%s« von »%s« hat keine deklarierten Wert"
|
||||||
|
|
||||||
|
#: src/reader.c:473
|
||||||
|
msgid "unterminated `%{' definition"
|
||||||
|
msgstr "unbeendete »%{« Definition"
|
||||||
|
|
||||||
|
#: src/reader.c:518 src/reader.c:636 src/reader.c:686 src/reader.c:933
|
||||||
|
#, c-format
|
||||||
|
msgid "Premature EOF after %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/reader.c:535
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol `%s' used more than once as a literal string"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/reader.c:538
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol `%s' given more than one literal string"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/reader.c:559 src/reader.c:705
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol %s redefined"
|
||||||
|
msgstr "Symbol %s noch einmal definiert"
|
||||||
|
|
||||||
|
#: src/reader.c:569 src/reader.c:651 src/reader.c:712
|
||||||
|
#, c-format
|
||||||
|
msgid "type redeclaration for %s"
|
||||||
|
msgstr "erneute Deklaration des Typs für %s"
|
||||||
|
|
||||||
|
#: src/reader.c:581
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' is invalid in %s"
|
||||||
|
msgstr "»%s« ist in %s nicht erlaubt"
|
||||||
|
|
||||||
|
#: src/reader.c:599 src/reader.c:758
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "multiple %s declarations"
|
||||||
|
msgstr "mehr als eine %start Deklaration"
|
||||||
|
|
||||||
|
#: src/reader.c:601 src/reader.c:913 src/reader.c:928 src/reader.c:961
|
||||||
|
#: src/reader.c:975 src/reader.c:1178
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "invalid %s declaration"
|
||||||
|
msgstr "ungültige %start Deklaration"
|
||||||
|
|
||||||
|
#: src/reader.c:621
|
||||||
|
msgid "%type declaration has no <typename>"
|
||||||
|
msgstr "%type Deklaration hat keinen <Typ-Namen>"
|
||||||
|
|
||||||
|
#: src/reader.c:656
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "invalid %%type declaration due to item: %s"
|
||||||
|
msgstr "ungültige %%type Deklaration wegen »%s«"
|
||||||
|
|
||||||
|
#: src/reader.c:701
|
||||||
|
#, c-format
|
||||||
|
msgid "redefining precedence of %s"
|
||||||
|
msgstr "Stellenwertigkeit von %s wird erneut definiert"
|
||||||
|
|
||||||
|
#: src/reader.c:724
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid text (%s) - number should be after identifier"
|
||||||
|
msgstr "unzulässiger Text (%s) - Nummer sollte nach Bezeichner kommen"
|
||||||
|
|
||||||
|
#: src/reader.c:734
|
||||||
|
#, c-format
|
||||||
|
msgid "unexpected item: %s"
|
||||||
|
msgstr "unerwartetes Symbol: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:790 src/reader.c:1149
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "unmatched %s"
|
||||||
|
msgstr "»{« hat kein Gegenstück"
|
||||||
|
|
||||||
|
#: src/reader.c:819
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "argument of %%expect is not an integer"
|
||||||
|
msgstr "Argument von %expect ist keine ganze Zahl"
|
||||||
|
|
||||||
|
#: src/reader.c:865
|
||||||
|
#, c-format
|
||||||
|
msgid "unrecognized item %s, expected an identifier"
|
||||||
|
msgstr "unerwartetes Symbol %s, hier wird ein Bezeichner erwartet"
|
||||||
|
|
||||||
|
#: src/reader.c:887
|
||||||
|
#, c-format
|
||||||
|
msgid "expected string constant instead of %s"
|
||||||
|
msgstr "hier wird eine Zeichenkette erwartet, nicht %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1080
|
||||||
|
#, c-format
|
||||||
|
msgid "unrecognized: %s"
|
||||||
|
msgstr "unbekannt: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1085
|
||||||
|
msgid "no input grammar"
|
||||||
|
msgstr "keine Eingabe-Grammatik"
|
||||||
|
|
||||||
|
#: src/reader.c:1090
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown character: %s"
|
||||||
|
msgstr "unbekanntes Zeichen: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1265
|
||||||
|
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||||
|
msgstr ""
|
||||||
|
"falsch geformte Regel: führendes Symbol wird nicht von einem Semikolon "
|
||||||
|
"gefolgt"
|
||||||
|
|
||||||
|
#: src/reader.c:1272
|
||||||
|
msgid "grammar starts with vertical bar"
|
||||||
|
msgstr "Grammatik fängt mit einem vertikalen Strich (»|«) an"
|
||||||
|
|
||||||
|
#: src/reader.c:1300
|
||||||
|
#, c-format
|
||||||
|
msgid "rule given for %s, which is a token"
|
||||||
|
msgstr "Regel für %s vorhanden, welches aber ein Token ist"
|
||||||
|
|
||||||
|
#: src/reader.c:1405
|
||||||
|
msgid "two @prec's in a row"
|
||||||
|
msgstr "zwei @prec Anweisungen nacheinander"
|
||||||
|
|
||||||
|
#: src/reader.c:1414
|
||||||
|
#, c-format
|
||||||
|
msgid "%%guard present but %%semantic_parser not specified"
|
||||||
|
msgstr ""
|
||||||
|
"%%guard Anweisung vorhanden, jedoch wird %%semantic_parser nicht angegeben"
|
||||||
|
|
||||||
|
#: src/reader.c:1424
|
||||||
|
msgid "two actions at end of one rule"
|
||||||
|
msgstr "Zwei Aktionen am Ende einer Regel"
|
||||||
|
|
||||||
|
#: src/reader.c:1438
|
||||||
|
#, c-format
|
||||||
|
msgid "type clash (`%s' `%s') on default action"
|
||||||
|
msgstr "Typkonflikt (»%s« »%s«) bei Default Aktion"
|
||||||
|
|
||||||
|
#: src/reader.c:1444
|
||||||
|
msgid "empty rule for typed nonterminal, and no action"
|
||||||
|
msgstr "leere Regel für Nicht-Terminal vmit Typ und keine Aktion"
|
||||||
|
|
||||||
|
#: src/reader.c:1450
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid input: %s"
|
||||||
|
msgstr "ungültige Eingabe: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1457
|
||||||
|
msgid "no rules in the input grammar"
|
||||||
|
msgstr "Eingabegrammatik enthält keine Regeln"
|
||||||
|
|
||||||
|
#: src/reader.c:1465
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||||
|
msgstr ""
|
||||||
|
"Symbol %s wird benutzt, ist aber nicht als Token definiert und hat keine "
|
||||||
|
"Regel"
|
||||||
|
|
||||||
|
#: src/reader.c:1487
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||||
|
msgstr "zu viele Symbols (Token plus Nicht-Terminal); Maximum %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1551
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "tokens %s and %s both assigned number %d"
|
||||||
|
msgstr "Token %s und %s haben die selbe nummer %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1601
|
||||||
|
#, c-format
|
||||||
|
msgid "conflicting precedences for %s and %s"
|
||||||
|
msgstr "Vorrangwertigkeiten für %s und %s widersprechen sich"
|
||||||
|
|
||||||
|
#: src/reader.c:1613
|
||||||
|
#, c-format
|
||||||
|
msgid "conflicting assoc values for %s and %s"
|
||||||
|
msgstr "assoc Werte für %s nd %s widersprechen sich"
|
||||||
|
|
||||||
|
#: src/reader.c:1650
|
||||||
|
#, c-format
|
||||||
|
msgid "the start symbol %s is undefined"
|
||||||
|
msgstr "das Startsymbol %s ist undefiniert"
|
||||||
|
|
||||||
|
#: src/reader.c:1652
|
||||||
|
#, c-format
|
||||||
|
msgid "the start symbol %s is a token"
|
||||||
|
msgstr "das Startsymbol %s ist ein Token"
|
||||||
|
|
||||||
|
#: src/reader.c:1672
|
||||||
|
#, c-format
|
||||||
|
msgid "too many items (max %d)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/reduce.c:398
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Useless nonterminals:"
|
||||||
|
msgstr ""
|
||||||
|
"Nutzlose Nicht-Terminale:\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:411
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Terminals which are not used:"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"Nicht genutzte Terminale:\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:422
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Useless rules:"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"Ungenutzte Regeln:\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:494
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d rule never reduced\n"
|
||||||
|
msgid_plural "%d rules never reduced\n"
|
||||||
|
msgstr[0] "%d wurde niemals reduziert\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:502
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d useless nonterminal"
|
||||||
|
msgid_plural "%d useless nonterminals"
|
||||||
|
msgstr[0] "%d ungenutzte Nicht-Terminal"
|
||||||
|
|
||||||
|
#: src/reduce.c:508
|
||||||
|
msgid " and "
|
||||||
|
msgstr " und "
|
||||||
|
|
||||||
|
#: src/reduce.c:511
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d useless rule"
|
||||||
|
msgid_plural "%d useless rules"
|
||||||
|
msgstr[0] "%d ungenutzte Regel"
|
||||||
|
|
||||||
|
#: src/reduce.c:542
|
||||||
|
#, c-format
|
||||||
|
msgid "Start symbol %s does not derive any sentence"
|
||||||
|
msgstr "es lassen sich keine Sätze vom Startsymbol %s ableiten"
|
||||||
|
|
||||||
|
#: lib/getopt.c:694
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%s' is ambiguous\n"
|
||||||
|
msgstr "%s: die Option »%s« ist nicht eindeutig\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:719
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `--%s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: die Option »--%s« erlaubt kein Argument\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:724
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%c%s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: die Option »%c%s« erlaubt kein Argument\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:742 lib/getopt.c:915
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%s' requires an argument\n"
|
||||||
|
msgstr "%s: die Option »%s« erfordert ein Argument\n"
|
||||||
|
|
||||||
|
#. --option
|
||||||
|
#: lib/getopt.c:771
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: unrecognized option `--%s'\n"
|
||||||
|
msgstr "%s: unbekannte Option »--%s«\n"
|
||||||
|
|
||||||
|
#. +option or -option
|
||||||
|
#: lib/getopt.c:775
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: unrecognized option `%c%s'\n"
|
||||||
|
msgstr "%s: unbekannte Option »%c%s«\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
|
#: lib/getopt.c:801
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: illegal option -- %c\n"
|
||||||
|
msgstr "%s: die Option ist nicht erlaubt -- %c\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:804
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: invalid option -- %c\n"
|
||||||
|
msgstr "%s: ungültige Option -- %c\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
|
#: lib/getopt.c:834 lib/getopt.c:964
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option requires an argument -- %c\n"
|
||||||
|
msgstr "%s: die Option benötigt ein Argument -- %c\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:881
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s: option `-W %s' is ambiguous\n"
|
||||||
|
msgstr "%s: die Option »%s« ist nicht eindeutig\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:899
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: die Option »--%s« erlaubt kein Argument\n"
|
||||||
|
|
||||||
|
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
|
||||||
|
#. before exiting when memory is exhausted. Goes through gettext.
|
||||||
|
#: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
|
||||||
|
#, fuzzy
|
||||||
|
msgid "memory exhausted"
|
||||||
|
msgstr "%s: Hauptspeicher erschöpft\n"
|
||||||
|
|
||||||
|
#. Get translations for open and closing quotation marks.
|
||||||
|
#.
|
||||||
|
#. The message catalog should translate "`" to a left
|
||||||
|
#. quotation mark suitable for the locale, and similarly for
|
||||||
|
#. "'". If the catalog has no translation,
|
||||||
|
#. locale_quoting_style quotes `like this', and
|
||||||
|
#. clocale_quoting_style quotes "like this".
|
||||||
|
#.
|
||||||
|
#. For example, an American English Unicode locale should
|
||||||
|
#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
|
||||||
|
#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
|
||||||
|
#. MARK). A British English Unicode locale should instead
|
||||||
|
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
|
||||||
|
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
|
||||||
|
#: lib/quotearg.c:274
|
||||||
|
msgid "`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/quotearg.c:275
|
||||||
|
msgid "'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid "%-4s\terror (nonassociative)"
|
||||||
|
#~ msgstr " %-4s\tFehler (nicht assoziativ)\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid "$default\treduce using rule %d (%s)"
|
||||||
|
#~ msgstr " $default\treduziere mit Regel %d (%s)\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid "unterminated %guard clause"
|
||||||
|
#~ msgstr "unbeendeter %%guard Fall"
|
||||||
|
|
||||||
|
#~ msgid " $ \tgo to state %d\n"
|
||||||
|
#~ msgstr " $ \tgehe zu Zustand %d über\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid "%s: internal error: %s\n"
|
||||||
|
#~ msgstr "interner Fehler, %s\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Variables\n"
|
||||||
|
#~ "---------\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Variablen\n"
|
||||||
|
#~ "---------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid "Value Sprec Sassoc Tag\n"
|
||||||
|
#~ msgstr "Wert Sprec Sassoc Tag\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Rules\n"
|
||||||
|
#~ "-----\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Regeln\n"
|
||||||
|
#~ "------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Rules interpreted\n"
|
||||||
|
#~ "-----------------\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "interpretierete Regeln\n"
|
||||||
|
#~ "----------------------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid " 1 shift/reduce conflict"
|
||||||
|
#~ msgstr " 1 Schiebe/Reduziere Konflikt"
|
||||||
|
|
||||||
|
#~ msgid " 1 reduce/reduce conflict"
|
||||||
|
#~ msgstr " 1 Reduziere/Reduziere Konflikt"
|
||||||
|
|
||||||
|
#~ msgid "%s contains"
|
||||||
|
#~ msgstr "%s enthält"
|
||||||
|
|
||||||
|
#~ msgid "%s derives"
|
||||||
|
#~ msgstr "%s leitet ab"
|
||||||
|
|
||||||
|
#~ msgid "Entering set_nullable"
|
||||||
|
#~ msgstr "Führe »set_nullable« aus"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Reduzierung von %s definiert %d Terminal, %d Nicht-Terminal und %d "
|
||||||
|
#~ "Produktionen.\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||||
|
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||||
|
#~ " [--verbose] [--version] [--help] [--yacc]\n"
|
||||||
|
#~ " [--no-parser] [--token-table]\n"
|
||||||
|
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
|
||||||
|
#~ " [--output=outfile] grammar-file\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Benutzung: %s [-dhklntvyV] [-b Datei-Präfix] [-o Ausgabe-Datei]\n"
|
||||||
|
#~ " [-p Namen-Präfix] [--debug] [--defines] [--fixed-output-"
|
||||||
|
#~ "files]\n"
|
||||||
|
#~ " [--no-lines] [--verbose] [--version] [--help] [--yacc]\n"
|
||||||
|
#~ " [--no-parser] [--token-table]\n"
|
||||||
|
#~ " [--file-prefix=Präfix] [--name-prefix=Präfix]\n"
|
||||||
|
#~ " [--output=Ausgabe-Datei] Grammatik-Datei\n"
|
||||||
|
|
||||||
|
#~ msgid "gotos"
|
||||||
|
#~ msgstr "»goto« Anweisungen"
|
||||||
|
|
||||||
|
#~ msgid "\"%s\", line %d: %s\n"
|
||||||
|
#~ msgstr "»%s«, Zeile %d: %s\n"
|
||||||
|
|
||||||
|
#~ msgid "error: %s\n"
|
||||||
|
#~ msgstr "Fehler: %s\n"
|
||||||
|
|
||||||
|
#~ msgid "(\"%s\", line %d) error: %s\n"
|
||||||
|
#~ msgstr "(»%s«, Zeile %d) Fehler: %s\n"
|
||||||
|
|
||||||
|
#~ msgid "limit of %d exceeded, too many %s"
|
||||||
|
#~ msgstr "Grenze von %d erreicht, zu viele %s"
|
||||||
|
|
||||||
|
#~ msgid "\t\t/* empty */"
|
||||||
|
#~ msgstr "\t\t/* leer */"
|
||||||
|
|
||||||
|
#~ msgid "unterminated comment in `%{' definition"
|
||||||
|
#~ msgstr "unbeendeter Kommentar in »%{« Definition"
|
||||||
|
|
||||||
|
#~ msgid "multiple %union declarations"
|
||||||
|
#~ msgstr "erneute %union Definition"
|
||||||
|
|
||||||
|
#~ msgid "unterminated comment at end of file"
|
||||||
|
#~ msgstr "unbeendeter Kommentar am Dateiende"
|
||||||
|
|
||||||
|
#~ msgid "unmatched close-brace (`}')"
|
||||||
|
#~ msgstr "schließende geschweifte Klammer (»}«) hat kein Gegenstück"
|
||||||
|
|
||||||
|
#~ msgid "unmatched right brace (`}')"
|
||||||
|
#~ msgstr "schließende geschweifte Klammer (»}«) hat kein Gegenstück"
|
||||||
|
|
||||||
|
#~ msgid "$%s is invalid"
|
||||||
|
#~ msgstr "$%s ist unzulässig"
|
||||||
|
|
||||||
|
#~ msgid "invalid @-construct"
|
||||||
|
#~ msgstr "unzulässig @-Konstruktion"
|
||||||
|
|
||||||
|
#~ msgid "ill-formed %type declaration"
|
||||||
|
#~ msgstr "falsch geformte %type Deklaration"
|
||||||
@@ -0,0 +1,815 @@
|
|||||||
|
# Estonian translations for bison.
|
||||||
|
# Copyright (C) 2001 Free Software Foundation, Inc.
|
||||||
|
# Toomas Soome <[email protected]>, 2001.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: bison 1.28d\n"
|
||||||
|
"POT-Creation-Date: 2002-01-29 17:17+0100\n"
|
||||||
|
"PO-Revision-Date: 2001-08-29 17:06+02:00\n"
|
||||||
|
"Last-Translator: Toomas Soome <[email protected]>\n"
|
||||||
|
"Language-Team: Estonian <[email protected]>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=ISO-8859-15\n"
|
||||||
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
|
||||||
|
#: src/LR0.c:194
|
||||||
|
#, c-format
|
||||||
|
msgid "too many states (max %d)"
|
||||||
|
msgstr "liiga palju olekuid (maks %d)"
|
||||||
|
|
||||||
|
#: lib/error.c:128 lib/error.c:156 src/complain.c:99
|
||||||
|
msgid "Unknown system error"
|
||||||
|
msgstr "Tundmatu süsteemi viga"
|
||||||
|
|
||||||
|
#: src/complain.c:150
|
||||||
|
msgid "warning: "
|
||||||
|
msgstr "hoiatus: "
|
||||||
|
|
||||||
|
#: src/complain.c:238
|
||||||
|
msgid "fatal error: "
|
||||||
|
msgstr "fataalne viga: "
|
||||||
|
|
||||||
|
#: src/conflicts.c:46
|
||||||
|
#, c-format
|
||||||
|
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||||
|
msgstr "Konflikt olekus %d reegli %d ja märgi %s vahel lahendatud, kui %s.\n"
|
||||||
|
|
||||||
|
#: src/conflicts.c:111 src/conflicts.c:133
|
||||||
|
msgid "reduce"
|
||||||
|
msgstr "redutseerimine"
|
||||||
|
|
||||||
|
#: src/conflicts.c:116 src/conflicts.c:128
|
||||||
|
msgid "shift"
|
||||||
|
msgstr "nihutamine"
|
||||||
|
|
||||||
|
#: src/conflicts.c:138
|
||||||
|
msgid "an error"
|
||||||
|
msgstr "viga"
|
||||||
|
|
||||||
|
#: src/conflicts.c:291
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d shift/reduce conflict"
|
||||||
|
msgid_plural "%d shift/reduce conflicts"
|
||||||
|
msgstr[0] " %d nihutamine/redutseerimine konflikti"
|
||||||
|
|
||||||
|
#: src/conflicts.c:298
|
||||||
|
#, fuzzy
|
||||||
|
msgid "and"
|
||||||
|
msgstr " ja"
|
||||||
|
|
||||||
|
#: src/conflicts.c:304
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d reduce/reduce conflict"
|
||||||
|
msgid_plural "%d reduce/reduce conflicts"
|
||||||
|
msgstr[0] " %d redutseerimine/redutseerimine konflikti"
|
||||||
|
|
||||||
|
#: src/conflicts.c:329
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "State %d contains "
|
||||||
|
msgstr "Olek %d sisaldab"
|
||||||
|
|
||||||
|
#. If invoked with `--yacc', use the output format specified by
|
||||||
|
#. POSIX.
|
||||||
|
#: src/conflicts.c:376
|
||||||
|
msgid "conflicts: "
|
||||||
|
msgstr "konfliktid: "
|
||||||
|
|
||||||
|
#: src/conflicts.c:378
|
||||||
|
#, c-format
|
||||||
|
msgid " %d shift/reduce"
|
||||||
|
msgstr " %d nihutamine/redutseerimine"
|
||||||
|
|
||||||
|
#: src/conflicts.c:382
|
||||||
|
#, c-format
|
||||||
|
msgid " %d reduce/reduce"
|
||||||
|
msgstr " %d redutseerimine/redutseerimine"
|
||||||
|
|
||||||
|
#: src/conflicts.c:387 src/reduce.c:499
|
||||||
|
#, c-format
|
||||||
|
msgid "%s contains "
|
||||||
|
msgstr "%s sisaldab "
|
||||||
|
|
||||||
|
#: src/conflicts.c:394
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "expected %d shift/reduce conflict\n"
|
||||||
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
|
msgstr[0] " %d nihutamine/redutseerimine konflikti"
|
||||||
|
|
||||||
|
#: src/files.c:159
|
||||||
|
#, c-format
|
||||||
|
msgid "cannot open file `%s'"
|
||||||
|
msgstr "faili `%s' ei saa avada"
|
||||||
|
|
||||||
|
#: src/files.c:178
|
||||||
|
msgid "cannot close file"
|
||||||
|
msgstr "faili ei õnnestu sulgeda"
|
||||||
|
|
||||||
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:55
|
||||||
|
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
|
||||||
|
msgstr "GNU bison genereerib parsereid LALR(1) grammatikatele.\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:59
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s [OPTION]... FILE\n"
|
||||||
|
msgstr "Kasuta: %s [VÕTI]...FAIL\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:63
|
||||||
|
msgid ""
|
||||||
|
"If a long option shows an argument as mandatory, then it is mandatory\n"
|
||||||
|
"for the equivalent short option also. Similarly for optional arguments.\n"
|
||||||
|
msgstr ""
|
||||||
|
"Kui pikk võti näitab, et argument on kohustuslik, siis on see kohustuslik \n"
|
||||||
|
"ka lühikese võtme korral. Sama ka vabalt valitavate võtmete korral.\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:69
|
||||||
|
msgid ""
|
||||||
|
"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"
|
||||||
|
msgstr ""
|
||||||
|
"Töömoodid:\n"
|
||||||
|
" -h, --help esita see abiinfo ja lõpeta töö\n"
|
||||||
|
" -V, --version esita versiooniinfo ja lõpeta töö\n"
|
||||||
|
" -y, --yacc emuleeri POSIX yacc\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:76
|
||||||
|
msgid ""
|
||||||
|
"Parser:\n"
|
||||||
|
" -S, --skeleton=FILE specify the skeleton to use\n"
|
||||||
|
" -t, --debug instrument the parser for debugging\n"
|
||||||
|
" --locations enable locations computation\n"
|
||||||
|
" -p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n"
|
||||||
|
" -l, --no-lines don't generate `#line' directives\n"
|
||||||
|
" -n, --no-parser generate the tables only\n"
|
||||||
|
" -k, --token-table include a table of token names\n"
|
||||||
|
msgstr ""
|
||||||
|
"Parser:\n"
|
||||||
|
" -S, --skeleton=FAIL kasutatava skeleti kirjeldus\n"
|
||||||
|
" -t, --debug varusta parser silumisinfoga\n"
|
||||||
|
" --locations luba asukohtade arvestamine\n"
|
||||||
|
" -p, --name-prefix=PREFIKS lisa välissümbolite nimedele PREFIKS\n"
|
||||||
|
" -l, --no-lines ära genereeri `#line' direktiive\n"
|
||||||
|
" -n, --no-parser genereeri ainult tabelid\n"
|
||||||
|
" -k, --token-table lisa ka sümbolite nimede tabel\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:88
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
"Output:\n"
|
||||||
|
" -d, --defines also produce a header file\n"
|
||||||
|
" -v, --verbose also produce an explanation of the automaton\n"
|
||||||
|
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||||
|
" -o, --output=FILE leave output to FILE\n"
|
||||||
|
" -g, --graph also produce a VCG description of the "
|
||||||
|
"automaton\n"
|
||||||
|
msgstr ""
|
||||||
|
"Väljund:\n"
|
||||||
|
" -d, --defines loo ka päisfail\n"
|
||||||
|
" -v, --verbose väljasta automaadi kohta selgitusi\n"
|
||||||
|
" -b, --file-prefix=PREFIKS kasuta väljundfailide nimedes PREFIKSit\n"
|
||||||
|
" -o, --output-file=FAIL jäta väljund FAILi\n"
|
||||||
|
" -g, --graph loo automaadi kirjeldus VCG graafina\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:98
|
||||||
|
msgid "Report bugs to <[email protected]>.\n"
|
||||||
|
msgstr "Teatage palun vigadest aadressil <[email protected]>.\n"
|
||||||
|
|
||||||
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:112
|
||||||
|
#, c-format
|
||||||
|
msgid "bison (GNU Bison) %s"
|
||||||
|
msgstr "bison (GNU Bison) %s"
|
||||||
|
|
||||||
|
#: src/getargs.c:117
|
||||||
|
msgid ""
|
||||||
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
|
msgstr ""
|
||||||
|
"Autoriõigus 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, "
|
||||||
|
"Inc.\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:121
|
||||||
|
msgid ""
|
||||||
|
"This is free software; see the source for copying conditions. There is NO\n"
|
||||||
|
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||||
|
msgstr ""
|
||||||
|
"See on vaba tarkvara; kopeerimistingimused leiate lähtetekstidest. Garantii\n"
|
||||||
|
"PUUDUB; ka müügiks või mingil eesmärgil kasutamiseks.\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:200 src/lex.c:599
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' is no longer supported"
|
||||||
|
msgstr "`%s' ei ole enam toetatud"
|
||||||
|
|
||||||
|
#: src/getargs.c:224
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s --help' for more information.\n"
|
||||||
|
msgstr "Lisainfo saamiseks proovige `%s --help'.\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:233
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: no grammar file given\n"
|
||||||
|
msgstr "%s: puudub grammatikafail\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:237
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: extra arguments ignored after `%s'\n"
|
||||||
|
msgstr "%s: ignoreerin lisaargumente peale `%s'\n"
|
||||||
|
|
||||||
|
#: src/lalr.c:175
|
||||||
|
#, c-format
|
||||||
|
msgid "too many gotos (max %d)"
|
||||||
|
msgstr "liiga palju gotosid (maks %d)"
|
||||||
|
|
||||||
|
#: src/lex.c:77
|
||||||
|
msgid "unexpected `/' found and ignored"
|
||||||
|
msgstr "leidsin ja ignoreerin ootamatu `/'"
|
||||||
|
|
||||||
|
#: src/lex.c:106 src/reader.c:302
|
||||||
|
msgid "unterminated comment"
|
||||||
|
msgstr "lõpetamata kommentaar"
|
||||||
|
|
||||||
|
#: src/lex.c:138
|
||||||
|
msgid "unexpected end of file"
|
||||||
|
msgstr "ootamatu faililõpp"
|
||||||
|
|
||||||
|
#: src/lex.c:157
|
||||||
|
msgid "unescaped newline in constant"
|
||||||
|
msgstr "paojadata reavahetus konstandis"
|
||||||
|
|
||||||
|
#: src/lex.c:196
|
||||||
|
#, c-format
|
||||||
|
msgid "octal value outside range 0...255: `\\%o'"
|
||||||
|
msgstr "kaheksandväärtus väljaspool piire 0...255: `\\%o'"
|
||||||
|
|
||||||
|
#: src/lex.c:221
|
||||||
|
#, c-format
|
||||||
|
msgid "hexadecimal value above 255: `\\x%x'"
|
||||||
|
msgstr "kuueteistkümnendväärtus suurem, kui above 255: `\\x%x'"
|
||||||
|
|
||||||
|
#: src/lex.c:233
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||||
|
msgstr "tundmatu paojada: `\\' järgneb `%s'"
|
||||||
|
|
||||||
|
#: src/lex.c:264
|
||||||
|
msgid "unterminated type name at end of file"
|
||||||
|
msgstr "lõpetamata tüübinimi faili lõpus"
|
||||||
|
|
||||||
|
#: src/lex.c:267
|
||||||
|
msgid "unterminated type name"
|
||||||
|
msgstr "lõpetamata tüübinimi"
|
||||||
|
|
||||||
|
#: src/lex.c:359
|
||||||
|
msgid "use \"...\" for multi-character literal tokens"
|
||||||
|
msgstr "kasuta mitmesümboliliste literaalidega \"...\" konstruktsiooni"
|
||||||
|
|
||||||
|
#: src/lex.c:571
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' supports no argument: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/lex.c:588
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "`%s' requires an argument"
|
||||||
|
msgstr "%s: võti `%s' nõuab argumenti\n"
|
||||||
|
|
||||||
|
#: src/output.c:804
|
||||||
|
#, c-format
|
||||||
|
msgid "maximum table size (%d) exceeded"
|
||||||
|
msgstr "ületati maksimaalset tabelisuurust (%d)"
|
||||||
|
|
||||||
|
#: src/print.c:44
|
||||||
|
#, c-format
|
||||||
|
msgid " type %d is %s\n"
|
||||||
|
msgstr " tüüp %d on %s\n"
|
||||||
|
|
||||||
|
#: src/print.c:106
|
||||||
|
#, c-format
|
||||||
|
msgid " (rule %d)"
|
||||||
|
msgstr " (reegel %d)"
|
||||||
|
|
||||||
|
#: src/print.c:127
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\tshift, and go to state %d\n"
|
||||||
|
msgstr " %-4s\tnihuta ja liigu olekule %d\n"
|
||||||
|
|
||||||
|
#: src/print.c:144
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\terror (nonassociative)\n"
|
||||||
|
msgstr " %-4s\tviga (mitteassotsiatiivne)\n"
|
||||||
|
|
||||||
|
#: src/print.c:168
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\tgo to state %d\n"
|
||||||
|
msgstr " %-4s\tliigu olekule %d\n"
|
||||||
|
|
||||||
|
#: src/print.c:192 src/print.c:228
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
" $default\treduce using rule %d (%s)\n"
|
||||||
|
"\n"
|
||||||
|
msgstr ""
|
||||||
|
" $default\tredutseerin kasutades reeglit %d (%s)\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/print.c:224 src/print.c:301
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||||
|
msgstr " %-4s\t[redutseerin, kasutades reeglit %d (%s)]\n"
|
||||||
|
|
||||||
|
#: src/print.c:282 src/print.c:295
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||||
|
msgstr " %-4s\tredutseerin kasutades reeglit %d (%s)\n"
|
||||||
|
|
||||||
|
#: src/print.c:311
|
||||||
|
#, c-format
|
||||||
|
msgid " $default\treduce using rule %d (%s)\n"
|
||||||
|
msgstr " $default\tredutseerin kasutades reeglit %d (%s)\n"
|
||||||
|
|
||||||
|
#: src/print.c:327
|
||||||
|
msgid " $default\taccept\n"
|
||||||
|
msgstr " $default\taktsepteerin\n"
|
||||||
|
|
||||||
|
#: src/print.c:329
|
||||||
|
msgid " NO ACTIONS\n"
|
||||||
|
msgstr " TEGEVUSI POLE\n"
|
||||||
|
|
||||||
|
#: src/print.c:342
|
||||||
|
#, c-format
|
||||||
|
msgid "state %d"
|
||||||
|
msgstr "olek %d"
|
||||||
|
|
||||||
|
#. rule # : LHS -> RHS
|
||||||
|
#: src/print.c:373
|
||||||
|
msgid "Grammar"
|
||||||
|
msgstr "Grammatika"
|
||||||
|
|
||||||
|
#: src/print.c:374
|
||||||
|
msgid "Number, Line, Rule"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/print.c:379
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " %3d %3d %s ->"
|
||||||
|
msgstr "reegel %-4d %s ->"
|
||||||
|
|
||||||
|
#: src/print.c:386
|
||||||
|
msgid "empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||||
|
#: src/print.c:393
|
||||||
|
msgid "Terminals, with rules where they appear"
|
||||||
|
msgstr "Terminalid, koos reeglitega, kus nad ilmuvad"
|
||||||
|
|
||||||
|
#: src/print.c:416
|
||||||
|
msgid "Nonterminals, with rules where they appear"
|
||||||
|
msgstr "Mitteterminalid, koos reeglitega, kus nad ilmuvad"
|
||||||
|
|
||||||
|
#: src/print.c:442
|
||||||
|
msgid " on left:"
|
||||||
|
msgstr " vasakul:"
|
||||||
|
|
||||||
|
#: src/print.c:457
|
||||||
|
msgid " on right:"
|
||||||
|
msgstr " paremal:"
|
||||||
|
|
||||||
|
#: src/reader.c:100
|
||||||
|
msgid " Skipping to next \\n"
|
||||||
|
msgstr " Liigun järgmisele \\n"
|
||||||
|
|
||||||
|
#: src/reader.c:102
|
||||||
|
#, c-format
|
||||||
|
msgid " Skipping to next %c"
|
||||||
|
msgstr " Liigun järgmisele %c"
|
||||||
|
|
||||||
|
#: src/reader.c:153 src/reader.c:165
|
||||||
|
msgid "invalid $ value"
|
||||||
|
msgstr "vigane $ väärtus"
|
||||||
|
|
||||||
|
#: src/reader.c:192 src/reader.c:207
|
||||||
|
msgid "unterminated string at end of file"
|
||||||
|
msgstr "lõpetamata sõne faili lõpus"
|
||||||
|
|
||||||
|
#: src/reader.c:195
|
||||||
|
msgid "unterminated string"
|
||||||
|
msgstr "lõpetamata sõne"
|
||||||
|
|
||||||
|
#: src/reader.c:337 src/reader.c:401
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "invalid value: %s%d"
|
||||||
|
msgstr "vigane $ väärtus"
|
||||||
|
|
||||||
|
#: src/reader.c:351 src/reader.c:423
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is invalid"
|
||||||
|
msgstr "%s on vigane"
|
||||||
|
|
||||||
|
#: src/reader.c:391
|
||||||
|
#, c-format
|
||||||
|
msgid "$$ of `%s' has no declared type"
|
||||||
|
msgstr "`%s' $$ ei oma deklareeritud tüüpi"
|
||||||
|
|
||||||
|
#: src/reader.c:415
|
||||||
|
#, c-format
|
||||||
|
msgid "$%d of `%s' has no declared type"
|
||||||
|
msgstr "$%d `%s' ei oma deklareeritud tüüpi"
|
||||||
|
|
||||||
|
#: src/reader.c:473
|
||||||
|
msgid "unterminated `%{' definition"
|
||||||
|
msgstr "lõpetamata `%{' definitsioon"
|
||||||
|
|
||||||
|
#: src/reader.c:518 src/reader.c:636 src/reader.c:686 src/reader.c:933
|
||||||
|
#, c-format
|
||||||
|
msgid "Premature EOF after %s"
|
||||||
|
msgstr "Enneaegne EOF peale %s"
|
||||||
|
|
||||||
|
#: src/reader.c:535
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol `%s' used more than once as a literal string"
|
||||||
|
msgstr "sümbolit `%s' on kasutatud enam kui kord literaal sõnena"
|
||||||
|
|
||||||
|
#: src/reader.c:538
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol `%s' given more than one literal string"
|
||||||
|
msgstr "sümbolile `%s' on antud enam kui üks literaal sõne"
|
||||||
|
|
||||||
|
#: src/reader.c:559 src/reader.c:705
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol %s redefined"
|
||||||
|
msgstr "sümbol %s on uuesti defineeritud"
|
||||||
|
|
||||||
|
#: src/reader.c:569 src/reader.c:651 src/reader.c:712
|
||||||
|
#, c-format
|
||||||
|
msgid "type redeclaration for %s"
|
||||||
|
msgstr "%s tüübi uuesti deklareerimine"
|
||||||
|
|
||||||
|
#: src/reader.c:581
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' is invalid in %s"
|
||||||
|
msgstr "`%s' ei ole %s sees lubatud"
|
||||||
|
|
||||||
|
#: src/reader.c:599 src/reader.c:758
|
||||||
|
#, c-format
|
||||||
|
msgid "multiple %s declarations"
|
||||||
|
msgstr "korduvad %s deklaratsioonid"
|
||||||
|
|
||||||
|
#: src/reader.c:601 src/reader.c:913 src/reader.c:928 src/reader.c:961
|
||||||
|
#: src/reader.c:975 src/reader.c:1178
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid %s declaration"
|
||||||
|
msgstr "vigane %s deklaratsioon"
|
||||||
|
|
||||||
|
#: src/reader.c:621
|
||||||
|
msgid "%type declaration has no <typename>"
|
||||||
|
msgstr "%type deklaratsioonis puudub <tüübinimi>"
|
||||||
|
|
||||||
|
#: src/reader.c:656
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid %%type declaration due to item: %s"
|
||||||
|
msgstr "vigane %%type deklaratsioon, element: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:701
|
||||||
|
#, c-format
|
||||||
|
msgid "redefining precedence of %s"
|
||||||
|
msgstr "%s prioriteedi uus definitsioon"
|
||||||
|
|
||||||
|
#: src/reader.c:724
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid text (%s) - number should be after identifier"
|
||||||
|
msgstr "vigane tekst (%s) - number peab olema peale identifikaatorit"
|
||||||
|
|
||||||
|
#: src/reader.c:734
|
||||||
|
#, c-format
|
||||||
|
msgid "unexpected item: %s"
|
||||||
|
msgstr "ootamatu element: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:790 src/reader.c:1149
|
||||||
|
#, c-format
|
||||||
|
msgid "unmatched %s"
|
||||||
|
msgstr "puudub %s"
|
||||||
|
|
||||||
|
#: src/reader.c:819
|
||||||
|
#, c-format
|
||||||
|
msgid "argument of %%expect is not an integer"
|
||||||
|
msgstr "%%expect argument ei ole täisarv"
|
||||||
|
|
||||||
|
#: src/reader.c:865
|
||||||
|
#, c-format
|
||||||
|
msgid "unrecognized item %s, expected an identifier"
|
||||||
|
msgstr "tundmatu element %s, eeldasin identifikaatorit"
|
||||||
|
|
||||||
|
#: src/reader.c:887
|
||||||
|
#, c-format
|
||||||
|
msgid "expected string constant instead of %s"
|
||||||
|
msgstr "eeldasin %s asemel sõnekonstanti"
|
||||||
|
|
||||||
|
#: src/reader.c:1080
|
||||||
|
#, c-format
|
||||||
|
msgid "unrecognized: %s"
|
||||||
|
msgstr "tundmatu: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1085
|
||||||
|
msgid "no input grammar"
|
||||||
|
msgstr "sisendgrammatikat pole"
|
||||||
|
|
||||||
|
#: src/reader.c:1090
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown character: %s"
|
||||||
|
msgstr "tundmatu sümbol: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1265
|
||||||
|
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||||
|
msgstr "vigaselt formeeritud reegel: algsümbolile ei järgne koolonit"
|
||||||
|
|
||||||
|
#: src/reader.c:1272
|
||||||
|
msgid "grammar starts with vertical bar"
|
||||||
|
msgstr "grammatika algab püstkriipsuga"
|
||||||
|
|
||||||
|
#: src/reader.c:1300
|
||||||
|
#, c-format
|
||||||
|
msgid "rule given for %s, which is a token"
|
||||||
|
msgstr "%s jaoks on antud reegel, aga see on märk"
|
||||||
|
|
||||||
|
#: src/reader.c:1405
|
||||||
|
msgid "two @prec's in a row"
|
||||||
|
msgstr "kaks @prec ühel real"
|
||||||
|
|
||||||
|
#: src/reader.c:1414
|
||||||
|
#, c-format
|
||||||
|
msgid "%%guard present but %%semantic_parser not specified"
|
||||||
|
msgstr "%%guard on määratud, aga %%semantic_parser ei ole"
|
||||||
|
|
||||||
|
#: src/reader.c:1424
|
||||||
|
msgid "two actions at end of one rule"
|
||||||
|
msgstr "kaks tegevust ühe reegli lõpus"
|
||||||
|
|
||||||
|
#: src/reader.c:1438
|
||||||
|
#, c-format
|
||||||
|
msgid "type clash (`%s' `%s') on default action"
|
||||||
|
msgstr "vaikimisi tegevuse tüübikonflikt (`%s' `%s')"
|
||||||
|
|
||||||
|
#: src/reader.c:1444
|
||||||
|
msgid "empty rule for typed nonterminal, and no action"
|
||||||
|
msgstr "tüübiga mitteterminalil on tühi reegel ja puudub tegevus"
|
||||||
|
|
||||||
|
#: src/reader.c:1450
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid input: %s"
|
||||||
|
msgstr "vigane sisend: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1457
|
||||||
|
msgid "no rules in the input grammar"
|
||||||
|
msgstr "sisendgrammatikas pole reegleid"
|
||||||
|
|
||||||
|
#: src/reader.c:1465
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||||
|
msgstr ""
|
||||||
|
"kasutatakse sümbolit %s, mis ei ole defineeritud märgina ja millel puuduvad "
|
||||||
|
"reeglid"
|
||||||
|
|
||||||
|
#: src/reader.c:1487
|
||||||
|
#, c-format
|
||||||
|
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||||
|
msgstr "liiga palju sümboleid (märgid ja mitteterminalid); maksimaalne on %d"
|
||||||
|
|
||||||
|
#: src/reader.c:1551
|
||||||
|
#, c-format
|
||||||
|
msgid "tokens %s and %s both assigned number %d"
|
||||||
|
msgstr "märkidele %s ja %s on mõlemale omistatud number %d"
|
||||||
|
|
||||||
|
#: src/reader.c:1601
|
||||||
|
#, c-format
|
||||||
|
msgid "conflicting precedences for %s and %s"
|
||||||
|
msgstr "%s ja %s omavad konfliktseid prioriteete"
|
||||||
|
|
||||||
|
#: src/reader.c:1613
|
||||||
|
#, c-format
|
||||||
|
msgid "conflicting assoc values for %s and %s"
|
||||||
|
msgstr "%s ja %s omavad konfliktseid assotsiatiivseid väärtuseid"
|
||||||
|
|
||||||
|
#: src/reader.c:1650
|
||||||
|
#, c-format
|
||||||
|
msgid "the start symbol %s is undefined"
|
||||||
|
msgstr "stardisümbol %s ei ole defineeritud"
|
||||||
|
|
||||||
|
#: src/reader.c:1652
|
||||||
|
#, c-format
|
||||||
|
msgid "the start symbol %s is a token"
|
||||||
|
msgstr "stardisümbol %s on märk"
|
||||||
|
|
||||||
|
#: src/reader.c:1672
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "too many items (max %d)"
|
||||||
|
msgstr "liiga palju olekuid (maks %d)"
|
||||||
|
|
||||||
|
#: src/reduce.c:398
|
||||||
|
msgid "Useless nonterminals:"
|
||||||
|
msgstr "Kasutamata mitteterminalid:"
|
||||||
|
|
||||||
|
#: src/reduce.c:411
|
||||||
|
msgid "Terminals which are not used:"
|
||||||
|
msgstr "Terminalid, mida ei kasutatud:"
|
||||||
|
|
||||||
|
#: src/reduce.c:422
|
||||||
|
msgid "Useless rules:"
|
||||||
|
msgstr "Kasutamata reeglid:"
|
||||||
|
|
||||||
|
#: src/reduce.c:494
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d rule never reduced\n"
|
||||||
|
msgid_plural "%d rules never reduced\n"
|
||||||
|
msgstr[0] "%d reeglit ei redutseeritud\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:502
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d useless nonterminal"
|
||||||
|
msgid_plural "%d useless nonterminals"
|
||||||
|
msgstr[0] "%d kasutamata mitteterminali%s"
|
||||||
|
|
||||||
|
#: src/reduce.c:508
|
||||||
|
msgid " and "
|
||||||
|
msgstr " ja "
|
||||||
|
|
||||||
|
#: src/reduce.c:511
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d useless rule"
|
||||||
|
msgid_plural "%d useless rules"
|
||||||
|
msgstr[0] "%d kasutamata reeglit%s"
|
||||||
|
|
||||||
|
#: src/reduce.c:542
|
||||||
|
#, c-format
|
||||||
|
msgid "Start symbol %s does not derive any sentence"
|
||||||
|
msgstr "Stardisümbolist %s ei tuletata ühtegi lauset"
|
||||||
|
|
||||||
|
#: lib/getopt.c:694
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%s' is ambiguous\n"
|
||||||
|
msgstr "%s: võti `%s' on segane\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:719
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `--%s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: võti `--%s' ei luba argumenti\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:724
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%c%s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: võti `%c%s' ei luba argumenti\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:742 lib/getopt.c:915
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%s' requires an argument\n"
|
||||||
|
msgstr "%s: võti `%s' nõuab argumenti\n"
|
||||||
|
|
||||||
|
#. --option
|
||||||
|
#: lib/getopt.c:771
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: unrecognized option `--%s'\n"
|
||||||
|
msgstr "%s: tundmatu võti `--%s'\n"
|
||||||
|
|
||||||
|
#. +option or -option
|
||||||
|
#: lib/getopt.c:775
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: unrecognized option `%c%s'\n"
|
||||||
|
msgstr "%s: tundmatu võti `%c%s'\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
|
#: lib/getopt.c:801
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: illegal option -- %c\n"
|
||||||
|
msgstr "%s: lubamatu võti -- %c\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:804
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: invalid option -- %c\n"
|
||||||
|
msgstr "%s: vigane võti -- %c\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
|
#: lib/getopt.c:834 lib/getopt.c:964
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option requires an argument -- %c\n"
|
||||||
|
msgstr "%s: võti nõuab argumenti -- %c\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:881
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `-W %s' is ambiguous\n"
|
||||||
|
msgstr "%s: võti `-W %s' on segane\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:899
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: võti `-W %s' ei luba argumenti\n"
|
||||||
|
|
||||||
|
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
|
||||||
|
#. before exiting when memory is exhausted. Goes through gettext.
|
||||||
|
#: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
|
||||||
|
msgid "memory exhausted"
|
||||||
|
msgstr "mälu on otsas"
|
||||||
|
|
||||||
|
#. Get translations for open and closing quotation marks.
|
||||||
|
#.
|
||||||
|
#. The message catalog should translate "`" to a left
|
||||||
|
#. quotation mark suitable for the locale, and similarly for
|
||||||
|
#. "'". If the catalog has no translation,
|
||||||
|
#. locale_quoting_style quotes `like this', and
|
||||||
|
#. clocale_quoting_style quotes "like this".
|
||||||
|
#.
|
||||||
|
#. For example, an American English Unicode locale should
|
||||||
|
#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
|
||||||
|
#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
|
||||||
|
#. MARK). A British English Unicode locale should instead
|
||||||
|
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
|
||||||
|
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
|
||||||
|
#: lib/quotearg.c:274
|
||||||
|
msgid "`"
|
||||||
|
msgstr "`"
|
||||||
|
|
||||||
|
#: lib/quotearg.c:275
|
||||||
|
msgid "'"
|
||||||
|
msgstr "'"
|
||||||
|
|
||||||
|
#~ msgid "%-4s\terror (nonassociative)"
|
||||||
|
#~ msgstr "%-4s\tviga (mitteassotsiatiivne)"
|
||||||
|
|
||||||
|
#~ msgid "$default\treduce using rule %d (%s)"
|
||||||
|
#~ msgstr "$default\tredutseerin kasutades reeglit %d (%s)"
|
||||||
|
|
||||||
|
#~ msgid "unterminated %guard clause"
|
||||||
|
#~ msgstr "lõpetamata %guard klausel"
|
||||||
|
|
||||||
|
#~ msgid " $ \tgo to state %d\n"
|
||||||
|
#~ msgstr " $ \tliigu olekule %d\n"
|
||||||
|
|
||||||
|
#~ msgid "%s: internal error: %s\n"
|
||||||
|
#~ msgstr "%s: sisemine viga: %s\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Variables\n"
|
||||||
|
#~ "---------\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Muutujad\n"
|
||||||
|
#~ "--------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid "Value Sprec Sassoc Tag\n"
|
||||||
|
#~ msgstr "Value Sprec Sassoc Tag\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Rules\n"
|
||||||
|
#~ "-----\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Reeglid\n"
|
||||||
|
#~ "-------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Rules interpreted\n"
|
||||||
|
#~ "-----------------\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Interpreteeritud reeglid\n"
|
||||||
|
#~ "------------------------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid " 1 shift/reduce conflict"
|
||||||
|
#~ msgstr " 1 nihutamine/redutseerimine konflikt"
|
||||||
|
|
||||||
|
#~ msgid " 1 reduce/reduce conflict"
|
||||||
|
#~ msgstr " 1 redutseerimine/redutseerimine konflikt"
|
||||||
|
|
||||||
|
#~ msgid "%s contains"
|
||||||
|
#~ msgstr "%s sisaldab"
|
||||||
|
|
||||||
|
#~ msgid "DERIVES"
|
||||||
|
#~ msgstr "DERIVES"
|
||||||
|
|
||||||
|
#~ msgid "%s derives"
|
||||||
|
#~ msgstr "%s derives"
|
||||||
|
|
||||||
|
#~ msgid "Entering set_nullable"
|
||||||
|
#~ msgstr "Entering set_nullable"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "redutseeritud %s defineerib %d terminali%s, %d mitteterminali%s ja %d "
|
||||||
|
#~ "reeglit%s.\n"
|
||||||
|
|
||||||
|
#~ msgid "\t\t/* empty */"
|
||||||
|
#~ msgstr "\t\t/* tühi */"
|
||||||
|
|
||||||
|
#~ msgid "multiple %%header_extension declarations"
|
||||||
|
#~ msgstr "korduvad %%header_extension eklaratsioonid"
|
||||||
|
|
||||||
|
#~ msgid "multiple %%source_extension declarations"
|
||||||
|
#~ msgstr "korduvad %%source_extension deklaratsioonid"
|
||||||
@@ -0,0 +1,955 @@
|
|||||||
|
# Messages français pour Bison.
|
||||||
|
# Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
# Michel Robitaille <[email protected]>, 2000
|
||||||
|
# Dominique Boucher a été le traducteur de 1996 à 2000
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: GNU bison 1.28d\n"
|
||||||
|
"POT-Creation-Date: 2002-01-29 17:17+0100\n"
|
||||||
|
"PO-Revision-Date: 2001-08-29 20:00-0500\n"
|
||||||
|
"Last-Translator: Michel Robitaille <[email protected]>\n"
|
||||||
|
"Language-Team: French <[email protected]>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||||
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
|
||||||
|
#: src/LR0.c:194
|
||||||
|
#, c-format
|
||||||
|
msgid "too many states (max %d)"
|
||||||
|
msgstr "nombre trop grand d'états (max %d)"
|
||||||
|
|
||||||
|
#: lib/error.c:128 lib/error.c:156 src/complain.c:99
|
||||||
|
msgid "Unknown system error"
|
||||||
|
msgstr "Erreur système inconnue"
|
||||||
|
|
||||||
|
#: src/complain.c:150
|
||||||
|
msgid "warning: "
|
||||||
|
msgstr "AVERTISSEMENT: "
|
||||||
|
|
||||||
|
#: src/complain.c:238
|
||||||
|
msgid "fatal error: "
|
||||||
|
msgstr "erreur fatale: "
|
||||||
|
|
||||||
|
#: src/conflicts.c:46
|
||||||
|
#, c-format
|
||||||
|
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||||
|
msgstr ""
|
||||||
|
"Conflit à l'état %d entre la règle %d et le terminal %s résolu par %s.\n"
|
||||||
|
|
||||||
|
#: src/conflicts.c:111 src/conflicts.c:133
|
||||||
|
msgid "reduce"
|
||||||
|
msgstr "réduction"
|
||||||
|
|
||||||
|
#: src/conflicts.c:116 src/conflicts.c:128
|
||||||
|
msgid "shift"
|
||||||
|
msgstr "décalage"
|
||||||
|
|
||||||
|
#: src/conflicts.c:138
|
||||||
|
msgid "an error"
|
||||||
|
msgstr "une erreur"
|
||||||
|
|
||||||
|
#: src/conflicts.c:291
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d shift/reduce conflict"
|
||||||
|
msgid_plural "%d shift/reduce conflicts"
|
||||||
|
msgstr[0] " %d conflits décalage/réduction"
|
||||||
|
|
||||||
|
#: src/conflicts.c:298
|
||||||
|
#, fuzzy
|
||||||
|
msgid "and"
|
||||||
|
msgstr " et"
|
||||||
|
|
||||||
|
#: src/conflicts.c:304
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d reduce/reduce conflict"
|
||||||
|
msgid_plural "%d reduce/reduce conflicts"
|
||||||
|
msgstr[0] " %d conflits réduction/réduction"
|
||||||
|
|
||||||
|
#: src/conflicts.c:329
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "State %d contains "
|
||||||
|
msgstr "L'état %d contient"
|
||||||
|
|
||||||
|
#. If invoked with `--yacc', use the output format specified by
|
||||||
|
#. POSIX.
|
||||||
|
#: src/conflicts.c:376
|
||||||
|
msgid "conflicts: "
|
||||||
|
msgstr "conflits: "
|
||||||
|
|
||||||
|
#: src/conflicts.c:378
|
||||||
|
#, c-format
|
||||||
|
msgid " %d shift/reduce"
|
||||||
|
msgstr " %d décalage/réduction"
|
||||||
|
|
||||||
|
#: src/conflicts.c:382
|
||||||
|
#, c-format
|
||||||
|
msgid " %d reduce/reduce"
|
||||||
|
msgstr " %d réduction/réduction"
|
||||||
|
|
||||||
|
#: src/conflicts.c:387 src/reduce.c:499
|
||||||
|
#, c-format
|
||||||
|
msgid "%s contains "
|
||||||
|
msgstr "%s contient "
|
||||||
|
|
||||||
|
#: src/conflicts.c:394
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "expected %d shift/reduce conflict\n"
|
||||||
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
|
msgstr[0] " %d conflits décalage/réduction"
|
||||||
|
|
||||||
|
#: src/files.c:159
|
||||||
|
#, c-format
|
||||||
|
msgid "cannot open file `%s'"
|
||||||
|
msgstr "ne peut ouvrir le fichier `%s'"
|
||||||
|
|
||||||
|
#: src/files.c:178
|
||||||
|
msgid "cannot close file"
|
||||||
|
msgstr "ne peut fermer le fichier"
|
||||||
|
|
||||||
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:55
|
||||||
|
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
|
||||||
|
msgstr "GNU bison génère des analyseurs pour les grammaires de type LALR(1).\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:59
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s [OPTION]... FILE\n"
|
||||||
|
msgstr "Usage: %s [OPTION]... FICHIER\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:63
|
||||||
|
msgid ""
|
||||||
|
"If a long option shows an argument as mandatory, then it is mandatory\n"
|
||||||
|
"for the equivalent short option also. Similarly for optional arguments.\n"
|
||||||
|
msgstr ""
|
||||||
|
"Si une option de forme longue montre un paramètre comme étant obligatoire,\n"
|
||||||
|
"il est alors obligatoire également pour une option de forme courte.\n"
|
||||||
|
"Il en est de même pour les paramètres optionnels.\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:69
|
||||||
|
msgid ""
|
||||||
|
"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"
|
||||||
|
msgstr ""
|
||||||
|
"Modes d'utilisation:\n"
|
||||||
|
" -h, --help afficher l'aide-mémoire\n"
|
||||||
|
" -V, --version afficher le nom et la version du logiciel\n"
|
||||||
|
" -y, --yacc émuler yacc en mode POSIX\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:76
|
||||||
|
msgid ""
|
||||||
|
"Parser:\n"
|
||||||
|
" -S, --skeleton=FILE specify the skeleton to use\n"
|
||||||
|
" -t, --debug instrument the parser for debugging\n"
|
||||||
|
" --locations enable locations computation\n"
|
||||||
|
" -p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n"
|
||||||
|
" -l, --no-lines don't generate `#line' directives\n"
|
||||||
|
" -n, --no-parser generate the tables only\n"
|
||||||
|
" -k, --token-table include a table of token names\n"
|
||||||
|
msgstr ""
|
||||||
|
"Analyseur:\n"
|
||||||
|
" -S, --skeleton=FICHIER utiliser le FICHIER squelette\n"
|
||||||
|
" -t, --debug activer le mode de mise au point\n"
|
||||||
|
" de l'analyseur\n"
|
||||||
|
" --locations permettre le calcul des localisations\n"
|
||||||
|
" -p, --name-prefix=PREFIXE accoler le PREFIXE aux symboles externes\n"
|
||||||
|
" -l, --no-lines ne pas générer les directives `#line'\n"
|
||||||
|
" -n, --no-parser générer les tables seulement\n"
|
||||||
|
" -r, --raw compter les jetons à partir de 3\n"
|
||||||
|
" -k, --token-table inclure la table des noms de jetons\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:88
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
"Output:\n"
|
||||||
|
" -d, --defines also produce a header file\n"
|
||||||
|
" -v, --verbose also produce an explanation of the automaton\n"
|
||||||
|
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||||
|
" -o, --output=FILE leave output to FILE\n"
|
||||||
|
" -g, --graph also produce a VCG description of the "
|
||||||
|
"automaton\n"
|
||||||
|
msgstr ""
|
||||||
|
"Sortie:\n"
|
||||||
|
" -d, --defines produire un fichier d'en-tête\n"
|
||||||
|
" -v, --verbose produire une explication de l'automate\n"
|
||||||
|
" -b, --file-prefix=PREFIXE utiliser le PREFIXE pour le fichier de sortie\n"
|
||||||
|
" -o, --output-file=FICHIER produire la sortie dans le FICHIER\n"
|
||||||
|
" -g, --graph produire aussi la description du graphe VCG de "
|
||||||
|
"l'automate\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:98
|
||||||
|
msgid "Report bugs to <[email protected]>.\n"
|
||||||
|
msgstr "Rapporter toutes anomalies à <[email protected]>.\n"
|
||||||
|
|
||||||
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:112
|
||||||
|
#, c-format
|
||||||
|
msgid "bison (GNU Bison) %s"
|
||||||
|
msgstr "bison (GNU Bison) %s"
|
||||||
|
|
||||||
|
#: src/getargs.c:117
|
||||||
|
msgid ""
|
||||||
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
|
msgstr ""
|
||||||
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:121
|
||||||
|
msgid ""
|
||||||
|
"This is free software; see the source for copying conditions. There is NO\n"
|
||||||
|
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||||
|
msgstr ""
|
||||||
|
"Ce logiciel est libre; voir les sources pour les conditions de\n"
|
||||||
|
"reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n"
|
||||||
|
"COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:200 src/lex.c:599
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' is no longer supported"
|
||||||
|
msgstr "`%s' n'est plus supporté"
|
||||||
|
|
||||||
|
#: src/getargs.c:224
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s --help' for more information.\n"
|
||||||
|
msgstr "Pour en savoir davantage, faites: `%s --help'.\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:233
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: no grammar file given\n"
|
||||||
|
msgstr "%s: grammaire manquante\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:237
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: extra arguments ignored after `%s'\n"
|
||||||
|
msgstr "%s: paramètres supplémentaires ignorés après `%s'\n"
|
||||||
|
|
||||||
|
#: src/lalr.c:175
|
||||||
|
#, c-format
|
||||||
|
msgid "too many gotos (max %d)"
|
||||||
|
msgstr "nombre trop grand de \"goto\" (Max %d)"
|
||||||
|
|
||||||
|
#: src/lex.c:77
|
||||||
|
msgid "unexpected `/' found and ignored"
|
||||||
|
msgstr "`/' inattendu et ignoré"
|
||||||
|
|
||||||
|
#: src/lex.c:106 src/reader.c:302
|
||||||
|
msgid "unterminated comment"
|
||||||
|
msgstr "le commentaire ne se termine pas"
|
||||||
|
|
||||||
|
#: src/lex.c:138
|
||||||
|
msgid "unexpected end of file"
|
||||||
|
msgstr "Fin de fichier inattendue"
|
||||||
|
|
||||||
|
#: src/lex.c:157
|
||||||
|
msgid "unescaped newline in constant"
|
||||||
|
msgstr "retour de chariot sans échappement dans une constante"
|
||||||
|
|
||||||
|
#: src/lex.c:196
|
||||||
|
#, c-format
|
||||||
|
msgid "octal value outside range 0...255: `\\%o'"
|
||||||
|
msgstr "valeur octale à l'extérieur de l'intervalle 0...255: \\%o"
|
||||||
|
|
||||||
|
#: src/lex.c:221
|
||||||
|
#, c-format
|
||||||
|
msgid "hexadecimal value above 255: `\\x%x'"
|
||||||
|
msgstr "valeur hexadécimale supérieure à 255: \\x%x"
|
||||||
|
|
||||||
|
#: src/lex.c:233
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||||
|
msgstr "séquence d'échappement inconnue: `\\' suivie de `%s'"
|
||||||
|
|
||||||
|
#: src/lex.c:264
|
||||||
|
msgid "unterminated type name at end of file"
|
||||||
|
msgstr "le nom de type ne se termine pas avant la fin de fichier"
|
||||||
|
|
||||||
|
#: src/lex.c:267
|
||||||
|
msgid "unterminated type name"
|
||||||
|
msgstr "le nom de type ne se termine pas"
|
||||||
|
|
||||||
|
#: src/lex.c:359
|
||||||
|
msgid "use \"...\" for multi-character literal tokens"
|
||||||
|
msgstr "utilisez \"...\" pour les terminaux litéraux de plusieurs caractères"
|
||||||
|
|
||||||
|
#: src/lex.c:571
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' supports no argument: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/lex.c:588
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "`%s' requires an argument"
|
||||||
|
msgstr "%s: l'option %s requiert un paramètre\n"
|
||||||
|
|
||||||
|
#: src/output.c:804
|
||||||
|
#, c-format
|
||||||
|
msgid "maximum table size (%d) exceeded"
|
||||||
|
msgstr "taille maximale de la table (%d) dépassée"
|
||||||
|
|
||||||
|
#: src/print.c:44
|
||||||
|
#, c-format
|
||||||
|
msgid " type %d is %s\n"
|
||||||
|
msgstr " le type %d est %s\n"
|
||||||
|
|
||||||
|
#: src/print.c:106
|
||||||
|
#, c-format
|
||||||
|
msgid " (rule %d)"
|
||||||
|
msgstr " (règle %d)"
|
||||||
|
|
||||||
|
#: src/print.c:127
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\tshift, and go to state %d\n"
|
||||||
|
msgstr " %-4s\tdécalage et aller à l'état %d\n"
|
||||||
|
|
||||||
|
#: src/print.c:144
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\terror (nonassociative)\n"
|
||||||
|
msgstr " %-4s\terreur (non-associatif)\n"
|
||||||
|
|
||||||
|
#: src/print.c:168
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\tgo to state %d\n"
|
||||||
|
msgstr " %-4s\taller à l'état %d\n"
|
||||||
|
|
||||||
|
#: src/print.c:192 src/print.c:228
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
" $default\treduce using rule %d (%s)\n"
|
||||||
|
"\n"
|
||||||
|
msgstr ""
|
||||||
|
" $défaut\tréduction par la règle %d (%s)\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/print.c:224 src/print.c:301
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||||
|
msgstr " %-4s\t[réduction par la règle %d (%s)\n"
|
||||||
|
|
||||||
|
#: src/print.c:282 src/print.c:295
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||||
|
msgstr " %-4s\tréduction par la règle %d (%s)\n"
|
||||||
|
|
||||||
|
#: src/print.c:311
|
||||||
|
#, c-format
|
||||||
|
msgid " $default\treduce using rule %d (%s)\n"
|
||||||
|
msgstr " $défaut\tréduction par la règle %d (%s)\n"
|
||||||
|
|
||||||
|
#: src/print.c:327
|
||||||
|
msgid " $default\taccept\n"
|
||||||
|
msgstr " $défaut\taccepter\n"
|
||||||
|
|
||||||
|
#: src/print.c:329
|
||||||
|
msgid " NO ACTIONS\n"
|
||||||
|
msgstr " PAS D'ACTION\n"
|
||||||
|
|
||||||
|
#: src/print.c:342
|
||||||
|
#, c-format
|
||||||
|
msgid "state %d"
|
||||||
|
msgstr "état %d"
|
||||||
|
|
||||||
|
#. rule # : LHS -> RHS
|
||||||
|
#: src/print.c:373
|
||||||
|
msgid "Grammar"
|
||||||
|
msgstr "Grammaire"
|
||||||
|
|
||||||
|
#: src/print.c:374
|
||||||
|
msgid "Number, Line, Rule"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/print.c:379
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " %3d %3d %s ->"
|
||||||
|
msgstr "règle %-4d %s ->"
|
||||||
|
|
||||||
|
#: src/print.c:386
|
||||||
|
msgid "empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||||
|
#: src/print.c:393
|
||||||
|
msgid "Terminals, with rules where they appear"
|
||||||
|
msgstr "Terminaux, suivis des règles où ils apparaissent"
|
||||||
|
|
||||||
|
#: src/print.c:416
|
||||||
|
msgid "Nonterminals, with rules where they appear"
|
||||||
|
msgstr "Non-terminaux, suivis des règles où ils apparaissent"
|
||||||
|
|
||||||
|
#: src/print.c:442
|
||||||
|
msgid " on left:"
|
||||||
|
msgstr " à gauche:"
|
||||||
|
|
||||||
|
#: src/print.c:457
|
||||||
|
msgid " on right:"
|
||||||
|
msgstr " à droite:"
|
||||||
|
|
||||||
|
#: src/reader.c:100
|
||||||
|
msgid " Skipping to next \\n"
|
||||||
|
msgstr " Saut jusqu'au prochain \\n"
|
||||||
|
|
||||||
|
#: src/reader.c:102
|
||||||
|
#, c-format
|
||||||
|
msgid " Skipping to next %c"
|
||||||
|
msgstr " Saut jusqu'au prochain %c"
|
||||||
|
|
||||||
|
#: src/reader.c:153 src/reader.c:165
|
||||||
|
msgid "invalid $ value"
|
||||||
|
msgstr "la valeur de symbole $ n'est pas valide"
|
||||||
|
|
||||||
|
#: src/reader.c:192 src/reader.c:207
|
||||||
|
msgid "unterminated string at end of file"
|
||||||
|
msgstr "chaîne de caractères non terminée en fin de fichier"
|
||||||
|
|
||||||
|
#: src/reader.c:195
|
||||||
|
msgid "unterminated string"
|
||||||
|
msgstr "chaîne de caractère non terminée"
|
||||||
|
|
||||||
|
#: src/reader.c:337 src/reader.c:401
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "invalid value: %s%d"
|
||||||
|
msgstr "la valeur de symbole $ n'est pas valide"
|
||||||
|
|
||||||
|
#: src/reader.c:351 src/reader.c:423
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is invalid"
|
||||||
|
msgstr "%s n'est pas valide"
|
||||||
|
|
||||||
|
#: src/reader.c:391
|
||||||
|
#, c-format
|
||||||
|
msgid "$$ of `%s' has no declared type"
|
||||||
|
msgstr "$$ de `%s' n'a pas son type déclaré"
|
||||||
|
|
||||||
|
#: src/reader.c:415
|
||||||
|
#, c-format
|
||||||
|
msgid "$%d of `%s' has no declared type"
|
||||||
|
msgstr "$%d de `%s' n'a pas de type déclaré"
|
||||||
|
|
||||||
|
#: src/reader.c:473
|
||||||
|
msgid "unterminated `%{' definition"
|
||||||
|
msgstr "La section de définition (%{) ne termine pas avant la fin du fichier"
|
||||||
|
|
||||||
|
#: src/reader.c:518 src/reader.c:636 src/reader.c:686 src/reader.c:933
|
||||||
|
#, c-format
|
||||||
|
msgid "Premature EOF after %s"
|
||||||
|
msgstr "Fin de fichier prématutée après %s"
|
||||||
|
|
||||||
|
#: src/reader.c:535
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol `%s' used more than once as a literal string"
|
||||||
|
msgstr "symbole `%s' utilisé plus d'une fois dans une chaîne litérale"
|
||||||
|
|
||||||
|
#: src/reader.c:538
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol `%s' given more than one literal string"
|
||||||
|
msgstr "symbole `%s' présent dans plus d'une chaîne litérale"
|
||||||
|
|
||||||
|
#: src/reader.c:559 src/reader.c:705
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol %s redefined"
|
||||||
|
msgstr "symbole %s redéfini"
|
||||||
|
|
||||||
|
#: src/reader.c:569 src/reader.c:651 src/reader.c:712
|
||||||
|
#, c-format
|
||||||
|
msgid "type redeclaration for %s"
|
||||||
|
msgstr "redéclaration du type de %s"
|
||||||
|
|
||||||
|
#: src/reader.c:581
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' is invalid in %s"
|
||||||
|
msgstr "`%s' n'est pas valide dans %s"
|
||||||
|
|
||||||
|
#: src/reader.c:599 src/reader.c:758
|
||||||
|
#, c-format
|
||||||
|
msgid "multiple %s declarations"
|
||||||
|
msgstr "multiples déclarations %s"
|
||||||
|
|
||||||
|
#: src/reader.c:601 src/reader.c:913 src/reader.c:928 src/reader.c:961
|
||||||
|
#: src/reader.c:975 src/reader.c:1178
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid %s declaration"
|
||||||
|
msgstr "la déclaration %s n'est pas valide"
|
||||||
|
|
||||||
|
#: src/reader.c:621
|
||||||
|
msgid "%type declaration has no <typename>"
|
||||||
|
msgstr "la déclaration %type n'a pas de <nom_de_type>"
|
||||||
|
|
||||||
|
#: src/reader.c:656
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid %%type declaration due to item: %s"
|
||||||
|
msgstr "la déclaration %%type n'est pas valide en raison de l'item: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:701
|
||||||
|
#, c-format
|
||||||
|
msgid "redefining precedence of %s"
|
||||||
|
msgstr "redéfinition du niveau de priorité de %s"
|
||||||
|
|
||||||
|
#: src/reader.c:724
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid text (%s) - number should be after identifier"
|
||||||
|
msgstr ""
|
||||||
|
"le texte n'est pas valide (%s) - le nombre devrait suivre l'identificateur"
|
||||||
|
|
||||||
|
#: src/reader.c:734
|
||||||
|
#, c-format
|
||||||
|
msgid "unexpected item: %s"
|
||||||
|
msgstr "item inattendu: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:790 src/reader.c:1149
|
||||||
|
#, c-format
|
||||||
|
msgid "unmatched %s"
|
||||||
|
msgstr "non appariement de %s"
|
||||||
|
|
||||||
|
#: src/reader.c:819
|
||||||
|
#, c-format
|
||||||
|
msgid "argument of %%expect is not an integer"
|
||||||
|
msgstr "le paramètre de %%expect n'est pas un entier"
|
||||||
|
|
||||||
|
#: src/reader.c:865
|
||||||
|
#, c-format
|
||||||
|
msgid "unrecognized item %s, expected an identifier"
|
||||||
|
msgstr "item %s non reconnu, un identificateur est attendu"
|
||||||
|
|
||||||
|
#: src/reader.c:887
|
||||||
|
#, c-format
|
||||||
|
msgid "expected string constant instead of %s"
|
||||||
|
msgstr "chaîne de caractères constante attendue plutôt que %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1080
|
||||||
|
#, c-format
|
||||||
|
msgid "unrecognized: %s"
|
||||||
|
msgstr "non reconnu: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1085
|
||||||
|
msgid "no input grammar"
|
||||||
|
msgstr "aucune grammaire en entrée"
|
||||||
|
|
||||||
|
#: src/reader.c:1090
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown character: %s"
|
||||||
|
msgstr "caractère inconnu: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1265
|
||||||
|
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||||
|
msgstr "règle mal formée: le symbole initial n'est pas suivi de `:'"
|
||||||
|
|
||||||
|
#: src/reader.c:1272
|
||||||
|
msgid "grammar starts with vertical bar"
|
||||||
|
msgstr "la grammaire débute par une barre verticale"
|
||||||
|
|
||||||
|
#: src/reader.c:1300
|
||||||
|
#, c-format
|
||||||
|
msgid "rule given for %s, which is a token"
|
||||||
|
msgstr "la règle pour %s, qui est un terminal"
|
||||||
|
|
||||||
|
#: src/reader.c:1405
|
||||||
|
msgid "two @prec's in a row"
|
||||||
|
msgstr "deux @prec de suite"
|
||||||
|
|
||||||
|
#: src/reader.c:1414
|
||||||
|
#, c-format
|
||||||
|
msgid "%%guard present but %%semantic_parser not specified"
|
||||||
|
msgstr "%%guard est présent mais %%semantic_parser n'est pas spécifié"
|
||||||
|
|
||||||
|
#: src/reader.c:1424
|
||||||
|
msgid "two actions at end of one rule"
|
||||||
|
msgstr "deux actions à la fin d'une même règle"
|
||||||
|
|
||||||
|
#: src/reader.c:1438
|
||||||
|
#, c-format
|
||||||
|
msgid "type clash (`%s' `%s') on default action"
|
||||||
|
msgstr "conflit de type (`%s' `%s') pour l'action par défaut"
|
||||||
|
|
||||||
|
#: src/reader.c:1444
|
||||||
|
msgid "empty rule for typed nonterminal, and no action"
|
||||||
|
msgstr "règle vide pour une catégorie typée et aucune action"
|
||||||
|
|
||||||
|
#: src/reader.c:1450
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid input: %s"
|
||||||
|
msgstr "entrée non valide: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1457
|
||||||
|
msgid "no rules in the input grammar"
|
||||||
|
msgstr "la grammaire n'a pas de règles"
|
||||||
|
|
||||||
|
#: src/reader.c:1465
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||||
|
msgstr ""
|
||||||
|
"le symbole %s est utilisé mais ce n'est pas un terminal et il ne possède pas "
|
||||||
|
"de règle"
|
||||||
|
|
||||||
|
#: src/reader.c:1487
|
||||||
|
#, c-format
|
||||||
|
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||||
|
msgstr "trop de symboles (jeton plus non terminaux); maximum %d"
|
||||||
|
|
||||||
|
#: src/reader.c:1551
|
||||||
|
#, c-format
|
||||||
|
msgid "tokens %s and %s both assigned number %d"
|
||||||
|
msgstr "les jetons %s et %s se sont vus assigner le nombre %d"
|
||||||
|
|
||||||
|
#: src/reader.c:1601
|
||||||
|
#, c-format
|
||||||
|
msgid "conflicting precedences for %s and %s"
|
||||||
|
msgstr "les priorités pour %s et %s entrent en conflit"
|
||||||
|
|
||||||
|
#: src/reader.c:1613
|
||||||
|
#, c-format
|
||||||
|
msgid "conflicting assoc values for %s and %s"
|
||||||
|
msgstr "les valeurs d'association de %s et %s entrent en conflit"
|
||||||
|
|
||||||
|
#: src/reader.c:1650
|
||||||
|
#, c-format
|
||||||
|
msgid "the start symbol %s is undefined"
|
||||||
|
msgstr "le symbole de départ %s n'est pas défini"
|
||||||
|
|
||||||
|
#: src/reader.c:1652
|
||||||
|
#, c-format
|
||||||
|
msgid "the start symbol %s is a token"
|
||||||
|
msgstr "le symbole de départ %s est un terminal"
|
||||||
|
|
||||||
|
#: src/reader.c:1672
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "too many items (max %d)"
|
||||||
|
msgstr "nombre trop grand d'états (max %d)"
|
||||||
|
|
||||||
|
#: src/reduce.c:398
|
||||||
|
msgid "Useless nonterminals:"
|
||||||
|
msgstr "Non-terminaux inutiles:"
|
||||||
|
|
||||||
|
#: src/reduce.c:411
|
||||||
|
msgid "Terminals which are not used:"
|
||||||
|
msgstr "Terminaux non utilisés:"
|
||||||
|
|
||||||
|
#: src/reduce.c:422
|
||||||
|
msgid "Useless rules:"
|
||||||
|
msgstr "Règles inutiles:"
|
||||||
|
|
||||||
|
#: src/reduce.c:494
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d rule never reduced\n"
|
||||||
|
msgid_plural "%d rules never reduced\n"
|
||||||
|
msgstr[0] "%d règles jamais réduites\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:502
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d useless nonterminal"
|
||||||
|
msgid_plural "%d useless nonterminals"
|
||||||
|
msgstr[0] "%d catégories non productives%s"
|
||||||
|
|
||||||
|
#: src/reduce.c:508
|
||||||
|
msgid " and "
|
||||||
|
msgstr " et "
|
||||||
|
|
||||||
|
#: src/reduce.c:511
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d useless rule"
|
||||||
|
msgid_plural "%d useless rules"
|
||||||
|
msgstr[0] "%d règle(s) non productive(s)%s"
|
||||||
|
|
||||||
|
#: src/reduce.c:542
|
||||||
|
#, c-format
|
||||||
|
msgid "Start symbol %s does not derive any sentence"
|
||||||
|
msgstr "Aucune phrase ne peut être dérivée du symbole de départ %s"
|
||||||
|
|
||||||
|
#: lib/getopt.c:694
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%s' is ambiguous\n"
|
||||||
|
msgstr "%s: l'option %s est ambigüe\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:719
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `--%s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: l'option --%s n'admet pas de paramètre\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:724
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%c%s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: l'option %c%s n'admet pas de paramètre\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:742 lib/getopt.c:915
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%s' requires an argument\n"
|
||||||
|
msgstr "%s: l'option %s requiert un paramètre\n"
|
||||||
|
|
||||||
|
#. --option
|
||||||
|
#: lib/getopt.c:771
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: unrecognized option `--%s'\n"
|
||||||
|
msgstr "%s: l'option --%s est inconnue\n"
|
||||||
|
|
||||||
|
#. +option or -option
|
||||||
|
#: lib/getopt.c:775
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: unrecognized option `%c%s'\n"
|
||||||
|
msgstr "%s: l'option %c%s est inconnue\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
|
#: lib/getopt.c:801
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: illegal option -- %c\n"
|
||||||
|
msgstr "%s: option illégale -- %c\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:804
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: invalid option -- %c\n"
|
||||||
|
msgstr "%s: option non valide -- %c\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
|
#: lib/getopt.c:834 lib/getopt.c:964
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option requires an argument -- %c\n"
|
||||||
|
msgstr "%s: l'option requiert un paramètre -- %c\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:881
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `-W %s' is ambiguous\n"
|
||||||
|
msgstr "%s: l'option `-W %s' est ambiguë\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:899
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: l'option `-W %s' n'admet pas de paramètre\n"
|
||||||
|
|
||||||
|
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
|
||||||
|
#. before exiting when memory is exhausted. Goes through gettext.
|
||||||
|
#: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
|
||||||
|
msgid "memory exhausted"
|
||||||
|
msgstr "mémoire épuisée"
|
||||||
|
|
||||||
|
#. Get translations for open and closing quotation marks.
|
||||||
|
#.
|
||||||
|
#. The message catalog should translate "`" to a left
|
||||||
|
#. quotation mark suitable for the locale, and similarly for
|
||||||
|
#. "'". If the catalog has no translation,
|
||||||
|
#. locale_quoting_style quotes `like this', and
|
||||||
|
#. clocale_quoting_style quotes "like this".
|
||||||
|
#.
|
||||||
|
#. For example, an American English Unicode locale should
|
||||||
|
#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
|
||||||
|
#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
|
||||||
|
#. MARK). A British English Unicode locale should instead
|
||||||
|
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
|
||||||
|
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
|
||||||
|
#: lib/quotearg.c:274
|
||||||
|
msgid "`"
|
||||||
|
msgstr "`"
|
||||||
|
|
||||||
|
#: lib/quotearg.c:275
|
||||||
|
msgid "'"
|
||||||
|
msgstr "'"
|
||||||
|
|
||||||
|
#~ msgid "%-4s\terror (nonassociative)"
|
||||||
|
#~ msgstr "%-4s\terreur (non-associatif)"
|
||||||
|
|
||||||
|
#~ msgid "$default\treduce using rule %d (%s)"
|
||||||
|
#~ msgstr "$défaut\tréduction par la règle %d (%s)"
|
||||||
|
|
||||||
|
#~ msgid "unterminated %guard clause"
|
||||||
|
#~ msgstr "clause %guard non terminée"
|
||||||
|
|
||||||
|
#~ msgid " $ \tgo to state %d\n"
|
||||||
|
#~ msgstr " $ \taller à l'état %d\n"
|
||||||
|
|
||||||
|
#~ msgid "%s: internal error: %s\n"
|
||||||
|
#~ msgstr "%s: erreur interne: %s\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Variables\n"
|
||||||
|
#~ "---------\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Variables\n"
|
||||||
|
#~ "---------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid "Value Sprec Sassoc Tag\n"
|
||||||
|
#~ msgstr "Valeur Spréc Sassoc Tag\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Rules\n"
|
||||||
|
#~ "-----\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Règles\n"
|
||||||
|
#~ "------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Rules interpreted\n"
|
||||||
|
#~ "-----------------\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Règles interprétées\n"
|
||||||
|
#~ "-------------------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid " 1 shift/reduce conflict"
|
||||||
|
#~ msgstr " 1 conflit décalage/réduction"
|
||||||
|
|
||||||
|
#~ msgid " 1 reduce/reduce conflict"
|
||||||
|
#~ msgstr "1 conflit réduction/réduction"
|
||||||
|
|
||||||
|
#~ msgid "%s contains"
|
||||||
|
#~ msgstr "%s contient"
|
||||||
|
|
||||||
|
#~ msgid "DERIVES"
|
||||||
|
#~ msgstr "DÉRIVES"
|
||||||
|
|
||||||
|
#~ msgid "%s derives"
|
||||||
|
#~ msgstr "%s dérive"
|
||||||
|
|
||||||
|
#~ msgid "Entering set_nullable"
|
||||||
|
#~ msgstr "Entré dans set_nullable"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "la réduction de %s définit %d terminal%s, %d catégorie%s et %d production%"
|
||||||
|
#~ "s.\n"
|
||||||
|
|
||||||
|
#~ msgid "\t\t/* empty */"
|
||||||
|
#~ msgstr "\t\t/* epsilon */"
|
||||||
|
|
||||||
|
#~ msgid "multiple %%header_extension declarations"
|
||||||
|
#~ msgstr "multiples déclarations %%header_extension"
|
||||||
|
|
||||||
|
#~ msgid "multiple %%source_extension declarations"
|
||||||
|
#~ msgstr "multiples déclarations %%source_extension"
|
||||||
|
|
||||||
|
#~ msgid "vcg graph: no such color."
|
||||||
|
#~ msgstr "graphe vcg: pas de telle couleur"
|
||||||
|
|
||||||
|
#~ msgid "vcg graph: no such text mode"
|
||||||
|
#~ msgstr "graphe vcg: pas de tel mode texte"
|
||||||
|
|
||||||
|
#~ msgid "vcg graph: no such shape"
|
||||||
|
#~ msgstr "graphe vcg: pas de telle forme"
|
||||||
|
|
||||||
|
#~ msgid "vcg graph: no such decision"
|
||||||
|
#~ msgstr "graphe vcg: pas de telle décision"
|
||||||
|
|
||||||
|
#~ msgid "vcg graph: no such an orientation"
|
||||||
|
#~ msgstr "graphe vcg: pas de telle orientation"
|
||||||
|
|
||||||
|
#~ msgid "vcg graph: no such an alignement"
|
||||||
|
#~ msgstr "graphe vcg: pas de tel alignement"
|
||||||
|
|
||||||
|
#~ msgid "vcg graph: no such an arrow mode"
|
||||||
|
#~ msgstr "graphe vcg: pas de tel mode de flèche"
|
||||||
|
|
||||||
|
#~ msgid "vcg graph: no such crossing_type"
|
||||||
|
#~ msgstr "graphe vcg: pas de tel type de croisement (crossing_type)"
|
||||||
|
|
||||||
|
#~ msgid "vcg graph: no such view"
|
||||||
|
#~ msgstr "graphe vcg: pas de tel vue"
|
||||||
|
|
||||||
|
#~ msgid "vcg graph: no such linestyle"
|
||||||
|
#~ msgstr "graphe vcg: pas de tel style de ligne"
|
||||||
|
|
||||||
|
#~ msgid "vcg graph: no such an arrowstyle"
|
||||||
|
#~ msgstr "graphe vcg: pas de tel style de flèche"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "DERIVES\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "DERIVES\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid "unterminated comment at end of file"
|
||||||
|
#~ msgstr "le commentaire ne se termine pas avant la fin du fichier"
|
||||||
|
|
||||||
|
#~ msgid "unmatched close-brace (`}')"
|
||||||
|
#~ msgstr "accolade fermante `}' non appariée"
|
||||||
|
|
||||||
|
#~ msgid "@%s is invalid"
|
||||||
|
#~ msgstr "@%s n'est pas valide"
|
||||||
|
|
||||||
|
#~ msgid "unmatched right brace (`}')"
|
||||||
|
#~ msgstr "accolade fermante `}' non appariée"
|
||||||
|
|
||||||
|
#~ msgid "ill-formed %type declaration"
|
||||||
|
#~ msgstr "déclaration %type mal formée"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "FIRSTS\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "FIRSTS\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "%s firsts\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "%s firsts\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "%s derives\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "%s derives\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||||
|
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||||
|
#~ " [--verbose] [--version] [--help] [--yacc]\n"
|
||||||
|
#~ " [--no-parser] [--token-table]\n"
|
||||||
|
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
|
||||||
|
#~ " [--output=outfile] grammar-file\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Usage: %s [-dhklntvyV] [-b préfixe-de-fichier] [-o sortie] [-p préfixe-de-"
|
||||||
|
#~ "nom]\n"
|
||||||
|
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||||
|
#~ " [--verbose] [--version] [--help] [--yacc]\n"
|
||||||
|
#~ " [--no-parser] [--token-table]\n"
|
||||||
|
#~ " [--file-prefix=préfixe] [--name-prefix=préfixe]\n"
|
||||||
|
#~ " [--output=outfile] grammaire\n"
|
||||||
|
|
||||||
|
#~ msgid "gotos"
|
||||||
|
#~ msgstr "gotos"
|
||||||
|
|
||||||
|
#~ msgid "\"%s\", line %d: %s\n"
|
||||||
|
#~ msgstr "\"%s\", ligne %d: %s\n"
|
||||||
|
|
||||||
|
#~ msgid "error: %s\n"
|
||||||
|
#~ msgstr "erreur: %s\n"
|
||||||
|
|
||||||
|
#~ msgid "(\"%s\", line %d) error: %s\n"
|
||||||
|
#~ msgstr "(\"%s\", ligne %d) erreur: %s\n"
|
||||||
|
|
||||||
|
#~ msgid "limit of %d exceeded, too many %s"
|
||||||
|
#~ msgstr "limite de %d dépassée, trop de %s"
|
||||||
|
|
||||||
|
#~ msgid "unterminated comment in `%{' definition"
|
||||||
|
#~ msgstr "le commentaire ne se termine pas dans la section de définition (%{)"
|
||||||
|
|
||||||
|
#~ msgid "invalid @-construct"
|
||||||
|
#~ msgstr "la construction `@' n'est pas valide"
|
||||||
@@ -0,0 +1,754 @@
|
|||||||
|
# Italian translation for message of GNU bison.
|
||||||
|
# Copyright (C) 2002 Free Software Foundation, Inc.
|
||||||
|
# Paolo Bonzini <[email protected]>, 2002.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: bison 1.31\n"
|
||||||
|
"POT-Creation-Date: 2002-01-29 17:17+0100\n"
|
||||||
|
"PO-Revision-Date: 2002-01-18 12:40 CET\n"
|
||||||
|
"Last-Translator: Paolo Bonzini <[email protected]>\n"
|
||||||
|
"Language-Team: Italian <[email protected]>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||||
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#: src/LR0.c:194
|
||||||
|
#, c-format
|
||||||
|
msgid "too many states (max %d)"
|
||||||
|
msgstr "troppi stati (massimo %d)"
|
||||||
|
|
||||||
|
#: lib/error.c:128 lib/error.c:156 src/complain.c:99
|
||||||
|
msgid "Unknown system error"
|
||||||
|
msgstr "Errore di sistema sconosciuto"
|
||||||
|
|
||||||
|
#: src/complain.c:150
|
||||||
|
msgid "warning: "
|
||||||
|
msgstr "attenzione: "
|
||||||
|
|
||||||
|
#: src/complain.c:238
|
||||||
|
msgid "fatal error: "
|
||||||
|
msgstr "errore fatale: "
|
||||||
|
|
||||||
|
#: src/conflicts.c:46
|
||||||
|
#, c-format
|
||||||
|
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||||
|
msgstr ""
|
||||||
|
"Conflitto nello stato %d tra la regola %d e il token %s risolto come %s.\n"
|
||||||
|
|
||||||
|
#: src/conflicts.c:111 src/conflicts.c:133
|
||||||
|
msgid "reduce"
|
||||||
|
msgstr "riduzione"
|
||||||
|
|
||||||
|
#: src/conflicts.c:116 src/conflicts.c:128
|
||||||
|
msgid "shift"
|
||||||
|
msgstr "shift"
|
||||||
|
|
||||||
|
#: src/conflicts.c:138
|
||||||
|
msgid "an error"
|
||||||
|
msgstr "un errore"
|
||||||
|
|
||||||
|
#: src/conflicts.c:291
|
||||||
|
#, c-format
|
||||||
|
msgid "%d shift/reduce conflict"
|
||||||
|
msgid_plural "%d shift/reduce conflicts"
|
||||||
|
msgstr[0] "%d conflitto shift/riduzione"
|
||||||
|
msgstr[1] "%d conflitti shift/riduzione"
|
||||||
|
|
||||||
|
#: src/conflicts.c:298
|
||||||
|
msgid "and"
|
||||||
|
msgstr "e"
|
||||||
|
|
||||||
|
#: src/conflicts.c:304
|
||||||
|
#, c-format
|
||||||
|
msgid "%d reduce/reduce conflict"
|
||||||
|
msgid_plural "%d reduce/reduce conflicts"
|
||||||
|
msgstr[0] "%d conflitto riduzione/riduzione"
|
||||||
|
msgstr[1] "%d conflitti riduzione/riduzione"
|
||||||
|
|
||||||
|
#: src/conflicts.c:329
|
||||||
|
#, c-format
|
||||||
|
msgid "State %d contains "
|
||||||
|
msgstr "Lo stato %d contiene"
|
||||||
|
|
||||||
|
#. If invoked with `--yacc', use the output format specified by
|
||||||
|
#. POSIX.
|
||||||
|
#: src/conflicts.c:376
|
||||||
|
msgid "conflicts: "
|
||||||
|
msgstr "conflitti: "
|
||||||
|
|
||||||
|
#: src/conflicts.c:378
|
||||||
|
#, c-format
|
||||||
|
msgid " %d shift/reduce"
|
||||||
|
msgstr " %d shift/riduzione"
|
||||||
|
|
||||||
|
#: src/conflicts.c:382
|
||||||
|
#, c-format
|
||||||
|
msgid " %d reduce/reduce"
|
||||||
|
msgstr " %d riduzione/riduzione"
|
||||||
|
|
||||||
|
#: src/conflicts.c:387 src/reduce.c:499
|
||||||
|
#, c-format
|
||||||
|
msgid "%s contains "
|
||||||
|
msgstr "%s contiene "
|
||||||
|
|
||||||
|
#: src/conflicts.c:394
|
||||||
|
#, c-format
|
||||||
|
msgid "expected %d shift/reduce conflict\n"
|
||||||
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
|
msgstr[0] "atteso %d conflitto shift/riduzione\n"
|
||||||
|
msgstr[1] "attesi %d conflitti shift/riduzione\n"
|
||||||
|
|
||||||
|
#: src/files.c:159
|
||||||
|
#, c-format
|
||||||
|
msgid "cannot open file `%s'"
|
||||||
|
msgstr "impossibile aprire il file `%s'"
|
||||||
|
|
||||||
|
#: src/files.c:178
|
||||||
|
msgid "cannot close file"
|
||||||
|
msgstr "impossibile chiudere il file `%s'"
|
||||||
|
|
||||||
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:55
|
||||||
|
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
|
||||||
|
msgstr "GNU bison genera parser per grammatiche LALR(1).\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:59
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s [OPTION]... FILE\n"
|
||||||
|
msgstr "Utilizzo: %s [OPZIONE]... FILE\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:63
|
||||||
|
msgid ""
|
||||||
|
"If a long option shows an argument as mandatory, then it is mandatory\n"
|
||||||
|
"for the equivalent short option also. Similarly for optional arguments.\n"
|
||||||
|
msgstr ""
|
||||||
|
"Se un argomento è indicato come obbligatorio in un'opzione lunga, allora\n"
|
||||||
|
"è obbligatorio anche per l'equivalente opzione corta. Analogamente per\n"
|
||||||
|
"gli argomenti opzionali.\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:69
|
||||||
|
msgid ""
|
||||||
|
"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"
|
||||||
|
msgstr ""
|
||||||
|
"Modalità operative:\n"
|
||||||
|
" -h, --help mostra questo aiuto ed esce\n"
|
||||||
|
" -V, --version mostra informazioni sulla versione ed esce\n"
|
||||||
|
" -y, --yacc emula il comportamento di POSIX yacc\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:76
|
||||||
|
msgid ""
|
||||||
|
"Parser:\n"
|
||||||
|
" -S, --skeleton=FILE specify the skeleton to use\n"
|
||||||
|
" -t, --debug instrument the parser for debugging\n"
|
||||||
|
" --locations enable locations computation\n"
|
||||||
|
" -p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n"
|
||||||
|
" -l, --no-lines don't generate `#line' directives\n"
|
||||||
|
" -n, --no-parser generate the tables only\n"
|
||||||
|
" -k, --token-table include a table of token names\n"
|
||||||
|
msgstr ""
|
||||||
|
" -S, --skeleton=FILE specifica lo scheletro da usare\n"
|
||||||
|
" -t, --debug aggiunge informazioni di debug al parser\n"
|
||||||
|
" --locations abilita il calcolo delle locazioni (@N)\n"
|
||||||
|
" -p, --name-prefix=PREFIX prepone PREFIX ai simboli globali\n"
|
||||||
|
" -l, --no-lines non genera direttive `#line'\n"
|
||||||
|
" -n, --no-parser genera le sole tabelle\n"
|
||||||
|
" -k, --token-table include una tabella di nomi dei token\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:88
|
||||||
|
msgid ""
|
||||||
|
"Output:\n"
|
||||||
|
" -d, --defines also produce a header file\n"
|
||||||
|
" -v, --verbose also produce an explanation of the automaton\n"
|
||||||
|
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||||
|
" -o, --output=FILE leave output to FILE\n"
|
||||||
|
" -g, --graph also produce a VCG description of the "
|
||||||
|
"automaton\n"
|
||||||
|
msgstr ""
|
||||||
|
"Output:\n"
|
||||||
|
" -d, --defines produce anche uno header\n"
|
||||||
|
" -v, --verbose produce anche una spiegazione dell'automa\n"
|
||||||
|
" -b, --file-prefix=PREFIX specifica un prefisso per il file di output\n"
|
||||||
|
" -o, --output=FILE lascia l'output in FILE\n"
|
||||||
|
" -g, --graph produce anche una descrizione VCG dell'automa\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:98
|
||||||
|
msgid "Report bugs to <[email protected]>.\n"
|
||||||
|
msgstr "Segnalare eventuali bug a <[email protected]>.\n"
|
||||||
|
|
||||||
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:112
|
||||||
|
#, c-format
|
||||||
|
msgid "bison (GNU Bison) %s"
|
||||||
|
msgstr "bison (GNU Bison) %s"
|
||||||
|
|
||||||
|
#: src/getargs.c:117
|
||||||
|
msgid ""
|
||||||
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
|
msgstr ""
|
||||||
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:121
|
||||||
|
msgid ""
|
||||||
|
"This is free software; see the source for copying conditions. There is NO\n"
|
||||||
|
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||||
|
msgstr ""
|
||||||
|
"Questo e' software libero; vedere il sorgente per le condizioni cui e'\n"
|
||||||
|
"sottoposta la copia. NON c'è ALCUNA garanzia, neanche di\n"
|
||||||
|
"COMMERCIABILITA` o di ADEGUATEZZA AD UN PARTICOLARE SCOPO.\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:200 src/lex.c:599
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' is no longer supported"
|
||||||
|
msgstr "`%s' non è più supportato"
|
||||||
|
|
||||||
|
#: src/getargs.c:224
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s --help' for more information.\n"
|
||||||
|
msgstr "Provare `%s --help' per ulteriori informazioni.\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:233
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: no grammar file given\n"
|
||||||
|
msgstr "%s: nessun file grammatica specificato\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:237
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: extra arguments ignored after `%s'\n"
|
||||||
|
msgstr "%s: ignorati gli argomenti successivi a `%s'\n"
|
||||||
|
|
||||||
|
#: src/lalr.c:175
|
||||||
|
#, c-format
|
||||||
|
msgid "too many gotos (max %d)"
|
||||||
|
msgstr "troppi goto (max %d)"
|
||||||
|
|
||||||
|
#: src/lex.c:77
|
||||||
|
msgid "unexpected `/' found and ignored"
|
||||||
|
msgstr "`/' inatteso, trovato e ignorato"
|
||||||
|
|
||||||
|
#: src/lex.c:106 src/reader.c:302
|
||||||
|
msgid "unterminated comment"
|
||||||
|
msgstr "commento non terminato"
|
||||||
|
|
||||||
|
#: src/lex.c:138
|
||||||
|
msgid "unexpected end of file"
|
||||||
|
msgstr "fine del file inattesa"
|
||||||
|
|
||||||
|
# Oder soll man den Begriff "Escapezeichen" verwenden?
|
||||||
|
#: src/lex.c:157
|
||||||
|
msgid "unescaped newline in constant"
|
||||||
|
msgstr "fine di linea non preceduta da `\\' in una costante"
|
||||||
|
|
||||||
|
#: src/lex.c:196
|
||||||
|
#, c-format
|
||||||
|
msgid "octal value outside range 0...255: `\\%o'"
|
||||||
|
msgstr "valore ottale fuori dall'intervallo 0...255: `\\%o'"
|
||||||
|
|
||||||
|
#: src/lex.c:221
|
||||||
|
#, c-format
|
||||||
|
msgid "hexadecimal value above 255: `\\x%x'"
|
||||||
|
msgstr "valore esadecimale superiore a 255: `\\x%x'"
|
||||||
|
|
||||||
|
#: src/lex.c:233
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||||
|
msgstr "sequenza di escape sconosciuta: `\\' seguito da `%s'"
|
||||||
|
|
||||||
|
#: src/lex.c:264
|
||||||
|
msgid "unterminated type name at end of file"
|
||||||
|
msgstr "nome di tipo non terminato a fine file"
|
||||||
|
|
||||||
|
#: src/lex.c:267
|
||||||
|
msgid "unterminated type name"
|
||||||
|
msgstr "nome di tipo non terminato"
|
||||||
|
|
||||||
|
#: src/lex.c:359
|
||||||
|
msgid "use \"...\" for multi-character literal tokens"
|
||||||
|
msgstr "usa \"...\" per token letterali di più caratteri"
|
||||||
|
|
||||||
|
#: src/lex.c:571
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' supports no argument: %s"
|
||||||
|
msgstr "`%s' non supporta argomenti: %s"
|
||||||
|
|
||||||
|
#: src/lex.c:588
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' requires an argument"
|
||||||
|
msgstr "`%s' richiede un argomento"
|
||||||
|
|
||||||
|
#: src/output.c:804
|
||||||
|
#, c-format
|
||||||
|
msgid "maximum table size (%d) exceeded"
|
||||||
|
msgstr "ecceduta la dimensione massima di una tabella (%d)"
|
||||||
|
|
||||||
|
#: src/print.c:44
|
||||||
|
#, c-format
|
||||||
|
msgid " type %d is %s\n"
|
||||||
|
msgstr " il tipo %d è %s\n"
|
||||||
|
|
||||||
|
#: src/print.c:106
|
||||||
|
#, c-format
|
||||||
|
msgid " (rule %d)"
|
||||||
|
msgstr " (regola %d)"
|
||||||
|
|
||||||
|
#: src/print.c:127
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\tshift, and go to state %d\n"
|
||||||
|
msgstr " %-4s\tshift e prosecuzione allo stato %d\n"
|
||||||
|
|
||||||
|
#: src/print.c:144
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\terror (nonassociative)\n"
|
||||||
|
msgstr " %-4s\terrore (non associativo)\n"
|
||||||
|
|
||||||
|
#: src/print.c:168
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\tgo to state %d\n"
|
||||||
|
msgstr " %-4s\tprosecuzione allo stato %d\n"
|
||||||
|
|
||||||
|
#: src/print.c:192 src/print.c:228
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
" $default\treduce using rule %d (%s)\n"
|
||||||
|
"\n"
|
||||||
|
msgstr ""
|
||||||
|
" $default\triduzione con la regola %d (%s)\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/print.c:224 src/print.c:301
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||||
|
msgstr " %-4s\t[riduzione con la regole %d (%s)]\n"
|
||||||
|
|
||||||
|
#: src/print.c:282 src/print.c:295
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||||
|
msgstr " %-4s\triduzione con la regola %d (%s)\n"
|
||||||
|
|
||||||
|
#: src/print.c:311
|
||||||
|
#, c-format
|
||||||
|
msgid " $default\treduce using rule %d (%s)\n"
|
||||||
|
msgstr " $default\triduzione con la regola %d (%s)\n"
|
||||||
|
|
||||||
|
#: src/print.c:327
|
||||||
|
msgid " $default\taccept\n"
|
||||||
|
msgstr " $default\taccetta\n"
|
||||||
|
|
||||||
|
#: src/print.c:329
|
||||||
|
msgid " NO ACTIONS\n"
|
||||||
|
msgstr " NESSUNA AZIONE\n"
|
||||||
|
|
||||||
|
#: src/print.c:342
|
||||||
|
#, c-format
|
||||||
|
msgid "state %d"
|
||||||
|
msgstr "stato %d"
|
||||||
|
|
||||||
|
#. rule # : LHS -> RHS
|
||||||
|
#: src/print.c:373
|
||||||
|
msgid "Grammar"
|
||||||
|
msgstr "Grammatica"
|
||||||
|
|
||||||
|
#: src/print.c:374
|
||||||
|
msgid "Number, Line, Rule"
|
||||||
|
msgstr "Numero, Linea, Regola"
|
||||||
|
|
||||||
|
#: src/print.c:379
|
||||||
|
#, c-format
|
||||||
|
msgid " %3d %3d %s ->"
|
||||||
|
msgstr " %3d %3d %s ->"
|
||||||
|
|
||||||
|
#: src/print.c:386
|
||||||
|
msgid "empty"
|
||||||
|
msgstr "vuoto"
|
||||||
|
|
||||||
|
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||||
|
#: src/print.c:393
|
||||||
|
msgid "Terminals, with rules where they appear"
|
||||||
|
msgstr "Simboli terminali e regole in cui appaiono"
|
||||||
|
|
||||||
|
#: src/print.c:416
|
||||||
|
msgid "Nonterminals, with rules where they appear"
|
||||||
|
msgstr "Simboli nonterminali e regole in cui appaiono"
|
||||||
|
|
||||||
|
#: src/print.c:442
|
||||||
|
msgid " on left:"
|
||||||
|
msgstr " nel primo membro:"
|
||||||
|
|
||||||
|
#: src/print.c:457
|
||||||
|
msgid " on right:"
|
||||||
|
msgstr " nel secondo membro:"
|
||||||
|
|
||||||
|
#: src/reader.c:100
|
||||||
|
msgid " Skipping to next \\n"
|
||||||
|
msgstr " Passo al successivo \\n"
|
||||||
|
|
||||||
|
#: src/reader.c:102
|
||||||
|
#, c-format
|
||||||
|
msgid " Skipping to next %c"
|
||||||
|
msgstr " Passo al successivo %c"
|
||||||
|
|
||||||
|
#: src/reader.c:153 src/reader.c:165
|
||||||
|
msgid "invalid $ value"
|
||||||
|
msgstr "valore $ non valido"
|
||||||
|
|
||||||
|
#: src/reader.c:192 src/reader.c:207
|
||||||
|
msgid "unterminated string at end of file"
|
||||||
|
msgstr "stringa non terminata alla fine del file"
|
||||||
|
|
||||||
|
#: src/reader.c:195
|
||||||
|
msgid "unterminated string"
|
||||||
|
msgstr "stringa non terminata"
|
||||||
|
|
||||||
|
#: src/reader.c:337 src/reader.c:401
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid value: %s%d"
|
||||||
|
msgstr "valore non valido: %s%d"
|
||||||
|
|
||||||
|
#: src/reader.c:351 src/reader.c:423
|
||||||
|
#, c-format
|
||||||
|
msgid "%s is invalid"
|
||||||
|
msgstr "%s non è valido"
|
||||||
|
|
||||||
|
#: src/reader.c:391
|
||||||
|
#, c-format
|
||||||
|
msgid "$$ of `%s' has no declared type"
|
||||||
|
msgstr "Manca una dichiarazione di tipo per $$ di `%s'"
|
||||||
|
|
||||||
|
#: src/reader.c:415
|
||||||
|
#, c-format
|
||||||
|
msgid "$%d of `%s' has no declared type"
|
||||||
|
msgstr "Manca una dichiarazione di tipo per $%d di `%s'"
|
||||||
|
|
||||||
|
#: src/reader.c:473
|
||||||
|
msgid "unterminated `%{' definition"
|
||||||
|
msgstr "definizione `%{' non terminata"
|
||||||
|
|
||||||
|
#: src/reader.c:518 src/reader.c:636 src/reader.c:686 src/reader.c:933
|
||||||
|
#, c-format
|
||||||
|
msgid "Premature EOF after %s"
|
||||||
|
msgstr "Fine di file prematura dopo %s"
|
||||||
|
|
||||||
|
#: src/reader.c:535
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol `%s' used more than once as a literal string"
|
||||||
|
msgstr "simbolo `%s' usato più di una volta in una stringa letterale"
|
||||||
|
|
||||||
|
#: src/reader.c:538
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol `%s' given more than one literal string"
|
||||||
|
msgstr "il simbolo `%s' dà pi` di una stringa letterale"
|
||||||
|
|
||||||
|
#: src/reader.c:559 src/reader.c:705
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol %s redefined"
|
||||||
|
msgstr "simbolo %s ridefinito"
|
||||||
|
|
||||||
|
#: src/reader.c:569 src/reader.c:651 src/reader.c:712
|
||||||
|
#, c-format
|
||||||
|
msgid "type redeclaration for %s"
|
||||||
|
msgstr "tipo dichiarato due volte per %s"
|
||||||
|
|
||||||
|
#: src/reader.c:581
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' is invalid in %s"
|
||||||
|
msgstr "`%s' non è valido in %s"
|
||||||
|
|
||||||
|
#: src/reader.c:599 src/reader.c:758
|
||||||
|
#, c-format
|
||||||
|
msgid "multiple %s declarations"
|
||||||
|
msgstr "dichiarazioni multiple per %s"
|
||||||
|
|
||||||
|
#: src/reader.c:601 src/reader.c:913 src/reader.c:928 src/reader.c:961
|
||||||
|
#: src/reader.c:975 src/reader.c:1178
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid %s declaration"
|
||||||
|
msgstr "dichiarazione %s non valida"
|
||||||
|
|
||||||
|
#: src/reader.c:621
|
||||||
|
msgid "%type declaration has no <typename>"
|
||||||
|
msgstr "dichiarazione %type senza <nome di tipo>"
|
||||||
|
|
||||||
|
#: src/reader.c:656
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid %%type declaration due to item: %s"
|
||||||
|
msgstr "dichiarazione %%type non valida per la presenza di `%s'"
|
||||||
|
|
||||||
|
#: src/reader.c:701
|
||||||
|
#, c-format
|
||||||
|
msgid "redefining precedence of %s"
|
||||||
|
msgstr "precedenza di `%s' definita due volte"
|
||||||
|
|
||||||
|
#: src/reader.c:724
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid text (%s) - number should be after identifier"
|
||||||
|
msgstr "testo non valido (%s) - il numero dovrebbe seguire l'identificatore"
|
||||||
|
|
||||||
|
#: src/reader.c:734
|
||||||
|
#, c-format
|
||||||
|
msgid "unexpected item: %s"
|
||||||
|
msgstr "elemento inatteso: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:790 src/reader.c:1149
|
||||||
|
#, c-format
|
||||||
|
msgid "unmatched %s"
|
||||||
|
msgstr "%s non bilanciato"
|
||||||
|
|
||||||
|
#: src/reader.c:819
|
||||||
|
#, c-format
|
||||||
|
msgid "argument of %%expect is not an integer"
|
||||||
|
msgstr "L'argomento di %%expect non è un intero"
|
||||||
|
|
||||||
|
#: src/reader.c:865
|
||||||
|
#, c-format
|
||||||
|
msgid "unrecognized item %s, expected an identifier"
|
||||||
|
msgstr "elemento %s non riconosciuto, atteso un identificatore"
|
||||||
|
|
||||||
|
#: src/reader.c:887
|
||||||
|
#, c-format
|
||||||
|
msgid "expected string constant instead of %s"
|
||||||
|
msgstr "attesa una costante stringa invece di %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1080
|
||||||
|
#, c-format
|
||||||
|
msgid "unrecognized: %s"
|
||||||
|
msgstr "non riconosciuto: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1085
|
||||||
|
msgid "no input grammar"
|
||||||
|
msgstr "nessuna grammatica di input"
|
||||||
|
|
||||||
|
#: src/reader.c:1090
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown character: %s"
|
||||||
|
msgstr "carattere sconosciuto: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1265
|
||||||
|
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||||
|
msgstr "regola malformata: simbolo iniziale non seguito da `:'"
|
||||||
|
|
||||||
|
#: src/reader.c:1272
|
||||||
|
msgid "grammar starts with vertical bar"
|
||||||
|
msgstr "la grammatica comincia con un `|'"
|
||||||
|
|
||||||
|
#: src/reader.c:1300
|
||||||
|
#, c-format
|
||||||
|
msgid "rule given for %s, which is a token"
|
||||||
|
msgstr "fornita una regola per il token %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1405
|
||||||
|
msgid "two @prec's in a row"
|
||||||
|
msgstr "due @prec di seguito"
|
||||||
|
|
||||||
|
#: src/reader.c:1414
|
||||||
|
#, c-format
|
||||||
|
msgid "%%guard present but %%semantic_parser not specified"
|
||||||
|
msgstr "trovato %%guard senza che sia specificato %%semantic_parser"
|
||||||
|
|
||||||
|
#: src/reader.c:1424
|
||||||
|
msgid "two actions at end of one rule"
|
||||||
|
msgstr "due azioni alla fine di una regola"
|
||||||
|
|
||||||
|
#: src/reader.c:1438
|
||||||
|
#, c-format
|
||||||
|
msgid "type clash (`%s' `%s') on default action"
|
||||||
|
msgstr "conflitto di tipo (`%s' e `%s') nell'azione di default"
|
||||||
|
|
||||||
|
#: src/reader.c:1444
|
||||||
|
msgid "empty rule for typed nonterminal, and no action"
|
||||||
|
msgstr "regola vuota e nessuna azione per un nonterminale con tipo"
|
||||||
|
|
||||||
|
#: src/reader.c:1450
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid input: %s"
|
||||||
|
msgstr "input non valido: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1457
|
||||||
|
msgid "no rules in the input grammar"
|
||||||
|
msgstr "nessuna regola nella grammatica di input"
|
||||||
|
|
||||||
|
#: src/reader.c:1465
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||||
|
msgstr "usato il simbolo %s, ma non è un token e non ha regole"
|
||||||
|
|
||||||
|
#: src/reader.c:1487
|
||||||
|
#, c-format
|
||||||
|
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||||
|
msgstr "troppi simboli (token e nonterminali); il massimo è %d"
|
||||||
|
|
||||||
|
#: src/reader.c:1551
|
||||||
|
#, c-format
|
||||||
|
msgid "tokens %s and %s both assigned number %d"
|
||||||
|
msgstr "i token %s e %s hanno lo stesso numero %d"
|
||||||
|
|
||||||
|
#: src/reader.c:1601
|
||||||
|
#, c-format
|
||||||
|
msgid "conflicting precedences for %s and %s"
|
||||||
|
msgstr "precedenze in conflitto per %s und %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1613
|
||||||
|
#, c-format
|
||||||
|
msgid "conflicting assoc values for %s and %s"
|
||||||
|
msgstr "associatività in conflitto per %s e %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1650
|
||||||
|
#, c-format
|
||||||
|
msgid "the start symbol %s is undefined"
|
||||||
|
msgstr "simbolo iniziale %s non definito"
|
||||||
|
|
||||||
|
#: src/reader.c:1652
|
||||||
|
#, c-format
|
||||||
|
msgid "the start symbol %s is a token"
|
||||||
|
msgstr "specificato il token %s come simbolo iniziale"
|
||||||
|
|
||||||
|
#: src/reader.c:1672
|
||||||
|
#, c-format
|
||||||
|
msgid "too many items (max %d)"
|
||||||
|
msgstr "troppi elementi (max %d)"
|
||||||
|
|
||||||
|
#: src/reduce.c:398
|
||||||
|
msgid "Useless nonterminals:"
|
||||||
|
msgstr "Simboli nonterminali inutili:"
|
||||||
|
|
||||||
|
#: src/reduce.c:411
|
||||||
|
msgid "Terminals which are not used:"
|
||||||
|
msgstr "Simboli terminali inutilizzati:"
|
||||||
|
|
||||||
|
#: src/reduce.c:422
|
||||||
|
msgid "Useless rules:"
|
||||||
|
msgstr "Regole inutili:"
|
||||||
|
|
||||||
|
#: src/reduce.c:494
|
||||||
|
#, c-format
|
||||||
|
msgid "%d rule never reduced\n"
|
||||||
|
msgid_plural "%d rules never reduced\n"
|
||||||
|
msgstr[0] "%d regola non applicata\n"
|
||||||
|
msgstr[1] "%d regole non applicate\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:502
|
||||||
|
#, c-format
|
||||||
|
msgid "%d useless nonterminal"
|
||||||
|
msgid_plural "%d useless nonterminals"
|
||||||
|
msgstr[0] "%d simbolo nonterminale inutilizzato"
|
||||||
|
msgstr[1] "%d simboli nonterminali inutilizzati"
|
||||||
|
|
||||||
|
#: src/reduce.c:508
|
||||||
|
msgid " and "
|
||||||
|
msgstr " e "
|
||||||
|
|
||||||
|
#: src/reduce.c:511
|
||||||
|
#, c-format
|
||||||
|
msgid "%d useless rule"
|
||||||
|
msgid_plural "%d useless rules"
|
||||||
|
msgstr[0] "%d regola inutile"
|
||||||
|
msgstr[1] "%d regole inutili"
|
||||||
|
|
||||||
|
#: src/reduce.c:542
|
||||||
|
#, c-format
|
||||||
|
msgid "Start symbol %s does not derive any sentence"
|
||||||
|
msgstr "dal simbolo iniziale %s non deriva alcuna frase"
|
||||||
|
|
||||||
|
#: lib/getopt.c:694
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%s' is ambiguous\n"
|
||||||
|
msgstr "%s: l'opzione `%s' è ambigua\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:719
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `--%s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: l'opzione `--%s' non ammette argomenti\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:724
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%c%s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: l'opzione `%c%s' non ammette argomenti\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:742 lib/getopt.c:915
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%s' requires an argument\n"
|
||||||
|
msgstr "%s: l'opzione `%s' richiede un argomento\n"
|
||||||
|
|
||||||
|
#. --option
|
||||||
|
#: lib/getopt.c:771
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: unrecognized option `--%s'\n"
|
||||||
|
msgstr "%s: opzione sconosciuta `--%s'\n"
|
||||||
|
|
||||||
|
#. +option or -option
|
||||||
|
#: lib/getopt.c:775
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: unrecognized option `%c%s'\n"
|
||||||
|
msgstr "%s: opzione sconosciuta `%c%s'\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
|
#: lib/getopt.c:801
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: illegal option -- %c\n"
|
||||||
|
msgstr "%s: opzione non valida -- %c\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:804
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: invalid option -- %c\n"
|
||||||
|
msgstr "%s: opzione non valida -- %c\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
|
#: lib/getopt.c:834 lib/getopt.c:964
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option requires an argument -- %c\n"
|
||||||
|
msgstr "%s: l'opzione richiede un argomento -- %c\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:881
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `-W %s' is ambiguous\n"
|
||||||
|
msgstr "%s: l'opzione `-W %s' è ambigua\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:899
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: l'opzione `-W %s' non ammette un argomento\n"
|
||||||
|
|
||||||
|
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
|
||||||
|
#. before exiting when memory is exhausted. Goes through gettext.
|
||||||
|
#: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
|
||||||
|
msgid "memory exhausted"
|
||||||
|
msgstr "memoria esaurita"
|
||||||
|
|
||||||
|
#. Get translations for open and closing quotation marks.
|
||||||
|
#.
|
||||||
|
#. The message catalog should translate "`" to a left
|
||||||
|
#. quotation mark suitable for the locale, and similarly for
|
||||||
|
#. "'". If the catalog has no translation,
|
||||||
|
#. locale_quoting_style quotes `like this', and
|
||||||
|
#. clocale_quoting_style quotes "like this".
|
||||||
|
#.
|
||||||
|
#. For example, an American English Unicode locale should
|
||||||
|
#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
|
||||||
|
#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
|
||||||
|
#. MARK). A British English Unicode locale should instead
|
||||||
|
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
|
||||||
|
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
|
||||||
|
#: lib/quotearg.c:274
|
||||||
|
msgid "`"
|
||||||
|
msgstr "`"
|
||||||
|
|
||||||
|
#: lib/quotearg.c:275
|
||||||
|
msgid "'"
|
||||||
|
msgstr "'"
|
||||||
|
|
||||||
|
#~ msgid " $ \tgo to state %d\n"
|
||||||
|
#~ msgstr " $ \tprosecuzione allo stato %d\n"
|
||||||
|
|
||||||
|
#~ msgid "%-4s\terror (nonassociative)"
|
||||||
|
#~ msgstr "%-4s\terrore (non associativo)"
|
||||||
|
|
||||||
|
#~ msgid "$default\treduce using rule %d (%s)"
|
||||||
|
#~ msgstr "$default\triduzione con la regola %d (%s)"
|
||||||
|
|
||||||
|
#~ msgid "unterminated %guard clause"
|
||||||
|
#~ msgstr "clausola %guard non terminata"
|
||||||
@@ -0,0 +1,925 @@
|
|||||||
|
# Japanese message for GNU bison 1.28
|
||||||
|
# Copyright (C) 1999 Free Software Foundation, Inc.
|
||||||
|
# Daisuke Yamashita <[email protected]>, 1999.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: GNU bison 1.28\n"
|
||||||
|
"POT-Creation-Date: 2002-01-29 17:17+0100\n"
|
||||||
|
"PO-Revision-Date: 1999-09-28 21:10+0900\n"
|
||||||
|
"Last-Translator: Daisuke Yamashita <[email protected]>\n"
|
||||||
|
"Language-Team: Japanese <[email protected]>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=EUC-JP\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/LR0.c:194
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "too many states (max %d)"
|
||||||
|
msgstr "%s の数が多すぎます (最大 %d)"
|
||||||
|
|
||||||
|
#: lib/error.c:128 lib/error.c:156 src/complain.c:99
|
||||||
|
msgid "Unknown system error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/complain.c:150
|
||||||
|
msgid "warning: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/complain.c:238
|
||||||
|
#, fuzzy
|
||||||
|
msgid "fatal error: "
|
||||||
|
msgstr "%s: 致命的エラー: "
|
||||||
|
|
||||||
|
#: src/conflicts.c:46
|
||||||
|
#, c-format
|
||||||
|
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||||
|
msgstr "状態 %d の規則 %d とトークン %s の競合を%sとして解決。\n"
|
||||||
|
|
||||||
|
#: src/conflicts.c:111 src/conflicts.c:133
|
||||||
|
msgid "reduce"
|
||||||
|
msgstr "還元"
|
||||||
|
|
||||||
|
#: src/conflicts.c:116 src/conflicts.c:128
|
||||||
|
msgid "shift"
|
||||||
|
msgstr "シフト"
|
||||||
|
|
||||||
|
#: src/conflicts.c:138
|
||||||
|
msgid "an error"
|
||||||
|
msgstr "エラー"
|
||||||
|
|
||||||
|
#: src/conflicts.c:291
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d shift/reduce conflict"
|
||||||
|
msgid_plural "%d shift/reduce conflicts"
|
||||||
|
msgstr[0] " %d シフト/還元衝突"
|
||||||
|
|
||||||
|
#: src/conflicts.c:298
|
||||||
|
#, fuzzy
|
||||||
|
msgid "and"
|
||||||
|
msgstr " および"
|
||||||
|
|
||||||
|
#: src/conflicts.c:304
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d reduce/reduce conflict"
|
||||||
|
msgid_plural "%d reduce/reduce conflicts"
|
||||||
|
msgstr[0] " %d 還元/還元衝突"
|
||||||
|
|
||||||
|
#: src/conflicts.c:329
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "State %d contains "
|
||||||
|
msgstr "状態 %d が含むのは"
|
||||||
|
|
||||||
|
#. If invoked with `--yacc', use the output format specified by
|
||||||
|
#. POSIX.
|
||||||
|
#: src/conflicts.c:376
|
||||||
|
msgid "conflicts: "
|
||||||
|
msgstr "衝突: "
|
||||||
|
|
||||||
|
#: src/conflicts.c:378
|
||||||
|
#, c-format
|
||||||
|
msgid " %d shift/reduce"
|
||||||
|
msgstr " %d シフト/還元"
|
||||||
|
|
||||||
|
#: src/conflicts.c:382
|
||||||
|
#, c-format
|
||||||
|
msgid " %d reduce/reduce"
|
||||||
|
msgstr " %d 還元/還元"
|
||||||
|
|
||||||
|
#: src/conflicts.c:387 src/reduce.c:499
|
||||||
|
#, c-format
|
||||||
|
msgid "%s contains "
|
||||||
|
msgstr "%s には"
|
||||||
|
|
||||||
|
#: src/conflicts.c:394
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "expected %d shift/reduce conflict\n"
|
||||||
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
|
msgstr[0] " %d シフト/還元衝突"
|
||||||
|
|
||||||
|
#: src/files.c:159
|
||||||
|
#, c-format
|
||||||
|
msgid "cannot open file `%s'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/files.c:178
|
||||||
|
msgid "cannot close file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:55
|
||||||
|
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:59
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s [OPTION]... FILE\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:63
|
||||||
|
msgid ""
|
||||||
|
"If a long option shows an argument as mandatory, then it is mandatory\n"
|
||||||
|
"for the equivalent short option also. Similarly for optional arguments.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:69
|
||||||
|
msgid ""
|
||||||
|
"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"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:76
|
||||||
|
msgid ""
|
||||||
|
"Parser:\n"
|
||||||
|
" -S, --skeleton=FILE specify the skeleton to use\n"
|
||||||
|
" -t, --debug instrument the parser for debugging\n"
|
||||||
|
" --locations enable locations computation\n"
|
||||||
|
" -p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n"
|
||||||
|
" -l, --no-lines don't generate `#line' directives\n"
|
||||||
|
" -n, --no-parser generate the tables only\n"
|
||||||
|
" -k, --token-table include a table of token names\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:88
|
||||||
|
msgid ""
|
||||||
|
"Output:\n"
|
||||||
|
" -d, --defines also produce a header file\n"
|
||||||
|
" -v, --verbose also produce an explanation of the automaton\n"
|
||||||
|
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||||
|
" -o, --output=FILE leave output to FILE\n"
|
||||||
|
" -g, --graph also produce a VCG description of the "
|
||||||
|
"automaton\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:98
|
||||||
|
msgid "Report bugs to <[email protected]>.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:112
|
||||||
|
#, c-format
|
||||||
|
msgid "bison (GNU Bison) %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:117
|
||||||
|
msgid ""
|
||||||
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:121
|
||||||
|
msgid ""
|
||||||
|
"This is free software; see the source for copying conditions. There is NO\n"
|
||||||
|
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:200 src/lex.c:599
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' is no longer supported"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:224
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s --help' for more information.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:233
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: no grammar file given\n"
|
||||||
|
msgstr "%s: 文法ファイルが指定されていません\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:237
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s: extra arguments ignored after `%s'\n"
|
||||||
|
msgstr "%s: '%s' より後ろの余分な引数は無視されました\n"
|
||||||
|
|
||||||
|
#: src/lalr.c:175
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "too many gotos (max %d)"
|
||||||
|
msgstr "%s の数が多すぎます (最大 %d)"
|
||||||
|
|
||||||
|
#: src/lex.c:77
|
||||||
|
msgid "unexpected `/' found and ignored"
|
||||||
|
msgstr "予期しない `/' が見つかり、無視されました"
|
||||||
|
|
||||||
|
#: src/lex.c:106 src/reader.c:302
|
||||||
|
msgid "unterminated comment"
|
||||||
|
msgstr "閉じていないコメントです"
|
||||||
|
|
||||||
|
#: src/lex.c:138
|
||||||
|
#, fuzzy
|
||||||
|
msgid "unexpected end of file"
|
||||||
|
msgstr "予期しないファイルの終端です"
|
||||||
|
|
||||||
|
#: src/lex.c:157
|
||||||
|
msgid "unescaped newline in constant"
|
||||||
|
msgstr "定数の中にエスケープされていない改行があります"
|
||||||
|
|
||||||
|
#: src/lex.c:196
|
||||||
|
#, c-format
|
||||||
|
msgid "octal value outside range 0...255: `\\%o'"
|
||||||
|
msgstr "8 進数の値が 0...255 の範囲外です: `\\%o'"
|
||||||
|
|
||||||
|
#: src/lex.c:221
|
||||||
|
#, c-format
|
||||||
|
msgid "hexadecimal value above 255: `\\x%x'"
|
||||||
|
msgstr "16 進数の値が 255 を越えています: `\\x%x'"
|
||||||
|
|
||||||
|
#: src/lex.c:233
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||||
|
msgstr "未知のエスケープシーケンス: `\\' の後に `%s'"
|
||||||
|
|
||||||
|
#: src/lex.c:264
|
||||||
|
msgid "unterminated type name at end of file"
|
||||||
|
msgstr "閉じられていないタイプ名が、ファイル末尾にあります"
|
||||||
|
|
||||||
|
#: src/lex.c:267
|
||||||
|
msgid "unterminated type name"
|
||||||
|
msgstr "閉じられていないタイプ名があります"
|
||||||
|
|
||||||
|
#: src/lex.c:359
|
||||||
|
msgid "use \"...\" for multi-character literal tokens"
|
||||||
|
msgstr "複数文字のリテラルトークンには \"...\" を使いましょう"
|
||||||
|
|
||||||
|
#: src/lex.c:571
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' supports no argument: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/lex.c:588
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "`%s' requires an argument"
|
||||||
|
msgstr "%s: オプション `%s' は引数を要求します\n"
|
||||||
|
|
||||||
|
#: src/output.c:804
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "maximum table size (%d) exceeded"
|
||||||
|
msgstr "最大テーブルサイズ (%s) を超えました"
|
||||||
|
|
||||||
|
#: src/print.c:44
|
||||||
|
#, c-format
|
||||||
|
msgid " type %d is %s\n"
|
||||||
|
msgstr " タイプ %d は %s です\n"
|
||||||
|
|
||||||
|
#: src/print.c:106
|
||||||
|
#, c-format
|
||||||
|
msgid " (rule %d)"
|
||||||
|
msgstr " (規則 %d)"
|
||||||
|
|
||||||
|
#: src/print.c:127
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\tshift, and go to state %d\n"
|
||||||
|
msgstr " %-4s\tシフト、および状態 %d へ\n"
|
||||||
|
|
||||||
|
#: src/print.c:144
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\terror (nonassociative)\n"
|
||||||
|
msgstr " %-4s\tエラー (非結合)\n"
|
||||||
|
|
||||||
|
#: src/print.c:168
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\tgo to state %d\n"
|
||||||
|
msgstr " %-4s\t状態 %d へ\n"
|
||||||
|
|
||||||
|
#: src/print.c:192 src/print.c:228
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
" $default\treduce using rule %d (%s)\n"
|
||||||
|
"\n"
|
||||||
|
msgstr ""
|
||||||
|
" $default\t規則 %d を利用して還元 (%s)\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/print.c:224 src/print.c:301
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||||
|
msgstr " %-4s\t[規則 %d を利用して還元 (%s)]\n"
|
||||||
|
|
||||||
|
#: src/print.c:282 src/print.c:295
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||||
|
msgstr " %-4s\t規則 %d を利用して還元 (%s)\n"
|
||||||
|
|
||||||
|
#: src/print.c:311
|
||||||
|
#, c-format
|
||||||
|
msgid " $default\treduce using rule %d (%s)\n"
|
||||||
|
msgstr " $default\t規則 %d を利用して還元 (%s)\n"
|
||||||
|
|
||||||
|
#: src/print.c:327
|
||||||
|
msgid " $default\taccept\n"
|
||||||
|
msgstr " $default\taccept\n"
|
||||||
|
|
||||||
|
#: src/print.c:329
|
||||||
|
msgid " NO ACTIONS\n"
|
||||||
|
msgstr " 動作無し\n"
|
||||||
|
|
||||||
|
#: src/print.c:342
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "state %d"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"状態 %d\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#. rule # : LHS -> RHS
|
||||||
|
#: src/print.c:373
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Grammar"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"文法\n"
|
||||||
|
|
||||||
|
#: src/print.c:374
|
||||||
|
msgid "Number, Line, Rule"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/print.c:379
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " %3d %3d %s ->"
|
||||||
|
msgstr "規則 %-4d %s ->"
|
||||||
|
|
||||||
|
#: src/print.c:386
|
||||||
|
msgid "empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||||
|
#: src/print.c:393
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Terminals, with rules where they appear"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"終端トークン、およびそこに現れた規則\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/print.c:416
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Nonterminals, with rules where they appear"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"非終端トークン、およびそこに現れた規則\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/print.c:442
|
||||||
|
msgid " on left:"
|
||||||
|
msgstr " 左辺:"
|
||||||
|
|
||||||
|
#: src/print.c:457
|
||||||
|
msgid " on right:"
|
||||||
|
msgstr " 右辺:"
|
||||||
|
|
||||||
|
#: src/reader.c:100
|
||||||
|
msgid " Skipping to next \\n"
|
||||||
|
msgstr " 次の \\n にスキップ"
|
||||||
|
|
||||||
|
#: src/reader.c:102
|
||||||
|
#, c-format
|
||||||
|
msgid " Skipping to next %c"
|
||||||
|
msgstr " 次の %c にスキップ"
|
||||||
|
|
||||||
|
#: src/reader.c:153 src/reader.c:165
|
||||||
|
msgid "invalid $ value"
|
||||||
|
msgstr "無効な $ の値"
|
||||||
|
|
||||||
|
#: src/reader.c:192 src/reader.c:207
|
||||||
|
msgid "unterminated string at end of file"
|
||||||
|
msgstr "閉じられていない文字列がファイル末尾にあります"
|
||||||
|
|
||||||
|
#: src/reader.c:195
|
||||||
|
msgid "unterminated string"
|
||||||
|
msgstr "閉じられていない文字列"
|
||||||
|
|
||||||
|
#: src/reader.c:337 src/reader.c:401
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "invalid value: %s%d"
|
||||||
|
msgstr "無効な $ の値"
|
||||||
|
|
||||||
|
#: src/reader.c:351 src/reader.c:423
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s is invalid"
|
||||||
|
msgstr "@%s は無効です"
|
||||||
|
|
||||||
|
#: src/reader.c:391
|
||||||
|
#, c-format
|
||||||
|
msgid "$$ of `%s' has no declared type"
|
||||||
|
msgstr "`%s' の $$ に宣言のない型があります"
|
||||||
|
|
||||||
|
#: src/reader.c:415
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "$%d of `%s' has no declared type"
|
||||||
|
msgstr "`%s' の $%s に宣言のない型があります"
|
||||||
|
|
||||||
|
#: src/reader.c:473
|
||||||
|
msgid "unterminated `%{' definition"
|
||||||
|
msgstr "`%{' 定義 が閉じられていません"
|
||||||
|
|
||||||
|
#: src/reader.c:518 src/reader.c:636 src/reader.c:686 src/reader.c:933
|
||||||
|
#, c-format
|
||||||
|
msgid "Premature EOF after %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/reader.c:535
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol `%s' used more than once as a literal string"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/reader.c:538
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol `%s' given more than one literal string"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/reader.c:559 src/reader.c:705
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol %s redefined"
|
||||||
|
msgstr "シンボル %s が再定義されました"
|
||||||
|
|
||||||
|
#: src/reader.c:569 src/reader.c:651 src/reader.c:712
|
||||||
|
#, c-format
|
||||||
|
msgid "type redeclaration for %s"
|
||||||
|
msgstr "%s の型が再定義されました"
|
||||||
|
|
||||||
|
#: src/reader.c:581
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' is invalid in %s"
|
||||||
|
msgstr "%2$s 内の `%1$s' は無効です"
|
||||||
|
|
||||||
|
#: src/reader.c:599 src/reader.c:758
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "multiple %s declarations"
|
||||||
|
msgstr "複数の %start が宣言されました"
|
||||||
|
|
||||||
|
#: src/reader.c:601 src/reader.c:913 src/reader.c:928 src/reader.c:961
|
||||||
|
#: src/reader.c:975 src/reader.c:1178
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "invalid %s declaration"
|
||||||
|
msgstr "無効な %start が宣言されました"
|
||||||
|
|
||||||
|
#: src/reader.c:621
|
||||||
|
msgid "%type declaration has no <typename>"
|
||||||
|
msgstr "%type 宣言に <タイプ名> がありません"
|
||||||
|
|
||||||
|
#: src/reader.c:656
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "invalid %%type declaration due to item: %s"
|
||||||
|
msgstr "アイテムに与えられるべき %%type 宣言が無効です: `%s'"
|
||||||
|
|
||||||
|
#: src/reader.c:701
|
||||||
|
#, c-format
|
||||||
|
msgid "redefining precedence of %s"
|
||||||
|
msgstr "%s に先行した再定義です"
|
||||||
|
|
||||||
|
#: src/reader.c:724
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid text (%s) - number should be after identifier"
|
||||||
|
msgstr "無効なテキスト (%s) - 数値は識別子の後ろにあるべきです"
|
||||||
|
|
||||||
|
#: src/reader.c:734
|
||||||
|
#, c-format
|
||||||
|
msgid "unexpected item: %s"
|
||||||
|
msgstr "予期せぬアイテム: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:790 src/reader.c:1149
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "unmatched %s"
|
||||||
|
msgstr "対応のない `{' です"
|
||||||
|
|
||||||
|
#: src/reader.c:819
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "argument of %%expect is not an integer"
|
||||||
|
msgstr "%expect の引数が整数値ではありません"
|
||||||
|
|
||||||
|
#: src/reader.c:865
|
||||||
|
#, c-format
|
||||||
|
msgid "unrecognized item %s, expected an identifier"
|
||||||
|
msgstr "認識できないアイテム %s、ここでは識別子が期待されます"
|
||||||
|
|
||||||
|
#: src/reader.c:887
|
||||||
|
#, c-format
|
||||||
|
msgid "expected string constant instead of %s"
|
||||||
|
msgstr "ここでは %s ではなく文字列定数が期待されます"
|
||||||
|
|
||||||
|
#: src/reader.c:1080
|
||||||
|
#, c-format
|
||||||
|
msgid "unrecognized: %s"
|
||||||
|
msgstr "認識できない: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1085
|
||||||
|
msgid "no input grammar"
|
||||||
|
msgstr "文法の入力が無い"
|
||||||
|
|
||||||
|
#: src/reader.c:1090
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown character: %s"
|
||||||
|
msgstr "未知の文字: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1265
|
||||||
|
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||||
|
msgstr "邪悪な規則: 初期化シンボルにコロン (:) が続いていません"
|
||||||
|
|
||||||
|
#: src/reader.c:1272
|
||||||
|
msgid "grammar starts with vertical bar"
|
||||||
|
msgstr "文法は縦棒 (|) で始めます"
|
||||||
|
|
||||||
|
#: src/reader.c:1300
|
||||||
|
#, c-format
|
||||||
|
msgid "rule given for %s, which is a token"
|
||||||
|
msgstr "%s に規則が与えられ、それはトークンとなります"
|
||||||
|
|
||||||
|
#: src/reader.c:1405
|
||||||
|
msgid "two @prec's in a row"
|
||||||
|
msgstr "@prec のもの二つが同列になっています"
|
||||||
|
|
||||||
|
#: src/reader.c:1414
|
||||||
|
#, c-format
|
||||||
|
msgid "%%guard present but %%semantic_parser not specified"
|
||||||
|
msgstr "%%guard がありますが %%semantic_parser が指定されていません"
|
||||||
|
|
||||||
|
#: src/reader.c:1424
|
||||||
|
msgid "two actions at end of one rule"
|
||||||
|
msgstr "一つの規則の終りに二つの動作を指定しています"
|
||||||
|
|
||||||
|
#: src/reader.c:1438
|
||||||
|
#, c-format
|
||||||
|
msgid "type clash (`%s' `%s') on default action"
|
||||||
|
msgstr "初期状態の動作では型 (`%s' `%s') が衝突します"
|
||||||
|
|
||||||
|
#: src/reader.c:1444
|
||||||
|
msgid "empty rule for typed nonterminal, and no action"
|
||||||
|
msgstr "空の型付き非終端アイテム用規則であり、動作が起りません"
|
||||||
|
|
||||||
|
#: src/reader.c:1450
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid input: %s"
|
||||||
|
msgstr "無効な入力: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1457
|
||||||
|
msgid "no rules in the input grammar"
|
||||||
|
msgstr "入力した文法に規則が定義されていません"
|
||||||
|
|
||||||
|
#: src/reader.c:1465
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||||
|
msgstr ""
|
||||||
|
"シンボル %s が使われていますが、トークンとして定義されておらず、規則を持ちま"
|
||||||
|
"せん"
|
||||||
|
|
||||||
|
#: src/reader.c:1487
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||||
|
msgstr "シンボルが多すぎます (トークンと非終端アイテム) -- 最大 %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1551
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "tokens %s and %s both assigned number %d"
|
||||||
|
msgstr "トークン %s と %s の双方が番号 %s に割り当てられました"
|
||||||
|
|
||||||
|
#: src/reader.c:1601
|
||||||
|
#, c-format
|
||||||
|
msgid "conflicting precedences for %s and %s"
|
||||||
|
msgstr "先行している %s と %s で競合が生じています"
|
||||||
|
|
||||||
|
#: src/reader.c:1613
|
||||||
|
#, c-format
|
||||||
|
msgid "conflicting assoc values for %s and %s"
|
||||||
|
msgstr "非結合値 %s と %s で競合が生じています"
|
||||||
|
|
||||||
|
#: src/reader.c:1650
|
||||||
|
#, c-format
|
||||||
|
msgid "the start symbol %s is undefined"
|
||||||
|
msgstr "開始シンボル %s は定義されていません"
|
||||||
|
|
||||||
|
#: src/reader.c:1652
|
||||||
|
#, c-format
|
||||||
|
msgid "the start symbol %s is a token"
|
||||||
|
msgstr "開始シンボル %s はトークンです"
|
||||||
|
|
||||||
|
#: src/reader.c:1672
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "too many items (max %d)"
|
||||||
|
msgstr "%s の数が多すぎます (最大 %d)"
|
||||||
|
|
||||||
|
#: src/reduce.c:398
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Useless nonterminals:"
|
||||||
|
msgstr ""
|
||||||
|
"不使用非終端子:\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:411
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Terminals which are not used:"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"利用されない終端子:\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:422
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Useless rules:"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"不使用規則:\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:494
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d rule never reduced\n"
|
||||||
|
msgid_plural "%d rules never reduced\n"
|
||||||
|
msgstr[0] "%d 個の規則は決して還元されません\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:502
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d useless nonterminal"
|
||||||
|
msgid_plural "%d useless nonterminals"
|
||||||
|
msgstr[0] "%d 個の不使用非終端子%.0s"
|
||||||
|
|
||||||
|
#: src/reduce.c:508
|
||||||
|
msgid " and "
|
||||||
|
msgstr "および"
|
||||||
|
|
||||||
|
#: src/reduce.c:511
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d useless rule"
|
||||||
|
msgid_plural "%d useless rules"
|
||||||
|
msgstr[0] "%d 個の不使用規則%.0s"
|
||||||
|
|
||||||
|
#: src/reduce.c:542
|
||||||
|
#, c-format
|
||||||
|
msgid "Start symbol %s does not derive any sentence"
|
||||||
|
msgstr "開始シンボル %s はどの文にも由来しません"
|
||||||
|
|
||||||
|
#: lib/getopt.c:694
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%s' is ambiguous\n"
|
||||||
|
msgstr "%s: オプション `%s' は曖昧です\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:719
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `--%s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: オプション `--%s' は引数を許しません\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:724
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%c%s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: オプション `%c%s' は引数を許しません\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:742 lib/getopt.c:915
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%s' requires an argument\n"
|
||||||
|
msgstr "%s: オプション `%s' は引数を要求します\n"
|
||||||
|
|
||||||
|
#. --option
|
||||||
|
#: lib/getopt.c:771
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: unrecognized option `--%s'\n"
|
||||||
|
msgstr "%s: 認識できないオプション `--%s' です\n"
|
||||||
|
|
||||||
|
#. +option or -option
|
||||||
|
#: lib/getopt.c:775
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: unrecognized option `%c%s'\n"
|
||||||
|
msgstr "%s: 認識できないオプション `%c%s' です\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
|
#: lib/getopt.c:801
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: illegal option -- %c\n"
|
||||||
|
msgstr "%s: 定格外のオプション -- %c\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:804
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: invalid option -- %c\n"
|
||||||
|
msgstr "%s: 無効なオプション -- %c\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
|
#: lib/getopt.c:834 lib/getopt.c:964
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option requires an argument -- %c\n"
|
||||||
|
msgstr "%s: オプションは引数を要求します -- %c\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:881
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `-W %s' is ambiguous\n"
|
||||||
|
msgstr "%s: オプション `-W %s' は曖昧です\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:899
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: オプション `-W %s' は引数を許しません\n"
|
||||||
|
|
||||||
|
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
|
||||||
|
#. before exiting when memory is exhausted. Goes through gettext.
|
||||||
|
#: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
|
||||||
|
#, fuzzy
|
||||||
|
msgid "memory exhausted"
|
||||||
|
msgstr "%s: メモリを使い果たしました\n"
|
||||||
|
|
||||||
|
#. Get translations for open and closing quotation marks.
|
||||||
|
#.
|
||||||
|
#. The message catalog should translate "`" to a left
|
||||||
|
#. quotation mark suitable for the locale, and similarly for
|
||||||
|
#. "'". If the catalog has no translation,
|
||||||
|
#. locale_quoting_style quotes `like this', and
|
||||||
|
#. clocale_quoting_style quotes "like this".
|
||||||
|
#.
|
||||||
|
#. For example, an American English Unicode locale should
|
||||||
|
#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
|
||||||
|
#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
|
||||||
|
#. MARK). A British English Unicode locale should instead
|
||||||
|
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
|
||||||
|
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
|
||||||
|
#: lib/quotearg.c:274
|
||||||
|
msgid "`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/quotearg.c:275
|
||||||
|
msgid "'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid "%-4s\terror (nonassociative)"
|
||||||
|
#~ msgstr " %-4s\tエラー (非結合)\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid "$default\treduce using rule %d (%s)"
|
||||||
|
#~ msgstr " $default\t規則 %d を利用して還元 (%s)\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid "unterminated %guard clause"
|
||||||
|
#~ msgstr "閉じられていない %%guard 節です"
|
||||||
|
|
||||||
|
#~ msgid " $ \tgo to state %d\n"
|
||||||
|
#~ msgstr " $ \t状態 %d へ\n"
|
||||||
|
|
||||||
|
#~ msgid "%s: internal error: %s\n"
|
||||||
|
#~ msgstr "%s: 内部エラー: %s\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Variables\n"
|
||||||
|
#~ "---------\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "変数\n"
|
||||||
|
#~ "---------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid "Value Sprec Sassoc Tag\n"
|
||||||
|
#~ msgstr "値 前置 結合 タグ\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Rules\n"
|
||||||
|
#~ "-----\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "規則\n"
|
||||||
|
#~ "-----\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Rules interpreted\n"
|
||||||
|
#~ "-----------------\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "解釈された規則\n"
|
||||||
|
#~ "-----------------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid " 1 shift/reduce conflict"
|
||||||
|
#~ msgstr " 1 シフト/還元衝突"
|
||||||
|
|
||||||
|
#~ msgid " 1 reduce/reduce conflict"
|
||||||
|
#~ msgstr " 1 還元/還元衝突"
|
||||||
|
|
||||||
|
#~ msgid "%s contains"
|
||||||
|
#~ msgstr "%s には、"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid "DERIVES"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "DERIVES\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid "%s derives"
|
||||||
|
#~ msgstr "%s は以下から派生"
|
||||||
|
|
||||||
|
#~ msgid "Entering set_nullable"
|
||||||
|
#~ msgstr "set_nullable に入ります"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "還元ファイル %s で %d 個の終端子%.0s, %d 個の非終端子%.0s, %d 個の規則%.0s"
|
||||||
|
#~ "が定義されました\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "FIRSTS\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "FIRSTS\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "%s firsts\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "%s firsts\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "FDERIVES\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "FDERIVES\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "%s derives\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "%s は以下から派生\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||||
|
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||||
|
#~ " [--verbose] [--version] [--help] [--yacc]\n"
|
||||||
|
#~ " [--no-parser] [--token-table]\n"
|
||||||
|
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
|
||||||
|
#~ " [--output=outfile] grammar-file\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Report bugs to [email protected]\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "使い方: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||||
|
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||||
|
#~ " [--verbose] [--version] [--help] [--yacc]\n"
|
||||||
|
#~ " [--no-parser] [--token-table]\n"
|
||||||
|
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
|
||||||
|
#~ " [--output=outfile] 文法ファイル\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "バグを見つけたら [email protected] まで連絡を。\n"
|
||||||
|
|
||||||
|
#~ msgid "gotos"
|
||||||
|
#~ msgstr "goto"
|
||||||
|
|
||||||
|
#~ msgid "%s:%d: fatal error: "
|
||||||
|
#~ msgstr "%s:%d: 致命的エラー: "
|
||||||
|
|
||||||
|
#~ msgid "%s: "
|
||||||
|
#~ msgstr "%s: "
|
||||||
|
|
||||||
|
#~ msgid "%s:%d: "
|
||||||
|
#~ msgstr "%s:%d: "
|
||||||
|
|
||||||
|
#~ msgid "\t\t/* empty */"
|
||||||
|
#~ msgstr "\t\t/* 空 */"
|
||||||
|
|
||||||
|
#~ msgid "unterminated comment in `%{' definition"
|
||||||
|
#~ msgstr "`%{' 定義 に閉じられていないコメントがあります"
|
||||||
|
|
||||||
|
#~ msgid "multiple %union declarations"
|
||||||
|
#~ msgstr "複数の %union 宣言です"
|
||||||
|
|
||||||
|
#~ msgid "unterminated comment at end of file"
|
||||||
|
#~ msgstr "ファイル末尾に閉じられていないコメントがあります"
|
||||||
|
|
||||||
|
#~ msgid "unmatched close-brace (`}')"
|
||||||
|
#~ msgstr "対応のない閉じブレース (`}') です"
|
||||||
|
|
||||||
|
#~ msgid "unmatched right brace (`}')"
|
||||||
|
#~ msgstr "対応のない右ブレース (`}') です"
|
||||||
|
|
||||||
|
#~ msgid "$%s is invalid"
|
||||||
|
#~ msgstr "$%s は無効です"
|
||||||
|
|
||||||
|
#~ msgid "invalid @-construct"
|
||||||
|
#~ msgstr "無効な @-コンストラクトです"
|
||||||
|
|
||||||
|
#~ msgid "ill-formed %type declaration"
|
||||||
|
#~ msgstr "邪悪な %type 宣言です"
|
||||||
@@ -0,0 +1,918 @@
|
|||||||
|
# Dutch messages for GNU bison.
|
||||||
|
# Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
# Erick Branderhorst <[email protected]>, 1996.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: bison 1.25\n"
|
||||||
|
"POT-Creation-Date: 2002-01-29 17:17+0100\n"
|
||||||
|
"PO-Revision-Date: 1996-08-27 15:34 MET DST\n"
|
||||||
|
"Last-Translator: Erick Branderhorst <[email protected]>\n"
|
||||||
|
"Language-Team: Dutch <[email protected]>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||||
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
|
||||||
|
#: src/LR0.c:194
|
||||||
|
#, c-format
|
||||||
|
msgid "too many states (max %d)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/error.c:128 lib/error.c:156 src/complain.c:99
|
||||||
|
msgid "Unknown system error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/complain.c:150
|
||||||
|
msgid "warning: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/complain.c:238
|
||||||
|
#, fuzzy
|
||||||
|
msgid "fatal error: "
|
||||||
|
msgstr "fatale fout: %s\n"
|
||||||
|
|
||||||
|
#: src/conflicts.c:46
|
||||||
|
#, c-format
|
||||||
|
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||||
|
msgstr "Conflict in stadium %d tussen regel %d en teken %s opgelost als %s.\n"
|
||||||
|
|
||||||
|
#: src/conflicts.c:111 src/conflicts.c:133
|
||||||
|
msgid "reduce"
|
||||||
|
msgstr "reduceer"
|
||||||
|
|
||||||
|
#: src/conflicts.c:116 src/conflicts.c:128
|
||||||
|
msgid "shift"
|
||||||
|
msgstr "verschuif"
|
||||||
|
|
||||||
|
#: src/conflicts.c:138
|
||||||
|
msgid "an error"
|
||||||
|
msgstr "een fout"
|
||||||
|
|
||||||
|
#: src/conflicts.c:291
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d shift/reduce conflict"
|
||||||
|
msgid_plural "%d shift/reduce conflicts"
|
||||||
|
msgstr[0] " %d verschuif/reduceer conflicten"
|
||||||
|
|
||||||
|
#: src/conflicts.c:298
|
||||||
|
#, fuzzy
|
||||||
|
msgid "and"
|
||||||
|
msgstr " en"
|
||||||
|
|
||||||
|
#: src/conflicts.c:304
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d reduce/reduce conflict"
|
||||||
|
msgid_plural "%d reduce/reduce conflicts"
|
||||||
|
msgstr[0] " %d reduceer/reduceer conflicten"
|
||||||
|
|
||||||
|
#: src/conflicts.c:329
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "State %d contains "
|
||||||
|
msgstr "Stadium %d bevat"
|
||||||
|
|
||||||
|
#. If invoked with `--yacc', use the output format specified by
|
||||||
|
#. POSIX.
|
||||||
|
#: src/conflicts.c:376
|
||||||
|
msgid "conflicts: "
|
||||||
|
msgstr "conflictueerd: "
|
||||||
|
|
||||||
|
#: src/conflicts.c:378
|
||||||
|
#, c-format
|
||||||
|
msgid " %d shift/reduce"
|
||||||
|
msgstr " %d vershuif/reduceer"
|
||||||
|
|
||||||
|
#: src/conflicts.c:382
|
||||||
|
#, c-format
|
||||||
|
msgid " %d reduce/reduce"
|
||||||
|
msgstr " %d reduceer/reduceer"
|
||||||
|
|
||||||
|
#: src/conflicts.c:387 src/reduce.c:499
|
||||||
|
#, c-format
|
||||||
|
msgid "%s contains "
|
||||||
|
msgstr "%s bevat"
|
||||||
|
|
||||||
|
#: src/conflicts.c:394
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "expected %d shift/reduce conflict\n"
|
||||||
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
|
msgstr[0] " %d verschuif/reduceer conflicten"
|
||||||
|
|
||||||
|
#: src/files.c:159
|
||||||
|
#, c-format
|
||||||
|
msgid "cannot open file `%s'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/files.c:178
|
||||||
|
msgid "cannot close file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:55
|
||||||
|
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:59
|
||||||
|
#, c-format
|
||||||
|
msgid "Usage: %s [OPTION]... FILE\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:63
|
||||||
|
msgid ""
|
||||||
|
"If a long option shows an argument as mandatory, then it is mandatory\n"
|
||||||
|
"for the equivalent short option also. Similarly for optional arguments.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:69
|
||||||
|
msgid ""
|
||||||
|
"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"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:76
|
||||||
|
msgid ""
|
||||||
|
"Parser:\n"
|
||||||
|
" -S, --skeleton=FILE specify the skeleton to use\n"
|
||||||
|
" -t, --debug instrument the parser for debugging\n"
|
||||||
|
" --locations enable locations computation\n"
|
||||||
|
" -p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n"
|
||||||
|
" -l, --no-lines don't generate `#line' directives\n"
|
||||||
|
" -n, --no-parser generate the tables only\n"
|
||||||
|
" -k, --token-table include a table of token names\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:88
|
||||||
|
msgid ""
|
||||||
|
"Output:\n"
|
||||||
|
" -d, --defines also produce a header file\n"
|
||||||
|
" -v, --verbose also produce an explanation of the automaton\n"
|
||||||
|
" -b, --file-prefix=PREFIX specify a PREFIX for output files\n"
|
||||||
|
" -o, --output=FILE leave output to FILE\n"
|
||||||
|
" -g, --graph also produce a VCG description of the "
|
||||||
|
"automaton\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:98
|
||||||
|
msgid "Report bugs to <[email protected]>.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:112
|
||||||
|
#, c-format
|
||||||
|
msgid "bison (GNU Bison) %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:117
|
||||||
|
msgid ""
|
||||||
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:121
|
||||||
|
msgid ""
|
||||||
|
"This is free software; see the source for copying conditions. There is NO\n"
|
||||||
|
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:200 src/lex.c:599
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' is no longer supported"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:224
|
||||||
|
#, c-format
|
||||||
|
msgid "Try `%s --help' for more information.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/getargs.c:233
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: no grammar file given\n"
|
||||||
|
msgstr "%s: geen grammatica bestand gegeven\n"
|
||||||
|
|
||||||
|
#: src/getargs.c:237
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s: extra arguments ignored after `%s'\n"
|
||||||
|
msgstr "%s: extra argumenten genegeerd na '%s'\n"
|
||||||
|
|
||||||
|
#: src/lalr.c:175
|
||||||
|
#, c-format
|
||||||
|
msgid "too many gotos (max %d)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/lex.c:77
|
||||||
|
msgid "unexpected `/' found and ignored"
|
||||||
|
msgstr "onverwachte `/' gevonden en genegeerd"
|
||||||
|
|
||||||
|
#: src/lex.c:106 src/reader.c:302
|
||||||
|
msgid "unterminated comment"
|
||||||
|
msgstr "ongetermineerd commentaar"
|
||||||
|
|
||||||
|
#: src/lex.c:138
|
||||||
|
#, fuzzy
|
||||||
|
msgid "unexpected end of file"
|
||||||
|
msgstr "Onverwacht bestandseinde"
|
||||||
|
|
||||||
|
#: src/lex.c:157
|
||||||
|
msgid "unescaped newline in constant"
|
||||||
|
msgstr "niet geescapete nieuwe regel in constante"
|
||||||
|
|
||||||
|
#: src/lex.c:196
|
||||||
|
#, c-format
|
||||||
|
msgid "octal value outside range 0...255: `\\%o'"
|
||||||
|
msgstr "octale waarde buiten domein 0...255: `\\%o'"
|
||||||
|
|
||||||
|
#: src/lex.c:221
|
||||||
|
#, c-format
|
||||||
|
msgid "hexadecimal value above 255: `\\x%x'"
|
||||||
|
msgstr "hexadecimale waarde boven 255: `\\x%x'"
|
||||||
|
|
||||||
|
#: src/lex.c:233
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||||
|
msgstr "onbekende escape reeks: `\\' gevolgd door `%s'"
|
||||||
|
|
||||||
|
#: src/lex.c:264
|
||||||
|
msgid "unterminated type name at end of file"
|
||||||
|
msgstr "niet getermineerd type naam aan het einde van bestand"
|
||||||
|
|
||||||
|
#: src/lex.c:267
|
||||||
|
msgid "unterminated type name"
|
||||||
|
msgstr "niet getermineerd type naam"
|
||||||
|
|
||||||
|
#: src/lex.c:359
|
||||||
|
msgid "use \"...\" for multi-character literal tokens"
|
||||||
|
msgstr "gebruik \"...\" voor meerdere karakters literal tekens"
|
||||||
|
|
||||||
|
#: src/lex.c:571
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' supports no argument: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/lex.c:588
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "`%s' requires an argument"
|
||||||
|
msgstr "%s: optie `%s' vereist een argument\n"
|
||||||
|
|
||||||
|
#: src/output.c:804
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "maximum table size (%d) exceeded"
|
||||||
|
msgstr "maximale tabel grootte (%s) overschreden"
|
||||||
|
|
||||||
|
#: src/print.c:44
|
||||||
|
#, c-format
|
||||||
|
msgid " type %d is %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/print.c:106
|
||||||
|
#, c-format
|
||||||
|
msgid " (rule %d)"
|
||||||
|
msgstr " (regel %d)"
|
||||||
|
|
||||||
|
#: src/print.c:127
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\tshift, and go to state %d\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/print.c:144
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\terror (nonassociative)\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/print.c:168
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\tgo to state %d\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/print.c:192 src/print.c:228
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
" $default\treduce using rule %d (%s)\n"
|
||||||
|
"\n"
|
||||||
|
msgstr ""
|
||||||
|
" $default\treduce using rule %d (%s)\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/print.c:224 src/print.c:301
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
||||||
|
msgstr " %-4s\t[reduceer gebruikt regel %d (%s)]\n"
|
||||||
|
|
||||||
|
#: src/print.c:282 src/print.c:295
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/print.c:311
|
||||||
|
#, c-format
|
||||||
|
msgid " $default\treduce using rule %d (%s)\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/print.c:327
|
||||||
|
msgid " $default\taccept\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/print.c:329
|
||||||
|
msgid " NO ACTIONS\n"
|
||||||
|
msgstr " GEEN AKTIES\n"
|
||||||
|
|
||||||
|
#: src/print.c:342
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "state %d"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"stadium %d\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#. rule # : LHS -> RHS
|
||||||
|
#: src/print.c:373
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Grammar"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Grammatica\n"
|
||||||
|
|
||||||
|
#: src/print.c:374
|
||||||
|
msgid "Number, Line, Rule"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/print.c:379
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " %3d %3d %s ->"
|
||||||
|
msgstr "regel %-4d %s ->"
|
||||||
|
|
||||||
|
#: src/print.c:386
|
||||||
|
msgid "empty"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||||
|
#: src/print.c:393
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Terminals, with rules where they appear"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Terminals, met regels waar ze voorkomen\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/print.c:416
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Nonterminals, with rules where they appear"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"Geen terminals, met regels waar ze voorkomen\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/print.c:442
|
||||||
|
msgid " on left:"
|
||||||
|
msgstr " links:"
|
||||||
|
|
||||||
|
#: src/print.c:457
|
||||||
|
msgid " on right:"
|
||||||
|
msgstr " rechts:"
|
||||||
|
|
||||||
|
#: src/reader.c:100
|
||||||
|
msgid " Skipping to next \\n"
|
||||||
|
msgstr " Verder naar volgende \\n"
|
||||||
|
|
||||||
|
#: src/reader.c:102
|
||||||
|
#, c-format
|
||||||
|
msgid " Skipping to next %c"
|
||||||
|
msgstr " Verder naar volgende %c"
|
||||||
|
|
||||||
|
#: src/reader.c:153 src/reader.c:165
|
||||||
|
msgid "invalid $ value"
|
||||||
|
msgstr "onjuiste $ waarde"
|
||||||
|
|
||||||
|
#: src/reader.c:192 src/reader.c:207
|
||||||
|
msgid "unterminated string at end of file"
|
||||||
|
msgstr "niet getermineerde string aan einde van bestand"
|
||||||
|
|
||||||
|
#: src/reader.c:195
|
||||||
|
msgid "unterminated string"
|
||||||
|
msgstr "niet getermineerde string"
|
||||||
|
|
||||||
|
#: src/reader.c:337 src/reader.c:401
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "invalid value: %s%d"
|
||||||
|
msgstr "onjuiste $ waarde"
|
||||||
|
|
||||||
|
#: src/reader.c:351 src/reader.c:423
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s is invalid"
|
||||||
|
msgstr "@%s is onjuist"
|
||||||
|
|
||||||
|
#: src/reader.c:391
|
||||||
|
#, c-format
|
||||||
|
msgid "$$ of `%s' has no declared type"
|
||||||
|
msgstr "$$ van `%s' heeft geen gedeclareerd type"
|
||||||
|
|
||||||
|
#: src/reader.c:415
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "$%d of `%s' has no declared type"
|
||||||
|
msgstr "$%s van `%s' heeft geen gedeclareerd type"
|
||||||
|
|
||||||
|
#: src/reader.c:473
|
||||||
|
msgid "unterminated `%{' definition"
|
||||||
|
msgstr "niet getermineerde `%{' definitie"
|
||||||
|
|
||||||
|
#: src/reader.c:518 src/reader.c:636 src/reader.c:686 src/reader.c:933
|
||||||
|
#, c-format
|
||||||
|
msgid "Premature EOF after %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/reader.c:535
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol `%s' used more than once as a literal string"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/reader.c:538
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol `%s' given more than one literal string"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/reader.c:559 src/reader.c:705
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol %s redefined"
|
||||||
|
msgstr "symbool %s opnieuw gedefinieerd"
|
||||||
|
|
||||||
|
#: src/reader.c:569 src/reader.c:651 src/reader.c:712
|
||||||
|
#, c-format
|
||||||
|
msgid "type redeclaration for %s"
|
||||||
|
msgstr "type herdeclaratie voor %s"
|
||||||
|
|
||||||
|
#: src/reader.c:581
|
||||||
|
#, c-format
|
||||||
|
msgid "`%s' is invalid in %s"
|
||||||
|
msgstr "`%s' is onjuist in %s"
|
||||||
|
|
||||||
|
#: src/reader.c:599 src/reader.c:758
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "multiple %s declarations"
|
||||||
|
msgstr "meerdere %start declaraties"
|
||||||
|
|
||||||
|
#: src/reader.c:601 src/reader.c:913 src/reader.c:928 src/reader.c:961
|
||||||
|
#: src/reader.c:975 src/reader.c:1178
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "invalid %s declaration"
|
||||||
|
msgstr "onjuiste %start declaratie"
|
||||||
|
|
||||||
|
#: src/reader.c:621
|
||||||
|
msgid "%type declaration has no <typename>"
|
||||||
|
msgstr "%type declaratie heeft geen <typenaam>"
|
||||||
|
|
||||||
|
#: src/reader.c:656
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "invalid %%type declaration due to item: %s"
|
||||||
|
msgstr "onjuist %%type declaratie door item: `%s'"
|
||||||
|
|
||||||
|
#: src/reader.c:701
|
||||||
|
#, c-format
|
||||||
|
msgid "redefining precedence of %s"
|
||||||
|
msgstr "herdefinieren voorganger van %s"
|
||||||
|
|
||||||
|
#: src/reader.c:724
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid text (%s) - number should be after identifier"
|
||||||
|
msgstr "onjuiste tekst (%s) - nummer hoort na de identifier"
|
||||||
|
|
||||||
|
#: src/reader.c:734
|
||||||
|
#, c-format
|
||||||
|
msgid "unexpected item: %s"
|
||||||
|
msgstr "onbekend item: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:790 src/reader.c:1149
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "unmatched %s"
|
||||||
|
msgstr "niet overeenkomstige `{'"
|
||||||
|
|
||||||
|
#: src/reader.c:819
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "argument of %%expect is not an integer"
|
||||||
|
msgstr "argument van %expect is niet een integer"
|
||||||
|
|
||||||
|
#: src/reader.c:865
|
||||||
|
#, c-format
|
||||||
|
msgid "unrecognized item %s, expected an identifier"
|
||||||
|
msgstr "onbekend item %s, verwacht een identifier"
|
||||||
|
|
||||||
|
#: src/reader.c:887
|
||||||
|
#, c-format
|
||||||
|
msgid "expected string constant instead of %s"
|
||||||
|
msgstr "verwacht string constante in plaats van %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1080
|
||||||
|
#, c-format
|
||||||
|
msgid "unrecognized: %s"
|
||||||
|
msgstr "onbekend: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1085
|
||||||
|
msgid "no input grammar"
|
||||||
|
msgstr "geen invoer grammatica"
|
||||||
|
|
||||||
|
#: src/reader.c:1090
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown character: %s"
|
||||||
|
msgstr "onbekend karakter: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1265
|
||||||
|
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||||
|
msgstr ""
|
||||||
|
"slecht geformuleerde regel: initieel symbool niet gevolgd door dubbele punt"
|
||||||
|
|
||||||
|
#: src/reader.c:1272
|
||||||
|
msgid "grammar starts with vertical bar"
|
||||||
|
msgstr "grammatica start met een verticale bar"
|
||||||
|
|
||||||
|
#: src/reader.c:1300
|
||||||
|
#, c-format
|
||||||
|
msgid "rule given for %s, which is a token"
|
||||||
|
msgstr "regel geven voor %s, welke een teken is"
|
||||||
|
|
||||||
|
#: src/reader.c:1405
|
||||||
|
msgid "two @prec's in a row"
|
||||||
|
msgstr "twee @prec's in een regel"
|
||||||
|
|
||||||
|
#: src/reader.c:1414
|
||||||
|
#, c-format
|
||||||
|
msgid "%%guard present but %%semantic_parser not specified"
|
||||||
|
msgstr "%%guard aanwezig maar %%semantic_parser niet gespecificeerd"
|
||||||
|
|
||||||
|
#: src/reader.c:1424
|
||||||
|
msgid "two actions at end of one rule"
|
||||||
|
msgstr "twee akties aan het einde van een regel"
|
||||||
|
|
||||||
|
#: src/reader.c:1438
|
||||||
|
#, c-format
|
||||||
|
msgid "type clash (`%s' `%s') on default action"
|
||||||
|
msgstr "type clash (`%s' `%s') bij standaard aktie"
|
||||||
|
|
||||||
|
#: src/reader.c:1444
|
||||||
|
msgid "empty rule for typed nonterminal, and no action"
|
||||||
|
msgstr "lege regel voor getypte niet terminal, en geen aktie"
|
||||||
|
|
||||||
|
#: src/reader.c:1450
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid input: %s"
|
||||||
|
msgstr "ongeldige invoer: %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1457
|
||||||
|
msgid "no rules in the input grammar"
|
||||||
|
msgstr "geen regels voor invoer grammatica"
|
||||||
|
|
||||||
|
#: src/reader.c:1465
|
||||||
|
#, c-format
|
||||||
|
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||||
|
msgstr ""
|
||||||
|
"symbool %s is gebruikt, maar is niet gedefinieerd als een teken en\n"
|
||||||
|
"heeft geen regels"
|
||||||
|
|
||||||
|
#: src/reader.c:1487
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||||
|
msgstr "te veel symbolen (tekens plus nietterminals); maximum %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1551
|
||||||
|
#, c-format
|
||||||
|
msgid "tokens %s and %s both assigned number %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/reader.c:1601
|
||||||
|
#, c-format
|
||||||
|
msgid "conflicting precedences for %s and %s"
|
||||||
|
msgstr "conflictuerende precedentein voor %s en %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1613
|
||||||
|
#, c-format
|
||||||
|
msgid "conflicting assoc values for %s and %s"
|
||||||
|
msgstr "conflictuerende associatieve waarden voor %s en %s"
|
||||||
|
|
||||||
|
#: src/reader.c:1650
|
||||||
|
#, c-format
|
||||||
|
msgid "the start symbol %s is undefined"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/reader.c:1652
|
||||||
|
#, c-format
|
||||||
|
msgid "the start symbol %s is a token"
|
||||||
|
msgstr "het start symbool %s is een token"
|
||||||
|
|
||||||
|
#: src/reader.c:1672
|
||||||
|
#, c-format
|
||||||
|
msgid "too many items (max %d)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/reduce.c:398
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Useless nonterminals:"
|
||||||
|
msgstr ""
|
||||||
|
"Onbruikbare niet terminals:\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:411
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Terminals which are not used:"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"Terminals welke niet worden gebruikt:\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:422
|
||||||
|
#, fuzzy
|
||||||
|
msgid "Useless rules:"
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"Onbruikbare regels:\n"
|
||||||
|
"\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:494
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d rule never reduced\n"
|
||||||
|
msgid_plural "%d rules never reduced\n"
|
||||||
|
msgstr[0] "%d regels nooit gereduceerd\n"
|
||||||
|
|
||||||
|
#: src/reduce.c:502
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d useless nonterminal"
|
||||||
|
msgid_plural "%d useless nonterminals"
|
||||||
|
msgstr[0] "%d onbruikbare niet terminal%s"
|
||||||
|
|
||||||
|
#: src/reduce.c:508
|
||||||
|
msgid " and "
|
||||||
|
msgstr " en "
|
||||||
|
|
||||||
|
#: src/reduce.c:511
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%d useless rule"
|
||||||
|
msgid_plural "%d useless rules"
|
||||||
|
msgstr[0] "%d onbruikbare regels%s"
|
||||||
|
|
||||||
|
#: src/reduce.c:542
|
||||||
|
#, c-format
|
||||||
|
msgid "Start symbol %s does not derive any sentence"
|
||||||
|
msgstr "Start symbool %s is niet afkomstig uit een zin"
|
||||||
|
|
||||||
|
#: lib/getopt.c:694
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%s' is ambiguous\n"
|
||||||
|
msgstr "%s: optie `%s' is niet eenduidig\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:719
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `--%s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: optie `--%s' staat geen argument toe\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:724
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%c%s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: optie `%c%s' staat geen argument toe\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:742 lib/getopt.c:915
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option `%s' requires an argument\n"
|
||||||
|
msgstr "%s: optie `%s' vereist een argument\n"
|
||||||
|
|
||||||
|
#. --option
|
||||||
|
#: lib/getopt.c:771
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: unrecognized option `--%s'\n"
|
||||||
|
msgstr "%s: onbekende optie `--%s'\n"
|
||||||
|
|
||||||
|
#. +option or -option
|
||||||
|
#: lib/getopt.c:775
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: unrecognized option `%c%s'\n"
|
||||||
|
msgstr "%s: onbekende optie `%c%s'\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
|
#: lib/getopt.c:801
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: illegal option -- %c\n"
|
||||||
|
msgstr "%s: ongeldige optie -- %c\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:804
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: invalid option -- %c\n"
|
||||||
|
msgstr "%s: onjuiste optie -- %c\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
|
#: lib/getopt.c:834 lib/getopt.c:964
|
||||||
|
#, c-format
|
||||||
|
msgid "%s: option requires an argument -- %c\n"
|
||||||
|
msgstr "%s: optie vereist een argument -- %c\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:881
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s: option `-W %s' is ambiguous\n"
|
||||||
|
msgstr "%s: optie `%s' is niet eenduidig\n"
|
||||||
|
|
||||||
|
#: lib/getopt.c:899
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
||||||
|
msgstr "%s: optie `--%s' staat geen argument toe\n"
|
||||||
|
|
||||||
|
#. If XALLOC_FAIL_FUNC is NULL, or does return, display this message
|
||||||
|
#. before exiting when memory is exhausted. Goes through gettext.
|
||||||
|
#: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
|
||||||
|
#, fuzzy
|
||||||
|
msgid "memory exhausted"
|
||||||
|
msgstr "%s: geen geheugen meer beschikbaar\n"
|
||||||
|
|
||||||
|
#. Get translations for open and closing quotation marks.
|
||||||
|
#.
|
||||||
|
#. The message catalog should translate "`" to a left
|
||||||
|
#. quotation mark suitable for the locale, and similarly for
|
||||||
|
#. "'". If the catalog has no translation,
|
||||||
|
#. locale_quoting_style quotes `like this', and
|
||||||
|
#. clocale_quoting_style quotes "like this".
|
||||||
|
#.
|
||||||
|
#. For example, an American English Unicode locale should
|
||||||
|
#. translate "`" to U+201C (LEFT DOUBLE QUOTATION MARK), and
|
||||||
|
#. should translate "'" to U+201D (RIGHT DOUBLE QUOTATION
|
||||||
|
#. MARK). A British English Unicode locale should instead
|
||||||
|
#. translate these to U+2018 (LEFT SINGLE QUOTATION MARK) and
|
||||||
|
#. U+2019 (RIGHT SINGLE QUOTATION MARK), respectively.
|
||||||
|
#: lib/quotearg.c:274
|
||||||
|
msgid "`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: lib/quotearg.c:275
|
||||||
|
msgid "'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid "$default\treduce using rule %d (%s)"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ " $default\treduce using rule %d (%s)\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid "unterminated %guard clause"
|
||||||
|
#~ msgstr "niet getermineerde %%guard voorwaarde"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid "%s: internal error: %s\n"
|
||||||
|
#~ msgstr "interne fout, %s\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Variables\n"
|
||||||
|
#~ "---------\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Variabelen\n"
|
||||||
|
#~ "----------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid "Value Sprec Sassoc Tag\n"
|
||||||
|
#~ msgstr "Waarde Sprec Sassoc Tag\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Rules\n"
|
||||||
|
#~ "-----\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Regels\n"
|
||||||
|
#~ "------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Rules interpreted\n"
|
||||||
|
#~ "-----------------\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Geinterpreteerde regels\n"
|
||||||
|
#~ "-----------------------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid " 1 shift/reduce conflict"
|
||||||
|
#~ msgstr " 1 verschuif/reduceer conflict"
|
||||||
|
|
||||||
|
#~ msgid " 1 reduce/reduce conflict"
|
||||||
|
#~ msgstr " 1 reduceer/reduceer conflict"
|
||||||
|
|
||||||
|
#~ msgid "%s contains"
|
||||||
|
#~ msgstr "%s bevat"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid "DERIVES"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "AFGELEIDEN\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid "%s derives"
|
||||||
|
#~ msgstr "%s afgeleiden"
|
||||||
|
|
||||||
|
#~ msgid "Entering set_nullable"
|
||||||
|
#~ msgstr "Inkomende set nullable"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "gereduceerd %s gedefinieerd %d terminal%s, %d nietterminal%s, en %d "
|
||||||
|
#~ "productie%s.\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "FIRSTS\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "EERSTEN\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "%s firsts\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "%s eersten\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "FDERIVES\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "FAFGELEIDEN\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "%s derives\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "%s afgeleiden\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Usage: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||||
|
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||||
|
#~ " [--verbose] [--version] [--help] [--yacc]\n"
|
||||||
|
#~ " [--no-parser] [--token-table]\n"
|
||||||
|
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
|
||||||
|
#~ " [--output=outfile] grammar-file\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Gebruik: %s [-dhklntvyV] [-b file-prefix] [-o outfile] [-p name-prefix]\n"
|
||||||
|
#~ " [--debug] [--defines] [--fixed-output-files] [--no-lines]\n"
|
||||||
|
#~ " [--verbose] [--version] [--help] [--yacc]\n"
|
||||||
|
#~ " [--no-parser] [--token-table]\n"
|
||||||
|
#~ " [--file-prefix=prefix] [--name-prefix=prefix]\n"
|
||||||
|
#~ " [--output=outfile] grammar-bestand\n"
|
||||||
|
|
||||||
|
#~ msgid "gotos"
|
||||||
|
#~ msgstr "ganaar"
|
||||||
|
|
||||||
|
#~ msgid "\"%s\", line %d: %s\n"
|
||||||
|
#~ msgstr "\"%s\", regel %d: %s\n"
|
||||||
|
|
||||||
|
#~ msgid "error: %s\n"
|
||||||
|
#~ msgstr "fout: %s\n"
|
||||||
|
|
||||||
|
#~ msgid "(\"%s\", line %d) error: %s\n"
|
||||||
|
#~ msgstr "(\"%s\", regel %d) fout: %s\n"
|
||||||
|
|
||||||
|
#~ msgid "limit of %d exceeded, too many %s"
|
||||||
|
#~ msgstr "limiet van %d overschreden, te veel %s"
|
||||||
|
|
||||||
|
#~ msgid "unterminated comment in `%{' definition"
|
||||||
|
#~ msgstr "niet getermineerd commentaar in `%{' definitie"
|
||||||
|
|
||||||
|
#~ msgid "multiple %union declarations"
|
||||||
|
#~ msgstr "meerdere %union declaraties"
|
||||||
|
|
||||||
|
#~ msgid "unterminated comment at end of file"
|
||||||
|
#~ msgstr "niet getermineerd commentaar aan einde van bestand"
|
||||||
|
|
||||||
|
#~ msgid "unmatched close-brace (`}')"
|
||||||
|
#~ msgstr "niet overeenkomstige afsluit-haakje (`}')"
|
||||||
|
|
||||||
|
#~ msgid "unmatched right brace (`}')"
|
||||||
|
#~ msgstr "niet overeenkomstig rechter haakje (`}')"
|
||||||
|
|
||||||
|
#~ msgid "$%s is invalid"
|
||||||
|
#~ msgstr "$%s is onjuist"
|
||||||
|
|
||||||
|
#~ msgid "invalid @-construct"
|
||||||
|
#~ msgstr "ongeldige @-constructie"
|
||||||
|
|
||||||
|
#~ msgid "ill-formed %type declaration"
|
||||||
|
#~ msgstr "slecht geformuleerde %type declaratie"
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user