mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-08-22 09:14:26 +00:00
Compare commits
431
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 |
@@ -9,4 +9,13 @@ patches
|
|||||||
*.patch *.log log patches applied
|
*.patch *.log log patches applied
|
||||||
*.prj
|
*.prj
|
||||||
releases
|
releases
|
||||||
|
*.flc
|
||||||
autom4te.cache
|
autom4te.cache
|
||||||
|
intl
|
||||||
|
Makefile.in
|
||||||
|
configure
|
||||||
|
config.hin
|
||||||
|
aclocal.m4
|
||||||
|
ABOUT-NLS
|
||||||
|
INSTALL
|
||||||
|
COPYING
|
||||||
|
|||||||
@@ -1,396 +0,0 @@
|
|||||||
Notes on the Free Translation Project
|
|
||||||
*************************************
|
|
||||||
|
|
||||||
Free software is going international! The Free Translation Project
|
|
||||||
is a way to get maintainers of free software, translators, and users all
|
|
||||||
together, so that will gradually become able to speak many languages.
|
|
||||||
A few packages already provide translations for their messages.
|
|
||||||
|
|
||||||
If you found this `ABOUT-NLS' file inside a distribution, you may
|
|
||||||
assume that the distributed package does use GNU `gettext' internally,
|
|
||||||
itself available at your nearest GNU archive site. But you do _not_
|
|
||||||
need to install GNU `gettext' prior to configuring, installing or using
|
|
||||||
this package with messages translated.
|
|
||||||
|
|
||||||
Installers will find here some useful hints. These notes also
|
|
||||||
explain how users should proceed for getting the programs to use the
|
|
||||||
available translations. They tell how people wanting to contribute and
|
|
||||||
work at translations should contact the appropriate team.
|
|
||||||
|
|
||||||
When reporting bugs in the `intl/' directory or bugs which may be
|
|
||||||
related to internationalization, you should tell about the version of
|
|
||||||
`gettext' which is used. The information can be found in the
|
|
||||||
`intl/VERSION' file, in internationalized packages.
|
|
||||||
|
|
||||||
Quick configuration advice
|
|
||||||
==========================
|
|
||||||
|
|
||||||
If you want to exploit the full power of internationalization, you
|
|
||||||
should configure it using
|
|
||||||
|
|
||||||
./configure --with-included-gettext
|
|
||||||
|
|
||||||
to force usage of internationalizing routines provided within this
|
|
||||||
package, despite the existence of internationalizing capabilities in the
|
|
||||||
operating system where this package is being installed. So far, only
|
|
||||||
the `gettext' implementation in the GNU C library version 2 provides as
|
|
||||||
many features (such as locale alias, message inheritance, automatic
|
|
||||||
charset conversion or plural form handling) as the implementation here.
|
|
||||||
It is also not possible to offer this additional functionality on top
|
|
||||||
of a `catgets' implementation. Future versions of GNU `gettext' will
|
|
||||||
very likely convey even more functionality. So it might be a good idea
|
|
||||||
to change to GNU `gettext' as soon as possible.
|
|
||||||
|
|
||||||
So you need _not_ provide this option if you are using GNU libc 2 or
|
|
||||||
you have installed a recent copy of the GNU gettext package with the
|
|
||||||
included `libintl'.
|
|
||||||
|
|
||||||
INSTALL Matters
|
|
||||||
===============
|
|
||||||
|
|
||||||
Some packages are "localizable" when properly installed; the
|
|
||||||
programs they contain can be made to speak your own native language.
|
|
||||||
Most such packages use GNU `gettext'. Other packages have their own
|
|
||||||
ways to internationalization, predating GNU `gettext'.
|
|
||||||
|
|
||||||
By default, this package will be installed to allow translation of
|
|
||||||
messages. It will automatically detect whether the system already
|
|
||||||
provides the GNU `gettext' functions. If not, the GNU `gettext' own
|
|
||||||
library will be used. This library is wholly contained within this
|
|
||||||
package, usually in the `intl/' subdirectory, so prior installation of
|
|
||||||
the GNU `gettext' package is _not_ required. Installers may use
|
|
||||||
special options at configuration time for changing the default
|
|
||||||
behaviour. The commands:
|
|
||||||
|
|
||||||
./configure --with-included-gettext
|
|
||||||
./configure --disable-nls
|
|
||||||
|
|
||||||
will respectively bypass any pre-existing `gettext' to use the
|
|
||||||
internationalizing routines provided within this package, or else,
|
|
||||||
_totally_ disable translation of messages.
|
|
||||||
|
|
||||||
When you already have GNU `gettext' installed on your system and run
|
|
||||||
configure without an option for your new package, `configure' will
|
|
||||||
probably detect the previously built and installed `libintl.a' file and
|
|
||||||
will decide to use this. This might be not what is desirable. You
|
|
||||||
should use the more recent version of the GNU `gettext' library. I.e.
|
|
||||||
if the file `intl/VERSION' shows that the library which comes with this
|
|
||||||
package is more recent, you should use
|
|
||||||
|
|
||||||
./configure --with-included-gettext
|
|
||||||
|
|
||||||
to prevent auto-detection.
|
|
||||||
|
|
||||||
The configuration process will not test for the `catgets' function
|
|
||||||
and therefore it will not be used. The reason is that even an
|
|
||||||
emulation of `gettext' on top of `catgets' could not provide all the
|
|
||||||
extensions of the GNU `gettext' library.
|
|
||||||
|
|
||||||
Internationalized packages have usually many `po/LL.po' files, where
|
|
||||||
LL gives an ISO 639 two-letter code identifying the language. Unless
|
|
||||||
translations have been forbidden at `configure' time by using the
|
|
||||||
`--disable-nls' switch, all available translations are installed
|
|
||||||
together with the package. However, the environment variable `LINGUAS'
|
|
||||||
may be set, prior to configuration, to limit the installed set.
|
|
||||||
`LINGUAS' should then contain a space separated list of two-letter
|
|
||||||
codes, stating which languages are allowed.
|
|
||||||
|
|
||||||
Using This Package
|
|
||||||
==================
|
|
||||||
|
|
||||||
As a user, if your language has been installed for this package, you
|
|
||||||
only have to set the `LANG' environment variable to the appropriate
|
|
||||||
`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
|
|
||||||
and `CC' is an ISO 3166 two-letter country code. For example, let's
|
|
||||||
suppose that you speak German and live in Germany. At the shell
|
|
||||||
prompt, merely execute `setenv LANG de_DE' (in `csh'),
|
|
||||||
`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
|
|
||||||
This can be done from your `.login' or `.profile' file, once and for
|
|
||||||
all.
|
|
||||||
|
|
||||||
You might think that the country code specification is redundant.
|
|
||||||
But in fact, some languages have dialects in different countries. For
|
|
||||||
example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
|
|
||||||
country code serves to distinguish the dialects.
|
|
||||||
|
|
||||||
The locale naming convention of `LL_CC', with `LL' denoting the
|
|
||||||
language and `CC' denoting the country, is the one use on systems based
|
|
||||||
on GNU libc. On other systems, some variations of this scheme are
|
|
||||||
used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
|
|
||||||
locales supported by your system for your country by running the command
|
|
||||||
`locale -a | grep '^LL''.
|
|
||||||
|
|
||||||
Not all programs have translations for all languages. By default, an
|
|
||||||
English message is shown in place of a nonexistent translation. If you
|
|
||||||
understand other languages, you can set up a priority list of languages.
|
|
||||||
This is done through a different environment variable, called
|
|
||||||
`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
|
|
||||||
for the purpose of message handling, but you still need to have `LANG'
|
|
||||||
set to the primary language; this is required by other parts of the
|
|
||||||
system libraries. For example, some Swedish users who would rather
|
|
||||||
read translations in German than English for when Swedish is not
|
|
||||||
available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
|
|
||||||
|
|
||||||
In the `LANGUAGE' environment variable, but not in the `LANG'
|
|
||||||
environment variable, `LL_CC' combinations can be abbreviated as `LL'
|
|
||||||
to denote the language's main dialect. For example, `de' is equivalent
|
|
||||||
to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
|
|
||||||
(Portuguese as spoken in Portugal) in this context.
|
|
||||||
|
|
||||||
Translating Teams
|
|
||||||
=================
|
|
||||||
|
|
||||||
For the Free Translation Project to be a success, we need interested
|
|
||||||
people who like their own language and write it well, and who are also
|
|
||||||
able to synergize with other translators speaking the same language.
|
|
||||||
Each translation team has its own mailing list. The up-to-date list of
|
|
||||||
teams can be found at the Free Translation Project's homepage,
|
|
||||||
`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
|
|
||||||
area.
|
|
||||||
|
|
||||||
If you'd like to volunteer to _work_ at translating messages, you
|
|
||||||
should become a member of the translating team for your own language.
|
|
||||||
The subscribing address is _not_ the same as the list itself, it has
|
|
||||||
`-request' appended. For example, speakers of Swedish can send a
|
|
||||||
message to `[email protected]', having this message body:
|
|
||||||
|
|
||||||
subscribe
|
|
||||||
|
|
||||||
Keep in mind that team members are expected to participate
|
|
||||||
_actively_ in translations, or at solving translational difficulties,
|
|
||||||
rather than merely lurking around. If your team does not exist yet and
|
|
||||||
you want to start one, or if you are unsure about what to do or how to
|
|
||||||
get started, please write to `[email protected]' to reach the
|
|
||||||
coordinator for all translator teams.
|
|
||||||
|
|
||||||
The English team is special. It works at improving and uniformizing
|
|
||||||
the terminology in use. Proven linguistic skill are praised more than
|
|
||||||
programming skill, here.
|
|
||||||
|
|
||||||
Available Packages
|
|
||||||
==================
|
|
||||||
|
|
||||||
Languages are not equally supported in all packages. The following
|
|
||||||
matrix shows the current state of internationalization, as of March
|
|
||||||
2002. The matrix shows, in regard of each package, for which languages
|
|
||||||
PO files have been submitted to translation coordination, with a
|
|
||||||
translation percentage of at least 50%.
|
|
||||||
|
|
||||||
Ready PO files bg ca cs da de el en eo es et fi fr
|
|
||||||
+-------------------------------------+
|
|
||||||
a2ps | [] [] [] [] |
|
|
||||||
bash | [] [] [] [] |
|
|
||||||
bfd | [] [] |
|
|
||||||
binutils | [] [] |
|
|
||||||
bison | [] [] [] |
|
|
||||||
clisp | [] [] [] [] |
|
|
||||||
cpio | [] [] [] [] |
|
|
||||||
diffutils | [] [] [] [] [] [] |
|
|
||||||
enscript | [] [] |
|
|
||||||
error | [] [] |
|
|
||||||
fetchmail | () [] [] [] () |
|
|
||||||
fileutils | [] [] [] [] [] |
|
|
||||||
findutils | [] [] [] [] [] |
|
|
||||||
flex | [] [] [] [] |
|
|
||||||
gas | [] [] |
|
|
||||||
gawk | [] [] |
|
|
||||||
gcal | [] [] |
|
|
||||||
gcc | [] [] |
|
|
||||||
gettext | [] [] [] [] [] |
|
|
||||||
gnupg | [] [] [] [] [] [] |
|
|
||||||
gprof | [] [] |
|
|
||||||
grep | [] [] [] [] [] [] |
|
|
||||||
hello | [] [] [] [] [] [] [] [] |
|
|
||||||
id-utils | [] [] [] |
|
|
||||||
indent | [] [] [] [] [] |
|
|
||||||
jpilot | () [] [] [] |
|
|
||||||
jwhois | [] [] |
|
|
||||||
kbd | [] [] |
|
|
||||||
ld | [] [] |
|
|
||||||
libc | [] [] [] [] [] [] [] |
|
|
||||||
lilypond | [] [] |
|
|
||||||
lynx | [] [] [] [] |
|
|
||||||
m4 | [] [] [] [] [] |
|
|
||||||
make | [] [] [] [] |
|
|
||||||
mysecretdiary | [] [] |
|
|
||||||
nano | [] () [] [] [] [] |
|
|
||||||
nano_1_0 | [] () [] [] [] [] |
|
|
||||||
opcodes | [] [] [] |
|
|
||||||
parted | [] [] [] [] |
|
|
||||||
ptx | [] [] [] [] [] |
|
|
||||||
python | |
|
|
||||||
recode | [] [] [] [] [] [] |
|
|
||||||
sed | [] [] [] [] [] [] [] [] |
|
|
||||||
sh-utils | [] [] [] [] [] [] [] [] |
|
|
||||||
sharutils | [] [] [] [] [] [] |
|
|
||||||
sketch | () [] () |
|
|
||||||
soundtracker | [] [] [] |
|
|
||||||
sp | |
|
|
||||||
tar | [] [] [] [] [] [] |
|
|
||||||
texinfo | [] [] [] [] [] |
|
|
||||||
textutils | [] [] [] [] [] |
|
|
||||||
util-linux | [] [] [] [] |
|
|
||||||
vorbis-tools | |
|
|
||||||
wdiff | [] [] [] [] [] |
|
|
||||||
wget | [] [] [] [] [] [] [] [] |
|
|
||||||
+-------------------------------------+
|
|
||||||
bg ca cs da de el en eo es et fi fr
|
|
||||||
1 12 11 31 36 9 1 8 39 15 1 50
|
|
||||||
|
|
||||||
gl he hr hu id it ja ko lv nb nl nn
|
|
||||||
+-------------------------------------+
|
|
||||||
a2ps | () () [] |
|
|
||||||
bash | |
|
|
||||||
bfd | [] |
|
|
||||||
binutils | [] |
|
|
||||||
bison | [] [] |
|
|
||||||
clisp | [] |
|
|
||||||
cpio | [] [] [] |
|
|
||||||
diffutils | [] [] [] |
|
|
||||||
enscript | [] |
|
|
||||||
error | [] |
|
|
||||||
fetchmail | |
|
|
||||||
fileutils | [] [] [] |
|
|
||||||
findutils | [] [] [] [] [] [] |
|
|
||||||
flex | [] |
|
|
||||||
gas | |
|
|
||||||
gawk | [] |
|
|
||||||
gcal | |
|
|
||||||
gcc | |
|
|
||||||
gettext | [] |
|
|
||||||
gnupg | [] [] [] |
|
|
||||||
gprof | |
|
|
||||||
grep | [] |
|
|
||||||
hello | [] [] [] [] [] [] [] [] [] [] |
|
|
||||||
id-utils | [] |
|
|
||||||
indent | [] [] [] |
|
|
||||||
jpilot | () () |
|
|
||||||
jwhois | |
|
|
||||||
kbd | |
|
|
||||||
ld | |
|
|
||||||
libc | [] [] [] [] |
|
|
||||||
lilypond | [] [] |
|
|
||||||
lynx | [] [] |
|
|
||||||
m4 | [] [] [] [] |
|
|
||||||
make | [] [] [] [] |
|
|
||||||
mysecretdiary | |
|
|
||||||
nano | [] [] [] () [] () [] |
|
|
||||||
nano_1_0 | [] [] [] () [] () [] |
|
|
||||||
opcodes | [] |
|
|
||||||
parted | [] [] [] |
|
|
||||||
ptx | [] [] [] [] |
|
|
||||||
python | |
|
|
||||||
recode | [] [] [] |
|
|
||||||
sed | [] [] [] [] [] [] [] |
|
|
||||||
sh-utils | [] [] [] [] [] |
|
|
||||||
sharutils | [] [] [] |
|
|
||||||
sketch | () |
|
|
||||||
soundtracker | [] |
|
|
||||||
sp | |
|
|
||||||
tar | [] [] [] |
|
|
||||||
texinfo | [] [] |
|
|
||||||
textutils | [] [] |
|
|
||||||
util-linux | () [] |
|
|
||||||
vorbis-tools | |
|
|
||||||
wdiff | |
|
|
||||||
wget | [] [] [] [] [] |
|
|
||||||
+-------------------------------------+
|
|
||||||
gl he hr hu id it ja ko lv nb nl nn
|
|
||||||
19 7 0 4 6 11 22 9 1 8 19 4
|
|
||||||
|
|
||||||
no pl pt pt_BR ru sk sl sv tr uk zh_TW
|
|
||||||
+----------------------------------------+
|
|
||||||
a2ps | () () () [] [] [] () | 8
|
|
||||||
bash | | 4
|
|
||||||
bfd | [] [] | 5
|
|
||||||
binutils | [] | 4
|
|
||||||
bison | [] [] [] | 8
|
|
||||||
clisp | | 5
|
|
||||||
cpio | [] [] [] [] | 11
|
|
||||||
diffutils | [] [] [] [] [] | 14
|
|
||||||
enscript | [] [] [] | 6
|
|
||||||
error | [] [] [] | 6
|
|
||||||
fetchmail | () () [] | 4
|
|
||||||
fileutils | [] [] [] [] | 12
|
|
||||||
findutils | [] [] [] [] [] [] [] | 18
|
|
||||||
flex | [] [] [] | 8
|
|
||||||
gas | [] | 3
|
|
||||||
gawk | [] [] | 5
|
|
||||||
gcal | [] [] | 4
|
|
||||||
gcc | [] | 3
|
|
||||||
gettext | [] [] [] [] | 10
|
|
||||||
gnupg | [] [] [] | 12
|
|
||||||
gprof | [] [] | 4
|
|
||||||
grep | [] [] [] | 10
|
|
||||||
hello | [] [] [] [] [] [] [] | 25
|
|
||||||
id-utils | [] [] | 6
|
|
||||||
indent | [] [] [] [] | 12
|
|
||||||
jpilot | () () | 3
|
|
||||||
jwhois | () () [] | 3
|
|
||||||
kbd | [] [] | 4
|
|
||||||
ld | [] [] | 4
|
|
||||||
libc | [] [] [] [] [] [] | 17
|
|
||||||
lilypond | [] | 5
|
|
||||||
lynx | [] [] [] | 9
|
|
||||||
m4 | [] [] [] | 12
|
|
||||||
make | [] [] [] [] | 12
|
|
||||||
mysecretdiary | [] [] | 4
|
|
||||||
nano | () [] [] [] [] | 14
|
|
||||||
nano_1_0 | () [] [] [] | 13
|
|
||||||
opcodes | [] [] | 6
|
|
||||||
parted | [] [] [] | 10
|
|
||||||
ptx | [] [] [] [] [] [] | 15
|
|
||||||
python | | 0
|
|
||||||
recode | [] [] [] [] | 13
|
|
||||||
sed | [] [] [] [] [] [] | 21
|
|
||||||
sh-utils | [] [] [] [] [] [] [] [] [] | 22
|
|
||||||
sharutils | [] [] [] | 12
|
|
||||||
sketch | [] () | 3
|
|
||||||
soundtracker | [] | 5
|
|
||||||
sp | | 0
|
|
||||||
tar | [] [] [] [] [] [] [] | 16
|
|
||||||
texinfo | [] [] [] | 10
|
|
||||||
textutils | [] [] [] [] | 11
|
|
||||||
util-linux | [] [] [] | 8
|
|
||||||
vorbis-tools | [] | 1
|
|
||||||
wdiff | [] [] [] [] | 9
|
|
||||||
wget | [] [] [] [] [] [] [] | 20
|
|
||||||
+----------------------------------------+
|
|
||||||
35 teams no pl pt pt_BR ru sk sl sv tr uk zh_TW
|
|
||||||
55 domains 5 13 2 12 25 11 11 41 34 4 7 489
|
|
||||||
|
|
||||||
Some counters in the preceding matrix are higher than the number of
|
|
||||||
visible blocks let us expect. This is because a few extra PO files are
|
|
||||||
used for implementing regional variants of languages, or language
|
|
||||||
dialects.
|
|
||||||
|
|
||||||
For a PO file in the matrix above to be effective, the package to
|
|
||||||
which it applies should also have been internationalized and
|
|
||||||
distributed as such by its maintainer. There might be an observable
|
|
||||||
lag between the mere existence a PO file and its wide availability in a
|
|
||||||
distribution.
|
|
||||||
|
|
||||||
If March 2002 seems to be old, you may fetch a more recent copy of
|
|
||||||
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
|
|
||||||
matrix with full percentage details can be found at
|
|
||||||
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
|
|
||||||
|
|
||||||
Using `gettext' in new packages
|
|
||||||
===============================
|
|
||||||
|
|
||||||
If you are writing a freely available program and want to
|
|
||||||
internationalize it you are welcome to use GNU `gettext' in your
|
|
||||||
package. Of course you have to respect the GNU Library General Public
|
|
||||||
License which covers the use of the GNU `gettext' library. This means
|
|
||||||
in particular that even non-free programs can use `libintl' as a shared
|
|
||||||
library, whereas only free software can use `libintl' as a static
|
|
||||||
library or use modified versions of `libintl'.
|
|
||||||
|
|
||||||
Once the sources are changed appropriately and the setup can handle
|
|
||||||
to use of `gettext' the only thing missing are the translations. The
|
|
||||||
Free Translation Project is also available for packages which are not
|
|
||||||
developed inside the GNU project. Therefore the information given above
|
|
||||||
applies also for every other Free Software Project. Contact
|
|
||||||
`[email protected]' to make the `.pot' files available to
|
|
||||||
the translation teams.
|
|
||||||
|
|
||||||
@@ -1,231 +0,0 @@
|
|||||||
Copyright 1994, 1995, 1996, 1999, 2000, 2001 Free Software Foundation,
|
|
||||||
Inc.
|
|
||||||
|
|
||||||
This file is free documentation; the Free Software Foundation gives
|
|
||||||
unlimited permission to copy, distribute and modify it.
|
|
||||||
|
|
||||||
Basic Installation
|
|
||||||
==================
|
|
||||||
|
|
||||||
These are generic installation instructions.
|
|
||||||
|
|
||||||
The `configure' shell script attempts to guess correct values for
|
|
||||||
various system-dependent variables used during compilation. It uses
|
|
||||||
those values to create a `Makefile' in each directory of the package.
|
|
||||||
It may also create one or more `.h' files containing system-dependent
|
|
||||||
definitions. Finally, it creates a shell script `config.status' that
|
|
||||||
you can run in the future to recreate the current configuration, and a
|
|
||||||
file `config.log' containing compiler output (useful mainly for
|
|
||||||
debugging `configure').
|
|
||||||
|
|
||||||
It can also use an optional file (typically called `config.cache'
|
|
||||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
|
||||||
the results of its tests to speed up reconfiguring. (Caching is
|
|
||||||
disabled by default to prevent problems with accidental use of stale
|
|
||||||
cache files.)
|
|
||||||
|
|
||||||
If you need to do unusual things to compile the package, please try
|
|
||||||
to figure out how `configure' could check whether to do them, and mail
|
|
||||||
diffs or instructions to the address given in the `README' so they can
|
|
||||||
be considered for the next release. If you are using the cache, and at
|
|
||||||
some point `config.cache' contains results you don't want to keep, you
|
|
||||||
may remove or edit it.
|
|
||||||
|
|
||||||
The file `configure.ac' (or `configure.in') is used to create
|
|
||||||
`configure' by a program called `autoconf'. You only need
|
|
||||||
`configure.ac' if you want to change it or regenerate `configure' using
|
|
||||||
a newer version of `autoconf'.
|
|
||||||
|
|
||||||
The simplest way to compile this package is:
|
|
||||||
|
|
||||||
1. `cd' to the directory containing the package's source code and type
|
|
||||||
`./configure' to configure the package for your system. If you're
|
|
||||||
using `csh' on an old version of System V, you might need to type
|
|
||||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
|
||||||
`configure' itself.
|
|
||||||
|
|
||||||
Running `configure' takes awhile. While running, it prints some
|
|
||||||
messages telling which features it is checking for.
|
|
||||||
|
|
||||||
2. Type `make' to compile the package.
|
|
||||||
|
|
||||||
3. Optionally, type `make check' to run any self-tests that come with
|
|
||||||
the package.
|
|
||||||
|
|
||||||
4. Type `make install' to install the programs and any data files and
|
|
||||||
documentation.
|
|
||||||
|
|
||||||
5. You can remove the program binaries and object files from the
|
|
||||||
source code directory by typing `make clean'. To also remove the
|
|
||||||
files that `configure' created (so you can compile the package for
|
|
||||||
a different kind of computer), type `make distclean'. There is
|
|
||||||
also a `make maintainer-clean' target, but that is intended mainly
|
|
||||||
for the package's developers. If you use it, you may have to get
|
|
||||||
all sorts of other programs in order to regenerate files that came
|
|
||||||
with the distribution.
|
|
||||||
|
|
||||||
Compilers and Options
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Some systems require unusual options for compilation or linking that
|
|
||||||
the `configure' script does not know about. Run `./configure --help'
|
|
||||||
for details on some of the pertinent environment variables.
|
|
||||||
|
|
||||||
You can give `configure' initial values for variables by setting
|
|
||||||
them in the environment. You can do that on the command line like this:
|
|
||||||
|
|
||||||
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
|
||||||
|
|
||||||
*Note Defining Variables::, for more details.
|
|
||||||
|
|
||||||
Compiling For Multiple Architectures
|
|
||||||
====================================
|
|
||||||
|
|
||||||
You can compile the package for more than one kind of computer at the
|
|
||||||
same time, by placing the object files for each architecture in their
|
|
||||||
own directory. To do this, you must use a version of `make' that
|
|
||||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
|
||||||
directory where you want the object files and executables to go and run
|
|
||||||
the `configure' script. `configure' automatically checks for the
|
|
||||||
source code in the directory that `configure' is in and in `..'.
|
|
||||||
|
|
||||||
If you have to use a `make' that does not support the `VPATH'
|
|
||||||
variable, you have to compile the package for one architecture at a
|
|
||||||
time in the source code directory. After you have installed the
|
|
||||||
package for one architecture, use `make distclean' before reconfiguring
|
|
||||||
for another architecture.
|
|
||||||
|
|
||||||
Installation Names
|
|
||||||
==================
|
|
||||||
|
|
||||||
By default, `make install' will install the package's files in
|
|
||||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
|
||||||
installation prefix other than `/usr/local' by giving `configure' the
|
|
||||||
option `--prefix=PATH'.
|
|
||||||
|
|
||||||
You can specify separate installation prefixes for
|
|
||||||
architecture-specific files and architecture-independent files. If you
|
|
||||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
|
||||||
PATH as the prefix for installing programs and libraries.
|
|
||||||
Documentation and other data files will still use the regular prefix.
|
|
||||||
|
|
||||||
In addition, if you use an unusual directory layout you can give
|
|
||||||
options like `--bindir=PATH' to specify different values for particular
|
|
||||||
kinds of files. Run `configure --help' for a list of the directories
|
|
||||||
you can set and what kinds of files go in them.
|
|
||||||
|
|
||||||
If the package supports it, you can cause programs to be installed
|
|
||||||
with an extra prefix or suffix on their names by giving `configure' the
|
|
||||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
|
||||||
|
|
||||||
Optional Features
|
|
||||||
=================
|
|
||||||
|
|
||||||
Some packages pay attention to `--enable-FEATURE' options to
|
|
||||||
`configure', where FEATURE indicates an optional part of the package.
|
|
||||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
|
||||||
is something like `gnu-as' or `x' (for the X Window System). The
|
|
||||||
`README' should mention any `--enable-' and `--with-' options that the
|
|
||||||
package recognizes.
|
|
||||||
|
|
||||||
For packages that use the X Window System, `configure' can usually
|
|
||||||
find the X include and library files automatically, but if it doesn't,
|
|
||||||
you can use the `configure' options `--x-includes=DIR' and
|
|
||||||
`--x-libraries=DIR' to specify their locations.
|
|
||||||
|
|
||||||
Specifying the System Type
|
|
||||||
==========================
|
|
||||||
|
|
||||||
There may be some features `configure' cannot figure out
|
|
||||||
automatically, but needs to determine by the type of host the package
|
|
||||||
will run on. Usually `configure' can figure that out, but if it prints
|
|
||||||
a message saying it cannot guess the host type, give it the
|
|
||||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
|
||||||
type, such as `sun4', or a canonical name which has the form:
|
|
||||||
|
|
||||||
CPU-COMPANY-SYSTEM
|
|
||||||
|
|
||||||
where SYSTEM can have one of these forms:
|
|
||||||
|
|
||||||
OS KERNEL-OS
|
|
||||||
|
|
||||||
See the file `config.sub' for the possible values of each field. If
|
|
||||||
`config.sub' isn't included in this package, then this package doesn't
|
|
||||||
need to know the host type.
|
|
||||||
|
|
||||||
If you are _building_ compiler tools for cross-compiling, you should
|
|
||||||
use the `--target=TYPE' option to select the type of system they will
|
|
||||||
produce code for.
|
|
||||||
|
|
||||||
If you want to _use_ a cross compiler, that generates code for a
|
|
||||||
platform different from the build platform, you should specify the host
|
|
||||||
platform (i.e., that on which the generated programs will eventually be
|
|
||||||
run) with `--host=TYPE'. In this case, you should also specify the
|
|
||||||
build platform with `--build=TYPE', because, in this case, it may not
|
|
||||||
be possible to guess the build platform (it sometimes involves
|
|
||||||
compiling and running simple test programs, and this can't be done if
|
|
||||||
the compiler is a cross compiler).
|
|
||||||
|
|
||||||
Sharing Defaults
|
|
||||||
================
|
|
||||||
|
|
||||||
If you want to set default values for `configure' scripts to share,
|
|
||||||
you can create a site shell script called `config.site' that gives
|
|
||||||
default values for variables like `CC', `cache_file', and `prefix'.
|
|
||||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
|
||||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
|
||||||
`CONFIG_SITE' environment variable to the location of the site script.
|
|
||||||
A warning: not all `configure' scripts look for a site script.
|
|
||||||
|
|
||||||
Defining Variables
|
|
||||||
==================
|
|
||||||
|
|
||||||
Variables not defined in a site shell script can be set in the
|
|
||||||
environment passed to `configure'. However, some packages may run
|
|
||||||
configure again during the build, and the customized values of these
|
|
||||||
variables may be lost. In order to avoid this problem, you should set
|
|
||||||
them in the `configure' command line, using `VAR=value'. For example:
|
|
||||||
|
|
||||||
./configure CC=/usr/local2/bin/gcc
|
|
||||||
|
|
||||||
will cause the specified gcc to be used as the C compiler (unless it is
|
|
||||||
overridden in the site shell script).
|
|
||||||
|
|
||||||
`configure' Invocation
|
|
||||||
======================
|
|
||||||
|
|
||||||
`configure' recognizes the following options to control how it
|
|
||||||
operates.
|
|
||||||
|
|
||||||
`--help'
|
|
||||||
`-h'
|
|
||||||
Print a summary of the options to `configure', and exit.
|
|
||||||
|
|
||||||
`--version'
|
|
||||||
`-V'
|
|
||||||
Print the version of Autoconf used to generate the `configure'
|
|
||||||
script, and exit.
|
|
||||||
|
|
||||||
`--cache-file=FILE'
|
|
||||||
Enable the cache: use and save the results of the tests in FILE,
|
|
||||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
|
||||||
disable caching.
|
|
||||||
|
|
||||||
`--config-cache'
|
|
||||||
`-C'
|
|
||||||
Alias for `--cache-file=config.cache'.
|
|
||||||
|
|
||||||
`--quiet'
|
|
||||||
`--silent'
|
|
||||||
`-q'
|
|
||||||
Do not print messages saying which checks are being made. To
|
|
||||||
suppress all normal output, redirect it to `/dev/null' (any error
|
|
||||||
messages will still be shown).
|
|
||||||
|
|
||||||
`--srcdir=DIR'
|
|
||||||
Look for the package's source code in directory DIR. Usually
|
|
||||||
`configure' can determine that directory automatically.
|
|
||||||
|
|
||||||
`configure' also accepts some other, not widely useful, options. Run
|
|
||||||
`configure --help' for more details.
|
|
||||||
|
|
||||||
+5
-3
@@ -1,3 +1,5 @@
|
|||||||
|
## Copyright 2001, 2002 Free Software Foundation, Inc.
|
||||||
|
|
||||||
## This program is free software; you can redistribute it and/or modify
|
## 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
|
## it under the terms of the GNU General Public License as published by
|
||||||
## the Free Software Foundation; either version 2 of the License, or
|
## the Free Software Foundation; either version 2 of the License, or
|
||||||
@@ -14,13 +16,13 @@
|
|||||||
## 02111-1307 USA
|
## 02111-1307 USA
|
||||||
|
|
||||||
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
||||||
AUTOMAKE_OPTIONS = 1.6 check-news readme-alpha dist-bzip2
|
AUTOMAKE_OPTIONS = 1.5 check-news readme-alpha dist-bzip2
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
SUBDIRS = config intl po lib src doc m4 tests
|
SUBDIRS = config intl po lib data src doc m4 tests
|
||||||
|
|
||||||
EXTRA_DIST = config/config.rpath REFERENCES configure.bat OChangeLog Makefile.maint GNUmakefile
|
EXTRA_DIST = REFERENCES configure.bat OChangeLog Makefile.maint GNUmakefile
|
||||||
|
|
||||||
DISTCLEANFILES = intl/libintl.h
|
DISTCLEANFILES = intl/libintl.h
|
||||||
|
|
||||||
|
|||||||
-479
@@ -1,479 +0,0 @@
|
|||||||
# Makefile.in generated by automake 1.6 from Makefile.am.
|
|
||||||
# @configure_input@
|
|
||||||
|
|
||||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
@SET_MAKE@
|
|
||||||
SHELL = @SHELL@
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
|
|
||||||
bindir = @bindir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
datadir = @datadir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
libdir = @libdir@
|
|
||||||
infodir = @infodir@
|
|
||||||
mandir = @mandir@
|
|
||||||
includedir = @includedir@
|
|
||||||
oldincludedir = /usr/include
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
|
||||||
top_builddir = .
|
|
||||||
|
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
|
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
||||||
INSTALL_HEADER = $(INSTALL_DATA)
|
|
||||||
transform = @program_transform_name@
|
|
||||||
NORMAL_INSTALL = :
|
|
||||||
PRE_INSTALL = :
|
|
||||||
POST_INSTALL = :
|
|
||||||
NORMAL_UNINSTALL = :
|
|
||||||
PRE_UNINSTALL = :
|
|
||||||
POST_UNINSTALL = :
|
|
||||||
host_alias = @host_alias@
|
|
||||||
host_triplet = @host@
|
|
||||||
|
|
||||||
EXEEXT = @EXEEXT@
|
|
||||||
OBJEXT = @OBJEXT@
|
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
|
||||||
AMTAR = @AMTAR@
|
|
||||||
AUTOM4TE = @AUTOM4TE@
|
|
||||||
AWK = @AWK@
|
|
||||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
|
||||||
CATOBJEXT = @CATOBJEXT@
|
|
||||||
CC = @CC@
|
|
||||||
CPP = @CPP@
|
|
||||||
DATADIRNAME = @DATADIRNAME@
|
|
||||||
DEPDIR = @DEPDIR@
|
|
||||||
GCC = @GCC@
|
|
||||||
GENCAT = @GENCAT@
|
|
||||||
GLIBC21 = @GLIBC21@
|
|
||||||
GMSGFMT = @GMSGFMT@
|
|
||||||
HAVE_LIB = @HAVE_LIB@
|
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
||||||
INSTOBJEXT = @INSTOBJEXT@
|
|
||||||
INTLBISON = @INTLBISON@
|
|
||||||
INTLLIBS = @INTLLIBS@
|
|
||||||
INTLOBJS = @INTLOBJS@
|
|
||||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
|
||||||
LIB = @LIB@
|
|
||||||
LIBICONV = @LIBICONV@
|
|
||||||
LIBINTL = @LIBINTL@
|
|
||||||
LTLIB = @LTLIB@
|
|
||||||
LTLIBICONV = @LTLIBICONV@
|
|
||||||
LTLIBINTL = @LTLIBINTL@
|
|
||||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
|
||||||
PACKAGE = @PACKAGE@
|
|
||||||
POSUB = @POSUB@
|
|
||||||
RANLIB = @RANLIB@
|
|
||||||
STRIP = @STRIP@
|
|
||||||
U = @U@
|
|
||||||
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
|
||||||
USE_NLS = @USE_NLS@
|
|
||||||
VERSION = @VERSION@
|
|
||||||
WARNING_CFLAGS = @WARNING_CFLAGS@
|
|
||||||
WERROR_CFLAGS = @WERROR_CFLAGS@
|
|
||||||
am__include = @am__include@
|
|
||||||
am__quote = @am__quote@
|
|
||||||
install_sh = @install_sh@
|
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = 1.6 check-news readme-alpha dist-bzip2
|
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
|
||||||
|
|
||||||
SUBDIRS = config intl po lib src doc m4 tests
|
|
||||||
|
|
||||||
EXTRA_DIST = config/config.rpath REFERENCES configure.bat OChangeLog Makefile.maint GNUmakefile
|
|
||||||
|
|
||||||
DISTCLEANFILES = intl/libintl.h
|
|
||||||
|
|
||||||
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
|
|
||||||
subdir = .
|
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
|
||||||
CONFIG_HEADER = config.h
|
|
||||||
CONFIG_CLEAN_FILES = intl/Makefile
|
|
||||||
DIST_SOURCES =
|
|
||||||
|
|
||||||
RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \
|
|
||||||
uninstall-info-recursive all-recursive install-data-recursive \
|
|
||||||
install-exec-recursive installdirs-recursive install-recursive \
|
|
||||||
uninstall-recursive check-recursive installcheck-recursive
|
|
||||||
DIST_COMMON = README ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \
|
|
||||||
Makefile.am Makefile.in NEWS THANKS aclocal.m4 config.hin \
|
|
||||||
configure configure.in
|
|
||||||
DIST_SUBDIRS = $(SUBDIRS)
|
|
||||||
all: config.h
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
|
||||||
cd $(top_srcdir) && \
|
|
||||||
$(AUTOMAKE) --gnu Makefile
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
|
|
||||||
|
|
||||||
$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
|
||||||
$(SHELL) ./config.status --recheck
|
|
||||||
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
|
||||||
cd $(srcdir) && $(AUTOCONF)
|
|
||||||
|
|
||||||
$(ACLOCAL_M4): configure.in m4/c-bs-a.m4 m4/codeset.m4 m4/dmalloc.m4 m4/error.m4 m4/gettext.m4 m4/glibc21.m4 m4/iconv.m4 m4/isc-posix.m4 m4/lcmessage.m4 m4/lib-ld.m4 m4/lib-link.m4 m4/lib-prefix.m4 m4/malloc.m4 m4/mbrtowc.m4 m4/mbstate_t.m4 m4/prereq.m4 m4/progtest.m4 m4/realloc.m4 m4/strerror_r.m4 m4/warning.m4
|
|
||||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
|
||||||
|
|
||||||
config.h: stamp-h1
|
|
||||||
@if test ! -f $@; then \
|
|
||||||
rm -f stamp-h1; \
|
|
||||||
$(MAKE) stamp-h1; \
|
|
||||||
else :; fi
|
|
||||||
|
|
||||||
stamp-h1: $(srcdir)/config.hin $(top_builddir)/config.status
|
|
||||||
@rm -f stamp-h1
|
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
|
||||||
|
|
||||||
$(srcdir)/config.hin: $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
|
||||||
cd $(top_srcdir) && $(AUTOHEADER)
|
|
||||||
touch $(srcdir)/config.hin
|
|
||||||
|
|
||||||
distclean-hdr:
|
|
||||||
-rm -f config.h
|
|
||||||
intl/Makefile: $(top_builddir)/config.status $(top_srcdir)/intl/Makefile.in
|
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
|
||||||
uninstall-info-am:
|
|
||||||
|
|
||||||
# This directory's subdirectories are mostly independent; you can cd
|
|
||||||
# into them and run `make' without going through this Makefile.
|
|
||||||
# To change the values of `make' variables: instead of editing Makefiles,
|
|
||||||
# (1) if the variable is set in `config.status', edit `config.status'
|
|
||||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
|
||||||
# (2) otherwise, pass the desired values on the `make' command line.
|
|
||||||
$(RECURSIVE_TARGETS):
|
|
||||||
@set fnord $(MAKEFLAGS); amf=$$2; \
|
|
||||||
dot_seen=no; \
|
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|
||||||
echo "Making $$target in $$subdir"; \
|
|
||||||
if test "$$subdir" = "."; then \
|
|
||||||
dot_seen=yes; \
|
|
||||||
local_target="$$target-am"; \
|
|
||||||
else \
|
|
||||||
local_target="$$target"; \
|
|
||||||
fi; \
|
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
|
||||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
|
||||||
done; \
|
|
||||||
if test "$$dot_seen" = "no"; then \
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
|
||||||
fi; test -z "$$fail"
|
|
||||||
|
|
||||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
|
||||||
maintainer-clean-recursive:
|
|
||||||
@set fnord $(MAKEFLAGS); amf=$$2; \
|
|
||||||
dot_seen=no; \
|
|
||||||
case "$@" in \
|
|
||||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
|
||||||
*) list='$(SUBDIRS)' ;; \
|
|
||||||
esac; \
|
|
||||||
rev=''; for subdir in $$list; do \
|
|
||||||
if test "$$subdir" = "."; then :; else \
|
|
||||||
rev="$$subdir $$rev"; \
|
|
||||||
fi; \
|
|
||||||
done; \
|
|
||||||
rev="$$rev ."; \
|
|
||||||
target=`echo $@ | sed s/-recursive//`; \
|
|
||||||
for subdir in $$rev; do \
|
|
||||||
echo "Making $$target in $$subdir"; \
|
|
||||||
if test "$$subdir" = "."; then \
|
|
||||||
local_target="$$target-am"; \
|
|
||||||
else \
|
|
||||||
local_target="$$target"; \
|
|
||||||
fi; \
|
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
|
||||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
|
||||||
done && test -z "$$fail"
|
|
||||||
tags-recursive:
|
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|
||||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
|
||||||
done
|
|
||||||
|
|
||||||
ETAGS = etags
|
|
||||||
ETAGSFLAGS =
|
|
||||||
|
|
||||||
tags: TAGS
|
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
|
||||||
unique=`for i in $$list; do \
|
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
||||||
done | \
|
|
||||||
$(AWK) ' { files[$$0] = 1; } \
|
|
||||||
END { for (i in files) print i; }'`; \
|
|
||||||
mkid -fID $$unique
|
|
||||||
|
|
||||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.hin $(TAGS_DEPENDENCIES) \
|
|
||||||
$(TAGS_FILES) $(LISP)
|
|
||||||
tags=; \
|
|
||||||
here=`pwd`; \
|
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|
||||||
if test "$$subdir" = .; then :; else \
|
|
||||||
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
|
|
||||||
fi; \
|
|
||||||
done; \
|
|
||||||
list='$(SOURCES) $(HEADERS) config.hin $(LISP) $(TAGS_FILES)'; \
|
|
||||||
unique=`for i in $$list; do \
|
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
||||||
done | \
|
|
||||||
$(AWK) ' { files[$$0] = 1; } \
|
|
||||||
END { for (i in files) print i; }'`; \
|
|
||||||
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|
|
||||||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
|
||||||
$$tags $$unique
|
|
||||||
|
|
||||||
GTAGS:
|
|
||||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
|
||||||
&& cd $(top_srcdir) \
|
|
||||||
&& gtags -i $(GTAGS_ARGS) $$here
|
|
||||||
|
|
||||||
distclean-tags:
|
|
||||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
|
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
|
|
||||||
top_distdir = .
|
|
||||||
distdir = $(PACKAGE)-$(VERSION)
|
|
||||||
|
|
||||||
am__remove_distdir = \
|
|
||||||
{ test ! -d $(distdir) \
|
|
||||||
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
|
||||||
&& rm -fr $(distdir); }; }
|
|
||||||
|
|
||||||
GZIP_ENV = --best
|
|
||||||
distcleancheck_listfiles = find . -type f -print
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
|
||||||
@if sed 15q $(srcdir)/NEWS | fgrep -e "$(VERSION)" >/dev/null; \
|
|
||||||
then :; else \
|
|
||||||
echo "NEWS not updated; not releasing" 1>&2; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
|
||||||
$(am__remove_distdir)
|
|
||||||
mkdir $(distdir)
|
|
||||||
$(mkinstalldirs) $(distdir)/config $(distdir)/intl $(distdir)/po $(distdir)/tests
|
|
||||||
@for file in $(DISTFILES); do \
|
|
||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|
||||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
||||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
|
||||||
dir="/$$dir"; \
|
|
||||||
$(mkinstalldirs) "$(distdir)$$dir"; \
|
|
||||||
else \
|
|
||||||
dir=''; \
|
|
||||||
fi; \
|
|
||||||
if test -d $$d/$$file; then \
|
|
||||||
cp -pR $$d/$$file $(distdir)$$dir \
|
|
||||||
|| exit 1; \
|
|
||||||
else \
|
|
||||||
test -f $(distdir)/$$file \
|
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|
||||||
|| exit 1; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|
||||||
if test "$$subdir" = .; then :; else \
|
|
||||||
test -d $(distdir)/$$subdir \
|
|
||||||
|| mkdir $(distdir)/$$subdir \
|
|
||||||
|| exit 1; \
|
|
||||||
(cd $$subdir && \
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) \
|
|
||||||
top_distdir="$(top_distdir)" \
|
|
||||||
distdir=../$(distdir)/$$subdir \
|
|
||||||
distdir) \
|
|
||||||
|| exit 1; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
|
||||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
|
||||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
|
||||||
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|
|
||||||
|| chmod -R a+r $(distdir)
|
|
||||||
dist-gzip: distdir
|
|
||||||
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
|
||||||
$(am__remove_distdir)
|
|
||||||
|
|
||||||
dist-bzip2: distdir
|
|
||||||
$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
|
|
||||||
$(am__remove_distdir)
|
|
||||||
|
|
||||||
dist dist-all: distdir
|
|
||||||
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
|
||||||
$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
|
|
||||||
$(am__remove_distdir)
|
|
||||||
|
|
||||||
# This target untars the dist file and tries a VPATH configuration. Then
|
|
||||||
# it guarantees that the distribution is self-contained by making another
|
|
||||||
# tarfile.
|
|
||||||
distcheck: dist
|
|
||||||
$(am__remove_distdir)
|
|
||||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
|
|
||||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
|
||||||
mkdir $(distdir)/=build
|
|
||||||
mkdir $(distdir)/=inst
|
|
||||||
chmod a-w $(distdir)
|
|
||||||
dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \
|
|
||||||
&& cd $(distdir)/=build \
|
|
||||||
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
|
|
||||||
--with-included-gettext \
|
|
||||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
|
||||||
&& (test `find $$dc_install_base -type f -print | wc -l` -le 1 \
|
|
||||||
|| { echo "ERROR: files left after uninstall:" ; \
|
|
||||||
find $$dc_install_base -type f -print ; \
|
|
||||||
exit 1; } >&2 ) \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
|
|
||||||
&& rm -f $(distdir).tar.gz \
|
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
|
||||||
$(am__remove_distdir)
|
|
||||||
@echo "$(distdir).tar.gz is ready for distribution" | \
|
|
||||||
sed 'h;s/./=/g;p;x;p;x'
|
|
||||||
distcleancheck: distclean
|
|
||||||
if test '$(srcdir)' = . ; then \
|
|
||||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
|
||||||
exit 1 ; \
|
|
||||||
fi
|
|
||||||
test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
|
||||||
|| { echo "ERROR: files left after distclean:" ; \
|
|
||||||
$(distcleancheck_listfiles) ; \
|
|
||||||
exit 1; } >&2
|
|
||||||
check-am: all-am
|
|
||||||
check: check-recursive
|
|
||||||
all-am: Makefile config.h
|
|
||||||
installdirs: installdirs-recursive
|
|
||||||
installdirs-am:
|
|
||||||
|
|
||||||
install: install-recursive
|
|
||||||
install-exec: install-exec-recursive
|
|
||||||
install-data: install-data-recursive
|
|
||||||
uninstall: uninstall-recursive
|
|
||||||
|
|
||||||
install-am: all-am
|
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
||||||
|
|
||||||
installcheck: installcheck-recursive
|
|
||||||
install-strip:
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
||||||
INSTALL_STRIP_FLAG=-s \
|
|
||||||
`test -z '$(STRIP)' || \
|
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
|
||||||
mostlyclean-generic:
|
|
||||||
|
|
||||||
clean-generic:
|
|
||||||
|
|
||||||
distclean-generic:
|
|
||||||
-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
|
|
||||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
|
||||||
@echo "This command is intended for maintainers to use"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
clean: clean-recursive
|
|
||||||
|
|
||||||
clean-am: clean-generic mostlyclean-am
|
|
||||||
|
|
||||||
distclean: distclean-recursive
|
|
||||||
-rm -f config.status config.cache config.log
|
|
||||||
distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
|
|
||||||
|
|
||||||
dvi: dvi-recursive
|
|
||||||
|
|
||||||
dvi-am:
|
|
||||||
|
|
||||||
info: info-recursive
|
|
||||||
|
|
||||||
info-am:
|
|
||||||
|
|
||||||
install-data-am:
|
|
||||||
|
|
||||||
install-exec-am:
|
|
||||||
|
|
||||||
install-info: install-info-recursive
|
|
||||||
|
|
||||||
install-man:
|
|
||||||
|
|
||||||
installcheck-am:
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-recursive
|
|
||||||
|
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
|
||||||
|
|
||||||
mostlyclean: mostlyclean-recursive
|
|
||||||
|
|
||||||
mostlyclean-am: mostlyclean-generic
|
|
||||||
|
|
||||||
uninstall-am: uninstall-info-am
|
|
||||||
|
|
||||||
uninstall-info: uninstall-info-recursive
|
|
||||||
|
|
||||||
.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \
|
|
||||||
clean-generic clean-recursive dist dist-all dist-bzip2 \
|
|
||||||
dist-gzip distcheck distclean distclean-generic distclean-hdr \
|
|
||||||
distclean-recursive distclean-tags distcleancheck distdir dvi \
|
|
||||||
dvi-am dvi-recursive info info-am info-recursive install \
|
|
||||||
install-am install-data install-data-am install-data-recursive \
|
|
||||||
install-exec install-exec-am install-exec-recursive \
|
|
||||||
install-info install-info-am install-info-recursive install-man \
|
|
||||||
install-recursive install-strip installcheck installcheck-am \
|
|
||||||
installdirs installdirs-am installdirs-recursive \
|
|
||||||
maintainer-clean maintainer-clean-generic \
|
|
||||||
maintainer-clean-recursive mostlyclean mostlyclean-generic \
|
|
||||||
mostlyclean-recursive tags tags-recursive uninstall \
|
|
||||||
uninstall-am uninstall-info-am uninstall-info-recursive \
|
|
||||||
uninstall-recursive
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
||||||
.NOEXPORT:
|
|
||||||
@@ -1,58 +1,20 @@
|
|||||||
Bison News
|
Bison News
|
||||||
----------
|
----------
|
||||||
|
|
||||||
Changes in version 1.35, 2002-03-25:
|
Changes in version 1.49a:
|
||||||
|
|
||||||
* C Skeleton
|
* Items overflow
|
||||||
Some projects use Bison's C parser with C++ compilers, and define
|
Bison no longer dumps core when there are too many items, it just
|
||||||
YYSTYPE as a class. The recent adjustment of C parsers for data
|
dies.
|
||||||
alignment and 64 bit architectures made this impossible.
|
|
||||||
|
|
||||||
Because for the time being no real solution for C++ parser
|
* Token end-of-file
|
||||||
generation exists, kludges were implemented in the parser to
|
The token end of file may be specified by the user, in which case,
|
||||||
maintain this use. In the future, when Bison has C++ parsers, this
|
the user symbol is used in the reports, the graphs, and the verbose
|
||||||
kludge will be disabled.
|
error messages instead of `$', which remains being the defaults.
|
||||||
|
For instance
|
||||||
This kludge also addresses some C++ problems when the stack was
|
%token YYEOF 0
|
||||||
extended.
|
or
|
||||||
|
%token YYEOF 0 "end of file"
|
||||||
|
|
||||||
Changes in version 1.34, 2002-03-12:
|
|
||||||
|
|
||||||
* File name clashes are detected
|
|
||||||
$ bison foo.y -d -o foo.x
|
|
||||||
fatal error: header and parser would both be named `foo.x'
|
|
||||||
|
|
||||||
* A missing `;' at the end of a rule triggers a warning
|
|
||||||
In accordance with POSIX, and in agreement with other
|
|
||||||
Yacc implementations, Bison will mandate this semicolon in the near
|
|
||||||
future. This eases the implementation of a Bison parser of Bison
|
|
||||||
grammars by making this grammar LALR(1) instead of LR(2). To
|
|
||||||
facilitate the transition, this release introduces a warning.
|
|
||||||
|
|
||||||
* Revert the C++ namespace changes introduced in 1.31, as they caused too
|
|
||||||
many portability hassles.
|
|
||||||
|
|
||||||
* DJGPP support added.
|
|
||||||
|
|
||||||
* Fix test suite portability problems.
|
|
||||||
|
|
||||||
Changes in version 1.33, 2002-02-07:
|
|
||||||
|
|
||||||
* Fix C++ issues
|
|
||||||
Groff could not be compiled for the definition of size_t was lacking
|
|
||||||
under some conditions.
|
|
||||||
|
|
||||||
* Catch invalid @n
|
|
||||||
As is done with $n.
|
|
||||||
|
|
||||||
Changes in version 1.32, 2002-01-23:
|
|
||||||
|
|
||||||
* Fix Yacc output file names
|
|
||||||
|
|
||||||
* Portability fixes
|
|
||||||
|
|
||||||
* Italian, Dutch translations
|
|
||||||
|
|
||||||
Changes in version 1.31, 2002-01-14:
|
Changes in version 1.31, 2002-01-14:
|
||||||
|
|
||||||
@@ -81,7 +43,6 @@ Changes in version 1.31, 2002-01-14:
|
|||||||
|
|
||||||
* Better C++ compliance
|
* Better C++ compliance
|
||||||
The output parsers try to respect C++ namespaces.
|
The output parsers try to respect C++ namespaces.
|
||||||
[This turned out to be a failed experiment, and it was reverted later.]
|
|
||||||
|
|
||||||
* Reduced Grammars
|
* Reduced Grammars
|
||||||
Fixed bugs when reporting useless nonterminals.
|
Fixed bugs when reporting useless nonterminals.
|
||||||
@@ -139,7 +100,7 @@ Changes in version 1.31, 2002-01-14:
|
|||||||
* --output
|
* --output
|
||||||
New, aliasing `--output-file'.
|
New, aliasing `--output-file'.
|
||||||
|
|
||||||
Changes in version 1.30, 2001-10-26:
|
Changes in version 1.30:
|
||||||
|
|
||||||
* `--defines' and `--graph' have now an optionnal argument which is the
|
* `--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
|
output file name. `-d' and `-g' do not change, they do not take any
|
||||||
|
|||||||
@@ -5,9 +5,7 @@ Airy Andre [email protected]
|
|||||||
Akim Demaille [email protected]
|
Akim Demaille [email protected]
|
||||||
Albert Chin-A-Young [email protected]
|
Albert Chin-A-Young [email protected]
|
||||||
Alexander Belopolsky [email protected]
|
Alexander Belopolsky [email protected]
|
||||||
Andreas Schwab [email protected]
|
|
||||||
Arnold Robbins [email protected]
|
Arnold Robbins [email protected]
|
||||||
Bruce Lilly [email protected]
|
|
||||||
Cris van Pelt [email protected]
|
Cris van Pelt [email protected]
|
||||||
Daniel Hagerty [email protected]
|
Daniel Hagerty [email protected]
|
||||||
David J. MacKenzie [email protected]
|
David J. MacKenzie [email protected]
|
||||||
@@ -15,7 +13,6 @@ Dick Streefland [email protected]
|
|||||||
Enrico Scholz [email protected]
|
Enrico Scholz [email protected]
|
||||||
Evgeny Stambulchik [email protected]
|
Evgeny Stambulchik [email protected]
|
||||||
Fabrice Bauzac [email protected]
|
Fabrice Bauzac [email protected]
|
||||||
Florian Krohm [email protected]
|
|
||||||
H. Merijn Brand [email protected]
|
H. Merijn Brand [email protected]
|
||||||
Hans Aberg [email protected]
|
Hans Aberg [email protected]
|
||||||
Jesse Thilo [email protected]
|
Jesse Thilo [email protected]
|
||||||
|
|||||||
@@ -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.
|
||||||
Vendored
-2822
File diff suppressed because it is too large
Load Diff
+74
-106
@@ -5,114 +5,97 @@
|
|||||||
*/
|
*/
|
||||||
#undef CRAY_STACKSEG_END
|
#undef CRAY_STACKSEG_END
|
||||||
|
|
||||||
/* Define to 1 if using `alloca.c'. */
|
/* Define if using `alloca.c'. */
|
||||||
#undef C_ALLOCA
|
#undef C_ALLOCA
|
||||||
|
|
||||||
/* Define to 1 if translation of program messages to the user's native
|
/* Define to 1 if translation of program messages to the user's native
|
||||||
language is requested. */
|
language is requested. */
|
||||||
#undef ENABLE_NLS
|
#undef ENABLE_NLS
|
||||||
|
|
||||||
/* Define to 1 if you have `alloca', as a function or macro. */
|
/* Define if you have `alloca', as a function or macro. */
|
||||||
#undef HAVE_ALLOCA
|
#undef HAVE_ALLOCA
|
||||||
|
|
||||||
/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
|
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
|
||||||
*/
|
|
||||||
#undef HAVE_ALLOCA_H
|
#undef HAVE_ALLOCA_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <argz.h> header file. */
|
/* Define if you have the <argz.h> header file. */
|
||||||
#undef HAVE_ARGZ_H
|
#undef HAVE_ARGZ_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <ctype.h> header file. */
|
/* Define if you have the <ctype.h> header file. */
|
||||||
#undef HAVE_CTYPE_H
|
#undef HAVE_CTYPE_H
|
||||||
|
|
||||||
/* Define if backslash-a works in C strings. */
|
/* Define if backslash-a works in C strings. */
|
||||||
#undef HAVE_C_BACKSLASH_A
|
#undef HAVE_C_BACKSLASH_A
|
||||||
|
|
||||||
/* Define if the GNU dcgettext() function is already present or preinstalled.
|
/* Define if you have the `dcgettext' function. */
|
||||||
*/
|
|
||||||
#undef HAVE_DCGETTEXT
|
#undef HAVE_DCGETTEXT
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `memchr', and to 0 if you don't.
|
/* Define to 1 if you have the declaration of `memchr', and to 0 if you don't.
|
||||||
*/
|
*/
|
||||||
#undef HAVE_DECL_MEMCHR
|
#undef HAVE_DECL_MEMCHR
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `memrchr', and to 0 if you
|
|
||||||
don't. */
|
|
||||||
#undef HAVE_DECL_MEMRCHR
|
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't.
|
/* Define to 1 if you have the declaration of `stpcpy', and to 0 if you don't.
|
||||||
*/
|
*/
|
||||||
#undef HAVE_DECL_STPCPY
|
#undef HAVE_DECL_STPCPY
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `strchr', and to 0 if you don't.
|
|
||||||
*/
|
|
||||||
#undef HAVE_DECL_STRCHR
|
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `strerror', and to 0 if you
|
|
||||||
don't. */
|
|
||||||
#undef HAVE_DECL_STRERROR
|
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
|
/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
|
||||||
don't. */
|
don't. */
|
||||||
#undef HAVE_DECL_STRERROR_R
|
#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
|
/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
|
||||||
don't. */
|
don't. */
|
||||||
#undef HAVE_DECL_STRNLEN
|
#undef HAVE_DECL_STRNLEN
|
||||||
|
|
||||||
/* Define to 1 if you have the declaration of `strspn', and to 0 if you don't.
|
|
||||||
*/
|
|
||||||
#undef HAVE_DECL_STRSPN
|
|
||||||
|
|
||||||
/* Define if the malloc check has been performed. */
|
/* Define if the malloc check has been performed. */
|
||||||
#undef HAVE_DONE_WORKING_MALLOC_CHECK
|
#undef HAVE_DONE_WORKING_MALLOC_CHECK
|
||||||
|
|
||||||
/* Define if the realloc check has been performed. */
|
/* Define if the realloc check has been performed. */
|
||||||
#undef HAVE_DONE_WORKING_REALLOC_CHECK
|
#undef HAVE_DONE_WORKING_REALLOC_CHECK
|
||||||
|
|
||||||
/* Define to 1 if you have the `doprnt' function. */
|
/* Define if you have the `doprnt' function. */
|
||||||
#undef HAVE_DOPRNT
|
#undef HAVE_DOPRNT
|
||||||
|
|
||||||
/* Define to 1 if you have the `feof_unlocked' function. */
|
/* Define if you have the `feof_unlocked' function. */
|
||||||
#undef HAVE_FEOF_UNLOCKED
|
#undef HAVE_FEOF_UNLOCKED
|
||||||
|
|
||||||
/* Define to 1 if you have the `fgets_unlocked' function. */
|
/* Define if you have the `fgets_unlocked' function. */
|
||||||
#undef HAVE_FGETS_UNLOCKED
|
#undef HAVE_FGETS_UNLOCKED
|
||||||
|
|
||||||
/* Define to 1 if you have the `getcwd' function. */
|
/* Define if you have the `getcwd' function. */
|
||||||
#undef HAVE_GETCWD
|
#undef HAVE_GETCWD
|
||||||
|
|
||||||
/* Define to 1 if you have the `getc_unlocked' function. */
|
/* Define if you have the `getegid' function. */
|
||||||
#undef HAVE_GETC_UNLOCKED
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `getegid' function. */
|
|
||||||
#undef HAVE_GETEGID
|
#undef HAVE_GETEGID
|
||||||
|
|
||||||
/* Define to 1 if you have the `geteuid' function. */
|
/* Define if you have the `geteuid' function. */
|
||||||
#undef HAVE_GETEUID
|
#undef HAVE_GETEUID
|
||||||
|
|
||||||
/* Define to 1 if you have the `getgid' function. */
|
/* Define if you have the `getgid' function. */
|
||||||
#undef HAVE_GETGID
|
#undef HAVE_GETGID
|
||||||
|
|
||||||
/* Define to 1 if you have the `getpagesize' function. */
|
/* Define if you have the `getpagesize' function. */
|
||||||
#undef HAVE_GETPAGESIZE
|
#undef HAVE_GETPAGESIZE
|
||||||
|
|
||||||
/* Define if the GNU gettext() function is already present or preinstalled. */
|
/* Define if the GNU gettext() function is already present or preinstalled. */
|
||||||
#undef HAVE_GETTEXT
|
#undef HAVE_GETTEXT
|
||||||
|
|
||||||
/* Define to 1 if you have the `getuid' function. */
|
/* Define if you have the `getuid' function. */
|
||||||
#undef HAVE_GETUID
|
#undef HAVE_GETUID
|
||||||
|
|
||||||
/* Define if you have the iconv() function. */
|
/* Define if you have the iconv() function. */
|
||||||
#undef HAVE_ICONV
|
#undef HAVE_ICONV
|
||||||
|
|
||||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
/* Define if you have the <inttypes.h> header file. */
|
||||||
#undef HAVE_INTTYPES_H
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `isascii' function. */
|
/* Define if you have the `isascii' function. */
|
||||||
#undef HAVE_ISASCII
|
#undef HAVE_ISASCII
|
||||||
|
|
||||||
/* Define to 1 if you have the `iswprint' function. */
|
/* Define if you have the `iswprint' function. */
|
||||||
#undef HAVE_ISWPRINT
|
#undef HAVE_ISWPRINT
|
||||||
|
|
||||||
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
|
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
|
||||||
@@ -121,127 +104,130 @@
|
|||||||
/* Define if your <locale.h> file defines LC_MESSAGES. */
|
/* Define if your <locale.h> file defines LC_MESSAGES. */
|
||||||
#undef HAVE_LC_MESSAGES
|
#undef HAVE_LC_MESSAGES
|
||||||
|
|
||||||
/* Define to 1 if you have the <limits.h> header file. */
|
/* Define if you have the <limits.h> header file. */
|
||||||
#undef HAVE_LIMITS_H
|
#undef HAVE_LIMITS_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <locale.h> header file. */
|
/* Define if you have the <locale.h> header file. */
|
||||||
#undef HAVE_LOCALE_H
|
#undef HAVE_LOCALE_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <malloc.h> header file. */
|
/* Define if you have the <malloc.h> header file. */
|
||||||
#undef HAVE_MALLOC_H
|
#undef HAVE_MALLOC_H
|
||||||
|
|
||||||
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
|
/* Define to 1 if mbrtowc and mbstate_t are properly declared. */
|
||||||
#undef HAVE_MBRTOWC
|
#undef HAVE_MBRTOWC
|
||||||
|
|
||||||
/* Define to 1 if you have the `mbsinit' function. */
|
/* Define if you have the `mbsinit' function. */
|
||||||
#undef HAVE_MBSINIT
|
#undef HAVE_MBSINIT
|
||||||
|
|
||||||
/* Define to 1 if you have the `memchr' function. */
|
/* Define if you have the `memchr' function. */
|
||||||
#undef HAVE_MEMCHR
|
#undef HAVE_MEMCHR
|
||||||
|
|
||||||
/* Define to 1 if you have the <memory.h> header file. */
|
/* Define if you have the <memory.h> header file. */
|
||||||
#undef HAVE_MEMORY_H
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `mempcpy' function. */
|
/* Define if you have the `mempcpy' function. */
|
||||||
#undef HAVE_MEMPCPY
|
#undef HAVE_MEMPCPY
|
||||||
|
|
||||||
/* Define to 1 if you have the `memrchr' function. */
|
/* Define if you have the `mkstemp' function. */
|
||||||
#undef HAVE_MEMRCHR
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `mkstemp' function. */
|
|
||||||
#undef HAVE_MKSTEMP
|
#undef HAVE_MKSTEMP
|
||||||
|
|
||||||
/* Define to 1 if you have a working `mmap' system call. */
|
/* Define if you have a working `mmap' system call. */
|
||||||
#undef HAVE_MMAP
|
#undef HAVE_MMAP
|
||||||
|
|
||||||
/* Define to 1 if you have the `munmap' function. */
|
/* Define if you have the `munmap' function. */
|
||||||
#undef HAVE_MUNMAP
|
#undef HAVE_MUNMAP
|
||||||
|
|
||||||
/* Define to 1 if you have the <nl_types.h> header file. */
|
/* Define if you have the <nl_types.h> header file. */
|
||||||
#undef HAVE_NL_TYPES_H
|
#undef HAVE_NL_TYPES_H
|
||||||
|
|
||||||
/* Define to 1 if libc includes obstacks. */
|
/* Define if you have the `putenv' function. */
|
||||||
#undef HAVE_OBSTACK
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `putenv' function. */
|
|
||||||
#undef HAVE_PUTENV
|
#undef HAVE_PUTENV
|
||||||
|
|
||||||
/* Define to 1 if you have the `setenv' function. */
|
/* Define if you have the `setenv' function. */
|
||||||
#undef HAVE_SETENV
|
#undef HAVE_SETENV
|
||||||
|
|
||||||
/* Define to 1 if you have the `setlocale' function. */
|
/* Define if you have the `setlocale' function. */
|
||||||
#undef HAVE_SETLOCALE
|
#undef HAVE_SETLOCALE
|
||||||
|
|
||||||
/* Define to 1 if you have the <stddef.h> header file. */
|
/* Define if you have the <stddef.h> header file. */
|
||||||
#undef HAVE_STDDEF_H
|
#undef HAVE_STDDEF_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdint.h> header file. */
|
/* Define if you have the <stdint.h> header file. */
|
||||||
#undef HAVE_STDINT_H
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
/* Define if you have the <stdlib.h> header file. */
|
||||||
#undef HAVE_STDLIB_H
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `stpcpy' function. */
|
/* Define if you have the `stpcpy' function. */
|
||||||
#undef HAVE_STPCPY
|
#undef HAVE_STPCPY
|
||||||
|
|
||||||
/* Define to 1 if you have the `strcasecmp' function. */
|
/* Define if you have the `strcasecmp' function. */
|
||||||
#undef HAVE_STRCASECMP
|
#undef HAVE_STRCASECMP
|
||||||
|
|
||||||
/* Define to 1 if you have the `strchr' function. */
|
/* Define if you have the `strchr' function. */
|
||||||
#undef HAVE_STRCHR
|
#undef HAVE_STRCHR
|
||||||
|
|
||||||
/* Define to 1 if you have the `strdup' function. */
|
/* Define if you have the `strdup' function. */
|
||||||
#undef HAVE_STRDUP
|
#undef HAVE_STRDUP
|
||||||
|
|
||||||
/* Define to 1 if you have the `strerror' function. */
|
/* Define if you have the `strerror' function. */
|
||||||
#undef HAVE_STRERROR
|
#undef HAVE_STRERROR
|
||||||
|
|
||||||
/* Define to 1 if you have the `strerror_r' function. */
|
/* Define if you have the `strerror_r' function. */
|
||||||
#undef HAVE_STRERROR_R
|
#undef HAVE_STRERROR_R
|
||||||
|
|
||||||
/* Define to 1 if you have the <strings.h> header file. */
|
/* Define if you have the <strings.h> header file. */
|
||||||
#undef HAVE_STRINGS_H
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <string.h> header file. */
|
/* Define if you have the <string.h> header file. */
|
||||||
#undef HAVE_STRING_H
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `strspn' function. */
|
/* 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
|
#undef HAVE_STRSPN
|
||||||
|
|
||||||
/* Define to 1 if you have the `strtoul' function. */
|
/* Define if you have the `strtoul' function. */
|
||||||
#undef HAVE_STRTOUL
|
#undef HAVE_STRTOUL
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/param.h> header file. */
|
/* Define if you have the <sys/param.h> header file. */
|
||||||
#undef HAVE_SYS_PARAM_H
|
#undef HAVE_SYS_PARAM_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
/* Define if you have the <sys/stat.h> header file. */
|
||||||
#undef HAVE_SYS_STAT_H
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
/* Define if you have the <sys/types.h> header file. */
|
||||||
#undef HAVE_SYS_TYPES_H
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `tsearch' function. */
|
/* Define if you have the `tsearch' function. */
|
||||||
#undef HAVE_TSEARCH
|
#undef HAVE_TSEARCH
|
||||||
|
|
||||||
/* Define to 1 if you have the <unistd.h> header file. */
|
/* Define if you have the <unistd.h> header file. */
|
||||||
#undef HAVE_UNISTD_H
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `vprintf' function. */
|
/* Define if you have the `vprintf' function. */
|
||||||
#undef HAVE_VPRINTF
|
#undef HAVE_VPRINTF
|
||||||
|
|
||||||
/* Define to 1 if you have the <wchar.h> header file. */
|
/* Define if you have the <wchar.h> header file. */
|
||||||
#undef HAVE_WCHAR_H
|
#undef HAVE_WCHAR_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <wctype.h> header file. */
|
/* Define if you have the <wctype.h> header file. */
|
||||||
#undef HAVE_WCTYPE_H
|
#undef HAVE_WCTYPE_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `__argz_count' function. */
|
/* 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
|
#undef HAVE___ARGZ_COUNT
|
||||||
|
|
||||||
/* Define to 1 if you have the `__argz_next' function. */
|
/* Define if you have the `__argz_next' function. */
|
||||||
#undef HAVE___ARGZ_NEXT
|
#undef HAVE___ARGZ_NEXT
|
||||||
|
|
||||||
/* Define to 1 if you have the `__argz_stringify' function. */
|
/* Define if you have the `__argz_stringify' function. */
|
||||||
#undef HAVE___ARGZ_STRINGIFY
|
#undef HAVE___ARGZ_STRINGIFY
|
||||||
|
|
||||||
/* Define as const if the declaration of iconv() needs const. */
|
/* Define as const if the declaration of iconv() needs const. */
|
||||||
@@ -250,21 +236,6 @@
|
|||||||
/* Name of package */
|
/* Name of package */
|
||||||
#undef PACKAGE
|
#undef PACKAGE
|
||||||
|
|
||||||
/* Define to the address where bug reports for this package should be sent. */
|
|
||||||
#undef PACKAGE_BUGREPORT
|
|
||||||
|
|
||||||
/* Define to the full name of this package. */
|
|
||||||
#undef PACKAGE_NAME
|
|
||||||
|
|
||||||
/* Define to the full name and version of this package. */
|
|
||||||
#undef PACKAGE_STRING
|
|
||||||
|
|
||||||
/* Define to the one symbol short name of this package. */
|
|
||||||
#undef PACKAGE_TARNAME
|
|
||||||
|
|
||||||
/* Define to the version of this package. */
|
|
||||||
#undef PACKAGE_VERSION
|
|
||||||
|
|
||||||
/* Define if compiler has function prototypes */
|
/* Define if compiler has function prototypes */
|
||||||
#undef PROTOTYPES
|
#undef PROTOTYPES
|
||||||
|
|
||||||
@@ -276,12 +247,9 @@
|
|||||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||||
#undef STACK_DIRECTION
|
#undef STACK_DIRECTION
|
||||||
|
|
||||||
/* Define to 1 if you have the ANSI C header files. */
|
/* Define if you have the ANSI C header files. */
|
||||||
#undef STDC_HEADERS
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
/* Define to 1 if strerror_r returns char *. */
|
|
||||||
#undef STRERROR_R_CHAR_P
|
|
||||||
|
|
||||||
/* Version number of package */
|
/* Version number of package */
|
||||||
#undef VERSION
|
#undef VERSION
|
||||||
|
|
||||||
@@ -291,14 +259,14 @@
|
|||||||
/* Define to 1 for GNU C library extensions. */
|
/* Define to 1 for GNU C library extensions. */
|
||||||
#undef _GNU_SOURCE
|
#undef _GNU_SOURCE
|
||||||
|
|
||||||
/* Define to 1 if on MINIX. */
|
/* Define if on MINIX. */
|
||||||
#undef _MINIX
|
#undef _MINIX
|
||||||
|
|
||||||
/* Define to 2 if the system does not provide POSIX.1 features except with
|
/* Define if the system does not provide POSIX.1 features except with this
|
||||||
this defined. */
|
defined. */
|
||||||
#undef _POSIX_1_SOURCE
|
#undef _POSIX_1_SOURCE
|
||||||
|
|
||||||
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
/* Define if you need to in order for `stat' and other things to work. */
|
||||||
#undef _POSIX_SOURCE
|
#undef _POSIX_SOURCE
|
||||||
|
|
||||||
/* Define to empty if `const' does not conform to ANSI C. */
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
|
|||||||
@@ -1,2 +1,9 @@
|
|||||||
Makefile
|
Makefile
|
||||||
*.t
|
*.t
|
||||||
|
Makefile.in
|
||||||
|
mkinstalldirs
|
||||||
|
missing
|
||||||
|
config.sub
|
||||||
|
config.guess
|
||||||
|
mdate-sh
|
||||||
|
texinfo.tex
|
||||||
|
|||||||
@@ -1,228 +0,0 @@
|
|||||||
# Makefile.in generated by automake 1.6 from Makefile.am.
|
|
||||||
# @configure_input@
|
|
||||||
|
|
||||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
@SET_MAKE@
|
|
||||||
SHELL = @SHELL@
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
|
|
||||||
bindir = @bindir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
datadir = @datadir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
libdir = @libdir@
|
|
||||||
infodir = @infodir@
|
|
||||||
mandir = @mandir@
|
|
||||||
includedir = @includedir@
|
|
||||||
oldincludedir = /usr/include
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
|
||||||
top_builddir = ..
|
|
||||||
|
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
|
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
||||||
INSTALL_HEADER = $(INSTALL_DATA)
|
|
||||||
transform = @program_transform_name@
|
|
||||||
NORMAL_INSTALL = :
|
|
||||||
PRE_INSTALL = :
|
|
||||||
POST_INSTALL = :
|
|
||||||
NORMAL_UNINSTALL = :
|
|
||||||
PRE_UNINSTALL = :
|
|
||||||
POST_UNINSTALL = :
|
|
||||||
host_alias = @host_alias@
|
|
||||||
host_triplet = @host@
|
|
||||||
|
|
||||||
EXEEXT = @EXEEXT@
|
|
||||||
OBJEXT = @OBJEXT@
|
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
|
||||||
AMTAR = @AMTAR@
|
|
||||||
AUTOM4TE = @AUTOM4TE@
|
|
||||||
AWK = @AWK@
|
|
||||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
|
||||||
CATOBJEXT = @CATOBJEXT@
|
|
||||||
CC = @CC@
|
|
||||||
CPP = @CPP@
|
|
||||||
DATADIRNAME = @DATADIRNAME@
|
|
||||||
DEPDIR = @DEPDIR@
|
|
||||||
GCC = @GCC@
|
|
||||||
GENCAT = @GENCAT@
|
|
||||||
GLIBC21 = @GLIBC21@
|
|
||||||
GMSGFMT = @GMSGFMT@
|
|
||||||
HAVE_LIB = @HAVE_LIB@
|
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
||||||
INSTOBJEXT = @INSTOBJEXT@
|
|
||||||
INTLBISON = @INTLBISON@
|
|
||||||
INTLLIBS = @INTLLIBS@
|
|
||||||
INTLOBJS = @INTLOBJS@
|
|
||||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
|
||||||
LIB = @LIB@
|
|
||||||
LIBICONV = @LIBICONV@
|
|
||||||
LIBINTL = @LIBINTL@
|
|
||||||
LTLIB = @LTLIB@
|
|
||||||
LTLIBICONV = @LTLIBICONV@
|
|
||||||
LTLIBINTL = @LTLIBINTL@
|
|
||||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
|
||||||
PACKAGE = @PACKAGE@
|
|
||||||
POSUB = @POSUB@
|
|
||||||
RANLIB = @RANLIB@
|
|
||||||
STRIP = @STRIP@
|
|
||||||
U = @U@
|
|
||||||
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
|
||||||
USE_NLS = @USE_NLS@
|
|
||||||
VERSION = @VERSION@
|
|
||||||
WARNING_CFLAGS = @WARNING_CFLAGS@
|
|
||||||
WERROR_CFLAGS = @WERROR_CFLAGS@
|
|
||||||
am__include = @am__include@
|
|
||||||
am__quote = @am__quote@
|
|
||||||
install_sh = @install_sh@
|
|
||||||
EXTRA_DIST = move-if-change prev-version.txt
|
|
||||||
subdir = config
|
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
|
||||||
DIST_SOURCES =
|
|
||||||
DIST_COMMON = Makefile.am Makefile.in config.guess config.rpath \
|
|
||||||
config.sub depcomp install-sh mdate-sh missing mkinstalldirs \
|
|
||||||
texinfo.tex
|
|
||||||
all: all-am
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
|
||||||
cd $(top_srcdir) && \
|
|
||||||
$(AUTOMAKE) --gnu config/Makefile
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
|
||||||
uninstall-info-am:
|
|
||||||
tags: TAGS
|
|
||||||
TAGS:
|
|
||||||
|
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
|
|
||||||
top_distdir = ..
|
|
||||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
|
||||||
@for file in $(DISTFILES); do \
|
|
||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|
||||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
||||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
|
||||||
dir="/$$dir"; \
|
|
||||||
$(mkinstalldirs) "$(distdir)$$dir"; \
|
|
||||||
else \
|
|
||||||
dir=''; \
|
|
||||||
fi; \
|
|
||||||
if test -d $$d/$$file; then \
|
|
||||||
cp -pR $$d/$$file $(distdir)$$dir \
|
|
||||||
|| exit 1; \
|
|
||||||
else \
|
|
||||||
test -f $(distdir)/$$file \
|
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|
||||||
|| exit 1; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
check-am: all-am
|
|
||||||
check: check-am
|
|
||||||
all-am: Makefile
|
|
||||||
|
|
||||||
installdirs:
|
|
||||||
|
|
||||||
install: install-am
|
|
||||||
install-exec: install-exec-am
|
|
||||||
install-data: install-data-am
|
|
||||||
uninstall: uninstall-am
|
|
||||||
|
|
||||||
install-am: all-am
|
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
||||||
|
|
||||||
installcheck: installcheck-am
|
|
||||||
install-strip:
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
||||||
INSTALL_STRIP_FLAG=-s \
|
|
||||||
`test -z '$(STRIP)' || \
|
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
|
||||||
mostlyclean-generic:
|
|
||||||
|
|
||||||
clean-generic:
|
|
||||||
|
|
||||||
distclean-generic:
|
|
||||||
-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
|
||||||
@echo "This command is intended for maintainers to use"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
clean: clean-am
|
|
||||||
|
|
||||||
clean-am: clean-generic mostlyclean-am
|
|
||||||
|
|
||||||
distclean: distclean-am
|
|
||||||
|
|
||||||
distclean-am: clean-am distclean-generic
|
|
||||||
|
|
||||||
dvi: dvi-am
|
|
||||||
|
|
||||||
dvi-am:
|
|
||||||
|
|
||||||
info: info-am
|
|
||||||
|
|
||||||
info-am:
|
|
||||||
|
|
||||||
install-data-am:
|
|
||||||
|
|
||||||
install-exec-am:
|
|
||||||
|
|
||||||
install-info: install-info-am
|
|
||||||
|
|
||||||
install-man:
|
|
||||||
|
|
||||||
installcheck-am:
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
|
||||||
|
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
|
||||||
|
|
||||||
mostlyclean: mostlyclean-am
|
|
||||||
|
|
||||||
mostlyclean-am: mostlyclean-generic
|
|
||||||
|
|
||||||
uninstall-am: uninstall-info-am
|
|
||||||
|
|
||||||
.PHONY: all all-am check check-am clean clean-generic distclean \
|
|
||||||
distclean-generic distdir dvi dvi-am info info-am install \
|
|
||||||
install-am install-data install-data-am install-exec \
|
|
||||||
install-exec-am install-info install-info-am install-man \
|
|
||||||
install-strip installcheck installcheck-am installdirs \
|
|
||||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
|
||||||
mostlyclean-generic uninstall uninstall-am uninstall-info-am
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
||||||
.NOEXPORT:
|
|
||||||
Vendored
-1321
File diff suppressed because it is too large
Load Diff
Vendored
-1443
File diff suppressed because it is too large
Load Diff
+4
-29
@@ -31,16 +31,7 @@ if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
|||||||
fi
|
fi
|
||||||
# `libtool' can also be set to `yes' or `no'.
|
# `libtool' can also be set to `yes' or `no'.
|
||||||
|
|
||||||
if test -z "$depfile"; then
|
depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`}
|
||||||
base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
|
|
||||||
dir=`echo "$object" | sed 's,/.*$,/,'`
|
|
||||||
if test "$dir" = "$object"; then
|
|
||||||
dir=
|
|
||||||
fi
|
|
||||||
# FIXME: should be _deps on DOS.
|
|
||||||
depfile="$dir.deps/$base"
|
|
||||||
fi
|
|
||||||
|
|
||||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||||
|
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
@@ -213,9 +204,8 @@ tru64)
|
|||||||
# dependencies in `foo.d' instead, so we check for that too.
|
# dependencies in `foo.d' instead, so we check for that too.
|
||||||
# Subdirectories are respected.
|
# Subdirectories are respected.
|
||||||
|
|
||||||
base=`echo "$object" | sed -e 's/\.o$/.d/' -e 's/\.lo$/.d/'`
|
tmpdepfile1="$object.d"
|
||||||
tmpdepfile1="$base.o.d"
|
tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'`
|
||||||
tmpdepfile2="$base.d"
|
|
||||||
if test "$libtool" = yes; then
|
if test "$libtool" = yes; then
|
||||||
"$@" -Wc,-MD
|
"$@" -Wc,-MD
|
||||||
else
|
else
|
||||||
@@ -324,7 +314,7 @@ makedepend)
|
|||||||
if test "$stat" != 0; then exit $stat; fi
|
if test "$stat" != 0; then exit $stat; fi
|
||||||
rm -f "$depfile"
|
rm -f "$depfile"
|
||||||
cat < "$tmpdepfile" > "$depfile"
|
cat < "$tmpdepfile" > "$depfile"
|
||||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
tail +3 "$tmpdepfile" | tr ' ' '
|
||||||
' | \
|
' | \
|
||||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
## correctly. Breaking it into two sed invocations is a workaround.
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
@@ -392,21 +382,6 @@ msvisualcpp)
|
|||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
for arg
|
|
||||||
do
|
|
||||||
case "$arg" in
|
|
||||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
|
||||||
set fnord "$@"
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
set fnord "$@" "$arg"
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
"$@" -E |
|
"$@" -E |
|
||||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||||
) &
|
) &
|
||||||
|
|||||||
+17
-17
@@ -109,7 +109,7 @@ then
|
|||||||
echo "install: no input file specified"
|
echo "install: no input file specified"
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
:
|
true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ x"$dir_arg" != x ]; then
|
if [ x"$dir_arg" != x ]; then
|
||||||
@@ -120,7 +120,7 @@ if [ x"$dir_arg" != x ]; then
|
|||||||
instcmd=:
|
instcmd=:
|
||||||
chmodcmd=""
|
chmodcmd=""
|
||||||
else
|
else
|
||||||
instcmd=$mkdirprog
|
instcmd=mkdir
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ else
|
|||||||
|
|
||||||
if [ -f $src -o -d $src ]
|
if [ -f $src -o -d $src ]
|
||||||
then
|
then
|
||||||
:
|
true
|
||||||
else
|
else
|
||||||
echo "install: $src does not exist"
|
echo "install: $src does not exist"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -141,7 +141,7 @@ else
|
|||||||
echo "install: no destination specified"
|
echo "install: no destination specified"
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
:
|
true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If destination is a directory, append the input filename; if your system
|
# If destination is a directory, append the input filename; if your system
|
||||||
@@ -151,7 +151,7 @@ else
|
|||||||
then
|
then
|
||||||
dst="$dst"/`basename $src`
|
dst="$dst"/`basename $src`
|
||||||
else
|
else
|
||||||
:
|
true
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -163,8 +163,8 @@ dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
|||||||
|
|
||||||
# Skip lots of stat calls in the usual case.
|
# Skip lots of stat calls in the usual case.
|
||||||
if [ ! -d "$dstdir" ]; then
|
if [ ! -d "$dstdir" ]; then
|
||||||
defaultIFS='
|
defaultIFS='
|
||||||
'
|
'
|
||||||
IFS="${IFS-${defaultIFS}}"
|
IFS="${IFS-${defaultIFS}}"
|
||||||
|
|
||||||
oIFS="${IFS}"
|
oIFS="${IFS}"
|
||||||
@@ -183,7 +183,7 @@ while [ $# -ne 0 ] ; do
|
|||||||
then
|
then
|
||||||
$mkdirprog "${pathcomp}"
|
$mkdirprog "${pathcomp}"
|
||||||
else
|
else
|
||||||
:
|
true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pathcomp="${pathcomp}/"
|
pathcomp="${pathcomp}/"
|
||||||
@@ -194,10 +194,10 @@ if [ x"$dir_arg" != x ]
|
|||||||
then
|
then
|
||||||
$doit $instcmd $dst &&
|
$doit $instcmd $dst &&
|
||||||
|
|
||||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi &&
|
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
||||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi &&
|
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
||||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi &&
|
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
||||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi
|
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
||||||
else
|
else
|
||||||
|
|
||||||
# If we're going to rename the final executable, determine the name now.
|
# If we're going to rename the final executable, determine the name now.
|
||||||
@@ -216,7 +216,7 @@ else
|
|||||||
then
|
then
|
||||||
dstfile=`basename $dst`
|
dstfile=`basename $dst`
|
||||||
else
|
else
|
||||||
:
|
true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Make a temp file name in the proper directory.
|
# Make a temp file name in the proper directory.
|
||||||
@@ -235,10 +235,10 @@ else
|
|||||||
# ignore errors from any of these, just make sure not to ignore
|
# ignore errors from any of these, just make sure not to ignore
|
||||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||||
|
|
||||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi &&
|
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
||||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi &&
|
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
||||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi &&
|
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
||||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi &&
|
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
||||||
|
|
||||||
# Now rename the file to the real destination.
|
# Now rename the file to the real destination.
|
||||||
|
|
||||||
|
|||||||
@@ -1,97 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Get modification time of a file or directory and pretty-print it.
|
|
||||||
# Copyright 1995, 1996, 1997 Free Software Foundation, Inc.
|
|
||||||
# written by Ulrich Drepper <[email protected]>, June 1995
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Prevent date giving response in another language.
|
|
||||||
LANG=C
|
|
||||||
export LANG
|
|
||||||
LC_ALL=C
|
|
||||||
export LC_ALL
|
|
||||||
LC_TIME=C
|
|
||||||
export LC_TIME
|
|
||||||
|
|
||||||
# Get the extended ls output of the file or directory.
|
|
||||||
# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
|
|
||||||
if ls -L /dev/null 1>/dev/null 2>&1; then
|
|
||||||
set - x`ls -L -l -d $1`
|
|
||||||
else
|
|
||||||
set - x`ls -l -d $1`
|
|
||||||
fi
|
|
||||||
# The month is at least the fourth argument
|
|
||||||
# (3 shifts here, the next inside the loop).
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
|
|
||||||
# Find the month. Next argument is day, followed by the year or time.
|
|
||||||
month=
|
|
||||||
until test $month
|
|
||||||
do
|
|
||||||
shift
|
|
||||||
case $1 in
|
|
||||||
Jan) month=January; nummonth=1;;
|
|
||||||
Feb) month=February; nummonth=2;;
|
|
||||||
Mar) month=March; nummonth=3;;
|
|
||||||
Apr) month=April; nummonth=4;;
|
|
||||||
May) month=May; nummonth=5;;
|
|
||||||
Jun) month=June; nummonth=6;;
|
|
||||||
Jul) month=July; nummonth=7;;
|
|
||||||
Aug) month=August; nummonth=8;;
|
|
||||||
Sep) month=September; nummonth=9;;
|
|
||||||
Oct) month=October; nummonth=10;;
|
|
||||||
Nov) month=November; nummonth=11;;
|
|
||||||
Dec) month=December; nummonth=12;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
day=$2
|
|
||||||
|
|
||||||
# Here we have to deal with the problem that the ls output gives either
|
|
||||||
# the time of day or the year.
|
|
||||||
case $3 in
|
|
||||||
*:*) set `date`; eval year=\$$#
|
|
||||||
case $2 in
|
|
||||||
Jan) nummonthtod=1;;
|
|
||||||
Feb) nummonthtod=2;;
|
|
||||||
Mar) nummonthtod=3;;
|
|
||||||
Apr) nummonthtod=4;;
|
|
||||||
May) nummonthtod=5;;
|
|
||||||
Jun) nummonthtod=6;;
|
|
||||||
Jul) nummonthtod=7;;
|
|
||||||
Aug) nummonthtod=8;;
|
|
||||||
Sep) nummonthtod=9;;
|
|
||||||
Oct) nummonthtod=10;;
|
|
||||||
Nov) nummonthtod=11;;
|
|
||||||
Dec) nummonthtod=12;;
|
|
||||||
esac
|
|
||||||
# For the first six month of the year the time notation can also
|
|
||||||
# be used for files modified in the last year.
|
|
||||||
if (expr $nummonth \> $nummonthtod) > /dev/null;
|
|
||||||
then
|
|
||||||
year=`expr $year - 1`
|
|
||||||
fi;;
|
|
||||||
*) year=$3;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# The result.
|
|
||||||
echo $day $month $year
|
|
||||||
-336
@@ -1,336 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
# Common stub for a few missing GNU programs while installing.
|
|
||||||
# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
|
|
||||||
# Originally by Fran,cois Pinard <[email protected]>, 1996.
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
if test $# -eq 0; then
|
|
||||||
echo 1>&2 "Try \`$0 --help' for more information"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
run=:
|
|
||||||
|
|
||||||
# In the cases where this matters, `missing' is being run in the
|
|
||||||
# srcdir already.
|
|
||||||
if test -f configure.ac; then
|
|
||||||
configure_ac=configure.ac
|
|
||||||
else
|
|
||||||
configure_ac=configure.in
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
--run)
|
|
||||||
# Try to run requested program, and just exit if it succeeds.
|
|
||||||
run=
|
|
||||||
shift
|
|
||||||
"$@" && exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# If it does not exist, or fails to run (possibly an outdated version),
|
|
||||||
# try to emulate it.
|
|
||||||
case "$1" in
|
|
||||||
|
|
||||||
-h|--h|--he|--hel|--help)
|
|
||||||
echo "\
|
|
||||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
|
||||||
|
|
||||||
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
|
||||||
error status if there is no known handling for PROGRAM.
|
|
||||||
|
|
||||||
Options:
|
|
||||||
-h, --help display this help and exit
|
|
||||||
-v, --version output version information and exit
|
|
||||||
--run try to run the given command, and emulate it if it fails
|
|
||||||
|
|
||||||
Supported PROGRAM values:
|
|
||||||
aclocal touch file \`aclocal.m4'
|
|
||||||
autoconf touch file \`configure'
|
|
||||||
autoheader touch file \`config.h.in'
|
|
||||||
automake touch all \`Makefile.in' files
|
|
||||||
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
|
||||||
flex create \`lex.yy.c', if possible, from existing .c
|
|
||||||
help2man touch the output file
|
|
||||||
lex create \`lex.yy.c', if possible, from existing .c
|
|
||||||
makeinfo touch the output file
|
|
||||||
tar try tar, gnutar, gtar, then tar without non-portable flags
|
|
||||||
yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
|
|
||||||
;;
|
|
||||||
|
|
||||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
|
||||||
echo "missing 0.4 - GNU automake"
|
|
||||||
;;
|
|
||||||
|
|
||||||
-*)
|
|
||||||
echo 1>&2 "$0: Unknown \`$1' option"
|
|
||||||
echo 1>&2 "Try \`$0 --help' for more information"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
|
|
||||||
aclocal*)
|
|
||||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
||||||
# We have it, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
|
||||||
to install the \`Automake' and \`Perl' packages. Grab them from
|
|
||||||
any GNU archive site."
|
|
||||||
touch aclocal.m4
|
|
||||||
;;
|
|
||||||
|
|
||||||
autoconf)
|
|
||||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
||||||
# We have it, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified \`${configure_ac}'. You might want to install the
|
|
||||||
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
|
||||||
archive site."
|
|
||||||
touch configure
|
|
||||||
;;
|
|
||||||
|
|
||||||
autoheader)
|
|
||||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
||||||
# We have it, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
|
||||||
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
|
||||||
from any GNU archive site."
|
|
||||||
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
|
||||||
test -z "$files" && files="config.h"
|
|
||||||
touch_files=
|
|
||||||
for f in $files; do
|
|
||||||
case "$f" in
|
|
||||||
*:*) touch_files="$touch_files "`echo "$f" |
|
|
||||||
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
|
||||||
*) touch_files="$touch_files $f.in";;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
touch $touch_files
|
|
||||||
;;
|
|
||||||
|
|
||||||
automake*)
|
|
||||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
||||||
# We have it, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
|
||||||
You might want to install the \`Automake' and \`Perl' packages.
|
|
||||||
Grab them from any GNU archive site."
|
|
||||||
find . -type f -name Makefile.am -print |
|
|
||||||
sed 's/\.am$/.in/' |
|
|
||||||
while read f; do touch "$f"; done
|
|
||||||
;;
|
|
||||||
|
|
||||||
autom4te)
|
|
||||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
||||||
# We have it, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
|
||||||
system. You might have modified some files without having the
|
|
||||||
proper tools for further handling them.
|
|
||||||
You can get \`$1Help2man' as part of \`Autoconf' from any GNU
|
|
||||||
archive site."
|
|
||||||
|
|
||||||
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
|
|
||||||
test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
|
|
||||||
if test -f "$file"; then
|
|
||||||
touch $file
|
|
||||||
else
|
|
||||||
test -z "$file" || exec >$file
|
|
||||||
echo "#! /bin/sh"
|
|
||||||
echo "# Created by GNU Automake missing as a replacement of"
|
|
||||||
echo "# $ $@"
|
|
||||||
echo "exit 0"
|
|
||||||
chmod +x $file
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
bison|yacc)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified a \`.y' file. You may need the \`Bison' package
|
|
||||||
in order for those modifications to take effect. You can get
|
|
||||||
\`Bison' from any GNU archive site."
|
|
||||||
rm -f y.tab.c y.tab.h
|
|
||||||
if [ $# -ne 1 ]; then
|
|
||||||
eval LASTARG="\${$#}"
|
|
||||||
case "$LASTARG" in
|
|
||||||
*.y)
|
|
||||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
|
||||||
if [ -f "$SRCFILE" ]; then
|
|
||||||
cp "$SRCFILE" y.tab.c
|
|
||||||
fi
|
|
||||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
|
||||||
if [ -f "$SRCFILE" ]; then
|
|
||||||
cp "$SRCFILE" y.tab.h
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
if [ ! -f y.tab.h ]; then
|
|
||||||
echo >y.tab.h
|
|
||||||
fi
|
|
||||||
if [ ! -f y.tab.c ]; then
|
|
||||||
echo 'main() { return 0; }' >y.tab.c
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
lex|flex)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified a \`.l' file. You may need the \`Flex' package
|
|
||||||
in order for those modifications to take effect. You can get
|
|
||||||
\`Flex' from any GNU archive site."
|
|
||||||
rm -f lex.yy.c
|
|
||||||
if [ $# -ne 1 ]; then
|
|
||||||
eval LASTARG="\${$#}"
|
|
||||||
case "$LASTARG" in
|
|
||||||
*.l)
|
|
||||||
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
|
||||||
if [ -f "$SRCFILE" ]; then
|
|
||||||
cp "$SRCFILE" lex.yy.c
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
if [ ! -f lex.yy.c ]; then
|
|
||||||
echo 'main() { return 0; }' >lex.yy.c
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
help2man)
|
|
||||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
||||||
# We have it, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified a dependency of a manual page. You may need the
|
|
||||||
\`Help2man' package in order for those modifications to take
|
|
||||||
effect. You can get \`Help2man' from any GNU archive site."
|
|
||||||
|
|
||||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
|
||||||
if test -z "$file"; then
|
|
||||||
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
|
|
||||||
fi
|
|
||||||
if [ -f "$file" ]; then
|
|
||||||
touch $file
|
|
||||||
else
|
|
||||||
test -z "$file" || exec >$file
|
|
||||||
echo ".ab help2man is required to generate this page"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
makeinfo)
|
|
||||||
if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
|
|
||||||
# We have makeinfo, but it failed.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is missing on your system. You should only need it if
|
|
||||||
you modified a \`.texi' or \`.texinfo' file, or any other file
|
|
||||||
indirectly affecting the aspect of the manual. The spurious
|
|
||||||
call might also be the consequence of using a buggy \`make' (AIX,
|
|
||||||
DU, IRIX). You might want to install the \`Texinfo' package or
|
|
||||||
the \`GNU make' package. Grab either from any GNU archive site."
|
|
||||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
|
||||||
if test -z "$file"; then
|
|
||||||
file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
|
||||||
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
|
|
||||||
fi
|
|
||||||
touch $file
|
|
||||||
;;
|
|
||||||
|
|
||||||
tar)
|
|
||||||
shift
|
|
||||||
if test -n "$run"; then
|
|
||||||
echo 1>&2 "ERROR: \`tar' requires --run"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# We have already tried tar in the generic part.
|
|
||||||
# Look for gnutar/gtar before invocation to avoid ugly error
|
|
||||||
# messages.
|
|
||||||
if (gnutar --version > /dev/null 2>&1); then
|
|
||||||
gnutar ${1+"$@"} && exit 0
|
|
||||||
fi
|
|
||||||
if (gtar --version > /dev/null 2>&1); then
|
|
||||||
gtar ${1+"$@"} && exit 0
|
|
||||||
fi
|
|
||||||
firstarg="$1"
|
|
||||||
if shift; then
|
|
||||||
case "$firstarg" in
|
|
||||||
*o*)
|
|
||||||
firstarg=`echo "$firstarg" | sed s/o//`
|
|
||||||
tar "$firstarg" ${1+"$@"} && exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
case "$firstarg" in
|
|
||||||
*h*)
|
|
||||||
firstarg=`echo "$firstarg" | sed s/h//`
|
|
||||||
tar "$firstarg" ${1+"$@"} && exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
|
||||||
You may want to install GNU tar or Free paxutils, or check the
|
|
||||||
command line arguments."
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is needed, and you do not seem to have it handy on your
|
|
||||||
system. You might have modified some files without having the
|
|
||||||
proper tools for further handling them. Check the \`README' file,
|
|
||||||
it often tells you about the needed prerequirements for installing
|
|
||||||
this package. You may also peek at any GNU archive site, in case
|
|
||||||
some other package would contain this missing \`$1' program."
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
@@ -1,101 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
# mkinstalldirs --- make directory hierarchy
|
|
||||||
# Author: Noah Friedman <[email protected]>
|
|
||||||
# Created: 1993-05-16
|
|
||||||
# Public domain
|
|
||||||
|
|
||||||
# $Id$
|
|
||||||
|
|
||||||
errstatus=0
|
|
||||||
dirmode=""
|
|
||||||
|
|
||||||
usage="\
|
|
||||||
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
|
|
||||||
|
|
||||||
# process command line arguments
|
|
||||||
while test $# -gt 0 ; do
|
|
||||||
case "${1}" in
|
|
||||||
-h | --help | --h* ) # -h for help
|
|
||||||
echo "${usage}" 1>&2; exit 0 ;;
|
|
||||||
-m ) # -m PERM arg
|
|
||||||
shift
|
|
||||||
test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
|
|
||||||
dirmode="${1}"
|
|
||||||
shift ;;
|
|
||||||
-- ) shift; break ;; # stop option processing
|
|
||||||
-* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option
|
|
||||||
* ) break ;; # first non-opt arg
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
for file
|
|
||||||
do
|
|
||||||
if test -d "$file"; then
|
|
||||||
shift
|
|
||||||
else
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
case $# in
|
|
||||||
0) exit 0 ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case $dirmode in
|
|
||||||
'')
|
|
||||||
if mkdir -p -- . 2>/dev/null; then
|
|
||||||
echo "mkdir -p -- $*"
|
|
||||||
exec mkdir -p -- "$@"
|
|
||||||
fi ;;
|
|
||||||
*)
|
|
||||||
if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
|
|
||||||
echo "mkdir -m $dirmode -p -- $*"
|
|
||||||
exec mkdir -m "$dirmode" -p -- "$@"
|
|
||||||
fi ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
for file
|
|
||||||
do
|
|
||||||
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
|
||||||
shift
|
|
||||||
|
|
||||||
pathcomp=
|
|
||||||
for d
|
|
||||||
do
|
|
||||||
pathcomp="$pathcomp$d"
|
|
||||||
case "$pathcomp" in
|
|
||||||
-* ) pathcomp=./$pathcomp ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if test ! -d "$pathcomp"; then
|
|
||||||
echo "mkdir $pathcomp"
|
|
||||||
|
|
||||||
mkdir "$pathcomp" || lasterr=$?
|
|
||||||
|
|
||||||
if test ! -d "$pathcomp"; then
|
|
||||||
errstatus=$lasterr
|
|
||||||
else
|
|
||||||
if test ! -z "$dirmode"; then
|
|
||||||
echo "chmod $dirmode $pathcomp"
|
|
||||||
|
|
||||||
lasterr=""
|
|
||||||
chmod "$dirmode" "$pathcomp" || lasterr=$?
|
|
||||||
|
|
||||||
if test ! -z "$lasterr"; then
|
|
||||||
errstatus=$lasterr
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
pathcomp="$pathcomp/"
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
exit $errstatus
|
|
||||||
|
|
||||||
# Local Variables:
|
|
||||||
# mode: shell-script
|
|
||||||
# sh-indentation: 3
|
|
||||||
# End:
|
|
||||||
# mkinstalldirs ends here
|
|
||||||
@@ -1 +1 @@
|
|||||||
1.34
|
1.29c
|
||||||
|
|||||||
-6351
File diff suppressed because it is too large
Load Diff
+9
-6
@@ -1,6 +1,6 @@
|
|||||||
# Configure template for GNU Bison. -*-Autoconf-*-
|
# Configure template for GNU Bison. -*-Autoconf-*-
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
# Copyright 2001, 2002 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -18,23 +18,25 @@
|
|||||||
# 02111-1307 USA
|
# 02111-1307 USA
|
||||||
|
|
||||||
# We need a recent Autoconf to run a recent Autotest.
|
# We need a recent Autoconf to run a recent Autotest.
|
||||||
AC_PREREQ(2.53)
|
AC_PREREQ(2.52g)
|
||||||
|
|
||||||
AC_INIT([GNU Bison], [1.35], [[email protected]])
|
AC_INIT([GNU Bison], [1.49a], [[email protected]])
|
||||||
AC_CONFIG_AUX_DIR(config)
|
AC_CONFIG_AUX_DIR(config)
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE
|
AM_INIT_AUTOMAKE([bison], [1.49a])
|
||||||
AM_CONFIG_HEADER(config.h:config.hin)
|
AM_CONFIG_HEADER(config.h:config.hin)
|
||||||
|
|
||||||
# Initialize the test suite.
|
# Initialize the test suite.
|
||||||
AC_CONFIG_TESTDIR(tests)
|
AC_CONFIG_TESTDIR(tests)
|
||||||
AC_CONFIG_FILES([tests/bison], [chmod +x tests/bison])
|
|
||||||
AC_CONFIG_FILES([tests/Makefile tests/atlocal])
|
AC_CONFIG_FILES([tests/Makefile tests/atlocal])
|
||||||
|
AC_CONFIG_FILES([tests/bison], [chmod +x tests/bison])
|
||||||
# Needed by tests/atlocal.in.
|
# Needed by tests/atlocal.in.
|
||||||
AC_SUBST([GCC])
|
AC_SUBST([GCC])
|
||||||
|
|
||||||
# Checks for programs.
|
# Checks for programs.
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
|
AM_PROG_LEX
|
||||||
|
AC_PROG_YACC
|
||||||
AC_MINIX
|
AC_MINIX
|
||||||
AC_ISC_POSIX
|
AC_ISC_POSIX
|
||||||
AM_PROG_CC_STDC
|
AM_PROG_CC_STDC
|
||||||
@@ -88,7 +90,7 @@ AC_FUNC_OBSTACK
|
|||||||
AC_FUNC_ERROR_AT_LINE
|
AC_FUNC_ERROR_AT_LINE
|
||||||
AC_FUNC_STRNLEN
|
AC_FUNC_STRNLEN
|
||||||
AC_CHECK_FUNCS(mkstemp setlocale)
|
AC_CHECK_FUNCS(mkstemp setlocale)
|
||||||
AC_CHECK_DECLS([stpcpy, strchr, strspn, strnlen, memchr, memrchr])
|
AC_CHECK_DECLS([free, stpcpy, strchr, strspn, strnlen, malloc, memchr, memrchr])
|
||||||
AC_REPLACE_FUNCS(stpcpy strchr strspn memchr memrchr)
|
AC_REPLACE_FUNCS(stpcpy strchr strspn memchr memrchr)
|
||||||
jm_FUNC_MALLOC
|
jm_FUNC_MALLOC
|
||||||
jm_FUNC_REALLOC
|
jm_FUNC_REALLOC
|
||||||
@@ -107,5 +109,6 @@ AC_SUBST(LIB@&t@OBJS)
|
|||||||
AC_OUTPUT([Makefile
|
AC_OUTPUT([Makefile
|
||||||
config/Makefile
|
config/Makefile
|
||||||
intl/Makefile po/Makefile.in
|
intl/Makefile po/Makefile.in
|
||||||
|
data/Makefile
|
||||||
lib/Makefile src/Makefile doc/Makefile
|
lib/Makefile src/Makefile doc/Makefile
|
||||||
m4/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}
|
||||||
@@ -1,5 +1,9 @@
|
|||||||
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
|
%%{section} %%{output-prefix} %%{output-infix} %%".c"
|
||||||
#line
|
/* -*- C -*- */
|
||||||
|
|
||||||
|
/* A Bison parser, made from %%{filename}
|
||||||
|
by GNU bison %%{version}. */
|
||||||
|
|
||||||
/* Skeleton output parser for bison,
|
/* Skeleton output parser for bison,
|
||||||
|
|
||||||
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
|
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
|
||||||
@@ -30,6 +34,64 @@
|
|||||||
It was written by Richard Stallman by simplifying the hairy parser
|
It was written by Richard Stallman by simplifying the hairy parser
|
||||||
used when %semantic_parser is specified. */
|
used when %semantic_parser is specified. */
|
||||||
|
|
||||||
|
/* Identify Bison output. */
|
||||||
|
#define YYBISON 1
|
||||||
|
|
||||||
|
/* Pure parsers. */
|
||||||
|
#define YYPURE %%{pure}
|
||||||
|
|
||||||
|
/* Using locations. */
|
||||||
|
#define YYLSP_NEEDED %%{locations-flag}
|
||||||
|
|
||||||
|
/* If NAME_PREFIX is specified substitute the variables and functions
|
||||||
|
names. */
|
||||||
|
#define yyparse %%{prefix}parse
|
||||||
|
#define yylex %%{prefix}lex
|
||||||
|
#define yyerror %%{prefix}error
|
||||||
|
#define yylval %%{prefix}lval
|
||||||
|
#define yychar %%{prefix}char
|
||||||
|
#define yydebug %%{prefix}debug
|
||||||
|
#define yynerrs %%{prefix}nerrs
|
||||||
|
#if YYLSP_NEEDED
|
||||||
|
# define yylloc %%{prefix}lloc
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Copy the user declarations. */
|
||||||
|
%%{prologue}
|
||||||
|
|
||||||
|
/* Enabling traces. */
|
||||||
|
#ifndef YYDEBUG
|
||||||
|
# define YYDEBUG %%{debug}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Enabling verbose error messages. */
|
||||||
|
#ifdef YYERROR_VERBOSE
|
||||||
|
# undef YYERROR_VERBOSE
|
||||||
|
# define YYERROR_VERBOSE 1
|
||||||
|
#else
|
||||||
|
# define YYERROR_VERBOSE %%{error-verbose}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef YYSTYPE
|
||||||
|
typedef %%{stype} yystype;
|
||||||
|
# define YYSTYPE yystype
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef YYLTYPE
|
||||||
|
typedef struct yyltype
|
||||||
|
{
|
||||||
|
int first_line;
|
||||||
|
int first_column;
|
||||||
|
int last_line;
|
||||||
|
int last_column;
|
||||||
|
} yyltype;
|
||||||
|
# define YYLTYPE %%{ltype}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Line %%{skeleton-line} of %%{skeleton}. */
|
||||||
|
#line %%{line} "%%{parser-file-name}"
|
||||||
|
|
||||||
/* All symbols defined below should begin with yy or YY, to avoid
|
/* All symbols defined below should begin with yy or YY, to avoid
|
||||||
infringing on user name space. This should be done even for local
|
infringing on user name space. This should be done even for local
|
||||||
variables, as they might otherwise be expanded by user macros.
|
variables, as they might otherwise be expanded by user macros.
|
||||||
@@ -37,6 +99,12 @@
|
|||||||
define necessary library symbols; they are noted "INFRINGES ON
|
define necessary library symbols; they are noted "INFRINGES ON
|
||||||
USER NAME SPACE" below. */
|
USER NAME SPACE" below. */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
# define YYSTD(x) std::x
|
||||||
|
#else
|
||||||
|
# define YYSTD(x) x
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
|
#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
|
||||||
|
|
||||||
/* The parser invokes alloca or malloc; define the necessary symbols. */
|
/* The parser invokes alloca or malloc; define the necessary symbols. */
|
||||||
@@ -59,19 +127,18 @@
|
|||||||
/* Pacify GCC's `empty if-body' warning. */
|
/* Pacify GCC's `empty if-body' warning. */
|
||||||
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
|
# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
|
||||||
# else
|
# else
|
||||||
# if defined (__STDC__) || defined (__cplusplus)
|
# ifdef __cplusplus
|
||||||
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
|
# include <cstdlib> /* INFRINGES ON USER NAME SPACE */
|
||||||
# define YYSIZE_T size_t
|
# define YYSIZE_T std::size_t
|
||||||
|
# else
|
||||||
|
# ifdef __STDC__
|
||||||
|
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
|
||||||
|
# define YYSIZE_T size_t
|
||||||
|
# endif
|
||||||
# endif
|
# endif
|
||||||
# define YYSTACK_ALLOC malloc
|
# define YYSTACK_ALLOC YYSTD (malloc)
|
||||||
# define YYSTACK_FREE free
|
# define YYSTACK_FREE YYSTD (free)
|
||||||
# endif
|
# endif
|
||||||
#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
|
|
||||||
|
|
||||||
|
|
||||||
#if (! defined (yyoverflow) \
|
|
||||||
&& (! defined (__cplusplus) \
|
|
||||||
|| (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
|
|
||||||
|
|
||||||
/* A type that is properly aligned for any stack member. */
|
/* A type that is properly aligned for any stack member. */
|
||||||
union yyalloc
|
union yyalloc
|
||||||
@@ -90,50 +157,148 @@ union yyalloc
|
|||||||
N elements. */
|
N elements. */
|
||||||
# if YYLSP_NEEDED
|
# if YYLSP_NEEDED
|
||||||
# define YYSTACK_BYTES(N) \
|
# define YYSTACK_BYTES(N) \
|
||||||
((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
|
((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
|
||||||
+ 2 * YYSTACK_GAP_MAX)
|
+ 2 * YYSTACK_GAP_MAX)
|
||||||
# else
|
# else
|
||||||
# define YYSTACK_BYTES(N) \
|
# define YYSTACK_BYTES(N) \
|
||||||
((N) * (sizeof (short) + sizeof (YYSTYPE)) \
|
((N) * (sizeof (short) + sizeof (YYSTYPE)) \
|
||||||
+ YYSTACK_GAP_MAX)
|
+ YYSTACK_GAP_MAX)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
/* Copy COUNT objects from FROM to TO. The source and destination do
|
/* Relocate the TYPE STACK from its old location to the new one. The
|
||||||
not overlap. */
|
|
||||||
# ifndef YYCOPY
|
|
||||||
# if 1 < __GNUC__
|
|
||||||
# define YYCOPY(To, From, Count) \
|
|
||||||
__builtin_memcpy (To, From, (Count) * sizeof (*(From)))
|
|
||||||
# else
|
|
||||||
# define YYCOPY(To, From, Count) \
|
|
||||||
do \
|
|
||||||
{ \
|
|
||||||
register YYSIZE_T yyi; \
|
|
||||||
for (yyi = 0; yyi < (Count); yyi++) \
|
|
||||||
(To)[yyi] = (From)[yyi]; \
|
|
||||||
} \
|
|
||||||
while (0)
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* Relocate STACK from its old location to the new one. The
|
|
||||||
local variables YYSIZE and YYSTACKSIZE give the old and new number of
|
local variables YYSIZE and YYSTACKSIZE give the old and new number of
|
||||||
elements in the stack, and YYPTR gives the new location of the
|
elements in the stack, and YYPTR gives the new location of the
|
||||||
stack. Advance YYPTR to a properly aligned location for the next
|
stack. Advance YYPTR to a properly aligned location for the next
|
||||||
stack. */
|
stack. */
|
||||||
# define YYSTACK_RELOCATE(Stack) \
|
# define YYSTACK_RELOCATE(Type, Stack) \
|
||||||
do \
|
do \
|
||||||
{ \
|
{ \
|
||||||
YYSIZE_T yynewbytes; \
|
YYSIZE_T yynewbytes; \
|
||||||
YYCOPY (&yyptr->Stack, Stack, yysize); \
|
yymemcpy ((char *) yyptr, (char *) (Stack), \
|
||||||
|
yysize * (YYSIZE_T) sizeof (Type)); \
|
||||||
Stack = &yyptr->Stack; \
|
Stack = &yyptr->Stack; \
|
||||||
yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
|
yynewbytes = yystacksize * sizeof (Type) + YYSTACK_GAP_MAX; \
|
||||||
yyptr += yynewbytes / sizeof (*yyptr); \
|
yyptr += yynewbytes / sizeof (*yyptr); \
|
||||||
} \
|
} \
|
||||||
while (0)
|
while (0)
|
||||||
|
|
||||||
|
#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
|
||||||
|
|
||||||
|
/* Tokens. */
|
||||||
|
%%{tokendef}
|
||||||
|
|
||||||
|
/* YYFINAL -- State number of the termination state. */
|
||||||
|
#define YYFINAL %%{final}
|
||||||
|
#define YYFLAG %%{flag}
|
||||||
|
#define YYLAST %%{last}
|
||||||
|
|
||||||
|
/* YYNTOKENS -- Number of terminals. */
|
||||||
|
#define YYNTOKENS %%{ntokens}
|
||||||
|
/* YYNNTS -- Number of nonterminals. */
|
||||||
|
#define YYNNTS %%{nnts}
|
||||||
|
/* YYNRULES -- Number of rules. */
|
||||||
|
#define YYNRULES %%{nrules}
|
||||||
|
/* YYNRULES -- Number of states. */
|
||||||
|
#define YYNSTATES %%{nstates}
|
||||||
|
#define YYMAXUTOK %%{maxtok}
|
||||||
|
|
||||||
|
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
|
||||||
|
#define YYTRANSLATE(x) ((unsigned)(x) <= %%{maxtok} ? yytranslate[x] : %%{nsym})
|
||||||
|
|
||||||
|
/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
|
||||||
|
static const char yytranslate[] =
|
||||||
|
{
|
||||||
|
%%{translate}
|
||||||
|
};
|
||||||
|
|
||||||
|
#if YYDEBUG
|
||||||
|
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
|
||||||
|
YYRHS. */
|
||||||
|
static const short yyprhs[] =
|
||||||
|
{
|
||||||
|
%%{prhs}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
|
||||||
|
static const short yyrhs[] =
|
||||||
|
{
|
||||||
|
%%{rhs}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
|
||||||
|
static const short yyrline[] =
|
||||||
|
{
|
||||||
|
%%{rline}
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (YYDEBUG) || YYERROR_VERBOSE
|
||||||
|
/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
|
||||||
|
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
|
||||||
|
static const char *const yytname[] =
|
||||||
|
{
|
||||||
|
%%{tname}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* YYTOKNUM[YYN] -- Index in YYTNAME corresponding to YYLEX. */
|
||||||
|
static const short yytoknum[] =
|
||||||
|
{
|
||||||
|
%%{toknum}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
|
||||||
|
static const short yyr1[] =
|
||||||
|
{
|
||||||
|
%%{r1}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
|
||||||
|
static const short yyr2[] =
|
||||||
|
{
|
||||||
|
%%{r2}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 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. */
|
||||||
|
static const short yydefact[] =
|
||||||
|
{
|
||||||
|
%%{defact}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYPGOTO[NTERM-NUM]. */
|
||||||
|
static const short yydefgoto[] =
|
||||||
|
{
|
||||||
|
%%{defgoto}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
|
||||||
|
STATE-NUM. */
|
||||||
|
static const short yypact[] =
|
||||||
|
{
|
||||||
|
%%{pact}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* YYPGOTO[NTERM-NUM]. */
|
||||||
|
static const short yypgoto[] =
|
||||||
|
{
|
||||||
|
%%{pgoto}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 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. */
|
||||||
|
static const short yytable[] =
|
||||||
|
{
|
||||||
|
%%{table}
|
||||||
|
};
|
||||||
|
|
||||||
|
static const short yycheck[] =
|
||||||
|
{
|
||||||
|
%%{check}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
|
#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
|
||||||
# define YYSIZE_T __SIZE_TYPE__
|
# define YYSIZE_T __SIZE_TYPE__
|
||||||
@@ -142,9 +307,14 @@ union yyalloc
|
|||||||
# define YYSIZE_T size_t
|
# define YYSIZE_T size_t
|
||||||
#endif
|
#endif
|
||||||
#if ! defined (YYSIZE_T)
|
#if ! defined (YYSIZE_T)
|
||||||
# if defined (__STDC__) || defined (__cplusplus)
|
# ifdef __cplusplus
|
||||||
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
|
# include <cstddef> /* INFRINGES ON USER NAME SPACE */
|
||||||
# define YYSIZE_T size_t
|
# define YYSIZE_T std::size_t
|
||||||
|
# else
|
||||||
|
# ifdef __STDC__
|
||||||
|
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
|
||||||
|
# define YYSIZE_T size_t
|
||||||
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#if ! defined (YYSIZE_T)
|
#if ! defined (YYSIZE_T)
|
||||||
@@ -155,14 +325,19 @@ union yyalloc
|
|||||||
#define yyclearin (yychar = YYEMPTY)
|
#define yyclearin (yychar = YYEMPTY)
|
||||||
#define YYEMPTY -2
|
#define YYEMPTY -2
|
||||||
#define YYEOF 0
|
#define YYEOF 0
|
||||||
|
|
||||||
#define YYACCEPT goto yyacceptlab
|
#define YYACCEPT goto yyacceptlab
|
||||||
#define YYABORT goto yyabortlab
|
#define YYABORT goto yyabortlab
|
||||||
#define YYERROR goto yyerrlab1
|
#define YYERROR goto yyerrlab1
|
||||||
|
|
||||||
/* Like YYERROR except do call yyerror. This remains here temporarily
|
/* Like YYERROR except do call yyerror. This remains here temporarily
|
||||||
to ease the transition to the new meaning of YYERROR, for GCC.
|
to ease the transition to the new meaning of YYERROR, for GCC.
|
||||||
Once GCC version 2 has supplanted version 1, this can go. */
|
Once GCC version 2 has supplanted version 1, this can go. */
|
||||||
|
|
||||||
#define YYFAIL goto yyerrlab
|
#define YYFAIL goto yyerrlab
|
||||||
|
|
||||||
#define YYRECOVERING() (!!yyerrstatus)
|
#define YYRECOVERING() (!!yyerrstatus)
|
||||||
|
|
||||||
#define YYBACKUP(Token, Value) \
|
#define YYBACKUP(Token, Value) \
|
||||||
do \
|
do \
|
||||||
if (yychar == YYEMPTY && yylen == 1) \
|
if (yychar == YYEMPTY && yylen == 1) \
|
||||||
@@ -183,7 +358,6 @@ while (0)
|
|||||||
#define YYTERROR 1
|
#define YYTERROR 1
|
||||||
#define YYERRCODE 256
|
#define YYERRCODE 256
|
||||||
|
|
||||||
|
|
||||||
/* YYLLOC_DEFAULT -- Compute the default location (before the actions
|
/* YYLLOC_DEFAULT -- Compute the default location (before the actions
|
||||||
are run).
|
are run).
|
||||||
|
|
||||||
@@ -197,7 +371,6 @@ while (0)
|
|||||||
Current.last_column = Rhs[N].last_column;
|
Current.last_column = Rhs[N].last_column;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* YYLEX -- calling `yylex' with the right arguments. */
|
/* YYLEX -- calling `yylex' with the right arguments. */
|
||||||
|
|
||||||
#if YYPURE
|
#if YYPURE
|
||||||
@@ -218,13 +391,16 @@ while (0)
|
|||||||
# define YYLEX yylex ()
|
# define YYLEX yylex ()
|
||||||
#endif /* !YYPURE */
|
#endif /* !YYPURE */
|
||||||
|
|
||||||
|
|
||||||
/* Enable debugging if requested. */
|
/* Enable debugging if requested. */
|
||||||
#if YYDEBUG
|
#if YYDEBUG
|
||||||
|
|
||||||
# ifndef YYFPRINTF
|
# ifndef YYFPRINTF
|
||||||
# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
|
# ifdef __cplusplus
|
||||||
# define YYFPRINTF fprintf
|
# include <cstdio> /* INFRINGES ON USER NAME SPACE */
|
||||||
|
# else
|
||||||
|
# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
|
||||||
|
# endif
|
||||||
|
# define YYFPRINTF YYSTD (fprintf)
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# define YYDPRINTF(Args) \
|
# define YYDPRINTF(Args) \
|
||||||
@@ -232,8 +408,10 @@ do { \
|
|||||||
if (yydebug) \
|
if (yydebug) \
|
||||||
YYFPRINTF Args; \
|
YYFPRINTF Args; \
|
||||||
} while (0)
|
} while (0)
|
||||||
/* Nonzero means print parse trace. It is left uninitialized so that
|
/* Nonzero means print parse trace. [The following comment makes no
|
||||||
multiple parsers can coexist. */
|
sense to me. Could someone clarify it? --akim] Since this is
|
||||||
|
uninitialized, it does not stop multiple parsers from coexisting.
|
||||||
|
*/
|
||||||
int yydebug;
|
int yydebug;
|
||||||
#else /* !YYDEBUG */
|
#else /* !YYDEBUG */
|
||||||
# define YYDPRINTF(Args)
|
# define YYDPRINTF(Args)
|
||||||
@@ -241,7 +419,7 @@ int yydebug;
|
|||||||
|
|
||||||
/* YYINITDEPTH -- initial size of the parser's stacks. */
|
/* YYINITDEPTH -- initial size of the parser's stacks. */
|
||||||
#ifndef YYINITDEPTH
|
#ifndef YYINITDEPTH
|
||||||
# define YYINITDEPTH 200
|
# define YYINITDEPTH %%{initdepth}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
|
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
|
||||||
@@ -256,10 +434,39 @@ int yydebug;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef YYMAXDEPTH
|
#ifndef YYMAXDEPTH
|
||||||
# define YYMAXDEPTH 10000
|
# define YYMAXDEPTH %%{maxdepth}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef YYERROR_VERBOSE
|
|
||||||
|
#if ! defined (yyoverflow) && ! defined (yymemcpy)
|
||||||
|
# if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
|
||||||
|
# define yymemcpy __builtin_memcpy
|
||||||
|
# else /* not GNU C or C++ */
|
||||||
|
|
||||||
|
/* This is the most reliable way to avoid incompatibilities
|
||||||
|
in available built-in functions on various systems. */
|
||||||
|
static void
|
||||||
|
# if defined (__STDC__) || defined (__cplusplus)
|
||||||
|
yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T yycount)
|
||||||
|
# else
|
||||||
|
yymemcpy (yyto, yyfrom, yycount)
|
||||||
|
char *yyto;
|
||||||
|
const char *yyfrom;
|
||||||
|
YYSIZE_T yycount;
|
||||||
|
# endif
|
||||||
|
{
|
||||||
|
register const char *yyf = yyfrom;
|
||||||
|
register char *yyt = yyto;
|
||||||
|
register YYSIZE_T yyi = yycount;
|
||||||
|
|
||||||
|
while (yyi-- != 0)
|
||||||
|
*yyt++ = *yyf++;
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if YYERROR_VERBOSE
|
||||||
|
|
||||||
# ifndef yystrlen
|
# ifndef yystrlen
|
||||||
# if defined (__GLIBC__) && defined (_STRING_H)
|
# if defined (__GLIBC__) && defined (_STRING_H)
|
||||||
@@ -309,9 +516,10 @@ yystpcpy (yydest, yysrc)
|
|||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif
|
|
||||||
|
#endif /* !YYERROR_VERBOSE */
|
||||||
|
|
||||||
|
|
||||||
#line
|
|
||||||
|
|
||||||
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
|
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
|
||||||
into yyparse. The argument should have type void *.
|
into yyparse. The argument should have type void *.
|
||||||
@@ -320,13 +528,13 @@ yystpcpy (yydest, yysrc)
|
|||||||
to the proper pointer type. */
|
to the proper pointer type. */
|
||||||
|
|
||||||
#ifdef YYPARSE_PARAM
|
#ifdef YYPARSE_PARAM
|
||||||
# if defined (__STDC__) || defined (__cplusplus)
|
# ifdef __cplusplus
|
||||||
# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
|
# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
|
||||||
# define YYPARSE_PARAM_DECL
|
# define YYPARSE_PARAM_DECL
|
||||||
# else
|
# else /* !__cplusplus */
|
||||||
# define YYPARSE_PARAM_ARG YYPARSE_PARAM
|
# define YYPARSE_PARAM_ARG YYPARSE_PARAM
|
||||||
# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
|
# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
|
||||||
# endif
|
# endif /* !__cplusplus */
|
||||||
#else /* !YYPARSE_PARAM */
|
#else /* !YYPARSE_PARAM */
|
||||||
# define YYPARSE_PARAM_ARG
|
# define YYPARSE_PARAM_ARG
|
||||||
# define YYPARSE_PARAM_DECL
|
# define YYPARSE_PARAM_DECL
|
||||||
@@ -348,7 +556,7 @@ int yyparse (void);
|
|||||||
/* The lookahead symbol. */ \
|
/* The lookahead symbol. */ \
|
||||||
int yychar; \
|
int yychar; \
|
||||||
\
|
\
|
||||||
/* The semantic value of the lookahead symbol. */ \
|
/* The semantic value of the lookahead symbol. */ \
|
||||||
YYSTYPE yylval; \
|
YYSTYPE yylval; \
|
||||||
\
|
\
|
||||||
/* Number of parse errors so far. */ \
|
/* Number of parse errors so far. */ \
|
||||||
@@ -365,8 +573,7 @@ YYLTYPE yylloc;
|
|||||||
YY_DECL_NON_LSP_VARIABLES
|
YY_DECL_NON_LSP_VARIABLES
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* If nonreentrant, generate the variables here. */
|
||||||
/* If nonreentrant, generate the variables here. */
|
|
||||||
|
|
||||||
#if !YYPURE
|
#if !YYPURE
|
||||||
YY_DECL_VARIABLES
|
YY_DECL_VARIABLES
|
||||||
@@ -376,7 +583,7 @@ int
|
|||||||
yyparse (YYPARSE_PARAM_ARG)
|
yyparse (YYPARSE_PARAM_ARG)
|
||||||
YYPARSE_PARAM_DECL
|
YYPARSE_PARAM_DECL
|
||||||
{
|
{
|
||||||
/* If reentrant, generate the variables here. */
|
/* If reentrant, generate the variables here. */
|
||||||
#if YYPURE
|
#if YYPURE
|
||||||
YY_DECL_VARIABLES
|
YY_DECL_VARIABLES
|
||||||
#endif /* !YYPURE */
|
#endif /* !YYPURE */
|
||||||
@@ -397,7 +604,7 @@ yyparse (YYPARSE_PARAM_ARG)
|
|||||||
Refer to the stacks thru separate pointers, to allow yyoverflow
|
Refer to the stacks thru separate pointers, to allow yyoverflow
|
||||||
to reallocate them elsewhere. */
|
to reallocate them elsewhere. */
|
||||||
|
|
||||||
/* The state stack. */
|
/* The state stack. */
|
||||||
short yyssa[YYINITDEPTH];
|
short yyssa[YYINITDEPTH];
|
||||||
short *yyss = yyssa;
|
short *yyss = yyssa;
|
||||||
register short *yyssp;
|
register short *yyssp;
|
||||||
@@ -422,7 +629,6 @@ yyparse (YYPARSE_PARAM_ARG)
|
|||||||
|
|
||||||
YYSIZE_T yystacksize = YYINITDEPTH;
|
YYSIZE_T yystacksize = YYINITDEPTH;
|
||||||
|
|
||||||
|
|
||||||
/* The variables used to return semantic value and location from the
|
/* The variables used to return semantic value and location from the
|
||||||
action routines. */
|
action routines. */
|
||||||
YYSTYPE yyval;
|
YYSTYPE yyval;
|
||||||
@@ -431,7 +637,7 @@ yyparse (YYPARSE_PARAM_ARG)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* When reducing, the number of symbols on the RHS of the reduced
|
/* When reducing, the number of symbols on the RHS of the reduced
|
||||||
rule. */
|
rule. */
|
||||||
int yylen;
|
int yylen;
|
||||||
|
|
||||||
YYDPRINTF ((stderr, "Starting parse\n"));
|
YYDPRINTF ((stderr, "Starting parse\n"));
|
||||||
@@ -500,9 +706,6 @@ yyparse (YYPARSE_PARAM_ARG)
|
|||||||
yyvs = yyvs1;
|
yyvs = yyvs1;
|
||||||
}
|
}
|
||||||
#else /* no yyoverflow */
|
#else /* no yyoverflow */
|
||||||
# ifndef YYSTACK_RELOCATE
|
|
||||||
goto yyoverflowlab;
|
|
||||||
# else
|
|
||||||
/* Extend the stack our own way. */
|
/* Extend the stack our own way. */
|
||||||
if (yystacksize >= YYMAXDEPTH)
|
if (yystacksize >= YYMAXDEPTH)
|
||||||
goto yyoverflowlab;
|
goto yyoverflowlab;
|
||||||
@@ -516,16 +719,15 @@ yyparse (YYPARSE_PARAM_ARG)
|
|||||||
(union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
|
(union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
|
||||||
if (! yyptr)
|
if (! yyptr)
|
||||||
goto yyoverflowlab;
|
goto yyoverflowlab;
|
||||||
YYSTACK_RELOCATE (yyss);
|
YYSTACK_RELOCATE (short, yyss);
|
||||||
YYSTACK_RELOCATE (yyvs);
|
YYSTACK_RELOCATE (YYSTYPE, yyvs);
|
||||||
# if YYLSP_NEEDED
|
# if YYLSP_NEEDED
|
||||||
YYSTACK_RELOCATE (yyls);
|
YYSTACK_RELOCATE (YYLTYPE, yyls);
|
||||||
# endif
|
# endif
|
||||||
# undef YYSTACK_RELOCATE
|
# undef YYSTACK_RELOCATE
|
||||||
if (yyss1 != yyssa)
|
if (yyss1 != yyssa)
|
||||||
YYSTACK_FREE (yyss1);
|
YYSTACK_FREE (yyss1);
|
||||||
}
|
}
|
||||||
# endif
|
|
||||||
#endif /* no yyoverflow */
|
#endif /* no yyoverflow */
|
||||||
|
|
||||||
yyssp = yyss + yysize - 1;
|
yyssp = yyss + yysize - 1;
|
||||||
@@ -545,7 +747,6 @@ yyparse (YYPARSE_PARAM_ARG)
|
|||||||
|
|
||||||
goto yybackup;
|
goto yybackup;
|
||||||
|
|
||||||
|
|
||||||
/*-----------.
|
/*-----------.
|
||||||
| yybackup. |
|
| yybackup. |
|
||||||
`-----------*/
|
`-----------*/
|
||||||
@@ -572,12 +773,12 @@ yybackup:
|
|||||||
yychar = YYLEX;
|
yychar = YYLEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Convert token to internal form (in yychar1) for indexing tables with */
|
/* Convert token to internal form (in yychar1) for indexing tables with. */
|
||||||
|
|
||||||
if (yychar <= 0) /* This means end of input. */
|
if (yychar <= 0) /* This means end of input. */
|
||||||
{
|
{
|
||||||
yychar1 = 0;
|
yychar1 = 0;
|
||||||
yychar = YYEOF; /* Don't call YYLEX any more */
|
yychar = YYEOF; /* Don't call YYLEX any more. */
|
||||||
|
|
||||||
YYDPRINTF ((stderr, "Now at end of input.\n"));
|
YYDPRINTF ((stderr, "Now at end of input.\n"));
|
||||||
}
|
}
|
||||||
@@ -692,16 +893,21 @@ yyreduce:
|
|||||||
int yyi;
|
int yyi;
|
||||||
|
|
||||||
YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
|
YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
|
||||||
yyn, yyrline[yyn]);
|
yyn - 1, yyrline[yyn]);
|
||||||
|
|
||||||
/* Print the symbols being reduced, and their result. */
|
/* Print the symbols being reduced, and their result. */
|
||||||
for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
|
for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)
|
||||||
YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
|
YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
|
||||||
YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
|
YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
%% actions /* The action file replaces this line. */
|
switch (yyn)
|
||||||
#line
|
{
|
||||||
|
%%{actions}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Line %%{skeleton-line} of %%{skeleton}. */
|
||||||
|
#line %%{line} "%%{parser-file-name}"
|
||||||
|
|
||||||
yyvsp -= yylen;
|
yyvsp -= yylen;
|
||||||
yyssp -= yylen;
|
yyssp -= yylen;
|
||||||
@@ -731,11 +937,11 @@ yyreduce:
|
|||||||
|
|
||||||
yyn = yyr1[yyn];
|
yyn = yyr1[yyn];
|
||||||
|
|
||||||
yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
|
yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
|
||||||
if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
|
if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
|
||||||
yystate = yytable[yystate];
|
yystate = yytable[yystate];
|
||||||
else
|
else
|
||||||
yystate = yydefgoto[yyn - YYNTBASE];
|
yystate = yydefgoto[yyn - YYNTOKENS];
|
||||||
|
|
||||||
goto yynewstate;
|
goto yynewstate;
|
||||||
|
|
||||||
@@ -749,7 +955,7 @@ yyerrlab:
|
|||||||
{
|
{
|
||||||
++yynerrs;
|
++yynerrs;
|
||||||
|
|
||||||
#ifdef YYERROR_VERBOSE
|
#if YYERROR_VERBOSE
|
||||||
yyn = yypact[yystate];
|
yyn = yypact[yystate];
|
||||||
|
|
||||||
if (yyn > YYFLAG && yyn < YYLAST)
|
if (yyn > YYFLAG && yyn < YYLAST)
|
||||||
@@ -789,27 +995,27 @@ yyerrlab:
|
|||||||
}
|
}
|
||||||
yyerror (yymsg);
|
yyerror (yymsg);
|
||||||
YYSTACK_FREE (yymsg);
|
YYSTACK_FREE (yymsg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
yyerror ("parse error; also virtual memory exhausted");
|
yyerror ("parse error; also virtual memory exhausted");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif /* defined (YYERROR_VERBOSE) */
|
#endif /* YYERROR_VERBOSE */
|
||||||
yyerror ("parse error");
|
yyerror ("parse error");
|
||||||
}
|
}
|
||||||
goto yyerrlab1;
|
goto yyerrlab1;
|
||||||
|
|
||||||
|
|
||||||
/*--------------------------------------------------.
|
/*----------------------------------------------------.
|
||||||
| yyerrlab1 -- error raised explicitly by an action |
|
| yyerrlab1 -- error raised explicitly by an action. |
|
||||||
`--------------------------------------------------*/
|
`----------------------------------------------------*/
|
||||||
yyerrlab1:
|
yyerrlab1:
|
||||||
if (yyerrstatus == 3)
|
if (yyerrstatus == 3)
|
||||||
{
|
{
|
||||||
/* If just tried and failed to reuse lookahead token after an
|
/* If just tried and failed to reuse lookahead token after an
|
||||||
error, discard it. */
|
error, discard it. */
|
||||||
|
|
||||||
/* return failure if at end of input */
|
/* Return failure if at end of input. */
|
||||||
if (yychar == YYEOF)
|
if (yychar == YYEOF)
|
||||||
YYABORT;
|
YYABORT;
|
||||||
YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
|
YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
|
||||||
@@ -820,7 +1026,7 @@ yyerrlab1:
|
|||||||
/* Else will try to reuse lookahead token after shifting the error
|
/* Else will try to reuse lookahead token after shifting the error
|
||||||
token. */
|
token. */
|
||||||
|
|
||||||
yyerrstatus = 3; /* Each real token shifted decrements this */
|
yyerrstatus = 3; /* Each real token shifted decrements this. */
|
||||||
|
|
||||||
goto yyerrhandle;
|
goto yyerrhandle;
|
||||||
|
|
||||||
@@ -843,7 +1049,7 @@ yyerrdefault:
|
|||||||
|
|
||||||
/*---------------------------------------------------------------.
|
/*---------------------------------------------------------------.
|
||||||
| yyerrpop -- pop the current state because it cannot handle the |
|
| yyerrpop -- pop the current state because it cannot handle the |
|
||||||
| error token |
|
| error token. |
|
||||||
`---------------------------------------------------------------*/
|
`---------------------------------------------------------------*/
|
||||||
yyerrpop:
|
yyerrpop:
|
||||||
if (yyssp == yyss)
|
if (yyssp == yyss)
|
||||||
@@ -931,3 +1137,5 @@ yyreturn:
|
|||||||
#endif
|
#endif
|
||||||
return yyresult;
|
return yyresult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%%{epilogue}
|
||||||
+12
-4
@@ -1,12 +1,20 @@
|
|||||||
Makefile Makefile.in
|
Makefile
|
||||||
*.aux *.dvi *.log *.info* *.pdf *.ps
|
bison.aux
|
||||||
stamp-*
|
|
||||||
auto
|
|
||||||
bison.cp
|
bison.cp
|
||||||
bison.cps
|
bison.cps
|
||||||
|
bison.dvi
|
||||||
bison.fn
|
bison.fn
|
||||||
bison.ky
|
bison.ky
|
||||||
|
bison.log
|
||||||
bison.pg
|
bison.pg
|
||||||
|
bison.ps
|
||||||
bison.toc
|
bison.toc
|
||||||
bison.tp
|
bison.tp
|
||||||
bison.vr
|
bison.vr
|
||||||
|
refcard.dvi
|
||||||
|
refcard.log
|
||||||
|
refcard.ps
|
||||||
|
Makefile.in
|
||||||
|
*.info*
|
||||||
|
stamp-vti
|
||||||
|
version.texi
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
||||||
|
AUTOMAKE_OPTIONS = 1.4
|
||||||
|
|
||||||
info_TEXINFOS = bison.texinfo
|
info_TEXINFOS = bison.texinfo
|
||||||
man_MANS = bison.1
|
man_MANS = bison.1
|
||||||
|
|||||||
+179
-197
@@ -191,7 +191,7 @@ Examples
|
|||||||
|
|
||||||
Reverse Polish Notation Calculator
|
Reverse Polish Notation Calculator
|
||||||
|
|
||||||
* Decls: Rpcalc Decls. Bison and C declarations for rpcalc.
|
* Decls: Rpcalc Decls. Prologue (declarations) for rpcalc.
|
||||||
* Rules: Rpcalc Rules. Grammar Rules for rpcalc, with explanation.
|
* Rules: Rpcalc Rules. Grammar Rules for rpcalc, with explanation.
|
||||||
* Lexer: Rpcalc Lexer. The lexical analyzer.
|
* Lexer: Rpcalc Lexer. The lexical analyzer.
|
||||||
* Main: Rpcalc Main. The controlling function.
|
* Main: Rpcalc Main. The controlling function.
|
||||||
@@ -229,10 +229,10 @@ Bison Grammar Files
|
|||||||
|
|
||||||
Outline of a Bison Grammar
|
Outline of a Bison Grammar
|
||||||
|
|
||||||
* C Declarations:: Syntax and usage of the C declarations section.
|
* Prologue:: Syntax and usage of the prologue (declarations section).
|
||||||
* Bison Declarations:: Syntax and usage of the Bison declarations section.
|
* Bison Declarations:: Syntax and usage of the Bison declarations section.
|
||||||
* Grammar Rules:: Syntax and usage of the grammar rules section.
|
* Grammar Rules:: Syntax and usage of the grammar rules section.
|
||||||
* C Code:: Syntax and usage of the additional C code section.
|
* Epilogue:: Syntax and usage of the epilogue (additional code section).
|
||||||
|
|
||||||
Defining Language Semantics
|
Defining Language Semantics
|
||||||
|
|
||||||
@@ -304,8 +304,6 @@ Invoking Bison
|
|||||||
* Bison Options:: All the options described in detail,
|
* Bison Options:: All the options described in detail,
|
||||||
in alphabetical order by short options.
|
in alphabetical order by short options.
|
||||||
* Option Cross Key:: Alphabetical list of long options.
|
* Option Cross Key:: Alphabetical list of long options.
|
||||||
* Extension Limitations Under DOS:: Bison output files extension differences
|
|
||||||
depending on the DOS/Windows file system flavour used.
|
|
||||||
* VMS Invocation:: Bison command syntax on VMS.
|
* VMS Invocation:: Bison command syntax on VMS.
|
||||||
|
|
||||||
Copying This Manual
|
Copying This Manual
|
||||||
@@ -678,12 +676,13 @@ the grammar rules---for example, to build identifiers and operators into
|
|||||||
expressions. As it does this, it runs the actions for the grammar rules it
|
expressions. As it does this, it runs the actions for the grammar rules it
|
||||||
uses.
|
uses.
|
||||||
|
|
||||||
The tokens come from a function called the @dfn{lexical analyzer} that you
|
The tokens come from a function called the @dfn{lexical analyzer} that
|
||||||
must supply in some fashion (such as by writing it in C). The Bison parser
|
you must supply in some fashion (such as by writing it in C). The Bison
|
||||||
calls the lexical analyzer each time it wants a new token. It doesn't know
|
parser calls the lexical analyzer each time it wants a new token. It
|
||||||
what is ``inside'' the tokens (though their semantic values may reflect
|
doesn't know what is ``inside'' the tokens (though their semantic values
|
||||||
this). Typically the lexical analyzer makes the tokens by parsing
|
may reflect this). Typically the lexical analyzer makes the tokens by
|
||||||
characters of text, but Bison does not depend on this. @xref{Lexical, ,The Lexical Analyzer Function @code{yylex}}.
|
parsing characters of text, but Bison does not depend on this.
|
||||||
|
@xref{Lexical, ,The Lexical Analyzer Function @code{yylex}}.
|
||||||
|
|
||||||
The Bison parser file is C code which defines a function named
|
The Bison parser file is C code which defines a function named
|
||||||
@code{yyparse} which implements that grammar. This function does not make
|
@code{yyparse} which implements that grammar. This function does not make
|
||||||
@@ -708,7 +707,8 @@ In some cases the Bison parser file includes system headers, and in
|
|||||||
those cases your code should respect the identifiers reserved by those
|
those cases your code should respect the identifiers reserved by those
|
||||||
headers. On some non-@sc{gnu} hosts, @code{<alloca.h>},
|
headers. On some non-@sc{gnu} hosts, @code{<alloca.h>},
|
||||||
@code{<stddef.h>}, and @code{<stdlib.h>} are included as needed to
|
@code{<stddef.h>}, and @code{<stdlib.h>} are included as needed to
|
||||||
declare memory allocators and related types.
|
declare memory allocators and related types. In the same situation,
|
||||||
|
C++ parsers may include @code{<cstddef>} and @code{<cstdlib>} instead.
|
||||||
Other system headers may be included if you define @code{YYDEBUG} to a
|
Other system headers may be included if you define @code{YYDEBUG} to a
|
||||||
nonzero value (@pxref{Debugging, ,Debugging Your Parser}).
|
nonzero value (@pxref{Debugging, ,Debugging Your Parser}).
|
||||||
|
|
||||||
@@ -723,15 +723,16 @@ to a working compiler or interpreter, has these parts:
|
|||||||
@enumerate
|
@enumerate
|
||||||
@item
|
@item
|
||||||
Formally specify the grammar in a form recognized by Bison
|
Formally specify the grammar in a form recognized by Bison
|
||||||
(@pxref{Grammar File, ,Bison Grammar Files}). For each grammatical rule in the language,
|
(@pxref{Grammar File, ,Bison Grammar Files}). For each grammatical rule
|
||||||
describe the action that is to be taken when an instance of that rule
|
in the language, describe the action that is to be taken when an
|
||||||
is recognized. The action is described by a sequence of C statements.
|
instance of that rule is recognized. The action is described by a
|
||||||
|
sequence of C statements.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Write a lexical analyzer to process input and pass tokens to the
|
Write a lexical analyzer to process input and pass tokens to the parser.
|
||||||
parser. The lexical analyzer may be written by hand in C
|
The lexical analyzer may be written by hand in C (@pxref{Lexical, ,The
|
||||||
(@pxref{Lexical, ,The Lexical Analyzer Function @code{yylex}}). It could also be produced using Lex, but the use
|
Lexical Analyzer Function @code{yylex}}). It could also be produced
|
||||||
of Lex is not discussed in this manual.
|
using Lex, but the use of Lex is not discussed in this manual.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Write a controlling function that calls the Bison-produced parser.
|
Write a controlling function that calls the Bison-produced parser.
|
||||||
@@ -766,7 +767,7 @@ general form of a Bison grammar file is as follows:
|
|||||||
|
|
||||||
@example
|
@example
|
||||||
%@{
|
%@{
|
||||||
@var{C declarations}
|
@var{Prologue (declarations)}
|
||||||
%@}
|
%@}
|
||||||
|
|
||||||
@var{Bison declarations}
|
@var{Bison declarations}
|
||||||
@@ -774,15 +775,15 @@ general form of a Bison grammar file is as follows:
|
|||||||
%%
|
%%
|
||||||
@var{Grammar rules}
|
@var{Grammar rules}
|
||||||
%%
|
%%
|
||||||
@var{Additional C code}
|
@var{Epilogue (additional code)}
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@noindent
|
@noindent
|
||||||
The @samp{%%}, @samp{%@{} and @samp{%@}} are punctuation that appears
|
The @samp{%%}, @samp{%@{} and @samp{%@}} are punctuation that appears
|
||||||
in every Bison grammar file to separate the sections.
|
in every Bison grammar file to separate the sections.
|
||||||
|
|
||||||
The C declarations may define types and variables used in the actions.
|
The prologue may define types and variables used in the actions. You can
|
||||||
You can also use preprocessor commands to define macros used there, and use
|
also use preprocessor commands to define macros used there, and use
|
||||||
@code{#include} to include header files that do any of these things.
|
@code{#include} to include header files that do any of these things.
|
||||||
|
|
||||||
The Bison declarations declare the names of the terminal and nonterminal
|
The Bison declarations declare the names of the terminal and nonterminal
|
||||||
@@ -792,10 +793,10 @@ semantic values of various symbols.
|
|||||||
The grammar rules define how to construct each nonterminal symbol from its
|
The grammar rules define how to construct each nonterminal symbol from its
|
||||||
parts.
|
parts.
|
||||||
|
|
||||||
The additional C code can contain any C code you want to use. Often the
|
The epilogue can contain any code you want to use. Often the definition of
|
||||||
definition of the lexical analyzer @code{yylex} goes here, plus subroutines
|
the lexical analyzer @code{yylex} goes here, plus subroutines called by the
|
||||||
called by the actions in the grammar rules. In a simple program, all the
|
actions in the grammar rules. In a simple program, all the rest of the
|
||||||
rest of the program can go here.
|
program can go here.
|
||||||
|
|
||||||
@node Examples
|
@node Examples
|
||||||
@chapter Examples
|
@chapter Examples
|
||||||
@@ -843,7 +844,7 @@ The source code for this calculator is named @file{rpcalc.y}. The
|
|||||||
@samp{.y} extension is a convention used for Bison input files.
|
@samp{.y} extension is a convention used for Bison input files.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Decls: Rpcalc Decls. Bison and C declarations for rpcalc.
|
* Decls: Rpcalc Decls. Prologue (declarations) for rpcalc.
|
||||||
* Rules: Rpcalc Rules. Grammar Rules for rpcalc, with explanation.
|
* Rules: Rpcalc Rules. Grammar Rules for rpcalc, with explanation.
|
||||||
* Lexer: Rpcalc Lexer. The lexical analyzer.
|
* Lexer: Rpcalc Lexer. The lexical analyzer.
|
||||||
* Main: Rpcalc Main. The controlling function.
|
* Main: Rpcalc Main. The controlling function.
|
||||||
@@ -871,7 +872,7 @@ calculator. As in C, comments are placed between @samp{/*@dots{}*/}.
|
|||||||
%% /* Grammar rules and actions follow */
|
%% /* Grammar rules and actions follow */
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
The C declarations section (@pxref{C Declarations, ,The C Declarations Section}) contains two
|
The declarations section (@pxref{Prologue, , The prologue}) contains two
|
||||||
preprocessor directives.
|
preprocessor directives.
|
||||||
|
|
||||||
The @code{#define} directive defines the macro @code{YYSTYPE}, thus
|
The @code{#define} directive defines the macro @code{YYSTYPE}, thus
|
||||||
@@ -885,9 +886,10 @@ which is a floating point number.
|
|||||||
The @code{#include} directive is used to declare the exponentiation
|
The @code{#include} directive is used to declare the exponentiation
|
||||||
function @code{pow}.
|
function @code{pow}.
|
||||||
|
|
||||||
The second section, Bison declarations, provides information to Bison about
|
The second section, Bison declarations, provides information to Bison
|
||||||
the token types (@pxref{Bison Declarations, ,The Bison Declarations Section}). Each terminal symbol that is
|
about the token types (@pxref{Bison Declarations, ,The Bison
|
||||||
not a single-character literal must be declared here. (Single-character
|
Declarations Section}). Each terminal symbol that is not a
|
||||||
|
single-character literal must be declared here. (Single-character
|
||||||
literals normally don't need to be declared.) In this example, all the
|
literals normally don't need to be declared.) In this example, all the
|
||||||
arithmetic operators are designated by single-character literals, so the
|
arithmetic operators are designated by single-character literals, so the
|
||||||
only terminal symbol that needs to be declared is @code{NUM}, the token
|
only terminal symbol that needs to be declared is @code{NUM}, the token
|
||||||
@@ -1067,9 +1069,10 @@ The latter, however, is much more readable.
|
|||||||
@cindex writing a lexical analyzer
|
@cindex writing a lexical analyzer
|
||||||
@cindex lexical analyzer, writing
|
@cindex lexical analyzer, writing
|
||||||
|
|
||||||
The lexical analyzer's job is low-level parsing: converting characters or
|
The lexical analyzer's job is low-level parsing: converting characters
|
||||||
sequences of characters into tokens. The Bison parser gets its tokens by
|
or sequences of characters into tokens. The Bison parser gets its
|
||||||
calling the lexical analyzer. @xref{Lexical, ,The Lexical Analyzer Function @code{yylex}}.
|
tokens by calling the lexical analyzer. @xref{Lexical, ,The Lexical
|
||||||
|
Analyzer Function @code{yylex}}.
|
||||||
|
|
||||||
Only a simple lexical analyzer is needed for the RPN calculator. This
|
Only a simple lexical analyzer is needed for the RPN calculator. This
|
||||||
lexical analyzer skips blanks and tabs, then reads in numbers as
|
lexical analyzer skips blanks and tabs, then reads in numbers as
|
||||||
@@ -1194,8 +1197,8 @@ Before running Bison to produce a parser, we need to decide how to
|
|||||||
arrange all the source code in one or more source files. For such a
|
arrange all the source code in one or more source files. For such a
|
||||||
simple example, the easiest thing is to put everything in one file. The
|
simple example, the easiest thing is to put everything in one file. The
|
||||||
definitions of @code{yylex}, @code{yyerror} and @code{main} go at the
|
definitions of @code{yylex}, @code{yyerror} and @code{main} go at the
|
||||||
end, in the ``additional C code'' section of the file (@pxref{Grammar
|
end, in the epilogue of the file
|
||||||
Layout, ,The Overall Layout of a Bison Grammar}).
|
(@pxref{Grammar Layout, ,The Overall Layout of a Bison Grammar}).
|
||||||
|
|
||||||
For a large project, you would probably have several source files, and use
|
For a large project, you would probably have several source files, and use
|
||||||
@code{make} to arrange to recompile them.
|
@code{make} to arrange to recompile them.
|
||||||
@@ -1326,12 +1329,14 @@ Operator precedence is determined by the line ordering of the
|
|||||||
declarations; the higher the line number of the declaration (lower on
|
declarations; the higher the line number of the declaration (lower on
|
||||||
the page or screen), the higher the precedence. Hence, exponentiation
|
the page or screen), the higher the precedence. Hence, exponentiation
|
||||||
has the highest precedence, unary minus (@code{NEG}) is next, followed
|
has the highest precedence, unary minus (@code{NEG}) is next, followed
|
||||||
by @samp{*} and @samp{/}, and so on. @xref{Precedence, ,Operator Precedence}.
|
by @samp{*} and @samp{/}, and so on. @xref{Precedence, ,Operator
|
||||||
|
Precedence}.
|
||||||
|
|
||||||
The other important new feature is the @code{%prec} in the grammar section
|
The other important new feature is the @code{%prec} in the grammar
|
||||||
for the unary minus operator. The @code{%prec} simply instructs Bison that
|
section for the unary minus operator. The @code{%prec} simply instructs
|
||||||
the rule @samp{| '-' exp} has the same precedence as @code{NEG}---in this
|
Bison that the rule @samp{| '-' exp} has the same precedence as
|
||||||
case the next-to-highest. @xref{Contextual Precedence, ,Context-Dependent Precedence}.
|
@code{NEG}---in this case the next-to-highest. @xref{Contextual
|
||||||
|
Precedence, ,Context-Dependent Precedence}.
|
||||||
|
|
||||||
Here is a sample run of @file{calc.y}:
|
Here is a sample run of @file{calc.y}:
|
||||||
|
|
||||||
@@ -1684,11 +1689,12 @@ are @code{NUM}, @code{VAR}, @code{FNCT}, and @code{exp}. Their
|
|||||||
declarations are augmented with information about their data type (placed
|
declarations are augmented with information about their data type (placed
|
||||||
between angle brackets).
|
between angle brackets).
|
||||||
|
|
||||||
The Bison construct @code{%type} is used for declaring nonterminal symbols,
|
The Bison construct @code{%type} is used for declaring nonterminal
|
||||||
just as @code{%token} is used for declaring token types. We have not used
|
symbols, just as @code{%token} is used for declaring token types. We
|
||||||
@code{%type} before because nonterminal symbols are normally declared
|
have not used @code{%type} before because nonterminal symbols are
|
||||||
implicitly by the rules that define them. But @code{exp} must be declared
|
normally declared implicitly by the rules that define them. But
|
||||||
explicitly so we can specify its value type. @xref{Type Decl, ,Nonterminal Symbols}.
|
@code{exp} must be declared explicitly so we can specify its value type.
|
||||||
|
@xref{Type Decl, ,Nonterminal Symbols}.
|
||||||
|
|
||||||
@node Mfcalc Rules
|
@node Mfcalc Rules
|
||||||
@subsection Grammar Rules for @code{mfcalc}
|
@subsection Grammar Rules for @code{mfcalc}
|
||||||
@@ -1962,8 +1968,8 @@ yylex (void)
|
|||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
This program is both powerful and flexible. You may easily add new
|
This program is both powerful and flexible. You may easily add new
|
||||||
functions, and it is a simple job to modify this code to install predefined
|
functions, and it is a simple job to modify this code to install
|
||||||
variables such as @code{pi} or @code{e} as well.
|
predefined variables such as @code{pi} or @code{e} as well.
|
||||||
|
|
||||||
@node Exercises
|
@node Exercises
|
||||||
@section Exercises
|
@section Exercises
|
||||||
@@ -2011,7 +2017,7 @@ appropriate delimiters:
|
|||||||
|
|
||||||
@example
|
@example
|
||||||
%@{
|
%@{
|
||||||
@var{C declarations}
|
@var{Prologue}
|
||||||
%@}
|
%@}
|
||||||
|
|
||||||
@var{Bison declarations}
|
@var{Bison declarations}
|
||||||
@@ -2020,24 +2026,25 @@ appropriate delimiters:
|
|||||||
@var{Grammar rules}
|
@var{Grammar rules}
|
||||||
%%
|
%%
|
||||||
|
|
||||||
@var{Additional C code}
|
@var{Epilogue}
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
Comments enclosed in @samp{/* @dots{} */} may appear in any of the sections.
|
Comments enclosed in @samp{/* @dots{} */} may appear in any of the sections.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* C Declarations:: Syntax and usage of the C declarations section.
|
* Prologue:: Syntax and usage of the prologue.
|
||||||
* Bison Declarations:: Syntax and usage of the Bison declarations section.
|
* Bison Declarations:: Syntax and usage of the Bison declarations section.
|
||||||
* Grammar Rules:: Syntax and usage of the grammar rules section.
|
* Grammar Rules:: Syntax and usage of the grammar rules section.
|
||||||
* C Code:: Syntax and usage of the additional C code section.
|
* Epilogue:: Syntax and usage of the epilogue.
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node C Declarations
|
@node Prologue, Bison Declarations, , Grammar Outline
|
||||||
@subsection The C Declarations Section
|
@subsection The prologue
|
||||||
@cindex C declarations section
|
@cindex declarations section
|
||||||
@cindex declarations, C
|
@cindex Prologue
|
||||||
|
@cindex declarations
|
||||||
|
|
||||||
The @var{C declarations} section contains macro definitions and
|
The @var{prologue} section contains macro definitions and
|
||||||
declarations of functions and variables that are used in the actions in the
|
declarations of functions and variables that are used in the actions in the
|
||||||
grammar rules. These are copied to the beginning of the parser file so
|
grammar rules. These are copied to the beginning of the parser file so
|
||||||
that they precede the definition of @code{yyparse}. You can use
|
that they precede the definition of @code{yyparse}. You can use
|
||||||
@@ -2067,18 +2074,18 @@ There must always be at least one grammar rule, and the first
|
|||||||
@samp{%%} (which precedes the grammar rules) may never be omitted even
|
@samp{%%} (which precedes the grammar rules) may never be omitted even
|
||||||
if it is the first thing in the file.
|
if it is the first thing in the file.
|
||||||
|
|
||||||
@node C Code
|
@node Epilogue, , Grammar Rules, Grammar Outline
|
||||||
@subsection The Additional C Code Section
|
@subsection The epilogue
|
||||||
@cindex additional C code section
|
@cindex additional C code section
|
||||||
|
@cindex epilogue
|
||||||
@cindex C code, section for additional
|
@cindex C code, section for additional
|
||||||
|
|
||||||
The @var{additional C code} section is copied verbatim to the end of the
|
The @var{epilogue} is copied verbatim to the end of the parser file, just as
|
||||||
parser file, just as the @var{C declarations} section is copied to the
|
the @var{prologue} is copied to the beginning. This is the most convenient
|
||||||
beginning. This is the most convenient place to put anything that you
|
place to put anything that you want to have in the parser file but which need
|
||||||
want to have in the parser file but which need not come before the
|
not come before the definition of @code{yyparse}. For example, the
|
||||||
definition of @code{yyparse}. For example, the definitions of
|
definitions of @code{yylex} and @code{yyerror} often go here.
|
||||||
@code{yylex} and @code{yyerror} often go here. @xref{Interface, ,Parser
|
@xref{Interface, ,Parser C-Language Interface}.
|
||||||
C-Language Interface}.
|
|
||||||
|
|
||||||
If the last section is empty, you may omit the @samp{%%} that separates it
|
If the last section is empty, you may omit the @samp{%%} that separates it
|
||||||
from the grammar rules.
|
from the grammar rules.
|
||||||
@@ -2086,7 +2093,7 @@ from the grammar rules.
|
|||||||
The Bison parser itself contains many static variables whose names start
|
The Bison parser itself contains many static variables whose names start
|
||||||
with @samp{yy} and many macros whose names start with @samp{YY}. It is a
|
with @samp{yy} and many macros whose names start with @samp{YY}. It is a
|
||||||
good idea to avoid using any such names (except those documented in this
|
good idea to avoid using any such names (except those documented in this
|
||||||
manual) in the additional C code section of the grammar file.
|
manual) in the epilogue of the grammar file.
|
||||||
|
|
||||||
@node Symbols
|
@node Symbols
|
||||||
@section Symbols, Terminal and Nonterminal
|
@section Symbols, Terminal and Nonterminal
|
||||||
@@ -2408,8 +2415,8 @@ specify some other type, define @code{YYSTYPE} as a macro, like this:
|
|||||||
@end example
|
@end example
|
||||||
|
|
||||||
@noindent
|
@noindent
|
||||||
This macro definition must go in the C declarations section of the grammar
|
This macro definition must go in the prologue of the grammar file
|
||||||
file (@pxref{Grammar Outline, ,Outline of a Bison Grammar}).
|
(@pxref{Grammar Outline, ,Outline of a Bison Grammar}).
|
||||||
|
|
||||||
@node Multiple Types
|
@node Multiple Types
|
||||||
@subsection More Than One Value Type
|
@subsection More Than One Value Type
|
||||||
@@ -2425,7 +2432,8 @@ requires you to do two things:
|
|||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
Specify the entire collection of possible data types, with the
|
Specify the entire collection of possible data types, with the
|
||||||
@code{%union} Bison declaration (@pxref{Union Decl, ,The Collection of Value Types}).
|
@code{%union} Bison declaration (@pxref{Union Decl, ,The Collection of
|
||||||
|
Value Types}).
|
||||||
|
|
||||||
@item
|
@item
|
||||||
Choose one of those types for each symbol (terminal or nonterminal) for
|
Choose one of those types for each symbol (terminal or nonterminal) for
|
||||||
@@ -2447,10 +2455,11 @@ is to compute a semantic value for the grouping built by the rule from the
|
|||||||
semantic values associated with tokens or smaller groupings.
|
semantic values associated with tokens or smaller groupings.
|
||||||
|
|
||||||
An action consists of C statements surrounded by braces, much like a
|
An action consists of C statements surrounded by braces, much like a
|
||||||
compound statement in C. It can be placed at any position in the rule; it
|
compound statement in C. It can be placed at any position in the rule;
|
||||||
is executed at that position. Most rules have just one action at the end
|
it is executed at that position. Most rules have just one action at the
|
||||||
of the rule, following all the components. Actions in the middle of a rule
|
end of the rule, following all the components. Actions in the middle of
|
||||||
are tricky and used only for special purposes (@pxref{Mid-Rule Actions, ,Actions in Mid-Rule}).
|
a rule are tricky and used only for special purposes (@pxref{Mid-Rule
|
||||||
|
Actions, ,Actions in Mid-Rule}).
|
||||||
|
|
||||||
The C code in an action can refer to the semantic values of the components
|
The C code in an action can refer to the semantic values of the components
|
||||||
matched by the rule with the construct @code{$@var{n}}, which stands for
|
matched by the rule with the construct @code{$@var{n}}, which stands for
|
||||||
@@ -2730,8 +2739,8 @@ especially symbol locations.
|
|||||||
|
|
||||||
@c (terminal or not) ?
|
@c (terminal or not) ?
|
||||||
|
|
||||||
The way locations are handled is defined by providing a data type, and actions
|
The way locations are handled is defined by providing a data type, and
|
||||||
to take when rules are matched.
|
actions to take when rules are matched.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Location Type:: Specifying a data type for locations.
|
* Location Type:: Specifying a data type for locations.
|
||||||
@@ -2832,11 +2841,11 @@ exp: @dots{}
|
|||||||
@subsection Default Action for Locations
|
@subsection Default Action for Locations
|
||||||
@vindex YYLLOC_DEFAULT
|
@vindex YYLLOC_DEFAULT
|
||||||
|
|
||||||
Actually, actions are not the best place to compute locations. Since locations
|
Actually, actions are not the best place to compute locations. Since
|
||||||
are much more general than semantic values, there is room in the output parser
|
locations are much more general than semantic values, there is room in
|
||||||
to redefine the default action to take for each rule. The
|
the output parser to redefine the default action to take for each
|
||||||
@code{YYLLOC_DEFAULT} macro is called each time a rule is matched, before the
|
rule. The @code{YYLLOC_DEFAULT} macro is invoked each time a rule is
|
||||||
associated action is run.
|
matched, before the associated action is run.
|
||||||
|
|
||||||
Most of the time, this macro is general enough to suppress location
|
Most of the time, this macro is general enough to suppress location
|
||||||
dedicated code from semantic actions.
|
dedicated code from semantic actions.
|
||||||
@@ -2888,7 +2897,8 @@ value (@pxref{Multiple Types, ,More Than One Value Type}).
|
|||||||
|
|
||||||
The first rule in the file also specifies the start symbol, by default.
|
The first rule in the file also specifies the start symbol, by default.
|
||||||
If you want some other symbol to be the start symbol, you must declare
|
If you want some other symbol to be the start symbol, you must declare
|
||||||
it explicitly (@pxref{Language and Grammar, ,Languages and Context-Free Grammars}).
|
it explicitly (@pxref{Language and Grammar, ,Languages and Context-Free
|
||||||
|
Grammars}).
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Token Decl:: Declaring terminal symbols.
|
* Token Decl:: Declaring terminal symbols.
|
||||||
@@ -2937,7 +2947,8 @@ with each other or with ASCII characters.
|
|||||||
|
|
||||||
In the event that the stack type is a union, you must augment the
|
In the event that the stack type is a union, you must augment the
|
||||||
@code{%token} or other token declaration to include the data type
|
@code{%token} or other token declaration to include the data type
|
||||||
alternative delimited by angle-brackets (@pxref{Multiple Types, ,More Than One Value Type}).
|
alternative delimited by angle-brackets (@pxref{Multiple Types, ,More
|
||||||
|
Than One Value Type}).
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
@@ -2984,7 +2995,8 @@ obtain the token type code number (@pxref{Calling Convention}).
|
|||||||
Use the @code{%left}, @code{%right} or @code{%nonassoc} declaration to
|
Use the @code{%left}, @code{%right} or @code{%nonassoc} declaration to
|
||||||
declare a token and specify its precedence and associativity, all at
|
declare a token and specify its precedence and associativity, all at
|
||||||
once. These are called @dfn{precedence declarations}.
|
once. These are called @dfn{precedence declarations}.
|
||||||
@xref{Precedence, ,Operator Precedence}, for general information on operator precedence.
|
@xref{Precedence, ,Operator Precedence}, for general information on
|
||||||
|
operator precedence.
|
||||||
|
|
||||||
The syntax of a precedence declaration is the same as that of
|
The syntax of a precedence declaration is the same as that of
|
||||||
@code{%token}: either
|
@code{%token}: either
|
||||||
@@ -3071,11 +3083,12 @@ used. This is done with a @code{%type} declaration, like this:
|
|||||||
@end example
|
@end example
|
||||||
|
|
||||||
@noindent
|
@noindent
|
||||||
Here @var{nonterminal} is the name of a nonterminal symbol, and @var{type}
|
Here @var{nonterminal} is the name of a nonterminal symbol, and
|
||||||
is the name given in the @code{%union} to the alternative that you want
|
@var{type} is the name given in the @code{%union} to the alternative
|
||||||
(@pxref{Union Decl, ,The Collection of Value Types}). You can give any number of nonterminal symbols in
|
that you want (@pxref{Union Decl, ,The Collection of Value Types}). You
|
||||||
the same @code{%type} declaration, if they have the same value type. Use
|
can give any number of nonterminal symbols in the same @code{%type}
|
||||||
spaces to separate the symbol names.
|
declaration, if they have the same value type. Use spaces to separate
|
||||||
|
the symbol names.
|
||||||
|
|
||||||
You can also declare the value type of a terminal symbol. To do this,
|
You can also declare the value type of a terminal symbol. To do this,
|
||||||
use the same @code{<@var{type}>} construction in a declaration for the
|
use the same @code{<@var{type}>} construction in a declaration for the
|
||||||
@@ -3150,7 +3163,7 @@ may override this restriction with the @code{%start} declaration as follows:
|
|||||||
@subsection A Pure (Reentrant) Parser
|
@subsection A Pure (Reentrant) Parser
|
||||||
@cindex reentrant parser
|
@cindex reentrant parser
|
||||||
@cindex pure parser
|
@cindex pure parser
|
||||||
@findex %pure_parser
|
@findex %pure-parser
|
||||||
|
|
||||||
A @dfn{reentrant} program is one which does not alter in the course of
|
A @dfn{reentrant} program is one which does not alter in the course of
|
||||||
execution; in other words, it consists entirely of @dfn{pure} (read-only)
|
execution; in other words, it consists entirely of @dfn{pure} (read-only)
|
||||||
@@ -3166,11 +3179,11 @@ statically allocated variables for communication with @code{yylex},
|
|||||||
including @code{yylval} and @code{yylloc}.)
|
including @code{yylval} and @code{yylloc}.)
|
||||||
|
|
||||||
Alternatively, you can generate a pure, reentrant parser. The Bison
|
Alternatively, you can generate a pure, reentrant parser. The Bison
|
||||||
declaration @code{%pure_parser} says that you want the parser to be
|
declaration @code{%pure-parser} says that you want the parser to be
|
||||||
reentrant. It looks like this:
|
reentrant. It looks like this:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
%pure_parser
|
%pure-parser
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
The result is that the communication variables @code{yylval} and
|
The result is that the communication variables @code{yylval} and
|
||||||
@@ -3257,12 +3270,12 @@ be able to refer to token type codes and the variable
|
|||||||
Specify a prefix to use for all Bison output file names. The names are
|
Specify a prefix to use for all Bison output file names. The names are
|
||||||
chosen as if the input file were named @file{@var{prefix}.y}.
|
chosen as if the input file were named @file{@var{prefix}.y}.
|
||||||
|
|
||||||
@c @item %header_extension
|
@c @item %header-extension
|
||||||
@c Specify the extension of the parser header file generated when
|
@c Specify the extension of the parser header file generated when
|
||||||
@c @code{%define} or @samp{-d} are used.
|
@c @code{%define} or @samp{-d} are used.
|
||||||
@c
|
@c
|
||||||
@c For example, a grammar file named @file{foo.ypp} and containing a
|
@c For example, a grammar file named @file{foo.ypp} and containing a
|
||||||
@c @code{%header_extension .hh} directive will produce a header file
|
@c @code{%header-extension .hh} directive will produce a header file
|
||||||
@c named @file{foo.tab.hh}
|
@c named @file{foo.tab.hh}
|
||||||
|
|
||||||
@item %locations
|
@item %locations
|
||||||
@@ -3276,10 +3289,10 @@ accurate parse error messages.
|
|||||||
Rename the external symbols used in the parser so that they start with
|
Rename the external symbols used in the parser so that they start with
|
||||||
@var{prefix} instead of @samp{yy}. The precise list of symbols renamed
|
@var{prefix} instead of @samp{yy}. The precise list of symbols renamed
|
||||||
is @code{yyparse}, @code{yylex}, @code{yyerror}, @code{yynerrs},
|
is @code{yyparse}, @code{yylex}, @code{yyerror}, @code{yynerrs},
|
||||||
@code{yylval}, @code{yychar} and @code{yydebug}. For example, if you
|
@code{yylval}, @code{yychar}, @code{yydebug}, and possible
|
||||||
use @samp{%name-prefix="c_"}, the names become @code{c_parse},
|
@code{yylloc}. For example, if you use @samp{%name-prefix="c_"}, the
|
||||||
@code{c_lex}, and so on. @xref{Multiple Parsers, ,Multiple Parsers in
|
names become @code{c_parse}, @code{c_lex}, and so on. @xref{Multiple
|
||||||
the Same Program}.
|
Parsers, ,Multiple Parsers in the Same Program}.
|
||||||
|
|
||||||
@item %no-parser
|
@item %no-parser
|
||||||
Do not include any C code in the parser file; generate tables only. The
|
Do not include any C code in the parser file; generate tables only. The
|
||||||
@@ -3305,14 +3318,14 @@ Specify the @var{filename} for the parser file.
|
|||||||
Request a pure (reentrant) parser program (@pxref{Pure Decl, ,A Pure
|
Request a pure (reentrant) parser program (@pxref{Pure Decl, ,A Pure
|
||||||
(Reentrant) Parser}).
|
(Reentrant) Parser}).
|
||||||
|
|
||||||
@c @item %source_extension
|
@c @item %source-extension
|
||||||
@c Specify the extension of the parser output file.
|
@c Specify the extension of the parser output file.
|
||||||
@c
|
@c
|
||||||
@c For example, a grammar file named @file{foo.yy} and containing a
|
@c For example, a grammar file named @file{foo.yy} and containing a
|
||||||
@c @code{%source_extension .cpp} directive will produce a parser file
|
@c @code{%source-extension .cpp} directive will produce a parser file
|
||||||
@c named @file{foo.tab.cpp}
|
@c named @file{foo.tab.cpp}
|
||||||
|
|
||||||
@item %token_table
|
@item %token-table
|
||||||
Generate an array of token names in the parser file. The name of the
|
Generate an array of token names in the parser file. The name of the
|
||||||
array is @code{yytname}; @code{yytname[@var{i}]} is the name of the
|
array is @code{yytname}; @code{yytname[@var{i}]} is the name of the
|
||||||
token whose internal Bison token code number is @var{i}. The first three
|
token whose internal Bison token code number is @var{i}. The first three
|
||||||
@@ -3330,7 +3343,7 @@ consists of three characters @samp{*"*}, its string in @code{yytname}
|
|||||||
contains @samp{"*"*"}. (In C, that would be written as
|
contains @samp{"*"*"}. (In C, that would be written as
|
||||||
@code{"\"*\"*\""}).
|
@code{"\"*\"*\""}).
|
||||||
|
|
||||||
When you specify @code{%token_table}, Bison also generates macro
|
When you specify @code{%token-table}, Bison also generates macro
|
||||||
definitions for macros @code{YYNTOKENS}, @code{YYNNTS}, and
|
definitions for macros @code{YYNTOKENS}, @code{YYNNTS}, and
|
||||||
@code{YYNRULES}, and @code{YYNSTATES}:
|
@code{YYNRULES}, and @code{YYNSTATES}:
|
||||||
|
|
||||||
@@ -3361,7 +3374,6 @@ called @file{foo.tab.c} by default. As a consequence, the verbose
|
|||||||
output file is called @file{foo.output}.@refill
|
output file is called @file{foo.output}.@refill
|
||||||
|
|
||||||
@item %yacc
|
@item %yacc
|
||||||
@itemx %fixed-output-files
|
|
||||||
Pretend the option @option{--yacc} was given, i.e., imitate Yacc,
|
Pretend the option @option{--yacc} was given, i.e., imitate Yacc,
|
||||||
including its naming conventions. @xref{Bison Options}, for more.
|
including its naming conventions. @xref{Bison Options}, for more.
|
||||||
@end table
|
@end table
|
||||||
@@ -3378,10 +3390,10 @@ language with the same program? Then you need to avoid a name conflict
|
|||||||
between different definitions of @code{yyparse}, @code{yylval}, and so on.
|
between different definitions of @code{yyparse}, @code{yylval}, and so on.
|
||||||
|
|
||||||
The easy way to do this is to use the option @samp{-p @var{prefix}}
|
The easy way to do this is to use the option @samp{-p @var{prefix}}
|
||||||
(@pxref{Invocation, ,Invoking Bison}). This renames the interface functions and
|
(@pxref{Invocation, ,Invoking Bison}). This renames the interface
|
||||||
variables of the Bison parser to start with @var{prefix} instead of
|
functions and variables of the Bison parser to start with @var{prefix}
|
||||||
@samp{yy}. You can use this to give each parser distinct names that do
|
instead of @samp{yy}. You can use this to give each parser distinct
|
||||||
not conflict.
|
names that do not conflict.
|
||||||
|
|
||||||
The precise list of symbols renamed is @code{yyparse}, @code{yylex},
|
The precise list of symbols renamed is @code{yyparse}, @code{yylex},
|
||||||
@code{yyerror}, @code{yynerrs}, @code{yylval}, @code{yychar} and
|
@code{yyerror}, @code{yynerrs}, @code{yylval}, @code{yychar} and
|
||||||
@@ -3410,8 +3422,8 @@ functions that it needs to use.
|
|||||||
|
|
||||||
Keep in mind that the parser uses many C identifiers starting with
|
Keep in mind that the parser uses many C identifiers starting with
|
||||||
@samp{yy} and @samp{YY} for internal purposes. If you use such an
|
@samp{yy} and @samp{YY} for internal purposes. If you use such an
|
||||||
identifier (aside from those in this manual) in an action or in additional
|
identifier (aside from those in this manual) in an action or in epilogue
|
||||||
C code in the grammar file, you are likely to run into trouble.
|
in the grammar file, you are likely to run into trouble.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* Parser Function:: How to call @code{yyparse} and what it returns.
|
* Parser Function:: How to call @code{yyparse} and what it returns.
|
||||||
@@ -3552,7 +3564,7 @@ for (i = 0; i < YYNTOKENS; i++)
|
|||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
The @code{yytname} table is generated only if you use the
|
The @code{yytname} table is generated only if you use the
|
||||||
@code{%token_table} declaration. @xref{Decl Summary}.
|
@code{%token-table} declaration. @xref{Decl Summary}.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@node Token Values
|
@node Token Values
|
||||||
@@ -3575,9 +3587,10 @@ Thus, if the type is @code{int} (the default), you might write this in
|
|||||||
@end example
|
@end example
|
||||||
|
|
||||||
When you are using multiple data types, @code{yylval}'s type is a union
|
When you are using multiple data types, @code{yylval}'s type is a union
|
||||||
made from the @code{%union} declaration (@pxref{Union Decl, ,The Collection of Value Types}). So when
|
made from the @code{%union} declaration (@pxref{Union Decl, ,The
|
||||||
you store a token's value, you must use the proper member of the union.
|
Collection of Value Types}). So when you store a token's value, you
|
||||||
If the @code{%union} declaration looks like this:
|
must use the proper member of the union. If the @code{%union}
|
||||||
|
declaration looks like this:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
@group
|
@group
|
||||||
@@ -3625,7 +3638,7 @@ The data type of @code{yylloc} has the name @code{YYLTYPE}.
|
|||||||
@node Pure Calling
|
@node Pure Calling
|
||||||
@subsection Calling Conventions for Pure Parsers
|
@subsection Calling Conventions for Pure Parsers
|
||||||
|
|
||||||
When you use the Bison declaration @code{%pure_parser} to request a
|
When you use the Bison declaration @code{%pure-parser} to request a
|
||||||
pure, reentrant parser, the global communication variables @code{yylval}
|
pure, reentrant parser, the global communication variables @code{yylval}
|
||||||
and @code{yylloc} cannot be used. (@xref{Pure Decl, ,A Pure (Reentrant)
|
and @code{yylloc} cannot be used. (@xref{Pure Decl, ,A Pure (Reentrant)
|
||||||
Parser}.) In such parsers the two global variables are replaced by
|
Parser}.) In such parsers the two global variables are replaced by
|
||||||
@@ -3725,7 +3738,7 @@ arguments in total, depending on whether an argument of type
|
|||||||
the proper object type, or you can declare it as @code{void *} and
|
the proper object type, or you can declare it as @code{void *} and
|
||||||
access the contents as shown above.
|
access the contents as shown above.
|
||||||
|
|
||||||
You can use @samp{%pure_parser} to request a reentrant parser without
|
You can use @samp{%pure-parser} to request a reentrant parser without
|
||||||
also using @code{YYPARSE_PARAM}. Then you should call @code{yyparse}
|
also using @code{YYPARSE_PARAM}. Then you should call @code{yyparse}
|
||||||
with no arguments, as usual.
|
with no arguments, as usual.
|
||||||
|
|
||||||
@@ -3786,8 +3799,8 @@ immediately return 1.
|
|||||||
@vindex yynerrs
|
@vindex yynerrs
|
||||||
The variable @code{yynerrs} contains the number of syntax errors
|
The variable @code{yynerrs} contains the number of syntax errors
|
||||||
encountered so far. Normally this variable is global; but if you
|
encountered so far. Normally this variable is global; but if you
|
||||||
request a pure parser (@pxref{Pure Decl, ,A Pure (Reentrant) Parser}) then it is a local variable
|
request a pure parser (@pxref{Pure Decl, ,A Pure (Reentrant) Parser})
|
||||||
which only the actions can access.
|
then it is a local variable which only the actions can access.
|
||||||
|
|
||||||
@node Action Features
|
@node Action Features
|
||||||
@section Special Features for Use in Actions
|
@section Special Features for Use in Actions
|
||||||
@@ -3808,7 +3821,8 @@ Acts like a variable that contains the semantic value for the
|
|||||||
|
|
||||||
@item $<@var{typealt}>$
|
@item $<@var{typealt}>$
|
||||||
Like @code{$$} but specifies alternative @var{typealt} in the union
|
Like @code{$$} but specifies alternative @var{typealt} in the union
|
||||||
specified by the @code{%union} declaration. @xref{Action Types, ,Data Types of Values in Actions}.
|
specified by the @code{%union} declaration. @xref{Action Types, ,Data
|
||||||
|
Types of Values in Actions}.
|
||||||
|
|
||||||
@item $<@var{typealt}>@var{n}
|
@item $<@var{typealt}>@var{n}
|
||||||
Like @code{$@var{n}} but specifies alternative @var{typealt} in the
|
Like @code{$@var{n}} but specifies alternative @var{typealt} in the
|
||||||
@@ -4237,18 +4251,19 @@ and therefore are represented by names, not character literals.)
|
|||||||
|
|
||||||
The first effect of the precedence declarations is to assign precedence
|
The first effect of the precedence declarations is to assign precedence
|
||||||
levels to the terminal symbols declared. The second effect is to assign
|
levels to the terminal symbols declared. The second effect is to assign
|
||||||
precedence levels to certain rules: each rule gets its precedence from the
|
precedence levels to certain rules: each rule gets its precedence from
|
||||||
last terminal symbol mentioned in the components. (You can also specify
|
the last terminal symbol mentioned in the components. (You can also
|
||||||
explicitly the precedence of a rule. @xref{Contextual Precedence, ,Context-Dependent Precedence}.)
|
specify explicitly the precedence of a rule. @xref{Contextual
|
||||||
|
Precedence, ,Context-Dependent Precedence}.)
|
||||||
|
|
||||||
Finally, the resolution of conflicts works by comparing the
|
Finally, the resolution of conflicts works by comparing the precedence
|
||||||
precedence of the rule being considered with that of the
|
of the rule being considered with that of the look-ahead token. If the
|
||||||
look-ahead token. If the token's precedence is higher, the
|
token's precedence is higher, the choice is to shift. If the rule's
|
||||||
choice is to shift. If the rule's precedence is higher, the
|
precedence is higher, the choice is to reduce. If they have equal
|
||||||
choice is to reduce. If they have equal precedence, the choice
|
precedence, the choice is made based on the associativity of that
|
||||||
is made based on the associativity of that precedence level. The
|
precedence level. The verbose output file made by @samp{-v}
|
||||||
verbose output file made by @samp{-v} (@pxref{Invocation, ,Invoking Bison}) says
|
(@pxref{Invocation, ,Invoking Bison}) says how each conflict was
|
||||||
how each conflict was resolved.
|
resolved.
|
||||||
|
|
||||||
Not all rules and not all tokens have precedence. If either the rule or
|
Not all rules and not all tokens have precedence. If either the rule or
|
||||||
the look-ahead token has no precedence, then the default is to shift.
|
the look-ahead token has no precedence, then the default is to shift.
|
||||||
@@ -4855,10 +4870,9 @@ Here we assume that @code{yylex} looks at the value of @code{hexflag}; when
|
|||||||
it is nonzero, all integers are parsed in hexadecimal, and tokens starting
|
it is nonzero, all integers are parsed in hexadecimal, and tokens starting
|
||||||
with letters are parsed as integers if possible.
|
with letters are parsed as integers if possible.
|
||||||
|
|
||||||
The declaration of @code{hexflag} shown in the C declarations section of
|
The declaration of @code{hexflag} shown in the prologue of the parser file
|
||||||
the parser file is needed to make it accessible to the actions
|
is needed to make it accessible to the actions (@pxref{Prologue, ,The Prologue}).
|
||||||
(@pxref{C Declarations, ,The C Declarations Section}). You must also write the code in @code{yylex}
|
You must also write the code in @code{yylex} to obey the flag.
|
||||||
to obey the flag.
|
|
||||||
|
|
||||||
@node Tie-in Recovery
|
@node Tie-in Recovery
|
||||||
@section Lexical Tie-ins and Error Recovery
|
@section Lexical Tie-ins and Error Recovery
|
||||||
@@ -4928,19 +4942,21 @@ runs, the @code{yydebug} parser-trace feature can help you figure out why.
|
|||||||
To enable compilation of trace facilities, you must define the macro
|
To enable compilation of trace facilities, you must define the macro
|
||||||
@code{YYDEBUG} to a nonzero value when you compile the parser. You
|
@code{YYDEBUG} to a nonzero value when you compile the parser. You
|
||||||
could use @samp{-DYYDEBUG=1} as a compiler option or you could put
|
could use @samp{-DYYDEBUG=1} as a compiler option or you could put
|
||||||
@samp{#define YYDEBUG 1} in the C declarations section of the grammar
|
@samp{#define YYDEBUG 1} in the prologue of the grammar file
|
||||||
file (@pxref{C Declarations, ,The C Declarations Section}).
|
(@pxref{Prologue, , The Prologue}). Alternatively, use the @samp{-t}
|
||||||
Alternatively, use the @samp{-t} option when you run Bison
|
option when you run Bison (@pxref{Invocation, ,Invoking Bison}) or the
|
||||||
(@pxref{Invocation, ,Invoking Bison}) or the @code{%debug} declaration
|
@code{%debug} declaration (@pxref{Decl Summary, ,Bison Declaration
|
||||||
(@pxref{Decl Summary, ,Bison Declaration Summary}). We suggest that
|
Summary}). We suggest that you always define @code{YYDEBUG} so that
|
||||||
you always define @code{YYDEBUG} so that debugging is always possible.
|
debugging is always possible.
|
||||||
|
|
||||||
The trace facility outputs messages with macro calls of the form
|
The trace facility outputs messages with macro calls of the form
|
||||||
@code{YYFPRINTF (stderr, @var{format}, @var{args})} where
|
@code{YYFPRINTF (stderr, @var{format}, @var{args})} where
|
||||||
@var{format} and @var{args} are the usual @code{printf} format and
|
@var{format} and @var{args} are the usual @code{printf} format and
|
||||||
arguments. If you define @code{YYDEBUG} to a nonzero value but do not
|
arguments. If you define @code{YYDEBUG} to a nonzero value but do not
|
||||||
define @code{YYFPRINTF}, @code{<stdio.h>} is automatically included
|
define @code{YYFPRINTF}, @code{<stdio.h>} is automatically included
|
||||||
and @code{YYPRINTF} is defined to @code{fprintf}.
|
and @code{YYPRINTF} is defined to @code{fprintf}. In the same
|
||||||
|
situation, C++ parsers include @code{<cstdio>} and use
|
||||||
|
@code{std::fprintf} instead.
|
||||||
|
|
||||||
Once you have compiled the program with trace facilities, the way to
|
Once you have compiled the program with trace facilities, the way to
|
||||||
request a trace is to store a nonzero value in the variable @code{yydebug}.
|
request a trace is to store a nonzero value in the variable @code{yydebug}.
|
||||||
@@ -4965,13 +4981,14 @@ of the state stack afterward.
|
|||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
To make sense of this information, it helps to refer to the listing file
|
To make sense of this information, it helps to refer to the listing file
|
||||||
produced by the Bison @samp{-v} option (@pxref{Invocation, ,Invoking Bison}). This file
|
produced by the Bison @samp{-v} option (@pxref{Invocation, ,Invoking
|
||||||
shows the meaning of each state in terms of positions in various rules, and
|
Bison}). This file shows the meaning of each state in terms of
|
||||||
also what each state will do with each possible input token. As you read
|
positions in various rules, and also what each state will do with each
|
||||||
the successive trace messages, you can see that the parser is functioning
|
possible input token. As you read the successive trace messages, you
|
||||||
according to its specification in the listing file. Eventually you will
|
can see that the parser is functioning according to its specification in
|
||||||
arrive at the place where something undesirable happens, and you will see
|
the listing file. Eventually you will arrive at the place where
|
||||||
which parts of the grammar are to blame.
|
something undesirable happens, and you will see which parts of the
|
||||||
|
grammar are to blame.
|
||||||
|
|
||||||
The parser file is a C program and you can use C debuggers on it, but it's
|
The parser file is a C program and you can use C debuggers on it, but it's
|
||||||
not easy to interpret what it is doing. The parser function is a
|
not easy to interpret what it is doing. The parser function is a
|
||||||
@@ -5046,8 +5063,6 @@ will produce @file{output.c++} and @file{outfile.h++}.
|
|||||||
in alphabetical order by short options.
|
in alphabetical order by short options.
|
||||||
* Environment Variables:: Variables which affect Bison execution.
|
* Environment Variables:: Variables which affect Bison execution.
|
||||||
* Option Cross Key:: Alphabetical list of long options.
|
* Option Cross Key:: Alphabetical list of long options.
|
||||||
* Extension Limitations Under DOS:: Bison output files extension differences
|
|
||||||
depending on the DOS/Windows file system flavour used.
|
|
||||||
* VMS Invocation:: Bison command syntax on VMS.
|
* VMS Invocation:: Bison command syntax on VMS.
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@@ -5080,7 +5095,6 @@ Print the version number of Bison and exit.
|
|||||||
@need 1750
|
@need 1750
|
||||||
@item -y
|
@item -y
|
||||||
@itemx --yacc
|
@itemx --yacc
|
||||||
@itemx --fixed-output-files
|
|
||||||
Equivalent to @samp{-o y.tab.c}; the parser output file is called
|
Equivalent to @samp{-o y.tab.c}; the parser output file is called
|
||||||
@file{y.tab.c}, and the other outputs are called @file{y.output} and
|
@file{y.tab.c}, and the other outputs are called @file{y.output} and
|
||||||
@file{y.tab.h}. The purpose of this option is to imitate Yacc's output
|
@file{y.tab.h}. The purpose of this option is to imitate Yacc's output
|
||||||
@@ -5193,7 +5207,7 @@ would like to direct Bison to use a different copy, setting the
|
|||||||
environment variable @code{BISON_SIMPLE} to the path of the file will
|
environment variable @code{BISON_SIMPLE} to the path of the file will
|
||||||
cause Bison to use that copy instead.
|
cause Bison to use that copy instead.
|
||||||
|
|
||||||
When the @samp{%semantic_parser} declaration is used, Bison copies from
|
When the @samp{%semantic-parser} declaration is used, Bison copies from
|
||||||
a file called @file{bison.hairy} instead. The location of this file can
|
a file called @file{bison.hairy} instead. The location of this file can
|
||||||
also be specified or overridden in a similar fashion, with the
|
also be specified or overridden in a similar fashion, with the
|
||||||
@code{BISON_HAIRY} environment variable.
|
@code{BISON_HAIRY} environment variable.
|
||||||
@@ -5213,7 +5227,6 @@ the corresponding short option.
|
|||||||
\line{ --debug \leaderfill -t}
|
\line{ --debug \leaderfill -t}
|
||||||
\line{ --defines \leaderfill -d}
|
\line{ --defines \leaderfill -d}
|
||||||
\line{ --file-prefix \leaderfill -b}
|
\line{ --file-prefix \leaderfill -b}
|
||||||
\line{ --fixed-output-files \leaderfill -y}
|
|
||||||
\line{ --graph \leaderfill -g}
|
\line{ --graph \leaderfill -g}
|
||||||
\line{ --help \leaderfill -h}
|
\line{ --help \leaderfill -h}
|
||||||
\line{ --name-prefix \leaderfill -p}
|
\line{ --name-prefix \leaderfill -p}
|
||||||
@@ -5232,7 +5245,6 @@ the corresponding short option.
|
|||||||
--debug -t
|
--debug -t
|
||||||
--defines=@var{defines-file} -d
|
--defines=@var{defines-file} -d
|
||||||
--file-prefix=@var{prefix} -b @var{file-prefix}
|
--file-prefix=@var{prefix} -b @var{file-prefix}
|
||||||
--fixed-output-files --yacc -y
|
|
||||||
--graph=@var{graph-file} -d
|
--graph=@var{graph-file} -d
|
||||||
--help -h
|
--help -h
|
||||||
--name-prefix=@var{prefix} -p @var{name-prefix}
|
--name-prefix=@var{prefix} -p @var{name-prefix}
|
||||||
@@ -5242,43 +5254,10 @@ the corresponding short option.
|
|||||||
--token-table -k
|
--token-table -k
|
||||||
--verbose -v
|
--verbose -v
|
||||||
--version -V
|
--version -V
|
||||||
|
--yacc -y
|
||||||
@end example
|
@end example
|
||||||
@end ifinfo
|
@end ifinfo
|
||||||
|
|
||||||
@node Extension Limitations Under DOS
|
|
||||||
@section Extension Limitations under DOS
|
|
||||||
@cindex extension limitations under DOS
|
|
||||||
@cindex DOS
|
|
||||||
|
|
||||||
On DOS/Windows 9X systems the file name extensions of the output files,
|
|
||||||
like @file{.tab.c}, that may be used depend on the file system in use.
|
|
||||||
The plain DOS file system has limited file name length, does not allow
|
|
||||||
the use of a set of certain illicit characters and does not allow more
|
|
||||||
than a single dot in the file name.
|
|
||||||
|
|
||||||
The DJGPP port of @code{bison} will detect at runtime if (LFN) long file
|
|
||||||
name support is available or not. LFN support will be available in a
|
|
||||||
DOS session under Windows 9X and successors. Windows NT 4.0 needs a
|
|
||||||
special LFN driver (@file{ntlfn08b.zip}) or later available at any
|
|
||||||
simtelnet mirror in the /v2misc dir) for proper LFN support in a DOS
|
|
||||||
session. If LFN support is available the DJGPP port of @code{bison}
|
|
||||||
will use the standard POSIX file name extensions of the output files.
|
|
||||||
If LFN support is not available, then the DJGPP port of @code{bison}
|
|
||||||
will use DOS specific file name extensions.
|
|
||||||
|
|
||||||
@noindent This table summarizes the used extensions:
|
|
||||||
|
|
||||||
@multitable @columnfractions 0.1 0.45 0.45
|
|
||||||
@item @tab LFN extension (Win9X) @tab SFN extension (plain DOS)
|
|
||||||
@item @tab @file{.tab.c} @tab @file{_tab.c}
|
|
||||||
@item @tab @file{.tab.h} @tab @file{_tab.h}
|
|
||||||
@item @tab @file{.tab.cpp} @tab @file{_tab.cpp}
|
|
||||||
@item @tab @file{.tab.hpp} @tab @file{_tab.hpp}
|
|
||||||
@item @tab @file{.output} @tab @file{.out}
|
|
||||||
@item @tab @file{.stype.h} @tab @file{.sth}
|
|
||||||
@item @tab @file{.guard.c} @tab @file{.guc}
|
|
||||||
@end multitable
|
|
||||||
|
|
||||||
@node VMS Invocation
|
@node VMS Invocation
|
||||||
@section Invoking Bison under VMS
|
@section Invoking Bison under VMS
|
||||||
@cindex invoking Bison under VMS
|
@cindex invoking Bison under VMS
|
||||||
@@ -5413,8 +5392,9 @@ containing an error message. @xref{Error Reporting, ,The Error
|
|||||||
Reporting Function @code{yyerror}}.
|
Reporting Function @code{yyerror}}.
|
||||||
|
|
||||||
@item yylex
|
@item yylex
|
||||||
User-supplied lexical analyzer function, called with no arguments
|
User-supplied lexical analyzer function, called with no arguments to get
|
||||||
to get the next token. @xref{Lexical, ,The Lexical Analyzer Function @code{yylex}}.
|
the next token. @xref{Lexical, ,The Lexical Analyzer Function
|
||||||
|
@code{yylex}}.
|
||||||
|
|
||||||
@item yylval
|
@item yylval
|
||||||
External variable in which @code{yylex} should place the semantic
|
External variable in which @code{yylex} should place the semantic
|
||||||
@@ -5450,11 +5430,11 @@ Bison declaration to create a header file meant for the scanner.
|
|||||||
Bison declaration to set tge prefix of the output files. @xref{Decl
|
Bison declaration to set tge prefix of the output files. @xref{Decl
|
||||||
Summary}.
|
Summary}.
|
||||||
|
|
||||||
@c @item %source_extension
|
@c @item %source-extension
|
||||||
@c Bison declaration to specify the generated parser output file extension.
|
@c Bison declaration to specify the generated parser output file extension.
|
||||||
@c @xref{Decl Summary}.
|
@c @xref{Decl Summary}.
|
||||||
@c
|
@c
|
||||||
@c @item %header_extension
|
@c @item %header-extension
|
||||||
@c Bison declaration to specify the generated parser header file extension
|
@c Bison declaration to specify the generated parser header file extension
|
||||||
@c if required. @xref{Decl Summary}.
|
@c if required. @xref{Decl Summary}.
|
||||||
|
|
||||||
@@ -5490,7 +5470,8 @@ Bison declaration to assign right associativity to token(s).
|
|||||||
@xref{Precedence Decl, ,Operator Precedence}.
|
@xref{Precedence Decl, ,Operator Precedence}.
|
||||||
|
|
||||||
@item %start
|
@item %start
|
||||||
Bison declaration to specify the start symbol. @xref{Start Decl, ,The Start-Symbol}.
|
Bison declaration to specify the start symbol. @xref{Start Decl, ,The
|
||||||
|
Start-Symbol}.
|
||||||
|
|
||||||
@item %token
|
@item %token
|
||||||
Bison declaration to declare token(s) without specifying precedence.
|
Bison declaration to declare token(s) without specifying precedence.
|
||||||
@@ -5501,7 +5482,8 @@ Bison declaration to include a token name table in the parser file.
|
|||||||
@xref{Decl Summary}.
|
@xref{Decl Summary}.
|
||||||
|
|
||||||
@item %type
|
@item %type
|
||||||
Bison declaration to declare nonterminals. @xref{Type Decl, ,Nonterminal Symbols}.
|
Bison declaration to declare nonterminals. @xref{Type Decl,
|
||||||
|
,Nonterminal Symbols}.
|
||||||
|
|
||||||
@item %union
|
@item %union
|
||||||
Bison declaration to specify several possible data types for semantic
|
Bison declaration to specify several possible data types for semantic
|
||||||
@@ -5513,13 +5495,13 @@ These are the punctuation and delimiters used in Bison input:
|
|||||||
@table @samp
|
@table @samp
|
||||||
@item %%
|
@item %%
|
||||||
Delimiter used to separate the grammar rule section from the
|
Delimiter used to separate the grammar rule section from the
|
||||||
Bison declarations section or the additional C code section.
|
Bison declarations section or the epilogue.
|
||||||
@xref{Grammar Layout, ,The Overall Layout of a Bison Grammar}.
|
@xref{Grammar Layout, ,The Overall Layout of a Bison Grammar}.
|
||||||
|
|
||||||
@item %@{ %@}
|
@item %@{ %@}
|
||||||
All code listed between @samp{%@{} and @samp{%@}} is copied directly to
|
All code listed between @samp{%@{} and @samp{%@}} is copied directly to
|
||||||
the output file uninterpreted. Such code forms the ``C declarations''
|
the output file uninterpreted. Such code forms the prologue of the input
|
||||||
section of the input file. @xref{Grammar Outline, ,Outline of a Bison
|
file. @xref{Grammar Outline, ,Outline of a Bison
|
||||||
Grammar}.
|
Grammar}.
|
||||||
|
|
||||||
@item /*@dots{}*/
|
@item /*@dots{}*/
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
@set UPDATED 25 February 2002
|
|
||||||
@set UPDATED-MONTH February 2002
|
|
||||||
@set EDITION 1.35
|
|
||||||
@set VERSION 1.35
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Makefile
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
2002-03-12 GNU <[email protected]>
|
|
||||||
|
|
||||||
* Version 0.11.1 released.
|
|
||||||
|
|
||||||
@@ -1,337 +0,0 @@
|
|||||||
# Makefile for directory with message catalog handling in GNU NLS Utilities.
|
|
||||||
# Copyright (C) 1995-1998, 2000-2002 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, 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.
|
|
||||||
|
|
||||||
PACKAGE = @PACKAGE@
|
|
||||||
VERSION = @VERSION@
|
|
||||||
|
|
||||||
SHELL = /bin/sh
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
top_builddir = ..
|
|
||||||
VPATH = @srcdir@
|
|
||||||
|
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
transform = @program_transform_name@
|
|
||||||
libdir = @libdir@
|
|
||||||
includedir = @includedir@
|
|
||||||
datadir = @datadir@
|
|
||||||
localedir = $(datadir)/locale
|
|
||||||
gettextsrcdir = $(datadir)/gettext/intl
|
|
||||||
aliaspath = $(localedir)
|
|
||||||
subdir = intl
|
|
||||||
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
|
||||||
mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac`
|
|
||||||
|
|
||||||
l = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
|
||||||
|
|
||||||
AR = ar
|
|
||||||
CC = @CC@
|
|
||||||
LIBTOOL = @LIBTOOL@
|
|
||||||
RANLIB = @RANLIB@
|
|
||||||
YACC = @INTLBISON@ -y -d
|
|
||||||
YFLAGS = --name-prefix=__gettext
|
|
||||||
|
|
||||||
DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \
|
|
||||||
-DLIBDIR=\"$(libdir)\" -DIN_LIBINTL @DEFS@
|
|
||||||
CPPFLAGS = @CPPFLAGS@
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
|
|
||||||
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
|
|
||||||
|
|
||||||
HEADERS = $(COMHDRS) libgnuintl.h loadinfo.h
|
|
||||||
COMHDRS = gmo.h gettextP.h hash-string.h plural-exp.h eval-plural.h os2compat.h
|
|
||||||
SOURCES = $(COMSRCS) intl-compat.c
|
|
||||||
COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \
|
|
||||||
finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \
|
|
||||||
explodename.c dcigettext.c dcngettext.c dngettext.c ngettext.c plural.y \
|
|
||||||
plural-exp.c localcharset.c localename.c osdep.c os2compat.c
|
|
||||||
OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \
|
|
||||||
finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \
|
|
||||||
explodename.$lo dcigettext.$lo dcngettext.$lo dngettext.$lo ngettext.$lo \
|
|
||||||
plural.$lo plural-exp.$lo localcharset.$lo localename.$lo osdep.$lo
|
|
||||||
GETTOBJS = intl-compat.$lo
|
|
||||||
DISTFILES.common = Makefile.in \
|
|
||||||
config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES)
|
|
||||||
DISTFILES.generated = plural.c
|
|
||||||
DISTFILES.normal = VERSION
|
|
||||||
DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc
|
|
||||||
DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \
|
|
||||||
COPYING.LIB-2 gettext.h libgettext.h plural-eval.c
|
|
||||||
|
|
||||||
# Libtool's library version information for libintl.
|
|
||||||
# Before making a gettext release, the gettext maintainer must change this
|
|
||||||
# according to the libtool documentation, section "Library interface versions".
|
|
||||||
# Maintainers of other packages that include the intl directory must *not*
|
|
||||||
# change these values.
|
|
||||||
LTV_CURRENT=2
|
|
||||||
LTV_REVISION=0
|
|
||||||
LTV_AGE=0
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
.SUFFIXES: .c .y .o .lo .sin .sed
|
|
||||||
.c.o:
|
|
||||||
$(COMPILE) $<
|
|
||||||
.c.lo:
|
|
||||||
$(LIBTOOL) --mode=compile $(COMPILE) $<
|
|
||||||
|
|
||||||
.y.c:
|
|
||||||
$(YACC) $(YFLAGS) --output $@ $<
|
|
||||||
rm -f $*.h
|
|
||||||
|
|
||||||
.sin.sed:
|
|
||||||
sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@
|
|
||||||
mv t-$@ $@
|
|
||||||
|
|
||||||
INCLUDES = -I.. -I. -I$(top_srcdir)/intl
|
|
||||||
|
|
||||||
all: all-@USE_INCLUDED_LIBINTL@
|
|
||||||
all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed
|
|
||||||
all-no: all-no-@BUILD_INCLUDED_LIBINTL@
|
|
||||||
all-no-yes: libgnuintl.$la
|
|
||||||
all-no-no:
|
|
||||||
|
|
||||||
libintl.a libgnuintl.a: $(OBJECTS)
|
|
||||||
rm -f $@
|
|
||||||
$(AR) cru $@ $(OBJECTS)
|
|
||||||
$(RANLIB) $@
|
|
||||||
|
|
||||||
libintl.la libgnuintl.la: $(OBJECTS)
|
|
||||||
$(LIBTOOL) --mode=link \
|
|
||||||
$(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \
|
|
||||||
$(OBJECTS) @LTLIBICONV@ -lc \
|
|
||||||
-version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \
|
|
||||||
-rpath $(libdir) \
|
|
||||||
-no-undefined
|
|
||||||
|
|
||||||
libintl.h: libgnuintl.h
|
|
||||||
cp $(srcdir)/libgnuintl.h libintl.h
|
|
||||||
|
|
||||||
charset.alias: config.charset
|
|
||||||
$(SHELL) $(srcdir)/config.charset '@host@' > t-$@
|
|
||||||
mv t-$@ $@
|
|
||||||
|
|
||||||
check: all
|
|
||||||
|
|
||||||
# This installation goal is only used in GNU gettext. Packages which
|
|
||||||
# only use the library should use install instead.
|
|
||||||
|
|
||||||
# We must not install the libintl.h/libintl.a files if we are on a
|
|
||||||
# system which has the GNU gettext() function in its C library or in a
|
|
||||||
# separate library.
|
|
||||||
# If you want to use the one which comes with this version of the
|
|
||||||
# package, you have to use `configure --with-included-gettext'.
|
|
||||||
install: install-exec install-data
|
|
||||||
install-exec: all
|
|
||||||
if test "$(PACKAGE)" = "gettext" \
|
|
||||||
&& test '@INTLOBJS@' = '$(GETTOBJS)'; then \
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
|
|
||||||
$(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \
|
|
||||||
$(LIBTOOL) --mode=install \
|
|
||||||
$(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \
|
|
||||||
else \
|
|
||||||
: ; \
|
|
||||||
fi
|
|
||||||
if test '@USE_INCLUDED_LIBINTL@' = yes; then \
|
|
||||||
test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \
|
|
||||||
temp=$(DESTDIR)$(libdir)/t-charset.alias; \
|
|
||||||
dest=$(DESTDIR)$(libdir)/charset.alias; \
|
|
||||||
if test -f $(DESTDIR)$(libdir)/charset.alias; then \
|
|
||||||
orig=$(DESTDIR)$(libdir)/charset.alias; \
|
|
||||||
sed -f ref-add.sed $$orig > $$temp; \
|
|
||||||
$(INSTALL_DATA) $$temp $$dest; \
|
|
||||||
rm -f $$temp; \
|
|
||||||
else \
|
|
||||||
if test @GLIBC21@ = no; then \
|
|
||||||
orig=charset.alias; \
|
|
||||||
sed -f ref-add.sed $$orig > $$temp; \
|
|
||||||
$(INSTALL_DATA) $$temp $$dest; \
|
|
||||||
rm -f $$temp; \
|
|
||||||
fi; \
|
|
||||||
fi; \
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(localedir); \
|
|
||||||
test -f $(DESTDIR)$(localedir)/locale.alias \
|
|
||||||
&& orig=$(DESTDIR)$(localedir)/locale.alias \
|
|
||||||
|| orig=$(srcdir)/locale.alias; \
|
|
||||||
temp=$(DESTDIR)$(localedir)/t-locale.alias; \
|
|
||||||
dest=$(DESTDIR)$(localedir)/locale.alias; \
|
|
||||||
sed -f ref-add.sed $$orig > $$temp; \
|
|
||||||
$(INSTALL_DATA) $$temp $$dest; \
|
|
||||||
rm -f $$temp; \
|
|
||||||
else \
|
|
||||||
: ; \
|
|
||||||
fi
|
|
||||||
install-data: all
|
|
||||||
if test "$(PACKAGE)" = "gettext"; then \
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
|
|
||||||
$(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \
|
|
||||||
$(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \
|
|
||||||
dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \
|
|
||||||
for file in $$dists; do \
|
|
||||||
$(INSTALL_DATA) $(srcdir)/$$file \
|
|
||||||
$(DESTDIR)$(gettextsrcdir)/$$file; \
|
|
||||||
done; \
|
|
||||||
chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \
|
|
||||||
dists="$(DISTFILES.generated)"; \
|
|
||||||
for file in $$dists; do \
|
|
||||||
if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
|
|
||||||
$(INSTALL_DATA) $$dir/$$file \
|
|
||||||
$(DESTDIR)$(gettextsrcdir)/$$file; \
|
|
||||||
done; \
|
|
||||||
dists="$(DISTFILES.obsolete)"; \
|
|
||||||
for file in $$dists; do \
|
|
||||||
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
|
||||||
done; \
|
|
||||||
else \
|
|
||||||
: ; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
install-strip: install
|
|
||||||
|
|
||||||
installdirs:
|
|
||||||
if test "$(PACKAGE)" = "gettext" \
|
|
||||||
&& test '@INTLOBJS@' = '$(GETTOBJS)'; then \
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
|
|
||||||
else \
|
|
||||||
: ; \
|
|
||||||
fi
|
|
||||||
if test '@USE_INCLUDED_LIBINTL@' = yes; then \
|
|
||||||
test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(localedir); \
|
|
||||||
else \
|
|
||||||
: ; \
|
|
||||||
fi
|
|
||||||
if test "$(PACKAGE)" = "gettext"; then \
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
|
|
||||||
else \
|
|
||||||
: ; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Define this as empty until I found a useful application.
|
|
||||||
installcheck:
|
|
||||||
|
|
||||||
uninstall:
|
|
||||||
if test "$(PACKAGE)" = "gettext" \
|
|
||||||
&& test '@INTLOBJS@' = '$(GETTOBJS)'; then \
|
|
||||||
rm -f $(DESTDIR)$(includedir)/libintl.h; \
|
|
||||||
$(LIBTOOL) --mode=uninstall \
|
|
||||||
rm -f $(DESTDIR)$(libdir)/libintl.$la; \
|
|
||||||
else \
|
|
||||||
: ; \
|
|
||||||
fi
|
|
||||||
if test '@USE_INCLUDED_LIBINTL@' = yes; then \
|
|
||||||
if test -f $(DESTDIR)$(libdir)/charset.alias; then \
|
|
||||||
temp=$(DESTDIR)$(libdir)/t-charset.alias; \
|
|
||||||
dest=$(DESTDIR)$(libdir)/charset.alias; \
|
|
||||||
sed -f ref-del.sed $$dest > $$temp; \
|
|
||||||
if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
|
|
||||||
rm -f $$dest; \
|
|
||||||
else \
|
|
||||||
$(INSTALL_DATA) $$temp $$dest; \
|
|
||||||
fi; \
|
|
||||||
rm -f $$temp; \
|
|
||||||
fi; \
|
|
||||||
if test -f $(DESTDIR)$(localedir)/locale.alias; then \
|
|
||||||
temp=$(DESTDIR)$(localedir)/t-locale.alias; \
|
|
||||||
dest=$(DESTDIR)$(localedir)/locale.alias; \
|
|
||||||
sed -f ref-del.sed $$dest > $$temp; \
|
|
||||||
if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
|
|
||||||
rm -f $$dest; \
|
|
||||||
else \
|
|
||||||
$(INSTALL_DATA) $$temp $$dest; \
|
|
||||||
fi; \
|
|
||||||
rm -f $$temp; \
|
|
||||||
fi; \
|
|
||||||
else \
|
|
||||||
: ; \
|
|
||||||
fi
|
|
||||||
if test "$(PACKAGE)" = "gettext"; then \
|
|
||||||
for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \
|
|
||||||
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
|
||||||
done; \
|
|
||||||
else \
|
|
||||||
: ; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
info dvi:
|
|
||||||
|
|
||||||
$(OBJECTS): ../config.h libgnuintl.h
|
|
||||||
bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: gettextP.h gmo.h loadinfo.h
|
|
||||||
dcigettext.$lo: hash-string.h
|
|
||||||
explodename.$lo l10nflist.$lo: loadinfo.h
|
|
||||||
dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: plural-exp.h
|
|
||||||
dcigettext.$lo: eval-plural.h
|
|
||||||
|
|
||||||
tags: TAGS
|
|
||||||
|
|
||||||
TAGS: $(HEADERS) $(SOURCES)
|
|
||||||
here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES)
|
|
||||||
|
|
||||||
id: ID
|
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES)
|
|
||||||
here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES)
|
|
||||||
|
|
||||||
|
|
||||||
mostlyclean:
|
|
||||||
rm -f *.a *.la *.o *.lo core core.*
|
|
||||||
rm -f libintl.h charset.alias ref-add.sed ref-del.sed
|
|
||||||
rm -f -r .libs _libs
|
|
||||||
|
|
||||||
clean: mostlyclean
|
|
||||||
|
|
||||||
distclean: clean
|
|
||||||
rm -f Makefile ID TAGS
|
|
||||||
if test "$(PACKAGE)" = gettext; then \
|
|
||||||
rm -f ChangeLog.inst $(DISTFILES.normal); \
|
|
||||||
else \
|
|
||||||
: ; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
maintainer-clean: distclean
|
|
||||||
@echo "This command is intended for maintainers to use;"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
|
|
||||||
|
|
||||||
# GNU gettext needs not contain the file `VERSION' but contains some
|
|
||||||
# other files which should not be distributed in other packages.
|
|
||||||
distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
|
|
||||||
dist distdir: Makefile
|
|
||||||
if test "$(PACKAGE)" = gettext; then \
|
|
||||||
additional="$(DISTFILES.gettext)"; \
|
|
||||||
else \
|
|
||||||
additional="$(DISTFILES.normal)"; \
|
|
||||||
fi; \
|
|
||||||
$(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \
|
|
||||||
for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \
|
|
||||||
if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
|
|
||||||
cp -p $$dir/$$file $(distdir); \
|
|
||||||
done
|
|
||||||
|
|
||||||
Makefile: Makefile.in ../config.status
|
|
||||||
cd .. \
|
|
||||||
&& CONFIG_FILES=$(subdir)/$@ 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:
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
GNU gettext library from gettext-0.11.1
|
|
||||||
@@ -1,369 +0,0 @@
|
|||||||
/* Implementation of the bindtextdomain(3) function
|
|
||||||
Copyright (C) 1995-1998, 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 Library 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. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
# include <libintl.h>
|
|
||||||
#else
|
|
||||||
# include "libgnuintl.h"
|
|
||||||
#endif
|
|
||||||
#include "gettextP.h"
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
/* We have to handle multi-threaded applications. */
|
|
||||||
# include <bits/libc-lock.h>
|
|
||||||
#else
|
|
||||||
/* Provide dummy implementation if this is outside glibc. */
|
|
||||||
# define __libc_rwlock_define(CLASS, NAME)
|
|
||||||
# define __libc_rwlock_wrlock(NAME)
|
|
||||||
# define __libc_rwlock_unlock(NAME)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The internal variables in the standalone libintl.a must have different
|
|
||||||
names than the internal variables in GNU libc, otherwise programs
|
|
||||||
using libintl.a cannot be linked statically. */
|
|
||||||
#if !defined _LIBC
|
|
||||||
# define _nl_default_dirname _nl_default_dirname__
|
|
||||||
# define _nl_domain_bindings _nl_domain_bindings__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */
|
|
||||||
#ifndef offsetof
|
|
||||||
# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
/* Contains the default location of the message catalogs. */
|
|
||||||
extern const char _nl_default_dirname[];
|
|
||||||
|
|
||||||
/* List with bindings of specific domains. */
|
|
||||||
extern struct binding *_nl_domain_bindings;
|
|
||||||
|
|
||||||
/* Lock variable to protect the global data in the gettext implementation. */
|
|
||||||
__libc_rwlock_define (extern, _nl_state_lock)
|
|
||||||
|
|
||||||
|
|
||||||
/* Names for the libintl functions are a problem. They must not clash
|
|
||||||
with existing names and they should follow ANSI C. But this source
|
|
||||||
code is also used in GNU C Library where the names have a __
|
|
||||||
prefix. So we have to make a difference here. */
|
|
||||||
#ifdef _LIBC
|
|
||||||
# define BINDTEXTDOMAIN __bindtextdomain
|
|
||||||
# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset
|
|
||||||
# ifndef strdup
|
|
||||||
# define strdup(str) __strdup (str)
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# define BINDTEXTDOMAIN bindtextdomain__
|
|
||||||
# define BIND_TEXTDOMAIN_CODESET bind_textdomain_codeset__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Prototypes for local functions. */
|
|
||||||
static void set_binding_values PARAMS ((const char *domainname,
|
|
||||||
const char **dirnamep,
|
|
||||||
const char **codesetp));
|
|
||||||
|
|
||||||
/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP
|
|
||||||
to be used for the DOMAINNAME message catalog.
|
|
||||||
If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not
|
|
||||||
modified, only the current value is returned.
|
|
||||||
If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither
|
|
||||||
modified nor returned. */
|
|
||||||
static void
|
|
||||||
set_binding_values (domainname, dirnamep, codesetp)
|
|
||||||
const char *domainname;
|
|
||||||
const char **dirnamep;
|
|
||||||
const char **codesetp;
|
|
||||||
{
|
|
||||||
struct binding *binding;
|
|
||||||
int modified;
|
|
||||||
|
|
||||||
/* Some sanity checks. */
|
|
||||||
if (domainname == NULL || domainname[0] == '\0')
|
|
||||||
{
|
|
||||||
if (dirnamep)
|
|
||||||
*dirnamep = NULL;
|
|
||||||
if (codesetp)
|
|
||||||
*codesetp = NULL;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
__libc_rwlock_wrlock (_nl_state_lock);
|
|
||||||
|
|
||||||
modified = 0;
|
|
||||||
|
|
||||||
for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
|
|
||||||
{
|
|
||||||
int compare = strcmp (domainname, binding->domainname);
|
|
||||||
if (compare == 0)
|
|
||||||
/* We found it! */
|
|
||||||
break;
|
|
||||||
if (compare < 0)
|
|
||||||
{
|
|
||||||
/* It is not in the list. */
|
|
||||||
binding = NULL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (binding != NULL)
|
|
||||||
{
|
|
||||||
if (dirnamep)
|
|
||||||
{
|
|
||||||
const char *dirname = *dirnamep;
|
|
||||||
|
|
||||||
if (dirname == NULL)
|
|
||||||
/* The current binding has be to returned. */
|
|
||||||
*dirnamep = binding->dirname;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* The domain is already bound. If the new value and the old
|
|
||||||
one are equal we simply do nothing. Otherwise replace the
|
|
||||||
old binding. */
|
|
||||||
char *result = binding->dirname;
|
|
||||||
if (strcmp (dirname, result) != 0)
|
|
||||||
{
|
|
||||||
if (strcmp (dirname, _nl_default_dirname) == 0)
|
|
||||||
result = (char *) _nl_default_dirname;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
#if defined _LIBC || defined HAVE_STRDUP
|
|
||||||
result = strdup (dirname);
|
|
||||||
#else
|
|
||||||
size_t len = strlen (dirname) + 1;
|
|
||||||
result = (char *) malloc (len);
|
|
||||||
if (__builtin_expect (result != NULL, 1))
|
|
||||||
memcpy (result, dirname, len);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
if (__builtin_expect (result != NULL, 1))
|
|
||||||
{
|
|
||||||
if (binding->dirname != _nl_default_dirname)
|
|
||||||
free (binding->dirname);
|
|
||||||
|
|
||||||
binding->dirname = result;
|
|
||||||
modified = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*dirnamep = result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (codesetp)
|
|
||||||
{
|
|
||||||
const char *codeset = *codesetp;
|
|
||||||
|
|
||||||
if (codeset == NULL)
|
|
||||||
/* The current binding has be to returned. */
|
|
||||||
*codesetp = binding->codeset;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* The domain is already bound. If the new value and the old
|
|
||||||
one are equal we simply do nothing. Otherwise replace the
|
|
||||||
old binding. */
|
|
||||||
char *result = binding->codeset;
|
|
||||||
if (result == NULL || strcmp (codeset, result) != 0)
|
|
||||||
{
|
|
||||||
#if defined _LIBC || defined HAVE_STRDUP
|
|
||||||
result = strdup (codeset);
|
|
||||||
#else
|
|
||||||
size_t len = strlen (codeset) + 1;
|
|
||||||
result = (char *) malloc (len);
|
|
||||||
if (__builtin_expect (result != NULL, 1))
|
|
||||||
memcpy (result, codeset, len);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (__builtin_expect (result != NULL, 1))
|
|
||||||
{
|
|
||||||
if (binding->codeset != NULL)
|
|
||||||
free (binding->codeset);
|
|
||||||
|
|
||||||
binding->codeset = result;
|
|
||||||
binding->codeset_cntr++;
|
|
||||||
modified = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*codesetp = result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ((dirnamep == NULL || *dirnamep == NULL)
|
|
||||||
&& (codesetp == NULL || *codesetp == NULL))
|
|
||||||
{
|
|
||||||
/* Simply return the default values. */
|
|
||||||
if (dirnamep)
|
|
||||||
*dirnamep = _nl_default_dirname;
|
|
||||||
if (codesetp)
|
|
||||||
*codesetp = NULL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* We have to create a new binding. */
|
|
||||||
size_t len = strlen (domainname) + 1;
|
|
||||||
struct binding *new_binding =
|
|
||||||
(struct binding *) malloc (offsetof (struct binding, domainname) + len);
|
|
||||||
|
|
||||||
if (__builtin_expect (new_binding == NULL, 0))
|
|
||||||
goto failed;
|
|
||||||
|
|
||||||
memcpy (new_binding->domainname, domainname, len);
|
|
||||||
|
|
||||||
if (dirnamep)
|
|
||||||
{
|
|
||||||
const char *dirname = *dirnamep;
|
|
||||||
|
|
||||||
if (dirname == NULL)
|
|
||||||
/* The default value. */
|
|
||||||
dirname = _nl_default_dirname;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (strcmp (dirname, _nl_default_dirname) == 0)
|
|
||||||
dirname = _nl_default_dirname;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char *result;
|
|
||||||
#if defined _LIBC || defined HAVE_STRDUP
|
|
||||||
result = strdup (dirname);
|
|
||||||
if (__builtin_expect (result == NULL, 0))
|
|
||||||
goto failed_dirname;
|
|
||||||
#else
|
|
||||||
size_t len = strlen (dirname) + 1;
|
|
||||||
result = (char *) malloc (len);
|
|
||||||
if (__builtin_expect (result == NULL, 0))
|
|
||||||
goto failed_dirname;
|
|
||||||
memcpy (result, dirname, len);
|
|
||||||
#endif
|
|
||||||
dirname = result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*dirnamep = dirname;
|
|
||||||
new_binding->dirname = (char *) dirname;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
/* The default value. */
|
|
||||||
new_binding->dirname = (char *) _nl_default_dirname;
|
|
||||||
|
|
||||||
new_binding->codeset_cntr = 0;
|
|
||||||
|
|
||||||
if (codesetp)
|
|
||||||
{
|
|
||||||
const char *codeset = *codesetp;
|
|
||||||
|
|
||||||
if (codeset != NULL)
|
|
||||||
{
|
|
||||||
char *result;
|
|
||||||
|
|
||||||
#if defined _LIBC || defined HAVE_STRDUP
|
|
||||||
result = strdup (codeset);
|
|
||||||
if (__builtin_expect (result == NULL, 0))
|
|
||||||
goto failed_codeset;
|
|
||||||
#else
|
|
||||||
size_t len = strlen (codeset) + 1;
|
|
||||||
result = (char *) malloc (len);
|
|
||||||
if (__builtin_expect (result == NULL, 0))
|
|
||||||
goto failed_codeset;
|
|
||||||
memcpy (result, codeset, len);
|
|
||||||
#endif
|
|
||||||
codeset = result;
|
|
||||||
new_binding->codeset_cntr++;
|
|
||||||
}
|
|
||||||
*codesetp = codeset;
|
|
||||||
new_binding->codeset = (char *) codeset;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
new_binding->codeset = NULL;
|
|
||||||
|
|
||||||
/* Now enqueue it. */
|
|
||||||
if (_nl_domain_bindings == NULL
|
|
||||||
|| strcmp (domainname, _nl_domain_bindings->domainname) < 0)
|
|
||||||
{
|
|
||||||
new_binding->next = _nl_domain_bindings;
|
|
||||||
_nl_domain_bindings = new_binding;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
binding = _nl_domain_bindings;
|
|
||||||
while (binding->next != NULL
|
|
||||||
&& strcmp (domainname, binding->next->domainname) > 0)
|
|
||||||
binding = binding->next;
|
|
||||||
|
|
||||||
new_binding->next = binding->next;
|
|
||||||
binding->next = new_binding;
|
|
||||||
}
|
|
||||||
|
|
||||||
modified = 1;
|
|
||||||
|
|
||||||
/* Here we deal with memory allocation failures. */
|
|
||||||
if (0)
|
|
||||||
{
|
|
||||||
failed_codeset:
|
|
||||||
if (new_binding->dirname != _nl_default_dirname)
|
|
||||||
free (new_binding->dirname);
|
|
||||||
failed_dirname:
|
|
||||||
free (new_binding);
|
|
||||||
failed:
|
|
||||||
if (dirnamep)
|
|
||||||
*dirnamep = NULL;
|
|
||||||
if (codesetp)
|
|
||||||
*codesetp = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If we modified any binding, we flush the caches. */
|
|
||||||
if (modified)
|
|
||||||
++_nl_msg_cat_cntr;
|
|
||||||
|
|
||||||
__libc_rwlock_unlock (_nl_state_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Specify that the DOMAINNAME message catalog will be found
|
|
||||||
in DIRNAME rather than in the system locale data base. */
|
|
||||||
char *
|
|
||||||
BINDTEXTDOMAIN (domainname, dirname)
|
|
||||||
const char *domainname;
|
|
||||||
const char *dirname;
|
|
||||||
{
|
|
||||||
set_binding_values (domainname, &dirname, NULL);
|
|
||||||
return (char *) dirname;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Specify the character encoding in which the messages from the
|
|
||||||
DOMAINNAME message catalog will be returned. */
|
|
||||||
char *
|
|
||||||
BIND_TEXTDOMAIN_CODESET (domainname, codeset)
|
|
||||||
const char *domainname;
|
|
||||||
const char *codeset;
|
|
||||||
{
|
|
||||||
set_binding_values (domainname, NULL, &codeset);
|
|
||||||
return (char *) codeset;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
/* Aliases for function names in GNU C Library. */
|
|
||||||
weak_alias (__bindtextdomain, bindtextdomain);
|
|
||||||
weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset);
|
|
||||||
#endif
|
|
||||||
@@ -1,454 +0,0 @@
|
|||||||
#! /bin/sh
|
|
||||||
# Output a system dependent table of character encoding aliases.
|
|
||||||
#
|
|
||||||
# Copyright (C) 2000-2002 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, 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.
|
|
||||||
#
|
|
||||||
# The table consists of lines of the form
|
|
||||||
# ALIAS CANONICAL
|
|
||||||
#
|
|
||||||
# ALIAS is the (system dependent) result of "nl_langinfo (CODESET)".
|
|
||||||
# ALIAS is compared in a case sensitive way.
|
|
||||||
#
|
|
||||||
# CANONICAL is the GNU canonical name for this character encoding.
|
|
||||||
# It must be an encoding supported by libiconv. Support by GNU libc is
|
|
||||||
# also desirable. CANONICAL is case insensitive. Usually an upper case
|
|
||||||
# MIME charset name is preferred.
|
|
||||||
# The current list of GNU canonical charset names is as follows.
|
|
||||||
#
|
|
||||||
# name used by which systems a MIME name?
|
|
||||||
# ASCII, ANSI_X3.4-1968 glibc solaris freebsd
|
|
||||||
# ISO-8859-1 glibc aix hpux irix osf solaris freebsd yes
|
|
||||||
# ISO-8859-2 glibc aix hpux irix osf solaris freebsd yes
|
|
||||||
# ISO-8859-3 glibc yes
|
|
||||||
# ISO-8859-4 osf solaris freebsd yes
|
|
||||||
# ISO-8859-5 glibc aix hpux irix osf solaris freebsd yes
|
|
||||||
# ISO-8859-6 glibc aix hpux solaris yes
|
|
||||||
# ISO-8859-7 glibc aix hpux irix osf solaris yes
|
|
||||||
# ISO-8859-8 glibc aix hpux osf solaris yes
|
|
||||||
# ISO-8859-9 glibc aix hpux irix osf solaris yes
|
|
||||||
# ISO-8859-13 glibc
|
|
||||||
# ISO-8859-15 glibc aix osf solaris freebsd
|
|
||||||
# KOI8-R glibc solaris freebsd yes
|
|
||||||
# KOI8-U glibc freebsd yes
|
|
||||||
# CP437 dos
|
|
||||||
# CP775 dos
|
|
||||||
# CP850 aix osf dos
|
|
||||||
# CP852 dos
|
|
||||||
# CP855 dos
|
|
||||||
# CP856 aix
|
|
||||||
# CP857 dos
|
|
||||||
# CP861 dos
|
|
||||||
# CP862 dos
|
|
||||||
# CP864 dos
|
|
||||||
# CP865 dos
|
|
||||||
# CP866 freebsd dos
|
|
||||||
# CP869 dos
|
|
||||||
# CP874 win32 dos
|
|
||||||
# CP922 aix
|
|
||||||
# CP932 aix win32 dos
|
|
||||||
# CP943 aix
|
|
||||||
# CP949 osf win32 dos
|
|
||||||
# CP950 win32 dos
|
|
||||||
# CP1046 aix
|
|
||||||
# CP1124 aix
|
|
||||||
# CP1129 aix
|
|
||||||
# CP1250 win32
|
|
||||||
# CP1251 glibc win32
|
|
||||||
# CP1252 aix win32
|
|
||||||
# CP1253 win32
|
|
||||||
# CP1254 win32
|
|
||||||
# CP1255 win32
|
|
||||||
# CP1256 win32
|
|
||||||
# CP1257 win32
|
|
||||||
# GB2312 glibc aix hpux irix solaris freebsd yes
|
|
||||||
# EUC-JP glibc aix hpux irix osf solaris freebsd yes
|
|
||||||
# EUC-KR glibc aix hpux irix osf solaris freebsd yes
|
|
||||||
# EUC-TW glibc aix hpux irix osf solaris
|
|
||||||
# BIG5 glibc aix hpux osf solaris freebsd yes
|
|
||||||
# BIG5-HKSCS glibc
|
|
||||||
# GBK aix osf win32 dos
|
|
||||||
# GB18030 glibc
|
|
||||||
# SHIFT_JIS hpux osf solaris freebsd yes
|
|
||||||
# JOHAB glibc win32
|
|
||||||
# TIS-620 glibc aix hpux osf solaris
|
|
||||||
# VISCII glibc yes
|
|
||||||
# HP-ROMAN8 hpux
|
|
||||||
# HP-ARABIC8 hpux
|
|
||||||
# HP-GREEK8 hpux
|
|
||||||
# HP-HEBREW8 hpux
|
|
||||||
# HP-TURKISH8 hpux
|
|
||||||
# HP-KANA8 hpux
|
|
||||||
# DEC-KANJI osf
|
|
||||||
# DEC-HANYU osf
|
|
||||||
# UTF-8 glibc aix hpux osf solaris yes
|
|
||||||
#
|
|
||||||
# Note: Names which are not marked as being a MIME name should not be used in
|
|
||||||
# Internet protocols for information interchange (mail, news, etc.).
|
|
||||||
#
|
|
||||||
# Note: ASCII and ANSI_X3.4-1968 are synonymous canonical names. Applications
|
|
||||||
# must understand both names and treat them as equivalent.
|
|
||||||
#
|
|
||||||
# The first argument passed to this file is the canonical host specification,
|
|
||||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
|
||||||
# or
|
|
||||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
|
||||||
|
|
||||||
host="$1"
|
|
||||||
os=`echo "$host" | sed -e 's/^[^-]*-[^-]*-\(.*\)$/\1/'`
|
|
||||||
echo "# This file contains a table of character encoding aliases,"
|
|
||||||
echo "# suitable for operating system '${os}'."
|
|
||||||
echo "# It was automatically generated from config.charset."
|
|
||||||
# List of references, updated during installation:
|
|
||||||
echo "# Packages using this file: "
|
|
||||||
case "$os" in
|
|
||||||
linux* | *-gnu*)
|
|
||||||
# With glibc-2.1 or newer, we don't need any canonicalization,
|
|
||||||
# because glibc has iconv and both glibc and libiconv support all
|
|
||||||
# GNU canonical names directly. Therefore, the Makefile does not
|
|
||||||
# need to install the alias file at all.
|
|
||||||
# The following applies only to glibc-2.0.x and older libcs.
|
|
||||||
echo "ISO_646.IRV:1983 ASCII"
|
|
||||||
;;
|
|
||||||
aix*)
|
|
||||||
echo "ISO8859-1 ISO-8859-1"
|
|
||||||
echo "ISO8859-2 ISO-8859-2"
|
|
||||||
echo "ISO8859-5 ISO-8859-5"
|
|
||||||
echo "ISO8859-6 ISO-8859-6"
|
|
||||||
echo "ISO8859-7 ISO-8859-7"
|
|
||||||
echo "ISO8859-8 ISO-8859-8"
|
|
||||||
echo "ISO8859-9 ISO-8859-9"
|
|
||||||
echo "ISO8859-15 ISO-8859-15"
|
|
||||||
echo "IBM-850 CP850"
|
|
||||||
echo "IBM-856 CP856"
|
|
||||||
echo "IBM-921 ISO-8859-13"
|
|
||||||
echo "IBM-922 CP922"
|
|
||||||
echo "IBM-932 CP932"
|
|
||||||
echo "IBM-943 CP943"
|
|
||||||
echo "IBM-1046 CP1046"
|
|
||||||
echo "IBM-1124 CP1124"
|
|
||||||
echo "IBM-1129 CP1129"
|
|
||||||
echo "IBM-1252 CP1252"
|
|
||||||
echo "IBM-eucCN GB2312"
|
|
||||||
echo "IBM-eucJP EUC-JP"
|
|
||||||
echo "IBM-eucKR EUC-KR"
|
|
||||||
echo "IBM-eucTW EUC-TW"
|
|
||||||
echo "big5 BIG5"
|
|
||||||
echo "GBK GBK"
|
|
||||||
echo "TIS-620 TIS-620"
|
|
||||||
echo "UTF-8 UTF-8"
|
|
||||||
;;
|
|
||||||
hpux*)
|
|
||||||
echo "iso88591 ISO-8859-1"
|
|
||||||
echo "iso88592 ISO-8859-2"
|
|
||||||
echo "iso88595 ISO-8859-5"
|
|
||||||
echo "iso88596 ISO-8859-6"
|
|
||||||
echo "iso88597 ISO-8859-7"
|
|
||||||
echo "iso88598 ISO-8859-8"
|
|
||||||
echo "iso88599 ISO-8859-9"
|
|
||||||
echo "iso885915 ISO-8859-15"
|
|
||||||
echo "roman8 HP-ROMAN8"
|
|
||||||
echo "arabic8 HP-ARABIC8"
|
|
||||||
echo "greek8 HP-GREEK8"
|
|
||||||
echo "hebrew8 HP-HEBREW8"
|
|
||||||
echo "turkish8 HP-TURKISH8"
|
|
||||||
echo "kana8 HP-KANA8"
|
|
||||||
echo "tis620 TIS-620"
|
|
||||||
echo "big5 BIG5"
|
|
||||||
echo "eucJP EUC-JP"
|
|
||||||
echo "eucKR EUC-KR"
|
|
||||||
echo "eucTW EUC-TW"
|
|
||||||
echo "hp15CN GB2312"
|
|
||||||
#echo "ccdc ?" # what is this?
|
|
||||||
echo "SJIS SHIFT_JIS"
|
|
||||||
echo "utf8 UTF-8"
|
|
||||||
;;
|
|
||||||
irix*)
|
|
||||||
echo "ISO8859-1 ISO-8859-1"
|
|
||||||
echo "ISO8859-2 ISO-8859-2"
|
|
||||||
echo "ISO8859-5 ISO-8859-5"
|
|
||||||
echo "ISO8859-7 ISO-8859-7"
|
|
||||||
echo "ISO8859-9 ISO-8859-9"
|
|
||||||
echo "eucCN GB2312"
|
|
||||||
echo "eucJP EUC-JP"
|
|
||||||
echo "eucKR EUC-KR"
|
|
||||||
echo "eucTW EUC-TW"
|
|
||||||
;;
|
|
||||||
osf*)
|
|
||||||
echo "ISO8859-1 ISO-8859-1"
|
|
||||||
echo "ISO8859-2 ISO-8859-2"
|
|
||||||
echo "ISO8859-4 ISO-8859-4"
|
|
||||||
echo "ISO8859-5 ISO-8859-5"
|
|
||||||
echo "ISO8859-7 ISO-8859-7"
|
|
||||||
echo "ISO8859-8 ISO-8859-8"
|
|
||||||
echo "ISO8859-9 ISO-8859-9"
|
|
||||||
echo "ISO8859-15 ISO-8859-15"
|
|
||||||
echo "cp850 CP850"
|
|
||||||
echo "big5 BIG5"
|
|
||||||
echo "dechanyu DEC-HANYU"
|
|
||||||
echo "dechanzi GB2312"
|
|
||||||
echo "deckanji DEC-KANJI"
|
|
||||||
echo "deckorean EUC-KR"
|
|
||||||
echo "eucJP EUC-JP"
|
|
||||||
echo "eucKR EUC-KR"
|
|
||||||
echo "eucTW EUC-TW"
|
|
||||||
echo "GBK GBK"
|
|
||||||
echo "KSC5601 CP949"
|
|
||||||
echo "sdeckanji EUC-JP"
|
|
||||||
echo "SJIS SHIFT_JIS"
|
|
||||||
echo "TACTIS TIS-620"
|
|
||||||
echo "UTF-8 UTF-8"
|
|
||||||
;;
|
|
||||||
solaris*)
|
|
||||||
echo "646 ASCII"
|
|
||||||
echo "ISO8859-1 ISO-8859-1"
|
|
||||||
echo "ISO8859-2 ISO-8859-2"
|
|
||||||
echo "ISO8859-4 ISO-8859-4"
|
|
||||||
echo "ISO8859-5 ISO-8859-5"
|
|
||||||
echo "ISO8859-6 ISO-8859-6"
|
|
||||||
echo "ISO8859-7 ISO-8859-7"
|
|
||||||
echo "ISO8859-8 ISO-8859-8"
|
|
||||||
echo "ISO8859-9 ISO-8859-9"
|
|
||||||
echo "ISO8859-15 ISO-8859-15"
|
|
||||||
echo "koi8-r KOI8-R"
|
|
||||||
echo "BIG5 BIG5"
|
|
||||||
echo "gb2312 GB2312"
|
|
||||||
echo "cns11643 EUC-TW"
|
|
||||||
echo "5601 EUC-KR"
|
|
||||||
echo "eucJP EUC-JP"
|
|
||||||
echo "PCK SHIFT_JIS"
|
|
||||||
echo "TIS620.2533 TIS-620"
|
|
||||||
#echo "sun_eu_greek ?" # what is this?
|
|
||||||
echo "UTF-8 UTF-8"
|
|
||||||
;;
|
|
||||||
freebsd* | os2*)
|
|
||||||
# FreeBSD 4.2 doesn't have nl_langinfo(CODESET); therefore
|
|
||||||
# localcharset.c falls back to using the full locale name
|
|
||||||
# from the environment variables.
|
|
||||||
# Likewise for OS/2. OS/2 has XFree86 just like FreeBSD. Just
|
|
||||||
# reuse FreeBSD's locale data for OS/2.
|
|
||||||
echo "C ASCII"
|
|
||||||
echo "US-ASCII ASCII"
|
|
||||||
for l in la_LN lt_LN; do
|
|
||||||
echo "$l.ASCII ASCII"
|
|
||||||
done
|
|
||||||
for l in da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_US es_ES \
|
|
||||||
fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH it_IT la_LN \
|
|
||||||
lt_LN nl_BE nl_NL no_NO pt_PT sv_SE; do
|
|
||||||
echo "$l.ISO_8859-1 ISO-8859-1"
|
|
||||||
echo "$l.DIS_8859-15 ISO-8859-15"
|
|
||||||
done
|
|
||||||
for l in cs_CZ hr_HR hu_HU la_LN lt_LN pl_PL sl_SI; do
|
|
||||||
echo "$l.ISO_8859-2 ISO-8859-2"
|
|
||||||
done
|
|
||||||
for l in la_LN lt_LT; do
|
|
||||||
echo "$l.ISO_8859-4 ISO-8859-4"
|
|
||||||
done
|
|
||||||
for l in ru_RU ru_SU; do
|
|
||||||
echo "$l.KOI8-R KOI8-R"
|
|
||||||
echo "$l.ISO_8859-5 ISO-8859-5"
|
|
||||||
echo "$l.CP866 CP866"
|
|
||||||
done
|
|
||||||
echo "uk_UA.KOI8-U KOI8-U"
|
|
||||||
echo "zh_TW.BIG5 BIG5"
|
|
||||||
echo "zh_TW.Big5 BIG5"
|
|
||||||
echo "zh_CN.EUC GB2312"
|
|
||||||
echo "ja_JP.EUC EUC-JP"
|
|
||||||
echo "ja_JP.SJIS SHIFT_JIS"
|
|
||||||
echo "ja_JP.Shift_JIS SHIFT_JIS"
|
|
||||||
echo "ko_KR.EUC EUC-KR"
|
|
||||||
;;
|
|
||||||
netbsd*)
|
|
||||||
echo "646 ASCII"
|
|
||||||
echo "ISO8859-1 ISO-8859-1"
|
|
||||||
echo "ISO8859-2 ISO-8859-2"
|
|
||||||
echo "ISO8859-4 ISO-8859-4"
|
|
||||||
echo "ISO8859-5 ISO-8859-5"
|
|
||||||
echo "ISO8859-15 ISO-8859-15"
|
|
||||||
echo "eucCN GB2312"
|
|
||||||
echo "eucJP EUC-JP"
|
|
||||||
echo "eucKR EUC-KR"
|
|
||||||
echo "eucTW EUC-TW"
|
|
||||||
echo "BIG5 BIG5"
|
|
||||||
echo "SJIS SHIFT_JIS"
|
|
||||||
;;
|
|
||||||
beos*)
|
|
||||||
# BeOS has a single locale, and it has UTF-8 encoding.
|
|
||||||
echo "* UTF-8"
|
|
||||||
;;
|
|
||||||
msdosdjgpp*)
|
|
||||||
# DJGPP 2.03 doesn't have nl_langinfo(CODESET); therefore
|
|
||||||
# localcharset.c falls back to using the full locale name
|
|
||||||
# from the environment variables.
|
|
||||||
echo "#"
|
|
||||||
echo "# The encodings given here may not all be correct."
|
|
||||||
echo "# If you find that the encoding given for your language and"
|
|
||||||
echo "# country is not the one your DOS machine actually uses, just"
|
|
||||||
echo "# correct it in this file, and send a mail to"
|
|
||||||
echo "# Juan Manuel Guerrero <[email protected]>"
|
|
||||||
echo "# and Bruno Haible <[email protected]>."
|
|
||||||
echo "#"
|
|
||||||
echo "C ASCII"
|
|
||||||
# ISO-8859-1 languages
|
|
||||||
echo "ca CP850"
|
|
||||||
echo "ca_ES CP850"
|
|
||||||
echo "da CP865" # not CP850 ??
|
|
||||||
echo "da_DK CP865" # not CP850 ??
|
|
||||||
echo "de CP850"
|
|
||||||
echo "de_AT CP850"
|
|
||||||
echo "de_CH CP850"
|
|
||||||
echo "de_DE CP850"
|
|
||||||
echo "en CP850"
|
|
||||||
echo "en_AU CP850" # not CP437 ??
|
|
||||||
echo "en_CA CP850"
|
|
||||||
echo "en_GB CP850"
|
|
||||||
echo "en_NZ CP437"
|
|
||||||
echo "en_US CP437"
|
|
||||||
echo "en_ZA CP850" # not CP437 ??
|
|
||||||
echo "es CP850"
|
|
||||||
echo "es_AR CP850"
|
|
||||||
echo "es_BO CP850"
|
|
||||||
echo "es_CL CP850"
|
|
||||||
echo "es_CO CP850"
|
|
||||||
echo "es_CR CP850"
|
|
||||||
echo "es_CU CP850"
|
|
||||||
echo "es_DO CP850"
|
|
||||||
echo "es_EC CP850"
|
|
||||||
echo "es_ES CP850"
|
|
||||||
echo "es_GT CP850"
|
|
||||||
echo "es_HN CP850"
|
|
||||||
echo "es_MX CP850"
|
|
||||||
echo "es_NI CP850"
|
|
||||||
echo "es_PA CP850"
|
|
||||||
echo "es_PY CP850"
|
|
||||||
echo "es_PE CP850"
|
|
||||||
echo "es_SV CP850"
|
|
||||||
echo "es_UY CP850"
|
|
||||||
echo "es_VE CP850"
|
|
||||||
echo "et CP850"
|
|
||||||
echo "et_EE CP850"
|
|
||||||
echo "eu CP850"
|
|
||||||
echo "eu_ES CP850"
|
|
||||||
echo "fi CP850"
|
|
||||||
echo "fi_FI CP850"
|
|
||||||
echo "fr CP850"
|
|
||||||
echo "fr_BE CP850"
|
|
||||||
echo "fr_CA CP850"
|
|
||||||
echo "fr_CH CP850"
|
|
||||||
echo "fr_FR CP850"
|
|
||||||
echo "ga CP850"
|
|
||||||
echo "ga_IE CP850"
|
|
||||||
echo "gd CP850"
|
|
||||||
echo "gd_GB CP850"
|
|
||||||
echo "gl CP850"
|
|
||||||
echo "gl_ES CP850"
|
|
||||||
echo "id CP850" # not CP437 ??
|
|
||||||
echo "id_ID CP850" # not CP437 ??
|
|
||||||
echo "is CP861" # not CP850 ??
|
|
||||||
echo "is_IS CP861" # not CP850 ??
|
|
||||||
echo "it CP850"
|
|
||||||
echo "it_CH CP850"
|
|
||||||
echo "it_IT CP850"
|
|
||||||
echo "lt CP775"
|
|
||||||
echo "lt_LT CP775"
|
|
||||||
echo "lv CP775"
|
|
||||||
echo "lv_LV CP775"
|
|
||||||
echo "nb CP865" # not CP850 ??
|
|
||||||
echo "nb_NO CP865" # not CP850 ??
|
|
||||||
echo "nl CP850"
|
|
||||||
echo "nl_BE CP850"
|
|
||||||
echo "nl_NL CP850"
|
|
||||||
echo "nn CP865" # not CP850 ??
|
|
||||||
echo "nn_NO CP865" # not CP850 ??
|
|
||||||
echo "no CP865" # not CP850 ??
|
|
||||||
echo "no_NO CP865" # not CP850 ??
|
|
||||||
echo "pt CP850"
|
|
||||||
echo "pt_BR CP850"
|
|
||||||
echo "pt_PT CP850"
|
|
||||||
echo "sv CP850"
|
|
||||||
echo "sv_SE CP850"
|
|
||||||
# ISO-8859-2 languages
|
|
||||||
echo "cs CP852"
|
|
||||||
echo "cs_CZ CP852"
|
|
||||||
echo "hr CP852"
|
|
||||||
echo "hr_HR CP852"
|
|
||||||
echo "hu CP852"
|
|
||||||
echo "hu_HU CP852"
|
|
||||||
echo "pl CP852"
|
|
||||||
echo "pl_PL CP852"
|
|
||||||
echo "ro CP852"
|
|
||||||
echo "ro_RO CP852"
|
|
||||||
echo "sk CP852"
|
|
||||||
echo "sk_SK CP852"
|
|
||||||
echo "sl CP852"
|
|
||||||
echo "sl_SI CP852"
|
|
||||||
echo "sq CP852"
|
|
||||||
echo "sq_AL CP852"
|
|
||||||
echo "sr CP852" # CP852 or CP866 or CP855 ??
|
|
||||||
echo "sr_YU CP852" # CP852 or CP866 or CP855 ??
|
|
||||||
# ISO-8859-3 languages
|
|
||||||
echo "mt CP850"
|
|
||||||
echo "mt_MT CP850"
|
|
||||||
# ISO-8859-5 languages
|
|
||||||
echo "be CP866"
|
|
||||||
echo "be_BE CP866"
|
|
||||||
echo "bg CP866" # not CP855 ??
|
|
||||||
echo "bg_BG CP866" # not CP855 ??
|
|
||||||
echo "mk CP866" # not CP855 ??
|
|
||||||
echo "mk_MK CP866" # not CP855 ??
|
|
||||||
echo "ru CP866"
|
|
||||||
echo "ru_RU CP866"
|
|
||||||
# ISO-8859-6 languages
|
|
||||||
echo "ar CP864"
|
|
||||||
echo "ar_AE CP864"
|
|
||||||
echo "ar_DZ CP864"
|
|
||||||
echo "ar_EG CP864"
|
|
||||||
echo "ar_IQ CP864"
|
|
||||||
echo "ar_IR CP864"
|
|
||||||
echo "ar_JO CP864"
|
|
||||||
echo "ar_KW CP864"
|
|
||||||
echo "ar_MA CP864"
|
|
||||||
echo "ar_OM CP864"
|
|
||||||
echo "ar_QA CP864"
|
|
||||||
echo "ar_SA CP864"
|
|
||||||
echo "ar_SY CP864"
|
|
||||||
# ISO-8859-7 languages
|
|
||||||
echo "el CP869"
|
|
||||||
echo "el_GR CP869"
|
|
||||||
# ISO-8859-8 languages
|
|
||||||
echo "he CP862"
|
|
||||||
echo "he_IL CP862"
|
|
||||||
# ISO-8859-9 languages
|
|
||||||
echo "tr CP857"
|
|
||||||
echo "tr_TR CP857"
|
|
||||||
# Japanese
|
|
||||||
echo "ja CP932"
|
|
||||||
echo "ja_JP CP932"
|
|
||||||
# Chinese
|
|
||||||
echo "zh_CN GBK"
|
|
||||||
echo "zh_TW CP950" # not CP938 ??
|
|
||||||
# Korean
|
|
||||||
echo "kr CP949" # not CP934 ??
|
|
||||||
echo "kr_KR CP949" # not CP934 ??
|
|
||||||
# Thai
|
|
||||||
echo "th CP874"
|
|
||||||
echo "th_TH CP874"
|
|
||||||
# Other
|
|
||||||
echo "eo CP850"
|
|
||||||
echo "eo_EO CP850"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
/* Implementation of the dcgettext(3) function.
|
|
||||||
Copyright (C) 1995-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 Library 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. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "gettextP.h"
|
|
||||||
#ifdef _LIBC
|
|
||||||
# include <libintl.h>
|
|
||||||
#else
|
|
||||||
# include "libgnuintl.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
/* Names for the libintl functions are a problem. They must not clash
|
|
||||||
with existing names and they should follow ANSI C. But this source
|
|
||||||
code is also used in GNU C Library where the names have a __
|
|
||||||
prefix. So we have to make a difference here. */
|
|
||||||
#ifdef _LIBC
|
|
||||||
# define DCGETTEXT __dcgettext
|
|
||||||
# define DCIGETTEXT __dcigettext
|
|
||||||
#else
|
|
||||||
# define DCGETTEXT dcgettext__
|
|
||||||
# define DCIGETTEXT dcigettext__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
|
|
||||||
locale. */
|
|
||||||
char *
|
|
||||||
DCGETTEXT (domainname, msgid, category)
|
|
||||||
const char *domainname;
|
|
||||||
const char *msgid;
|
|
||||||
int category;
|
|
||||||
{
|
|
||||||
return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
/* Alias for function name in GNU C Library. */
|
|
||||||
weak_alias (__dcgettext, dcgettext);
|
|
||||||
#endif
|
|
||||||
-1167
File diff suppressed because it is too large
Load Diff
@@ -1,60 +0,0 @@
|
|||||||
/* Implementation of the dcngettext(3) function.
|
|
||||||
Copyright (C) 1995-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 Library 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. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "gettextP.h"
|
|
||||||
#ifdef _LIBC
|
|
||||||
# include <libintl.h>
|
|
||||||
#else
|
|
||||||
# include "libgnuintl.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
/* Names for the libintl functions are a problem. They must not clash
|
|
||||||
with existing names and they should follow ANSI C. But this source
|
|
||||||
code is also used in GNU C Library where the names have a __
|
|
||||||
prefix. So we have to make a difference here. */
|
|
||||||
#ifdef _LIBC
|
|
||||||
# define DCNGETTEXT __dcngettext
|
|
||||||
# define DCIGETTEXT __dcigettext
|
|
||||||
#else
|
|
||||||
# define DCNGETTEXT dcngettext__
|
|
||||||
# define DCIGETTEXT dcigettext__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
|
|
||||||
locale. */
|
|
||||||
char *
|
|
||||||
DCNGETTEXT (domainname, msgid1, msgid2, n, category)
|
|
||||||
const char *domainname;
|
|
||||||
const char *msgid1;
|
|
||||||
const char *msgid2;
|
|
||||||
unsigned long int n;
|
|
||||||
int category;
|
|
||||||
{
|
|
||||||
return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
/* Alias for function name in GNU C Library. */
|
|
||||||
weak_alias (__dcngettext, dcngettext);
|
|
||||||
#endif
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
/* Implementation of the dgettext(3) function.
|
|
||||||
Copyright (C) 1995-1997, 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 Library 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. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
#include "gettextP.h"
|
|
||||||
#ifdef _LIBC
|
|
||||||
# include <libintl.h>
|
|
||||||
#else
|
|
||||||
# include "libgnuintl.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
/* Names for the libintl functions are a problem. They must not clash
|
|
||||||
with existing names and they should follow ANSI C. But this source
|
|
||||||
code is also used in GNU C Library where the names have a __
|
|
||||||
prefix. So we have to make a difference here. */
|
|
||||||
#ifdef _LIBC
|
|
||||||
# define DGETTEXT __dgettext
|
|
||||||
# define DCGETTEXT __dcgettext
|
|
||||||
#else
|
|
||||||
# define DGETTEXT dgettext__
|
|
||||||
# define DCGETTEXT dcgettext__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Look up MSGID in the DOMAINNAME message catalog of the current
|
|
||||||
LC_MESSAGES locale. */
|
|
||||||
char *
|
|
||||||
DGETTEXT (domainname, msgid)
|
|
||||||
const char *domainname;
|
|
||||||
const char *msgid;
|
|
||||||
{
|
|
||||||
return DCGETTEXT (domainname, msgid, LC_MESSAGES);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
/* Alias for function name in GNU C Library. */
|
|
||||||
weak_alias (__dgettext, dgettext);
|
|
||||||
#endif
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
/* Implementation of the dngettext(3) function.
|
|
||||||
Copyright (C) 1995-1997, 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 Library 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. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
#include "gettextP.h"
|
|
||||||
#ifdef _LIBC
|
|
||||||
# include <libintl.h>
|
|
||||||
#else
|
|
||||||
# include "libgnuintl.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
/* Names for the libintl functions are a problem. They must not clash
|
|
||||||
with existing names and they should follow ANSI C. But this source
|
|
||||||
code is also used in GNU C Library where the names have a __
|
|
||||||
prefix. So we have to make a difference here. */
|
|
||||||
#ifdef _LIBC
|
|
||||||
# define DNGETTEXT __dngettext
|
|
||||||
# define DCNGETTEXT __dcngettext
|
|
||||||
#else
|
|
||||||
# define DNGETTEXT dngettext__
|
|
||||||
# define DCNGETTEXT dcngettext__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Look up MSGID in the DOMAINNAME message catalog of the current
|
|
||||||
LC_MESSAGES locale and skip message according to the plural form. */
|
|
||||||
char *
|
|
||||||
DNGETTEXT (domainname, msgid1, msgid2, n)
|
|
||||||
const char *domainname;
|
|
||||||
const char *msgid1;
|
|
||||||
const char *msgid2;
|
|
||||||
unsigned long int n;
|
|
||||||
{
|
|
||||||
return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
/* Alias for function name in GNU C Library. */
|
|
||||||
weak_alias (__dngettext, dngettext);
|
|
||||||
#endif
|
|
||||||
@@ -1,192 +0,0 @@
|
|||||||
/* Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc.
|
|
||||||
Contributed by Ulrich Drepper <[email protected]>, 1995.
|
|
||||||
|
|
||||||
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, 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. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
#include "loadinfo.h"
|
|
||||||
|
|
||||||
/* On some strange systems still no definition of NULL is found. Sigh! */
|
|
||||||
#ifndef NULL
|
|
||||||
# if defined __STDC__ && __STDC__
|
|
||||||
# define NULL ((void *) 0)
|
|
||||||
# else
|
|
||||||
# define NULL 0
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
char *
|
|
||||||
_nl_find_language (name)
|
|
||||||
const char *name;
|
|
||||||
{
|
|
||||||
while (name[0] != '\0' && name[0] != '_' && name[0] != '@'
|
|
||||||
&& name[0] != '+' && name[0] != ',')
|
|
||||||
++name;
|
|
||||||
|
|
||||||
return (char *) name;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
_nl_explode_name (name, language, modifier, territory, codeset,
|
|
||||||
normalized_codeset, special, sponsor, revision)
|
|
||||||
char *name;
|
|
||||||
const char **language;
|
|
||||||
const char **modifier;
|
|
||||||
const char **territory;
|
|
||||||
const char **codeset;
|
|
||||||
const char **normalized_codeset;
|
|
||||||
const char **special;
|
|
||||||
const char **sponsor;
|
|
||||||
const char **revision;
|
|
||||||
{
|
|
||||||
enum { undecided, xpg, cen } syntax;
|
|
||||||
char *cp;
|
|
||||||
int mask;
|
|
||||||
|
|
||||||
*modifier = NULL;
|
|
||||||
*territory = NULL;
|
|
||||||
*codeset = NULL;
|
|
||||||
*normalized_codeset = NULL;
|
|
||||||
*special = NULL;
|
|
||||||
*sponsor = NULL;
|
|
||||||
*revision = NULL;
|
|
||||||
|
|
||||||
/* Now we determine the single parts of the locale name. First
|
|
||||||
look for the language. Termination symbols are `_' and `@' if
|
|
||||||
we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
|
|
||||||
mask = 0;
|
|
||||||
syntax = undecided;
|
|
||||||
*language = cp = name;
|
|
||||||
cp = _nl_find_language (*language);
|
|
||||||
|
|
||||||
if (*language == cp)
|
|
||||||
/* This does not make sense: language has to be specified. Use
|
|
||||||
this entry as it is without exploding. Perhaps it is an alias. */
|
|
||||||
cp = strchr (*language, '\0');
|
|
||||||
else if (cp[0] == '_')
|
|
||||||
{
|
|
||||||
/* Next is the territory. */
|
|
||||||
cp[0] = '\0';
|
|
||||||
*territory = ++cp;
|
|
||||||
|
|
||||||
while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@'
|
|
||||||
&& cp[0] != '+' && cp[0] != ',' && cp[0] != '_')
|
|
||||||
++cp;
|
|
||||||
|
|
||||||
mask |= TERRITORY;
|
|
||||||
|
|
||||||
if (cp[0] == '.')
|
|
||||||
{
|
|
||||||
/* Next is the codeset. */
|
|
||||||
syntax = xpg;
|
|
||||||
cp[0] = '\0';
|
|
||||||
*codeset = ++cp;
|
|
||||||
|
|
||||||
while (cp[0] != '\0' && cp[0] != '@')
|
|
||||||
++cp;
|
|
||||||
|
|
||||||
mask |= XPG_CODESET;
|
|
||||||
|
|
||||||
if (*codeset != cp && (*codeset)[0] != '\0')
|
|
||||||
{
|
|
||||||
*normalized_codeset = _nl_normalize_codeset (*codeset,
|
|
||||||
cp - *codeset);
|
|
||||||
if (strcmp (*codeset, *normalized_codeset) == 0)
|
|
||||||
free ((char *) *normalized_codeset);
|
|
||||||
else
|
|
||||||
mask |= XPG_NORM_CODESET;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cp[0] == '@' || (syntax != xpg && cp[0] == '+'))
|
|
||||||
{
|
|
||||||
/* Next is the modifier. */
|
|
||||||
syntax = cp[0] == '@' ? xpg : cen;
|
|
||||||
cp[0] = '\0';
|
|
||||||
*modifier = ++cp;
|
|
||||||
|
|
||||||
while (syntax == cen && cp[0] != '\0' && cp[0] != '+'
|
|
||||||
&& cp[0] != ',' && cp[0] != '_')
|
|
||||||
++cp;
|
|
||||||
|
|
||||||
mask |= XPG_MODIFIER | CEN_AUDIENCE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_'))
|
|
||||||
{
|
|
||||||
syntax = cen;
|
|
||||||
|
|
||||||
if (cp[0] == '+')
|
|
||||||
{
|
|
||||||
/* Next is special application (CEN syntax). */
|
|
||||||
cp[0] = '\0';
|
|
||||||
*special = ++cp;
|
|
||||||
|
|
||||||
while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_')
|
|
||||||
++cp;
|
|
||||||
|
|
||||||
mask |= CEN_SPECIAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cp[0] == ',')
|
|
||||||
{
|
|
||||||
/* Next is sponsor (CEN syntax). */
|
|
||||||
cp[0] = '\0';
|
|
||||||
*sponsor = ++cp;
|
|
||||||
|
|
||||||
while (cp[0] != '\0' && cp[0] != '_')
|
|
||||||
++cp;
|
|
||||||
|
|
||||||
mask |= CEN_SPONSOR;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cp[0] == '_')
|
|
||||||
{
|
|
||||||
/* Next is revision (CEN syntax). */
|
|
||||||
cp[0] = '\0';
|
|
||||||
*revision = ++cp;
|
|
||||||
|
|
||||||
mask |= CEN_REVISION;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* For CEN syntax values it might be important to have the
|
|
||||||
separator character in the file name, not for XPG syntax. */
|
|
||||||
if (syntax == xpg)
|
|
||||||
{
|
|
||||||
if (*territory != NULL && (*territory)[0] == '\0')
|
|
||||||
mask &= ~TERRITORY;
|
|
||||||
|
|
||||||
if (*codeset != NULL && (*codeset)[0] == '\0')
|
|
||||||
mask &= ~XPG_CODESET;
|
|
||||||
|
|
||||||
if (*modifier != NULL && (*modifier)[0] == '\0')
|
|
||||||
mask &= ~XPG_MODIFIER;
|
|
||||||
}
|
|
||||||
|
|
||||||
return mask;
|
|
||||||
}
|
|
||||||
@@ -1,198 +0,0 @@
|
|||||||
/* Handle list of needed message catalogs
|
|
||||||
Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
|
|
||||||
Written by Ulrich Drepper <[email protected]>, 1995.
|
|
||||||
|
|
||||||
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, 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. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#if defined HAVE_UNISTD_H || defined _LIBC
|
|
||||||
# include <unistd.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "gettextP.h"
|
|
||||||
#ifdef _LIBC
|
|
||||||
# include <libintl.h>
|
|
||||||
#else
|
|
||||||
# include "libgnuintl.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
/* List of already loaded domains. */
|
|
||||||
static struct loaded_l10nfile *_nl_loaded_domains;
|
|
||||||
|
|
||||||
|
|
||||||
/* Return a data structure describing the message catalog described by
|
|
||||||
the DOMAINNAME and CATEGORY parameters with respect to the currently
|
|
||||||
established bindings. */
|
|
||||||
struct loaded_l10nfile *
|
|
||||||
internal_function
|
|
||||||
_nl_find_domain (dirname, locale, domainname, domainbinding)
|
|
||||||
const char *dirname;
|
|
||||||
char *locale;
|
|
||||||
const char *domainname;
|
|
||||||
struct binding *domainbinding;
|
|
||||||
{
|
|
||||||
struct loaded_l10nfile *retval;
|
|
||||||
const char *language;
|
|
||||||
const char *modifier;
|
|
||||||
const char *territory;
|
|
||||||
const char *codeset;
|
|
||||||
const char *normalized_codeset;
|
|
||||||
const char *special;
|
|
||||||
const char *sponsor;
|
|
||||||
const char *revision;
|
|
||||||
const char *alias_value;
|
|
||||||
int mask;
|
|
||||||
|
|
||||||
/* LOCALE can consist of up to four recognized parts for the XPG syntax:
|
|
||||||
|
|
||||||
language[_territory[.codeset]][@modifier]
|
|
||||||
|
|
||||||
and six parts for the CEN syntax:
|
|
||||||
|
|
||||||
language[_territory][+audience][+special][,[sponsor][_revision]]
|
|
||||||
|
|
||||||
Beside the first part all of them are allowed to be missing. If
|
|
||||||
the full specified locale is not found, the less specific one are
|
|
||||||
looked for. The various parts will be stripped off according to
|
|
||||||
the following order:
|
|
||||||
(1) revision
|
|
||||||
(2) sponsor
|
|
||||||
(3) special
|
|
||||||
(4) codeset
|
|
||||||
(5) normalized codeset
|
|
||||||
(6) territory
|
|
||||||
(7) audience/modifier
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* If we have already tested for this locale entry there has to
|
|
||||||
be one data set in the list of loaded domains. */
|
|
||||||
retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
|
|
||||||
strlen (dirname) + 1, 0, locale, NULL, NULL,
|
|
||||||
NULL, NULL, NULL, NULL, NULL, domainname, 0);
|
|
||||||
if (retval != NULL)
|
|
||||||
{
|
|
||||||
/* We know something about this locale. */
|
|
||||||
int cnt;
|
|
||||||
|
|
||||||
if (retval->decided == 0)
|
|
||||||
_nl_load_domain (retval, domainbinding);
|
|
||||||
|
|
||||||
if (retval->data != NULL)
|
|
||||||
return retval;
|
|
||||||
|
|
||||||
for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
|
|
||||||
{
|
|
||||||
if (retval->successor[cnt]->decided == 0)
|
|
||||||
_nl_load_domain (retval->successor[cnt], domainbinding);
|
|
||||||
|
|
||||||
if (retval->successor[cnt]->data != NULL)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return cnt >= 0 ? retval : NULL;
|
|
||||||
/* NOTREACHED */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* See whether the locale value is an alias. If yes its value
|
|
||||||
*overwrites* the alias name. No test for the original value is
|
|
||||||
done. */
|
|
||||||
alias_value = _nl_expand_alias (locale);
|
|
||||||
if (alias_value != NULL)
|
|
||||||
{
|
|
||||||
#if defined _LIBC || defined HAVE_STRDUP
|
|
||||||
locale = strdup (alias_value);
|
|
||||||
if (locale == NULL)
|
|
||||||
return NULL;
|
|
||||||
#else
|
|
||||||
size_t len = strlen (alias_value) + 1;
|
|
||||||
locale = (char *) malloc (len);
|
|
||||||
if (locale == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
memcpy (locale, alias_value, len);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Now we determine the single parts of the locale name. First
|
|
||||||
look for the language. Termination symbols are `_' and `@' if
|
|
||||||
we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */
|
|
||||||
mask = _nl_explode_name (locale, &language, &modifier, &territory,
|
|
||||||
&codeset, &normalized_codeset, &special,
|
|
||||||
&sponsor, &revision);
|
|
||||||
|
|
||||||
/* Create all possible locale entries which might be interested in
|
|
||||||
generalization. */
|
|
||||||
retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname,
|
|
||||||
strlen (dirname) + 1, mask, language, territory,
|
|
||||||
codeset, normalized_codeset, modifier, special,
|
|
||||||
sponsor, revision, domainname, 1);
|
|
||||||
if (retval == NULL)
|
|
||||||
/* This means we are out of core. */
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (retval->decided == 0)
|
|
||||||
_nl_load_domain (retval, domainbinding);
|
|
||||||
if (retval->data == NULL)
|
|
||||||
{
|
|
||||||
int cnt;
|
|
||||||
for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
|
|
||||||
{
|
|
||||||
if (retval->successor[cnt]->decided == 0)
|
|
||||||
_nl_load_domain (retval->successor[cnt], domainbinding);
|
|
||||||
if (retval->successor[cnt]->data != NULL)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The room for an alias was dynamically allocated. Free it now. */
|
|
||||||
if (alias_value != NULL)
|
|
||||||
free (locale);
|
|
||||||
|
|
||||||
/* The space for normalized_codeset is dynamically allocated. Free it. */
|
|
||||||
if (mask & XPG_NORM_CODESET)
|
|
||||||
free ((void *) normalized_codeset);
|
|
||||||
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
static void __attribute__ ((unused))
|
|
||||||
free_mem (void)
|
|
||||||
{
|
|
||||||
struct loaded_l10nfile *runp = _nl_loaded_domains;
|
|
||||||
|
|
||||||
while (runp != NULL)
|
|
||||||
{
|
|
||||||
struct loaded_l10nfile *here = runp;
|
|
||||||
if (runp->data != NULL)
|
|
||||||
_nl_unload_domain ((struct loaded_domain *) runp->data);
|
|
||||||
runp = runp->next;
|
|
||||||
free ((char *) here->filename);
|
|
||||||
free (here);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
text_set_element (__libc_subfreeres, free_mem);
|
|
||||||
#endif
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
/* Implementation of gettext(3) function.
|
|
||||||
Copyright (C) 1995, 1997, 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 Library 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. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
# define __need_NULL
|
|
||||||
# include <stddef.h>
|
|
||||||
#else
|
|
||||||
# include <stdlib.h> /* Just for NULL. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "gettextP.h"
|
|
||||||
#ifdef _LIBC
|
|
||||||
# include <libintl.h>
|
|
||||||
#else
|
|
||||||
# include "libgnuintl.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
/* Names for the libintl functions are a problem. They must not clash
|
|
||||||
with existing names and they should follow ANSI C. But this source
|
|
||||||
code is also used in GNU C Library where the names have a __
|
|
||||||
prefix. So we have to make a difference here. */
|
|
||||||
#ifdef _LIBC
|
|
||||||
# define GETTEXT __gettext
|
|
||||||
# define DCGETTEXT __dcgettext
|
|
||||||
#else
|
|
||||||
# define GETTEXT gettext__
|
|
||||||
# define DCGETTEXT dcgettext__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Look up MSGID in the current default message catalog for the current
|
|
||||||
LC_MESSAGES locale. If not found, returns MSGID itself (the default
|
|
||||||
text). */
|
|
||||||
char *
|
|
||||||
GETTEXT (msgid)
|
|
||||||
const char *msgid;
|
|
||||||
{
|
|
||||||
return DCGETTEXT (NULL, msgid, LC_MESSAGES);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
/* Alias for function name in GNU C Library. */
|
|
||||||
weak_alias (__gettext, gettext);
|
|
||||||
#endif
|
|
||||||
-201
@@ -1,201 +0,0 @@
|
|||||||
/* Header describing internals of libintl library.
|
|
||||||
Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
|
|
||||||
Written by Ulrich Drepper <[email protected]>, 1995.
|
|
||||||
|
|
||||||
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, 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. */
|
|
||||||
|
|
||||||
#ifndef _GETTEXTP_H
|
|
||||||
#define _GETTEXTP_H
|
|
||||||
|
|
||||||
#include <stddef.h> /* Get size_t. */
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
# include "../iconv/gconv_int.h"
|
|
||||||
#else
|
|
||||||
# if HAVE_ICONV
|
|
||||||
# include <iconv.h>
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "loadinfo.h"
|
|
||||||
|
|
||||||
#include "gmo.h" /* Get nls_uint32. */
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
#ifndef PARAMS
|
|
||||||
# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
|
|
||||||
# define PARAMS(args) args
|
|
||||||
# else
|
|
||||||
# define PARAMS(args) ()
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef internal_function
|
|
||||||
# define internal_function
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Tell the compiler when a conditional or integer expression is
|
|
||||||
almost always true or almost always false. */
|
|
||||||
#ifndef HAVE_BUILTIN_EXPECT
|
|
||||||
# define __builtin_expect(expr, val) (expr)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef W
|
|
||||||
# define W(flag, data) ((flag) ? SWAP (data) : (data))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
# include <byteswap.h>
|
|
||||||
# define SWAP(i) bswap_32 (i)
|
|
||||||
#else
|
|
||||||
static inline nls_uint32
|
|
||||||
SWAP (i)
|
|
||||||
nls_uint32 i;
|
|
||||||
{
|
|
||||||
return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* The representation of an opened message catalog. */
|
|
||||||
struct loaded_domain
|
|
||||||
{
|
|
||||||
const char *data;
|
|
||||||
int use_mmap;
|
|
||||||
size_t mmap_size;
|
|
||||||
int must_swap;
|
|
||||||
nls_uint32 nstrings;
|
|
||||||
struct string_desc *orig_tab;
|
|
||||||
struct string_desc *trans_tab;
|
|
||||||
nls_uint32 hash_size;
|
|
||||||
nls_uint32 *hash_tab;
|
|
||||||
int codeset_cntr;
|
|
||||||
#ifdef _LIBC
|
|
||||||
__gconv_t conv;
|
|
||||||
#else
|
|
||||||
# if HAVE_ICONV
|
|
||||||
iconv_t conv;
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
char **conv_tab;
|
|
||||||
|
|
||||||
struct expression *plural;
|
|
||||||
unsigned long int nplurals;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* We want to allocate a string at the end of the struct. But ISO C
|
|
||||||
doesn't allow zero sized arrays. */
|
|
||||||
#ifdef __GNUC__
|
|
||||||
# define ZERO 0
|
|
||||||
#else
|
|
||||||
# define ZERO 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* A set of settings bound to a message domain. Used to store settings
|
|
||||||
from bindtextdomain() and bind_textdomain_codeset(). */
|
|
||||||
struct binding
|
|
||||||
{
|
|
||||||
struct binding *next;
|
|
||||||
char *dirname;
|
|
||||||
int codeset_cntr; /* Incremented each time codeset changes. */
|
|
||||||
char *codeset;
|
|
||||||
char domainname[ZERO];
|
|
||||||
};
|
|
||||||
|
|
||||||
/* A counter which is incremented each time some previous translations
|
|
||||||
become invalid.
|
|
||||||
This variable is part of the external ABI of the GNU libintl. */
|
|
||||||
extern int _nl_msg_cat_cntr;
|
|
||||||
|
|
||||||
#ifndef _LIBC
|
|
||||||
const char *_nl_locale_name PARAMS ((int category, const char *categoryname));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
|
|
||||||
char *__locale,
|
|
||||||
const char *__domainname,
|
|
||||||
struct binding *__domainbinding))
|
|
||||||
internal_function;
|
|
||||||
void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain,
|
|
||||||
struct binding *__domainbinding))
|
|
||||||
internal_function;
|
|
||||||
void _nl_unload_domain PARAMS ((struct loaded_domain *__domain))
|
|
||||||
internal_function;
|
|
||||||
const char *_nl_init_domain_conv PARAMS ((struct loaded_l10nfile *__domain_file,
|
|
||||||
struct loaded_domain *__domain,
|
|
||||||
struct binding *__domainbinding))
|
|
||||||
internal_function;
|
|
||||||
void _nl_free_domain_conv PARAMS ((struct loaded_domain *__domain))
|
|
||||||
internal_function;
|
|
||||||
|
|
||||||
char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file,
|
|
||||||
struct binding *domainbinding,
|
|
||||||
const char *msgid, size_t *lengthp))
|
|
||||||
internal_function;
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
extern char *__gettext PARAMS ((const char *__msgid));
|
|
||||||
extern char *__dgettext PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid));
|
|
||||||
extern char *__dcgettext PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid, int __category));
|
|
||||||
extern char *__ngettext PARAMS ((const char *__msgid1, const char *__msgid2,
|
|
||||||
unsigned long int __n));
|
|
||||||
extern char *__dngettext PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid1, const char *__msgid2,
|
|
||||||
unsigned long int n));
|
|
||||||
extern char *__dcngettext PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid1, const char *__msgid2,
|
|
||||||
unsigned long int __n, int __category));
|
|
||||||
extern char *__dcigettext PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid1, const char *__msgid2,
|
|
||||||
int __plural, unsigned long int __n,
|
|
||||||
int __category));
|
|
||||||
extern char *__textdomain PARAMS ((const char *__domainname));
|
|
||||||
extern char *__bindtextdomain PARAMS ((const char *__domainname,
|
|
||||||
const char *__dirname));
|
|
||||||
extern char *__bind_textdomain_codeset PARAMS ((const char *__domainname,
|
|
||||||
const char *__codeset));
|
|
||||||
#else
|
|
||||||
extern char *gettext__ PARAMS ((const char *__msgid));
|
|
||||||
extern char *dgettext__ PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid));
|
|
||||||
extern char *dcgettext__ PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid, int __category));
|
|
||||||
extern char *ngettext__ PARAMS ((const char *__msgid1, const char *__msgid2,
|
|
||||||
unsigned long int __n));
|
|
||||||
extern char *dngettext__ PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid1, const char *__msgid2,
|
|
||||||
unsigned long int __n));
|
|
||||||
extern char *dcngettext__ PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid1, const char *__msgid2,
|
|
||||||
unsigned long int __n, int __category));
|
|
||||||
extern char *dcigettext__ PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid1, const char *__msgid2,
|
|
||||||
int __plural, unsigned long int __n,
|
|
||||||
int __category));
|
|
||||||
extern char *textdomain__ PARAMS ((const char *__domainname));
|
|
||||||
extern char *bindtextdomain__ PARAMS ((const char *__domainname,
|
|
||||||
const char *__dirname));
|
|
||||||
extern char *bind_textdomain_codeset__ PARAMS ((const char *__domainname,
|
|
||||||
const char *__codeset));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* @@ begin of epilog @@ */
|
|
||||||
|
|
||||||
#endif /* gettextP.h */
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
/* Description of GNU message catalog format: string hashing function.
|
|
||||||
Copyright (C) 1995, 1997, 1998, 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 Library 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. */
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
#ifndef PARAMS
|
|
||||||
# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
|
|
||||||
# define PARAMS(Args) Args
|
|
||||||
# else
|
|
||||||
# define PARAMS(Args) ()
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* We assume to have `unsigned long int' value with at least 32 bits. */
|
|
||||||
#define HASHWORDBITS 32
|
|
||||||
|
|
||||||
|
|
||||||
/* Defines the so called `hashpjw' function by P.J. Weinberger
|
|
||||||
[see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
|
|
||||||
1986, 1987 Bell Telephone Laboratories, Inc.] */
|
|
||||||
static unsigned long int hash_string PARAMS ((const char *__str_param));
|
|
||||||
|
|
||||||
static inline unsigned long int
|
|
||||||
hash_string (str_param)
|
|
||||||
const char *str_param;
|
|
||||||
{
|
|
||||||
unsigned long int hval, g;
|
|
||||||
const char *str = str_param;
|
|
||||||
|
|
||||||
/* Compute the hash value for the given string. */
|
|
||||||
hval = 0;
|
|
||||||
while (*str != '\0')
|
|
||||||
{
|
|
||||||
hval <<= 4;
|
|
||||||
hval += (unsigned long int) *str++;
|
|
||||||
g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
|
|
||||||
if (g != 0)
|
|
||||||
{
|
|
||||||
hval ^= g >> (HASHWORDBITS - 8);
|
|
||||||
hval ^= g;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return hval;
|
|
||||||
}
|
|
||||||
@@ -1,166 +0,0 @@
|
|||||||
/* intl-compat.c - Stub functions to call gettext functions from GNU gettext
|
|
||||||
Library.
|
|
||||||
Copyright (C) 1995, 2000, 2001 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, 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. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "libgnuintl.h"
|
|
||||||
#include "gettextP.h"
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
/* This file redirects the gettext functions (without prefix or suffix) to
|
|
||||||
those defined in the included GNU gettext library (with "__" suffix).
|
|
||||||
It is compiled into libintl when the included GNU gettext library is
|
|
||||||
configured --with-included-gettext.
|
|
||||||
|
|
||||||
This redirection works also in the case that the system C library or
|
|
||||||
the system libintl library contain gettext/textdomain/... functions.
|
|
||||||
If it didn't, we would need to add preprocessor level redirections to
|
|
||||||
libgnuintl.h of the following form:
|
|
||||||
|
|
||||||
# define gettext gettext__
|
|
||||||
# define dgettext dgettext__
|
|
||||||
# define dcgettext dcgettext__
|
|
||||||
# define ngettext ngettext__
|
|
||||||
# define dngettext dngettext__
|
|
||||||
# define dcngettext dcngettext__
|
|
||||||
# define textdomain textdomain__
|
|
||||||
# define bindtextdomain bindtextdomain__
|
|
||||||
# define bind_textdomain_codeset bind_textdomain_codeset__
|
|
||||||
|
|
||||||
How does this redirection work? There are two cases.
|
|
||||||
A. When libintl.a is linked into an executable, it works because
|
|
||||||
functions defined in the executable always override functions in
|
|
||||||
the shared libraries.
|
|
||||||
B. When libintl.so is used, it works because
|
|
||||||
1. those systems defining gettext/textdomain/... in the C library
|
|
||||||
(namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer) are
|
|
||||||
ELF systems and define these symbols as weak, thus explicitly
|
|
||||||
letting other shared libraries override it.
|
|
||||||
2. those systems defining gettext/textdomain/... in a standalone
|
|
||||||
libintl.so library (namely, Solaris 2.3 and newer) have this
|
|
||||||
shared library in /usr/lib, and the linker will search /usr/lib
|
|
||||||
*after* the directory where the GNU gettext library is installed.
|
|
||||||
|
|
||||||
A third case, namely when libintl.a is linked into a shared library
|
|
||||||
whose name is not libintl.so, is not supported. In this case, on
|
|
||||||
Solaris, when -lintl precedes the linker option for the shared library
|
|
||||||
containing GNU gettext, the system's gettext would indeed override
|
|
||||||
the GNU gettext. Anyone doing this kind of stuff must be clever enough
|
|
||||||
to 1. compile libintl.a with -fPIC, 2. remove -lintl from his linker
|
|
||||||
command line. */
|
|
||||||
|
|
||||||
|
|
||||||
#undef gettext
|
|
||||||
#undef dgettext
|
|
||||||
#undef dcgettext
|
|
||||||
#undef ngettext
|
|
||||||
#undef dngettext
|
|
||||||
#undef dcngettext
|
|
||||||
#undef textdomain
|
|
||||||
#undef bindtextdomain
|
|
||||||
#undef bind_textdomain_codeset
|
|
||||||
|
|
||||||
|
|
||||||
char *
|
|
||||||
gettext (msgid)
|
|
||||||
const char *msgid;
|
|
||||||
{
|
|
||||||
return gettext__ (msgid);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
char *
|
|
||||||
dgettext (domainname, msgid)
|
|
||||||
const char *domainname;
|
|
||||||
const char *msgid;
|
|
||||||
{
|
|
||||||
return dgettext__ (domainname, msgid);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
char *
|
|
||||||
dcgettext (domainname, msgid, category)
|
|
||||||
const char *domainname;
|
|
||||||
const char *msgid;
|
|
||||||
int category;
|
|
||||||
{
|
|
||||||
return dcgettext__ (domainname, msgid, category);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
char *
|
|
||||||
ngettext (msgid1, msgid2, n)
|
|
||||||
const char *msgid1;
|
|
||||||
const char *msgid2;
|
|
||||||
unsigned long int n;
|
|
||||||
{
|
|
||||||
return ngettext__ (msgid1, msgid2, n);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
char *
|
|
||||||
dngettext (domainname, msgid1, msgid2, n)
|
|
||||||
const char *domainname;
|
|
||||||
const char *msgid1;
|
|
||||||
const char *msgid2;
|
|
||||||
unsigned long int n;
|
|
||||||
{
|
|
||||||
return dngettext__ (domainname, msgid1, msgid2, n);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
char *
|
|
||||||
dcngettext (domainname, msgid1, msgid2, n, category)
|
|
||||||
const char *domainname;
|
|
||||||
const char *msgid1;
|
|
||||||
const char *msgid2;
|
|
||||||
unsigned long int n;
|
|
||||||
int category;
|
|
||||||
{
|
|
||||||
return dcngettext__ (domainname, msgid1, msgid2, n, category);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
char *
|
|
||||||
textdomain (domainname)
|
|
||||||
const char *domainname;
|
|
||||||
{
|
|
||||||
return textdomain__ (domainname);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
char *
|
|
||||||
bindtextdomain (domainname, dirname)
|
|
||||||
const char *domainname;
|
|
||||||
const char *dirname;
|
|
||||||
{
|
|
||||||
return bindtextdomain__ (domainname, dirname);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
char *
|
|
||||||
bind_textdomain_codeset (domainname, codeset)
|
|
||||||
const char *domainname;
|
|
||||||
const char *codeset;
|
|
||||||
{
|
|
||||||
return bind_textdomain_codeset__ (domainname, codeset);
|
|
||||||
}
|
|
||||||
@@ -1,400 +0,0 @@
|
|||||||
/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
|
|
||||||
Contributed by Ulrich Drepper <[email protected]>, 1995.
|
|
||||||
|
|
||||||
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, 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. */
|
|
||||||
|
|
||||||
/* Tell glibc's <string.h> to provide a prototype for stpcpy().
|
|
||||||
This must come before <config.h> because <config.h> may include
|
|
||||||
<features.h>, and once <features.h> has been included, it's too late. */
|
|
||||||
#ifndef _GNU_SOURCE
|
|
||||||
# define _GNU_SOURCE 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#if defined _LIBC || defined HAVE_ARGZ_H
|
|
||||||
# include <argz.h>
|
|
||||||
#endif
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
#include "loadinfo.h"
|
|
||||||
|
|
||||||
/* On some strange systems still no definition of NULL is found. Sigh! */
|
|
||||||
#ifndef NULL
|
|
||||||
# if defined __STDC__ && __STDC__
|
|
||||||
# define NULL ((void *) 0)
|
|
||||||
# else
|
|
||||||
# define NULL 0
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
/* Rename the non ANSI C functions. This is required by the standard
|
|
||||||
because some ANSI C functions will require linking with this object
|
|
||||||
file and the name space must not be polluted. */
|
|
||||||
# ifndef stpcpy
|
|
||||||
# define stpcpy(dest, src) __stpcpy(dest, src)
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# ifndef HAVE_STPCPY
|
|
||||||
static char *stpcpy PARAMS ((char *dest, const char *src));
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define function which are usually not available. */
|
|
||||||
|
|
||||||
#if !defined _LIBC && !defined HAVE___ARGZ_COUNT
|
|
||||||
/* Returns the number of strings in ARGZ. */
|
|
||||||
static size_t argz_count__ PARAMS ((const char *argz, size_t len));
|
|
||||||
|
|
||||||
static size_t
|
|
||||||
argz_count__ (argz, len)
|
|
||||||
const char *argz;
|
|
||||||
size_t len;
|
|
||||||
{
|
|
||||||
size_t count = 0;
|
|
||||||
while (len > 0)
|
|
||||||
{
|
|
||||||
size_t part_len = strlen (argz);
|
|
||||||
argz += part_len + 1;
|
|
||||||
len -= part_len + 1;
|
|
||||||
count++;
|
|
||||||
}
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
# undef __argz_count
|
|
||||||
# define __argz_count(argz, len) argz_count__ (argz, len)
|
|
||||||
#endif /* !_LIBC && !HAVE___ARGZ_COUNT */
|
|
||||||
|
|
||||||
#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY
|
|
||||||
/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's
|
|
||||||
except the last into the character SEP. */
|
|
||||||
static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep));
|
|
||||||
|
|
||||||
static void
|
|
||||||
argz_stringify__ (argz, len, sep)
|
|
||||||
char *argz;
|
|
||||||
size_t len;
|
|
||||||
int sep;
|
|
||||||
{
|
|
||||||
while (len > 0)
|
|
||||||
{
|
|
||||||
size_t part_len = strlen (argz);
|
|
||||||
argz += part_len;
|
|
||||||
len -= part_len + 1;
|
|
||||||
if (len > 0)
|
|
||||||
*argz++ = sep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
# undef __argz_stringify
|
|
||||||
# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep)
|
|
||||||
#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */
|
|
||||||
|
|
||||||
#if !defined _LIBC && !defined HAVE___ARGZ_NEXT
|
|
||||||
static char *argz_next__ PARAMS ((char *argz, size_t argz_len,
|
|
||||||
const char *entry));
|
|
||||||
|
|
||||||
static char *
|
|
||||||
argz_next__ (argz, argz_len, entry)
|
|
||||||
char *argz;
|
|
||||||
size_t argz_len;
|
|
||||||
const char *entry;
|
|
||||||
{
|
|
||||||
if (entry)
|
|
||||||
{
|
|
||||||
if (entry < argz + argz_len)
|
|
||||||
entry = strchr (entry, '\0') + 1;
|
|
||||||
|
|
||||||
return entry >= argz + argz_len ? NULL : (char *) entry;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (argz_len > 0)
|
|
||||||
return argz;
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
# undef __argz_next
|
|
||||||
# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry)
|
|
||||||
#endif /* !_LIBC && !HAVE___ARGZ_NEXT */
|
|
||||||
|
|
||||||
|
|
||||||
/* Return number of bits set in X. */
|
|
||||||
static int pop PARAMS ((int x));
|
|
||||||
|
|
||||||
static inline int
|
|
||||||
pop (x)
|
|
||||||
int x;
|
|
||||||
{
|
|
||||||
/* We assume that no more than 16 bits are used. */
|
|
||||||
x = ((x & ~0x5555) >> 1) + (x & 0x5555);
|
|
||||||
x = ((x & ~0x3333) >> 2) + (x & 0x3333);
|
|
||||||
x = ((x >> 4) + x) & 0x0f0f;
|
|
||||||
x = ((x >> 8) + x) & 0xff;
|
|
||||||
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
struct loaded_l10nfile *
|
|
||||||
_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language,
|
|
||||||
territory, codeset, normalized_codeset, modifier, special,
|
|
||||||
sponsor, revision, filename, do_allocate)
|
|
||||||
struct loaded_l10nfile **l10nfile_list;
|
|
||||||
const char *dirlist;
|
|
||||||
size_t dirlist_len;
|
|
||||||
int mask;
|
|
||||||
const char *language;
|
|
||||||
const char *territory;
|
|
||||||
const char *codeset;
|
|
||||||
const char *normalized_codeset;
|
|
||||||
const char *modifier;
|
|
||||||
const char *special;
|
|
||||||
const char *sponsor;
|
|
||||||
const char *revision;
|
|
||||||
const char *filename;
|
|
||||||
int do_allocate;
|
|
||||||
{
|
|
||||||
char *abs_filename;
|
|
||||||
struct loaded_l10nfile *last = NULL;
|
|
||||||
struct loaded_l10nfile *retval;
|
|
||||||
char *cp;
|
|
||||||
size_t entries;
|
|
||||||
int cnt;
|
|
||||||
|
|
||||||
/* Allocate room for the full file name. */
|
|
||||||
abs_filename = (char *) malloc (dirlist_len
|
|
||||||
+ strlen (language)
|
|
||||||
+ ((mask & TERRITORY) != 0
|
|
||||||
? strlen (territory) + 1 : 0)
|
|
||||||
+ ((mask & XPG_CODESET) != 0
|
|
||||||
? strlen (codeset) + 1 : 0)
|
|
||||||
+ ((mask & XPG_NORM_CODESET) != 0
|
|
||||||
? strlen (normalized_codeset) + 1 : 0)
|
|
||||||
+ (((mask & XPG_MODIFIER) != 0
|
|
||||||
|| (mask & CEN_AUDIENCE) != 0)
|
|
||||||
? strlen (modifier) + 1 : 0)
|
|
||||||
+ ((mask & CEN_SPECIAL) != 0
|
|
||||||
? strlen (special) + 1 : 0)
|
|
||||||
+ (((mask & CEN_SPONSOR) != 0
|
|
||||||
|| (mask & CEN_REVISION) != 0)
|
|
||||||
? (1 + ((mask & CEN_SPONSOR) != 0
|
|
||||||
? strlen (sponsor) + 1 : 0)
|
|
||||||
+ ((mask & CEN_REVISION) != 0
|
|
||||||
? strlen (revision) + 1 : 0)) : 0)
|
|
||||||
+ 1 + strlen (filename) + 1);
|
|
||||||
|
|
||||||
if (abs_filename == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
retval = NULL;
|
|
||||||
last = NULL;
|
|
||||||
|
|
||||||
/* Construct file name. */
|
|
||||||
memcpy (abs_filename, dirlist, dirlist_len);
|
|
||||||
__argz_stringify (abs_filename, dirlist_len, PATH_SEPARATOR);
|
|
||||||
cp = abs_filename + (dirlist_len - 1);
|
|
||||||
*cp++ = '/';
|
|
||||||
cp = stpcpy (cp, language);
|
|
||||||
|
|
||||||
if ((mask & TERRITORY) != 0)
|
|
||||||
{
|
|
||||||
*cp++ = '_';
|
|
||||||
cp = stpcpy (cp, territory);
|
|
||||||
}
|
|
||||||
if ((mask & XPG_CODESET) != 0)
|
|
||||||
{
|
|
||||||
*cp++ = '.';
|
|
||||||
cp = stpcpy (cp, codeset);
|
|
||||||
}
|
|
||||||
if ((mask & XPG_NORM_CODESET) != 0)
|
|
||||||
{
|
|
||||||
*cp++ = '.';
|
|
||||||
cp = stpcpy (cp, normalized_codeset);
|
|
||||||
}
|
|
||||||
if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0)
|
|
||||||
{
|
|
||||||
/* This component can be part of both syntaces but has different
|
|
||||||
leading characters. For CEN we use `+', else `@'. */
|
|
||||||
*cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@';
|
|
||||||
cp = stpcpy (cp, modifier);
|
|
||||||
}
|
|
||||||
if ((mask & CEN_SPECIAL) != 0)
|
|
||||||
{
|
|
||||||
*cp++ = '+';
|
|
||||||
cp = stpcpy (cp, special);
|
|
||||||
}
|
|
||||||
if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0)
|
|
||||||
{
|
|
||||||
*cp++ = ',';
|
|
||||||
if ((mask & CEN_SPONSOR) != 0)
|
|
||||||
cp = stpcpy (cp, sponsor);
|
|
||||||
if ((mask & CEN_REVISION) != 0)
|
|
||||||
{
|
|
||||||
*cp++ = '_';
|
|
||||||
cp = stpcpy (cp, revision);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*cp++ = '/';
|
|
||||||
stpcpy (cp, filename);
|
|
||||||
|
|
||||||
/* Look in list of already loaded domains whether it is already
|
|
||||||
available. */
|
|
||||||
last = NULL;
|
|
||||||
for (retval = *l10nfile_list; retval != NULL; retval = retval->next)
|
|
||||||
if (retval->filename != NULL)
|
|
||||||
{
|
|
||||||
int compare = strcmp (retval->filename, abs_filename);
|
|
||||||
if (compare == 0)
|
|
||||||
/* We found it! */
|
|
||||||
break;
|
|
||||||
if (compare < 0)
|
|
||||||
{
|
|
||||||
/* It's not in the list. */
|
|
||||||
retval = NULL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
last = retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (retval != NULL || do_allocate == 0)
|
|
||||||
{
|
|
||||||
free (abs_filename);
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
retval = (struct loaded_l10nfile *)
|
|
||||||
malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len)
|
|
||||||
* (1 << pop (mask))
|
|
||||||
* sizeof (struct loaded_l10nfile *)));
|
|
||||||
if (retval == NULL)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
retval->filename = abs_filename;
|
|
||||||
retval->decided = (__argz_count (dirlist, dirlist_len) != 1
|
|
||||||
|| ((mask & XPG_CODESET) != 0
|
|
||||||
&& (mask & XPG_NORM_CODESET) != 0));
|
|
||||||
retval->data = NULL;
|
|
||||||
|
|
||||||
if (last == NULL)
|
|
||||||
{
|
|
||||||
retval->next = *l10nfile_list;
|
|
||||||
*l10nfile_list = retval;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
retval->next = last->next;
|
|
||||||
last->next = retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
entries = 0;
|
|
||||||
/* If the DIRLIST is a real list the RETVAL entry corresponds not to
|
|
||||||
a real file. So we have to use the DIRLIST separation mechanism
|
|
||||||
of the inner loop. */
|
|
||||||
cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask;
|
|
||||||
for (; cnt >= 0; --cnt)
|
|
||||||
if ((cnt & ~mask) == 0
|
|
||||||
&& ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)
|
|
||||||
&& ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0))
|
|
||||||
{
|
|
||||||
/* Iterate over all elements of the DIRLIST. */
|
|
||||||
char *dir = NULL;
|
|
||||||
|
|
||||||
while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir))
|
|
||||||
!= NULL)
|
|
||||||
retval->successor[entries++]
|
|
||||||
= _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt,
|
|
||||||
language, territory, codeset,
|
|
||||||
normalized_codeset, modifier, special,
|
|
||||||
sponsor, revision, filename, 1);
|
|
||||||
}
|
|
||||||
retval->successor[entries] = NULL;
|
|
||||||
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Normalize codeset name. There is no standard for the codeset
|
|
||||||
names. Normalization allows the user to use any of the common
|
|
||||||
names. The return value is dynamically allocated and has to be
|
|
||||||
freed by the caller. */
|
|
||||||
const char *
|
|
||||||
_nl_normalize_codeset (codeset, name_len)
|
|
||||||
const char *codeset;
|
|
||||||
size_t name_len;
|
|
||||||
{
|
|
||||||
int len = 0;
|
|
||||||
int only_digit = 1;
|
|
||||||
char *retval;
|
|
||||||
char *wp;
|
|
||||||
size_t cnt;
|
|
||||||
|
|
||||||
for (cnt = 0; cnt < name_len; ++cnt)
|
|
||||||
if (isalnum ((unsigned char) codeset[cnt]))
|
|
||||||
{
|
|
||||||
++len;
|
|
||||||
|
|
||||||
if (isalpha ((unsigned char) codeset[cnt]))
|
|
||||||
only_digit = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1);
|
|
||||||
|
|
||||||
if (retval != NULL)
|
|
||||||
{
|
|
||||||
if (only_digit)
|
|
||||||
wp = stpcpy (retval, "iso");
|
|
||||||
else
|
|
||||||
wp = retval;
|
|
||||||
|
|
||||||
for (cnt = 0; cnt < name_len; ++cnt)
|
|
||||||
if (isalpha ((unsigned char) codeset[cnt]))
|
|
||||||
*wp++ = tolower ((unsigned char) codeset[cnt]);
|
|
||||||
else if (isdigit ((unsigned char) codeset[cnt]))
|
|
||||||
*wp++ = codeset[cnt];
|
|
||||||
|
|
||||||
*wp = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
return (const char *) retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* @@ begin of epilog @@ */
|
|
||||||
|
|
||||||
/* We don't want libintl.a to depend on any other library. So we
|
|
||||||
avoid the non-standard function stpcpy. In GNU C Library this
|
|
||||||
function is available, though. Also allow the symbol HAVE_STPCPY
|
|
||||||
to be defined. */
|
|
||||||
#if !_LIBC && !HAVE_STPCPY
|
|
||||||
static char *
|
|
||||||
stpcpy (dest, src)
|
|
||||||
char *dest;
|
|
||||||
const char *src;
|
|
||||||
{
|
|
||||||
while ((*dest++ = *src++) != '\0')
|
|
||||||
/* Do nothing. */ ;
|
|
||||||
return dest - 1;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
/* Convenience header for conditional use of GNU <libintl.h>.
|
|
||||||
Copyright (C) 1995-1998, 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 Library 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. */
|
|
||||||
|
|
||||||
#ifndef _LIBGETTEXT_H
|
|
||||||
#define _LIBGETTEXT_H 1
|
|
||||||
|
|
||||||
/* NLS can be disabled through the configure --disable-nls option. */
|
|
||||||
#if ENABLE_NLS
|
|
||||||
|
|
||||||
/* Get declarations of GNU message catalog functions. */
|
|
||||||
# include <libintl.h>
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
# define gettext(Msgid) (Msgid)
|
|
||||||
# define dgettext(Domainname, Msgid) (Msgid)
|
|
||||||
# define dcgettext(Domainname, Msgid, Category) (Msgid)
|
|
||||||
# define ngettext(Msgid1, Msgid2, N) \
|
|
||||||
((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2))
|
|
||||||
# define dngettext(Domainname, Msgid1, Msgid2, N) \
|
|
||||||
((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2))
|
|
||||||
# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
|
|
||||||
((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2))
|
|
||||||
# define textdomain(Domainname) ((char *) (Domainname))
|
|
||||||
# define bindtextdomain(Domainname, Dirname) ((char *) (Dirname))
|
|
||||||
# define bind_textdomain_codeset(Domainname, Codeset) ((char *) (Codeset))
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* For automatical extraction of messages sometimes no real
|
|
||||||
translation is needed. Instead the string itself is the result. */
|
|
||||||
#define gettext_noop(Str) (Str)
|
|
||||||
|
|
||||||
#endif /* _LIBGETTEXT_H */
|
|
||||||
@@ -1,137 +0,0 @@
|
|||||||
/* Message catalogs for internationalization.
|
|
||||||
Copyright (C) 1995-1997, 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 Library 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. */
|
|
||||||
|
|
||||||
#ifndef _LIBINTL_H
|
|
||||||
#define _LIBINTL_H 1
|
|
||||||
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
/* The LC_MESSAGES locale category is the category used by the functions
|
|
||||||
gettext() and dgettext(). It is specified in POSIX, but not in ANSI C.
|
|
||||||
On systems that don't define it, use an arbitrary value instead.
|
|
||||||
On Solaris, <locale.h> defines __LOCALE_H then includes <libintl.h> (i.e.
|
|
||||||
this file!) and then only defines LC_MESSAGES. To avoid a redefinition
|
|
||||||
warning, don't define LC_MESSAGES in this case. */
|
|
||||||
#if !defined LC_MESSAGES && !defined __LOCALE_H
|
|
||||||
# define LC_MESSAGES 1729
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* We define an additional symbol to signal that we use the GNU
|
|
||||||
implementation of gettext. */
|
|
||||||
#define __USE_GNU_GETTEXT 1
|
|
||||||
|
|
||||||
/* Resolve a platform specific conflict on DJGPP. GNU gettext takes
|
|
||||||
precedence over _conio_gettext. */
|
|
||||||
#ifdef __DJGPP__
|
|
||||||
# undef gettext
|
|
||||||
# define gettext gettext
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Use _INTL_PARAMS, not PARAMS, in order to avoid clashes with identifiers
|
|
||||||
used by programs. Similarly, test __PROTOTYPES, not PROTOTYPES. */
|
|
||||||
#ifndef _INTL_PARAMS
|
|
||||||
# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
|
|
||||||
# define _INTL_PARAMS(args) args
|
|
||||||
# else
|
|
||||||
# define _INTL_PARAMS(args) ()
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Look up MSGID in the current default message catalog for the current
|
|
||||||
LC_MESSAGES locale. If not found, returns MSGID itself (the default
|
|
||||||
text). */
|
|
||||||
extern char *gettext _INTL_PARAMS ((const char *__msgid));
|
|
||||||
|
|
||||||
/* Look up MSGID in the DOMAINNAME message catalog for the current
|
|
||||||
LC_MESSAGES locale. */
|
|
||||||
extern char *dgettext _INTL_PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid));
|
|
||||||
|
|
||||||
/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
|
|
||||||
locale. */
|
|
||||||
extern char *dcgettext _INTL_PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid,
|
|
||||||
int __category));
|
|
||||||
|
|
||||||
|
|
||||||
/* Similar to `gettext' but select the plural form corresponding to the
|
|
||||||
number N. */
|
|
||||||
extern char *ngettext _INTL_PARAMS ((const char *__msgid1,
|
|
||||||
const char *__msgid2,
|
|
||||||
unsigned long int __n));
|
|
||||||
|
|
||||||
/* Similar to `dgettext' but select the plural form corresponding to the
|
|
||||||
number N. */
|
|
||||||
extern char *dngettext _INTL_PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid1,
|
|
||||||
const char *__msgid2,
|
|
||||||
unsigned long int __n));
|
|
||||||
|
|
||||||
/* Similar to `dcgettext' but select the plural form corresponding to the
|
|
||||||
number N. */
|
|
||||||
extern char *dcngettext _INTL_PARAMS ((const char *__domainname,
|
|
||||||
const char *__msgid1,
|
|
||||||
const char *__msgid2,
|
|
||||||
unsigned long int __n,
|
|
||||||
int __category));
|
|
||||||
|
|
||||||
|
|
||||||
/* Set the current default message catalog to DOMAINNAME.
|
|
||||||
If DOMAINNAME is null, return the current default.
|
|
||||||
If DOMAINNAME is "", reset to the default of "messages". */
|
|
||||||
extern char *textdomain _INTL_PARAMS ((const char *__domainname));
|
|
||||||
|
|
||||||
/* Specify that the DOMAINNAME message catalog will be found
|
|
||||||
in DIRNAME rather than in the system locale data base. */
|
|
||||||
extern char *bindtextdomain _INTL_PARAMS ((const char *__domainname,
|
|
||||||
const char *__dirname));
|
|
||||||
|
|
||||||
/* Specify the character encoding in which the messages from the
|
|
||||||
DOMAINNAME message catalog will be returned. */
|
|
||||||
extern char *bind_textdomain_codeset _INTL_PARAMS ((const char *__domainname,
|
|
||||||
const char *__codeset));
|
|
||||||
|
|
||||||
|
|
||||||
/* Optimized version of the functions above. */
|
|
||||||
#if defined __OPTIMIZED
|
|
||||||
/* These are macros, but could also be inline functions. */
|
|
||||||
|
|
||||||
# define gettext(msgid) \
|
|
||||||
dgettext (NULL, msgid)
|
|
||||||
|
|
||||||
# define dgettext(domainname, msgid) \
|
|
||||||
dcgettext (domainname, msgid, LC_MESSAGES)
|
|
||||||
|
|
||||||
# define ngettext(msgid1, msgid2, n) \
|
|
||||||
dngettext (NULL, msgid1, msgid2, n)
|
|
||||||
|
|
||||||
# define dngettext(domainname, msgid1, msgid2, n) \
|
|
||||||
dcngettext (domainname, msgid1, msgid2, n, LC_MESSAGES)
|
|
||||||
|
|
||||||
#endif /* Optimizing. */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* libintl.h */
|
|
||||||
-121
@@ -1,121 +0,0 @@
|
|||||||
/* Copyright (C) 1996-1999, 2000, 2001 Free Software Foundation, Inc.
|
|
||||||
This file is part of the GNU C Library.
|
|
||||||
Contributed by Ulrich Drepper <[email protected]>, 1996.
|
|
||||||
|
|
||||||
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, 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. */
|
|
||||||
|
|
||||||
#ifndef _LOADINFO_H
|
|
||||||
#define _LOADINFO_H 1
|
|
||||||
|
|
||||||
/* Declarations of locale dependent catalog lookup functions.
|
|
||||||
Implemented in
|
|
||||||
|
|
||||||
localealias.c Possibly replace a locale name by another.
|
|
||||||
explodename.c Split a locale name into its various fields.
|
|
||||||
l10nflist.c Generate a list of filenames of possible message catalogs.
|
|
||||||
finddomain.c Find and open the relevant message catalogs.
|
|
||||||
|
|
||||||
The main function _nl_find_domain() in finddomain.c is declared
|
|
||||||
in gettextP.h.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef PARAMS
|
|
||||||
# if __STDC__ || defined __GNUC__ || defined __SUNPRO_C || defined __cplusplus || __PROTOTYPES
|
|
||||||
# define PARAMS(args) args
|
|
||||||
# else
|
|
||||||
# define PARAMS(args) ()
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef internal_function
|
|
||||||
# define internal_function
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Tell the compiler when a conditional or integer expression is
|
|
||||||
almost always true or almost always false. */
|
|
||||||
#ifndef HAVE_BUILTIN_EXPECT
|
|
||||||
# define __builtin_expect(expr, val) (expr)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Separator in PATH like lists of pathnames. */
|
|
||||||
#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
|
|
||||||
/* Win32, OS/2, DOS */
|
|
||||||
# define PATH_SEPARATOR ';'
|
|
||||||
#else
|
|
||||||
/* Unix */
|
|
||||||
# define PATH_SEPARATOR ':'
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Encoding of locale name parts. */
|
|
||||||
#define CEN_REVISION 1
|
|
||||||
#define CEN_SPONSOR 2
|
|
||||||
#define CEN_SPECIAL 4
|
|
||||||
#define XPG_NORM_CODESET 8
|
|
||||||
#define XPG_CODESET 16
|
|
||||||
#define TERRITORY 32
|
|
||||||
#define CEN_AUDIENCE 64
|
|
||||||
#define XPG_MODIFIER 128
|
|
||||||
|
|
||||||
#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE)
|
|
||||||
#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER)
|
|
||||||
|
|
||||||
|
|
||||||
struct loaded_l10nfile
|
|
||||||
{
|
|
||||||
const char *filename;
|
|
||||||
int decided;
|
|
||||||
|
|
||||||
const void *data;
|
|
||||||
|
|
||||||
struct loaded_l10nfile *next;
|
|
||||||
struct loaded_l10nfile *successor[1];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/* Normalize codeset name. There is no standard for the codeset
|
|
||||||
names. Normalization allows the user to use any of the common
|
|
||||||
names. The return value is dynamically allocated and has to be
|
|
||||||
freed by the caller. */
|
|
||||||
extern const char *_nl_normalize_codeset PARAMS ((const char *codeset,
|
|
||||||
size_t name_len));
|
|
||||||
|
|
||||||
extern struct loaded_l10nfile *
|
|
||||||
_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list,
|
|
||||||
const char *dirlist, size_t dirlist_len, int mask,
|
|
||||||
const char *language, const char *territory,
|
|
||||||
const char *codeset,
|
|
||||||
const char *normalized_codeset,
|
|
||||||
const char *modifier, const char *special,
|
|
||||||
const char *sponsor, const char *revision,
|
|
||||||
const char *filename, int do_allocate));
|
|
||||||
|
|
||||||
|
|
||||||
extern const char *_nl_expand_alias PARAMS ((const char *name));
|
|
||||||
|
|
||||||
/* normalized_codeset is dynamically allocated and has to be freed by
|
|
||||||
the caller. */
|
|
||||||
extern int _nl_explode_name PARAMS ((char *name, const char **language,
|
|
||||||
const char **modifier,
|
|
||||||
const char **territory,
|
|
||||||
const char **codeset,
|
|
||||||
const char **normalized_codeset,
|
|
||||||
const char **special,
|
|
||||||
const char **sponsor,
|
|
||||||
const char **revision));
|
|
||||||
|
|
||||||
extern char *_nl_find_language PARAMS ((const char *name));
|
|
||||||
|
|
||||||
#endif /* loadinfo.h */
|
|
||||||
@@ -1,445 +0,0 @@
|
|||||||
/* Load needed message catalogs.
|
|
||||||
Copyright (C) 1995-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 Library 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. */
|
|
||||||
|
|
||||||
/* Tell glibc's <string.h> to provide a prototype for mempcpy().
|
|
||||||
This must come before <config.h> because <config.h> may include
|
|
||||||
<features.h>, and once <features.h> has been included, it's too late. */
|
|
||||||
#ifndef _GNU_SOURCE
|
|
||||||
# define _GNU_SOURCE 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
# define alloca __builtin_alloca
|
|
||||||
# define HAVE_ALLOCA 1
|
|
||||||
#else
|
|
||||||
# if defined HAVE_ALLOCA_H || defined _LIBC
|
|
||||||
# include <alloca.h>
|
|
||||||
# else
|
|
||||||
# ifdef _AIX
|
|
||||||
#pragma alloca
|
|
||||||
# else
|
|
||||||
# ifndef alloca
|
|
||||||
char *alloca ();
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#if defined HAVE_UNISTD_H || defined _LIBC
|
|
||||||
# include <unistd.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
# include <langinfo.h>
|
|
||||||
# include <locale.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
|
|
||||||
|| (defined _LIBC && defined _POSIX_MAPPED_FILES)
|
|
||||||
# include <sys/mman.h>
|
|
||||||
# undef HAVE_MMAP
|
|
||||||
# define HAVE_MMAP 1
|
|
||||||
#else
|
|
||||||
# undef HAVE_MMAP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "gmo.h"
|
|
||||||
#include "gettextP.h"
|
|
||||||
#include "plural-exp.h"
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
# include "../locale/localeinfo.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
/* Rename the non ISO C functions. This is required by the standard
|
|
||||||
because some ISO C functions will require linking with this object
|
|
||||||
file and the name space must not be polluted. */
|
|
||||||
# define open __open
|
|
||||||
# define close __close
|
|
||||||
# define read __read
|
|
||||||
# define mmap __mmap
|
|
||||||
# define munmap __munmap
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* For those losing systems which don't have `alloca' we have to add
|
|
||||||
some additional code emulating it. */
|
|
||||||
#ifdef HAVE_ALLOCA
|
|
||||||
# define freea(p) /* nothing */
|
|
||||||
#else
|
|
||||||
# define alloca(n) malloc (n)
|
|
||||||
# define freea(p) free (p)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* For systems that distinguish between text and binary I/O.
|
|
||||||
O_BINARY is usually declared in <fcntl.h>. */
|
|
||||||
#if !defined O_BINARY && defined _O_BINARY
|
|
||||||
/* For MSC-compatible compilers. */
|
|
||||||
# define O_BINARY _O_BINARY
|
|
||||||
# define O_TEXT _O_TEXT
|
|
||||||
#endif
|
|
||||||
#ifdef __BEOS__
|
|
||||||
/* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */
|
|
||||||
# undef O_BINARY
|
|
||||||
# undef O_TEXT
|
|
||||||
#endif
|
|
||||||
/* On reasonable systems, binary I/O is the default. */
|
|
||||||
#ifndef O_BINARY
|
|
||||||
# define O_BINARY 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* We need a sign, whether a new catalog was loaded, which can be associated
|
|
||||||
with all translations. This is important if the translations are
|
|
||||||
cached by one of GCC's features. */
|
|
||||||
int _nl_msg_cat_cntr;
|
|
||||||
|
|
||||||
|
|
||||||
/* Initialize the codeset dependent parts of an opened message catalog.
|
|
||||||
Return the header entry. */
|
|
||||||
const char *
|
|
||||||
internal_function
|
|
||||||
_nl_init_domain_conv (domain_file, domain, domainbinding)
|
|
||||||
struct loaded_l10nfile *domain_file;
|
|
||||||
struct loaded_domain *domain;
|
|
||||||
struct binding *domainbinding;
|
|
||||||
{
|
|
||||||
/* Find out about the character set the file is encoded with.
|
|
||||||
This can be found (in textual form) in the entry "". If this
|
|
||||||
entry does not exist or if this does not contain the `charset='
|
|
||||||
information, we will assume the charset matches the one the
|
|
||||||
current locale and we don't have to perform any conversion. */
|
|
||||||
char *nullentry;
|
|
||||||
size_t nullentrylen;
|
|
||||||
|
|
||||||
/* Preinitialize fields, to avoid recursion during _nl_find_msg. */
|
|
||||||
domain->codeset_cntr =
|
|
||||||
(domainbinding != NULL ? domainbinding->codeset_cntr : 0);
|
|
||||||
#ifdef _LIBC
|
|
||||||
domain->conv = (__gconv_t) -1;
|
|
||||||
#else
|
|
||||||
# if HAVE_ICONV
|
|
||||||
domain->conv = (iconv_t) -1;
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
domain->conv_tab = NULL;
|
|
||||||
|
|
||||||
/* Get the header entry. */
|
|
||||||
nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen);
|
|
||||||
|
|
||||||
if (nullentry != NULL)
|
|
||||||
{
|
|
||||||
#if defined _LIBC || HAVE_ICONV
|
|
||||||
const char *charsetstr;
|
|
||||||
|
|
||||||
charsetstr = strstr (nullentry, "charset=");
|
|
||||||
if (charsetstr != NULL)
|
|
||||||
{
|
|
||||||
size_t len;
|
|
||||||
char *charset;
|
|
||||||
const char *outcharset;
|
|
||||||
|
|
||||||
charsetstr += strlen ("charset=");
|
|
||||||
len = strcspn (charsetstr, " \t\n");
|
|
||||||
|
|
||||||
charset = (char *) alloca (len + 1);
|
|
||||||
# if defined _LIBC || HAVE_MEMPCPY
|
|
||||||
*((char *) mempcpy (charset, charsetstr, len)) = '\0';
|
|
||||||
# else
|
|
||||||
memcpy (charset, charsetstr, len);
|
|
||||||
charset[len] = '\0';
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* The output charset should normally be determined by the
|
|
||||||
locale. But sometimes the locale is not used or not correctly
|
|
||||||
set up, so we provide a possibility for the user to override
|
|
||||||
this. Moreover, the value specified through
|
|
||||||
bind_textdomain_codeset overrides both. */
|
|
||||||
if (domainbinding != NULL && domainbinding->codeset != NULL)
|
|
||||||
outcharset = domainbinding->codeset;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
outcharset = getenv ("OUTPUT_CHARSET");
|
|
||||||
if (outcharset == NULL || outcharset[0] == '\0')
|
|
||||||
{
|
|
||||||
# ifdef _LIBC
|
|
||||||
outcharset = (*_nl_current[LC_CTYPE])->values[_NL_ITEM_INDEX (CODESET)].string;
|
|
||||||
# else
|
|
||||||
# if HAVE_ICONV
|
|
||||||
extern const char *locale_charset PARAMS ((void));
|
|
||||||
outcharset = locale_charset ();
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# ifdef _LIBC
|
|
||||||
/* We always want to use transliteration. */
|
|
||||||
outcharset = norm_add_slashes (outcharset, "TRANSLIT");
|
|
||||||
charset = norm_add_slashes (charset, NULL);
|
|
||||||
if (__gconv_open (outcharset, charset, &domain->conv,
|
|
||||||
GCONV_AVOID_NOCONV)
|
|
||||||
!= __GCONV_OK)
|
|
||||||
domain->conv = (__gconv_t) -1;
|
|
||||||
# else
|
|
||||||
# if HAVE_ICONV
|
|
||||||
/* When using GNU libc >= 2.2 or GNU libiconv >= 1.5,
|
|
||||||
we want to use transliteration. */
|
|
||||||
# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \
|
|
||||||
|| _LIBICONV_VERSION >= 0x0105
|
|
||||||
len = strlen (outcharset);
|
|
||||||
{
|
|
||||||
char *tmp = (char *) alloca (len + 10 + 1);
|
|
||||||
memcpy (tmp, outcharset, len);
|
|
||||||
memcpy (tmp + len, "//TRANSLIT", 10 + 1);
|
|
||||||
outcharset = tmp;
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
domain->conv = iconv_open (outcharset, charset);
|
|
||||||
# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \
|
|
||||||
|| _LIBICONV_VERSION >= 0x0105
|
|
||||||
freea (outcharset);
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
|
|
||||||
freea (charset);
|
|
||||||
}
|
|
||||||
#endif /* _LIBC || HAVE_ICONV */
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullentry;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Frees the codeset dependent parts of an opened message catalog. */
|
|
||||||
void
|
|
||||||
internal_function
|
|
||||||
_nl_free_domain_conv (domain)
|
|
||||||
struct loaded_domain *domain;
|
|
||||||
{
|
|
||||||
if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1)
|
|
||||||
free (domain->conv_tab);
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
if (domain->conv != (__gconv_t) -1)
|
|
||||||
__gconv_close (domain->conv);
|
|
||||||
#else
|
|
||||||
# if HAVE_ICONV
|
|
||||||
if (domain->conv != (iconv_t) -1)
|
|
||||||
iconv_close (domain->conv);
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Load the message catalogs specified by FILENAME. If it is no valid
|
|
||||||
message catalog do nothing. */
|
|
||||||
void
|
|
||||||
internal_function
|
|
||||||
_nl_load_domain (domain_file, domainbinding)
|
|
||||||
struct loaded_l10nfile *domain_file;
|
|
||||||
struct binding *domainbinding;
|
|
||||||
{
|
|
||||||
int fd;
|
|
||||||
size_t size;
|
|
||||||
#ifdef _LIBC
|
|
||||||
struct stat64 st;
|
|
||||||
#else
|
|
||||||
struct stat st;
|
|
||||||
#endif
|
|
||||||
struct mo_file_header *data = (struct mo_file_header *) -1;
|
|
||||||
int use_mmap = 0;
|
|
||||||
struct loaded_domain *domain;
|
|
||||||
const char *nullentry;
|
|
||||||
|
|
||||||
domain_file->decided = 1;
|
|
||||||
domain_file->data = NULL;
|
|
||||||
|
|
||||||
/* Note that it would be useless to store domainbinding in domain_file
|
|
||||||
because domainbinding might be == NULL now but != NULL later (after
|
|
||||||
a call to bind_textdomain_codeset). */
|
|
||||||
|
|
||||||
/* If the record does not represent a valid locale the FILENAME
|
|
||||||
might be NULL. This can happen when according to the given
|
|
||||||
specification the locale file name is different for XPG and CEN
|
|
||||||
syntax. */
|
|
||||||
if (domain_file->filename == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Try to open the addressed file. */
|
|
||||||
fd = open (domain_file->filename, O_RDONLY | O_BINARY);
|
|
||||||
if (fd == -1)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* We must know about the size of the file. */
|
|
||||||
if (
|
|
||||||
#ifdef _LIBC
|
|
||||||
__builtin_expect (fstat64 (fd, &st) != 0, 0)
|
|
||||||
#else
|
|
||||||
__builtin_expect (fstat (fd, &st) != 0, 0)
|
|
||||||
#endif
|
|
||||||
|| __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0)
|
|
||||||
|| __builtin_expect (size < sizeof (struct mo_file_header), 0))
|
|
||||||
{
|
|
||||||
/* Something went wrong. */
|
|
||||||
close (fd);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef HAVE_MMAP
|
|
||||||
/* Now we are ready to load the file. If mmap() is available we try
|
|
||||||
this first. If not available or it failed we try to load it. */
|
|
||||||
data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
|
|
||||||
MAP_PRIVATE, fd, 0);
|
|
||||||
|
|
||||||
if (__builtin_expect (data != (struct mo_file_header *) -1, 1))
|
|
||||||
{
|
|
||||||
/* mmap() call was successful. */
|
|
||||||
close (fd);
|
|
||||||
use_mmap = 1;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* If the data is not yet available (i.e. mmap'ed) we try to load
|
|
||||||
it manually. */
|
|
||||||
if (data == (struct mo_file_header *) -1)
|
|
||||||
{
|
|
||||||
size_t to_read;
|
|
||||||
char *read_ptr;
|
|
||||||
|
|
||||||
data = (struct mo_file_header *) malloc (size);
|
|
||||||
if (data == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
to_read = size;
|
|
||||||
read_ptr = (char *) data;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
long int nb = (long int) read (fd, read_ptr, to_read);
|
|
||||||
if (nb <= 0)
|
|
||||||
{
|
|
||||||
#ifdef EINTR
|
|
||||||
if (nb == -1 && errno == EINTR)
|
|
||||||
continue;
|
|
||||||
#endif
|
|
||||||
close (fd);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
read_ptr += nb;
|
|
||||||
to_read -= nb;
|
|
||||||
}
|
|
||||||
while (to_read > 0);
|
|
||||||
|
|
||||||
close (fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Using the magic number we can test whether it really is a message
|
|
||||||
catalog file. */
|
|
||||||
if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED,
|
|
||||||
0))
|
|
||||||
{
|
|
||||||
/* The magic number is wrong: not a message catalog file. */
|
|
||||||
#ifdef HAVE_MMAP
|
|
||||||
if (use_mmap)
|
|
||||||
munmap ((caddr_t) data, size);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
free (data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
|
|
||||||
if (domain == NULL)
|
|
||||||
return;
|
|
||||||
domain_file->data = domain;
|
|
||||||
|
|
||||||
domain->data = (char *) data;
|
|
||||||
domain->use_mmap = use_mmap;
|
|
||||||
domain->mmap_size = size;
|
|
||||||
domain->must_swap = data->magic != _MAGIC;
|
|
||||||
|
|
||||||
/* Fill in the information about the available tables. */
|
|
||||||
switch (W (domain->must_swap, data->revision))
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
domain->nstrings = W (domain->must_swap, data->nstrings);
|
|
||||||
domain->orig_tab = (struct string_desc *)
|
|
||||||
((char *) data + W (domain->must_swap, data->orig_tab_offset));
|
|
||||||
domain->trans_tab = (struct string_desc *)
|
|
||||||
((char *) data + W (domain->must_swap, data->trans_tab_offset));
|
|
||||||
domain->hash_size = W (domain->must_swap, data->hash_tab_size);
|
|
||||||
domain->hash_tab = (nls_uint32 *)
|
|
||||||
((char *) data + W (domain->must_swap, data->hash_tab_offset));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
/* This is an invalid revision. */
|
|
||||||
#ifdef HAVE_MMAP
|
|
||||||
if (use_mmap)
|
|
||||||
munmap ((caddr_t) data, size);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
free (data);
|
|
||||||
free (domain);
|
|
||||||
domain_file->data = NULL;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Now initialize the character set converter from the character set
|
|
||||||
the file is encoded with (found in the header entry) to the domain's
|
|
||||||
specified character set or the locale's character set. */
|
|
||||||
nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding);
|
|
||||||
|
|
||||||
/* Also look for a plural specification. */
|
|
||||||
EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
void
|
|
||||||
internal_function
|
|
||||||
_nl_unload_domain (domain)
|
|
||||||
struct loaded_domain *domain;
|
|
||||||
{
|
|
||||||
if (domain->plural != &__gettext_germanic_plural)
|
|
||||||
__gettext_free_exp (domain->plural);
|
|
||||||
|
|
||||||
_nl_free_domain_conv (domain);
|
|
||||||
|
|
||||||
# ifdef _POSIX_MAPPED_FILES
|
|
||||||
if (domain->use_mmap)
|
|
||||||
munmap ((caddr_t) domain->data, domain->mmap_size);
|
|
||||||
else
|
|
||||||
# endif /* _POSIX_MAPPED_FILES */
|
|
||||||
free ((void *) domain->data);
|
|
||||||
|
|
||||||
free (domain);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@@ -1,345 +0,0 @@
|
|||||||
/* Determine a canonical name for the current locale's character encoding.
|
|
||||||
|
|
||||||
Copyright (C) 2000-2002 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, 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. */
|
|
||||||
|
|
||||||
/* Written by Bruno Haible <[email protected]>. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_STDDEF_H
|
|
||||||
# include <stddef.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#if HAVE_STRING_H
|
|
||||||
# include <string.h>
|
|
||||||
#else
|
|
||||||
# include <strings.h>
|
|
||||||
#endif
|
|
||||||
#if HAVE_STDLIB_H
|
|
||||||
# include <stdlib.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined _WIN32 || defined __WIN32__
|
|
||||||
# undef WIN32 /* avoid warning on mingw32 */
|
|
||||||
# define WIN32
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined __EMX__
|
|
||||||
/* Assume EMX program runs on OS/2, even if compiled under DOS. */
|
|
||||||
# define OS2
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined WIN32
|
|
||||||
# if HAVE_LANGINFO_CODESET
|
|
||||||
# include <langinfo.h>
|
|
||||||
# else
|
|
||||||
# if HAVE_SETLOCALE
|
|
||||||
# include <locale.h>
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#elif defined WIN32
|
|
||||||
# define WIN32_LEAN_AND_MEAN
|
|
||||||
# include <windows.h>
|
|
||||||
#endif
|
|
||||||
#if defined OS2
|
|
||||||
# define INCL_DOS
|
|
||||||
# include <os2.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
|
|
||||||
/* Win32, OS/2, DOS */
|
|
||||||
# define ISSLASH(C) ((C) == '/' || (C) == '\\')
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef DIRECTORY_SEPARATOR
|
|
||||||
# define DIRECTORY_SEPARATOR '/'
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ISSLASH
|
|
||||||
# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_GETC_UNLOCKED
|
|
||||||
# undef getc
|
|
||||||
# define getc getc_unlocked
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The following static variable is declared 'volatile' to avoid a
|
|
||||||
possible multithread problem in the function get_charset_aliases. If we
|
|
||||||
are running in a threaded environment, and if two threads initialize
|
|
||||||
'charset_aliases' simultaneously, both will produce the same value,
|
|
||||||
and everything will be ok if the two assignments to 'charset_aliases'
|
|
||||||
are atomic. But I don't know what will happen if the two assignments mix. */
|
|
||||||
#if __STDC__ != 1
|
|
||||||
# define volatile /* empty */
|
|
||||||
#endif
|
|
||||||
/* Pointer to the contents of the charset.alias file, if it has already been
|
|
||||||
read, else NULL. Its format is:
|
|
||||||
ALIAS_1 '\0' CANONICAL_1 '\0' ... ALIAS_n '\0' CANONICAL_n '\0' '\0' */
|
|
||||||
static const char * volatile charset_aliases;
|
|
||||||
|
|
||||||
/* Return a pointer to the contents of the charset.alias file. */
|
|
||||||
static const char *
|
|
||||||
get_charset_aliases ()
|
|
||||||
{
|
|
||||||
const char *cp;
|
|
||||||
|
|
||||||
cp = charset_aliases;
|
|
||||||
if (cp == NULL)
|
|
||||||
{
|
|
||||||
#if !defined WIN32
|
|
||||||
FILE *fp;
|
|
||||||
const char *dir = LIBDIR;
|
|
||||||
const char *base = "charset.alias";
|
|
||||||
char *file_name;
|
|
||||||
|
|
||||||
/* Concatenate dir and base into freshly allocated file_name. */
|
|
||||||
{
|
|
||||||
size_t dir_len = strlen (dir);
|
|
||||||
size_t base_len = strlen (base);
|
|
||||||
int add_slash = (dir_len > 0 && !ISSLASH (dir[dir_len - 1]));
|
|
||||||
file_name = (char *) malloc (dir_len + add_slash + base_len + 1);
|
|
||||||
if (file_name != NULL)
|
|
||||||
{
|
|
||||||
memcpy (file_name, dir, dir_len);
|
|
||||||
if (add_slash)
|
|
||||||
file_name[dir_len] = DIRECTORY_SEPARATOR;
|
|
||||||
memcpy (file_name + dir_len + add_slash, base, base_len + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file_name == NULL || (fp = fopen (file_name, "r")) == NULL)
|
|
||||||
/* Out of memory or file not found, treat it as empty. */
|
|
||||||
cp = "";
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Parse the file's contents. */
|
|
||||||
int c;
|
|
||||||
char buf1[50+1];
|
|
||||||
char buf2[50+1];
|
|
||||||
char *res_ptr = NULL;
|
|
||||||
size_t res_size = 0;
|
|
||||||
size_t l1, l2;
|
|
||||||
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
c = getc (fp);
|
|
||||||
if (c == EOF)
|
|
||||||
break;
|
|
||||||
if (c == '\n' || c == ' ' || c == '\t')
|
|
||||||
continue;
|
|
||||||
if (c == '#')
|
|
||||||
{
|
|
||||||
/* Skip comment, to end of line. */
|
|
||||||
do
|
|
||||||
c = getc (fp);
|
|
||||||
while (!(c == EOF || c == '\n'));
|
|
||||||
if (c == EOF)
|
|
||||||
break;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
ungetc (c, fp);
|
|
||||||
if (fscanf (fp, "%50s %50s", buf1, buf2) < 2)
|
|
||||||
break;
|
|
||||||
l1 = strlen (buf1);
|
|
||||||
l2 = strlen (buf2);
|
|
||||||
if (res_size == 0)
|
|
||||||
{
|
|
||||||
res_size = l1 + 1 + l2 + 1;
|
|
||||||
res_ptr = (char *) malloc (res_size + 1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
res_size += l1 + 1 + l2 + 1;
|
|
||||||
res_ptr = (char *) realloc (res_ptr, res_size + 1);
|
|
||||||
}
|
|
||||||
if (res_ptr == NULL)
|
|
||||||
{
|
|
||||||
/* Out of memory. */
|
|
||||||
res_size = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
strcpy (res_ptr + res_size - (l2 + 1) - (l1 + 1), buf1);
|
|
||||||
strcpy (res_ptr + res_size - (l2 + 1), buf2);
|
|
||||||
}
|
|
||||||
fclose (fp);
|
|
||||||
if (res_size == 0)
|
|
||||||
cp = "";
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*(res_ptr + res_size) = '\0';
|
|
||||||
cp = res_ptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file_name != NULL)
|
|
||||||
free (file_name);
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
/* To avoid the troubles of installing a separate file in the same
|
|
||||||
directory as the DLL and of retrieving the DLL's directory at
|
|
||||||
runtime, simply inline the aliases here. */
|
|
||||||
|
|
||||||
# if defined WIN32
|
|
||||||
cp = "CP936" "\0" "GBK" "\0"
|
|
||||||
"CP1361" "\0" "JOHAB" "\0";
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
charset_aliases = cp;
|
|
||||||
}
|
|
||||||
|
|
||||||
return cp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Determine the current locale's character encoding, and canonicalize it
|
|
||||||
into one of the canonical names listed in config.charset.
|
|
||||||
The result must not be freed; it is statically allocated.
|
|
||||||
If the canonical name cannot be determined, the result is a non-canonical
|
|
||||||
name. */
|
|
||||||
|
|
||||||
#ifdef STATIC
|
|
||||||
STATIC
|
|
||||||
#endif
|
|
||||||
const char *
|
|
||||||
locale_charset ()
|
|
||||||
{
|
|
||||||
const char *codeset;
|
|
||||||
const char *aliases;
|
|
||||||
|
|
||||||
#if !(defined WIN32 || defined OS2)
|
|
||||||
|
|
||||||
# if HAVE_LANGINFO_CODESET
|
|
||||||
|
|
||||||
/* Most systems support nl_langinfo (CODESET) nowadays. */
|
|
||||||
codeset = nl_langinfo (CODESET);
|
|
||||||
|
|
||||||
# else
|
|
||||||
|
|
||||||
/* On old systems which lack it, use setlocale or getenv. */
|
|
||||||
const char *locale = NULL;
|
|
||||||
|
|
||||||
/* But most old systems don't have a complete set of locales. Some
|
|
||||||
(like SunOS 4 or DJGPP) have only the C locale. Therefore we don't
|
|
||||||
use setlocale here; it would return "C" when it doesn't support the
|
|
||||||
locale name the user has set. */
|
|
||||||
# if HAVE_SETLOCALE && 0
|
|
||||||
locale = setlocale (LC_CTYPE, NULL);
|
|
||||||
# endif
|
|
||||||
if (locale == NULL || locale[0] == '\0')
|
|
||||||
{
|
|
||||||
locale = getenv ("LC_ALL");
|
|
||||||
if (locale == NULL || locale[0] == '\0')
|
|
||||||
{
|
|
||||||
locale = getenv ("LC_CTYPE");
|
|
||||||
if (locale == NULL || locale[0] == '\0')
|
|
||||||
locale = getenv ("LANG");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* On some old systems, one used to set locale = "iso8859_1". On others,
|
|
||||||
you set it to "language_COUNTRY.charset". In any case, we resolve it
|
|
||||||
through the charset.alias file. */
|
|
||||||
codeset = locale;
|
|
||||||
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#elif defined WIN32
|
|
||||||
|
|
||||||
static char buf[2 + 10 + 1];
|
|
||||||
|
|
||||||
/* Win32 has a function returning the locale's codepage as a number. */
|
|
||||||
sprintf (buf, "CP%u", GetACP ());
|
|
||||||
codeset = buf;
|
|
||||||
|
|
||||||
#elif defined OS2
|
|
||||||
|
|
||||||
const char *locale;
|
|
||||||
static char buf[2 + 10 + 1];
|
|
||||||
ULONG cp[3];
|
|
||||||
ULONG cplen;
|
|
||||||
|
|
||||||
/* Allow user to override the codeset, as set in the operating system,
|
|
||||||
with standard language environment variables. */
|
|
||||||
locale = getenv ("LC_ALL");
|
|
||||||
if (locale == NULL || locale[0] == '\0')
|
|
||||||
{
|
|
||||||
locale = getenv ("LC_CTYPE");
|
|
||||||
if (locale == NULL || locale[0] == '\0')
|
|
||||||
locale = getenv ("LANG");
|
|
||||||
}
|
|
||||||
if (locale != NULL && locale[0] != '\0')
|
|
||||||
{
|
|
||||||
/* If the locale name contains an encoding after the dot, return it. */
|
|
||||||
const char *dot = strchr (locale, '.');
|
|
||||||
|
|
||||||
if (dot != NULL)
|
|
||||||
{
|
|
||||||
const char *modifier;
|
|
||||||
|
|
||||||
dot++;
|
|
||||||
/* Look for the possible @... trailer and remove it, if any. */
|
|
||||||
modifier = strchr (dot, '@');
|
|
||||||
if (modifier == NULL)
|
|
||||||
return dot;
|
|
||||||
if (modifier - dot < sizeof (buf))
|
|
||||||
{
|
|
||||||
memcpy (buf, dot, modifier - dot);
|
|
||||||
buf [modifier - dot] = '\0';
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Resolve through the charset.alias file. */
|
|
||||||
codeset = locale;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* OS/2 has a function returning the locale's codepage as a number. */
|
|
||||||
if (DosQueryCp (sizeof (cp), cp, &cplen))
|
|
||||||
codeset = "";
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sprintf (buf, "CP%u", cp[0]);
|
|
||||||
codeset = buf;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (codeset == NULL)
|
|
||||||
/* The canonical name cannot be determined. */
|
|
||||||
codeset = "";
|
|
||||||
|
|
||||||
/* Resolve alias. */
|
|
||||||
for (aliases = get_charset_aliases ();
|
|
||||||
*aliases != '\0';
|
|
||||||
aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
|
|
||||||
if (strcmp (codeset, aliases) == 0
|
|
||||||
|| (aliases[0] == '*' && aliases[1] == '\0'))
|
|
||||||
{
|
|
||||||
codeset = aliases + strlen (aliases) + 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return codeset;
|
|
||||||
}
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
# Locale name alias data base.
|
|
||||||
# Copyright (C) 1996,1997,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 Library 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.
|
|
||||||
|
|
||||||
# The format of this file is the same as for the corresponding file of
|
|
||||||
# the X Window System, which normally can be found in
|
|
||||||
# /usr/lib/X11/locale/locale.alias
|
|
||||||
# A single line contains two fields: an alias and a substitution value.
|
|
||||||
# All entries are case independent.
|
|
||||||
|
|
||||||
# Note: This file is far from being complete. If you have a value for
|
|
||||||
# your own site which you think might be useful for others too, share
|
|
||||||
# it with the rest of us. Send it using the `glibcbug' script to
|
|
||||||
# [email protected].
|
|
||||||
|
|
||||||
# Packages using this file:
|
|
||||||
|
|
||||||
bokmal no_NO.ISO-8859-1
|
|
||||||
bokmål no_NO.ISO-8859-1
|
|
||||||
catalan ca_ES.ISO-8859-1
|
|
||||||
croatian hr_HR.ISO-8859-2
|
|
||||||
czech cs_CZ.ISO-8859-2
|
|
||||||
danish da_DK.ISO-8859-1
|
|
||||||
dansk da_DK.ISO-8859-1
|
|
||||||
deutsch de_DE.ISO-8859-1
|
|
||||||
dutch nl_NL.ISO-8859-1
|
|
||||||
eesti et_EE.ISO-8859-1
|
|
||||||
estonian et_EE.ISO-8859-1
|
|
||||||
finnish fi_FI.ISO-8859-1
|
|
||||||
français fr_FR.ISO-8859-1
|
|
||||||
french fr_FR.ISO-8859-1
|
|
||||||
galego gl_ES.ISO-8859-1
|
|
||||||
galician gl_ES.ISO-8859-1
|
|
||||||
german de_DE.ISO-8859-1
|
|
||||||
greek el_GR.ISO-8859-7
|
|
||||||
hebrew he_IL.ISO-8859-8
|
|
||||||
hrvatski hr_HR.ISO-8859-2
|
|
||||||
hungarian hu_HU.ISO-8859-2
|
|
||||||
icelandic is_IS.ISO-8859-1
|
|
||||||
italian it_IT.ISO-8859-1
|
|
||||||
japanese ja_JP.eucJP
|
|
||||||
japanese.euc ja_JP.eucJP
|
|
||||||
ja_JP ja_JP.eucJP
|
|
||||||
ja_JP.ujis ja_JP.eucJP
|
|
||||||
japanese.sjis ja_JP.SJIS
|
|
||||||
korean ko_KR.eucKR
|
|
||||||
korean.euc ko_KR.eucKR
|
|
||||||
ko_KR ko_KR.eucKR
|
|
||||||
lithuanian lt_LT.ISO-8859-13
|
|
||||||
nb_NO no_NO.ISO-8859-1
|
|
||||||
nb_NO.ISO-8859-1 no_NO.ISO-8859-1
|
|
||||||
norwegian no_NO.ISO-8859-1
|
|
||||||
nynorsk nn_NO.ISO-8859-1
|
|
||||||
polish pl_PL.ISO-8859-2
|
|
||||||
portuguese pt_PT.ISO-8859-1
|
|
||||||
romanian ro_RO.ISO-8859-2
|
|
||||||
russian ru_RU.ISO-8859-5
|
|
||||||
slovak sk_SK.ISO-8859-2
|
|
||||||
slovene sl_SI.ISO-8859-2
|
|
||||||
slovenian sl_SI.ISO-8859-2
|
|
||||||
spanish es_ES.ISO-8859-1
|
|
||||||
swedish sv_SE.ISO-8859-1
|
|
||||||
thai th_TH.TIS-620
|
|
||||||
turkish tr_TR.ISO-8859-9
|
|
||||||
@@ -1,419 +0,0 @@
|
|||||||
/* Handle aliases for locale names.
|
|
||||||
Copyright (C) 1995-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 Library 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. */
|
|
||||||
|
|
||||||
/* Tell glibc's <string.h> to provide a prototype for mempcpy().
|
|
||||||
This must come before <config.h> because <config.h> may include
|
|
||||||
<features.h>, and once <features.h> has been included, it's too late. */
|
|
||||||
#ifndef _GNU_SOURCE
|
|
||||||
# define _GNU_SOURCE 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#if defined _LIBC || defined HAVE___FSETLOCKING
|
|
||||||
# include <stdio_ext.h>
|
|
||||||
#endif
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
# define alloca __builtin_alloca
|
|
||||||
# define HAVE_ALLOCA 1
|
|
||||||
#else
|
|
||||||
# if defined HAVE_ALLOCA_H || defined _LIBC
|
|
||||||
# include <alloca.h>
|
|
||||||
# else
|
|
||||||
# ifdef _AIX
|
|
||||||
#pragma alloca
|
|
||||||
# else
|
|
||||||
# ifndef alloca
|
|
||||||
char *alloca ();
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "gettextP.h"
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
/* Rename the non ANSI C functions. This is required by the standard
|
|
||||||
because some ANSI C functions will require linking with this object
|
|
||||||
file and the name space must not be polluted. */
|
|
||||||
# define strcasecmp __strcasecmp
|
|
||||||
|
|
||||||
# ifndef mempcpy
|
|
||||||
# define mempcpy __mempcpy
|
|
||||||
# endif
|
|
||||||
# define HAVE_MEMPCPY 1
|
|
||||||
# define HAVE___FSETLOCKING 1
|
|
||||||
|
|
||||||
/* We need locking here since we can be called from different places. */
|
|
||||||
# include <bits/libc-lock.h>
|
|
||||||
|
|
||||||
__libc_lock_define_initialized (static, lock);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef internal_function
|
|
||||||
# define internal_function
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Some optimizations for glibc. */
|
|
||||||
#ifdef _LIBC
|
|
||||||
# define FEOF(fp) feof_unlocked (fp)
|
|
||||||
# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp)
|
|
||||||
#else
|
|
||||||
# define FEOF(fp) feof (fp)
|
|
||||||
# define FGETS(buf, n, fp) fgets (buf, n, fp)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* For those losing systems which don't have `alloca' we have to add
|
|
||||||
some additional code emulating it. */
|
|
||||||
#ifdef HAVE_ALLOCA
|
|
||||||
# define freea(p) /* nothing */
|
|
||||||
#else
|
|
||||||
# define alloca(n) malloc (n)
|
|
||||||
# define freea(p) free (p)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined _LIBC_REENTRANT || defined HAVE_FGETS_UNLOCKED
|
|
||||||
# undef fgets
|
|
||||||
# define fgets(buf, len, s) fgets_unlocked (buf, len, s)
|
|
||||||
#endif
|
|
||||||
#if defined _LIBC_REENTRANT || defined HAVE_FEOF_UNLOCKED
|
|
||||||
# undef feof
|
|
||||||
# define feof(s) feof_unlocked (s)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
struct alias_map
|
|
||||||
{
|
|
||||||
const char *alias;
|
|
||||||
const char *value;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static char *string_space;
|
|
||||||
static size_t string_space_act;
|
|
||||||
static size_t string_space_max;
|
|
||||||
static struct alias_map *map;
|
|
||||||
static size_t nmap;
|
|
||||||
static size_t maxmap;
|
|
||||||
|
|
||||||
|
|
||||||
/* Prototypes for local functions. */
|
|
||||||
static size_t read_alias_file PARAMS ((const char *fname, int fname_len))
|
|
||||||
internal_function;
|
|
||||||
static int extend_alias_table PARAMS ((void));
|
|
||||||
static int alias_compare PARAMS ((const struct alias_map *map1,
|
|
||||||
const struct alias_map *map2));
|
|
||||||
|
|
||||||
|
|
||||||
const char *
|
|
||||||
_nl_expand_alias (name)
|
|
||||||
const char *name;
|
|
||||||
{
|
|
||||||
static const char *locale_alias_path;
|
|
||||||
struct alias_map *retval;
|
|
||||||
const char *result = NULL;
|
|
||||||
size_t added;
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
__libc_lock_lock (lock);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (locale_alias_path == NULL)
|
|
||||||
locale_alias_path = LOCALE_ALIAS_PATH;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
struct alias_map item;
|
|
||||||
|
|
||||||
item.alias = name;
|
|
||||||
|
|
||||||
if (nmap > 0)
|
|
||||||
retval = (struct alias_map *) bsearch (&item, map, nmap,
|
|
||||||
sizeof (struct alias_map),
|
|
||||||
(int (*) PARAMS ((const void *,
|
|
||||||
const void *))
|
|
||||||
) alias_compare);
|
|
||||||
else
|
|
||||||
retval = NULL;
|
|
||||||
|
|
||||||
/* We really found an alias. Return the value. */
|
|
||||||
if (retval != NULL)
|
|
||||||
{
|
|
||||||
result = retval->value;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Perhaps we can find another alias file. */
|
|
||||||
added = 0;
|
|
||||||
while (added == 0 && locale_alias_path[0] != '\0')
|
|
||||||
{
|
|
||||||
const char *start;
|
|
||||||
|
|
||||||
while (locale_alias_path[0] == PATH_SEPARATOR)
|
|
||||||
++locale_alias_path;
|
|
||||||
start = locale_alias_path;
|
|
||||||
|
|
||||||
while (locale_alias_path[0] != '\0'
|
|
||||||
&& locale_alias_path[0] != PATH_SEPARATOR)
|
|
||||||
++locale_alias_path;
|
|
||||||
|
|
||||||
if (start < locale_alias_path)
|
|
||||||
added = read_alias_file (start, locale_alias_path - start);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while (added != 0);
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
__libc_lock_unlock (lock);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static size_t
|
|
||||||
internal_function
|
|
||||||
read_alias_file (fname, fname_len)
|
|
||||||
const char *fname;
|
|
||||||
int fname_len;
|
|
||||||
{
|
|
||||||
FILE *fp;
|
|
||||||
char *full_fname;
|
|
||||||
size_t added;
|
|
||||||
static const char aliasfile[] = "/locale.alias";
|
|
||||||
|
|
||||||
full_fname = (char *) alloca (fname_len + sizeof aliasfile);
|
|
||||||
#ifdef HAVE_MEMPCPY
|
|
||||||
mempcpy (mempcpy (full_fname, fname, fname_len),
|
|
||||||
aliasfile, sizeof aliasfile);
|
|
||||||
#else
|
|
||||||
memcpy (full_fname, fname, fname_len);
|
|
||||||
memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
fp = fopen (full_fname, "r");
|
|
||||||
freea (full_fname);
|
|
||||||
if (fp == NULL)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
#ifdef HAVE___FSETLOCKING
|
|
||||||
/* No threads present. */
|
|
||||||
__fsetlocking (fp, FSETLOCKING_BYCALLER);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
added = 0;
|
|
||||||
while (!FEOF (fp))
|
|
||||||
{
|
|
||||||
/* It is a reasonable approach to use a fix buffer here because
|
|
||||||
a) we are only interested in the first two fields
|
|
||||||
b) these fields must be usable as file names and so must not
|
|
||||||
be that long
|
|
||||||
*/
|
|
||||||
char buf[BUFSIZ];
|
|
||||||
char *alias;
|
|
||||||
char *value;
|
|
||||||
char *cp;
|
|
||||||
|
|
||||||
if (FGETS (buf, sizeof buf, fp) == NULL)
|
|
||||||
/* EOF reached. */
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* Possibly not the whole line fits into the buffer. Ignore
|
|
||||||
the rest of the line. */
|
|
||||||
if (strchr (buf, '\n') == NULL)
|
|
||||||
{
|
|
||||||
char altbuf[BUFSIZ];
|
|
||||||
do
|
|
||||||
if (FGETS (altbuf, sizeof altbuf, fp) == NULL)
|
|
||||||
/* Make sure the inner loop will be left. The outer loop
|
|
||||||
will exit at the `feof' test. */
|
|
||||||
break;
|
|
||||||
while (strchr (altbuf, '\n') == NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
cp = buf;
|
|
||||||
/* Ignore leading white space. */
|
|
||||||
while (isspace ((unsigned char) cp[0]))
|
|
||||||
++cp;
|
|
||||||
|
|
||||||
/* A leading '#' signals a comment line. */
|
|
||||||
if (cp[0] != '\0' && cp[0] != '#')
|
|
||||||
{
|
|
||||||
alias = cp++;
|
|
||||||
while (cp[0] != '\0' && !isspace ((unsigned char) cp[0]))
|
|
||||||
++cp;
|
|
||||||
/* Terminate alias name. */
|
|
||||||
if (cp[0] != '\0')
|
|
||||||
*cp++ = '\0';
|
|
||||||
|
|
||||||
/* Now look for the beginning of the value. */
|
|
||||||
while (isspace ((unsigned char) cp[0]))
|
|
||||||
++cp;
|
|
||||||
|
|
||||||
if (cp[0] != '\0')
|
|
||||||
{
|
|
||||||
size_t alias_len;
|
|
||||||
size_t value_len;
|
|
||||||
|
|
||||||
value = cp++;
|
|
||||||
while (cp[0] != '\0' && !isspace ((unsigned char) cp[0]))
|
|
||||||
++cp;
|
|
||||||
/* Terminate value. */
|
|
||||||
if (cp[0] == '\n')
|
|
||||||
{
|
|
||||||
/* This has to be done to make the following test
|
|
||||||
for the end of line possible. We are looking for
|
|
||||||
the terminating '\n' which do not overwrite here. */
|
|
||||||
*cp++ = '\0';
|
|
||||||
*cp = '\n';
|
|
||||||
}
|
|
||||||
else if (cp[0] != '\0')
|
|
||||||
*cp++ = '\0';
|
|
||||||
|
|
||||||
if (nmap >= maxmap)
|
|
||||||
if (__builtin_expect (extend_alias_table (), 0))
|
|
||||||
return added;
|
|
||||||
|
|
||||||
alias_len = strlen (alias) + 1;
|
|
||||||
value_len = strlen (value) + 1;
|
|
||||||
|
|
||||||
if (string_space_act + alias_len + value_len > string_space_max)
|
|
||||||
{
|
|
||||||
/* Increase size of memory pool. */
|
|
||||||
size_t new_size = (string_space_max
|
|
||||||
+ (alias_len + value_len > 1024
|
|
||||||
? alias_len + value_len : 1024));
|
|
||||||
char *new_pool = (char *) realloc (string_space, new_size);
|
|
||||||
if (new_pool == NULL)
|
|
||||||
return added;
|
|
||||||
|
|
||||||
if (__builtin_expect (string_space != new_pool, 0))
|
|
||||||
{
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
for (i = 0; i < nmap; i++)
|
|
||||||
{
|
|
||||||
map[i].alias += new_pool - string_space;
|
|
||||||
map[i].value += new_pool - string_space;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
string_space = new_pool;
|
|
||||||
string_space_max = new_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
map[nmap].alias = memcpy (&string_space[string_space_act],
|
|
||||||
alias, alias_len);
|
|
||||||
string_space_act += alias_len;
|
|
||||||
|
|
||||||
map[nmap].value = memcpy (&string_space[string_space_act],
|
|
||||||
value, value_len);
|
|
||||||
string_space_act += value_len;
|
|
||||||
|
|
||||||
++nmap;
|
|
||||||
++added;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Should we test for ferror()? I think we have to silently ignore
|
|
||||||
errors. --drepper */
|
|
||||||
fclose (fp);
|
|
||||||
|
|
||||||
if (added > 0)
|
|
||||||
qsort (map, nmap, sizeof (struct alias_map),
|
|
||||||
(int (*) PARAMS ((const void *, const void *))) alias_compare);
|
|
||||||
|
|
||||||
return added;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
extend_alias_table ()
|
|
||||||
{
|
|
||||||
size_t new_size;
|
|
||||||
struct alias_map *new_map;
|
|
||||||
|
|
||||||
new_size = maxmap == 0 ? 100 : 2 * maxmap;
|
|
||||||
new_map = (struct alias_map *) realloc (map, (new_size
|
|
||||||
* sizeof (struct alias_map)));
|
|
||||||
if (new_map == NULL)
|
|
||||||
/* Simply don't extend: we don't have any more core. */
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
map = new_map;
|
|
||||||
maxmap = new_size;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
static void __attribute__ ((unused))
|
|
||||||
free_mem (void)
|
|
||||||
{
|
|
||||||
if (string_space != NULL)
|
|
||||||
free (string_space);
|
|
||||||
if (map != NULL)
|
|
||||||
free (map);
|
|
||||||
}
|
|
||||||
text_set_element (__libc_subfreeres, free_mem);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
alias_compare (map1, map2)
|
|
||||||
const struct alias_map *map1;
|
|
||||||
const struct alias_map *map2;
|
|
||||||
{
|
|
||||||
#if defined _LIBC || defined HAVE_STRCASECMP
|
|
||||||
return strcasecmp (map1->alias, map2->alias);
|
|
||||||
#else
|
|
||||||
const unsigned char *p1 = (const unsigned char *) map1->alias;
|
|
||||||
const unsigned char *p2 = (const unsigned char *) map2->alias;
|
|
||||||
unsigned char c1, c2;
|
|
||||||
|
|
||||||
if (p1 == p2)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
/* I know this seems to be odd but the tolower() function in
|
|
||||||
some systems libc cannot handle nonalpha characters. */
|
|
||||||
c1 = isupper (*p1) ? tolower (*p1) : *p1;
|
|
||||||
c2 = isupper (*p2) ? tolower (*p2) : *p2;
|
|
||||||
if (c1 == '\0')
|
|
||||||
break;
|
|
||||||
++p1;
|
|
||||||
++p2;
|
|
||||||
}
|
|
||||||
while (c1 == c2);
|
|
||||||
|
|
||||||
return c1 - c2;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
/* Implementation of ngettext(3) function.
|
|
||||||
Copyright (C) 1995, 1997, 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 Library 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. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
# define __need_NULL
|
|
||||||
# include <stddef.h>
|
|
||||||
#else
|
|
||||||
# include <stdlib.h> /* Just for NULL. */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "gettextP.h"
|
|
||||||
#ifdef _LIBC
|
|
||||||
# include <libintl.h>
|
|
||||||
#else
|
|
||||||
# include "libgnuintl.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
/* Names for the libintl functions are a problem. They must not clash
|
|
||||||
with existing names and they should follow ANSI C. But this source
|
|
||||||
code is also used in GNU C Library where the names have a __
|
|
||||||
prefix. So we have to make a difference here. */
|
|
||||||
#ifdef _LIBC
|
|
||||||
# define NGETTEXT __ngettext
|
|
||||||
# define DCNGETTEXT __dcngettext
|
|
||||||
#else
|
|
||||||
# define NGETTEXT ngettext__
|
|
||||||
# define DCNGETTEXT dcngettext__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Look up MSGID in the current default message catalog for the current
|
|
||||||
LC_MESSAGES locale. If not found, returns MSGID itself (the default
|
|
||||||
text). */
|
|
||||||
char *
|
|
||||||
NGETTEXT (msgid1, msgid2, n)
|
|
||||||
const char *msgid1;
|
|
||||||
const char *msgid2;
|
|
||||||
unsigned long int n;
|
|
||||||
{
|
|
||||||
return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
/* Alias for function name in GNU C Library. */
|
|
||||||
weak_alias (__ngettext, ngettext);
|
|
||||||
#endif
|
|
||||||
-1322
File diff suppressed because it is too large
Load Diff
-409
@@ -1,409 +0,0 @@
|
|||||||
%{
|
|
||||||
/* Expression parsing for plural form selection.
|
|
||||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
|
||||||
Written by Ulrich Drepper <[email protected]>, 2000.
|
|
||||||
|
|
||||||
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, 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. */
|
|
||||||
|
|
||||||
/* The bison generated parser uses alloca. AIX 3 forces us to put this
|
|
||||||
declaration at the beginning of the file. The declaration in bison's
|
|
||||||
skeleton file comes too late. This must come before <config.h>
|
|
||||||
because <config.h> may include arbitrary system headers. */
|
|
||||||
#if defined _AIX && !defined __GNUC__
|
|
||||||
#pragma alloca
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include "plural-exp.h"
|
|
||||||
|
|
||||||
/* The main function generated by the parser is called __gettextparse,
|
|
||||||
but we want it to be called PLURAL_PARSE. */
|
|
||||||
#ifndef _LIBC
|
|
||||||
# define __gettextparse PLURAL_PARSE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define YYLEX_PARAM &((struct parse_args *) arg)->cp
|
|
||||||
#define YYPARSE_PARAM arg
|
|
||||||
%}
|
|
||||||
%pure_parser
|
|
||||||
%expect 7
|
|
||||||
|
|
||||||
%union {
|
|
||||||
unsigned long int num;
|
|
||||||
enum operator op;
|
|
||||||
struct expression *exp;
|
|
||||||
}
|
|
||||||
|
|
||||||
%{
|
|
||||||
/* Prototypes for local functions. */
|
|
||||||
static struct expression *new_exp PARAMS ((int nargs, enum operator op,
|
|
||||||
struct expression * const *args));
|
|
||||||
static inline struct expression *new_exp_0 PARAMS ((enum operator op));
|
|
||||||
static inline struct expression *new_exp_1 PARAMS ((enum operator op,
|
|
||||||
struct expression *right));
|
|
||||||
static struct expression *new_exp_2 PARAMS ((enum operator op,
|
|
||||||
struct expression *left,
|
|
||||||
struct expression *right));
|
|
||||||
static inline struct expression *new_exp_3 PARAMS ((enum operator op,
|
|
||||||
struct expression *bexp,
|
|
||||||
struct expression *tbranch,
|
|
||||||
struct expression *fbranch));
|
|
||||||
static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
|
|
||||||
static void yyerror PARAMS ((const char *str));
|
|
||||||
|
|
||||||
/* Allocation of expressions. */
|
|
||||||
|
|
||||||
static struct expression *
|
|
||||||
new_exp (nargs, op, args)
|
|
||||||
int nargs;
|
|
||||||
enum operator op;
|
|
||||||
struct expression * const *args;
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
struct expression *newp;
|
|
||||||
|
|
||||||
/* If any of the argument could not be malloc'ed, just return NULL. */
|
|
||||||
for (i = nargs - 1; i >= 0; i--)
|
|
||||||
if (args[i] == NULL)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
/* Allocate a new expression. */
|
|
||||||
newp = (struct expression *) malloc (sizeof (*newp));
|
|
||||||
if (newp != NULL)
|
|
||||||
{
|
|
||||||
newp->nargs = nargs;
|
|
||||||
newp->operation = op;
|
|
||||||
for (i = nargs - 1; i >= 0; i--)
|
|
||||||
newp->val.args[i] = args[i];
|
|
||||||
return newp;
|
|
||||||
}
|
|
||||||
|
|
||||||
fail:
|
|
||||||
for (i = nargs - 1; i >= 0; i--)
|
|
||||||
FREE_EXPRESSION (args[i]);
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline struct expression *
|
|
||||||
new_exp_0 (op)
|
|
||||||
enum operator op;
|
|
||||||
{
|
|
||||||
return new_exp (0, op, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline struct expression *
|
|
||||||
new_exp_1 (op, right)
|
|
||||||
enum operator op;
|
|
||||||
struct expression *right;
|
|
||||||
{
|
|
||||||
struct expression *args[1];
|
|
||||||
|
|
||||||
args[0] = right;
|
|
||||||
return new_exp (1, op, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct expression *
|
|
||||||
new_exp_2 (op, left, right)
|
|
||||||
enum operator op;
|
|
||||||
struct expression *left;
|
|
||||||
struct expression *right;
|
|
||||||
{
|
|
||||||
struct expression *args[2];
|
|
||||||
|
|
||||||
args[0] = left;
|
|
||||||
args[1] = right;
|
|
||||||
return new_exp (2, op, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline struct expression *
|
|
||||||
new_exp_3 (op, bexp, tbranch, fbranch)
|
|
||||||
enum operator op;
|
|
||||||
struct expression *bexp;
|
|
||||||
struct expression *tbranch;
|
|
||||||
struct expression *fbranch;
|
|
||||||
{
|
|
||||||
struct expression *args[3];
|
|
||||||
|
|
||||||
args[0] = bexp;
|
|
||||||
args[1] = tbranch;
|
|
||||||
args[2] = fbranch;
|
|
||||||
return new_exp (3, op, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
%}
|
|
||||||
|
|
||||||
/* This declares that all operators have the same associativity and the
|
|
||||||
precedence order as in C. See [Harbison, Steele: C, A Reference Manual].
|
|
||||||
There is no unary minus and no bitwise operators.
|
|
||||||
Operators with the same syntactic behaviour have been merged into a single
|
|
||||||
token, to save space in the array generated by bison. */
|
|
||||||
%right '?' /* ? */
|
|
||||||
%left '|' /* || */
|
|
||||||
%left '&' /* && */
|
|
||||||
%left EQUOP2 /* == != */
|
|
||||||
%left CMPOP2 /* < > <= >= */
|
|
||||||
%left ADDOP2 /* + - */
|
|
||||||
%left MULOP2 /* * / % */
|
|
||||||
%right '!' /* ! */
|
|
||||||
|
|
||||||
%token <op> EQUOP2 CMPOP2 ADDOP2 MULOP2
|
|
||||||
%token <num> NUMBER
|
|
||||||
%type <exp> exp
|
|
||||||
|
|
||||||
%%
|
|
||||||
|
|
||||||
start: exp
|
|
||||||
{
|
|
||||||
if ($1 == NULL)
|
|
||||||
YYABORT;
|
|
||||||
((struct parse_args *) arg)->res = $1;
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
exp: exp '?' exp ':' exp
|
|
||||||
{
|
|
||||||
$$ = new_exp_3 (qmop, $1, $3, $5);
|
|
||||||
}
|
|
||||||
| exp '|' exp
|
|
||||||
{
|
|
||||||
$$ = new_exp_2 (lor, $1, $3);
|
|
||||||
}
|
|
||||||
| exp '&' exp
|
|
||||||
{
|
|
||||||
$$ = new_exp_2 (land, $1, $3);
|
|
||||||
}
|
|
||||||
| exp EQUOP2 exp
|
|
||||||
{
|
|
||||||
$$ = new_exp_2 ($2, $1, $3);
|
|
||||||
}
|
|
||||||
| exp CMPOP2 exp
|
|
||||||
{
|
|
||||||
$$ = new_exp_2 ($2, $1, $3);
|
|
||||||
}
|
|
||||||
| exp ADDOP2 exp
|
|
||||||
{
|
|
||||||
$$ = new_exp_2 ($2, $1, $3);
|
|
||||||
}
|
|
||||||
| exp MULOP2 exp
|
|
||||||
{
|
|
||||||
$$ = new_exp_2 ($2, $1, $3);
|
|
||||||
}
|
|
||||||
| '!' exp
|
|
||||||
{
|
|
||||||
$$ = new_exp_1 (lnot, $2);
|
|
||||||
}
|
|
||||||
| 'n'
|
|
||||||
{
|
|
||||||
$$ = new_exp_0 (var);
|
|
||||||
}
|
|
||||||
| NUMBER
|
|
||||||
{
|
|
||||||
if (($$ = new_exp_0 (num)) != NULL)
|
|
||||||
$$->val.num = $1;
|
|
||||||
}
|
|
||||||
| '(' exp ')'
|
|
||||||
{
|
|
||||||
$$ = $2;
|
|
||||||
}
|
|
||||||
;
|
|
||||||
|
|
||||||
%%
|
|
||||||
|
|
||||||
void
|
|
||||||
internal_function
|
|
||||||
FREE_EXPRESSION (exp)
|
|
||||||
struct expression *exp;
|
|
||||||
{
|
|
||||||
if (exp == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Handle the recursive case. */
|
|
||||||
switch (exp->nargs)
|
|
||||||
{
|
|
||||||
case 3:
|
|
||||||
FREE_EXPRESSION (exp->val.args[2]);
|
|
||||||
/* FALLTHROUGH */
|
|
||||||
case 2:
|
|
||||||
FREE_EXPRESSION (exp->val.args[1]);
|
|
||||||
/* FALLTHROUGH */
|
|
||||||
case 1:
|
|
||||||
FREE_EXPRESSION (exp->val.args[0]);
|
|
||||||
/* FALLTHROUGH */
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
free (exp);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
yylex (lval, pexp)
|
|
||||||
YYSTYPE *lval;
|
|
||||||
const char **pexp;
|
|
||||||
{
|
|
||||||
const char *exp = *pexp;
|
|
||||||
int result;
|
|
||||||
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
if (exp[0] == '\0')
|
|
||||||
{
|
|
||||||
*pexp = exp;
|
|
||||||
return YYEOF;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (exp[0] != ' ' && exp[0] != '\t')
|
|
||||||
break;
|
|
||||||
|
|
||||||
++exp;
|
|
||||||
}
|
|
||||||
|
|
||||||
result = *exp++;
|
|
||||||
switch (result)
|
|
||||||
{
|
|
||||||
case '0': case '1': case '2': case '3': case '4':
|
|
||||||
case '5': case '6': case '7': case '8': case '9':
|
|
||||||
{
|
|
||||||
unsigned long int n = result - '0';
|
|
||||||
while (exp[0] >= '0' && exp[0] <= '9')
|
|
||||||
{
|
|
||||||
n *= 10;
|
|
||||||
n += exp[0] - '0';
|
|
||||||
++exp;
|
|
||||||
}
|
|
||||||
lval->num = n;
|
|
||||||
result = NUMBER;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '=':
|
|
||||||
if (exp[0] == '=')
|
|
||||||
{
|
|
||||||
++exp;
|
|
||||||
lval->op = equal;
|
|
||||||
result = EQUOP2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
result = YYERRCODE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '!':
|
|
||||||
if (exp[0] == '=')
|
|
||||||
{
|
|
||||||
++exp;
|
|
||||||
lval->op = not_equal;
|
|
||||||
result = EQUOP2;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '&':
|
|
||||||
case '|':
|
|
||||||
if (exp[0] == result)
|
|
||||||
++exp;
|
|
||||||
else
|
|
||||||
result = YYERRCODE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '<':
|
|
||||||
if (exp[0] == '=')
|
|
||||||
{
|
|
||||||
++exp;
|
|
||||||
lval->op = less_or_equal;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
lval->op = less_than;
|
|
||||||
result = CMPOP2;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '>':
|
|
||||||
if (exp[0] == '=')
|
|
||||||
{
|
|
||||||
++exp;
|
|
||||||
lval->op = greater_or_equal;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
lval->op = greater_than;
|
|
||||||
result = CMPOP2;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '*':
|
|
||||||
lval->op = mult;
|
|
||||||
result = MULOP2;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '/':
|
|
||||||
lval->op = divide;
|
|
||||||
result = MULOP2;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '%':
|
|
||||||
lval->op = module;
|
|
||||||
result = MULOP2;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '+':
|
|
||||||
lval->op = plus;
|
|
||||||
result = ADDOP2;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '-':
|
|
||||||
lval->op = minus;
|
|
||||||
result = ADDOP2;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'n':
|
|
||||||
case '?':
|
|
||||||
case ':':
|
|
||||||
case '(':
|
|
||||||
case ')':
|
|
||||||
/* Nothing, just return the character. */
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ';':
|
|
||||||
case '\n':
|
|
||||||
case '\0':
|
|
||||||
/* Be safe and let the user call this function again. */
|
|
||||||
--exp;
|
|
||||||
result = YYEOF;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
result = YYERRCODE;
|
|
||||||
#if YYDEBUG != 0
|
|
||||||
--exp;
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*pexp = exp;
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
yyerror (str)
|
|
||||||
const char *str;
|
|
||||||
{
|
|
||||||
/* Do nothing. We don't print error messages here. */
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
# Add this package to a list of references stored in a text file.
|
|
||||||
#
|
|
||||||
# Copyright (C) 2000 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, 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.
|
|
||||||
#
|
|
||||||
# Written by Bruno Haible <[email protected]>.
|
|
||||||
#
|
|
||||||
/^# Packages using this file: / {
|
|
||||||
s/# Packages using this file://
|
|
||||||
ta
|
|
||||||
:a
|
|
||||||
s/ @PACKAGE@ / @PACKAGE@ /
|
|
||||||
tb
|
|
||||||
s/ $/ @PACKAGE@ /
|
|
||||||
:b
|
|
||||||
s/^/# Packages using this file:/
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
# Remove this package from a list of references stored in a text file.
|
|
||||||
#
|
|
||||||
# Copyright (C) 2000 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, 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.
|
|
||||||
#
|
|
||||||
# Written by Bruno Haible <[email protected]>.
|
|
||||||
#
|
|
||||||
/^# Packages using this file: / {
|
|
||||||
s/# Packages using this file://
|
|
||||||
s/ @PACKAGE@ / /
|
|
||||||
s/^/# Packages using this file:/
|
|
||||||
}
|
|
||||||
@@ -1,142 +0,0 @@
|
|||||||
/* Implementation of the textdomain(3) function.
|
|
||||||
Copyright (C) 1995-1998, 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 Library 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. */
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
# include <libintl.h>
|
|
||||||
#else
|
|
||||||
# include "libgnuintl.h"
|
|
||||||
#endif
|
|
||||||
#include "gettextP.h"
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
/* We have to handle multi-threaded applications. */
|
|
||||||
# include <bits/libc-lock.h>
|
|
||||||
#else
|
|
||||||
/* Provide dummy implementation if this is outside glibc. */
|
|
||||||
# define __libc_rwlock_define(CLASS, NAME)
|
|
||||||
# define __libc_rwlock_wrlock(NAME)
|
|
||||||
# define __libc_rwlock_unlock(NAME)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* The internal variables in the standalone libintl.a must have different
|
|
||||||
names than the internal variables in GNU libc, otherwise programs
|
|
||||||
using libintl.a cannot be linked statically. */
|
|
||||||
#if !defined _LIBC
|
|
||||||
# define _nl_default_default_domain _nl_default_default_domain__
|
|
||||||
# define _nl_current_default_domain _nl_current_default_domain__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* @@ end of prolog @@ */
|
|
||||||
|
|
||||||
/* Name of the default text domain. */
|
|
||||||
extern const char _nl_default_default_domain[];
|
|
||||||
|
|
||||||
/* Default text domain in which entries for gettext(3) are to be found. */
|
|
||||||
extern const char *_nl_current_default_domain;
|
|
||||||
|
|
||||||
|
|
||||||
/* Names for the libintl functions are a problem. They must not clash
|
|
||||||
with existing names and they should follow ANSI C. But this source
|
|
||||||
code is also used in GNU C Library where the names have a __
|
|
||||||
prefix. So we have to make a difference here. */
|
|
||||||
#ifdef _LIBC
|
|
||||||
# define TEXTDOMAIN __textdomain
|
|
||||||
# ifndef strdup
|
|
||||||
# define strdup(str) __strdup (str)
|
|
||||||
# endif
|
|
||||||
#else
|
|
||||||
# define TEXTDOMAIN textdomain__
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Lock variable to protect the global data in the gettext implementation. */
|
|
||||||
__libc_rwlock_define (extern, _nl_state_lock)
|
|
||||||
|
|
||||||
/* Set the current default message catalog to DOMAINNAME.
|
|
||||||
If DOMAINNAME is null, return the current default.
|
|
||||||
If DOMAINNAME is "", reset to the default of "messages". */
|
|
||||||
char *
|
|
||||||
TEXTDOMAIN (domainname)
|
|
||||||
const char *domainname;
|
|
||||||
{
|
|
||||||
char *new_domain;
|
|
||||||
char *old_domain;
|
|
||||||
|
|
||||||
/* A NULL pointer requests the current setting. */
|
|
||||||
if (domainname == NULL)
|
|
||||||
return (char *) _nl_current_default_domain;
|
|
||||||
|
|
||||||
__libc_rwlock_wrlock (_nl_state_lock);
|
|
||||||
|
|
||||||
old_domain = (char *) _nl_current_default_domain;
|
|
||||||
|
|
||||||
/* If domain name is the null string set to default domain "messages". */
|
|
||||||
if (domainname[0] == '\0'
|
|
||||||
|| strcmp (domainname, _nl_default_default_domain) == 0)
|
|
||||||
{
|
|
||||||
_nl_current_default_domain = _nl_default_default_domain;
|
|
||||||
new_domain = (char *) _nl_current_default_domain;
|
|
||||||
}
|
|
||||||
else if (strcmp (domainname, old_domain) == 0)
|
|
||||||
/* This can happen and people will use it to signal that some
|
|
||||||
environment variable changed. */
|
|
||||||
new_domain = old_domain;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* If the following malloc fails `_nl_current_default_domain'
|
|
||||||
will be NULL. This value will be returned and so signals we
|
|
||||||
are out of core. */
|
|
||||||
#if defined _LIBC || defined HAVE_STRDUP
|
|
||||||
new_domain = strdup (domainname);
|
|
||||||
#else
|
|
||||||
size_t len = strlen (domainname) + 1;
|
|
||||||
new_domain = (char *) malloc (len);
|
|
||||||
if (new_domain != NULL)
|
|
||||||
memcpy (new_domain, domainname, len);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (new_domain != NULL)
|
|
||||||
_nl_current_default_domain = new_domain;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We use this possibility to signal a change of the loaded catalogs
|
|
||||||
since this is most likely the case and there is no other easy we
|
|
||||||
to do it. Do it only when the call was successful. */
|
|
||||||
if (new_domain != NULL)
|
|
||||||
{
|
|
||||||
++_nl_msg_cat_cntr;
|
|
||||||
|
|
||||||
if (old_domain != new_domain && old_domain != _nl_default_default_domain)
|
|
||||||
free (old_domain);
|
|
||||||
}
|
|
||||||
|
|
||||||
__libc_rwlock_unlock (_nl_state_lock);
|
|
||||||
|
|
||||||
return new_domain;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
|
||||||
/* Alias for function name in GNU C Library. */
|
|
||||||
weak_alias (__textdomain, textdomain);
|
|
||||||
#endif
|
|
||||||
+2
-1
@@ -1,4 +1,5 @@
|
|||||||
*_.c
|
*_.c
|
||||||
.deps
|
.deps
|
||||||
Makefile
|
Makefile
|
||||||
ansi2knr
|
ansi2knr ansi2knr.*
|
||||||
|
Makefile.in
|
||||||
|
|||||||
+12
-5
@@ -21,18 +21,25 @@ CFLAGS = @CFLAGS@ $(WARNING_CFLAGS)
|
|||||||
|
|
||||||
noinst_LIBRARIES = libbison.a
|
noinst_LIBRARIES = libbison.a
|
||||||
|
|
||||||
INCLUDES = -I.. -I$(srcdir) -I../intl
|
# 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
|
# Heck, we are still using an old version of Automake which does not
|
||||||
# understand inner AC_LIBOBJ (i.e., from Autoconf itself, not from
|
# understand LIBOBJ additions using $objext...
|
||||||
# configure.in).
|
|
||||||
EXTRA_DIST = malloc.c realloc.c strnlen.c
|
EXTRA_DIST = malloc.c realloc.c
|
||||||
|
|
||||||
libbison_a_SOURCES = \
|
libbison_a_SOURCES = \
|
||||||
basename.c dirname.h dirname.c \
|
basename.c dirname.h dirname.c \
|
||||||
getopt.h getopt.c getopt1.c \
|
getopt.h getopt.c getopt1.c \
|
||||||
|
hash.h hash.c \
|
||||||
quote.h quote.c quotearg.h quotearg.c \
|
quote.h quote.c quotearg.h quotearg.c \
|
||||||
xalloc.h xmalloc.c xstrdup.c xstrndup.c gettext.h
|
xalloc.h xmalloc.c xstrdup.c xstrndup.c
|
||||||
|
|
||||||
libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@
|
libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@
|
||||||
libbison_a_DEPENDENCIES = $(libbison_a_LIBADD)
|
libbison_a_DEPENDENCIES = $(libbison_a_LIBADD)
|
||||||
|
|||||||
-427
@@ -1,427 +0,0 @@
|
|||||||
# Makefile.in generated by automake 1.6 from Makefile.am.
|
|
||||||
# @configure_input@
|
|
||||||
|
|
||||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
@SET_MAKE@
|
|
||||||
SHELL = @SHELL@
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
|
|
||||||
bindir = @bindir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
datadir = @datadir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
libdir = @libdir@
|
|
||||||
infodir = @infodir@
|
|
||||||
mandir = @mandir@
|
|
||||||
includedir = @includedir@
|
|
||||||
oldincludedir = /usr/include
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
|
||||||
top_builddir = ..
|
|
||||||
|
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
|
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
||||||
INSTALL_HEADER = $(INSTALL_DATA)
|
|
||||||
transform = @program_transform_name@
|
|
||||||
NORMAL_INSTALL = :
|
|
||||||
PRE_INSTALL = :
|
|
||||||
POST_INSTALL = :
|
|
||||||
NORMAL_UNINSTALL = :
|
|
||||||
PRE_UNINSTALL = :
|
|
||||||
POST_UNINSTALL = :
|
|
||||||
host_alias = @host_alias@
|
|
||||||
host_triplet = @host@
|
|
||||||
|
|
||||||
EXEEXT = @EXEEXT@
|
|
||||||
OBJEXT = @OBJEXT@
|
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
|
||||||
AMTAR = @AMTAR@
|
|
||||||
AUTOM4TE = @AUTOM4TE@
|
|
||||||
AWK = @AWK@
|
|
||||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
|
||||||
CATOBJEXT = @CATOBJEXT@
|
|
||||||
CC = @CC@
|
|
||||||
CPP = @CPP@
|
|
||||||
DATADIRNAME = @DATADIRNAME@
|
|
||||||
DEPDIR = @DEPDIR@
|
|
||||||
GCC = @GCC@
|
|
||||||
GENCAT = @GENCAT@
|
|
||||||
GLIBC21 = @GLIBC21@
|
|
||||||
GMSGFMT = @GMSGFMT@
|
|
||||||
HAVE_LIB = @HAVE_LIB@
|
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
||||||
INSTOBJEXT = @INSTOBJEXT@
|
|
||||||
INTLBISON = @INTLBISON@
|
|
||||||
INTLLIBS = @INTLLIBS@
|
|
||||||
INTLOBJS = @INTLOBJS@
|
|
||||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
|
||||||
LIB = @LIB@
|
|
||||||
LIBICONV = @LIBICONV@
|
|
||||||
LIBINTL = @LIBINTL@
|
|
||||||
LTLIB = @LTLIB@
|
|
||||||
LTLIBICONV = @LTLIBICONV@
|
|
||||||
LTLIBINTL = @LTLIBINTL@
|
|
||||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
|
||||||
PACKAGE = @PACKAGE@
|
|
||||||
POSUB = @POSUB@
|
|
||||||
RANLIB = @RANLIB@
|
|
||||||
STRIP = @STRIP@
|
|
||||||
U = @U@
|
|
||||||
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
|
||||||
USE_NLS = @USE_NLS@
|
|
||||||
VERSION = @VERSION@
|
|
||||||
WARNING_CFLAGS = @WARNING_CFLAGS@
|
|
||||||
WERROR_CFLAGS = @WERROR_CFLAGS@
|
|
||||||
am__include = @am__include@
|
|
||||||
am__quote = @am__quote@
|
|
||||||
install_sh = @install_sh@
|
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = ansi2knr
|
|
||||||
|
|
||||||
CFLAGS = @CFLAGS@ $(WARNING_CFLAGS)
|
|
||||||
|
|
||||||
noinst_LIBRARIES = libbison.a
|
|
||||||
|
|
||||||
INCLUDES = -I.. -I$(srcdir) -I../intl
|
|
||||||
|
|
||||||
# Heck, we are still using an old version of Automake which does not
|
|
||||||
# understand inner AC_LIBOBJ (i.e., from Autoconf itself, not from
|
|
||||||
# configure.in).
|
|
||||||
EXTRA_DIST = malloc.c realloc.c strnlen.c
|
|
||||||
|
|
||||||
libbison_a_SOURCES = \
|
|
||||||
basename.c dirname.h dirname.c \
|
|
||||||
getopt.h getopt.c getopt1.c \
|
|
||||||
quote.h quote.c quotearg.h quotearg.c \
|
|
||||||
xalloc.h xmalloc.c xstrdup.c xstrndup.c gettext.h
|
|
||||||
|
|
||||||
|
|
||||||
libbison_a_LIBADD = @LIBOBJS@ @ALLOCA@
|
|
||||||
libbison_a_DEPENDENCIES = $(libbison_a_LIBADD)
|
|
||||||
subdir = lib
|
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
|
||||||
LIBRARIES = $(noinst_LIBRARIES)
|
|
||||||
|
|
||||||
libbison_a_AR = $(AR) cru
|
|
||||||
am_libbison_a_OBJECTS = basename$U.$(OBJEXT) dirname$U.$(OBJEXT) \
|
|
||||||
getopt$U.$(OBJEXT) getopt1$U.$(OBJEXT) quote$U.$(OBJEXT) \
|
|
||||||
quotearg$U.$(OBJEXT) xmalloc$U.$(OBJEXT) xstrdup$U.$(OBJEXT) \
|
|
||||||
xstrndup$U.$(OBJEXT)
|
|
||||||
libbison_a_OBJECTS = $(am_libbison_a_OBJECTS)
|
|
||||||
|
|
||||||
DEFS = @DEFS@
|
|
||||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
|
||||||
CPPFLAGS = @CPPFLAGS@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
LIBS = @LIBS@
|
|
||||||
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
|
|
||||||
am__depfiles_maybe = depfiles
|
|
||||||
@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/alloca.Po $(DEPDIR)/error.Po \
|
|
||||||
@AMDEP_TRUE@ $(DEPDIR)/malloc.Po $(DEPDIR)/memchr.Po \
|
|
||||||
@AMDEP_TRUE@ $(DEPDIR)/memrchr.Po $(DEPDIR)/obstack.Po \
|
|
||||||
@AMDEP_TRUE@ $(DEPDIR)/realloc.Po $(DEPDIR)/stpcpy.Po \
|
|
||||||
@AMDEP_TRUE@ $(DEPDIR)/strchr.Po $(DEPDIR)/strspn.Po \
|
|
||||||
@AMDEP_TRUE@ ./$(DEPDIR)/basename$U.Po ./$(DEPDIR)/dirname$U.Po \
|
|
||||||
@AMDEP_TRUE@ ./$(DEPDIR)/getopt$U.Po ./$(DEPDIR)/getopt1$U.Po \
|
|
||||||
@AMDEP_TRUE@ ./$(DEPDIR)/quote$U.Po ./$(DEPDIR)/quotearg$U.Po \
|
|
||||||
@AMDEP_TRUE@ ./$(DEPDIR)/xmalloc$U.Po ./$(DEPDIR)/xstrdup$U.Po \
|
|
||||||
@AMDEP_TRUE@ ./$(DEPDIR)/xstrndup$U.Po
|
|
||||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
|
||||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
||||||
CCLD = $(CC)
|
|
||||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
|
||||||
DIST_SOURCES = $(libbison_a_SOURCES)
|
|
||||||
DIST_COMMON = Makefile.am Makefile.in alloca.c ansi2knr.1 ansi2knr.c \
|
|
||||||
error.c error.h malloc.c memchr.c memrchr.c obstack.c obstack.h \
|
|
||||||
realloc.c stpcpy.c strchr.c strspn.c
|
|
||||||
SOURCES = $(libbison_a_SOURCES)
|
|
||||||
|
|
||||||
all: all-am
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
.SUFFIXES: .c .o .obj
|
|
||||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
|
||||||
cd $(top_srcdir) && \
|
|
||||||
$(AUTOMAKE) --gnu lib/Makefile
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
|
||||||
|
|
||||||
AR = ar
|
|
||||||
|
|
||||||
clean-noinstLIBRARIES:
|
|
||||||
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
|
||||||
libbison.a: $(libbison_a_OBJECTS) $(libbison_a_DEPENDENCIES)
|
|
||||||
-rm -f libbison.a
|
|
||||||
$(libbison_a_AR) libbison.a $(libbison_a_OBJECTS) $(libbison_a_LIBADD)
|
|
||||||
$(RANLIB) libbison.a
|
|
||||||
|
|
||||||
mostlyclean-compile:
|
|
||||||
-rm -f *.$(OBJEXT) core *.core
|
|
||||||
|
|
||||||
distclean-compile:
|
|
||||||
-rm -f *.tab.c
|
|
||||||
|
|
||||||
ANSI2KNR = @ANSI2KNR@
|
|
||||||
ansi2knr: ansi2knr.$(OBJEXT)
|
|
||||||
$(LINK) ansi2knr.$(OBJEXT) $(LIBS)
|
|
||||||
ansi2knr.$(OBJEXT): $(CONFIG_HEADER)
|
|
||||||
|
|
||||||
clean-krextra:
|
|
||||||
-rm -f ansi2knr
|
|
||||||
|
|
||||||
mostlyclean-kr:
|
|
||||||
-test "$U" = "" || rm -f *_.c
|
|
||||||
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/alloca.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/error.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/malloc.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memchr.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memrchr.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/obstack.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/realloc.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/stpcpy.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strchr.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strspn.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename$U.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname$U.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt$U.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1$U.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quote$U.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotearg$U.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc$U.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrdup$U.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrndup$U.Po@am__quote@
|
|
||||||
|
|
||||||
distclean-depend:
|
|
||||||
-rm -rf $(DEPDIR) ./$(DEPDIR)
|
|
||||||
|
|
||||||
.c.o:
|
|
||||||
@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
|
||||||
@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
|
||||||
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
||||||
$(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$<
|
|
||||||
|
|
||||||
.c.obj:
|
|
||||||
@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
|
||||||
@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
|
|
||||||
@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
||||||
$(COMPILE) -c `cygpath -w $<`
|
|
||||||
CCDEPMODE = @CCDEPMODE@
|
|
||||||
alloca_.c: lib/alloca.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/alloca.c; then echo $(srcdir)/lib/alloca.c; else echo lib/alloca.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > alloca_.c || rm -f alloca_.c
|
|
||||||
basename_.c: basename.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/basename.c; then echo $(srcdir)/basename.c; else echo basename.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > basename_.c || rm -f basename_.c
|
|
||||||
dirname_.c: dirname.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dirname.c; then echo $(srcdir)/dirname.c; else echo dirname.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > dirname_.c || rm -f dirname_.c
|
|
||||||
error_.c: lib/error.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/error.c; then echo $(srcdir)/lib/error.c; else echo lib/error.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > error_.c || rm -f error_.c
|
|
||||||
getopt_.c: getopt.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt.c; then echo $(srcdir)/getopt.c; else echo getopt.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt_.c || rm -f getopt_.c
|
|
||||||
getopt1_.c: getopt1.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt1.c; then echo $(srcdir)/getopt1.c; else echo getopt1.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > getopt1_.c || rm -f getopt1_.c
|
|
||||||
malloc_.c: lib/malloc.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/malloc.c; then echo $(srcdir)/lib/malloc.c; else echo lib/malloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > malloc_.c || rm -f malloc_.c
|
|
||||||
memchr_.c: lib/memchr.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/memchr.c; then echo $(srcdir)/lib/memchr.c; else echo lib/memchr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > memchr_.c || rm -f memchr_.c
|
|
||||||
memrchr_.c: lib/memrchr.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/memrchr.c; then echo $(srcdir)/lib/memrchr.c; else echo lib/memrchr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > memrchr_.c || rm -f memrchr_.c
|
|
||||||
obstack_.c: lib/obstack.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/obstack.c; then echo $(srcdir)/lib/obstack.c; else echo lib/obstack.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > obstack_.c || rm -f obstack_.c
|
|
||||||
quote_.c: quote.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quote.c; then echo $(srcdir)/quote.c; else echo quote.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > quote_.c || rm -f quote_.c
|
|
||||||
quotearg_.c: quotearg.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/quotearg.c; then echo $(srcdir)/quotearg.c; else echo quotearg.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > quotearg_.c || rm -f quotearg_.c
|
|
||||||
realloc_.c: lib/realloc.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/realloc.c; then echo $(srcdir)/lib/realloc.c; else echo lib/realloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > realloc_.c || rm -f realloc_.c
|
|
||||||
stpcpy_.c: lib/stpcpy.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/stpcpy.c; then echo $(srcdir)/lib/stpcpy.c; else echo lib/stpcpy.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > stpcpy_.c || rm -f stpcpy_.c
|
|
||||||
strchr_.c: lib/strchr.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/strchr.c; then echo $(srcdir)/lib/strchr.c; else echo lib/strchr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strchr_.c || rm -f strchr_.c
|
|
||||||
strspn_.c: lib/strspn.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib/strspn.c; then echo $(srcdir)/lib/strspn.c; else echo lib/strspn.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > strspn_.c || rm -f strspn_.c
|
|
||||||
xmalloc_.c: xmalloc.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xmalloc.c; then echo $(srcdir)/xmalloc.c; else echo xmalloc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xmalloc_.c || rm -f xmalloc_.c
|
|
||||||
xstrdup_.c: xstrdup.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrdup.c; then echo $(srcdir)/xstrdup.c; else echo xstrdup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrdup_.c || rm -f xstrdup_.c
|
|
||||||
xstrndup_.c: xstrndup.c $(ANSI2KNR)
|
|
||||||
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/xstrndup.c; then echo $(srcdir)/xstrndup.c; else echo xstrndup.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > xstrndup_.c || rm -f xstrndup_.c
|
|
||||||
alloca_.$(OBJEXT) basename_.$(OBJEXT) dirname_.$(OBJEXT) \
|
|
||||||
error_.$(OBJEXT) getopt_.$(OBJEXT) getopt1_.$(OBJEXT) malloc_.$(OBJEXT) \
|
|
||||||
memchr_.$(OBJEXT) memrchr_.$(OBJEXT) obstack_.$(OBJEXT) \
|
|
||||||
quote_.$(OBJEXT) quotearg_.$(OBJEXT) realloc_.$(OBJEXT) \
|
|
||||||
stpcpy_.$(OBJEXT) strchr_.$(OBJEXT) strspn_.$(OBJEXT) \
|
|
||||||
xmalloc_.$(OBJEXT) xstrdup_.$(OBJEXT) xstrndup_.$(OBJEXT) : $(ANSI2KNR)
|
|
||||||
uninstall-info-am:
|
|
||||||
|
|
||||||
ETAGS = etags
|
|
||||||
ETAGSFLAGS =
|
|
||||||
|
|
||||||
tags: TAGS
|
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
|
||||||
unique=`for i in $$list; do \
|
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
||||||
done | \
|
|
||||||
$(AWK) ' { files[$$0] = 1; } \
|
|
||||||
END { for (i in files) print i; }'`; \
|
|
||||||
mkid -fID $$unique
|
|
||||||
|
|
||||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|
||||||
$(TAGS_FILES) $(LISP)
|
|
||||||
tags=; \
|
|
||||||
here=`pwd`; \
|
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
|
||||||
unique=`for i in $$list; do \
|
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|
||||||
done | \
|
|
||||||
$(AWK) ' { files[$$0] = 1; } \
|
|
||||||
END { for (i in files) print i; }'`; \
|
|
||||||
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|
|
||||||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
|
||||||
$$tags $$unique
|
|
||||||
|
|
||||||
GTAGS:
|
|
||||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
|
||||||
&& cd $(top_srcdir) \
|
|
||||||
&& gtags -i $(GTAGS_ARGS) $$here
|
|
||||||
|
|
||||||
distclean-tags:
|
|
||||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
|
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
|
|
||||||
top_distdir = ..
|
|
||||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
|
||||||
@for file in $(DISTFILES); do \
|
|
||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|
||||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
||||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
|
||||||
dir="/$$dir"; \
|
|
||||||
$(mkinstalldirs) "$(distdir)$$dir"; \
|
|
||||||
else \
|
|
||||||
dir=''; \
|
|
||||||
fi; \
|
|
||||||
if test -d $$d/$$file; then \
|
|
||||||
cp -pR $$d/$$file $(distdir)$$dir \
|
|
||||||
|| exit 1; \
|
|
||||||
else \
|
|
||||||
test -f $(distdir)/$$file \
|
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|
||||||
|| exit 1; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
check-am: all-am
|
|
||||||
check: check-am
|
|
||||||
all-am: Makefile $(ANSI2KNR) $(LIBRARIES)
|
|
||||||
|
|
||||||
installdirs:
|
|
||||||
|
|
||||||
install: install-am
|
|
||||||
install-exec: install-exec-am
|
|
||||||
install-data: install-data-am
|
|
||||||
uninstall: uninstall-am
|
|
||||||
|
|
||||||
install-am: all-am
|
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
||||||
|
|
||||||
installcheck: installcheck-am
|
|
||||||
install-strip:
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
||||||
INSTALL_STRIP_FLAG=-s \
|
|
||||||
`test -z '$(STRIP)' || \
|
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
|
||||||
mostlyclean-generic:
|
|
||||||
|
|
||||||
clean-generic:
|
|
||||||
|
|
||||||
distclean-generic:
|
|
||||||
-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
|
||||||
@echo "This command is intended for maintainers to use"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
clean: clean-am
|
|
||||||
|
|
||||||
clean-am: clean-generic clean-krextra clean-noinstLIBRARIES \
|
|
||||||
mostlyclean-am
|
|
||||||
|
|
||||||
distclean: distclean-am
|
|
||||||
|
|
||||||
distclean-am: clean-am distclean-compile distclean-depend \
|
|
||||||
distclean-generic distclean-tags
|
|
||||||
|
|
||||||
dvi: dvi-am
|
|
||||||
|
|
||||||
dvi-am:
|
|
||||||
|
|
||||||
info: info-am
|
|
||||||
|
|
||||||
info-am:
|
|
||||||
|
|
||||||
install-data-am:
|
|
||||||
|
|
||||||
install-exec-am:
|
|
||||||
|
|
||||||
install-info: install-info-am
|
|
||||||
|
|
||||||
install-man:
|
|
||||||
|
|
||||||
installcheck-am:
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
|
||||||
|
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
|
||||||
|
|
||||||
mostlyclean: mostlyclean-am
|
|
||||||
|
|
||||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
|
|
||||||
|
|
||||||
uninstall-am: uninstall-info-am
|
|
||||||
|
|
||||||
.PHONY: GTAGS all all-am check check-am clean clean-generic \
|
|
||||||
clean-krextra clean-noinstLIBRARIES distclean distclean-compile \
|
|
||||||
distclean-depend distclean-generic distclean-tags distdir dvi \
|
|
||||||
dvi-am info info-am install install-am install-data \
|
|
||||||
install-data-am install-exec install-exec-am install-info \
|
|
||||||
install-info-am install-man install-strip installcheck \
|
|
||||||
installcheck-am installdirs maintainer-clean \
|
|
||||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
|
||||||
mostlyclean-generic mostlyclean-kr tags uninstall uninstall-am \
|
|
||||||
uninstall-info-am
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
||||||
.NOEXPORT:
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
.TH ANSI2KNR 1 "19 Jan 1996"
|
|
||||||
.SH NAME
|
|
||||||
ansi2knr \- convert ANSI C to Kernighan & Ritchie C
|
|
||||||
.SH SYNOPSIS
|
|
||||||
.I ansi2knr
|
|
||||||
[--varargs] input_file [output_file]
|
|
||||||
.SH DESCRIPTION
|
|
||||||
If no output_file is supplied, output goes to stdout.
|
|
||||||
.br
|
|
||||||
There are no error messages.
|
|
||||||
.sp
|
|
||||||
.I ansi2knr
|
|
||||||
recognizes function definitions by seeing a non-keyword identifier at the left
|
|
||||||
margin, followed by a left parenthesis, with a right parenthesis as the last
|
|
||||||
character on the line, and with a left brace as the first token on the
|
|
||||||
following line (ignoring possible intervening comments). It will recognize a
|
|
||||||
multi-line header provided that no intervening line ends with a left or right
|
|
||||||
brace or a semicolon. These algorithms ignore whitespace and comments, except
|
|
||||||
that the function name must be the first thing on the line.
|
|
||||||
.sp
|
|
||||||
The following constructs will confuse it:
|
|
||||||
.br
|
|
||||||
- Any other construct that starts at the left margin and follows the
|
|
||||||
above syntax (such as a macro or function call).
|
|
||||||
.br
|
|
||||||
- Some macros that tinker with the syntax of the function header.
|
|
||||||
.sp
|
|
||||||
The --varargs switch is obsolete, and is recognized only for
|
|
||||||
backwards compatibility. The present version of
|
|
||||||
.I ansi2knr
|
|
||||||
will always attempt to convert a ... argument to va_alist and va_dcl.
|
|
||||||
.SH AUTHOR
|
|
||||||
L. Peter Deutsch <[email protected]> wrote the original ansi2knr and
|
|
||||||
continues to maintain the current version; most of the code in the current
|
|
||||||
version is his work. ansi2knr also includes contributions by Francois
|
|
||||||
Pinard <[email protected]> and Jim Avera <[email protected]>.
|
|
||||||
-739
@@ -1,739 +0,0 @@
|
|||||||
/* Copyright (C) 1989, 2000 Aladdin Enterprises. All rights reserved. */
|
|
||||||
|
|
||||||
/*$Id$*/
|
|
||||||
/* Convert ANSI C function definitions to K&R ("traditional C") syntax */
|
|
||||||
|
|
||||||
/*
|
|
||||||
ansi2knr is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
WARRANTY. No author or distributor accepts responsibility to anyone for the
|
|
||||||
consequences of using it or for whether it serves any particular purpose or
|
|
||||||
works at all, unless he says so in writing. Refer to the GNU General Public
|
|
||||||
License (the "GPL") for full details.
|
|
||||||
|
|
||||||
Everyone is granted permission to copy, modify and redistribute ansi2knr,
|
|
||||||
but only under the conditions described in the GPL. A copy of this license
|
|
||||||
is supposed to have been given to you along with ansi2knr so you can know
|
|
||||||
your rights and responsibilities. It should be in a file named COPYLEFT,
|
|
||||||
or, if there is no file named COPYLEFT, a file named COPYING. Among other
|
|
||||||
things, the copyright notice and this notice must be preserved on all
|
|
||||||
copies.
|
|
||||||
|
|
||||||
We explicitly state here what we believe is already implied by the GPL: if
|
|
||||||
the ansi2knr program is distributed as a separate set of sources and a
|
|
||||||
separate executable file which are aggregated on a storage medium together
|
|
||||||
with another program, this in itself does not bring the other program under
|
|
||||||
the GPL, nor does the mere fact that such a program or the procedures for
|
|
||||||
constructing it invoke the ansi2knr executable bring any other part of the
|
|
||||||
program under the GPL.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Usage:
|
|
||||||
ansi2knr [--filename FILENAME] [INPUT_FILE [OUTPUT_FILE]]
|
|
||||||
* --filename provides the file name for the #line directive in the output,
|
|
||||||
* overriding input_file (if present).
|
|
||||||
* If no input_file is supplied, input is read from stdin.
|
|
||||||
* If no output_file is supplied, output goes to stdout.
|
|
||||||
* There are no error messages.
|
|
||||||
*
|
|
||||||
* ansi2knr recognizes function definitions by seeing a non-keyword
|
|
||||||
* identifier at the left margin, followed by a left parenthesis, with a
|
|
||||||
* right parenthesis as the last character on the line, and with a left
|
|
||||||
* brace as the first token on the following line (ignoring possible
|
|
||||||
* intervening comments and/or preprocessor directives), except that a line
|
|
||||||
* consisting of only
|
|
||||||
* identifier1(identifier2)
|
|
||||||
* will not be considered a function definition unless identifier2 is
|
|
||||||
* the word "void", and a line consisting of
|
|
||||||
* identifier1(identifier2, <<arbitrary>>)
|
|
||||||
* will not be considered a function definition.
|
|
||||||
* ansi2knr will recognize a multi-line header provided that no intervening
|
|
||||||
* line ends with a left or right brace or a semicolon. These algorithms
|
|
||||||
* ignore whitespace, comments, and preprocessor directives, except that
|
|
||||||
* the function name must be the first thing on the line. The following
|
|
||||||
* constructs will confuse it:
|
|
||||||
* - Any other construct that starts at the left margin and
|
|
||||||
* follows the above syntax (such as a macro or function call).
|
|
||||||
* - Some macros that tinker with the syntax of function headers.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The original and principal author of ansi2knr is L. Peter Deutsch
|
|
||||||
* <[email protected]>. Other authors are noted in the change history
|
|
||||||
* that follows (in reverse chronological order):
|
|
||||||
|
|
||||||
lpd 2000-04-12 backs out Eggert's changes because of bugs:
|
|
||||||
- concatlits didn't declare the type of its bufend argument;
|
|
||||||
- concatlits didn't't recognize when it was inside a comment;
|
|
||||||
- scanstring could scan backward past the beginning of the string; when
|
|
||||||
- the check for \ + newline in scanstring was unnecessary.
|
|
||||||
|
|
||||||
2000-03-05 Paul Eggert <[email protected]>
|
|
||||||
|
|
||||||
Add support for concatenated string literals.
|
|
||||||
* ansi2knr.c (concatlits): New decl.
|
|
||||||
(main): Invoke concatlits to concatenate string literals.
|
|
||||||
(scanstring): Handle backslash-newline correctly. Work with
|
|
||||||
character constants. Fix bug when scanning backwards through
|
|
||||||
backslash-quote. Check for unterminated strings.
|
|
||||||
(convert1): Parse character constants, too.
|
|
||||||
(appendline, concatlits): New functions.
|
|
||||||
* ansi2knr.1: Document this.
|
|
||||||
|
|
||||||
lpd 1999-08-17 added code to allow preprocessor directives
|
|
||||||
wherever comments are allowed
|
|
||||||
lpd 1999-04-12 added minor fixes from Pavel Roskin
|
|
||||||
<[email protected]> for clean compilation with
|
|
||||||
gcc -W -Wall
|
|
||||||
lpd 1999-03-22 added hack to recognize lines consisting of
|
|
||||||
identifier1(identifier2, xxx) as *not* being procedures
|
|
||||||
lpd 1999-02-03 made indentation of preprocessor commands consistent
|
|
||||||
lpd 1999-01-28 fixed two bugs: a '/' in an argument list caused an
|
|
||||||
endless loop; quoted strings within an argument list
|
|
||||||
confused the parser
|
|
||||||
lpd 1999-01-24 added a check for write errors on the output,
|
|
||||||
suggested by Jim Meyering <[email protected]>
|
|
||||||
lpd 1998-11-09 added further hack to recognize identifier(void)
|
|
||||||
as being a procedure
|
|
||||||
lpd 1998-10-23 added hack to recognize lines consisting of
|
|
||||||
identifier1(identifier2) as *not* being procedures
|
|
||||||
lpd 1997-12-08 made input_file optional; only closes input and/or
|
|
||||||
output file if not stdin or stdout respectively; prints
|
|
||||||
usage message on stderr rather than stdout; adds
|
|
||||||
--filename switch (changes suggested by
|
|
||||||
<[email protected]>)
|
|
||||||
lpd 1996-01-21 added code to cope with not HAVE_CONFIG_H and with
|
|
||||||
compilers that don't understand void, as suggested by
|
|
||||||
Tom Lane
|
|
||||||
lpd 1996-01-15 changed to require that the first non-comment token
|
|
||||||
on the line following a function header be a left brace,
|
|
||||||
to reduce sensitivity to macros, as suggested by Tom Lane
|
|
||||||
<[email protected]>
|
|
||||||
lpd 1995-06-22 removed #ifndefs whose sole purpose was to define
|
|
||||||
undefined preprocessor symbols as 0; changed all #ifdefs
|
|
||||||
for configuration symbols to #ifs
|
|
||||||
lpd 1995-04-05 changed copyright notice to make it clear that
|
|
||||||
including ansi2knr in a program does not bring the entire
|
|
||||||
program under the GPL
|
|
||||||
lpd 1994-12-18 added conditionals for systems where ctype macros
|
|
||||||
don't handle 8-bit characters properly, suggested by
|
|
||||||
Francois Pinard <[email protected]>;
|
|
||||||
removed --varargs switch (this is now the default)
|
|
||||||
lpd 1994-10-10 removed CONFIG_BROKETS conditional
|
|
||||||
lpd 1994-07-16 added some conditionals to help GNU `configure',
|
|
||||||
suggested by Francois Pinard <[email protected]>;
|
|
||||||
properly erase prototype args in function parameters,
|
|
||||||
contributed by Jim Avera <[email protected]>;
|
|
||||||
correct error in writeblanks (it shouldn't erase EOLs)
|
|
||||||
lpd 1989-xx-xx original version
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Most of the conditionals here are to make ansi2knr work with */
|
|
||||||
/* or without the GNU configure machinery. */
|
|
||||||
|
|
||||||
#if HAVE_CONFIG_H
|
|
||||||
# include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
|
|
||||||
#if HAVE_CONFIG_H
|
|
||||||
|
|
||||||
/*
|
|
||||||
For properly autoconfiguring ansi2knr, use AC_CONFIG_HEADER(config.h).
|
|
||||||
This will define HAVE_CONFIG_H and so, activate the following lines.
|
|
||||||
*/
|
|
||||||
|
|
||||||
# if STDC_HEADERS || HAVE_STRING_H
|
|
||||||
# include <string.h>
|
|
||||||
# else
|
|
||||||
# include <strings.h>
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#else /* not HAVE_CONFIG_H */
|
|
||||||
|
|
||||||
/* Otherwise do it the hard way */
|
|
||||||
|
|
||||||
# ifdef BSD
|
|
||||||
# include <strings.h>
|
|
||||||
# else
|
|
||||||
# ifdef VMS
|
|
||||||
extern int strlen(), strncmp();
|
|
||||||
# else
|
|
||||||
# include <string.h>
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#endif /* not HAVE_CONFIG_H */
|
|
||||||
|
|
||||||
#if STDC_HEADERS
|
|
||||||
# include <stdlib.h>
|
|
||||||
#else
|
|
||||||
/*
|
|
||||||
malloc and free should be declared in stdlib.h,
|
|
||||||
but if you've got a K&R compiler, they probably aren't.
|
|
||||||
*/
|
|
||||||
# ifdef MSDOS
|
|
||||||
# include <malloc.h>
|
|
||||||
# else
|
|
||||||
# ifdef VMS
|
|
||||||
extern char *malloc();
|
|
||||||
extern void free();
|
|
||||||
# else
|
|
||||||
extern char *malloc();
|
|
||||||
extern int free();
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define NULL (for *very* old compilers). */
|
|
||||||
#ifndef NULL
|
|
||||||
# define NULL (0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The ctype macros don't always handle 8-bit characters correctly.
|
|
||||||
* Compensate for this here.
|
|
||||||
*/
|
|
||||||
#ifdef isascii
|
|
||||||
# undef HAVE_ISASCII /* just in case */
|
|
||||||
# define HAVE_ISASCII 1
|
|
||||||
#else
|
|
||||||
#endif
|
|
||||||
#if STDC_HEADERS || !HAVE_ISASCII
|
|
||||||
# define is_ascii(c) 1
|
|
||||||
#else
|
|
||||||
# define is_ascii(c) isascii(c)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define is_space(c) (is_ascii(c) && isspace(c))
|
|
||||||
#define is_alpha(c) (is_ascii(c) && isalpha(c))
|
|
||||||
#define is_alnum(c) (is_ascii(c) && isalnum(c))
|
|
||||||
|
|
||||||
/* Scanning macros */
|
|
||||||
#define isidchar(ch) (is_alnum(ch) || (ch) == '_')
|
|
||||||
#define isidfirstchar(ch) (is_alpha(ch) || (ch) == '_')
|
|
||||||
|
|
||||||
/* Forward references */
|
|
||||||
char *ppdirforward();
|
|
||||||
char *ppdirbackward();
|
|
||||||
char *skipspace();
|
|
||||||
char *scanstring();
|
|
||||||
int writeblanks();
|
|
||||||
int test1();
|
|
||||||
int convert1();
|
|
||||||
|
|
||||||
/* The main program */
|
|
||||||
int
|
|
||||||
main(argc, argv)
|
|
||||||
int argc;
|
|
||||||
char *argv[];
|
|
||||||
{ FILE *in = stdin;
|
|
||||||
FILE *out = stdout;
|
|
||||||
char *filename = 0;
|
|
||||||
char *program_name = argv[0];
|
|
||||||
char *output_name = 0;
|
|
||||||
#define bufsize 5000 /* arbitrary size */
|
|
||||||
char *buf;
|
|
||||||
char *line;
|
|
||||||
char *more;
|
|
||||||
char *usage =
|
|
||||||
"Usage: ansi2knr [--filename FILENAME] [INPUT_FILE [OUTPUT_FILE]]\n";
|
|
||||||
/*
|
|
||||||
* In previous versions, ansi2knr recognized a --varargs switch.
|
|
||||||
* If this switch was supplied, ansi2knr would attempt to convert
|
|
||||||
* a ... argument to va_alist and va_dcl; if this switch was not
|
|
||||||
* supplied, ansi2knr would simply drop any such arguments.
|
|
||||||
* Now, ansi2knr always does this conversion, and we only
|
|
||||||
* check for this switch for backward compatibility.
|
|
||||||
*/
|
|
||||||
int convert_varargs = 1;
|
|
||||||
int output_error;
|
|
||||||
|
|
||||||
while ( argc > 1 && argv[1][0] == '-' ) {
|
|
||||||
if ( !strcmp(argv[1], "--varargs") ) {
|
|
||||||
convert_varargs = 1;
|
|
||||||
argc--;
|
|
||||||
argv++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if ( !strcmp(argv[1], "--filename") && argc > 2 ) {
|
|
||||||
filename = argv[2];
|
|
||||||
argc -= 2;
|
|
||||||
argv += 2;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
fprintf(stderr, "%s: Unrecognized switch: %s\n", program_name,
|
|
||||||
argv[1]);
|
|
||||||
fprintf(stderr, usage);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
switch ( argc )
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
fprintf(stderr, usage);
|
|
||||||
exit(0);
|
|
||||||
case 3:
|
|
||||||
output_name = argv[2];
|
|
||||||
out = fopen(output_name, "w");
|
|
||||||
if ( out == NULL ) {
|
|
||||||
fprintf(stderr, "%s: Cannot open output file %s\n",
|
|
||||||
program_name, output_name);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
/* falls through */
|
|
||||||
case 2:
|
|
||||||
in = fopen(argv[1], "r");
|
|
||||||
if ( in == NULL ) {
|
|
||||||
fprintf(stderr, "%s: Cannot open input file %s\n",
|
|
||||||
program_name, argv[1]);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
if ( filename == 0 )
|
|
||||||
filename = argv[1];
|
|
||||||
/* falls through */
|
|
||||||
case 1:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if ( filename )
|
|
||||||
fprintf(out, "#line 1 \"%s\"\n", filename);
|
|
||||||
buf = malloc(bufsize);
|
|
||||||
if ( buf == NULL )
|
|
||||||
{
|
|
||||||
fprintf(stderr, "Unable to allocate read buffer!\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
line = buf;
|
|
||||||
while ( fgets(line, (unsigned)(buf + bufsize - line), in) != NULL )
|
|
||||||
{
|
|
||||||
test: line += strlen(line);
|
|
||||||
switch ( test1(buf) )
|
|
||||||
{
|
|
||||||
case 2: /* a function header */
|
|
||||||
convert1(buf, out, 1, convert_varargs);
|
|
||||||
break;
|
|
||||||
case 1: /* a function */
|
|
||||||
/* Check for a { at the start of the next line. */
|
|
||||||
more = ++line;
|
|
||||||
f: if ( line >= buf + (bufsize - 1) ) /* overflow check */
|
|
||||||
goto wl;
|
|
||||||
if ( fgets(line, (unsigned)(buf + bufsize - line), in) == NULL )
|
|
||||||
goto wl;
|
|
||||||
switch ( *skipspace(ppdirforward(more), 1) )
|
|
||||||
{
|
|
||||||
case '{':
|
|
||||||
/* Definitely a function header. */
|
|
||||||
convert1(buf, out, 0, convert_varargs);
|
|
||||||
fputs(more, out);
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
/* The next line was blank or a comment: */
|
|
||||||
/* keep scanning for a non-comment. */
|
|
||||||
line += strlen(line);
|
|
||||||
goto f;
|
|
||||||
default:
|
|
||||||
/* buf isn't a function header, but */
|
|
||||||
/* more might be. */
|
|
||||||
fputs(buf, out);
|
|
||||||
strcpy(buf, more);
|
|
||||||
line = buf;
|
|
||||||
goto test;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case -1: /* maybe the start of a function */
|
|
||||||
if ( line != buf + (bufsize - 1) ) /* overflow check */
|
|
||||||
continue;
|
|
||||||
/* falls through */
|
|
||||||
default: /* not a function */
|
|
||||||
wl: fputs(buf, out);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
line = buf;
|
|
||||||
}
|
|
||||||
if ( line != buf )
|
|
||||||
fputs(buf, out);
|
|
||||||
free(buf);
|
|
||||||
if ( output_name ) {
|
|
||||||
output_error = ferror(out);
|
|
||||||
output_error |= fclose(out);
|
|
||||||
} else { /* out == stdout */
|
|
||||||
fflush(out);
|
|
||||||
output_error = ferror(out);
|
|
||||||
}
|
|
||||||
if ( output_error ) {
|
|
||||||
fprintf(stderr, "%s: error writing to %s\n", program_name,
|
|
||||||
(output_name ? output_name : "stdout"));
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
if ( in != stdin )
|
|
||||||
fclose(in);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Skip forward or backward over one or more preprocessor directives.
|
|
||||||
*/
|
|
||||||
char *
|
|
||||||
ppdirforward(p)
|
|
||||||
char *p;
|
|
||||||
{
|
|
||||||
for (; *p == '#'; ++p) {
|
|
||||||
for (; *p != '\r' && *p != '\n'; ++p)
|
|
||||||
if (*p == 0)
|
|
||||||
return p;
|
|
||||||
if (*p == '\r' && p[1] == '\n')
|
|
||||||
++p;
|
|
||||||
}
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
char *
|
|
||||||
ppdirbackward(p, limit)
|
|
||||||
char *p;
|
|
||||||
char *limit;
|
|
||||||
{
|
|
||||||
char *np = p;
|
|
||||||
|
|
||||||
for (;; p = --np) {
|
|
||||||
if (*np == '\n' && np[-1] == '\r')
|
|
||||||
--np;
|
|
||||||
for (; np > limit && np[-1] != '\r' && np[-1] != '\n'; --np)
|
|
||||||
if (np[-1] == 0)
|
|
||||||
return np;
|
|
||||||
if (*np != '#')
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Skip over whitespace, comments, and preprocessor directives,
|
|
||||||
* in either direction.
|
|
||||||
*/
|
|
||||||
char *
|
|
||||||
skipspace(p, dir)
|
|
||||||
char *p;
|
|
||||||
int dir; /* 1 for forward, -1 for backward */
|
|
||||||
{
|
|
||||||
for ( ; ; ) {
|
|
||||||
while ( is_space(*p) )
|
|
||||||
p += dir;
|
|
||||||
if ( !(*p == '/' && p[dir] == '*') )
|
|
||||||
break;
|
|
||||||
p += dir; p += dir;
|
|
||||||
while ( !(*p == '*' && p[dir] == '/') ) {
|
|
||||||
if ( *p == 0 )
|
|
||||||
return p; /* multi-line comment?? */
|
|
||||||
p += dir;
|
|
||||||
}
|
|
||||||
p += dir; p += dir;
|
|
||||||
}
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scan over a quoted string, in either direction. */
|
|
||||||
char *
|
|
||||||
scanstring(p, dir)
|
|
||||||
char *p;
|
|
||||||
int dir;
|
|
||||||
{
|
|
||||||
for (p += dir; ; p += dir)
|
|
||||||
if (*p == '"' && p[-dir] != '\\')
|
|
||||||
return p + dir;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Write blanks over part of a string.
|
|
||||||
* Don't overwrite end-of-line characters.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
writeblanks(start, end)
|
|
||||||
char *start;
|
|
||||||
char *end;
|
|
||||||
{ char *p;
|
|
||||||
for ( p = start; p < end; p++ )
|
|
||||||
if ( *p != '\r' && *p != '\n' )
|
|
||||||
*p = ' ';
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Test whether the string in buf is a function definition.
|
|
||||||
* The string may contain and/or end with a newline.
|
|
||||||
* Return as follows:
|
|
||||||
* 0 - definitely not a function definition;
|
|
||||||
* 1 - definitely a function definition;
|
|
||||||
* 2 - definitely a function prototype (NOT USED);
|
|
||||||
* -1 - may be the beginning of a function definition,
|
|
||||||
* append another line and look again.
|
|
||||||
* The reason we don't attempt to convert function prototypes is that
|
|
||||||
* Ghostscript's declaration-generating macros look too much like
|
|
||||||
* prototypes, and confuse the algorithms.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
test1(buf)
|
|
||||||
char *buf;
|
|
||||||
{ char *p = buf;
|
|
||||||
char *bend;
|
|
||||||
char *endfn;
|
|
||||||
int contin;
|
|
||||||
|
|
||||||
if ( !isidfirstchar(*p) )
|
|
||||||
return 0; /* no name at left margin */
|
|
||||||
bend = skipspace(ppdirbackward(buf + strlen(buf) - 1, buf), -1);
|
|
||||||
switch ( *bend )
|
|
||||||
{
|
|
||||||
case ';': contin = 0 /*2*/; break;
|
|
||||||
case ')': contin = 1; break;
|
|
||||||
case '{': return 0; /* not a function */
|
|
||||||
case '}': return 0; /* not a function */
|
|
||||||
default: contin = -1;
|
|
||||||
}
|
|
||||||
while ( isidchar(*p) )
|
|
||||||
p++;
|
|
||||||
endfn = p;
|
|
||||||
p = skipspace(p, 1);
|
|
||||||
if ( *p++ != '(' )
|
|
||||||
return 0; /* not a function */
|
|
||||||
p = skipspace(p, 1);
|
|
||||||
if ( *p == ')' )
|
|
||||||
return 0; /* no parameters */
|
|
||||||
/* Check that the apparent function name isn't a keyword. */
|
|
||||||
/* We only need to check for keywords that could be followed */
|
|
||||||
/* by a left parenthesis (which, unfortunately, is most of them). */
|
|
||||||
{ static char *words[] =
|
|
||||||
{ "asm", "auto", "case", "char", "const", "double",
|
|
||||||
"extern", "float", "for", "if", "int", "long",
|
|
||||||
"register", "return", "short", "signed", "sizeof",
|
|
||||||
"static", "switch", "typedef", "unsigned",
|
|
||||||
"void", "volatile", "while", 0
|
|
||||||
};
|
|
||||||
char **key = words;
|
|
||||||
char *kp;
|
|
||||||
unsigned len = endfn - buf;
|
|
||||||
|
|
||||||
while ( (kp = *key) != 0 )
|
|
||||||
{ if ( strlen(kp) == len && !strncmp(kp, buf, len) )
|
|
||||||
return 0; /* name is a keyword */
|
|
||||||
key++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
char *id = p;
|
|
||||||
int len;
|
|
||||||
/*
|
|
||||||
* Check for identifier1(identifier2) and not
|
|
||||||
* identifier1(void), or identifier1(identifier2, xxxx).
|
|
||||||
*/
|
|
||||||
|
|
||||||
while ( isidchar(*p) )
|
|
||||||
p++;
|
|
||||||
len = p - id;
|
|
||||||
p = skipspace(p, 1);
|
|
||||||
if (*p == ',' ||
|
|
||||||
(*p == ')' && (len != 4 || strncmp(id, "void", 4)))
|
|
||||||
)
|
|
||||||
return 0; /* not a function */
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* If the last significant character was a ), we need to count
|
|
||||||
* parentheses, because it might be part of a formal parameter
|
|
||||||
* that is a procedure.
|
|
||||||
*/
|
|
||||||
if (contin > 0) {
|
|
||||||
int level = 0;
|
|
||||||
|
|
||||||
for (p = skipspace(buf, 1); *p; p = skipspace(p + 1, 1))
|
|
||||||
level += (*p == '(' ? 1 : *p == ')' ? -1 : 0);
|
|
||||||
if (level > 0)
|
|
||||||
contin = -1;
|
|
||||||
}
|
|
||||||
return contin;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Convert a recognized function definition or header to K&R syntax. */
|
|
||||||
int
|
|
||||||
convert1(buf, out, header, convert_varargs)
|
|
||||||
char *buf;
|
|
||||||
FILE *out;
|
|
||||||
int header; /* Boolean */
|
|
||||||
int convert_varargs; /* Boolean */
|
|
||||||
{ char *endfn;
|
|
||||||
char *p;
|
|
||||||
/*
|
|
||||||
* The breaks table contains pointers to the beginning and end
|
|
||||||
* of each argument.
|
|
||||||
*/
|
|
||||||
char **breaks;
|
|
||||||
unsigned num_breaks = 2; /* for testing */
|
|
||||||
char **btop;
|
|
||||||
char **bp;
|
|
||||||
char **ap;
|
|
||||||
char *vararg = 0;
|
|
||||||
|
|
||||||
/* Pre-ANSI implementations don't agree on whether strchr */
|
|
||||||
/* is called strchr or index, so we open-code it here. */
|
|
||||||
for ( endfn = buf; *(endfn++) != '('; )
|
|
||||||
;
|
|
||||||
top: p = endfn;
|
|
||||||
breaks = (char **)malloc(sizeof(char *) * num_breaks * 2);
|
|
||||||
if ( breaks == NULL )
|
|
||||||
{ /* Couldn't allocate break table, give up */
|
|
||||||
fprintf(stderr, "Unable to allocate break table!\n");
|
|
||||||
fputs(buf, out);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
btop = breaks + num_breaks * 2 - 2;
|
|
||||||
bp = breaks;
|
|
||||||
/* Parse the argument list */
|
|
||||||
do
|
|
||||||
{ int level = 0;
|
|
||||||
char *lp = NULL;
|
|
||||||
char *rp = NULL;
|
|
||||||
char *end = NULL;
|
|
||||||
|
|
||||||
if ( bp >= btop )
|
|
||||||
{ /* Filled up break table. */
|
|
||||||
/* Allocate a bigger one and start over. */
|
|
||||||
free((char *)breaks);
|
|
||||||
num_breaks <<= 1;
|
|
||||||
goto top;
|
|
||||||
}
|
|
||||||
*bp++ = p;
|
|
||||||
/* Find the end of the argument */
|
|
||||||
for ( ; end == NULL; p++ )
|
|
||||||
{ switch(*p)
|
|
||||||
{
|
|
||||||
case ',':
|
|
||||||
if ( !level ) end = p;
|
|
||||||
break;
|
|
||||||
case '(':
|
|
||||||
if ( !level ) lp = p;
|
|
||||||
level++;
|
|
||||||
break;
|
|
||||||
case ')':
|
|
||||||
if ( --level < 0 ) end = p;
|
|
||||||
else rp = p;
|
|
||||||
break;
|
|
||||||
case '/':
|
|
||||||
if (p[1] == '*')
|
|
||||||
p = skipspace(p, 1) - 1;
|
|
||||||
break;
|
|
||||||
case '"':
|
|
||||||
p = scanstring(p, 1) - 1;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* Erase any embedded prototype parameters. */
|
|
||||||
if ( lp && rp )
|
|
||||||
writeblanks(lp + 1, rp);
|
|
||||||
p--; /* back up over terminator */
|
|
||||||
/* Find the name being declared. */
|
|
||||||
/* This is complicated because of procedure and */
|
|
||||||
/* array modifiers. */
|
|
||||||
for ( ; ; )
|
|
||||||
{ p = skipspace(p - 1, -1);
|
|
||||||
switch ( *p )
|
|
||||||
{
|
|
||||||
case ']': /* skip array dimension(s) */
|
|
||||||
case ')': /* skip procedure args OR name */
|
|
||||||
{ int level = 1;
|
|
||||||
while ( level )
|
|
||||||
switch ( *--p )
|
|
||||||
{
|
|
||||||
case ']': case ')':
|
|
||||||
level++;
|
|
||||||
break;
|
|
||||||
case '[': case '(':
|
|
||||||
level--;
|
|
||||||
break;
|
|
||||||
case '/':
|
|
||||||
if (p > buf && p[-1] == '*')
|
|
||||||
p = skipspace(p, -1) + 1;
|
|
||||||
break;
|
|
||||||
case '"':
|
|
||||||
p = scanstring(p, -1) + 1;
|
|
||||||
break;
|
|
||||||
default: ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( *p == '(' && *skipspace(p + 1, 1) == '*' )
|
|
||||||
{ /* We found the name being declared */
|
|
||||||
while ( !isidfirstchar(*p) )
|
|
||||||
p = skipspace(p, 1) + 1;
|
|
||||||
goto found;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
goto found;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
found: if ( *p == '.' && p[-1] == '.' && p[-2] == '.' )
|
|
||||||
{ if ( convert_varargs )
|
|
||||||
{ *bp++ = "va_alist";
|
|
||||||
vararg = p-2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ p++;
|
|
||||||
if ( bp == breaks + 1 ) /* sole argument */
|
|
||||||
writeblanks(breaks[0], p);
|
|
||||||
else
|
|
||||||
writeblanks(bp[-1] - 1, p);
|
|
||||||
bp--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ while ( isidchar(*p) ) p--;
|
|
||||||
*bp++ = p+1;
|
|
||||||
}
|
|
||||||
p = end;
|
|
||||||
}
|
|
||||||
while ( *p++ == ',' );
|
|
||||||
*bp = p;
|
|
||||||
/* Make a special check for 'void' arglist */
|
|
||||||
if ( bp == breaks+2 )
|
|
||||||
{ p = skipspace(breaks[0], 1);
|
|
||||||
if ( !strncmp(p, "void", 4) )
|
|
||||||
{ p = skipspace(p+4, 1);
|
|
||||||
if ( p == breaks[2] - 1 )
|
|
||||||
{ bp = breaks; /* yup, pretend arglist is empty */
|
|
||||||
writeblanks(breaks[0], p + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* Put out the function name and left parenthesis. */
|
|
||||||
p = buf;
|
|
||||||
while ( p != endfn ) putc(*p, out), p++;
|
|
||||||
/* Put out the declaration. */
|
|
||||||
if ( header )
|
|
||||||
{ fputs(");", out);
|
|
||||||
for ( p = breaks[0]; *p; p++ )
|
|
||||||
if ( *p == '\r' || *p == '\n' )
|
|
||||||
putc(*p, out);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{ for ( ap = breaks+1; ap < bp; ap += 2 )
|
|
||||||
{ p = *ap;
|
|
||||||
while ( isidchar(*p) )
|
|
||||||
putc(*p, out), p++;
|
|
||||||
if ( ap < bp - 1 )
|
|
||||||
fputs(", ", out);
|
|
||||||
}
|
|
||||||
fputs(") ", out);
|
|
||||||
/* Put out the argument declarations */
|
|
||||||
for ( ap = breaks+2; ap <= bp; ap += 2 )
|
|
||||||
(*ap)[-1] = ';';
|
|
||||||
if ( vararg != 0 )
|
|
||||||
{ *vararg = 0;
|
|
||||||
fputs(breaks[0], out); /* any prior args */
|
|
||||||
fputs("va_dcl", out); /* the final arg */
|
|
||||||
fputs(bp[0], out);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
fputs(breaks[0], out);
|
|
||||||
}
|
|
||||||
free((char *)breaks);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
/* Convenience header for conditional use of GNU <libintl.h>.
|
|
||||||
Copyright (C) 1995-1998, 2000-2002 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, 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. */
|
|
||||||
|
|
||||||
#ifndef _LIBGETTEXT_H
|
|
||||||
#define _LIBGETTEXT_H 1
|
|
||||||
|
|
||||||
/* NLS can be disabled through the configure --disable-nls option. */
|
|
||||||
#if ENABLE_NLS
|
|
||||||
|
|
||||||
/* Get declarations of GNU message catalog functions. */
|
|
||||||
# include <libintl.h>
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
/* Disabled NLS.
|
|
||||||
The casts to 'const char *' serve the purpose of producing warnings
|
|
||||||
for invalid uses of the value returned from these functions.
|
|
||||||
On pre-ANSI systems without 'const', the config.h file is supposed to
|
|
||||||
contain "#define const". */
|
|
||||||
# define gettext(Msgid) ((const char *) (Msgid))
|
|
||||||
# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
|
|
||||||
# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
|
|
||||||
# define ngettext(Msgid1, Msgid2, N) \
|
|
||||||
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
|
|
||||||
# define dngettext(Domainname, Msgid1, Msgid2, N) \
|
|
||||||
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
|
|
||||||
# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
|
|
||||||
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
|
|
||||||
# define textdomain(Domainname) ((const char *) (Domainname))
|
|
||||||
# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
|
|
||||||
# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* A pseudo function call that serves as a marker for the automated
|
|
||||||
extraction of messages, but does not call gettext(). The run-time
|
|
||||||
translation is done at a different place in the code.
|
|
||||||
The argument, String, should be a literal string. Concatenated strings
|
|
||||||
and other string expressions won't work.
|
|
||||||
The macro's expansion is not parenthesized, so that it is suitable as
|
|
||||||
initializer for static 'char[]' or 'const char[]' variables. */
|
|
||||||
#define gettext_noop(String) String
|
|
||||||
|
|
||||||
#endif /* _LIBGETTEXT_H */
|
|
||||||
+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 <meyering@ascend.com>, 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 *));
|
||||||
@@ -1 +1,2 @@
|
|||||||
Makefile
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
## Process this file with automake to produce Makefile.in -*-Makefile-*-
|
||||||
EXTRA_DIST = lib-ld.m4 lib-link.m4 lib-prefix.m4 \
|
EXTRA_DIST = \
|
||||||
c-bs-a.m4 \
|
c-bs-a.m4 \
|
||||||
codeset.m4 \
|
codeset.m4 \
|
||||||
dmalloc.m4 \
|
dmalloc.m4 \
|
||||||
|
|||||||
-244
@@ -1,244 +0,0 @@
|
|||||||
# Makefile.in generated by automake 1.6 from Makefile.am.
|
|
||||||
# @configure_input@
|
|
||||||
|
|
||||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
@SET_MAKE@
|
|
||||||
SHELL = @SHELL@
|
|
||||||
|
|
||||||
srcdir = @srcdir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
prefix = @prefix@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
|
|
||||||
bindir = @bindir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
datadir = @datadir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
libdir = @libdir@
|
|
||||||
infodir = @infodir@
|
|
||||||
mandir = @mandir@
|
|
||||||
includedir = @includedir@
|
|
||||||
oldincludedir = /usr/include
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
|
||||||
top_builddir = ..
|
|
||||||
|
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
|
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
||||||
INSTALL_HEADER = $(INSTALL_DATA)
|
|
||||||
transform = @program_transform_name@
|
|
||||||
NORMAL_INSTALL = :
|
|
||||||
PRE_INSTALL = :
|
|
||||||
POST_INSTALL = :
|
|
||||||
NORMAL_UNINSTALL = :
|
|
||||||
PRE_UNINSTALL = :
|
|
||||||
POST_UNINSTALL = :
|
|
||||||
host_alias = @host_alias@
|
|
||||||
host_triplet = @host@
|
|
||||||
|
|
||||||
EXEEXT = @EXEEXT@
|
|
||||||
OBJEXT = @OBJEXT@
|
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
|
||||||
AMTAR = @AMTAR@
|
|
||||||
AUTOM4TE = @AUTOM4TE@
|
|
||||||
AWK = @AWK@
|
|
||||||
BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
|
|
||||||
CATOBJEXT = @CATOBJEXT@
|
|
||||||
CC = @CC@
|
|
||||||
CPP = @CPP@
|
|
||||||
DATADIRNAME = @DATADIRNAME@
|
|
||||||
DEPDIR = @DEPDIR@
|
|
||||||
GCC = @GCC@
|
|
||||||
GENCAT = @GENCAT@
|
|
||||||
GLIBC21 = @GLIBC21@
|
|
||||||
GMSGFMT = @GMSGFMT@
|
|
||||||
HAVE_LIB = @HAVE_LIB@
|
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
||||||
INSTOBJEXT = @INSTOBJEXT@
|
|
||||||
INTLBISON = @INTLBISON@
|
|
||||||
INTLLIBS = @INTLLIBS@
|
|
||||||
INTLOBJS = @INTLOBJS@
|
|
||||||
INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
|
||||||
LIB = @LIB@
|
|
||||||
LIBICONV = @LIBICONV@
|
|
||||||
LIBINTL = @LIBINTL@
|
|
||||||
LTLIB = @LTLIB@
|
|
||||||
LTLIBICONV = @LTLIBICONV@
|
|
||||||
LTLIBINTL = @LTLIBINTL@
|
|
||||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
|
||||||
PACKAGE = @PACKAGE@
|
|
||||||
POSUB = @POSUB@
|
|
||||||
RANLIB = @RANLIB@
|
|
||||||
STRIP = @STRIP@
|
|
||||||
U = @U@
|
|
||||||
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
|
|
||||||
USE_NLS = @USE_NLS@
|
|
||||||
VERSION = @VERSION@
|
|
||||||
WARNING_CFLAGS = @WARNING_CFLAGS@
|
|
||||||
WERROR_CFLAGS = @WERROR_CFLAGS@
|
|
||||||
am__include = @am__include@
|
|
||||||
am__quote = @am__quote@
|
|
||||||
install_sh = @install_sh@
|
|
||||||
EXTRA_DIST = lib-ld.m4 lib-link.m4 lib-prefix.m4 \
|
|
||||||
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
|
|
||||||
|
|
||||||
subdir = m4
|
|
||||||
mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
|
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
|
||||||
DIST_SOURCES =
|
|
||||||
DIST_COMMON = Makefile.am Makefile.in
|
|
||||||
all: all-am
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
|
||||||
cd $(top_srcdir) && \
|
|
||||||
$(AUTOMAKE) --gnu m4/Makefile
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
|
||||||
uninstall-info-am:
|
|
||||||
tags: TAGS
|
|
||||||
TAGS:
|
|
||||||
|
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
|
|
||||||
top_distdir = ..
|
|
||||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
|
||||||
@for file in $(DISTFILES); do \
|
|
||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|
||||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
||||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
|
||||||
dir="/$$dir"; \
|
|
||||||
$(mkinstalldirs) "$(distdir)$$dir"; \
|
|
||||||
else \
|
|
||||||
dir=''; \
|
|
||||||
fi; \
|
|
||||||
if test -d $$d/$$file; then \
|
|
||||||
cp -pR $$d/$$file $(distdir)$$dir \
|
|
||||||
|| exit 1; \
|
|
||||||
else \
|
|
||||||
test -f $(distdir)/$$file \
|
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|
||||||
|| exit 1; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
check-am: all-am
|
|
||||||
check: check-am
|
|
||||||
all-am: Makefile
|
|
||||||
|
|
||||||
installdirs:
|
|
||||||
|
|
||||||
install: install-am
|
|
||||||
install-exec: install-exec-am
|
|
||||||
install-data: install-data-am
|
|
||||||
uninstall: uninstall-am
|
|
||||||
|
|
||||||
install-am: all-am
|
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
||||||
|
|
||||||
installcheck: installcheck-am
|
|
||||||
install-strip:
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
||||||
INSTALL_STRIP_FLAG=-s \
|
|
||||||
`test -z '$(STRIP)' || \
|
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
|
||||||
mostlyclean-generic:
|
|
||||||
|
|
||||||
clean-generic:
|
|
||||||
|
|
||||||
distclean-generic:
|
|
||||||
-rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
|
||||||
@echo "This command is intended for maintainers to use"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
clean: clean-am
|
|
||||||
|
|
||||||
clean-am: clean-generic mostlyclean-am
|
|
||||||
|
|
||||||
distclean: distclean-am
|
|
||||||
|
|
||||||
distclean-am: clean-am distclean-generic
|
|
||||||
|
|
||||||
dvi: dvi-am
|
|
||||||
|
|
||||||
dvi-am:
|
|
||||||
|
|
||||||
info: info-am
|
|
||||||
|
|
||||||
info-am:
|
|
||||||
|
|
||||||
install-data-am:
|
|
||||||
|
|
||||||
install-exec-am:
|
|
||||||
|
|
||||||
install-info: install-info-am
|
|
||||||
|
|
||||||
install-man:
|
|
||||||
|
|
||||||
installcheck-am:
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
|
||||||
|
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
|
||||||
|
|
||||||
mostlyclean: mostlyclean-am
|
|
||||||
|
|
||||||
mostlyclean-am: mostlyclean-generic
|
|
||||||
|
|
||||||
uninstall-am: uninstall-info-am
|
|
||||||
|
|
||||||
.PHONY: all all-am check check-am clean clean-generic distclean \
|
|
||||||
distclean-generic distdir dvi dvi-am info info-am install \
|
|
||||||
install-am install-data install-data-am install-exec \
|
|
||||||
install-exec-am install-info install-info-am install-man \
|
|
||||||
install-strip installcheck installcheck-am installdirs \
|
|
||||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
|
||||||
mostlyclean-generic uninstall uninstall-am uninstall-info-am
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
||||||
.NOEXPORT:
|
|
||||||
+1
-7
@@ -1,10 +1,4 @@
|
|||||||
# codeset.m4 serial AM1 (gettext-0.10.40)
|
#serial AM1
|
||||||
dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
|
|
||||||
dnl This file is free software, distributed under the terms of the GNU
|
|
||||||
dnl General Public License. As a special exception to the GNU General
|
|
||||||
dnl Public License, this file may be distributed as part of a program
|
|
||||||
dnl that contains a configuration script generated by Autoconf, under
|
|
||||||
dnl the same distribution terms as the rest of that program.
|
|
||||||
|
|
||||||
dnl From Bruno Haible.
|
dnl From Bruno Haible.
|
||||||
|
|
||||||
|
|||||||
+275
-446
@@ -1,40 +1,27 @@
|
|||||||
# gettext.m4 serial 13 (gettext-0.11.1)
|
# Macro to add for using GNU gettext.
|
||||||
dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
|
# Ulrich Drepper <[email protected]>, 1995.
|
||||||
dnl This file is free software, distributed under the terms of the GNU
|
#
|
||||||
dnl General Public License. As a special exception to the GNU General
|
# This file can be copied and used freely without restrictions. It can
|
||||||
dnl Public License, this file may be distributed as part of a program
|
# be used in projects which are not available under the GNU General Public
|
||||||
dnl that contains a configuration script generated by Autoconf, under
|
# License or the GNU Library General Public License but which still want
|
||||||
dnl the same distribution terms as the rest of that program.
|
# to provide support for the GNU gettext functionality.
|
||||||
dnl
|
# Please note that the actual code of the GNU gettext library is covered
|
||||||
dnl This file can can be used in projects which are not available under
|
# by the GNU Library General Public License, and the rest of the GNU
|
||||||
dnl the GNU General Public License or the GNU Library General Public
|
# gettext package package is covered by the GNU General Public License.
|
||||||
dnl License but which still want to provide support for the GNU gettext
|
# They are *not* in the public domain.
|
||||||
dnl functionality.
|
|
||||||
dnl Please note that the actual code of the GNU gettext library is covered
|
|
||||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
|
||||||
dnl gettext package package is covered by the GNU General Public License.
|
|
||||||
dnl They are *not* in the public domain.
|
|
||||||
|
|
||||||
dnl Authors:
|
# serial 10
|
||||||
dnl Ulrich Drepper <[email protected]>, 1995-2000.
|
|
||||||
dnl Bruno Haible <[email protected]>, 2000-2002.
|
|
||||||
|
|
||||||
dnl Macro to add for using GNU gettext.
|
dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]).
|
||||||
|
dnl If TOOLSYMBOL is specified and is 'use-libtool', then a libtool library
|
||||||
dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
|
|
||||||
dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
|
|
||||||
dnl default (if it is not specified or empty) is 'no-libtool'.
|
|
||||||
dnl INTLSYMBOL should be 'external' for packages with no intl directory,
|
|
||||||
dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
|
|
||||||
dnl If INTLSYMBOL is 'use-libtool', then a libtool library
|
|
||||||
dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
|
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 depending on --{enable,disable}-{shared,static} and on the presence of
|
||||||
dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
|
dnl AM-DISABLE-SHARED). Otherwise, a static library
|
||||||
dnl $(top_builddir)/intl/libintl.a will be created.
|
dnl $(top_builddir)/intl/libintl.a will be created.
|
||||||
dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
|
dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
|
||||||
dnl implementations (in libc or libintl) without the ngettext() function
|
dnl implementations (in libc or libintl) without the ngettext() function
|
||||||
dnl will be ignored.
|
dnl will be ignored.
|
||||||
dnl INTLDIR is used to find the intl libraries. If empty,
|
dnl LIBDIR is used to find the intl libraries. If empty,
|
||||||
dnl the value `$(top_builddir)/intl/' is used.
|
dnl the value `$(top_builddir)/intl/' is used.
|
||||||
dnl
|
dnl
|
||||||
dnl The result of the configuration is one of three cases:
|
dnl The result of the configuration is one of three cases:
|
||||||
@@ -48,53 +35,29 @@ dnl Catalog extension: .mo after installation, .gmo in source tree
|
|||||||
dnl 3) No internationalization, always use English msgid.
|
dnl 3) No internationalization, always use English msgid.
|
||||||
dnl Catalog format: none
|
dnl Catalog format: none
|
||||||
dnl Catalog extension: none
|
dnl Catalog extension: none
|
||||||
dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
|
|
||||||
dnl The use of .gmo is historical (it was needed to avoid overwriting the
|
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 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 but we keep it in order not to force irrelevant filename changes on the
|
||||||
dnl maintainers.
|
dnl maintainers.
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN([AM_GNU_GETTEXT],
|
AC_DEFUN([AM_WITH_NLS],
|
||||||
[
|
[AC_MSG_CHECKING([whether NLS is requested])
|
||||||
dnl Argument checking.
|
dnl Default is enabled NLS
|
||||||
ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
|
AC_ARG_ENABLE(nls,
|
||||||
[errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
|
[ --disable-nls do not use Native Language Support],
|
||||||
])])])])])
|
USE_NLS=$enableval, USE_NLS=yes)
|
||||||
ifelse([$2], [], , [ifelse([$2], [need-ngettext], ,
|
AC_MSG_RESULT($USE_NLS)
|
||||||
[errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
|
AC_SUBST(USE_NLS)
|
||||||
])])])
|
|
||||||
define(gt_included_intl, ifelse([$1], [external], [no], [yes]))
|
|
||||||
define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], []))
|
|
||||||
|
|
||||||
AC_REQUIRE([AM_PO_SUBDIRS])dnl
|
|
||||||
ifelse(gt_included_intl, yes, [
|
|
||||||
AC_REQUIRE([AM_INTL_SUBDIR])dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
|
|
||||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
|
||||||
AC_REQUIRE([AC_LIB_RPATH])
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
ifelse(gt_included_intl, yes, [
|
|
||||||
BUILD_INCLUDED_LIBINTL=no
|
BUILD_INCLUDED_LIBINTL=no
|
||||||
USE_INCLUDED_LIBINTL=no
|
USE_INCLUDED_LIBINTL=no
|
||||||
])
|
INTLLIBS=
|
||||||
LIBINTL=
|
|
||||||
LTLIBINTL=
|
|
||||||
POSUB=
|
|
||||||
|
|
||||||
dnl If we use NLS figure out what method
|
dnl If we use NLS figure out what method
|
||||||
if test "$USE_NLS" = "yes"; then
|
if test "$USE_NLS" = "yes"; then
|
||||||
gt_use_preinstalled_gnugettext=no
|
AC_DEFINE(ENABLE_NLS, 1,
|
||||||
ifelse(gt_included_intl, yes, [
|
[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_MSG_CHECKING([whether included gettext is requested])
|
||||||
AC_ARG_WITH(included-gettext,
|
AC_ARG_WITH(included-gettext,
|
||||||
[ --with-included-gettext use the GNU gettext library included here],
|
[ --with-included-gettext use the GNU gettext library included here],
|
||||||
@@ -104,158 +67,214 @@ AC_DEFUN([AM_GNU_GETTEXT],
|
|||||||
|
|
||||||
nls_cv_use_gnu_gettext="$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
|
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
|
||||||
])
|
|
||||||
dnl User does not insist on using GNU NLS library. Figure out what
|
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 use. If GNU gettext is available we use this. Else we have
|
||||||
dnl to fall back to GNU NLS library.
|
dnl to fall back to GNU NLS library.
|
||||||
|
CATOBJEXT=NONE
|
||||||
|
|
||||||
dnl Add a version number to the cache macros.
|
dnl Add a version number to the cache macros.
|
||||||
define([gt_api_version], ifelse([$2], [need-ngettext], 2, 1))
|
define(gt_cv_func_gnugettext_libc, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libc])
|
||||||
define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc])
|
define(gt_cv_func_gnugettext_libintl, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libintl])
|
||||||
define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl])
|
|
||||||
|
|
||||||
AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
|
AC_CHECK_HEADER(libintl.h,
|
||||||
[AC_TRY_LINK([#include <libintl.h>
|
[AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
|
||||||
extern int _nl_msg_cat_cntr;
|
[AC_TRY_LINK([#include <libintl.h>
|
||||||
extern int *_nl_domain_bindings;],
|
extern int _nl_msg_cat_cntr;],
|
||||||
[bindtextdomain ("", "");
|
[bindtextdomain ("", "");
|
||||||
return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings],
|
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=yes,
|
||||||
gt_cv_func_gnugettext_libc=no)])
|
gt_cv_func_gnugettext_libc=no)])
|
||||||
|
|
||||||
if test "$gt_cv_func_gnugettext_libc" != "yes"; then
|
if test "$gt_cv_func_gnugettext_libc" != "yes"; then
|
||||||
dnl Sometimes libintl requires libiconv, so first search for libiconv.
|
AC_CACHE_CHECK([for GNU gettext in libintl],
|
||||||
ifelse(gt_included_intl, yes, , [
|
gt_cv_func_gnugettext_libintl,
|
||||||
AM_ICONV_LINK
|
[gt_save_LIBS="$LIBS"
|
||||||
])
|
LIBS="$LIBS -lintl $LIBICONV"
|
||||||
dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
|
AC_TRY_LINK([#include <libintl.h>
|
||||||
dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
|
extern int _nl_msg_cat_cntr;],
|
||||||
dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
|
[bindtextdomain ("", "");
|
||||||
dnl even if libiconv doesn't exist.
|
return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr],
|
||||||
AC_LIB_LINKFLAGS_BODY([intl])
|
gt_cv_func_gnugettext_libintl=yes,
|
||||||
AC_CACHE_CHECK([for GNU gettext in libintl],
|
gt_cv_func_gnugettext_libintl=no)
|
||||||
gt_cv_func_gnugettext_libintl,
|
LIBS="$gt_save_LIBS"])
|
||||||
[gt_save_CPPFLAGS="$CPPFLAGS"
|
fi
|
||||||
CPPFLAGS="$CPPFLAGS $INCINTL"
|
|
||||||
gt_save_LIBS="$LIBS"
|
|
||||||
LIBS="$LIBS $LIBINTL"
|
|
||||||
dnl Now see whether libintl exists and does not depend on libiconv.
|
|
||||||
AC_TRY_LINK([#include <libintl.h>
|
|
||||||
extern int _nl_msg_cat_cntr;
|
|
||||||
extern int *_nl_domain_bindings;
|
|
||||||
extern
|
|
||||||
#ifdef __cplusplus
|
|
||||||
"C"
|
|
||||||
#endif
|
|
||||||
const char *_nl_expand_alias ();],
|
|
||||||
[bindtextdomain ("", "");
|
|
||||||
return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)],
|
|
||||||
gt_cv_func_gnugettext_libintl=yes,
|
|
||||||
gt_cv_func_gnugettext_libintl=no)
|
|
||||||
dnl Now see whether libintl exists and depends on libiconv.
|
|
||||||
if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then
|
|
||||||
LIBS="$LIBS $LIBICONV"
|
|
||||||
AC_TRY_LINK([#include <libintl.h>
|
|
||||||
extern int _nl_msg_cat_cntr;
|
|
||||||
extern int *_nl_domain_bindings;
|
|
||||||
extern
|
|
||||||
#ifdef __cplusplus
|
|
||||||
"C"
|
|
||||||
#endif
|
|
||||||
const char *_nl_expand_alias ();],
|
|
||||||
[bindtextdomain ("", "");
|
|
||||||
return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings + *_nl_expand_alias (0)],
|
|
||||||
[LIBINTL="$LIBINTL $LIBICONV"
|
|
||||||
LTLIBINTL="$LTLIBINTL $LTLIBICONV"
|
|
||||||
gt_cv_func_gnugettext_libintl=yes
|
|
||||||
])
|
|
||||||
fi
|
|
||||||
CPPFLAGS="$gt_save_CPPFLAGS"
|
|
||||||
LIBS="$gt_save_LIBS"])
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl If an already present or preinstalled GNU gettext() is found,
|
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 use it. But if this macro is used in GNU gettext, and GNU
|
||||||
dnl gettext is already preinstalled in libintl, we update this
|
dnl gettext is already preinstalled in libintl, we update this
|
||||||
dnl libintl. (Cf. the install rule in intl/Makefile.in.)
|
dnl libintl. (Cf. the install rule in intl/Makefile.in.)
|
||||||
if test "$gt_cv_func_gnugettext_libc" = "yes" \
|
if test "$gt_cv_func_gnugettext_libc" = "yes" \
|
||||||
|| { test "$gt_cv_func_gnugettext_libintl" = "yes" \
|
|| { test "$gt_cv_func_gnugettext_libintl" = "yes" \
|
||||||
&& test "$PACKAGE" != gettext; }; then
|
&& test "$PACKAGE" != gettext; }; then
|
||||||
gt_use_preinstalled_gnugettext=yes
|
AC_DEFINE(HAVE_GETTEXT, 1,
|
||||||
else
|
[Define if the GNU gettext() function is already present or preinstalled.])
|
||||||
dnl Reset the values set by searching for libintl.
|
|
||||||
LIBINTL=
|
|
||||||
LTLIBINTL=
|
|
||||||
INCINTL=
|
|
||||||
fi
|
|
||||||
|
|
||||||
ifelse(gt_included_intl, yes, [
|
if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
|
||||||
if test "$gt_use_preinstalled_gnugettext" != "yes"; then
|
dnl If iconv() is in a separate libiconv library, then anyone
|
||||||
dnl GNU gettext is not found in the C library.
|
dnl linking with libintl{.a,.so} also needs to link with
|
||||||
dnl Fall back on included GNU gettext library.
|
dnl libiconv.
|
||||||
nls_cv_use_gnu_gettext=yes
|
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
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$nls_cv_use_gnu_gettext" = "yes"; then
|
if test "$nls_cv_use_gnu_gettext" = "yes"; then
|
||||||
dnl Mark actions used to generate GNU NLS library.
|
dnl Mark actions used to generate GNU NLS library.
|
||||||
INTLOBJS="\$(GETTOBJS)"
|
INTLOBJS="\$(GETTOBJS)"
|
||||||
BUILD_INCLUDED_LIBINTL=yes
|
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
|
||||||
USE_INCLUDED_LIBINTL=yes
|
[$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :)
|
||||||
LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV"
|
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
|
||||||
LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV"
|
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
|
||||||
LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
|
[$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :)
|
||||||
fi
|
AC_SUBST(MSGFMT)
|
||||||
|
BUILD_INCLUDED_LIBINTL=yes
|
||||||
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|
USE_INCLUDED_LIBINTL=yes
|
||||||
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
|
|
||||||
dnl Mark actions to use GNU gettext tools.
|
|
||||||
CATOBJEXT=.gmo
|
CATOBJEXT=.gmo
|
||||||
fi
|
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/ $//'`
|
||||||
|
|
||||||
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|
|
||||||
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
|
|
||||||
AC_DEFINE(ENABLE_NLS, 1,
|
|
||||||
[Define to 1 if translation of program messages to the user's native language
|
|
||||||
is requested.])
|
|
||||||
else
|
|
||||||
USE_NLS=no
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$USE_NLS" = "yes"; then
|
|
||||||
|
|
||||||
if test "$gt_use_preinstalled_gnugettext" = "yes"; then
|
|
||||||
if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
|
|
||||||
AC_MSG_CHECKING([how to link with libintl])
|
|
||||||
AC_MSG_RESULT([$LIBINTL])
|
|
||||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl For backward compatibility. Some packages may be using this.
|
dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
|
||||||
AC_DEFINE(HAVE_GETTEXT, 1,
|
dnl Test whether we really found GNU msgfmt.
|
||||||
[Define if the GNU gettext() function is already present or preinstalled.])
|
if test "$GMSGFMT" != ":"; then
|
||||||
AC_DEFINE(HAVE_DCGETTEXT, 1,
|
dnl If it is no GNU msgfmt we define it as : so that the
|
||||||
[Define if the GNU dcgettext() function is already present or preinstalled.])
|
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
|
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 We need to process the po/ directory.
|
|
||||||
POSUB=po
|
|
||||||
fi
|
|
||||||
|
|
||||||
ifelse(gt_included_intl, yes, [
|
|
||||||
dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
|
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.
|
dnl to 'yes' because some of the testsuite requires it.
|
||||||
if test "$PACKAGE" = gettext; then
|
if test "$PACKAGE" = gettext; then
|
||||||
BUILD_INCLUDED_LIBINTL=yes
|
BUILD_INCLUDED_LIBINTL=yes
|
||||||
fi
|
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.
|
dnl Make all variables we use known to autoconf.
|
||||||
AC_SUBST(BUILD_INCLUDED_LIBINTL)
|
AC_SUBST(BUILD_INCLUDED_LIBINTL)
|
||||||
AC_SUBST(USE_INCLUDED_LIBINTL)
|
AC_SUBST(USE_INCLUDED_LIBINTL)
|
||||||
|
AC_SUBST(CATALOGS)
|
||||||
AC_SUBST(CATOBJEXT)
|
AC_SUBST(CATOBJEXT)
|
||||||
|
AC_SUBST(GMOFILES)
|
||||||
|
AC_SUBST(INTLLIBS)
|
||||||
AC_SUBST(INTLOBJS)
|
AC_SUBST(INTLOBJS)
|
||||||
|
AC_SUBST(POFILES)
|
||||||
|
AC_SUBST(POSUB)
|
||||||
|
|
||||||
dnl For backward compatibility. Some configure.ins may be using this.
|
dnl For backward compatibility. Some configure.ins may be using this.
|
||||||
nls_cv_header_intl=
|
nls_cv_header_intl=
|
||||||
@@ -272,270 +291,80 @@ return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("",
|
|||||||
dnl For backward compatibility. Some Makefiles may be using this.
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
GENCAT=gencat
|
GENCAT=gencat
|
||||||
AC_SUBST(GENCAT)
|
AC_SUBST(GENCAT)
|
||||||
|
|
||||||
dnl Enable libtool support if the surrounding package wishes it.
|
|
||||||
INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
|
|
||||||
AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
|
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl For backward compatibility. Some Makefiles may be using this.
|
dnl Usage: Just like AM_WITH_NLS, which see.
|
||||||
INTLLIBS="$LIBINTL"
|
AC_DEFUN([AM_GNU_GETTEXT],
|
||||||
AC_SUBST(INTLLIBS)
|
[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
|
||||||
|
|
||||||
dnl Make all documented variables known to autoconf.
|
AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
|
||||||
AC_SUBST(LIBINTL)
|
|
||||||
AC_SUBST(LTLIBINTL)
|
|
||||||
AC_SUBST(POSUB)
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl Checks for all prerequisites of the po subdirectory,
|
|
||||||
dnl except for USE_NLS.
|
|
||||||
AC_DEFUN([AM_PO_SUBDIRS],
|
|
||||||
[
|
|
||||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
|
||||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
|
||||||
AC_REQUIRE([AM_MKINSTALLDIRS])dnl
|
|
||||||
|
|
||||||
dnl Perform the following tests also if --disable-nls has been given,
|
|
||||||
dnl because they are needed for "make dist" to work.
|
|
||||||
|
|
||||||
dnl Search for GNU msgfmt in the PATH.
|
|
||||||
dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
|
|
||||||
dnl The second test excludes FreeBSD msgfmt.
|
|
||||||
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
|
|
||||||
[$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
|
|
||||||
(if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
|
|
||||||
:)
|
|
||||||
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
|
|
||||||
|
|
||||||
dnl Search for GNU xgettext 0.11 or newer in the PATH.
|
|
||||||
dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
|
|
||||||
dnl The second test excludes FreeBSD xgettext.
|
|
||||||
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
|
|
||||||
[$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
|
|
||||||
(if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
|
|
||||||
:)
|
|
||||||
dnl Remove leftover from FreeBSD xgettext call.
|
|
||||||
rm -f messages.po
|
|
||||||
|
|
||||||
dnl Search for GNU msgmerge 0.11 or newer in the PATH.
|
|
||||||
AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
|
|
||||||
[$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
|
|
||||||
|
|
||||||
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 &&
|
|
||||||
(if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
|
|
||||||
: ;
|
|
||||||
else
|
|
||||||
GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
|
|
||||||
AC_MSG_RESULT(
|
|
||||||
[found $GMSGFMT 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 --copyright-holder= /dev/null >/dev/null 2>&1 &&
|
|
||||||
(if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
|
|
||||||
: ;
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(
|
|
||||||
[found xgettext program is not GNU xgettext; ignore it])
|
|
||||||
XGETTEXT=":"
|
|
||||||
fi
|
|
||||||
dnl Remove leftover from FreeBSD xgettext call.
|
|
||||||
rm -f messages.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"
|
|
||||||
cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
|
|
||||||
# ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend
|
|
||||||
# on $ac_dir but don't depend on user-specified configuration
|
|
||||||
# parameters.
|
|
||||||
if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
|
|
||||||
# The LINGUAS file contains the set of available languages.
|
|
||||||
if test -n "$ALL_LINGUAS"; then
|
|
||||||
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
|
|
||||||
fi
|
|
||||||
ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
|
|
||||||
# Hide the ALL_LINGUAS assigment from automake.
|
|
||||||
eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
|
|
||||||
fi
|
|
||||||
case "$ac_given_srcdir" in
|
|
||||||
.) srcdirpre= ;;
|
|
||||||
*) srcdirpre='$(srcdir)/' ;;
|
|
||||||
esac
|
|
||||||
POFILES=
|
|
||||||
GMOFILES=
|
|
||||||
UPDATEPOFILES=
|
|
||||||
DUMMYPOFILES=
|
|
||||||
for lang in $ALL_LINGUAS; do
|
|
||||||
POFILES="$POFILES $srcdirpre$lang.po"
|
|
||||||
GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
|
|
||||||
UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
|
|
||||||
DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
|
|
||||||
done
|
|
||||||
# CATALOGS depends on both $ac_dir and the user's LINGUAS
|
|
||||||
# environment variable.
|
|
||||||
INST_LINGUAS=
|
|
||||||
if test -n "$ALL_LINGUAS"; then
|
|
||||||
for presentlang in $ALL_LINGUAS; do
|
|
||||||
useit=no
|
|
||||||
if test "%UNSET%" != "$LINGUAS"; then
|
|
||||||
desiredlanguages="$LINGUAS"
|
|
||||||
else
|
|
||||||
desiredlanguages="$ALL_LINGUAS"
|
|
||||||
fi
|
|
||||||
for desiredlang in $desiredlanguages; 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
|
|
||||||
INST_LINGUAS="$INST_LINGUAS $presentlang"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
CATALOGS=
|
|
||||||
if test -n "$INST_LINGUAS"; then
|
|
||||||
for lang in $INST_LINGUAS; do
|
|
||||||
CATALOGS="$CATALOGS $lang.gmo"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
|
|
||||||
sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
|
|
||||||
for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
|
|
||||||
if test -f "$f"; then
|
|
||||||
case "$f" in
|
|
||||||
*.orig | *.bak | *~) ;;
|
|
||||||
*) cat "$f" >> "$ac_dir/Makefile" ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done],
|
|
||||||
[# Capture the value of obsolete $ALL_LINGUAS because we need it to compute
|
|
||||||
# POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it
|
|
||||||
# from automake.
|
|
||||||
eval 'ALL_LINGUAS''="$ALL_LINGUAS"'
|
|
||||||
# Capture the value of LINGUAS because we need it to compute CATALOGS.
|
|
||||||
LINGUAS="${LINGUAS-%UNSET%}"
|
|
||||||
])
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl Checks for all prerequisites of the intl subdirectory,
|
|
||||||
dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
|
|
||||||
dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
|
|
||||||
AC_DEFUN([AM_INTL_SUBDIR],
|
|
||||||
[
|
|
||||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
|
||||||
AC_REQUIRE([AM_MKINSTALLDIRS])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])
|
stdlib.h string.h unistd.h sys/param.h])
|
||||||
AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \
|
AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getcwd getegid geteuid \
|
||||||
geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \
|
getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \
|
||||||
strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next])
|
strdup strtoul tsearch __argz_count __argz_stringify __argz_next])
|
||||||
|
|
||||||
AM_ICONV
|
AM_ICONV
|
||||||
AM_LANGINFO_CODESET
|
AM_LANGINFO_CODESET
|
||||||
AM_LC_MESSAGES
|
AM_LC_MESSAGES
|
||||||
|
AM_WITH_NLS([$1],[$2],[$3])
|
||||||
|
|
||||||
dnl intl/plural.c is generated from intl/plural.y. It requires bison,
|
if test "x$CATOBJEXT" != "x"; then
|
||||||
dnl because plural.y uses bison specific features. It requires at least
|
if test "x$ALL_LINGUAS" = "x"; then
|
||||||
dnl bison-1.26 because earlier versions generate a plural.c that doesn't
|
LINGUAS=
|
||||||
dnl compile.
|
else
|
||||||
dnl bison is only needed for the maintainer (who touches plural.y). But in
|
AC_MSG_CHECKING(for catalogs to be installed)
|
||||||
dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
|
NEW_LINGUAS=
|
||||||
dnl the rule in general Makefile. Now, some people carelessly touch the
|
for presentlang in $ALL_LINGUAS; do
|
||||||
dnl files or have a broken "make" program, hence the plural.c rule will
|
useit=no
|
||||||
dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
|
for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do
|
||||||
dnl present or too old.
|
# Use the presentlang catalog if desiredlang is
|
||||||
AC_CHECK_PROGS([INTLBISON], [bison])
|
# a. equal to presentlang, or
|
||||||
if test -z "$INTLBISON"; then
|
# b. a variant of presentlang (because in this case,
|
||||||
ac_verc_fail=yes
|
# presentlang can be used as a fallback for messages
|
||||||
else
|
# which are not translated in the desiredlang catalog).
|
||||||
dnl Found it, now check the version.
|
case "$desiredlang" in
|
||||||
AC_MSG_CHECKING([version of bison])
|
"$presentlang"*) useit=yes;;
|
||||||
changequote(<<,>>)dnl
|
esac
|
||||||
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
|
done
|
||||||
case $ac_prog_version in
|
if test $useit = yes; then
|
||||||
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
|
NEW_LINGUAS="$NEW_LINGUAS $presentlang"
|
||||||
1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
|
fi
|
||||||
changequote([,])dnl
|
done
|
||||||
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
|
LINGUAS=$NEW_LINGUAS
|
||||||
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
|
AC_MSG_RESULT($LINGUAS)
|
||||||
esac
|
fi
|
||||||
AC_MSG_RESULT([$ac_prog_version])
|
|
||||||
fi
|
|
||||||
if test $ac_verc_fail = yes; then
|
|
||||||
INTLBISON=:
|
|
||||||
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
|
||||||
|
|
||||||
AC_DEFUN([AM_MKINSTALLDIRS],
|
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 If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
|
dnl Try to locate is.
|
||||||
dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
|
MKINSTALLDIRS=
|
||||||
dnl Try to locate is.
|
if test -n "$ac_aux_dir"; then
|
||||||
MKINSTALLDIRS=
|
MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
|
||||||
if test -n "$ac_aux_dir"; then
|
fi
|
||||||
MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
|
if test -z "$MKINSTALLDIRS"; then
|
||||||
fi
|
MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
|
||||||
if test -z "$MKINSTALLDIRS"; then
|
fi
|
||||||
MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
|
AC_SUBST(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)
|
||||||
|
])
|
||||||
|
|||||||
+1
-7
@@ -1,10 +1,4 @@
|
|||||||
# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40)
|
#serial 2
|
||||||
dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
|
|
||||||
dnl This file is free software, distributed under the terms of the GNU
|
|
||||||
dnl General Public License. As a special exception to the GNU General
|
|
||||||
dnl Public License, this file may be distributed as part of a program
|
|
||||||
dnl that contains a configuration script generated by Autoconf, under
|
|
||||||
dnl the same distribution terms as the rest of that program.
|
|
||||||
|
|
||||||
# Test for the GNU C Library, version 2.1 or newer.
|
# Test for the GNU C Library, version 2.1 or newer.
|
||||||
# From Bruno Haible.
|
# From Bruno Haible.
|
||||||
|
|||||||
+15
-42
@@ -1,32 +1,19 @@
|
|||||||
# iconv.m4 serial AM3 (gettext-0.11)
|
#serial AM2
|
||||||
dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
|
|
||||||
dnl This file is free software, distributed under the terms of the GNU
|
|
||||||
dnl General Public License. As a special exception to the GNU General
|
|
||||||
dnl Public License, this file may be distributed as part of a program
|
|
||||||
dnl that contains a configuration script generated by Autoconf, under
|
|
||||||
dnl the same distribution terms as the rest of that program.
|
|
||||||
|
|
||||||
dnl From Bruno Haible.
|
dnl From Bruno Haible.
|
||||||
|
|
||||||
AC_DEFUN([AM_ICONV_LINK],
|
AC_DEFUN([AM_ICONV],
|
||||||
[
|
[
|
||||||
dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
|
dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
|
||||||
dnl those with the standalone portable GNU libiconv installed).
|
dnl those with the standalone portable GNU libiconv installed).
|
||||||
|
|
||||||
dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
|
AC_ARG_WITH([libiconv-prefix],
|
||||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
[ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [
|
||||||
AC_REQUIRE([AC_LIB_RPATH])
|
for dir in `echo "$withval" | tr : ' '`; do
|
||||||
|
if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi
|
||||||
dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
|
if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi
|
||||||
dnl accordingly.
|
done
|
||||||
AC_LIB_LINKFLAGS_BODY([iconv])
|
])
|
||||||
|
|
||||||
dnl Add $INCICONV to CPPFLAGS before performing the following checks,
|
|
||||||
dnl because if the user has installed libiconv and not disabled its use
|
|
||||||
dnl via --without-libiconv-prefix, he wants to use it. The first
|
|
||||||
dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
|
|
||||||
am_save_CPPFLAGS="$CPPFLAGS"
|
|
||||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
|
|
||||||
|
|
||||||
AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
|
AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
|
||||||
am_cv_func_iconv="no, consider installing GNU libiconv"
|
am_cv_func_iconv="no, consider installing GNU libiconv"
|
||||||
@@ -39,7 +26,7 @@ AC_DEFUN([AM_ICONV_LINK],
|
|||||||
am_cv_func_iconv=yes)
|
am_cv_func_iconv=yes)
|
||||||
if test "$am_cv_func_iconv" != yes; then
|
if test "$am_cv_func_iconv" != yes; then
|
||||||
am_save_LIBS="$LIBS"
|
am_save_LIBS="$LIBS"
|
||||||
LIBS="$LIBS $LIBICONV"
|
LIBS="$LIBS -liconv"
|
||||||
AC_TRY_LINK([#include <stdlib.h>
|
AC_TRY_LINK([#include <stdlib.h>
|
||||||
#include <iconv.h>],
|
#include <iconv.h>],
|
||||||
[iconv_t cd = iconv_open("","");
|
[iconv_t cd = iconv_open("","");
|
||||||
@@ -52,25 +39,6 @@ AC_DEFUN([AM_ICONV_LINK],
|
|||||||
])
|
])
|
||||||
if test "$am_cv_func_iconv" = yes; then
|
if test "$am_cv_func_iconv" = yes; then
|
||||||
AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
|
AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
|
||||||
fi
|
|
||||||
if test "$am_cv_lib_iconv" = yes; then
|
|
||||||
AC_MSG_CHECKING([how to link with libiconv])
|
|
||||||
AC_MSG_RESULT([$LIBICONV])
|
|
||||||
else
|
|
||||||
dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
|
|
||||||
dnl either.
|
|
||||||
CPPFLAGS="$am_save_CPPFLAGS"
|
|
||||||
LIBICONV=
|
|
||||||
LTLIBICONV=
|
|
||||||
fi
|
|
||||||
AC_SUBST(LIBICONV)
|
|
||||||
AC_SUBST(LTLIBICONV)
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_DEFUN([AM_ICONV],
|
|
||||||
[
|
|
||||||
AC_REQUIRE([AM_ICONV_LINK])
|
|
||||||
if test "$am_cv_func_iconv" = yes; then
|
|
||||||
AC_MSG_CHECKING([for iconv declaration])
|
AC_MSG_CHECKING([for iconv declaration])
|
||||||
AC_CACHE_VAL(am_cv_proto_iconv, [
|
AC_CACHE_VAL(am_cv_proto_iconv, [
|
||||||
AC_TRY_COMPILE([
|
AC_TRY_COMPILE([
|
||||||
@@ -93,4 +61,9 @@ size_t iconv();
|
|||||||
AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
|
AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
|
||||||
[Define as const if the declaration of iconv() needs const.])
|
[Define as const if the declaration of iconv() needs const.])
|
||||||
fi
|
fi
|
||||||
|
LIBICONV=
|
||||||
|
if test "$am_cv_lib_iconv" = yes; then
|
||||||
|
LIBICONV="-liconv"
|
||||||
|
fi
|
||||||
|
AC_SUBST(LIBICONV)
|
||||||
])
|
])
|
||||||
|
|||||||
+1
-8
@@ -1,11 +1,4 @@
|
|||||||
# isc-posix.m4 serial 1 (gettext-0.10.40)
|
#serial 1
|
||||||
dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
|
|
||||||
dnl This file is free software, distributed under the terms of the GNU
|
|
||||||
dnl General Public License. As a special exception to the GNU General
|
|
||||||
dnl Public License, this file may be distributed as part of a program
|
|
||||||
dnl that contains a configuration script generated by Autoconf, under
|
|
||||||
dnl the same distribution terms as the rest of that program.
|
|
||||||
|
|
||||||
# This test replaces the one in autoconf.
|
# This test replaces the one in autoconf.
|
||||||
# Currently this macro should have the same name as the autoconf macro
|
# Currently this macro should have the same name as the autoconf macro
|
||||||
# because gettext's gettext.m4 (distributed in the automake package)
|
# because gettext's gettext.m4 (distributed in the automake package)
|
||||||
|
|||||||
+12
-20
@@ -1,24 +1,16 @@
|
|||||||
# lcmessage.m4 serial 2 (gettext-0.10.40)
|
|
||||||
dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
|
|
||||||
dnl This file is free software, distributed under the terms of the GNU
|
|
||||||
dnl General Public License. As a special exception to the GNU General
|
|
||||||
dnl Public License, this file may be distributed as part of a program
|
|
||||||
dnl that contains a configuration script generated by Autoconf, under
|
|
||||||
dnl the same distribution terms as the rest of that program.
|
|
||||||
dnl
|
|
||||||
dnl This file can can be used in projects which are not available under
|
|
||||||
dnl the GNU General Public License or the GNU Library General Public
|
|
||||||
dnl License but which still want to provide support for the GNU gettext
|
|
||||||
dnl functionality.
|
|
||||||
dnl Please note that the actual code of the GNU gettext library is covered
|
|
||||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
|
||||||
dnl gettext package package is covered by the GNU General Public License.
|
|
||||||
dnl They are *not* in the public domain.
|
|
||||||
|
|
||||||
dnl Authors:
|
|
||||||
dnl Ulrich Drepper <[email protected]>, 1995.
|
|
||||||
|
|
||||||
# Check whether LC_MESSAGES is available in <locale.h>.
|
# 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],
|
AC_DEFUN([AM_LC_MESSAGES],
|
||||||
[if test $ac_cv_header_locale_h = yes; then
|
[if test $ac_cv_header_locale_h = yes; then
|
||||||
|
|||||||
+12
-20
@@ -1,24 +1,16 @@
|
|||||||
# progtest.m4 serial 2 (gettext-0.10.40)
|
|
||||||
dnl Copyright (C) 1996-2002 Free Software Foundation, Inc.
|
|
||||||
dnl This file is free software, distributed under the terms of the GNU
|
|
||||||
dnl General Public License. As a special exception to the GNU General
|
|
||||||
dnl Public License, this file may be distributed as part of a program
|
|
||||||
dnl that contains a configuration script generated by Autoconf, under
|
|
||||||
dnl the same distribution terms as the rest of that program.
|
|
||||||
dnl
|
|
||||||
dnl This file can can be used in projects which are not available under
|
|
||||||
dnl the GNU General Public License or the GNU Library General Public
|
|
||||||
dnl License but which still want to provide support for the GNU gettext
|
|
||||||
dnl functionality.
|
|
||||||
dnl Please note that the actual code of the GNU gettext library is covered
|
|
||||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
|
||||||
dnl gettext package package is covered by the GNU General Public License.
|
|
||||||
dnl They are *not* in the public domain.
|
|
||||||
|
|
||||||
dnl Authors:
|
|
||||||
dnl Ulrich Drepper <[email protected]>, 1996.
|
|
||||||
|
|
||||||
# Search path for a program which passes the given test.
|
# 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 AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
|
||||||
dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
|
dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
|
||||||
|
|||||||
+3
-1
@@ -1,6 +1,8 @@
|
|||||||
ChangeLog
|
ChangeLog
|
||||||
Makefile Makefile.in
|
Makefile
|
||||||
|
Makefile.in
|
||||||
POTFILES
|
POTFILES
|
||||||
bison.pot
|
bison.pot
|
||||||
stamp-cat-id
|
stamp-cat-id
|
||||||
*.gmo
|
*.gmo
|
||||||
|
Makefile.in
|
||||||
|
|||||||
+11
-1
@@ -1,6 +1,16 @@
|
|||||||
2002-01-21 gettextize <[email protected]>
|
2001-10-10 gettextize <[email protected]>
|
||||||
|
|
||||||
* Makefile.in.in: Upgrade to gettext-0.10.40.
|
* 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]>
|
2001-09-27 gettextize <[email protected]>
|
||||||
|
|
||||||
|
|||||||
+73
-194
@@ -1,16 +1,18 @@
|
|||||||
# Makefile for PO directory in any package using GNU gettext.
|
# Makefile for program source directory in GNU NLS utilities package.
|
||||||
# Copyright (C) 1995-1997, 2000-2002 by Ulrich Drepper <[email protected]>
|
# Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper <[email protected]>
|
||||||
#
|
#
|
||||||
# This file can be copied and used freely without restrictions. It can
|
# 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
|
# be used in projects which are not available under the GNU General Public License
|
||||||
# License but which still want to provide support for the GNU gettext
|
# but which still want to provide support for the GNU gettext functionality.
|
||||||
# functionality.
|
# Please note that the actual code is *not* freely available.
|
||||||
# Please note that the actual code of GNU gettext is covered by the GNU
|
|
||||||
# General Public License and is *not* in the public domain.
|
|
||||||
|
|
||||||
PACKAGE = @PACKAGE@
|
PACKAGE = @PACKAGE@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
|
||||||
|
# These two variables depend on the location of this directory.
|
||||||
|
subdir = po
|
||||||
|
top_builddir = ..
|
||||||
|
|
||||||
SHELL = /bin/sh
|
SHELL = /bin/sh
|
||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
|
|
||||||
@@ -29,47 +31,45 @@ INSTALL_DATA = @INSTALL_DATA@
|
|||||||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||||
mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac`
|
mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac`
|
||||||
|
|
||||||
|
CC = @CC@
|
||||||
GMSGFMT = @GMSGFMT@
|
GMSGFMT = @GMSGFMT@
|
||||||
MSGFMT = @MSGFMT@
|
MSGFMT = @MSGFMT@
|
||||||
XGETTEXT = @XGETTEXT@
|
XGETTEXT = @XGETTEXT@
|
||||||
MSGMERGE = msgmerge
|
MSGMERGE = msgmerge
|
||||||
MSGMERGE_UPDATE = @MSGMERGE@ --update
|
|
||||||
MSGINIT = msginit
|
DEFS = @DEFS@
|
||||||
MSGCONV = msgconv
|
CFLAGS = @CFLAGS@
|
||||||
MSGFILTER = msgfilter
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
|
||||||
|
INCLUDES = -I.. -I$(top_srcdir)/intl
|
||||||
|
|
||||||
|
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
|
||||||
|
|
||||||
POFILES = @POFILES@
|
POFILES = @POFILES@
|
||||||
GMOFILES = @GMOFILES@
|
GMOFILES = @GMOFILES@
|
||||||
UPDATEPOFILES = @UPDATEPOFILES@
|
DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
|
||||||
DUMMYPOFILES = @DUMMYPOFILES@
|
$(POFILES) $(GMOFILES)
|
||||||
DISTFILES.common = Makefile.in.in Makevars remove-potcdate.sin \
|
|
||||||
$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
|
|
||||||
DISTFILES = $(DISTFILES.common) POTFILES.in $(DOMAIN).pot \
|
|
||||||
$(POFILES) $(GMOFILES) \
|
|
||||||
$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
|
|
||||||
|
|
||||||
POTFILES = \
|
POTFILES = \
|
||||||
|
|
||||||
CATALOGS = @CATALOGS@
|
CATALOGS = @CATALOGS@
|
||||||
|
|
||||||
# Makevars gets inserted here. (Don't remove this line!)
|
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-update
|
.SUFFIXES: .c .o .po .pox .gmo .mo
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
$(COMPILE) $<
|
||||||
|
|
||||||
|
.po.pox:
|
||||||
|
$(MAKE) $(PACKAGE).pot
|
||||||
|
$(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
|
||||||
|
|
||||||
.po.mo:
|
.po.mo:
|
||||||
@echo "$(MSGFMT) -c -o $@ $<"; \
|
$(MSGFMT) -o $@ $<
|
||||||
$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
|
|
||||||
|
|
||||||
.po.gmo:
|
.po.gmo:
|
||||||
@lang=`echo $* | sed -e 's,.*/,,'`; \
|
file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
|
||||||
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
&& rm -f $$file && $(GMSGFMT) --statistics -o $$file $<
|
||||||
echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
|
|
||||||
cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
|
|
||||||
|
|
||||||
.sin.sed:
|
|
||||||
sed -e '/^#/d' $< > t-$@
|
|
||||||
mv t-$@ $@
|
|
||||||
|
|
||||||
|
|
||||||
all: all-@USE_NLS@
|
all: all-@USE_NLS@
|
||||||
@@ -77,38 +77,17 @@ all: all-@USE_NLS@
|
|||||||
all-yes: $(CATALOGS)
|
all-yes: $(CATALOGS)
|
||||||
all-no:
|
all-no:
|
||||||
|
|
||||||
# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
|
# 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
|
# otherwise packages like GCC can not be built if only parts of the source
|
||||||
# have been downloaded.
|
# have been downloaded.
|
||||||
|
|
||||||
$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
|
$(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in
|
||||||
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
|
$(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
|
||||||
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
|
--add-comments --keyword=_ --keyword=N_ \
|
||||||
--files-from=$(srcdir)/POTFILES.in \
|
--files-from=$(srcdir)/POTFILES.in \
|
||||||
--copyright-holder='$(COPYRIGHT_HOLDER)'
|
&& test ! -f $(PACKAGE).po \
|
||||||
test ! -f $(DOMAIN).po || { \
|
|| ( rm -f $(srcdir)/$(PACKAGE).pot \
|
||||||
if test -f $(srcdir)/$(DOMAIN).pot; then \
|
&& mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot )
|
||||||
sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
|
|
||||||
sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
|
|
||||||
if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
|
|
||||||
rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
|
|
||||||
else \
|
|
||||||
rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
|
|
||||||
mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
|
|
||||||
fi; \
|
|
||||||
else \
|
|
||||||
mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
|
|
||||||
fi; \
|
|
||||||
}
|
|
||||||
|
|
||||||
$(srcdir)/$(DOMAIN).pot:
|
|
||||||
$(MAKE) $(DOMAIN).pot-update
|
|
||||||
|
|
||||||
$(POFILES): $(srcdir)/$(DOMAIN).pot
|
|
||||||
@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
|
|
||||||
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
|
||||||
echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
|
|
||||||
cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot
|
|
||||||
|
|
||||||
|
|
||||||
install: install-exec install-data
|
install: install-exec install-data
|
||||||
@@ -116,10 +95,8 @@ install-exec:
|
|||||||
install-data: install-data-@USE_NLS@
|
install-data: install-data-@USE_NLS@
|
||||||
if test "$(PACKAGE)" = "gettext"; then \
|
if test "$(PACKAGE)" = "gettext"; then \
|
||||||
$(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
|
$(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
|
||||||
for file in $(DISTFILES.common); do \
|
$(INSTALL_DATA) $(srcdir)/Makefile.in.in \
|
||||||
$(INSTALL_DATA) $(srcdir)/$$file \
|
$(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
|
||||||
$(DESTDIR)$(gettextsrcdir)/$$file; \
|
|
||||||
done; \
|
|
||||||
else \
|
else \
|
||||||
: ; \
|
: ; \
|
||||||
fi
|
fi
|
||||||
@@ -129,117 +106,41 @@ install-data-yes: all
|
|||||||
@catalogs='$(CATALOGS)'; \
|
@catalogs='$(CATALOGS)'; \
|
||||||
for cat in $$catalogs; do \
|
for cat in $$catalogs; do \
|
||||||
cat=`basename $$cat`; \
|
cat=`basename $$cat`; \
|
||||||
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
lang=`echo $$cat | sed 's/\.gmo$$//'`; \
|
||||||
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
||||||
$(mkinstalldirs) $(DESTDIR)$$dir; \
|
$(mkinstalldirs) $(DESTDIR)$$dir; \
|
||||||
if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
|
if test -r $$cat; then \
|
||||||
$(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
|
$(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
|
||||||
echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
|
echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \
|
||||||
for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
|
else \
|
||||||
if test -n "$$lc"; then \
|
$(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
|
||||||
if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
|
echo "installing $(srcdir)/$$cat as" \
|
||||||
link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
|
"$(DESTDIR)$$dir/$(PACKAGE).mo"; \
|
||||||
mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
fi; \
|
||||||
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
|
||||||
(cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
|
|
||||||
for file in *; do \
|
|
||||||
if test -f $$file; then \
|
|
||||||
ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
|
|
||||||
fi; \
|
|
||||||
done); \
|
|
||||||
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
|
||||||
else \
|
|
||||||
if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
|
|
||||||
:; \
|
|
||||||
else \
|
|
||||||
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
|
||||||
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
|
||||||
fi; \
|
|
||||||
fi; \
|
|
||||||
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
|
||||||
ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
|
|
||||||
ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
|
|
||||||
cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
|
||||||
echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
|
|
||||||
fi; \
|
|
||||||
done; \
|
|
||||||
done
|
|
||||||
|
|
||||||
install-strip: install
|
|
||||||
|
|
||||||
installdirs: installdirs-exec installdirs-data
|
|
||||||
installdirs-exec:
|
|
||||||
installdirs-data: installdirs-data-@USE_NLS@
|
|
||||||
if test "$(PACKAGE)" = "gettext"; then \
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
|
|
||||||
else \
|
|
||||||
: ; \
|
|
||||||
fi
|
|
||||||
installdirs-data-no:
|
|
||||||
installdirs-data-yes:
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$(datadir)
|
|
||||||
@catalogs='$(CATALOGS)'; \
|
|
||||||
for cat in $$catalogs; do \
|
|
||||||
cat=`basename $$cat`; \
|
|
||||||
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
|
||||||
dir=$(localedir)/$$lang/LC_MESSAGES; \
|
|
||||||
$(mkinstalldirs) $(DESTDIR)$$dir; \
|
|
||||||
for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
|
|
||||||
if test -n "$$lc"; then \
|
|
||||||
if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
|
|
||||||
link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
|
|
||||||
mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
|
||||||
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
|
||||||
(cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
|
|
||||||
for file in *; do \
|
|
||||||
if test -f $$file; then \
|
|
||||||
ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
|
|
||||||
fi; \
|
|
||||||
done); \
|
|
||||||
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
|
|
||||||
else \
|
|
||||||
if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
|
|
||||||
:; \
|
|
||||||
else \
|
|
||||||
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
|
||||||
mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
|
|
||||||
fi; \
|
|
||||||
fi; \
|
|
||||||
fi; \
|
|
||||||
done; \
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# Define this as empty until I found a useful application.
|
# Define this as empty until I found a useful application.
|
||||||
installcheck:
|
installcheck:
|
||||||
|
|
||||||
uninstall: uninstall-exec uninstall-data
|
uninstall:
|
||||||
uninstall-exec:
|
|
||||||
uninstall-data: uninstall-data-@USE_NLS@
|
|
||||||
if test "$(PACKAGE)" = "gettext"; then \
|
|
||||||
for file in $(DISTFILES.common); do \
|
|
||||||
rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
|
|
||||||
done; \
|
|
||||||
else \
|
|
||||||
: ; \
|
|
||||||
fi
|
|
||||||
uninstall-data-no:
|
|
||||||
uninstall-data-yes:
|
|
||||||
catalogs='$(CATALOGS)'; \
|
catalogs='$(CATALOGS)'; \
|
||||||
for cat in $$catalogs; do \
|
for cat in $$catalogs; do \
|
||||||
cat=`basename $$cat`; \
|
cat=`basename $$cat`; \
|
||||||
lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
|
lang=`echo $$cat | sed 's/\.gmo$$//'`; \
|
||||||
for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
|
rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \
|
||||||
rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
|
|
||||||
done; \
|
|
||||||
done
|
done
|
||||||
|
if test "$(PACKAGE)" = "gettext"; then \
|
||||||
|
rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
|
||||||
|
else \
|
||||||
|
: ; \
|
||||||
|
fi
|
||||||
|
|
||||||
check: all
|
check: all
|
||||||
|
|
||||||
dvi info tags TAGS ID:
|
dvi info tags TAGS ID:
|
||||||
|
|
||||||
mostlyclean:
|
mostlyclean:
|
||||||
rm -f remove-potcdate.sed
|
rm -f core core.* *.pox $(PACKAGE).po *.new.po
|
||||||
rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
|
|
||||||
rm -fr *.o
|
rm -fr *.o
|
||||||
|
|
||||||
clean: mostlyclean
|
clean: mostlyclean
|
||||||
@@ -259,48 +160,28 @@ dist distdir:
|
|||||||
# This is a separate target because 'update-po' must be executed before.
|
# This is a separate target because 'update-po' must be executed before.
|
||||||
dist2: $(DISTFILES)
|
dist2: $(DISTFILES)
|
||||||
dists="$(DISTFILES)"; \
|
dists="$(DISTFILES)"; \
|
||||||
if test -f $(srcdir)/ChangeLog; then dists="$$dists ChangeLog"; fi; \
|
|
||||||
if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
|
|
||||||
for file in $$dists; do \
|
for file in $$dists; do \
|
||||||
if test -f $$file; then \
|
if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
|
||||||
cp -p $$file $(distdir); \
|
cp -p $$dir/$$file $(distdir); \
|
||||||
else \
|
|
||||||
cp -p $(srcdir)/$$file $(distdir); \
|
|
||||||
fi; \
|
|
||||||
done
|
done
|
||||||
|
|
||||||
update-po: Makefile
|
update-po: Makefile
|
||||||
$(MAKE) $(DOMAIN).pot-update
|
$(MAKE) $(PACKAGE).pot
|
||||||
$(MAKE) $(UPDATEPOFILES)
|
|
||||||
$(MAKE) update-gmo
|
|
||||||
|
|
||||||
# General rule for updating PO files.
|
|
||||||
|
|
||||||
.nop.po-update:
|
|
||||||
@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
|
|
||||||
if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \
|
if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \
|
||||||
tmpdir=`pwd`; \
|
|
||||||
echo "$$lang:"; \
|
|
||||||
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
|
||||||
echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
|
|
||||||
cd $(srcdir); \
|
cd $(srcdir); \
|
||||||
if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
|
catalogs='$(GMOFILES)'; \
|
||||||
if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
|
for cat in $$catalogs; do \
|
||||||
rm -f $$tmpdir/$$lang.new.po; \
|
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 \
|
else \
|
||||||
if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
|
echo "msgmerge for $$cat failed!"; \
|
||||||
:; \
|
rm -f $$lang.new.po; \
|
||||||
else \
|
|
||||||
echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
|
|
||||||
exit 1; \
|
|
||||||
fi; \
|
|
||||||
fi; \
|
fi; \
|
||||||
else \
|
done
|
||||||
echo "msgmerge for $$lang.po failed!" 1>&2; \
|
$(MAKE) update-gmo
|
||||||
rm -f $$tmpdir/$$lang.new.po; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
$(DUMMYPOFILES):
|
|
||||||
|
|
||||||
update-gmo: Makefile $(GMOFILES)
|
update-gmo: Makefile $(GMOFILES)
|
||||||
@:
|
@:
|
||||||
@@ -310,8 +191,6 @@ Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in
|
|||||||
&& CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
|
&& CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
|
||||||
$(SHELL) ./config.status
|
$(SHELL) ./config.status
|
||||||
|
|
||||||
force:
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make not to export all variables.
|
# 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.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
|||||||
-25
@@ -1,25 +0,0 @@
|
|||||||
# Makefile variables for PO directory in any package using GNU gettext.
|
|
||||||
|
|
||||||
# Usually the message domain is the same as the package name.
|
|
||||||
DOMAIN = $(PACKAGE)
|
|
||||||
|
|
||||||
# These two variables depend on the location of this directory.
|
|
||||||
subdir = po
|
|
||||||
top_builddir = ..
|
|
||||||
|
|
||||||
# These options get passed to xgettext.
|
|
||||||
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
|
|
||||||
|
|
||||||
# This is the copyright holder that gets inserted into the header of the
|
|
||||||
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
|
|
||||||
# package. (Note that the msgstr strings, extracted from the package's
|
|
||||||
# sources, belong to the copyright holder of the package.) Translators are
|
|
||||||
# expected to transfer the copyright for their translations to this person
|
|
||||||
# or entity, or to disclaim their copyright. The empty string stands for
|
|
||||||
# the public domain; in this case the translators are expected to disclaim
|
|
||||||
# their copyright.
|
|
||||||
COPYRIGHT_HOLDER = Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
# This is the list of locale categories, beyond LC_MESSAGES, for which the
|
|
||||||
# message catalogs shall be used. It is usually empty.
|
|
||||||
EXTRA_LOCALE_CATEGORIES =
|
|
||||||
@@ -5,6 +5,7 @@ src/files.c
|
|||||||
src/getargs.c
|
src/getargs.c
|
||||||
src/lalr.c
|
src/lalr.c
|
||||||
src/lex.c
|
src/lex.c
|
||||||
|
src/main.c
|
||||||
src/output.c
|
src/output.c
|
||||||
src/print.c
|
src/print.c
|
||||||
src/print_graph.c
|
src/print_graph.c
|
||||||
|
|||||||
@@ -4,22 +4,21 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: bison 1.33b\n"
|
"Project-Id-Version: bison 1.28d\n"
|
||||||
"POT-Creation-Date: 2002-03-20 09:33+0100\n"
|
"POT-Creation-Date: 2002-01-29 17:17+0100\n"
|
||||||
"PO-Revision-Date: 2002-03-05 16:27+0200\n"
|
"PO-Revision-Date: 2001-08-29 17:06+02:00\n"
|
||||||
"Last-Translator: Toomas Soome <[email protected]>\n"
|
"Last-Translator: Toomas Soome <[email protected]>\n"
|
||||||
"Language-Team: Estonian <[email protected]>\n"
|
"Language-Team: Estonian <[email protected]>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=ISO-8859-15\n"
|
"Content-Type: text/plain; charset=ISO-8859-15\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
|
|
||||||
#: src/LR0.c:189
|
#: src/LR0.c:194
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "too many states (max %d)"
|
msgid "too many states (max %d)"
|
||||||
msgstr "liiga palju olekuid (maks %d)"
|
msgstr "liiga palju olekuid (maks %d)"
|
||||||
|
|
||||||
#: src/complain.c:99 lib/error.c:128 lib/error.c:156
|
#: lib/error.c:128 lib/error.c:156 src/complain.c:99
|
||||||
msgid "Unknown system error"
|
msgid "Unknown system error"
|
||||||
msgstr "Tundmatu süsteemi viga"
|
msgstr "Tundmatu süsteemi viga"
|
||||||
|
|
||||||
@@ -31,115 +30,93 @@ msgstr "hoiatus: "
|
|||||||
msgid "fatal error: "
|
msgid "fatal error: "
|
||||||
msgstr "fataalne viga: "
|
msgstr "fataalne viga: "
|
||||||
|
|
||||||
#: src/conflicts.c:44
|
#: src/conflicts.c:46
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
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"
|
msgstr "Konflikt olekus %d reegli %d ja märgi %s vahel lahendatud, kui %s.\n"
|
||||||
|
|
||||||
#: src/conflicts.c:94 src/conflicts.c:119
|
#: src/conflicts.c:111 src/conflicts.c:133
|
||||||
msgid "reduce"
|
msgid "reduce"
|
||||||
msgstr "redutseerimine"
|
msgstr "redutseerimine"
|
||||||
|
|
||||||
#: src/conflicts.c:101 src/conflicts.c:115
|
#: src/conflicts.c:116 src/conflicts.c:128
|
||||||
msgid "shift"
|
msgid "shift"
|
||||||
msgstr "nihutamine"
|
msgstr "nihutamine"
|
||||||
|
|
||||||
#: src/conflicts.c:123
|
#: src/conflicts.c:138
|
||||||
msgid "an error"
|
msgid "an error"
|
||||||
msgstr "viga"
|
msgstr "viga"
|
||||||
|
|
||||||
#: src/conflicts.c:302
|
#: src/conflicts.c:291
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d shift/reduce conflict"
|
msgid "%d shift/reduce conflict"
|
||||||
msgid_plural "%d shift/reduce conflicts"
|
msgid_plural "%d shift/reduce conflicts"
|
||||||
msgstr[0] "%d nihutamine/redutseerimine konflikt"
|
msgstr[0] " %d nihutamine/redutseerimine konflikti"
|
||||||
msgstr[1] "%d nihutamine/redutseerimine konflikti"
|
|
||||||
|
|
||||||
#: src/conflicts.c:309
|
#: src/conflicts.c:298
|
||||||
|
#, fuzzy
|
||||||
msgid "and"
|
msgid "and"
|
||||||
msgstr "ja"
|
msgstr " ja"
|
||||||
|
|
||||||
#: src/conflicts.c:315
|
#: src/conflicts.c:304
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d reduce/reduce conflict"
|
msgid "%d reduce/reduce conflict"
|
||||||
msgid_plural "%d reduce/reduce conflicts"
|
msgid_plural "%d reduce/reduce conflicts"
|
||||||
msgstr[0] "%d redutseerimine/redutseerimine konflikt"
|
msgstr[0] " %d redutseerimine/redutseerimine konflikti"
|
||||||
msgstr[1] "%d redutseerimine/redutseerimine konflikti"
|
|
||||||
|
|
||||||
#: src/conflicts.c:340
|
#: src/conflicts.c:329
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "State %d contains "
|
msgid "State %d contains "
|
||||||
msgstr "Olek %d sisaldab "
|
msgstr "Olek %d sisaldab"
|
||||||
|
|
||||||
#: src/conflicts.c:387
|
#. If invoked with `--yacc', use the output format specified by
|
||||||
|
#. POSIX.
|
||||||
|
#: src/conflicts.c:376
|
||||||
msgid "conflicts: "
|
msgid "conflicts: "
|
||||||
msgstr "konfliktid: "
|
msgstr "konfliktid: "
|
||||||
|
|
||||||
#: src/conflicts.c:389
|
#: src/conflicts.c:378
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %d shift/reduce"
|
msgid " %d shift/reduce"
|
||||||
msgstr " %d nihutamine/redutseerimine"
|
msgstr " %d nihutamine/redutseerimine"
|
||||||
|
|
||||||
#: src/conflicts.c:393
|
#: src/conflicts.c:382
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %d reduce/reduce"
|
msgid " %d reduce/reduce"
|
||||||
msgstr " %d redutseerimine/redutseerimine"
|
msgstr " %d redutseerimine/redutseerimine"
|
||||||
|
|
||||||
#: src/conflicts.c:398 src/reduce.c:508
|
#: src/conflicts.c:387 src/reduce.c:499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s contains "
|
msgid "%s contains "
|
||||||
msgstr "%s sisaldab "
|
msgstr "%s sisaldab "
|
||||||
|
|
||||||
#: src/conflicts.c:412
|
#: src/conflicts.c:394
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "expected %d shift/reduce conflict\n"
|
msgid "expected %d shift/reduce conflict\n"
|
||||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
msgstr[0] "eeldasime %d nihutamine/redutseerimine konflikti\n"
|
msgstr[0] " %d nihutamine/redutseerimine konflikti"
|
||||||
msgstr[1] "eeldasime %d nihutamine/redutseerimine konflikti\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:463 src/conflicts.c:540
|
#: src/files.c:159
|
||||||
#, c-format
|
|
||||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
|
||||||
msgstr " %-4s\t[redutseerin, kasutades reeglit %d (%s)]\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:467 src/print.c:154
|
|
||||||
#, c-format
|
|
||||||
msgid ""
|
|
||||||
" $default\treduce using rule %d (%s)\n"
|
|
||||||
"\n"
|
|
||||||
msgstr ""
|
|
||||||
" $default\tredutseerin kasutades reeglit %d (%s)\n"
|
|
||||||
"\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:521 src/conflicts.c:534
|
|
||||||
#, c-format
|
|
||||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
|
||||||
msgstr " %-4s\tredutseerin kasutades reeglit %d (%s)\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:550
|
|
||||||
#, c-format
|
|
||||||
msgid " $default\treduce using rule %d (%s)\n"
|
|
||||||
msgstr " $default\tredutseerin kasutades reeglit %d (%s)\n"
|
|
||||||
|
|
||||||
#: src/files.c:151
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr "faili `%s' ei saa avada"
|
msgstr "faili `%s' ei saa avada"
|
||||||
|
|
||||||
#: src/files.c:170
|
#: src/files.c:178
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr "faili ei õnnestu sulgeda"
|
msgstr "faili ei õnnestu sulgeda"
|
||||||
|
|
||||||
#: src/getargs.c:84
|
#. 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"
|
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
|
||||||
msgstr "GNU bison genereerib parsereid LALR(1) grammatikatele.\n"
|
msgstr "GNU bison genereerib parsereid LALR(1) grammatikatele.\n"
|
||||||
|
|
||||||
#: src/getargs.c:88
|
#: src/getargs.c:59
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Usage: %s [OPTION]... FILE\n"
|
msgid "Usage: %s [OPTION]... FILE\n"
|
||||||
msgstr "Kasuta: %s [VÕTI]...FAIL\n"
|
msgstr "Kasuta: %s [VÕTI]...FAIL\n"
|
||||||
|
|
||||||
#: src/getargs.c:92
|
#: src/getargs.c:63
|
||||||
msgid ""
|
msgid ""
|
||||||
"If a long option shows an argument as mandatory, then it is mandatory\n"
|
"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"
|
"for the equivalent short option also. Similarly for optional arguments.\n"
|
||||||
@@ -147,7 +124,7 @@ msgstr ""
|
|||||||
"Kui pikk võti näitab, et argument on kohustuslik, siis on see kohustuslik \n"
|
"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"
|
"ka lühikese võtme korral. Sama ka vabalt valitavate võtmete korral.\n"
|
||||||
|
|
||||||
#: src/getargs.c:98
|
#: src/getargs.c:69
|
||||||
msgid ""
|
msgid ""
|
||||||
"Operation modes:\n"
|
"Operation modes:\n"
|
||||||
" -h, --help display this help and exit\n"
|
" -h, --help display this help and exit\n"
|
||||||
@@ -159,7 +136,7 @@ msgstr ""
|
|||||||
" -V, --version esita versiooniinfo ja lõpeta töö\n"
|
" -V, --version esita versiooniinfo ja lõpeta töö\n"
|
||||||
" -y, --yacc emuleeri POSIX yacc\n"
|
" -y, --yacc emuleeri POSIX yacc\n"
|
||||||
|
|
||||||
#: src/getargs.c:105
|
#: src/getargs.c:76
|
||||||
msgid ""
|
msgid ""
|
||||||
"Parser:\n"
|
"Parser:\n"
|
||||||
" -S, --skeleton=FILE specify the skeleton to use\n"
|
" -S, --skeleton=FILE specify the skeleton to use\n"
|
||||||
@@ -179,7 +156,8 @@ msgstr ""
|
|||||||
" -n, --no-parser genereeri ainult tabelid\n"
|
" -n, --no-parser genereeri ainult tabelid\n"
|
||||||
" -k, --token-table lisa ka sümbolite nimede tabel\n"
|
" -k, --token-table lisa ka sümbolite nimede tabel\n"
|
||||||
|
|
||||||
#: src/getargs.c:117
|
#: src/getargs.c:88
|
||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"Output:\n"
|
"Output:\n"
|
||||||
" -d, --defines also produce a header file\n"
|
" -d, --defines also produce a header file\n"
|
||||||
@@ -196,24 +174,25 @@ msgstr ""
|
|||||||
" -o, --output-file=FAIL jäta väljund FAILi\n"
|
" -o, --output-file=FAIL jäta väljund FAILi\n"
|
||||||
" -g, --graph loo automaadi kirjeldus VCG graafina\n"
|
" -g, --graph loo automaadi kirjeldus VCG graafina\n"
|
||||||
|
|
||||||
#: src/getargs.c:127
|
#: src/getargs.c:98
|
||||||
msgid "Report bugs to <[email protected]>.\n"
|
msgid "Report bugs to <[email protected]>.\n"
|
||||||
msgstr "Teatage palun vigadest aadressil <[email protected]>.\n"
|
msgstr "Teatage palun vigadest aadressil <[email protected]>.\n"
|
||||||
|
|
||||||
#: src/getargs.c:141
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:112
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "bison (GNU Bison) %s"
|
msgid "bison (GNU Bison) %s"
|
||||||
msgstr "bison (GNU Bison) %s"
|
msgstr "bison (GNU Bison) %s"
|
||||||
|
|
||||||
#: src/getargs.c:146
|
#: src/getargs.c:117
|
||||||
msgid ""
|
msgid ""
|
||||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
"Free Software Foundation, Inc.\n"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Autoriõigus 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
|
"Autoriõigus 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, "
|
||||||
"Free Software Foundation, Inc.\n"
|
"Inc.\n"
|
||||||
|
|
||||||
#: src/getargs.c:151
|
#: src/getargs.c:121
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is free software; see the source for copying conditions. There is NO\n"
|
"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"
|
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||||
@@ -221,445 +200,451 @@ msgstr ""
|
|||||||
"See on vaba tarkvara; kopeerimistingimused leiate lähtetekstidest. Garantii\n"
|
"See on vaba tarkvara; kopeerimistingimused leiate lähtetekstidest. Garantii\n"
|
||||||
"PUUDUB; ka müügiks või mingil eesmärgil kasutamiseks.\n"
|
"PUUDUB; ka müügiks või mingil eesmärgil kasutamiseks.\n"
|
||||||
|
|
||||||
#: src/getargs.c:230 src/lex.c:705
|
#: src/getargs.c:200 src/lex.c:599
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' is no longer supported"
|
msgid "`%s' is no longer supported"
|
||||||
msgstr "`%s' ei ole enam toetatud"
|
msgstr "`%s' ei ole enam toetatud"
|
||||||
|
|
||||||
#: src/getargs.c:254
|
#: src/getargs.c:224
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Try `%s --help' for more information.\n"
|
msgid "Try `%s --help' for more information.\n"
|
||||||
msgstr "Lisainfo saamiseks proovige `%s --help'.\n"
|
msgstr "Lisainfo saamiseks proovige `%s --help'.\n"
|
||||||
|
|
||||||
#: src/getargs.c:261
|
#: src/getargs.c:233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: no grammar file given\n"
|
msgid "%s: no grammar file given\n"
|
||||||
msgstr "%s: puudub grammatikafail\n"
|
msgstr "%s: puudub grammatikafail\n"
|
||||||
|
|
||||||
#: src/getargs.c:265
|
#: src/getargs.c:237
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: extra arguments ignored after `%s'\n"
|
msgid "%s: extra arguments ignored after `%s'\n"
|
||||||
msgstr "%s: ignoreerin lisaargumente peale `%s'\n"
|
msgstr "%s: ignoreerin lisaargumente peale `%s'\n"
|
||||||
|
|
||||||
#: src/lalr.c:256
|
#: src/lalr.c:175
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "too many gotos (max %d)"
|
msgid "too many gotos (max %d)"
|
||||||
msgstr "liiga palju gotosid (maks %d)"
|
msgstr "liiga palju gotosid (maks %d)"
|
||||||
|
|
||||||
#: src/lex.c:76
|
#: src/lex.c:77
|
||||||
msgid "unexpected `/' found and ignored"
|
msgid "unexpected `/' found and ignored"
|
||||||
msgstr "leidsin ja ignoreerin ootamatu `/'"
|
msgstr "leidsin ja ignoreerin ootamatu `/'"
|
||||||
|
|
||||||
#: src/lex.c:105 src/reader.c:280
|
#: src/lex.c:106 src/reader.c:302
|
||||||
msgid "unterminated comment"
|
msgid "unterminated comment"
|
||||||
msgstr "lõpetamata kommentaar"
|
msgstr "lõpetamata kommentaar"
|
||||||
|
|
||||||
#: src/lex.c:137
|
#: src/lex.c:138
|
||||||
msgid "unexpected end of file"
|
msgid "unexpected end of file"
|
||||||
msgstr "ootamatu faililõpp"
|
msgstr "ootamatu faililõpp"
|
||||||
|
|
||||||
#: src/lex.c:166
|
#: src/lex.c:157
|
||||||
msgid "unescaped newline in constant"
|
msgid "unescaped newline in constant"
|
||||||
msgstr "paojadata reavahetus konstandis"
|
msgstr "paojadata reavahetus konstandis"
|
||||||
|
|
||||||
#: src/lex.c:208
|
#: src/lex.c:196
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "octal value outside range 0...255: `\\%o'"
|
msgid "octal value outside range 0...255: `\\%o'"
|
||||||
msgstr "kaheksandväärtus väljaspool piire 0...255: `\\%o'"
|
msgstr "kaheksandväärtus väljaspool piire 0...255: `\\%o'"
|
||||||
|
|
||||||
#: src/lex.c:233
|
#: src/lex.c:221
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "hexadecimal value above 255: `\\x%x'"
|
msgid "hexadecimal value above 255: `\\x%x'"
|
||||||
msgstr "kuueteistkümnendväärtus suurem, kui above 255: `\\x%x'"
|
msgstr "kuueteistkümnendväärtus suurem, kui above 255: `\\x%x'"
|
||||||
|
|
||||||
#: src/lex.c:245
|
#: src/lex.c:233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown escape sequence: `\\' followed by `%s'"
|
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||||
msgstr "tundmatu paojada: `\\' järgneb `%s'"
|
msgstr "tundmatu paojada: `\\' järgneb `%s'"
|
||||||
|
|
||||||
#: src/lex.c:342
|
#: src/lex.c:264
|
||||||
msgid "unterminated type name at end of file"
|
msgid "unterminated type name at end of file"
|
||||||
msgstr "lõpetamata tüübinimi faili lõpus"
|
msgstr "lõpetamata tüübinimi faili lõpus"
|
||||||
|
|
||||||
#: src/lex.c:345
|
#: src/lex.c:267
|
||||||
msgid "unterminated type name"
|
msgid "unterminated type name"
|
||||||
msgstr "lõpetamata tüübinimi"
|
msgstr "lõpetamata tüübinimi"
|
||||||
|
|
||||||
#: src/lex.c:438
|
#: src/lex.c:359
|
||||||
msgid "use \"...\" for multi-character literal tokens"
|
msgid "use \"...\" for multi-character literal tokens"
|
||||||
msgstr "kasuta mitmesümboliliste literaalidega \"...\" konstruktsiooni"
|
msgstr "kasuta mitmesümboliliste literaalidega \"...\" konstruktsiooni"
|
||||||
|
|
||||||
#: src/lex.c:678
|
#: src/lex.c:571
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' supports no argument: %s"
|
msgid "`%s' supports no argument: %s"
|
||||||
msgstr "`%s' ei toeta argumente: %s"
|
msgstr ""
|
||||||
|
|
||||||
#: src/lex.c:694
|
#: src/lex.c:588
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "`%s' requires an argument"
|
msgid "`%s' requires an argument"
|
||||||
msgstr "võti `%s' nõuab argumenti"
|
msgstr "%s: võti `%s' nõuab argumenti\n"
|
||||||
|
|
||||||
#: src/output.c:951
|
#: src/output.c:804
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "maximum table size (%d) exceeded"
|
msgid "maximum table size (%d) exceeded"
|
||||||
msgstr "ületati maksimaalset tabelisuurust (%d)"
|
msgstr "ületati maksimaalset tabelisuurust (%d)"
|
||||||
|
|
||||||
#: src/print.c:39
|
#: src/print.c:44
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " type %d is %s\n"
|
msgid " type %d is %s\n"
|
||||||
msgstr " tüüp %d on %s\n"
|
msgstr " tüüp %d on %s\n"
|
||||||
|
|
||||||
#: src/print.c:88
|
#: src/print.c:106
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " (rule %d)"
|
msgid " (rule %d)"
|
||||||
msgstr " (reegel %d)"
|
msgstr " (reegel %d)"
|
||||||
|
|
||||||
#: src/print.c:108
|
|
||||||
msgid " $default\taccept\n"
|
|
||||||
msgstr " $default\taktsepteerin\n"
|
|
||||||
|
|
||||||
#: src/print.c:110
|
|
||||||
msgid " NO ACTIONS\n"
|
|
||||||
msgstr " TEGEVUSI POLE\n"
|
|
||||||
|
|
||||||
#: src/print.c:124
|
|
||||||
#, c-format
|
|
||||||
msgid " $ \tgo to state %d\n"
|
|
||||||
msgstr " $ \tliigu olekule %d\n"
|
|
||||||
|
|
||||||
#: src/print.c:127
|
#: src/print.c:127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\tshift, and go to state %d\n"
|
msgid " %-4s\tshift, and go to state %d\n"
|
||||||
msgstr " %-4s\tnihuta ja liigu olekule %d\n"
|
msgstr " %-4s\tnihuta ja liigu olekule %d\n"
|
||||||
|
|
||||||
#: src/print.c:142
|
#: src/print.c:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\terror (nonassociative)\n"
|
msgid " %-4s\terror (nonassociative)\n"
|
||||||
msgstr " %-4s\tviga (mitteassotsiatiivne)\n"
|
msgstr " %-4s\tviga (mitteassotsiatiivne)\n"
|
||||||
|
|
||||||
#: src/print.c:169
|
#: src/print.c:168
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\tgo to state %d\n"
|
msgid " %-4s\tgo to state %d\n"
|
||||||
msgstr " %-4s\tliigu olekule %d\n"
|
msgstr " %-4s\tliigu olekule %d\n"
|
||||||
|
|
||||||
#: src/print.c:180
|
#: 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
|
#, c-format
|
||||||
msgid "state %d"
|
msgid "state %d"
|
||||||
msgstr "olek %d"
|
msgstr "olek %d"
|
||||||
|
|
||||||
#: src/print.c:211
|
#. rule # : LHS -> RHS
|
||||||
|
#: src/print.c:373
|
||||||
msgid "Grammar"
|
msgid "Grammar"
|
||||||
msgstr "Grammatika"
|
msgstr "Grammatika"
|
||||||
|
|
||||||
#: src/print.c:212
|
#: src/print.c:374
|
||||||
msgid "Number, Line, Rule"
|
msgid "Number, Line, Rule"
|
||||||
msgstr "Number, rida, reegel"
|
msgstr ""
|
||||||
|
|
||||||
#: src/print.c:217
|
#: src/print.c:379
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid " %3d %3d %s ->"
|
msgid " %3d %3d %s ->"
|
||||||
msgstr " %3d %3d %s ->"
|
msgstr "reegel %-4d %s ->"
|
||||||
|
|
||||||
#: src/print.c:224
|
#: src/print.c:386
|
||||||
msgid "empty"
|
msgid "empty"
|
||||||
msgstr "tühi"
|
msgstr ""
|
||||||
|
|
||||||
#: src/print.c:231
|
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||||
|
#: src/print.c:393
|
||||||
msgid "Terminals, with rules where they appear"
|
msgid "Terminals, with rules where they appear"
|
||||||
msgstr "Terminalid, koos reeglitega, kus nad ilmuvad"
|
msgstr "Terminalid, koos reeglitega, kus nad ilmuvad"
|
||||||
|
|
||||||
#: src/print.c:256
|
#: src/print.c:416
|
||||||
msgid "Nonterminals, with rules where they appear"
|
msgid "Nonterminals, with rules where they appear"
|
||||||
msgstr "Mitteterminalid, koos reeglitega, kus nad ilmuvad"
|
msgstr "Mitteterminalid, koos reeglitega, kus nad ilmuvad"
|
||||||
|
|
||||||
#: src/print.c:282
|
#: src/print.c:442
|
||||||
msgid " on left:"
|
msgid " on left:"
|
||||||
msgstr " vasakul:"
|
msgstr " vasakul:"
|
||||||
|
|
||||||
#: src/print.c:297
|
#: src/print.c:457
|
||||||
msgid " on right:"
|
msgid " on right:"
|
||||||
msgstr " paremal:"
|
msgstr " paremal:"
|
||||||
|
|
||||||
#: src/print_graph.c:146
|
#: src/reader.c:100
|
||||||
#, c-format
|
|
||||||
msgid "%-4s\terror (nonassociative)"
|
|
||||||
msgstr "%-4s\tviga (mitteassotsiatiivne)"
|
|
||||||
|
|
||||||
#: src/print_graph.c:161
|
|
||||||
#, c-format
|
|
||||||
msgid "$default\treduce using rule %d (%s)"
|
|
||||||
msgstr "$default\tredutseerin kasutades reeglit %d (%s)"
|
|
||||||
|
|
||||||
#: src/reader.c:89
|
|
||||||
msgid " Skipping to next \\n"
|
msgid " Skipping to next \\n"
|
||||||
msgstr " Liigun järgmisele \\n"
|
msgstr " Liigun järgmisele \\n"
|
||||||
|
|
||||||
#: src/reader.c:91
|
#: src/reader.c:102
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " Skipping to next %c"
|
msgid " Skipping to next %c"
|
||||||
msgstr " Liigun järgmisele %c"
|
msgstr " Liigun järgmisele %c"
|
||||||
|
|
||||||
#: src/reader.c:142 src/reader.c:154
|
#: src/reader.c:153 src/reader.c:165
|
||||||
msgid "invalid $ value"
|
msgid "invalid $ value"
|
||||||
msgstr "vigane $ väärtus"
|
msgstr "vigane $ väärtus"
|
||||||
|
|
||||||
#: src/reader.c:180 src/reader.c:195
|
#: src/reader.c:192 src/reader.c:207
|
||||||
msgid "unterminated string at end of file"
|
msgid "unterminated string at end of file"
|
||||||
msgstr "lõpetamata sõne faili lõpus"
|
msgstr "lõpetamata sõne faili lõpus"
|
||||||
|
|
||||||
#: src/reader.c:183
|
#: src/reader.c:195
|
||||||
msgid "unterminated string"
|
msgid "unterminated string"
|
||||||
msgstr "lõpetamata sõne"
|
msgstr "lõpetamata sõne"
|
||||||
|
|
||||||
#: src/reader.c:339
|
#: src/reader.c:337 src/reader.c:401
|
||||||
msgid "invalid @ value"
|
#, fuzzy, c-format
|
||||||
msgstr "vigane @ väärtus"
|
msgid "invalid value: %s%d"
|
||||||
|
msgstr "vigane $ väärtus"
|
||||||
|
|
||||||
#: src/reader.c:352 src/reader.c:416
|
#: src/reader.c:351 src/reader.c:423
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is invalid"
|
msgid "%s is invalid"
|
||||||
msgstr "%s on vigane"
|
msgstr "%s on vigane"
|
||||||
|
|
||||||
#: src/reader.c:392
|
#: src/reader.c:391
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "$$ of `%s' has no declared type"
|
msgid "$$ of `%s' has no declared type"
|
||||||
msgstr "`%s' $$ ei oma deklareeritud tüüpi"
|
msgstr "`%s' $$ ei oma deklareeritud tüüpi"
|
||||||
|
|
||||||
#: src/reader.c:409
|
#: src/reader.c:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "$%d of `%s' has no declared type"
|
msgid "$%d of `%s' has no declared type"
|
||||||
msgstr "$%d `%s' ei oma deklareeritud tüüpi"
|
msgstr "$%d `%s' ei oma deklareeritud tüüpi"
|
||||||
|
|
||||||
#: src/reader.c:463
|
#: src/reader.c:473
|
||||||
msgid "unterminated `%{' definition"
|
msgid "unterminated `%{' definition"
|
||||||
msgstr "lõpetamata `%{' definitsioon"
|
msgstr "lõpetamata `%{' definitsioon"
|
||||||
|
|
||||||
#: src/reader.c:508 src/reader.c:623 src/reader.c:673
|
#: src/reader.c:518 src/reader.c:636 src/reader.c:686 src/reader.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Premature EOF after %s"
|
msgid "Premature EOF after %s"
|
||||||
msgstr "Enneaegne EOF peale %s"
|
msgstr "Enneaegne EOF peale %s"
|
||||||
|
|
||||||
#: src/reader.c:525
|
#: src/reader.c:535
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol `%s' used more than once as a literal string"
|
msgid "symbol `%s' used more than once as a literal string"
|
||||||
msgstr "sümbolit `%s' on kasutatud enam kui kord literaal sõnena"
|
msgstr "sümbolit `%s' on kasutatud enam kui kord literaal sõnena"
|
||||||
|
|
||||||
#: src/reader.c:528
|
#: src/reader.c:538
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol `%s' given more than one literal string"
|
msgid "symbol `%s' given more than one literal string"
|
||||||
msgstr "sümbolile `%s' on antud enam kui üks literaal sõne"
|
msgstr "sümbolile `%s' on antud enam kui üks literaal sõne"
|
||||||
|
|
||||||
#: src/reader.c:549 src/reader.c:692
|
#: src/reader.c:559 src/reader.c:705
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol %s redefined"
|
msgid "symbol %s redefined"
|
||||||
msgstr "sümbol %s on uuesti defineeritud"
|
msgstr "sümbol %s on uuesti defineeritud"
|
||||||
|
|
||||||
#: src/reader.c:559 src/reader.c:638 src/reader.c:699 src/reader.c:1315
|
#: src/reader.c:569 src/reader.c:651 src/reader.c:712
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "type redeclaration for %s"
|
msgid "type redeclaration for %s"
|
||||||
msgstr "%s tüübi uuesti deklareerimine"
|
msgstr "%s tüübi uuesti deklareerimine"
|
||||||
|
|
||||||
#: src/reader.c:568
|
#: src/reader.c:581
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' is invalid in %s"
|
msgid "`%s' is invalid in %s"
|
||||||
msgstr "`%s' ei ole %s sees lubatud"
|
msgstr "`%s' ei ole %s sees lubatud"
|
||||||
|
|
||||||
#: src/reader.c:586 src/reader.c:752
|
#: src/reader.c:599 src/reader.c:758
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "multiple %s declarations"
|
msgid "multiple %s declarations"
|
||||||
msgstr "korduvad %s deklaratsioonid"
|
msgstr "korduvad %s deklaratsioonid"
|
||||||
|
|
||||||
#: src/reader.c:588 src/reader.c:931 src/reader.c:956 src/reader.c:1293
|
#: 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
|
#, c-format
|
||||||
msgid "invalid %s declaration"
|
msgid "invalid %s declaration"
|
||||||
msgstr "vigane %s deklaratsioon"
|
msgstr "vigane %s deklaratsioon"
|
||||||
|
|
||||||
#: src/reader.c:608
|
#: src/reader.c:621
|
||||||
msgid "%type declaration has no <typename>"
|
msgid "%type declaration has no <typename>"
|
||||||
msgstr "%type deklaratsioonis puudub <tüübinimi>"
|
msgstr "%type deklaratsioonis puudub <tüübinimi>"
|
||||||
|
|
||||||
#: src/reader.c:643
|
#: src/reader.c:656
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid %%type declaration due to item: %s"
|
msgid "invalid %%type declaration due to item: %s"
|
||||||
msgstr "vigane %%type deklaratsioon, element: %s"
|
msgstr "vigane %%type deklaratsioon, element: %s"
|
||||||
|
|
||||||
#: src/reader.c:688
|
#: src/reader.c:701
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "redefining precedence of %s"
|
msgid "redefining precedence of %s"
|
||||||
msgstr "%s prioriteedi uus definitsioon"
|
msgstr "%s prioriteedi uus definitsioon"
|
||||||
|
|
||||||
#: src/reader.c:711
|
#: src/reader.c:724
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid text (%s) - number should be after identifier"
|
msgid "invalid text (%s) - number should be after identifier"
|
||||||
msgstr "vigane tekst (%s) - number peab olema peale identifikaatorit"
|
msgstr "vigane tekst (%s) - number peab olema peale identifikaatorit"
|
||||||
|
|
||||||
#: src/reader.c:721
|
#: src/reader.c:734
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unexpected item: %s"
|
msgid "unexpected item: %s"
|
||||||
msgstr "ootamatu element: %s"
|
msgstr "ootamatu element: %s"
|
||||||
|
|
||||||
#: src/reader.c:795 src/reader.c:1127 src/reader.c:1204
|
#: src/reader.c:790 src/reader.c:1149
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unmatched %s"
|
msgid "unmatched %s"
|
||||||
msgstr "puudub %s"
|
msgstr "puudub %s"
|
||||||
|
|
||||||
#: src/reader.c:827
|
#: src/reader.c:819
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "argument of %%expect is not an integer"
|
msgid "argument of %%expect is not an integer"
|
||||||
msgstr "%%expect argument ei ole täisarv"
|
msgstr "%%expect argument ei ole täisarv"
|
||||||
|
|
||||||
#: src/reader.c:873
|
#: src/reader.c:865
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized item %s, expected an identifier"
|
msgid "unrecognized item %s, expected an identifier"
|
||||||
msgstr "tundmatu element %s, eeldasin identifikaatorit"
|
msgstr "tundmatu element %s, eeldasin identifikaatorit"
|
||||||
|
|
||||||
#: src/reader.c:895
|
#: src/reader.c:887
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "expected string constant instead of %s"
|
msgid "expected string constant instead of %s"
|
||||||
msgstr "eeldasin %s asemel sõnekonstanti"
|
msgstr "eeldasin %s asemel sõnekonstanti"
|
||||||
|
|
||||||
#: src/reader.c:1043
|
#: src/reader.c:1080
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized: %s"
|
msgid "unrecognized: %s"
|
||||||
msgstr "tundmatu: %s"
|
msgstr "tundmatu: %s"
|
||||||
|
|
||||||
#: src/reader.c:1048
|
#: src/reader.c:1085
|
||||||
msgid "no input grammar"
|
msgid "no input grammar"
|
||||||
msgstr "sisendgrammatikat pole"
|
msgstr "sisendgrammatikat pole"
|
||||||
|
|
||||||
#: src/reader.c:1053
|
#: src/reader.c:1090
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown character: %s"
|
msgid "unknown character: %s"
|
||||||
msgstr "tundmatu sümbol: %s"
|
msgstr "tundmatu sümbol: %s"
|
||||||
|
|
||||||
#: src/reader.c:1227
|
#: src/reader.c:1265
|
||||||
#, c-format
|
|
||||||
msgid "unterminated %guard clause"
|
|
||||||
msgstr "lõpetamata %guard klausel"
|
|
||||||
|
|
||||||
#: src/reader.c:1380
|
|
||||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||||
msgstr "vigaselt formeeritud reegel: algsümbolile ei järgne koolonit"
|
msgstr "vigaselt formeeritud reegel: algsümbolile ei järgne koolonit"
|
||||||
|
|
||||||
#: src/reader.c:1387
|
#: src/reader.c:1272
|
||||||
msgid "grammar starts with vertical bar"
|
msgid "grammar starts with vertical bar"
|
||||||
msgstr "grammatika algab püstkriipsuga"
|
msgstr "grammatika algab püstkriipsuga"
|
||||||
|
|
||||||
#: src/reader.c:1415
|
#: src/reader.c:1300
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "rule given for %s, which is a token"
|
msgid "rule given for %s, which is a token"
|
||||||
msgstr "%s jaoks on antud reegel, aga see on märk"
|
msgstr "%s jaoks on antud reegel, aga see on märk"
|
||||||
|
|
||||||
#: src/reader.c:1445 src/reader.c:1557
|
#: src/reader.c:1405
|
||||||
msgid "previous rule lacks an ending `;'"
|
|
||||||
msgstr "eelmisel reeglil puudub lõpetav `;'"
|
|
||||||
|
|
||||||
#: src/reader.c:1518
|
|
||||||
msgid "two @prec's in a row"
|
msgid "two @prec's in a row"
|
||||||
msgstr "kaks @prec ühel real"
|
msgstr "kaks @prec ühel real"
|
||||||
|
|
||||||
#: src/reader.c:1526
|
#: src/reader.c:1414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%%guard present but %%semantic_parser not specified"
|
msgid "%%guard present but %%semantic_parser not specified"
|
||||||
msgstr "%%guard on määratud, aga %%semantic_parser ei ole"
|
msgstr "%%guard on määratud, aga %%semantic_parser ei ole"
|
||||||
|
|
||||||
#: src/reader.c:1535
|
#: src/reader.c:1424
|
||||||
msgid "two actions at end of one rule"
|
msgid "two actions at end of one rule"
|
||||||
msgstr "kaks tegevust ühe reegli lõpus"
|
msgstr "kaks tegevust ühe reegli lõpus"
|
||||||
|
|
||||||
#: src/reader.c:1549
|
#: src/reader.c:1438
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "type clash (`%s' `%s') on default action"
|
msgid "type clash (`%s' `%s') on default action"
|
||||||
msgstr "vaikimisi tegevuse tüübikonflikt (`%s' `%s')"
|
msgstr "vaikimisi tegevuse tüübikonflikt (`%s' `%s')"
|
||||||
|
|
||||||
#: src/reader.c:1555
|
#: src/reader.c:1444
|
||||||
msgid "empty rule for typed nonterminal, and no action"
|
msgid "empty rule for typed nonterminal, and no action"
|
||||||
msgstr "tüübiga mitteterminalil on tühi reegel ja puudub tegevus"
|
msgstr "tüübiga mitteterminalil on tühi reegel ja puudub tegevus"
|
||||||
|
|
||||||
#: src/reader.c:1601
|
#: src/reader.c:1450
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid input: %s"
|
msgid "invalid input: %s"
|
||||||
msgstr "vigane sisend: %s"
|
msgstr "vigane sisend: %s"
|
||||||
|
|
||||||
#: src/reader.c:1609
|
#: src/reader.c:1457
|
||||||
#, 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:1612
|
|
||||||
msgid "no rules in the input grammar"
|
msgid "no rules in the input grammar"
|
||||||
msgstr "sisendgrammatikas pole reegleid"
|
msgstr "sisendgrammatikas pole reegleid"
|
||||||
|
|
||||||
#: src/reader.c:1640
|
#: src/reader.c:1465
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"kasutatakse sümbolit %s, mis ei ole defineeritud märgina ja millel puuduvad "
|
"kasutatakse sümbolit %s, mis ei ole defineeritud märgina ja millel puuduvad "
|
||||||
"reeglid"
|
"reeglid"
|
||||||
|
|
||||||
#: src/reader.c:1775
|
#: 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
|
#, c-format
|
||||||
msgid "tokens %s and %s both assigned number %d"
|
msgid "tokens %s and %s both assigned number %d"
|
||||||
msgstr "märkidele %s ja %s on mõlemale omistatud number %d"
|
msgstr "märkidele %s ja %s on mõlemale omistatud number %d"
|
||||||
|
|
||||||
#: src/reader.c:1828
|
#: src/reader.c:1601
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "conflicting precedences for %s and %s"
|
msgid "conflicting precedences for %s and %s"
|
||||||
msgstr "%s ja %s omavad konfliktseid prioriteete"
|
msgstr "%s ja %s omavad konfliktseid prioriteete"
|
||||||
|
|
||||||
#: src/reader.c:1840
|
#: src/reader.c:1613
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "conflicting assoc values for %s and %s"
|
msgid "conflicting assoc values for %s and %s"
|
||||||
msgstr "%s ja %s omavad konfliktseid assotsiatiivseid väärtuseid"
|
msgstr "%s ja %s omavad konfliktseid assotsiatiivseid väärtuseid"
|
||||||
|
|
||||||
#: src/reader.c:1879
|
#: src/reader.c:1650
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "the start symbol %s is undefined"
|
msgid "the start symbol %s is undefined"
|
||||||
msgstr "stardisümbol %s ei ole defineeritud"
|
msgstr "stardisümbol %s ei ole defineeritud"
|
||||||
|
|
||||||
#: src/reader.c:1881
|
#: src/reader.c:1652
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "the start symbol %s is a token"
|
msgid "the start symbol %s is a token"
|
||||||
msgstr "stardisümbol %s on märk"
|
msgstr "stardisümbol %s on märk"
|
||||||
|
|
||||||
#: src/reduce.c:409
|
#: 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:"
|
msgid "Useless nonterminals:"
|
||||||
msgstr "Kasutamata mitteterminalid:"
|
msgstr "Kasutamata mitteterminalid:"
|
||||||
|
|
||||||
#: src/reduce.c:422
|
#: src/reduce.c:411
|
||||||
msgid "Terminals which are not used:"
|
msgid "Terminals which are not used:"
|
||||||
msgstr "Terminalid, mida ei kasutatud:"
|
msgstr "Terminalid, mida ei kasutatud:"
|
||||||
|
|
||||||
#: src/reduce.c:433
|
#: src/reduce.c:422
|
||||||
msgid "Useless rules:"
|
msgid "Useless rules:"
|
||||||
msgstr "Kasutamata reeglid:"
|
msgstr "Kasutamata reeglid:"
|
||||||
|
|
||||||
#: src/reduce.c:503
|
#: src/reduce.c:494
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d rule never reduced\n"
|
msgid "%d rule never reduced\n"
|
||||||
msgid_plural "%d rules never reduced\n"
|
msgid_plural "%d rules never reduced\n"
|
||||||
msgstr[0] "%d reegel ei redutseeru\n"
|
msgstr[0] "%d reeglit ei redutseeritud\n"
|
||||||
msgstr[1] "%d reeglit ei redutseeru\n"
|
|
||||||
|
|
||||||
#: src/reduce.c:511
|
#: src/reduce.c:502
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d useless nonterminal"
|
msgid "%d useless nonterminal"
|
||||||
msgid_plural "%d useless nonterminals"
|
msgid_plural "%d useless nonterminals"
|
||||||
msgstr[0] "%d kasutamata mitteterminal"
|
msgstr[0] "%d kasutamata mitteterminali%s"
|
||||||
msgstr[1] "%d kasutamata mitteterminali"
|
|
||||||
|
|
||||||
#: src/reduce.c:517
|
#: src/reduce.c:508
|
||||||
msgid " and "
|
msgid " and "
|
||||||
msgstr " ja "
|
msgstr " ja "
|
||||||
|
|
||||||
#: src/reduce.c:520
|
#: src/reduce.c:511
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d useless rule"
|
msgid "%d useless rule"
|
||||||
msgid_plural "%d useless rules"
|
msgid_plural "%d useless rules"
|
||||||
msgstr[0] "%d kasutamata reegel"
|
msgstr[0] "%d kasutamata reeglit%s"
|
||||||
msgstr[1] "%d kasutamata reeglit"
|
|
||||||
|
|
||||||
#: src/reduce.c:551
|
#: src/reduce.c:542
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Start symbol %s does not derive any sentence"
|
msgid "Start symbol %s does not derive any sentence"
|
||||||
msgstr "Stardisümbolist %s ei tuletata ühtegi lauset"
|
msgstr "Stardisümbolist %s ei tuletata ühtegi lauset"
|
||||||
@@ -684,16 +669,19 @@ msgstr "%s: v
|
|||||||
msgid "%s: option `%s' requires an argument\n"
|
msgid "%s: option `%s' requires an argument\n"
|
||||||
msgstr "%s: võti `%s' nõuab argumenti\n"
|
msgstr "%s: võti `%s' nõuab argumenti\n"
|
||||||
|
|
||||||
|
#. --option
|
||||||
#: lib/getopt.c:771
|
#: lib/getopt.c:771
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: unrecognized option `--%s'\n"
|
msgid "%s: unrecognized option `--%s'\n"
|
||||||
msgstr "%s: tundmatu võti `--%s'\n"
|
msgstr "%s: tundmatu võti `--%s'\n"
|
||||||
|
|
||||||
|
#. +option or -option
|
||||||
#: lib/getopt.c:775
|
#: lib/getopt.c:775
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: unrecognized option `%c%s'\n"
|
msgid "%s: unrecognized option `%c%s'\n"
|
||||||
msgstr "%s: tundmatu võti `%c%s'\n"
|
msgstr "%s: tundmatu võti `%c%s'\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
#: lib/getopt.c:801
|
#: lib/getopt.c:801
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: illegal option -- %c\n"
|
msgid "%s: illegal option -- %c\n"
|
||||||
@@ -704,6 +692,7 @@ msgstr "%s: lubamatu v
|
|||||||
msgid "%s: invalid option -- %c\n"
|
msgid "%s: invalid option -- %c\n"
|
||||||
msgstr "%s: vigane võti -- %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
|
#: lib/getopt.c:834 lib/getopt.c:964
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: option requires an argument -- %c\n"
|
msgid "%s: option requires an argument -- %c\n"
|
||||||
@@ -719,10 +708,26 @@ msgstr "%s: v
|
|||||||
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
||||||
msgstr "%s: võti `-W %s' ei luba argumenti\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
|
#: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
|
||||||
msgid "memory exhausted"
|
msgid "memory exhausted"
|
||||||
msgstr "mälu on otsas"
|
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
|
#: lib/quotearg.c:274
|
||||||
msgid "`"
|
msgid "`"
|
||||||
msgstr "`"
|
msgstr "`"
|
||||||
@@ -730,3 +735,81 @@ msgstr "`"
|
|||||||
#: lib/quotearg.c:275
|
#: lib/quotearg.c:275
|
||||||
msgid "'"
|
msgid "'"
|
||||||
msgstr "'"
|
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"
|
||||||
|
|||||||
@@ -5,22 +5,21 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: GNU bison 1.34a\n"
|
"Project-Id-Version: GNU bison 1.28d\n"
|
||||||
"POT-Creation-Date: 2002-03-20 09:33+0100\n"
|
"POT-Creation-Date: 2002-01-29 17:17+0100\n"
|
||||||
"PO-Revision-Date: 2002-03-21 15:00-0500\n"
|
"PO-Revision-Date: 2001-08-29 20:00-0500\n"
|
||||||
"Last-Translator: Michel Robitaille <[email protected]>\n"
|
"Last-Translator: Michel Robitaille <[email protected]>\n"
|
||||||
"Language-Team: French <[email protected]>\n"
|
"Language-Team: French <[email protected]>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
|
||||||
|
|
||||||
#: src/LR0.c:189
|
#: src/LR0.c:194
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "too many states (max %d)"
|
msgid "too many states (max %d)"
|
||||||
msgstr "nombre trop grand d'états (max %d)"
|
msgstr "nombre trop grand d'états (max %d)"
|
||||||
|
|
||||||
#: src/complain.c:99 lib/error.c:128 lib/error.c:156
|
#: lib/error.c:128 lib/error.c:156 src/complain.c:99
|
||||||
msgid "Unknown system error"
|
msgid "Unknown system error"
|
||||||
msgstr "Erreur système inconnue"
|
msgstr "Erreur système inconnue"
|
||||||
|
|
||||||
@@ -32,125 +31,103 @@ msgstr "AVERTISSEMENT: "
|
|||||||
msgid "fatal error: "
|
msgid "fatal error: "
|
||||||
msgstr "erreur fatale: "
|
msgstr "erreur fatale: "
|
||||||
|
|
||||||
#: src/conflicts.c:44
|
#: src/conflicts.c:46
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Conflit à l'état %d entre la règle %d et le terminal %s résolu par %s.\n"
|
"Conflit à l'état %d entre la règle %d et le terminal %s résolu par %s.\n"
|
||||||
|
|
||||||
#: src/conflicts.c:94 src/conflicts.c:119
|
#: src/conflicts.c:111 src/conflicts.c:133
|
||||||
msgid "reduce"
|
msgid "reduce"
|
||||||
msgstr "réduction"
|
msgstr "réduction"
|
||||||
|
|
||||||
#: src/conflicts.c:101 src/conflicts.c:115
|
#: src/conflicts.c:116 src/conflicts.c:128
|
||||||
msgid "shift"
|
msgid "shift"
|
||||||
msgstr "décalage"
|
msgstr "décalage"
|
||||||
|
|
||||||
#: src/conflicts.c:123
|
#: src/conflicts.c:138
|
||||||
msgid "an error"
|
msgid "an error"
|
||||||
msgstr "une erreur"
|
msgstr "une erreur"
|
||||||
|
|
||||||
#: src/conflicts.c:302
|
#: src/conflicts.c:291
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d shift/reduce conflict"
|
msgid "%d shift/reduce conflict"
|
||||||
msgid_plural "%d shift/reduce conflicts"
|
msgid_plural "%d shift/reduce conflicts"
|
||||||
msgstr[0] "%d conflit par décalage/réduction"
|
msgstr[0] " %d conflits décalage/réduction"
|
||||||
msgstr[1] "%d conflits par décalage/réduction"
|
|
||||||
|
|
||||||
#: src/conflicts.c:309
|
#: src/conflicts.c:298
|
||||||
|
#, fuzzy
|
||||||
msgid "and"
|
msgid "and"
|
||||||
msgstr "et"
|
msgstr " et"
|
||||||
|
|
||||||
#: src/conflicts.c:315
|
#: src/conflicts.c:304
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d reduce/reduce conflict"
|
msgid "%d reduce/reduce conflict"
|
||||||
msgid_plural "%d reduce/reduce conflicts"
|
msgid_plural "%d reduce/reduce conflicts"
|
||||||
msgstr[0] "%d conflit par réduction/réduction"
|
msgstr[0] " %d conflits réduction/réduction"
|
||||||
msgstr[1] "%d conflits par réduction/réduction"
|
|
||||||
|
|
||||||
#: src/conflicts.c:340
|
#: src/conflicts.c:329
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "State %d contains "
|
msgid "State %d contains "
|
||||||
msgstr "L'état %d contient "
|
msgstr "L'état %d contient"
|
||||||
|
|
||||||
#: src/conflicts.c:387
|
#. If invoked with `--yacc', use the output format specified by
|
||||||
|
#. POSIX.
|
||||||
|
#: src/conflicts.c:376
|
||||||
msgid "conflicts: "
|
msgid "conflicts: "
|
||||||
msgstr "conflits: "
|
msgstr "conflits: "
|
||||||
|
|
||||||
#: src/conflicts.c:389
|
#: src/conflicts.c:378
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %d shift/reduce"
|
msgid " %d shift/reduce"
|
||||||
msgstr " %d décalage/réduction"
|
msgstr " %d décalage/réduction"
|
||||||
|
|
||||||
#: src/conflicts.c:393
|
#: src/conflicts.c:382
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %d reduce/reduce"
|
msgid " %d reduce/reduce"
|
||||||
msgstr " %d réduction/réduction"
|
msgstr " %d réduction/réduction"
|
||||||
|
|
||||||
#: src/conflicts.c:398 src/reduce.c:508
|
#: src/conflicts.c:387 src/reduce.c:499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s contains "
|
msgid "%s contains "
|
||||||
msgstr "%s contient "
|
msgstr "%s contient "
|
||||||
|
|
||||||
#: src/conflicts.c:412
|
#: src/conflicts.c:394
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "expected %d shift/reduce conflict\n"
|
msgid "expected %d shift/reduce conflict\n"
|
||||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
msgstr[0] "attendait %d conflit par décalage/réduction\n"
|
msgstr[0] " %d conflits décalage/réduction"
|
||||||
msgstr[1] "attendait %d conflits par décalage/réduction\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:463 src/conflicts.c:540
|
#: src/files.c:159
|
||||||
#, c-format
|
|
||||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
|
||||||
msgstr " %-4s\t[réduction par la règle %d (%s)]\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:467 src/print.c:154
|
|
||||||
#, 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/conflicts.c:521 src/conflicts.c:534
|
|
||||||
#, c-format
|
|
||||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
|
||||||
msgstr " %-4s\tréduction par la règle %d (%s)\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:550
|
|
||||||
#, c-format
|
|
||||||
msgid " $default\treduce using rule %d (%s)\n"
|
|
||||||
msgstr " $défaut\tréduction par la règle %d (%s)\n"
|
|
||||||
|
|
||||||
#: src/files.c:151
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr "ne peut ouvrir le fichier « %s »"
|
msgstr "ne peut ouvrir le fichier `%s'"
|
||||||
|
|
||||||
#: src/files.c:170
|
#: src/files.c:178
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr "ne peut fermer le fichier"
|
msgstr "ne peut fermer le fichier"
|
||||||
|
|
||||||
#: src/getargs.c:84
|
#. 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"
|
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"
|
msgstr "GNU bison génère des analyseurs pour les grammaires de type LALR(1).\n"
|
||||||
|
|
||||||
#: src/getargs.c:88
|
#: src/getargs.c:59
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Usage: %s [OPTION]... FILE\n"
|
msgid "Usage: %s [OPTION]... FILE\n"
|
||||||
msgstr "Usage: %s [OPTION]... FICHIER\n"
|
msgstr "Usage: %s [OPTION]... FICHIER\n"
|
||||||
|
|
||||||
#: src/getargs.c:92
|
#: src/getargs.c:63
|
||||||
msgid ""
|
msgid ""
|
||||||
"If a long option shows an argument as mandatory, then it is mandatory\n"
|
"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"
|
"for the equivalent short option also. Similarly for optional arguments.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Si une option de forme longue montre un arguement comme étant obligatoire,\n"
|
"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 est alors obligatoire également pour une option de forme courte.\n"
|
||||||
"Il en est de même pour les arguments optionnels.\n"
|
"Il en est de même pour les paramètres optionnels.\n"
|
||||||
|
|
||||||
#: src/getargs.c:98
|
#: src/getargs.c:69
|
||||||
msgid ""
|
msgid ""
|
||||||
"Operation modes:\n"
|
"Operation modes:\n"
|
||||||
" -h, --help display this help and exit\n"
|
" -h, --help display this help and exit\n"
|
||||||
@@ -162,7 +139,7 @@ msgstr ""
|
|||||||
" -V, --version afficher le nom et la version du logiciel\n"
|
" -V, --version afficher le nom et la version du logiciel\n"
|
||||||
" -y, --yacc émuler yacc en mode POSIX\n"
|
" -y, --yacc émuler yacc en mode POSIX\n"
|
||||||
|
|
||||||
#: src/getargs.c:105
|
#: src/getargs.c:76
|
||||||
msgid ""
|
msgid ""
|
||||||
"Parser:\n"
|
"Parser:\n"
|
||||||
" -S, --skeleton=FILE specify the skeleton to use\n"
|
" -S, --skeleton=FILE specify the skeleton to use\n"
|
||||||
@@ -179,12 +156,13 @@ msgstr ""
|
|||||||
" de l'analyseur\n"
|
" de l'analyseur\n"
|
||||||
" --locations permettre le calcul des localisations\n"
|
" --locations permettre le calcul des localisations\n"
|
||||||
" -p, --name-prefix=PREFIXE accoler le PREFIXE aux symboles externes\n"
|
" -p, --name-prefix=PREFIXE accoler le PREFIXE aux symboles externes\n"
|
||||||
" -l, --no-lines ne pas générer les directives « #line »\n"
|
" -l, --no-lines ne pas générer les directives `#line'\n"
|
||||||
" -n, --no-parser générer les tables seulement\n"
|
" -n, --no-parser générer les tables seulement\n"
|
||||||
" -r, --raw compter les jetons à partir de 3\n"
|
" -r, --raw compter les jetons à partir de 3\n"
|
||||||
" -k, --token-table inclure la table des noms de jetons\n"
|
" -k, --token-table inclure la table des noms de jetons\n"
|
||||||
|
|
||||||
#: src/getargs.c:117
|
#: src/getargs.c:88
|
||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"Output:\n"
|
"Output:\n"
|
||||||
" -d, --defines also produce a header file\n"
|
" -d, --defines also produce a header file\n"
|
||||||
@@ -198,28 +176,28 @@ msgstr ""
|
|||||||
" -d, --defines produire un fichier d'en-tête\n"
|
" -d, --defines produire un fichier d'en-tête\n"
|
||||||
" -v, --verbose produire une explication de l'automate\n"
|
" -v, --verbose produire une explication de l'automate\n"
|
||||||
" -b, --file-prefix=PREFIXE utiliser le PREFIXE pour le fichier de sortie\n"
|
" -b, --file-prefix=PREFIXE utiliser le PREFIXE pour le fichier de sortie\n"
|
||||||
" -o, --output=FICHIER produire la sortie dans le FICHIER\n"
|
" -o, --output-file=FICHIER produire la sortie dans le FICHIER\n"
|
||||||
" -g, --graph produire aussi la description du graphe VCG de "
|
" -g, --graph produire aussi la description du graphe VCG de "
|
||||||
"l'automate\n"
|
"l'automate\n"
|
||||||
|
|
||||||
#: src/getargs.c:127
|
#: src/getargs.c:98
|
||||||
msgid "Report bugs to <[email protected]>.\n"
|
msgid "Report bugs to <[email protected]>.\n"
|
||||||
msgstr "Rapporter toutes anomalies à <[email protected]>.\n"
|
msgstr "Rapporter toutes anomalies à <[email protected]>.\n"
|
||||||
|
|
||||||
#: src/getargs.c:141
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:112
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "bison (GNU Bison) %s"
|
msgid "bison (GNU Bison) %s"
|
||||||
msgstr "bison (GNU Bison) %s"
|
msgstr "bison (GNU Bison) %s"
|
||||||
|
|
||||||
#: src/getargs.c:146
|
#: src/getargs.c:117
|
||||||
msgid ""
|
msgid ""
|
||||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
"Free Software Foundation, Inc.\n"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002 Free Software Foundation, "
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
"Inc.\n"
|
|
||||||
|
|
||||||
#: src/getargs.c:151
|
#: src/getargs.c:121
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is free software; see the source for copying conditions. There is NO\n"
|
"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"
|
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||||
@@ -228,446 +206,452 @@ msgstr ""
|
|||||||
"reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n"
|
"reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n"
|
||||||
"COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
|
"COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
|
||||||
|
|
||||||
#: src/getargs.c:230 src/lex.c:705
|
#: src/getargs.c:200 src/lex.c:599
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' is no longer supported"
|
msgid "`%s' is no longer supported"
|
||||||
msgstr "« %s » n'est plus supporté"
|
msgstr "`%s' n'est plus supporté"
|
||||||
|
|
||||||
#: src/getargs.c:254
|
#: src/getargs.c:224
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Try `%s --help' for more information.\n"
|
msgid "Try `%s --help' for more information.\n"
|
||||||
msgstr "Pour en savoir davantage, faites: « %s --help ».\n"
|
msgstr "Pour en savoir davantage, faites: `%s --help'.\n"
|
||||||
|
|
||||||
#: src/getargs.c:261
|
#: src/getargs.c:233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: no grammar file given\n"
|
msgid "%s: no grammar file given\n"
|
||||||
msgstr "%s: grammaire manquante\n"
|
msgstr "%s: grammaire manquante\n"
|
||||||
|
|
||||||
#: src/getargs.c:265
|
#: src/getargs.c:237
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: extra arguments ignored after `%s'\n"
|
msgid "%s: extra arguments ignored after `%s'\n"
|
||||||
msgstr "%s: arguments supplémentaires ignorés après « %s »\n"
|
msgstr "%s: paramètres supplémentaires ignorés après `%s'\n"
|
||||||
|
|
||||||
#: src/lalr.c:256
|
#: src/lalr.c:175
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "too many gotos (max %d)"
|
msgid "too many gotos (max %d)"
|
||||||
msgstr "nombre trop grand de « goto » (Max %d)"
|
msgstr "nombre trop grand de \"goto\" (Max %d)"
|
||||||
|
|
||||||
#: src/lex.c:76
|
#: src/lex.c:77
|
||||||
msgid "unexpected `/' found and ignored"
|
msgid "unexpected `/' found and ignored"
|
||||||
msgstr "« / » inattendu et ignoré"
|
msgstr "`/' inattendu et ignoré"
|
||||||
|
|
||||||
#: src/lex.c:105 src/reader.c:280
|
#: src/lex.c:106 src/reader.c:302
|
||||||
msgid "unterminated comment"
|
msgid "unterminated comment"
|
||||||
msgstr "le commentaire ne se termine pas"
|
msgstr "le commentaire ne se termine pas"
|
||||||
|
|
||||||
#: src/lex.c:137
|
#: src/lex.c:138
|
||||||
msgid "unexpected end of file"
|
msgid "unexpected end of file"
|
||||||
msgstr "Fin de fichier inattendue"
|
msgstr "Fin de fichier inattendue"
|
||||||
|
|
||||||
#: src/lex.c:166
|
#: src/lex.c:157
|
||||||
msgid "unescaped newline in constant"
|
msgid "unescaped newline in constant"
|
||||||
msgstr "retour de chariot sans échappement dans une constante"
|
msgstr "retour de chariot sans échappement dans une constante"
|
||||||
|
|
||||||
#: src/lex.c:208
|
#: src/lex.c:196
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "octal value outside range 0...255: `\\%o'"
|
msgid "octal value outside range 0...255: `\\%o'"
|
||||||
msgstr "valeur octale à l'extérieur de l'intervalle 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
|
#: src/lex.c:233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "hexadecimal value above 255: `\\x%x'"
|
|
||||||
msgstr "valeur hexadécimale supérieure à 255: « \\x%x »"
|
|
||||||
|
|
||||||
#: src/lex.c:245
|
|
||||||
#, c-format
|
|
||||||
msgid "unknown escape sequence: `\\' followed by `%s'"
|
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||||
msgstr "séquence d'échappement inconnue: « \\ » suivie de « %s »"
|
msgstr "séquence d'échappement inconnue: `\\' suivie de `%s'"
|
||||||
|
|
||||||
#: src/lex.c:342
|
#: src/lex.c:264
|
||||||
msgid "unterminated type name at end of file"
|
msgid "unterminated type name at end of file"
|
||||||
msgstr "le nom de type ne se termine pas avant la fin de fichier"
|
msgstr "le nom de type ne se termine pas avant la fin de fichier"
|
||||||
|
|
||||||
#: src/lex.c:345
|
#: src/lex.c:267
|
||||||
msgid "unterminated type name"
|
msgid "unterminated type name"
|
||||||
msgstr "le nom de type ne se termine pas"
|
msgstr "le nom de type ne se termine pas"
|
||||||
|
|
||||||
#: src/lex.c:438
|
#: src/lex.c:359
|
||||||
msgid "use \"...\" for multi-character literal tokens"
|
msgid "use \"...\" for multi-character literal tokens"
|
||||||
msgstr "utilisez \"...\" pour les terminaux litéraux de plusieurs caractères"
|
msgstr "utilisez \"...\" pour les terminaux litéraux de plusieurs caractères"
|
||||||
|
|
||||||
#: src/lex.c:678
|
#: src/lex.c:571
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' supports no argument: %s"
|
msgid "`%s' supports no argument: %s"
|
||||||
msgstr "« %s » ne supporte aucun argument: %s"
|
msgstr ""
|
||||||
|
|
||||||
#: src/lex.c:694
|
#: src/lex.c:588
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "`%s' requires an argument"
|
msgid "`%s' requires an argument"
|
||||||
msgstr "« %s »: requiert un argument"
|
msgstr "%s: l'option %s requiert un paramètre\n"
|
||||||
|
|
||||||
#: src/output.c:951
|
#: src/output.c:804
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "maximum table size (%d) exceeded"
|
msgid "maximum table size (%d) exceeded"
|
||||||
msgstr "taille maximale de la table (%d) dépassée"
|
msgstr "taille maximale de la table (%d) dépassée"
|
||||||
|
|
||||||
#: src/print.c:39
|
#: src/print.c:44
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " type %d is %s\n"
|
msgid " type %d is %s\n"
|
||||||
msgstr " le type %d est %s\n"
|
msgstr " le type %d est %s\n"
|
||||||
|
|
||||||
#: src/print.c:88
|
#: src/print.c:106
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " (rule %d)"
|
msgid " (rule %d)"
|
||||||
msgstr " (règle %d)"
|
msgstr " (règle %d)"
|
||||||
|
|
||||||
#: src/print.c:108
|
|
||||||
msgid " $default\taccept\n"
|
|
||||||
msgstr " $défaut\taccepter\n"
|
|
||||||
|
|
||||||
#: src/print.c:110
|
|
||||||
msgid " NO ACTIONS\n"
|
|
||||||
msgstr " PAS D'ACTION\n"
|
|
||||||
|
|
||||||
#: src/print.c:124
|
|
||||||
#, c-format
|
|
||||||
msgid " $ \tgo to state %d\n"
|
|
||||||
msgstr " $ \taller à l'état %d\n"
|
|
||||||
|
|
||||||
#: src/print.c:127
|
#: src/print.c:127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\tshift, and go to state %d\n"
|
msgid " %-4s\tshift, and go to state %d\n"
|
||||||
msgstr " %-4s\tdécalage et aller à l'état %d\n"
|
msgstr " %-4s\tdécalage et aller à l'état %d\n"
|
||||||
|
|
||||||
#: src/print.c:142
|
#: src/print.c:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\terror (nonassociative)\n"
|
msgid " %-4s\terror (nonassociative)\n"
|
||||||
msgstr " %-4s\terreur (non-associatif)\n"
|
msgstr " %-4s\terreur (non-associatif)\n"
|
||||||
|
|
||||||
#: src/print.c:169
|
#: src/print.c:168
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\tgo to state %d\n"
|
msgid " %-4s\tgo to state %d\n"
|
||||||
msgstr " %-4s\taller à l'état %d\n"
|
msgstr " %-4s\taller à l'état %d\n"
|
||||||
|
|
||||||
#: src/print.c:180
|
#: 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
|
#, c-format
|
||||||
msgid "state %d"
|
msgid "state %d"
|
||||||
msgstr "état %d"
|
msgstr "état %d"
|
||||||
|
|
||||||
#: src/print.c:211
|
#. rule # : LHS -> RHS
|
||||||
|
#: src/print.c:373
|
||||||
msgid "Grammar"
|
msgid "Grammar"
|
||||||
msgstr "Grammaire"
|
msgstr "Grammaire"
|
||||||
|
|
||||||
#: src/print.c:212
|
#: src/print.c:374
|
||||||
msgid "Number, Line, Rule"
|
msgid "Number, Line, Rule"
|
||||||
msgstr "Nombre, ligne, règle"
|
msgstr ""
|
||||||
|
|
||||||
#: src/print.c:217
|
#: src/print.c:379
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid " %3d %3d %s ->"
|
msgid " %3d %3d %s ->"
|
||||||
msgstr " %3d %3d %s ->"
|
msgstr "règle %-4d %s ->"
|
||||||
|
|
||||||
#: src/print.c:224
|
#: src/print.c:386
|
||||||
msgid "empty"
|
msgid "empty"
|
||||||
msgstr "vide"
|
msgstr ""
|
||||||
|
|
||||||
#: src/print.c:231
|
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||||
|
#: src/print.c:393
|
||||||
msgid "Terminals, with rules where they appear"
|
msgid "Terminals, with rules where they appear"
|
||||||
msgstr "Terminaux, suivis des règles où ils apparaissent"
|
msgstr "Terminaux, suivis des règles où ils apparaissent"
|
||||||
|
|
||||||
#: src/print.c:256
|
#: src/print.c:416
|
||||||
msgid "Nonterminals, with rules where they appear"
|
msgid "Nonterminals, with rules where they appear"
|
||||||
msgstr "Non-terminaux, suivis des règles où ils apparaissent"
|
msgstr "Non-terminaux, suivis des règles où ils apparaissent"
|
||||||
|
|
||||||
#: src/print.c:282
|
#: src/print.c:442
|
||||||
msgid " on left:"
|
msgid " on left:"
|
||||||
msgstr " à gauche:"
|
msgstr " à gauche:"
|
||||||
|
|
||||||
#: src/print.c:297
|
#: src/print.c:457
|
||||||
msgid " on right:"
|
msgid " on right:"
|
||||||
msgstr " à droite:"
|
msgstr " à droite:"
|
||||||
|
|
||||||
#: src/print_graph.c:146
|
#: src/reader.c:100
|
||||||
#, c-format
|
|
||||||
msgid "%-4s\terror (nonassociative)"
|
|
||||||
msgstr "%-4s\terreur (non-associatif)"
|
|
||||||
|
|
||||||
#: src/print_graph.c:161
|
|
||||||
#, c-format
|
|
||||||
msgid "$default\treduce using rule %d (%s)"
|
|
||||||
msgstr "$défaut\tréduction par la règle %d (%s)"
|
|
||||||
|
|
||||||
#: src/reader.c:89
|
|
||||||
msgid " Skipping to next \\n"
|
msgid " Skipping to next \\n"
|
||||||
msgstr " Saut jusqu'au prochain \\n"
|
msgstr " Saut jusqu'au prochain \\n"
|
||||||
|
|
||||||
#: src/reader.c:91
|
#: src/reader.c:102
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " Skipping to next %c"
|
msgid " Skipping to next %c"
|
||||||
msgstr " Saut jusqu'au prochain %c"
|
msgstr " Saut jusqu'au prochain %c"
|
||||||
|
|
||||||
#: src/reader.c:142 src/reader.c:154
|
#: src/reader.c:153 src/reader.c:165
|
||||||
msgid "invalid $ value"
|
msgid "invalid $ value"
|
||||||
msgstr "la valeur de symbole $ n'est pas valide"
|
msgstr "la valeur de symbole $ n'est pas valide"
|
||||||
|
|
||||||
#: src/reader.c:180 src/reader.c:195
|
#: src/reader.c:192 src/reader.c:207
|
||||||
msgid "unterminated string at end of file"
|
msgid "unterminated string at end of file"
|
||||||
msgstr "chaîne de caractères non terminée en fin de fichier"
|
msgstr "chaîne de caractères non terminée en fin de fichier"
|
||||||
|
|
||||||
#: src/reader.c:183
|
#: src/reader.c:195
|
||||||
msgid "unterminated string"
|
msgid "unterminated string"
|
||||||
msgstr "chaîne de caractère non terminée"
|
msgstr "chaîne de caractère non terminée"
|
||||||
|
|
||||||
#: src/reader.c:339
|
#: src/reader.c:337 src/reader.c:401
|
||||||
msgid "invalid @ value"
|
#, fuzzy, c-format
|
||||||
msgstr "valeur @ invalide"
|
msgid "invalid value: %s%d"
|
||||||
|
msgstr "la valeur de symbole $ n'est pas valide"
|
||||||
|
|
||||||
#: src/reader.c:352 src/reader.c:416
|
#: src/reader.c:351 src/reader.c:423
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is invalid"
|
msgid "%s is invalid"
|
||||||
msgstr "%s n'est pas valide"
|
msgstr "%s n'est pas valide"
|
||||||
|
|
||||||
#: src/reader.c:392
|
#: src/reader.c:391
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "$$ of `%s' has no declared type"
|
msgid "$$ of `%s' has no declared type"
|
||||||
msgstr "$$ de « %s » n'a pas son type déclaré"
|
msgstr "$$ de `%s' n'a pas son type déclaré"
|
||||||
|
|
||||||
#: src/reader.c:409
|
#: src/reader.c:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "$%d of `%s' has no declared type"
|
msgid "$%d of `%s' has no declared type"
|
||||||
msgstr "$%d de « %s » n'a pas de type déclaré"
|
msgstr "$%d de `%s' n'a pas de type déclaré"
|
||||||
|
|
||||||
#: src/reader.c:463
|
#: src/reader.c:473
|
||||||
msgid "unterminated `%{' definition"
|
msgid "unterminated `%{' definition"
|
||||||
msgstr "La section de définition « %{ » ne termine pas avant la fin du fichier"
|
msgstr "La section de définition (%{) ne termine pas avant la fin du fichier"
|
||||||
|
|
||||||
#: src/reader.c:508 src/reader.c:623 src/reader.c:673
|
#: src/reader.c:518 src/reader.c:636 src/reader.c:686 src/reader.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Premature EOF after %s"
|
msgid "Premature EOF after %s"
|
||||||
msgstr "Fin de fichier prématutée après %s"
|
msgstr "Fin de fichier prématutée après %s"
|
||||||
|
|
||||||
#: src/reader.c:525
|
#: src/reader.c:535
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol `%s' used more than once as a literal string"
|
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"
|
msgstr "symbole `%s' utilisé plus d'une fois dans une chaîne litérale"
|
||||||
|
|
||||||
#: src/reader.c:528
|
#: src/reader.c:538
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol `%s' given more than one literal string"
|
msgid "symbol `%s' given more than one literal string"
|
||||||
msgstr "symbole « %s » présent dans plus d'une chaîne litérale"
|
msgstr "symbole `%s' présent dans plus d'une chaîne litérale"
|
||||||
|
|
||||||
#: src/reader.c:549 src/reader.c:692
|
#: src/reader.c:559 src/reader.c:705
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol %s redefined"
|
msgid "symbol %s redefined"
|
||||||
msgstr "symbole %s redéfini"
|
msgstr "symbole %s redéfini"
|
||||||
|
|
||||||
#: src/reader.c:559 src/reader.c:638 src/reader.c:699 src/reader.c:1315
|
#: src/reader.c:569 src/reader.c:651 src/reader.c:712
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "type redeclaration for %s"
|
msgid "type redeclaration for %s"
|
||||||
msgstr "redéclaration du type de %s"
|
msgstr "redéclaration du type de %s"
|
||||||
|
|
||||||
#: src/reader.c:568
|
#: src/reader.c:581
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' is invalid in %s"
|
msgid "`%s' is invalid in %s"
|
||||||
msgstr "« %s » n'est pas valide dans %s"
|
msgstr "`%s' n'est pas valide dans %s"
|
||||||
|
|
||||||
#: src/reader.c:586 src/reader.c:752
|
#: src/reader.c:599 src/reader.c:758
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "multiple %s declarations"
|
msgid "multiple %s declarations"
|
||||||
msgstr "multiples déclarations %s"
|
msgstr "multiples déclarations %s"
|
||||||
|
|
||||||
#: src/reader.c:588 src/reader.c:931 src/reader.c:956 src/reader.c:1293
|
#: 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
|
#, c-format
|
||||||
msgid "invalid %s declaration"
|
msgid "invalid %s declaration"
|
||||||
msgstr "la déclaration %s n'est pas valide"
|
msgstr "la déclaration %s n'est pas valide"
|
||||||
|
|
||||||
#: src/reader.c:608
|
#: src/reader.c:621
|
||||||
msgid "%type declaration has no <typename>"
|
msgid "%type declaration has no <typename>"
|
||||||
msgstr "la déclaration %type n'a pas de <nom_de_type>"
|
msgstr "la déclaration %type n'a pas de <nom_de_type>"
|
||||||
|
|
||||||
#: src/reader.c:643
|
#: src/reader.c:656
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid %%type declaration due to item: %s"
|
msgid "invalid %%type declaration due to item: %s"
|
||||||
msgstr "la déclaration %%type n'est pas valide en raison de l'item: %s"
|
msgstr "la déclaration %%type n'est pas valide en raison de l'item: %s"
|
||||||
|
|
||||||
#: src/reader.c:688
|
#: src/reader.c:701
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "redefining precedence of %s"
|
msgid "redefining precedence of %s"
|
||||||
msgstr "redéfinition du niveau de priorité de %s"
|
msgstr "redéfinition du niveau de priorité de %s"
|
||||||
|
|
||||||
#: src/reader.c:711
|
#: src/reader.c:724
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid text (%s) - number should be after identifier"
|
msgid "invalid text (%s) - number should be after identifier"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"le texte n'est pas valide (%s) - le nombre devrait suivre l'identificateur"
|
"le texte n'est pas valide (%s) - le nombre devrait suivre l'identificateur"
|
||||||
|
|
||||||
#: src/reader.c:721
|
#: src/reader.c:734
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unexpected item: %s"
|
msgid "unexpected item: %s"
|
||||||
msgstr "item inattendu: %s"
|
msgstr "item inattendu: %s"
|
||||||
|
|
||||||
#: src/reader.c:795 src/reader.c:1127 src/reader.c:1204
|
#: src/reader.c:790 src/reader.c:1149
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unmatched %s"
|
msgid "unmatched %s"
|
||||||
msgstr "non appariement de %s"
|
msgstr "non appariement de %s"
|
||||||
|
|
||||||
#: src/reader.c:827
|
#: src/reader.c:819
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "argument of %%expect is not an integer"
|
msgid "argument of %%expect is not an integer"
|
||||||
msgstr "l'argument de %%expect n'est pas un entier"
|
msgstr "le paramètre de %%expect n'est pas un entier"
|
||||||
|
|
||||||
#: src/reader.c:873
|
#: src/reader.c:865
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized item %s, expected an identifier"
|
msgid "unrecognized item %s, expected an identifier"
|
||||||
msgstr "item %s non reconnu, un identificateur est attendu"
|
msgstr "item %s non reconnu, un identificateur est attendu"
|
||||||
|
|
||||||
#: src/reader.c:895
|
#: src/reader.c:887
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "expected string constant instead of %s"
|
msgid "expected string constant instead of %s"
|
||||||
msgstr "chaîne de caractères constante attendue plutôt que %s"
|
msgstr "chaîne de caractères constante attendue plutôt que %s"
|
||||||
|
|
||||||
#: src/reader.c:1043
|
#: src/reader.c:1080
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized: %s"
|
msgid "unrecognized: %s"
|
||||||
msgstr "non reconnu: %s"
|
msgstr "non reconnu: %s"
|
||||||
|
|
||||||
#: src/reader.c:1048
|
#: src/reader.c:1085
|
||||||
msgid "no input grammar"
|
msgid "no input grammar"
|
||||||
msgstr "aucune grammaire en entrée"
|
msgstr "aucune grammaire en entrée"
|
||||||
|
|
||||||
#: src/reader.c:1053
|
#: src/reader.c:1090
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown character: %s"
|
msgid "unknown character: %s"
|
||||||
msgstr "caractère inconnu: %s"
|
msgstr "caractère inconnu: %s"
|
||||||
|
|
||||||
#: src/reader.c:1227
|
#: src/reader.c:1265
|
||||||
#, c-format
|
|
||||||
msgid "unterminated %guard clause"
|
|
||||||
msgstr "clause %guard non terminée"
|
|
||||||
|
|
||||||
#: src/reader.c:1380
|
|
||||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||||
msgstr "règle mal formée: le symbole initial n'est pas suivi de « : »"
|
msgstr "règle mal formée: le symbole initial n'est pas suivi de `:'"
|
||||||
|
|
||||||
#: src/reader.c:1387
|
#: src/reader.c:1272
|
||||||
msgid "grammar starts with vertical bar"
|
msgid "grammar starts with vertical bar"
|
||||||
msgstr "la grammaire débute par une barre verticale"
|
msgstr "la grammaire débute par une barre verticale"
|
||||||
|
|
||||||
#: src/reader.c:1415
|
#: src/reader.c:1300
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "rule given for %s, which is a token"
|
msgid "rule given for %s, which is a token"
|
||||||
msgstr "la règle pour %s, qui est un terminal"
|
msgstr "la règle pour %s, qui est un terminal"
|
||||||
|
|
||||||
#: src/reader.c:1445 src/reader.c:1557
|
#: src/reader.c:1405
|
||||||
msgid "previous rule lacks an ending `;'"
|
|
||||||
msgstr "règle précédente manque une terminaison « ; »"
|
|
||||||
|
|
||||||
#: src/reader.c:1518
|
|
||||||
msgid "two @prec's in a row"
|
msgid "two @prec's in a row"
|
||||||
msgstr "deux @prec de suite"
|
msgstr "deux @prec de suite"
|
||||||
|
|
||||||
#: src/reader.c:1526
|
#: src/reader.c:1414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%%guard present but %%semantic_parser not specified"
|
msgid "%%guard present but %%semantic_parser not specified"
|
||||||
msgstr "%%guard est présent mais %%semantic_parser n'est pas spécifié"
|
msgstr "%%guard est présent mais %%semantic_parser n'est pas spécifié"
|
||||||
|
|
||||||
#: src/reader.c:1535
|
#: src/reader.c:1424
|
||||||
msgid "two actions at end of one rule"
|
msgid "two actions at end of one rule"
|
||||||
msgstr "deux actions à la fin d'une même règle"
|
msgstr "deux actions à la fin d'une même règle"
|
||||||
|
|
||||||
#: src/reader.c:1549
|
#: src/reader.c:1438
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "type clash (`%s' `%s') on default action"
|
msgid "type clash (`%s' `%s') on default action"
|
||||||
msgstr "conflit de type (« %s » « %s ») pour l'action par défaut"
|
msgstr "conflit de type (`%s' `%s') pour l'action par défaut"
|
||||||
|
|
||||||
#: src/reader.c:1555
|
#: src/reader.c:1444
|
||||||
msgid "empty rule for typed nonterminal, and no action"
|
msgid "empty rule for typed nonterminal, and no action"
|
||||||
msgstr "règle vide pour une catégorie typée et aucune action"
|
msgstr "règle vide pour une catégorie typée et aucune action"
|
||||||
|
|
||||||
#: src/reader.c:1601
|
#: src/reader.c:1450
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid input: %s"
|
msgid "invalid input: %s"
|
||||||
msgstr "entrée non valide: %s"
|
msgstr "entrée non valide: %s"
|
||||||
|
|
||||||
#: src/reader.c:1609
|
#: src/reader.c:1457
|
||||||
#, c-format
|
|
||||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
|
||||||
msgstr "trop de symboles (jeton plus non terminaux); maximum %d"
|
|
||||||
|
|
||||||
#: src/reader.c:1612
|
|
||||||
msgid "no rules in the input grammar"
|
msgid "no rules in the input grammar"
|
||||||
msgstr "la grammaire n'a pas de règles"
|
msgstr "la grammaire n'a pas de règles"
|
||||||
|
|
||||||
#: src/reader.c:1640
|
#: src/reader.c:1465
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"le symbole %s est utilisé mais ce n'est pas un terminal et il ne possède pas "
|
"le symbole %s est utilisé mais ce n'est pas un terminal et il ne possède pas "
|
||||||
"de règle"
|
"de règle"
|
||||||
|
|
||||||
#: src/reader.c:1775
|
#: 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
|
#, c-format
|
||||||
msgid "tokens %s and %s both assigned number %d"
|
msgid "tokens %s and %s both assigned number %d"
|
||||||
msgstr "les jetons %s et %s se sont vus assigner le nombre %d"
|
msgstr "les jetons %s et %s se sont vus assigner le nombre %d"
|
||||||
|
|
||||||
#: src/reader.c:1828
|
#: src/reader.c:1601
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "conflicting precedences for %s and %s"
|
msgid "conflicting precedences for %s and %s"
|
||||||
msgstr "les priorités pour %s et %s entrent en conflit"
|
msgstr "les priorités pour %s et %s entrent en conflit"
|
||||||
|
|
||||||
#: src/reader.c:1840
|
#: src/reader.c:1613
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "conflicting assoc values for %s and %s"
|
msgid "conflicting assoc values for %s and %s"
|
||||||
msgstr "les valeurs d'association de %s et %s entrent en conflit"
|
msgstr "les valeurs d'association de %s et %s entrent en conflit"
|
||||||
|
|
||||||
#: src/reader.c:1879
|
#: src/reader.c:1650
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "the start symbol %s is undefined"
|
msgid "the start symbol %s is undefined"
|
||||||
msgstr "le symbole de départ %s n'est pas défini"
|
msgstr "le symbole de départ %s n'est pas défini"
|
||||||
|
|
||||||
#: src/reader.c:1881
|
#: src/reader.c:1652
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "the start symbol %s is a token"
|
msgid "the start symbol %s is a token"
|
||||||
msgstr "le symbole de départ %s est un terminal"
|
msgstr "le symbole de départ %s est un terminal"
|
||||||
|
|
||||||
#: src/reduce.c:409
|
#: 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:"
|
msgid "Useless nonterminals:"
|
||||||
msgstr "Non-terminaux inutiles:"
|
msgstr "Non-terminaux inutiles:"
|
||||||
|
|
||||||
#: src/reduce.c:422
|
#: src/reduce.c:411
|
||||||
msgid "Terminals which are not used:"
|
msgid "Terminals which are not used:"
|
||||||
msgstr "Terminaux non utilisés:"
|
msgstr "Terminaux non utilisés:"
|
||||||
|
|
||||||
#: src/reduce.c:433
|
#: src/reduce.c:422
|
||||||
msgid "Useless rules:"
|
msgid "Useless rules:"
|
||||||
msgstr "Règles inutiles:"
|
msgstr "Règles inutiles:"
|
||||||
|
|
||||||
#: src/reduce.c:503
|
#: src/reduce.c:494
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d rule never reduced\n"
|
msgid "%d rule never reduced\n"
|
||||||
msgid_plural "%d rules never reduced\n"
|
msgid_plural "%d rules never reduced\n"
|
||||||
msgstr[0] "%d règle n'a jamais été réduite\n"
|
msgstr[0] "%d règles jamais réduites\n"
|
||||||
msgstr[1] "%d règles n'ont jamais été réduites\n"
|
|
||||||
|
|
||||||
#: src/reduce.c:511
|
#: src/reduce.c:502
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d useless nonterminal"
|
msgid "%d useless nonterminal"
|
||||||
msgid_plural "%d useless nonterminals"
|
msgid_plural "%d useless nonterminals"
|
||||||
msgstr[0] "%d nonterminal inutilisable"
|
msgstr[0] "%d catégories non productives%s"
|
||||||
msgstr[1] "%d nonterminals inutilisables"
|
|
||||||
|
|
||||||
#: src/reduce.c:517
|
#: src/reduce.c:508
|
||||||
msgid " and "
|
msgid " and "
|
||||||
msgstr " et "
|
msgstr " et "
|
||||||
|
|
||||||
#: src/reduce.c:520
|
#: src/reduce.c:511
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d useless rule"
|
msgid "%d useless rule"
|
||||||
msgid_plural "%d useless rules"
|
msgid_plural "%d useless rules"
|
||||||
msgstr[0] "%d règle inutilisable"
|
msgstr[0] "%d règle(s) non productive(s)%s"
|
||||||
msgstr[1] "%d règles inutilisables"
|
|
||||||
|
|
||||||
#: src/reduce.c:551
|
#: src/reduce.c:542
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Start symbol %s does not derive any sentence"
|
msgid "Start symbol %s does not derive any sentence"
|
||||||
msgstr "Aucune phrase ne peut être dérivée du symbole de départ %s"
|
msgstr "Aucune phrase ne peut être dérivée du symbole de départ %s"
|
||||||
@@ -680,28 +664,31 @@ msgstr "%s: l'option %s est ambig
|
|||||||
#: lib/getopt.c:719
|
#: lib/getopt.c:719
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: option `--%s' doesn't allow an argument\n"
|
msgid "%s: option `--%s' doesn't allow an argument\n"
|
||||||
msgstr "%s: l'option « --%s » n'admet pas d'argument\n"
|
msgstr "%s: l'option --%s n'admet pas de paramètre\n"
|
||||||
|
|
||||||
#: lib/getopt.c:724
|
#: lib/getopt.c:724
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: option `%c%s' doesn't allow an argument\n"
|
msgid "%s: option `%c%s' doesn't allow an argument\n"
|
||||||
msgstr "%s: l'option « %c%s » n'admet pas d'argument\n"
|
msgstr "%s: l'option %c%s n'admet pas de paramètre\n"
|
||||||
|
|
||||||
#: lib/getopt.c:742 lib/getopt.c:915
|
#: lib/getopt.c:742 lib/getopt.c:915
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: option `%s' requires an argument\n"
|
msgid "%s: option `%s' requires an argument\n"
|
||||||
msgstr "%s: l'option « %s » requiert un argument\n"
|
msgstr "%s: l'option %s requiert un paramètre\n"
|
||||||
|
|
||||||
|
#. --option
|
||||||
#: lib/getopt.c:771
|
#: lib/getopt.c:771
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: unrecognized option `--%s'\n"
|
msgid "%s: unrecognized option `--%s'\n"
|
||||||
msgstr "%s: l'option « --%s » est inconnue\n"
|
msgstr "%s: l'option --%s est inconnue\n"
|
||||||
|
|
||||||
|
#. +option or -option
|
||||||
#: lib/getopt.c:775
|
#: lib/getopt.c:775
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: unrecognized option `%c%s'\n"
|
msgid "%s: unrecognized option `%c%s'\n"
|
||||||
msgstr "%s: l'option « %c%s » est inconnue\n"
|
msgstr "%s: l'option %c%s est inconnue\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
#: lib/getopt.c:801
|
#: lib/getopt.c:801
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: illegal option -- %c\n"
|
msgid "%s: illegal option -- %c\n"
|
||||||
@@ -712,25 +699,42 @@ msgstr "%s: option ill
|
|||||||
msgid "%s: invalid option -- %c\n"
|
msgid "%s: invalid option -- %c\n"
|
||||||
msgstr "%s: option non valide -- %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
|
#: lib/getopt.c:834 lib/getopt.c:964
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: option requires an argument -- %c\n"
|
msgid "%s: option requires an argument -- %c\n"
|
||||||
msgstr "%s: l'option requiert un argument -- %c\n"
|
msgstr "%s: l'option requiert un paramètre -- %c\n"
|
||||||
|
|
||||||
#: lib/getopt.c:881
|
#: lib/getopt.c:881
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: option `-W %s' is ambiguous\n"
|
msgid "%s: option `-W %s' is ambiguous\n"
|
||||||
msgstr "%s: l'option « -W %s » est ambiguë\n"
|
msgstr "%s: l'option `-W %s' est ambiguë\n"
|
||||||
|
|
||||||
#: lib/getopt.c:899
|
#: lib/getopt.c:899
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
||||||
msgstr "%s: l'option « -W %s » n'admet pas d'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
|
#: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
|
||||||
msgid "memory exhausted"
|
msgid "memory exhausted"
|
||||||
msgstr "mémoire épuisée"
|
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
|
#: lib/quotearg.c:274
|
||||||
msgid "`"
|
msgid "`"
|
||||||
msgstr "`"
|
msgstr "`"
|
||||||
@@ -739,6 +743,18 @@ msgstr "`"
|
|||||||
msgid "'"
|
msgid "'"
|
||||||
msgstr "'"
|
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"
|
#~ msgid "%s: internal error: %s\n"
|
||||||
#~ msgstr "%s: erreur interne: %s\n"
|
#~ msgstr "%s: erreur interne: %s\n"
|
||||||
|
|
||||||
@@ -772,6 +788,15 @@ msgstr "'"
|
|||||||
#~ "-------------------\n"
|
#~ "-------------------\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"
|
#~ msgid "DERIVES"
|
||||||
#~ msgstr "DÉRIVES"
|
#~ msgstr "DÉRIVES"
|
||||||
|
|
||||||
@@ -787,15 +812,6 @@ msgstr "'"
|
|||||||
#~ "la réduction de %s définit %d terminal%s, %d catégorie%s et %d production%"
|
#~ "la réduction de %s définit %d terminal%s, %d catégorie%s et %d production%"
|
||||||
#~ "s.\n"
|
#~ "s.\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 "\t\t/* empty */"
|
#~ msgid "\t\t/* empty */"
|
||||||
#~ msgstr "\t\t/* epsilon */"
|
#~ msgstr "\t\t/* epsilon */"
|
||||||
|
|
||||||
@@ -936,4 +952,4 @@ msgstr "'"
|
|||||||
#~ msgstr "le commentaire ne se termine pas dans la section de définition (%{)"
|
#~ msgstr "le commentaire ne se termine pas dans la section de définition (%{)"
|
||||||
|
|
||||||
#~ msgid "invalid @-construct"
|
#~ msgid "invalid @-construct"
|
||||||
#~ msgstr "la construction «@» n'est pas valide"
|
#~ msgstr "la construction `@' n'est pas valide"
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: bison 1.31\n"
|
"Project-Id-Version: bison 1.31\n"
|
||||||
"POT-Creation-Date: 2002-03-20 09:33+0100\n"
|
"POT-Creation-Date: 2002-01-29 17:17+0100\n"
|
||||||
"PO-Revision-Date: 2002-01-23 14:16+0100\n"
|
"PO-Revision-Date: 2002-01-18 12:40 CET\n"
|
||||||
"Last-Translator: Paolo Bonzini <[email protected]>\n"
|
"Last-Translator: Paolo Bonzini <[email protected]>\n"
|
||||||
"Language-Team: Italian <[email protected]>\n"
|
"Language-Team: Italian <[email protected]>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -14,12 +14,12 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: src/LR0.c:189
|
#: src/LR0.c:194
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "too many states (max %d)"
|
msgid "too many states (max %d)"
|
||||||
msgstr "troppi stati (massimo %d)"
|
msgstr "troppi stati (massimo %d)"
|
||||||
|
|
||||||
#: src/complain.c:99 lib/error.c:128 lib/error.c:156
|
#: lib/error.c:128 lib/error.c:156 src/complain.c:99
|
||||||
msgid "Unknown system error"
|
msgid "Unknown system error"
|
||||||
msgstr "Errore di sistema sconosciuto"
|
msgstr "Errore di sistema sconosciuto"
|
||||||
|
|
||||||
@@ -31,116 +31,96 @@ msgstr "attenzione: "
|
|||||||
msgid "fatal error: "
|
msgid "fatal error: "
|
||||||
msgstr "errore fatale: "
|
msgstr "errore fatale: "
|
||||||
|
|
||||||
#: src/conflicts.c:44
|
#: src/conflicts.c:46
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Conflitto nello stato %d tra la regola %d e il token %s risolto come %s.\n"
|
"Conflitto nello stato %d tra la regola %d e il token %s risolto come %s.\n"
|
||||||
|
|
||||||
#: src/conflicts.c:94 src/conflicts.c:119
|
#: src/conflicts.c:111 src/conflicts.c:133
|
||||||
msgid "reduce"
|
msgid "reduce"
|
||||||
msgstr "riduzione"
|
msgstr "riduzione"
|
||||||
|
|
||||||
#: src/conflicts.c:101 src/conflicts.c:115
|
#: src/conflicts.c:116 src/conflicts.c:128
|
||||||
msgid "shift"
|
msgid "shift"
|
||||||
msgstr "shift"
|
msgstr "shift"
|
||||||
|
|
||||||
#: src/conflicts.c:123
|
#: src/conflicts.c:138
|
||||||
msgid "an error"
|
msgid "an error"
|
||||||
msgstr "un errore"
|
msgstr "un errore"
|
||||||
|
|
||||||
#: src/conflicts.c:302
|
#: src/conflicts.c:291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d shift/reduce conflict"
|
msgid "%d shift/reduce conflict"
|
||||||
msgid_plural "%d shift/reduce conflicts"
|
msgid_plural "%d shift/reduce conflicts"
|
||||||
msgstr[0] "%d conflitto shift/riduzione"
|
msgstr[0] "%d conflitto shift/riduzione"
|
||||||
msgstr[1] "%d conflitti shift/riduzione"
|
msgstr[1] "%d conflitti shift/riduzione"
|
||||||
|
|
||||||
#: src/conflicts.c:309
|
#: src/conflicts.c:298
|
||||||
msgid "and"
|
msgid "and"
|
||||||
msgstr "e"
|
msgstr "e"
|
||||||
|
|
||||||
#: src/conflicts.c:315
|
#: src/conflicts.c:304
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d reduce/reduce conflict"
|
msgid "%d reduce/reduce conflict"
|
||||||
msgid_plural "%d reduce/reduce conflicts"
|
msgid_plural "%d reduce/reduce conflicts"
|
||||||
msgstr[0] "%d conflitto riduzione/riduzione"
|
msgstr[0] "%d conflitto riduzione/riduzione"
|
||||||
msgstr[1] "%d conflitti riduzione/riduzione"
|
msgstr[1] "%d conflitti riduzione/riduzione"
|
||||||
|
|
||||||
#: src/conflicts.c:340
|
#: src/conflicts.c:329
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "State %d contains "
|
msgid "State %d contains "
|
||||||
msgstr "Lo stato %d contiene"
|
msgstr "Lo stato %d contiene"
|
||||||
|
|
||||||
#: src/conflicts.c:387
|
#. If invoked with `--yacc', use the output format specified by
|
||||||
|
#. POSIX.
|
||||||
|
#: src/conflicts.c:376
|
||||||
msgid "conflicts: "
|
msgid "conflicts: "
|
||||||
msgstr "conflitti: "
|
msgstr "conflitti: "
|
||||||
|
|
||||||
#: src/conflicts.c:389
|
#: src/conflicts.c:378
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %d shift/reduce"
|
msgid " %d shift/reduce"
|
||||||
msgstr " %d shift/riduzione"
|
msgstr " %d shift/riduzione"
|
||||||
|
|
||||||
#: src/conflicts.c:393
|
#: src/conflicts.c:382
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %d reduce/reduce"
|
msgid " %d reduce/reduce"
|
||||||
msgstr " %d riduzione/riduzione"
|
msgstr " %d riduzione/riduzione"
|
||||||
|
|
||||||
#: src/conflicts.c:398 src/reduce.c:508
|
#: src/conflicts.c:387 src/reduce.c:499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s contains "
|
msgid "%s contains "
|
||||||
msgstr "%s contiene "
|
msgstr "%s contiene "
|
||||||
|
|
||||||
#: src/conflicts.c:412
|
#: src/conflicts.c:394
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "expected %d shift/reduce conflict\n"
|
msgid "expected %d shift/reduce conflict\n"
|
||||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
msgstr[0] "atteso %d conflitto shift/riduzione\n"
|
msgstr[0] "atteso %d conflitto shift/riduzione\n"
|
||||||
msgstr[1] "attesi %d conflitti shift/riduzione\n"
|
msgstr[1] "attesi %d conflitti shift/riduzione\n"
|
||||||
|
|
||||||
#: src/conflicts.c:463 src/conflicts.c:540
|
#: src/files.c:159
|
||||||
#, c-format
|
|
||||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
|
||||||
msgstr " %-4s\t[riduzione con la regole %d (%s)]\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:467 src/print.c:154
|
|
||||||
#, c-format
|
|
||||||
msgid ""
|
|
||||||
" $default\treduce using rule %d (%s)\n"
|
|
||||||
"\n"
|
|
||||||
msgstr ""
|
|
||||||
" $default\triduzione con la regola %d (%s)\n"
|
|
||||||
"\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:521 src/conflicts.c:534
|
|
||||||
#, c-format
|
|
||||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
|
||||||
msgstr " %-4s\triduzione con la regola %d (%s)\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:550
|
|
||||||
#, c-format
|
|
||||||
msgid " $default\treduce using rule %d (%s)\n"
|
|
||||||
msgstr " $default\triduzione con la regola %d (%s)\n"
|
|
||||||
|
|
||||||
#: src/files.c:151
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr "impossibile aprire il file `%s'"
|
msgstr "impossibile aprire il file `%s'"
|
||||||
|
|
||||||
#: src/files.c:170
|
#: src/files.c:178
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr "impossibile chiudere il file `%s'"
|
msgstr "impossibile chiudere il file `%s'"
|
||||||
|
|
||||||
#: src/getargs.c:84
|
#. 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"
|
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
|
||||||
msgstr "GNU bison genera parser per grammatiche LALR(1).\n"
|
msgstr "GNU bison genera parser per grammatiche LALR(1).\n"
|
||||||
|
|
||||||
#: src/getargs.c:88
|
#: src/getargs.c:59
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Usage: %s [OPTION]... FILE\n"
|
msgid "Usage: %s [OPTION]... FILE\n"
|
||||||
msgstr "Utilizzo: %s [OPZIONE]... FILE\n"
|
msgstr "Utilizzo: %s [OPZIONE]... FILE\n"
|
||||||
|
|
||||||
#: src/getargs.c:92
|
#: src/getargs.c:63
|
||||||
msgid ""
|
msgid ""
|
||||||
"If a long option shows an argument as mandatory, then it is mandatory\n"
|
"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"
|
"for the equivalent short option also. Similarly for optional arguments.\n"
|
||||||
@@ -149,7 +129,7 @@ msgstr ""
|
|||||||
"è obbligatorio anche per l'equivalente opzione corta. Analogamente per\n"
|
"è obbligatorio anche per l'equivalente opzione corta. Analogamente per\n"
|
||||||
"gli argomenti opzionali.\n"
|
"gli argomenti opzionali.\n"
|
||||||
|
|
||||||
#: src/getargs.c:98
|
#: src/getargs.c:69
|
||||||
msgid ""
|
msgid ""
|
||||||
"Operation modes:\n"
|
"Operation modes:\n"
|
||||||
" -h, --help display this help and exit\n"
|
" -h, --help display this help and exit\n"
|
||||||
@@ -161,7 +141,7 @@ msgstr ""
|
|||||||
" -V, --version mostra informazioni sulla versione ed esce\n"
|
" -V, --version mostra informazioni sulla versione ed esce\n"
|
||||||
" -y, --yacc emula il comportamento di POSIX yacc\n"
|
" -y, --yacc emula il comportamento di POSIX yacc\n"
|
||||||
|
|
||||||
#: src/getargs.c:105
|
#: src/getargs.c:76
|
||||||
msgid ""
|
msgid ""
|
||||||
"Parser:\n"
|
"Parser:\n"
|
||||||
" -S, --skeleton=FILE specify the skeleton to use\n"
|
" -S, --skeleton=FILE specify the skeleton to use\n"
|
||||||
@@ -180,7 +160,7 @@ msgstr ""
|
|||||||
" -n, --no-parser genera le sole tabelle\n"
|
" -n, --no-parser genera le sole tabelle\n"
|
||||||
" -k, --token-table include una tabella di nomi dei token\n"
|
" -k, --token-table include una tabella di nomi dei token\n"
|
||||||
|
|
||||||
#: src/getargs.c:117
|
#: src/getargs.c:88
|
||||||
msgid ""
|
msgid ""
|
||||||
"Output:\n"
|
"Output:\n"
|
||||||
" -d, --defines also produce a header file\n"
|
" -d, --defines also produce a header file\n"
|
||||||
@@ -197,24 +177,24 @@ msgstr ""
|
|||||||
" -o, --output=FILE lascia l'output in FILE\n"
|
" -o, --output=FILE lascia l'output in FILE\n"
|
||||||
" -g, --graph produce anche una descrizione VCG dell'automa\n"
|
" -g, --graph produce anche una descrizione VCG dell'automa\n"
|
||||||
|
|
||||||
#: src/getargs.c:127
|
#: src/getargs.c:98
|
||||||
msgid "Report bugs to <[email protected]>.\n"
|
msgid "Report bugs to <[email protected]>.\n"
|
||||||
msgstr "Segnalare eventuali bug a <[email protected]>.\n"
|
msgstr "Segnalare eventuali bug a <[email protected]>.\n"
|
||||||
|
|
||||||
#: src/getargs.c:141
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:112
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "bison (GNU Bison) %s"
|
msgid "bison (GNU Bison) %s"
|
||||||
msgstr "bison (GNU Bison) %s"
|
msgstr "bison (GNU Bison) %s"
|
||||||
|
|
||||||
#: src/getargs.c:146
|
#: src/getargs.c:117
|
||||||
msgid ""
|
msgid ""
|
||||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
"Free Software Foundation, Inc.\n"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
"Free Software Foundation, Inc.\n"
|
|
||||||
|
|
||||||
#: src/getargs.c:151
|
#: src/getargs.c:121
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is free software; see the source for copying conditions. There is NO\n"
|
"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"
|
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||||
@@ -223,445 +203,453 @@ msgstr ""
|
|||||||
"sottoposta la copia. NON c'è ALCUNA garanzia, neanche di\n"
|
"sottoposta la copia. NON c'è ALCUNA garanzia, neanche di\n"
|
||||||
"COMMERCIABILITA` o di ADEGUATEZZA AD UN PARTICOLARE SCOPO.\n"
|
"COMMERCIABILITA` o di ADEGUATEZZA AD UN PARTICOLARE SCOPO.\n"
|
||||||
|
|
||||||
#: src/getargs.c:230 src/lex.c:705
|
#: src/getargs.c:200 src/lex.c:599
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' is no longer supported"
|
msgid "`%s' is no longer supported"
|
||||||
msgstr "`%s' non è più supportato"
|
msgstr "`%s' non è più supportato"
|
||||||
|
|
||||||
#: src/getargs.c:254
|
#: src/getargs.c:224
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Try `%s --help' for more information.\n"
|
msgid "Try `%s --help' for more information.\n"
|
||||||
msgstr "Provare `%s --help' per ulteriori informazioni.\n"
|
msgstr "Provare `%s --help' per ulteriori informazioni.\n"
|
||||||
|
|
||||||
#: src/getargs.c:261
|
#: src/getargs.c:233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: no grammar file given\n"
|
msgid "%s: no grammar file given\n"
|
||||||
msgstr "%s: nessun file grammatica specificato\n"
|
msgstr "%s: nessun file grammatica specificato\n"
|
||||||
|
|
||||||
#: src/getargs.c:265
|
#: src/getargs.c:237
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: extra arguments ignored after `%s'\n"
|
msgid "%s: extra arguments ignored after `%s'\n"
|
||||||
msgstr "%s: ignorati gli argomenti successivi a `%s'\n"
|
msgstr "%s: ignorati gli argomenti successivi a `%s'\n"
|
||||||
|
|
||||||
#: src/lalr.c:256
|
#: src/lalr.c:175
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "too many gotos (max %d)"
|
msgid "too many gotos (max %d)"
|
||||||
msgstr "troppi goto (max %d)"
|
msgstr "troppi goto (max %d)"
|
||||||
|
|
||||||
#: src/lex.c:76
|
#: src/lex.c:77
|
||||||
msgid "unexpected `/' found and ignored"
|
msgid "unexpected `/' found and ignored"
|
||||||
msgstr "`/' inatteso, trovato e ignorato"
|
msgstr "`/' inatteso, trovato e ignorato"
|
||||||
|
|
||||||
#: src/lex.c:105 src/reader.c:280
|
#: src/lex.c:106 src/reader.c:302
|
||||||
msgid "unterminated comment"
|
msgid "unterminated comment"
|
||||||
msgstr "commento non terminato"
|
msgstr "commento non terminato"
|
||||||
|
|
||||||
#: src/lex.c:137
|
#: src/lex.c:138
|
||||||
msgid "unexpected end of file"
|
msgid "unexpected end of file"
|
||||||
msgstr "fine del file inattesa"
|
msgstr "fine del file inattesa"
|
||||||
|
|
||||||
# Oder soll man den Begriff "Escapezeichen" verwenden?
|
# Oder soll man den Begriff "Escapezeichen" verwenden?
|
||||||
#: src/lex.c:166
|
#: src/lex.c:157
|
||||||
msgid "unescaped newline in constant"
|
msgid "unescaped newline in constant"
|
||||||
msgstr "fine di linea non preceduta da `\\' in una costante"
|
msgstr "fine di linea non preceduta da `\\' in una costante"
|
||||||
|
|
||||||
#: src/lex.c:208
|
#: src/lex.c:196
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "octal value outside range 0...255: `\\%o'"
|
msgid "octal value outside range 0...255: `\\%o'"
|
||||||
msgstr "valore ottale fuori dall'intervallo 0...255: `\\%o'"
|
msgstr "valore ottale fuori dall'intervallo 0...255: `\\%o'"
|
||||||
|
|
||||||
#: src/lex.c:233
|
#: src/lex.c:221
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "hexadecimal value above 255: `\\x%x'"
|
msgid "hexadecimal value above 255: `\\x%x'"
|
||||||
msgstr "valore esadecimale superiore a 255: `\\x%x'"
|
msgstr "valore esadecimale superiore a 255: `\\x%x'"
|
||||||
|
|
||||||
#: src/lex.c:245
|
#: src/lex.c:233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown escape sequence: `\\' followed by `%s'"
|
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||||
msgstr "sequenza di escape sconosciuta: `\\' seguito da `%s'"
|
msgstr "sequenza di escape sconosciuta: `\\' seguito da `%s'"
|
||||||
|
|
||||||
#: src/lex.c:342
|
#: src/lex.c:264
|
||||||
msgid "unterminated type name at end of file"
|
msgid "unterminated type name at end of file"
|
||||||
msgstr "nome di tipo non terminato a fine file"
|
msgstr "nome di tipo non terminato a fine file"
|
||||||
|
|
||||||
#: src/lex.c:345
|
#: src/lex.c:267
|
||||||
msgid "unterminated type name"
|
msgid "unterminated type name"
|
||||||
msgstr "nome di tipo non terminato"
|
msgstr "nome di tipo non terminato"
|
||||||
|
|
||||||
#: src/lex.c:438
|
#: src/lex.c:359
|
||||||
msgid "use \"...\" for multi-character literal tokens"
|
msgid "use \"...\" for multi-character literal tokens"
|
||||||
msgstr "usa \"...\" per token letterali di più caratteri"
|
msgstr "usa \"...\" per token letterali di più caratteri"
|
||||||
|
|
||||||
#: src/lex.c:678
|
#: src/lex.c:571
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' supports no argument: %s"
|
msgid "`%s' supports no argument: %s"
|
||||||
msgstr "`%s' non supporta argomenti: %s"
|
msgstr "`%s' non supporta argomenti: %s"
|
||||||
|
|
||||||
#: src/lex.c:694
|
#: src/lex.c:588
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' requires an argument"
|
msgid "`%s' requires an argument"
|
||||||
msgstr "`%s' richiede un argomento"
|
msgstr "`%s' richiede un argomento"
|
||||||
|
|
||||||
#: src/output.c:951
|
#: src/output.c:804
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "maximum table size (%d) exceeded"
|
msgid "maximum table size (%d) exceeded"
|
||||||
msgstr "ecceduta la dimensione massima di una tabella (%d)"
|
msgstr "ecceduta la dimensione massima di una tabella (%d)"
|
||||||
|
|
||||||
#: src/print.c:39
|
#: src/print.c:44
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " type %d is %s\n"
|
msgid " type %d is %s\n"
|
||||||
msgstr " il tipo %d è %s\n"
|
msgstr " il tipo %d è %s\n"
|
||||||
|
|
||||||
#: src/print.c:88
|
#: src/print.c:106
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " (rule %d)"
|
msgid " (rule %d)"
|
||||||
msgstr " (regola %d)"
|
msgstr " (regola %d)"
|
||||||
|
|
||||||
#: src/print.c:108
|
|
||||||
msgid " $default\taccept\n"
|
|
||||||
msgstr " $default\taccetta\n"
|
|
||||||
|
|
||||||
#: src/print.c:110
|
|
||||||
msgid " NO ACTIONS\n"
|
|
||||||
msgstr " NESSUNA AZIONE\n"
|
|
||||||
|
|
||||||
#: src/print.c:124
|
|
||||||
#, c-format
|
|
||||||
msgid " $ \tgo to state %d\n"
|
|
||||||
msgstr " $ \tprosecuzione allo stato %d\n"
|
|
||||||
|
|
||||||
#: src/print.c:127
|
#: src/print.c:127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\tshift, and go to state %d\n"
|
msgid " %-4s\tshift, and go to state %d\n"
|
||||||
msgstr " %-4s\tshift e prosecuzione allo stato %d\n"
|
msgstr " %-4s\tshift e prosecuzione allo stato %d\n"
|
||||||
|
|
||||||
#: src/print.c:142
|
#: src/print.c:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\terror (nonassociative)\n"
|
msgid " %-4s\terror (nonassociative)\n"
|
||||||
msgstr " %-4s\terrore (non associativo)\n"
|
msgstr " %-4s\terrore (non associativo)\n"
|
||||||
|
|
||||||
#: src/print.c:169
|
#: src/print.c:168
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\tgo to state %d\n"
|
msgid " %-4s\tgo to state %d\n"
|
||||||
msgstr " %-4s\tprosecuzione allo stato %d\n"
|
msgstr " %-4s\tprosecuzione allo stato %d\n"
|
||||||
|
|
||||||
#: src/print.c:180
|
#: 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
|
#, c-format
|
||||||
msgid "state %d"
|
msgid "state %d"
|
||||||
msgstr "stato %d"
|
msgstr "stato %d"
|
||||||
|
|
||||||
#: src/print.c:211
|
#. rule # : LHS -> RHS
|
||||||
|
#: src/print.c:373
|
||||||
msgid "Grammar"
|
msgid "Grammar"
|
||||||
msgstr "Grammatica"
|
msgstr "Grammatica"
|
||||||
|
|
||||||
#: src/print.c:212
|
#: src/print.c:374
|
||||||
msgid "Number, Line, Rule"
|
msgid "Number, Line, Rule"
|
||||||
msgstr "Numero, Linea, Regola"
|
msgstr "Numero, Linea, Regola"
|
||||||
|
|
||||||
#: src/print.c:217
|
#: src/print.c:379
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %3d %3d %s ->"
|
msgid " %3d %3d %s ->"
|
||||||
msgstr " %3d %3d %s ->"
|
msgstr " %3d %3d %s ->"
|
||||||
|
|
||||||
#: src/print.c:224
|
#: src/print.c:386
|
||||||
msgid "empty"
|
msgid "empty"
|
||||||
msgstr "vuoto"
|
msgstr "vuoto"
|
||||||
|
|
||||||
#: src/print.c:231
|
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||||
|
#: src/print.c:393
|
||||||
msgid "Terminals, with rules where they appear"
|
msgid "Terminals, with rules where they appear"
|
||||||
msgstr "Simboli terminali e regole in cui appaiono"
|
msgstr "Simboli terminali e regole in cui appaiono"
|
||||||
|
|
||||||
#: src/print.c:256
|
#: src/print.c:416
|
||||||
msgid "Nonterminals, with rules where they appear"
|
msgid "Nonterminals, with rules where they appear"
|
||||||
msgstr "Simboli nonterminali e regole in cui appaiono"
|
msgstr "Simboli nonterminali e regole in cui appaiono"
|
||||||
|
|
||||||
#: src/print.c:282
|
#: src/print.c:442
|
||||||
msgid " on left:"
|
msgid " on left:"
|
||||||
msgstr " nel primo membro:"
|
msgstr " nel primo membro:"
|
||||||
|
|
||||||
#: src/print.c:297
|
#: src/print.c:457
|
||||||
msgid " on right:"
|
msgid " on right:"
|
||||||
msgstr " nel secondo membro:"
|
msgstr " nel secondo membro:"
|
||||||
|
|
||||||
#: src/print_graph.c:146
|
#: src/reader.c:100
|
||||||
#, c-format
|
|
||||||
msgid "%-4s\terror (nonassociative)"
|
|
||||||
msgstr "%-4s\terrore (non associativo)"
|
|
||||||
|
|
||||||
#: src/print_graph.c:161
|
|
||||||
#, c-format
|
|
||||||
msgid "$default\treduce using rule %d (%s)"
|
|
||||||
msgstr "$default\triduzione con la regola %d (%s)"
|
|
||||||
|
|
||||||
#: src/reader.c:89
|
|
||||||
msgid " Skipping to next \\n"
|
msgid " Skipping to next \\n"
|
||||||
msgstr " Passo al successivo \\n"
|
msgstr " Passo al successivo \\n"
|
||||||
|
|
||||||
#: src/reader.c:91
|
#: src/reader.c:102
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " Skipping to next %c"
|
msgid " Skipping to next %c"
|
||||||
msgstr " Passo al successivo %c"
|
msgstr " Passo al successivo %c"
|
||||||
|
|
||||||
#: src/reader.c:142 src/reader.c:154
|
#: src/reader.c:153 src/reader.c:165
|
||||||
msgid "invalid $ value"
|
msgid "invalid $ value"
|
||||||
msgstr "valore $ non valido"
|
msgstr "valore $ non valido"
|
||||||
|
|
||||||
#: src/reader.c:180 src/reader.c:195
|
#: src/reader.c:192 src/reader.c:207
|
||||||
msgid "unterminated string at end of file"
|
msgid "unterminated string at end of file"
|
||||||
msgstr "stringa non terminata alla fine del file"
|
msgstr "stringa non terminata alla fine del file"
|
||||||
|
|
||||||
#: src/reader.c:183
|
#: src/reader.c:195
|
||||||
msgid "unterminated string"
|
msgid "unterminated string"
|
||||||
msgstr "stringa non terminata"
|
msgstr "stringa non terminata"
|
||||||
|
|
||||||
#: src/reader.c:339
|
#: src/reader.c:337 src/reader.c:401
|
||||||
#, fuzzy
|
#, c-format
|
||||||
msgid "invalid @ value"
|
msgid "invalid value: %s%d"
|
||||||
msgstr "valore $ non valido"
|
msgstr "valore non valido: %s%d"
|
||||||
|
|
||||||
#: src/reader.c:352 src/reader.c:416
|
#: src/reader.c:351 src/reader.c:423
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is invalid"
|
msgid "%s is invalid"
|
||||||
msgstr "%s non è valido"
|
msgstr "%s non è valido"
|
||||||
|
|
||||||
#: src/reader.c:392
|
#: src/reader.c:391
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "$$ of `%s' has no declared type"
|
msgid "$$ of `%s' has no declared type"
|
||||||
msgstr "Manca una dichiarazione di tipo per $$ di `%s'"
|
msgstr "Manca una dichiarazione di tipo per $$ di `%s'"
|
||||||
|
|
||||||
#: src/reader.c:409
|
#: src/reader.c:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "$%d of `%s' has no declared type"
|
msgid "$%d of `%s' has no declared type"
|
||||||
msgstr "Manca una dichiarazione di tipo per $%d di `%s'"
|
msgstr "Manca una dichiarazione di tipo per $%d di `%s'"
|
||||||
|
|
||||||
#: src/reader.c:463
|
#: src/reader.c:473
|
||||||
msgid "unterminated `%{' definition"
|
msgid "unterminated `%{' definition"
|
||||||
msgstr "definizione `%{' non terminata"
|
msgstr "definizione `%{' non terminata"
|
||||||
|
|
||||||
#: src/reader.c:508 src/reader.c:623 src/reader.c:673
|
#: src/reader.c:518 src/reader.c:636 src/reader.c:686 src/reader.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Premature EOF after %s"
|
msgid "Premature EOF after %s"
|
||||||
msgstr "Fine di file prematura dopo %s"
|
msgstr "Fine di file prematura dopo %s"
|
||||||
|
|
||||||
#: src/reader.c:525
|
#: src/reader.c:535
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol `%s' used more than once as a literal string"
|
msgid "symbol `%s' used more than once as a literal string"
|
||||||
msgstr "simbolo `%s' usato più di una volta in una stringa letterale"
|
msgstr "simbolo `%s' usato più di una volta in una stringa letterale"
|
||||||
|
|
||||||
#: src/reader.c:528
|
#: src/reader.c:538
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol `%s' given more than one literal string"
|
msgid "symbol `%s' given more than one literal string"
|
||||||
msgstr "il simbolo `%s' dà pi` di una stringa letterale"
|
msgstr "il simbolo `%s' dà pi` di una stringa letterale"
|
||||||
|
|
||||||
#: src/reader.c:549 src/reader.c:692
|
#: src/reader.c:559 src/reader.c:705
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol %s redefined"
|
msgid "symbol %s redefined"
|
||||||
msgstr "simbolo %s ridefinito"
|
msgstr "simbolo %s ridefinito"
|
||||||
|
|
||||||
#: src/reader.c:559 src/reader.c:638 src/reader.c:699 src/reader.c:1315
|
#: src/reader.c:569 src/reader.c:651 src/reader.c:712
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "type redeclaration for %s"
|
msgid "type redeclaration for %s"
|
||||||
msgstr "tipo dichiarato due volte per %s"
|
msgstr "tipo dichiarato due volte per %s"
|
||||||
|
|
||||||
#: src/reader.c:568
|
#: src/reader.c:581
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' is invalid in %s"
|
msgid "`%s' is invalid in %s"
|
||||||
msgstr "`%s' non è valido in %s"
|
msgstr "`%s' non è valido in %s"
|
||||||
|
|
||||||
#: src/reader.c:586 src/reader.c:752
|
#: src/reader.c:599 src/reader.c:758
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "multiple %s declarations"
|
msgid "multiple %s declarations"
|
||||||
msgstr "dichiarazioni multiple per %s"
|
msgstr "dichiarazioni multiple per %s"
|
||||||
|
|
||||||
#: src/reader.c:588 src/reader.c:931 src/reader.c:956 src/reader.c:1293
|
#: 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
|
#, c-format
|
||||||
msgid "invalid %s declaration"
|
msgid "invalid %s declaration"
|
||||||
msgstr "dichiarazione %s non valida"
|
msgstr "dichiarazione %s non valida"
|
||||||
|
|
||||||
#: src/reader.c:608
|
#: src/reader.c:621
|
||||||
msgid "%type declaration has no <typename>"
|
msgid "%type declaration has no <typename>"
|
||||||
msgstr "dichiarazione %type senza <nome di tipo>"
|
msgstr "dichiarazione %type senza <nome di tipo>"
|
||||||
|
|
||||||
#: src/reader.c:643
|
#: src/reader.c:656
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid %%type declaration due to item: %s"
|
msgid "invalid %%type declaration due to item: %s"
|
||||||
msgstr "dichiarazione %%type non valida per la presenza di `%s'"
|
msgstr "dichiarazione %%type non valida per la presenza di `%s'"
|
||||||
|
|
||||||
#: src/reader.c:688
|
#: src/reader.c:701
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "redefining precedence of %s"
|
msgid "redefining precedence of %s"
|
||||||
msgstr "precedenza di `%s' definita due volte"
|
msgstr "precedenza di `%s' definita due volte"
|
||||||
|
|
||||||
#: src/reader.c:711
|
#: src/reader.c:724
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid text (%s) - number should be after identifier"
|
msgid "invalid text (%s) - number should be after identifier"
|
||||||
msgstr "testo non valido (%s) - il numero dovrebbe seguire l'identificatore"
|
msgstr "testo non valido (%s) - il numero dovrebbe seguire l'identificatore"
|
||||||
|
|
||||||
#: src/reader.c:721
|
#: src/reader.c:734
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unexpected item: %s"
|
msgid "unexpected item: %s"
|
||||||
msgstr "elemento inatteso: %s"
|
msgstr "elemento inatteso: %s"
|
||||||
|
|
||||||
#: src/reader.c:795 src/reader.c:1127 src/reader.c:1204
|
#: src/reader.c:790 src/reader.c:1149
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unmatched %s"
|
msgid "unmatched %s"
|
||||||
msgstr "%s non bilanciato"
|
msgstr "%s non bilanciato"
|
||||||
|
|
||||||
#: src/reader.c:827
|
#: src/reader.c:819
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "argument of %%expect is not an integer"
|
msgid "argument of %%expect is not an integer"
|
||||||
msgstr "L'argomento di %%expect non è un intero"
|
msgstr "L'argomento di %%expect non è un intero"
|
||||||
|
|
||||||
#: src/reader.c:873
|
#: src/reader.c:865
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized item %s, expected an identifier"
|
msgid "unrecognized item %s, expected an identifier"
|
||||||
msgstr "elemento %s non riconosciuto, atteso un identificatore"
|
msgstr "elemento %s non riconosciuto, atteso un identificatore"
|
||||||
|
|
||||||
#: src/reader.c:895
|
#: src/reader.c:887
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "expected string constant instead of %s"
|
msgid "expected string constant instead of %s"
|
||||||
msgstr "attesa una costante stringa invece di %s"
|
msgstr "attesa una costante stringa invece di %s"
|
||||||
|
|
||||||
#: src/reader.c:1043
|
#: src/reader.c:1080
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized: %s"
|
msgid "unrecognized: %s"
|
||||||
msgstr "non riconosciuto: %s"
|
msgstr "non riconosciuto: %s"
|
||||||
|
|
||||||
#: src/reader.c:1048
|
#: src/reader.c:1085
|
||||||
msgid "no input grammar"
|
msgid "no input grammar"
|
||||||
msgstr "nessuna grammatica di input"
|
msgstr "nessuna grammatica di input"
|
||||||
|
|
||||||
#: src/reader.c:1053
|
#: src/reader.c:1090
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown character: %s"
|
msgid "unknown character: %s"
|
||||||
msgstr "carattere sconosciuto: %s"
|
msgstr "carattere sconosciuto: %s"
|
||||||
|
|
||||||
#: src/reader.c:1227
|
#: src/reader.c:1265
|
||||||
#, c-format
|
|
||||||
msgid "unterminated %guard clause"
|
|
||||||
msgstr "clausola %guard non terminata"
|
|
||||||
|
|
||||||
#: src/reader.c:1380
|
|
||||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||||
msgstr "regola malformata: simbolo iniziale non seguito da `:'"
|
msgstr "regola malformata: simbolo iniziale non seguito da `:'"
|
||||||
|
|
||||||
#: src/reader.c:1387
|
#: src/reader.c:1272
|
||||||
msgid "grammar starts with vertical bar"
|
msgid "grammar starts with vertical bar"
|
||||||
msgstr "la grammatica comincia con un `|'"
|
msgstr "la grammatica comincia con un `|'"
|
||||||
|
|
||||||
#: src/reader.c:1415
|
#: src/reader.c:1300
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "rule given for %s, which is a token"
|
msgid "rule given for %s, which is a token"
|
||||||
msgstr "fornita una regola per il token %s"
|
msgstr "fornita una regola per il token %s"
|
||||||
|
|
||||||
#: src/reader.c:1445 src/reader.c:1557
|
#: src/reader.c:1405
|
||||||
msgid "previous rule lacks an ending `;'"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/reader.c:1518
|
|
||||||
msgid "two @prec's in a row"
|
msgid "two @prec's in a row"
|
||||||
msgstr "due @prec di seguito"
|
msgstr "due @prec di seguito"
|
||||||
|
|
||||||
#: src/reader.c:1526
|
#: src/reader.c:1414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%%guard present but %%semantic_parser not specified"
|
msgid "%%guard present but %%semantic_parser not specified"
|
||||||
msgstr "trovato %%guard senza che sia specificato %%semantic_parser"
|
msgstr "trovato %%guard senza che sia specificato %%semantic_parser"
|
||||||
|
|
||||||
#: src/reader.c:1535
|
#: src/reader.c:1424
|
||||||
msgid "two actions at end of one rule"
|
msgid "two actions at end of one rule"
|
||||||
msgstr "due azioni alla fine di una regola"
|
msgstr "due azioni alla fine di una regola"
|
||||||
|
|
||||||
#: src/reader.c:1549
|
#: src/reader.c:1438
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "type clash (`%s' `%s') on default action"
|
msgid "type clash (`%s' `%s') on default action"
|
||||||
msgstr "conflitto di tipo (`%s' e `%s') nell'azione di default"
|
msgstr "conflitto di tipo (`%s' e `%s') nell'azione di default"
|
||||||
|
|
||||||
#: src/reader.c:1555
|
#: src/reader.c:1444
|
||||||
msgid "empty rule for typed nonterminal, and no action"
|
msgid "empty rule for typed nonterminal, and no action"
|
||||||
msgstr "regola vuota e nessuna azione per un nonterminale con tipo"
|
msgstr "regola vuota e nessuna azione per un nonterminale con tipo"
|
||||||
|
|
||||||
#: src/reader.c:1601
|
#: src/reader.c:1450
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid input: %s"
|
msgid "invalid input: %s"
|
||||||
msgstr "input non valido: %s"
|
msgstr "input non valido: %s"
|
||||||
|
|
||||||
#: src/reader.c:1609
|
#: src/reader.c:1457
|
||||||
#, c-format
|
|
||||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
|
||||||
msgstr "troppi simboli (token e nonterminali); il massimo è %d"
|
|
||||||
|
|
||||||
#: src/reader.c:1612
|
|
||||||
msgid "no rules in the input grammar"
|
msgid "no rules in the input grammar"
|
||||||
msgstr "nessuna regola nella grammatica di input"
|
msgstr "nessuna regola nella grammatica di input"
|
||||||
|
|
||||||
#: src/reader.c:1640
|
#: src/reader.c:1465
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
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"
|
msgstr "usato il simbolo %s, ma non è un token e non ha regole"
|
||||||
|
|
||||||
#: src/reader.c:1775
|
#: 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
|
#, c-format
|
||||||
msgid "tokens %s and %s both assigned number %d"
|
msgid "tokens %s and %s both assigned number %d"
|
||||||
msgstr "i token %s e %s hanno lo stesso numero %d"
|
msgstr "i token %s e %s hanno lo stesso numero %d"
|
||||||
|
|
||||||
#: src/reader.c:1828
|
#: src/reader.c:1601
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "conflicting precedences for %s and %s"
|
msgid "conflicting precedences for %s and %s"
|
||||||
msgstr "precedenze in conflitto per %s und %s"
|
msgstr "precedenze in conflitto per %s und %s"
|
||||||
|
|
||||||
#: src/reader.c:1840
|
#: src/reader.c:1613
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "conflicting assoc values for %s and %s"
|
msgid "conflicting assoc values for %s and %s"
|
||||||
msgstr "associatività in conflitto per %s e %s"
|
msgstr "associatività in conflitto per %s e %s"
|
||||||
|
|
||||||
#: src/reader.c:1879
|
#: src/reader.c:1650
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "the start symbol %s is undefined"
|
msgid "the start symbol %s is undefined"
|
||||||
msgstr "simbolo iniziale %s non definito"
|
msgstr "simbolo iniziale %s non definito"
|
||||||
|
|
||||||
#: src/reader.c:1881
|
#: src/reader.c:1652
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "the start symbol %s is a token"
|
msgid "the start symbol %s is a token"
|
||||||
msgstr "specificato il token %s come simbolo iniziale"
|
msgstr "specificato il token %s come simbolo iniziale"
|
||||||
|
|
||||||
#: src/reduce.c:409
|
#: src/reader.c:1672
|
||||||
|
#, c-format
|
||||||
|
msgid "too many items (max %d)"
|
||||||
|
msgstr "troppi elementi (max %d)"
|
||||||
|
|
||||||
|
#: src/reduce.c:398
|
||||||
msgid "Useless nonterminals:"
|
msgid "Useless nonterminals:"
|
||||||
msgstr "Simboli nonterminali inutili:"
|
msgstr "Simboli nonterminali inutili:"
|
||||||
|
|
||||||
#: src/reduce.c:422
|
#: src/reduce.c:411
|
||||||
msgid "Terminals which are not used:"
|
msgid "Terminals which are not used:"
|
||||||
msgstr "Simboli terminali inutilizzati:"
|
msgstr "Simboli terminali inutilizzati:"
|
||||||
|
|
||||||
#: src/reduce.c:433
|
#: src/reduce.c:422
|
||||||
msgid "Useless rules:"
|
msgid "Useless rules:"
|
||||||
msgstr "Regole inutili:"
|
msgstr "Regole inutili:"
|
||||||
|
|
||||||
#: src/reduce.c:503
|
#: src/reduce.c:494
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d rule never reduced\n"
|
msgid "%d rule never reduced\n"
|
||||||
msgid_plural "%d rules never reduced\n"
|
msgid_plural "%d rules never reduced\n"
|
||||||
msgstr[0] "%d regola non applicata\n"
|
msgstr[0] "%d regola non applicata\n"
|
||||||
msgstr[1] "%d regole non applicate\n"
|
msgstr[1] "%d regole non applicate\n"
|
||||||
|
|
||||||
#: src/reduce.c:511
|
#: src/reduce.c:502
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d useless nonterminal"
|
msgid "%d useless nonterminal"
|
||||||
msgid_plural "%d useless nonterminals"
|
msgid_plural "%d useless nonterminals"
|
||||||
msgstr[0] "%d simbolo nonterminale inutilizzato"
|
msgstr[0] "%d simbolo nonterminale inutilizzato"
|
||||||
msgstr[1] "%d simboli nonterminali inutilizzati"
|
msgstr[1] "%d simboli nonterminali inutilizzati"
|
||||||
|
|
||||||
#: src/reduce.c:517
|
#: src/reduce.c:508
|
||||||
msgid " and "
|
msgid " and "
|
||||||
msgstr " e "
|
msgstr " e "
|
||||||
|
|
||||||
#: src/reduce.c:520
|
#: src/reduce.c:511
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d useless rule"
|
msgid "%d useless rule"
|
||||||
msgid_plural "%d useless rules"
|
msgid_plural "%d useless rules"
|
||||||
msgstr[0] "%d regola inutile"
|
msgstr[0] "%d regola inutile"
|
||||||
msgstr[1] "%d regole inutili"
|
msgstr[1] "%d regole inutili"
|
||||||
|
|
||||||
#: src/reduce.c:551
|
#: src/reduce.c:542
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Start symbol %s does not derive any sentence"
|
msgid "Start symbol %s does not derive any sentence"
|
||||||
msgstr "dal simbolo iniziale %s non deriva alcuna frase"
|
msgstr "dal simbolo iniziale %s non deriva alcuna frase"
|
||||||
@@ -686,16 +674,19 @@ msgstr "%s: l'opzione `%c%s' non ammette argomenti\n"
|
|||||||
msgid "%s: option `%s' requires an argument\n"
|
msgid "%s: option `%s' requires an argument\n"
|
||||||
msgstr "%s: l'opzione `%s' richiede un argomento\n"
|
msgstr "%s: l'opzione `%s' richiede un argomento\n"
|
||||||
|
|
||||||
|
#. --option
|
||||||
#: lib/getopt.c:771
|
#: lib/getopt.c:771
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: unrecognized option `--%s'\n"
|
msgid "%s: unrecognized option `--%s'\n"
|
||||||
msgstr "%s: opzione sconosciuta `--%s'\n"
|
msgstr "%s: opzione sconosciuta `--%s'\n"
|
||||||
|
|
||||||
|
#. +option or -option
|
||||||
#: lib/getopt.c:775
|
#: lib/getopt.c:775
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: unrecognized option `%c%s'\n"
|
msgid "%s: unrecognized option `%c%s'\n"
|
||||||
msgstr "%s: opzione sconosciuta `%c%s'\n"
|
msgstr "%s: opzione sconosciuta `%c%s'\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
#: lib/getopt.c:801
|
#: lib/getopt.c:801
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: illegal option -- %c\n"
|
msgid "%s: illegal option -- %c\n"
|
||||||
@@ -706,6 +697,7 @@ msgstr "%s: opzione non valida -- %c\n"
|
|||||||
msgid "%s: invalid option -- %c\n"
|
msgid "%s: invalid option -- %c\n"
|
||||||
msgstr "%s: opzione non valida -- %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
|
#: lib/getopt.c:834 lib/getopt.c:964
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: option requires an argument -- %c\n"
|
msgid "%s: option requires an argument -- %c\n"
|
||||||
@@ -721,10 +713,26 @@ msgstr "%s: l'opzione `-W %s'
|
|||||||
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
||||||
msgstr "%s: l'opzione `-W %s' non ammette un argomento\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
|
#: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
|
||||||
msgid "memory exhausted"
|
msgid "memory exhausted"
|
||||||
msgstr "memoria esaurita"
|
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
|
#: lib/quotearg.c:274
|
||||||
msgid "`"
|
msgid "`"
|
||||||
msgstr "`"
|
msgstr "`"
|
||||||
@@ -733,8 +741,14 @@ msgstr "`"
|
|||||||
msgid "'"
|
msgid "'"
|
||||||
msgstr "'"
|
msgstr "'"
|
||||||
|
|
||||||
#~ msgid "invalid value: %s%d"
|
#~ msgid " $ \tgo to state %d\n"
|
||||||
#~ msgstr "valore non valido: %s%d"
|
#~ msgstr " $ \tprosecuzione allo stato %d\n"
|
||||||
|
|
||||||
#~ msgid "too many items (max %d)"
|
#~ msgid "%-4s\terror (nonassociative)"
|
||||||
#~ msgstr "troppi elementi (max %d)"
|
#~ 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"
|
||||||
|
|||||||
@@ -1,26 +1,24 @@
|
|||||||
# ðÅÒÅ×ÏÄ ÓÏÏÂÝÅÎÉÊ bison.
|
# ðÅÒÅ×ÏÄ ÓÏÏÂÝÅÎÉÊ bison.
|
||||||
# Copyright (C) 1999 Free Software Foundation, Inc.
|
# Copyright (C) 1999 Free Software Foundation, Inc.
|
||||||
# Dmitry S. Sivachenko <[email protected]>, 1999,2000,2001,2002.
|
# Dmitry S. Sivachenko <[email protected]>, 1999,2000,2001.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: bison 1.32\n"
|
"Project-Id-Version: bison 1.29\n"
|
||||||
"POT-Creation-Date: 2002-03-20 09:33+0100\n"
|
"POT-Creation-Date: 2002-01-29 17:17+0100\n"
|
||||||
"PO-Revision-Date: 2002-03-20 09:44+0100\n"
|
"PO-Revision-Date: 2001-09-09 13:49+04:00\n"
|
||||||
"Last-Translator: Dmitry S. Sivachenko <[email protected]>\n"
|
"Last-Translator: Dmitry S. Sivachenko <[email protected]>\n"
|
||||||
"Language-Team: Russian <[email protected]>\n"
|
"Language-Team: Russian <[email protected]>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=koi8-r\n"
|
"Content-Type: text/plain; charset=koi8-r\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
|
|
||||||
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
|
||||||
|
|
||||||
#: src/LR0.c:189
|
#: src/LR0.c:194
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "too many states (max %d)"
|
msgid "too many states (max %d)"
|
||||||
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÏÑÎÉÊ (ÍÁËÓÉÍÁÌØÎÏ %d)"
|
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÏÑÎÉÊ (ÍÁËÓÉÍÁÌØÎÏ %d)"
|
||||||
|
|
||||||
#: src/complain.c:99 lib/error.c:128 lib/error.c:156
|
#: lib/error.c:128 lib/error.c:156 src/complain.c:99
|
||||||
msgid "Unknown system error"
|
msgid "Unknown system error"
|
||||||
msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ"
|
msgstr "îÅÉÚ×ÅÓÔÎÁÑ ÓÉÓÔÅÍÎÁÑ ÏÛÉÂËÁ"
|
||||||
|
|
||||||
@@ -32,119 +30,94 @@ msgstr "
|
|||||||
msgid "fatal error: "
|
msgid "fatal error: "
|
||||||
msgstr "ÆÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: "
|
msgstr "ÆÁÔÁÌØÎÁÑ ÏÛÉÂËÁ: "
|
||||||
|
|
||||||
#: src/conflicts.c:44
|
#: src/conflicts.c:46
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ëÏÎÆÌÉËÔ × ÓÏÓÔÏÑÎÉÉ %d ÍÅÖÄÕ ÐÒÁ×ÉÌÏÍ %d É ÌÅËÓÅÍÏÊ %s ÒÁÚÒÅÛÅÎ ËÁË %s.\n"
|
"ëÏÎÆÌÉËÔ × ÓÏÓÔÏÑÎÉÉ %d ÍÅÖÄÕ ÐÒÁ×ÉÌÏÍ %d É ÌÅËÓÅÍÏÊ %s ÒÁÚÒÅÛÅÎ ËÁË %s.\n"
|
||||||
|
|
||||||
#: src/conflicts.c:94 src/conflicts.c:119
|
#: src/conflicts.c:111 src/conflicts.c:133
|
||||||
msgid "reduce"
|
msgid "reduce"
|
||||||
msgstr "×Ù×ÏÄ"
|
msgstr "×Ù×ÏÄ"
|
||||||
|
|
||||||
#: src/conflicts.c:101 src/conflicts.c:115
|
#: src/conflicts.c:116 src/conflicts.c:128
|
||||||
msgid "shift"
|
msgid "shift"
|
||||||
msgstr "ÓÄ×ÉÇ"
|
msgstr "ÓÄ×ÉÇ"
|
||||||
|
|
||||||
#: src/conflicts.c:123
|
#: src/conflicts.c:138
|
||||||
msgid "an error"
|
msgid "an error"
|
||||||
msgstr "ÏÛÉÂËÁ"
|
msgstr "ÏÛÉÂËÁ"
|
||||||
|
|
||||||
#: src/conflicts.c:302
|
#: src/conflicts.c:291
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d shift/reduce conflict"
|
msgid "%d shift/reduce conflict"
|
||||||
msgid_plural "%d shift/reduce conflicts"
|
msgid_plural "%d shift/reduce conflicts"
|
||||||
msgstr[0] "%d ËÏÎÆÌÉËÔ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
||||||
msgstr[1] "%d ËÏÎÆÌÉËÔÁ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
|
||||||
msgstr[2] "%d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
|
||||||
|
|
||||||
#: src/conflicts.c:309
|
#: src/conflicts.c:298
|
||||||
|
#, fuzzy
|
||||||
msgid "and"
|
msgid "and"
|
||||||
msgstr "É"
|
msgstr " É"
|
||||||
|
|
||||||
#: src/conflicts.c:315
|
#: src/conflicts.c:304
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d reduce/reduce conflict"
|
msgid "%d reduce/reduce conflict"
|
||||||
msgid_plural "%d reduce/reduce conflicts"
|
msgid_plural "%d reduce/reduce conflicts"
|
||||||
msgstr[0] "%d ËÏÎÆÌÉËÔ ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
|
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
|
||||||
msgstr[1] "%d ËÏÎÆÌÉËÔÁ ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
|
|
||||||
msgstr[2] "%d ËÏÎÆÌÉËÔÏ× ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
|
|
||||||
|
|
||||||
#: src/conflicts.c:340
|
#: src/conflicts.c:329
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "State %d contains "
|
msgid "State %d contains "
|
||||||
msgstr "óÏÓÔÏÑÎÉÅ %d ÓÏÄÅÒÖÉÔ "
|
msgstr "óÏÓÔÏÑÎÉÅ %d ÓÏÄÅÒÖÉÔ"
|
||||||
|
|
||||||
#: src/conflicts.c:387
|
#. If invoked with `--yacc', use the output format specified by
|
||||||
|
#. POSIX.
|
||||||
|
#: src/conflicts.c:376
|
||||||
msgid "conflicts: "
|
msgid "conflicts: "
|
||||||
msgstr "ËÏÎÆÌÉËÔÙ: "
|
msgstr "ËÏÎÆÌÉËÔÙ: "
|
||||||
|
|
||||||
#: src/conflicts.c:389
|
#: src/conflicts.c:378
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %d shift/reduce"
|
msgid " %d shift/reduce"
|
||||||
msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ"
|
msgstr " %d ÓÄ×ÉÇ/×Ù×ÏÄ"
|
||||||
|
|
||||||
#: src/conflicts.c:393
|
#: src/conflicts.c:382
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %d reduce/reduce"
|
msgid " %d reduce/reduce"
|
||||||
msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ"
|
msgstr " %d ×Ù×ÏÄ/×Ù×ÏÄ"
|
||||||
|
|
||||||
#: src/conflicts.c:398 src/reduce.c:508
|
#: src/conflicts.c:387 src/reduce.c:499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s contains "
|
msgid "%s contains "
|
||||||
msgstr "%s ÓÏÄÅÒÖÉÔ "
|
msgstr "%s ÓÏÄÅÒÖÉÔ "
|
||||||
|
|
||||||
#: src/conflicts.c:412
|
#: src/conflicts.c:394
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "expected %d shift/reduce conflict\n"
|
msgid "expected %d shift/reduce conflict\n"
|
||||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
msgstr[0] "ÏÖÉÄÁÌÓÑ %d ËÏÎÆÌÉËÔ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ\n"
|
msgstr[0] " %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
||||||
msgstr[1] "ÏÖÉÄÁÌÏÓØ %d ËÏÎÆÌÉËÔÁ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ\n"
|
|
||||||
msgstr[2] "ÏÖÉÄÁÌÏÓØ %d ËÏÎÆÌÉËÔÏ× ÓÄ×ÉÇÁ/×Ù×ÏÄÁ\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:463 src/conflicts.c:540
|
#: src/files.c:159
|
||||||
#, c-format
|
|
||||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
|
||||||
msgstr " %-4s\t[×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)]\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:467 src/print.c:154
|
|
||||||
#, c-format
|
|
||||||
msgid ""
|
|
||||||
" $default\treduce using rule %d (%s)\n"
|
|
||||||
"\n"
|
|
||||||
msgstr ""
|
|
||||||
" $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
|
|
||||||
"\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:521 src/conflicts.c:534
|
|
||||||
#, c-format
|
|
||||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
|
||||||
msgstr " %-4s\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:550
|
|
||||||
#, c-format
|
|
||||||
msgid " $default\treduce using rule %d (%s)\n"
|
|
||||||
msgstr " $default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)\n"
|
|
||||||
|
|
||||||
#: src/files.c:151
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ ÆÁÊÌ `%s'"
|
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ ÆÁÊÌ `%s'"
|
||||||
|
|
||||||
#: src/files.c:170
|
#: src/files.c:178
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ"
|
msgstr "ÎÅ ÕÄÁÅÔÓÑ ÚÁËÒÙÔØ ÆÁÊÌ"
|
||||||
|
|
||||||
#: src/getargs.c:84
|
#. 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"
|
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
|
||||||
msgstr "GNU bison ÇÅÎÅÒÉÒÕÅÔ ÁÎÁÌÉÚÁÔÏÒÙ ÄÌÑ ÇÒÁÍÍÁÔÉË LALR(1).\n"
|
msgstr "GNU bison ÇÅÎÅÒÉÒÕÅÔ ÁÎÁÌÉÚÁÔÏÒÙ ÄÌÑ ÇÒÁÍÍÁÔÉË LALR(1).\n"
|
||||||
|
|
||||||
#: src/getargs.c:88
|
#: src/getargs.c:59
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Usage: %s [OPTION]... FILE\n"
|
msgid "Usage: %s [OPTION]... FILE\n"
|
||||||
msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþé]... æáêì\n"
|
msgstr "éÓÐÏÌØÚÏ×ÁÎÉÅ: %s [ëìàþé]... æáêì\n"
|
||||||
|
|
||||||
#: src/getargs.c:92
|
#: src/getargs.c:63
|
||||||
msgid ""
|
msgid ""
|
||||||
"If a long option shows an argument as mandatory, then it is mandatory\n"
|
"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"
|
"for the equivalent short option also. Similarly for optional arguments.\n"
|
||||||
@@ -153,7 +126,7 @@ msgstr ""
|
|||||||
"Ñ×ÌÑÅÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍ ÄÌÑ ËÏÒÏÔËÏÊ ÆÏÒÍÙ. ôÏ ÖÅ ËÁÓÁÅÔÓÑ ÎÅÏÂÑÚÁÔÅÌØÎÙÈ\n"
|
"Ñ×ÌÑÅÔÓÑ ÏÂÑÚÁÔÅÌØÎÙÍ ÄÌÑ ËÏÒÏÔËÏÊ ÆÏÒÍÙ. ôÏ ÖÅ ËÁÓÁÅÔÓÑ ÎÅÏÂÑÚÁÔÅÌØÎÙÈ\n"
|
||||||
"ÁÒÇÕÍÅÎÔÏ×.\n"
|
"ÁÒÇÕÍÅÎÔÏ×.\n"
|
||||||
|
|
||||||
#: src/getargs.c:98
|
#: src/getargs.c:69
|
||||||
msgid ""
|
msgid ""
|
||||||
"Operation modes:\n"
|
"Operation modes:\n"
|
||||||
" -h, --help display this help and exit\n"
|
" -h, --help display this help and exit\n"
|
||||||
@@ -165,7 +138,7 @@ msgstr ""
|
|||||||
" -V, --version ×Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ\n"
|
" -V, --version ×Ù×ÅÓÔÉ ÉÎÆÏÒÍÁÃÉÀ Ï ×ÅÒÓÉÉ É ×ÙÊÔÉ\n"
|
||||||
" -y, --yacc ÜÍÕÌÉÒÏ×ÁÔØ POSIX yacc\n"
|
" -y, --yacc ÜÍÕÌÉÒÏ×ÁÔØ POSIX yacc\n"
|
||||||
|
|
||||||
#: src/getargs.c:105
|
#: src/getargs.c:76
|
||||||
msgid ""
|
msgid ""
|
||||||
"Parser:\n"
|
"Parser:\n"
|
||||||
" -S, --skeleton=FILE specify the skeleton to use\n"
|
" -S, --skeleton=FILE specify the skeleton to use\n"
|
||||||
@@ -185,7 +158,8 @@ msgstr ""
|
|||||||
" -n, --no-parser ÇÅÎÅÒÉÒÏ×ÁÔØ ÔÏÌØËÏ ÔÁÂÌÉÃÙ\n"
|
" -n, --no-parser ÇÅÎÅÒÉÒÏ×ÁÔØ ÔÏÌØËÏ ÔÁÂÌÉÃÙ\n"
|
||||||
" -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n"
|
" -k, --token-table ×ËÌÀÞÉÔØ ÔÁÂÌÉÃÕ ÉÍÅÎ ÌÅËÓÅÍ\n"
|
||||||
|
|
||||||
#: src/getargs.c:117
|
#: src/getargs.c:88
|
||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"Output:\n"
|
"Output:\n"
|
||||||
" -d, --defines also produce a header file\n"
|
" -d, --defines also produce a header file\n"
|
||||||
@@ -199,28 +173,28 @@ msgstr ""
|
|||||||
" -d, --defines ÓÏÚÄÁÔØ ÔÁËÖÅ ÆÁÊÌ ÚÁÇÏÌÏ×ËÏ×\n"
|
" -d, --defines ÓÏÚÄÁÔØ ÔÁËÖÅ ÆÁÊÌ ÚÁÇÏÌÏ×ËÏ×\n"
|
||||||
" -v, --verbose ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ × Á×ÔÏÍÁÔÕ\n"
|
" -v, --verbose ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ × Á×ÔÏÍÁÔÕ\n"
|
||||||
" -b, --file-prefix=ðòåæéëó ÕËÁÚÁÔØ ðòåæéëó ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×\n"
|
" -b, --file-prefix=ðòåæéëó ÕËÁÚÁÔØ ðòåæéëó ÄÌÑ ×ÙÈÏÄÎÙÈ ÆÁÊÌÏ×\n"
|
||||||
" -o, --output=æáêì ÐÏÍÅÓÔÉÔØ ÒÅÚÕÌØÔÁÔ × æáêì\n"
|
" -o, --output-file=æáêì ÐÏÍÅÓÔÉÔØ ÒÅÚÕÌØÔÁÔ × æáêì\n"
|
||||||
" -g, --graph ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ Ë Á×ÔÏÍÁÔÕ × ×ÉÄÅ \n"
|
" -g, --graph ÓÏÚÄÁÔØ ÔÁËÖÅ ÐÏÑÓÎÅÎÉÑ Ë Á×ÔÏÍÁÔÕ × ×ÉÄÅ \n"
|
||||||
"VCG-ÇÒÁÆÁ\n"
|
"VCG-ÇÒÁÆÁ\n"
|
||||||
|
|
||||||
#: src/getargs.c:127
|
#: src/getargs.c:98
|
||||||
msgid "Report bugs to <[email protected]>.\n"
|
msgid "Report bugs to <[email protected]>.\n"
|
||||||
msgstr "ïÛÉÂËÉ ÓÏÏÂÝÁÊÔÅ ÐÏ ÁÄÒÅÓÕ <[email protected]>.\n"
|
msgstr "ïÛÉÂËÉ ÓÏÏÂÝÁÊÔÅ ÐÏ ÁÄÒÅÓÕ <[email protected]>.\n"
|
||||||
|
|
||||||
#: src/getargs.c:141
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:112
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "bison (GNU Bison) %s"
|
msgid "bison (GNU Bison) %s"
|
||||||
msgstr "bison (GNU Bison) %s"
|
msgstr "bison (GNU Bison) %s"
|
||||||
|
|
||||||
#: src/getargs.c:146
|
#: src/getargs.c:117
|
||||||
msgid ""
|
msgid ""
|
||||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
"Free Software Foundation, Inc.\n"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
"Free Software Foundation, Inc.\n"
|
|
||||||
|
|
||||||
#: src/getargs.c:151
|
#: src/getargs.c:121
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is free software; see the source for copying conditions. There is NO\n"
|
"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"
|
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||||
@@ -231,448 +205,450 @@ msgstr ""
|
|||||||
"ðòéçïäîïóôé\n"
|
"ðòéçïäîïóôé\n"
|
||||||
"äìñ ïðòåäåìåîîïê ãåìé.\n"
|
"äìñ ïðòåäåìåîîïê ãåìé.\n"
|
||||||
|
|
||||||
#: src/getargs.c:230 src/lex.c:705
|
#: src/getargs.c:200 src/lex.c:599
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' is no longer supported"
|
msgid "`%s' is no longer supported"
|
||||||
msgstr "`%s' ÂÏÌØÛÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
|
msgstr "`%s' ÂÏÌØÛÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ"
|
||||||
|
|
||||||
#: src/getargs.c:254
|
#: src/getargs.c:224
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Try `%s --help' for more information.\n"
|
msgid "Try `%s --help' for more information.\n"
|
||||||
msgstr "éÓÐÏÌØÚÕÊÔÅ `%s --help' ÄÌÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n"
|
msgstr "éÓÐÏÌØÚÕÊÔÅ `%s --help' ÄÌÑ ÄÏÐÏÌÎÉÔÅÌØÎÏÊ ÉÎÆÏÒÍÁÃÉÉ.\n"
|
||||||
|
|
||||||
#: src/getargs.c:261
|
#: src/getargs.c:233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: no grammar file given\n"
|
msgid "%s: no grammar file given\n"
|
||||||
msgstr "%s: ÎÅ ÚÁÄÁÎ ÆÁÊÌ Ó ÇÒÁÍÍÁÔÉËÏÊ\n"
|
msgstr "%s: ÎÅ ÚÁÄÁÎ ÆÁÊÌ Ó ÇÒÁÍÍÁÔÉËÏÊ\n"
|
||||||
|
|
||||||
#: src/getargs.c:265
|
#: src/getargs.c:237
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: extra arguments ignored after `%s'\n"
|
msgid "%s: extra arguments ignored after `%s'\n"
|
||||||
msgstr "%s: ÌÉÛÎÉÅ ÁÒÇÕÍÅÎÔÙ ÐÏÓÌÅ `%s' ÉÇÎÏÒÉÒÏ×ÁÎÙ\n"
|
msgstr "%s: ÌÉÛÎÉÅ ÁÒÇÕÍÅÎÔÙ ÐÏÓÌÅ `%s' ÉÇÎÏÒÉÒÏ×ÁÎÙ\n"
|
||||||
|
|
||||||
#: src/lalr.c:256
|
#: src/lalr.c:175
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "too many gotos (max %d)"
|
msgid "too many gotos (max %d)"
|
||||||
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ goto (ÍÁËÓÉÍÁÌØÎÏ %d)"
|
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ goto (ÍÁËÓÉÍÁÌØÎÏ %d)"
|
||||||
|
|
||||||
#: src/lex.c:76
|
#: src/lex.c:77
|
||||||
msgid "unexpected `/' found and ignored"
|
msgid "unexpected `/' found and ignored"
|
||||||
msgstr "×ÓÔÒÅÞÅÎ É ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎ ÎÅÏÖÉÄÁÎÎÙÊ ÓÉÍ×ÏÌ `/'"
|
msgstr "×ÓÔÒÅÞÅÎ É ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎ ÎÅÏÖÉÄÁÎÎÙÊ ÓÉÍ×ÏÌ `/'"
|
||||||
|
|
||||||
#: src/lex.c:105 src/reader.c:280
|
#: src/lex.c:106 src/reader.c:302
|
||||||
msgid "unterminated comment"
|
msgid "unterminated comment"
|
||||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ"
|
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ËÏÍÍÅÎÔÁÒÉÊ"
|
||||||
|
|
||||||
#: src/lex.c:137
|
#: src/lex.c:138
|
||||||
msgid "unexpected end of file"
|
msgid "unexpected end of file"
|
||||||
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅÃ ÆÁÊÌÁ"
|
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ËÏÎÅÃ ÆÁÊÌÁ"
|
||||||
|
|
||||||
#: src/lex.c:166
|
#: src/lex.c:157
|
||||||
msgid "unescaped newline in constant"
|
msgid "unescaped newline in constant"
|
||||||
msgstr "ÎÅÜËÒÁÎÉÒÏ×ÁÎÎÙÊ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ × ËÏÎÓÔÁÎÔÅ"
|
msgstr "ÎÅÜËÒÁÎÉÒÏ×ÁÎÎÙÊ ÐÅÒÅ×ÏÄ ÓÔÒÏËÉ × ËÏÎÓÔÁÎÔÅ"
|
||||||
|
|
||||||
#: src/lex.c:208
|
#: src/lex.c:196
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "octal value outside range 0...255: `\\%o'"
|
msgid "octal value outside range 0...255: `\\%o'"
|
||||||
msgstr "×ÏÓØÍÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÉÁÐÁÚÏÎÁ 0...255: `\\%o'"
|
msgstr "×ÏÓØÍÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÚÁ ÐÒÅÄÅÌÁÍÉ ÄÉÁÐÁÚÏÎÁ 0...255: `\\%o'"
|
||||||
|
|
||||||
#: src/lex.c:233
|
#: src/lex.c:221
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "hexadecimal value above 255: `\\x%x'"
|
msgid "hexadecimal value above 255: `\\x%x'"
|
||||||
msgstr "ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÐÒÅ×ÙÛÁÅÔ 255: `\\x%x'"
|
msgstr "ÛÅÓÔÎÁÄÃÁÔÅÒÉÞÎÁÑ ×ÅÌÉÞÉÎÁ ÐÒÅ×ÙÛÁÅÔ 255: `\\x%x'"
|
||||||
|
|
||||||
#: src/lex.c:245
|
#: src/lex.c:233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown escape sequence: `\\' followed by `%s'"
|
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||||
msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ escape-ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ: `%s' ÐÏÓÌÅ `\\'"
|
msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ escape-ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ: `%s' ÐÏÓÌÅ `\\'"
|
||||||
|
|
||||||
#: src/lex.c:342
|
#: src/lex.c:264
|
||||||
msgid "unterminated type name at end of file"
|
msgid "unterminated type name at end of file"
|
||||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ × ËÏÎÃÅ ÆÁÊÌÁ"
|
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ × ËÏÎÃÅ ÆÁÊÌÁ"
|
||||||
|
|
||||||
#: src/lex.c:345
|
#: src/lex.c:267
|
||||||
msgid "unterminated type name"
|
msgid "unterminated type name"
|
||||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ"
|
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÉÍÑ ÔÉÐÁ"
|
||||||
|
|
||||||
#: src/lex.c:438
|
#: src/lex.c:359
|
||||||
msgid "use \"...\" for multi-character literal tokens"
|
msgid "use \"...\" for multi-character literal tokens"
|
||||||
msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ"
|
msgstr "ÉÓÐÏÌØÚÕÊÔÅ \"...\" ÄÌÑ ÍÎÏÇÏÓÉÍ×ÏÌØÎÙÈ ÌÉÔÅÒÁÌØÎÙÈ ÌÅËÓÅÍ"
|
||||||
|
|
||||||
#: src/lex.c:678
|
#: src/lex.c:571
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' supports no argument: %s"
|
msgid "`%s' supports no argument: %s"
|
||||||
msgstr "`%s' ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÁÒÇÕÍÅÎÔÁ %s"
|
msgstr ""
|
||||||
|
|
||||||
#: src/lex.c:694
|
#: src/lex.c:588
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "`%s' requires an argument"
|
msgid "`%s' requires an argument"
|
||||||
msgstr "ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ"
|
msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
|
||||||
|
|
||||||
#: src/output.c:951
|
#: src/output.c:804
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "maximum table size (%d) exceeded"
|
msgid "maximum table size (%d) exceeded"
|
||||||
msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%d)"
|
msgstr "ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ (%d)"
|
||||||
|
|
||||||
#: src/print.c:39
|
#: src/print.c:44
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " type %d is %s\n"
|
msgid " type %d is %s\n"
|
||||||
msgstr " ÔÉÐ %d Ñ×ÌÑÅÔÓÑ %s\n"
|
msgstr " ÔÉÐ %d Ñ×ÌÑÅÔÓÑ %s\n"
|
||||||
|
|
||||||
#: src/print.c:88
|
#: src/print.c:106
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " (rule %d)"
|
msgid " (rule %d)"
|
||||||
msgstr " (ÐÒÁ×ÉÌÏ %d)"
|
msgstr " (ÐÒÁ×ÉÌÏ %d)"
|
||||||
|
|
||||||
#: src/print.c:108
|
|
||||||
msgid " $default\taccept\n"
|
|
||||||
msgstr " $default\tÐÒÉÎÑÔÉÅ\n"
|
|
||||||
|
|
||||||
#: src/print.c:110
|
|
||||||
msgid " NO ACTIONS\n"
|
|
||||||
msgstr " îåô äåêóô÷éê\n"
|
|
||||||
|
|
||||||
#: src/print.c:124
|
|
||||||
#, c-format
|
|
||||||
msgid " $ \tgo to state %d\n"
|
|
||||||
msgstr " $ \tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
|
|
||||||
|
|
||||||
#: src/print.c:127
|
#: src/print.c:127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\tshift, and go to state %d\n"
|
msgid " %-4s\tshift, and go to state %d\n"
|
||||||
msgstr " %-4s\tÓÄ×ÉÇ, É ÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
|
msgstr " %-4s\tÓÄ×ÉÇ, É ÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
|
||||||
|
|
||||||
#: src/print.c:142
|
#: src/print.c:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\terror (nonassociative)\n"
|
msgid " %-4s\terror (nonassociative)\n"
|
||||||
msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n"
|
msgstr " %-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)\n"
|
||||||
|
|
||||||
#: src/print.c:169
|
#: src/print.c:168
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\tgo to state %d\n"
|
msgid " %-4s\tgo to state %d\n"
|
||||||
msgstr " %-4s\tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
|
msgstr " %-4s\tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
|
||||||
|
|
||||||
#: src/print.c:180
|
#: 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\tÐÒÉÎÑÔÉÅ\n"
|
||||||
|
|
||||||
|
#: src/print.c:329
|
||||||
|
msgid " NO ACTIONS\n"
|
||||||
|
msgstr " îåô äåêóô÷éê\n"
|
||||||
|
|
||||||
|
#: src/print.c:342
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "state %d"
|
msgid "state %d"
|
||||||
msgstr "ÓÏÓÔÏÑÎÉÅ %d"
|
msgstr "ÓÏÓÔÏÑÎÉÅ %d"
|
||||||
|
|
||||||
#: src/print.c:211
|
#. rule # : LHS -> RHS
|
||||||
|
#: src/print.c:373
|
||||||
msgid "Grammar"
|
msgid "Grammar"
|
||||||
msgstr "çÒÁÍÍÁÔÉËÁ"
|
msgstr "çÒÁÍÍÁÔÉËÁ"
|
||||||
|
|
||||||
#: src/print.c:212
|
#: src/print.c:374
|
||||||
msgid "Number, Line, Rule"
|
msgid "Number, Line, Rule"
|
||||||
msgstr "îÏÍÅÒ, óÔÒÏËÁ, ðÒÁ×ÉÌÏ"
|
msgstr ""
|
||||||
|
|
||||||
#: src/print.c:217
|
#: src/print.c:379
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid " %3d %3d %s ->"
|
msgid " %3d %3d %s ->"
|
||||||
msgstr " %3d %3d %s ->"
|
msgstr "ÐÒÁ×ÉÌÏ %-4d %s ->"
|
||||||
|
|
||||||
#: src/print.c:224
|
#: src/print.c:386
|
||||||
msgid "empty"
|
msgid "empty"
|
||||||
msgstr "ÐÕÓÔÏ"
|
msgstr ""
|
||||||
|
|
||||||
#: src/print.c:231
|
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||||
|
#: src/print.c:393
|
||||||
msgid "Terminals, with rules where they appear"
|
msgid "Terminals, with rules where they appear"
|
||||||
msgstr "ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
|
msgstr "ôÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
|
||||||
|
|
||||||
#: src/print.c:256
|
#: src/print.c:416
|
||||||
msgid "Nonterminals, with rules where they appear"
|
msgid "Nonterminals, with rules where they appear"
|
||||||
msgstr "îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
|
msgstr "îÅÔÅÒÍÉÎÁÌØÎÙÅ ÓÉÍ×ÏÌÙ Ó ÐÒÁ×ÉÌÁÍÉ, × ËÏÔÏÒÙÈ ÏÎÉ ÐÏÑ×ÌÑÀÔÓÑ"
|
||||||
|
|
||||||
#: src/print.c:282
|
#: src/print.c:442
|
||||||
msgid " on left:"
|
msgid " on left:"
|
||||||
msgstr " ÎÁÌÅ×Ï:"
|
msgstr " ÎÁÌÅ×Ï:"
|
||||||
|
|
||||||
#: src/print.c:297
|
#: src/print.c:457
|
||||||
msgid " on right:"
|
msgid " on right:"
|
||||||
msgstr " ÎÁÐÒÁ×Ï:"
|
msgstr " ÎÁÐÒÁ×Ï:"
|
||||||
|
|
||||||
#: src/print_graph.c:146
|
#: src/reader.c:100
|
||||||
#, c-format
|
|
||||||
msgid "%-4s\terror (nonassociative)"
|
|
||||||
msgstr "%-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)"
|
|
||||||
|
|
||||||
#: src/print_graph.c:161
|
|
||||||
#, c-format
|
|
||||||
msgid "$default\treduce using rule %d (%s)"
|
|
||||||
msgstr "$default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)"
|
|
||||||
|
|
||||||
#: src/reader.c:89
|
|
||||||
msgid " Skipping to next \\n"
|
msgid " Skipping to next \\n"
|
||||||
msgstr " ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ \\n"
|
msgstr " ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ \\n"
|
||||||
|
|
||||||
#: src/reader.c:91
|
#: src/reader.c:102
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " Skipping to next %c"
|
msgid " Skipping to next %c"
|
||||||
msgstr " ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ %c"
|
msgstr " ðÒÏÐÕÓË ÄÏ ÓÌÅÄÕÀÝÅÇÏ %c"
|
||||||
|
|
||||||
#: src/reader.c:142 src/reader.c:154
|
#: src/reader.c:153 src/reader.c:165
|
||||||
msgid "invalid $ value"
|
msgid "invalid $ value"
|
||||||
msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ"
|
msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ"
|
||||||
|
|
||||||
#: src/reader.c:180 src/reader.c:195
|
#: src/reader.c:192 src/reader.c:207
|
||||||
msgid "unterminated string at end of file"
|
msgid "unterminated string at end of file"
|
||||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ × ËÏÎÃÅ ÆÁÊÌÁ"
|
msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ × ËÏÎÃÅ ÆÁÊÌÁ"
|
||||||
|
|
||||||
#: src/reader.c:183
|
#: src/reader.c:195
|
||||||
msgid "unterminated string"
|
msgid "unterminated string"
|
||||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ"
|
msgstr "ÎÅÚÁËÏÎÞÅÎÎÁÑ ÓÔÒÏËÁ"
|
||||||
|
|
||||||
#: src/reader.c:339
|
#: src/reader.c:337 src/reader.c:401
|
||||||
#, fuzzy
|
#, fuzzy, c-format
|
||||||
msgid "invalid @ value"
|
msgid "invalid value: %s%d"
|
||||||
msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ"
|
msgstr "ÎÅ×ÅÒÎÏÅ $ ÚÎÁÞÅÎÉÅ"
|
||||||
|
|
||||||
#: src/reader.c:352 src/reader.c:416
|
#: src/reader.c:351 src/reader.c:423
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is invalid"
|
msgid "%s is invalid"
|
||||||
msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË %s"
|
msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË %s"
|
||||||
|
|
||||||
#: src/reader.c:392
|
#: src/reader.c:391
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "$$ of `%s' has no declared type"
|
msgid "$$ of `%s' has no declared type"
|
||||||
msgstr "$$ × `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
|
msgstr "$$ × `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
|
||||||
|
|
||||||
#: src/reader.c:409
|
#: src/reader.c:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "$%d of `%s' has no declared type"
|
msgid "$%d of `%s' has no declared type"
|
||||||
msgstr "$%d ÉÚ `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
|
msgstr "$%d ÉÚ `%s' ÎÅ ÉÍÅÅÔ ÏÐÉÓÁÎÎÏÇÏ ÔÉÐÁ"
|
||||||
|
|
||||||
#: src/reader.c:463
|
#: src/reader.c:473
|
||||||
msgid "unterminated `%{' definition"
|
msgid "unterminated `%{' definition"
|
||||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `%{'"
|
msgstr "ÎÅÚÁËÏÎÞÅÎÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ `%{'"
|
||||||
|
|
||||||
#: src/reader.c:508 src/reader.c:623 src/reader.c:673
|
#: src/reader.c:518 src/reader.c:636 src/reader.c:686 src/reader.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Premature EOF after %s"
|
msgid "Premature EOF after %s"
|
||||||
msgstr "ðÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ ÐÏÓÌÅ %s"
|
msgstr "ðÒÅÖÄÅ×ÒÅÍÅÎÎÙÊ ËÏÎÅà ÆÁÊÌÁ ÐÏÓÌÅ %s"
|
||||||
|
|
||||||
#: src/reader.c:525
|
#: src/reader.c:535
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol `%s' used more than once as a literal string"
|
msgid "symbol `%s' used more than once as a literal string"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/reader.c:528
|
#: src/reader.c:538
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol `%s' given more than one literal string"
|
msgid "symbol `%s' given more than one literal string"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/reader.c:549 src/reader.c:692
|
#: src/reader.c:559 src/reader.c:705
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol %s redefined"
|
msgid "symbol %s redefined"
|
||||||
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s"
|
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÒÅÄÅÌÅÎÉÅ ÓÉÍ×ÏÌÁ %s"
|
||||||
|
|
||||||
#: src/reader.c:559 src/reader.c:638 src/reader.c:699 src/reader.c:1315
|
#: src/reader.c:569 src/reader.c:651 src/reader.c:712
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "type redeclaration for %s"
|
msgid "type redeclaration for %s"
|
||||||
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s"
|
msgstr "ÐÏ×ÔÏÒÎÏÅ ÏÐÉÓÁÎÉÅ ÔÉÐÁ ÄÌÑ %s"
|
||||||
|
|
||||||
#: src/reader.c:568
|
#: src/reader.c:581
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' is invalid in %s"
|
msgid "`%s' is invalid in %s"
|
||||||
msgstr "`%s' ÎÅ×ÅÒÎÏ × %s"
|
msgstr "`%s' ÎÅ×ÅÒÎÏ × %s"
|
||||||
|
|
||||||
#: src/reader.c:586 src/reader.c:752
|
#: src/reader.c:599 src/reader.c:758
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "multiple %s declarations"
|
msgid "multiple %s declarations"
|
||||||
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s"
|
msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÏÅ ÏÐÉÓÁÎÉÅ %s"
|
||||||
|
|
||||||
#: src/reader.c:588 src/reader.c:931 src/reader.c:956 src/reader.c:1293
|
#: 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
|
#, c-format
|
||||||
msgid "invalid %s declaration"
|
msgid "invalid %s declaration"
|
||||||
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %s"
|
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %s"
|
||||||
|
|
||||||
#: src/reader.c:608
|
#: src/reader.c:621
|
||||||
msgid "%type declaration has no <typename>"
|
msgid "%type declaration has no <typename>"
|
||||||
msgstr "ÏÐÉÓÁÎÉÅ %type ÎÅ ÉÍÅÅÔ <ÉÍÑ_ÔÉÐÁ>"
|
msgstr "ÏÐÉÓÁÎÉÅ %type ÎÅ ÉÍÅÅÔ <ÉÍÑ_ÔÉÐÁ>"
|
||||||
|
|
||||||
#: src/reader.c:643
|
#: src/reader.c:656
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid %%type declaration due to item: %s"
|
msgid "invalid %%type declaration due to item: %s"
|
||||||
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %%type ÉÚ-ÚÁ ÜÌÅÍÅÎÔÁ: %s"
|
msgstr "ÎÅ×ÅÒÎÏÅ ÏÐÉÓÁÎÉÅ %%type ÉÚ-ÚÁ ÜÌÅÍÅÎÔÁ: %s"
|
||||||
|
|
||||||
#: src/reader.c:688
|
#: src/reader.c:701
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "redefining precedence of %s"
|
msgid "redefining precedence of %s"
|
||||||
msgstr "ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÐÒÉÏÒÉÔÅÔÁ ÄÌÑ %s"
|
msgstr "ÐÅÒÅÏÐÒÅÄÅÌÅÎÉÅ ÐÒÉÏÒÉÔÅÔÁ ÄÌÑ %s"
|
||||||
|
|
||||||
#: src/reader.c:711
|
#: src/reader.c:724
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid text (%s) - number should be after identifier"
|
msgid "invalid text (%s) - number should be after identifier"
|
||||||
msgstr "ÎÅ×ÅÒÎÙÊ ÔÅËÓÔ (%s) - ÞÉÓÌÏ ÄÏÌÖÎÏ ÓÌÅÄÏ×ÁÔØ ÚÁ ÉÄÅÎÔÉÆÉËÁÔÏÒÏÍ"
|
msgstr "ÎÅ×ÅÒÎÙÊ ÔÅËÓÔ (%s) - ÞÉÓÌÏ ÄÏÌÖÎÏ ÓÌÅÄÏ×ÁÔØ ÚÁ ÉÄÅÎÔÉÆÉËÁÔÏÒÏÍ"
|
||||||
|
|
||||||
#: src/reader.c:721
|
#: src/reader.c:734
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unexpected item: %s"
|
msgid "unexpected item: %s"
|
||||||
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s"
|
msgstr "ÎÅÏÖÉÄÁÎÎÙÊ ÜÌÅÍÅÎÔ: %s"
|
||||||
|
|
||||||
#: src/reader.c:795 src/reader.c:1127 src/reader.c:1204
|
#: src/reader.c:790 src/reader.c:1149
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unmatched %s"
|
msgid "unmatched %s"
|
||||||
msgstr "ÎÅÐÁÒÎÁÑ %s"
|
msgstr "ÎÅÐÁÒÎÁÑ %s"
|
||||||
|
|
||||||
#: src/reader.c:827
|
#: src/reader.c:819
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "argument of %%expect is not an integer"
|
msgid "argument of %%expect is not an integer"
|
||||||
msgstr "ÁÒÇÕÍÅÎÔ %%expect ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ"
|
msgstr "ÁÒÇÕÍÅÎÔ %%expect ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ"
|
||||||
|
|
||||||
#: src/reader.c:873
|
#: src/reader.c:865
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized item %s, expected an identifier"
|
msgid "unrecognized item %s, expected an identifier"
|
||||||
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÜÌÅÍÅÎÔ %s, ÏÖÉÄÁÌÓÑ ÉÄÅÎÔÉÆÉËÁÔÏÒ"
|
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÎÙÊ ÜÌÅÍÅÎÔ %s, ÏÖÉÄÁÌÓÑ ÉÄÅÎÔÉÆÉËÁÔÏÒ"
|
||||||
|
|
||||||
#: src/reader.c:895
|
#: src/reader.c:887
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "expected string constant instead of %s"
|
msgid "expected string constant instead of %s"
|
||||||
msgstr "×ÍÅÓÔÏ %s ÏÖÉÄÁÌÁÓØ ÓÔÒÏËÏ×ÁÑ ÐÏÓÔÏÑÎÎÁÑ"
|
msgstr "×ÍÅÓÔÏ %s ÏÖÉÄÁÌÁÓØ ÓÔÒÏËÏ×ÁÑ ÐÏÓÔÏÑÎÎÁÑ"
|
||||||
|
|
||||||
#: src/reader.c:1043
|
#: src/reader.c:1080
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized: %s"
|
msgid "unrecognized: %s"
|
||||||
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s"
|
msgstr "ÎÅÒÁÓÐÏÚÎÁÎÏ: %s"
|
||||||
|
|
||||||
#: src/reader.c:1048
|
#: src/reader.c:1085
|
||||||
msgid "no input grammar"
|
msgid "no input grammar"
|
||||||
msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
|
msgstr "ÎÅÔ ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÉ"
|
||||||
|
|
||||||
#: src/reader.c:1053
|
#: src/reader.c:1090
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown character: %s"
|
msgid "unknown character: %s"
|
||||||
msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
|
msgstr "ÎÅÉÚ×ÅÓÔÎÙÊ ÓÉÍ×ÏÌ: %s"
|
||||||
|
|
||||||
#: src/reader.c:1227
|
#: src/reader.c:1265
|
||||||
#, c-format
|
|
||||||
msgid "unterminated %guard clause"
|
|
||||||
msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard"
|
|
||||||
|
|
||||||
#: src/reader.c:1380
|
|
||||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||||
msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÁ×ÉÌÏ: Ä×ÏÅÔÏÞÉÅ ÎÅ ÓÌÅÄÕÅÔ ÚÁ ÎÁÞÁÌØÎÙÍ ÓÉÍ×ÏÌÏÍ"
|
msgstr "ÎÅ×ÅÒÎÏÅ ÐÒÁ×ÉÌÏ: Ä×ÏÅÔÏÞÉÅ ÎÅ ÓÌÅÄÕÅÔ ÚÁ ÎÁÞÁÌØÎÙÍ ÓÉÍ×ÏÌÏÍ"
|
||||||
|
|
||||||
#: src/reader.c:1387
|
#: src/reader.c:1272
|
||||||
msgid "grammar starts with vertical bar"
|
msgid "grammar starts with vertical bar"
|
||||||
msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
|
msgstr "ÇÒÁÍÍÁÔÉËÁ ÎÁÞÉÎÁÅÔÓÑ Ó ×ÅÒÔÉËÁÌØÎÏÊ ÞÅÒÔÙ"
|
||||||
|
|
||||||
#: src/reader.c:1415
|
#: src/reader.c:1300
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "rule given for %s, which is a token"
|
msgid "rule given for %s, which is a token"
|
||||||
msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
|
msgstr "ÐÒÁ×ÉÌÏ ÚÁÄÁÎÏ ÄÌÑ %s, ËÏÔÏÒÙÊ Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
|
||||||
|
|
||||||
#: src/reader.c:1445 src/reader.c:1557
|
#: src/reader.c:1405
|
||||||
msgid "previous rule lacks an ending `;'"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/reader.c:1518
|
|
||||||
msgid "two @prec's in a row"
|
msgid "two @prec's in a row"
|
||||||
msgstr "Ä×Á @prec ÐÏÄÒÑÄ"
|
msgstr "Ä×Á @prec ÐÏÄÒÑÄ"
|
||||||
|
|
||||||
#: src/reader.c:1526
|
#: src/reader.c:1414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%%guard present but %%semantic_parser not specified"
|
msgid "%%guard present but %%semantic_parser not specified"
|
||||||
msgstr "%%guard ÐÒÉÓÕÔÓÔ×ÕÅÔ, Á %%semantic_parser ÎÅ ÚÁÄÁÎ"
|
msgstr "%%guard ÐÒÉÓÕÔÓÔ×ÕÅÔ, Á %%semantic_parser ÎÅ ÚÁÄÁÎ"
|
||||||
|
|
||||||
#: src/reader.c:1535
|
#: src/reader.c:1424
|
||||||
msgid "two actions at end of one rule"
|
msgid "two actions at end of one rule"
|
||||||
msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ"
|
msgstr "Ä×Á ÄÅÊÓÔ×ÉÑ × ËÏÎÃÅ ÏÄÎÏÇÏ ÐÒÁ×ÉÌÁ"
|
||||||
|
|
||||||
#: src/reader.c:1549
|
#: src/reader.c:1438
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "type clash (`%s' `%s') on default action"
|
msgid "type clash (`%s' `%s') on default action"
|
||||||
msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ"
|
msgstr "ËÏÎÆÌÉËÔ ÔÉÐÏ× (`%s' `%s') ÎÁ ÄÅÊÓÔ×ÉÉ ÐÏ ÕÍÏÌÞÁÎÉÀ"
|
||||||
|
|
||||||
#: src/reader.c:1555
|
#: src/reader.c:1444
|
||||||
msgid "empty rule for typed nonterminal, and no action"
|
msgid "empty rule for typed nonterminal, and no action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
|
"ÐÕÓÔÏÅ ÐÒÁ×ÉÌÏ ÄÌÑ ÔÉÐÉÚÉÒÏ×ÁÎÎÏÇÏ ÎÅÔÅÒÍÉÎÁÌØÎÏÇÏ ÓÉÍ×ÏÌÁ, É ÎÅÔ ÄÅÊÓÔ×ÉÑ"
|
||||||
|
|
||||||
#: src/reader.c:1601
|
#: src/reader.c:1450
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid input: %s"
|
msgid "invalid input: %s"
|
||||||
msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s"
|
msgstr "ÎÅ×ÅÒÎÙÅ ×ÈÏÄÎÙÅ ÄÁÎÎÙÅ: %s"
|
||||||
|
|
||||||
#: src/reader.c:1609
|
#: src/reader.c:1457
|
||||||
#, c-format
|
|
||||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
|
||||||
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %d"
|
|
||||||
|
|
||||||
#: src/reader.c:1612
|
|
||||||
msgid "no rules in the input grammar"
|
msgid "no rules in the input grammar"
|
||||||
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
|
msgstr "ÏÔÓÕÔÓÔ×ÕÀÔ ÐÒÁ×ÉÌÁ ×Ï ×ÈÏÄÎÏÊ ÇÒÁÍÍÁÔÉËÅ"
|
||||||
|
|
||||||
#: src/reader.c:1640
|
#: src/reader.c:1465
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||||
msgstr "ÓÉÍ×ÏÌ %s ÉÓÐÏÌØÚÕÅÔÓÑ, ÎÏ ÎÅ ÏÐÒÅÄÅÌÅÎ ËÁË ÌÅËÓÅÍÁ É ÎÅ ÉÍÅÅÔ ÐÒÁ×ÉÌ"
|
msgstr "ÓÉÍ×ÏÌ %s ÉÓÐÏÌØÚÕÅÔÓÑ, ÎÏ ÎÅ ÏÐÒÅÄÅÌÅÎ ËÁË ÌÅËÓÅÍÁ É ÎÅ ÉÍÅÅÔ ÐÒÁ×ÉÌ"
|
||||||
|
|
||||||
#: src/reader.c:1775
|
#: src/reader.c:1487
|
||||||
|
#, c-format
|
||||||
|
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||||
|
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÏ× (ÌÅËÓÅÍÙ ÐÌÀÓ ÎÅÔÅÒÍÉÎÁÌÙ); ÍÁËÓÉÍÁÌØÎÏ %d"
|
||||||
|
|
||||||
|
#: src/reader.c:1551
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "tokens %s and %s both assigned number %d"
|
msgid "tokens %s and %s both assigned number %d"
|
||||||
msgstr "ÏÂÅÉÍ ÌÅËÓÅÍÁÍ %s É %s ÐÒÉÓ×ÏÅÎ ÎÏÍÅÒ %d"
|
msgstr "ÏÂÅÉÍ ÌÅËÓÅÍÁÍ %s É %s ÐÒÉÓ×ÏÅÎ ÎÏÍÅÒ %d"
|
||||||
|
|
||||||
#: src/reader.c:1828
|
#: src/reader.c:1601
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "conflicting precedences for %s and %s"
|
msgid "conflicting precedences for %s and %s"
|
||||||
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÐÒÉÏÒÉÔÅÔÙ ÄÌÑ %s É %s"
|
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÐÒÉÏÒÉÔÅÔÙ ÄÌÑ %s É %s"
|
||||||
|
|
||||||
#: src/reader.c:1840
|
#: src/reader.c:1613
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "conflicting assoc values for %s and %s"
|
msgid "conflicting assoc values for %s and %s"
|
||||||
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÚÎÁÞÅÎÉÑ ÁÓÓÏÃÉÁÔÉ×ÎÏÓÔÉ ÄÌÑ %s É %s"
|
msgstr "ÐÒÏÔÉ×ÏÒÅÞÉ×ÙÅ ÚÎÁÞÅÎÉÑ ÁÓÓÏÃÉÁÔÉ×ÎÏÓÔÉ ÄÌÑ %s É %s"
|
||||||
|
|
||||||
#: src/reader.c:1879
|
#: src/reader.c:1650
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "the start symbol %s is undefined"
|
msgid "the start symbol %s is undefined"
|
||||||
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅÏÐÒÅÄÅÌÅÎ"
|
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅÏÐÒÅÄÅÌÅÎ"
|
||||||
|
|
||||||
#: src/reader.c:1881
|
#: src/reader.c:1652
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "the start symbol %s is a token"
|
msgid "the start symbol %s is a token"
|
||||||
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
|
msgstr "ÎÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s Ñ×ÌÑÅÔÓÑ ÌÅËÓÅÍÏÊ"
|
||||||
|
|
||||||
#: src/reduce.c:409
|
#: src/reader.c:1672
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "too many items (max %d)"
|
||||||
|
msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÓÏÓÔÏÑÎÉÊ (ÍÁËÓÉÍÁÌØÎÏ %d)"
|
||||||
|
|
||||||
|
#: src/reduce.c:398
|
||||||
msgid "Useless nonterminals:"
|
msgid "Useless nonterminals:"
|
||||||
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÎÅÔÅÒÍÉÎÁÌÙ:"
|
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÎÅÔÅÒÍÉÎÁÌÙ:"
|
||||||
|
|
||||||
#: src/reduce.c:422
|
#: src/reduce.c:411
|
||||||
msgid "Terminals which are not used:"
|
msgid "Terminals which are not used:"
|
||||||
msgstr "îÅÉÓÐÏÌØÚÏ×ÁÎÎÙÅ ÔÅÒÍÉÎÁÌÙ:"
|
msgstr "îÅÉÓÐÏÌØÚÏ×ÁÎÎÙÅ ÔÅÒÍÉÎÁÌÙ:"
|
||||||
|
|
||||||
#: src/reduce.c:433
|
#: src/reduce.c:422
|
||||||
msgid "Useless rules:"
|
msgid "Useless rules:"
|
||||||
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÐÒÁ×ÉÌÁ:"
|
msgstr "âÅÓÐÏÌÅÚÎÙÅ ÐÒÁ×ÉÌÁ:"
|
||||||
|
|
||||||
#: src/reduce.c:503
|
#: src/reduce.c:494
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d rule never reduced\n"
|
msgid "%d rule never reduced\n"
|
||||||
msgid_plural "%d rules never reduced\n"
|
msgid_plural "%d rules never reduced\n"
|
||||||
msgstr[0] "%d ÐÒÁ×ÉÌÏ ÎÅ Ó×ÅÄÅÎÏ\n"
|
msgstr[0] "%d ÐÒÁ×ÉÌ ÎÅ Ó×ÅÄÅÎÏ\n"
|
||||||
msgstr[1] "%d ÐÒÁ×ÉÌÁ ÎÅ Ó×ÅÄÅÎÏ\n"
|
|
||||||
msgstr[2] "%d ÐÒÁ×ÉÌ ÎÅ Ó×ÅÄÅÎÏ\n"
|
|
||||||
|
|
||||||
#: src/reduce.c:511
|
#: src/reduce.c:502
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d useless nonterminal"
|
msgid "%d useless nonterminal"
|
||||||
msgid_plural "%d useless nonterminals"
|
msgid_plural "%d useless nonterminals"
|
||||||
msgstr[0] "%d ÂÅÓÐÏÌÅÚÎÙÊ ÎÅÔÅÒÍÉÎÁÌ"
|
msgstr[0] "%d ÂÅÓÐÏÌÅÚÎÙÈ ÎÅÔÅÒÍÉÎÁÌÏ×%s"
|
||||||
msgstr[1] "%d ÂÅÓÐÏÌÅÚÎÙÈ ÎÅÔÅÒÍÉÎÁÌÁ"
|
|
||||||
msgstr[2] "%d ÂÅÓÐÏÌÅÚÎÙÈ ÎÅÔÅÒÍÉÎÁÌÏ×"
|
|
||||||
|
|
||||||
#: src/reduce.c:517
|
#: src/reduce.c:508
|
||||||
msgid " and "
|
msgid " and "
|
||||||
msgstr " É "
|
msgstr " É "
|
||||||
|
|
||||||
#: src/reduce.c:520
|
#: src/reduce.c:511
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d useless rule"
|
msgid "%d useless rule"
|
||||||
msgid_plural "%d useless rules"
|
msgid_plural "%d useless rules"
|
||||||
msgstr[0] "%d ÂÅÓÐÏÌÅÚÎÏÅ ÐÒÁ×ÉÌÏ"
|
msgstr[0] "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ%s"
|
||||||
msgstr[1] "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌÁ"
|
|
||||||
msgstr[2] "%d ÂÅÓÐÏÌÅÚÎÙÈ ÐÒÁ×ÉÌ"
|
|
||||||
|
|
||||||
#: src/reduce.c:551
|
#: src/reduce.c:542
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Start symbol %s does not derive any sentence"
|
msgid "Start symbol %s does not derive any sentence"
|
||||||
msgstr "îÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅ ×Ù×ÏÄÉÔ ÎÉ ÏÄÎÏÇÏ ÐÒÅÄÌÏÖÅÎÉÑ"
|
msgstr "îÁÞÁÌØÎÙÊ ÓÉÍ×ÏÌ %s ÎÅ ×Ù×ÏÄÉÔ ÎÉ ÏÄÎÏÇÏ ÐÒÅÄÌÏÖÅÎÉÑ"
|
||||||
@@ -697,16 +673,19 @@ msgstr "%s:
|
|||||||
msgid "%s: option `%s' requires an argument\n"
|
msgid "%s: option `%s' requires an argument\n"
|
||||||
msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
|
msgstr "%s: ËÌÀÞ `%s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ Ó ÁÒÇÕÍÅÎÔÏÍ\n"
|
||||||
|
|
||||||
|
#. --option
|
||||||
#: lib/getopt.c:771
|
#: lib/getopt.c:771
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: unrecognized option `--%s'\n"
|
msgid "%s: unrecognized option `--%s'\n"
|
||||||
msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `--%s'\n"
|
msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `--%s'\n"
|
||||||
|
|
||||||
|
#. +option or -option
|
||||||
#: lib/getopt.c:775
|
#: lib/getopt.c:775
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: unrecognized option `%c%s'\n"
|
msgid "%s: unrecognized option `%c%s'\n"
|
||||||
msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `%c%s'\n"
|
msgstr "%s: ÎÅÉÚ×ÅÓÔÎÙÊ ËÌÀÞ `%c%s'\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
#: lib/getopt.c:801
|
#: lib/getopt.c:801
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: illegal option -- %c\n"
|
msgid "%s: illegal option -- %c\n"
|
||||||
@@ -717,6 +696,7 @@ msgstr "%s:
|
|||||||
msgid "%s: invalid option -- %c\n"
|
msgid "%s: invalid option -- %c\n"
|
||||||
msgstr "%s: ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- %c\n"
|
msgstr "%s: ÎÅ×ÅÒÎÙÊ ËÌÀÞ -- %c\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
#: lib/getopt.c:834 lib/getopt.c:964
|
#: lib/getopt.c:834 lib/getopt.c:964
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: option requires an argument -- %c\n"
|
msgid "%s: option requires an argument -- %c\n"
|
||||||
@@ -732,10 +712,26 @@ msgstr "%s:
|
|||||||
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
||||||
msgstr "%s: ËÌÀÞ `-W %s' ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÂÅÚ ÁÒÇÕÍÅÎÔÁ\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
|
#: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
|
||||||
msgid "memory exhausted"
|
msgid "memory exhausted"
|
||||||
msgstr "ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
|
msgstr "ÐÁÍÑÔØ ÉÓÞÅÒÐÁÎÁ"
|
||||||
|
|
||||||
|
#. 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
|
#: lib/quotearg.c:274
|
||||||
msgid "`"
|
msgid "`"
|
||||||
msgstr "`"
|
msgstr "`"
|
||||||
@@ -744,36 +740,21 @@ msgstr "`"
|
|||||||
msgid "'"
|
msgid "'"
|
||||||
msgstr "'"
|
msgstr "'"
|
||||||
|
|
||||||
#~ msgid " 1 shift/reduce conflict"
|
#~ msgid "%-4s\terror (nonassociative)"
|
||||||
#~ msgstr " 1 ËÏÎÆÌÉËÔ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
#~ msgstr "%-4s\tÏÛÉÂËÁ (ÎÅÁÓÓÏÃÉÁÔÉ×ÎÁÑ)"
|
||||||
|
|
||||||
#~ msgid " 1 reduce/reduce conflict"
|
#~ msgid "$default\treduce using rule %d (%s)"
|
||||||
#~ msgstr " 1 ËÏÎÆÌÉËÔ ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
|
#~ msgstr "$default\t×Ù×ÏÄ Ó ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÐÒÁ×ÉÌÁ %d (%s)"
|
||||||
|
|
||||||
#~ msgid "%s contains"
|
#~ msgid "unterminated %guard clause"
|
||||||
#~ msgstr "%s ÓÏÄÅÒÖÉÔ"
|
#~ msgstr "ÎÅÚÁËÏÎÞÅÎÎÙÊ ÏÐÅÒÁÔÏÒ %guard"
|
||||||
|
|
||||||
#~ msgid "DERIVES"
|
#~ msgid " $ \tgo to state %d\n"
|
||||||
#~ msgstr "DERIVES"
|
#~ msgstr " $ \tÐÅÒÅÈÏÄ × ÓÏÓÔÏÑÎÉÅ %d\n"
|
||||||
|
|
||||||
#~ msgid "%s derives"
|
|
||||||
#~ msgstr "%s ×Ù×ÏÄÉÔ"
|
|
||||||
|
|
||||||
#~ msgid "%s: internal error: %s\n"
|
#~ msgid "%s: internal error: %s\n"
|
||||||
#~ msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n"
|
#~ msgstr "%s: ×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ: %s\n"
|
||||||
|
|
||||||
#~ msgid "Entering set_nullable"
|
|
||||||
#~ msgstr "÷ÈÏÄ × set_nullable"
|
|
||||||
|
|
||||||
#~ msgid "\t\t/* empty */"
|
|
||||||
#~ msgstr "\t\t/* ÐÕÓÔÏ */"
|
|
||||||
|
|
||||||
#~ msgid "multiple %%header_extension declarations"
|
|
||||||
#~ msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÙÅ ÏÐÉÓÁÎÉÑ %%header_extension"
|
|
||||||
|
|
||||||
#~ msgid "multiple %%source_extension declarations"
|
|
||||||
#~ msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÙÅ ÏÐÉÓÁÎÉÑ %%source_extension"
|
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "Variables\n"
|
#~ "Variables\n"
|
||||||
#~ "---------\n"
|
#~ "---------\n"
|
||||||
@@ -804,11 +785,38 @@ msgstr "'"
|
|||||||
#~ "--------------------------\n"
|
#~ "--------------------------\n"
|
||||||
#~ "\n"
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid " 1 shift/reduce conflict"
|
||||||
|
#~ msgstr " 1 ËÏÎÆÌÉËÔ ÓÄ×ÉÇÁ/×Ù×ÏÄÁ"
|
||||||
|
|
||||||
|
#~ msgid " 1 reduce/reduce conflict"
|
||||||
|
#~ msgstr " 1 ËÏÎÆÌÉËÔ ×Ù×ÏÄÁ/×Ù×ÏÄÁ"
|
||||||
|
|
||||||
|
#~ msgid "%s contains"
|
||||||
|
#~ msgstr "%s ÓÏÄÅÒÖÉÔ"
|
||||||
|
|
||||||
|
#~ msgid "DERIVES"
|
||||||
|
#~ msgstr "DERIVES"
|
||||||
|
|
||||||
|
#~ msgid "%s derives"
|
||||||
|
#~ msgstr "%s ×Ù×ÏÄÉÔ"
|
||||||
|
|
||||||
|
#~ msgid "Entering set_nullable"
|
||||||
|
#~ msgstr "÷ÈÏÄ × set_nullable"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "×Ù×ÅÄÅÎÎÙÊ %s ÏÐÒÅÄÅÌÑÅÔ %d ÔÅÒÍÉÎÁÌÏ×%s, %d ÎÅÔÅÒÍÉÎÁÌÏ×%s, É %d ÐÒÁ×ÉÌ "
|
#~ "×Ù×ÅÄÅÎÎÙÊ %s ÏÐÒÅÄÅÌÑÅÔ %d ÔÅÒÍÉÎÁÌÏ×%s, %d ÎÅÔÅÒÍÉÎÁÌÏ×%s, É %d ÐÒÁ×ÉÌ "
|
||||||
#~ "×Ù×ÏÄÁ%s.\n"
|
#~ "×Ù×ÏÄÁ%s.\n"
|
||||||
|
|
||||||
|
#~ msgid "\t\t/* empty */"
|
||||||
|
#~ msgstr "\t\t/* ÐÕÓÔÏ */"
|
||||||
|
|
||||||
|
#~ msgid "multiple %%header_extension declarations"
|
||||||
|
#~ msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÙÅ ÏÐÉÓÁÎÉÑ %%header_extension"
|
||||||
|
|
||||||
|
#~ msgid "multiple %%source_extension declarations"
|
||||||
|
#~ msgstr "ÍÎÏÖÅÓÔ×ÅÎÎÙÅ ÏÐÉÓÁÎÉÑ %%source_extension"
|
||||||
|
|
||||||
#~ msgid "@%s is invalid"
|
#~ msgid "@%s is invalid"
|
||||||
#~ msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË @%s"
|
#~ msgstr "ÎÅ×ÅÒÎÙÊ ÚÎÁË @%s"
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
# Swedish messages for bison.
|
# Swedish messages for bison.
|
||||||
# Copyright © 2001, 2002 Free Software Foundation, Inc.
|
# Copyright © 2001 Free Software Foundation, Inc.
|
||||||
# Göran Uddeborg <[email protected]>, 2001, 2002.
|
# Göran Uddeborg <[email protected]>, 2001.
|
||||||
# $Revision$
|
# $Revision$
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: bison 1.33b\n"
|
"Project-Id-Version: bison 1.30c\n"
|
||||||
"POT-Creation-Date: 2002-03-20 09:33+0100\n"
|
"POT-Creation-Date: 2002-01-29 17:17+0100\n"
|
||||||
"PO-Revision-Date: 2002-03-05 10:18+0100\n"
|
"PO-Revision-Date: 2001-11-18 15:17+0100\n"
|
||||||
"Last-Translator: Göran Uddeborg <[email protected]>\n"
|
"Last-Translator: Göran Uddeborg <[email protected]>\n"
|
||||||
"Language-Team: Swedish <[email protected]>\n"
|
"Language-Team: Swedish <[email protected]>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -15,12 +15,12 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: src/LR0.c:189
|
#: src/LR0.c:194
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "too many states (max %d)"
|
msgid "too many states (max %d)"
|
||||||
msgstr "för många tillstånd (max %d)"
|
msgstr "för många tillstånd (max %d)"
|
||||||
|
|
||||||
#: src/complain.c:99 lib/error.c:128 lib/error.c:156
|
#: lib/error.c:128 lib/error.c:156 src/complain.c:99
|
||||||
msgid "Unknown system error"
|
msgid "Unknown system error"
|
||||||
msgstr "Okänt systemfel"
|
msgstr "Okänt systemfel"
|
||||||
|
|
||||||
@@ -32,116 +32,96 @@ msgstr "varning: "
|
|||||||
msgid "fatal error: "
|
msgid "fatal error: "
|
||||||
msgstr "ödesdigert fel: "
|
msgstr "ödesdigert fel: "
|
||||||
|
|
||||||
#: src/conflicts.c:44
|
#: src/conflicts.c:46
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
msgid "Conflict in state %d between rule %d and token %s resolved as %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Konflikt i tillstånd %d mellan regel %d och element %s, löstes med %s.\n"
|
"Konflikt i tillstånd %d mellan regel %d och element %s, löstes med %s.\n"
|
||||||
|
|
||||||
#: src/conflicts.c:94 src/conflicts.c:119
|
#: src/conflicts.c:111 src/conflicts.c:133
|
||||||
msgid "reduce"
|
msgid "reduce"
|
||||||
msgstr "reducera"
|
msgstr "reducera"
|
||||||
|
|
||||||
#: src/conflicts.c:101 src/conflicts.c:115
|
#: src/conflicts.c:116 src/conflicts.c:128
|
||||||
msgid "shift"
|
msgid "shift"
|
||||||
msgstr "skifta"
|
msgstr "skifta"
|
||||||
|
|
||||||
#: src/conflicts.c:123
|
#: src/conflicts.c:138
|
||||||
msgid "an error"
|
msgid "an error"
|
||||||
msgstr "ett fel"
|
msgstr "ett fel"
|
||||||
|
|
||||||
#: src/conflicts.c:302
|
#: src/conflicts.c:291
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d shift/reduce conflict"
|
msgid "%d shift/reduce conflict"
|
||||||
msgid_plural "%d shift/reduce conflicts"
|
msgid_plural "%d shift/reduce conflicts"
|
||||||
msgstr[0] "%d skifta/reducerakonflikt"
|
msgstr[0] "%d skifta/reducerakonflikt"
|
||||||
msgstr[1] "%d skifta/reducerakonflikter"
|
msgstr[1] "%d skifta/reducerakonflikter"
|
||||||
|
|
||||||
#: src/conflicts.c:309
|
#: src/conflicts.c:298
|
||||||
msgid "and"
|
msgid "and"
|
||||||
msgstr "och"
|
msgstr "och"
|
||||||
|
|
||||||
#: src/conflicts.c:315
|
#: src/conflicts.c:304
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d reduce/reduce conflict"
|
msgid "%d reduce/reduce conflict"
|
||||||
msgid_plural "%d reduce/reduce conflicts"
|
msgid_plural "%d reduce/reduce conflicts"
|
||||||
msgstr[0] "%d reducera/reducerakonflikt"
|
msgstr[0] "%d reducera/reducerakonflikt"
|
||||||
msgstr[1] "%d reducera/reducerakonflikter"
|
msgstr[1] "%d reducera/reducerakonflikter"
|
||||||
|
|
||||||
#: src/conflicts.c:340
|
#: src/conflicts.c:329
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "State %d contains "
|
msgid "State %d contains "
|
||||||
msgstr "Tillstånd %d innehåller "
|
msgstr "Tillstånd %d innehåller "
|
||||||
|
|
||||||
#: src/conflicts.c:387
|
#. If invoked with `--yacc', use the output format specified by
|
||||||
|
#. POSIX.
|
||||||
|
#: src/conflicts.c:376
|
||||||
msgid "conflicts: "
|
msgid "conflicts: "
|
||||||
msgstr "konflikter: "
|
msgstr "konflikter: "
|
||||||
|
|
||||||
#: src/conflicts.c:389
|
#: src/conflicts.c:378
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %d shift/reduce"
|
msgid " %d shift/reduce"
|
||||||
msgstr " %d skifta/reducera"
|
msgstr " %d skifta/reducera"
|
||||||
|
|
||||||
#: src/conflicts.c:393
|
#: src/conflicts.c:382
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %d reduce/reduce"
|
msgid " %d reduce/reduce"
|
||||||
msgstr " %d reducera/reducera"
|
msgstr " %d reducera/reducera"
|
||||||
|
|
||||||
#: src/conflicts.c:398 src/reduce.c:508
|
#: src/conflicts.c:387 src/reduce.c:499
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s contains "
|
msgid "%s contains "
|
||||||
msgstr "%s innehåller "
|
msgstr "%s innehåller "
|
||||||
|
|
||||||
#: src/conflicts.c:412
|
#: src/conflicts.c:394
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "expected %d shift/reduce conflict\n"
|
msgid "expected %d shift/reduce conflict\n"
|
||||||
msgid_plural "expected %d shift/reduce conflicts\n"
|
msgid_plural "expected %d shift/reduce conflicts\n"
|
||||||
msgstr[0] "förväntade %d skifta/reducerakonflikt\n"
|
msgstr[0] "förväntade %d skifta/reducerakonflikt"
|
||||||
msgstr[1] "förväntade %d skifta/reducerakonflikter\n"
|
msgstr[1] "förväntade %d skifta/reducerakonflikter"
|
||||||
|
|
||||||
#: src/conflicts.c:463 src/conflicts.c:540
|
#: src/files.c:159
|
||||||
#, c-format
|
|
||||||
msgid " %-4s\t[reduce using rule %d (%s)]\n"
|
|
||||||
msgstr " %-4s\t[reducera med regel %d (%s)]\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:467 src/print.c:154
|
|
||||||
#, c-format
|
|
||||||
msgid ""
|
|
||||||
" $default\treduce using rule %d (%s)\n"
|
|
||||||
"\n"
|
|
||||||
msgstr ""
|
|
||||||
" $standard\treducera med regel %d (%s)\n"
|
|
||||||
"\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:521 src/conflicts.c:534
|
|
||||||
#, c-format
|
|
||||||
msgid " %-4s\treduce using rule %d (%s)\n"
|
|
||||||
msgstr " %-4s\treducera med regel %d (%s)\n"
|
|
||||||
|
|
||||||
#: src/conflicts.c:550
|
|
||||||
#, c-format
|
|
||||||
msgid " $default\treduce using rule %d (%s)\n"
|
|
||||||
msgstr " $standard\treducera med regel %d (%s)\n"
|
|
||||||
|
|
||||||
#: src/files.c:151
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot open file `%s'"
|
msgid "cannot open file `%s'"
|
||||||
msgstr "kan inte öppna filen \"%s\""
|
msgstr "kan inte öppna filen \"%s\""
|
||||||
|
|
||||||
#: src/files.c:170
|
#: src/files.c:178
|
||||||
msgid "cannot close file"
|
msgid "cannot close file"
|
||||||
msgstr "kan inte stänga fil"
|
msgstr "kan inte stänga fil"
|
||||||
|
|
||||||
#: src/getargs.c:84
|
#. 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"
|
msgid "GNU bison generates parsers for LALR(1) grammars.\n"
|
||||||
msgstr "GNU bison genererar parsrar för LALR(1)-grammatiker.\n"
|
msgstr "GNU bison genererar parsrar för LALR(1)-grammatiker.\n"
|
||||||
|
|
||||||
#: src/getargs.c:88
|
#: src/getargs.c:59
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Usage: %s [OPTION]... FILE\n"
|
msgid "Usage: %s [OPTION]... FILE\n"
|
||||||
msgstr "Användning: %s [FLAGGA]... FIL\n"
|
msgstr "Användning: %s [FLAGGA]... FIL\n"
|
||||||
|
|
||||||
#: src/getargs.c:92
|
#: src/getargs.c:63
|
||||||
msgid ""
|
msgid ""
|
||||||
"If a long option shows an argument as mandatory, then it is mandatory\n"
|
"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"
|
"for the equivalent short option also. Similarly for optional arguments.\n"
|
||||||
@@ -150,7 +130,7 @@ msgstr ""
|
|||||||
"obligatoriskt för den motsvarande korta flaggan också. Motsvarande\n"
|
"obligatoriskt för den motsvarande korta flaggan också. Motsvarande\n"
|
||||||
"för valfria argument.\n"
|
"för valfria argument.\n"
|
||||||
|
|
||||||
#: src/getargs.c:98
|
#: src/getargs.c:69
|
||||||
msgid ""
|
msgid ""
|
||||||
"Operation modes:\n"
|
"Operation modes:\n"
|
||||||
" -h, --help display this help and exit\n"
|
" -h, --help display this help and exit\n"
|
||||||
@@ -162,7 +142,7 @@ msgstr ""
|
|||||||
" -V, --version visa versionsinformation och avsluta\n"
|
" -V, --version visa versionsinformation och avsluta\n"
|
||||||
" -y, --yacc emulera POSIX-yacc\n"
|
" -y, --yacc emulera POSIX-yacc\n"
|
||||||
|
|
||||||
#: src/getargs.c:105
|
#: src/getargs.c:76
|
||||||
msgid ""
|
msgid ""
|
||||||
"Parser:\n"
|
"Parser:\n"
|
||||||
" -S, --skeleton=FILE specify the skeleton to use\n"
|
" -S, --skeleton=FILE specify the skeleton to use\n"
|
||||||
@@ -182,7 +162,7 @@ msgstr ""
|
|||||||
" -n, --no-parser generera endast tabellerna\n"
|
" -n, --no-parser generera endast tabellerna\n"
|
||||||
" -k, --token-table inkludera en tabell över elementnamn\n"
|
" -k, --token-table inkludera en tabell över elementnamn\n"
|
||||||
|
|
||||||
#: src/getargs.c:117
|
#: src/getargs.c:88
|
||||||
msgid ""
|
msgid ""
|
||||||
"Output:\n"
|
"Output:\n"
|
||||||
" -d, --defines also produce a header file\n"
|
" -d, --defines also produce a header file\n"
|
||||||
@@ -199,26 +179,26 @@ msgstr ""
|
|||||||
" -o, --output=FIL lägg utdata i FIL\n"
|
" -o, --output=FIL lägg utdata i FIL\n"
|
||||||
" -g, --graph skapa också en VCG-beskrivning av automaten\n"
|
" -g, --graph skapa också en VCG-beskrivning av automaten\n"
|
||||||
|
|
||||||
#: src/getargs.c:127
|
#: src/getargs.c:98
|
||||||
msgid "Report bugs to <[email protected]>.\n"
|
msgid "Report bugs to <[email protected]>.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Rapportera fel till <[email protected]>.\n"
|
"Rapportera fel till <[email protected]>.\n"
|
||||||
"Rapportera synpunkter på översättningen till <[email protected]>.\n"
|
"Rapportera anmärkningar på översättningen till <[email protected]>.\n"
|
||||||
|
|
||||||
#: src/getargs.c:141
|
#. Some efforts were made to ease the translators' task, please
|
||||||
|
#. continue.
|
||||||
|
#: src/getargs.c:112
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "bison (GNU Bison) %s"
|
msgid "bison (GNU Bison) %s"
|
||||||
msgstr "bison (GNU Bison) %s"
|
msgstr "bison (GNU Bison) %s"
|
||||||
|
|
||||||
#: src/getargs.c:146
|
#: src/getargs.c:117
|
||||||
msgid ""
|
msgid ""
|
||||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
"Free Software Foundation, Inc.\n"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Copyright 1984, 1986, 1989, 1992, 2000, 2001, 2002\n"
|
"Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"
|
||||||
"Free Software Foundation, Inc.\n"
|
|
||||||
|
|
||||||
#: src/getargs.c:151
|
#: src/getargs.c:121
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is free software; see the source for copying conditions. There is NO\n"
|
"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"
|
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
|
||||||
@@ -227,445 +207,454 @@ msgstr ""
|
|||||||
"finns INGEN garanti, inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR ETT\n"
|
"finns INGEN garanti, inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR ETT\n"
|
||||||
"SPECIELLT ÄNDAMÅL.\n"
|
"SPECIELLT ÄNDAMÅL.\n"
|
||||||
|
|
||||||
#: src/getargs.c:230 src/lex.c:705
|
#: src/getargs.c:200 src/lex.c:599
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' is no longer supported"
|
msgid "`%s' is no longer supported"
|
||||||
msgstr "\"%s\" stöds inte längre"
|
msgstr "\"%s\" stöds inte längre"
|
||||||
|
|
||||||
#: src/getargs.c:254
|
#: src/getargs.c:224
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Try `%s --help' for more information.\n"
|
msgid "Try `%s --help' for more information.\n"
|
||||||
msgstr "Försök med \"%s --help\" för mer information.\n"
|
msgstr "Försök med \"%s --help\" för mer information.\n"
|
||||||
|
|
||||||
#: src/getargs.c:261
|
#: src/getargs.c:233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: no grammar file given\n"
|
msgid "%s: no grammar file given\n"
|
||||||
msgstr "%s: ingen grammatikfil angiven\n"
|
msgstr "%s: ingen grammatikfil angiven\n"
|
||||||
|
|
||||||
#: src/getargs.c:265
|
#: src/getargs.c:237
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: extra arguments ignored after `%s'\n"
|
msgid "%s: extra arguments ignored after `%s'\n"
|
||||||
msgstr "%s: extra argument ignorerade efter \"%s\"\n"
|
msgstr "%s: extra argument ignorerade efter \"%s\"\n"
|
||||||
|
|
||||||
#: src/lalr.c:256
|
#: src/lalr.c:175
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "too many gotos (max %d)"
|
msgid "too many gotos (max %d)"
|
||||||
msgstr "för många goto (max %d)"
|
msgstr "för många goto (max %d)"
|
||||||
|
|
||||||
#: src/lex.c:76
|
#: src/lex.c:77
|
||||||
msgid "unexpected `/' found and ignored"
|
msgid "unexpected `/' found and ignored"
|
||||||
msgstr "oväntat \"/\" hittat och ignorerat"
|
msgstr "oväntat \"/\" hittat och ignorerat"
|
||||||
|
|
||||||
#: src/lex.c:105 src/reader.c:280
|
#: src/lex.c:106 src/reader.c:302
|
||||||
msgid "unterminated comment"
|
msgid "unterminated comment"
|
||||||
msgstr "oavslutad kommentar"
|
msgstr "oavslutad kommentar"
|
||||||
|
|
||||||
#: src/lex.c:137
|
#: src/lex.c:138
|
||||||
msgid "unexpected end of file"
|
msgid "unexpected end of file"
|
||||||
msgstr "oväntat filslut"
|
msgstr "oväntat filslut"
|
||||||
|
|
||||||
#: src/lex.c:166
|
#: src/lex.c:157
|
||||||
msgid "unescaped newline in constant"
|
msgid "unescaped newline in constant"
|
||||||
msgstr "oskyddat nyradstecken i konstant"
|
msgstr "oskyddat nyradstecken i konstant"
|
||||||
|
|
||||||
#: src/lex.c:208
|
#: src/lex.c:196
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "octal value outside range 0...255: `\\%o'"
|
msgid "octal value outside range 0...255: `\\%o'"
|
||||||
msgstr "oktalt värde utanför intervallet 0-255: \"\\%o\""
|
msgstr "oktalt värde utanför intervallet 0-255: \"\\%o\""
|
||||||
|
|
||||||
#: src/lex.c:233
|
#: src/lex.c:221
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "hexadecimal value above 255: `\\x%x'"
|
msgid "hexadecimal value above 255: `\\x%x'"
|
||||||
msgstr "hexadecimalt värde över 255: \"\\x%x\""
|
msgstr "hexadecimalt värde över 255: \"\\x%x\""
|
||||||
|
|
||||||
#: src/lex.c:245
|
#: src/lex.c:233
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown escape sequence: `\\' followed by `%s'"
|
msgid "unknown escape sequence: `\\' followed by `%s'"
|
||||||
msgstr "okänd specialsekvens: \"\\\" följt av \"%s\""
|
msgstr "okänd specialsekvens: \"\\\" följt av \"%s\""
|
||||||
|
|
||||||
#: src/lex.c:342
|
#: src/lex.c:264
|
||||||
msgid "unterminated type name at end of file"
|
msgid "unterminated type name at end of file"
|
||||||
msgstr "oavslutat typnamn vid filslut"
|
msgstr "oavslutat typnamn vid filslut"
|
||||||
|
|
||||||
#: src/lex.c:345
|
#: src/lex.c:267
|
||||||
msgid "unterminated type name"
|
msgid "unterminated type name"
|
||||||
msgstr "oavslutat typnamn"
|
msgstr "oavslutat typnamn"
|
||||||
|
|
||||||
#: src/lex.c:438
|
#: src/lex.c:359
|
||||||
msgid "use \"...\" for multi-character literal tokens"
|
msgid "use \"...\" for multi-character literal tokens"
|
||||||
msgstr "använd \"...\" för bokstavliga element med mer än ett tecken"
|
msgstr "använd \"...\" för bokstavliga element med mer än ett tecken"
|
||||||
|
|
||||||
#: src/lex.c:678
|
#: src/lex.c:571
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' supports no argument: %s"
|
msgid "`%s' supports no argument: %s"
|
||||||
msgstr "\"%s\" stödjer inga argument: %s"
|
msgstr "\"%s\" stödjer inga argument: %s"
|
||||||
|
|
||||||
#: src/lex.c:694
|
#: src/lex.c:588
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' requires an argument"
|
msgid "`%s' requires an argument"
|
||||||
msgstr "\"%s\" behöver ett argument"
|
msgstr "\"%s\" behöver ett argument"
|
||||||
|
|
||||||
#: src/output.c:951
|
#: src/output.c:804
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "maximum table size (%d) exceeded"
|
msgid "maximum table size (%d) exceeded"
|
||||||
msgstr "maximal tabellstorlek (%d) överskriden"
|
msgstr "maximal tabellstorlek (%d) överskriden"
|
||||||
|
|
||||||
#: src/print.c:39
|
#: src/print.c:44
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " type %d is %s\n"
|
msgid " type %d is %s\n"
|
||||||
msgstr " typ %d är %s\n"
|
msgstr " typ %d är %s\n"
|
||||||
|
|
||||||
#: src/print.c:88
|
#: src/print.c:106
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " (rule %d)"
|
msgid " (rule %d)"
|
||||||
msgstr " (regel %d)"
|
msgstr " (regel %d)"
|
||||||
|
|
||||||
#: src/print.c:108
|
|
||||||
msgid " $default\taccept\n"
|
|
||||||
msgstr " $standard\tacceptera\n"
|
|
||||||
|
|
||||||
#: src/print.c:110
|
|
||||||
msgid " NO ACTIONS\n"
|
|
||||||
msgstr " INGA ÅTGÄRDER\n"
|
|
||||||
|
|
||||||
#: src/print.c:124
|
|
||||||
#, c-format
|
|
||||||
msgid " $ \tgo to state %d\n"
|
|
||||||
msgstr " $ \tgå till tillstånd %d\n"
|
|
||||||
|
|
||||||
#: src/print.c:127
|
#: src/print.c:127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\tshift, and go to state %d\n"
|
msgid " %-4s\tshift, and go to state %d\n"
|
||||||
msgstr " %-4s\tskifta, och gå till tillstånd %d\n"
|
msgstr " %-4s\tskifta, och gå till tillstånd %d\n"
|
||||||
|
|
||||||
#: src/print.c:142
|
#: src/print.c:144
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\terror (nonassociative)\n"
|
msgid " %-4s\terror (nonassociative)\n"
|
||||||
msgstr " %-4s\tfel (ickeassociativ)\n"
|
msgstr " %-4s\tfel (ickeassociativ)\n"
|
||||||
|
|
||||||
#: src/print.c:169
|
#: src/print.c:168
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " %-4s\tgo to state %d\n"
|
msgid " %-4s\tgo to state %d\n"
|
||||||
msgstr " %-4s\tgå till tillstånd %d\n"
|
msgstr " %-4s\tgå till tillstånd %d\n"
|
||||||
|
|
||||||
#: src/print.c:180
|
#: src/print.c:192 src/print.c:228
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
" $default\treduce using rule %d (%s)\n"
|
||||||
|
"\n"
|
||||||
|
msgstr ""
|
||||||
|
" $standard\treducera med 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[reducera med regel %d (%s)]\n"
|
||||||
|
|
||||||
|
#: src/print.c:282 src/print.c:295
|
||||||
|
#, c-format
|
||||||
|
msgid " %-4s\treduce using rule %d (%s)\n"
|
||||||
|
msgstr " %-4s\treducera med regel %d (%s)\n"
|
||||||
|
|
||||||
|
#: src/print.c:311
|
||||||
|
#, c-format
|
||||||
|
msgid " $default\treduce using rule %d (%s)\n"
|
||||||
|
msgstr " $standard\treducera med regel %d (%s)\n"
|
||||||
|
|
||||||
|
#: src/print.c:327
|
||||||
|
msgid " $default\taccept\n"
|
||||||
|
msgstr " $standard\tacceptera\n"
|
||||||
|
|
||||||
|
#: src/print.c:329
|
||||||
|
msgid " NO ACTIONS\n"
|
||||||
|
msgstr " INGA ÅTGÄRDER\n"
|
||||||
|
|
||||||
|
#: src/print.c:342
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "state %d"
|
msgid "state %d"
|
||||||
msgstr "tillstånd %d"
|
msgstr "tillstånd %d"
|
||||||
|
|
||||||
#: src/print.c:211
|
#. rule # : LHS -> RHS
|
||||||
|
#: src/print.c:373
|
||||||
msgid "Grammar"
|
msgid "Grammar"
|
||||||
msgstr "Grammatik"
|
msgstr "Grammatik"
|
||||||
|
|
||||||
#: src/print.c:212
|
#: src/print.c:374
|
||||||
msgid "Number, Line, Rule"
|
msgid "Number, Line, Rule"
|
||||||
msgstr "Nummer, Rad, Regel"
|
msgstr ""
|
||||||
|
|
||||||
#: src/print.c:217
|
#: src/print.c:379
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid " %3d %3d %s ->"
|
msgid " %3d %3d %s ->"
|
||||||
msgstr " %3d %3d %s ->"
|
msgstr "regel %-4d %s ->"
|
||||||
|
|
||||||
#: src/print.c:224
|
#: src/print.c:386
|
||||||
msgid "empty"
|
msgid "empty"
|
||||||
msgstr "tom"
|
msgstr "tom"
|
||||||
|
|
||||||
#: src/print.c:231
|
#. TERMINAL (type #) : rule #s terminal is on RHS
|
||||||
|
#: src/print.c:393
|
||||||
msgid "Terminals, with rules where they appear"
|
msgid "Terminals, with rules where they appear"
|
||||||
msgstr "Terminaler, med regler där de förekommer"
|
msgstr "Terminaler, med regler där de förekommer"
|
||||||
|
|
||||||
#: src/print.c:256
|
#: src/print.c:416
|
||||||
msgid "Nonterminals, with rules where they appear"
|
msgid "Nonterminals, with rules where they appear"
|
||||||
msgstr "Icketerminaler, med regler där de förekommer"
|
msgstr "Icketerminaler, med regler där de förekommer"
|
||||||
|
|
||||||
#: src/print.c:282
|
#: src/print.c:442
|
||||||
msgid " on left:"
|
msgid " on left:"
|
||||||
msgstr " till vänster:"
|
msgstr " till vänster:"
|
||||||
|
|
||||||
#: src/print.c:297
|
#: src/print.c:457
|
||||||
msgid " on right:"
|
msgid " on right:"
|
||||||
msgstr " till höger:"
|
msgstr " till höger:"
|
||||||
|
|
||||||
#: src/print_graph.c:146
|
#: src/reader.c:100
|
||||||
#, c-format
|
|
||||||
msgid "%-4s\terror (nonassociative)"
|
|
||||||
msgstr "%-4s\tfel (ickeassociativ)"
|
|
||||||
|
|
||||||
#: src/print_graph.c:161
|
|
||||||
#, c-format
|
|
||||||
msgid "$default\treduce using rule %d (%s)"
|
|
||||||
msgstr "$standard\treducera med regel %d (%s)"
|
|
||||||
|
|
||||||
#: src/reader.c:89
|
|
||||||
msgid " Skipping to next \\n"
|
msgid " Skipping to next \\n"
|
||||||
msgstr " Hoppar över till nästa \\n"
|
msgstr " Hoppar över till nästa \\n"
|
||||||
|
|
||||||
#: src/reader.c:91
|
#: src/reader.c:102
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " Skipping to next %c"
|
msgid " Skipping to next %c"
|
||||||
msgstr " Hoppar över till nästa %c"
|
msgstr " Hoppar över till nästa %c"
|
||||||
|
|
||||||
#: src/reader.c:142 src/reader.c:154
|
#: src/reader.c:153 src/reader.c:165
|
||||||
msgid "invalid $ value"
|
msgid "invalid $ value"
|
||||||
msgstr "felaktigt $-värde"
|
msgstr "felaktigt $-värde"
|
||||||
|
|
||||||
#: src/reader.c:180 src/reader.c:195
|
#: src/reader.c:192 src/reader.c:207
|
||||||
msgid "unterminated string at end of file"
|
msgid "unterminated string at end of file"
|
||||||
msgstr "oavslutad sträng vid filslut"
|
msgstr "oavslutad sträng vid filslut"
|
||||||
|
|
||||||
#: src/reader.c:183
|
#: src/reader.c:195
|
||||||
msgid "unterminated string"
|
msgid "unterminated string"
|
||||||
msgstr "oavslutad sträng"
|
msgstr "oavslutad sträng"
|
||||||
|
|
||||||
#: src/reader.c:339
|
#: src/reader.c:337 src/reader.c:401
|
||||||
msgid "invalid @ value"
|
#, fuzzy, c-format
|
||||||
msgstr "felaktigt @-värde"
|
msgid "invalid value: %s%d"
|
||||||
|
msgstr "felaktigt $-värde"
|
||||||
|
|
||||||
#: src/reader.c:352 src/reader.c:416
|
#: src/reader.c:351 src/reader.c:423
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is invalid"
|
msgid "%s is invalid"
|
||||||
msgstr "%s är felaktigt"
|
msgstr "%s är felaktigt"
|
||||||
|
|
||||||
#: src/reader.c:392
|
#: src/reader.c:391
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "$$ of `%s' has no declared type"
|
msgid "$$ of `%s' has no declared type"
|
||||||
msgstr "$$ för \"%s\" har ingen deklarerad typ"
|
msgstr "$$ för \"%s\" har ingen deklarerad typ"
|
||||||
|
|
||||||
#: src/reader.c:409
|
#: src/reader.c:415
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "$%d of `%s' has no declared type"
|
msgid "$%d of `%s' has no declared type"
|
||||||
msgstr "$%d för \"%s\" har ingen deklarerad typ"
|
msgstr "$%d för \"%s\" har ingen deklarerad typ"
|
||||||
|
|
||||||
#: src/reader.c:463
|
#: src/reader.c:473
|
||||||
msgid "unterminated `%{' definition"
|
msgid "unterminated `%{' definition"
|
||||||
msgstr "oavslutad \"%{\"-definition"
|
msgstr "oavslutad \"%{\"-definition"
|
||||||
|
|
||||||
#: src/reader.c:508 src/reader.c:623 src/reader.c:673
|
#: src/reader.c:518 src/reader.c:636 src/reader.c:686 src/reader.c:933
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Premature EOF after %s"
|
msgid "Premature EOF after %s"
|
||||||
msgstr "Förtida filslut efter %s"
|
msgstr "Förtida filslut efter %s"
|
||||||
|
|
||||||
#: src/reader.c:525
|
#: src/reader.c:535
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol `%s' used more than once as a literal string"
|
msgid "symbol `%s' used more than once as a literal string"
|
||||||
msgstr "symbolen \"%s\" används mer än en gång som en bokstavlig sträng"
|
msgstr "symbolen \"%s\" används mer än en gång som en bokstavlig sträng"
|
||||||
|
|
||||||
#: src/reader.c:528
|
#: src/reader.c:538
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol `%s' given more than one literal string"
|
msgid "symbol `%s' given more than one literal string"
|
||||||
msgstr "symbolen \"%s\" har fått mer än en bokstavlig sträng"
|
msgstr "symbolen \"%s\" har fått mer än en bokstavlig sträng"
|
||||||
|
|
||||||
#: src/reader.c:549 src/reader.c:692
|
#: src/reader.c:559 src/reader.c:705
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol %s redefined"
|
msgid "symbol %s redefined"
|
||||||
msgstr "symbolen %s omdefinierad"
|
msgstr "symbolen %s omdefinierad"
|
||||||
|
|
||||||
#: src/reader.c:559 src/reader.c:638 src/reader.c:699 src/reader.c:1315
|
#: src/reader.c:569 src/reader.c:651 src/reader.c:712
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "type redeclaration for %s"
|
msgid "type redeclaration for %s"
|
||||||
msgstr "typen omdeklarerad för %s"
|
msgstr "typen omdeklarerad för %s"
|
||||||
|
|
||||||
#: src/reader.c:568
|
#: src/reader.c:581
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "`%s' is invalid in %s"
|
msgid "`%s' is invalid in %s"
|
||||||
msgstr "\"%s\" är felaktig i %s"
|
msgstr "\"%s\" är felaktig i %s"
|
||||||
|
|
||||||
#: src/reader.c:586 src/reader.c:752
|
#: src/reader.c:599 src/reader.c:758
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "multiple %s declarations"
|
msgid "multiple %s declarations"
|
||||||
msgstr "flera %s-deklarationer"
|
msgstr "flera %s-deklarationer"
|
||||||
|
|
||||||
#: src/reader.c:588 src/reader.c:931 src/reader.c:956 src/reader.c:1293
|
#: 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
|
#, c-format
|
||||||
msgid "invalid %s declaration"
|
msgid "invalid %s declaration"
|
||||||
msgstr "felaktig %s-deklaration"
|
msgstr "felaktig %s-deklaration"
|
||||||
|
|
||||||
#: src/reader.c:608
|
#: src/reader.c:621
|
||||||
msgid "%type declaration has no <typename>"
|
msgid "%type declaration has no <typename>"
|
||||||
msgstr "%type-deklaration har inget <typnamn>"
|
msgstr "%type-deklaration har inget <typnamn>"
|
||||||
|
|
||||||
#: src/reader.c:643
|
#: src/reader.c:656
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid %%type declaration due to item: %s"
|
msgid "invalid %%type declaration due to item: %s"
|
||||||
msgstr "felaktig %%type-deklaration på grund av objekt: %s"
|
msgstr "felaktig %%type-deklaration på grund av objekt: %s"
|
||||||
|
|
||||||
#: src/reader.c:688
|
#: src/reader.c:701
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "redefining precedence of %s"
|
msgid "redefining precedence of %s"
|
||||||
msgstr "omdefinition av precedens för %s"
|
msgstr "omdefinition av precedens för %s"
|
||||||
|
|
||||||
#: src/reader.c:711
|
#: src/reader.c:724
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid text (%s) - number should be after identifier"
|
msgid "invalid text (%s) - number should be after identifier"
|
||||||
msgstr "felaktig text (%s) - tal skulle följa efter identifierare"
|
msgstr "felaktig text (%s) - tal skulle följa efter identifierare"
|
||||||
|
|
||||||
#: src/reader.c:721
|
#: src/reader.c:734
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unexpected item: %s"
|
msgid "unexpected item: %s"
|
||||||
msgstr "oväntat objekt: %s"
|
msgstr "oväntat objekt: %s"
|
||||||
|
|
||||||
#: src/reader.c:795 src/reader.c:1127 src/reader.c:1204
|
#: src/reader.c:790 src/reader.c:1149
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unmatched %s"
|
msgid "unmatched %s"
|
||||||
msgstr "ensam %s"
|
msgstr "ensam %s"
|
||||||
|
|
||||||
#: src/reader.c:827
|
#: src/reader.c:819
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "argument of %%expect is not an integer"
|
msgid "argument of %%expect is not an integer"
|
||||||
msgstr "argument till %%expect är inte ett heltal"
|
msgstr "argument till %%expect är inte ett heltal"
|
||||||
|
|
||||||
#: src/reader.c:873
|
#: src/reader.c:865
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized item %s, expected an identifier"
|
msgid "unrecognized item %s, expected an identifier"
|
||||||
msgstr "oväntat objekt %s, förväntade en identifierare"
|
msgstr "oväntat objekt %s, förväntade en identifierare"
|
||||||
|
|
||||||
#: src/reader.c:895
|
#: src/reader.c:887
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "expected string constant instead of %s"
|
msgid "expected string constant instead of %s"
|
||||||
msgstr "förväntade strängkonstant istället för %s"
|
msgstr "förväntade strängkonstant istället för %s"
|
||||||
|
|
||||||
#: src/reader.c:1043
|
#: src/reader.c:1080
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unrecognized: %s"
|
msgid "unrecognized: %s"
|
||||||
msgstr "okänt: %s"
|
msgstr "okänt: %s"
|
||||||
|
|
||||||
#: src/reader.c:1048
|
#: src/reader.c:1085
|
||||||
msgid "no input grammar"
|
msgid "no input grammar"
|
||||||
msgstr "ingen ingrammatik"
|
msgstr "ingen ingrammatik"
|
||||||
|
|
||||||
#: src/reader.c:1053
|
#: src/reader.c:1090
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "unknown character: %s"
|
msgid "unknown character: %s"
|
||||||
msgstr "okänt tecken: %s"
|
msgstr "okänt tecken: %s"
|
||||||
|
|
||||||
#: src/reader.c:1227
|
#: src/reader.c:1265
|
||||||
#, c-format
|
|
||||||
msgid "unterminated %guard clause"
|
|
||||||
msgstr "oavlutad %guard-sats"
|
|
||||||
|
|
||||||
#: src/reader.c:1380
|
|
||||||
msgid "ill-formed rule: initial symbol not followed by colon"
|
msgid "ill-formed rule: initial symbol not followed by colon"
|
||||||
msgstr "felskriven regel: första symbolen följs inte av ett kolon"
|
msgstr "felskriven regel: första symbolen följs inte av ett kolon"
|
||||||
|
|
||||||
#: src/reader.c:1387
|
#: src/reader.c:1272
|
||||||
msgid "grammar starts with vertical bar"
|
msgid "grammar starts with vertical bar"
|
||||||
msgstr "grammatiken startar med ett vertikalt streck"
|
msgstr "grammatiken startar med ett vertikalt streck"
|
||||||
|
|
||||||
#: src/reader.c:1415
|
#: src/reader.c:1300
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "rule given for %s, which is a token"
|
msgid "rule given for %s, which is a token"
|
||||||
msgstr "regel given för %s, som är ett element"
|
msgstr "regel given för %s, som är ett element"
|
||||||
|
|
||||||
#: src/reader.c:1445 src/reader.c:1557
|
#: src/reader.c:1405
|
||||||
msgid "previous rule lacks an ending `;'"
|
|
||||||
msgstr "föregående regel saknar ett avslutande \";\""
|
|
||||||
|
|
||||||
#: src/reader.c:1518
|
|
||||||
msgid "two @prec's in a row"
|
msgid "two @prec's in a row"
|
||||||
msgstr "två @prec i rad"
|
msgstr "två @prec i rad"
|
||||||
|
|
||||||
#: src/reader.c:1526
|
#: src/reader.c:1414
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%%guard present but %%semantic_parser not specified"
|
msgid "%%guard present but %%semantic_parser not specified"
|
||||||
msgstr "%%guard finns men %%semantic_parser är inte angiven"
|
msgstr "%%guard finns men %%semantic_parser är inte angiven"
|
||||||
|
|
||||||
#: src/reader.c:1535
|
#: src/reader.c:1424
|
||||||
msgid "two actions at end of one rule"
|
msgid "two actions at end of one rule"
|
||||||
msgstr "två åtgärder vid slutet av en regel"
|
msgstr "två åtgärder vid slutet av en regel"
|
||||||
|
|
||||||
#: src/reader.c:1549
|
#: src/reader.c:1438
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "type clash (`%s' `%s') on default action"
|
msgid "type clash (`%s' `%s') on default action"
|
||||||
msgstr "typkonflikt (\"%s\" \"%s\") för standardåtgärd"
|
msgstr "typkonflikt (\"%s\" \"%s\") för standardåtgärd"
|
||||||
|
|
||||||
#: src/reader.c:1555
|
#: src/reader.c:1444
|
||||||
msgid "empty rule for typed nonterminal, and no action"
|
msgid "empty rule for typed nonterminal, and no action"
|
||||||
msgstr "tom regel för typad icketerminal, och ingen åtgärd"
|
msgstr "tom regel för typad icketerminal, och ingen åtgärd"
|
||||||
|
|
||||||
#: src/reader.c:1601
|
#: src/reader.c:1450
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "invalid input: %s"
|
msgid "invalid input: %s"
|
||||||
msgstr "felaktig indata: %s"
|
msgstr "felaktig indata: %s"
|
||||||
|
|
||||||
#: src/reader.c:1609
|
#: src/reader.c:1457
|
||||||
#, c-format
|
|
||||||
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
|
||||||
msgstr "för många symboler (element plus icketerminaler); max %d"
|
|
||||||
|
|
||||||
#: src/reader.c:1612
|
|
||||||
msgid "no rules in the input grammar"
|
msgid "no rules in the input grammar"
|
||||||
msgstr "inga regler i ingrammatiken"
|
msgstr "inga regler i ingrammatiken"
|
||||||
|
|
||||||
#: src/reader.c:1640
|
#: src/reader.c:1465
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
msgid "symbol %s is used, but is not defined as a token and has no rules"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"symbolen %s används, men är inte definierad som ett element och har inga "
|
"symbolen %s används, men är inte definierad som ett element och har inga "
|
||||||
"regler"
|
"regler"
|
||||||
|
|
||||||
#: src/reader.c:1775
|
#: src/reader.c:1487
|
||||||
|
#, c-format
|
||||||
|
msgid "too many symbols (tokens plus nonterminals); maximum %d"
|
||||||
|
msgstr "för många symboler (element plus icketerminaler); max %d"
|
||||||
|
|
||||||
|
#: src/reader.c:1551
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "tokens %s and %s both assigned number %d"
|
msgid "tokens %s and %s both assigned number %d"
|
||||||
msgstr "elementen %s och %s har båda fått nummer %d"
|
msgstr "elementen %s och %s har båda fått nummer %d"
|
||||||
|
|
||||||
#: src/reader.c:1828
|
#: src/reader.c:1601
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "conflicting precedences for %s and %s"
|
msgid "conflicting precedences for %s and %s"
|
||||||
msgstr "motstridiga precedenser mellan %s och %s"
|
msgstr "motstridiga precedenser mellan %s och %s"
|
||||||
|
|
||||||
#: src/reader.c:1840
|
#: src/reader.c:1613
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "conflicting assoc values for %s and %s"
|
msgid "conflicting assoc values for %s and %s"
|
||||||
msgstr "motstridiga assoc-värden mellan %s och %s"
|
msgstr "motstridiga assoc-värden mellan %s och %s"
|
||||||
|
|
||||||
#: src/reader.c:1879
|
#: src/reader.c:1650
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "the start symbol %s is undefined"
|
msgid "the start symbol %s is undefined"
|
||||||
msgstr "startsymbolen %s är odefinierad"
|
msgstr "startsymbolen %s är odefinierad"
|
||||||
|
|
||||||
#: src/reader.c:1881
|
#: src/reader.c:1652
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "the start symbol %s is a token"
|
msgid "the start symbol %s is a token"
|
||||||
msgstr "startsymbolen %s är ett element"
|
msgstr "startsymbolen %s är ett element"
|
||||||
|
|
||||||
#: src/reduce.c:409
|
#: src/reader.c:1672
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "too many items (max %d)"
|
||||||
|
msgstr "för många tillstånd (max %d)"
|
||||||
|
|
||||||
|
#: src/reduce.c:398
|
||||||
msgid "Useless nonterminals:"
|
msgid "Useless nonterminals:"
|
||||||
msgstr "Oanvändbara icketerminaler:"
|
msgstr "Oanvändbara icketerminaler:"
|
||||||
|
|
||||||
#: src/reduce.c:422
|
#: src/reduce.c:411
|
||||||
msgid "Terminals which are not used:"
|
msgid "Terminals which are not used:"
|
||||||
msgstr "Terminaler som inte används:"
|
msgstr "Terminaler som inte används:"
|
||||||
|
|
||||||
#: src/reduce.c:433
|
#: src/reduce.c:422
|
||||||
msgid "Useless rules:"
|
msgid "Useless rules:"
|
||||||
msgstr "Oanvändbara regler:"
|
msgstr "Oanvändbara regler:"
|
||||||
|
|
||||||
#: src/reduce.c:503
|
#: src/reduce.c:494
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d rule never reduced\n"
|
msgid "%d rule never reduced\n"
|
||||||
msgid_plural "%d rules never reduced\n"
|
msgid_plural "%d rules never reduced\n"
|
||||||
msgstr[0] "%d regel reduceras aldrig\n"
|
msgstr[0] "%d regler reduceras aldrig\n"
|
||||||
msgstr[1] "%d regler reduceras aldrig\n"
|
|
||||||
|
|
||||||
#: src/reduce.c:511
|
# Jag har anmält att det är fel att anta att "s" är en universell pluraländelse.
|
||||||
#, c-format
|
# Jag föreslog också att de använder ngettext istället.
|
||||||
|
# "Vad göras skall är redan gjort."
|
||||||
|
#: src/reduce.c:502
|
||||||
|
#, fuzzy, c-format
|
||||||
msgid "%d useless nonterminal"
|
msgid "%d useless nonterminal"
|
||||||
msgid_plural "%d useless nonterminals"
|
msgid_plural "%d useless nonterminals"
|
||||||
msgstr[0] "%d oanvändbar icketerminal"
|
msgstr[0] "%d oanvändbara icketerminaler%.0s"
|
||||||
msgstr[1] "%d oanvändbara icketerminaler"
|
|
||||||
|
|
||||||
#: src/reduce.c:517
|
#: src/reduce.c:508
|
||||||
msgid " and "
|
msgid " and "
|
||||||
msgstr " och "
|
msgstr " och "
|
||||||
|
|
||||||
#: src/reduce.c:520
|
#: src/reduce.c:511
|
||||||
#, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%d useless rule"
|
msgid "%d useless rule"
|
||||||
msgid_plural "%d useless rules"
|
msgid_plural "%d useless rules"
|
||||||
msgstr[0] "%d oanvändbar regel"
|
msgstr[0] "%d oanvändbara regler%.0s"
|
||||||
msgstr[1] "%d oanvändbara regler"
|
|
||||||
|
|
||||||
#: src/reduce.c:551
|
#: src/reduce.c:542
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Start symbol %s does not derive any sentence"
|
msgid "Start symbol %s does not derive any sentence"
|
||||||
msgstr "Startsymbolen %s genererar inga meningar"
|
msgstr "Startsymbolen %s genererar inga meningar"
|
||||||
@@ -690,16 +679,19 @@ msgstr "%s: flaggan \"%c%s\" tar inget argument\n"
|
|||||||
msgid "%s: option `%s' requires an argument\n"
|
msgid "%s: option `%s' requires an argument\n"
|
||||||
msgstr "%s: flaggan \"%s\" behöver ett argument\n"
|
msgstr "%s: flaggan \"%s\" behöver ett argument\n"
|
||||||
|
|
||||||
|
#. --option
|
||||||
#: lib/getopt.c:771
|
#: lib/getopt.c:771
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: unrecognized option `--%s'\n"
|
msgid "%s: unrecognized option `--%s'\n"
|
||||||
msgstr "%s: okänd flagga \"--%s\"\n"
|
msgstr "%s: okänd flagga \"--%s\"\n"
|
||||||
|
|
||||||
|
#. +option or -option
|
||||||
#: lib/getopt.c:775
|
#: lib/getopt.c:775
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: unrecognized option `%c%s'\n"
|
msgid "%s: unrecognized option `%c%s'\n"
|
||||||
msgstr "%s: okänd flagga \"%c%s\"\n"
|
msgstr "%s: okänd flagga \"%c%s\"\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
#: lib/getopt.c:801
|
#: lib/getopt.c:801
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: illegal option -- %c\n"
|
msgid "%s: illegal option -- %c\n"
|
||||||
@@ -710,6 +702,7 @@ msgstr "%s: otill
|
|||||||
msgid "%s: invalid option -- %c\n"
|
msgid "%s: invalid option -- %c\n"
|
||||||
msgstr "%s: ogiltig flagga --%c\n"
|
msgstr "%s: ogiltig flagga --%c\n"
|
||||||
|
|
||||||
|
#. 1003.2 specifies the format of this message.
|
||||||
#: lib/getopt.c:834 lib/getopt.c:964
|
#: lib/getopt.c:834 lib/getopt.c:964
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s: option requires an argument -- %c\n"
|
msgid "%s: option requires an argument -- %c\n"
|
||||||
@@ -725,6 +718,8 @@ msgstr "%s: flaggan \"-W %s\"
|
|||||||
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
msgid "%s: option `-W %s' doesn't allow an argument\n"
|
||||||
msgstr "%s: flaggan \"-W %s\" tar inget argument\n"
|
msgstr "%s: flaggan \"-W %s\" tar inget 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
|
#: lib/obstack.c:494 lib/obstack.c:497 lib/xmalloc.c:66
|
||||||
msgid "memory exhausted"
|
msgid "memory exhausted"
|
||||||
msgstr "minnet slut"
|
msgstr "minnet slut"
|
||||||
@@ -732,6 +727,20 @@ msgstr "minnet slut"
|
|||||||
# När vi går över till Unicode mer allmänt kanske vi bör översätta båda dessa
|
# När vi går över till Unicode mer allmänt kanske vi bör översätta båda dessa
|
||||||
# med U+201D (RIGHT DOUBLE QUOTATION MARK) på svenska. Eller?
|
# med U+201D (RIGHT DOUBLE QUOTATION MARK) på svenska. Eller?
|
||||||
#
|
#
|
||||||
|
#. 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
|
#: lib/quotearg.c:274
|
||||||
msgid "`"
|
msgid "`"
|
||||||
msgstr "\""
|
msgstr "\""
|
||||||
@@ -739,3 +748,63 @@ msgstr "\""
|
|||||||
#: lib/quotearg.c:275
|
#: lib/quotearg.c:275
|
||||||
msgid "'"
|
msgid "'"
|
||||||
msgstr "\""
|
msgstr "\""
|
||||||
|
|
||||||
|
#~ msgid "%-4s\terror (nonassociative)"
|
||||||
|
#~ msgstr "%-4s\tfel (ickeassociativ)"
|
||||||
|
|
||||||
|
#~ msgid "$default\treduce using rule %d (%s)"
|
||||||
|
#~ msgstr "$standard\treducera med regel %d (%s)"
|
||||||
|
|
||||||
|
#~ msgid "unterminated %guard clause"
|
||||||
|
#~ msgstr "oavlutad %guard-sats"
|
||||||
|
|
||||||
|
#~ msgid " $ \tgo to state %d\n"
|
||||||
|
#~ msgstr " $ \tgå till tillstånd %d\n"
|
||||||
|
|
||||||
|
#~ msgid "%s: internal error: %s\n"
|
||||||
|
#~ msgstr "%s: internt fel: %s\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Variables\n"
|
||||||
|
#~ "---------\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Variabler\n"
|
||||||
|
#~ "---------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid "Value Sprec Sassoc Tag\n"
|
||||||
|
#~ msgstr "Värde Sprec Sassoc Tagg\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Rules\n"
|
||||||
|
#~ "-----\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Regler\n"
|
||||||
|
#~ "------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Rules interpreted\n"
|
||||||
|
#~ "-----------------\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Tolkade regler\n"
|
||||||
|
#~ "--------------\n"
|
||||||
|
#~ "\n"
|
||||||
|
|
||||||
|
#~ msgid "DERIVES"
|
||||||
|
#~ msgstr "HÄRLEDER"
|
||||||
|
|
||||||
|
#~ msgid "%s derives"
|
||||||
|
#~ msgstr "%s härleder"
|
||||||
|
|
||||||
|
#~ msgid "Entering set_nullable"
|
||||||
|
#~ msgstr "Påbörjar set_nullable"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "reduced %s defines %d terminal%s, %d nonterminal%s, and %d production%s.\n"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "reducerad %s definierar %d terminaler%.0s, %d icketerminaler%.0s och %d "
|
||||||
|
#~ "produktioner%.0s.\n"
|
||||||
|
|||||||
@@ -3,3 +3,7 @@
|
|||||||
Makefile
|
Makefile
|
||||||
bison
|
bison
|
||||||
*.log
|
*.log
|
||||||
|
*.flc
|
||||||
|
Makefile.in
|
||||||
|
parse-skel.[ch] parse-skel.output
|
||||||
|
scan-skel.c
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
The entry point is generate_states. */
|
The entry point is generate_states. */
|
||||||
|
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
|
#include "symtab.h"
|
||||||
#include "getargs.h"
|
#include "getargs.h"
|
||||||
#include "reader.h"
|
#include "reader.h"
|
||||||
#include "gram.h"
|
#include "gram.h"
|
||||||
@@ -30,18 +31,22 @@
|
|||||||
#include "complain.h"
|
#include "complain.h"
|
||||||
#include "closure.h"
|
#include "closure.h"
|
||||||
#include "LR0.h"
|
#include "LR0.h"
|
||||||
|
#include "lalr.h"
|
||||||
#include "reduce.h"
|
#include "reduce.h"
|
||||||
|
|
||||||
int nstates;
|
int nstates;
|
||||||
int final_state;
|
/* Initialize the final state to -1, otherwise, it might be set to 0
|
||||||
core *first_state = NULL;
|
by default, and since we don't compute the reductions of the final
|
||||||
shifts *first_shift = NULL;
|
state, we end up not computing the reductions of the initial state,
|
||||||
reductions *first_reduction = NULL;
|
which is of course needed.
|
||||||
|
|
||||||
static core *this_state = NULL;
|
FINAL_STATE is properly set by new_state when it recognizes the
|
||||||
static core *last_state = NULL;
|
accessing symbol: EOF. */
|
||||||
static shifts *last_shift = NULL;
|
int final_state = -1;
|
||||||
static reductions *last_reduction = NULL;
|
static state_t *first_state = NULL;
|
||||||
|
|
||||||
|
static state_t *this_state = NULL;
|
||||||
|
static state_t *last_state = NULL;
|
||||||
|
|
||||||
static int nshifts;
|
static int nshifts;
|
||||||
static short *shift_symbol = NULL;
|
static short *shift_symbol = NULL;
|
||||||
@@ -55,8 +60,8 @@ static short *kernel_items = NULL;
|
|||||||
|
|
||||||
/* hash table for states, to recognize equivalent ones. */
|
/* hash table for states, to recognize equivalent ones. */
|
||||||
|
|
||||||
#define STATE_TABLE_SIZE 1009
|
#define STATE_HASH_SIZE 1009
|
||||||
static core **state_table = NULL;
|
static state_t **state_hash = NULL;
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -71,8 +76,8 @@ allocate_itemsets (void)
|
|||||||
int count = 0;
|
int count = 0;
|
||||||
short *symbol_count = XCALLOC (short, nsyms + nuseless_nonterminals);
|
short *symbol_count = XCALLOC (short, nsyms + nuseless_nonterminals);
|
||||||
|
|
||||||
for (i = 0; ritem[i]; ++i)
|
for (i = 0; i < nritems; ++i)
|
||||||
if (ritem[i] > 0)
|
if (ritem[i] >= 0)
|
||||||
{
|
{
|
||||||
count++;
|
count++;
|
||||||
symbol_count[ritem[i]]++;
|
symbol_count[ritem[i]]++;
|
||||||
@@ -107,7 +112,8 @@ allocate_storage (void)
|
|||||||
|
|
||||||
shiftset = XCALLOC (short, nsyms);
|
shiftset = XCALLOC (short, nsyms);
|
||||||
redset = XCALLOC (short, nrules + 1);
|
redset = XCALLOC (short, nrules + 1);
|
||||||
state_table = XCALLOC (core *, STATE_TABLE_SIZE);
|
state_hash = XCALLOC (state_t *, STATE_HASH_SIZE);
|
||||||
|
shift_symbol = XCALLOC (short, nsyms);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -120,7 +126,7 @@ free_storage (void)
|
|||||||
free (kernel_base);
|
free (kernel_base);
|
||||||
free (kernel_size);
|
free (kernel_size);
|
||||||
XFREE (kernel_items);
|
XFREE (kernel_items);
|
||||||
free (state_table);
|
free (state_hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -149,13 +155,12 @@ new_itemsets (void)
|
|||||||
for (i = 0; i < nsyms; i++)
|
for (i = 0; i < nsyms; i++)
|
||||||
kernel_size[i] = 0;
|
kernel_size[i] = 0;
|
||||||
|
|
||||||
shift_symbol = XCALLOC (short, nsyms);
|
|
||||||
nshifts = 0;
|
nshifts = 0;
|
||||||
|
|
||||||
for (i = 0; i < nitemset; ++i)
|
for (i = 0; i < nitemset; ++i)
|
||||||
{
|
{
|
||||||
int symbol = ritem[itemset[i]];
|
int symbol = ritem[itemset[i]];
|
||||||
if (symbol > 0)
|
if (symbol >= 0)
|
||||||
{
|
{
|
||||||
if (!kernel_size[symbol])
|
if (!kernel_size[symbol])
|
||||||
{
|
{
|
||||||
@@ -176,19 +181,19 @@ new_itemsets (void)
|
|||||||
| necessary. |
|
| necessary. |
|
||||||
`-----------------------------------------------------------------*/
|
`-----------------------------------------------------------------*/
|
||||||
|
|
||||||
static core *
|
static state_t *
|
||||||
new_state (int symbol)
|
new_state (int symbol)
|
||||||
{
|
{
|
||||||
core *p;
|
state_t *p;
|
||||||
|
|
||||||
if (trace_flag)
|
if (trace_flag)
|
||||||
fprintf (stderr, "Entering new_state, state = %d, symbol = %d (%s)\n",
|
fprintf (stderr, "Entering new_state, state = %d, symbol = %d (%s)\n",
|
||||||
this_state->number, symbol, tags[symbol]);
|
this_state->number, symbol, symbols[symbol]->tag);
|
||||||
|
|
||||||
if (nstates >= MAXSHORT)
|
if (nstates >= MAXSHORT)
|
||||||
fatal (_("too many states (max %d)"), MAXSHORT);
|
fatal (_("too many states (max %d)"), MAXSHORT);
|
||||||
|
|
||||||
p = CORE_ALLOC (kernel_size[symbol]);
|
p = STATE_ALLOC (kernel_size[symbol]);
|
||||||
p->accessing_symbol = symbol;
|
p->accessing_symbol = symbol;
|
||||||
p->number = nstates;
|
p->number = nstates;
|
||||||
p->nitems = kernel_size[symbol];
|
p->nitems = kernel_size[symbol];
|
||||||
@@ -199,6 +204,10 @@ new_state (int symbol)
|
|||||||
last_state = p;
|
last_state = p;
|
||||||
nstates++;
|
nstates++;
|
||||||
|
|
||||||
|
/* If this is the eoftoken, then this is the final state. */
|
||||||
|
if (symbol == 0)
|
||||||
|
final_state = p->number;
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,19 +223,19 @@ get_state (int symbol)
|
|||||||
{
|
{
|
||||||
int key;
|
int key;
|
||||||
int i;
|
int i;
|
||||||
core *sp;
|
state_t *sp;
|
||||||
|
|
||||||
if (trace_flag)
|
if (trace_flag)
|
||||||
fprintf (stderr, "Entering get_state, state = %d, symbol = %d (%s)\n",
|
fprintf (stderr, "Entering get_state, state = %d, symbol = %d (%s)\n",
|
||||||
this_state->number, symbol, tags[symbol]);
|
this_state->number, symbol, symbols[symbol]->tag);
|
||||||
|
|
||||||
/* Add up the target state's active item numbers to get a hash key.
|
/* Add up the target state's active item numbers to get a hash key.
|
||||||
*/
|
*/
|
||||||
key = 0;
|
key = 0;
|
||||||
for (i = 0; i < kernel_size[symbol]; ++i)
|
for (i = 0; i < kernel_size[symbol]; ++i)
|
||||||
key += kernel_base[symbol][i];
|
key += kernel_base[symbol][i];
|
||||||
key = key % STATE_TABLE_SIZE;
|
key = key % STATE_HASH_SIZE;
|
||||||
sp = state_table[key];
|
sp = state_hash[key];
|
||||||
|
|
||||||
if (sp)
|
if (sp)
|
||||||
{
|
{
|
||||||
@@ -257,7 +266,7 @@ get_state (int symbol)
|
|||||||
}
|
}
|
||||||
else /* bucket is empty */
|
else /* bucket is empty */
|
||||||
{
|
{
|
||||||
state_table[key] = sp = new_state (symbol);
|
state_hash[key] = sp = new_state (symbol);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trace_flag)
|
if (trace_flag)
|
||||||
@@ -306,7 +315,7 @@ append_states (void)
|
|||||||
static void
|
static void
|
||||||
new_states (void)
|
new_states (void)
|
||||||
{
|
{
|
||||||
first_state = last_state = this_state = CORE_ALLOC (0);
|
first_state = last_state = this_state = STATE_ALLOC (0);
|
||||||
nstates = 1;
|
nstates = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -319,208 +328,8 @@ static void
|
|||||||
save_shifts (void)
|
save_shifts (void)
|
||||||
{
|
{
|
||||||
shifts *p = shifts_new (nshifts);
|
shifts *p = shifts_new (nshifts);
|
||||||
|
|
||||||
p->number = this_state->number;
|
|
||||||
|
|
||||||
shortcpy (p->shifts, shiftset, nshifts);
|
shortcpy (p->shifts, shiftset, nshifts);
|
||||||
|
this_state->shifts = p;
|
||||||
if (last_shift)
|
|
||||||
last_shift->next = p;
|
|
||||||
else
|
|
||||||
first_shift = p;
|
|
||||||
last_shift = p;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------.
|
|
||||||
| Subroutine of augment_automaton. Create the next-to-final state, |
|
|
||||||
| to which a shift has already been made in the initial state. |
|
|
||||||
`------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
insert_start_shift (void)
|
|
||||||
{
|
|
||||||
core *statep;
|
|
||||||
shifts *sp;
|
|
||||||
|
|
||||||
statep = CORE_ALLOC (0);
|
|
||||||
statep->number = nstates;
|
|
||||||
statep->accessing_symbol = start_symbol;
|
|
||||||
|
|
||||||
last_state->next = statep;
|
|
||||||
last_state = statep;
|
|
||||||
|
|
||||||
/* Make a shift from this state to (what will be) the final state. */
|
|
||||||
sp = shifts_new (1);
|
|
||||||
sp->number = nstates++;
|
|
||||||
sp->shifts[0] = nstates;
|
|
||||||
|
|
||||||
last_shift->next = sp;
|
|
||||||
last_shift = sp;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------.
|
|
||||||
| Make sure that the initial state has a shift that accepts the |
|
|
||||||
| grammar's start symbol and goes to the next-to-final state, which |
|
|
||||||
| has a shift going to the final state, which has a shift to the |
|
|
||||||
| termination state. Create such states and shifts if they don't |
|
|
||||||
| happen to exist already. |
|
|
||||||
`------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
augment_automaton (void)
|
|
||||||
{
|
|
||||||
core *statep;
|
|
||||||
shifts *sp;
|
|
||||||
shifts *sp1 = NULL;
|
|
||||||
|
|
||||||
sp = first_shift;
|
|
||||||
|
|
||||||
if (!sp->nshifts)
|
|
||||||
{
|
|
||||||
/* There are no shifts for any state. Make one shift, from the
|
|
||||||
initial state to the next-to-final state. */
|
|
||||||
|
|
||||||
sp = shifts_new (1);
|
|
||||||
sp->shifts[0] = nstates;
|
|
||||||
|
|
||||||
/* Initialize the chain of shifts with sp. */
|
|
||||||
first_shift = sp;
|
|
||||||
last_shift = sp;
|
|
||||||
|
|
||||||
/* Create the next-to-final state, with shift to
|
|
||||||
what will be the final state. */
|
|
||||||
insert_start_shift ();
|
|
||||||
}
|
|
||||||
else if (sp->number == 0)
|
|
||||||
{
|
|
||||||
statep = first_state->next;
|
|
||||||
|
|
||||||
/* The states reached by shifts from FIRST_STATE are numbered
|
|
||||||
1..(SP->NSHIFTS). Look for one reached by START_SYMBOL. */
|
|
||||||
while (statep->accessing_symbol < start_symbol
|
|
||||||
&& statep->number < sp->nshifts)
|
|
||||||
statep = statep->next;
|
|
||||||
|
|
||||||
if (statep->accessing_symbol == start_symbol)
|
|
||||||
{
|
|
||||||
/* We already have a next-to-final state.
|
|
||||||
Make sure it has a shift to what will be the final state. */
|
|
||||||
while (sp && sp->number < statep->number)
|
|
||||||
{
|
|
||||||
sp1 = sp;
|
|
||||||
sp = sp->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sp && sp->number == statep->number)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
shifts *sp2 = shifts_new (sp->nshifts + 1);
|
|
||||||
sp2->number = statep->number;
|
|
||||||
sp2->shifts[0] = nstates;
|
|
||||||
for (i = sp->nshifts; i > 0; i--)
|
|
||||||
sp2->shifts[i] = sp->shifts[i - 1];
|
|
||||||
|
|
||||||
/* Patch sp2 into the chain of shifts in place of sp,
|
|
||||||
following sp1. */
|
|
||||||
sp2->next = sp->next;
|
|
||||||
sp1->next = sp2;
|
|
||||||
if (sp == last_shift)
|
|
||||||
last_shift = sp2;
|
|
||||||
XFREE (sp);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
shifts *sp2 = shifts_new (1);
|
|
||||||
sp2->number = statep->number;
|
|
||||||
sp2->shifts[0] = nstates;
|
|
||||||
|
|
||||||
/* Patch sp2 into the chain of shifts between sp1 and sp. */
|
|
||||||
sp2->next = sp;
|
|
||||||
sp1->next = sp2;
|
|
||||||
if (sp == 0)
|
|
||||||
last_shift = sp2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int i, k;
|
|
||||||
shifts *sp2;
|
|
||||||
|
|
||||||
/* There is no next-to-final state as yet. */
|
|
||||||
/* Add one more shift in first_shift,
|
|
||||||
going to the next-to-final state (yet to be made). */
|
|
||||||
sp = first_shift;
|
|
||||||
|
|
||||||
sp2 = shifts_new (sp->nshifts + 1);
|
|
||||||
|
|
||||||
/* Stick this shift into the vector at the proper place. */
|
|
||||||
statep = first_state->next;
|
|
||||||
for (k = 0, i = 0; i < sp->nshifts; k++, i++)
|
|
||||||
{
|
|
||||||
if (statep->accessing_symbol > start_symbol && i == k)
|
|
||||||
sp2->shifts[k++] = nstates;
|
|
||||||
sp2->shifts[k] = sp->shifts[i];
|
|
||||||
statep = statep->next;
|
|
||||||
}
|
|
||||||
if (i == k)
|
|
||||||
sp2->shifts[k++] = nstates;
|
|
||||||
|
|
||||||
/* Patch sp2 into the chain of shifts
|
|
||||||
in place of sp, at the beginning. */
|
|
||||||
sp2->next = sp->next;
|
|
||||||
first_shift = sp2;
|
|
||||||
if (last_shift == sp)
|
|
||||||
last_shift = sp2;
|
|
||||||
|
|
||||||
XFREE (sp);
|
|
||||||
|
|
||||||
/* Create the next-to-final state, with shift to
|
|
||||||
what will be the final state. */
|
|
||||||
insert_start_shift ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* The initial state didn't even have any shifts.
|
|
||||||
Give it one shift, to the next-to-final state. */
|
|
||||||
sp = shifts_new (1);
|
|
||||||
sp->shifts[0] = nstates;
|
|
||||||
|
|
||||||
/* Patch sp into the chain of shifts at the beginning. */
|
|
||||||
sp->next = first_shift;
|
|
||||||
first_shift = sp;
|
|
||||||
|
|
||||||
/* Create the next-to-final state, with shift to
|
|
||||||
what will be the final state. */
|
|
||||||
insert_start_shift ();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Make the final state--the one that follows a shift from the
|
|
||||||
next-to-final state.
|
|
||||||
The symbol for that shift is 0 (end-of-file). */
|
|
||||||
statep = CORE_ALLOC (0);
|
|
||||||
statep->number = nstates;
|
|
||||||
last_state->next = statep;
|
|
||||||
last_state = statep;
|
|
||||||
|
|
||||||
/* Make the shift from the final state to the termination state. */
|
|
||||||
sp = shifts_new (1);
|
|
||||||
sp->number = nstates++;
|
|
||||||
sp->shifts[0] = nstates;
|
|
||||||
last_shift->next = sp;
|
|
||||||
last_shift = sp;
|
|
||||||
|
|
||||||
/* Note that the variable `final_state' refers to what we sometimes call
|
|
||||||
the termination state. */
|
|
||||||
final_state = nstates;
|
|
||||||
|
|
||||||
/* Make the termination state. */
|
|
||||||
statep = CORE_ALLOC (0);
|
|
||||||
statep->number = nstates++;
|
|
||||||
last_state->next = statep;
|
|
||||||
last_state = statep;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -533,12 +342,15 @@ augment_automaton (void)
|
|||||||
static void
|
static void
|
||||||
save_reductions (void)
|
save_reductions (void)
|
||||||
{
|
{
|
||||||
int count;
|
int count = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* Find and count the active items that represent ends of rules. */
|
/* If this is the final state, we want it to have no reductions at
|
||||||
|
all, although it has one for `START_SYMBOL EOF .'. */
|
||||||
|
if (this_state->number == final_state)
|
||||||
|
return;
|
||||||
|
|
||||||
count = 0;
|
/* Find and count the active items that represent ends of rules. */
|
||||||
for (i = 0; i < nitemset; ++i)
|
for (i = 0; i < nitemset; ++i)
|
||||||
{
|
{
|
||||||
int item = ritem[itemset[i]];
|
int item = ritem[itemset[i]];
|
||||||
@@ -547,25 +359,37 @@ save_reductions (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Make a reductions structure and copy the data into it. */
|
/* Make a reductions structure and copy the data into it. */
|
||||||
|
this_state->reductions = reductions_new (count);
|
||||||
if (count)
|
shortcpy (this_state->reductions->rules, redset, count);
|
||||||
{
|
|
||||||
reductions *p = REDUCTIONS_ALLOC (count);
|
|
||||||
|
|
||||||
p->number = this_state->number;
|
|
||||||
p->nreds = count;
|
|
||||||
|
|
||||||
shortcpy (p->rules, redset, count);
|
|
||||||
|
|
||||||
if (last_reduction)
|
|
||||||
last_reduction->next = p;
|
|
||||||
else
|
|
||||||
first_reduction = p;
|
|
||||||
last_reduction = p;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------.
|
||||||
|
| Build STATES. |
|
||||||
|
`---------------*/
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_states (void)
|
||||||
|
{
|
||||||
|
state_t *sp;
|
||||||
|
states = XCALLOC (state_t *, nstates);
|
||||||
|
|
||||||
|
for (sp = first_state; sp; sp = sp->next)
|
||||||
|
{
|
||||||
|
/* Pessimization, but simplification of the code: make sure all
|
||||||
|
the states have a shifts, errs, and reductions, even if
|
||||||
|
reduced to 0. */
|
||||||
|
if (!sp->shifts)
|
||||||
|
sp->shifts = shifts_new (0);
|
||||||
|
if (!sp->errs)
|
||||||
|
sp->errs = errs_new (0);
|
||||||
|
if (!sp->reductions)
|
||||||
|
sp->reductions = reductions_new (0);
|
||||||
|
|
||||||
|
states[sp->number] = sp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*-------------------------------------------------------------------.
|
/*-------------------------------------------------------------------.
|
||||||
| Compute the nondeterministic finite state machine (see state.h for |
|
| Compute the nondeterministic finite state machine (see state.h for |
|
||||||
| details) from the grammar. |
|
| details) from the grammar. |
|
||||||
@@ -575,14 +399,15 @@ void
|
|||||||
generate_states (void)
|
generate_states (void)
|
||||||
{
|
{
|
||||||
allocate_storage ();
|
allocate_storage ();
|
||||||
new_closure (nitems);
|
new_closure (nritems);
|
||||||
new_states ();
|
new_states ();
|
||||||
|
|
||||||
while (this_state)
|
while (this_state)
|
||||||
{
|
{
|
||||||
if (trace_flag)
|
if (trace_flag)
|
||||||
fprintf (stderr, "Processing state %d (reached by %s)\n",
|
fprintf (stderr, "Processing state %d (reached by %s)\n",
|
||||||
this_state->number, tags[this_state->accessing_symbol]);
|
this_state->number,
|
||||||
|
symbols[this_state->accessing_symbol]->tag);
|
||||||
/* Set up ruleset and itemset for the transitions out of this
|
/* Set up ruleset and itemset for the transitions out of this
|
||||||
state. ruleset gets a 1 bit for each rule that could reduce
|
state. ruleset gets a 1 bit for each rule that could reduce
|
||||||
now. itemset gets a vector of all the items that could be
|
now. itemset gets a vector of all the items that could be
|
||||||
@@ -607,6 +432,6 @@ generate_states (void)
|
|||||||
free_closure ();
|
free_closure ();
|
||||||
free_storage ();
|
free_storage ();
|
||||||
|
|
||||||
/* set up initial and final states as parser wants them */
|
/* Set up STATES. */
|
||||||
augment_automaton ();
|
set_states ();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* Generate the nondeterministic finite state machine for bison,
|
/* Generate the nondeterministic finite state machine for bison,
|
||||||
Copyright 1984, 1986, 1989, 2000 Free Software Foundation, Inc.
|
Copyright 1984, 1986, 1989, 2000, 2001 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of Bison, the GNU Compiler Compiler.
|
This file is part of Bison, the GNU Compiler Compiler.
|
||||||
|
|
||||||
@@ -27,8 +27,5 @@ void generate_states PARAMS ((void));
|
|||||||
|
|
||||||
extern int nstates;
|
extern int nstates;
|
||||||
extern int final_state;
|
extern int final_state;
|
||||||
extern core *first_state;
|
|
||||||
extern shifts *first_shift;
|
|
||||||
extern reductions *first_reduction;
|
|
||||||
|
|
||||||
#endif /* !LR0_H_ */
|
#endif /* !LR0_H_ */
|
||||||
|
|||||||
+12
-7
@@ -1,4 +1,4 @@
|
|||||||
## Copyright 2001, 2002 Free Software Foundation, Inc.
|
## Copyright 2001 Free Software Foundation, Inc.
|
||||||
|
|
||||||
## This program is free software; you can redistribute it and/or modify
|
## 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
|
## it under the terms of the GNU General Public License as published by
|
||||||
@@ -23,6 +23,7 @@ DEFS = @DEFS@ \
|
|||||||
-DLOCALEDIR=\"$(datadir)/locale\"
|
-DLOCALEDIR=\"$(datadir)/locale\"
|
||||||
|
|
||||||
CFLAGS = @CFLAGS@ $(WARNING_CFLAGS) $(WERROR_CFLAGS)
|
CFLAGS = @CFLAGS@ $(WARNING_CFLAGS) $(WERROR_CFLAGS)
|
||||||
|
YFLAGS = "-dv"
|
||||||
|
|
||||||
# libintl.h in is build/intl, intl/libgettext.h in src/,
|
# libintl.h in is build/intl, intl/libgettext.h in src/,
|
||||||
# config.h in build/.
|
# config.h in build/.
|
||||||
@@ -40,16 +41,20 @@ bison_SOURCES = LR0.c closure.c complain.c conflicts.c \
|
|||||||
files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \
|
files.c getargs.c gram.c lalr.c lex.c main.c nullable.c \
|
||||||
output.h output.c \
|
output.h output.c \
|
||||||
state.h state.c \
|
state.h state.c \
|
||||||
print.c reader.c reduce.c symtab.c warshall.c vcg.c print_graph.c
|
print_graph.h print_graph.c \
|
||||||
|
muscle_tab.h muscle_tab.c \
|
||||||
|
options.h options.c \
|
||||||
|
print.c reader.c reduce.c symtab.c warshall.c vcg.c \
|
||||||
|
skeleton.h parse-skel.h parse-skel.y scan-skel.l
|
||||||
|
|
||||||
|
BUILT_SOURCES = parse-skel.c scan-skel.c
|
||||||
|
|
||||||
EXTRA_bison_SOURCES = vmsgetargs.c
|
EXTRA_bison_SOURCES = vmsgetargs.c
|
||||||
|
|
||||||
noinst_HEADERS = LR0.h closure.h complain.h conflicts.h \
|
noinst_HEADERS = LR0.h closure.h complain.h conflicts.h \
|
||||||
derives.h \
|
derives.h \
|
||||||
files.h getargs.h gram.h lalr.h lex.h nullable.h \
|
files.h getargs.h gram.h lalr.h lex.h nullable.h \
|
||||||
print.h reader.h reduce.h symtab.h warshall.h system.h types.h \
|
print.h reader.h reduce.h symtab.h warshall.h system.h \
|
||||||
vcg.h vcg_defaults.h print_graph.h
|
types.h vcg.h vcg_defaults.h
|
||||||
|
|
||||||
pkgdata_DATA = bison.simple bison.hairy
|
EXTRA_DIST = build.com bison.cld vmshlp.mar
|
||||||
|
|
||||||
EXTRA_DIST = $(pkgdata_DATA) build.com bison.cld vmshlp.mar
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user