Compare commits
717
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c49f7e585 | ||
|
|
7f5cd60976 | ||
|
|
ea6493d9b6 | ||
|
|
e1a5285cbf | ||
|
|
1cba28b65b | ||
|
|
1656033045 | ||
|
|
8ab4ea7364 | ||
|
|
e0e7091dc7 | ||
|
|
16ff9d0133 | ||
|
|
7535b35bf1 | ||
|
|
4581eccf1e | ||
|
|
9d9a039c31 | ||
|
|
74a89fd6ab | ||
|
|
00bfa85257 | ||
|
|
4c0345cc28 | ||
|
|
2bacaef4cf | ||
|
|
342104d61b | ||
|
|
4a42e91987 | ||
|
|
5cdd61549d | ||
|
|
87ff2861e6 | ||
|
|
a0c76652f7 | ||
|
|
3fe96958fa | ||
|
|
1677eff252 | ||
|
|
c947396cda | ||
|
|
1565a740db | ||
|
|
974bb68e10 | ||
|
|
7ea145a7e6 | ||
|
|
eac0901186 | ||
|
|
e864186c57 | ||
|
|
af75357b17 | ||
|
|
fceec5d95a | ||
|
|
5cccc82072 | ||
|
|
79da5dfa0f | ||
|
|
8100144eb4 | ||
|
|
b198864a75 | ||
|
|
ab783a0b99 | ||
|
|
50819bb82a | ||
|
|
1d128474a7 | ||
|
|
988d379eb0 | ||
|
|
916636cb96 | ||
|
|
d1ed12a1b0 | ||
|
|
e61f190ef6 | ||
|
|
379af7681d | ||
|
|
b4162d3653 | ||
|
|
470c8a201f | ||
|
|
7e6ad373b8 | ||
|
|
7b073fdda2 | ||
|
|
60c4453b6a | ||
|
|
dada40b50f | ||
|
|
c26cd7bc13 | ||
|
|
83aaf1b4ce | ||
|
|
cb2e0aacca | ||
|
|
5bd5b0213a | ||
|
|
0d5d2dd4af | ||
|
|
5772bb456e | ||
|
|
1e893215c5 | ||
|
|
90713678d8 | ||
|
|
455d913d34 | ||
|
|
aeb2cb5539 | ||
|
|
5fa412a3d9 | ||
|
|
46299d7dbc | ||
|
|
e6472493e2 | ||
|
|
e50f889082 | ||
|
|
a297d520ae | ||
|
|
5d93876e22 | ||
|
|
f5960fabba | ||
|
|
33bd31b74b | ||
|
|
7b022d451d | ||
|
|
d5c3fcfb3e | ||
|
|
b528c7efdc | ||
|
|
9f1c6960ce | ||
|
|
dd0fb2920b | ||
|
|
7b3f8db536 | ||
|
|
0d6d37f246 | ||
|
|
5a9a913893 | ||
|
|
75da1e1d8a | ||
|
|
df34448330 | ||
|
|
820199d2a9 | ||
|
|
6c37e76ca5 | ||
|
|
c1105abd8b | ||
|
|
e502c5d485 | ||
|
|
ce66818db5 | ||
|
|
8b0503e168 | ||
|
|
48a25d4966 | ||
|
|
866e31dafd | ||
|
|
30d15dfae9 | ||
|
|
be50e74b5c | ||
|
|
eaf12696af | ||
|
|
e2a64fa174 | ||
|
|
52e6bb3e84 | ||
|
|
b068bede45 | ||
|
|
ad9f2d493e | ||
|
|
654ab2012f | ||
|
|
a67532dd57 | ||
|
|
22b9ea63bd | ||
|
|
f0f53f6930 | ||
|
|
eacb312e5b | ||
|
|
709c1724ed | ||
|
|
df632cf2eb | ||
|
|
3603f03350 | ||
|
|
1a48798ca9 | ||
|
|
e3e0d791ea | ||
|
|
110899d69e | ||
|
|
fa6a0fc666 | ||
|
|
1991ad515f | ||
|
|
6c8b6c1c1f | ||
|
|
8a973b0efd | ||
|
|
43aed9f0c9 | ||
|
|
1b27cb2366 | ||
|
|
01850d3ba1 | ||
|
|
3854cd2c67 | ||
|
|
ab32ad65bb | ||
|
|
2056b2184d | ||
|
|
87686ff2fb | ||
|
|
9b68eb3634 | ||
|
|
aa782b6233 | ||
|
|
2995af0eeb | ||
|
|
db1dca76c1 | ||
|
|
191d7068c3 | ||
|
|
8aabc897cd | ||
|
|
ec140e6477 | ||
|
|
d056db08e6 | ||
|
|
b9414d653c | ||
|
|
9b27be4b2e | ||
|
|
2e6b59bb7a | ||
|
|
35cdc7cabe | ||
|
|
f2f38557ee | ||
|
|
eb6e30e9d5 | ||
|
|
22d0a5d192 | ||
|
|
a6499117d7 | ||
|
|
b9002f8f93 | ||
|
|
8b1d12f0cd | ||
|
|
2f449b4211 | ||
|
|
a53aec8e86 | ||
|
|
2b5ef23d70 | ||
|
|
3fe9c68941 | ||
|
|
076ee33fc4 | ||
|
|
48d47f6423 | ||
|
|
f4de7a57a7 | ||
|
|
4cc8835d3c | ||
|
|
95efae5469 | ||
|
|
8bf1889ca7 | ||
|
|
59c26779eb | ||
|
|
dc11ff3020 | ||
|
|
02237b18b2 | ||
|
|
cbdc123fde | ||
|
|
15948a9b14 | ||
|
|
9de953f78f | ||
|
|
29116efd20 | ||
|
|
aea2d30573 | ||
|
|
079b2d1c86 | ||
|
|
baaaa45b40 | ||
|
|
6ba9f483bf | ||
|
|
af8d41eb94 | ||
|
|
169612a929 | ||
|
|
d1dc1c0911 | ||
|
|
f854b71051 | ||
|
|
7af5fa13bb | ||
|
|
b244d82cf0 | ||
|
|
f5d2d88a6d | ||
|
|
baafce5c71 | ||
|
|
ffcdee1fa2 | ||
|
|
e8de043be2 | ||
|
|
9bfc5ce27d | ||
|
|
c050411566 | ||
|
|
18b3523680 | ||
|
|
4a4cd247ca | ||
|
|
5e71dbbf5d | ||
|
|
e7b758041c | ||
|
|
ac97741a0b | ||
|
|
307645b7b7 | ||
|
|
393b0b5733 | ||
|
|
68d658f60c | ||
|
|
7ec30d9fee | ||
|
|
eaf84e669d | ||
|
|
8301e241dc | ||
|
|
91b3016f9d | ||
|
|
8bec427f3e | ||
|
|
a5b4a2ee96 | ||
|
|
c92f5df6a1 | ||
|
|
683fa301a7 | ||
|
|
97b5bc730f | ||
|
|
efb179b87d | ||
|
|
f5017c14b0 | ||
|
|
ee9f33ac5d | ||
|
|
dddcaa7c97 | ||
|
|
cd6fdfdadf | ||
|
|
2ff19867ca | ||
|
|
cf6e72bb33 | ||
|
|
f7cc373669 | ||
|
|
cf0f126d13 | ||
|
|
2fb90cc835 | ||
|
|
1200a3da64 | ||
|
|
cd8e62a1b7 | ||
|
|
d9826a40d9 | ||
|
|
a110b3b67d | ||
|
|
8be9597d7d | ||
|
|
1726f1ca2d | ||
|
|
30b86fbc07 | ||
|
|
9ea7800162 | ||
|
|
2034298f3d | ||
|
|
5a1544256b | ||
|
|
16f19cd7ae | ||
|
|
c23d0161dc | ||
|
|
b642977f1c | ||
|
|
f735bad052 | ||
|
|
07440122ca | ||
|
|
bd08ddcf8f | ||
|
|
e858600158 | ||
|
|
1c439cfab2 | ||
|
|
ff0f995851 | ||
|
|
f07c52fdc5 | ||
|
|
9a4495add5 | ||
|
|
4615b6420c | ||
|
|
3290c37223 | ||
|
|
e6931c9f6c | ||
|
|
4724e14e38 | ||
|
|
3c9898eb13 | ||
|
|
978a4a3a63 | ||
|
|
0e32cd6ce3 | ||
|
|
c99e66b54d | ||
|
|
30d0e5f954 | ||
|
|
d658c1c167 | ||
|
|
dd60560bfd | ||
|
|
20779d47a7 | ||
|
|
65b508798f | ||
|
|
f7f447793a | ||
|
|
e740e500e2 | ||
|
|
35c1cf3426 | ||
|
|
10daafd5b4 | ||
|
|
efed8275c5 | ||
|
|
ee6ae49d67 | ||
|
|
18ece7e249 | ||
|
|
bcd8575897 | ||
|
|
e7611bea3c | ||
|
|
8d0162b80a | ||
|
|
68711fc4a7 | ||
|
|
a4dd4772d2 | ||
|
|
7bd654ca0c | ||
|
|
da0cd947c3 | ||
|
|
aac8fe8896 | ||
|
|
721622ea6e | ||
|
|
dad680611b | ||
|
|
526be1f459 | ||
|
|
f8225f259e | ||
|
|
cecae8b6aa | ||
|
|
956ac03b7d | ||
|
|
1094c2a137 | ||
|
|
3158c7f072 | ||
|
|
0d1959c595 | ||
|
|
76affdf894 | ||
|
|
3612bc281e | ||
|
|
62a13a3a3d | ||
|
|
1e9c36271e | ||
|
|
723fd2c3b4 | ||
|
|
700f9d3b6a | ||
|
|
8da857acc6 | ||
|
|
102c7a0149 | ||
|
|
de76933658 | ||
|
|
34771445d5 | ||
|
|
fd8748a311 | ||
|
|
716cb63ff2 | ||
|
|
96e004a296 | ||
|
|
64cf032806 | ||
|
|
fafc0ef10c | ||
|
|
83d8bd5fb9 | ||
|
|
aea91d7e4b | ||
|
|
e5386ba368 | ||
|
|
6c1b4a95f9 | ||
|
|
ea32296019 | ||
|
|
0fc45ce97c | ||
|
|
7e77d8f475 | ||
|
|
c5d0e408e2 | ||
|
|
9dbc704ad4 | ||
|
|
99e6b1c89a | ||
|
|
5c6661bb2e | ||
|
|
7877454e42 | ||
|
|
8c2d23d9a8 | ||
|
|
981867ff15 | ||
|
|
31c3f7703d | ||
|
|
abe2c1fe70 | ||
|
|
a9e86a3299 | ||
|
|
4b952cbf80 | ||
|
|
34b84d5823 | ||
|
|
103634e4ca | ||
|
|
42a39df0f5 | ||
|
|
c842b49f83 | ||
|
|
8521281aef | ||
|
|
219db78e6a | ||
|
|
efeb6ef019 | ||
|
|
31b751703f | ||
|
|
d7cb3bf631 | ||
|
|
5cb26ac3f9 | ||
|
|
c9ade3f92b | ||
|
|
ca94d99782 | ||
|
|
d45bd0692e | ||
|
|
2eb82096a4 | ||
|
|
d694cb8d3f | ||
|
|
9cfe5b9b09 | ||
|
|
0f2a58a818 | ||
|
|
b101188a76 | ||
|
|
d5574c7387 | ||
|
|
feeba9873f | ||
|
|
9a501a4238 | ||
|
|
e7b3a67adf | ||
|
|
01f4aaddd9 | ||
|
|
e6fa974cd7 | ||
|
|
30788806b9 | ||
|
|
6711981a2d | ||
|
|
abe63d33d1 | ||
|
|
feac8a6abf | ||
|
|
2ab6a3baf7 | ||
|
|
90bf7c7bcb | ||
|
|
f858b63e23 | ||
|
|
5f41ac5a99 | ||
|
|
cd01f7ff4e | ||
|
|
cdb639cd7b | ||
|
|
ef4f78f43b | ||
|
|
c0ca7faab9 | ||
|
|
e58cdd1de0 | ||
|
|
673f2caf34 | ||
|
|
2cce209b58 | ||
|
|
bb9f458eb1 | ||
|
|
f754c608ff | ||
|
|
f1bfe65b3d | ||
|
|
a05e39ae47 | ||
|
|
f0161f217e | ||
|
|
04c5b7c920 | ||
|
|
a631f5da8d | ||
|
|
8b1fbf674f | ||
|
|
d3de49f842 | ||
|
|
1d27d6343e | ||
|
|
9be1980ef2 | ||
|
|
8900923e91 | ||
|
|
98018e3f58 | ||
|
|
21121feec9 | ||
|
|
4c7e3a5a67 | ||
|
|
a752d7c1c2 | ||
|
|
60b578fdaa | ||
|
|
b33fd4c43a | ||
|
|
3971b6146a | ||
|
|
67b3e44872 | ||
|
|
6a6e69af76 | ||
|
|
dcd8e8b401 | ||
|
|
e1f6b4a263 | ||
|
|
5574881ff4 | ||
|
|
ec4f23d5d2 | ||
|
|
1985bb3c7a | ||
|
|
4081efa083 | ||
|
|
d5023f5a48 | ||
|
|
e104f5589c | ||
|
|
6aa652b089 | ||
|
|
e63c0bb6b6 | ||
|
|
c42de062bb | ||
|
|
065c9fbe22 | ||
|
|
ff7bc8af46 | ||
|
|
c0508df61d | ||
|
|
e7d45afc6a | ||
|
|
c984ab0fd0 | ||
|
|
aa775c8711 | ||
|
|
23882383d4 | ||
|
|
08e1b25b0e | ||
|
|
87472f5aa7 | ||
|
|
12d2f86080 | ||
|
|
ea1faa2d09 | ||
|
|
11b7512664 | ||
|
|
3c0f34cf12 | ||
|
|
661d603b65 | ||
|
|
a17d79e9c7 | ||
|
|
0db9f8903a | ||
|
|
37a6184dab | ||
|
|
24fd055133 | ||
|
|
1d62d3eb24 | ||
|
|
4b5111d977 | ||
|
|
f2943389fd | ||
|
|
71d3525ad2 | ||
|
|
dd1afa37e1 | ||
|
|
b84ad149c9 | ||
|
|
08e19c55ca | ||
|
|
e199cb6bdf | ||
|
|
7e06407175 | ||
|
|
931d29bdea | ||
|
|
b115f389b2 | ||
|
|
a657f0c6f5 | ||
|
|
fb731ac022 | ||
|
|
d64a5263cf | ||
|
|
24e73c4446 | ||
|
|
aa50a492fc | ||
|
|
c1ed5df2f6 | ||
|
|
535524ea6b | ||
|
|
3f2b9a4d63 | ||
|
|
7af066b952 | ||
|
|
e784a805ef | ||
|
|
0f370436e1 | ||
|
|
19cffb0ff0 | ||
|
|
36c2c0a2e8 | ||
|
|
faa877a843 | ||
|
|
8a044dbe6d | ||
|
|
ef32155253 | ||
|
|
ea4b0a129e | ||
|
|
6bebb264a9 | ||
|
|
c55bf919cc | ||
|
|
8bd14f1387 | ||
|
|
90c62441b3 | ||
|
|
9e00f250f6 | ||
|
|
b4735d6925 | ||
|
|
71b9c0cedc | ||
|
|
2c0152a0c3 | ||
|
|
1f3db3aeb3 | ||
|
|
db4f5e0fe5 | ||
|
|
2ae437ad54 | ||
|
|
2b290d8ebd | ||
|
|
3a70bac04a | ||
|
|
2c7e34bb95 | ||
|
|
596a221844 | ||
|
|
0be3198908 | ||
|
|
5cadd124f8 | ||
|
|
7284970311 | ||
|
|
2c3f463909 | ||
|
|
af72e9e222 | ||
|
|
385766c5cf | ||
|
|
5dfc45ef5a | ||
|
|
ab49343b08 | ||
|
|
0cfad78b32 | ||
|
|
31cdc1f095 | ||
|
|
3d843a0f8d | ||
|
|
7889866f58 | ||
|
|
e5c7ad3aec | ||
|
|
a1634aa8d3 | ||
|
|
d564d45477 | ||
|
|
ba530cd52f | ||
|
|
b1c2957b3f | ||
|
|
8b746fa025 | ||
|
|
2f21edac99 | ||
|
|
2592576239 | ||
|
|
9131b8426a | ||
|
|
88b8e2a9d5 | ||
|
|
47d6a45345 | ||
|
|
d4ab90f185 | ||
|
|
09697fb269 | ||
|
|
c2ceb3e129 | ||
|
|
5b30b23fe9 | ||
|
|
3211921c23 | ||
|
|
4efcf28ee6 | ||
|
|
634ef8a945 | ||
|
|
0a9687d138 | ||
|
|
89f10ee36f | ||
|
|
d1b195b671 | ||
|
|
dbb4e94dc7 | ||
|
|
c7a545ae09 | ||
|
|
122e58965a | ||
|
|
2e820b6015 | ||
|
|
44f10b366f | ||
|
|
a7adbf20a9 | ||
|
|
dae5c22f87 | ||
|
|
dec3a380e5 | ||
|
|
e2d569053a | ||
|
|
3c0ccc4520 | ||
|
|
546851ba35 | ||
|
|
a2fccbe579 | ||
|
|
e8cb34ed48 | ||
|
|
afc687f586 | ||
|
|
9c54eb6e30 | ||
|
|
7e4d538724 | ||
|
|
0a89eef5dc | ||
|
|
b61b0fe906 | ||
|
|
078b46c69d | ||
|
|
726c8dab23 | ||
|
|
6bf98d9aea | ||
|
|
1a9468797d | ||
|
|
43a5bebd7d | ||
|
|
fb175a49c3 | ||
|
|
f01ab4fe02 | ||
|
|
7ca76038df | ||
|
|
f5d87f1a26 | ||
|
|
6f47a5232c | ||
|
|
d0d0573900 | ||
|
|
da071cfb7a | ||
|
|
dd7c6d4a0f | ||
|
|
bcf7a07369 | ||
|
|
8c8691c3fd | ||
|
|
bb92951c02 | ||
|
|
8db5267af4 | ||
|
|
de0c5e91df | ||
|
|
84a9a4b9fc | ||
|
|
e666829949 | ||
|
|
7f263e3520 | ||
|
|
a58086a269 | ||
|
|
581ef6d17f | ||
|
|
adddfba7ab | ||
|
|
6964073c59 | ||
|
|
935478c3fe | ||
|
|
a33e6fd5b4 | ||
|
|
8d4aa5ccaf | ||
|
|
7975c43384 | ||
|
|
6bea32e937 | ||
|
|
223f297825 | ||
|
|
44fa758931 | ||
|
|
713f5a0cb4 | ||
|
|
11c445cde9 | ||
|
|
99612781d9 | ||
|
|
5d71e9ffb9 | ||
|
|
347652c32b | ||
|
|
d374b87e68 | ||
|
|
c8ad3d682f | ||
|
|
0af671a275 | ||
|
|
14846e5e1a | ||
|
|
e1038db19a | ||
|
|
75f4305eed | ||
|
|
c503eaf061 | ||
|
|
92311a56b3 | ||
|
|
2bf2ad6d68 | ||
|
|
023cd4f754 | ||
|
|
31cc18ebd0 | ||
|
|
35d2fdfad1 | ||
|
|
2ecf674239 | ||
|
|
b02489f588 | ||
|
|
802cd0a6ed | ||
|
|
4bffa41e4e | ||
|
|
7dcb10c048 | ||
|
|
9a4ae5d619 | ||
|
|
2ad733a56e | ||
|
|
507f96a5ff | ||
|
|
17bf278ad7 | ||
|
|
9d3ddf572e | ||
|
|
735ffb6a65 | ||
|
|
ee87e5df00 | ||
|
|
749a8c80f7 | ||
|
|
fb91984b3b | ||
|
|
e50d903620 | ||
|
|
7528bc0aee | ||
|
|
b22b8fdb97 | ||
|
|
925549475e | ||
|
|
7878f90988 | ||
|
|
1b7a7165f3 | ||
|
|
98fd512f9a | ||
|
|
0cc66ab7fd | ||
|
|
0afeed389c | ||
|
|
2061043d3d | ||
|
|
84ca965d1f | ||
|
|
9f2343bf65 | ||
|
|
ad46bcf9cd | ||
|
|
e15146bbaa | ||
|
|
4db9c203f6 | ||
|
|
7cfb440c7c | ||
|
|
39cff7e239 | ||
|
|
07a1d30ba3 | ||
|
|
8d09d89c33 | ||
|
|
f57cb42c7d | ||
|
|
f1ce47684c | ||
|
|
babe9a1e8e | ||
|
|
c5d903dcda | ||
|
|
fab3f206e4 | ||
|
|
42325b8b39 | ||
|
|
e873499f32 | ||
|
|
0292299ec5 | ||
|
|
ed59d3e066 | ||
|
|
c2429b5a4a | ||
|
|
70b804fb02 | ||
|
|
676a62ec1e | ||
|
|
d112fbaf53 | ||
|
|
2da698f147 | ||
|
|
08fd44f453 | ||
|
|
f4be44b2b2 | ||
|
|
8756116ccb | ||
|
|
1da19feba7 | ||
|
|
197b523555 | ||
|
|
dc55016677 | ||
|
|
8c098febc9 | ||
|
|
cf4121fa97 | ||
|
|
3946924ed5 | ||
|
|
986bb5e294 | ||
|
|
33dd868353 | ||
|
|
3614d4c834 | ||
|
|
04c31bf09f | ||
|
|
48152721a0 | ||
|
|
bdc999cbc1 | ||
|
|
fb60d5a04e | ||
|
|
3d640d049d | ||
|
|
de3fb712c2 | ||
|
|
9160ceb67f | ||
|
|
00bc43fa04 | ||
|
|
c7b3db7957 | ||
|
|
598ba7fd4c | ||
|
|
e8e83d2dbe | ||
|
|
c2940d142b | ||
|
|
fe89a09e29 | ||
|
|
1d5b34b52a | ||
|
|
609af5775f | ||
|
|
455205b2e0 | ||
|
|
265e8e5c90 | ||
|
|
f951c3f8cc | ||
|
|
22d123c1fe | ||
|
|
d2c0374297 | ||
|
|
0f276adbb2 | ||
|
|
967819769e | ||
|
|
b7b9789469 | ||
|
|
2532a957a6 | ||
|
|
0f4684dd2a | ||
|
|
cc7d14899c | ||
|
|
860d7cfe15 | ||
|
|
ad994f507e | ||
|
|
4d6fb2187b | ||
|
|
519783bb98 | ||
|
|
318396d05a | ||
|
|
804efe8c42 | ||
|
|
80484ea267 | ||
|
|
aade6607e2 | ||
|
|
fd722d7030 | ||
|
|
bffbf1fa28 | ||
|
|
48fa65020f | ||
|
|
e66a12bbff | ||
|
|
3a132d28d9 | ||
|
|
71530afc7e | ||
|
|
9132612c2c | ||
|
|
f691a6345d | ||
|
|
458180116d | ||
|
|
aa4eac68e7 | ||
|
|
782ee061ec | ||
|
|
0e2b8c0f95 | ||
|
|
09fd5851bc | ||
|
|
a5cbe929ac | ||
|
|
7a7c3dfe1b | ||
|
|
de03dfb8fa | ||
|
|
a51bd6c301 | ||
|
|
4a8eccf830 | ||
|
|
d2a67ba6b7 | ||
|
|
dcf0226b06 | ||
|
|
647a92b9f4 | ||
|
|
64f2774378 | ||
|
|
1cc6c871f9 | ||
|
|
a7ff1b23a9 | ||
|
|
4936786fc5 | ||
|
|
24a1589f86 | ||
|
|
c351f39a2f | ||
|
|
3d1175b232 | ||
|
|
11ea8d73fc | ||
|
|
958ccda44e | ||
|
|
3efb40df0e | ||
|
|
5b856d1fa3 | ||
|
|
5d22149d43 | ||
|
|
145968f5e2 | ||
|
|
0e00f445a9 | ||
|
|
6fa7ed0446 | ||
|
|
64874cd464 | ||
|
|
5f6b7645e6 | ||
|
|
ed855892c7 | ||
|
|
aebf37aa12 | ||
|
|
c1c3b82b79 | ||
|
|
c918627e08 | ||
|
|
559d79d0f5 | ||
|
|
56f558ffef | ||
|
|
43f8adbe60 | ||
|
|
bfdef978fc | ||
|
|
4082a04921 | ||
|
|
ff622ae961 | ||
|
|
9acbb870c1 | ||
|
|
e05e093047 | ||
|
|
77e54b25ee | ||
|
|
13b5b214f5 | ||
|
|
c34590c4bf | ||
|
|
f863c9490e | ||
|
|
3a4af3424c | ||
|
|
965c9fa979 | ||
|
|
6f9cbd4af1 | ||
|
|
e5e5fb59c9 | ||
|
|
07d89829cc | ||
|
|
1e13e9656b | ||
|
|
d4e8f383e8 | ||
|
|
8205442c7c | ||
|
|
3d08a01292 | ||
|
|
0dfcb6228f | ||
|
|
d41be27501 | ||
|
|
7969134687 | ||
|
|
d95947343e | ||
|
|
1cc5d87032 | ||
|
|
c53d722b0b | ||
|
|
c03bef5411 | ||
|
|
53e3088d75 | ||
|
|
e0877888da | ||
|
|
3a1d84cfc0 | ||
|
|
a562291415 | ||
|
|
35a307f959 | ||
|
|
004399be12 | ||
|
|
4cea6bfe54 | ||
|
|
7ddfe81aa8 | ||
|
|
9e24fe5ea9 | ||
|
|
399e94f904 | ||
|
|
9ba6e5283e | ||
|
|
f1d53eb001 | ||
|
|
9e1ec519f4 | ||
|
|
a97cf48486 | ||
|
|
45db9033fe | ||
|
|
3bc38e963e | ||
|
|
0f7b9136ed | ||
|
|
09eae589d3 | ||
|
|
83d5d1695a | ||
|
|
d34b6160af | ||
|
|
5263986825 | ||
|
|
54201ab377 | ||
|
|
0be145eea8 | ||
|
|
4864c4f23a | ||
|
|
83006c65f8 | ||
|
|
b54685ff22 | ||
|
|
589bb43094 | ||
|
|
b382a56bf3 | ||
|
|
461f987f09 | ||
|
|
a6ceb756d9 | ||
|
|
cf6cb4dce7 | ||
|
|
1f4c0e67fe | ||
|
|
336a1deaa5 | ||
|
|
5acd407ed4 | ||
|
|
b4b8b7ed81 | ||
|
|
5f23fc0033 | ||
|
|
4f2ae90b28 | ||
|
|
b6fa146a0f | ||
|
|
341bfbd389 |
@@ -0,0 +1,29 @@
|
||||
name: Build and Test
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
tags-ignore:
|
||||
- 'v*'
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: apt
|
||||
run: sudo apt-get install gcc autoconf bison gettext autopoint help2man lzip texinfo texlive
|
||||
- name: autogen
|
||||
run: ./autogen.sh
|
||||
- name: configure
|
||||
run: ./configure
|
||||
- name: make
|
||||
run: make
|
||||
- name: make check
|
||||
run: make check
|
||||
- name: make distcheck
|
||||
run: make distcheck
|
||||
@@ -0,0 +1,79 @@
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ master ]
|
||||
schedule:
|
||||
- cron: '31 22 * * 4'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'cpp' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||
# Learn more:
|
||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||
|
||||
steps:
|
||||
- name: Apt
|
||||
run: sudo apt-get install gcc autoconf bison gettext autopoint help2man lzip texinfo texlive
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild expects to start by running configure.
|
||||
# Run autogen.sh to ensure configure exists.
|
||||
- name: Autogen
|
||||
run: |
|
||||
./autogen.sh
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following four lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
#- name: Build
|
||||
# run: |
|
||||
# ./configure
|
||||
# make
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
+6
-5
@@ -1,23 +1,24 @@
|
||||
*.orig
|
||||
*.rej
|
||||
*.tar.bz2
|
||||
*.sig
|
||||
*.tar.gz
|
||||
*.tar.xz
|
||||
*.tar.lz
|
||||
*~
|
||||
.deps
|
||||
.libs
|
||||
ABOUT-NLS
|
||||
ChangeLog
|
||||
INSTALL
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
autoscan.log
|
||||
build-aux/
|
||||
config.log
|
||||
config.status
|
||||
configure
|
||||
configure.scan
|
||||
flex-*/
|
||||
libtool
|
||||
stamp-*
|
||||
m4/
|
||||
build-aux/
|
||||
stamp-*
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
Aaron Stone <sodabrew@users.sourceforge.net>
|
||||
Akim Demaille <akim@lrde.epita.fr>
|
||||
Alastair Hughes <hobbitalastair@gmail.com>
|
||||
Alex Kennedy <alexzanderkennedy@gmail.com>
|
||||
Alexis La Goutte <alexis.lagoutte@gmail.com>
|
||||
Bastian Köcher <git@kchr.de>
|
||||
Christoph Junghans <ottxor@gentoo.org>
|
||||
Christos Zoulas <christos@zoulas.com>
|
||||
Cyril Brulebois <kibi@debian.org>
|
||||
Demi Obenour <demiobenour@gmail.com>
|
||||
Dennis Clarke <dclarke@blastwave.org>
|
||||
Egor Pugin <egor.pugin@gmail.com>
|
||||
Elias Pipping <pipping@users.sourceforge.net>
|
||||
Explorer09 <explorer09@gmail.com>
|
||||
Hans-Bernhard Broeker <HBBroeker@T-Online.de>
|
||||
Harald van Dijk <harald@gigawatt.nl>
|
||||
Hugh Sasse <hgs@dmu.ac.uk>
|
||||
Jaska Uimonen <jaska.uimonen@helsinki.fi>
|
||||
Jeff Smith <whydoubt@gmail.com>
|
||||
John Millaway <john43@users.sourceforge.net>
|
||||
Manoj Srivastava <srivasta@golden-gryphon.com>
|
||||
Mariusz Pluciński <mplucinski@mplucinski.com>
|
||||
Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com>
|
||||
Michael McConville <mmcconville@mykolab.com> <mmcco@mykolab.com>
|
||||
Michael Reed <m.reed@mykolab.com>
|
||||
Michael van Elst <mlelstv@NetBSD.org>
|
||||
Mightyjo <mightyjo@gmail.com>
|
||||
Mike Frysinger <vapier@gentoo.org>
|
||||
OBATA Akio <obache@NetBSD.org>
|
||||
Robert Larice <Robert.Larice@t-online.de> rlar <rlar>
|
||||
Robert Larice <Robert.Larice@t-online.de> Robert.Larice Robert Larice <Robert.Larice@t-online.de>
|
||||
Robert Minsk <rminsk@users.sourceforge.net>
|
||||
Samuel Thibault <samuel.thibault@ens-lyon.org>
|
||||
Sean McBride <sean@rogue-research.com>
|
||||
Serguey Parkhomovsky <sergueyparkhomovsky@gmail.com> <xindigo@gmail.com>
|
||||
Simon Sobisch <simonsobisch@web.de>
|
||||
Stefan Reinauer <stefan.reinauer@coreboot.org>
|
||||
Thomas Klausner <wiz@NetBSD.org>
|
||||
Till Varoquaux <till.varoquaux@gmail.com>
|
||||
Tobias Klauser <tklauser@distanz.ch>
|
||||
Todd C. Miller <Todd.Miller@courtesan.com>
|
||||
Translation Project <coordinator@translationproject.org> <coordinators@translationproject.org>
|
||||
Translation Project <coordinator@translationproject.org> <translation@translationproject.org>
|
||||
Vern Paxson <vern@ee.lbl.gov>
|
||||
Will Estes <westes575@gmail.com> <wlestes@users.sourceforge.net>
|
||||
Yuri <yuri@tsoft.com>
|
||||
luistung <dongliang1986@gmail.com>
|
||||
lukeallardyce <lukeallardyce@users.sourceforge.net>
|
||||
nomis52 <nomis52@users.sourceforge.net>
|
||||
viktor.shepel <shepelvictor@bigmir.net>
|
||||
@@ -0,0 +1 @@
|
||||
2.6.4
|
||||
@@ -1,107 +0,0 @@
|
||||
This is a list of bugs still in the queue at lex.sf.net at the time we closed
|
||||
out the project and moved it to flex.sf.net.
|
||||
|
||||
-------------------------------------------------------------
|
||||
|
||||
Some strict compilers warn about a few internal flex variables signedness. They
|
||||
are bogus warnings and can be ignored, but people send in reports nonethless.
|
||||
|
||||
-------------------------------------------------------------
|
||||
|
||||
The initializer of the yy_transition array in the
|
||||
generated scanner
|
||||
contains fewer entries than the declared size of the array.
|
||||
|
||||
Examples include yy_transition[6504] with 6250 entries,
|
||||
yy_transition[13215] with 12961 entries. This looks
|
||||
like it
|
||||
is always 254 fewer entries than the declared size.
|
||||
|
||||
This bug is present in flex 2.5.4a as well. It appears to be harmless.
|
||||
|
||||
-------------------------------------------------------------
|
||||
The examples in the chapter "Generating C++ Scanners"
|
||||
contain suspicious code. Attached is a patch that
|
||||
corrects this, and after these
|
||||
modifications this example compiles and works.
|
||||
|
||||
-------------------------------------------------------------
|
||||
|
||||
C++ scanners derived from the yyFlexLexer base class
|
||||
will not compile with flex-2.5.31 because the
|
||||
<FlexLexer.h> automatically gets included into the
|
||||
scanner twice. Because yyFlexLexer is now defined by
|
||||
default even if no prefix is specified, including
|
||||
FlexLexer.h twice causes the class yyFlexLexer to be
|
||||
declared twice. In flex-2.5.4 because yyFlexLexer was
|
||||
not defined by flex in the scanner code, including
|
||||
FlexLexer.h more than once only declared yyFlexLexer
|
||||
once. I appreciate that this is because of the M4
|
||||
additions to flex, but I can not find a way to stop
|
||||
flex defining yyFlexLexer if it is not needed.
|
||||
|
||||
Here is an example of a class that will not compile:
|
||||
|
||||
derived_lexer.h:
|
||||
|
||||
#ifndef __derived_lexer__
|
||||
#define __derived_lexer__
|
||||
|
||||
#include <FlexLexer.h>
|
||||
|
||||
class derived_lexer : public yyFlexLexer
|
||||
{
|
||||
public:
|
||||
derived_lexer(std::istream* arg_yyin = 0) :
|
||||
yyFlexLexer(arg_yyin){}
|
||||
int yylex();
|
||||
int x;
|
||||
};
|
||||
#endif
|
||||
|
||||
derived_lexer.l:
|
||||
|
||||
%{
|
||||
#include "derived_lexer.h"
|
||||
%}
|
||||
|
||||
%option yyclass="derived_lexer"
|
||||
|
||||
%%
|
||||
[0-9]+ {
|
||||
x = atoi(yytext);
|
||||
}
|
||||
%%
|
||||
|
||||
main.cpp:
|
||||
|
||||
#include "derived_lexer.h"
|
||||
#include <fstream>
|
||||
|
||||
int main()
|
||||
{
|
||||
std::ifstream input;
|
||||
input.open("input");
|
||||
derived_lexer lexer(&input);
|
||||
lexer.yylex();
|
||||
}
|
||||
|
||||
-------------------------------------------------------------
|
||||
|
||||
Hi, the anomally is that if I generate a c++ parser it will not make
|
||||
yy_scan_buffer and friends.
|
||||
this is happenning on flex version 2.5.4.
|
||||
Is this the intent, if so how do I make a c++ parser read from my buffer?
|
||||
|
||||
P.S. in c++ it will only generate:
|
||||
#ifndef YY_NO_SCAN_BUFFER
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef YY_NO_SCAN_STRING
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef YY_NO_SCAN_BYTES
|
||||
#endif
|
||||
-------------------------------------------------------------
|
||||
@@ -0,0 +1,5 @@
|
||||
# Contributor Code of Conduct
|
||||
|
||||
This project adheres to No Code of Conduct. We are all adults. We accept anyone's contributions. Nothing else matters.
|
||||
|
||||
For more information please visit the [No Code of Conduct](https://github.com/domgetter/NCoC) homepage.
|
||||
@@ -0,0 +1,67 @@
|
||||
# INSTALLING Flex
|
||||
|
||||
## Should you be here at all?
|
||||
|
||||
If building, developing or compiling C programs is new to you, you probably want to use your operating system's standard means of installing software to install flex. If you do not need the latest features of flex, you probably just want to use your operating system's standard means of installing software to obtain flex.
|
||||
|
||||
## Now that you know you should be here ...
|
||||
|
||||
If you are not familiar with bootstrapping C code from a git repository or if GNU autotools seems like a jumble of tenuous incantationery to you, then make sure that you downloaded one of the release tar archives of flex. You can verify this by checking the filename of what you downloaded. If it is something like "flex-<version>.tar.<compressiontype>" then you have a release tar archives. If you have a filename like "flex.tar.gz" or "flex.zip", you have a copy of the git repository and you didn't download the thing you wanted to.
|
||||
|
||||
## Building from a release archive
|
||||
|
||||
To build flex from a release archive:
|
||||
|
||||
$ ./configure <any configure options you need>
|
||||
$ make
|
||||
|
||||
To see what options are available from the configure script:
|
||||
|
||||
$ ./configure --help
|
||||
|
||||
Optionally run the test suite:
|
||||
|
||||
$ make check
|
||||
|
||||
To install the flex you just built:
|
||||
|
||||
$ make install
|
||||
|
||||
Note that you may want to make use of the DESTDIR argument on the "make install" command line or that you may want to have used the "--prefix" argument with configure (or mostly equivalently the "prefix" argument on the make command line).
|
||||
|
||||
## Building from the git repository
|
||||
|
||||
To build from the git repository:
|
||||
|
||||
First, make sure you have a copy of flex installed somewhere on your path so that configure can find it. You can usually do this with your operating system's standard means of installing software. Sometimes, you have to build from a recent release of flex, however.
|
||||
|
||||
You will also need all the programs that flex needs in order to be built from scratch --
|
||||
|
||||
* compiler suite - flex is built with gcc
|
||||
* bash, or a good Bourne-style shell
|
||||
* m4 - `m4 -P` needs to work; GNU m4 and a few others are suitable
|
||||
* GNU bison; to generate parse.c from parse.y
|
||||
* autoconf; for handling the build system
|
||||
* automake; for Makefile generation
|
||||
* gettext; for i18n support
|
||||
* help2man; to generate the flex man page
|
||||
* tar, gzip, lzip, etc.; for packaging of the source distribution
|
||||
* GNU texinfo; to build and test the flex manual. Note that if you want
|
||||
to build the dvi/ps/pdf versions of the documentation you will need
|
||||
texi2dvi and related programs, along with a sufficiently powerful
|
||||
implementation of TeX to process them. See your operating system
|
||||
documentation for how to achieve this. The printable versions of the
|
||||
manual are not built unless specifically requested, but the targets
|
||||
are included by automake.
|
||||
* GNU indent; for indenting the flex source the way we want it done
|
||||
|
||||
In cases where the versions of the above tools matter, the file
|
||||
configure.ac will specify the minimum required versions.
|
||||
|
||||
Then:
|
||||
|
||||
$ ./autogen.sh
|
||||
|
||||
After autogen.sh finishes successfully, building flex follows the same steps as building flex from a release archive.
|
||||
|
||||
Note that, in addition to "make check", "make distcheck" builds a release archive and builds and tests flex from inside a directory containing only known distributed files.
|
||||
+37
-10
@@ -27,28 +27,25 @@
|
||||
# and 7-bit scanners when using uncompressed tables (-f or -F options).
|
||||
# For flex to always generate 8-bit scanners, add "-DDEFAULT_CSIZE=256"
|
||||
# to DEFS.
|
||||
#
|
||||
# For Vax/VMS, add "-DVMS" to DEFS.
|
||||
#
|
||||
# For MS-DOS, add "-DMS_DOS" to DEFS. See the directory MISC/MSDOS for
|
||||
# additional info.
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
indent = @INDENT@
|
||||
|
||||
dist_doc_DATA = \
|
||||
AUTHORS \
|
||||
COPYING \
|
||||
NEWS \
|
||||
ONEWS \
|
||||
README
|
||||
README.md
|
||||
|
||||
EXTRA_DIST = \
|
||||
.indent.pro \
|
||||
autogen.sh
|
||||
INSTALL
|
||||
|
||||
dist_noinst_SCRIPTS = \
|
||||
autogen.sh \
|
||||
po/update_linguas.sh
|
||||
|
||||
SUBDIRS = \
|
||||
lib \
|
||||
src \
|
||||
doc \
|
||||
examples \
|
||||
@@ -56,6 +53,29 @@ SUBDIRS = \
|
||||
tests \
|
||||
tools
|
||||
|
||||
# Convenience targets to build libfl only
|
||||
# These are actually wrappers around automake- and libtool-generated targets
|
||||
|
||||
libfl:
|
||||
cd src && $(MAKE) $(AM_MAKEFLAGS) libfl.la libfl.pc
|
||||
|
||||
install-libfl:
|
||||
cd src && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) lib_LTLIBRARIES=libfl.la \
|
||||
pkgconfig_DATA=libfl.pc install-libLTLIBRARIES install-pkgconfigDATA
|
||||
|
||||
uninstall-libfl:
|
||||
cd src && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
lib_LTLIBRARIES=libfl.la pkgconfig_DATA=libfl.pc \
|
||||
uninstall-libLTLIBRARIES uninstall-pkgconfigDATA
|
||||
|
||||
# libfl.pc is cleaned via 'distclean' target
|
||||
clean-libfl:
|
||||
cd src && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) lib_LTLIBRARIES=libfl.la clean-libLTLIBRARIES \
|
||||
clean-libtool
|
||||
|
||||
# Create the ChangeLog, but only if we're inside a git working directory
|
||||
|
||||
ChangeLog: $(srcdir)/tools/git2cl
|
||||
@@ -63,8 +83,15 @@ ChangeLog: $(srcdir)/tools/git2cl
|
||||
$(srcdir)/tools/git2cl > $@ \
|
||||
; fi
|
||||
|
||||
indent:
|
||||
cd src && $(MAKE) $(AM_MAKEFLAGS) indent
|
||||
|
||||
install-exec-hook:
|
||||
cd $(DESTDIR)$(bindir) && \
|
||||
$(LN_S) -f flex$(EXEEXT) flex++$(EXEEXT)
|
||||
|
||||
.PHONY: ChangeLog tags indent
|
||||
lint:
|
||||
shellcheck -f gcc tests/*.sh src/*.sh *.sh
|
||||
|
||||
.PHONY: libfl install-libfl uninstall-libfl clean-libfl \
|
||||
ChangeLog indent lint
|
||||
|
||||
@@ -1,9 +1,273 @@
|
||||
This is the file NEWS for the flex package. It records user -visible
|
||||
changes between releases of flex.
|
||||
flex NEWS
|
||||
|
||||
See the file COPYING for copying conditions.
|
||||
* Noteworthy changes in release ?.? (????-??-??) [?]
|
||||
|
||||
* version 2.6.0-pre
|
||||
** build
|
||||
|
||||
*** Flex now includes its own <config.h> header before including
|
||||
system headers so that any system specific features detected by
|
||||
configure are taken into account during compilation of flex
|
||||
itself.
|
||||
|
||||
*** The flex build system now includes Makefile targets at the top
|
||||
level to allow just building and installing libfl.
|
||||
|
||||
*** The flex distribution now includes a file, src/libfl.pc, to allow
|
||||
using pkgconfig to find out what flags to use when building
|
||||
against libfl from flex.
|
||||
|
||||
*** Various edge cases, mostly involving out-of-tree builds have been
|
||||
accounted for in the autotools build system.
|
||||
|
||||
*** A crash during building on NetBSD has been fixed.
|
||||
|
||||
*** Flex is now automatically built by travis-ci. That should increase
|
||||
the visibility of bugs and help prevent regressions.
|
||||
|
||||
** documentation
|
||||
|
||||
*** new bg, pt, uk translations from the translation project
|
||||
|
||||
** scanner
|
||||
|
||||
*** Some memory leaks have been fixed.
|
||||
|
||||
*** A long standing bug that effected expressions of the form c{i,j}
|
||||
where 'c' is a character and {i,j} describes the number of times
|
||||
to match against 'c' when case sensitivity was turned on has been
|
||||
fixed.
|
||||
|
||||
*** New option: --backup-file allows setting the name of the file
|
||||
written containing backing up information. Useful if you need
|
||||
backing up information from multiple scanners in the same
|
||||
directory.
|
||||
|
||||
*** flex emits correct line number directives when line numbers refer
|
||||
to the file containing the line number directives.
|
||||
|
||||
*** The options {no,}yy{get,set}_column are now supported.
|
||||
|
||||
** test
|
||||
|
||||
*** Generating the various tableoptions make rules is now more portable.
|
||||
|
||||
*** Tests of the options -C*f and -C*F will now run correctly on
|
||||
filesystems that are not case sensitive.
|
||||
|
||||
* Noteworthy changes in release 2.6.4 (2017-05-06) [stable]
|
||||
|
||||
** build
|
||||
|
||||
*** The indent target now knows about flex's new (as of 2.6.0)
|
||||
layout. The indent rules it would apply are not correct and do
|
||||
need to be fixed.
|
||||
|
||||
*** The files included in the flex distribution are now built by the
|
||||
version of flex that is included in the distribution.
|
||||
|
||||
*** The configure script has a better idea of which headers are
|
||||
required to build flex. It will also error when missing functions
|
||||
are detected.
|
||||
|
||||
*** We have lowered the versions of automake and gettext that
|
||||
configure.ac lists as required for building flex. In autogen.sh,
|
||||
we now check for how to call libtoolize and use what we find in
|
||||
the rest of the script.
|
||||
|
||||
*** Since files in lib/ are picked up as needed by src/, we no longer
|
||||
generate a Makefile for that directory.
|
||||
|
||||
*** Flex can be cross compiled.
|
||||
|
||||
** documentation
|
||||
|
||||
*** Some typos were removed from the manual.
|
||||
|
||||
** scanner
|
||||
|
||||
*** Some minor performance enhancements.
|
||||
|
||||
*** We honor user defined yy_* macros again. We are also more careful
|
||||
to not leak macro definitions into header files.
|
||||
|
||||
*** A number of portability fixes were introduced so building flex is
|
||||
more reliable on more platforms. Additionally, outdated function
|
||||
calls were removed.
|
||||
|
||||
*** When building the flex executable itself, %# comments from
|
||||
flex.skl are removed when generating the C source code array. This
|
||||
reduces the size of flex.
|
||||
|
||||
** test suite
|
||||
|
||||
*** All scripts in the test suite are now run by $(SHELL) and the
|
||||
needed portability fixes have been included.
|
||||
|
||||
*** Test suite dependencies are handled much better. This only matters
|
||||
if you are actively developing flex or its test suite.
|
||||
|
||||
*** Tests that depend on platform dependent features now properly skip
|
||||
when those platforms are not present.
|
||||
|
||||
*** When running "make check", you can now pas V=0 to silence more of
|
||||
the build. This is useful when you're less connncerned about the
|
||||
details of building and linking the test programs themselves.
|
||||
|
||||
* Noteworthy changes in release 2.6.3 (2016-12-30) [stable]
|
||||
|
||||
** scanner
|
||||
|
||||
*** several bug fixes resolved problems introduced in recent flex
|
||||
versions regarding processing of comments, literals and various
|
||||
quoting scenarios.
|
||||
|
||||
*** If the path to m4 was sufficiently long, a buffer overflow could
|
||||
occur. This has been resolved. The fix also removes dependence on
|
||||
the constant PATH_MAX.
|
||||
|
||||
** build
|
||||
|
||||
*** A new configure option --disable-bootstrap changes the behavior of
|
||||
the build system when building flex. The default
|
||||
"--enable-bootstrap" behavior is to build flex, then to use that
|
||||
flex to build flex again. With --disable-bootstrap, the scanner is
|
||||
simply built by sedding the scanner source. This is friendlier to
|
||||
cross compilation.
|
||||
|
||||
*** The compatibility functions in lib/ are no longer built as a
|
||||
library. Instead, they are built as $(LIBOBJ) objects. This is
|
||||
simpler and friendlier to cross compilation.
|
||||
|
||||
*** It is now possible to build flex without building the accompanying
|
||||
libfl. This is friendlier to cross compilation. See the
|
||||
--disable-libfl option to configure. Resolves #99.
|
||||
|
||||
*** the PIC version of libfl was not correctly built. It is no longer
|
||||
included in the build/installation targets of flex since it was
|
||||
unused.
|
||||
|
||||
*** the distributed man page is only rebuilt when the relevant source
|
||||
files change or when the binary doesn't exist. In particular, this
|
||||
is friendlier to cross compilation. Resolves #108
|
||||
|
||||
** test
|
||||
|
||||
*** the shell scripts in the test suite are more portable across different shell implementations.
|
||||
|
||||
* version 2.6.2 released 2016-10-24
|
||||
|
||||
** flex internals
|
||||
|
||||
*** a segfalt involving yyrestart(NULL) has been fixed
|
||||
|
||||
*** flex should now handle quoting when mixed with m4 processing correctly
|
||||
|
||||
*** flex handles `[[' and `]]' correctly
|
||||
|
||||
*** flex no longer generates non-ANSI code
|
||||
|
||||
*** more compilation warnings were squashed in generated scanners
|
||||
|
||||
*** prevented a buffer overflow that could occur when input buffers were the exact wrong size
|
||||
|
||||
** test suite
|
||||
|
||||
*** input filenames on MSWindows are now calculated correctly
|
||||
|
||||
*** general code cleanups in a number of tests now make the test suite compile much more cleanly
|
||||
|
||||
** build system
|
||||
|
||||
*** the xz archive has been replaced with an lzip archive
|
||||
|
||||
*** a new option to configure --enable-warnings to encapsulate passing
|
||||
of warning-related flags which is useful in testing flex
|
||||
|
||||
*** make indent now works for out of source builds
|
||||
|
||||
*** Portability warnings when generating Makefile.in files are now suppressed; they were just noise and the use of GNU extensions in Makefile.{am,in,} was intentional and well known.
|
||||
|
||||
** bugs
|
||||
|
||||
*** resolved gh#67
|
||||
|
||||
** new sv translation from the translation project
|
||||
|
||||
* version 2.6.1 released 2016-03-01
|
||||
|
||||
** flex resources
|
||||
|
||||
*** The flex project is now hosted at github. Consider this a "period of transition". In particular, you should start at https://github.com/westes/flex for the flex codebase, issue tracking and pull requests.
|
||||
|
||||
*** New releases of flex are to be found at https://github.com/westes/flex/releases.
|
||||
|
||||
** flex internals
|
||||
|
||||
*** Flex now uses more modern and more standard names for variable types. There's more work to be done on that front yet, though.
|
||||
|
||||
*** A number of compiler warnings have been remedied.
|
||||
|
||||
*** Line directives should now work as expected and be absent when that is expected.
|
||||
|
||||
** test suite
|
||||
|
||||
*** When running the test suite, c++ files are compiled with the c++ header inside the flex distribution, rather than relying on the build system's flex header , which might not be installed yet or which might be out of date with respect to what flex tests expect.
|
||||
|
||||
*** Some portability fixes in the test suite such as opening files for reading in binary mode
|
||||
|
||||
** Building flex
|
||||
|
||||
*** The file src/scan.c asdistributed with flex source is now built with the current version of flex. Occasionally this had to be done manually to pick up new flex features. It's now just a part of flex's build system.
|
||||
|
||||
*** The pdf version of the manual is no longer distributed with flex, although if you have the texinfo package installed, you can still build it.
|
||||
|
||||
*** lots of general build system cleanup
|
||||
|
||||
*** the build system tries a bit harder to find libtoolize and texi2dvi.
|
||||
|
||||
*** When help2man and texi2dvi are missing, the error messages are now much more helpful.
|
||||
|
||||
** bug fixes
|
||||
|
||||
*** resolved github issues #53, #54, #55, #61.
|
||||
|
||||
*** Resolved sf bugs #128, #129, #155, #160, #184, #187, #195.
|
||||
|
||||
* version 2.6.0 released 2015-11-17
|
||||
|
||||
** User Visible Changes
|
||||
|
||||
*** C++ scanners now use references instead of pointers. See the manual for details.
|
||||
|
||||
*** A number of compiler warnings were addressed, so flex generated scanners should be quieter under compiler warning scenarios.
|
||||
|
||||
*** Allow error reporting routines to accept varying number of arguments
|
||||
|
||||
*** Removed deprecated 'register' storage class specifier
|
||||
|
||||
*** Changeed output formats from octal to hexadecimal
|
||||
|
||||
*** check limits before using array index cclp; resolves sf-166
|
||||
|
||||
*** Suppress clang warning about empty @param paragraph; resolves sf#158
|
||||
|
||||
*** Fixed malloc/realloc replacement, resolves sf bug#151.
|
||||
|
||||
*** Adjusted buffer sizes on ia64.
|
||||
|
||||
*** various documentation and code clean up fixes: resolves sf bugs #167, #168, among other patches.
|
||||
|
||||
** Flex Internals
|
||||
|
||||
*** flex is now organized into subdirectories. This keeps the tree neater at the top level and puts like things near each other and unlike things away from each other.
|
||||
|
||||
*** The test suite has been reorganized and is now run with the parallel test suite harness from automake.
|
||||
|
||||
*** Cleaned up the automake parts of the build system to better reflect what automake does on its own. Also added a call to libtoolize in autogen.sh because autoreconf gets confused without a prior run of libtoolize.
|
||||
|
||||
*** po/Makefile now includes a rule to fetch the latest translations from the translation project. "make -f po/Makefile getpo" from the top level of the flex tree will fetch the files.
|
||||
|
||||
*** New da translation from the translation project
|
||||
|
||||
* flex version 2.5.39 released 2014-03-26
|
||||
|
||||
@@ -528,6 +792,8 @@ But the inverse is still true
|
||||
|
||||
See the file ONEWS for changes in earlier releases.
|
||||
|
||||
See the file COPYING for copying conditions.
|
||||
|
||||
Local Variables:
|
||||
mode: text
|
||||
mode: outline-minor
|
||||
|
||||
@@ -1,113 +0,0 @@
|
||||
This is flex, the fast lexical analyzer generator.
|
||||
|
||||
flex is a tool for generating scanners: programs which recognize
|
||||
lexical patterns in text.
|
||||
|
||||
More information about flex as well as the latest official release of
|
||||
flex can be found at:
|
||||
|
||||
http://flex.sourceforge.net/
|
||||
|
||||
Bug reports should be submitted using the SourceForge Bug Tracker for
|
||||
flex at:
|
||||
|
||||
http://sourceforge.net/tracker/?group_id=97492&atid=618177
|
||||
|
||||
The flex codebase is kept in git at:
|
||||
|
||||
https://github.com/westes/flex
|
||||
|
||||
There are several mailing lists available as well:
|
||||
|
||||
flex-announce@lists.sourceforge.net - where posts will be made
|
||||
announcing new releases of flex.
|
||||
|
||||
flex-help@lists.sourceforge.net - where you can post questions about
|
||||
using flex
|
||||
|
||||
flex-devel@lists.sourceforge.net - where you can discuss development of
|
||||
flex itself
|
||||
|
||||
Find information on subscribing to the mailing lists at:
|
||||
|
||||
http://sourceforge.net/mail/?group_id=97492
|
||||
|
||||
The flex distribution contains the following files which may be of interest:
|
||||
|
||||
README - This file.
|
||||
|
||||
NEWS - current version number and list of user-visible changes.
|
||||
|
||||
INSTALL - basic installation information.
|
||||
|
||||
ABOUT-NLS - description of internationalization support in flex.
|
||||
|
||||
COPYING - flex's copyright and license.
|
||||
|
||||
doc/ - user documentation.
|
||||
|
||||
examples/ - containing examples of some possible flex scanners and a
|
||||
few other things. See the file examples/README for more details.
|
||||
|
||||
TODO - outstanding bug reports, desired features, etc.
|
||||
|
||||
tests/ - regression tests. See TESTS/README for details.
|
||||
|
||||
po/ - internationalization support files.
|
||||
|
||||
You need the following tools to build flex from the maintainer's
|
||||
repository:
|
||||
|
||||
compiler suite - flex is built with gcc
|
||||
bash, or a good Bourne-style shell
|
||||
m4 - m4 -p needs to work; GNU m4 and a few others are suitable
|
||||
GNU bison; to generate parse.c from parse.y
|
||||
autoconf 2.69; for handling the build system
|
||||
automake 1.12.2; for Makefile generation
|
||||
gettext 0.18; fori18n support
|
||||
help2man 1.36; to generate the flex man page
|
||||
tar, gzip, etc.; for packaging of the source distribution
|
||||
GNU texinfo 498; to build and test the flex manual
|
||||
GNU indent 2.8; for indenting the flex source the way we want it done
|
||||
|
||||
Once you have all the necessary tools installed, life becomes
|
||||
simple. To prepare the flex tree for building, run the script:
|
||||
|
||||
$ ./autogen.sh
|
||||
|
||||
in the top level of the flex source tree.
|
||||
This script calls the various tools needed to get flex ready for the
|
||||
GNU-style configure script to be able to work.
|
||||
|
||||
From this point on, building flex follows the usual configure, make,
|
||||
make install routine.
|
||||
|
||||
This file is part of flex.
|
||||
|
||||
This code is derived from software contributed to Berkeley by
|
||||
Vern Paxson.
|
||||
|
||||
The United States Government has rights in this work pursuant
|
||||
to contract no. DE-AC03-76SF00098 between the United States
|
||||
Department of Energy and the University of California.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
Neither the name of the University nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE.
|
||||
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
[](https://github.com/westes/flex/actions/workflows/build.yml)
|
||||
|
||||
|
||||
This is flex, the fast lexical analyzer generator.
|
||||
|
||||
flex is a tool for generating scanners: programs which recognize
|
||||
lexical patterns in text.
|
||||
|
||||
The flex codebase is kept in
|
||||
[Git on GitHub.](https://github.com/westes/flex) Source releases of flex with some intermediate files already built can be found on [the github releases page.](https://github.com/westes/flex/releases)
|
||||
|
||||
Use GitHub's [issues](https://github.com/westes/flex/issues) and
|
||||
[pull request](https://github.com/westes/flex) features to file bugs
|
||||
and submit patches.
|
||||
|
||||
There are several mailing lists available as well:
|
||||
|
||||
* flex-announce@lists.sourceforge.net - where posts will be made
|
||||
announcing new releases of flex.
|
||||
* flex-help@lists.sourceforge.net - where you can post questions about
|
||||
using flex
|
||||
* flex-devel@lists.sourceforge.net - where you can discuss development
|
||||
of flex itself
|
||||
|
||||
Find information on subscribing to the mailing lists or search in the
|
||||
archive at: https://sourceforge.net/p/flex/mailman/
|
||||
Note: Posting is only allowed from addresses that are subscribed to
|
||||
the lists.
|
||||
|
||||
The flex distribution contains the following files which may be of
|
||||
interest:
|
||||
|
||||
* README - This file.
|
||||
* NEWS - current version number and list of user-visible changes.
|
||||
* INSTALL - basic installation information.
|
||||
* ABOUT-NLS - description of internationalization support in flex.
|
||||
* COPYING - flex's copyright and license.
|
||||
* doc/ - user documentation.
|
||||
* examples/ - containing examples of some possible flex scanners and a
|
||||
few other things. See the file examples/README for more
|
||||
details.
|
||||
* tests/ - regression tests. See TESTS/README for details.
|
||||
* po/ - internationalization support files.
|
||||
|
||||
---
|
||||
|
||||
This file is part of flex.
|
||||
|
||||
This code is derived from software contributed to Berkeley by
|
||||
Vern Paxson.
|
||||
|
||||
The United States Government has rights in this work pursuant
|
||||
to contract no. DE-AC03-76SF00098 between the United States
|
||||
Department of Energy and the University of California.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
Neither the name of the University nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE.
|
||||
@@ -1,66 +1,9 @@
|
||||
* the manual:
|
||||
Things to be worked on:
|
||||
|
||||
** do an end-to-end proofread of the manual (this is under way, but is
|
||||
going slowly)
|
||||
* Tests for %option user-init, %option pre-action, %option post-action.
|
||||
|
||||
** pretty up the dvi output; overflows, etc.
|
||||
* integrate examples directory into tests so that normal testing
|
||||
proves the examples are up to date.
|
||||
|
||||
** faq
|
||||
|
||||
*** clean up the faqs section. The information is good; the texinfo
|
||||
could use some touching up.
|
||||
|
||||
*** index the faq entries
|
||||
|
||||
*** mention that it's possible to use a variable to scan matching
|
||||
brackets, nested comments etc.
|
||||
|
||||
*** include something about lexing/parsing fortran
|
||||
|
||||
** create a section on flex design, features, etc.
|
||||
|
||||
* getext
|
||||
|
||||
** make sure all flex modules use gettext translation facilities
|
||||
|
||||
*subdirectories
|
||||
|
||||
** in examples/manual, integrate the Makefile.examples into the
|
||||
Makefile.am
|
||||
|
||||
* test suite
|
||||
|
||||
** integrate the test suite into automake's framework (note that the
|
||||
test suite can be run from the top level directory with "make
|
||||
check". Still, we want to get it completely under automake's control.)
|
||||
|
||||
** make test suite more complete
|
||||
|
||||
* generic coding
|
||||
|
||||
** move as much skeleton code as possible out of gen.c and into
|
||||
flex.skl
|
||||
|
||||
** figure out whether we want to add the capability to have
|
||||
auto-generated backout rules
|
||||
|
||||
** token-type and token buffer support
|
||||
|
||||
** check if we still need to #undef macros at the end of a header
|
||||
|
||||
** merge yylineno into support for location tracking
|
||||
|
||||
** bug where yylineno is not decremented on REJECT
|
||||
|
||||
** bug where yylineno is counted in trailing context
|
||||
|
||||
* C++
|
||||
|
||||
** have a separate skeleton for c++
|
||||
|
||||
** revisit the C++ API. We get requests to make it more complete.
|
||||
|
||||
Local Variables:
|
||||
Mode: text
|
||||
mode: outline-minor
|
||||
End:
|
||||
* Do away with any need for -lfl by generating a default yywrap
|
||||
if the user doesn't specify one.
|
||||
|
||||
+22
-2
@@ -24,9 +24,29 @@
|
||||
# If you see no configure script, then run ./autogen.sh to create it
|
||||
# and procede with the "normal" build procedures.
|
||||
|
||||
# use LIBTOOLIZE, if set
|
||||
if test "x$LIBTOOLIZE" = "x"; then
|
||||
for ac_prog in libtoolize glibtoolize; do
|
||||
if $ac_prog --version >/dev/null 2>&1; then
|
||||
LIBTOOLIZE=$ac_prog
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# test libtoolize
|
||||
if test "x$LIBTOOLIZE" = "x" || ! $LIBTOOLIZE --version >/dev/null; then
|
||||
echo "error: libtoolize not working, re-run with LIBTOOLIZE=/path/to/libtoolize">&2
|
||||
echo " LIBTOOLIZE is currently \"$LIBTOOLIZE\"">&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#if we pretend to have a ChangeLog, then automake is less
|
||||
#worried. (Don't worry, we *do* have a ChangeLog, we just need the
|
||||
#Makefile first.)
|
||||
|
||||
touch ChangeLog
|
||||
autoreconf --install --verbose --force
|
||||
if ! test -f ChangeLog; then
|
||||
touch ChangeLog
|
||||
fi
|
||||
$LIBTOOLIZE --install --force
|
||||
autoreconf --install --force
|
||||
|
||||
+90
-30
@@ -24,33 +24,79 @@
|
||||
|
||||
# autoconf requirements and initialization
|
||||
|
||||
AC_INIT([the fast lexical analyser generator], [2.6.0-pre],
|
||||
[flex-help@lists.sourceforge.net], [flex])
|
||||
AC_INIT([the fast lexical analyser generator],[2.6.4],[flex-help@lists.sourceforge.net],[flex])
|
||||
AC_PREREQ([2.60])
|
||||
AC_CONFIG_SRCDIR([src/scan.l])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AM_INIT_AUTOMAKE([gnu check-news std-options dist-bzip2 dist-xz parallel-tests 1.14.1])
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
LT_INIT
|
||||
AM_INIT_AUTOMAKE([1.15 -Wno-portability foreign std-options dist-lzip parallel-tests subdir-objects])
|
||||
AC_CONFIG_HEADER([src/config.h])
|
||||
AC_CONFIG_LIBOBJ_DIR([lib])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
LT_INIT
|
||||
SHARED_VERSION_INFO="2:0:0"
|
||||
AC_SUBST(SHARED_VERSION_INFO)
|
||||
|
||||
# checks for programs
|
||||
|
||||
AM_GNU_GETTEXT([external])
|
||||
AM_GNU_GETTEXT_VERSION([0.19])
|
||||
AM_GNU_GETTEXT_VERSION([0.19.7])
|
||||
AC_PROG_YACC
|
||||
AS_IF([test "$YACC" != 'bison -y'], [
|
||||
YACC="\${top_srcdir}/build-aux/missing bison -y"
|
||||
AC_MSG_NOTICE(no bison program found: only required for maintainers)
|
||||
])
|
||||
AM_CONDITIONAL([HAVE_BISON], [test "$YACC" = 'bison -y'])
|
||||
AM_PROG_LEX
|
||||
AC_PROG_CC
|
||||
AX_PROG_CC_FOR_BUILD
|
||||
AC_PROG_CXX
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_AWK
|
||||
AC_PROG_INSTALL
|
||||
|
||||
AC_PATH_PROG(BISON, bison,bison)
|
||||
AC_PATH_PROG(HELP2MAN, help2man, help2man)
|
||||
pkgconfigdir=${libdir}/pkgconfig
|
||||
AC_SUBST(pkgconfigdir)
|
||||
|
||||
# allow passing a variable `WARNINGFLAGS',
|
||||
# either when invoking `configure', or when invoking `make'
|
||||
# default to something useful if GCC was detected
|
||||
|
||||
AC_ARG_ENABLE([warnings],
|
||||
[AS_HELP_STRING([--enable-warnings],
|
||||
[enable a bunch of compiler warning flags (defaults to GCC warning flags).])],
|
||||
[AS_IF([test "x$GCC" = xyes],
|
||||
[ : ${WARNINGFLAGS="-Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wnested-externs -Wold-style-definition -Wredundant-decls -Wconversion -Wno-unused-but-set-variable"} ])])
|
||||
|
||||
AC_SUBST([WARNINGFLAGS])
|
||||
|
||||
AC_ARG_ENABLE([libfl],
|
||||
[AS_HELP_STRING([--disable-libfl],
|
||||
[do not build -lfl runtime support library])],
|
||||
[], [enable_libfl=yes])
|
||||
AM_CONDITIONAL([ENABLE_LIBFL], [test "x$enable_libfl" = xyes])
|
||||
|
||||
# --disable-bootstrap is intended only to workaround problems with bootstrap
|
||||
# (e.g. when cross-compiling flex or when bootstrapping has bugs).
|
||||
# Ideally we should be able to bootstrap even when cross-compiling.
|
||||
AC_ARG_ENABLE([bootstrap],
|
||||
[AS_HELP_STRING([--disable-bootstrap],
|
||||
[don't perform a bootstrap when building flex])],
|
||||
[], [enable_bootstrap=yes])
|
||||
AM_CONDITIONAL([ENABLE_BOOTSTRAP], [test "x$enable_bootstrap" = xyes])
|
||||
|
||||
AM_CONDITIONAL([CROSS], [test "x$cross_compiling" = xyes])
|
||||
|
||||
AC_PATH_PROG([HELP2MAN], help2man, [\${top_srcdir}/build-aux/missing help2man])
|
||||
AS_IF([test "$HELP2MAN" = "\${top_srcdir}/build-aux/missing help2man"],
|
||||
AC_MSG_WARN(help2man: program not found: building man page will not work)
|
||||
)
|
||||
|
||||
AC_PATH_PROGS([TEXI2DVI], [gtexi2dvi texi2dvi], [\${top_srcdir}/build-aux/missing texi2dvi])
|
||||
AS_IF([test "$TEXI2DVI" = "\${top_srcdir}/build-aux/missing texi2dvi"],
|
||||
AC_MSG_WARN(texi2dvi: program not found: building pdf version of manual will not work)
|
||||
)
|
||||
|
||||
# Check for a m4 that supports -P
|
||||
|
||||
@@ -63,25 +109,20 @@ AC_CACHE_CHECK([for m4 that supports -P], [ac_cv_path_M4],
|
||||
AC_SUBST([M4], [$ac_cv_path_M4])
|
||||
AC_DEFINE_UNQUOTED([M4], ["$M4"], [Define to the m4 executable name.])
|
||||
|
||||
AC_PATH_PROG(INDENT, indent, indent)
|
||||
# if INDENT is set to 'indent' then we didn't find indent
|
||||
if test "$INDENT" != indent ; then
|
||||
AC_MSG_CHECKING(if $INDENT is GNU indent)
|
||||
if $INDENT --version 2>/dev/null | head -n 1|grep "GNU indent" > /dev/null ; then
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_WARN($INDENT does not appear to be GNU indent.)
|
||||
fi
|
||||
else
|
||||
AC_MSG_WARN(no indent program found: make indent target will not function)
|
||||
fi
|
||||
AC_PATH_PROG([INDENT], indent, [\${top_srcdir}/build-aux/missing indent])
|
||||
AC_MSG_CHECKING(if $INDENT is GNU indent)
|
||||
AS_IF([$INDENT --version 2>/dev/null | head -n 1 | grep "GNU indent" >/dev/null],
|
||||
[AC_MSG_RESULT(yes)],
|
||||
[AC_MSG_RESULT(no)
|
||||
AC_MSG_WARN($INDENT does not appear to be GNU indent; 'make indent' may not function properly)
|
||||
])
|
||||
|
||||
# checks for headers
|
||||
|
||||
AC_HEADER_STDC
|
||||
AC_HEADER_SYS_WAIT
|
||||
AC_CHECK_HEADERS([inttypes.h libintl.h limits.h locale.h malloc.h netinet/in.h regex.h stddef.h stdlib.h string.h strings.h unistd.h])
|
||||
AC_CHECK_HEADERS([regex.h strings.h sys/wait.h unistd.h], [],
|
||||
[AC_MSG_ERROR(required header not found on your system)])
|
||||
|
||||
AC_CHECK_HEADERS([inttypes.h libintl.h limits.h locale.h malloc.h netinet/in.h])
|
||||
|
||||
# checks for libraries
|
||||
|
||||
@@ -89,12 +130,12 @@ AC_CHECK_HEADERS([inttypes.h libintl.h limits.h locale.h malloc.h netinet/in.h r
|
||||
# all we need is the preprocessor symbol defined since we don't need
|
||||
# LIBS to include libpthread for building flex.
|
||||
|
||||
LIBPTHREAD=''
|
||||
AC_CHECK_LIB(pthread, pthread_mutex_lock,
|
||||
AC_DEFINE([HAVE_LIBPTHREAD], 1, [pthread library] ),
|
||||
AC_DEFINE([HAVE_LIBPTHREAD], 0, [pthread library] )
|
||||
)
|
||||
AC_CHECK_HEADERS([pthread.h])
|
||||
AM_CONDITIONAL([want_pthread], [test x$ac_cv_lib_pthread_pthread_mutex_lock = xyes])
|
||||
[AC_CHECK_HEADERS([pthread.h], [LIBPTHREAD=-lpthread],
|
||||
[AC_MSG_WARN([pthread tests will be skipped])])],
|
||||
[AC_MSG_WARN([pthread tests will be skipped])])
|
||||
AC_SUBST([LIBPTHREAD])
|
||||
|
||||
AC_CHECK_LIB(m, log10)
|
||||
|
||||
@@ -108,9 +149,28 @@ AC_TYPE_SIZE_T
|
||||
|
||||
AC_FUNC_ALLOCA
|
||||
AC_FUNC_FORK
|
||||
dnl Autoconf bug: AC_FUNC_MALLOC and AC_FUNC_REALLOC might not warn of cross
|
||||
dnl compilation. Workaround this.
|
||||
AC_FUNC_MALLOC
|
||||
AS_IF([test "$cross_compiling" = yes],
|
||||
AC_MSG_WARN([result $ac_cv_func_malloc_0_nonnull guessed because of cross compilation]))
|
||||
AC_FUNC_REALLOC
|
||||
AC_CHECK_FUNCS([dup2 isascii memset pow regcomp setlocale strchr strtol])
|
||||
AS_IF([test "$cross_compiling" = yes],
|
||||
AC_MSG_WARN([result $ac_cv_func_realloc_0_nonnull guessed because of cross compilation]))
|
||||
|
||||
dnl Autoheader (<= 2.69) bug: "dnl" comments in a quoted argument of
|
||||
dnl AC_CHECK_FUNCS will expand wierdly in config.h.in.
|
||||
dnl (https://lists.gnu.org/archive/html/bug-autoconf/2018-02/msg00005.html)
|
||||
|
||||
AC_CHECK_FUNCS([dup2 memset regcomp strcasecmp strchr strdup strtol], [],
|
||||
[AC_MSG_ERROR(required library function not found on your system)])
|
||||
|
||||
# Optional library functions:
|
||||
# pow - Used only by "examples/manual/expr".
|
||||
# setlocale - Needed only if NLS is enabled.
|
||||
# reallocarr - NetBSD function. Use reallocarray if not available.
|
||||
# reallocarray - OpenBSD function. We have replacement if not available.
|
||||
AC_CHECK_FUNCS([pow setlocale reallocarr reallocarray])
|
||||
|
||||
AC_CONFIG_FILES(
|
||||
Makefile
|
||||
@@ -118,8 +178,8 @@ doc/Makefile
|
||||
examples/Makefile
|
||||
examples/fastwc/Makefile
|
||||
examples/manual/Makefile
|
||||
lib/Makefile
|
||||
po/Makefile.in
|
||||
src/libfl.pc
|
||||
src/Makefile
|
||||
tools/Makefile
|
||||
tests/Makefile
|
||||
|
||||
Regular → Executable
+12
-26
@@ -1,31 +1,17 @@
|
||||
help2man = @HELP2MAN@
|
||||
FLEX = $(top_builddir)/src/flex$(EXEEXT)
|
||||
TEXI2DVI = @TEXI2DVI@ -I $(srcdir)/../examples/manual/
|
||||
TEXI2PDF = @TEXI2PDF@ -I $(srcdir)/../examples/manual/
|
||||
|
||||
info_TEXINFOS = flex.texi
|
||||
AM_MAKEINFOFLAGS = -I $(srcdir)/../examples/manual/
|
||||
dist_man_MANS = flex.1
|
||||
dist_doc_DATA= flex.pdf
|
||||
MAINTAINERCLEANFILES = flex.1
|
||||
|
||||
CLEANFILES = \
|
||||
flex.aux \
|
||||
flex.cp \
|
||||
flex.cps \
|
||||
flex.fn \
|
||||
flex.fns \
|
||||
flex.hk \
|
||||
flex.hks \
|
||||
flex.ky \
|
||||
flex.log \
|
||||
flex.op \
|
||||
flex.ops \
|
||||
flex.pg \
|
||||
flex.toc \
|
||||
flex.tp \
|
||||
flex.tps \
|
||||
flex.vr \
|
||||
flex.vrs
|
||||
CLEANFILES = *.aux *.cp *.cps *.fn *.fns *.hk *.hks *.ky *.log \
|
||||
*.op *.ops *.pg *.toc *.tp *.tps *.vr *.vrs
|
||||
|
||||
$(dist_man_MANS): $(top_srcdir)/src/main.c
|
||||
for i in $(dist_man_MANS) ; do \
|
||||
$(help2man) --name='$(PACKAGE_NAME)' \
|
||||
--section=`echo $$i | sed -e 's/.*\.\([^.]*\)$$/\1/'` \
|
||||
$(top_srcdir)/src/flex$(EXEEXT) > $$i || rm -f $$i ; \
|
||||
done
|
||||
flex.1: $(top_srcdir)/configure.ac $(top_srcdir)/src/cpp-flex.skl $(top_srcdir)/src/options.c $(top_srcdir)/src/options.h | $(FLEX)
|
||||
$(HELP2MAN) --name='$(PACKAGE_NAME)' --section=1 \
|
||||
--source='The Flex Project' --manual='Programming' \
|
||||
--output=$@ $(FLEX) \
|
||||
|| rm -f $@
|
||||
|
||||
Regular → Executable
+1567
-1040
File diff suppressed because it is too large
Load Diff
@@ -30,6 +30,9 @@ EXTRA_DIST = \
|
||||
eof_test01.txt \
|
||||
eof_test02.txt \
|
||||
eof_test03.txt \
|
||||
example_er.lex \
|
||||
example_r.lex \
|
||||
example_nr.lex \
|
||||
expr.lex \
|
||||
expr.y \
|
||||
front.lex \
|
||||
|
||||
@@ -18,10 +18,23 @@ ALLOCA =
|
||||
# DO NOT CHANGE ANYTHING FROM HERE ON !!!!!!!!!
|
||||
#
|
||||
############################################################
|
||||
PATH := /usr/local/bin:${PATH}
|
||||
|
||||
all: expr front myname eof wc replace user_act string1\
|
||||
string2 yymore numbers dates cat
|
||||
|
||||
example_r: example_r.lex
|
||||
$(LEX) example_r.lex
|
||||
$(CC) lex.yy.c -o example_r
|
||||
|
||||
example_nr: example_nr.lex
|
||||
$(LEX) example_nr.lex
|
||||
$(CC) lex.yy.c -o example_nr
|
||||
|
||||
example_er: example_er.lex
|
||||
$(LEX) example_er.lex
|
||||
$(CC) lex.yy.c -o example_er
|
||||
|
||||
expr: expr.y expr.lex
|
||||
$(YACC) expr.y
|
||||
$(LEX) expr.lex
|
||||
|
||||
@@ -10,3 +10,9 @@ To build the programs individually, type
|
||||
For example:
|
||||
|
||||
make -f Makefile.examples expr
|
||||
|
||||
If you ad an eample to this directory, don't frget these steps:
|
||||
|
||||
* Add it to the EXTRA_DIST list in Makefile.am
|
||||
|
||||
* Add a build recipe to Makefile/examples.
|
||||
|
||||
+12
-12
@@ -54,13 +54,13 @@ day_ext (st|nd|rd|th)?
|
||||
/* the default is month-day-year */
|
||||
|
||||
<LONG>{day_of_the_week} strcpy(dow,yytext);
|
||||
<LONG>{month} strcpy(month,yytext); BEGIN(DAY);
|
||||
<LONG>{month} strcpy(month,yytext); yybegin(DAY);
|
||||
|
||||
/* handle the form: day-month-year */
|
||||
|
||||
<LONG>{nday}{day_ext} strcpy(day,yytext); BEGIN(DAY_FIRST);
|
||||
<DAY_FIRST>{month} strcpy(month,yytext); BEGIN(LONG);
|
||||
<DAY>{nday}{day_ext} strcpy(day,yytext); BEGIN(LONG);
|
||||
<LONG>{nday}{day_ext} strcpy(day,yytext); yybegin(DAY_FIRST);
|
||||
<DAY_FIRST>{month} strcpy(month,yytext); yybegin(LONG);
|
||||
<DAY>{nday}{day_ext} strcpy(day,yytext); yybegin(LONG);
|
||||
|
||||
<LONG>{nyear}{year_ext} {
|
||||
printf("Long:\n");
|
||||
@@ -75,15 +75,15 @@ day_ext (st|nd|rd|th)?
|
||||
|
||||
/* handle dates of the form: day-month-year */
|
||||
|
||||
<SHORT>{nday} strcpy(day,yytext); BEGIN(YEAR_LAST);
|
||||
<YEAR_LAST>{nmonth} strcpy(month,yytext);BEGIN(YLMONTH);
|
||||
<YLMONTH>{nyear} strcpy(year,yytext); BEGIN(SHORT);
|
||||
<SHORT>{nday} strcpy(day,yytext); yybegin(YEAR_LAST);
|
||||
<YEAR_LAST>{nmonth} strcpy(month,yytext);yybegin(YLMONTH);
|
||||
<YLMONTH>{nyear} strcpy(year,yytext); yybegin(SHORT);
|
||||
|
||||
/* handle dates of the form: year-month-day */
|
||||
|
||||
<SHORT>{nyear} strcpy(year,yytext); BEGIN(YEAR_FIRST);
|
||||
<YEAR_FIRST>{nmonth} strcpy(month,yytext);BEGIN(YFMONTH);
|
||||
<YFMONTH>{nday} strcpy(day,yytext); BEGIN(SHORT);
|
||||
<SHORT>{nyear} strcpy(year,yytext); yybegin(YEAR_FIRST);
|
||||
<YEAR_FIRST>{nmonth} strcpy(month,yytext);yybegin(YFMONTH);
|
||||
<YFMONTH>{nday} strcpy(day,yytext); yybegin(SHORT);
|
||||
|
||||
|
||||
<SHORT>\n {
|
||||
@@ -96,8 +96,8 @@ day_ext (st|nd|rd|th)?
|
||||
strcpy(month,"");
|
||||
}
|
||||
|
||||
long\n BEGIN(LONG);
|
||||
short\n BEGIN(SHORT);
|
||||
long\n yybegin(LONG);
|
||||
short\n yybegin(SHORT);
|
||||
|
||||
{skip}*
|
||||
\n
|
||||
|
||||
@@ -17,15 +17,15 @@ int include_count = -1;
|
||||
|
||||
%%
|
||||
|
||||
^"#include"[ \t]*\" BEGIN(INCLUDE);
|
||||
<INCLUDE>\" BEGIN(INITIAL);
|
||||
^"#include"[ \t]*\" yybegin(INCLUDE);
|
||||
<INCLUDE>\" yybegin(INITIAL);
|
||||
<INCLUDE>[^\"]+ { /* get the include file name */
|
||||
if ( include_count >= MAX_NEST){
|
||||
fprintf( stderr, "Too many include files" );
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
include_stack[++include_count] = YY_CURRENT_BUFFER;
|
||||
include_stack[++include_count] = yy_current_buffer();
|
||||
|
||||
yyin = fopen( yytext, "r" );
|
||||
if ( ! yyin ){
|
||||
@@ -35,7 +35,7 @@ int include_count = -1;
|
||||
|
||||
yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE));
|
||||
|
||||
BEGIN(INITIAL);
|
||||
yybegin(INITIAL);
|
||||
}
|
||||
<INCLUDE><<EOF>>
|
||||
{
|
||||
@@ -48,7 +48,7 @@ int include_count = -1;
|
||||
} else {
|
||||
yy_delete_buffer(include_stack[include_count--] );
|
||||
yy_switch_to_buffer(include_stack[include_count] );
|
||||
BEGIN(INCLUDE);
|
||||
yybegin(INCLUDE);
|
||||
}
|
||||
}
|
||||
[a-z]+ ECHO;
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/* basic example, fully reentrant thread-safe version */
|
||||
%{
|
||||
struct stats {
|
||||
int num_lines;
|
||||
int num_chars;
|
||||
};
|
||||
%}
|
||||
%option reentrant noyywrap
|
||||
%option extra-type="struct stats"
|
||||
%%
|
||||
\n {
|
||||
struct stats ns = yyget_extra(yyscanner);
|
||||
++ns.num_lines; ++ns.num_chars;
|
||||
yyset_extra(ns, yyscanner);
|
||||
}
|
||||
. {
|
||||
struct stats ns = yyget_extra(yyscanner);
|
||||
++ns.num_chars;
|
||||
yyset_extra(ns, yyscanner);
|
||||
}
|
||||
|
||||
%%
|
||||
|
||||
int main() {
|
||||
yyscan_t scanner;
|
||||
struct stats ns;
|
||||
|
||||
yylex_init ( &scanner );
|
||||
yylex ( scanner );
|
||||
|
||||
ns = yyget_extra(scanner);
|
||||
printf( "# of lines = %d, # of chars = %d\n",
|
||||
ns.num_lines, ns.num_chars);
|
||||
yylex_destroy ( scanner );
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
/* basic example - non-reentrant version */
|
||||
%{
|
||||
int num_lines = 0, num_chars = 0;
|
||||
%}
|
||||
%option noyywrap
|
||||
%%
|
||||
\n ++num_lines; ++num_chars;
|
||||
. ++num_chars;
|
||||
|
||||
%%
|
||||
|
||||
int main() {
|
||||
yylex();
|
||||
printf( "# of lines = %d, # of chars = %d\n",
|
||||
num_lines, num_chars );
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
/* basic example - flawed reentrant version with global */
|
||||
%{
|
||||
int num_lines = 0, num_chars = 0;
|
||||
%}
|
||||
%option reentrant noyywrap
|
||||
%%
|
||||
\n ++num_lines; ++num_chars;
|
||||
. ++num_chars;
|
||||
|
||||
%%
|
||||
|
||||
int main() {
|
||||
yyscan_t scanner;
|
||||
|
||||
yylex_init ( &scanner );
|
||||
yylex ( scanner );
|
||||
yylex_destroy ( scanner );
|
||||
|
||||
printf( "# of lines = %d, # of chars = %d\n",
|
||||
num_lines, num_chars );
|
||||
}
|
||||
@@ -3,9 +3,6 @@
|
||||
#include <string.h>
|
||||
#include "y.tab.h" /* this comes from bison */
|
||||
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
#define copy_and_return(token_type) { strcpy(yylval.name,yytext); \
|
||||
return(token_type); }
|
||||
|
||||
|
||||
+22
-22
@@ -158,7 +158,7 @@ void write_block_header(char *type)
|
||||
printf("\n\n@table @b\n");
|
||||
}
|
||||
|
||||
"Examples:"[^\.]+ ECHO;
|
||||
"Examples:"[^\.]+ yyecho();
|
||||
|
||||
"*"[^*\n]+"*" { /* @emph{}(emphasized) text */
|
||||
yytext[yyleng-1] = '\0';
|
||||
@@ -205,12 +205,12 @@ void write_block_header(char *type)
|
||||
yyless(loop+1);
|
||||
statep++;
|
||||
states[statep] = EXAMPLE2;
|
||||
BEGIN(EXAMPLE2);
|
||||
yybegin(EXAMPLE2);
|
||||
}
|
||||
<EXAMPLE,EXAMPLE2>^\n {
|
||||
printf("@end example\n\n");
|
||||
statep--;
|
||||
BEGIN(states[statep]);
|
||||
yybegin(states[statep]);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -231,7 +231,7 @@ void write_block_header(char *type)
|
||||
yyless(loop);
|
||||
statep++;
|
||||
states[statep] = ENUM;
|
||||
BEGIN(ENUM);
|
||||
yybegin(ENUM);
|
||||
}
|
||||
|
||||
<ENUM>"@" printf("@@");
|
||||
@@ -239,7 +239,7 @@ void write_block_header(char *type)
|
||||
printf(":\n\n@example\n");
|
||||
statep++;
|
||||
states[statep] = EXAMPLE;
|
||||
BEGIN(EXAMPLE);
|
||||
yybegin(EXAMPLE);
|
||||
}
|
||||
|
||||
|
||||
@@ -250,7 +250,7 @@ void write_block_header(char *type)
|
||||
<ENUM>\n\n\n[ \t]+[^0-9] {
|
||||
printf("\n\n@end enumerate\n\n");
|
||||
statep--;
|
||||
BEGIN(states[statep]);
|
||||
yybegin(states[statep]);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -265,7 +265,7 @@ void write_block_header(char *type)
|
||||
yyless(2);
|
||||
statep++;
|
||||
states[statep] = LITEM2;
|
||||
BEGIN(LITEM2);
|
||||
yybegin(LITEM2);
|
||||
}
|
||||
<LITEM2>^":".+":" {
|
||||
(void)check_and_convert(&yytext[1]);
|
||||
@@ -275,9 +275,9 @@ void write_block_header(char *type)
|
||||
|
||||
<LITEM2>\n\n\n+[^:\n] {
|
||||
printf("\n\n@end itemize\n\n");
|
||||
ECHO;
|
||||
yyecho();
|
||||
statep--;
|
||||
BEGIN(states[statep]);
|
||||
yybegin(states[statep]);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -300,7 +300,7 @@ void write_block_header(char *type)
|
||||
yyless(loop);
|
||||
statep++;
|
||||
states[statep] = LITEM;
|
||||
BEGIN(LITEM);
|
||||
yybegin(LITEM);
|
||||
}
|
||||
<LITEM>^.+":" {
|
||||
(void)check_and_convert(yytext);
|
||||
@@ -318,7 +318,7 @@ void write_block_header(char *type)
|
||||
printf("@end itemize\n\n");
|
||||
printf("%s",&buffer[loop+1]);
|
||||
statep--;
|
||||
BEGIN(states[statep]);
|
||||
yybegin(states[statep]);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -338,27 +338,27 @@ void write_block_header(char *type)
|
||||
yyless((len-loop)+2);
|
||||
statep++;
|
||||
states[statep] = BITEM;
|
||||
BEGIN(BITEM);
|
||||
yybegin(BITEM);
|
||||
}
|
||||
|
||||
<BITEM>^" "*"*" {
|
||||
printf("@item");
|
||||
statep++;
|
||||
states[statep] = BITEM_ITEM;
|
||||
BEGIN(BITEM_ITEM);
|
||||
yybegin(BITEM_ITEM);
|
||||
}
|
||||
<BITEM>"@" printf("@@");
|
||||
<BITEM>^\n {
|
||||
printf("@end itemize\n\n");
|
||||
statep--;
|
||||
BEGIN(states[statep]);
|
||||
yybegin(states[statep]);
|
||||
}
|
||||
<BITEM_ITEM>[^\:]* {
|
||||
printf(" @b{%s}\n\n",check_and_convert(yytext));
|
||||
}
|
||||
<BITEM_ITEM>":" {
|
||||
statep--;
|
||||
BEGIN(states[statep]);
|
||||
yybegin(states[statep]);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -369,13 +369,13 @@ void write_block_header(char *type)
|
||||
(void)check_and_convert(&yytext[1]);
|
||||
statep++;
|
||||
states[statep] = HEADING;
|
||||
BEGIN(HEADING);
|
||||
yybegin(HEADING);
|
||||
}
|
||||
<HEADING>:[^\n] {
|
||||
printf("@item @b{%s}\n",buffer);
|
||||
write_underline(strlen(buffer),6,'~');
|
||||
statep--;
|
||||
BEGIN(states[statep]);
|
||||
yybegin(states[statep]);
|
||||
}
|
||||
<HEADING>:\n"*"* {
|
||||
if(need_closing == TRUE){
|
||||
@@ -385,7 +385,7 @@ void write_block_header(char *type)
|
||||
printf("@chapter %s\n",buffer);
|
||||
write_underline(strlen(buffer),9,'*');
|
||||
statep--;
|
||||
BEGIN(states[statep]);
|
||||
yybegin(states[statep]);
|
||||
}
|
||||
<HEADING>:\n"="* {
|
||||
if(need_closing == TRUE){
|
||||
@@ -395,7 +395,7 @@ void write_block_header(char *type)
|
||||
printf("@section %s\n",buffer);
|
||||
write_underline(strlen(buffer),9,'=');
|
||||
statep--;
|
||||
BEGIN(states[statep]);
|
||||
yybegin(states[statep]);
|
||||
}
|
||||
<HEADING>"@" printf("@@");
|
||||
<HEADING>:\n"-"* {
|
||||
@@ -406,7 +406,7 @@ void write_block_header(char *type)
|
||||
printf("@subsection %s\n",buffer);
|
||||
write_underline(strlen(buffer),12,'-');
|
||||
statep--;
|
||||
BEGIN(states[statep]);
|
||||
yybegin(states[statep]);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -417,10 +417,10 @@ void write_block_header(char *type)
|
||||
printf("@example\n");
|
||||
statep++;
|
||||
states[statep] = EXAMPLE;
|
||||
BEGIN(EXAMPLE);
|
||||
yybegin(EXAMPLE);
|
||||
}
|
||||
<EXAMPLE>^" "
|
||||
. ECHO;
|
||||
. yyecho();
|
||||
|
||||
%%
|
||||
|
||||
|
||||
@@ -19,13 +19,13 @@ int include_count = -1;
|
||||
|
||||
%%
|
||||
|
||||
"{" BEGIN(COMMENT);
|
||||
"{" yybegin(COMMENT);
|
||||
|
||||
<COMMENT>"}" BEGIN(INITIAL);
|
||||
<COMMENT>"$include"[ \t]*"(" BEGIN(INCLUDE);
|
||||
<COMMENT>"}" yybegin(INITIAL);
|
||||
<COMMENT>"$include"[ \t]*"(" yybegin(INCLUDE);
|
||||
<COMMENT>[ \t]* /* skip whitespace */
|
||||
|
||||
<INCLUDE>")" BEGIN(COMMENT);
|
||||
<INCLUDE>")" yybegin(COMMENT);
|
||||
<INCLUDE>[ \t]* /* skip whitespace */
|
||||
<INCLUDE>[^ \t\n() ]+ { /* get the include file name */
|
||||
if ( include_count >= MAX_NEST){
|
||||
@@ -33,7 +33,7 @@ int include_count = -1;
|
||||
exit( 1 );
|
||||
}
|
||||
|
||||
include_stack[++include_count] = YY_CURRENT_BUFFER;
|
||||
include_stack[++include_count] = yy_current_buffer();
|
||||
|
||||
yyin = fopen( yytext, "r" );
|
||||
if ( ! yyin ){
|
||||
@@ -43,7 +43,7 @@ int include_count = -1;
|
||||
|
||||
yy_switch_to_buffer(yy_create_buffer(yyin,YY_BUF_SIZE));
|
||||
|
||||
BEGIN(INITIAL);
|
||||
yybegin(INITIAL);
|
||||
}
|
||||
<INCLUDE><<EOF>>
|
||||
{
|
||||
@@ -61,11 +61,11 @@ int include_count = -1;
|
||||
} else {
|
||||
yy_delete_buffer(include_stack[include_count--] );
|
||||
yy_switch_to_buffer(include_stack[include_count] );
|
||||
BEGIN(INCLUDE);
|
||||
yybegin(INCLUDE);
|
||||
}
|
||||
}
|
||||
[a-z]+ ECHO;
|
||||
.|\n ECHO;
|
||||
[a-z]+ yyecho();
|
||||
.|\n yyecho();
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -31,17 +31,17 @@ bad_string \'([^'\n]|\'\')+
|
||||
|
||||
%%
|
||||
|
||||
"{" BEGIN(COMMENT1);
|
||||
"{" yybegin(COMMENT1);
|
||||
<COMMENT1>[^}\n]+
|
||||
<COMMENT1>\n ++line_number;
|
||||
<COMMENT1><<EOF>> yyerror("EOF in comment");
|
||||
<COMMENT1>"}" BEGIN(INITIAL);
|
||||
<COMMENT1>"}" yybegin(INITIAL);
|
||||
|
||||
"(*" BEGIN(COMMENT2);
|
||||
"(*" yybegin(COMMENT2);
|
||||
<COMMENT2>[^)*\n]+
|
||||
<COMMENT2>\n ++line_number;
|
||||
<COMMENT2><<EOF>> yyerror("EOF in comment");
|
||||
<COMMENT2>"*)" BEGIN(INITIAL);
|
||||
<COMMENT2>"*)" yybegin(INITIAL);
|
||||
<COMMENT2>[*)]
|
||||
|
||||
/* note that FILE and BEGIN are already
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
/*
|
||||
* reject.lex: An example of REJECT and unput()
|
||||
* reject.lex: An example of yyreject() and yyunput()
|
||||
* misuse.
|
||||
*/
|
||||
|
||||
%%
|
||||
UNIX {
|
||||
unput('U'); unput('N'); unput('G'); unput('\0');
|
||||
REJECT;
|
||||
yyunput('U'); yyunput('N'); yyunput('G'); yyunput('\0');
|
||||
yyreject();
|
||||
}
|
||||
GNU printf("GNU is Not Unix!\n");
|
||||
%%
|
||||
|
||||
@@ -16,7 +16,7 @@ char upper_replace[1024];
|
||||
|
||||
"yy" printf("%s",lower_replace);
|
||||
"YY" printf("%s",upper_replace);
|
||||
, ECHO;
|
||||
, yyecho();
|
||||
|
||||
%%
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* string1.lex: Handling strings by using input()
|
||||
* string1.lex: Handling strings by using yyinput()
|
||||
*/
|
||||
|
||||
%{
|
||||
@@ -27,13 +27,13 @@ void yyerror(char *message)
|
||||
|
||||
buffer = malloc(ALLOC_SIZE);
|
||||
max_size = ALLOC_SIZE;
|
||||
inch = input();
|
||||
inch = yyinput();
|
||||
count = 0;
|
||||
while(inch != EOF && inch != '"' && inch != '\n'){
|
||||
if(inch == '\\'){
|
||||
inch = input();
|
||||
inch = yyinput();
|
||||
switch(inch){
|
||||
case '\n': inch = input(); break;
|
||||
case '\n': inch = yyinput(); break;
|
||||
case 'b' : inch = '\b'; break;
|
||||
case 't' : inch = '\t'; break;
|
||||
case 'n' : inch = '\n'; break;
|
||||
@@ -41,10 +41,10 @@ void yyerror(char *message)
|
||||
case 'f' : inch = '\f'; break;
|
||||
case 'r' : inch = '\r'; break;
|
||||
case 'X' :
|
||||
case 'x' : inch = input();
|
||||
case 'x' : inch = yyinput();
|
||||
if(isxdigit(inch)){
|
||||
temp = hextoint(toupper(inch));
|
||||
inch = input();
|
||||
inch = yyinput();
|
||||
if(isxdigit(inch)){
|
||||
temp = (temp << 4) + hextoint(toupper(inch));
|
||||
} else {
|
||||
@@ -59,14 +59,14 @@ void yyerror(char *message)
|
||||
default:
|
||||
if(isodigit(inch)){
|
||||
temp = inch - '0';
|
||||
inch = input();
|
||||
inch = yyinput();
|
||||
if(isodigit(inch)){
|
||||
temp = (temp << 3) + (inch - '0');
|
||||
} else {
|
||||
unput(inch);
|
||||
goto done;
|
||||
}
|
||||
inch = input();
|
||||
inch = yyinput();
|
||||
if(isodigit(inch)){
|
||||
temp = (temp << 3) + (inch - '0');
|
||||
} else {
|
||||
@@ -82,7 +82,7 @@ void yyerror(char *message)
|
||||
buffer = realloc(buffer,max_size + ALLOC_SIZE);
|
||||
max_size += ALLOC_SIZE;
|
||||
}
|
||||
inch = input();
|
||||
inch = yyinput();
|
||||
}
|
||||
if(inch == EOF || inch == '\n'){
|
||||
yyerror("Unterminated string.");
|
||||
|
||||
@@ -30,17 +30,17 @@ oct [0-7]{1,3}
|
||||
\" {
|
||||
buffer = malloc(1);
|
||||
buffer_size = 1; strcpy(buffer,"");
|
||||
BEGIN(STRING);
|
||||
yybegin(STRING);
|
||||
}
|
||||
<STRING>\n {
|
||||
yyerror("Unterminated string");
|
||||
free(buffer);
|
||||
BEGIN(INITIAL);
|
||||
yybegin(INITIAL);
|
||||
}
|
||||
<STRING><<EOF>> {
|
||||
yyerror("EOF in string");
|
||||
free(buffer);
|
||||
BEGIN(INITIAL);
|
||||
yybegin(INITIAL);
|
||||
}
|
||||
<STRING>[^\\\n"] {
|
||||
buffer = realloc(buffer,buffer_size+yyleng+1);
|
||||
@@ -87,7 +87,7 @@ oct [0-7]{1,3}
|
||||
<STRING>\" {
|
||||
printf("string = \"%s\"",buffer);
|
||||
free(buffer);
|
||||
BEGIN(INITIAL);
|
||||
yybegin(INITIAL);
|
||||
}
|
||||
%%
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* unput.l : An example of what *not*
|
||||
* to do with unput().
|
||||
* to do with yyunput().
|
||||
*/
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ void putback_yytext(void)
|
||||
strcpy(buffer,yytext);
|
||||
printf("Got: %s\n",yytext);
|
||||
for(i=0; i<l; i++){
|
||||
unput(buffer[i]);
|
||||
yyunput(buffer[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,14 +4,13 @@
|
||||
|
||||
void user_action(void);
|
||||
|
||||
#define YY_USER_ACTION user_action();
|
||||
|
||||
%}
|
||||
|
||||
%option pre-action = "user_action();"
|
||||
%%
|
||||
|
||||
.* ECHO;
|
||||
\n ECHO;
|
||||
.* yyecho();
|
||||
\n yyecho();
|
||||
|
||||
%%
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
%{
|
||||
#define YY_USER_INIT open_input_file()
|
||||
|
||||
extern FILE *yyin;
|
||||
|
||||
void open_input_file(void)
|
||||
@@ -27,4 +25,5 @@ void open_input_file(void)
|
||||
}
|
||||
|
||||
%}
|
||||
%option user-init = "open_input_file();"
|
||||
%%
|
||||
|
||||
@@ -16,14 +16,14 @@ void yyerror(char *message)
|
||||
%x STRING
|
||||
|
||||
%%
|
||||
\" BEGIN(STRING);
|
||||
\" yybegin(STRING);
|
||||
|
||||
<STRING>[^\\\n"]* yymore();
|
||||
<STRING><<EOF>> yyerror("EOF in string."); BEGIN(INITIAL);
|
||||
<STRING>\n yyerror("Unterminated string."); BEGIN(INITIAL);
|
||||
<STRING><<EOF>> yyerror("EOF in string."); yybegin(INITIAL);
|
||||
<STRING>\n yyerror("Unterminated string."); yybegin(INITIAL);
|
||||
<STRING>\\\n yymore();
|
||||
<STRING>\" {
|
||||
yytext[yyleng-1] = '\0';
|
||||
printf("string = \"%s\"",yytext); BEGIN(INITIAL);
|
||||
printf("string = \"%s\"",yytext); yybegin(INITIAL);
|
||||
}
|
||||
%%
|
||||
|
||||
@@ -16,11 +16,11 @@ void yyerror(char *message)
|
||||
%x STRING
|
||||
|
||||
%%
|
||||
\" BEGIN(STRING);
|
||||
\" yybegin(STRING);
|
||||
|
||||
<STRING>[^\\\n"]* yymore();
|
||||
<STRING><<EOF>> yyerror("EOF in string."); BEGIN(INITIAL);
|
||||
<STRING>\n yyerror("Unterminated string."); BEGIN(INITIAL);
|
||||
<STRING><<EOF>> yyerror("EOF in string."); yybegin(INITIAL);
|
||||
<STRING>\n yyerror("Unterminated string."); yybegin(INITIAL);
|
||||
<STRING>\\\n {
|
||||
bcopy(yytext,yytext+2,yyleng-2);
|
||||
yytext += 2; yyleng -= 2;
|
||||
@@ -28,6 +28,6 @@ void yyerror(char *message)
|
||||
}
|
||||
<STRING>\" {
|
||||
yyleng -= 1; yytext[yyleng] = '\0';
|
||||
printf("string = \"%s\"",yytext); BEGIN(INITIAL);
|
||||
printf("string = \"%s\"",yytext); yybegin(INITIAL);
|
||||
}
|
||||
%%
|
||||
|
||||
@@ -39,13 +39,13 @@ number {num1}|{num2}
|
||||
}
|
||||
}
|
||||
|
||||
{number} FLEX_STD cout << "number " << YYText() << '\n';
|
||||
{number} std::cout << "number " << YYText() << '\n';
|
||||
|
||||
\n mylineno++;
|
||||
|
||||
{name} FLEX_STD cout << "name " << YYText() << '\n';
|
||||
{name} std::cout << "name " << YYText() << '\n';
|
||||
|
||||
{string} FLEX_STD cout << "string " << YYText() << '\n';
|
||||
{string} std::cout << "string " << YYText() << '\n';
|
||||
|
||||
%%
|
||||
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
noinst_LTLIBRARIES = libcompat.la
|
||||
libcompat_la_SOURCES = lib.c
|
||||
libcompat_la_LIBADD = $(LTLIBOBJS)
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
/* Since building an empty library could cause problems, we provide a
|
||||
* function to go into the library. We could make this non-trivial by
|
||||
* moving something that flex treats as a library function into this
|
||||
* directory. */
|
||||
|
||||
void do_nothing(){ return;}
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_prog_cc_for_build.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
#
|
||||
# AX_PROG_CC_FOR_BUILD
|
||||
#
|
||||
# DESCRIPTION
|
||||
#
|
||||
# This macro searches for a C compiler that generates native executables,
|
||||
# that is a C compiler that surely is not a cross-compiler. This can be
|
||||
# useful if you have to generate source code at compile-time like for
|
||||
# example GCC does.
|
||||
#
|
||||
# The macro sets the CC_FOR_BUILD and CPP_FOR_BUILD macros to anything
|
||||
# needed to compile or link (CC_FOR_BUILD) and preprocess (CPP_FOR_BUILD).
|
||||
# The value of these variables can be overridden by the user by specifying
|
||||
# a compiler with an environment variable (like you do for standard CC).
|
||||
#
|
||||
# It also sets BUILD_EXEEXT and BUILD_OBJEXT to the executable and object
|
||||
# file extensions for the build platform, and GCC_FOR_BUILD to `yes' if
|
||||
# the compiler we found is GCC. All these variables but GCC_FOR_BUILD are
|
||||
# substituted in the Makefile.
|
||||
#
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
|
||||
#
|
||||
# Copying and distribution of this file, with or without modification, are
|
||||
# permitted in any medium without royalty provided the copyright notice
|
||||
# and this notice are preserved. This file is offered as-is, without any
|
||||
# warranty.
|
||||
|
||||
#serial 8
|
||||
|
||||
AU_ALIAS([AC_PROG_CC_FOR_BUILD], [AX_PROG_CC_FOR_BUILD])
|
||||
AC_DEFUN([AX_PROG_CC_FOR_BUILD], [dnl
|
||||
AC_REQUIRE([AC_PROG_CC])dnl
|
||||
AC_REQUIRE([AC_PROG_CPP])dnl
|
||||
AC_REQUIRE([AC_EXEEXT])dnl
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
|
||||
dnl Use the standard macros, but make them use other variable names
|
||||
dnl
|
||||
pushdef([ac_cv_prog_CPP], ac_cv_build_prog_CPP)dnl
|
||||
pushdef([ac_cv_prog_gcc], ac_cv_build_prog_gcc)dnl
|
||||
pushdef([ac_cv_prog_cc_works], ac_cv_build_prog_cc_works)dnl
|
||||
pushdef([ac_cv_prog_cc_cross], ac_cv_build_prog_cc_cross)dnl
|
||||
pushdef([ac_cv_prog_cc_g], ac_cv_build_prog_cc_g)dnl
|
||||
pushdef([ac_cv_exeext], ac_cv_build_exeext)dnl
|
||||
pushdef([ac_cv_objext], ac_cv_build_objext)dnl
|
||||
pushdef([ac_exeext], ac_build_exeext)dnl
|
||||
pushdef([ac_objext], ac_build_objext)dnl
|
||||
pushdef([CC], CC_FOR_BUILD)dnl
|
||||
pushdef([CPP], CPP_FOR_BUILD)dnl
|
||||
pushdef([CFLAGS], CFLAGS_FOR_BUILD)dnl
|
||||
pushdef([CPPFLAGS], CPPFLAGS_FOR_BUILD)dnl
|
||||
pushdef([LDFLAGS], LDFLAGS_FOR_BUILD)dnl
|
||||
pushdef([host], build)dnl
|
||||
pushdef([host_alias], build_alias)dnl
|
||||
pushdef([host_cpu], build_cpu)dnl
|
||||
pushdef([host_vendor], build_vendor)dnl
|
||||
pushdef([host_os], build_os)dnl
|
||||
pushdef([ac_cv_host], ac_cv_build)dnl
|
||||
pushdef([ac_cv_host_alias], ac_cv_build_alias)dnl
|
||||
pushdef([ac_cv_host_cpu], ac_cv_build_cpu)dnl
|
||||
pushdef([ac_cv_host_vendor], ac_cv_build_vendor)dnl
|
||||
pushdef([ac_cv_host_os], ac_cv_build_os)dnl
|
||||
pushdef([ac_cpp], ac_build_cpp)dnl
|
||||
pushdef([ac_compile], ac_build_compile)dnl
|
||||
pushdef([ac_link], ac_build_link)dnl
|
||||
|
||||
save_cross_compiling=$cross_compiling
|
||||
save_ac_tool_prefix=$ac_tool_prefix
|
||||
cross_compiling=no
|
||||
ac_tool_prefix=
|
||||
|
||||
AC_PROG_CC
|
||||
AC_PROG_CPP
|
||||
AC_EXEEXT
|
||||
|
||||
ac_tool_prefix=$save_ac_tool_prefix
|
||||
cross_compiling=$save_cross_compiling
|
||||
|
||||
dnl Restore the old definitions
|
||||
dnl
|
||||
popdef([ac_link])dnl
|
||||
popdef([ac_compile])dnl
|
||||
popdef([ac_cpp])dnl
|
||||
popdef([ac_cv_host_os])dnl
|
||||
popdef([ac_cv_host_vendor])dnl
|
||||
popdef([ac_cv_host_cpu])dnl
|
||||
popdef([ac_cv_host_alias])dnl
|
||||
popdef([ac_cv_host])dnl
|
||||
popdef([host_os])dnl
|
||||
popdef([host_vendor])dnl
|
||||
popdef([host_cpu])dnl
|
||||
popdef([host_alias])dnl
|
||||
popdef([host])dnl
|
||||
popdef([LDFLAGS])dnl
|
||||
popdef([CPPFLAGS])dnl
|
||||
popdef([CFLAGS])dnl
|
||||
popdef([CPP])dnl
|
||||
popdef([CC])dnl
|
||||
popdef([ac_objext])dnl
|
||||
popdef([ac_exeext])dnl
|
||||
popdef([ac_cv_objext])dnl
|
||||
popdef([ac_cv_exeext])dnl
|
||||
popdef([ac_cv_prog_cc_g])dnl
|
||||
popdef([ac_cv_prog_cc_cross])dnl
|
||||
popdef([ac_cv_prog_cc_works])dnl
|
||||
popdef([ac_cv_prog_gcc])dnl
|
||||
popdef([ac_cv_prog_CPP])dnl
|
||||
|
||||
dnl Finally, set Makefile variables
|
||||
dnl
|
||||
BUILD_EXEEXT=$ac_build_exeext
|
||||
BUILD_OBJEXT=$ac_build_objext
|
||||
AC_SUBST(BUILD_EXEEXT)dnl
|
||||
AC_SUBST(BUILD_OBJEXT)dnl
|
||||
AC_SUBST([CFLAGS_FOR_BUILD])dnl
|
||||
AC_SUBST([CPPFLAGS_FOR_BUILD])dnl
|
||||
AC_SUBST([LDFLAGS_FOR_BUILD])dnl
|
||||
])
|
||||
+2
-23
@@ -1,23 +1,2 @@
|
||||
ca
|
||||
da
|
||||
de
|
||||
en@quot
|
||||
en@boldquot
|
||||
eo
|
||||
es
|
||||
fi
|
||||
fr
|
||||
ga
|
||||
hr
|
||||
ko
|
||||
nl
|
||||
pl
|
||||
pt_BR
|
||||
ro
|
||||
ru
|
||||
sr
|
||||
sv
|
||||
tr
|
||||
vi
|
||||
zh_CN
|
||||
zh_TW
|
||||
# List of available languages.
|
||||
bg ca da de en@boldquot en@quot eo es fi fr ga hr ko nl pl pt pt_BR ro ru sr sv tr uk vi zh_CN zh_TW
|
||||
|
||||
+38
-1
@@ -8,7 +8,7 @@ subdir = po
|
||||
top_builddir = ..
|
||||
|
||||
# These options get passed to xgettext.
|
||||
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
|
||||
XGETTEXT_OPTIONS = --language=C --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
|
||||
@@ -20,6 +20,13 @@ XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
|
||||
# their copyright.
|
||||
COPYRIGHT_HOLDER =
|
||||
|
||||
# This tells whether or not to prepend "GNU " prefix to the package
|
||||
# name that gets inserted into the header of the $(DOMAIN).pot file.
|
||||
# Possible values are "yes", "no", or empty. If it is empty, try to
|
||||
# detect it automatically by scanning the files in $(top_srcdir) for
|
||||
# "GNU packagename" string.
|
||||
PACKAGE_GNU = "no"
|
||||
|
||||
# This is the email address or URL to which the translators shall report
|
||||
# bugs in the untranslated strings:
|
||||
# - Strings which are not entire sentences, see the maintainer guidelines
|
||||
@@ -39,3 +46,33 @@ MSGID_BUGS_ADDRESS = flex-devel@lists.sourceforge.net
|
||||
# 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 =
|
||||
|
||||
# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
|
||||
# context. Possible values are "yes" and "no". Set this to yes if the
|
||||
# package uses functions taking also a message context, like pgettext(), or
|
||||
# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
|
||||
USE_MSGCTXT = no
|
||||
|
||||
# These options get passed to msgmerge.
|
||||
# Useful options are in particular:
|
||||
# --previous to keep previous msgids of translated messages,
|
||||
# --quiet to reduce the verbosity.
|
||||
MSGMERGE_OPTIONS =
|
||||
|
||||
# These options get passed to msginit.
|
||||
# If you want to disable line wrapping when writing PO files, add
|
||||
# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and
|
||||
# MSGINIT_OPTIONS.
|
||||
MSGINIT_OPTIONS =
|
||||
|
||||
# This tells whether or not to regenerate a PO file when $(DOMAIN).pot
|
||||
# has changed. Possible values are "yes" and "no". Set this to no if
|
||||
# the POT file is checked in the repository and the version control
|
||||
# program ignores timestamps.
|
||||
PO_DEPENDS_ON_POT = yes
|
||||
|
||||
# This tells whether or not to forcibly update $(DOMAIN).pot and
|
||||
# regenerate PO files on "make dist". Possible values are "yes" and
|
||||
# "no". Set this to no if the POT file and PO files are maintained
|
||||
# externally.
|
||||
DIST_DEPENDS_ON_UPDATE_PO = no
|
||||
|
||||
@@ -12,7 +12,6 @@ src/options.c
|
||||
src/parse.y
|
||||
src/scan.l
|
||||
src/scanopt.c
|
||||
src/skel.c
|
||||
src/sym.c
|
||||
src/tblcmp.c
|
||||
src/yylex.c
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
# Rules to fetch the translation project's po files for a domain
|
||||
|
||||
# Just rsync the *.po files for a particular textual domain into the
|
||||
# po/ subdirectory of the project's source tree
|
||||
|
||||
getpo:
|
||||
rsync -Ltvz translationproject.org::tp/latest/flex/*.po $(top_srcdir)/po
|
||||
|
||||
.PHONY: getpo
|
||||
@@ -0,0 +1,972 @@
|
||||
# Bulgarian translation of flex po-file.
|
||||
# Copyright (C) 2019, 2021 The Flex Project (msgids)
|
||||
# This file is distributed under the same license as the flex package.
|
||||
# Alexander Shopov <ash@kambanaria.org>, 2019, 2021.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: flex 2.6.4\n"
|
||||
"Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n"
|
||||
"POT-Creation-Date: 2022-09-27 14:18-0400\n"
|
||||
"PO-Revision-Date: 2022-01-03 10:52+0100\n"
|
||||
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
|
||||
"Language-Team: Bulgarian <dict@ludost.net>\n"
|
||||
"Language: bg\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Bugs: Report translation errors to the Language-Team address.\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: src/buf.c:61
|
||||
msgid "Allocation of buffer to print string failed"
|
||||
msgstr "Неуспешно заделяне на буфер за отпечатване на низ"
|
||||
|
||||
#: src/ccl.c:80
|
||||
msgid "internal error: trying to add a char to a non-last ccl.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/dfa.c:59
|
||||
#, c-format
|
||||
msgid "State #%d is non-accepting -\n"
|
||||
msgstr "Състояние №%d е неприемащо —\n"
|
||||
|
||||
#: src/dfa.c:119
|
||||
msgid "dangerous trailing context"
|
||||
msgstr "опасен последващ контекст"
|
||||
|
||||
#: src/dfa.c:159
|
||||
#, c-format
|
||||
msgid " associated rule line numbers:"
|
||||
msgstr " номера на редове на съответното правило:"
|
||||
|
||||
#: src/dfa.c:193
|
||||
#, c-format
|
||||
msgid " out-transitions: "
|
||||
msgstr " изходящи преходи: "
|
||||
|
||||
#: src/dfa.c:201
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" jam-transitions: EOF "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" обобщени преходи: край на файл"
|
||||
|
||||
#: src/dfa.c:331
|
||||
msgid "consistency check failed in epsclosure()"
|
||||
msgstr "неуспешна проверка за консистентност в „epsclosure()“"
|
||||
|
||||
#: src/dfa.c:422
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"DFA Dump:\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Извеждане на ДКА:\n"
|
||||
"\n"
|
||||
|
||||
#: src/dfa.c:558
|
||||
msgid "could not create unique end-of-buffer state"
|
||||
msgstr "уникалното състояние за край на буфер не може да се създаде"
|
||||
|
||||
#: src/dfa.c:579
|
||||
#, c-format
|
||||
msgid "state # %d:\n"
|
||||
msgstr "състояние №%d:\n"
|
||||
|
||||
#: src/dfa.c:738
|
||||
msgid "Could not write yynxt_tbl[][]"
|
||||
msgstr "„yynxt_tbl[][]“ не може да се запише"
|
||||
|
||||
#: src/dfa.c:1001
|
||||
msgid "bad transition character detected in sympartition()"
|
||||
msgstr "в „sympartition()“ има неправилен знак за преход"
|
||||
|
||||
#: src/gen.c:379
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Equivalence Classes:\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Класове на еквивалентност:\n"
|
||||
"\n"
|
||||
|
||||
#: src/gen.c:425 src/gen.c:454 src/gen.c:638
|
||||
#, c-format
|
||||
msgid "state # %d accepts: [%d]\n"
|
||||
msgstr "състояние №%d приема: [%d]\n"
|
||||
|
||||
#: src/gen.c:533
|
||||
#, c-format
|
||||
msgid "state # %d accepts: "
|
||||
msgstr "състояние №%d приема: "
|
||||
|
||||
#: src/gen.c:582
|
||||
msgid "Could not write yyacclist_tbl"
|
||||
msgstr "„yyacclist_tbl“ не може да се запише"
|
||||
|
||||
#: src/gen.c:659
|
||||
msgid "Could not write yyacc_tbl"
|
||||
msgstr "„yyacc_tbl“ не може да се запише"
|
||||
|
||||
#: src/gen.c:674 src/gen.c:947 src/gen.c:974
|
||||
msgid "Could not write ecstbl"
|
||||
msgstr "„ecstbl“ не може да се запише"
|
||||
|
||||
#: src/gen.c:694
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Meta-Equivalence Classes:\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Класове за мета-еквивалентност:\n"
|
||||
|
||||
#: src/gen.c:714
|
||||
msgid "Could not write yymeta_tbl"
|
||||
msgstr "„yymeta_tbl“ не може да се запише"
|
||||
|
||||
#: src/gen.c:774
|
||||
msgid "Could not write yybase_tbl"
|
||||
msgstr "„yybase_tbl“ не може да се запише"
|
||||
|
||||
#: src/gen.c:805
|
||||
msgid "Could not write yydef_tbl"
|
||||
msgstr "„yydef_tbl“ не може да се запише"
|
||||
|
||||
#: src/gen.c:844
|
||||
msgid "Could not write yynxt_tbl"
|
||||
msgstr "„yynxt_tbl“ не може да се запише"
|
||||
|
||||
#: src/gen.c:877
|
||||
msgid "Could not write yychk_tbl"
|
||||
msgstr "„yychk_tbl“ не може да се запише"
|
||||
|
||||
#: src/gen.c:932 src/gen.c:965
|
||||
msgid "Could not write ftbl"
|
||||
msgstr "„ftbl“ не може да се запише"
|
||||
|
||||
#: src/gen.c:938
|
||||
msgid "Could not write ssltbl"
|
||||
msgstr "„ssltbl“ не може да се запише"
|
||||
|
||||
#: src/gen.c:1014
|
||||
msgid "Could not write eoltbl"
|
||||
msgstr "„eoltbl“ не може да се запише"
|
||||
|
||||
#: src/gen.c:1061
|
||||
msgid "Could not write yynultrans_tbl"
|
||||
msgstr "„yynultrans_tbl“ не може да се запише"
|
||||
|
||||
#: src/main.c:169
|
||||
msgid "rule cannot be matched"
|
||||
msgstr "правилото не напасва"
|
||||
|
||||
#: src/main.c:174
|
||||
msgid "-s option given but default rule can be matched"
|
||||
msgstr "зададена е опцията „-s“, но стандартното правило напасва"
|
||||
|
||||
#: src/main.c:317
|
||||
msgid "Can't use -+ with -l option"
|
||||
msgstr "опциите „-+“ и „-l“ са несъвместими"
|
||||
|
||||
#: src/main.c:320
|
||||
msgid "Can't use -f or -F with -l option"
|
||||
msgstr "опциите „-f“/„-F“ и „-l“ са несъвместими"
|
||||
|
||||
#: src/main.c:324
|
||||
#, fuzzy
|
||||
msgid "Can't use --ctrl.reentrant or --bison-bridge with -l option"
|
||||
msgstr "опциите „--reentrant“/„--bison-bridge“ и „-l“ са несъвместими"
|
||||
|
||||
#: src/main.c:356
|
||||
msgid "-Cf/-CF and -Cm don't make sense together"
|
||||
msgstr "опциите „-Cf“/„-CF“ и „-Cm“ са несъвместими"
|
||||
|
||||
#: src/main.c:359
|
||||
msgid "-Cf/-CF and -I are incompatible"
|
||||
msgstr "опциите „-Cf“/„-CF“ и „-I“ са несъвместими"
|
||||
|
||||
#: src/main.c:363
|
||||
msgid "-Cf/-CF are incompatible with lex-compatibility mode"
|
||||
msgstr "опциите „-Cf“/„-CF“ са несъвместими с режима за съвместимост с „lex“"
|
||||
|
||||
#: src/main.c:368
|
||||
msgid "-Cf and -CF are mutually exclusive"
|
||||
msgstr "опциите „-Cf“ и „-CF“ са несъвместими"
|
||||
|
||||
#: src/main.c:372
|
||||
msgid "Can't use -+ with -CF option"
|
||||
msgstr "опциите „-+“ и „-CF“ са несъвместими"
|
||||
|
||||
#: src/main.c:375
|
||||
#, c-format
|
||||
msgid "%array incompatible with -+ option"
|
||||
msgstr "опцията „-+“ e несъвместима с декларация „%array“"
|
||||
|
||||
#: src/main.c:380
|
||||
msgid "Options -+ and --reentrant are mutually exclusive."
|
||||
msgstr "Опциите „-+“ и „--reentrant“ са несъвместими."
|
||||
|
||||
#: src/main.c:383
|
||||
msgid "bison bridge not supported for the C++ scanner."
|
||||
msgstr ""
|
||||
"анализатори, които са на C++, не поддържат допълнителната поддръжка за "
|
||||
"„bison“."
|
||||
|
||||
#: src/main.c:422 src/main.c:1235
|
||||
#, c-format
|
||||
msgid "could not create %s"
|
||||
msgstr "„%s“ не може да се създаде"
|
||||
|
||||
#: src/main.c:443
|
||||
#, c-format
|
||||
msgid "%option yyclass only meaningful for C++ scanners"
|
||||
msgstr ""
|
||||
"директивата за „%option“ — „yyclass“ важи само за анализаторите, които са на "
|
||||
"C++"
|
||||
|
||||
#: src/main.c:447
|
||||
#, c-format
|
||||
msgid "input error reading skeleton file %s"
|
||||
msgstr "входна грешка при изчитане на скелетния файл „%s“"
|
||||
|
||||
#: src/main.c:451
|
||||
#, c-format
|
||||
msgid "error closing skeleton file %s"
|
||||
msgstr "грешка при затваряне на скелетния файл „%s“"
|
||||
|
||||
#: src/main.c:457
|
||||
#, c-format
|
||||
msgid "error writing output file %s"
|
||||
msgstr "грешка при записването на изходния файл „%s“"
|
||||
|
||||
#: src/main.c:461
|
||||
#, c-format
|
||||
msgid "error closing output file %s"
|
||||
msgstr "грешка при затварянето на изходния файл „%s“"
|
||||
|
||||
#: src/main.c:465
|
||||
#, c-format
|
||||
msgid "error deleting output file %s"
|
||||
msgstr "грешка при изтриването на изходния файл „%s“"
|
||||
|
||||
#: src/main.c:472
|
||||
#, c-format
|
||||
msgid "No backing up.\n"
|
||||
msgstr "Без връщане назад.\n"
|
||||
|
||||
#: src/main.c:476
|
||||
#, c-format
|
||||
msgid "%d backing up (non-accepting) states.\n"
|
||||
msgstr "%d състояния за връщане (неприемащи)\n"
|
||||
|
||||
#: src/main.c:480
|
||||
#, c-format
|
||||
msgid "Compressed tables always back up.\n"
|
||||
msgstr "Компресираните таблици винаги водят до връщане назад.\n"
|
||||
|
||||
#: src/main.c:483
|
||||
#, c-format
|
||||
msgid "error writing backup file %s"
|
||||
msgstr "грешка при записа на файла с връщанията назад „%s“"
|
||||
|
||||
#: src/main.c:487
|
||||
#, c-format
|
||||
msgid "error closing backup file %s"
|
||||
msgstr "грешка при затварянето на файла с връщанията назад „%s“"
|
||||
|
||||
#: src/main.c:492
|
||||
#, c-format
|
||||
msgid "%s version %s usage statistics:\n"
|
||||
msgstr "Статистика за употреба на %s, версия %s:\n"
|
||||
|
||||
#: src/main.c:495
|
||||
#, c-format
|
||||
msgid " scanner options: -"
|
||||
msgstr " опции на лексическия анализатор: -"
|
||||
|
||||
#: src/main.c:574
|
||||
#, c-format
|
||||
msgid " %d/%d NFA states\n"
|
||||
msgstr " %d/%d състояния на НКА\n"
|
||||
|
||||
#: src/main.c:576
|
||||
#, c-format
|
||||
msgid " %d/%d DFA states (%d words)\n"
|
||||
msgstr " %d/%d състояния на ДКА (%d думи)\n"
|
||||
|
||||
#: src/main.c:578
|
||||
#, c-format
|
||||
msgid " %d rules\n"
|
||||
msgstr " %d правила\n"
|
||||
|
||||
#: src/main.c:583
|
||||
#, c-format
|
||||
msgid " No backing up\n"
|
||||
msgstr " Без връщане назад\n"
|
||||
|
||||
#: src/main.c:587
|
||||
#, c-format
|
||||
msgid " %d backing-up (non-accepting) states\n"
|
||||
msgstr " %d състояния за връщане (неприемащи)\n"
|
||||
|
||||
#: src/main.c:592
|
||||
#, c-format
|
||||
msgid " Compressed tables always back-up\n"
|
||||
msgstr " Компресираните таблици винаги водят до връщане\n"
|
||||
|
||||
#: src/main.c:596
|
||||
#, c-format
|
||||
msgid " Beginning-of-line patterns used\n"
|
||||
msgstr " Използвани са правила за начало на ред\n"
|
||||
|
||||
#: src/main.c:598
|
||||
#, c-format
|
||||
msgid " %d/%d start conditions\n"
|
||||
msgstr " %d/%d начални състояния\n"
|
||||
|
||||
#: src/main.c:602
|
||||
#, c-format
|
||||
msgid " %d epsilon states, %d double epsilon states\n"
|
||||
msgstr " %d ε-състояния, %d двойни ε-състояния\n"
|
||||
|
||||
#: src/main.c:606
|
||||
#, c-format
|
||||
msgid " no character classes\n"
|
||||
msgstr " няма класове знаци\n"
|
||||
|
||||
#: src/main.c:610
|
||||
#, c-format
|
||||
msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n"
|
||||
msgstr ""
|
||||
" %d/%d класове за знаци изискваха %d/%d думи за съхранение, преизползвани "
|
||||
"са %d\n"
|
||||
|
||||
#: src/main.c:615
|
||||
#, c-format
|
||||
msgid " %d state/nextstate pairs created\n"
|
||||
msgstr " %d двойки състояние/преход\n"
|
||||
|
||||
#: src/main.c:618
|
||||
#, c-format
|
||||
msgid " %d/%d unique/duplicate transitions\n"
|
||||
msgstr " %d/%d уникални/повтарящи се преходи\n"
|
||||
|
||||
#: src/main.c:623
|
||||
#, c-format
|
||||
msgid " %d table entries\n"
|
||||
msgstr " %d таблични записи\n"
|
||||
|
||||
#: src/main.c:631
|
||||
#, c-format
|
||||
msgid " %d/%d base-def entries created\n"
|
||||
msgstr " %d/%d записи за основни дефиниции\n"
|
||||
|
||||
#: src/main.c:635
|
||||
#, c-format
|
||||
msgid " %d/%d (peak %d) nxt-chk entries created\n"
|
||||
msgstr " %d/%d (максимум %d) записи\n"
|
||||
|
||||
#: src/main.c:639
|
||||
#, c-format
|
||||
msgid " %d/%d (peak %d) template nxt-chk entries created\n"
|
||||
msgstr " %d/%d (максимум %d) шаблонни записи\n"
|
||||
|
||||
#: src/main.c:643
|
||||
#, c-format
|
||||
msgid " %d empty table entries\n"
|
||||
msgstr " %d празни таблични записи\n"
|
||||
|
||||
#: src/main.c:645
|
||||
#, c-format
|
||||
msgid " %d protos created\n"
|
||||
msgstr " %d създадени прототипи\n"
|
||||
|
||||
#: src/main.c:648
|
||||
#, c-format
|
||||
msgid " %d templates created, %d uses\n"
|
||||
msgstr " %d създадени шаблони, %d употреби\n"
|
||||
|
||||
#: src/main.c:656
|
||||
#, c-format
|
||||
msgid " %d/%d equivalence classes created\n"
|
||||
msgstr " създадени са %d/%d класове за еквивалентност\n"
|
||||
|
||||
#: src/main.c:664
|
||||
#, c-format
|
||||
msgid " %d/%d meta-equivalence classes created\n"
|
||||
msgstr " създадени са %d/%d класове за мета-еквивалентност\n"
|
||||
|
||||
#: src/main.c:670
|
||||
#, c-format
|
||||
msgid " %d (%d saved) hash collisions, %d DFAs equal\n"
|
||||
msgstr " %d (%d запазени) конфликти по суми, %d ДКА са еднакви\n"
|
||||
|
||||
#: src/main.c:672
|
||||
#, c-format
|
||||
msgid " %d sets of reallocations needed\n"
|
||||
msgstr " необходими са %d пъти заделяния на памет наново\n"
|
||||
|
||||
#: src/main.c:674
|
||||
#, c-format
|
||||
msgid " %d total table entries needed\n"
|
||||
msgstr " необходими са общо %d записи в таблица\n"
|
||||
|
||||
#: src/main.c:735
|
||||
#, c-format
|
||||
msgid "Internal error. flexopts are malformed.\n"
|
||||
msgstr "Вътрешна грешка. Неправилни опции за flex.\n"
|
||||
|
||||
#: src/main.c:745
|
||||
#, c-format
|
||||
msgid "Try `%s --help' for more information.\n"
|
||||
msgstr "За повече информация изпълнете „%s --help“.\n"
|
||||
|
||||
#: src/main.c:807
|
||||
#, c-format
|
||||
msgid "unknown -C option '%c'"
|
||||
msgstr "непозната опция към „-C“: „%c“"
|
||||
|
||||
#: src/main.c:1195
|
||||
msgid "fatal parse error"
|
||||
msgstr "фатална грешка на анализатора"
|
||||
|
||||
#: src/main.c:1247
|
||||
msgid "could not write tables header"
|
||||
msgstr "заглавният файл за таблиците не може за се запише"
|
||||
|
||||
#: src/main.c:1251
|
||||
#, c-format
|
||||
msgid "can't open skeleton file %s"
|
||||
msgstr "скелетният файл „%s“ не може да се отвори"
|
||||
|
||||
#: src/main.c:1254
|
||||
msgid "Prefix cannot include '[' or ']'"
|
||||
msgstr "Префиксът не трябва да съдържа „[“ или „]“"
|
||||
|
||||
#: src/main.c:1322
|
||||
#, c-format
|
||||
msgid "could not create backing-up info file %s"
|
||||
msgstr "файлът с информация за връщане назад не може да се създаде: „%s“"
|
||||
|
||||
#: src/main.c:1343
|
||||
#, c-format
|
||||
msgid "-l AT&T lex compatibility option entails a large performance penalty\n"
|
||||
msgstr ""
|
||||
"опцията за съвместимост с „lex“ на AT&T: „-l“, води до голяма загуба на "
|
||||
"производителност\n"
|
||||
|
||||
#: src/main.c:1346
|
||||
#, c-format
|
||||
msgid " and may be the actual source of other reported performance penalties\n"
|
||||
msgstr " и може да доведе до допълнителни проблеми с производителността\n"
|
||||
|
||||
#: src/main.c:1352
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%%option yylineno entails a performance penalty ONLY on rules that can match "
|
||||
"newline characters\n"
|
||||
msgstr ""
|
||||
"директивата за „%%option“ — „yylineno“ води до загуба на производителност, "
|
||||
"само за правилата, които напасват знак за нов ред\n"
|
||||
|
||||
#: src/main.c:1359
|
||||
#, c-format
|
||||
msgid "-I (interactive) entails a minor performance penalty\n"
|
||||
msgstr "„-I“ (интерактивният режим) води до малка загуба на производителност\n"
|
||||
|
||||
#: src/main.c:1364
|
||||
#, c-format
|
||||
msgid "yymore() entails a minor performance penalty\n"
|
||||
msgstr "„yymore()“ води до малка загуба на производителност\n"
|
||||
|
||||
#: src/main.c:1370
|
||||
#, c-format
|
||||
msgid "REJECT entails a large performance penalty\n"
|
||||
msgstr "Отхвърлянето (REJECT) води до голяма загуба на производителност\n"
|
||||
|
||||
#: src/main.c:1375
|
||||
#, c-format
|
||||
msgid "Variable trailing context rules entail a large performance penalty\n"
|
||||
msgstr ""
|
||||
"Правила с последващ контекст, който не е константен, водят до голяма загуба "
|
||||
"на производителност\n"
|
||||
|
||||
#: src/main.c:1387
|
||||
msgid "REJECT cannot be used with -f or -F"
|
||||
msgstr "Отхвърлянето (REJECT) е несъвместимо с „-f“ или „-F“"
|
||||
|
||||
#: src/main.c:1390
|
||||
#, c-format
|
||||
msgid "%option yylineno cannot be used with REJECT"
|
||||
msgstr ""
|
||||
"директивата за „%option“ — „yylineno“ е несъвместима с отхвърляне (REJECT)"
|
||||
|
||||
#: src/main.c:1393
|
||||
msgid "variable trailing context rules cannot be used with -f or -F"
|
||||
msgstr ""
|
||||
"правила с последващ контекст, който не е константен, не може да се ползват "
|
||||
"заедно с „-f“ или „-F“"
|
||||
|
||||
#: src/main.c:1428
|
||||
msgid "allocation of macro definition failed"
|
||||
msgstr "неуспешно заделяне на памет за дефиниция на макрос"
|
||||
|
||||
#: src/main.c:1745
|
||||
#, c-format
|
||||
msgid "Usage: %s [OPTIONS] [FILE]...\n"
|
||||
msgstr "Употреба: %s [ОПЦИЯ] [ФАЙЛ]…\n"
|
||||
|
||||
#: src/main.c:1748
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"Generates programs that perform pattern-matching on text.\n"
|
||||
"\n"
|
||||
"Table Compression:\n"
|
||||
" -Ca, --align trade off larger tables for better memory alignment\n"
|
||||
" -Ce, --ecs construct equivalence classes\n"
|
||||
" -Cf do not compress tables; use -f representation\n"
|
||||
" -CF do not compress tables; use -F representation\n"
|
||||
" -Cm, --meta-ecs construct meta-equivalence classes\n"
|
||||
" -Cr, --read use read() instead of stdio for scanner input\n"
|
||||
" -f, --full generate fast, large scanner. Same as -Cfr\n"
|
||||
" -F, --fast use alternate table representation. Same as -CFr\n"
|
||||
" -Cem default compression (same as --ecs --meta-ecs)\n"
|
||||
"\n"
|
||||
"Debugging:\n"
|
||||
" -d, --debug enable debug mode in scanner\n"
|
||||
" -b, --backup write backing-up information to %s\n"
|
||||
" -p, --perf-report write performance report to stderr\n"
|
||||
" -s, --nodefault suppress default rule to ECHO unmatched text\n"
|
||||
" -T, --env.trace %s should run in env.trace mode\n"
|
||||
" -w, --nowarn do not generate warnings\n"
|
||||
" -v, --verbose write summary of scanner statistics to stdout\n"
|
||||
" --hex use hexadecimal numbers instead of octal in debug "
|
||||
"outputs\n"
|
||||
"\n"
|
||||
"Files:\n"
|
||||
" -o, --outfile=FILE specify output filename\n"
|
||||
" -S, --skel=FILE specify skeleton file\n"
|
||||
" -t, --stdout write scanner on stdout instead of %s\n"
|
||||
" --yyclass=NAME name of C++ class\n"
|
||||
" --header-file=FILE create a C header file in addition to the "
|
||||
"scanner\n"
|
||||
" --tables-file[=FILE] write tables to FILE\n"
|
||||
" --backup-file=FILE write backing-up information to FILE\n"
|
||||
"\n"
|
||||
"Scanner behavior:\n"
|
||||
" -7, --7bit generate 7-bit scanner\n"
|
||||
" -8, --8bit generate 8-bit scanner\n"
|
||||
" -B, --batch generate batch scanner (opposite of -I)\n"
|
||||
" -i, --case-insensitive ignore case in patterns\n"
|
||||
" -l, --lex-compat maximal compatibility with original lex\n"
|
||||
" -X, --posix-compat maximal compatibility with POSIX lex\n"
|
||||
" -I, --interactive generate interactive scanner (opposite of -B)\n"
|
||||
" --yylineno track line count in yylineno\n"
|
||||
"\n"
|
||||
"Generated code:\n"
|
||||
" -+, --c++ generate C++ scanner class\n"
|
||||
" -Dmacro[=defn] #define macro defn (default defn is '1')\n"
|
||||
" -e, --emit=LANG Specify target language\n"
|
||||
" -L, --noline suppress #line directives in scanner\n"
|
||||
" -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n"
|
||||
" -R, --reentrant generate a reentrant scanner\n"
|
||||
" --bison-bridge scanner for Bison pure parser.\n"
|
||||
" --bison-locations include yylloc support.\n"
|
||||
" --stdinit initialize yyin/yyout to stdin/stdout\n"
|
||||
" --nounistd do not include <unistd.h>\n"
|
||||
" --noFUNCTION do not generate a particular FUNCTION\n"
|
||||
"\n"
|
||||
"Miscellaneous:\n"
|
||||
" -c do-nothing POSIX option\n"
|
||||
" -n do-nothing POSIX option\n"
|
||||
" -?\n"
|
||||
" -h, --help produce this help message\n"
|
||||
" -V, --version report %s version\n"
|
||||
msgstr ""
|
||||
"Генериране на програма за лексически анализ на текст.\n"
|
||||
"\n"
|
||||
"Компресиране на таблиците\n"
|
||||
" -Ca, --align по-точно подравняване в паметта, но по-големи "
|
||||
"таблици\n"
|
||||
" -Ce, --ecs създаване на класовете за еквивалентност\n"
|
||||
" -Cf без компресия на таблиците, представяне както с „-"
|
||||
"f“\n"
|
||||
" -CF без компресия на таблиците, представяне както с „-"
|
||||
"F“\n"
|
||||
" -Cm, --meta-ecs създаване на класовете за мета-еквивалентност\n"
|
||||
" -Cr, --read четене чрез „read()“, а не от стандартния вход\n"
|
||||
" -f, --full генериране на голям, но бърз анализатор, (≡„-"
|
||||
"Cfr“)\n"
|
||||
" -F, --fast алтернативно представяне на таблиците (≡„-CFr“)\n"
|
||||
" -Cem стандартна компресия (≡„--ecs --meta-ecs“)\n"
|
||||
"\n"
|
||||
"Изчистване на грешки:\n"
|
||||
" -d, --debug режим на изчистване на грешки в анализатора\n"
|
||||
" -b, --backup запазване на информацията за връщане назад в "
|
||||
"„%s“\n"
|
||||
" -p, --perf-report доклад за производителността към стандартната "
|
||||
"грешка\n"
|
||||
" -s, --nodefault потискане на стандартното правило за извеждане "
|
||||
"на\n"
|
||||
" текста, който не напасва\n"
|
||||
" -T, --trace „%s“ да се изпълнява в режим на трасиране\n"
|
||||
" -w, --nowarn без предупреждения\n"
|
||||
" -v, --verbose доклад-статистика за анализатора към стандартния "
|
||||
"изход\n"
|
||||
"\n"
|
||||
"Файлове:\n"
|
||||
" -o, --outfile=ФАЙЛ задаване на изходния ФАЙЛ\n"
|
||||
" -S, --skel=ФАЙЛ задаване на скелетния ФАЙЛ\n"
|
||||
" -t, --stdout извеждане на анализатора на стандартния изход, а\n"
|
||||
" не в „%s“\n"
|
||||
" --yyclass=ИМЕ ИМЕ на клас за C++\n"
|
||||
" --header-file=ФАЙЛ създаване и на заглавен файл на C\n"
|
||||
" --tables-file[=ФАЙЛ] извеждане на таблиците във ФАЙЛа\n"
|
||||
"\n"
|
||||
"Поведение на анализатора:\n"
|
||||
" -7, --7bit анализатор за 7-битов вход\n"
|
||||
" -8, --8bit анализатор за 8-битов вход\n"
|
||||
" -B, --batch пакетен анализатор (обратното на „-I“)\n"
|
||||
" -i, --case-insensitive без разлика между главни и малки знаци\n"
|
||||
" -l, --lex-compat максимална съвместимост с оригиналния „lex“\n"
|
||||
" -X, --posix-compat максимална съвместимост с „lex“ по POSIX\n"
|
||||
" -I, --interactive интерактивен анализатор (обратното на „-B“)\n"
|
||||
" --yylineno следене на броя на редовете чрез „yylineno“\n"
|
||||
"\n"
|
||||
"Генериран код:\n"
|
||||
" -+, --c++ генериране на анализатор като клас на C++\n"
|
||||
" -DМАКРОС[=ДЕФИНИЦИЯ] „#define МАКРОС ДЕФИНИЦИЯ“ (стандартно\n"
|
||||
" ДЕФИНИЦИЯта е „1“)\n"
|
||||
" -L, --noline без директиви „#line“ в анализатора\n"
|
||||
" -P, --prefix=НИЗ използване на този НИЗ за префикс вместо "
|
||||
"обичайния „yy“\n"
|
||||
" -R, --reentrant анализатор на C с възможност за повторно "
|
||||
"извикване\n"
|
||||
" --bison-bridge допълнителна поддръжка за „bison“\n"
|
||||
" --bison-locations поддръжка на „yylloc“\n"
|
||||
" --stdinit първоначалните стойности на „yyin“ и „yyout“ да "
|
||||
"са\n"
|
||||
" съответно стандартният вход и изход\n"
|
||||
" --nounistd без ползване на „<unistd.h>“\n"
|
||||
" --noФУНКЦИЯ без създаването на определена ФУНКЦИЯ\n"
|
||||
"\n"
|
||||
"Други:\n"
|
||||
" -c опция по POSIX, която не прави нищо\n"
|
||||
" -n опция по POSIX, която не прави нищо\n"
|
||||
" -?\n"
|
||||
" -h, --help извеждане на това помощно съобщение\n"
|
||||
" -V, --version извеждане на версията на „%s“\n"
|
||||
|
||||
#: src/misc.c:70 src/misc.c:81
|
||||
msgid "memory allocation failed in allocate_array()"
|
||||
msgstr "неуспешно заделяне на памет в „allocate_array()“"
|
||||
|
||||
#: src/misc.c:131
|
||||
#, c-format
|
||||
msgid "bad character '%s' detected in check_char()"
|
||||
msgstr "„check_char()“ се натъкна на неправилен знак: „%s“"
|
||||
|
||||
#: src/misc.c:136
|
||||
#, c-format
|
||||
msgid "scanner requires -8 flag to use the character %s"
|
||||
msgstr "опцията „-8“ е задължителна, за да ползвате знака „%s“ в анализатора"
|
||||
|
||||
#: src/misc.c:155
|
||||
msgid "memory allocation failure in xstrdup()"
|
||||
msgstr "неуспешно заделяне на памет в „xstrdup()“"
|
||||
|
||||
#: src/misc.c:231
|
||||
#, c-format
|
||||
msgid "%s: fatal internal error, %s\n"
|
||||
msgstr "%s: фатална вътрешна грешка — %s\n"
|
||||
|
||||
#: src/misc.c:587 src/misc.c:598
|
||||
msgid "attempt to increase array size failed"
|
||||
msgstr "неуспешен опит за увеличаване на размер на масив"
|
||||
|
||||
#: src/misc.c:645
|
||||
msgid "memory allocation failed in yy_flex_xmalloc()"
|
||||
msgstr "неуспешно заделяне на памет в „yy_flex_xmalloc()“"
|
||||
|
||||
#: src/nfa.c:100
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"********** beginning dump of nfa with start state %d\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"•••••••••• начало на извеждането на НКА с начално състояние %d\n"
|
||||
|
||||
#: src/nfa.c:111
|
||||
#, c-format
|
||||
msgid "state # %4d\t"
|
||||
msgstr "състояние №%4d"
|
||||
|
||||
#: src/nfa.c:126
|
||||
#, c-format
|
||||
msgid "********** end of dump\n"
|
||||
msgstr "•••••••••• край на извеждането\n"
|
||||
|
||||
#: src/nfa.c:169
|
||||
msgid "empty machine in dupmachine()"
|
||||
msgstr "празна машина в „dupmachine()“"
|
||||
|
||||
#: src/nfa.c:234
|
||||
#, c-format
|
||||
msgid "Variable trailing context rule at line %d\n"
|
||||
msgstr "Правило с последващ контекст, който не е константен, на ред %d\n"
|
||||
|
||||
#: src/nfa.c:353
|
||||
msgid "bad state type in mark_beginning_as_normal()"
|
||||
msgstr "неправилен вид състояние в „mark_beginning_as_normal()“"
|
||||
|
||||
#: src/nfa.c:593
|
||||
#, c-format
|
||||
msgid "input rules are too complicated (>= %d NFA states)"
|
||||
msgstr "входните правила са прекалено сложни (≥ %d състояния на НКА)"
|
||||
|
||||
#: src/nfa.c:671
|
||||
msgid "found too many transitions in mkxtion()"
|
||||
msgstr "прекалено много преходи в „mkxtion()“"
|
||||
|
||||
#: src/nfa.c:697
|
||||
#, c-format
|
||||
msgid "too many rules (> %d)!"
|
||||
msgstr "прекалено много правила (> %d)!"
|
||||
|
||||
#: src/parse.y:163
|
||||
msgid "unknown error processing section 1"
|
||||
msgstr "непозната грешка при обработка на 1ви раздел"
|
||||
|
||||
#: src/parse.y:188 src/parse.y:373
|
||||
msgid "bad start condition list"
|
||||
msgstr "неправилен списък на началните състояния"
|
||||
|
||||
#: src/parse.y:208
|
||||
msgid "Prefix must not contain [ or ]"
|
||||
msgstr "Префиксът не трябва да съдържа „[“ или „]“"
|
||||
|
||||
#: src/parse.y:337
|
||||
msgid "unrecognized rule"
|
||||
msgstr "непознато правило"
|
||||
|
||||
#: src/parse.y:456 src/parse.y:469 src/parse.y:538
|
||||
msgid "trailing context used twice"
|
||||
msgstr "двукратно ползване на последващ контекст"
|
||||
|
||||
#: src/parse.y:574 src/parse.y:584 src/parse.y:657 src/parse.y:667
|
||||
msgid "bad iteration values"
|
||||
msgstr "неправилни стойности на итерация"
|
||||
|
||||
#: src/parse.y:602 src/parse.y:620 src/parse.y:685 src/parse.y:703
|
||||
msgid "iteration value must be positive"
|
||||
msgstr "стойността на итерацията трябва да е положителна"
|
||||
|
||||
#: src/parse.y:826 src/parse.y:836
|
||||
#, c-format
|
||||
msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner"
|
||||
msgstr ""
|
||||
"диапазонът знаци [%c-%c] не е еднозначен при лексичен анализатор, който не "
|
||||
"прави разлика между главни и малки знаци"
|
||||
|
||||
#: src/parse.y:841
|
||||
msgid "negative range in character class"
|
||||
msgstr "изключващ диапазон в клас знаци"
|
||||
|
||||
#: src/parse.y:938
|
||||
msgid "[:^lower:] is ambiguous in case insensitive scanner"
|
||||
msgstr ""
|
||||
"диапазонът знаци [:^lower:] не е еднозначен при лексичен анализатор, който "
|
||||
"не прави разлика между главни и малки знаци"
|
||||
|
||||
#: src/parse.y:944
|
||||
msgid "[:^upper:] ambiguous in case insensitive scanner"
|
||||
msgstr ""
|
||||
"диапазонът знаци [:^upper:] не е еднозначен при лексичен анализатор, който "
|
||||
"не прави разлика между главни и малки знаци"
|
||||
|
||||
#: src/scan.l:73 src/scan.l:662 src/scan.l:720
|
||||
msgid "Input line too long\n"
|
||||
msgstr "Входният ред е твърде дълъг\n"
|
||||
|
||||
#: src/scan.l:185
|
||||
#, c-format
|
||||
msgid "malformed '%top' directive"
|
||||
msgstr "неправилна директива „%top“"
|
||||
|
||||
#: src/scan.l:207
|
||||
#, no-c-format
|
||||
msgid "unrecognized '%' directive"
|
||||
msgstr "непозната директива, започваща с „%“"
|
||||
|
||||
#: src/scan.l:216
|
||||
msgid "Definition name too long\n"
|
||||
msgstr "Името на дефиницията е твърде дълго\n"
|
||||
|
||||
#: src/scan.l:311
|
||||
msgid "Unmatched '{'"
|
||||
msgstr "„{“ без еш"
|
||||
|
||||
#: src/scan.l:327
|
||||
#, c-format
|
||||
msgid "Definition value for {%s} too long\n"
|
||||
msgstr "Стойността на дефиницията „{%s}“ е твърде дълга\n"
|
||||
|
||||
#: src/scan.l:344
|
||||
msgid "incomplete name definition"
|
||||
msgstr "дефиниция с непълно име"
|
||||
|
||||
#: src/scan.l:486
|
||||
msgid "Option line too long\n"
|
||||
msgstr "Редът за опция е твърде дълъг\n"
|
||||
|
||||
#: src/scan.l:494
|
||||
#, c-format
|
||||
msgid "unrecognized %%option: %s"
|
||||
msgstr "непозната опция „%%option“: „%s“"
|
||||
|
||||
#: src/scan.l:677 src/scan.l:850
|
||||
msgid "bad character class"
|
||||
msgstr "неправилен клас знаци"
|
||||
|
||||
#: src/scan.l:727
|
||||
#, c-format
|
||||
msgid "undefined definition {%s}"
|
||||
msgstr "липсваща дефиниция „{%s}“"
|
||||
|
||||
#: src/scan.l:790
|
||||
msgid "unbalanced parenthesis"
|
||||
msgstr "скоба без еш"
|
||||
|
||||
#: src/scan.l:805
|
||||
#, c-format
|
||||
msgid "bad <start condition>: %s"
|
||||
msgstr "лошо начално условие: „%s“"
|
||||
|
||||
#: src/scan.l:818
|
||||
msgid "missing quote"
|
||||
msgstr "липсваща кавичка"
|
||||
|
||||
#: src/scan.l:884
|
||||
#, c-format
|
||||
msgid "bad character class expression: %s"
|
||||
msgstr "неправилен израз за клас от знаци: „%s“"
|
||||
|
||||
#: src/scan.l:906
|
||||
msgid "bad character inside {}'s"
|
||||
msgstr "неправилен знак между „{“ и „}“"
|
||||
|
||||
#: src/scan.l:912
|
||||
msgid "missing }"
|
||||
msgstr "липсва „}“"
|
||||
|
||||
#: src/scan.l:1020
|
||||
msgid "EOF encountered inside an action"
|
||||
msgstr "край на файл в действие"
|
||||
|
||||
#: src/scan.l:1025
|
||||
msgid "EOF encountered inside pattern"
|
||||
msgstr "край на файл в шаблон"
|
||||
|
||||
#: src/scan.l:1058
|
||||
#, c-format
|
||||
msgid "bad character: %s"
|
||||
msgstr "неправилен знак: %s"
|
||||
|
||||
#: src/scan.l:1086
|
||||
#, c-format
|
||||
msgid "can't open %s"
|
||||
msgstr "„%s“ не може да се отвори"
|
||||
|
||||
#: src/scanopt.c:248
|
||||
#, c-format
|
||||
msgid "Usage: %s [OPTIONS]...\n"
|
||||
msgstr "Употреба: %s [ОПЦИЯ]…\n"
|
||||
|
||||
#: src/scanopt.c:484
|
||||
#, c-format
|
||||
msgid "option `%s' doesn't allow an argument\n"
|
||||
msgstr "опцията „%s“ се използва без аргументи\n"
|
||||
|
||||
#: src/scanopt.c:489
|
||||
#, c-format
|
||||
msgid "option `%s' requires an argument\n"
|
||||
msgstr "опцията „%s“ изисква аргумент\n"
|
||||
|
||||
#: src/scanopt.c:493
|
||||
#, c-format
|
||||
msgid "option `%s' is ambiguous\n"
|
||||
msgstr "опцията „%s“ не е еднозначна\n"
|
||||
|
||||
#: src/scanopt.c:497
|
||||
#, c-format
|
||||
msgid "Unrecognized option `%s'\n"
|
||||
msgstr "непозната опция „%s“\n"
|
||||
|
||||
#: src/scanopt.c:501
|
||||
#, c-format
|
||||
msgid "Unknown error=(%d)\n"
|
||||
msgstr "Неизвестна грешка=(%d)\n"
|
||||
|
||||
#: src/sym.c:92
|
||||
msgid "symbol table memory allocation failed"
|
||||
msgstr "неуспешно заделяне на памет за таблицата със символите"
|
||||
|
||||
#: src/sym.c:183
|
||||
msgid "name defined twice"
|
||||
msgstr "името е дефинирано двукратно"
|
||||
|
||||
#: src/sym.c:231
|
||||
#, c-format
|
||||
msgid "start condition %s declared twice"
|
||||
msgstr "началното условие „%s“ е дефинирано двукратно"
|
||||
|
||||
#: src/yylex.c:57
|
||||
msgid "premature EOF"
|
||||
msgstr "преждевременен край (EOF)"
|
||||
|
||||
#: src/yylex.c:200
|
||||
#, c-format
|
||||
msgid "End Marker\n"
|
||||
msgstr "Маркер за край\n"
|
||||
|
||||
#: src/yylex.c:206
|
||||
#, c-format
|
||||
msgid "*Something Weird* - tok: %d val: %d\n"
|
||||
msgstr "•Нещо странно• — лекс.: %d ст-ст: %d\n"
|
||||
|
||||
#~ msgid "Allocation of buffer for line directive failed"
|
||||
#~ msgstr "Неуспешно заделяне на буфер за директива „#line“"
|
||||
|
||||
#~ msgid "Allocation of buffer for m4 def failed"
|
||||
#~ msgstr "Неуспешно заделяне на буфер за добавяне на дефиниция за „m4“"
|
||||
|
||||
#~ msgid "Allocation of buffer for m4 undef failed"
|
||||
#~ msgstr "Неуспешно заделяне на буфер за премахване на дефиниция за „m4“"
|
||||
|
||||
#~ msgid "error creating header file %s"
|
||||
#~ msgstr "грешка при създаването на заглавен файл „%s“"
|
||||
|
||||
#~ msgid "%s %s\n"
|
||||
#~ msgstr "%s %s\n"
|
||||
|
||||
#~ msgid "allocation of sko_stack failed"
|
||||
#~ msgstr "неуспешно заделяне на памет за „sko_stack“"
|
||||
|
||||
#~ msgid "name \"%s\" ridiculously long"
|
||||
#~ msgstr "прекалено дълго име: „%s“"
|
||||
|
||||
#~ msgid "bad line in skeleton file"
|
||||
#~ msgstr "неправилен ред в скелетен файл"
|
||||
@@ -0,0 +1,958 @@
|
||||
# Portuguese (Portugal) translation for the flex package.
|
||||
# Copyright (C) 2019 The Flex Project (msgids)
|
||||
# This file is put in the public domain.
|
||||
# Pedro Albuquerque <palbuquerque73@gmail.com>, 2019.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: flex 2.5.38\n"
|
||||
"Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n"
|
||||
"POT-Creation-Date: 2022-09-27 14:18-0400\n"
|
||||
"PO-Revision-Date: 2019-05-23 10:15+0100\n"
|
||||
"Last-Translator: Pedro Albuquerque <palbuquerque73@gmail.com>\n"
|
||||
"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
|
||||
"Language: pt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Bugs: Report translation errors to the Language-Team address.\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\\n\n"
|
||||
"X-Bugs: Report translation errors to the Language-Team address.\n"
|
||||
|
||||
#: src/buf.c:61
|
||||
msgid "Allocation of buffer to print string failed"
|
||||
msgstr "Falha ao alocar buffer para imprimir a cadeia"
|
||||
|
||||
#: src/ccl.c:80
|
||||
msgid "internal error: trying to add a char to a non-last ccl.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/dfa.c:59
|
||||
#, c-format
|
||||
msgid "State #%d is non-accepting -\n"
|
||||
msgstr "Estado nº %d não está a aceitar -\n"
|
||||
|
||||
#: src/dfa.c:119
|
||||
msgid "dangerous trailing context"
|
||||
msgstr "conteúdo final perigoso"
|
||||
|
||||
#: src/dfa.c:159
|
||||
#, c-format
|
||||
msgid " associated rule line numbers:"
|
||||
msgstr " números de linha de regra associada:"
|
||||
|
||||
#: src/dfa.c:193
|
||||
#, c-format
|
||||
msgid " out-transitions: "
|
||||
msgstr " out-transitions: "
|
||||
|
||||
#: src/dfa.c:201
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" jam-transitions: EOF "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" jam-transitions: EOF "
|
||||
|
||||
#: src/dfa.c:331
|
||||
msgid "consistency check failed in epsclosure()"
|
||||
msgstr "falha no teste de consistência em epsclosure()"
|
||||
|
||||
#: src/dfa.c:422
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"DFA Dump:\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"DFA Dump:\n"
|
||||
"\n"
|
||||
|
||||
#: src/dfa.c:558
|
||||
msgid "could not create unique end-of-buffer state"
|
||||
msgstr "impossível criar estado end-of-buffer exclusivo"
|
||||
|
||||
#: src/dfa.c:579
|
||||
#, c-format
|
||||
msgid "state # %d:\n"
|
||||
msgstr "estado nº %d\n"
|
||||
|
||||
#: src/dfa.c:738
|
||||
msgid "Could not write yynxt_tbl[][]"
|
||||
msgstr "Impossível escrever yynxt_tbl[][]"
|
||||
|
||||
#: src/dfa.c:1001
|
||||
msgid "bad transition character detected in sympartition()"
|
||||
msgstr "detectado um mau carácter de transição em sympartition()"
|
||||
|
||||
#: src/gen.c:379
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Equivalence Classes:\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Classes de equivalência:\n"
|
||||
"\n"
|
||||
|
||||
#: src/gen.c:425 src/gen.c:454 src/gen.c:638
|
||||
#, c-format
|
||||
msgid "state # %d accepts: [%d]\n"
|
||||
msgstr "estado nº %d aceita: [%d]\n"
|
||||
|
||||
#: src/gen.c:533
|
||||
#, c-format
|
||||
msgid "state # %d accepts: "
|
||||
msgstr "estado nº %d aceita: "
|
||||
|
||||
#: src/gen.c:582
|
||||
msgid "Could not write yyacclist_tbl"
|
||||
msgstr "Impossível escrever yyacclist_tbl"
|
||||
|
||||
#: src/gen.c:659
|
||||
msgid "Could not write yyacc_tbl"
|
||||
msgstr "Impossível escrever yyacc_tbl"
|
||||
|
||||
#: src/gen.c:674 src/gen.c:947 src/gen.c:974
|
||||
msgid "Could not write ecstbl"
|
||||
msgstr "Impossível escrever ecstbl"
|
||||
|
||||
#: src/gen.c:694
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Meta-Equivalence Classes:\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Classes de meta-equivalência:\n"
|
||||
|
||||
#: src/gen.c:714
|
||||
msgid "Could not write yymeta_tbl"
|
||||
msgstr "Impossível escrever yymeta_tbl"
|
||||
|
||||
#: src/gen.c:774
|
||||
msgid "Could not write yybase_tbl"
|
||||
msgstr "Impossível escrever yybase_tbl"
|
||||
|
||||
#: src/gen.c:805
|
||||
msgid "Could not write yydef_tbl"
|
||||
msgstr "Impossível escrever yydef_tbl"
|
||||
|
||||
#: src/gen.c:844
|
||||
msgid "Could not write yynxt_tbl"
|
||||
msgstr "Impossível escrever yynxt_tbl"
|
||||
|
||||
#: src/gen.c:877
|
||||
msgid "Could not write yychk_tbl"
|
||||
msgstr "Impossível escrever yychk_tbl"
|
||||
|
||||
#: src/gen.c:932 src/gen.c:965
|
||||
msgid "Could not write ftbl"
|
||||
msgstr "Impossível escrever ftbl"
|
||||
|
||||
#: src/gen.c:938
|
||||
msgid "Could not write ssltbl"
|
||||
msgstr "Impossível escrever ssltbl"
|
||||
|
||||
#: src/gen.c:1014
|
||||
msgid "Could not write eoltbl"
|
||||
msgstr "Impossível escrever eoltbl"
|
||||
|
||||
#: src/gen.c:1061
|
||||
msgid "Could not write yynultrans_tbl"
|
||||
msgstr "Impossível escrever yynultrans_tbl"
|
||||
|
||||
#: src/main.c:169
|
||||
msgid "rule cannot be matched"
|
||||
msgstr "impossível comparar a regra"
|
||||
|
||||
#: src/main.c:174
|
||||
msgid "-s option given but default rule can be matched"
|
||||
msgstr "indicada a opção -s, mas a regra predefinida pode ser comparada"
|
||||
|
||||
#: src/main.c:317
|
||||
msgid "Can't use -+ with -l option"
|
||||
msgstr "Impossível usar -+ com a opção -l"
|
||||
|
||||
#: src/main.c:320
|
||||
msgid "Can't use -f or -F with -l option"
|
||||
msgstr "Impossível usar -f ou -F com a opção -l"
|
||||
|
||||
#: src/main.c:324
|
||||
#, fuzzy
|
||||
msgid "Can't use --ctrl.reentrant or --bison-bridge with -l option"
|
||||
msgstr "Impossível usar --reentrant ou --bison-bridge com a opção -l"
|
||||
|
||||
#: src/main.c:356
|
||||
msgid "-Cf/-CF and -Cm don't make sense together"
|
||||
msgstr "-Cf/-CF e -Cm não fazem sentido em conjunto"
|
||||
|
||||
#: src/main.c:359
|
||||
msgid "-Cf/-CF and -I are incompatible"
|
||||
msgstr "-Cf/-CF e -I são incompatíveis"
|
||||
|
||||
#: src/main.c:363
|
||||
msgid "-Cf/-CF are incompatible with lex-compatibility mode"
|
||||
msgstr "-Cf/-CF são incompatíveis com o modo lex-compatibility"
|
||||
|
||||
#: src/main.c:368
|
||||
msgid "-Cf and -CF are mutually exclusive"
|
||||
msgstr "-Cf e -CF são mutuamente exclusivas"
|
||||
|
||||
#: src/main.c:372
|
||||
msgid "Can't use -+ with -CF option"
|
||||
msgstr "Impossível usar -+ com a opção -CF"
|
||||
|
||||
#: src/main.c:375
|
||||
#, c-format
|
||||
msgid "%array incompatible with -+ option"
|
||||
msgstr "%array incompatível com a opção -+"
|
||||
|
||||
#: src/main.c:380
|
||||
msgid "Options -+ and --reentrant are mutually exclusive."
|
||||
msgstr "As opções -+ e --reentrant são mutuamente exclusivas."
|
||||
|
||||
#: src/main.c:383
|
||||
msgid "bison bridge not supported for the C++ scanner."
|
||||
msgstr "bison bridge não suportada no analisador C++."
|
||||
|
||||
#: src/main.c:422 src/main.c:1235
|
||||
#, c-format
|
||||
msgid "could not create %s"
|
||||
msgstr "impossível criar %s"
|
||||
|
||||
#: src/main.c:443
|
||||
#, c-format
|
||||
msgid "%option yyclass only meaningful for C++ scanners"
|
||||
msgstr "a %opção yyclass só tem significado para analisadores C++"
|
||||
|
||||
#: src/main.c:447
|
||||
#, c-format
|
||||
msgid "input error reading skeleton file %s"
|
||||
msgstr "erro de entrada ao ler ficheiro esqueleto %s"
|
||||
|
||||
#: src/main.c:451
|
||||
#, c-format
|
||||
msgid "error closing skeleton file %s"
|
||||
msgstr "erro ao fechar ficheiro esqueleto %s"
|
||||
|
||||
#: src/main.c:457
|
||||
#, c-format
|
||||
msgid "error writing output file %s"
|
||||
msgstr "erro ao escrever ficheiro de saída %s"
|
||||
|
||||
#: src/main.c:461
|
||||
#, c-format
|
||||
msgid "error closing output file %s"
|
||||
msgstr "erro ao fechar ficheiro de saída %s"
|
||||
|
||||
#: src/main.c:465
|
||||
#, c-format
|
||||
msgid "error deleting output file %s"
|
||||
msgstr "erro ao eliminar ficheiro de saída %s"
|
||||
|
||||
#: src/main.c:472
|
||||
#, c-format
|
||||
msgid "No backing up.\n"
|
||||
msgstr "Sem seguranças.\n"
|
||||
|
||||
#: src/main.c:476
|
||||
#, c-format
|
||||
msgid "%d backing up (non-accepting) states.\n"
|
||||
msgstr "%d estados de segurança (não aceitando).\n"
|
||||
|
||||
#: src/main.c:480
|
||||
#, c-format
|
||||
msgid "Compressed tables always back up.\n"
|
||||
msgstr "Tabelas comprimidas têm sempre segurança.\n"
|
||||
|
||||
#: src/main.c:483
|
||||
#, c-format
|
||||
msgid "error writing backup file %s"
|
||||
msgstr "erro ao escrever segurança %s"
|
||||
|
||||
#: src/main.c:487
|
||||
#, c-format
|
||||
msgid "error closing backup file %s"
|
||||
msgstr "erro ao fechar segurança %s"
|
||||
|
||||
#: src/main.c:492
|
||||
#, c-format
|
||||
msgid "%s version %s usage statistics:\n"
|
||||
msgstr "%s versão %s estatisticas de uso:\n"
|
||||
|
||||
#: src/main.c:495
|
||||
#, c-format
|
||||
msgid " scanner options: -"
|
||||
msgstr " opções do analisador: -"
|
||||
|
||||
#: src/main.c:574
|
||||
#, c-format
|
||||
msgid " %d/%d NFA states\n"
|
||||
msgstr " estados NFA %d/%d\n"
|
||||
|
||||
#: src/main.c:576
|
||||
#, c-format
|
||||
msgid " %d/%d DFA states (%d words)\n"
|
||||
msgstr " estados DFA %d/%d (%d palavras)\n"
|
||||
|
||||
#: src/main.c:578
|
||||
#, c-format
|
||||
msgid " %d rules\n"
|
||||
msgstr " %d regras\n"
|
||||
|
||||
#: src/main.c:583
|
||||
#, c-format
|
||||
msgid " No backing up\n"
|
||||
msgstr " Sem seguranças\n"
|
||||
|
||||
#: src/main.c:587
|
||||
#, c-format
|
||||
msgid " %d backing-up (non-accepting) states\n"
|
||||
msgstr " %d estados de segurança (não aceitando).\n"
|
||||
|
||||
#: src/main.c:592
|
||||
#, c-format
|
||||
msgid " Compressed tables always back-up\n"
|
||||
msgstr "Tabelas comprimidas têm sempre segurança.\n"
|
||||
|
||||
#: src/main.c:596
|
||||
#, c-format
|
||||
msgid " Beginning-of-line patterns used\n"
|
||||
msgstr " Padrões de início de linha usados\n"
|
||||
|
||||
#: src/main.c:598
|
||||
#, c-format
|
||||
msgid " %d/%d start conditions\n"
|
||||
msgstr " condições iniciais %d/%d\n"
|
||||
|
||||
#: src/main.c:602
|
||||
#, c-format
|
||||
msgid " %d epsilon states, %d double epsilon states\n"
|
||||
msgstr " estados epsilon %d, estados duplo epsilon %d\n"
|
||||
|
||||
#: src/main.c:606
|
||||
#, c-format
|
||||
msgid " no character classes\n"
|
||||
msgstr " sem classes de carácter\n"
|
||||
|
||||
#: src/main.c:610
|
||||
#, c-format
|
||||
msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n"
|
||||
msgstr ""
|
||||
" classes de carácter %d/%d necessárias %d/%d palavras de armazenamento, %d "
|
||||
"reutilizadas\n"
|
||||
|
||||
#: src/main.c:615
|
||||
#, c-format
|
||||
msgid " %d state/nextstate pairs created\n"
|
||||
msgstr " %d pares estado/estado seguinte criados\n"
|
||||
|
||||
#: src/main.c:618
|
||||
#, c-format
|
||||
msgid " %d/%d unique/duplicate transitions\n"
|
||||
msgstr " %d/%d transições únicas/duplicadas\n"
|
||||
|
||||
#: src/main.c:623
|
||||
#, c-format
|
||||
msgid " %d table entries\n"
|
||||
msgstr " %d entradas de tabela\n"
|
||||
|
||||
#: src/main.c:631
|
||||
#, c-format
|
||||
msgid " %d/%d base-def entries created\n"
|
||||
msgstr " %d/%d entradas base-def criadas\n"
|
||||
|
||||
#: src/main.c:635
|
||||
#, c-format
|
||||
msgid " %d/%d (peak %d) nxt-chk entries created\n"
|
||||
msgstr " %d/%d (pico %d) entradas nxt-chk criadas\n"
|
||||
|
||||
#: src/main.c:639
|
||||
#, c-format
|
||||
msgid " %d/%d (peak %d) template nxt-chk entries created\n"
|
||||
msgstr " %d/%d (pico %d) entradas modelo nxt-chk criadas\n"
|
||||
|
||||
#: src/main.c:643
|
||||
#, c-format
|
||||
msgid " %d empty table entries\n"
|
||||
msgstr " %d entradas de tabela vazias\n"
|
||||
|
||||
#: src/main.c:645
|
||||
#, c-format
|
||||
msgid " %d protos created\n"
|
||||
msgstr " %d protos criados\n"
|
||||
|
||||
#: src/main.c:648
|
||||
#, c-format
|
||||
msgid " %d templates created, %d uses\n"
|
||||
msgstr " %d modelos criados, %d usos\n"
|
||||
|
||||
#: src/main.c:656
|
||||
#, c-format
|
||||
msgid " %d/%d equivalence classes created\n"
|
||||
msgstr " %d/%d classes de equivalência criadas\n"
|
||||
|
||||
#: src/main.c:664
|
||||
#, c-format
|
||||
msgid " %d/%d meta-equivalence classes created\n"
|
||||
msgstr " %d/%d classes de meta-equivalência criadas\n"
|
||||
|
||||
#: src/main.c:670
|
||||
#, c-format
|
||||
msgid " %d (%d saved) hash collisions, %d DFAs equal\n"
|
||||
msgstr " %d (%d gravadas) colisões de hash, %d DFAs iguais\n"
|
||||
|
||||
#: src/main.c:672
|
||||
#, c-format
|
||||
msgid " %d sets of reallocations needed\n"
|
||||
msgstr " %d conjuntos de re-alocação necessários\n"
|
||||
|
||||
#: src/main.c:674
|
||||
#, c-format
|
||||
msgid " %d total table entries needed\n"
|
||||
msgstr " %d entradas de tabela totais necessárias\n"
|
||||
|
||||
#: src/main.c:735
|
||||
#, c-format
|
||||
msgid "Internal error. flexopts are malformed.\n"
|
||||
msgstr "Erro interno. flexopts mal formados.\n"
|
||||
|
||||
#: src/main.c:745
|
||||
#, c-format
|
||||
msgid "Try `%s --help' for more information.\n"
|
||||
msgstr "Tente \"%s --help\" para mais informação.\n"
|
||||
|
||||
#: src/main.c:807
|
||||
#, c-format
|
||||
msgid "unknown -C option '%c'"
|
||||
msgstr "Opção -C \"%c\" desconhecida"
|
||||
|
||||
#: src/main.c:1195
|
||||
msgid "fatal parse error"
|
||||
msgstr "erro de processamento fatal"
|
||||
|
||||
#: src/main.c:1247
|
||||
msgid "could not write tables header"
|
||||
msgstr "impossível criar cabeçalho de tabelas"
|
||||
|
||||
#: src/main.c:1251
|
||||
#, c-format
|
||||
msgid "can't open skeleton file %s"
|
||||
msgstr "impossível abrir ficheiro esqueleto %s"
|
||||
|
||||
#: src/main.c:1254
|
||||
msgid "Prefix cannot include '[' or ']'"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:1322
|
||||
#, c-format
|
||||
msgid "could not create backing-up info file %s"
|
||||
msgstr "impossível criar ficheiro de informação de segurança %s"
|
||||
|
||||
#: src/main.c:1343
|
||||
#, c-format
|
||||
msgid "-l AT&T lex compatibility option entails a large performance penalty\n"
|
||||
msgstr ""
|
||||
"a opção de compatibilidade -l AT&T lex implica uma grande perda de "
|
||||
"desempenho\n"
|
||||
|
||||
#: src/main.c:1346
|
||||
#, c-format
|
||||
msgid " and may be the actual source of other reported performance penalties\n"
|
||||
msgstr ""
|
||||
" e pode ser a fonte actual de outras penalizações de desempenho reportadas\n"
|
||||
|
||||
#: src/main.c:1352
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%%option yylineno entails a performance penalty ONLY on rules that can match "
|
||||
"newline characters\n"
|
||||
msgstr ""
|
||||
"a %%opção yylineno implica uma perda de desempenho SÓ em regras que possam "
|
||||
"comparar caracteres de nova linha\n"
|
||||
|
||||
#: src/main.c:1359
|
||||
#, c-format
|
||||
msgid "-I (interactive) entails a minor performance penalty\n"
|
||||
msgstr "-I (interactiva) implica uma perda menor de desempenho\n"
|
||||
|
||||
#: src/main.c:1364
|
||||
#, c-format
|
||||
msgid "yymore() entails a minor performance penalty\n"
|
||||
msgstr "yymore() implica uma perda menor de desempenho\n"
|
||||
|
||||
#: src/main.c:1370
|
||||
#, c-format
|
||||
msgid "REJECT entails a large performance penalty\n"
|
||||
msgstr "REJECT implica uma grave perda de desempenho\n"
|
||||
|
||||
#: src/main.c:1375
|
||||
#, c-format
|
||||
msgid "Variable trailing context rules entail a large performance penalty\n"
|
||||
msgstr ""
|
||||
"Regras variáveis de contexto final implicam uma grave perda de desempenho\n"
|
||||
|
||||
#: src/main.c:1387
|
||||
msgid "REJECT cannot be used with -f or -F"
|
||||
msgstr "REJECT não ode ser usado com -f ou -F"
|
||||
|
||||
#: src/main.c:1390
|
||||
#, c-format
|
||||
msgid "%option yylineno cannot be used with REJECT"
|
||||
msgstr "a %opção yylineno não pode ser usada com REJECT"
|
||||
|
||||
#: src/main.c:1393
|
||||
msgid "variable trailing context rules cannot be used with -f or -F"
|
||||
msgstr "regras variáveis de contexto final não podem ser usadas com -f ou -F"
|
||||
|
||||
#: src/main.c:1428
|
||||
msgid "allocation of macro definition failed"
|
||||
msgstr "falha ao alocar definição de macro"
|
||||
|
||||
#: src/main.c:1745
|
||||
#, c-format
|
||||
msgid "Usage: %s [OPTIONS] [FILE]...\n"
|
||||
msgstr "Uso: %s [OPÇÕES] [FICHEIRO]...\n"
|
||||
|
||||
#: src/main.c:1748
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"Generates programs that perform pattern-matching on text.\n"
|
||||
"\n"
|
||||
"Table Compression:\n"
|
||||
" -Ca, --align trade off larger tables for better memory alignment\n"
|
||||
" -Ce, --ecs construct equivalence classes\n"
|
||||
" -Cf do not compress tables; use -f representation\n"
|
||||
" -CF do not compress tables; use -F representation\n"
|
||||
" -Cm, --meta-ecs construct meta-equivalence classes\n"
|
||||
" -Cr, --read use read() instead of stdio for scanner input\n"
|
||||
" -f, --full generate fast, large scanner. Same as -Cfr\n"
|
||||
" -F, --fast use alternate table representation. Same as -CFr\n"
|
||||
" -Cem default compression (same as --ecs --meta-ecs)\n"
|
||||
"\n"
|
||||
"Debugging:\n"
|
||||
" -d, --debug enable debug mode in scanner\n"
|
||||
" -b, --backup write backing-up information to %s\n"
|
||||
" -p, --perf-report write performance report to stderr\n"
|
||||
" -s, --nodefault suppress default rule to ECHO unmatched text\n"
|
||||
" -T, --env.trace %s should run in env.trace mode\n"
|
||||
" -w, --nowarn do not generate warnings\n"
|
||||
" -v, --verbose write summary of scanner statistics to stdout\n"
|
||||
" --hex use hexadecimal numbers instead of octal in debug "
|
||||
"outputs\n"
|
||||
"\n"
|
||||
"Files:\n"
|
||||
" -o, --outfile=FILE specify output filename\n"
|
||||
" -S, --skel=FILE specify skeleton file\n"
|
||||
" -t, --stdout write scanner on stdout instead of %s\n"
|
||||
" --yyclass=NAME name of C++ class\n"
|
||||
" --header-file=FILE create a C header file in addition to the "
|
||||
"scanner\n"
|
||||
" --tables-file[=FILE] write tables to FILE\n"
|
||||
" --backup-file=FILE write backing-up information to FILE\n"
|
||||
"\n"
|
||||
"Scanner behavior:\n"
|
||||
" -7, --7bit generate 7-bit scanner\n"
|
||||
" -8, --8bit generate 8-bit scanner\n"
|
||||
" -B, --batch generate batch scanner (opposite of -I)\n"
|
||||
" -i, --case-insensitive ignore case in patterns\n"
|
||||
" -l, --lex-compat maximal compatibility with original lex\n"
|
||||
" -X, --posix-compat maximal compatibility with POSIX lex\n"
|
||||
" -I, --interactive generate interactive scanner (opposite of -B)\n"
|
||||
" --yylineno track line count in yylineno\n"
|
||||
"\n"
|
||||
"Generated code:\n"
|
||||
" -+, --c++ generate C++ scanner class\n"
|
||||
" -Dmacro[=defn] #define macro defn (default defn is '1')\n"
|
||||
" -e, --emit=LANG Specify target language\n"
|
||||
" -L, --noline suppress #line directives in scanner\n"
|
||||
" -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n"
|
||||
" -R, --reentrant generate a reentrant scanner\n"
|
||||
" --bison-bridge scanner for Bison pure parser.\n"
|
||||
" --bison-locations include yylloc support.\n"
|
||||
" --stdinit initialize yyin/yyout to stdin/stdout\n"
|
||||
" --nounistd do not include <unistd.h>\n"
|
||||
" --noFUNCTION do not generate a particular FUNCTION\n"
|
||||
"\n"
|
||||
"Miscellaneous:\n"
|
||||
" -c do-nothing POSIX option\n"
|
||||
" -n do-nothing POSIX option\n"
|
||||
" -?\n"
|
||||
" -h, --help produce this help message\n"
|
||||
" -V, --version report %s version\n"
|
||||
msgstr ""
|
||||
"Gera programas que realizam comparação de padrões em texto.\n"
|
||||
"\n"
|
||||
"Compressão de tabela:\n"
|
||||
" -Ca, --align troca tabelas maiores para melhor alinhamento da "
|
||||
"memória\n"
|
||||
" -Ce, --ecs constrói classes de equivalência\n"
|
||||
" -Cf não comprime tabelas; usa representação -f\n"
|
||||
" -CF não comprime tabelas; usa representação -F\n"
|
||||
" -Cm, --meta-ecs constrói classes de meta-equivalência\n"
|
||||
" -Cr, --read usa read() em vez de stdio para entrada do analisador\n"
|
||||
" -f, --full gera analisador rápido e grande. Igual a -Cfr\n"
|
||||
" -F, --fast usa representação de tabela alternativa. Igual a -CFr\n"
|
||||
" -Cem compressão predefinida (igual a --ecs --meta-ecs)\n"
|
||||
"\n"
|
||||
"Depuração:\n"
|
||||
" -d, --debug activa modo de depuração no analisador\n"
|
||||
" -b, --backup escreve informação de segurança em %s\n"
|
||||
" -p, --perf-report escreve relatório de desempenho em stderr\n"
|
||||
" -s, --nodefault suprime regra predefinida para texto não comparado "
|
||||
"em ECHO\n"
|
||||
" -T, --trace %s deve correr em modo de rasto\n"
|
||||
" -w, --nowarn não gera avisos\n"
|
||||
" -v, --verbose escreve resumo das estatísticas do analisador em "
|
||||
"stdout\n"
|
||||
"\n"
|
||||
"Ficheiros:\n"
|
||||
" -o, --outfile=FICH especifica o ficheiro de saída\n"
|
||||
" -S, --skel=FICH especifica o ficheiro esqueleto\n"
|
||||
" -t, --stdout escreve o analisador em stdout em vez de %s\n"
|
||||
" --yyclass=NOME nome da classe C++\n"
|
||||
" --header-file=FICH cria um ficheiro de cabeçalho C além do "
|
||||
"analisador\n"
|
||||
" --tables-file[=FICH] escreve tabelas em FICH\n"
|
||||
"\n"
|
||||
"Comportamento do analisador:\n"
|
||||
" -7, --7bit gera analisador de 7-bit\n"
|
||||
" -8, --8bit gera analisador de 8-bit\n"
|
||||
" -B, --batch gera analisador em lote (oposto de -I)\n"
|
||||
" -i, --case-insensitive ignora maiúsculas em padrões\n"
|
||||
" -l, --lex-compat compatibilidade máxima com o léxico original\n"
|
||||
" -X, --posix-compat compatibilidade máxima com o léxico POSIX\n"
|
||||
" -I, --interactive gera analisador interactivo (oposto de -B)\n"
|
||||
" --yylineno segue o total de linhas em yylineno\n"
|
||||
"\n"
|
||||
"Código gerado:\n"
|
||||
" -+, --c++ gera classe de analisador C++\n"
|
||||
" -Dmacro[=defn] #define macro defn (defn predefinido é \"1\")\n"
|
||||
" -L, --noline suprime directivas #line no analisador\n"
|
||||
" -P, --prefix=CADEIA usa CADEIA como prefixo em vez de \"yy\"\n"
|
||||
" -R, --reentrant gera um analisador reentrant C\n"
|
||||
" --bison-bridge analisador para processador de bison puro.\n"
|
||||
" --bison-locations inclui suporte yylloc.\n"
|
||||
" --stdinit inicializa yyin/yyout para stdin/stdout\n"
|
||||
" --noansi-definitions definições de funções de estilo antigo\n"
|
||||
" --noansi-prototypes lista de parâmetros em protótipos\n"
|
||||
" --nounistd não inclui <unistd.h>\n"
|
||||
" --noFUNÇÃO não gera uma FUNÇÃO em particular\n"
|
||||
"\n"
|
||||
"Mistas:\n"
|
||||
" -c opção POSIX não-fazer-nada\n"
|
||||
" -n opção POSIX não-fazer-nada\n"
|
||||
" -?\n"
|
||||
" -h, --help mostra esta mensagem de ajuda\n"
|
||||
" -V, --version mostra a versão %s\n"
|
||||
|
||||
#: src/misc.c:70 src/misc.c:81
|
||||
msgid "memory allocation failed in allocate_array()"
|
||||
msgstr "falha ao alocar memória em allocate_array()"
|
||||
|
||||
#: src/misc.c:131
|
||||
#, c-format
|
||||
msgid "bad character '%s' detected in check_char()"
|
||||
msgstr "mau carácter \"%s\" detectado em check_char()"
|
||||
|
||||
#: src/misc.c:136
|
||||
#, c-format
|
||||
msgid "scanner requires -8 flag to use the character %s"
|
||||
msgstr "o analisador requer bandeira -8 para usar o carácter %s"
|
||||
|
||||
#: src/misc.c:155
|
||||
#, fuzzy
|
||||
msgid "memory allocation failure in xstrdup()"
|
||||
msgstr "falha ao alocar memória em allocate_array()"
|
||||
|
||||
#: src/misc.c:231
|
||||
#, c-format
|
||||
msgid "%s: fatal internal error, %s\n"
|
||||
msgstr "%s: erro interno fatal, %s\n"
|
||||
|
||||
#: src/misc.c:587 src/misc.c:598
|
||||
msgid "attempt to increase array size failed"
|
||||
msgstr "falha ao tentar aumentar o tamanho da matriz"
|
||||
|
||||
#: src/misc.c:645
|
||||
msgid "memory allocation failed in yy_flex_xmalloc()"
|
||||
msgstr "falha ao alocar memória em yy_flex_xmalloc()"
|
||||
|
||||
#: src/nfa.c:100
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"********** beginning dump of nfa with start state %d\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"********** a começar o despejo de nfa com estado inicial %d\n"
|
||||
|
||||
#: src/nfa.c:111
|
||||
#, c-format
|
||||
msgid "state # %4d\t"
|
||||
msgstr "estado nº %4d\t"
|
||||
|
||||
#: src/nfa.c:126
|
||||
#, c-format
|
||||
msgid "********** end of dump\n"
|
||||
msgstr "********** fim de despejo\n"
|
||||
|
||||
#: src/nfa.c:169
|
||||
msgid "empty machine in dupmachine()"
|
||||
msgstr "máquina vazia em dupmachine()"
|
||||
|
||||
#: src/nfa.c:234
|
||||
#, c-format
|
||||
msgid "Variable trailing context rule at line %d\n"
|
||||
msgstr "Regra variável de contexto final na linha %d\n"
|
||||
|
||||
#: src/nfa.c:353
|
||||
msgid "bad state type in mark_beginning_as_normal()"
|
||||
msgstr "mau tipo de estado em mark_beginning_as_normal()"
|
||||
|
||||
#: src/nfa.c:593
|
||||
#, c-format
|
||||
msgid "input rules are too complicated (>= %d NFA states)"
|
||||
msgstr "regras de entrada muito complicadas (>= %d estados NFA)"
|
||||
|
||||
#: src/nfa.c:671
|
||||
msgid "found too many transitions in mkxtion()"
|
||||
msgstr "encontradas demasiadas transições em mkxtion()"
|
||||
|
||||
#: src/nfa.c:697
|
||||
#, c-format
|
||||
msgid "too many rules (> %d)!"
|
||||
msgstr "demasiadas regras (> %d)!"
|
||||
|
||||
#: src/parse.y:163
|
||||
msgid "unknown error processing section 1"
|
||||
msgstr "erro desconhecido ao processar a secção 1"
|
||||
|
||||
#: src/parse.y:188 src/parse.y:373
|
||||
msgid "bad start condition list"
|
||||
msgstr "má lista de condição inicial"
|
||||
|
||||
#: src/parse.y:208
|
||||
msgid "Prefix must not contain [ or ]"
|
||||
msgstr ""
|
||||
|
||||
#: src/parse.y:337
|
||||
msgid "unrecognized rule"
|
||||
msgstr "regra não reconhecida"
|
||||
|
||||
#: src/parse.y:456 src/parse.y:469 src/parse.y:538
|
||||
msgid "trailing context used twice"
|
||||
msgstr "contexto final usado duas vezes"
|
||||
|
||||
#: src/parse.y:574 src/parse.y:584 src/parse.y:657 src/parse.y:667
|
||||
msgid "bad iteration values"
|
||||
msgstr "maus valores de iteração"
|
||||
|
||||
#: src/parse.y:602 src/parse.y:620 src/parse.y:685 src/parse.y:703
|
||||
msgid "iteration value must be positive"
|
||||
msgstr "o valor de iteração tem de ser positivo"
|
||||
|
||||
#: src/parse.y:826 src/parse.y:836
|
||||
#, c-format
|
||||
msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner"
|
||||
msgstr ""
|
||||
"o intervalo de caracteres [%c-%c] é ambíguo num analisador que ignora "
|
||||
"maiúsculas"
|
||||
|
||||
#: src/parse.y:841
|
||||
msgid "negative range in character class"
|
||||
msgstr "intervalo negativo em classe de carácter"
|
||||
|
||||
#: src/parse.y:938
|
||||
msgid "[:^lower:] is ambiguous in case insensitive scanner"
|
||||
msgstr "[:^lower:] é ambíguo num analisador que ignora maiúsculas"
|
||||
|
||||
#: src/parse.y:944
|
||||
msgid "[:^upper:] ambiguous in case insensitive scanner"
|
||||
msgstr "[:^upper:] é ambíguo num analisador que ignora maiúsculas"
|
||||
|
||||
#: src/scan.l:73 src/scan.l:662 src/scan.l:720
|
||||
msgid "Input line too long\n"
|
||||
msgstr "Linha de entrada muito grande\n"
|
||||
|
||||
#: src/scan.l:185
|
||||
#, c-format
|
||||
msgid "malformed '%top' directive"
|
||||
msgstr "directiva \"%top\" mal formada"
|
||||
|
||||
#: src/scan.l:207
|
||||
#, no-c-format
|
||||
msgid "unrecognized '%' directive"
|
||||
msgstr "directiva \"%\" não reconhecida"
|
||||
|
||||
#: src/scan.l:216
|
||||
msgid "Definition name too long\n"
|
||||
msgstr "Nome de definição muito longo\n"
|
||||
|
||||
#: src/scan.l:311
|
||||
msgid "Unmatched '{'"
|
||||
msgstr "{ sem par"
|
||||
|
||||
#: src/scan.l:327
|
||||
#, c-format
|
||||
msgid "Definition value for {%s} too long\n"
|
||||
msgstr "Valor de definição para {%s} muito longo\n"
|
||||
|
||||
#: src/scan.l:344
|
||||
msgid "incomplete name definition"
|
||||
msgstr "Definição de nome incompleta"
|
||||
|
||||
#: src/scan.l:486
|
||||
msgid "Option line too long\n"
|
||||
msgstr "Linha de opção muito longa\n"
|
||||
|
||||
#: src/scan.l:494
|
||||
#, c-format
|
||||
msgid "unrecognized %%option: %s"
|
||||
msgstr "%%opção não reconhecida: %s"
|
||||
|
||||
#: src/scan.l:677 src/scan.l:850
|
||||
msgid "bad character class"
|
||||
msgstr "má classe de carácter"
|
||||
|
||||
#: src/scan.l:727
|
||||
#, c-format
|
||||
msgid "undefined definition {%s}"
|
||||
msgstr "definição {%s} indefinida"
|
||||
|
||||
#: src/scan.l:790
|
||||
msgid "unbalanced parenthesis"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:805
|
||||
#, c-format
|
||||
msgid "bad <start condition>: %s"
|
||||
msgstr "má <condição inicial>: %s"
|
||||
|
||||
#: src/scan.l:818
|
||||
msgid "missing quote"
|
||||
msgstr "aspa em falta"
|
||||
|
||||
#: src/scan.l:884
|
||||
#, c-format
|
||||
msgid "bad character class expression: %s"
|
||||
msgstr "má expressão de classe de carácter: %s"
|
||||
|
||||
#: src/scan.l:906
|
||||
msgid "bad character inside {}'s"
|
||||
msgstr "mau carácter dentro de {}"
|
||||
|
||||
#: src/scan.l:912
|
||||
msgid "missing }"
|
||||
msgstr "} em falta"
|
||||
|
||||
#: src/scan.l:1020
|
||||
msgid "EOF encountered inside an action"
|
||||
msgstr "EOF encontrado dentro de uma acção"
|
||||
|
||||
#: src/scan.l:1025
|
||||
msgid "EOF encountered inside pattern"
|
||||
msgstr "EOF encontrado dentro de um padrão"
|
||||
|
||||
#: src/scan.l:1058
|
||||
#, c-format
|
||||
msgid "bad character: %s"
|
||||
msgstr "mau carácter: %s"
|
||||
|
||||
#: src/scan.l:1086
|
||||
#, c-format
|
||||
msgid "can't open %s"
|
||||
msgstr "impossível abrir %s"
|
||||
|
||||
#: src/scanopt.c:248
|
||||
#, c-format
|
||||
msgid "Usage: %s [OPTIONS]...\n"
|
||||
msgstr "Uso: %s [OPÇÕES]...\n"
|
||||
|
||||
#: src/scanopt.c:484
|
||||
#, c-format
|
||||
msgid "option `%s' doesn't allow an argument\n"
|
||||
msgstr "a opção \"%s\" não permite um argumento\n"
|
||||
|
||||
#: src/scanopt.c:489
|
||||
#, c-format
|
||||
msgid "option `%s' requires an argument\n"
|
||||
msgstr "a opção \"%s\" requer um argumento\n"
|
||||
|
||||
#: src/scanopt.c:493
|
||||
#, c-format
|
||||
msgid "option `%s' is ambiguous\n"
|
||||
msgstr "a opção \"%s\" é ambígua\n"
|
||||
|
||||
#: src/scanopt.c:497
|
||||
#, c-format
|
||||
msgid "Unrecognized option `%s'\n"
|
||||
msgstr "Opção \"%s\" não reconhecida\n"
|
||||
|
||||
#: src/scanopt.c:501
|
||||
#, c-format
|
||||
msgid "Unknown error=(%d)\n"
|
||||
msgstr "Erro desconhecido=(%d)\n"
|
||||
|
||||
#: src/sym.c:92
|
||||
msgid "symbol table memory allocation failed"
|
||||
msgstr "falha ao alocar memória de tabela de símbolos"
|
||||
|
||||
#: src/sym.c:183
|
||||
msgid "name defined twice"
|
||||
msgstr "nome definido duas vezes"
|
||||
|
||||
#: src/sym.c:231
|
||||
#, c-format
|
||||
msgid "start condition %s declared twice"
|
||||
msgstr "condição inicial %s declarada duas vezes"
|
||||
|
||||
#: src/yylex.c:57
|
||||
msgid "premature EOF"
|
||||
msgstr "EOF prematuro"
|
||||
|
||||
#: src/yylex.c:200
|
||||
#, c-format
|
||||
msgid "End Marker\n"
|
||||
msgstr "Marcador final\n"
|
||||
|
||||
#: src/yylex.c:206
|
||||
#, c-format
|
||||
msgid "*Something Weird* - tok: %d val: %d\n"
|
||||
msgstr "*Algo esquisito* - tok: %d val: %d\n"
|
||||
|
||||
#~ msgid "Allocation of buffer for line directive failed"
|
||||
#~ msgstr "Falha ao alocar buffer para directiva de linha"
|
||||
|
||||
#~ msgid "Allocation of buffer for m4 def failed"
|
||||
#~ msgstr "Falha ao alocar buffer para m4 def"
|
||||
|
||||
#~ msgid "Allocation of buffer for m4 undef failed"
|
||||
#~ msgstr "Falha ao alocar buffer para m4 undef"
|
||||
|
||||
#~ msgid "error creating header file %s"
|
||||
#~ msgstr "erro ao criar ficheiro de cabeçalho %s"
|
||||
|
||||
#~ msgid "%s %s\n"
|
||||
#~ msgstr "%s %s\n"
|
||||
|
||||
#~ msgid "allocation of sko_stack failed"
|
||||
#~ msgstr "falha ao alocar sko_stack"
|
||||
|
||||
#~ msgid "name \"%s\" ridiculously long"
|
||||
#~ msgstr "nome \"%s\" ridiculamente longo"
|
||||
|
||||
#~ msgid "dynamic memory failure in copy_string()"
|
||||
#~ msgstr "falha de memória dinâmica copy_string()"
|
||||
|
||||
#~ msgid "bad line in skeleton file"
|
||||
#~ msgstr "má linha em ficheiro esqueleto"
|
||||
+455
-423
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,971 @@
|
||||
# Ukrainian translations for flex.
|
||||
# Copyright (C) 2017 The Flex Project (msgids)
|
||||
# This file is distributed under the same license as the flex package.
|
||||
#
|
||||
# Viktor Shepel <shepelvictor@bigmir.net>, 2017.
|
||||
# Yuri Chornoivan <yurchor@ukr.net>, 2017, 2022.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: flex 2.6.4\n"
|
||||
"Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n"
|
||||
"POT-Creation-Date: 2022-09-27 14:18-0400\n"
|
||||
"PO-Revision-Date: 2022-01-03 11:33+0200\n"
|
||||
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
|
||||
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
|
||||
"Language: uk\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Bugs: Report translation errors to the Language-Team address.\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"
|
||||
"X-Generator: Lokalize 20.12.0\n"
|
||||
|
||||
#: src/buf.c:61
|
||||
msgid "Allocation of buffer to print string failed"
|
||||
msgstr "Не вдалось виділити буфер для рядка, що виводиться"
|
||||
|
||||
#: src/ccl.c:80
|
||||
msgid "internal error: trying to add a char to a non-last ccl.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/dfa.c:59
|
||||
#, c-format
|
||||
msgid "State #%d is non-accepting -\n"
|
||||
msgstr "Стан #%d не є допустимим -\n"
|
||||
|
||||
#: src/dfa.c:119
|
||||
msgid "dangerous trailing context"
|
||||
msgstr "небезпечний замикаючий контекст"
|
||||
|
||||
#: src/dfa.c:159
|
||||
#, c-format
|
||||
msgid " associated rule line numbers:"
|
||||
msgstr " номера рядків асоційованого правила:"
|
||||
|
||||
#: src/dfa.c:193
|
||||
#, c-format
|
||||
msgid " out-transitions: "
|
||||
msgstr " out-переходи: "
|
||||
|
||||
#: src/dfa.c:201
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
" jam-transitions: EOF "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" jam-переходи: EOF "
|
||||
|
||||
#: src/dfa.c:331
|
||||
msgid "consistency check failed in epsclosure()"
|
||||
msgstr "помилка при перевірці на цілісність у epsclosure()"
|
||||
|
||||
#: src/dfa.c:422
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"DFA Dump:\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Дамп ДСА:\n"
|
||||
"\n"
|
||||
|
||||
#: src/dfa.c:558
|
||||
msgid "could not create unique end-of-buffer state"
|
||||
msgstr "неможливо створити унікальний стан end_of_buffer"
|
||||
|
||||
#: src/dfa.c:579
|
||||
#, c-format
|
||||
msgid "state # %d:\n"
|
||||
msgstr "стан # %d:\n"
|
||||
|
||||
#: src/dfa.c:738
|
||||
msgid "Could not write yynxt_tbl[][]"
|
||||
msgstr "Неможливо записати yynxt_tbl[][]"
|
||||
|
||||
#: src/dfa.c:1001
|
||||
msgid "bad transition character detected in sympartition()"
|
||||
msgstr "виявлено невірний символ переходу в sympartition()"
|
||||
|
||||
#: src/gen.c:379
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Equivalence Classes:\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Класи еквівалентності:\n"
|
||||
"\n"
|
||||
|
||||
#: src/gen.c:425 src/gen.c:454 src/gen.c:638
|
||||
#, c-format
|
||||
msgid "state # %d accepts: [%d]\n"
|
||||
msgstr "стан # %d приймає: [%d]\n"
|
||||
|
||||
#: src/gen.c:533
|
||||
#, c-format
|
||||
msgid "state # %d accepts: "
|
||||
msgstr "стан # %d приймає: "
|
||||
|
||||
#: src/gen.c:582
|
||||
msgid "Could not write yyacclist_tbl"
|
||||
msgstr "Неможливо записати yyacclist_tbl"
|
||||
|
||||
#: src/gen.c:659
|
||||
msgid "Could not write yyacc_tbl"
|
||||
msgstr "Неможливо записати yyacc_tbl"
|
||||
|
||||
#: src/gen.c:674 src/gen.c:947 src/gen.c:974
|
||||
msgid "Could not write ecstbl"
|
||||
msgstr "Неможливо записати ecstbl"
|
||||
|
||||
#: src/gen.c:694
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Meta-Equivalence Classes:\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Мета-Еквівалентні Класи:\n"
|
||||
|
||||
#: src/gen.c:714
|
||||
msgid "Could not write yymeta_tbl"
|
||||
msgstr "Неможливо записати yymeta_tbl"
|
||||
|
||||
#: src/gen.c:774
|
||||
msgid "Could not write yybase_tbl"
|
||||
msgstr "Неможливо записати yybase_tbl"
|
||||
|
||||
#: src/gen.c:805
|
||||
msgid "Could not write yydef_tbl"
|
||||
msgstr "Неможливо записати yydef_tbl"
|
||||
|
||||
#: src/gen.c:844
|
||||
msgid "Could not write yynxt_tbl"
|
||||
msgstr "Неможливо записати yynxt_tbl"
|
||||
|
||||
#: src/gen.c:877
|
||||
msgid "Could not write yychk_tbl"
|
||||
msgstr "Неможливо записати yychk_tbl"
|
||||
|
||||
#: src/gen.c:932 src/gen.c:965
|
||||
msgid "Could not write ftbl"
|
||||
msgstr "Неможливо записати ftbl"
|
||||
|
||||
#: src/gen.c:938
|
||||
msgid "Could not write ssltbl"
|
||||
msgstr "Неможливо записати ssltbl"
|
||||
|
||||
#: src/gen.c:1014
|
||||
msgid "Could not write eoltbl"
|
||||
msgstr "Неможливо записати eoltbl"
|
||||
|
||||
#: src/gen.c:1061
|
||||
msgid "Could not write yynultrans_tbl"
|
||||
msgstr "Неможливо записати yynultrans_tbl"
|
||||
|
||||
#: src/main.c:169
|
||||
msgid "rule cannot be matched"
|
||||
msgstr "неможливо застосувати правило"
|
||||
|
||||
#: src/main.c:174
|
||||
msgid "-s option given but default rule can be matched"
|
||||
msgstr ""
|
||||
"вказано параметр -s, але правило за замовчуванням може бути застосоване"
|
||||
|
||||
#: src/main.c:317
|
||||
msgid "Can't use -+ with -l option"
|
||||
msgstr "Неможливо використовувати -+ з параметром -l"
|
||||
|
||||
#: src/main.c:320
|
||||
msgid "Can't use -f or -F with -l option"
|
||||
msgstr "Неможливо використовувати -f або -F з параметром -l"
|
||||
|
||||
#: src/main.c:324
|
||||
#, fuzzy
|
||||
msgid "Can't use --ctrl.reentrant or --bison-bridge with -l option"
|
||||
msgstr ""
|
||||
"Неможливо використовувати --reentrant або --bison-bridge з параметром -l"
|
||||
|
||||
#: src/main.c:356
|
||||
msgid "-Cf/-CF and -Cm don't make sense together"
|
||||
msgstr "Параметри -Cf/-CF і -Cm разом не мають сенсу"
|
||||
|
||||
#: src/main.c:359
|
||||
msgid "-Cf/-CF and -I are incompatible"
|
||||
msgstr "Параметри -Cf/-CF і -I несумісні"
|
||||
|
||||
#: src/main.c:363
|
||||
msgid "-Cf/-CF are incompatible with lex-compatibility mode"
|
||||
msgstr "Параметри -Cf/-CF несумісні з режимом lex-compatibility"
|
||||
|
||||
#: src/main.c:368
|
||||
msgid "-Cf and -CF are mutually exclusive"
|
||||
msgstr "Параметри -Cf і -CF є взаємовиключними"
|
||||
|
||||
#: src/main.c:372
|
||||
msgid "Can't use -+ with -CF option"
|
||||
msgstr "Неможливо використовувати -+ з параметром -CF"
|
||||
|
||||
#: src/main.c:375
|
||||
#, c-format
|
||||
msgid "%array incompatible with -+ option"
|
||||
msgstr "%array несумісний з параметром -+"
|
||||
|
||||
#: src/main.c:380
|
||||
msgid "Options -+ and --reentrant are mutually exclusive."
|
||||
msgstr "Параметри -+ і --reentrant є взаємовиключними."
|
||||
|
||||
#: src/main.c:383
|
||||
msgid "bison bridge not supported for the C++ scanner."
|
||||
msgstr "bison bridge не підтримується для сканера C++."
|
||||
|
||||
#: src/main.c:422 src/main.c:1235
|
||||
#, c-format
|
||||
msgid "could not create %s"
|
||||
msgstr "неможливо створити %s"
|
||||
|
||||
#: src/main.c:443
|
||||
#, c-format
|
||||
msgid "%option yyclass only meaningful for C++ scanners"
|
||||
msgstr "%option yyclass має сенс тільки для сканерів C++"
|
||||
|
||||
#: src/main.c:447
|
||||
#, c-format
|
||||
msgid "input error reading skeleton file %s"
|
||||
msgstr "помилка читання файла-каркаса %s"
|
||||
|
||||
#: src/main.c:451
|
||||
#, c-format
|
||||
msgid "error closing skeleton file %s"
|
||||
msgstr "помилка при закритті файла-каркаса %s"
|
||||
|
||||
#: src/main.c:457
|
||||
#, c-format
|
||||
msgid "error writing output file %s"
|
||||
msgstr "помилка запису у вихідний файл %s"
|
||||
|
||||
#: src/main.c:461
|
||||
#, c-format
|
||||
msgid "error closing output file %s"
|
||||
msgstr "помилка закриття вихідного файла %s"
|
||||
|
||||
#: src/main.c:465
|
||||
#, c-format
|
||||
msgid "error deleting output file %s"
|
||||
msgstr "помилка видалення вихідного файла %s"
|
||||
|
||||
#: src/main.c:472
|
||||
#, c-format
|
||||
msgid "No backing up.\n"
|
||||
msgstr "Резервне копіювання вимкнено.\n"
|
||||
|
||||
#: src/main.c:476
|
||||
#, c-format
|
||||
msgid "%d backing up (non-accepting) states.\n"
|
||||
msgstr "резервне копіювання %d (недопустимих) станів.\n"
|
||||
|
||||
#: src/main.c:480
|
||||
#, c-format
|
||||
msgid "Compressed tables always back up.\n"
|
||||
msgstr "Створення резервних копій стислих таблиць виконується завжди.\n"
|
||||
|
||||
#: src/main.c:483
|
||||
#, c-format
|
||||
msgid "error writing backup file %s"
|
||||
msgstr "помилка запису резервної копії файла %s"
|
||||
|
||||
#: src/main.c:487
|
||||
#, c-format
|
||||
msgid "error closing backup file %s"
|
||||
msgstr "помилка закриття резервної копії файла %s"
|
||||
|
||||
#: src/main.c:492
|
||||
#, c-format
|
||||
msgid "%s version %s usage statistics:\n"
|
||||
msgstr "статистика використання %s версії %s:\n"
|
||||
|
||||
#: src/main.c:495
|
||||
#, c-format
|
||||
msgid " scanner options: -"
|
||||
msgstr " параметри сканера: -"
|
||||
|
||||
#: src/main.c:574
|
||||
#, c-format
|
||||
msgid " %d/%d NFA states\n"
|
||||
msgstr " %d/%d станів НСА\n"
|
||||
|
||||
#: src/main.c:576
|
||||
#, c-format
|
||||
msgid " %d/%d DFA states (%d words)\n"
|
||||
msgstr " %d/%d станів ДСА (%d слів)\n"
|
||||
|
||||
#: src/main.c:578
|
||||
#, c-format
|
||||
msgid " %d rules\n"
|
||||
msgstr " %d правил\n"
|
||||
|
||||
#: src/main.c:583
|
||||
#, c-format
|
||||
msgid " No backing up\n"
|
||||
msgstr " Резервне копіювання вимкнено\n"
|
||||
|
||||
#: src/main.c:587
|
||||
#, c-format
|
||||
msgid " %d backing-up (non-accepting) states\n"
|
||||
msgstr " резервне копіювання %d (недопустимих) станів\n"
|
||||
|
||||
#: src/main.c:592
|
||||
#, c-format
|
||||
msgid " Compressed tables always back-up\n"
|
||||
msgstr " Створення резервних копій стислих таблиць виконується завжди\n"
|
||||
|
||||
#: src/main.c:596
|
||||
#, c-format
|
||||
msgid " Beginning-of-line patterns used\n"
|
||||
msgstr " Використовуються шаблони початку рядка\n"
|
||||
|
||||
#: src/main.c:598
|
||||
#, c-format
|
||||
msgid " %d/%d start conditions\n"
|
||||
msgstr " %d/%d початкових умов\n"
|
||||
|
||||
#: src/main.c:602
|
||||
#, c-format
|
||||
msgid " %d epsilon states, %d double epsilon states\n"
|
||||
msgstr " %d епсилон-станів, %d подвійних епсилон-станів\n"
|
||||
|
||||
#: src/main.c:606
|
||||
#, c-format
|
||||
msgid " no character classes\n"
|
||||
msgstr " відсутні класи символів\n"
|
||||
|
||||
#: src/main.c:610
|
||||
#, c-format
|
||||
msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n"
|
||||
msgstr ""
|
||||
" %d/%d символьних класів потребують %d/%d слів для зберігання, %d "
|
||||
"використано вдруге\n"
|
||||
|
||||
#: src/main.c:615
|
||||
#, c-format
|
||||
msgid " %d state/nextstate pairs created\n"
|
||||
msgstr " створено %d пар стан/наступний-стан\n"
|
||||
|
||||
#: src/main.c:618
|
||||
#, c-format
|
||||
msgid " %d/%d unique/duplicate transitions\n"
|
||||
msgstr " %d/%d унікальних/повторюваних переходів\n"
|
||||
|
||||
#: src/main.c:623
|
||||
#, c-format
|
||||
msgid " %d table entries\n"
|
||||
msgstr " %d елементів таблиці\n"
|
||||
|
||||
#: src/main.c:631
|
||||
#, c-format
|
||||
msgid " %d/%d base-def entries created\n"
|
||||
msgstr " створено %d/%d base-def елементів\n"
|
||||
|
||||
#: src/main.c:635
|
||||
#, c-format
|
||||
msgid " %d/%d (peak %d) nxt-chk entries created\n"
|
||||
msgstr " створено %d/%d (пік %d) записів nxt-chk\n"
|
||||
|
||||
#: src/main.c:639
|
||||
#, c-format
|
||||
msgid " %d/%d (peak %d) template nxt-chk entries created\n"
|
||||
msgstr " створено %d/%d (пік %d) шаблонних записів nxt-chk\n"
|
||||
|
||||
#: src/main.c:643
|
||||
#, c-format
|
||||
msgid " %d empty table entries\n"
|
||||
msgstr " %d порожніх елементів таблиці\n"
|
||||
|
||||
#: src/main.c:645
|
||||
#, c-format
|
||||
msgid " %d protos created\n"
|
||||
msgstr " створено %d прототипів\n"
|
||||
|
||||
#: src/main.c:648
|
||||
#, c-format
|
||||
msgid " %d templates created, %d uses\n"
|
||||
msgstr " створено %d шаблонів, %d використовується\n"
|
||||
|
||||
#: src/main.c:656
|
||||
#, c-format
|
||||
msgid " %d/%d equivalence classes created\n"
|
||||
msgstr " створено класів еквівалентності %d/%d\n"
|
||||
|
||||
#: src/main.c:664
|
||||
#, c-format
|
||||
msgid " %d/%d meta-equivalence classes created\n"
|
||||
msgstr " створено класів мета-еквівалентності %d/%d\n"
|
||||
|
||||
#: src/main.c:670
|
||||
#, c-format
|
||||
msgid " %d (%d saved) hash collisions, %d DFAs equal\n"
|
||||
msgstr " %d (%d записано) колізій хеш-таблиці, %d еквівалентних ДСА\n"
|
||||
|
||||
#: src/main.c:672
|
||||
#, c-format
|
||||
msgid " %d sets of reallocations needed\n"
|
||||
msgstr " потрібно %d наборів повторних розміщень\n"
|
||||
|
||||
#: src/main.c:674
|
||||
#, c-format
|
||||
msgid " %d total table entries needed\n"
|
||||
msgstr " всього потрібно %d елементів таблиці\n"
|
||||
|
||||
#: src/main.c:735
|
||||
#, c-format
|
||||
msgid "Internal error. flexopts are malformed.\n"
|
||||
msgstr "Внутрішня помилка. Неправильне значення flexopts.\n"
|
||||
|
||||
#: src/main.c:745
|
||||
#, c-format
|
||||
msgid "Try `%s --help' for more information.\n"
|
||||
msgstr "Спробуйте «%s --help» для отримання більш докладного опису.\n"
|
||||
|
||||
#: src/main.c:807
|
||||
#, c-format
|
||||
msgid "unknown -C option '%c'"
|
||||
msgstr "невідоме значення «%c» для параметру -C"
|
||||
|
||||
#: src/main.c:1195
|
||||
msgid "fatal parse error"
|
||||
msgstr "фатальна помилка розбору"
|
||||
|
||||
#: src/main.c:1247
|
||||
msgid "could not write tables header"
|
||||
msgstr "Неможливо записати заголовок таблиць"
|
||||
|
||||
#: src/main.c:1251
|
||||
#, c-format
|
||||
msgid "can't open skeleton file %s"
|
||||
msgstr "Неможливо відкрити файл-каркас %s"
|
||||
|
||||
#: src/main.c:1254
|
||||
msgid "Prefix cannot include '[' or ']'"
|
||||
msgstr "Префікс не може містити «[» або «]»"
|
||||
|
||||
#: src/main.c:1322
|
||||
#, c-format
|
||||
msgid "could not create backing-up info file %s"
|
||||
msgstr "неможливо створити резервну копію інформаційного файла %s"
|
||||
|
||||
#: src/main.c:1343
|
||||
#, c-format
|
||||
msgid "-l AT&T lex compatibility option entails a large performance penalty\n"
|
||||
msgstr ""
|
||||
"Параметр -l сумісності з AT&T lex спричиняє значне зниження продуктивності\n"
|
||||
|
||||
#: src/main.c:1346
|
||||
#, c-format
|
||||
msgid " and may be the actual source of other reported performance penalties\n"
|
||||
msgstr "і також може бути істинним джерелом проблем з продуктивністю\n"
|
||||
|
||||
#: src/main.c:1352
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%%option yylineno entails a performance penalty ONLY on rules that can match "
|
||||
"newline characters\n"
|
||||
msgstr ""
|
||||
"%%option yylineno спричиняе значне зниження продуктивності ТІЛЬКИ для "
|
||||
"правил, котрі описують символи нового рядка\n"
|
||||
|
||||
#: src/main.c:1359
|
||||
#, c-format
|
||||
msgid "-I (interactive) entails a minor performance penalty\n"
|
||||
msgstr "-I (інтерактивний) спричиняе незначне зниження продуктивності\n"
|
||||
|
||||
#: src/main.c:1364
|
||||
#, c-format
|
||||
msgid "yymore() entails a minor performance penalty\n"
|
||||
msgstr "yymore() спричиняе незначне зниження продуктивності\n"
|
||||
|
||||
#: src/main.c:1370
|
||||
#, c-format
|
||||
msgid "REJECT entails a large performance penalty\n"
|
||||
msgstr "REJECT спричиняе значне зниження продуктивності\n"
|
||||
|
||||
#: src/main.c:1375
|
||||
#, c-format
|
||||
msgid "Variable trailing context rules entail a large performance penalty\n"
|
||||
msgstr ""
|
||||
"Правила котрі мають замикаючий контекст змінної довжини значно знижують "
|
||||
"продуктивність\n"
|
||||
|
||||
#: src/main.c:1387
|
||||
msgid "REJECT cannot be used with -f or -F"
|
||||
msgstr "REJECT не може бути використано разом з -f або -F"
|
||||
|
||||
#: src/main.c:1390
|
||||
#, c-format
|
||||
msgid "%option yylineno cannot be used with REJECT"
|
||||
msgstr "%option yylineno не може бути використано з REJECT"
|
||||
|
||||
#: src/main.c:1393
|
||||
msgid "variable trailing context rules cannot be used with -f or -F"
|
||||
msgstr ""
|
||||
"Правила котрі мають замикаючий контекст змінної довжини не можуть бути "
|
||||
"використані з -f or -F"
|
||||
|
||||
#: src/main.c:1428
|
||||
msgid "allocation of macro definition failed"
|
||||
msgstr "Не вдалось розмістити визначення макросу"
|
||||
|
||||
#: src/main.c:1745
|
||||
#, c-format
|
||||
msgid "Usage: %s [OPTIONS] [FILE]...\n"
|
||||
msgstr "Використання: %s [ПАРАМЕТРИ] [ФАЙЛ]…\n"
|
||||
|
||||
#: src/main.c:1748
|
||||
#, fuzzy, c-format
|
||||
msgid ""
|
||||
"Generates programs that perform pattern-matching on text.\n"
|
||||
"\n"
|
||||
"Table Compression:\n"
|
||||
" -Ca, --align trade off larger tables for better memory alignment\n"
|
||||
" -Ce, --ecs construct equivalence classes\n"
|
||||
" -Cf do not compress tables; use -f representation\n"
|
||||
" -CF do not compress tables; use -F representation\n"
|
||||
" -Cm, --meta-ecs construct meta-equivalence classes\n"
|
||||
" -Cr, --read use read() instead of stdio for scanner input\n"
|
||||
" -f, --full generate fast, large scanner. Same as -Cfr\n"
|
||||
" -F, --fast use alternate table representation. Same as -CFr\n"
|
||||
" -Cem default compression (same as --ecs --meta-ecs)\n"
|
||||
"\n"
|
||||
"Debugging:\n"
|
||||
" -d, --debug enable debug mode in scanner\n"
|
||||
" -b, --backup write backing-up information to %s\n"
|
||||
" -p, --perf-report write performance report to stderr\n"
|
||||
" -s, --nodefault suppress default rule to ECHO unmatched text\n"
|
||||
" -T, --env.trace %s should run in env.trace mode\n"
|
||||
" -w, --nowarn do not generate warnings\n"
|
||||
" -v, --verbose write summary of scanner statistics to stdout\n"
|
||||
" --hex use hexadecimal numbers instead of octal in debug "
|
||||
"outputs\n"
|
||||
"\n"
|
||||
"Files:\n"
|
||||
" -o, --outfile=FILE specify output filename\n"
|
||||
" -S, --skel=FILE specify skeleton file\n"
|
||||
" -t, --stdout write scanner on stdout instead of %s\n"
|
||||
" --yyclass=NAME name of C++ class\n"
|
||||
" --header-file=FILE create a C header file in addition to the "
|
||||
"scanner\n"
|
||||
" --tables-file[=FILE] write tables to FILE\n"
|
||||
" --backup-file=FILE write backing-up information to FILE\n"
|
||||
"\n"
|
||||
"Scanner behavior:\n"
|
||||
" -7, --7bit generate 7-bit scanner\n"
|
||||
" -8, --8bit generate 8-bit scanner\n"
|
||||
" -B, --batch generate batch scanner (opposite of -I)\n"
|
||||
" -i, --case-insensitive ignore case in patterns\n"
|
||||
" -l, --lex-compat maximal compatibility with original lex\n"
|
||||
" -X, --posix-compat maximal compatibility with POSIX lex\n"
|
||||
" -I, --interactive generate interactive scanner (opposite of -B)\n"
|
||||
" --yylineno track line count in yylineno\n"
|
||||
"\n"
|
||||
"Generated code:\n"
|
||||
" -+, --c++ generate C++ scanner class\n"
|
||||
" -Dmacro[=defn] #define macro defn (default defn is '1')\n"
|
||||
" -e, --emit=LANG Specify target language\n"
|
||||
" -L, --noline suppress #line directives in scanner\n"
|
||||
" -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n"
|
||||
" -R, --reentrant generate a reentrant scanner\n"
|
||||
" --bison-bridge scanner for Bison pure parser.\n"
|
||||
" --bison-locations include yylloc support.\n"
|
||||
" --stdinit initialize yyin/yyout to stdin/stdout\n"
|
||||
" --nounistd do not include <unistd.h>\n"
|
||||
" --noFUNCTION do not generate a particular FUNCTION\n"
|
||||
"\n"
|
||||
"Miscellaneous:\n"
|
||||
" -c do-nothing POSIX option\n"
|
||||
" -n do-nothing POSIX option\n"
|
||||
" -?\n"
|
||||
" -h, --help produce this help message\n"
|
||||
" -V, --version report %s version\n"
|
||||
msgstr ""
|
||||
"Генерує програми, що знаходять шаблони у тексті.\n"
|
||||
"\n"
|
||||
"Стиснення таблиць:\n"
|
||||
" -Ca, --align вирівняти таблиці у пам'яті збільшивши розмір\n"
|
||||
" їх елементів\n"
|
||||
" -Ce, --ecs створювати класи еквівалентності\n"
|
||||
" -Cf не стискати таблиці; використовувати -f представлення\n"
|
||||
" -CF не стискати таблиці; використовувати -F представлення\n"
|
||||
" -Cm, --meta-ecs створювати класи мета-еквівалентності\n"
|
||||
" -Cr, --read використати read() замість stdio як\n"
|
||||
" вхідні дані сканера\n"
|
||||
" -f, --full створити швидкий, великий сканер. Теж саме, що -Cfr\n"
|
||||
" -F, --fast застосувати альтернативний опис таблиць.\n"
|
||||
" Теж саме, що -CFr\n"
|
||||
" -Cem степінь стиснення за замовчуванням\n"
|
||||
" (теж саме, що --ecs --meta-ecs)\n"
|
||||
"\n"
|
||||
"Налагодження:\n"
|
||||
" -d, --debug увімкнути режим налагодження сканера\n"
|
||||
" -b, --backup записати резервну копію до %s\n"
|
||||
" -p, --perf-report записати звіт про продуктивність до stderr\n"
|
||||
" -s, --nodefault припинити вивід тексту (ECHO до stdout)\n"
|
||||
" що не збігається з жодним правилом\n"
|
||||
" -T, --trace %s повинен запускатися у режимі трасування\n"
|
||||
" -w, --nowarn не видавати попереджень\n"
|
||||
" -v, --verbose записати підсумкову статистику сканера до stdout\n"
|
||||
" --hex шістнадцяткові числа замість вісімкових у "
|
||||
"діагностиці\n"
|
||||
"\n"
|
||||
"Файли:\n"
|
||||
" -o, --outfile=ФАЙЛ вказати ім'я вихідного файла\n"
|
||||
" -S, --skel=ФАЙЛ вказати файл каркасу\n"
|
||||
" -t, --stdout записати сканер до stdout замість %s\n"
|
||||
" --yyclass=ІМ'Я ім'я класу C++\n"
|
||||
" --header-file=ФАЙЛ створити C файл заголовок сканера\n"
|
||||
" --tables-file[=ФАЙЛ] записати таблиці у ФАЙЛ\n"
|
||||
"\n"
|
||||
"Поведінка сканера:\n"
|
||||
" -7, --7bit створити 7-бітний сканер\n"
|
||||
" -8, --8bit створити 8-бітний сканер\n"
|
||||
" -B, --batch створити пакетний сканер\n"
|
||||
" (протилежна за властивостями до опції -I)\n"
|
||||
" -i, --case-insensitive ігнорувати регістр символів у шаблонах\n"
|
||||
" -l, --lex-compat максимальна сумісність з оригінальним lex\n"
|
||||
" -X, --posix-compat максимальна сумісність з POSIX lex\n"
|
||||
" -I, --interactive створити інтерактивний сканер\n"
|
||||
" (протилежна за властивостями до опції -B)\n"
|
||||
" --yylineno відслідковувати число рядків у yylineno\n"
|
||||
"\n"
|
||||
"Генерація коду:\n"
|
||||
" -+, --c++ створити C++ клас сканера\n"
|
||||
" -Dmacro[=defn] #define macro defn (за замовчуванням defn='1')\n"
|
||||
" -L, --noline не створювати #line директиви для сканера\n"
|
||||
" -P, --prefix=РЯДОК використати РЯДОК як префікс замість «yy»\n"
|
||||
" -R, --reentrant генерувати реентерабельний C-сканер\n"
|
||||
" --bison-bridge сканер тільки для bison аналізатору\n"
|
||||
" --bison-locations додати підтримку yylloc\n"
|
||||
" --stdinit ініціалізувати yyin/yyout до stdin/stdout\n"
|
||||
" --nounistd не додавати <unistd.h>\n"
|
||||
" --noФУНКЦІЯ не генерувати задану функцію ФУНКЦІЯ\n"
|
||||
"\n"
|
||||
"Інше:\n"
|
||||
" -с недіючий POSIX параметр\n"
|
||||
" -n недіючий POSIX параметр\n"
|
||||
" -?\n"
|
||||
" -h, --help показати цю довідку\n"
|
||||
" -V, --version показати версію %s\n"
|
||||
|
||||
#: src/misc.c:70 src/misc.c:81
|
||||
msgid "memory allocation failed in allocate_array()"
|
||||
msgstr "помилка виділення пам'яті у allocate_array()"
|
||||
|
||||
#: src/misc.c:131
|
||||
#, c-format
|
||||
msgid "bad character '%s' detected in check_char()"
|
||||
msgstr "check_char() виявив недопустимий символ «%s»"
|
||||
|
||||
#: src/misc.c:136
|
||||
#, c-format
|
||||
msgid "scanner requires -8 flag to use the character %s"
|
||||
msgstr "для використання символу %s сканер потребує опцію -8"
|
||||
|
||||
#: src/misc.c:155
|
||||
msgid "memory allocation failure in xstrdup()"
|
||||
msgstr "помилка виділення пам'яті у xstrdup()"
|
||||
|
||||
#: src/misc.c:231
|
||||
#, c-format
|
||||
msgid "%s: fatal internal error, %s\n"
|
||||
msgstr "%s: фатальна внутрішня помилка, %s\n"
|
||||
|
||||
#: src/misc.c:587 src/misc.c:598
|
||||
msgid "attempt to increase array size failed"
|
||||
msgstr "помилка при спробі збільшити розмір масиву"
|
||||
|
||||
#: src/misc.c:645
|
||||
msgid "memory allocation failed in yy_flex_xmalloc()"
|
||||
msgstr "помилка виділення пам'яті у yy_flex_xmalloc()"
|
||||
|
||||
#: src/nfa.c:100
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"********** beginning dump of nfa with start state %d\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"********** початок дампу НСА з початковим станом %d\n"
|
||||
|
||||
#: src/nfa.c:111
|
||||
#, c-format
|
||||
msgid "state # %4d\t"
|
||||
msgstr "стан # %4d\t"
|
||||
|
||||
#: src/nfa.c:126
|
||||
#, c-format
|
||||
msgid "********** end of dump\n"
|
||||
msgstr "********** кінець дампу\n"
|
||||
|
||||
#: src/nfa.c:169
|
||||
msgid "empty machine in dupmachine()"
|
||||
msgstr "порожній автомат у dupmachine()"
|
||||
|
||||
#: src/nfa.c:234
|
||||
#, c-format
|
||||
msgid "Variable trailing context rule at line %d\n"
|
||||
msgstr "Правило із замикаючим контекстом змінної довжини у стрічці %d\n"
|
||||
|
||||
#: src/nfa.c:353
|
||||
msgid "bad state type in mark_beginning_as_normal()"
|
||||
msgstr "невідомий тип стану у mark_beginning_as_normal()"
|
||||
|
||||
#: src/nfa.c:593
|
||||
#, c-format
|
||||
msgid "input rules are too complicated (>= %d NFA states)"
|
||||
msgstr "вхідні правила занадто складні (>= %d станів НСА)"
|
||||
|
||||
#: src/nfa.c:671
|
||||
msgid "found too many transitions in mkxtion()"
|
||||
msgstr "знайдено занадто багато переходів у mkxtion()"
|
||||
|
||||
#: src/nfa.c:697
|
||||
#, c-format
|
||||
msgid "too many rules (> %d)!"
|
||||
msgstr "занадто багато правил (> %d)!"
|
||||
|
||||
#: src/parse.y:163
|
||||
msgid "unknown error processing section 1"
|
||||
msgstr "невідома помилка при обробці розділу 1"
|
||||
|
||||
#: src/parse.y:188 src/parse.y:373
|
||||
msgid "bad start condition list"
|
||||
msgstr "невірний список початкових умов"
|
||||
|
||||
#: src/parse.y:208
|
||||
msgid "Prefix must not contain [ or ]"
|
||||
msgstr "Префікс не може містити символи «[» або «]»"
|
||||
|
||||
#: src/parse.y:337
|
||||
msgid "unrecognized rule"
|
||||
msgstr "нерозпізнане правило"
|
||||
|
||||
#: src/parse.y:456 src/parse.y:469 src/parse.y:538
|
||||
msgid "trailing context used twice"
|
||||
msgstr "замикаючий контекст використано двічі"
|
||||
|
||||
#: src/parse.y:574 src/parse.y:584 src/parse.y:657 src/parse.y:667
|
||||
msgid "bad iteration values"
|
||||
msgstr "невірно сформований діапазон ітерацій"
|
||||
|
||||
#: src/parse.y:602 src/parse.y:620 src/parse.y:685 src/parse.y:703
|
||||
msgid "iteration value must be positive"
|
||||
msgstr "кількість ітерацій повинна бути додатнім числом"
|
||||
|
||||
#: src/parse.y:826 src/parse.y:836
|
||||
#, c-format
|
||||
msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner"
|
||||
msgstr ""
|
||||
"використання діапазону символів [%c-%c] є двозначним для сканера, що не "
|
||||
"чутливий до регістру символів"
|
||||
|
||||
#: src/parse.y:841
|
||||
msgid "negative range in character class"
|
||||
msgstr ""
|
||||
"символьний клас описано діапазоном, перший елемент котрого більший за "
|
||||
"останній"
|
||||
|
||||
#: src/parse.y:938
|
||||
msgid "[:^lower:] is ambiguous in case insensitive scanner"
|
||||
msgstr ""
|
||||
"використання [:^lower:] є невизначеним для сканера, що не чутливий до "
|
||||
"регістру символів"
|
||||
|
||||
#: src/parse.y:944
|
||||
msgid "[:^upper:] ambiguous in case insensitive scanner"
|
||||
msgstr ""
|
||||
"використання [:^upper:] є невизначеним для сканера, що не чутливий до "
|
||||
"регістру символів"
|
||||
|
||||
#: src/scan.l:73 src/scan.l:662 src/scan.l:720
|
||||
msgid "Input line too long\n"
|
||||
msgstr "Занадто довгий вхідний рядок\n"
|
||||
|
||||
#: src/scan.l:185
|
||||
#, c-format
|
||||
msgid "malformed '%top' directive"
|
||||
msgstr "нерозпізнана директива «%top»"
|
||||
|
||||
#: src/scan.l:207
|
||||
#, no-c-format
|
||||
msgid "unrecognized '%' directive"
|
||||
msgstr "нерозпізнана директива «%»"
|
||||
|
||||
#: src/scan.l:216
|
||||
msgid "Definition name too long\n"
|
||||
msgstr "Визначення має занадто довге ім'я\n"
|
||||
|
||||
#: src/scan.l:311
|
||||
msgid "Unmatched '{'"
|
||||
msgstr "Непарна «{»"
|
||||
|
||||
#: src/scan.l:327
|
||||
#, c-format
|
||||
msgid "Definition value for {%s} too long\n"
|
||||
msgstr "Визначення {%s} має занадто довге значення\n"
|
||||
|
||||
#: src/scan.l:344
|
||||
msgid "incomplete name definition"
|
||||
msgstr "неповне визначення імені"
|
||||
|
||||
#: src/scan.l:486
|
||||
msgid "Option line too long\n"
|
||||
msgstr "Занадто довгий параметр\n"
|
||||
|
||||
#: src/scan.l:494
|
||||
#, c-format
|
||||
msgid "unrecognized %%option: %s"
|
||||
msgstr "нерозпізнаний %%option: %s"
|
||||
|
||||
#: src/scan.l:677 src/scan.l:850
|
||||
msgid "bad character class"
|
||||
msgstr "помилковий символьний клас"
|
||||
|
||||
#: src/scan.l:727
|
||||
#, c-format
|
||||
msgid "undefined definition {%s}"
|
||||
msgstr "нерозпізнане визначення {%s}"
|
||||
|
||||
#: src/scan.l:790
|
||||
msgid "unbalanced parenthesis"
|
||||
msgstr "незбалансовані круглі дужки"
|
||||
|
||||
#: src/scan.l:805
|
||||
#, c-format
|
||||
msgid "bad <start condition>: %s"
|
||||
msgstr "невірно сформованана <умова, що активує правило>: %s"
|
||||
|
||||
#: src/scan.l:818
|
||||
msgid "missing quote"
|
||||
msgstr "відсутні лапки"
|
||||
|
||||
#: src/scan.l:884
|
||||
#, c-format
|
||||
msgid "bad character class expression: %s"
|
||||
msgstr "символьний клас заданий некоректним виразом: %s"
|
||||
|
||||
#: src/scan.l:906
|
||||
msgid "bad character inside {}'s"
|
||||
msgstr "неприйнятний символ всередині {}"
|
||||
|
||||
#: src/scan.l:912
|
||||
msgid "missing }"
|
||||
msgstr "відсутній }"
|
||||
|
||||
#: src/scan.l:1020
|
||||
msgid "EOF encountered inside an action"
|
||||
msgstr "знайдено EOF всередині коду котрий асоційований з правилом"
|
||||
|
||||
#: src/scan.l:1025
|
||||
msgid "EOF encountered inside pattern"
|
||||
msgstr "знайдено EOF всередині шаблону, що задає правило"
|
||||
|
||||
#: src/scan.l:1058
|
||||
#, c-format
|
||||
msgid "bad character: %s"
|
||||
msgstr "неочікуваний символ: %s"
|
||||
|
||||
#: src/scan.l:1086
|
||||
#, c-format
|
||||
msgid "can't open %s"
|
||||
msgstr "неможливо відкрити %s"
|
||||
|
||||
#: src/scanopt.c:248
|
||||
#, c-format
|
||||
msgid "Usage: %s [OPTIONS]...\n"
|
||||
msgstr "Використання: %s [ПАРАМЕТРИ]…\n"
|
||||
|
||||
#: src/scanopt.c:484
|
||||
#, c-format
|
||||
msgid "option `%s' doesn't allow an argument\n"
|
||||
msgstr "параметр «%s» повинен використовуватись без аргументу\n"
|
||||
|
||||
#: src/scanopt.c:489
|
||||
#, c-format
|
||||
msgid "option `%s' requires an argument\n"
|
||||
msgstr "параметр «% s» повинен використовуватись з аргументом\n"
|
||||
|
||||
#: src/scanopt.c:493
|
||||
#, c-format
|
||||
msgid "option `%s' is ambiguous\n"
|
||||
msgstr "параметр «%s» є двозначним\n"
|
||||
|
||||
#: src/scanopt.c:497
|
||||
#, c-format
|
||||
msgid "Unrecognized option `%s'\n"
|
||||
msgstr "Нерозпізнаний параметр «%s»\n"
|
||||
|
||||
#: src/scanopt.c:501
|
||||
#, c-format
|
||||
msgid "Unknown error=(%d)\n"
|
||||
msgstr "Невідома помилка=(%d)\n"
|
||||
|
||||
#: src/sym.c:92
|
||||
msgid "symbol table memory allocation failed"
|
||||
msgstr "помилка виділення пам'яті для таблиці символів"
|
||||
|
||||
#: src/sym.c:183
|
||||
msgid "name defined twice"
|
||||
msgstr "ім'я визначено двічі"
|
||||
|
||||
#: src/sym.c:231
|
||||
#, c-format
|
||||
msgid "start condition %s declared twice"
|
||||
msgstr "початкова умова %s описана двічі"
|
||||
|
||||
#: src/yylex.c:57
|
||||
msgid "premature EOF"
|
||||
msgstr "неочікуваний EOF"
|
||||
|
||||
#: src/yylex.c:200
|
||||
#, c-format
|
||||
msgid "End Marker\n"
|
||||
msgstr "Мітка кінця\n"
|
||||
|
||||
#: src/yylex.c:206
|
||||
#, c-format
|
||||
msgid "*Something Weird* - tok: %d val: %d\n"
|
||||
msgstr "*Щось не так* — tok: %d val: %d\n"
|
||||
|
||||
#~ msgid "Allocation of buffer for line directive failed"
|
||||
#~ msgstr "Не вдалось виділити буфер для рядкової директиви"
|
||||
|
||||
#~ msgid "Allocation of buffer for m4 def failed"
|
||||
#~ msgstr "Не вдалось виділити буфер для m4 def"
|
||||
|
||||
#~ msgid "Allocation of buffer for m4 undef failed"
|
||||
#~ msgstr "Не вдалось виділити буфер для m4 undef"
|
||||
|
||||
#~ msgid "error creating header file %s"
|
||||
#~ msgstr "помилка створення файла-заголовку %s"
|
||||
|
||||
#~ msgid "%s %s\n"
|
||||
#~ msgstr "%s %s\n"
|
||||
|
||||
#~ msgid "allocation of sko_stack failed"
|
||||
#~ msgstr "не вдалось отримати пам’ять під sko_stack"
|
||||
|
||||
#~ msgid "name \"%s\" ridiculously long"
|
||||
#~ msgstr "ім'я «%s» занадто довге"
|
||||
|
||||
#~ msgid "bad line in skeleton file"
|
||||
#~ msgstr "невідомий рядок у файлі-каркасі"
|
||||
|
||||
#~ msgid "dynamic memory failure in copy_string()"
|
||||
#~ msgstr "помилка під час роботи з динамічною пам’яттю у copy_string()"
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
# shell for updating the translations before a release
|
||||
|
||||
# Let this be executed in the po/ subdir.
|
||||
cd "$(dirname "$0")" || exit
|
||||
|
||||
echo "Updating translations via TP"
|
||||
rsync -Lrtvz translationproject.org::tp/latest/flex/ . # || exit
|
||||
|
||||
# Are there now PO files that are not in svn yet?
|
||||
NEWSTUFF=$(git status --porcelain *.po | grep "^??")
|
||||
|
||||
if [ -n "${NEWSTUFF}" ]; then
|
||||
echo "New languages found; updating LINGUAS"
|
||||
echo "# List of available languages." >LINGUAS
|
||||
echo $(printf '%s\n' *.po | LC_ALL=C sort | sed 's/\.po//g') >>LINGUAS
|
||||
fi
|
||||
|
||||
echo "Regenerating POT file and remerging and recompiling PO files..."
|
||||
make update-po
|
||||
|
||||
# Ensure that the PO files are newer than the POT.
|
||||
touch *.po
|
||||
|
||||
# Compile PO files
|
||||
make
|
||||
+676
-451
File diff suppressed because it is too large
Load Diff
+434
-418
File diff suppressed because it is too large
Load Diff
+4
-1
@@ -1,10 +1,13 @@
|
||||
*.la
|
||||
*.lo
|
||||
*.o
|
||||
*-flex.h
|
||||
config.h
|
||||
config.h.in
|
||||
flex
|
||||
libfl.pc
|
||||
parse.c
|
||||
parse.h
|
||||
scan.c
|
||||
skel.c
|
||||
stage1scan.[cl]
|
||||
stage1flex
|
||||
|
||||
+118
-124
@@ -35,80 +35,74 @@
|
||||
// to rename each yyFlexLexer to some other xxFlexLexer. You then
|
||||
// include <FlexLexer.h> in your other sources once per lexer class:
|
||||
//
|
||||
// #undef yyFlexLexer
|
||||
// #define yyFlexLexer xxFlexLexer
|
||||
// #include <FlexLexer.h>
|
||||
// #undef yyFlexLexer
|
||||
// #define yyFlexLexer xxFlexLexer
|
||||
// #include <FlexLexer.h>
|
||||
//
|
||||
// #undef yyFlexLexer
|
||||
// #define yyFlexLexer zzFlexLexer
|
||||
// #include <FlexLexer.h>
|
||||
// ...
|
||||
// #undef yyFlexLexer
|
||||
// #define yyFlexLexer zzFlexLexer
|
||||
// #include <FlexLexer.h>
|
||||
// ...
|
||||
|
||||
#ifndef __FLEX_LEXER_H
|
||||
// Never included before - need to define base class.
|
||||
#define __FLEX_LEXER_H
|
||||
|
||||
#include <iostream>
|
||||
# ifndef FLEX_STD
|
||||
# define FLEX_STD std::
|
||||
# endif
|
||||
|
||||
#ifndef YY_CHAR_DEFINED
|
||||
#define YY_CHAR_DEFINED
|
||||
typedef unsigned char YY_CHAR;
|
||||
#endif
|
||||
|
||||
extern "C++" {
|
||||
|
||||
struct yy_buffer_state;
|
||||
typedef int yy_state_type;
|
||||
|
||||
class FlexLexer {
|
||||
class FlexLexer
|
||||
{
|
||||
public:
|
||||
virtual ~FlexLexer() { }
|
||||
virtual ~FlexLexer() { }
|
||||
|
||||
const YY_CHAR* YYText() const { return yytext; }
|
||||
int YYLeng() const { return yyleng; }
|
||||
const char* YYText() const { return yytext; }
|
||||
int YYLeng() const { return yyleng; }
|
||||
|
||||
virtual void
|
||||
yy_switch_to_buffer( struct yy_buffer_state* new_buffer ) = 0;
|
||||
virtual struct yy_buffer_state*
|
||||
yy_create_buffer( FLEX_STD istream* s, int size ) = 0;
|
||||
virtual void yy_delete_buffer( struct yy_buffer_state* b ) = 0;
|
||||
virtual void yyrestart( FLEX_STD istream* s ) = 0;
|
||||
virtual void
|
||||
yy_switch_to_buffer( yy_buffer_state* new_buffer ) = 0;
|
||||
virtual yy_buffer_state* yy_create_buffer( std::istream* s, int size ) = 0;
|
||||
virtual yy_buffer_state* yy_create_buffer( std::istream& s, int size ) = 0;
|
||||
virtual void yy_delete_buffer( yy_buffer_state* b ) = 0;
|
||||
virtual void yyrestart( std::istream* s ) = 0;
|
||||
virtual void yyrestart( std::istream& s ) = 0;
|
||||
|
||||
virtual int yylex() = 0;
|
||||
virtual int yylex() = 0;
|
||||
|
||||
// Call yylex with new input/output sources.
|
||||
int yylex( FLEX_STD istream* new_in, FLEX_STD ostream* new_out = 0 )
|
||||
{
|
||||
switch_streams( new_in, new_out );
|
||||
return yylex();
|
||||
}
|
||||
// Call yylex with new input/output sources.
|
||||
int yylex( std::istream& new_in, std::ostream& new_out )
|
||||
{
|
||||
switch_streams( new_in, new_out );
|
||||
return yylex();
|
||||
}
|
||||
|
||||
// Switch to new input/output streams. A nil stream pointer
|
||||
// indicates "keep the current one".
|
||||
virtual void switch_streams( FLEX_STD istream* new_in = 0,
|
||||
FLEX_STD ostream* new_out = 0 ) = 0;
|
||||
int yylex( std::istream* new_in, std::ostream* new_out = 0)
|
||||
{
|
||||
switch_streams( new_in, new_out );
|
||||
return yylex();
|
||||
}
|
||||
|
||||
int lineno() const { return yylineno; }
|
||||
// Switch to new input/output streams. A nil stream pointer
|
||||
// indicates "keep the current one".
|
||||
virtual void switch_streams( std::istream* new_in,
|
||||
std::ostream* new_out ) = 0;
|
||||
virtual void switch_streams( std::istream& new_in,
|
||||
std::ostream& new_out ) = 0;
|
||||
|
||||
int debug() const { return yy_flex_debug; }
|
||||
void set_debug( int flag ) { yy_flex_debug = flag; }
|
||||
int lineno() const { return yylineno; }
|
||||
|
||||
#ifdef YY_CHARSET
|
||||
void set_charset(char *charset);
|
||||
char* get_charset();
|
||||
#endif
|
||||
int debug() const { return yyflexdebug; }
|
||||
void set_debug( int flag ) { yyflexdebug = flag; }
|
||||
|
||||
protected:
|
||||
YY_CHAR* yytext;
|
||||
#ifdef YY_CHARSET
|
||||
char *yycharset;
|
||||
#endif
|
||||
int yyleng;
|
||||
int yylineno; // only maintained if you use %option yylineno
|
||||
int yy_flex_debug; // only has effect with -d or "%option debug"
|
||||
char* yytext;
|
||||
int yyleng;
|
||||
int yylineno; // only maintained if you use %option yylineno
|
||||
int yyflexdebug; // only has effect with -d or "%option debug"
|
||||
};
|
||||
|
||||
}
|
||||
@@ -118,111 +112,111 @@ protected:
|
||||
// Either this is the first time through (yyFlexLexerOnce not defined),
|
||||
// or this is a repeated include to define a different flavor of
|
||||
// yyFlexLexer, as discussed in the flex manual.
|
||||
#define yyFlexLexerOnce
|
||||
# define yyFlexLexerOnce
|
||||
|
||||
extern "C++" {
|
||||
|
||||
class yyFlexLexer : public FlexLexer {
|
||||
public:
|
||||
// arg_yyin and arg_yyout default to the cin and cout, but we
|
||||
// only make that assignment when initializing in yylex().
|
||||
yyFlexLexer( FLEX_STD istream* arg_yyin = 0, FLEX_STD ostream* arg_yyout = 0 );
|
||||
// arg_yyin and arg_yyout default to the cin and cout, but we
|
||||
// only make that assignment when initializing in yylex().
|
||||
yyFlexLexer( std::istream& arg_yyin, std::ostream& arg_yyout );
|
||||
yyFlexLexer( std::istream* arg_yyin = 0, std::ostream* arg_yyout = 0 );
|
||||
private:
|
||||
void ctor_common();
|
||||
|
||||
virtual ~yyFlexLexer();
|
||||
public:
|
||||
|
||||
void yy_switch_to_buffer( struct yy_buffer_state* new_buffer );
|
||||
struct yy_buffer_state* yy_create_buffer( FLEX_STD istream* s, int size );
|
||||
void yy_delete_buffer( struct yy_buffer_state* b );
|
||||
void yyrestart( FLEX_STD istream* s );
|
||||
virtual ~yyFlexLexer();
|
||||
|
||||
void yypush_buffer_state( struct yy_buffer_state* new_buffer );
|
||||
void yypop_buffer_state();
|
||||
void yy_switch_to_buffer( yy_buffer_state* new_buffer );
|
||||
yy_buffer_state* yy_create_buffer( std::istream* s, int size );
|
||||
yy_buffer_state* yy_create_buffer( std::istream& s, int size );
|
||||
void yy_delete_buffer( yy_buffer_state* b );
|
||||
void yyrestart( std::istream* s );
|
||||
void yyrestart( std::istream& s );
|
||||
|
||||
virtual int yylex();
|
||||
virtual void switch_streams( FLEX_STD istream* new_in, FLEX_STD ostream* new_out = 0 );
|
||||
virtual int yywrap();
|
||||
void yypush_buffer_state( yy_buffer_state* new_buffer );
|
||||
void yypop_buffer_state();
|
||||
|
||||
virtual int yyread(char *buf, size_t);
|
||||
virtual int yylex();
|
||||
virtual void switch_streams( std::istream& new_in, std::ostream& new_out );
|
||||
virtual void switch_streams( std::istream* new_in = 0, std::ostream* new_out = 0 );
|
||||
virtual int yywrap();
|
||||
|
||||
protected:
|
||||
virtual int LexerInput( char* buf, int max_size );
|
||||
virtual void LexerOutput( const char* buf, int size );
|
||||
virtual void LexerError( const char* msg );
|
||||
virtual int LexerInput( char* buf, int max_size );
|
||||
virtual void LexerOutput( const char* buf, int size );
|
||||
virtual void LexerError( const char* msg );
|
||||
|
||||
void yyunput_r( int c, char* buf_ptr );
|
||||
int yyinput();
|
||||
|
||||
void yyunput( int c, YY_CHAR* buf_ptr );
|
||||
int yyinput();
|
||||
void yy_load_buffer_state();
|
||||
void yy_init_buffer( yy_buffer_state* b, std::istream& s );
|
||||
void yy_flush_buffer( yy_buffer_state* b );
|
||||
|
||||
void yy_load_buffer_state();
|
||||
void yy_init_buffer( struct yy_buffer_state* b, FLEX_STD istream* s );
|
||||
void yy_flush_buffer( struct yy_buffer_state* b );
|
||||
int yy_start_stack_ptr;
|
||||
int yy_start_stack_depth;
|
||||
int* yy_start_stack;
|
||||
|
||||
int yy_start_stack_ptr;
|
||||
int yy_start_stack_depth;
|
||||
int* yy_start_stack;
|
||||
void yy_push_state( int new_state );
|
||||
void yy_pop_state();
|
||||
int yy_top_state();
|
||||
|
||||
void yy_push_state( int new_state );
|
||||
void yy_pop_state();
|
||||
int yy_top_state();
|
||||
yy_state_type yy_get_previous_state();
|
||||
yy_state_type yy_try_NUL_trans( yy_state_type current_state );
|
||||
int yy_get_next_buffer();
|
||||
|
||||
yy_state_type yy_get_previous_state();
|
||||
yy_state_type yy_try_NUL_trans( yy_state_type current_state );
|
||||
int yy_get_next_buffer();
|
||||
std::istream yyin; // input source for default LexerInput
|
||||
std::ostream yyout; // output sink for default LexerOutput
|
||||
|
||||
#ifdef YY_CHARSET
|
||||
size_t yycharset_convert(char* source, size_t source_bytes, YY_CHAR* target,
|
||||
size_t target_length, size_t* converted_bytes);
|
||||
virtual size_t yycharset_handler(char *charset,
|
||||
char *source, size_t source_bytes,
|
||||
YY_CHAR *target, size_t target_length,
|
||||
size_t *converted_bytes);
|
||||
#endif
|
||||
// yy_hold_char holds the character lost when yytext is formed.
|
||||
char yy_hold_char;
|
||||
|
||||
FLEX_STD istream* yyin; // input source for default LexerInput
|
||||
FLEX_STD ostream* yyout; // output sink for default LexerOutput
|
||||
// Number of characters read into yy_ch_buf.
|
||||
int yy_n_chars;
|
||||
|
||||
// yy_hold_char holds the character lost when yytext is formed.
|
||||
YY_CHAR yy_hold_char;
|
||||
// Points to current character in buffer.
|
||||
char* yy_c_buf_p;
|
||||
|
||||
// Number of characters read into yy_ch_buf.
|
||||
int yy_n_chars;
|
||||
int yy_init; // whether we need to initialize
|
||||
int yy_start; // start state number
|
||||
|
||||
// Points to current character in buffer.
|
||||
YY_CHAR* yy_c_buf_p;
|
||||
|
||||
int yy_init; // whether we need to initialize
|
||||
int yy_start; // start state number
|
||||
|
||||
// Flag which is used to allow yywrap()'s to do buffer switches
|
||||
// instead of setting up a fresh yyin. A bit of a hack ...
|
||||
int yy_did_buffer_switch_on_eof;
|
||||
// Flag which is used to allow yywrap()'s to do buffer switches
|
||||
// instead of setting up a fresh yyin. A bit of a hack ...
|
||||
int yy_did_buffer_switch_on_eof;
|
||||
|
||||
|
||||
size_t yy_buffer_stack_top; /**< index of top of stack. */
|
||||
size_t yy_buffer_stack_max; /**< capacity of stack. */
|
||||
struct yy_buffer_state ** yy_buffer_stack; /**< Stack as an array. */
|
||||
void yyensure_buffer_stack(void);
|
||||
size_t yy_buffer_stack_top; /**< index of top of stack. */
|
||||
size_t yy_buffer_stack_max; /**< capacity of stack. */
|
||||
yy_buffer_state ** yy_buffer_stack; /**< Stack as an array. */
|
||||
void yyensure_buffer_stack(void);
|
||||
|
||||
// The following are not always needed, but may be depending
|
||||
// on use of certain flex features (like REJECT or yymore()).
|
||||
// The following are not always needed, but may be depending
|
||||
// on use of certain flex features (like REJECT or yymore()).
|
||||
|
||||
yy_state_type yy_last_accepting_state;
|
||||
YY_CHAR* yy_last_accepting_cpos;
|
||||
yy_state_type yy_last_accepting_state;
|
||||
char* yy_last_accepting_cpos;
|
||||
|
||||
yy_state_type* yy_state_buf;
|
||||
yy_state_type* yy_state_ptr;
|
||||
yy_state_type* yy_state_buf;
|
||||
yy_state_type* yy_state_ptr;
|
||||
size_t yy_state_buf_max;
|
||||
|
||||
YY_CHAR* yy_full_match;
|
||||
int* yy_full_state;
|
||||
int yy_full_lp;
|
||||
char* yy_full_match;
|
||||
int* yy_full_state;
|
||||
int yy_full_lp;
|
||||
|
||||
int yy_lp;
|
||||
int yy_looking_for_trail_begin;
|
||||
int yy_lp;
|
||||
int yy_looking_for_trail_begin;
|
||||
|
||||
int yy_more_flag;
|
||||
int yy_more_len;
|
||||
int yy_more_offset;
|
||||
int yy_prev_more_offset;
|
||||
int yy_more_flag;
|
||||
int yy_more_len;
|
||||
int yy_more_offset;
|
||||
int yy_prev_more_offset;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // yyFlexLexer || ! yyFlexLexerOnce
|
||||
|
||||
|
||||
+132
-78
@@ -1,101 +1,152 @@
|
||||
AM_YFLAGS = -d
|
||||
localedir = $(datadir)/locale
|
||||
AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\" -I$(top_srcdir)/intl
|
||||
LIBS = @LIBINTL@ @LIBS@
|
||||
AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\"
|
||||
LIBS = @LIBS@
|
||||
pkgconfigdir = @pkgconfigdir@
|
||||
|
||||
m4 = @M4@
|
||||
|
||||
bin_PROGRAMS = flex
|
||||
lib_LTLIBRARIES = \
|
||||
libfl.la \
|
||||
libfl_pic.la
|
||||
if ENABLE_BOOTSTRAP
|
||||
noinst_PROGRAMS = stage1flex
|
||||
endif
|
||||
|
||||
if ENABLE_LIBFL
|
||||
lib_LTLIBRARIES = libfl.la
|
||||
pkgconfig_DATA = libfl.pc
|
||||
endif
|
||||
libfl_la_SOURCES = \
|
||||
libmain.c \
|
||||
libyywrap.c
|
||||
libfl_la_LDFLAGS = -version-info @SHARED_VERSION_INFO@
|
||||
|
||||
stage1flex_SOURCES = \
|
||||
scan.l \
|
||||
$(COMMON_SOURCES)
|
||||
|
||||
if CROSS
|
||||
stage1flex_LDADD =
|
||||
stage1flex_SOURCES += \
|
||||
../lib/malloc.c \
|
||||
../lib/realloc.c
|
||||
stage1flex_LINK = $(LIBTOOL) --tag=CC --mode=link $(CC_FOR_BUILD) \
|
||||
$(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@
|
||||
|
||||
$(stage1flex_OBJECTS): CC=$(CC_FOR_BUILD)
|
||||
$(stage1flex_OBJECTS): CFLAGS=$(CFLAGS_FOR_BUILD)
|
||||
$(stage1flex_OBJECTS): CPP=$(CPP_FOR_BUILD)
|
||||
$(stage1flex_OBJECTS): CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
|
||||
$(stage1flex_OBJECTS): LDFLAGS=$(LDFLAGS_FOR_BUILD)
|
||||
else
|
||||
stage1flex_LDADD = $(LDADD)
|
||||
stage1flex_LINK = $(LINK)
|
||||
stage1flex_CFLAGS = $(AM_CFLAGS)
|
||||
endif
|
||||
|
||||
flex_SOURCES = \
|
||||
$(COMMON_SOURCES)
|
||||
|
||||
nodist_flex_SOURCES = \
|
||||
stage1scan.c
|
||||
|
||||
flex_CFLAGS = $(AM_CFLAGS) $(WARNINGFLAGS)
|
||||
|
||||
COMMON_SOURCES = \
|
||||
buf.c \
|
||||
ccl.c \
|
||||
dfa.c \
|
||||
ecs.c \
|
||||
scanflags.c \
|
||||
filter.c \
|
||||
flexdef.h \
|
||||
flexint.h \
|
||||
flexint_shared.h \
|
||||
gen.c \
|
||||
main.c \
|
||||
misc.c \
|
||||
nfa.c \
|
||||
parse.y \
|
||||
scan.l \
|
||||
skel.c \
|
||||
sym.c \
|
||||
tblcmp.c \
|
||||
yylex.c \
|
||||
options.c \
|
||||
scanopt.c \
|
||||
buf.c \
|
||||
tables.c \
|
||||
tables_shared.c \
|
||||
filter.c \
|
||||
regex.c
|
||||
|
||||
LDADD = ../lib/libcompat.la
|
||||
|
||||
libfl_la_SOURCES = \
|
||||
libmain.c \
|
||||
libyywrap.c
|
||||
|
||||
libfl_la_LDFLAGS = -no-undefined -version-info @SHARED_VERSION_INFO@
|
||||
|
||||
libfl_pic_la_SOURCES = \
|
||||
libmain.c \
|
||||
libyywrap.c
|
||||
|
||||
libfl_pic_la_LDFLAGS = -no-undefined -version-info @SHARED_VERSION_INFO@
|
||||
|
||||
noinst_HEADERS = \
|
||||
flexdef.h \
|
||||
flexint.h \
|
||||
version.h \
|
||||
options.h \
|
||||
parse.y \
|
||||
regex.c \
|
||||
scanflags.c \
|
||||
scanopt.c \
|
||||
scanopt.h \
|
||||
skeletons.c \
|
||||
sym.c \
|
||||
tables.c \
|
||||
tables.h \
|
||||
tables_shared.h
|
||||
tables_shared.c \
|
||||
tables_shared.h \
|
||||
tblcmp.c \
|
||||
version.h \
|
||||
yylex.c
|
||||
|
||||
LDADD = $(LIBOBJS) @LIBINTL@
|
||||
|
||||
$(LIBOBJS): $(LIBOBJDIR)$(am__dirstamp)
|
||||
|
||||
include_HEADERS = \
|
||||
FlexLexer.h
|
||||
|
||||
EXTRA_DIST = \
|
||||
flex.skl \
|
||||
c99-flex.skl \
|
||||
cpp-flex.skl \
|
||||
go-flex.skl \
|
||||
mkskel.sh \
|
||||
gettext.h
|
||||
gettext.h \
|
||||
chkskel.sh
|
||||
|
||||
CLEANFILES = stage1scan.c stage1flex$(EXEEXT)
|
||||
|
||||
BUILT_SOURCES = \
|
||||
skel.c
|
||||
cpp-flex.h \
|
||||
c99-flex.h \
|
||||
go-flex.h
|
||||
|
||||
skel.c: flex.skl mkskel.sh flexint.h tables_shared.h
|
||||
sed 's/m4_/m4postproc_/g; s/m4preproc_/m4_/g' $(srcdir)/flex.skl | $(m4) -P -DFLEX_MAJOR_VERSION=`echo $(VERSION)|cut -f 1 -d .` -DFLEX_MINOR_VERSION=`echo $(VERSION)|cut -f 2 -d .` -DFLEX_SUBMINOR_VERSION=`echo $(VERSION)|cut -f 3 -d .` | sed 's/m4postproc_/m4_/g' | $(SHELL) $(srcdir)/mkskel.sh >skel.c
|
||||
clean-local:
|
||||
rm -f $(BUILT_SOURCES)
|
||||
|
||||
# Explicitly describe dependencies.
|
||||
# You can recreate this with `gcc -I. -MM *.c'
|
||||
buf.o: buf.c flexdef.h flexint.h
|
||||
ccl.o: ccl.c flexdef.h flexint.h
|
||||
dfa.o: dfa.c flexdef.h flexint.h tables.h tables_shared.h
|
||||
ecs.o: ecs.c flexdef.h flexint.h
|
||||
scanflags.o: scanflags.c flexdef.h flexint.h
|
||||
gen.o: gen.c flexdef.h flexint.h tables.h tables_shared.h
|
||||
libmain.o: libmain.c
|
||||
libyywrap.o: libyywrap.c
|
||||
main.o: main.c flexdef.h flexint.h version.h options.h scanopt.h \
|
||||
tables.h tables_shared.h
|
||||
misc.o: misc.c flexdef.h flexint.h tables.h tables_shared.h
|
||||
nfa.o: nfa.c flexdef.h flexint.h
|
||||
options.o: options.c options.h scanopt.h flexdef.h flexint.h
|
||||
parse.o: parse.c flexdef.h flexint.h tables.h tables_shared.h
|
||||
scan.o: scan.c flexdef.h flexint.h parse.h
|
||||
scanopt.o: scanopt.c flexdef.h flexint.h scanopt.h
|
||||
skel.o: skel.c flexdef.h flexint.h
|
||||
sym.o: sym.c flexdef.h flexint.h
|
||||
tables.o: tables.c flexdef.h flexint.h tables.h tables_shared.h
|
||||
tables_shared.o: tables_shared.c flexdef.h flexint.h tables.h \
|
||||
tables_shared.h
|
||||
tblcmp.o: tblcmp.c flexdef.h flexint.h
|
||||
yylex.o: yylex.c flexdef.h flexint.h parse.h
|
||||
filter.o: filter.c flexdef.h flexint.h
|
||||
cpp-flex.h: cpp-flex.skl mkskel.sh flexint_shared.h tables_shared.h tables_shared.c
|
||||
$(SHELL) $(srcdir)/mkskel.sh cpp $(srcdir) $(m4) $(VERSION) > $@.tmp
|
||||
$(SHELL) $(srcdir)/chkskel.sh $@.tmp
|
||||
mv -f $@.tmp $@
|
||||
|
||||
c99-flex.h: c99-flex.skl mkskel.sh
|
||||
$(SHELL) $(srcdir)/mkskel.sh c99 $(srcdir) $(m4) $(VERSION) > $@.tmp
|
||||
$(SHELL) $(srcdir)/chkskel.sh $@.tmp
|
||||
mv -f $@.tmp $@
|
||||
|
||||
go-flex.h: go-flex.skl mkskel.sh
|
||||
$(SHELL) $(srcdir)/mkskel.sh go $(srcdir) $(m4) $(VERSION) > $@.tmp
|
||||
$(SHELL) $(srcdir)/chkskel.sh $@.tmp
|
||||
mv -f $@.tmp $@
|
||||
|
||||
if ENABLE_BOOTSTRAP
|
||||
stage1scan.c: scan.l stage1flex$(EXEEXT)
|
||||
./stage1flex$(EXEEXT) $(AM_LFLAGS) $(LFLAGS) -o $@ $(srcdir)/scan.l
|
||||
else
|
||||
stage1scan.c: scan.c
|
||||
sed 's|^\(#line .*\)"'`printf %s $< | sed 's|[][\\\\.*]|\\\\&|g'`'"|\1"$@"|g' $< > $@
|
||||
endif
|
||||
|
||||
dist-hook: scan.l flex$(EXEEXT)
|
||||
chmod u+w $(distdir) && \
|
||||
chmod u+w $(distdir)/scan.c && \
|
||||
./flex$(EXEEXT) -o scan.c $< && \
|
||||
mv -f scan.c $(distdir)
|
||||
|
||||
# make needs to be told to make inclusions so that parallelized runs will
|
||||
# not fail.
|
||||
|
||||
SKELINCLUDES := $(subst skl,h,$(wildcard *.skl))
|
||||
|
||||
stage1flex-main.$(OBJEXT): parse.h $(SKELINCLUDES)
|
||||
flex-main.$(OBJEXT): parse.h $(SKELINCLUDES)
|
||||
|
||||
stage1flex-yylex.$(OBJEXT): parse.h $(SKELINCLUDES)
|
||||
flex-yylex.$(OBJEXT): parse.h $(SKELINCLUDES)
|
||||
|
||||
stage1flex-scan.$(OBJEXT): parse.h $(SKELINCLUDES)
|
||||
flex-stage1scan.$(OBJEXT): parse.h $(SKELINCLUDES)
|
||||
|
||||
# Run GNU indent on sources. Don't run this unless all the sources compile cleanly.
|
||||
#
|
||||
@@ -132,11 +183,14 @@ indentfiles = \
|
||||
tables_shared.h \
|
||||
tblcmp.c
|
||||
|
||||
indent:
|
||||
if [ -f .indent.pro ] ; then \
|
||||
for f in $(indentfiles);\
|
||||
do\
|
||||
echo indenting $$f ;\
|
||||
$(indent) < $$f >/dev/null && indent $$f || echo $$f FAILED to indent ;\
|
||||
done \
|
||||
fi
|
||||
indent: $(top_srcdir)/.indent.pro
|
||||
cd $(top_srcdir) && \
|
||||
for f in $(indentfiles); do \
|
||||
f=src/$$f; \
|
||||
echo indenting $$f; \
|
||||
INDENT_PROFILE=.indent.pro $(INDENT) <$$f >/dev/null && \
|
||||
INDENT_PROFILE=.indent.pro $(INDENT) $$f || \
|
||||
echo $$f FAILED to indent; \
|
||||
done;
|
||||
|
||||
.PHONY: indent
|
||||
|
||||
@@ -47,87 +47,26 @@
|
||||
|
||||
/* global buffers. */
|
||||
struct Buf userdef_buf; /**< for user #definitions triggered by cmd-line. */
|
||||
struct Buf defs_buf; /**< for #define's autogenerated. List of strings. */
|
||||
struct Buf yydmap_buf; /**< string buffer to hold yydmap elements */
|
||||
struct Buf m4defs_buf; /**< m4 definitions. List of strings. */
|
||||
struct Buf top_buf; /**< contains %top code. String buffer. */
|
||||
|
||||
struct Buf *buf_print_strings(struct Buf * buf, FILE* out)
|
||||
{
|
||||
int i;
|
||||
|
||||
if(!buf || !out)
|
||||
return buf;
|
||||
|
||||
for (i=0; i < buf->nelts; i++){
|
||||
const char * s = ((char**)buf->elts)[i];
|
||||
if(s)
|
||||
fprintf(out, "%s", s);
|
||||
}
|
||||
return buf;
|
||||
}
|
||||
|
||||
/* Append a "%s" formatted string to a string buffer */
|
||||
struct Buf *buf_prints (struct Buf *buf, const char *fmt, const char *s)
|
||||
{
|
||||
char *t;
|
||||
size_t tsz;
|
||||
|
||||
t = flex_alloc (tsz = strlen (fmt) + strlen (s) + 1);
|
||||
tsz = strlen(fmt) + strlen(s) + 1;
|
||||
t = malloc(tsz);
|
||||
if (!t)
|
||||
flexfatal (_("Allocation of buffer to print string failed"));
|
||||
snprintf (t, tsz, fmt, s);
|
||||
buf = buf_strappend (buf, t);
|
||||
flex_free (t);
|
||||
free(t);
|
||||
return buf;
|
||||
}
|
||||
|
||||
/** Append a line directive to the string buffer.
|
||||
* @param buf A string buffer.
|
||||
* @param filename file name
|
||||
* @param lineno line number
|
||||
* @return buf
|
||||
*/
|
||||
struct Buf *buf_linedir (struct Buf *buf, const char* filename, int lineno)
|
||||
{
|
||||
char *dst, *t;
|
||||
const char *src;
|
||||
|
||||
t = flex_alloc (strlen ("#line \"\"\n") + /* constant parts */
|
||||
2 * strlen (filename) + /* filename with possibly all backslashes escaped */
|
||||
(int) (1 + log10 (abs (lineno))) + /* line number */
|
||||
1); /* NUL */
|
||||
if (!t)
|
||||
flexfatal (_("Allocation of buffer for line directive failed"));
|
||||
for (dst = t + sprintf (t, "#line %d \"", lineno), src = filename; *src; *dst++ = *src++)
|
||||
if (*src == '\\') /* escape backslashes */
|
||||
*dst++ = '\\';
|
||||
*dst++ = '"';
|
||||
*dst++ = '\n';
|
||||
*dst = '\0';
|
||||
buf = buf_strappend (buf, t);
|
||||
flex_free (t);
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
||||
/** Append the contents of @a src to @a dest.
|
||||
* @param @a dest the destination buffer
|
||||
* @param @a dest the source buffer
|
||||
* @return @a dest
|
||||
*/
|
||||
struct Buf *buf_concat(struct Buf* dest, const struct Buf* src)
|
||||
{
|
||||
buf_append(dest, src->elts, src->nelts);
|
||||
return dest;
|
||||
}
|
||||
|
||||
|
||||
/* Appends n characters in str to buf. */
|
||||
struct Buf *buf_strnappend (buf, str, n)
|
||||
struct Buf *buf;
|
||||
const char *str;
|
||||
int n;
|
||||
struct Buf *buf_strnappend (struct Buf *buf, const char *str, int n)
|
||||
{
|
||||
buf_append (buf, str, n + 1);
|
||||
|
||||
@@ -138,88 +77,27 @@ struct Buf *buf_strnappend (buf, str, n)
|
||||
}
|
||||
|
||||
/* Appends characters in str to buf. */
|
||||
struct Buf *buf_strappend (buf, str)
|
||||
struct Buf *buf;
|
||||
const char *str;
|
||||
struct Buf *buf_strappend (struct Buf *buf, const char *str)
|
||||
{
|
||||
return buf_strnappend (buf, str, strlen (str));
|
||||
}
|
||||
|
||||
/* appends "#define str def\n" */
|
||||
struct Buf *buf_strdefine (buf, str, def)
|
||||
struct Buf *buf;
|
||||
const char *str;
|
||||
const char *def;
|
||||
{
|
||||
buf_strappend (buf, "#define ");
|
||||
buf_strappend (buf, " ");
|
||||
buf_strappend (buf, str);
|
||||
buf_strappend (buf, " ");
|
||||
buf_strappend (buf, def);
|
||||
buf_strappend (buf, "\n");
|
||||
return buf;
|
||||
}
|
||||
|
||||
/** Pushes "m4_define( [[def]], [[val]])m4_dnl" to end of buffer.
|
||||
* @param buf A buffer as a list of strings.
|
||||
* @param def The m4 symbol to define.
|
||||
* @param val The definition; may be NULL.
|
||||
* @return buf
|
||||
*/
|
||||
struct Buf *buf_m4_define (struct Buf *buf, const char* def, const char* val)
|
||||
{
|
||||
const char * fmt = "m4_define( [[%s]], [[%s]])m4_dnl\n";
|
||||
char * str;
|
||||
size_t strsz;
|
||||
|
||||
val = val?val:"";
|
||||
str = (char*)flex_alloc(strsz = strlen(fmt) + strlen(def) + strlen(val) + 2);
|
||||
if (!str)
|
||||
flexfatal (_("Allocation of buffer for m4 def failed"));
|
||||
|
||||
snprintf(str, strsz, fmt, def, val);
|
||||
buf_append(buf, &str, 1);
|
||||
return buf;
|
||||
}
|
||||
|
||||
/** Pushes "m4_undefine([[def]])m4_dnl" to end of buffer.
|
||||
* @param buf A buffer as a list of strings.
|
||||
* @param def The m4 symbol to undefine.
|
||||
* @return buf
|
||||
*/
|
||||
struct Buf *buf_m4_undefine (struct Buf *buf, const char* def)
|
||||
{
|
||||
const char * fmt = "m4_undefine( [[%s]])m4_dnl\n";
|
||||
char * str;
|
||||
size_t strsz;
|
||||
|
||||
str = (char*)flex_alloc(strsz = strlen(fmt) + strlen(def) + 2);
|
||||
if (!str)
|
||||
flexfatal (_("Allocation of buffer for m4 undef failed"));
|
||||
|
||||
snprintf(str, strsz, fmt, def);
|
||||
buf_append(buf, &str, 1);
|
||||
return buf;
|
||||
return buf_strnappend (buf, str, (int) strlen (str));
|
||||
}
|
||||
|
||||
/* create buf with 0 elements, each of size elem_size. */
|
||||
void buf_init (buf, elem_size)
|
||||
struct Buf *buf;
|
||||
size_t elem_size;
|
||||
void buf_init (struct Buf *buf, size_t elem_size)
|
||||
{
|
||||
buf->elts = (void *) 0;
|
||||
buf->elts = NULL;
|
||||
buf->nelts = 0;
|
||||
buf->elt_size = elem_size;
|
||||
buf->nmax = 0;
|
||||
}
|
||||
|
||||
/* frees memory */
|
||||
void buf_destroy (buf)
|
||||
struct Buf *buf;
|
||||
void buf_destroy (struct Buf *buf)
|
||||
{
|
||||
if (buf && buf->elts)
|
||||
flex_free (buf->elts);
|
||||
buf->elts = (void *) 0;
|
||||
if (buf) {
|
||||
free(buf->elts);
|
||||
buf->elts = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -229,10 +107,7 @@ void buf_destroy (buf)
|
||||
* We grow by mod(512) boundaries.
|
||||
*/
|
||||
|
||||
struct Buf *buf_append (buf, ptr, n_elem)
|
||||
struct Buf *buf;
|
||||
const void *ptr;
|
||||
int n_elem;
|
||||
struct Buf *buf_append (struct Buf *buf, const void *ptr, int n_elem)
|
||||
{
|
||||
int n_alloc = 0;
|
||||
|
||||
@@ -242,30 +117,30 @@ struct Buf *buf_append (buf, ptr, n_elem)
|
||||
/* May need to alloc more. */
|
||||
if (n_elem + buf->nelts > buf->nmax) {
|
||||
|
||||
/* exact amount needed... */
|
||||
n_alloc = (n_elem + buf->nelts) * buf->elt_size;
|
||||
/* exact count needed... */
|
||||
n_alloc = n_elem + buf->nelts;
|
||||
|
||||
/* ...plus some extra */
|
||||
if (((n_alloc * buf->elt_size) % 512) != 0
|
||||
if ((((size_t) n_alloc * buf->elt_size) % 512) != 0
|
||||
&& buf->elt_size < 512)
|
||||
n_alloc +=
|
||||
(512 -
|
||||
((n_alloc * buf->elt_size) % 512)) /
|
||||
buf->elt_size;
|
||||
n_alloc += (int)
|
||||
((512 -
|
||||
(((size_t) n_alloc * buf->elt_size) % 512)) /
|
||||
buf->elt_size);
|
||||
|
||||
if (!buf->elts)
|
||||
buf->elts =
|
||||
allocate_array (n_alloc, buf->elt_size);
|
||||
allocate_array ((int) n_alloc, buf->elt_size);
|
||||
else
|
||||
buf->elts =
|
||||
reallocate_array (buf->elts, n_alloc,
|
||||
reallocate_array (buf->elts, (int) n_alloc,
|
||||
buf->elt_size);
|
||||
|
||||
buf->nmax = n_alloc;
|
||||
}
|
||||
|
||||
memcpy ((char *) buf->elts + buf->nelts * buf->elt_size, ptr,
|
||||
n_elem * buf->elt_size);
|
||||
memcpy ((char *) buf->elts + (size_t) buf->nelts * buf->elt_size, ptr,
|
||||
(size_t) n_elem * buf->elt_size);
|
||||
buf->nelts += n_elem;
|
||||
|
||||
return buf;
|
||||
|
||||
+2544
File diff suppressed because it is too large
Load Diff
@@ -52,9 +52,7 @@ ccl_contains (const int cclp, const int ch)
|
||||
|
||||
/* ccladd - add a single character to a ccl */
|
||||
|
||||
void ccladd (cclp, ch)
|
||||
int cclp;
|
||||
int ch;
|
||||
void ccladd (int cclp, int ch)
|
||||
{
|
||||
int ind, len, newpos, i;
|
||||
|
||||
@@ -75,6 +73,13 @@ void ccladd (cclp, ch)
|
||||
|
||||
newpos = ind + len;
|
||||
|
||||
/* For a non-last cclp, expanding the set will overflow and overwrite a
|
||||
* char in the next cclp.
|
||||
* FIXME: Need another allocation scheme for ccl's. */
|
||||
if (cclp != lastccl) {
|
||||
flexfatal(_("internal error: trying to add a char to a non-last ccl.\n"));
|
||||
}
|
||||
|
||||
if (newpos >= current_max_ccl_tbl_size) {
|
||||
current_max_ccl_tbl_size += MAX_CCL_TBL_SIZE_INCREMENT;
|
||||
|
||||
@@ -85,7 +90,7 @@ void ccladd (cclp, ch)
|
||||
}
|
||||
|
||||
ccllen[cclp] = len + 1;
|
||||
ccltbl[newpos] = ch;
|
||||
ccltbl[newpos] = (unsigned char) ch;
|
||||
}
|
||||
|
||||
/* dump_cclp - same thing as list_character_set, but for cclps. */
|
||||
@@ -96,7 +101,7 @@ static void dump_cclp (FILE* file, int cclp)
|
||||
|
||||
putc ('[', file);
|
||||
|
||||
for (i = 0; i < csize; ++i) {
|
||||
for (i = 0; i < ctrl.csize; ++i) {
|
||||
if (ccl_contains(cclp, i)){
|
||||
int start_char = i;
|
||||
|
||||
@@ -104,7 +109,7 @@ static void dump_cclp (FILE* file, int cclp)
|
||||
|
||||
fputs (readable_form (i), file);
|
||||
|
||||
while (++i < csize && ccl_contains(cclp,i)) ;
|
||||
while (++i < ctrl.csize && ccl_contains(cclp,i)) ;
|
||||
|
||||
if (i - 1 > start_char)
|
||||
/* this was a run */
|
||||
@@ -133,7 +138,7 @@ ccl_set_diff (int a, int b)
|
||||
* addding each char in a that is not in b.
|
||||
* (This could be O(n^2), but n is small and bounded.)
|
||||
*/
|
||||
for ( ch = 0; ch < csize; ++ch )
|
||||
for ( ch = 0; ch < ctrl.csize; ++ch )
|
||||
if (ccl_contains (a, ch) && !ccl_contains(b, ch))
|
||||
ccladd (d, ch);
|
||||
|
||||
@@ -185,7 +190,7 @@ ccl_set_union (int a, int b)
|
||||
|
||||
/* cclinit - return an empty ccl */
|
||||
|
||||
int cclinit ()
|
||||
int cclinit (void)
|
||||
{
|
||||
if (++lastccl >= current_maxccls) {
|
||||
current_maxccls += MAX_CCLS_INCREMENT;
|
||||
@@ -225,8 +230,7 @@ int cclinit ()
|
||||
|
||||
/* cclnegate - negate the given ccl */
|
||||
|
||||
void cclnegate (cclp)
|
||||
int cclp;
|
||||
void cclnegate (int cclp)
|
||||
{
|
||||
cclng[cclp] = 1;
|
||||
ccl_has_nl[cclp] = !ccl_has_nl[cclp];
|
||||
@@ -240,15 +244,13 @@ void cclnegate (cclp)
|
||||
* has a non-zero value in the cset array.
|
||||
*/
|
||||
|
||||
void list_character_set (file, cset)
|
||||
FILE *file;
|
||||
int cset[];
|
||||
void list_character_set (FILE *file, int cset[])
|
||||
{
|
||||
int i;
|
||||
|
||||
putc ('[', file);
|
||||
|
||||
for (i = 0; i < csize; ++i) {
|
||||
for (i = 0; i < ctrl.csize; ++i) {
|
||||
if (cset[i]) {
|
||||
int start_char = i;
|
||||
|
||||
@@ -256,7 +258,7 @@ void list_character_set (file, cset)
|
||||
|
||||
fputs (readable_form (i), file);
|
||||
|
||||
while (++i < csize && cset[i]) ;
|
||||
while (++i < ctrl.csize && cset[i]) ;
|
||||
|
||||
if (i - 1 > start_char)
|
||||
/* this was a run */
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
#! /bin/sh
|
||||
|
||||
# This file is part of flex.
|
||||
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
|
||||
# Neither the name of the University nor the names of its contributors
|
||||
# may be used to endorse or promote products derived from this software
|
||||
# without specific prior written permission.
|
||||
|
||||
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
# PURPOSE.
|
||||
|
||||
if test ! $# = 1; then
|
||||
echo 'Usage: chkskel.sh file' >&2
|
||||
exit 1
|
||||
fi
|
||||
file=$1
|
||||
lines=$(grep -c '^ "%%' "${file}")
|
||||
if [ ! "${lines}" -eq 6 ]; then
|
||||
echo 'ERROR: skeleton does not have the right number of %% section lines'
|
||||
exit 2
|
||||
fi
|
||||
+4369
File diff suppressed because it is too large
Load Diff
@@ -34,10 +34,10 @@
|
||||
|
||||
/* declare functions that have forward references */
|
||||
|
||||
void dump_associated_rules PROTO ((FILE *, int));
|
||||
void dump_transitions PROTO ((FILE *, int[]));
|
||||
void sympartition PROTO ((int[], int, int[], int[]));
|
||||
int symfollowset PROTO ((int[], int, int, int[]));
|
||||
void dump_associated_rules(FILE *, int);
|
||||
void dump_transitions(FILE *, int[]);
|
||||
void sympartition(int[], int, int[], int[]);
|
||||
int symfollowset(int[], int, int, int[]);
|
||||
|
||||
|
||||
/* check_for_backing_up - check a DFA state for backing up
|
||||
@@ -49,26 +49,24 @@ int symfollowset PROTO ((int[], int, int, int[]));
|
||||
* indexed by equivalence class.
|
||||
*/
|
||||
|
||||
void check_for_backing_up (ds, state)
|
||||
int ds;
|
||||
int state[];
|
||||
void check_for_backing_up (int ds, int state[])
|
||||
{
|
||||
if ((reject && !dfaacc[ds].dfaacc_set) || (!reject && !dfaacc[ds].dfaacc_state)) { /* state is non-accepting */
|
||||
++num_backing_up;
|
||||
|
||||
if (backing_up_report) {
|
||||
fprintf (backing_up_file,
|
||||
if (env.backing_up_report) {
|
||||
fprintf (ctrl.backing_up_file,
|
||||
_("State #%d is non-accepting -\n"), ds);
|
||||
|
||||
/* identify the state */
|
||||
dump_associated_rules (backing_up_file, ds);
|
||||
dump_associated_rules (ctrl.backing_up_file, ds);
|
||||
|
||||
/* Now identify it further using the out- and
|
||||
* jam-transitions.
|
||||
*/
|
||||
dump_transitions (backing_up_file, state);
|
||||
dump_transitions (ctrl.backing_up_file, state);
|
||||
|
||||
putc ('\n', backing_up_file);
|
||||
putc ('\n', ctrl.backing_up_file);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -96,10 +94,7 @@ void check_for_backing_up (ds, state)
|
||||
* accset[1 .. nacc] is the list of accepting numbers for the DFA state.
|
||||
*/
|
||||
|
||||
void check_trailing_context (nfa_states, num_states, accset, nacc)
|
||||
int *nfa_states, num_states;
|
||||
int *accset;
|
||||
int nacc;
|
||||
void check_trailing_context (int *nfa_states, int num_states, int *accset, int nacc)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
@@ -137,9 +132,7 @@ void check_trailing_context (nfa_states, num_states, accset, nacc)
|
||||
* and writes a report to the given file.
|
||||
*/
|
||||
|
||||
void dump_associated_rules (file, ds)
|
||||
FILE *file;
|
||||
int ds;
|
||||
void dump_associated_rules (FILE *file, int ds)
|
||||
{
|
||||
int i, j;
|
||||
int num_associated_rules = 0;
|
||||
@@ -161,7 +154,7 @@ void dump_associated_rules (file, ds)
|
||||
}
|
||||
}
|
||||
|
||||
qsort (&rule_set [1], num_associated_rules, sizeof (rule_set [1]), intcmp);
|
||||
qsort (&rule_set [1], (size_t) num_associated_rules, sizeof (rule_set [1]), intcmp);
|
||||
|
||||
fprintf (file, _(" associated rule line numbers:"));
|
||||
|
||||
@@ -187,14 +180,12 @@ void dump_associated_rules (file, ds)
|
||||
* is done to the given file.
|
||||
*/
|
||||
|
||||
void dump_transitions (file, state)
|
||||
FILE *file;
|
||||
int state[];
|
||||
void dump_transitions (FILE *file, int state[])
|
||||
{
|
||||
int i, ec;
|
||||
int out_char_set[CSIZE];
|
||||
|
||||
for (i = 0; i < csize; ++i) {
|
||||
for (i = 0; i < ctrl.csize; ++i) {
|
||||
ec = ABS (ecgroup[i]);
|
||||
out_char_set[i] = state[ec];
|
||||
}
|
||||
@@ -204,7 +195,7 @@ void dump_transitions (file, state)
|
||||
list_character_set (file, out_char_set);
|
||||
|
||||
/* now invert the members of the set to get the jam transitions */
|
||||
for (i = 0; i < csize; ++i)
|
||||
for (i = 0; i < ctrl.csize; ++i)
|
||||
out_char_set[i] = !out_char_set[i];
|
||||
|
||||
fprintf (file, _("\n jam-transitions: EOF "));
|
||||
@@ -235,8 +226,7 @@ void dump_transitions (file, state)
|
||||
* hashval is the hash value for the dfa corresponding to the state set.
|
||||
*/
|
||||
|
||||
int *epsclosure (t, ns_addr, accset, nacc_addr, hv_addr)
|
||||
int *t, *ns_addr, accset[], *nacc_addr, *hv_addr;
|
||||
int *epsclosure (int *t, int *ns_addr, int accset[], int *nacc_addr, int *hv_addr)
|
||||
{
|
||||
int stkpos, ns, tsp;
|
||||
int numstates = *ns_addr, nacc, hashval, transsym, nfaccnum;
|
||||
@@ -351,7 +341,7 @@ ADD_STATE(state); \
|
||||
|
||||
/* increase_max_dfas - increase the maximum number of DFAs */
|
||||
|
||||
void increase_max_dfas ()
|
||||
void increase_max_dfas (void)
|
||||
{
|
||||
current_max_dfas += MAX_DFAS_INCREMENT;
|
||||
|
||||
@@ -376,9 +366,12 @@ void increase_max_dfas ()
|
||||
*
|
||||
* Creates the dfa corresponding to the ndfa we've constructed. The
|
||||
* dfa starts out in state #1.
|
||||
*
|
||||
* Return the amount of space, in bytes, allocated for the next table.
|
||||
* In some modes this can be zero.
|
||||
*/
|
||||
|
||||
void ntod ()
|
||||
size_t ntod (void)
|
||||
{
|
||||
int *accset, ds, nacc, newds;
|
||||
int sym, hashval, numstates, dsize;
|
||||
@@ -400,7 +393,7 @@ void ntod ()
|
||||
* from 1 to CSIZE, so their size must be CSIZE + 1.
|
||||
*/
|
||||
int duplist[CSIZE + 1], state[CSIZE + 1];
|
||||
int targfreq[CSIZE + 1], targstate[CSIZE + 1];
|
||||
int targfreq[CSIZE + 1] = {0}, targstate[CSIZE + 1];
|
||||
|
||||
/* accset needs to be large enough to hold all of the rules present
|
||||
* in the input, *plus* their YY_TRAILING_HEAD_MASK variants.
|
||||
@@ -416,7 +409,7 @@ void ntod ()
|
||||
*/
|
||||
todo_head = todo_next = 0;
|
||||
|
||||
for (i = 0; i <= csize; ++i) {
|
||||
for (i = 0; i <= ctrl.csize; ++i) {
|
||||
duplist[i] = NIL;
|
||||
symlist[i] = false;
|
||||
}
|
||||
@@ -424,7 +417,7 @@ void ntod ()
|
||||
for (i = 0; i <= num_rules; ++i)
|
||||
accset[i] = NIL;
|
||||
|
||||
if (trace) {
|
||||
if (env.trace) {
|
||||
dumpnfa (scset[1]);
|
||||
fputs (_("\n\nDFA Dump:\n\n"), stderr);
|
||||
}
|
||||
@@ -462,38 +455,14 @@ void ntod ()
|
||||
|
||||
/* Note that the test for ecgroup[0] == numecs below accomplishes
|
||||
* both (1) and (2) above
|
||||
*
|
||||
* New way: we will only use NUL table for fulltbl, because the
|
||||
* scanner will use an integer instead of YY_CHAR as noted above
|
||||
*/
|
||||
if (!fullspd && ecgroup[0] == numecs) {
|
||||
/* NUL is alone in its equivalence class, which is the
|
||||
* last one.
|
||||
*/
|
||||
int use_NUL_table = (numecs == csize);
|
||||
if (ctrl.fulltbl && ecgroup[0] == numecs && is_power_of_2(numecs))
|
||||
nultrans = allocate_integer_array (current_max_dfas);
|
||||
|
||||
if (fulltbl && !use_NUL_table) {
|
||||
/* We still may want to use the table if numecs
|
||||
* is a power of 2.
|
||||
*/
|
||||
int power_of_two;
|
||||
|
||||
for (power_of_two = 1; power_of_two <= csize;
|
||||
power_of_two *= 2)
|
||||
if (numecs == power_of_two) {
|
||||
use_NUL_table = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (use_NUL_table)
|
||||
nultrans =
|
||||
allocate_integer_array (current_max_dfas);
|
||||
|
||||
/* From now on, nultrans != nil indicates that we're
|
||||
* saving null transitions for later, separate encoding.
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
if (fullspd) {
|
||||
if (ctrl.fullspd) {
|
||||
for (i = 0; i <= numecs; ++i)
|
||||
state[i] = 0;
|
||||
|
||||
@@ -501,7 +470,7 @@ void ntod ()
|
||||
dfaacc[0].dfaacc_state = 0;
|
||||
}
|
||||
|
||||
else if (fulltbl) {
|
||||
else if (ctrl.fulltbl) {
|
||||
if (nultrans)
|
||||
/* We won't be including NUL's transitions in the
|
||||
* table, so build it for entries from 0 .. numecs - 1.
|
||||
@@ -521,40 +490,25 @@ void ntod ()
|
||||
* So we'll have to realloc() on the way...
|
||||
* we'll wait until we can calculate yynxt_tbl->td_hilen.
|
||||
*/
|
||||
yynxt_tbl =
|
||||
(struct yytbl_data *) calloc (1,
|
||||
sizeof (struct
|
||||
yytbl_data));
|
||||
yynxt_tbl = calloc(1, sizeof (struct yytbl_data));
|
||||
|
||||
yytbl_data_init (yynxt_tbl, YYTD_ID_NXT);
|
||||
yynxt_tbl->td_hilen = 1;
|
||||
yynxt_tbl->td_lolen = num_full_table_rows;
|
||||
yynxt_tbl->td_lolen = (flex_uint32_t) num_full_table_rows;
|
||||
yynxt_tbl->td_data = yynxt_data =
|
||||
(flex_int32_t *) calloc (yynxt_tbl->td_lolen *
|
||||
yynxt_tbl->td_hilen,
|
||||
sizeof (flex_int32_t));
|
||||
calloc(yynxt_tbl->td_lolen *
|
||||
yynxt_tbl->td_hilen,
|
||||
sizeof (flex_int32_t));
|
||||
yynxt_curr = 0;
|
||||
|
||||
buf_prints (&yydmap_buf,
|
||||
"\t{YYTD_ID_NXT, (void**)&yy_nxt, sizeof(%s)},\n",
|
||||
long_align ? "flex_int32_t" : "flex_int16_t");
|
||||
|
||||
/* Unless -Ca, declare it "short" because it's a real
|
||||
* long-shot that that won't be large enough.
|
||||
*/
|
||||
struct packtype_t *ptype = optimize_pack(0);
|
||||
/* Note: Used when ctrl.fulltbl is on. Alternately defined elsewhere */
|
||||
out_str ("m4_define([[M4_HOOK_NXT_TYPE]], [[%s]])", ptype->name);
|
||||
out_dec ("m4_define([[M4_HOOK_NXT_ROWS]], [[%d]])", num_full_table_rows);
|
||||
outn ("m4_define([[M4_HOOK_NXT_BODY]], [[m4_dnl");
|
||||
outn ("M4_HOOK_TABLE_OPENER");
|
||||
if (gentables)
|
||||
out_str_dec
|
||||
("static yyconst %s yy_nxt[][%d] =\n {\n",
|
||||
long_align ? "flex_int32_t" : "flex_int16_t",
|
||||
num_full_table_rows);
|
||||
else {
|
||||
out_dec ("#undef YY_NXT_LOLEN\n#define YY_NXT_LOLEN (%d)\n", num_full_table_rows);
|
||||
out_str ("static yyconst %s *yy_nxt =0;\n",
|
||||
long_align ? "flex_int32_t" : "flex_int16_t");
|
||||
}
|
||||
|
||||
|
||||
if (gentables)
|
||||
outn (" {");
|
||||
outn ("M4_HOOK_TABLE_OPENER");
|
||||
|
||||
/* Generate 0 entries for state #0. */
|
||||
for (i = 0; i < num_full_table_rows; ++i) {
|
||||
@@ -564,7 +518,7 @@ void ntod ()
|
||||
|
||||
dataflush ();
|
||||
if (gentables)
|
||||
outn (" },\n");
|
||||
outn ("M4_HOOK_TABLE_CONTINUE");
|
||||
}
|
||||
|
||||
/* Create the first states. */
|
||||
@@ -598,7 +552,7 @@ void ntod ()
|
||||
}
|
||||
}
|
||||
|
||||
if (!fullspd) {
|
||||
if (!ctrl.fullspd) {
|
||||
if (!snstods (nset, 0, accset, 0, 0, &end_of_buffer_state))
|
||||
flexfatal (_
|
||||
("could not create unique end-of-buffer state"));
|
||||
@@ -621,7 +575,7 @@ void ntod ()
|
||||
dset = dss[ds];
|
||||
dsize = dfasiz[ds];
|
||||
|
||||
if (trace)
|
||||
if (env.trace)
|
||||
fprintf (stderr, _("state # %d:\n"), ds);
|
||||
|
||||
sympartition (dset, dsize, symlist, duplist);
|
||||
@@ -658,7 +612,7 @@ void ntod ()
|
||||
|
||||
state[sym] = newds;
|
||||
|
||||
if (trace)
|
||||
if (env.trace)
|
||||
fprintf (stderr,
|
||||
"\t%d\t%d\n", sym,
|
||||
newds);
|
||||
@@ -676,7 +630,7 @@ void ntod ()
|
||||
targ = state[duplist[sym]];
|
||||
state[sym] = targ;
|
||||
|
||||
if (trace)
|
||||
if (env.trace)
|
||||
fprintf (stderr,
|
||||
"\t%d\t%d\n", sym,
|
||||
targ);
|
||||
@@ -708,19 +662,17 @@ void ntod ()
|
||||
state[NUL_ec] = 0; /* remove transition */
|
||||
}
|
||||
|
||||
if (fulltbl) {
|
||||
if (ctrl.fulltbl) {
|
||||
|
||||
/* Each time we hit here, it's another td_hilen, so we realloc. */
|
||||
yynxt_tbl->td_hilen++;
|
||||
yynxt_tbl->td_data = yynxt_data =
|
||||
(flex_int32_t *) realloc (yynxt_data,
|
||||
realloc (yynxt_data,
|
||||
yynxt_tbl->td_hilen *
|
||||
yynxt_tbl->td_lolen *
|
||||
sizeof (flex_int32_t));
|
||||
|
||||
|
||||
if (gentables)
|
||||
outn (" {");
|
||||
outn ("M4_HOOK_TABLE_OPENER");
|
||||
|
||||
/* Supply array's 0-element. */
|
||||
if (ds == end_of_buffer_state) {
|
||||
@@ -745,10 +697,10 @@ void ntod ()
|
||||
|
||||
dataflush ();
|
||||
if (gentables)
|
||||
outn (" },\n");
|
||||
outn ("M4_HOOK_TABLE_CONTINUE");
|
||||
}
|
||||
|
||||
else if (fullspd)
|
||||
else if (ctrl.fullspd)
|
||||
place_state (state, ds, totaltrans);
|
||||
|
||||
else if (ds == end_of_buffer_state)
|
||||
@@ -776,8 +728,9 @@ void ntod ()
|
||||
}
|
||||
}
|
||||
|
||||
if (fulltbl) {
|
||||
dataend ();
|
||||
if (ctrl.fulltbl) {
|
||||
dataend ("M4_HOOK_TABLE_CLOSER");
|
||||
outn("/* body */]])");
|
||||
if (tablesext) {
|
||||
yytbl_data_compress (yynxt_tbl);
|
||||
if (yytbl_data_fwrite (&tableswr, yynxt_tbl) < 0)
|
||||
@@ -790,7 +743,7 @@ void ntod ()
|
||||
}
|
||||
}
|
||||
|
||||
else if (!fullspd) {
|
||||
else if (!ctrl.fullspd) {
|
||||
cmptmps (); /* create compressed template entries */
|
||||
|
||||
/* Create tables for all the states with only one
|
||||
@@ -805,8 +758,11 @@ void ntod ()
|
||||
mkdeftbl ();
|
||||
}
|
||||
|
||||
flex_free ((void *) accset);
|
||||
flex_free ((void *) nset);
|
||||
|
||||
free(accset);
|
||||
free(nset);
|
||||
|
||||
return (yynxt_tbl != NULL) ? (yynxt_tbl->td_hilen * sizeof(int32_t)) : 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -820,8 +776,7 @@ void ntod ()
|
||||
* On return, the dfa state number is in newds.
|
||||
*/
|
||||
|
||||
int snstods (sns, numstates, accset, nacc, hashval, newds_addr)
|
||||
int sns[], numstates, accset[], nacc, hashval, *newds_addr;
|
||||
int snstods (int sns[], int numstates, int accset[], int nacc, int hashval, int *newds_addr)
|
||||
{
|
||||
int didsort = 0;
|
||||
int i, j;
|
||||
@@ -836,7 +791,7 @@ int snstods (sns, numstates, accset, nacc, hashval, newds_addr)
|
||||
/* We sort the states in sns so we
|
||||
* can compare it to oldsns quickly.
|
||||
*/
|
||||
qsort (&sns [1], numstates, sizeof (sns [1]), intcmp);
|
||||
qsort (&sns [1], (size_t) numstates, sizeof (sns [1]), intcmp);
|
||||
didsort = 1;
|
||||
}
|
||||
|
||||
@@ -871,7 +826,7 @@ int snstods (sns, numstates, accset, nacc, hashval, newds_addr)
|
||||
*/
|
||||
|
||||
if (!didsort)
|
||||
qsort (&sns [1], numstates, sizeof (sns [1]), intcmp);
|
||||
qsort (&sns [1], (size_t) numstates, sizeof (sns [1]), intcmp);
|
||||
|
||||
for (i = 1; i <= numstates; ++i)
|
||||
dss[newds][i] = sns[i];
|
||||
@@ -881,7 +836,7 @@ int snstods (sns, numstates, accset, nacc, hashval, newds_addr)
|
||||
|
||||
if (nacc == 0) {
|
||||
if (reject)
|
||||
dfaacc[newds].dfaacc_set = (int *) 0;
|
||||
dfaacc[newds].dfaacc_set = NULL;
|
||||
else
|
||||
dfaacc[newds].dfaacc_state = 0;
|
||||
|
||||
@@ -894,7 +849,7 @@ int snstods (sns, numstates, accset, nacc, hashval, newds_addr)
|
||||
* match in the event of ties will work.
|
||||
*/
|
||||
|
||||
qsort (&accset [1], nacc, sizeof (accset [1]), intcmp);
|
||||
qsort (&accset [1], (size_t) nacc, sizeof (accset [1]), intcmp);
|
||||
|
||||
dfaacc[newds].dfaacc_set =
|
||||
allocate_integer_array (nacc + 1);
|
||||
@@ -942,8 +897,7 @@ int snstods (sns, numstates, accset, nacc, hashval, newds_addr)
|
||||
* int transsym, int nset[current_max_dfa_size] );
|
||||
*/
|
||||
|
||||
int symfollowset (ds, dsize, transsym, nset)
|
||||
int ds[], dsize, transsym, nset[];
|
||||
int symfollowset (int ds[], int dsize, int transsym, int nset[])
|
||||
{
|
||||
int ns, tsp, sym, i, j, lenccl, ch, numstates, ccllist;
|
||||
|
||||
@@ -1020,9 +974,7 @@ int symfollowset (ds, dsize, transsym, nset)
|
||||
* int symlist[numecs], int duplist[numecs] );
|
||||
*/
|
||||
|
||||
void sympartition (ds, numstates, symlist, duplist)
|
||||
int ds[], numstates;
|
||||
int symlist[], duplist[];
|
||||
void sympartition (int ds[], int numstates, int symlist[], int duplist[])
|
||||
{
|
||||
int tch, i, j, k, ns, dupfwd[CSIZE + 1], lenccl, cclp, ich;
|
||||
|
||||
@@ -1044,7 +996,7 @@ void sympartition (ds, numstates, symlist, duplist)
|
||||
tch = transchar[ns];
|
||||
|
||||
if (tch != SYM_EPSILON) {
|
||||
if (tch < -lastccl || tch >= csize) {
|
||||
if (tch < -lastccl || tch >= ctrl.csize) {
|
||||
flexfatal (_
|
||||
("bad transition character detected in sympartition()"));
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
/* ccl2ecl - convert character classes to set of equivalence classes */
|
||||
|
||||
void ccl2ecl ()
|
||||
void ccl2ecl (void)
|
||||
{
|
||||
int i, ich, newlen, cclp, ccls, cclmec;
|
||||
|
||||
@@ -56,7 +56,8 @@ void ccl2ecl ()
|
||||
cclmec = ecgroup[ich];
|
||||
|
||||
if (cclmec > 0) {
|
||||
ccltbl[cclp + newlen] = cclmec;
|
||||
/* Note: range 1..256 is mapped to 1..255,0 */
|
||||
ccltbl[cclp + newlen] = (unsigned char) cclmec;
|
||||
++newlen;
|
||||
}
|
||||
}
|
||||
@@ -74,8 +75,7 @@ void ccl2ecl ()
|
||||
* Returned is the number of classes.
|
||||
*/
|
||||
|
||||
int cre8ecs (fwd, bck, num)
|
||||
int fwd[], bck[], num;
|
||||
int cre8ecs (int fwd[], int bck[], int num)
|
||||
{
|
||||
int i, j, numcl;
|
||||
|
||||
@@ -100,9 +100,9 @@ int cre8ecs (fwd, bck, num)
|
||||
/* mkeccl - update equivalence classes based on character class xtions
|
||||
*
|
||||
* synopsis
|
||||
* Char ccls[];
|
||||
* unsigned char ccls[];
|
||||
* int lenccl, fwd[llsiz], bck[llsiz], llsiz, NUL_mapping;
|
||||
* void mkeccl( Char ccls[], int lenccl, int fwd[llsiz], int bck[llsiz],
|
||||
* void mkeccl( unsigned char ccls[], int lenccl, int fwd[llsiz], int bck[llsiz],
|
||||
* int llsiz, int NUL_mapping );
|
||||
*
|
||||
* ccls contains the elements of the character class, lenccl is the
|
||||
@@ -112,9 +112,7 @@ int cre8ecs (fwd, bck, num)
|
||||
* NUL_mapping is the value which NUL (0) should be mapped to.
|
||||
*/
|
||||
|
||||
void mkeccl (ccls, lenccl, fwd, bck, llsiz, NUL_mapping)
|
||||
Char ccls[];
|
||||
int lenccl, fwd[], bck[], llsiz, NUL_mapping;
|
||||
void mkeccl (unsigned char ccls[], int lenccl, int fwd[], int bck[], int llsiz, int NUL_mapping)
|
||||
{
|
||||
int cclp, oldec, newec;
|
||||
int cclm, i, j;
|
||||
@@ -201,8 +199,7 @@ void mkeccl (ccls, lenccl, fwd, bck, llsiz, NUL_mapping)
|
||||
|
||||
/* mkechar - create equivalence class for single character */
|
||||
|
||||
void mkechar (tch, fwd, bck)
|
||||
int tch, fwd[], bck[];
|
||||
void mkechar (int tch, int fwd[], int bck[])
|
||||
{
|
||||
/* If until now the character has been a proper subset of
|
||||
* an equivalence class, break it away to create a new ec
|
||||
|
||||
+54
-68
@@ -47,10 +47,9 @@ struct filter *filter_create_ext (struct filter *chain, const char *cmd,
|
||||
va_list ap;
|
||||
|
||||
/* allocate and initialize new filter */
|
||||
f = (struct filter *) flex_alloc (sizeof (struct filter));
|
||||
f = calloc(sizeof(struct filter), 1);
|
||||
if (!f)
|
||||
flexerror (_("flex_alloc failed (f) in filter_create_ext"));
|
||||
memset (f, 0, sizeof (*f));
|
||||
flexerror(_("calloc failed (f) in filter_create_ext"));
|
||||
f->filter_func = NULL;
|
||||
f->extra = NULL;
|
||||
f->next = NULL;
|
||||
@@ -66,23 +65,16 @@ struct filter *filter_create_ext (struct filter *chain, const char *cmd,
|
||||
|
||||
/* allocate argv, and populate it with the argument list. */
|
||||
max_args = 8;
|
||||
f->argv =
|
||||
(const char **) flex_alloc (sizeof (char *) *
|
||||
(max_args + 1));
|
||||
f->argv = malloc(sizeof(char *) * (size_t) (max_args + 1));
|
||||
if (!f->argv)
|
||||
flexerror (_("flex_alloc failed (f->argv) in filter_create_ext"));
|
||||
flexerror(_("malloc failed (f->argv) in filter_create_ext"));
|
||||
f->argv[f->argc++] = cmd;
|
||||
|
||||
va_start (ap, cmd);
|
||||
while ((s = va_arg (ap, const char *)) != NULL) {
|
||||
if (f->argc >= max_args) {
|
||||
max_args += 8;
|
||||
f->argv =
|
||||
(const char **) flex_realloc (f->argv,
|
||||
sizeof (char
|
||||
*) *
|
||||
(max_args +
|
||||
1));
|
||||
f->argv = realloc(f->argv, sizeof(char*) * (size_t) (max_args + 1));
|
||||
}
|
||||
f->argv[f->argc++] = s;
|
||||
}
|
||||
@@ -107,10 +99,9 @@ struct filter *filter_create_int (struct filter *chain,
|
||||
struct filter *f;
|
||||
|
||||
/* allocate and initialize new filter */
|
||||
f = (struct filter *) flex_alloc (sizeof (struct filter));
|
||||
f = calloc(sizeof(struct filter), 1);
|
||||
if (!f)
|
||||
flexerror (_("flex_alloc failed in filter_create_int"));
|
||||
memset (f, 0, sizeof (*f));
|
||||
flexerror(_("calloc failed in filter_create_int"));
|
||||
f->next = NULL;
|
||||
f->argc = 0;
|
||||
f->argv = NULL;
|
||||
@@ -169,11 +160,13 @@ bool filter_apply_chain (struct filter * chain)
|
||||
* to sync the stream. This is a Hail Mary situation. It seems to work.
|
||||
*/
|
||||
close (pipes[1]);
|
||||
clearerr(stdin);
|
||||
clearerr(stdin);
|
||||
if (dup2 (pipes[0], fileno (stdin)) == -1)
|
||||
flexfatal (_("dup2(pipes[0],0)"));
|
||||
close (pipes[0]);
|
||||
fseek (stdin, 0, SEEK_CUR);
|
||||
fseek (stdin, 0, SEEK_CUR);
|
||||
ungetc(' ', stdin); /* still an evil hack, but one that works better */
|
||||
(void)fgetc(stdin); /* on NetBSD than the fseek attempt does */
|
||||
|
||||
/* run as a filter, either internally or by exec */
|
||||
if (chain->filter_func) {
|
||||
@@ -181,16 +174,16 @@ clearerr(stdin);
|
||||
|
||||
if ((r = chain->filter_func (chain)) == -1)
|
||||
flexfatal (_("filter_func failed"));
|
||||
exit (0);
|
||||
FLEX_EXIT (0);
|
||||
}
|
||||
else {
|
||||
execvp (chain->argv[0],
|
||||
(char **const) (chain->argv));
|
||||
lerr_fatal ( _("exec of %s failed"),
|
||||
chain->argv[0]);
|
||||
lerr_fatal ( _("exec of %s failed"),
|
||||
chain->argv[0]);
|
||||
}
|
||||
|
||||
exit (1);
|
||||
FLEX_EXIT (1);
|
||||
}
|
||||
|
||||
/* Parent */
|
||||
@@ -198,7 +191,7 @@ clearerr(stdin);
|
||||
if (dup2 (pipes[1], fileno (stdout)) == -1)
|
||||
flexfatal (_("dup2(pipes[1],1)"));
|
||||
close (pipes[1]);
|
||||
fseek (stdout, 0, SEEK_CUR);
|
||||
fseek (stdout, 0, SEEK_CUR);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -235,8 +228,7 @@ int filter_tee_header (struct filter *chain)
|
||||
* header file at the same time.
|
||||
*/
|
||||
|
||||
const int readsz = 512;
|
||||
char *buf;
|
||||
char buf[512];
|
||||
int to_cfd = -1;
|
||||
FILE *to_c = NULL, *to_h = NULL;
|
||||
bool write_header;
|
||||
@@ -264,34 +256,26 @@ int filter_tee_header (struct filter *chain)
|
||||
*/
|
||||
|
||||
if (write_header) {
|
||||
fputs (check_4_gnu_m4, to_h);
|
||||
fputs (check_4_gnu_m4, to_h);
|
||||
fputs ("m4_changecom`'m4_dnl\n", to_h);
|
||||
fputs ("m4_changequote`'m4_dnl\n", to_h);
|
||||
fputs ("m4_changequote([[,]])[[]]m4_dnl\n", to_h);
|
||||
fputs ("m4_define([[M4_YY_NOOP]])[[]]m4_dnl\n", to_h);
|
||||
fputs ("m4_define( [[M4_YY_IN_HEADER]],[[]])m4_dnl\n",
|
||||
to_h);
|
||||
fprintf (to_h, "#ifndef %sHEADER_H\n", prefix);
|
||||
fprintf (to_h, "#define %sHEADER_H 1\n", prefix);
|
||||
fprintf (to_h, "#define %sIN_HEADER 1\n\n", prefix);
|
||||
fputs ("m4_changequote([[,]])[[]]m4_dnl\n", to_h);
|
||||
fputs ("m4_define([[M4_YY_NOOP]])[[]]m4_dnl\n", to_h);
|
||||
fputs ("m4_define([[M4_YY_IN_HEADER]],[[]])m4_dnl\n", to_h);
|
||||
fprintf (to_h,
|
||||
"m4_define( [[M4_YY_OUTFILE_NAME]],[[%s]])m4_dnl\n",
|
||||
headerfilename ? headerfilename : "<stdout>");
|
||||
|
||||
env.headerfilename != NULL ? env.headerfilename : "<stdout>");
|
||||
}
|
||||
|
||||
fputs (check_4_gnu_m4, to_c);
|
||||
fputs (check_4_gnu_m4, to_c);
|
||||
fputs ("m4_changecom`'m4_dnl\n", to_c);
|
||||
fputs ("m4_changequote`'m4_dnl\n", to_c);
|
||||
fputs ("m4_changequote([[,]])[[]]m4_dnl\n", to_c);
|
||||
fputs ("m4_define([[M4_YY_NOOP]])[[]]m4_dnl\n", to_c);
|
||||
fprintf (to_c, "m4_define( [[M4_YY_OUTFILE_NAME]],[[%s]])m4_dnl\n",
|
||||
outfilename ? outfilename : "<stdout>");
|
||||
env.outfilename != NULL ? env.outfilename : "<stdout>");
|
||||
|
||||
buf = (char *) flex_alloc (readsz);
|
||||
if (!buf)
|
||||
flexerror (_("flex_alloc failed in filter_tee_header"));
|
||||
while (fgets (buf, readsz, stdin)) {
|
||||
while (fgets (buf, sizeof buf, stdin)) {
|
||||
fputs (buf, to_c);
|
||||
if (write_header)
|
||||
fputs (buf, to_h);
|
||||
@@ -301,12 +285,8 @@ int filter_tee_header (struct filter *chain)
|
||||
fprintf (to_h, "\n");
|
||||
|
||||
/* write a fake line number. It will get fixed by the linedir filter. */
|
||||
fprintf (to_h, "#line 4000 \"M4_YY_OUTFILE_NAME\"\n");
|
||||
|
||||
fprintf (to_h, "#undef %sIN_HEADER\n", prefix);
|
||||
fprintf (to_h, "#endif /* %sHEADER_H */\n", prefix);
|
||||
fputs ("m4_undefine( [[M4_YY_IN_HEADER]])m4_dnl\n", to_h);
|
||||
|
||||
if (ctrl.gen_line_dirs)
|
||||
line_directive_out (to_h, NULL, 4000);
|
||||
fflush (to_h);
|
||||
if (ferror (to_h))
|
||||
lerr (_("error writing output file %s"),
|
||||
@@ -320,18 +300,25 @@ int filter_tee_header (struct filter *chain)
|
||||
fflush (to_c);
|
||||
if (ferror (to_c))
|
||||
lerr (_("error writing output file %s"),
|
||||
outfilename ? outfilename : "<stdout>");
|
||||
env.outfilename != NULL ? env.outfilename : "<stdout>");
|
||||
|
||||
else if (fclose (to_c))
|
||||
lerr (_("error closing output file %s"),
|
||||
outfilename ? outfilename : "<stdout>");
|
||||
env.outfilename != NULL ? env.outfilename : "<stdout>");
|
||||
|
||||
while (wait (0) > 0) ;
|
||||
|
||||
exit (0);
|
||||
FLEX_EXIT (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool is_blank_line (const char *str)
|
||||
{
|
||||
while (isspace(*str))
|
||||
str++;
|
||||
return (*str == '\0');
|
||||
}
|
||||
|
||||
/** Adjust the line numbers in the #line directives of the generated scanner.
|
||||
* After the m4 expansion, the line numbers are incorrect since the m4 macros
|
||||
* can add or remove lines. This only adjusts line numbers for generated code,
|
||||
@@ -340,8 +327,9 @@ int filter_tee_header (struct filter *chain)
|
||||
*/
|
||||
int filter_fix_linedirs (struct filter *chain)
|
||||
{
|
||||
char *buf;
|
||||
const int readsz = 512;
|
||||
char buf[4096];
|
||||
const char *traceline_template, *cp;
|
||||
const size_t readsz = sizeof buf;
|
||||
int lineno = 1;
|
||||
bool in_gen = true; /* in generated code */
|
||||
bool last_was_blank = false;
|
||||
@@ -349,17 +337,16 @@ int filter_fix_linedirs (struct filter *chain)
|
||||
if (!chain)
|
||||
return 0;
|
||||
|
||||
buf = (char *) flex_alloc (readsz);
|
||||
if (!buf)
|
||||
flexerror (_("flex_alloc failed in filter_fix_linedirs"));
|
||||
|
||||
while (fgets (buf, readsz, stdin)) {
|
||||
while (fgets (buf, (int) readsz, stdin)) {
|
||||
|
||||
regmatch_t m[10];
|
||||
|
||||
/* Check for #line directive. */
|
||||
if (buf[0] == '#'
|
||||
&& regexec (®ex_linedir, buf, 3, m, 0) == 0) {
|
||||
/* Check for directive. Note wired-in assumption:
|
||||
* field reference 1 is line number, 2 is filename.
|
||||
*/
|
||||
if (ctrl.traceline_re != NULL &&
|
||||
ctrl.traceline_template != NULL &&
|
||||
regexec (®ex_linedir, buf, 3, m, 0) == 0) {
|
||||
|
||||
char *fname;
|
||||
|
||||
@@ -367,10 +354,10 @@ int filter_fix_linedirs (struct filter *chain)
|
||||
fname = regmatch_dup (&m[2], buf);
|
||||
|
||||
if (strcmp (fname,
|
||||
outfilename ? outfilename : "<stdout>")
|
||||
env.outfilename != NULL ? env.outfilename : "<stdout>")
|
||||
== 0
|
||||
|| strcmp (fname,
|
||||
headerfilename ? headerfilename : "<stdout>")
|
||||
env.headerfilename != NULL ? env.headerfilename : "<stdout>")
|
||||
== 0) {
|
||||
|
||||
char *s1, *s2;
|
||||
@@ -394,8 +381,9 @@ int filter_fix_linedirs (struct filter *chain)
|
||||
|
||||
/* Adjust the line directives. */
|
||||
in_gen = true;
|
||||
snprintf (buf, readsz, "#line %d \"%s\"\n",
|
||||
snprintf (buf, readsz, traceline_template,
|
||||
lineno + 1, filename);
|
||||
strncat(buf, "\n", sizeof(buf)-1);
|
||||
}
|
||||
else {
|
||||
/* it's a #line directive for code we didn't write */
|
||||
@@ -407,9 +395,7 @@ int filter_fix_linedirs (struct filter *chain)
|
||||
}
|
||||
|
||||
/* squeeze blank lines from generated code */
|
||||
else if (in_gen
|
||||
&& regexec (®ex_blank_line, buf, 0, NULL,
|
||||
0) == 0) {
|
||||
else if (in_gen && is_blank_line(buf)) {
|
||||
if (last_was_blank)
|
||||
continue;
|
||||
else
|
||||
@@ -427,11 +413,11 @@ int filter_fix_linedirs (struct filter *chain)
|
||||
fflush (stdout);
|
||||
if (ferror (stdout))
|
||||
lerr (_("error writing output file %s"),
|
||||
outfilename ? outfilename : "<stdout>");
|
||||
env.outfilename != NULL ? env.outfilename : "<stdout>");
|
||||
|
||||
else if (fclose (stdout))
|
||||
lerr (_("error closing output file %s"),
|
||||
outfilename ? outfilename : "<stdout>");
|
||||
env.outfilename != NULL ? env.outfilename : "<stdout>");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
-3749
File diff suppressed because it is too large
Load Diff
+316
-339
File diff suppressed because it is too large
Load Diff
+12
-21
@@ -3,31 +3,17 @@
|
||||
#ifndef FLEXINT_H
|
||||
#define FLEXINT_H
|
||||
|
||||
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
|
||||
|
||||
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
||||
|
||||
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
|
||||
* if you want the limit (max/min) macros for int types.
|
||||
/* C++ systems might need __STDC_LIMIT_MACROS defined before including
|
||||
* <stdint.h>, if you want the limit (max/min) macros for int types.
|
||||
*/
|
||||
#ifndef __STDC_LIMIT_MACROS
|
||||
#define __STDC_LIMIT_MACROS 1
|
||||
#endif
|
||||
|
||||
#include <inttypes.h>
|
||||
typedef int8_t flex_int8_t;
|
||||
typedef uint8_t flex_uint8_t;
|
||||
typedef int16_t flex_int16_t;
|
||||
typedef uint16_t flex_uint16_t;
|
||||
typedef int32_t flex_int32_t;
|
||||
typedef uint32_t flex_uint32_t;
|
||||
#else
|
||||
typedef signed char flex_int8_t;
|
||||
typedef short int flex_int16_t;
|
||||
typedef int flex_int32_t;
|
||||
typedef unsigned char flex_uint8_t;
|
||||
typedef unsigned short int flex_uint16_t;
|
||||
typedef unsigned int flex_uint32_t;
|
||||
/* "flexint_shared.h" will be included also in skeleton. It will include
|
||||
* <inttypes.h> (if available) and define flex's integral types.
|
||||
*/
|
||||
#include "flexint_shared.h"
|
||||
|
||||
/* Limits of integral types. */
|
||||
#ifndef INT8_MIN
|
||||
@@ -58,6 +44,11 @@ typedef unsigned int flex_uint32_t;
|
||||
#define UINT32_MAX (4294967295U)
|
||||
#endif
|
||||
|
||||
#endif /* ! C99 */
|
||||
#ifndef INT_MAX
|
||||
#define INT_MAX ((int)(~0U)>>1)
|
||||
#endif
|
||||
#ifndef SIZE_MAX
|
||||
#define SIZE_MAX (~(size_t)0)
|
||||
#endif
|
||||
|
||||
#endif /* ! FLEXINT_H */
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
/* flex integer type definitions */
|
||||
|
||||
#ifndef YYFLEX_INTTYPES_DEFINED
|
||||
#define YYFLEX_INTTYPES_DEFINED
|
||||
|
||||
/* Prefer C99 integer types if available. */
|
||||
|
||||
# if defined(__cplusplus) && __cplusplus >= 201103L
|
||||
#include <cstdint>
|
||||
# define YYFLEX_USE_STDINT
|
||||
# endif
|
||||
# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
|
||||
/* Include <inttypes.h> and not <stdint.h> because Solaris 2.6 has the former
|
||||
* and not the latter.
|
||||
*/
|
||||
#include <inttypes.h>
|
||||
# define YYFLEX_USE_STDINT
|
||||
# else
|
||||
# if defined(_MSC_VER) && _MSC_VER >= 1600
|
||||
/* Visual C++ 2010 does not define __STDC_VERSION__ and has <stdint.h> but not
|
||||
* <inttypes.h>.
|
||||
*/
|
||||
#include <stdint.h>
|
||||
# define YYFLEX_USE_STDINT
|
||||
# endif
|
||||
# endif
|
||||
# ifdef YYFLEX_USE_STDINT
|
||||
typedef int8_t flex_int8_t;
|
||||
typedef uint8_t flex_uint8_t;
|
||||
typedef int16_t flex_int16_t;
|
||||
typedef uint16_t flex_uint16_t;
|
||||
typedef int32_t flex_int32_t;
|
||||
typedef uint32_t flex_uint32_t;
|
||||
# else
|
||||
typedef unsigned char flex_uint8_t;
|
||||
typedef short int flex_int16_t;
|
||||
typedef unsigned short int flex_uint16_t;
|
||||
# ifdef __STDC__
|
||||
typedef signed char flex_int8_t;
|
||||
/* ISO C only requires at least 16 bits for int. */
|
||||
# ifdef __cplusplus
|
||||
#include <climits>
|
||||
# else
|
||||
#include <limits.h>
|
||||
# endif
|
||||
# if UINT_MAX >= 4294967295
|
||||
# define YYFLEX_INT32_DEFINED
|
||||
typedef int flex_int32_t;
|
||||
typedef unsigned int flex_uint32_t;
|
||||
# endif
|
||||
# else
|
||||
typedef char flex_int8_t;
|
||||
# endif
|
||||
# ifndef YYFLEX_INT32_DEFINED
|
||||
typedef long int flex_int32_t;
|
||||
typedef unsigned long int flex_uint32_t;
|
||||
# endif
|
||||
# endif
|
||||
#endif /* YYFLEX_INTTYPES_DEFINED */
|
||||
+1
-1
@@ -20,7 +20,7 @@
|
||||
#define _LIBGETTEXT_H 1
|
||||
|
||||
/* NLS can be disabled through the configure --disable-nls option. */
|
||||
#if ENABLE_NLS
|
||||
#ifdef ENABLE_NLS
|
||||
|
||||
/* Get declarations of GNU message catalog functions. */
|
||||
# include <libintl.h>
|
||||
|
||||
+2391
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,8 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
|
||||
Name: libfl
|
||||
Description: Flex (the fast lexical analyzer) support library
|
||||
Version: @PACKAGE_VERSION@
|
||||
Libs: -L${libdir} -lfl
|
||||
+3
-1
@@ -21,6 +21,8 @@
|
||||
/* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */
|
||||
/* PURPOSE. */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
extern int yylex (void);
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
@@ -30,5 +32,5 @@ int main (int argc, char *argv[])
|
||||
|
||||
while (yylex () != 0) ;
|
||||
|
||||
return 0;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
+919
-1070
File diff suppressed because it is too large
Load Diff
+133
-461
@@ -30,128 +30,23 @@
|
||||
/* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */
|
||||
/* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */
|
||||
/* PURPOSE. */
|
||||
|
||||
#include "flexdef.h"
|
||||
#include "tables.h"
|
||||
|
||||
#define CMD_IF_TABLES_SER "%if-tables-serialization"
|
||||
#define CMD_TABLES_YYDMAP "%tables-yydmap"
|
||||
#define CMD_DEFINE_YYTABLES "%define-yytables"
|
||||
#define CMD_IF_CPP_ONLY "%if-c++-only"
|
||||
#define CMD_IF_C_ONLY "%if-c-only"
|
||||
#define CMD_IF_C_OR_CPP "%if-c-or-c++"
|
||||
#define CMD_NOT_FOR_HEADER "%not-for-header"
|
||||
#define CMD_OK_FOR_HEADER "%ok-for-header"
|
||||
#define CMD_PUSH "%push"
|
||||
#define CMD_POP "%pop"
|
||||
#define CMD_IF_REENTRANT "%if-reentrant"
|
||||
#define CMD_IF_NOT_REENTRANT "%if-not-reentrant"
|
||||
#define CMD_IF_BISON_BRIDGE "%if-bison-bridge"
|
||||
#define CMD_IF_NOT_BISON_BRIDGE "%if-not-bison-bridge"
|
||||
#define CMD_ENDIF "%endif"
|
||||
|
||||
/* we allow the skeleton to push and pop. */
|
||||
struct sko_state {
|
||||
bool dc; /**< do_copy */
|
||||
};
|
||||
static struct sko_state *sko_stack=0;
|
||||
static int sko_len=0,sko_sz=0;
|
||||
static void sko_push(bool dc)
|
||||
{
|
||||
if(!sko_stack){
|
||||
sko_sz = 1;
|
||||
sko_stack = (struct sko_state*)flex_alloc(sizeof(struct sko_state)*sko_sz);
|
||||
if (!sko_stack)
|
||||
flexfatal(_("allocation of sko_stack failed"));
|
||||
sko_len = 0;
|
||||
}
|
||||
if(sko_len >= sko_sz){
|
||||
sko_sz *= 2;
|
||||
sko_stack = (struct sko_state*)flex_realloc(sko_stack,sizeof(struct sko_state)*sko_sz);
|
||||
}
|
||||
|
||||
/* initialize to zero and push */
|
||||
sko_stack[sko_len].dc = dc;
|
||||
sko_len++;
|
||||
}
|
||||
static void sko_peek(bool *dc)
|
||||
{
|
||||
if(sko_len <= 0)
|
||||
flex_die("peek attempt when sko stack is empty");
|
||||
if(dc)
|
||||
*dc = sko_stack[sko_len-1].dc;
|
||||
}
|
||||
static void sko_pop(bool* dc)
|
||||
{
|
||||
sko_peek(dc);
|
||||
sko_len--;
|
||||
if(sko_len < 0)
|
||||
flex_die("popped too many times in skeleton.");
|
||||
}
|
||||
|
||||
/* Append "#define defname value\n" to the running buffer. */
|
||||
void action_define (defname, value)
|
||||
const char *defname;
|
||||
int value;
|
||||
{
|
||||
char buf[MAXLINE];
|
||||
char *cpy;
|
||||
|
||||
if ((int) strlen (defname) > MAXLINE / 2) {
|
||||
format_pinpoint_message (_
|
||||
("name \"%s\" ridiculously long"),
|
||||
defname);
|
||||
return;
|
||||
}
|
||||
|
||||
snprintf (buf, sizeof(buf), "#define %s %d\n", defname, value);
|
||||
add_action (buf);
|
||||
|
||||
/* track #defines so we can undef them when we're done. */
|
||||
cpy = copy_string (defname);
|
||||
buf_append (&defs_buf, &cpy, 1);
|
||||
}
|
||||
|
||||
|
||||
#ifdef notdef
|
||||
/** Append "m4_define([[defname]],[[value]])m4_dnl\n" to the running buffer.
|
||||
* @param defname The macro name.
|
||||
* @param value The macro value, can be NULL, which is the same as the empty string.
|
||||
*/
|
||||
static void action_m4_define (const char *defname, const char * value)
|
||||
{
|
||||
char buf[MAXLINE];
|
||||
|
||||
flexfatal ("DO NOT USE THIS FUNCTION!");
|
||||
|
||||
if ((int) strlen (defname) > MAXLINE / 2) {
|
||||
format_pinpoint_message (_
|
||||
("name \"%s\" ridiculously long"),
|
||||
defname);
|
||||
return;
|
||||
}
|
||||
|
||||
snprintf (buf, sizeof(buf), "m4_define([[%s]],[[%s]])m4_dnl\n", defname, value?value:"");
|
||||
add_action (buf);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Append "new_text" to the running buffer. */
|
||||
void add_action (new_text)
|
||||
const char *new_text;
|
||||
void add_action (const char *new_text)
|
||||
{
|
||||
int len = strlen (new_text);
|
||||
int len = (int) strlen (new_text);
|
||||
|
||||
while (len + action_index >= action_size - 10 /* slop */ ) {
|
||||
int new_size = action_size * 2;
|
||||
|
||||
if (new_size <= 0)
|
||||
if (action_size > INT_MAX / 2)
|
||||
/* Increase just a little, to try to avoid overflow
|
||||
* on 16-bit machines.
|
||||
*/
|
||||
action_size += action_size / 8;
|
||||
else
|
||||
action_size = new_size;
|
||||
action_size = action_size * 2;
|
||||
|
||||
action_array =
|
||||
reallocate_character_array (action_array,
|
||||
@@ -166,29 +61,35 @@ void add_action (new_text)
|
||||
|
||||
/* allocate_array - allocate memory for an integer array of the given size */
|
||||
|
||||
void *allocate_array (size, element_size)
|
||||
int size;
|
||||
size_t element_size;
|
||||
void *allocate_array (int size, size_t element_size)
|
||||
{
|
||||
void *mem;
|
||||
size_t num_bytes = element_size * size;
|
||||
|
||||
mem = flex_alloc (num_bytes);
|
||||
if (!mem)
|
||||
flexfatal (_
|
||||
("memory allocation failed in allocate_array()"));
|
||||
|
||||
return mem;
|
||||
void *new_array;
|
||||
#if HAVE_REALLOCARR
|
||||
new_array = NULL;
|
||||
if (reallocarr(&new_array, (size_t) size, element_size))
|
||||
flexfatal (_("memory allocation failed in allocate_array()"));
|
||||
#else
|
||||
# if HAVE_REALLOCARRAY
|
||||
new_array = reallocarray(NULL, (size_t) size, element_size);
|
||||
# else
|
||||
/* Do manual overflow detection */
|
||||
size_t num_bytes = (size_t) size * element_size;
|
||||
new_array = (size && SIZE_MAX / (size_t) size < element_size) ? NULL :
|
||||
malloc(num_bytes);
|
||||
# endif
|
||||
if (!new_array)
|
||||
flexfatal (_("memory allocation failed in allocate_array()"));
|
||||
#endif
|
||||
return new_array;
|
||||
}
|
||||
|
||||
|
||||
/* all_lower - true if a string is all lower-case */
|
||||
|
||||
int all_lower (str)
|
||||
char *str;
|
||||
int all_lower (char *str)
|
||||
{
|
||||
while (*str) {
|
||||
if (!isascii ((Char) * str) || !islower ((Char) * str))
|
||||
if (!isascii ((unsigned char) * str) || !islower ((unsigned char) * str))
|
||||
return 0;
|
||||
++str;
|
||||
}
|
||||
@@ -199,11 +100,10 @@ int all_lower (str)
|
||||
|
||||
/* all_upper - true if a string is all upper-case */
|
||||
|
||||
int all_upper (str)
|
||||
char *str;
|
||||
int all_upper (char *str)
|
||||
{
|
||||
while (*str) {
|
||||
if (!isascii ((Char) * str) || !isupper ((Char) * str))
|
||||
if (!isascii ((unsigned char) * str) || !isupper ((unsigned char) * str))
|
||||
return 0;
|
||||
++str;
|
||||
}
|
||||
@@ -225,14 +125,13 @@ int intcmp (const void *a, const void *b)
|
||||
* and exits.
|
||||
*/
|
||||
|
||||
void check_char (c)
|
||||
int c;
|
||||
void check_char (int c)
|
||||
{
|
||||
if (c >= CSIZE)
|
||||
lerr (_("bad character '%s' detected in check_char()"),
|
||||
readable_form (c));
|
||||
|
||||
if (c >= csize)
|
||||
if (c >= ctrl.csize)
|
||||
lerr (_
|
||||
("scanner requires -8 flag to use the character %s"),
|
||||
readable_form (c));
|
||||
@@ -242,57 +141,20 @@ void check_char (c)
|
||||
|
||||
/* clower - replace upper-case letter to lower-case */
|
||||
|
||||
Char clower (c)
|
||||
int c;
|
||||
unsigned char clower (int c)
|
||||
{
|
||||
return (Char) ((isascii (c) && isupper (c)) ? tolower (c) : c);
|
||||
return (unsigned char) ((isascii (c) && isupper (c)) ? tolower (c) : c);
|
||||
}
|
||||
|
||||
|
||||
/* copy_string - returns a dynamically allocated copy of a string */
|
||||
|
||||
char *copy_string (str)
|
||||
const char *str;
|
||||
char *xstrdup(const char *s)
|
||||
{
|
||||
const char *c1;
|
||||
char *c2;
|
||||
char *copy;
|
||||
unsigned int size;
|
||||
char *s2;
|
||||
|
||||
/* find length */
|
||||
for (c1 = str; *c1; ++c1) ;
|
||||
if ((s2 = strdup(s)) == NULL)
|
||||
flexfatal (_("memory allocation failure in xstrdup()"));
|
||||
|
||||
size = (c1 - str + 1) * sizeof (char);
|
||||
|
||||
copy = (char *) flex_alloc (size);
|
||||
|
||||
if (copy == NULL)
|
||||
flexfatal (_("dynamic memory failure in copy_string()"));
|
||||
|
||||
for (c2 = copy; (*c2++ = *str++) != 0;) ;
|
||||
|
||||
return copy;
|
||||
}
|
||||
|
||||
|
||||
/* copy_unsigned_string -
|
||||
* returns a dynamically allocated copy of a (potentially) unsigned string
|
||||
*/
|
||||
|
||||
Char *copy_unsigned_string (str)
|
||||
Char *str;
|
||||
{
|
||||
Char *c;
|
||||
Char *copy;
|
||||
|
||||
/* find length */
|
||||
for (c = str; *c; ++c) ;
|
||||
|
||||
copy = allocate_Character_array (c - str + 1);
|
||||
|
||||
for (c = copy; (*c++ = *str++) != 0;) ;
|
||||
|
||||
return copy;
|
||||
return s2;
|
||||
}
|
||||
|
||||
|
||||
@@ -300,19 +162,19 @@ Char *copy_unsigned_string (str)
|
||||
|
||||
int cclcmp (const void *a, const void *b)
|
||||
{
|
||||
if (!*(const Char *) a)
|
||||
return 1;
|
||||
else
|
||||
if (!*(const Char *) b)
|
||||
return - 1;
|
||||
if (!*(const unsigned char *) a)
|
||||
return 1;
|
||||
else
|
||||
return *(const Char *) a - *(const Char *) b;
|
||||
if (!*(const unsigned char *) b)
|
||||
return - 1;
|
||||
else
|
||||
return *(const unsigned char *) a - *(const unsigned char *) b;
|
||||
}
|
||||
|
||||
|
||||
/* dataend - finish up a block of data declarations */
|
||||
|
||||
void dataend ()
|
||||
void dataend (const char *endit)
|
||||
{
|
||||
/* short circuit any output */
|
||||
if (gentables) {
|
||||
@@ -321,7 +183,8 @@ void dataend ()
|
||||
dataflush ();
|
||||
|
||||
/* add terminator for initialization; { for vi */
|
||||
outn (" } ;\n");
|
||||
if (endit)
|
||||
outn (endit);
|
||||
}
|
||||
dataline = 0;
|
||||
datapos = 0;
|
||||
@@ -330,13 +193,14 @@ void dataend ()
|
||||
|
||||
/* dataflush - flush generated data statements */
|
||||
|
||||
void dataflush ()
|
||||
void dataflush (void)
|
||||
{
|
||||
/* short circuit any output */
|
||||
if (!gentables)
|
||||
return;
|
||||
|
||||
outc ('\n');
|
||||
if (datapos > 0)
|
||||
outc ('\n');
|
||||
|
||||
if (++dataline >= NUMDATALINES) {
|
||||
/* Put out a blank line so that the table is grouped into
|
||||
@@ -353,8 +217,7 @@ void dataflush ()
|
||||
|
||||
/* flexerror - report an error message and terminate */
|
||||
|
||||
void flexerror (msg)
|
||||
const char *msg;
|
||||
void flexerror (const char *msg)
|
||||
{
|
||||
fprintf (stderr, "%s: %s\n", program_name, msg);
|
||||
flexend (1);
|
||||
@@ -363,8 +226,7 @@ void flexerror (msg)
|
||||
|
||||
/* flexfatal - report a fatal error message and terminate */
|
||||
|
||||
void flexfatal (msg)
|
||||
const char *msg;
|
||||
void flexfatal (const char *msg)
|
||||
{
|
||||
fprintf (stderr, _("%s: fatal internal error, %s\n"),
|
||||
program_name, msg);
|
||||
@@ -372,22 +234,10 @@ void flexfatal (msg)
|
||||
}
|
||||
|
||||
|
||||
/* htoi - convert a hexadecimal digit string to an integer value */
|
||||
|
||||
int htoi (str)
|
||||
Char str[];
|
||||
{
|
||||
unsigned int result;
|
||||
|
||||
(void) sscanf ((char *) str, "%x", &result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/* lerr - report an error message */
|
||||
|
||||
void lerr (const char *msg, ...) {
|
||||
void lerr (const char *msg, ...)
|
||||
{
|
||||
char errmsg[MAXLINE];
|
||||
va_list args;
|
||||
|
||||
@@ -412,30 +262,27 @@ void lerr_fatal (const char *msg, ...)
|
||||
}
|
||||
|
||||
|
||||
/* line_directive_out - spit out a "#line" statement */
|
||||
|
||||
void line_directive_out (output_file, do_infile)
|
||||
FILE *output_file;
|
||||
int do_infile;
|
||||
/* line_directive_out - spit out a "#line" statement or equivalent */
|
||||
void line_directive_out (FILE *output_file, char *path, int linenum)
|
||||
{
|
||||
char directive[MAXLINE], filename[MAXLINE];
|
||||
char *trace_fmt = "m4_ifdef([[M4_HOOK_TRACE_LINE_FORMAT]], [[M4_HOOK_TRACE_LINE_FORMAT([[%d]], [[%s]])]])";
|
||||
char directive[MAXLINE*2], filename[MAXLINE];
|
||||
char *s1, *s2, *s3;
|
||||
static const char *line_fmt = "#line %d \"%s\"\n";
|
||||
|
||||
if (!gen_line_dirs)
|
||||
if (!ctrl.gen_line_dirs)
|
||||
return;
|
||||
|
||||
s1 = do_infile ? infilename : "M4_YY_OUTFILE_NAME";
|
||||
s1 = (path != NULL) ? path : "M4_YY_OUTFILE_NAME";
|
||||
|
||||
if (do_infile && !s1)
|
||||
s1 = "<stdin>";
|
||||
if ((path != NULL) && !s1)
|
||||
s1 = "<stdin>";
|
||||
|
||||
s2 = filename;
|
||||
s3 = &filename[sizeof (filename) - 2];
|
||||
|
||||
while (s2 < s3 && *s1) {
|
||||
if (*s1 == '\\')
|
||||
/* Escape the '\' */
|
||||
if (*s1 == '\\' || *s1 == '"')
|
||||
/* Escape the '\' or '"' */
|
||||
*s2++ = '\\';
|
||||
|
||||
*s2++ = *s1++;
|
||||
@@ -443,10 +290,10 @@ void line_directive_out (output_file, do_infile)
|
||||
|
||||
*s2 = '\0';
|
||||
|
||||
if (do_infile)
|
||||
snprintf (directive, sizeof(directive), line_fmt, linenum, filename);
|
||||
if (path != NULL)
|
||||
snprintf (directive, sizeof(directive), trace_fmt, linenum, filename);
|
||||
else {
|
||||
snprintf (directive, sizeof(directive), line_fmt, 0, filename);
|
||||
snprintf (directive, sizeof(directive), trace_fmt, 0, filename);
|
||||
}
|
||||
|
||||
/* If output_file is nil then we should put the directive in
|
||||
@@ -464,7 +311,7 @@ void line_directive_out (output_file, do_infile)
|
||||
* representing where the user's section 1 definitions end
|
||||
* and the prolog begins
|
||||
*/
|
||||
void mark_defs1 ()
|
||||
void mark_defs1 (void)
|
||||
{
|
||||
defs1_offset = 0;
|
||||
action_array[action_index++] = '\0';
|
||||
@@ -476,7 +323,7 @@ void mark_defs1 ()
|
||||
/* mark_prolog - mark the current position in the action array as
|
||||
* representing the end of the action prolog
|
||||
*/
|
||||
void mark_prolog ()
|
||||
void mark_prolog (void)
|
||||
{
|
||||
action_array[action_index++] = '\0';
|
||||
action_offset = action_index;
|
||||
@@ -488,8 +335,7 @@ void mark_prolog ()
|
||||
*
|
||||
* Generates a data statement initializing the current 2-D array to "value".
|
||||
*/
|
||||
void mk2data (value)
|
||||
int value;
|
||||
void mk2data (int value)
|
||||
{
|
||||
/* short circuit any output */
|
||||
if (!gentables)
|
||||
@@ -518,8 +364,7 @@ void mk2data (value)
|
||||
* Generates a data statement initializing the current array element to
|
||||
* "value".
|
||||
*/
|
||||
void mkdata (value)
|
||||
int value;
|
||||
void mkdata (int value)
|
||||
{
|
||||
/* short circuit any output */
|
||||
if (!gentables)
|
||||
@@ -532,7 +377,7 @@ void mkdata (value)
|
||||
|
||||
if (datapos == 0)
|
||||
/* Indent. */
|
||||
out (" ");
|
||||
out (" ");
|
||||
else
|
||||
outc (',');
|
||||
|
||||
@@ -544,8 +389,7 @@ void mkdata (value)
|
||||
|
||||
/* myctoi - return the integer represented by a string of digits */
|
||||
|
||||
int myctoi (array)
|
||||
const char *array;
|
||||
int myctoi (const char *array)
|
||||
{
|
||||
int val = 0;
|
||||
|
||||
@@ -557,10 +401,9 @@ int myctoi (array)
|
||||
|
||||
/* myesc - return character corresponding to escape sequence */
|
||||
|
||||
Char myesc (array)
|
||||
Char array[];
|
||||
unsigned char myesc (unsigned char array[])
|
||||
{
|
||||
Char c, esc_char;
|
||||
unsigned char c, esc_char;
|
||||
|
||||
switch (array[1]) {
|
||||
case 'b':
|
||||
@@ -573,19 +416,10 @@ Char myesc (array)
|
||||
return '\r';
|
||||
case 't':
|
||||
return '\t';
|
||||
|
||||
#if defined (__STDC__)
|
||||
case 'a':
|
||||
return '\a';
|
||||
case 'v':
|
||||
return '\v';
|
||||
#else
|
||||
case 'a':
|
||||
return '\007';
|
||||
case 'v':
|
||||
return '\013';
|
||||
#endif
|
||||
|
||||
case '0':
|
||||
case '1':
|
||||
case '2':
|
||||
@@ -597,18 +431,15 @@ Char myesc (array)
|
||||
{ /* \<octal> */
|
||||
int sptr = 1;
|
||||
|
||||
while (isascii (array[sptr]) &&
|
||||
isdigit (array[sptr]))
|
||||
/* Don't increment inside loop control
|
||||
* because if isdigit() is a macro it might
|
||||
* expand into multiple increments ...
|
||||
*/
|
||||
while (sptr <= 3 &&
|
||||
array[sptr] >= '0' && array[sptr] <= '7') {
|
||||
++sptr;
|
||||
}
|
||||
|
||||
c = array[sptr];
|
||||
array[sptr] = '\0';
|
||||
|
||||
esc_char = otoi (array + 1);
|
||||
esc_char = (unsigned char) strtoul (array + 1, NULL, 8);
|
||||
|
||||
array[sptr] = c;
|
||||
|
||||
@@ -619,18 +450,18 @@ Char myesc (array)
|
||||
{ /* \x<hex> */
|
||||
int sptr = 2;
|
||||
|
||||
while (isascii (array[sptr]) &&
|
||||
isxdigit (array[sptr]))
|
||||
while (sptr <= 3 && isxdigit (array[sptr])) {
|
||||
/* Don't increment inside loop control
|
||||
* because if isdigit() is a macro it might
|
||||
* because if isxdigit() is a macro it might
|
||||
* expand into multiple increments ...
|
||||
*/
|
||||
++sptr;
|
||||
}
|
||||
|
||||
c = array[sptr];
|
||||
array[sptr] = '\0';
|
||||
|
||||
esc_char = htoi (array + 2);
|
||||
esc_char = (unsigned char) strtoul (array + 2, NULL, 16);
|
||||
|
||||
array[sptr] = c;
|
||||
|
||||
@@ -643,76 +474,46 @@ Char myesc (array)
|
||||
}
|
||||
|
||||
|
||||
/* otoi - convert an octal digit string to an integer value */
|
||||
|
||||
int otoi (str)
|
||||
Char str[];
|
||||
{
|
||||
unsigned int result;
|
||||
|
||||
(void) sscanf ((char *) str, "%o", &result);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/* out - various flavors of outputing a (possibly formatted) string for the
|
||||
* generated scanner, keeping track of the line count.
|
||||
*/
|
||||
|
||||
void out (str)
|
||||
const char *str;
|
||||
void out (const char *str)
|
||||
{
|
||||
fputs (str, stdout);
|
||||
}
|
||||
|
||||
void out_dec (fmt, n)
|
||||
const char *fmt;
|
||||
int n;
|
||||
void out_dec (const char *fmt, int n)
|
||||
{
|
||||
fprintf (stdout, fmt, n);
|
||||
}
|
||||
|
||||
void out_dec2 (fmt, n1, n2)
|
||||
const char *fmt;
|
||||
int n1, n2;
|
||||
void out_dec2 (const char *fmt, int n1, int n2)
|
||||
{
|
||||
fprintf (stdout, fmt, n1, n2);
|
||||
}
|
||||
|
||||
void out_hex (fmt, x)
|
||||
const char *fmt;
|
||||
unsigned int x;
|
||||
void out_hex (const char *fmt, unsigned int x)
|
||||
{
|
||||
fprintf (stdout, fmt, x);
|
||||
}
|
||||
|
||||
void out_str (fmt, str)
|
||||
const char *fmt, str[];
|
||||
void out_str (const char *fmt, const char str[])
|
||||
{
|
||||
fprintf (stdout,fmt, str);
|
||||
}
|
||||
|
||||
void out_str3 (fmt, s1, s2, s3)
|
||||
const char *fmt, s1[], s2[], s3[];
|
||||
{
|
||||
fprintf (stdout,fmt, s1, s2, s3);
|
||||
}
|
||||
|
||||
void out_str_dec (fmt, str, n)
|
||||
const char *fmt, str[];
|
||||
int n;
|
||||
void out_str_dec (const char *fmt, const char str[], int n)
|
||||
{
|
||||
fprintf (stdout,fmt, str, n);
|
||||
}
|
||||
|
||||
void outc (c)
|
||||
int c;
|
||||
void outc (int c)
|
||||
{
|
||||
fputc (c, stdout);
|
||||
}
|
||||
|
||||
void outn (str)
|
||||
const char *str;
|
||||
void outn (const char *str)
|
||||
{
|
||||
fputs (str,stdout);
|
||||
fputc('\n',stdout);
|
||||
@@ -734,8 +535,7 @@ void out_m4_define (const char* def, const char* val)
|
||||
* The returned string is in static storage.
|
||||
*/
|
||||
|
||||
char *readable_form (c)
|
||||
int c;
|
||||
char *readable_form (int c)
|
||||
{
|
||||
static char rform[20];
|
||||
|
||||
@@ -751,16 +551,12 @@ char *readable_form (c)
|
||||
return "\\r";
|
||||
case '\t':
|
||||
return "\\t";
|
||||
|
||||
#if defined (__STDC__)
|
||||
case '\a':
|
||||
return "\\a";
|
||||
case '\v':
|
||||
return "\\v";
|
||||
#endif
|
||||
|
||||
default:
|
||||
if(trace_hex)
|
||||
if(env.trace_hex)
|
||||
snprintf (rform, sizeof(rform), "\\x%.2x", (unsigned int) c);
|
||||
else
|
||||
snprintf (rform, sizeof(rform), "\\%.3o", (unsigned int) c);
|
||||
@@ -772,7 +568,7 @@ char *readable_form (c)
|
||||
return "' '";
|
||||
|
||||
else {
|
||||
rform[0] = c;
|
||||
rform[0] = (char) c;
|
||||
rform[1] = '\0';
|
||||
|
||||
return rform;
|
||||
@@ -782,168 +578,44 @@ char *readable_form (c)
|
||||
|
||||
/* reallocate_array - increase the size of a dynamic array */
|
||||
|
||||
void *reallocate_array (array, size, element_size)
|
||||
void *array;
|
||||
int size;
|
||||
size_t element_size;
|
||||
void *reallocate_array (void *array, int size, size_t element_size)
|
||||
{
|
||||
void *new_array;
|
||||
size_t num_bytes = element_size * size;
|
||||
|
||||
new_array = flex_realloc (array, num_bytes);
|
||||
#if HAVE_REALLOCARR
|
||||
new_array = array;
|
||||
if (reallocarr(&new_array, (size_t) size, element_size))
|
||||
flexfatal (_("attempt to increase array size failed"));
|
||||
#else
|
||||
# if HAVE_REALLOCARRAY
|
||||
new_array = reallocarray(array, (size_t) size, element_size);
|
||||
# else
|
||||
/* Do manual overflow detection */
|
||||
size_t num_bytes = (size_t) size * element_size;
|
||||
new_array = (size && SIZE_MAX / (size_t) size < element_size) ? NULL :
|
||||
realloc(array, num_bytes);
|
||||
# endif
|
||||
if (!new_array)
|
||||
flexfatal (_("attempt to increase array size failed"));
|
||||
|
||||
#endif
|
||||
return new_array;
|
||||
}
|
||||
|
||||
|
||||
/* skelout - write out one section of the skeleton file
|
||||
*
|
||||
* Description
|
||||
* Copies skelfile or skel array to stdout until a line beginning with
|
||||
* "%%" or EOF is found.
|
||||
*/
|
||||
void skelout ()
|
||||
{
|
||||
char buf_storage[MAXLINE];
|
||||
char *buf = buf_storage;
|
||||
bool do_copy = true;
|
||||
|
||||
/* "reset" the state by clearing the buffer and pushing a '1' */
|
||||
if(sko_len > 0)
|
||||
sko_peek(&do_copy);
|
||||
sko_len = 0;
|
||||
sko_push(do_copy=true);
|
||||
|
||||
|
||||
/* Loop pulling lines either from the skelfile, if we're using
|
||||
* one, or from the skel[] array.
|
||||
*/
|
||||
while (skelfile ?
|
||||
(fgets (buf, MAXLINE, skelfile) != NULL) :
|
||||
((buf = (char *) skel[skel_ind++]) != 0)) {
|
||||
|
||||
if (skelfile)
|
||||
chomp (buf);
|
||||
|
||||
/* copy from skel array */
|
||||
if (buf[0] == '%') { /* control line */
|
||||
/* print the control line as a comment. */
|
||||
if (ddebug && buf[1] != '#') {
|
||||
if (buf[strlen (buf) - 1] == '\\')
|
||||
out_str ("/* %s */\\\n", buf);
|
||||
else
|
||||
out_str ("/* %s */\n", buf);
|
||||
}
|
||||
|
||||
/* We've been accused of using cryptic markers in the skel.
|
||||
* So we'll use emacs-style-hyphenated-commands.
|
||||
* We might consider a hash if this if-else-if-else
|
||||
* chain gets too large.
|
||||
*/
|
||||
#define cmd_match(s) (strncmp(buf,(s),strlen(s))==0)
|
||||
|
||||
if (buf[1] == '%') {
|
||||
/* %% is a break point for skelout() */
|
||||
return;
|
||||
}
|
||||
else if (cmd_match (CMD_PUSH)){
|
||||
sko_push(do_copy);
|
||||
if(ddebug){
|
||||
out_str("/*(state = (%s) */",do_copy?"true":"false");
|
||||
}
|
||||
out_str("%s\n", buf[strlen (buf) - 1] =='\\' ? "\\" : "");
|
||||
}
|
||||
else if (cmd_match (CMD_POP)){
|
||||
sko_pop(&do_copy);
|
||||
if(ddebug){
|
||||
out_str("/*(state = (%s) */",do_copy?"true":"false");
|
||||
}
|
||||
out_str("%s\n", buf[strlen (buf) - 1] =='\\' ? "\\" : "");
|
||||
}
|
||||
else if (cmd_match (CMD_IF_REENTRANT)){
|
||||
sko_push(do_copy);
|
||||
do_copy = reentrant && do_copy;
|
||||
}
|
||||
else if (cmd_match (CMD_IF_NOT_REENTRANT)){
|
||||
sko_push(do_copy);
|
||||
do_copy = !reentrant && do_copy;
|
||||
}
|
||||
else if (cmd_match(CMD_IF_BISON_BRIDGE)){
|
||||
sko_push(do_copy);
|
||||
do_copy = bison_bridge_lval && do_copy;
|
||||
}
|
||||
else if (cmd_match(CMD_IF_NOT_BISON_BRIDGE)){
|
||||
sko_push(do_copy);
|
||||
do_copy = !bison_bridge_lval && do_copy;
|
||||
}
|
||||
else if (cmd_match (CMD_ENDIF)){
|
||||
sko_pop(&do_copy);
|
||||
}
|
||||
else if (cmd_match (CMD_IF_TABLES_SER)) {
|
||||
do_copy = do_copy && tablesext;
|
||||
}
|
||||
else if (cmd_match (CMD_TABLES_YYDMAP)) {
|
||||
if (tablesext && yydmap_buf.elts)
|
||||
outn ((char *) (yydmap_buf.elts));
|
||||
}
|
||||
else if (cmd_match (CMD_DEFINE_YYTABLES)) {
|
||||
out_str("#define YYTABLES_NAME \"%s\"\n",
|
||||
tablesname?tablesname:"yytables");
|
||||
}
|
||||
else if (cmd_match (CMD_IF_CPP_ONLY)) {
|
||||
/* only for C++ */
|
||||
sko_push(do_copy);
|
||||
do_copy = C_plus_plus;
|
||||
}
|
||||
else if (cmd_match (CMD_IF_C_ONLY)) {
|
||||
/* %- only for C */
|
||||
sko_push(do_copy);
|
||||
do_copy = !C_plus_plus;
|
||||
}
|
||||
else if (cmd_match (CMD_IF_C_OR_CPP)) {
|
||||
/* %* for C and C++ */
|
||||
sko_push(do_copy);
|
||||
do_copy = true;
|
||||
}
|
||||
else if (cmd_match (CMD_NOT_FOR_HEADER)) {
|
||||
/* %c begin linkage-only (non-header) code. */
|
||||
OUT_BEGIN_CODE ();
|
||||
}
|
||||
else if (cmd_match (CMD_OK_FOR_HEADER)) {
|
||||
/* %e end linkage-only code. */
|
||||
OUT_END_CODE ();
|
||||
}
|
||||
else if (buf[1] == '#') {
|
||||
/* %# a comment in the skel. ignore. */
|
||||
}
|
||||
else {
|
||||
flexfatal (_("bad line in skeleton file"));
|
||||
}
|
||||
}
|
||||
|
||||
else if (do_copy)
|
||||
outn (buf);
|
||||
} /* end while */
|
||||
}
|
||||
|
||||
|
||||
/* transition_struct_out - output a yy_trans_info structure
|
||||
*
|
||||
* outputs the yy_trans_info structure with the two elements, element_v and
|
||||
* element_n. Formats the output with spaces and carriage returns.
|
||||
*/
|
||||
|
||||
void transition_struct_out (element_v, element_n)
|
||||
int element_v, element_n;
|
||||
void transition_struct_out (int element_v, int element_n)
|
||||
{
|
||||
|
||||
/* short circuit any output */
|
||||
if (!gentables)
|
||||
return;
|
||||
|
||||
out_dec2 (" {%4d,%4d },", element_v, element_n);
|
||||
out_dec2 ("M4_HOOK_TABLE_OPENER[[%4d]],[[%4d]]M4_HOOK_TABLE_CONTINUE", element_v, element_n);
|
||||
outc ('\n');
|
||||
|
||||
datapos += TRANS_STRUCT_PRINT_LENGTH;
|
||||
|
||||
@@ -960,12 +632,14 @@ void transition_struct_out (element_v, element_n)
|
||||
|
||||
/* The following is only needed when building flex's parser using certain
|
||||
* broken versions of bison.
|
||||
*
|
||||
* XXX: this is should go soon
|
||||
*/
|
||||
void *yy_flex_xmalloc (size)
|
||||
int size;
|
||||
void *yy_flex_xmalloc (int size)
|
||||
{
|
||||
void *result = flex_alloc ((size_t) size);
|
||||
void *result;
|
||||
|
||||
result = malloc((size_t) size);
|
||||
if (!result)
|
||||
flexfatal (_
|
||||
("memory allocation failed in yy_flex_xmalloc()"));
|
||||
@@ -974,29 +648,10 @@ void *yy_flex_xmalloc (size)
|
||||
}
|
||||
|
||||
|
||||
/* zero_out - set a region of memory to 0
|
||||
*
|
||||
* Sets region_ptr[0] through region_ptr[size_in_bytes - 1] to zero.
|
||||
*/
|
||||
|
||||
void zero_out (region_ptr, size_in_bytes)
|
||||
char *region_ptr;
|
||||
size_t size_in_bytes;
|
||||
{
|
||||
char *rp, *rp_end;
|
||||
|
||||
rp = region_ptr;
|
||||
rp_end = region_ptr + size_in_bytes;
|
||||
|
||||
while (rp < rp_end)
|
||||
*rp++ = 0;
|
||||
}
|
||||
|
||||
/* Remove all '\n' and '\r' characters, if any, from the end of str.
|
||||
* str can be any null-terminated string, or NULL.
|
||||
* returns str. */
|
||||
char *chomp (str)
|
||||
char *str;
|
||||
char *chomp (char *str)
|
||||
{
|
||||
char *p = str;
|
||||
|
||||
@@ -1013,3 +668,20 @@ char *chomp (str)
|
||||
*p-- = 0;
|
||||
return str;
|
||||
}
|
||||
|
||||
void comment(const char *txt)
|
||||
{
|
||||
char buf[MAXLINE];
|
||||
bool eol;
|
||||
|
||||
strncpy(buf, txt, MAXLINE-1);
|
||||
eol = buf[strlen(buf)-1] == '\n';
|
||||
|
||||
if (eol)
|
||||
buf[strlen(buf)-1] = '\0';
|
||||
out_str("M4_HOOK_COMMENT_OPEN [[%s]] M4_HOOK_COMMENT_CLOSE", buf);
|
||||
if (eol)
|
||||
outc ('\n');
|
||||
}
|
||||
|
||||
|
||||
|
||||
+26
-14
@@ -21,17 +21,29 @@
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
# PURPOSE.
|
||||
|
||||
cat <<!
|
||||
/* File created from flex.skl via mkskel.sh */
|
||||
|
||||
#include "flexdef.h"
|
||||
|
||||
const char *skel[] = {
|
||||
!
|
||||
|
||||
sed 's/\\/&&/g' | sed 's/"/\\"/g' | sed 's/.*/ "&",/'
|
||||
|
||||
cat <<!
|
||||
0
|
||||
};
|
||||
!
|
||||
if test ! $# = 4; then
|
||||
echo 'Usage: mkskel.sh lang srcdir m4 version' >&2
|
||||
exit 1
|
||||
fi
|
||||
lang=$1
|
||||
srcdir=$2
|
||||
m4=$3
|
||||
VERSION=$4
|
||||
case $VERSION in
|
||||
*[!0-9.]*) echo 'Invalid version number' >&2; exit 1;;
|
||||
esac
|
||||
IFS=.
|
||||
# we do want word splitting, so we won't put double quotes around it (see IFS above)
|
||||
# shellcheck disable=2086
|
||||
set -- $VERSION
|
||||
sed 's/4_/a4_/g
|
||||
s/m4preproc_/m4_/g
|
||||
' "$srcdir/${lang}-flex.skl" |
|
||||
"$m4" -P -I "$srcdir" "-DFLEX_MAJOR_VERSION=$1" \
|
||||
"-DFLEX_MINOR_VERSION=$2" \
|
||||
"-DFLEX_SUBMINOR_VERSION=$3" |
|
||||
sed '/^%#/d
|
||||
s/m4_/m4preproc_/g
|
||||
s/a4_/4_/g
|
||||
s/[\\"]/\\&/g
|
||||
s/[^\r]*/ "&",/'
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
|
||||
/* declare functions that have forward references */
|
||||
|
||||
int dupmachine PROTO ((int));
|
||||
void mkxtion PROTO ((int, int));
|
||||
int dupmachine(int);
|
||||
void mkxtion(int, int);
|
||||
|
||||
|
||||
/* add_accept - add an accepting state to a machine
|
||||
@@ -45,8 +45,7 @@ void mkxtion PROTO ((int, int));
|
||||
* accepting_number becomes mach's accepting number.
|
||||
*/
|
||||
|
||||
void add_accept (mach, accepting_number)
|
||||
int mach, accepting_number;
|
||||
void add_accept (int mach, int accepting_number)
|
||||
{
|
||||
/* Hang the accepting number off an epsilon state. if it is associated
|
||||
* with a state that has a non-epsilon out-transition, then the state
|
||||
@@ -77,8 +76,7 @@ void add_accept (mach, accepting_number)
|
||||
* num - the number of copies of singl to be present in newsng
|
||||
*/
|
||||
|
||||
int copysingl (singl, num)
|
||||
int singl, num;
|
||||
int copysingl (int singl, int num)
|
||||
{
|
||||
int copy, i;
|
||||
|
||||
@@ -93,9 +91,7 @@ int copysingl (singl, num)
|
||||
|
||||
/* dumpnfa - debugging routine to write out an nfa */
|
||||
|
||||
void dumpnfa (state1)
|
||||
int state1;
|
||||
|
||||
void dumpnfa (int state1)
|
||||
{
|
||||
int sym, tsp1, tsp2, anum, ns;
|
||||
|
||||
@@ -148,8 +144,7 @@ void dumpnfa (state1)
|
||||
* states accessible by the arrays firstst and lastst
|
||||
*/
|
||||
|
||||
int dupmachine (mach)
|
||||
int mach;
|
||||
int dupmachine (int mach)
|
||||
{
|
||||
int i, init, state_offset;
|
||||
int state = 0;
|
||||
@@ -196,9 +191,8 @@ int dupmachine (mach)
|
||||
* context has variable length.
|
||||
*/
|
||||
|
||||
void finish_rule (mach, variable_trail_rule, headcnt, trailcnt,
|
||||
pcont_act)
|
||||
int mach, variable_trail_rule, headcnt, trailcnt, pcont_act;
|
||||
void finish_rule (int mach, int variable_trail_rule, int headcnt, int trailcnt,
|
||||
int pcont_act)
|
||||
{
|
||||
char action_text[MAXLINE];
|
||||
|
||||
@@ -222,10 +216,10 @@ void finish_rule (mach, variable_trail_rule, headcnt, trailcnt,
|
||||
if (pcont_act && rule_has_nl[num_rules - 1])
|
||||
rule_has_nl[num_rules] = true;
|
||||
|
||||
snprintf (action_text, sizeof(action_text), "case %d:\n", num_rules);
|
||||
snprintf (action_text, sizeof(action_text), "M4_HOOK_NORMAL_STATE_CASE_ARM(%d)\n", num_rules);
|
||||
add_action (action_text);
|
||||
if (rule_has_nl[num_rules]) {
|
||||
snprintf (action_text, sizeof(action_text), "/* rule %d can match eol */\n",
|
||||
snprintf (action_text, sizeof(action_text), "M4_HOOK_COMMENT_OPEN rule %d can match eol M4_HOOK_COMMENT_CLOSE\n",
|
||||
num_rules);
|
||||
add_action (action_text);
|
||||
}
|
||||
@@ -234,7 +228,7 @@ void finish_rule (mach, variable_trail_rule, headcnt, trailcnt,
|
||||
if (variable_trail_rule) {
|
||||
rule_type[num_rules] = RULE_VARIABLE;
|
||||
|
||||
if (performance_report > 0)
|
||||
if (env.performance_hint > 0)
|
||||
fprintf (stderr,
|
||||
_
|
||||
("Variable trailing context rule at line %d\n"),
|
||||
@@ -250,49 +244,46 @@ void finish_rule (mach, variable_trail_rule, headcnt, trailcnt,
|
||||
/* Do trailing context magic to not match the trailing
|
||||
* characters.
|
||||
*/
|
||||
char *scanner_cp = "YY_G(yy_c_buf_p) = yy_cp";
|
||||
char *scanner_bp = "yy_bp";
|
||||
|
||||
add_action
|
||||
("*yy_cp = YY_G(yy_hold_char); /* undo effects of setting up yytext */\n");
|
||||
add_action ("M4_HOOK_RELEASE_YYTEXT\n");
|
||||
|
||||
if (headcnt > 0) {
|
||||
if (rule_has_nl[num_rules]) {
|
||||
snprintf (action_text, sizeof(action_text),
|
||||
"YY_LINENO_REWIND_TO(%s + %d);\n", scanner_bp, headcnt);
|
||||
"M4_HOOK_LINE_FORWARD(%d)\n", headcnt);
|
||||
add_action (action_text);
|
||||
}
|
||||
snprintf (action_text, sizeof(action_text), "%s = %s + %d;\n",
|
||||
scanner_cp, scanner_bp, headcnt);
|
||||
snprintf (action_text, sizeof(action_text), "M4_HOOK_CHAR_FORWARD(%d)\n",
|
||||
headcnt);
|
||||
add_action (action_text);
|
||||
}
|
||||
|
||||
else {
|
||||
if (rule_has_nl[num_rules]) {
|
||||
snprintf (action_text, sizeof(action_text),
|
||||
"YY_LINENO_REWIND_TO(yy_cp - %d);\n", trailcnt);
|
||||
"M4_HOOK_LINE_REWIND(%d)\n", trailcnt);
|
||||
add_action (action_text);
|
||||
}
|
||||
|
||||
snprintf (action_text, sizeof(action_text), "%s -= %d;\n",
|
||||
scanner_cp, trailcnt);
|
||||
snprintf (action_text, sizeof(action_text), "M4_HOOK_CHAR_REWIND(%d)\n",
|
||||
trailcnt);
|
||||
add_action (action_text);
|
||||
}
|
||||
|
||||
add_action
|
||||
("YY_DO_BEFORE_ACTION; /* set up yytext again */\n");
|
||||
("M4_HOOK_TAKE_YYTEXT\n");
|
||||
}
|
||||
}
|
||||
|
||||
/* Okay, in the action code at this point yytext and yyleng have
|
||||
* their proper final values for this rule, so here's the point
|
||||
* to do any user action. But don't do it for continued actions,
|
||||
* as that'll result in multiple YY_RULE_SETUP's.
|
||||
* as that'll result in multiple rule-setup calls.
|
||||
*/
|
||||
if (!continued_action)
|
||||
add_action ("YY_RULE_SETUP\n");
|
||||
add_action ("M4_HOOK_SET_RULE_SETUP\n");
|
||||
|
||||
line_directive_out ((FILE *) 0, 1);
|
||||
line_directive_out(NULL, infilename, linenum);
|
||||
add_action("[[");
|
||||
}
|
||||
|
||||
|
||||
@@ -312,8 +303,7 @@ void finish_rule (mach, variable_trail_rule, headcnt, trailcnt,
|
||||
* FIRST is set to new by the operation. last is unmolested.
|
||||
*/
|
||||
|
||||
int link_machines (first, last)
|
||||
int first, last;
|
||||
int link_machines (int first, int last)
|
||||
{
|
||||
if (first == NIL)
|
||||
return last;
|
||||
@@ -339,8 +329,7 @@ int link_machines (first, last)
|
||||
* The "beginning" states are the epsilon closure of the first state
|
||||
*/
|
||||
|
||||
void mark_beginning_as_normal (mach)
|
||||
int mach;
|
||||
void mark_beginning_as_normal (int mach)
|
||||
{
|
||||
switch (state_type[mach]) {
|
||||
case STATE_NORMAL:
|
||||
@@ -381,8 +370,7 @@ void mark_beginning_as_normal (mach)
|
||||
* more mkbranch's. Compare with mkor()
|
||||
*/
|
||||
|
||||
int mkbranch (first, second)
|
||||
int first, second;
|
||||
int mkbranch (int first, int second)
|
||||
{
|
||||
int eps;
|
||||
|
||||
@@ -409,8 +397,7 @@ int mkbranch (first, second)
|
||||
* new - a new state which matches the closure of "state"
|
||||
*/
|
||||
|
||||
int mkclos (state)
|
||||
int state;
|
||||
int mkclos (int state)
|
||||
{
|
||||
return mkopt (mkposcl (state));
|
||||
}
|
||||
@@ -430,8 +417,7 @@ int mkclos (state)
|
||||
* 2. mach is destroyed by the call
|
||||
*/
|
||||
|
||||
int mkopt (mach)
|
||||
int mach;
|
||||
int mkopt (int mach)
|
||||
{
|
||||
int eps;
|
||||
|
||||
@@ -467,8 +453,7 @@ int mkopt (mach)
|
||||
* the number of epsilon states needed
|
||||
*/
|
||||
|
||||
int mkor (first, second)
|
||||
int first, second;
|
||||
int mkor (int first, int second)
|
||||
{
|
||||
int eps, orend;
|
||||
|
||||
@@ -510,6 +495,8 @@ int mkor (first, second)
|
||||
}
|
||||
}
|
||||
|
||||
firstst[first] = MIN(firstst[first], firstst[second]);
|
||||
|
||||
finalst[first] = orend;
|
||||
return first;
|
||||
}
|
||||
@@ -523,8 +510,7 @@ int mkor (first, second)
|
||||
* new - a machine matching the positive closure of "state"
|
||||
*/
|
||||
|
||||
int mkposcl (state)
|
||||
int state;
|
||||
int mkposcl (int state)
|
||||
{
|
||||
int eps;
|
||||
|
||||
@@ -553,8 +539,7 @@ int mkposcl (state)
|
||||
* if "ub" is INFINITE_REPEAT then "new" matches "lb" or more occurrences of "mach"
|
||||
*/
|
||||
|
||||
int mkrep (mach, lb, ub)
|
||||
int mach, lb, ub;
|
||||
int mkrep (int mach, int lb, int ub)
|
||||
{
|
||||
int base_mach, tail, copy, i;
|
||||
|
||||
@@ -600,8 +585,7 @@ int mkrep (mach, lb, ub)
|
||||
* that it admittedly is)
|
||||
*/
|
||||
|
||||
int mkstate (sym)
|
||||
int sym;
|
||||
int mkstate (int sym)
|
||||
{
|
||||
if (++lastnfa >= current_mns) {
|
||||
if ((current_mns += MNS_INCREMENT) >= maximum_mns)
|
||||
@@ -658,9 +642,9 @@ current_mns);
|
||||
else {
|
||||
check_char (sym);
|
||||
|
||||
if (useecs)
|
||||
if (ctrl.useecs)
|
||||
/* Map NUL's to csize. */
|
||||
mkechar (sym ? sym : csize, nextecm, ecgroup);
|
||||
mkechar (sym ? sym : ctrl.csize, nextecm, ecgroup);
|
||||
}
|
||||
|
||||
return lastnfa;
|
||||
@@ -677,8 +661,7 @@ current_mns);
|
||||
* stateto - the state to which the transition is to be made
|
||||
*/
|
||||
|
||||
void mkxtion (statefrom, stateto)
|
||||
int statefrom, stateto;
|
||||
void mkxtion (int statefrom, int stateto)
|
||||
{
|
||||
if (trans1[statefrom] == NO_TRANSITION)
|
||||
trans1[statefrom] = stateto;
|
||||
@@ -695,7 +678,7 @@ void mkxtion (statefrom, stateto)
|
||||
|
||||
/* new_rule - initialize for a new rule */
|
||||
|
||||
void new_rule ()
|
||||
void new_rule (void)
|
||||
{
|
||||
if (++num_rules >= current_max_rules) {
|
||||
++num_reallocs;
|
||||
|
||||
+25
-8
@@ -33,7 +33,7 @@
|
||||
|
||||
#include "options.h"
|
||||
|
||||
/* Be sure to synchronize these options with those defined in "options.h",
|
||||
/* Be sure to synchronize these options with those defined in "ctrl.h",
|
||||
* the giant switch() statement in "main.c", and the %option processing in
|
||||
* "scan.l".
|
||||
*/
|
||||
@@ -62,6 +62,8 @@ optspec_t flexopts[] = {
|
||||
,
|
||||
{"--backup", OPT_BACKUP, 0}
|
||||
, /* Generate backing-up information to lex.backup. */
|
||||
{"--backup-file=FILE", OPT_BACKUP_FILE, 0}
|
||||
, /* Generate backing-up information to FILE. */
|
||||
{"-B", OPT_BATCH, 0}
|
||||
,
|
||||
{"--batch", OPT_BATCH, 0}
|
||||
@@ -98,7 +100,11 @@ optspec_t flexopts[] = {
|
||||
{"-n", OPT_DONOTHING, 0}
|
||||
, /* For POSIX lex compatibility. */
|
||||
{"--ecs", OPT_ECS, 0}
|
||||
, /* Construct equivalence classes. */
|
||||
,
|
||||
{"--emit=LANG", OPT_EMIT, 0}
|
||||
, /* select language to emit */
|
||||
{"-e LANG", OPT_EMIT, 0}
|
||||
,
|
||||
{"--noecs", OPT_NO_ECS, 0}
|
||||
,
|
||||
{"-F", OPT_FAST, 0}
|
||||
@@ -213,10 +219,6 @@ optspec_t flexopts[] = {
|
||||
,
|
||||
{"--nowarn", OPT_NO_WARN, 0}
|
||||
, /* Suppress warning messages. */
|
||||
{"--noansi-definitions", OPT_NO_ANSI_FUNC_DEFS, 0}
|
||||
,
|
||||
{"--noansi-prototypes", OPT_NO_ANSI_FUNC_PROTOS, 0}
|
||||
,
|
||||
{"--yyclass=NAME", OPT_YYCLASS, 0}
|
||||
,
|
||||
{"--yylineno", OPT_YYLINENO, 0}
|
||||
@@ -233,7 +235,13 @@ optspec_t flexopts[] = {
|
||||
{"--yywrap", OPT_YYWRAP, 0}
|
||||
,
|
||||
|
||||
{"--nounput", OPT_NO_UNPUT, 0}
|
||||
{"--noinput", OPT_NO_YYINPUT, 0}
|
||||
,
|
||||
{"--noyyinput", OPT_NO_YYINPUT, 0}
|
||||
,
|
||||
{"--nounput", OPT_NO_YYUNPUT, 0}
|
||||
,
|
||||
{"--noyyunput", OPT_NO_YYUNPUT, 0}
|
||||
,
|
||||
{"--noyy_push_state", OPT_NO_YY_PUSH_STATE, 0}
|
||||
,
|
||||
@@ -259,6 +267,10 @@ optspec_t flexopts[] = {
|
||||
,
|
||||
{"--noyyset_lineno", OPT_NO_YYSET_LINENO, 0}
|
||||
,
|
||||
{"--noyyget_column", OPT_NO_YYGET_COLUMN, 0}
|
||||
,
|
||||
{"--noyyset_column", OPT_NO_YYSET_COLUMN, 0}
|
||||
,
|
||||
{"--noyyget_in", OPT_NO_YYGET_IN, 0}
|
||||
,
|
||||
{"--noyyset_in", OPT_NO_YYSET_IN, 0}
|
||||
@@ -275,7 +287,12 @@ optspec_t flexopts[] = {
|
||||
,
|
||||
{"--noyyset_lloc", OPT_NO_YYSET_LLOC, 0}
|
||||
,
|
||||
|
||||
{"--noyyget_debug", OPT_NO_YYGET_DEBUG, 0}
|
||||
,
|
||||
{"--noyyset_debug", OPT_NO_YYSET_DEBUG, 0}
|
||||
,
|
||||
{"--unsafe-no-m4-sect3-escape", OPT_NO_SECT3_ESCAPE, 0}
|
||||
,
|
||||
{0, 0, 0} /* required final NULL entry. */
|
||||
};
|
||||
|
||||
|
||||
+10
-4
@@ -46,6 +46,7 @@ enum flexopt_flag_t {
|
||||
OPT_ALWAYS_INTERACTIVE,
|
||||
OPT_ARRAY,
|
||||
OPT_BACKUP,
|
||||
OPT_BACKUP_FILE,
|
||||
OPT_BATCH,
|
||||
OPT_BISON_BRIDGE,
|
||||
OPT_BISON_BRIDGE_LOCATIONS,
|
||||
@@ -56,6 +57,7 @@ enum flexopt_flag_t {
|
||||
OPT_DEFAULT,
|
||||
OPT_DONOTHING,
|
||||
OPT_ECS,
|
||||
OPT_EMIT,
|
||||
OPT_FAST,
|
||||
OPT_FULL,
|
||||
OPT_HEADER_FILE,
|
||||
@@ -68,8 +70,6 @@ enum flexopt_flag_t {
|
||||
OPT_META_ECS,
|
||||
OPT_NEVER_INTERACTIVE,
|
||||
OPT_NO_ALIGN,
|
||||
OPT_NO_ANSI_FUNC_DEFS,
|
||||
OPT_NO_ANSI_FUNC_PROTOS,
|
||||
OPT_NO_DEBUG,
|
||||
OPT_NO_DEFAULT,
|
||||
OPT_NO_ECS,
|
||||
@@ -79,24 +79,29 @@ enum flexopt_flag_t {
|
||||
OPT_NO_REENTRANT,
|
||||
OPT_NO_REJECT,
|
||||
OPT_NO_STDINIT,
|
||||
OPT_NO_UNPUT,
|
||||
OPT_NO_YYINPUT,
|
||||
OPT_NO_YYUNPUT,
|
||||
OPT_NO_WARN,
|
||||
OPT_NO_YYGET_EXTRA,
|
||||
OPT_NO_YYGET_IN,
|
||||
OPT_NO_YYGET_LENG,
|
||||
OPT_NO_YYGET_LINENO,
|
||||
OPT_NO_YYGET_COLUMN,
|
||||
OPT_NO_YYGET_LLOC,
|
||||
OPT_NO_YYGET_LVAL,
|
||||
OPT_NO_YYGET_OUT,
|
||||
OPT_NO_YYGET_DEBUG,
|
||||
OPT_NO_YYGET_TEXT,
|
||||
OPT_NO_YYLINENO,
|
||||
OPT_NO_YYMORE,
|
||||
OPT_NO_YYSET_EXTRA,
|
||||
OPT_NO_YYSET_IN,
|
||||
OPT_NO_YYSET_LINENO,
|
||||
OPT_NO_YYSET_COLUMN,
|
||||
OPT_NO_YYSET_LLOC,
|
||||
OPT_NO_YYSET_LVAL,
|
||||
OPT_NO_YYSET_OUT,
|
||||
OPT_NO_YYSET_DEBUG,
|
||||
OPT_NO_YYWRAP,
|
||||
OPT_NO_YY_POP_STATE,
|
||||
OPT_NO_YY_PUSH_STATE,
|
||||
@@ -127,7 +132,8 @@ enum flexopt_flag_t {
|
||||
OPT_YYCLASS,
|
||||
OPT_YYLINENO,
|
||||
OPT_YYMORE,
|
||||
OPT_YYWRAP
|
||||
OPT_YYWRAP,
|
||||
OPT_NO_SECT3_ESCAPE,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
+80
-72
@@ -1,8 +1,9 @@
|
||||
/* parse.y - parser for flex input */
|
||||
|
||||
%token CHAR NUMBER SECTEND SCDECL XSCDECL NAME PREVCCL EOF_OP
|
||||
%token OPTION_OP OPT_OUTFILE OPT_PREFIX OPT_YYCLASS OPT_HEADER OPT_HEADER_CHAR
|
||||
%token OPT_EXTRA_TYPE OPT_TABLES OPT_CHARSET_SOURCE
|
||||
%token TOK_OPTION TOK_OUTFILE TOK_PREFIX TOK_YYCLASS TOK_HEADER_FILE TOK_EXTRA_TYPE
|
||||
%token TOK_TABLES_FILE TOK_YYLMAX TOK_NUMERIC TOK_YYDECL TOK_PREACTION TOK_POSTACTION
|
||||
%token TOK_USERINIT TOK_EMIT TOK_BUFSIZE TOK_YYTERMINATE
|
||||
|
||||
%token CCE_ALNUM CCE_ALPHA CCE_BLANK CCE_CNTRL CCE_DIGIT CCE_GRAPH
|
||||
%token CCE_LOWER CCE_PRINT CCE_PUNCT CCE_SPACE CCE_UPPER CCE_XDIGIT
|
||||
@@ -80,14 +81,14 @@ int previous_continued_action; /* whether the previous rule's action was '|' */
|
||||
do{ \
|
||||
char fw3_msg[MAXLINE];\
|
||||
snprintf( fw3_msg, MAXLINE,(fmt), (a1), (a2) );\
|
||||
warn( fw3_msg );\
|
||||
lwarn( fw3_msg );\
|
||||
}while(0)
|
||||
|
||||
/* Expand a POSIX character class expression. */
|
||||
#define CCL_EXPR(func) \
|
||||
do{ \
|
||||
int c; \
|
||||
for ( c = 0; c < csize; ++c ) \
|
||||
for ( c = 0; c < ctrl.csize; ++c ) \
|
||||
if ( isascii(c) && func(c) ) \
|
||||
ccladd( currccl, c ); \
|
||||
}while(0)
|
||||
@@ -96,7 +97,7 @@ int previous_continued_action; /* whether the previous rule's action was '|' */
|
||||
#define CCL_NEG_EXPR(func) \
|
||||
do{ \
|
||||
int c; \
|
||||
for ( c = 0; c < csize; ++c ) \
|
||||
for ( c = 0; c < ctrl.csize; ++c ) \
|
||||
if ( !func(c) ) \
|
||||
ccladd( currccl, c ); \
|
||||
}while(0)
|
||||
@@ -134,13 +135,16 @@ goal : initlex sect1 sect1end sect2 initforrule
|
||||
for ( i = 1; i <= lastsc; ++i )
|
||||
scset[i] = mkbranch( scset[i], def_rule );
|
||||
|
||||
if ( spprdflt )
|
||||
add_action(
|
||||
"YY_FATAL_ERROR( \"flex scanner jammed\" )" );
|
||||
else
|
||||
add_action( "ECHO" );
|
||||
add_action("]]");
|
||||
|
||||
add_action( ";\n\tYY_BREAK\n" );
|
||||
if ( ctrl.spprdflt )
|
||||
add_action(
|
||||
"M4_HOOK_FATAL_ERROR(\"flex scanner jammed\")");
|
||||
else {
|
||||
add_action("M4_HOOK_ECHO");
|
||||
}
|
||||
|
||||
add_action( "\n\tM4_HOOK_STATE_CASE_BREAK\n" );
|
||||
}
|
||||
;
|
||||
|
||||
@@ -184,32 +188,46 @@ namelist1 : namelist1 NAME
|
||||
{ synerr( _("bad start condition list") ); }
|
||||
;
|
||||
|
||||
options : OPTION_OP optionlist
|
||||
options : TOK_OPTION optionlist
|
||||
;
|
||||
|
||||
optionlist : optionlist option
|
||||
|
|
||||
;
|
||||
|
||||
option : OPT_OUTFILE '=' NAME
|
||||
option : TOK_OUTFILE '=' NAME
|
||||
{
|
||||
outfilename = copy_string( nmstr );
|
||||
did_outfilename = 1;
|
||||
env.outfilename = xstrdup(nmstr);
|
||||
env.did_outfilename = 1;
|
||||
}
|
||||
| OPT_EXTRA_TYPE '=' NAME
|
||||
{ extra_type = copy_string( nmstr ); }
|
||||
| OPT_PREFIX '=' NAME
|
||||
{ prefix = copy_string( nmstr ); }
|
||||
| OPT_YYCLASS '=' NAME
|
||||
{ yyclass = copy_string( nmstr ); }
|
||||
| OPT_HEADER '=' NAME
|
||||
{ headerfilename = copy_string( nmstr ); }
|
||||
| OPT_HEADER_CHAR '=' NAME
|
||||
{ headercharfilename = copy_string( nmstr ); }
|
||||
| OPT_TABLES '=' NAME
|
||||
{ tablesext = true; tablesfilename = copy_string( nmstr ); }
|
||||
| OPT_CHARSET_SOURCE '=' NAME
|
||||
{ charset_source = copy_string(nmstr); }
|
||||
| TOK_EXTRA_TYPE '=' NAME
|
||||
{ extra_type = xstrdup(nmstr); }
|
||||
| TOK_PREFIX '=' NAME
|
||||
{ ctrl.prefix = xstrdup(nmstr);
|
||||
if (strchr(ctrl.prefix, '[') || strchr(ctrl.prefix, ']'))
|
||||
flexerror(_("Prefix must not contain [ or ]")); }
|
||||
| TOK_YYCLASS '=' NAME
|
||||
{ ctrl.yyclass = xstrdup(nmstr); }
|
||||
| TOK_HEADER_FILE '=' NAME
|
||||
{ env.headerfilename = xstrdup(nmstr); }
|
||||
| TOK_YYLMAX '=' TOK_NUMERIC
|
||||
{ ctrl.yylmax = nmval; }
|
||||
| TOK_YYDECL '=' NAME
|
||||
{ ctrl.yydecl = xstrdup(nmstr); }
|
||||
| TOK_PREACTION '=' NAME
|
||||
{ ctrl.preaction = xstrdup(nmstr); }
|
||||
| TOK_POSTACTION '=' NAME
|
||||
{ ctrl.postaction = xstrdup(nmstr); }
|
||||
| TOK_BUFSIZE '=' TOK_NUMERIC
|
||||
{ ctrl.bufsize = nmval; }
|
||||
| TOK_EMIT '=' NAME
|
||||
{ ctrl.emit = xstrdup(nmstr); backend_by_name(ctrl.emit); }
|
||||
| TOK_USERINIT '=' NAME
|
||||
{ ctrl.userinit = xstrdup(nmstr); }
|
||||
| TOK_YYTERMINATE '=' NAME
|
||||
{ ctrl.yyterminate = xstrdup(nmstr); }
|
||||
| TOK_TABLES_FILE '=' NAME
|
||||
{ tablesext = true; tablesfilename = xstrdup(nmstr); }
|
||||
;
|
||||
|
||||
sect2 : sect2 scon initforrule flexrule '\n'
|
||||
@@ -262,7 +280,7 @@ flexrule : '^' rule
|
||||
{
|
||||
bol_needed = true;
|
||||
|
||||
if ( performance_report > 1 )
|
||||
if ( env.performance_hint > 1 )
|
||||
pinpoint_message(
|
||||
"'^' operator results in sub-optimal performance" );
|
||||
}
|
||||
@@ -307,7 +325,7 @@ flexrule : '^' rule
|
||||
scon_stk[++scon_stk_ptr] = i;
|
||||
|
||||
if ( scon_stk_ptr == 0 )
|
||||
warn(
|
||||
lwarn(
|
||||
"all start conditions already have <<EOF>> rules" );
|
||||
|
||||
else
|
||||
@@ -402,7 +420,7 @@ rule : re2 re
|
||||
* erroneously.
|
||||
*/
|
||||
if ( ! varlength || headcnt != 0 )
|
||||
warn(
|
||||
lwarn(
|
||||
"trailing context made variable due to preceding '|' action" );
|
||||
|
||||
/* Mark as variable. */
|
||||
@@ -411,7 +429,7 @@ rule : re2 re
|
||||
|
||||
}
|
||||
|
||||
if ( lex_compat || (varlength && headcnt == 0) )
|
||||
if ( ctrl.lex_compat || (varlength && headcnt == 0) )
|
||||
{ /* variable trailing context rule */
|
||||
/* Mark the first part of the rule as the
|
||||
* accepting "head" part of a trailing
|
||||
@@ -457,13 +475,13 @@ rule : re2 re
|
||||
/* See the comment in the rule for "re2 re"
|
||||
* above.
|
||||
*/
|
||||
warn(
|
||||
lwarn(
|
||||
"trailing context made variable due to preceding '|' action" );
|
||||
|
||||
varlength = true;
|
||||
}
|
||||
|
||||
if ( lex_compat || varlength )
|
||||
if ( ctrl.lex_compat || varlength )
|
||||
{
|
||||
/* Again, see the comment in the rule for
|
||||
* "re2 re" above.
|
||||
@@ -486,7 +504,7 @@ rule : re2 re
|
||||
|
||||
if ( trlcontxt )
|
||||
{
|
||||
if ( lex_compat || (varlength && headcnt == 0) )
|
||||
if ( ctrl.lex_compat || (varlength && headcnt == 0) )
|
||||
/* Both head and trail are
|
||||
* variable-length.
|
||||
*/
|
||||
@@ -700,19 +718,19 @@ singleton : singleton '*'
|
||||
ccladd( ccldot, '\n' );
|
||||
cclnegate( ccldot );
|
||||
|
||||
if ( useecs )
|
||||
if ( ctrl.useecs )
|
||||
mkeccl( ccltbl + cclmap[ccldot],
|
||||
ccllen[ccldot], nextecm,
|
||||
ecgroup, csize, csize );
|
||||
ecgroup, ctrl.csize, ctrl.csize );
|
||||
|
||||
/* Create the (?s:'.') character class. */
|
||||
cclany = cclinit();
|
||||
cclnegate( cclany );
|
||||
|
||||
if ( useecs )
|
||||
if ( ctrl.useecs )
|
||||
mkeccl( ccltbl + cclmap[cclany],
|
||||
ccllen[cclany], nextecm,
|
||||
ecgroup, csize, csize );
|
||||
ecgroup, ctrl.csize, ctrl.csize );
|
||||
|
||||
madeany = true;
|
||||
}
|
||||
@@ -729,11 +747,11 @@ singleton : singleton '*'
|
||||
{
|
||||
/* Sort characters for fast searching.
|
||||
*/
|
||||
qsort( ccltbl + cclmap[$1], ccllen[$1], sizeof (*ccltbl), cclcmp );
|
||||
qsort( ccltbl + cclmap[$1], (size_t) ccllen[$1], sizeof (*ccltbl), cclcmp );
|
||||
|
||||
if ( useecs )
|
||||
if ( ctrl.useecs )
|
||||
mkeccl( ccltbl + cclmap[$1], ccllen[$1],
|
||||
nextecm, ecgroup, csize, csize );
|
||||
nextecm, ecgroup, ctrl.csize, ctrl.csize);
|
||||
|
||||
++rulelen;
|
||||
|
||||
@@ -917,13 +935,13 @@ ccl_expr:
|
||||
| CCE_NEG_XDIGIT { CCL_NEG_EXPR(isxdigit); }
|
||||
| CCE_NEG_LOWER {
|
||||
if ( sf_case_ins() )
|
||||
warn(_("[:^lower:] is ambiguous in case insensitive scanner"));
|
||||
lwarn(_("[:^lower:] is ambiguous in case insensitive scanner"));
|
||||
else
|
||||
CCL_NEG_EXPR(islower);
|
||||
}
|
||||
| CCE_NEG_UPPER {
|
||||
if ( sf_case_ins() )
|
||||
warn(_("[:^upper:] ambiguous in case insensitive scanner"));
|
||||
lwarn(_("[:^upper:] ambiguous in case insensitive scanner"));
|
||||
else
|
||||
CCL_NEG_EXPR(isupper);
|
||||
}
|
||||
@@ -955,7 +973,7 @@ string : string CHAR
|
||||
* conditions
|
||||
*/
|
||||
|
||||
void build_eof_action()
|
||||
void build_eof_action(void)
|
||||
{
|
||||
int i;
|
||||
char action_text[MAXLINE];
|
||||
@@ -980,7 +998,8 @@ void build_eof_action()
|
||||
}
|
||||
}
|
||||
|
||||
line_directive_out( (FILE *) 0, 1 );
|
||||
line_directive_out(NULL, infilename, linenum);
|
||||
add_action("[[");
|
||||
|
||||
/* This isn't a normal rule after all - don't count it as
|
||||
* such, so we don't have any holes in the rule numbering
|
||||
@@ -994,8 +1013,7 @@ void build_eof_action()
|
||||
|
||||
/* format_synerr - write out formatted syntax error */
|
||||
|
||||
void format_synerr( msg, arg )
|
||||
const char *msg, arg[];
|
||||
void format_synerr( const char *msg, const char arg[] )
|
||||
{
|
||||
char errmsg[MAXLINE];
|
||||
|
||||
@@ -1006,8 +1024,7 @@ const char *msg, arg[];
|
||||
|
||||
/* synerr - report a syntax error */
|
||||
|
||||
void synerr( str )
|
||||
const char *str;
|
||||
void synerr( const char *str )
|
||||
{
|
||||
syntaxerror = true;
|
||||
pinpoint_message( str );
|
||||
@@ -1016,20 +1033,18 @@ const char *str;
|
||||
|
||||
/* format_warn - write out formatted warning */
|
||||
|
||||
void format_warn( msg, arg )
|
||||
const char *msg, arg[];
|
||||
void format_warn( const char *msg, const char arg[] )
|
||||
{
|
||||
char warn_msg[MAXLINE];
|
||||
|
||||
snprintf( warn_msg, sizeof(warn_msg), msg, arg );
|
||||
warn( warn_msg );
|
||||
lwarn( warn_msg );
|
||||
}
|
||||
|
||||
|
||||
/* warn - report a warning, unless -w was given */
|
||||
/* lwarn - report a warning, unless -w was given */
|
||||
|
||||
void warn( str )
|
||||
const char *str;
|
||||
void lwarn( const char *str )
|
||||
{
|
||||
line_warning( str, linenum );
|
||||
}
|
||||
@@ -1038,10 +1053,9 @@ const char *str;
|
||||
* pinpointing its location
|
||||
*/
|
||||
|
||||
void format_pinpoint_message( msg, arg )
|
||||
const char *msg, arg[];
|
||||
void format_pinpoint_message( const char *msg, const char arg[] )
|
||||
{
|
||||
char errmsg[MAXLINE];
|
||||
char errmsg[MAXLINE*2];
|
||||
|
||||
snprintf( errmsg, sizeof(errmsg), msg, arg );
|
||||
pinpoint_message( errmsg );
|
||||
@@ -1050,8 +1064,7 @@ const char *msg, arg[];
|
||||
|
||||
/* pinpoint_message - write out a message, pinpointing its location */
|
||||
|
||||
void pinpoint_message( str )
|
||||
const char *str;
|
||||
void pinpoint_message( const char *str )
|
||||
{
|
||||
line_pinpoint( str, linenum );
|
||||
}
|
||||
@@ -1059,13 +1072,11 @@ const char *str;
|
||||
|
||||
/* line_warning - report a warning at a given line, unless -w was given */
|
||||
|
||||
void line_warning( str, line )
|
||||
const char *str;
|
||||
int line;
|
||||
void line_warning( const char *str, int line )
|
||||
{
|
||||
char warning[MAXLINE];
|
||||
char warning[MAXLINE*2];
|
||||
|
||||
if ( ! nowarn )
|
||||
if ( ! env.nowarn )
|
||||
{
|
||||
snprintf( warning, sizeof(warning), "warning, %s", str );
|
||||
line_pinpoint( warning, line );
|
||||
@@ -1075,9 +1086,7 @@ int line;
|
||||
|
||||
/* line_pinpoint - write out a message, pinpointing it at the given line */
|
||||
|
||||
void line_pinpoint( str, line )
|
||||
const char *str;
|
||||
int line;
|
||||
void line_pinpoint( const char *str, int line )
|
||||
{
|
||||
fprintf( stderr, "%s:%d: %s\n", infilename, line, str );
|
||||
}
|
||||
@@ -1087,8 +1096,7 @@ int line;
|
||||
* currently, messages are ignore
|
||||
*/
|
||||
|
||||
void yyerror( msg )
|
||||
const char *msg;
|
||||
void yyerror( const char *msg )
|
||||
{
|
||||
(void)msg;
|
||||
}
|
||||
|
||||
+19
-28
@@ -24,22 +24,17 @@
|
||||
#include "flexdef.h"
|
||||
|
||||
|
||||
static const char* REGEXP_LINEDIR = "^#line ([[:digit:]]+) \"(.*)\"";
|
||||
static const char* REGEXP_BLANK_LINE = "^[[:space:]]*$";
|
||||
|
||||
regex_t regex_linedir; /**< matches line directives */
|
||||
regex_t regex_blank_line; /**< matches blank lines */
|
||||
|
||||
|
||||
/** Initialize the regular expressions.
|
||||
* @return true upon success.
|
||||
*/
|
||||
bool flex_init_regex(void)
|
||||
bool flex_init_regex(const char *traceline_re)
|
||||
{
|
||||
flex_regcomp(®ex_linedir, REGEXP_LINEDIR, REG_EXTENDED);
|
||||
flex_regcomp(®ex_blank_line, REGEXP_BLANK_LINE, REG_EXTENDED);
|
||||
|
||||
return true;
|
||||
if (traceline_re != NULL)
|
||||
flex_regcomp(®ex_linedir, traceline_re, REG_EXTENDED);
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Compiles a regular expression or dies trying.
|
||||
@@ -49,26 +44,22 @@ bool flex_init_regex(void)
|
||||
*/
|
||||
void flex_regcomp(regex_t *preg, const char *regex, int cflags)
|
||||
{
|
||||
int err;
|
||||
int err;
|
||||
|
||||
memset (preg, 0, sizeof (regex_t));
|
||||
|
||||
if ((err = regcomp (preg, regex, cflags)) != 0) {
|
||||
const int errbuf_sz = 200;
|
||||
char *errbuf, *rxerr;
|
||||
const size_t errbuf_sz = 200;
|
||||
char *errbuf;
|
||||
int n;
|
||||
|
||||
errbuf = (char*)flex_alloc(errbuf_sz *sizeof(char));
|
||||
errbuf = malloc(errbuf_sz * sizeof(char));
|
||||
if (!errbuf)
|
||||
flexfatal(_("Unable to allocate buffer to report regcomp"));
|
||||
rxerr = (char*)flex_alloc(errbuf_sz *sizeof(char));
|
||||
if (!rxerr)
|
||||
flexfatal(_("Unable to allocate buffer for regerror"));
|
||||
regerror (err, preg, rxerr, errbuf_sz);
|
||||
snprintf (errbuf, errbuf_sz, "regcomp for \"%s\" failed: %s", regex, rxerr);
|
||||
n = snprintf(errbuf, errbuf_sz, "regcomp for \"%s\" failed: ", regex);
|
||||
regerror(err, preg, errbuf+n, errbuf_sz-(size_t)n);
|
||||
|
||||
flexfatal (errbuf);
|
||||
free(errbuf);
|
||||
free(rxerr);
|
||||
flexfatal (errbuf); /* never returns - no need to free(errbuf) */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,12 +71,12 @@ void flex_regcomp(regex_t *preg, const char *regex, int cflags)
|
||||
char *regmatch_dup (regmatch_t * m, const char *src)
|
||||
{
|
||||
char *str;
|
||||
int len;
|
||||
size_t len;
|
||||
|
||||
if (m == NULL || m->rm_so < 0)
|
||||
if (m == NULL || m->rm_so < 0 || m->rm_eo < m->rm_so)
|
||||
return NULL;
|
||||
len = m->rm_eo - m->rm_so;
|
||||
str = (char *) flex_alloc ((len + 1) * sizeof (char));
|
||||
len = (size_t) (m->rm_eo - m->rm_so);
|
||||
str = malloc((len + 1) * sizeof(char));
|
||||
if (!str)
|
||||
flexfatal(_("Unable to allocate a copy of the match"));
|
||||
strncpy (str, src + m->rm_so, len);
|
||||
@@ -107,8 +98,8 @@ char *regmatch_cpy (regmatch_t * m, char *dest, const char *src)
|
||||
return dest;
|
||||
}
|
||||
|
||||
snprintf (dest, regmatch_len(m), "%s", src + m->rm_so);
|
||||
return dest;
|
||||
snprintf (dest, (size_t) regmatch_len(m), "%s", src + m->rm_so);
|
||||
return dest;
|
||||
}
|
||||
|
||||
/** Get the length in characters of the match.
|
||||
@@ -150,7 +141,7 @@ int regmatch_strtol (regmatch_t * m, const char *src, char **endptr,
|
||||
else
|
||||
s = regmatch_dup (m, src);
|
||||
|
||||
n = strtol (s, endptr, base);
|
||||
n = (int) strtol (s, endptr, base);
|
||||
|
||||
if (s != buf)
|
||||
free (s);
|
||||
|
||||
+373
-274
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user