mirror of
https://github.com/westes/flex.git
synced 2026-01-27 01:44:23 +00:00
Compare commits
637 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf254c75b1 | ||
|
|
8a59edae27 | ||
|
|
cff048484c | ||
|
|
1eb2280120 | ||
|
|
dff2e1b19f | ||
|
|
7b5b6690da | ||
|
|
051ab9ed8c | ||
|
|
c0c89c1265 | ||
|
|
25a5ade6cd | ||
|
|
a79d85283b | ||
|
|
6fc88bc133 | ||
|
|
d29a6c02d4 | ||
|
|
7191257ddc | ||
|
|
21eee2c2c1 | ||
|
|
91eb0d0d84 | ||
|
|
4cadf6d6e7 | ||
|
|
1cd24f8a47 | ||
|
|
396a2bfb37 | ||
|
|
9433e4f65f | ||
|
|
48371b32a9 | ||
|
|
719a1cafc6 | ||
|
|
546d905feb | ||
|
|
06f1ee7ee8 | ||
|
|
18fe45eaa4 | ||
|
|
ae83246128 | ||
|
|
203af5cfe5 | ||
|
|
c6114324f9 | ||
|
|
05909f20c5 | ||
|
|
ea5a7719ba | ||
|
|
74a132156c | ||
|
|
bbe2a15e2d | ||
|
|
787edd4183 | ||
|
|
2d08e2f469 | ||
|
|
3c70fb6932 | ||
|
|
1a7a3e0885 | ||
|
|
7e53fea7dc | ||
|
|
03b5af1572 | ||
|
|
1ac30394ec | ||
|
|
025095c847 | ||
|
|
3c97166fbd | ||
|
|
b7d76db200 | ||
|
|
dca87d9b1f | ||
|
|
cab0bbc85c | ||
|
|
f99d327117 | ||
|
|
e241be63dd | ||
|
|
3adb336992 | ||
|
|
1f27fff775 | ||
|
|
518108ed39 | ||
|
|
b012df90bb | ||
|
|
68eb57857f | ||
|
|
dae428c836 | ||
|
|
bf23944911 | ||
|
|
a4abd73431 | ||
|
|
80d756484c | ||
|
|
ccbd9f698b | ||
|
|
08ce73bb6f | ||
|
|
601cef4b28 | ||
|
|
26673bdce1 | ||
|
|
1a44eb990c | ||
|
|
d5770a0acd | ||
|
|
b577780992 | ||
|
|
5676be36e4 | ||
|
|
4f7f19e6bc | ||
|
|
2e5f4bc9d8 | ||
|
|
bab5ce6457 | ||
|
|
a8b07bac95 | ||
|
|
289796314f | ||
|
|
3726c1a88d | ||
|
|
b162ab50f4 | ||
|
|
19491a012a | ||
|
|
978faf231d | ||
|
|
ba1efdfa39 | ||
|
|
d009124da5 | ||
|
|
05f4e0c505 | ||
|
|
ba197cc47a | ||
|
|
363a534309 | ||
|
|
ff7ac43be2 | ||
|
|
52c3d81c24 | ||
|
|
221bee4fa7 | ||
|
|
3d2cc12a8b | ||
|
|
ba051d52d4 | ||
|
|
002cea24e6 | ||
|
|
c674b5faa3 | ||
|
|
d86f102dc1 | ||
|
|
61fd9e0403 | ||
|
|
9a8e61ce31 | ||
|
|
e09102edc4 | ||
|
|
cf9c659c54 | ||
|
|
1cd660e4d6 | ||
|
|
ec6bdb287e | ||
|
|
a997ad61b7 | ||
|
|
2285b0d5b8 | ||
|
|
5b5ec2420f | ||
|
|
e64e7e248f | ||
|
|
0874fccc85 | ||
|
|
65f8308496 | ||
|
|
7f062cf1ae | ||
|
|
f1eabccbef | ||
|
|
e4ccec1f49 | ||
|
|
fd91e0b78e | ||
|
|
7c053dac96 | ||
|
|
52eb5570b9 | ||
|
|
1a313b3fb8 | ||
|
|
1370faa58c | ||
|
|
a46776704b | ||
|
|
0591dc12ba | ||
|
|
97b8fa9c6f | ||
|
|
20bd1cd233 | ||
|
|
8453b08d82 | ||
|
|
9457969786 | ||
|
|
c47ca061c6 | ||
|
|
ee2d527aa0 | ||
|
|
7efebe2a17 | ||
|
|
63665f4c72 | ||
|
|
f7ea805ae1 | ||
|
|
c27726d60b | ||
|
|
3cb02c7555 | ||
|
|
fe90aa6ebe | ||
|
|
f2567970b0 | ||
|
|
2c0b6c791b | ||
|
|
6db99ccd7a | ||
|
|
ac962cd512 | ||
|
|
d7d1c54362 | ||
|
|
c2fae24fa3 | ||
|
|
541645a888 | ||
|
|
a97872a311 | ||
|
|
1b38ae28e7 | ||
|
|
a3022d064a | ||
|
|
d30bdf45a8 | ||
|
|
4a4bac0b29 | ||
|
|
2bb3bfd64f | ||
|
|
b822e533e1 | ||
|
|
3aedd28670 | ||
|
|
3352d7f1c9 | ||
|
|
a57e165cc5 | ||
|
|
74e8c880fc | ||
|
|
f1c2570502 | ||
|
|
bf59176220 | ||
|
|
e34253f1ca | ||
|
|
9e69eff334 | ||
|
|
cf66c9e5f1 | ||
|
|
06adbc6f0f | ||
|
|
ac1dc0d757 | ||
|
|
b746b2c3f6 | ||
|
|
3a24fa0366 | ||
|
|
4ec57cf108 | ||
|
|
853c232b7e | ||
|
|
13a2f02b80 | ||
|
|
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 | ||
|
|
0954f389d3 | ||
|
|
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 |
15
.github/dependabot.yml
vendored
Normal file
15
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
groups:
|
||||
github-actions:
|
||||
patterns:
|
||||
- "*"
|
||||
31
.github/workflows/build.yml
vendored
Normal file
31
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
name: Build and Test
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
tags-ignore:
|
||||
- 'v*'
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
- name: apt
|
||||
run: sudo apt-get update && sudo apt-get install -y gcc autoconf automake libtool gettext autopoint bison 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
|
||||
83
.github/workflows/codeql-analysis.yml
vendored
Normal file
83
.github/workflows/codeql-analysis.yml
vendored
Normal file
@ -0,0 +1,83 @@
|
||||
# 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:
|
||||
branches: [ "master" ]
|
||||
schedule:
|
||||
- cron: '39 5 * * 5'
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze (${{ matrix.language }})
|
||||
# Runner size impacts CodeQL analysis time. To learn more, please see:
|
||||
# - https://gh.io/recommended-hardware-resources-for-running-codeql
|
||||
# - https://gh.io/supported-runners-and-hardware-resources
|
||||
# - https://gh.io/using-larger-runners (GitHub.com only)
|
||||
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
|
||||
runs-on: ubuntu-22.04
|
||||
timeout-minutes: 240
|
||||
permissions:
|
||||
# required for all workflows
|
||||
security-events: write
|
||||
|
||||
# required to fetch internal or private CodeQL packs
|
||||
packages: read
|
||||
|
||||
# only required for workflows in private repositories
|
||||
actions: read
|
||||
contents: read
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- language: c-cpp
|
||||
build-mode: autobuild
|
||||
# CodeQL supports the following values keywords for 'language': 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift'
|
||||
# Use `c-cpp` to analyze code written in C, C++ or both
|
||||
# Use 'java-kotlin' to analyze code written in Java, Kotlin or both
|
||||
# Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
|
||||
# To learn more about changing the languages that are analyzed or customizing the build mode for your analysis,
|
||||
# see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning.
|
||||
# If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how
|
||||
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
# Ensure autopoint is installed. CodeQL misses it sometimes.
|
||||
- name: apt
|
||||
run: sudo apt-get update && sudo apt-get install -y gcc autoconf automake libtool gettext autopoint bison help2man lzip texinfo texlive
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
build-mode: ${{ matrix.build-mode }}
|
||||
# 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.
|
||||
|
||||
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
||||
# queries: security-extended,security-and-quality
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
||||
90
.github/workflows/nightly.yml
vendored
Normal file
90
.github/workflows/nightly.yml
vendored
Normal file
@ -0,0 +1,90 @@
|
||||
name: Nightly
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '04 00 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
nightly:
|
||||
name: Run a Nightly Build and Save the Artifacts
|
||||
runs-on: ubuntu-22.04
|
||||
outputs:
|
||||
update_needed: ${{ steps.update.outputs.needed }}
|
||||
version_slug: ${{ steps.update.outputs.slug }}
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
permissions:
|
||||
actions: read
|
||||
contents: write
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
- name: Check time since last commit
|
||||
id: update
|
||||
run: |
|
||||
slug=$(git log -n 1 --pretty='format:%h-%as')
|
||||
echo "slug=$slug" >> $GITHUB_OUTPUT
|
||||
authorDate=$(echo $slug | cut -d '-' -f 2-4)
|
||||
update=1
|
||||
[ $(( $(date +%s) - $(date --date=$authorDate +%s) )) -ge 172800 ] && echo "::notice title=No Changes::No changes within the last two days. Skipping nightly build." && update=0
|
||||
echo "needed=$update" >> $GITHUB_OUTPUT
|
||||
- name: Change version number
|
||||
id: version
|
||||
env:
|
||||
slug: ${{ steps.update.outputs.slug }}
|
||||
update_needed: ${{ steps.update.outputs.needed }}
|
||||
if: ${{ env.update_needed == 1 }}
|
||||
run: |
|
||||
ver=$(sed -n "s/^\(AC_INIT.*generator\],\)\[\(.*\)\]\(,\[flex-help.*\)$/\2/p" $GITHUB_WORKSPACE/configure.ac)
|
||||
ver=${ver#v}
|
||||
ver=${ver%-*}
|
||||
ver=$ver-$slug
|
||||
echo "version=$ver" >> $GITHUB_OUTPUT
|
||||
sed -i "s/^\(AC_INIT.*generator\],\)\(.*\)\(,\[flex-help.*\)$/\1[$ver]\3/" $GITHUB_WORKSPACE/configure.ac
|
||||
- name: apt
|
||||
env:
|
||||
update_needed: ${{ steps.update.outputs.needed }}
|
||||
if: ${{ env.update_needed == 1 }}
|
||||
run: sudo apt-get update && sudo apt-get install -y gcc autoconf automake libtool gettext autopoint bison help2man lzip texinfo texlive
|
||||
- name: Update CHANGE_LOG
|
||||
env:
|
||||
update_needed: ${{ steps.update.outputs.needed }}
|
||||
if: ${{ env.update_needed == 1 }}
|
||||
run: |
|
||||
./tools/git2cl > $GITHUB_WORKSPACE/ChangeLog
|
||||
- name: build
|
||||
env:
|
||||
update_needed: ${{ steps.update.outputs.needed }}
|
||||
if: ${{ env.update_needed == 1 }}
|
||||
run: |
|
||||
./autogen.sh
|
||||
./configure
|
||||
make
|
||||
make distcheck
|
||||
- name: Make Git archives
|
||||
env:
|
||||
ver: ${{ steps.version.outputs.version }}
|
||||
update_needed: ${{ steps.update.outputs.needed }}
|
||||
if: ${{ env.update_needed == 1 }}
|
||||
run: |
|
||||
git archive -o $ver.src.tar.gz --prefix=flex-$ver/ HEAD
|
||||
TZ=America/Los_Angeles git archive -o $ver.src.zip --prefix=flex-$ver/ HEAD
|
||||
echo "SOURCE_GZ=$(echo $ver.src.tar.gz)" >> $GITHUB_ENV
|
||||
echo "SOURCE_ZIP=$(echo $ver.src.zip)" >> $GITHUB_ENV
|
||||
- name: Get artifact names
|
||||
env:
|
||||
ver: ${{ steps.version.outputs.version }}
|
||||
update_needed: ${{ steps.update.outputs.needed }}
|
||||
if: ${{ env.update_needed == 1 }}
|
||||
run: |
|
||||
echo "ARTIFACT_GZ=$(echo flex-$ver.tar.gz)" >> $GITHUB_ENV
|
||||
echo "ARTIFACT_LZ=$(echo flex-$ver.tar.lz)" >> $GITHUB_ENV
|
||||
- name: Upload Artifacts to Nightlies Release
|
||||
id: upload-nightly-artifacts
|
||||
env:
|
||||
update_needed: ${{ steps.update.outputs.needed }}
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
if: ${{ env.update_needed == 1 }}
|
||||
run: |
|
||||
gh release upload nightlies ${{ env.ARTIFACT_GZ }} ${{ env.ARTIFACT_LZ }} ${{ env.SOURCE_GZ }} ${{ env.SOURCE_ZIP }} --clobber
|
||||
7
.gitignore
vendored
7
.gitignore
vendored
@ -1,6 +1,6 @@
|
||||
*.orig
|
||||
*.rej
|
||||
*.tar.bz2
|
||||
*.sig
|
||||
*.tar.gz
|
||||
*.tar.lz
|
||||
*~
|
||||
@ -8,18 +8,17 @@
|
||||
.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-*
|
||||
|
||||
50
.mailmap
Normal file
50
.mailmap
Normal file
@ -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>
|
||||
1
.prev-version
Normal file
1
.prev-version
Normal file
@ -0,0 +1 @@
|
||||
2.6.4
|
||||
199
CONTRIBUTING.md
Normal file
199
CONTRIBUTING.md
Normal file
@ -0,0 +1,199 @@
|
||||
# CONTRIBUTING to Flex
|
||||
|
||||
## Introduction
|
||||
|
||||
Thank you for your interest in contributing to Flex! Flex's [issue
|
||||
tracker](https://github.com/westes/flex/issues) is on GitHub. That's
|
||||
the best place to find a task that needs attention. It's also the best
|
||||
place to check whether a problem you've found is known to the
|
||||
community.
|
||||
|
||||
## Baseline Build Environment
|
||||
|
||||
The maintenance baseline build environment is Ubuntu 20.04 LTS.
|
||||
|
||||
Flex needs a previous version of itself in order to build a new
|
||||
version of itself. You can either install an operating system package
|
||||
of flex, or you can build flex from one of the release tar balls.
|
||||
|
||||
Configuring your Flex development environment to match the maintenance
|
||||
baseline will help you collaborate and review contributions with the
|
||||
other developers working on Flex. See the
|
||||
[INSTALL](https://github.com/westes/flex/blob/master/INSTALL.md) for
|
||||
programs required to build flex from scratch.
|
||||
|
||||
## Branching Convention
|
||||
|
||||
Flex source code is maintained in Git at GitHub. Each Flex developer
|
||||
forks their own copy of the main repository at
|
||||
[westes/flex](https://github.com/westes/flex). Flex development occurs
|
||||
in feature branches of the forks. PRs will eventually be submitted
|
||||
from the feature branches of the forks to westes/flex.
|
||||
|
||||
Flex development forks are not required to reside on GitHub. However:
|
||||
- GitHub's pull request (PR) process only works with repositories
|
||||
hosted on GitHub;
|
||||
- Flex's automated testing pipeline depends on GitHub's Actions
|
||||
infrastructure and may not function on other Git servers.
|
||||
|
||||
Therefore, if your fork of flex resides outside of github, you may
|
||||
wish to submit your patches via email, using standard git mechanisms.
|
||||
|
||||
## Preparing Your Commits
|
||||
|
||||
Small PRs are easier to review and merge. Minimize the scope of the
|
||||
changes in a single PR within reason. Changes that touch one or two
|
||||
files are likely to be reviewed and accepted more quickly than changes
|
||||
that touch every file in Flex. Your pull request should do one atomic
|
||||
thing unless there is a really good reason for your pull request to do
|
||||
more than one thing.
|
||||
|
||||
Format your commit messages following [Conventional Commits
|
||||
1.0.0](https://www.conventionalcommits.org/en/v1.0.0/) (CC BY 3.0
|
||||
netlify.com). Briefly:
|
||||
|
||||
```
|
||||
<type>[(optional scope)][!]: <description>
|
||||
[BLANK LINE]
|
||||
[optional body]
|
||||
[BLANK LINE]
|
||||
[optional footer(s)]
|
||||
```
|
||||
|
||||
A typical commit message might look like:
|
||||
|
||||
```
|
||||
docs: Add CONTRIBUTING manual
|
||||
|
||||
Refs: #1234
|
||||
```
|
||||
|
||||
The description should summarize the changes in a single, short
|
||||
sentence. The description should be written in the imperative mood,
|
||||
like the descriptions of the types below.
|
||||
|
||||
The primary types are:
|
||||
- build: Change the build system, including tracking external dependencies
|
||||
- ci: Change the CI/CD system
|
||||
- docs: Update the package documentation
|
||||
- feat: Add a new feature
|
||||
- fix: Fix a bug or incorrect behavior
|
||||
- perf: Improve performance of a feature
|
||||
- refactor: Simplify maintainability without affecting performance or behavior
|
||||
- revert: Revert a previous commit
|
||||
- style: Correct a style mismatch (indentation, etc.)
|
||||
- test: Change or add to the test suite
|
||||
|
||||
The optional scope must appear in parentheses and must consist of a
|
||||
noun describing the section of the code base that was changed.
|
||||
|
||||
```
|
||||
docs(contrib): Update URLs in CONTRIBUTING manual
|
||||
```
|
||||
|
||||
The optional `!` must appear before the description whenever the
|
||||
commit introduces a breaking change - one that breaks compatibility
|
||||
with previous versions of the code base. Whenever the `!` marker
|
||||
appears, a BREAKING-CHANGE footer should also be included.
|
||||
|
||||
The optional body may be included to provid additional information
|
||||
or context about the change. If it appears, it must be preceded by a
|
||||
blank line.
|
||||
|
||||
The optional footers may be included to provide additional referential
|
||||
information and links to tracked issues, PRs, etc. Each footer must be
|
||||
preceded by a blank line. Footers must be formatted as `<footer-type>:
|
||||
<description>`, similar to the first line of commit messages. The
|
||||
description's format depends upon the footer-type. Known footer-types
|
||||
include:
|
||||
- Refs: A comma-separated list of commit hashes and/or issue and PR numbers. Issue and PR numbers must be prefixed with a `#`.
|
||||
- BREAKING-CHANGE: A description of the change that breaks compatibility with previous versions of the code, including the version number at which compatibility is broken.
|
||||
|
||||
A breaking change commit message might look like:
|
||||
|
||||
```
|
||||
feat!: Switch to quantum scanner
|
||||
|
||||
BREAKING-CHANGE: New scanner runs in constant time but doesn't support any existing hardware.
|
||||
Breaks compatibility with 1.0.0.
|
||||
```
|
||||
|
||||
Squash your commits so that each commit is an atomic change. This aids
|
||||
discussion and revision during the review process. In particular,
|
||||
there should be no commits that fixup prior commits.
|
||||
|
||||
## Submitting PRs
|
||||
|
||||
Before submitting a PR to flex, test your changes either locally or
|
||||
using the GitHub Actions pipeline.
|
||||
|
||||
### Testing locally
|
||||
|
||||
1. Commit and/or stash your changes.
|
||||
1. Clean your working copy using
|
||||
|
||||
```
|
||||
git clean -xdf
|
||||
```
|
||||
|
||||
1. Build flex following the directions in [INSTALL](https://www.github.com/westes/flex/blob/master/INSTALL.md).
|
||||
1. Run both the `make check` and `make distcheck` targets.
|
||||
|
||||
### Testing with GitHub Actions
|
||||
|
||||
If you created a fork of Flex on GitHub, any PR you make to your own
|
||||
main branch will trigger the build and test pipeline.
|
||||
|
||||
1. Commit your changes.
|
||||
1. Push your local branch to your remote at GitHub. Assuming your GitHub remote is called origin:
|
||||
|
||||
```
|
||||
git push origin feature_branch
|
||||
```
|
||||
|
||||
To submit a pull request through GitHub's web interface:
|
||||
|
||||
1. Open your GitHub Flex repository in your web browser.
|
||||
1. Click the 'Pull requests' link.
|
||||
1. Click the 'New pull request' button.
|
||||
1. Change the 'base repository' from 'westes/flex' to your fork.
|
||||
1. Change the 'base' branch to 'master' if it isn't already set.
|
||||
1. Change the 'compare' branch to your feature branch.
|
||||
1. Click the 'Create pull request' button.
|
||||
1. Click the 'Actions' link to monitor the progress of your build and test job.
|
||||
|
||||
### Submitting PRs to westes/flex
|
||||
|
||||
Sending a PR to westes/flex follows nearly the same process as sending one to your own main branch.
|
||||
|
||||
1. Commit your changes.
|
||||
1. Push your local branch to your remote at GitHub. Assuming your GitHub remote is called origin:
|
||||
|
||||
```
|
||||
git push origin feature_branch
|
||||
```
|
||||
|
||||
To use GitHub's web interface:
|
||||
|
||||
1. Open your GitHub Flex repository in your web browser.
|
||||
1. Click the 'Pull requests' link.
|
||||
1. Click the 'New pull request' button.
|
||||
1. Change the 'base repository' to 'westes/flex'.
|
||||
1. Change the 'base' branch to 'master' if it isn't already set.
|
||||
1. Change the 'compare' branch to your feature branch.
|
||||
1. Click the 'Create pull request' button.
|
||||
1. Add notes to your PR including
|
||||
- A title or commit-like message
|
||||
- A summary of the commits in your pull request
|
||||
- Issue numbers your PR covers
|
||||
- Links to your GitHub Actions test results or a copy of the last few lines of output from your local test results.
|
||||
|
||||
If this is your first contribution to Flex, execution of the Actions
|
||||
pipeline will have to be manually approved by the maintainer. If you
|
||||
are a returning contributor, you can click the Actions link to watch
|
||||
your job run.
|
||||
|
||||
Keep an eye on your PR's discussion page and your email for review
|
||||
notes and questions from other developers.
|
||||
|
||||
Thanks for contributing!
|
||||
110
INSTALL.md
Normal file
110
INSTALL.md
Normal file
@ -0,0 +1,110 @@
|
||||
# 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
|
||||
archive. 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:
|
||||
|
||||
```bash
|
||||
$ ./configure <any configure options you need>
|
||||
$ make
|
||||
```
|
||||
|
||||
To see what options are available from the configure script:
|
||||
|
||||
```bash
|
||||
$ ./configure --help
|
||||
```
|
||||
|
||||
Optionally run the test suite:
|
||||
|
||||
```bash
|
||||
$ make check
|
||||
```
|
||||
|
||||
To install the flex you just built:
|
||||
|
||||
```bash
|
||||
$ 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. Using a
|
||||
version of flex built from the flex codebase is always acceptable if
|
||||
you have already bootstrapped doing so.
|
||||
|
||||
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
|
||||
* libtool; often packaged with automake, but not always
|
||||
* make; for running the generated Makefiles
|
||||
* 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
|
||||
* GNU sed; GNU extensions are used so other sed versions will not work
|
||||
|
||||
In cases where the versions of the above tools matter, the file
|
||||
configure.ac will specify the minimum required versions.
|
||||
|
||||
Then:
|
||||
|
||||
```bash
|
||||
$ ./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.
|
||||
|
||||
If you have trouble building flex from git sources on non-Debian systems,
|
||||
(e.g. MacOS) make sure that any required GNU tools have been added to
|
||||
your PATH before your system defaults. Also check that required GNU tools
|
||||
are aliased to their typical names - some package systems prefix them with
|
||||
"gnu-" which make them hard for configure to find.
|
||||
41
Makefile.am
41
Makefile.am
@ -29,7 +29,6 @@
|
||||
# to DEFS.
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
indent = @INDENT@
|
||||
|
||||
dist_doc_DATA = \
|
||||
AUTHORS \
|
||||
@ -40,10 +39,14 @@ dist_doc_DATA = \
|
||||
|
||||
EXTRA_DIST = \
|
||||
.indent.pro \
|
||||
autogen.sh
|
||||
INSTALL.md \
|
||||
CONTRIBUTING.md
|
||||
|
||||
dist_noinst_SCRIPTS = \
|
||||
autogen.sh \
|
||||
po/update_linguas.sh
|
||||
|
||||
SUBDIRS = \
|
||||
lib \
|
||||
src \
|
||||
doc \
|
||||
examples \
|
||||
@ -51,6 +54,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
|
||||
@ -58,8 +84,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
|
||||
|
||||
134
NEWS
134
NEWS
@ -1,9 +1,119 @@
|
||||
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.3 released 2016-12-30
|
||||
** 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, eo, ka, 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 concerned about the
|
||||
details of building and linking the test programs themselves.
|
||||
|
||||
* Noteworthy changes in release 2.6.3 (2016-12-30) [stable]
|
||||
|
||||
** scanner
|
||||
|
||||
@ -48,7 +158,7 @@ See the file COPYING for copying conditions.
|
||||
|
||||
** flex internals
|
||||
|
||||
*** a segfalt involving yyrestart(NULL) has been fixed
|
||||
*** a segfault involving yyrestart(NULL) has been fixed
|
||||
|
||||
*** flex should now handle quoting when mixed with m4 processing correctly
|
||||
|
||||
@ -135,7 +245,7 @@ See the file COPYING for copying conditions.
|
||||
|
||||
*** Removed deprecated 'register' storage class specifier
|
||||
|
||||
*** Changeed output formats from octal to hexadecimal
|
||||
*** Changed output formats from octal to hexadecimal
|
||||
|
||||
*** check limits before using array index cclp; resolves sf-166
|
||||
|
||||
@ -292,7 +402,7 @@ distribution
|
||||
* version 2.5.31 released 2003-4-1
|
||||
|
||||
** remove --enable-maintainer-mode configure option; none of the
|
||||
Makefiles were using it and it can be unduely confusing
|
||||
Makefiles were using it and it can be unduly confusing
|
||||
|
||||
* version 2.5.30 released 2003-4-1
|
||||
|
||||
@ -341,7 +451,7 @@ distribution
|
||||
|
||||
** new es translation from the translation project
|
||||
|
||||
** slight tweeks to the flex_int*_t types
|
||||
** slight tweaks to the flex_int*_t types
|
||||
|
||||
** flex now warns about pattern ranges that might be ambiguous when
|
||||
generating a case-insensitive scanner
|
||||
@ -495,7 +605,7 @@ formatting the manual in postscript and pdf in the distributed
|
||||
|
||||
** the test suite now respects the usual CFLAGS, etc. variables
|
||||
|
||||
** removed some warnings which some tests trigggered with the -s option
|
||||
** removed some warnings which some tests triggered with the -s option
|
||||
|
||||
** the flex-generated header file now tries to be smarter about
|
||||
conditionally including start conditions
|
||||
@ -631,7 +741,7 @@ options, see accompanying documentation
|
||||
|
||||
*** Updated the manual with the new reentrant API
|
||||
|
||||
*** Two new options %option reentrant (-R) and
|
||||
*** Two new options %option reentrant (-R) and
|
||||
%option reentrant-bison (-Rb)
|
||||
|
||||
*** All globals optionally placed into struct yyglobals_t
|
||||
@ -661,7 +771,7 @@ But the inverse is still true
|
||||
|
||||
** Developer test suite added
|
||||
|
||||
*** TESTS/ directory has been added. Users can
|
||||
*** TESTS/ directory has been added. Users can
|
||||
'make test' in the TESTS directory to execute the test suite
|
||||
|
||||
** Support for bison variables yylval and yylloc added
|
||||
@ -682,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
|
||||
|
||||
4
ONEWS
4
ONEWS
@ -929,7 +929,7 @@ Changes between 2.3 Patch #2 (02Aug90) and original 2.3 release:
|
||||
Reordered #ifdef maze in the scanner skeleton in the hope of
|
||||
getting the declarations right for cfront and g++, too.
|
||||
|
||||
- Note that this patch supercedes patch #1 for release 2.3,
|
||||
- Note that this patch supersedes patch #1 for release 2.3,
|
||||
which was never announced but was available briefly for
|
||||
anonymous ftp.
|
||||
|
||||
@ -987,7 +987,7 @@ Things which didn't used to be documented but now are:
|
||||
- yy_switch_to_buffer() can be used in the yywrap() macro/routine.
|
||||
|
||||
- flex scanners do not use stdio for their input, and hence when
|
||||
writing an interactive scanner one must explictly call fflush()
|
||||
writing an interactive scanner one must explicitly call fflush()
|
||||
after writing out a prompt.
|
||||
|
||||
- flex scanner can be made reentrant (after a fashion) by using
|
||||
|
||||
62
README.md
62
README.md
@ -1,10 +1,13 @@
|
||||
[](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)
|
||||
[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
|
||||
@ -19,66 +22,27 @@ There are several mailing lists available as well:
|
||||
* 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
|
||||
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.
|
||||
* README.md - This file.
|
||||
* NEWS - current version number and list of user-visible changes.
|
||||
* INSTALL - basic installation information.
|
||||
* INSTALL.md - 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
|
||||
few other things. See the file examples/README for more
|
||||
details.
|
||||
* tests/ - regression tests. See TESTS/README for details.
|
||||
* 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; 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.
|
||||
|
||||
Once you have all the necessary tools installed, life becomes
|
||||
simple. To prepare the flex tree for building, run the script:
|
||||
|
||||
```bash
|
||||
./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 routine:
|
||||
|
||||
```bash
|
||||
configure && make && make install
|
||||
```
|
||||
---
|
||||
|
||||
This file is part of flex.
|
||||
|
||||
|
||||
9
TODO
Normal file
9
TODO
Normal file
@ -0,0 +1,9 @@
|
||||
Things to be worked on:
|
||||
|
||||
* Tests for %option user-init, %option pre-action, %option post-action.
|
||||
|
||||
* integrate examples directory into tests so that normal testing
|
||||
proves the examples are up to date.
|
||||
|
||||
* Do away with any need for -lfl by generating a default yywrap
|
||||
if the user doesn't specify one.
|
||||
25
autogen.sh
25
autogen.sh
@ -22,12 +22,31 @@
|
||||
# PURPOSE.
|
||||
|
||||
# If you see no configure script, then run ./autogen.sh to create it
|
||||
# and procede with the "normal" build procedures.
|
||||
# and proceed 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
|
||||
libtoolize --install --force || glibtoolize --install --force
|
||||
if ! test -f ChangeLog; then
|
||||
touch ChangeLog
|
||||
fi
|
||||
$LIBTOOLIZE --install --force
|
||||
autoreconf --install --force
|
||||
|
||||
124
configure.ac
124
configure.ac
@ -24,12 +24,23 @@
|
||||
|
||||
# autoconf requirements and initialization
|
||||
|
||||
AC_INIT([the fast lexical analyser generator],[2.6.3],[flex-help@lists.sourceforge.net],[flex])
|
||||
dnl We recommend builders to regenerate configure and auxiliary scripts with
|
||||
dnl exact versions of tools that generate flex release tarball, or latest
|
||||
dnl versions of tools for flex development. The minimum feature and version
|
||||
dnl requirements are provided for information only (no guarantee that the tools
|
||||
dnl will work and we may bump requirements with future code changes).
|
||||
dnl Uses AC_PATH_PROGS_FEATURE_CHECK. Requires autoconf-2.62 as minimum.
|
||||
AC_PREREQ([2.62])
|
||||
AC_INIT([the fast lexical analyser generator],[2.6.4],[flex-help@lists.sourceforge.net],[flex])
|
||||
AC_CONFIG_SRCDIR([src/scan.l])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
dnl "LT_*" macros and "libtoolize --install" require libtool-2.2 as minimum.
|
||||
LT_PREREQ([2.2])
|
||||
LT_INIT
|
||||
AM_INIT_AUTOMAKE([-Wno-portability foreign check-news std-options dist-lzip parallel-tests subdir-objects 1.14.1])
|
||||
AC_CONFIG_HEADER([src/config.h])
|
||||
dnl Uses dist-lzip. Requires automake-1.11.3 as minimum.
|
||||
AM_INIT_AUTOMAKE([1.11.3 -Wno-portability foreign std-options dist-lzip parallel-tests subdir-objects])
|
||||
AC_CONFIG_HEADERS([src/config.h])
|
||||
AC_CONFIG_LIBOBJ_DIR([lib])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
SHARED_VERSION_INFO="2:0:0"
|
||||
@ -38,16 +49,50 @@ AC_SUBST(SHARED_VERSION_INFO)
|
||||
# checks for programs
|
||||
|
||||
AM_GNU_GETTEXT([external])
|
||||
AM_GNU_GETTEXT_VERSION([0.19])
|
||||
dnl Try to pull in latest gettext infrastructure ("po" and "m4") files.
|
||||
dnl Unfortunately autoreconf as of 2.69 doesn't recognize
|
||||
dnl AM[_]GNU[_]GETTEXT_REQUIRE_VERSION so we provide AM[_]GNU[_]GETTEXT_VERSION
|
||||
dnl as fallback. (autopoint will ignore latter if former is specified.)
|
||||
dnl
|
||||
dnl Bugs in gettext before 0.14 prevent building flex with it.
|
||||
dnl FLEX_GNU_GETTEXT_REAL_REQUIRE_VERSION=0.14
|
||||
AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.6])
|
||||
AM_GNU_GETTEXT_VERSION([0.19.6])
|
||||
AC_PROG_YACC
|
||||
AC_MSG_CHECKING(whether $YACC is GNU Bison)
|
||||
AS_IF([test -n "$YACC" && $YACC --version 2>&1 | $GREP "GNU Bison" >/dev/null],
|
||||
[AC_MSG_RESULT(yes)
|
||||
use_gnu_bison=1],
|
||||
[AC_MSG_RESULT(no)
|
||||
AC_MSG_WARN($YACC does not appear to be GNU Bison; required for maintainers)
|
||||
use_gnu_bison=0
|
||||
YACC="\${top_srcdir}/build-aux/missing bison"
|
||||
])
|
||||
AM_CONDITIONAL([HAVE_BISON], [test $use_gnu_bison -eq 1])
|
||||
dnl AC_PROG_LEX requires an argument in autoconf 2.70, but we cannot
|
||||
dnl specify it through AM_PROG_LEX until automake 1.17.
|
||||
AC_PROG_LEX([noyywrap])
|
||||
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
|
||||
|
||||
AS_IF([test "x${BUILD_OBJEXT-}" = x],
|
||||
[AS_IF([test "$cross_compiling" = no],
|
||||
[BUILD_EXEEXT="$EXEEXT"
|
||||
BUILD_OBJEXT="$OBJEXT"],
|
||||
[BUILD_EXEEXT="${ac_cv_build_exeext-}"
|
||||
BUILD_OBJEXT="${ac_cv_build_objext-}"])])
|
||||
AS_IF([test "x${BUILD_OBJEXT-}" = x && test "x${enable_bootstrap-yes}" = xyes],
|
||||
[AC_MSG_ERROR([BUILD_OBJEXT is invalid; please regenerate 'configure' with a newer ax_prog_cc_for_build.m4 (serial 23 or later) or configure with '--disable-bootstrap'])])
|
||||
|
||||
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
|
||||
@ -75,11 +120,7 @@ AC_ARG_ENABLE([bootstrap],
|
||||
[], [enable_bootstrap=yes])
|
||||
AM_CONDITIONAL([ENABLE_BOOTSTRAP], [test "x$enable_bootstrap" = xyes])
|
||||
|
||||
AC_PATH_PROG([BISON], bison, no)
|
||||
AS_IF([test "$BISON" != no],[],
|
||||
[ AC_SUBST([BISON], [\${top_srcdir}/build-aux/missing bison])
|
||||
AC_MSG_NOTICE(no bison program found: only required for maintainers)
|
||||
])
|
||||
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"],
|
||||
@ -102,23 +143,23 @@ 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)
|
||||
AS_IF([test -n "$INDENT"], [
|
||||
AC_MSG_CHECKING(whether $INDENT is GNU indent)
|
||||
AS_IF([$INDENT --version 2>/dev/null | $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)
|
||||
INDENT="\${top_srcdir}/build-aux/missing indent"
|
||||
])
|
||||
])
|
||||
|
||||
# checks for headers
|
||||
|
||||
AC_CHECK_HEADERS([inttypes.h libintl.h limits.h locale.h malloc.h netinet/in.h regex.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
|
||||
|
||||
@ -126,12 +167,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)
|
||||
|
||||
@ -154,16 +195,23 @@ AC_FUNC_REALLOC
|
||||
AS_IF([test "$cross_compiling" = yes],
|
||||
AC_MSG_WARN([result $ac_cv_func_realloc_0_nonnull guessed because of cross compilation]))
|
||||
|
||||
AC_CHECK_FUNCS(dup2 dnl
|
||||
memset dnl
|
||||
pow dnl
|
||||
regcomp dnl
|
||||
setlocale dnl
|
||||
strchr dnl
|
||||
strdup dnl
|
||||
strtol)
|
||||
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_REPLACE_FUNCS(reallocarray)
|
||||
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_CHECK_DECLS(__func__)
|
||||
|
||||
AS_IF([test "$cross_compiling" = yes],
|
||||
[AC_CONFIG_FILES([src/config_for_build.h])])
|
||||
|
||||
AC_CONFIG_FILES(
|
||||
Makefile
|
||||
@ -171,8 +219,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
|
||||
|
||||
3
doc/.gitignore
vendored
3
doc/.gitignore
vendored
@ -25,3 +25,6 @@ flex.ps
|
||||
version.texi
|
||||
flex.html
|
||||
flex.t2p
|
||||
|
||||
flex
|
||||
flex.exe
|
||||
|
||||
67
doc/Makefile.am
Normal file → Executable file
67
doc/Makefile.am
Normal file → Executable file
@ -1,32 +1,51 @@
|
||||
help2man = @HELP2MAN@
|
||||
|
||||
if CROSS
|
||||
FLEX = $(top_builddir)/src/stage1flex
|
||||
else
|
||||
FLEX = $(top_builddir)/src/flex$(EXEEXT)
|
||||
endif
|
||||
|
||||
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
|
||||
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
|
||||
*.aux \
|
||||
*.cp \
|
||||
*.cps \
|
||||
*.fn \
|
||||
*.fns \
|
||||
*.hk \
|
||||
*.hks \
|
||||
*.ky \
|
||||
*.log \
|
||||
*.op \
|
||||
*.ops\
|
||||
*.pg \
|
||||
*.toc \
|
||||
*.tp \
|
||||
*.tps \
|
||||
*.vr \
|
||||
*.vrs \
|
||||
flex
|
||||
|
||||
flex.1: $(top_srcdir)/configure.ac $(top_srcdir)/src/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 $@
|
||||
# Use a fixed program name, without extension (such as ".exe"), for man
|
||||
# page generation. 'help2man' strips directory prefix ("./") from the
|
||||
# usage string, but not file extensions.
|
||||
|
||||
flex.1: $(top_srcdir)/configure.ac $(top_srcdir)/src/cpp-flex.skl $(top_srcdir)/src/options.c $(top_srcdir)/src/options.h
|
||||
( cd $(top_builddir)/src && \
|
||||
prog_name=`echo '$(FLEX)' | sed 's|^$(top_builddir)/src/||'` && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) $$prog_name \
|
||||
)
|
||||
$(INSTALL) -m 700 $(FLEX) flex$(EXEEXT)
|
||||
$(HELP2MAN) \
|
||||
--name='$(PACKAGE_NAME)' \
|
||||
--section=1 \
|
||||
--source='The Flex Project' \
|
||||
--manual='Programming' \
|
||||
--output=$@ \
|
||||
./flex
|
||||
|
||||
2599
doc/flex.texi
Normal file → Executable file
2599
doc/flex.texi
Normal file → Executable file
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,7 @@ This directory contains some examples of what you can do with
|
||||
flex. These files are not tested regularly so you might have to tinker
|
||||
a bit before they work for you. Updates, new files and patches are welcome.
|
||||
|
||||
- debflex.awk, an awk script for anotating flex debug output.
|
||||
- debflex.awk, an awk script for annotating flex debug output.
|
||||
It presently only works with gawk and mawk, not with "old"
|
||||
or "new" awk.
|
||||
|
||||
|
||||
@ -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 add an example to this directory, don't forget these steps:
|
||||
|
||||
* Add it to the EXTRA_DIST list in Makefile.am
|
||||
|
||||
* Add a build recipe to Makefile/examples.
|
||||
|
||||
@ -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;
|
||||
|
||||
35
examples/manual/example_er.lex
Normal file
35
examples/manual/example_er.lex
Normal file
@ -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 );
|
||||
}
|
||||
16
examples/manual/example_nr.lex
Normal file
16
examples/manual/example_nr.lex
Normal file
@ -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 );
|
||||
}
|
||||
21
examples/manual/example_r.lex
Normal file
21
examples/manual/example_r.lex
Normal file
@ -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); }
|
||||
|
||||
|
||||
@ -149,7 +149,7 @@ void write_block_header(char *type)
|
||||
*/
|
||||
^[^\n:]+\n[*]+\n write_block_header(CHAPTER);
|
||||
|
||||
^"= "[A-Z]" ="\n"="* { /* we create a seciton for each category */
|
||||
^"= "[A-Z]" ="\n"="* { /* we create a section for each category */
|
||||
if(need_closing == TRUE){
|
||||
printf("@end table\n\n\n");
|
||||
}
|
||||
@ -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,16 +205,16 @@ 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]);
|
||||
}
|
||||
|
||||
/*
|
||||
* repoduce @enumerate lists
|
||||
* reproduce @enumerate lists
|
||||
*/
|
||||
|
||||
":"\n+[ \t]*[0-9]+"." {
|
||||
@ -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);
|
||||
}
|
||||
%%
|
||||
|
||||
1
lib/.gitignore
vendored
1
lib/.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
*.la
|
||||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
# Files in the lib/ subdirectory are picked up as needed by the flex
|
||||
# build system. As such, we don't need to specify anything beyond
|
||||
# having a Makefile.am for automake to generate a Makefile.in from.
|
||||
@ -3,7 +3,7 @@
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
void *malloc ();
|
||||
void *malloc (size_t n);
|
||||
|
||||
/* Allocate an N-byte block of memory from the heap.
|
||||
If N is zero, allocate a 1-byte block. */
|
||||
|
||||
@ -1,49 +0,0 @@
|
||||
/* $OpenBSD: reallocarray.c,v 1.2 2014/12/08 03:45:00 bcook Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008 Otto Moerbeek <otto@drijf.net>
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* OPENBSD ORIGINAL: lib/libc/stdlib/reallocarray.c */
|
||||
|
||||
#include <config.h>
|
||||
#ifndef HAVE_REALLOCARRAY
|
||||
#undef reallocarray
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
#ifdef HAVE_STDINT_H
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
#include <stdlib.h>
|
||||
|
||||
void *reallocarray(void *, size_t, size_t);
|
||||
|
||||
/*
|
||||
* This is sqrt(SIZE_MAX+1), as s1*s2 <= SIZE_MAX
|
||||
* if both s1 < MUL_NO_OVERFLOW and s2 < MUL_NO_OVERFLOW
|
||||
*/
|
||||
#define MUL_NO_OVERFLOW ((size_t)1 << (sizeof(size_t) * 4))
|
||||
|
||||
void *
|
||||
reallocarray(void *optr, size_t nmemb, size_t size)
|
||||
{
|
||||
if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) &&
|
||||
nmemb > 0 && SIZE_MAX / nmemb < size) {
|
||||
errno = ENOMEM;
|
||||
return NULL;
|
||||
}
|
||||
return realloc(optr, size * nmemb);
|
||||
}
|
||||
#endif /* HAVE_REALLOCARRAY */
|
||||
175
m4/ax_prog_cc_for_build.m4
Normal file
175
m4/ax_prog_cc_for_build.m4
Normal file
@ -0,0 +1,175 @@
|
||||
# ===========================================================================
|
||||
# https://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 26
|
||||
|
||||
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_CANONICAL_BUILD])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_c89], ac_cv_build_prog_cc_c89)dnl
|
||||
pushdef([ac_cv_prog_cc_c99], ac_cv_build_prog_cc_c99)dnl
|
||||
pushdef([ac_cv_prog_cc_c11], ac_cv_build_prog_cc_c11)dnl
|
||||
pushdef([ac_cv_prog_cc_c23], ac_cv_build_prog_cc_c23)dnl
|
||||
pushdef([ac_cv_prog_cc_stdc], ac_cv_build_prog_cc_stdc)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_prog_cc_stdc], ac_build_prog_cc_stdc)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([GCC], GCC_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_tool_prefix], ac_build_tool_prefix)dnl
|
||||
pushdef([am_cv_CC_dependencies_compiler_type], am_cv_build_CC_dependencies_compiler_type)dnl
|
||||
pushdef([am_cv_prog_cc_c_o], am_cv_build_prog_cc_c_o)dnl
|
||||
pushdef([cross_compiling], cross_compiling_build)dnl
|
||||
dnl
|
||||
dnl These variables are problematic to rename by M4 macros, so we save
|
||||
dnl their values in alternative names, and restore the values later.
|
||||
dnl
|
||||
dnl _AC_COMPILER_EXEEXT and _AC_COMPILER_OBJEXT internally call
|
||||
dnl AC_SUBST which prevents the renaming of EXEEXT and OBJEXT
|
||||
dnl variables. It's not a good idea to rename ac_cv_exeext and
|
||||
dnl ac_cv_objext either as they're related.
|
||||
dnl Renaming ac_exeext and ac_objext is safe though.
|
||||
dnl
|
||||
ac_cv_host_exeext=$ac_cv_exeext
|
||||
AS_VAR_SET_IF([ac_cv_build_exeext],
|
||||
[ac_cv_exeext=$ac_cv_build_exeext],
|
||||
[AS_UNSET([ac_cv_exeext])])
|
||||
ac_cv_host_objext=$ac_cv_objext
|
||||
AS_VAR_SET_IF([ac_cv_build_objext],
|
||||
[ac_cv_objext=$ac_cv_build_objext],
|
||||
[AS_UNSET([ac_cv_objext])])
|
||||
dnl
|
||||
dnl ac_cv_c_compiler_gnu is used in _AC_LANG_COMPILER_GNU (called by
|
||||
dnl AC_PROG_CC) indirectly.
|
||||
dnl
|
||||
ac_cv_host_c_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
AS_VAR_SET_IF([ac_cv_build_c_compiler_gnu],
|
||||
[ac_cv_c_compiler_gnu=$ac_cv_build_c_compiler_gnu],
|
||||
[AS_UNSET([ac_cv_c_compiler_gnu])])
|
||||
|
||||
cross_compiling_build=no
|
||||
|
||||
ac_build_tool_prefix=
|
||||
AS_IF([test -n "$build"], [ac_build_tool_prefix="$build-"],
|
||||
[test -n "$build_alias"],[ac_build_tool_prefix="$build_alias-"])
|
||||
|
||||
AC_LANG_PUSH([C])
|
||||
AC_PROG_CC
|
||||
_AC_COMPILER_EXEEXT
|
||||
_AC_COMPILER_OBJEXT
|
||||
AC_PROG_CPP
|
||||
|
||||
BUILD_EXEEXT=$ac_cv_exeext
|
||||
BUILD_OBJEXT=$ac_cv_objext
|
||||
|
||||
dnl Restore the old definitions
|
||||
dnl
|
||||
popdef([cross_compiling])dnl
|
||||
popdef([am_cv_prog_cc_c_o])dnl
|
||||
popdef([am_cv_CC_dependencies_compiler_type])dnl
|
||||
popdef([ac_tool_prefix])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([GCC])dnl
|
||||
popdef([CPP])dnl
|
||||
popdef([CC])dnl
|
||||
popdef([ac_objext])dnl
|
||||
popdef([ac_exeext])dnl
|
||||
popdef([ac_prog_cc_stdc])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_cc_stdc])dnl
|
||||
popdef([ac_cv_prog_cc_c23])dnl
|
||||
popdef([ac_cv_prog_cc_c11])dnl
|
||||
popdef([ac_cv_prog_cc_c99])dnl
|
||||
popdef([ac_cv_prog_cc_c89])dnl
|
||||
popdef([ac_cv_prog_gcc])dnl
|
||||
popdef([ac_cv_prog_CPP])dnl
|
||||
dnl
|
||||
ac_cv_exeext=$ac_cv_host_exeext
|
||||
EXEEXT=$ac_cv_host_exeext
|
||||
ac_cv_objext=$ac_cv_host_objext
|
||||
OBJEXT=$ac_cv_host_objext
|
||||
ac_cv_c_compiler_gnu=$ac_cv_host_c_compiler_gnu
|
||||
ac_compiler_gnu=$ac_cv_host_c_compiler_gnu
|
||||
|
||||
dnl restore global variables ac_ext, ac_cpp, ac_compile,
|
||||
dnl ac_link, ac_compiler_gnu (dependent on the current
|
||||
dnl language after popping):
|
||||
AC_LANG_POP([C])
|
||||
|
||||
dnl Finally, set Makefile variables
|
||||
dnl
|
||||
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
|
||||
])
|
||||
25
po/LINGUAS
25
po/LINGUAS
@ -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
|
||||
|
||||
39
po/Makevars
39
po/Makevars
@ -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
|
||||
|
||||
@ -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
|
||||
972
po/bg.po
Normal file
972
po/bg.po
Normal file
@ -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 "неправилен ред в скелетен файл"
|
||||
876
po/ka.po
Normal file
876
po/ka.po
Normal file
@ -0,0 +1,876 @@
|
||||
# Georgian translation for flex.
|
||||
# Copyright (C) 2022 The Flex Project (msgids)
|
||||
# This file is distributed under the same license as the flex package.
|
||||
# Temuri Doghonadze <temuri.doghonadze@gmail.com>, 2022.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: flex 2.6.4\n"
|
||||
"Report-Msgid-Bugs-To: flex-devel@lists.sourceforge.net\n"
|
||||
"POT-Creation-Date: 2017-05-06 10:49-0400\n"
|
||||
"PO-Revision-Date: 2022-12-24 07:51+0100\n"
|
||||
"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
|
||||
"Language-Team: Georgian <(nothing)>\n"
|
||||
"Language: ka\n"
|
||||
"X-Bugs: Report translation errors to the Language-Team address.\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 3.2.2\n"
|
||||
|
||||
#: src/buf.c:79
|
||||
msgid "Allocation of buffer to print string failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/buf.c:107
|
||||
msgid "Allocation of buffer for line directive failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/buf.c:177
|
||||
msgid "Allocation of buffer for m4 def failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/buf.c:198
|
||||
msgid "Allocation of buffer for m4 undef failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/dfa.c:59
|
||||
#, c-format
|
||||
msgid "State #%d is non-accepting -\n"
|
||||
msgstr ""
|
||||
|
||||
#: 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 ""
|
||||
|
||||
#: src/dfa.c:419
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"DFA Dump:\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"DFA-ის დამპი:\n"
|
||||
"\n"
|
||||
|
||||
#: src/dfa.c:587
|
||||
msgid "could not create unique end-of-buffer state"
|
||||
msgstr ""
|
||||
|
||||
#: src/dfa.c:608
|
||||
#, c-format
|
||||
msgid "state # %d:\n"
|
||||
msgstr "მდგომარეობა # %d:\n"
|
||||
|
||||
#: src/dfa.c:768
|
||||
msgid "Could not write yynxt_tbl[][]"
|
||||
msgstr ""
|
||||
|
||||
#: src/dfa.c:1028
|
||||
msgid "bad transition character detected in sympartition()"
|
||||
msgstr ""
|
||||
|
||||
#: src/gen.c:480
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Equivalence Classes:\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"ეკვივალენტობის კლასები:\n"
|
||||
"\n"
|
||||
|
||||
#: src/gen.c:669 src/gen.c:698 src/gen.c:1218
|
||||
#, c-format
|
||||
msgid "state # %d accepts: [%d]\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/gen.c:1115
|
||||
#, c-format
|
||||
msgid "state # %d accepts: "
|
||||
msgstr ""
|
||||
|
||||
#: src/gen.c:1162
|
||||
msgid "Could not write yyacclist_tbl"
|
||||
msgstr "ჩაწერის შეცდომა: yyacclist_tbl"
|
||||
|
||||
#: src/gen.c:1236
|
||||
msgid "Could not write yyacc_tbl"
|
||||
msgstr "ჩაწერის შეცდომა: yyacc_tbl"
|
||||
|
||||
#: src/gen.c:1251 src/gen.c:1623 src/gen.c:1646
|
||||
msgid "Could not write ecstbl"
|
||||
msgstr "ჩაწერის შეცდომა: ecstbl"
|
||||
|
||||
#: src/gen.c:1271
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Meta-Equivalence Classes:\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"მეტა-ექვივალენტობის კლასები:\n"
|
||||
|
||||
#: src/gen.c:1293
|
||||
msgid "Could not write yymeta_tbl"
|
||||
msgstr "ჩაწერის შეცდომა: yymeta_tbl"
|
||||
|
||||
#: src/gen.c:1352
|
||||
msgid "Could not write yybase_tbl"
|
||||
msgstr "ჩაწერის შეცდომა: yybase_tbl"
|
||||
|
||||
#: src/gen.c:1384
|
||||
msgid "Could not write yydef_tbl"
|
||||
msgstr "ჩაწერის შეცდომა: yydef_tbl"
|
||||
|
||||
#: src/gen.c:1422
|
||||
msgid "Could not write yynxt_tbl"
|
||||
msgstr "ჩაწერის შეცდომა: yynxt_tbl"
|
||||
|
||||
#: src/gen.c:1456
|
||||
msgid "Could not write yychk_tbl"
|
||||
msgstr "ჩაწერის შეცდომა: yychk_tbl"
|
||||
|
||||
#: src/gen.c:1608 src/gen.c:1637
|
||||
msgid "Could not write ftbl"
|
||||
msgstr "ჩაწერის შეცდომა: ftbl"
|
||||
|
||||
#: src/gen.c:1614
|
||||
msgid "Could not write ssltbl"
|
||||
msgstr "ჩაწერის შეცდომა: ssltbl"
|
||||
|
||||
#: src/gen.c:1665
|
||||
msgid "Could not write eoltbl"
|
||||
msgstr "ჩაწერის შეცდომა: eoltbl"
|
||||
|
||||
#: src/gen.c:1722
|
||||
msgid "Could not write yynultrans_tbl"
|
||||
msgstr "ჩაწერის შეცდომა: yynultrans_tbl"
|
||||
|
||||
#: src/main.c:178
|
||||
msgid "rule cannot be matched"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:183
|
||||
msgid "-s option given but default rule can be matched"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:221
|
||||
msgid "Can't use -+ with -l option"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:224
|
||||
msgid "Can't use -f or -F with -l option"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:228
|
||||
msgid "Can't use --reentrant or --bison-bridge with -l option"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:260
|
||||
msgid "-Cf/-CF and -Cm don't make sense together"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:263
|
||||
msgid "-Cf/-CF and -I are incompatible"
|
||||
msgstr "-Cf /-CF და - მე შეუთავსებელია"
|
||||
|
||||
#: src/main.c:267
|
||||
msgid "-Cf/-CF are incompatible with lex-compatibility mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:272
|
||||
msgid "-Cf and -CF are mutually exclusive"
|
||||
msgstr "-Cf და -CF ურთიერთგამომრიცხავია"
|
||||
|
||||
#: src/main.c:276
|
||||
msgid "Can't use -+ with -CF option"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:279
|
||||
#, c-format
|
||||
msgid "%array incompatible with -+ option"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:284
|
||||
msgid "Options -+ and --reentrant are mutually exclusive."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:287
|
||||
msgid "bison bridge not supported for the C++ scanner."
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:336 src/main.c:419
|
||||
#, c-format
|
||||
msgid "could not create %s"
|
||||
msgstr "%s-ის შექმნის შეცდომა"
|
||||
|
||||
#: src/main.c:431
|
||||
msgid "could not write tables header"
|
||||
msgstr "ცხრილების თავსართის ჩაწერის შეცდომა"
|
||||
|
||||
#: src/main.c:435
|
||||
#, c-format
|
||||
msgid "can't open skeleton file %s"
|
||||
msgstr "ჩონჩხის ფაილის %s გახსნის შეცდომა"
|
||||
|
||||
#: src/main.c:450
|
||||
msgid "Prefix cannot include '[' or ']'"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:474
|
||||
msgid "allocation of macro definition failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:521
|
||||
#, c-format
|
||||
msgid "input error reading skeleton file %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:525
|
||||
#, c-format
|
||||
msgid "error closing skeleton file %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:709
|
||||
#, c-format
|
||||
msgid "error creating header file %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:717
|
||||
#, c-format
|
||||
msgid "error writing output file %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:721
|
||||
#, c-format
|
||||
msgid "error closing output file %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:725
|
||||
#, c-format
|
||||
msgid "error deleting output file %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:732
|
||||
#, c-format
|
||||
msgid "No backing up.\n"
|
||||
msgstr "მარქაფი გამორთულია.\n"
|
||||
|
||||
#: src/main.c:736
|
||||
#, c-format
|
||||
msgid "%d backing up (non-accepting) states.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:740
|
||||
#, c-format
|
||||
msgid "Compressed tables always back up.\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:743
|
||||
#, c-format
|
||||
msgid "error writing backup file %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:747
|
||||
#, c-format
|
||||
msgid "error closing backup file %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:752
|
||||
#, c-format
|
||||
msgid "%s version %s usage statistics:\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:755
|
||||
#, c-format
|
||||
msgid " scanner options: -"
|
||||
msgstr " სკანერის პარამეტრების ჩვენება: -"
|
||||
|
||||
#: src/main.c:834
|
||||
#, c-format
|
||||
msgid " %d/%d NFA states\n"
|
||||
msgstr " %d/%d NFA მდგომარეობები\n"
|
||||
|
||||
#: src/main.c:836
|
||||
#, c-format
|
||||
msgid " %d/%d DFA states (%d words)\n"
|
||||
msgstr " %d/%d DFA მდგომარეობები (%d სიტყვა)\n"
|
||||
|
||||
#: src/main.c:838
|
||||
#, c-format
|
||||
msgid " %d rules\n"
|
||||
msgstr " %d წესი\n"
|
||||
|
||||
#: src/main.c:843
|
||||
#, c-format
|
||||
msgid " No backing up\n"
|
||||
msgstr " მარქაფის გარეშე\n"
|
||||
|
||||
#: src/main.c:847
|
||||
#, c-format
|
||||
msgid " %d backing-up (non-accepting) states\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:852
|
||||
#, c-format
|
||||
msgid " Compressed tables always back-up\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:856
|
||||
#, c-format
|
||||
msgid " Beginning-of-line patterns used\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:858
|
||||
#, c-format
|
||||
msgid " %d/%d start conditions\n"
|
||||
msgstr " %d/%d გაშვების პირობები\n"
|
||||
|
||||
#: src/main.c:862
|
||||
#, c-format
|
||||
msgid " %d epsilon states, %d double epsilon states\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:866
|
||||
#, c-format
|
||||
msgid " no character classes\n"
|
||||
msgstr " სიმბოლოს კლასების გარეშე\n"
|
||||
|
||||
#: src/main.c:870
|
||||
#, c-format
|
||||
msgid " %d/%d character classes needed %d/%d words of storage, %d reused\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:875
|
||||
#, c-format
|
||||
msgid " %d state/nextstate pairs created\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:878
|
||||
#, c-format
|
||||
msgid " %d/%d unique/duplicate transitions\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:883
|
||||
#, c-format
|
||||
msgid " %d table entries\n"
|
||||
msgstr " %d ცხრილის ჩანაწერი\n"
|
||||
|
||||
#: src/main.c:891
|
||||
#, c-format
|
||||
msgid " %d/%d base-def entries created\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:895
|
||||
#, c-format
|
||||
msgid " %d/%d (peak %d) nxt-chk entries created\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:899
|
||||
#, c-format
|
||||
msgid " %d/%d (peak %d) template nxt-chk entries created\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:903
|
||||
#, c-format
|
||||
msgid " %d empty table entries\n"
|
||||
msgstr " %d ცხრილის ცარიელი ჩანაწერი\n"
|
||||
|
||||
#: src/main.c:905
|
||||
#, c-format
|
||||
msgid " %d protos created\n"
|
||||
msgstr " %d პროტოტიპი შექმნილია\n"
|
||||
|
||||
#: src/main.c:908
|
||||
#, c-format
|
||||
msgid " %d templates created, %d uses\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:916
|
||||
#, c-format
|
||||
msgid " %d/%d equivalence classes created\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:924
|
||||
#, c-format
|
||||
msgid " %d/%d meta-equivalence classes created\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:930
|
||||
#, c-format
|
||||
msgid " %d (%d saved) hash collisions, %d DFAs equal\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:932
|
||||
#, c-format
|
||||
msgid " %d sets of reallocations needed\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:934
|
||||
#, c-format
|
||||
msgid " %d total table entries needed\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:1008
|
||||
#, c-format
|
||||
msgid "Internal error. flexopts are malformed.\n"
|
||||
msgstr "შიდა შეცდომა. flexopts არასწორია.\n"
|
||||
|
||||
#: src/main.c:1018
|
||||
#, c-format
|
||||
msgid "Try `%s --help' for more information.\n"
|
||||
msgstr "მეტი ინფორმაციისთვის სცადეთ '%s --help'\n"
|
||||
|
||||
#: src/main.c:1075
|
||||
#, c-format
|
||||
msgid "unknown -C option '%c'"
|
||||
msgstr "უცნობი -C -ის პარამეტრი '%c'"
|
||||
|
||||
#: src/main.c:1204
|
||||
#, c-format
|
||||
msgid "%s %s\n"
|
||||
msgstr "%s %s\n"
|
||||
|
||||
#: src/main.c:1476
|
||||
msgid "fatal parse error"
|
||||
msgstr "ფატალური შეცდომა დამუშავებისას"
|
||||
|
||||
#: src/main.c:1508
|
||||
#, c-format
|
||||
msgid "could not create backing-up info file %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:1529
|
||||
#, c-format
|
||||
msgid "-l AT&T lex compatibility option entails a large performance penalty\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:1532
|
||||
#, c-format
|
||||
msgid " and may be the actual source of other reported performance penalties\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:1538
|
||||
#, c-format
|
||||
msgid "%%option yylineno entails a performance penalty ONLY on rules that can match newline characters\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:1545
|
||||
#, c-format
|
||||
msgid "-I (interactive) entails a minor performance penalty\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:1550
|
||||
#, c-format
|
||||
msgid "yymore() entails a minor performance penalty\n"
|
||||
msgstr "yymore() მცირე წარმადობის ხინჯს შეიცავს\n"
|
||||
|
||||
#: src/main.c:1556
|
||||
#, c-format
|
||||
msgid "REJECT entails a large performance penalty\n"
|
||||
msgstr "REJECT წარმადობის დიდ ხინჯს შეიცავს\n"
|
||||
|
||||
#: src/main.c:1561
|
||||
#, c-format
|
||||
msgid "Variable trailing context rules entail a large performance penalty\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:1573
|
||||
msgid "REJECT cannot be used with -f or -F"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:1576
|
||||
#, c-format
|
||||
msgid "%option yylineno cannot be used with REJECT"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:1579
|
||||
msgid "variable trailing context rules cannot be used with -f or -F"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:1704
|
||||
#, c-format
|
||||
msgid "%option yyclass only meaningful for C++ scanners"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:1791
|
||||
#, c-format
|
||||
msgid "Usage: %s [OPTIONS] [FILE]...\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/main.c:1794
|
||||
#, 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, --trace %s should run in 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"
|
||||
"\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"
|
||||
" -L, --noline suppress #line directives in scanner\n"
|
||||
" -P, --prefix=STRING use STRING as prefix instead of \"yy\"\n"
|
||||
" -R, --reentrant generate a reentrant C 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 ""
|
||||
|
||||
#: src/misc.c:64
|
||||
msgid "allocation of sko_stack failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc.c:100
|
||||
#, c-format
|
||||
msgid "name \"%s\" ridiculously long"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc.c:155
|
||||
msgid "memory allocation failed in allocate_array()"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc.c:205
|
||||
#, c-format
|
||||
msgid "bad character '%s' detected in check_char()"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc.c:210
|
||||
#, c-format
|
||||
msgid "scanner requires -8 flag to use the character %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc.c:229
|
||||
msgid "memory allocation failure in xstrdup()"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc.c:303
|
||||
#, c-format
|
||||
msgid "%s: fatal internal error, %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc.c:671
|
||||
msgid "attempt to increase array size failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc.c:795
|
||||
msgid "bad line in skeleton file"
|
||||
msgstr ""
|
||||
|
||||
#: src/misc.c:845
|
||||
msgid "memory allocation failed in yy_flex_xmalloc()"
|
||||
msgstr ""
|
||||
|
||||
#: src/nfa.c:100
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
"\n"
|
||||
"********** beginning dump of nfa with start state %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/nfa.c:111
|
||||
#, c-format
|
||||
msgid "state # %4d\t"
|
||||
msgstr ""
|
||||
|
||||
#: src/nfa.c:126
|
||||
#, c-format
|
||||
msgid "********** end of dump\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/nfa.c:169
|
||||
msgid "empty machine in dupmachine()"
|
||||
msgstr ""
|
||||
|
||||
#: src/nfa.c:234
|
||||
#, c-format
|
||||
msgid "Variable trailing context rule at line %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/nfa.c:357
|
||||
msgid "bad state type in mark_beginning_as_normal()"
|
||||
msgstr ""
|
||||
|
||||
#: src/nfa.c:595
|
||||
#, c-format
|
||||
msgid "input rules are too complicated (>= %d NFA states)"
|
||||
msgstr ""
|
||||
|
||||
#: src/nfa.c:673
|
||||
msgid "found too many transitions in mkxtion()"
|
||||
msgstr ""
|
||||
|
||||
#: src/nfa.c:699
|
||||
#, c-format
|
||||
msgid "too many rules (> %d)!"
|
||||
msgstr ""
|
||||
|
||||
#: src/parse.y:159
|
||||
msgid "unknown error processing section 1"
|
||||
msgstr ""
|
||||
|
||||
#: src/parse.y:184 src/parse.y:353
|
||||
msgid "bad start condition list"
|
||||
msgstr ""
|
||||
|
||||
#: src/parse.y:204
|
||||
msgid "Prefix must not contain [ or ]"
|
||||
msgstr ""
|
||||
|
||||
#: src/parse.y:317
|
||||
msgid "unrecognized rule"
|
||||
msgstr ""
|
||||
|
||||
#: src/parse.y:436 src/parse.y:449 src/parse.y:518
|
||||
msgid "trailing context used twice"
|
||||
msgstr ""
|
||||
|
||||
#: src/parse.y:554 src/parse.y:564 src/parse.y:637 src/parse.y:647
|
||||
msgid "bad iteration values"
|
||||
msgstr ""
|
||||
|
||||
#: src/parse.y:582 src/parse.y:600 src/parse.y:665 src/parse.y:683
|
||||
msgid "iteration value must be positive"
|
||||
msgstr ""
|
||||
|
||||
#: src/parse.y:806 src/parse.y:816
|
||||
#, c-format
|
||||
msgid "the character range [%c-%c] is ambiguous in a case-insensitive scanner"
|
||||
msgstr ""
|
||||
|
||||
#: src/parse.y:821
|
||||
msgid "negative range in character class"
|
||||
msgstr ""
|
||||
|
||||
#: src/parse.y:918
|
||||
msgid "[:^lower:] is ambiguous in case insensitive scanner"
|
||||
msgstr ""
|
||||
|
||||
#: src/parse.y:924
|
||||
msgid "[:^upper:] ambiguous in case insensitive scanner"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:82 src/scan.l:644 src/scan.l:702
|
||||
msgid "Input line too long\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:183
|
||||
#, c-format
|
||||
msgid "malformed '%top' directive"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:205
|
||||
#, no-c-format
|
||||
msgid "unrecognized '%' directive"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:214
|
||||
msgid "Definition name too long\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:309
|
||||
msgid "Unmatched '{'"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:325
|
||||
#, c-format
|
||||
msgid "Definition value for {%s} too long\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:342
|
||||
msgid "incomplete name definition"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:467
|
||||
msgid "Option line too long\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:475
|
||||
#, c-format
|
||||
msgid "unrecognized %%option: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:659 src/scan.l:832
|
||||
msgid "bad character class"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:709
|
||||
#, c-format
|
||||
msgid "undefined definition {%s}"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:772
|
||||
msgid "unbalanced parenthesis"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:787
|
||||
#, c-format
|
||||
msgid "bad <start condition>: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:800
|
||||
msgid "missing quote"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:866
|
||||
#, c-format
|
||||
msgid "bad character class expression: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:888
|
||||
msgid "bad character inside {}'s"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:894
|
||||
msgid "missing }"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:972
|
||||
msgid "EOF encountered inside an action"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:977
|
||||
msgid "EOF encountered inside pattern"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:1010
|
||||
#, c-format
|
||||
msgid "bad character: %s"
|
||||
msgstr ""
|
||||
|
||||
#: src/scan.l:1038
|
||||
#, c-format
|
||||
msgid "can't open %s"
|
||||
msgstr "'%s'-ის გახსნის შეცდომა"
|
||||
|
||||
#: src/scanopt.c:259
|
||||
#, c-format
|
||||
msgid "Usage: %s [OPTIONS]...\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/scanopt.c:524
|
||||
#, c-format
|
||||
msgid "option `%s' doesn't allow an argument\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/scanopt.c:529
|
||||
#, c-format
|
||||
msgid "option `%s' requires an argument\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/scanopt.c:533
|
||||
#, c-format
|
||||
msgid "option `%s' is ambiguous\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/scanopt.c:537
|
||||
#, c-format
|
||||
msgid "Unrecognized option `%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/scanopt.c:541
|
||||
#, c-format
|
||||
msgid "Unknown error=(%d)\n"
|
||||
msgstr ""
|
||||
|
||||
#: 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 ""
|
||||
|
||||
#: src/yylex.c:57
|
||||
msgid "premature EOF"
|
||||
msgstr ""
|
||||
|
||||
#: src/yylex.c:200
|
||||
#, c-format
|
||||
msgid "End Marker\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/yylex.c:206
|
||||
#, c-format
|
||||
msgid "*Something Weird* - tok: %d val: %d\n"
|
||||
msgstr ""
|
||||
958
po/pt.po
Normal file
958
po/pt.po
Normal file
@ -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"
|
||||
878
po/pt_BR.po
878
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
971
po/uk.po
Normal file
971
po/uk.po
Normal file
@ -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()"
|
||||
26
po/update_linguas.sh
Executable file
26
po/update_linguas.sh
Executable file
@ -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
|
||||
446
po/zh_CN.po
446
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
852
po/zh_TW.po
852
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
13
src/.gitignore
vendored
13
src/.gitignore
vendored
@ -1,12 +1,21 @@
|
||||
*.la
|
||||
*.lo
|
||||
*.o
|
||||
*-flex.h
|
||||
config.h
|
||||
config.h.in
|
||||
config_for_build.h
|
||||
flex
|
||||
libfl.pc
|
||||
parse.c
|
||||
parse.h
|
||||
scan.c
|
||||
skel.c
|
||||
stage1scan.[cl]
|
||||
stage1scan.c
|
||||
stage1flex
|
||||
stage2compare
|
||||
stage2scan.c
|
||||
|
||||
# for MSWindows
|
||||
|
||||
*.obj
|
||||
*.exe
|
||||
|
||||
@ -95,14 +95,14 @@ public:
|
||||
|
||||
int lineno() const { return yylineno; }
|
||||
|
||||
int debug() const { return yy_flex_debug; }
|
||||
void set_debug( int flag ) { yy_flex_debug = flag; }
|
||||
int debug() const { return yyflexdebug; }
|
||||
void set_debug( int flag ) { yyflexdebug = flag; }
|
||||
|
||||
protected:
|
||||
char* yytext;
|
||||
int yyleng;
|
||||
int yylineno; // only maintained if you use %option yylineno
|
||||
int yy_flex_debug; // only has effect with -d or "%option debug"
|
||||
int yyflexdebug; // only has effect with -d or "%option debug"
|
||||
};
|
||||
|
||||
}
|
||||
@ -139,6 +139,7 @@ public:
|
||||
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 );
|
||||
@ -148,8 +149,8 @@ protected:
|
||||
virtual int LexerInput( char* buf, int max_size );
|
||||
virtual void LexerOutput( const char* buf, int size );
|
||||
virtual void LexerError( const char* msg );
|
||||
|
||||
void yyunput( int c, char* buf_ptr );
|
||||
|
||||
void yyunput_r( int c, char* buf_ptr );
|
||||
int yyinput();
|
||||
|
||||
void yy_load_buffer_state();
|
||||
@ -201,6 +202,7 @@ protected:
|
||||
|
||||
yy_state_type* yy_state_buf;
|
||||
yy_state_type* yy_state_ptr;
|
||||
size_t yy_state_buf_max;
|
||||
|
||||
char* yy_full_match;
|
||||
int* yy_full_state;
|
||||
|
||||
157
src/Makefile.am
157
src/Makefile.am
@ -1,17 +1,22 @@
|
||||
AM_YFLAGS = -d
|
||||
localedir = $(datadir)/locale
|
||||
AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\" -I$(top_srcdir)/intl
|
||||
AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\"
|
||||
AM_CFLAGS = $(WARNINGFLAGS)
|
||||
LIBS = @LIBS@
|
||||
pkgconfigdir = @pkgconfigdir@
|
||||
|
||||
m4 = @M4@
|
||||
|
||||
bin_PROGRAMS = flex
|
||||
if ENABLE_BOOTSTRAP
|
||||
noinst_PROGRAMS = stage1flex
|
||||
if !CROSS
|
||||
noinst_DATA = stage2compare
|
||||
endif
|
||||
endif
|
||||
|
||||
if ENABLE_LIBFL
|
||||
lib_LTLIBRARIES = libfl.la
|
||||
pkgconfig_DATA = libfl.pc
|
||||
endif
|
||||
libfl_la_SOURCES = \
|
||||
libmain.c \
|
||||
@ -22,15 +27,39 @@ stage1flex_SOURCES = \
|
||||
scan.l \
|
||||
$(COMMON_SOURCES)
|
||||
|
||||
nodist_stage1flex_SOURCES = \
|
||||
$(SKELINCLUDES)
|
||||
|
||||
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) -DUSE_CONFIG_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
|
||||
$(SKELINCLUDES)
|
||||
|
||||
flex_CFLAGS = $(AM_CFLAGS) $(WARNINGFLAGS)
|
||||
if ENABLE_BOOTSTRAP
|
||||
nodist_flex_SOURCES += stage1scan.c
|
||||
else
|
||||
flex_SOURCES += scan.l
|
||||
endif
|
||||
|
||||
COMMON_SOURCES = \
|
||||
buf.c \
|
||||
@ -40,6 +69,7 @@ COMMON_SOURCES = \
|
||||
filter.c \
|
||||
flexdef.h \
|
||||
flexint.h \
|
||||
flexint_shared.h \
|
||||
gen.c \
|
||||
main.c \
|
||||
misc.c \
|
||||
@ -51,7 +81,7 @@ COMMON_SOURCES = \
|
||||
scanflags.c \
|
||||
scanopt.c \
|
||||
scanopt.h \
|
||||
skel.c \
|
||||
skeletons.c \
|
||||
sym.c \
|
||||
tables.c \
|
||||
tables.h \
|
||||
@ -63,42 +93,95 @@ COMMON_SOURCES = \
|
||||
|
||||
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)
|
||||
MOSTLYCLEANFILES = \
|
||||
$(SKELINCLUDES) \
|
||||
stage1scan.c \
|
||||
stage2scan.c \
|
||||
stage2compare
|
||||
|
||||
MAINTAINERCLEANFILES = skel.c
|
||||
CLEANFILES = stage1flex$(EXEEXT)
|
||||
|
||||
skel.c: flex.skl mkskel.sh flexint.h tables_shared.h tables_shared.c
|
||||
sed 's/4_/a4_/g; s/m4preproc_/m4_/g' $< | \
|
||||
$(m4) -P -I $(srcdir) \
|
||||
-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 .` | \
|
||||
$(SHELL) $(srcdir)/mkskel.sh > $@.tmp
|
||||
mv $@.tmp $@
|
||||
SKELINCLUDES = \
|
||||
cpp-flex.h \
|
||||
c99-flex.h \
|
||||
go-flex.h
|
||||
|
||||
if ENABLE_BOOTSTRAP
|
||||
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 $@
|
||||
|
||||
# The input and output file names are fixed for deterministic scanner
|
||||
# generation. If scan.l is not modified by builders, stage1scan.c should
|
||||
# be bit-identical to the scan.c pregenerated on release.
|
||||
stage1scan.c: scan.l stage1flex$(EXEEXT)
|
||||
./stage1flex$(EXEEXT) $(AM_LFLAGS) $(LFLAGS) -o $@ $<
|
||||
else
|
||||
stage1scan.c: scan.c
|
||||
sed 's|^\(#line .*\)"'`printf %s $< | sed 's|[][\\\\.*]|\\\\&|g'`'"|\1"$@"|g' $< > $@
|
||||
endif
|
||||
( cd $(srcdir) && $(abs_builddir)/stage1flex$(EXEEXT) \
|
||||
$(AM_LFLAGS) $(LFLAGS) -o scan.c -t scan.l ) >$@ || \
|
||||
{ s=$$?; rm -f $@; exit $$s; }
|
||||
|
||||
# make needs to be told to make parse.h so that parallelized runs will
|
||||
# Unlike stage1scan.c, we leave stage2scan.c intact when the generation
|
||||
# fails. This allow users to examine generation errors.
|
||||
stage2scan.c: scan.l flex$(EXEEXT) stage1scan.c
|
||||
( cd $(srcdir) && $(abs_builddir)/flex$(EXEEXT) \
|
||||
$(AM_LFLAGS) $(LFLAGS) -o scan.c -t scan.l ) >$@
|
||||
|
||||
stage2compare: stage1scan.c
|
||||
@rm -f stage2scan.c; \
|
||||
$(MAKE) $(AM_MAKEFLAGS) stage2scan.c; \
|
||||
echo Comparing stage1scan.c and stage2scan.c; \
|
||||
cmp stage1scan.c stage2scan.c || { \
|
||||
s=$$?; \
|
||||
echo "Bootstrap comparison failure!"; \
|
||||
exit $$s; \
|
||||
}; \
|
||||
echo Comparison successful.; \
|
||||
echo success >$@
|
||||
|
||||
dist-hook: scan.l flex$(EXEEXT)
|
||||
chmod u+w $(distdir) && \
|
||||
chmod u+w $(distdir)/scan.c && \
|
||||
( cd $(srcdir) && $(abs_builddir)/flex$(EXEEXT) \
|
||||
-o scan.c -t scan.l ) >scan.c && \
|
||||
mv -f scan.c $(distdir)
|
||||
|
||||
# make needs to be told to make inclusions so that parallelized runs will
|
||||
# not fail.
|
||||
|
||||
main.c: parse.h
|
||||
yylex.c: parse.h
|
||||
stage1flex-skeletons.$(OBJEXT): $(SKELINCLUDES)
|
||||
skeletons.$(OBJEXT): $(SKELINCLUDES)
|
||||
|
||||
stage1flex-main.$(OBJEXT): parse.h
|
||||
main.$(OBJEXT): parse.h
|
||||
|
||||
stage1flex-yylex.$(OBJEXT): parse.h
|
||||
yylex.$(OBJEXT): parse.h
|
||||
|
||||
stage1flex-scan.$(OBJEXT): parse.h
|
||||
flex-stage1scan.$(OBJEXT): parse.h
|
||||
stage1scan.$(OBJEXT): parse.h
|
||||
scan.$(OBJEXT): parse.h
|
||||
|
||||
# Run GNU indent on sources. Don't run this unless all the sources compile cleanly.
|
||||
#
|
||||
@ -135,12 +218,14 @@ indentfiles = \
|
||||
tables_shared.h \
|
||||
tblcmp.c
|
||||
|
||||
indent:
|
||||
if [ -f .indent.pro ] ; then \
|
||||
for f in $(indentfiles);\
|
||||
do\
|
||||
echo indenting $$f ;\
|
||||
f='$(srcdir)'/$$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
|
||||
|
||||
124
src/buf.c
124
src/buf.c
@ -47,31 +47,13 @@
|
||||
|
||||
/* 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;
|
||||
size_t tsz;
|
||||
|
||||
tsz = strlen(fmt) + strlen(s) + 1;
|
||||
t = malloc(tsz);
|
||||
@ -83,52 +65,6 @@ struct Buf *buf_prints (struct Buf *buf, const char *fmt, const char *s)
|
||||
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;
|
||||
size_t tsz;
|
||||
|
||||
if (gen_line_dirs)
|
||||
return buf;
|
||||
|
||||
tsz = strlen("#line \"\"\n") + /* constant parts */
|
||||
2 * strlen (filename) + /* filename with possibly all backslashes escaped */
|
||||
(size_t) (1 + ceil (log10 (abs (lineno)))) + /* line number */
|
||||
1; /* NUL */
|
||||
t = malloc(tsz);
|
||||
if (!t)
|
||||
flexfatal (_("Allocation of buffer for line directive failed"));
|
||||
for (dst = t + snprintf (t, tsz, "#line %d \"", lineno), src = filename; *src; *dst++ = *src++)
|
||||
if (*src == '\\') /* escape backslashes */
|
||||
*dst++ = '\\';
|
||||
*dst++ = '"';
|
||||
*dst++ = '\n';
|
||||
*dst = '\0';
|
||||
buf = buf_strappend (buf, t);
|
||||
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 (struct Buf *buf, const char *str, int n)
|
||||
{
|
||||
@ -146,62 +82,6 @@ struct Buf *buf_strappend (struct Buf *buf, const char *str)
|
||||
return buf_strnappend (buf, str, (int) strlen (str));
|
||||
}
|
||||
|
||||
/* appends "#define str def\n" */
|
||||
struct Buf *buf_strdefine (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:"";
|
||||
strsz = strlen(fmt) + strlen(def) + strlen(val) + 2;
|
||||
str = malloc(strsz);
|
||||
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;
|
||||
|
||||
strsz = strlen(fmt) + strlen(def) + 2;
|
||||
str = malloc(strsz);
|
||||
if (!str)
|
||||
flexfatal (_("Allocation of buffer for m4 undef failed"));
|
||||
|
||||
snprintf(str, strsz, fmt, def);
|
||||
buf_append(buf, &str, 1);
|
||||
return buf;
|
||||
}
|
||||
|
||||
/* create buf with 0 elements, each of size elem_size. */
|
||||
void buf_init (struct Buf *buf, size_t elem_size)
|
||||
{
|
||||
@ -259,7 +139,7 @@ struct Buf *buf_append (struct Buf *buf, const void *ptr, int n_elem)
|
||||
buf->nmax = n_alloc;
|
||||
}
|
||||
|
||||
memcpy (buf->elts + (size_t) buf->nelts * buf->elt_size, ptr,
|
||||
memcpy ((char *) buf->elts + (size_t) buf->nelts * buf->elt_size, ptr,
|
||||
(size_t) n_elem * buf->elt_size);
|
||||
buf->nelts += n_elem;
|
||||
|
||||
|
||||
2550
src/c99-flex.skl
Normal file
2550
src/c99-flex.skl
Normal file
File diff suppressed because it is too large
Load Diff
23
src/ccl.c
23
src/ccl.c
@ -73,6 +73,13 @@ void ccladd (int cclp, int 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;
|
||||
|
||||
@ -94,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;
|
||||
|
||||
@ -102,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 */
|
||||
@ -128,10 +135,10 @@ ccl_set_diff (int a, int b)
|
||||
d = cclinit();
|
||||
|
||||
/* In order to handle negation, we spin through all possible chars,
|
||||
* addding each char in a that is not in b.
|
||||
* adding 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);
|
||||
|
||||
@ -195,9 +202,7 @@ int cclinit (void)
|
||||
ccllen =
|
||||
reallocate_integer_array (ccllen, current_maxccls);
|
||||
cclng = reallocate_integer_array (cclng, current_maxccls);
|
||||
ccl_has_nl =
|
||||
reallocate_bool_array (ccl_has_nl,
|
||||
current_maxccls);
|
||||
ccl_has_nl = reallocate_array(ccl_has_nl, current_maxccls, sizeof(char));
|
||||
}
|
||||
|
||||
if (lastccl == 1)
|
||||
@ -243,7 +248,7 @@ void list_character_set (FILE *file, int cset[])
|
||||
|
||||
putc ('[', file);
|
||||
|
||||
for (i = 0; i < csize; ++i) {
|
||||
for (i = 0; i < ctrl.csize; ++i) {
|
||||
if (cset[i]) {
|
||||
int start_char = i;
|
||||
|
||||
@ -251,7 +256,7 @@ void list_character_set (FILE *file, int 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 */
|
||||
|
||||
33
src/chkskel.sh
Normal file
33
src/chkskel.sh
Normal file
@ -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
|
||||
81
src/config_for_build.h.in
Normal file
81
src/config_for_build.h.in
Normal file
@ -0,0 +1,81 @@
|
||||
/* config_for_build - minimal config header for bootstrapping flex */
|
||||
|
||||
/* 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. */
|
||||
|
||||
/* The "config_for_build.h.in" file is intended to be processed by "configure"
|
||||
* in order to produce working PACKAGE, VERSION and M4 definitions.
|
||||
* Add "config_for_build.h.in" to AC_CONFIG_FILES. Do not add it to
|
||||
* AC_CONFIG_HEADERS as it would break our intentional #undef's and mess up
|
||||
* with the #define statements.
|
||||
*/
|
||||
#define PACKAGE "@PACKAGE@"
|
||||
#define VERSION "@VERSION@"
|
||||
#define M4 "@M4@"
|
||||
|
||||
#undef ENABLE_NLS
|
||||
/* Flex includes <locale.h> only if NLS is enabled, but we undef it anyway. */
|
||||
#undef HAVE_LOCALE_H
|
||||
|
||||
#undef HAVE_NETINET_IN_H
|
||||
#ifdef __has_include
|
||||
# if __has_include(<netinet/in.h>)
|
||||
# define HAVE_NETINET_IN_H 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#undef HAVE_REALLOCARRAY
|
||||
#undef HAVE_REALLOCARR
|
||||
|
||||
/* Always use malloc/realloc wrappers. */
|
||||
#undef malloc
|
||||
#define malloc rpl_malloc
|
||||
#undef realloc
|
||||
#define realloc rpl_realloc
|
||||
|
||||
/* The Bison-generated parser in flex code controls the use of alloca() through
|
||||
* its own macro (YYSTACK_USE_ALLOCA) and not defines from Autoconf.
|
||||
* alloca() is not used in other parts of flex code.
|
||||
*/
|
||||
#undef HAVE_ALLOCA_H
|
||||
#undef HAVE_ALLOCA
|
||||
#undef C_ALLOCA
|
||||
|
||||
/* HAVE_INTTYPES_H is defined by Autoconf but not used in flex code. Flex has
|
||||
* flexint.h that provides fallback definitions.
|
||||
*/
|
||||
/*
|
||||
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L
|
||||
# undef HAVE_INTTYPES_H
|
||||
#endif
|
||||
*/
|
||||
|
||||
#undef HAVE_STDBOOL_H
|
||||
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L
|
||||
# undef HAVE__BOOL
|
||||
#endif
|
||||
|
||||
/* Standard C89 stuff which "configure" provides fallback #define's for. */
|
||||
#ifndef __STDC__
|
||||
# undef HAVE_LIMITS_H
|
||||
# define const /* const */
|
||||
# define size_t unsigned int
|
||||
#endif
|
||||
4380
src/cpp-flex.skl
Normal file
4380
src/cpp-flex.skl
Normal file
File diff suppressed because it is too large
Load Diff
164
src/dfa.c
164
src/dfa.c
@ -34,10 +34,11 @@
|
||||
|
||||
/* declare functions that have forward references */
|
||||
|
||||
void dump_associated_rules(FILE *, int);
|
||||
void dump_transitions(FILE *, int[]);
|
||||
void sympartition(int[], int, int[], int[]);
|
||||
int symfollowset(int[], int, int, int[]);
|
||||
static void dump_associated_rules(FILE *, int);
|
||||
static void dump_transitions(FILE *, int[]);
|
||||
static int snstods(int[], int, int[], int, int, int *);
|
||||
static void sympartition(int[], int, int[], int[]);
|
||||
static int symfollowset(int[], int, int, int[]);
|
||||
|
||||
|
||||
/* check_for_backing_up - check a DFA state for backing up
|
||||
@ -49,24 +50,24 @@ int symfollowset(int[], int, int, int[]);
|
||||
* indexed by equivalence class.
|
||||
*/
|
||||
|
||||
void check_for_backing_up (int ds, int state[])
|
||||
static 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -94,7 +95,7 @@ void check_for_backing_up (int ds, int state[])
|
||||
* accset[1 .. nacc] is the list of accepting numbers for the DFA state.
|
||||
*/
|
||||
|
||||
void check_trailing_context (int *nfa_states, int num_states, int *accset, int nacc)
|
||||
static void check_trailing_context(int *nfa_states, int num_states, int *accset, int nacc)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
@ -132,7 +133,7 @@ void check_trailing_context (int *nfa_states, int num_states, int *accset, int n
|
||||
* and writes a report to the given file.
|
||||
*/
|
||||
|
||||
void dump_associated_rules (FILE *file, int ds)
|
||||
static void dump_associated_rules(FILE *file, int ds)
|
||||
{
|
||||
int i, j;
|
||||
int num_associated_rules = 0;
|
||||
@ -180,12 +181,12 @@ void dump_associated_rules (FILE *file, int ds)
|
||||
* is done to the given file.
|
||||
*/
|
||||
|
||||
void dump_transitions (FILE *file, int state[])
|
||||
static 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];
|
||||
}
|
||||
@ -195,7 +196,7 @@ void dump_transitions (FILE *file, int 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 "));
|
||||
@ -226,7 +227,7 @@ void dump_transitions (FILE *file, int state[])
|
||||
* hashval is the hash value for the dfa corresponding to the state set.
|
||||
*/
|
||||
|
||||
int *epsclosure (int *t, int *ns_addr, int accset[], int *nacc_addr, int *hv_addr)
|
||||
static 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;
|
||||
@ -353,7 +354,8 @@ void increase_max_dfas (void)
|
||||
accsiz = reallocate_integer_array (accsiz, current_max_dfas);
|
||||
dhash = reallocate_integer_array (dhash, current_max_dfas);
|
||||
dss = reallocate_int_ptr_array (dss, current_max_dfas);
|
||||
dfaacc = reallocate_dfaacc_union (dfaacc, current_max_dfas);
|
||||
dfaacc = reallocate_array(dfaacc, current_max_dfas,
|
||||
sizeof(union dfaacc_union));
|
||||
|
||||
if (nultrans)
|
||||
nultrans =
|
||||
@ -366,9 +368,12 @@ void increase_max_dfas (void)
|
||||
*
|
||||
* 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 (void)
|
||||
size_t ntod (void)
|
||||
{
|
||||
int *accset, ds, nacc, newds;
|
||||
int sym, hashval, numstates, dsize;
|
||||
@ -406,7 +411,7 @@ void ntod (void)
|
||||
*/
|
||||
todo_head = todo_next = 0;
|
||||
|
||||
for (i = 0; i <= csize; ++i) {
|
||||
for (i = 0; i <= ctrl.csize; ++i) {
|
||||
duplist[i] = NIL;
|
||||
symlist[i] = false;
|
||||
}
|
||||
@ -414,7 +419,7 @@ void ntod (void)
|
||||
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);
|
||||
}
|
||||
@ -452,38 +457,14 @@ void ntod (void)
|
||||
|
||||
/* 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;
|
||||
|
||||
@ -491,7 +472,7 @@ void ntod (void)
|
||||
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.
|
||||
@ -517,32 +498,19 @@ void ntod (void)
|
||||
yynxt_tbl->td_hilen = 1;
|
||||
yynxt_tbl->td_lolen = (flex_uint32_t) num_full_table_rows;
|
||||
yynxt_tbl->td_data = yynxt_data =
|
||||
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 const %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 const %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) {
|
||||
@ -550,9 +518,10 @@ void ntod (void)
|
||||
yynxt_data[yynxt_curr++] = 0;
|
||||
}
|
||||
|
||||
dataflush ();
|
||||
if (gentables)
|
||||
outn (" },\n");
|
||||
if (gentables) {
|
||||
dataflush ();
|
||||
outn ("M4_HOOK_TABLE_CONTINUE");
|
||||
}
|
||||
}
|
||||
|
||||
/* Create the first states. */
|
||||
@ -586,7 +555,7 @@ void ntod (void)
|
||||
}
|
||||
}
|
||||
|
||||
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"));
|
||||
@ -609,7 +578,7 @@ void ntod (void)
|
||||
dset = dss[ds];
|
||||
dsize = dfasiz[ds];
|
||||
|
||||
if (trace)
|
||||
if (env.trace)
|
||||
fprintf (stderr, _("state # %d:\n"), ds);
|
||||
|
||||
sympartition (dset, dsize, symlist, duplist);
|
||||
@ -646,7 +615,7 @@ void ntod (void)
|
||||
|
||||
state[sym] = newds;
|
||||
|
||||
if (trace)
|
||||
if (env.trace)
|
||||
fprintf (stderr,
|
||||
"\t%d\t%d\n", sym,
|
||||
newds);
|
||||
@ -664,7 +633,7 @@ void ntod (void)
|
||||
targ = state[duplist[sym]];
|
||||
state[sym] = targ;
|
||||
|
||||
if (trace)
|
||||
if (env.trace)
|
||||
fprintf (stderr,
|
||||
"\t%d\t%d\n", sym,
|
||||
targ);
|
||||
@ -696,7 +665,7 @@ void ntod (void)
|
||||
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++;
|
||||
@ -705,10 +674,8 @@ void ntod (void)
|
||||
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) {
|
||||
@ -731,12 +698,13 @@ void ntod (void)
|
||||
state[i] ? state[i] : -ds;
|
||||
}
|
||||
|
||||
dataflush ();
|
||||
if (gentables)
|
||||
outn (" },\n");
|
||||
if (gentables) {
|
||||
dataflush ();
|
||||
outn ("M4_HOOK_TABLE_CONTINUE");
|
||||
}
|
||||
}
|
||||
|
||||
else if (fullspd)
|
||||
else if (ctrl.fullspd)
|
||||
place_state (state, ds, totaltrans);
|
||||
|
||||
else if (ds == end_of_buffer_state)
|
||||
@ -764,8 +732,9 @@ void ntod (void)
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
@ -778,7 +747,7 @@ void ntod (void)
|
||||
}
|
||||
}
|
||||
|
||||
else if (!fullspd) {
|
||||
else if (!ctrl.fullspd) {
|
||||
cmptmps (); /* create compressed template entries */
|
||||
|
||||
/* Create tables for all the states with only one
|
||||
@ -793,8 +762,11 @@ void ntod (void)
|
||||
mkdeftbl ();
|
||||
}
|
||||
|
||||
|
||||
free(accset);
|
||||
free(nset);
|
||||
|
||||
return (yynxt_tbl != NULL) ? (yynxt_tbl->td_hilen * sizeof(int32_t)) : 0;
|
||||
}
|
||||
|
||||
|
||||
@ -808,7 +780,7 @@ void ntod (void)
|
||||
* On return, the dfa state number is in newds.
|
||||
*/
|
||||
|
||||
int snstods (int sns[], int numstates, int accset[], int nacc, int hashval, int *newds_addr)
|
||||
static int snstods(int sns[], int numstates, int accset[], int nacc, int hashval, int *newds_addr)
|
||||
{
|
||||
int didsort = 0;
|
||||
int i, j;
|
||||
@ -929,7 +901,7 @@ int snstods (int sns[], int numstates, int accset[], int nacc, int hashval, int
|
||||
* int transsym, int nset[current_max_dfa_size] );
|
||||
*/
|
||||
|
||||
int symfollowset (int ds[], int dsize, int transsym, int nset[])
|
||||
static int symfollowset(int ds[], int dsize, int transsym, int nset[])
|
||||
{
|
||||
int ns, tsp, sym, i, j, lenccl, ch, numstates, ccllist;
|
||||
|
||||
@ -1006,7 +978,7 @@ int symfollowset (int ds[], int dsize, int transsym, int nset[])
|
||||
* int symlist[numecs], int duplist[numecs] );
|
||||
*/
|
||||
|
||||
void sympartition (int ds[], int numstates, int symlist[], int duplist[])
|
||||
static void sympartition(int ds[], int numstates, int symlist[], int duplist[])
|
||||
{
|
||||
int tch, i, j, k, ns, dupfwd[CSIZE + 1], lenccl, cclp, ich;
|
||||
|
||||
@ -1028,7 +1000,7 @@ void sympartition (int ds[], int numstates, int symlist[], int 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()"));
|
||||
}
|
||||
|
||||
111
src/filter.c
111
src/filter.c
@ -47,10 +47,9 @@ struct filter *filter_create_ext (struct filter *chain, const char *cmd,
|
||||
va_list ap;
|
||||
|
||||
/* allocate and initialize new filter */
|
||||
f = malloc(sizeof(struct filter));
|
||||
f = calloc(sizeof(struct filter), 1);
|
||||
if (!f)
|
||||
flexerror(_("malloc 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;
|
||||
@ -100,10 +99,9 @@ struct filter *filter_create_int (struct filter *chain,
|
||||
struct filter *f;
|
||||
|
||||
/* allocate and initialize new filter */
|
||||
f = malloc(sizeof(struct filter));
|
||||
f = calloc(sizeof(struct filter), 1);
|
||||
if (!f)
|
||||
flexerror(_("malloc 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;
|
||||
@ -162,13 +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);
|
||||
ungetc(' ', stdin); /* still an evil hack, but one that works better */
|
||||
(void)fgetc(stdin); /* on NetBSD than the fseek attempt does */
|
||||
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) {
|
||||
@ -176,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 */
|
||||
@ -193,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;
|
||||
}
|
||||
@ -230,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;
|
||||
@ -259,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 = malloc((size_t) readsz);
|
||||
if (!buf)
|
||||
flexerror(_("malloc 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);
|
||||
@ -296,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"),
|
||||
@ -315,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,
|
||||
@ -335,8 +327,9 @@ int filter_tee_header (struct filter *chain)
|
||||
*/
|
||||
int filter_fix_linedirs (struct filter *chain)
|
||||
{
|
||||
char *buf;
|
||||
const size_t readsz = 512;
|
||||
char buf[4096];
|
||||
const char *cp;
|
||||
const size_t readsz = sizeof buf;
|
||||
int lineno = 1;
|
||||
bool in_gen = true; /* in generated code */
|
||||
bool last_was_blank = false;
|
||||
@ -344,17 +337,16 @@ int filter_fix_linedirs (struct filter *chain)
|
||||
if (!chain)
|
||||
return 0;
|
||||
|
||||
buf = malloc(readsz);
|
||||
if (!buf)
|
||||
flexerror(_("malloc failed in filter_fix_linedirs"));
|
||||
|
||||
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;
|
||||
|
||||
@ -362,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;
|
||||
@ -389,8 +381,9 @@ int filter_fix_linedirs (struct filter *chain)
|
||||
|
||||
/* Adjust the line directives. */
|
||||
in_gen = true;
|
||||
snprintf (buf, readsz, "#line %d \"%s\"\n",
|
||||
lineno, filename);
|
||||
snprintf (buf, readsz, ctrl.traceline_template,
|
||||
lineno + 1, filename);
|
||||
strncat(buf, "\n", sizeof(buf)-1);
|
||||
}
|
||||
else {
|
||||
/* it's a #line directive for code we didn't write */
|
||||
@ -402,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
|
||||
@ -422,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;
|
||||
}
|
||||
|
||||
3401
src/flex.skl
3401
src/flex.skl
File diff suppressed because it is too large
Load Diff
398
src/flexdef.h
398
src/flexdef.h
@ -35,8 +35,12 @@
|
||||
#ifndef FLEXDEF_H
|
||||
#define FLEXDEF_H 1
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#ifndef USE_CONFIG_FOR_BUILD
|
||||
# ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
# endif
|
||||
#else
|
||||
#include <config_for_build.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
@ -44,7 +48,6 @@
|
||||
#include <stdarg.h>
|
||||
#include <setjmp.h>
|
||||
#include <ctype.h>
|
||||
#include <libgen.h> /* for XPG version of basename(3) */
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
@ -57,27 +60,39 @@
|
||||
#ifdef HAVE_LIMITS_H
|
||||
#include <limits.h>
|
||||
#endif
|
||||
#ifdef HAVE_UNISTD_H
|
||||
/* Required: dup() and dup2() in <unistd.h> */
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_PARAMS_H
|
||||
#include <sys/params.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_STAT_H
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
/* Required: wait() in <sys/wait.h> */
|
||||
#include <sys/wait.h>
|
||||
#ifdef HAVE_STDBOOL_H
|
||||
#include <stdbool.h>
|
||||
#ifdef HAVE_REGEX_H
|
||||
#include <regex.h>
|
||||
#elif !defined(__cplusplus) && (!defined(__STDC_VERSION__) || \
|
||||
__STDC_VERSION__ < 202311L)
|
||||
# ifdef HAVE__BOOL
|
||||
# define bool _Bool
|
||||
# else
|
||||
# define bool int
|
||||
# endif
|
||||
# define false 0
|
||||
# define true 1
|
||||
#endif
|
||||
#include <stdarg.h>
|
||||
/* Required: regcomp(), regexec() and regerror() in <regex.h> */
|
||||
#include <regex.h>
|
||||
/* Required: strcasecmp() in <strings.h> */
|
||||
#include <strings.h>
|
||||
#include "flexint.h"
|
||||
|
||||
/* We use gettext. So, when we write strings which should be translated, we mark them with _() */
|
||||
#ifdef ENABLE_NLS
|
||||
/* We use gettext. So, when we write strings which should be translated, we
|
||||
* mark them with _()
|
||||
*/
|
||||
#if defined(ENABLE_NLS) && ENABLE_NLS
|
||||
#ifdef HAVE_LOCALE_H
|
||||
#include <locale.h>
|
||||
#endif /* HAVE_LOCALE_H */
|
||||
@ -108,8 +123,8 @@
|
||||
#define ABS(x) ((x) < 0 ? -(x) : (x))
|
||||
#endif
|
||||
|
||||
|
||||
#define unspecified -1
|
||||
/* Whether an integer is a power of two */
|
||||
#define is_power_of_2(n) ((n) > 0 && ((n) & ((n) - 1)) == 0)
|
||||
|
||||
/* Special chk[] values marking the slots taking by end-of-buffer and action
|
||||
* numbers.
|
||||
@ -294,51 +309,140 @@
|
||||
*/
|
||||
#define BAD_SUBSCRIPT -32767
|
||||
|
||||
/* Absolute value of largest number that can be stored in a short, with a
|
||||
* bit of slop thrown in for general paranoia.
|
||||
*/
|
||||
#define MAX_SHORT 32700
|
||||
typedef enum trit_t {
|
||||
trit_unspecified = -1,
|
||||
trit_false = 0,
|
||||
trit_true = 1,
|
||||
} trit;
|
||||
|
||||
/* Control variables. These are in a struct to avoid having to replicate definitions
|
||||
* twice for each option, instead a single struct can be declared and externed.
|
||||
* If it's in this structure, it has a corresponding m4 symbol.
|
||||
*/
|
||||
struct ctrl_bundle_t {
|
||||
bool always_interactive;// always use character-by-character input
|
||||
FILE *backing_up_file; // file to summarize backing-up states to
|
||||
bool bison_bridge_lval; // (--bison-bridge), bison pure calling convention.
|
||||
bool bison_bridge_lloc; // (--bison-locations), bison yylloc.
|
||||
size_t bufsize; // input buffer size
|
||||
bool C_plus_plus; // (-+ flag) generate a C++ scanner class
|
||||
int csize; // size of character set for the scanner
|
||||
// 128 for 7-bit chars and 256 for 8-bit
|
||||
bool ddebug; // (-d) make a "debug" scanner
|
||||
trit do_main; // generate main part to make lexer standalone.
|
||||
bool do_stdinit; // whether to initialize yyin/yyout to stdin/stdout
|
||||
bool do_yylineno; // if true, generate code to maintain yylineno
|
||||
bool do_yywrap; // do yywrap() processing on EOF.
|
||||
// If false, EOF treated as "no more files"
|
||||
bool fullspd; // (-F flag) use Jacobson method of table representation
|
||||
bool fulltbl; // (-Cf flag) don't compress the DFA state table
|
||||
bool gen_line_dirs; // (no -L flag) generate #line directives
|
||||
trit interactive; // (-I) generate an interactive scanner
|
||||
bool never_interactive; // always use buffered input, don't check for tty.
|
||||
bool lex_compat; // (-l), maximize compatibility with AT&T lex
|
||||
bool long_align; // (-Ca flag), favor long-word alignment for speed
|
||||
bool no_yyinput; // suppress use of yyinput()
|
||||
bool no_unistd; // suppress inclusion of unistd.h
|
||||
bool posix_compat; // (-X) maximize compatibility with POSIX lex
|
||||
char *prefix; // prefix for externally visible names, default "yy"
|
||||
trit reject_really_used;// Force generation of support code for reject operation
|
||||
bool reentrant; // if true (-R), generate a reentrant C scanner
|
||||
bool rewrite; // Appl;y magic rewre rles to special fumctions
|
||||
bool stack_used; // Enable use of start-condition stacks
|
||||
bool no_section3_escape;// True if the undocumented option --unsafe-no-m4-sect3-escape was passed
|
||||
bool spprdflt; // (-s) suppress the default rule
|
||||
bool useecs; // (-Ce flag) use equivalence classes
|
||||
bool usemecs; // (-Cm flag), use meta-equivalence classes
|
||||
bool use_read; // (-f, -F, or -Cr) use read() for scanner input
|
||||
// otherwise, use fread().
|
||||
char *yyclass; // yyFlexLexer subclass to use for YY_DECL
|
||||
char *yydecl; // user-specified prototype for yylex.
|
||||
int yylmax; // Maximum buffer length if %array
|
||||
trit yymore_really_used;// Force geberation of support code for yymore
|
||||
bool yytext_is_array; // if true (i.e., %array directive), then declare
|
||||
// yytext as array instead of a character pointer.
|
||||
// Nice and inefficient.
|
||||
bool noyyread; // User supplied a yyread function, don't generate default
|
||||
char *userinit; // Code fragment to be inserted before scanning
|
||||
char *preaction; // Code fragment to be inserted before each action
|
||||
char *postaction; // Code fragment to be inserted after each action
|
||||
char *emit; // Specify target language to emit.
|
||||
char *yyterminate; // Set a non-default termination hook.
|
||||
bool no_yypanic; // if true, no not generate default yypanic function
|
||||
// flags corresponding to the huge mass of --no-yy options
|
||||
bool no_yy_push_state;
|
||||
bool no_yy_pop_state;
|
||||
bool no_yy_top_state;
|
||||
bool no_yyunput;
|
||||
bool no_yy_scan_buffer;
|
||||
bool no_yy_scan_bytes;
|
||||
bool no_yy_scan_string;
|
||||
bool no_yyget_extra;
|
||||
bool no_yyset_extra;
|
||||
bool no_yyget_leng;
|
||||
bool no_yyget_text;
|
||||
bool no_yyget_lineno;
|
||||
bool no_yyset_lineno;
|
||||
bool no_yyget_column;
|
||||
bool no_yyset_column;
|
||||
bool no_yyget_in;
|
||||
bool no_yyset_in;
|
||||
bool no_yyget_out;
|
||||
bool no_yyset_out;
|
||||
bool no_yyget_lval;
|
||||
bool no_yyset_lval;
|
||||
bool no_yyget_lloc;
|
||||
bool no_yyset_lloc;
|
||||
bool no_flex_alloc;
|
||||
bool no_flex_realloc;
|
||||
bool no_flex_free;
|
||||
bool no_get_debug;
|
||||
bool no_set_debug;
|
||||
// Properties read from the skeleton
|
||||
const char *backend_name; // What the back end tells you its name is
|
||||
const char *traceline_re; // Regular expression for recognizing tracelines */
|
||||
const char *traceline_template; // templare for emitting trace lines */
|
||||
bool have_state_entry_format; // Do we know how to make a state entry address?
|
||||
};
|
||||
|
||||
/* Environment variables. These control the lexer operation, but do
|
||||
* not have corresponding m4 symbols and do not affect the behavior of
|
||||
* the generated parser.
|
||||
*/
|
||||
struct env_bundle_t {
|
||||
bool backing_up_report; // (-b flag), generate "lex.backup" file
|
||||
// listing backing-up states
|
||||
bool did_outfilename; // whether outfilename was explicitly set
|
||||
char *headerfilename; // name of the .h file to generate
|
||||
bool nowarn; // (-w) do not generate warnings
|
||||
int performance_hint; // if > 0 (i.e., -p flag), generate a report
|
||||
// relating to scanner performance;
|
||||
// if > 1 (-p -p), report
|
||||
// on minor performance problems, too.
|
||||
char *outfilename; // output file name
|
||||
bool printstats; // (-v) dump statistics
|
||||
char *skelname; // name of skeleton for code generation
|
||||
FILE *skelfile; // the skeleton file'd descriptor
|
||||
bool trace; // (-T) env.trace processing
|
||||
bool trace_hex; // use hex in trace/debug outputs not octal
|
||||
bool use_stdout; // the -t flag
|
||||
};
|
||||
|
||||
/* Name and byte-width information on a type for code-generation purposes. */
|
||||
struct packtype_t {
|
||||
char *name;
|
||||
size_t width;
|
||||
};
|
||||
|
||||
extern struct ctrl_bundle_t ctrl;
|
||||
extern struct env_bundle_t env;
|
||||
|
||||
/* Declarations for global variables. */
|
||||
|
||||
|
||||
/* Variables for flags:
|
||||
* printstats - if true (-v), dump statistics
|
||||
* syntaxerror - true if a syntax error has been found
|
||||
* eofseen - true if we've seen an eof in the input file
|
||||
* ddebug - if true (-d), make a "debug" scanner
|
||||
* trace - if true (-T), trace processing
|
||||
* nowarn - if true (-w), do not generate warnings
|
||||
* spprdflt - if true (-s), suppress the default rule
|
||||
* interactive - if true (-I), generate an interactive scanner
|
||||
* lex_compat - if true (-l), maximize compatibility with AT&T lex
|
||||
* posix_compat - if true (-X), maximize compatibility with POSIX lex
|
||||
* do_yylineno - if true, generate code to maintain yylineno
|
||||
* useecs - if true (-Ce flag), use equivalence classes
|
||||
* fulltbl - if true (-Cf flag), don't compress the DFA state table
|
||||
* usemecs - if true (-Cm flag), use meta-equivalence classes
|
||||
* fullspd - if true (-F flag), use Jacobson method of table representation
|
||||
* gen_line_dirs - if true (i.e., no -L flag), generate #line directives
|
||||
* performance_report - if > 0 (i.e., -p flag), generate a report relating
|
||||
* to scanner performance; if > 1 (-p -p), report on minor performance
|
||||
* problems, too
|
||||
* backing_up_report - if true (i.e., -b flag), generate "lex.backup" file
|
||||
* listing backing-up states
|
||||
* C_plus_plus - if true (i.e., -+ flag), generate a C++ scanner class;
|
||||
* otherwise, a standard C scanner
|
||||
* reentrant - if true (-R), generate a reentrant C scanner.
|
||||
* bison_bridge_lval - if true (--bison-bridge), bison pure calling convention.
|
||||
* bison_bridge_lloc - if true (--bison-locations), bison yylloc.
|
||||
* long_align - if true (-Ca flag), favor long-word alignment.
|
||||
* use_read - if true (-f, -F, or -Cr) then use read() for scanner input;
|
||||
* otherwise, use fread().
|
||||
* yytext_is_array - if true (i.e., %array directive), then declare
|
||||
* yytext as a array instead of a character pointer. Nice and inefficient.
|
||||
* do_yywrap - do yywrap() processing on EOF. If false, EOF treated as
|
||||
* "no more files".
|
||||
* csize - size of character set for the scanner we're generating;
|
||||
* 128 for 7-bit chars and 256 for 8-bit
|
||||
* yymore_used - if true, yymore() is used in input rules
|
||||
* reject - if true, generate back-up tables for REJECT macro
|
||||
* real_reject - if true, scanner really uses REJECT (as opposed to just
|
||||
@ -349,40 +453,20 @@
|
||||
* yymore_really_used - whether to treat yymore() as really used, regardless
|
||||
* of what we think based on references to it in the user's actions.
|
||||
* reject_really_used - same for REJECT
|
||||
* trace_hex - use hexadecimal numbers in trace/debug outputs instead of octals
|
||||
*/
|
||||
*/
|
||||
|
||||
extern int printstats, syntaxerror, eofseen, ddebug, trace, nowarn,
|
||||
spprdflt;
|
||||
extern int interactive, lex_compat, posix_compat, do_yylineno;
|
||||
extern int useecs, fulltbl, usemecs, fullspd;
|
||||
extern int gen_line_dirs, performance_report, backing_up_report;
|
||||
extern int reentrant, bison_bridge_lval, bison_bridge_lloc;
|
||||
extern int C_plus_plus, long_align, use_read, yytext_is_array, do_yywrap;
|
||||
extern int csize;
|
||||
extern bool syntaxerror, eofseen;
|
||||
extern int yymore_used, reject, real_reject, continued_action, in_rule;
|
||||
|
||||
extern int yymore_really_used, reject_really_used;
|
||||
extern int trace_hex;
|
||||
|
||||
/* Variables used in the flex input routines:
|
||||
* datapos - characters on current output line
|
||||
* dataline - number of contiguous lines of data in current data
|
||||
* statement. Used to generate readable -f output
|
||||
* linenum - current input line number
|
||||
* skelfile - the skeleton file
|
||||
* skel - compiled-in skeleton array
|
||||
* skel_ind - index into "skel" array, if skelfile is nil
|
||||
* yyin - input file
|
||||
* backing_up_file - file to summarize backing-up states to
|
||||
* infilename - name of input file
|
||||
* outfilename - name of output file
|
||||
* headerfilename - name of the .h file to generate
|
||||
* did_outfilename - whether outfilename was explicitly set
|
||||
* prefix - the prefix used for externally visible names ("yy" by default)
|
||||
* yyclass - yyFlexLexer subclass to use for YY_DECL
|
||||
* do_stdinit - whether to initialize yyin/yyout to stdin/stdout
|
||||
* use_stdout - the -t flag
|
||||
* input_files - array holding names of input files
|
||||
* num_input_files - size of input_files array
|
||||
* program_name - name with which program was invoked
|
||||
@ -395,16 +479,13 @@ extern int trace_hex;
|
||||
* action_offset - index where the non-prolog starts in action_array
|
||||
* action_index - index where the next action should go, with respect
|
||||
* to "action_array"
|
||||
* always_interactive - if true, generate an interactive scanner
|
||||
*/
|
||||
|
||||
extern int datapos, dataline, linenum;
|
||||
extern FILE *skelfile, *backing_up_file;
|
||||
extern const char *skel[];
|
||||
extern int skel_ind;
|
||||
extern char *infilename, *outfilename, *headerfilename;
|
||||
extern int did_outfilename;
|
||||
extern char *prefix, *yyclass, *extra_type;
|
||||
extern int do_stdinit, use_stdout;
|
||||
extern char *infilename;
|
||||
extern char *extra_type;
|
||||
extern char **input_files;
|
||||
extern int num_input_files;
|
||||
extern char *program_name;
|
||||
@ -457,15 +538,20 @@ extern int onenext[ONE_STACK_SIZE], onedef[ONE_STACK_SIZE], onesp;
|
||||
* rule_has_nl - true if rule could possibly match a newline
|
||||
* ccl_has_nl - true if current ccl could match a newline
|
||||
* nlch - default eol char
|
||||
* footprint - total size of tables, in bytes.
|
||||
*/
|
||||
|
||||
extern int maximum_mns, current_mns, current_max_rules;
|
||||
extern int num_rules, num_eof_rules, default_rule, lastnfa;
|
||||
extern int *firstst, *lastst, *finalst, *transchar, *trans1, *trans2;
|
||||
extern int *accptnum, *assoc_rule, *state_type;
|
||||
extern int *rule_type, *rule_linenum, *rule_useful;
|
||||
extern bool *rule_has_nl, *ccl_has_nl;
|
||||
extern int *rule_type, *rule_linenum;
|
||||
/* rule_useful[], rule_has_nl[] and ccl_has_nl[] are boolean arrays,
|
||||
* but allocated as char arrays for size. */
|
||||
extern char *rule_useful, *rule_has_nl, *ccl_has_nl;
|
||||
extern int nlch;
|
||||
extern size_t footprint;
|
||||
|
||||
|
||||
/* Different types of states; values are useful as masks, as well, for
|
||||
* routines like check_trailing_context().
|
||||
@ -484,7 +570,7 @@ extern int current_state_type;
|
||||
/* True if the input rules include a rule with both variable-length head
|
||||
* and trailing context, false otherwise.
|
||||
*/
|
||||
extern int variable_trailing_context_rules;
|
||||
extern bool variable_trailing_context_rules;
|
||||
|
||||
|
||||
/* Variables for protos:
|
||||
@ -538,9 +624,12 @@ extern int tecfwd[CSIZE + 1], tecbck[CSIZE + 1];
|
||||
* scname - start condition name
|
||||
*/
|
||||
|
||||
extern int lastsc, *scset, *scbol, *scxclu, *sceof;
|
||||
extern int lastsc, *scset, *scbol;
|
||||
/* scxclu[] and sceof[] are boolean arrays, but allocated as char
|
||||
* arrays for size. */
|
||||
extern char *scxclu, *sceof;
|
||||
extern int current_max_scs;
|
||||
extern char **scname;
|
||||
extern const char **scname;
|
||||
|
||||
|
||||
/* Variables for dfa machine data:
|
||||
@ -605,6 +694,7 @@ extern unsigned char *ccltbl;
|
||||
|
||||
/* Variables for miscellaneous information:
|
||||
* nmstr - last NAME scanned by the scanner
|
||||
* nmval - last numeric scanned by the scanner
|
||||
* sectnum - section number currently being parsed
|
||||
* nummt - number of empty nxt/chk table entries
|
||||
* hshcol - number of hash collisions detected by snstods
|
||||
@ -624,14 +714,10 @@ extern unsigned char *ccltbl;
|
||||
*/
|
||||
|
||||
extern char nmstr[MAXLINE];
|
||||
extern int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs;
|
||||
extern int sectnum, nummt, hshcol, dfaeql, numeps, eps2, num_reallocs, nmval;
|
||||
extern int tmpuses, totnst, peakpairs, numuniq, numdup, hshsave;
|
||||
extern int num_backing_up, bol_needed;
|
||||
|
||||
#ifndef HAVE_REALLOCARRAY
|
||||
void *reallocarray(void *, size_t, size_t);
|
||||
#endif
|
||||
|
||||
void *allocate_array(int, size_t);
|
||||
void *reallocate_array(void *, int, size_t);
|
||||
|
||||
@ -641,30 +727,18 @@ void *reallocate_array(void *, int, size_t);
|
||||
#define reallocate_integer_array(array,size) \
|
||||
reallocate_array((void *) array, size, sizeof(int))
|
||||
|
||||
#define allocate_bool_array(size) \
|
||||
allocate_array(size, sizeof(bool))
|
||||
|
||||
#define reallocate_bool_array(array,size) \
|
||||
reallocate_array((void *) array, size, sizeof(bool))
|
||||
|
||||
#define allocate_int_ptr_array(size) \
|
||||
allocate_array(size, sizeof(int *))
|
||||
|
||||
#define allocate_char_ptr_array(size) \
|
||||
allocate_array(size, sizeof(char *))
|
||||
|
||||
#define allocate_dfaacc_union(size) \
|
||||
allocate_array(size, sizeof(union dfaacc_union))
|
||||
|
||||
#define reallocate_int_ptr_array(array,size) \
|
||||
reallocate_array((void *) array, size, sizeof(int *))
|
||||
|
||||
#define reallocate_char_ptr_array(array,size) \
|
||||
reallocate_array((void *) array, size, sizeof(char *))
|
||||
|
||||
#define reallocate_dfaacc_union(array, size) \
|
||||
reallocate_array((void *) array, size, sizeof(union dfaacc_union))
|
||||
|
||||
#define allocate_character_array(size) \
|
||||
allocate_array( size, sizeof(char))
|
||||
|
||||
@ -695,22 +769,10 @@ extern void list_character_set(FILE *, int[]);
|
||||
|
||||
/* from file dfa.c */
|
||||
|
||||
/* Check a DFA state for backing up. */
|
||||
extern void check_for_backing_up(int, int[]);
|
||||
|
||||
/* Check to see if NFA state set constitutes "dangerous" trailing context. */
|
||||
extern void check_trailing_context(int *, int, int *, int);
|
||||
|
||||
/* Construct the epsilon closure of a set of ndfa states. */
|
||||
extern int *epsclosure(int *, int *, int[], int *, int *);
|
||||
|
||||
/* Increase the maximum number of dfas. */
|
||||
extern void increase_max_dfas(void);
|
||||
|
||||
extern void ntod(void); /* convert a ndfa to a dfa */
|
||||
|
||||
/* Converts a set of ndfa states into a dfa state. */
|
||||
extern int snstods(int[], int, int[], int, int, int *);
|
||||
extern size_t ntod(void); /* convert a ndfa to a dfa */
|
||||
|
||||
|
||||
/* from file ecs.c */
|
||||
@ -730,48 +792,20 @@ extern void mkechar(int, int[], int[]);
|
||||
|
||||
/* from file gen.c */
|
||||
|
||||
extern void do_indent(void); /* indent to the current level */
|
||||
/* Set a conditional amd make it visible in generated code */
|
||||
extern void visible_define (const char *);
|
||||
|
||||
/* Generate the code to keep backing-up information. */
|
||||
extern void gen_backing_up(void);
|
||||
/* And again, with an explicit value part. */
|
||||
extern void visible_define_str (const char *, const char *);
|
||||
|
||||
/* Generate the code to perform the backing up. */
|
||||
extern void gen_bu_action(void);
|
||||
/* This time the value part is an int */
|
||||
extern void visible_define_int (const char *, const int);
|
||||
|
||||
/* Generate full speed compressed transition table. */
|
||||
extern void genctbl(void);
|
||||
|
||||
/* Generate the code to find the action number. */
|
||||
extern void gen_find_action(void);
|
||||
|
||||
extern void genftbl(void); /* generate full transition table */
|
||||
|
||||
/* Generate the code to find the next compressed-table state. */
|
||||
extern void gen_next_compressed_state(char *);
|
||||
|
||||
/* Generate the code to find the next match. */
|
||||
extern void gen_next_match(void);
|
||||
|
||||
/* Generate the code to find the next state. */
|
||||
extern void gen_next_state(int);
|
||||
|
||||
/* Generate the code to make a NUL transition. */
|
||||
extern void gen_NUL_trans(void);
|
||||
|
||||
/* Generate the code to find the start state. */
|
||||
extern void gen_start_state(void);
|
||||
|
||||
/* Generate data statements for the transition tables. */
|
||||
extern void gentabs(void);
|
||||
|
||||
/* Write out a formatted string at the current indentation level. */
|
||||
extern void indent_put2s(const char *, const char *);
|
||||
|
||||
/* Write out a string + newline at the current indentation level. */
|
||||
extern void indent_puts(const char *);
|
||||
|
||||
extern void make_tables(void); /* generate transition tables */
|
||||
/* generate transition tables */
|
||||
extern void make_tables(void);
|
||||
|
||||
/* Select a type for optimal packing */
|
||||
struct packtype_t *optimize_pack(size_t);
|
||||
|
||||
/* from file main.c */
|
||||
|
||||
@ -782,9 +816,6 @@ extern void usage(void);
|
||||
|
||||
/* from file misc.c */
|
||||
|
||||
/* Add a #define to the action file. */
|
||||
extern void action_define(const char *defname, int value);
|
||||
|
||||
/* Add the given text to the stored actions. */
|
||||
extern void add_action(const char *new_text);
|
||||
|
||||
@ -810,7 +841,7 @@ extern char *xstrdup(const char *);
|
||||
extern int cclcmp(const void *, const void *);
|
||||
|
||||
/* Finish up a block of data declarations. */
|
||||
extern void dataend(void);
|
||||
extern void dataend(const char *);
|
||||
|
||||
/* Flush generated data statements. */
|
||||
extern void dataflush(void);
|
||||
@ -822,7 +853,7 @@ extern void flexerror(const char *);
|
||||
extern void flexfatal(const char *);
|
||||
|
||||
/* Report a fatal error with a pinpoint, and terminate */
|
||||
#if HAVE_DECL___FUNC__
|
||||
#ifdef HAVE_DECL___FUNC__
|
||||
#define flex_die(msg) \
|
||||
do{ \
|
||||
fprintf (stderr,\
|
||||
@ -842,9 +873,6 @@ extern void flexfatal(const char *);
|
||||
}while(0)
|
||||
#endif /* ! HAVE_DECL___func__ */
|
||||
|
||||
/* Convert a hexadecimal digit string to an integer value. */
|
||||
extern unsigned int htoui(unsigned char[]);
|
||||
|
||||
/* Report an error message formatted */
|
||||
extern void lerr(const char *, ...)
|
||||
#if defined(__GNUC__) && __GNUC__ >= 3
|
||||
@ -860,7 +888,7 @@ extern void lerr_fatal(const char *, ...)
|
||||
;
|
||||
|
||||
/* Spit out a "#line" statement. */
|
||||
extern void line_directive_out(FILE *, int);
|
||||
extern void line_directive_out(FILE *, char *, int);
|
||||
|
||||
/* Mark the current position in the action array as the end of the section 1
|
||||
* user defs.
|
||||
@ -870,7 +898,7 @@ extern void mark_defs1(void);
|
||||
/* Mark the current position in the action array as the end of the prolog. */
|
||||
extern void mark_prolog(void);
|
||||
|
||||
/* Generate a data statment for a two-dimensional array. */
|
||||
/* Generate a data statement for a two-dimensional array. */
|
||||
extern void mk2data(int);
|
||||
|
||||
extern void mkdata(int); /* generate a data statement */
|
||||
@ -881,16 +909,12 @@ extern int myctoi(const char *);
|
||||
/* Return character corresponding to escape sequence. */
|
||||
extern unsigned char myesc(unsigned char[]);
|
||||
|
||||
/* Convert an octal digit string to an integer value. */
|
||||
extern unsigned int otoui(unsigned char[]);
|
||||
|
||||
/* Output a (possibly-formatted) string to the generated scanner. */
|
||||
extern void out(const char *);
|
||||
extern void out_dec(const char *, int);
|
||||
extern void out_dec2(const char *, int, int);
|
||||
extern void out_hex(const char *, unsigned int);
|
||||
extern void out_str(const char *, const char *);
|
||||
extern void out_str3(const char *, const char *, const char *, const char *);
|
||||
extern void out_str_dec(const char *, const char *, int);
|
||||
extern void outc(int);
|
||||
extern void outn(const char *);
|
||||
@ -901,9 +925,6 @@ extern void out_m4_define(const char* def, const char* val);
|
||||
*/
|
||||
extern char *readable_form(int);
|
||||
|
||||
/* Write out one section of the skeleton file. */
|
||||
extern void skelout(void);
|
||||
|
||||
/* Output a yy_trans_info structure. */
|
||||
extern void transition_struct_out(int, int);
|
||||
|
||||
@ -923,7 +944,7 @@ extern int copysingl(int, int);
|
||||
extern void dumpnfa(int);
|
||||
|
||||
/* Finish up the processing for a rule. */
|
||||
extern void finish_rule(int, int, int, int, int);
|
||||
extern void finish_rule(int, bool, int, int, int);
|
||||
|
||||
/* Connect two machines together. */
|
||||
extern int link_machines(int, int);
|
||||
@ -974,9 +995,12 @@ extern void line_pinpoint(const char *, int);
|
||||
extern void format_synerr(const char *, const char *);
|
||||
extern void synerr(const char *); /* report a syntax error */
|
||||
extern void format_warn(const char *, const char *);
|
||||
extern void warn(const char *); /* report a warning */
|
||||
extern void lwarn(const char *); /* report a warning */
|
||||
extern void yyerror(const char *); /* report a parse error */
|
||||
extern int yyparse(void); /* the YACC parser */
|
||||
|
||||
/* Ship a comment to the generated output */
|
||||
extern void comment(const char *);
|
||||
|
||||
/* from file scan.l */
|
||||
|
||||
@ -986,6 +1010,22 @@ extern int flexscan(void);
|
||||
/* Open the given file (if NULL, stdin) for scanning. */
|
||||
extern void set_input_file(char *);
|
||||
|
||||
/* from file skeletons.c */
|
||||
|
||||
/* return the correct file suffix for the selected back end */
|
||||
const char *suffix (void);
|
||||
|
||||
/* Mine a text-valued property out of the skeleton file */
|
||||
extern const char *skel_property(const char *);
|
||||
|
||||
/* Is the default back end selected?*/
|
||||
extern bool is_default_backend(void);
|
||||
|
||||
/* Select a backend by name */
|
||||
extern void backend_by_name(const char *);
|
||||
|
||||
/* Write out one section of the skeleton file. */
|
||||
extern void skelout(bool);
|
||||
|
||||
/* from file sym.c */
|
||||
|
||||
@ -1000,11 +1040,13 @@ extern char *ndlookup(const char *); /* lookup a name definition */
|
||||
|
||||
/* Increase maximum number of SC's. */
|
||||
extern void scextend(void);
|
||||
extern void scinstal(const char *, int); /* make a start condition */
|
||||
extern void scinstal(const char *, bool); /* make a start condition */
|
||||
|
||||
/* Lookup the number associated with a start condition. */
|
||||
extern int sclookup(const char *);
|
||||
|
||||
/* Supply context argument for a function if required */
|
||||
extern void context_call(char *);
|
||||
|
||||
/* from file tblcmp.c */
|
||||
|
||||
@ -1048,22 +1090,12 @@ struct Buf {
|
||||
extern void buf_init(struct Buf * buf, size_t elem_size);
|
||||
extern void buf_destroy(struct Buf * buf);
|
||||
extern struct Buf *buf_append(struct Buf * buf, const void *ptr, int n_elem);
|
||||
extern struct Buf *buf_concat(struct Buf* dest, const struct Buf* src);
|
||||
extern struct Buf *buf_strappend(struct Buf *, const char *str);
|
||||
extern struct Buf *buf_strnappend(struct Buf *, const char *str, int nchars);
|
||||
extern struct Buf *buf_strdefine(struct Buf * buf, const char *str, const char *def);
|
||||
extern struct Buf *buf_prints(struct Buf *buf, const char *fmt, const char* s);
|
||||
extern struct Buf *buf_m4_define(struct Buf *buf, const char* def, const char* val);
|
||||
extern struct Buf *buf_m4_undefine(struct Buf *buf, const char* def);
|
||||
extern struct Buf *buf_print_strings(struct Buf * buf, FILE* out);
|
||||
extern struct Buf *buf_linedir(struct Buf *buf, const char* filename, int lineno);
|
||||
|
||||
extern struct Buf userdef_buf; /* a string buffer for #define's generated by user-options on cmd line. */
|
||||
extern struct Buf defs_buf; /* a char* buffer to save #define'd some symbols generated by flex. */
|
||||
extern struct Buf yydmap_buf; /* a string buffer to hold yydmap elements */
|
||||
extern struct Buf m4defs_buf; /* Holds m4 definitions. */
|
||||
extern struct Buf top_buf; /* contains %top code. String buffer. */
|
||||
extern bool no_section3_escape; /* True if the undocumented option --unsafe-no-m4-sect3-escape was passed */
|
||||
|
||||
/* For blocking out code from the header file. */
|
||||
#define OUT_BEGIN_CODE() outn("m4_ifdef( [[M4_YY_IN_HEADER]],,[[m4_dnl")
|
||||
@ -1133,8 +1165,8 @@ extern int filter_fix_linedirs(struct filter *chain);
|
||||
* From "regex.c"
|
||||
*/
|
||||
|
||||
extern regex_t regex_linedir, regex_blank_line;
|
||||
bool flex_init_regex(void);
|
||||
extern regex_t regex_linedir;
|
||||
bool flex_init_regex(const char *);
|
||||
void flex_regcomp(regex_t *preg, const char *regex, int cflags);
|
||||
char *regmatch_dup (regmatch_t * m, const char *src);
|
||||
char *regmatch_cpy (regmatch_t * m, char *dest, const char *src);
|
||||
|
||||
@ -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 */
|
||||
|
||||
59
src/flexint_shared.h
Normal file
59
src/flexint_shared.h
Normal file
@ -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 */
|
||||
@ -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>
|
||||
|
||||
2393
src/go-flex.skl
Normal file
2393
src/go-flex.skl
Normal file
File diff suppressed because it is too large
Load Diff
8
src/libfl.pc.in
Normal file
8
src/libfl.pc.in
Normal file
@ -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
|
||||
1837
src/main.c
1837
src/main.c
File diff suppressed because it is too large
Load Diff
378
src/misc.c
378
src/misc.c
@ -30,102 +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 = malloc(sizeof(struct sko_state) * (size_t) sko_sz);
|
||||
if (!sko_stack)
|
||||
flexfatal(_("allocation of sko_stack failed"));
|
||||
sko_len = 0;
|
||||
}
|
||||
if(sko_len >= sko_sz){
|
||||
sko_sz *= 2;
|
||||
sko_stack = realloc(sko_stack,
|
||||
sizeof(struct sko_state) * (size_t) 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 (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 = xstrdup(defname);
|
||||
buf_append (&defs_buf, &cpy, 1);
|
||||
}
|
||||
|
||||
/* Append "new_text" to the running buffer. */
|
||||
void add_action (const char *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,
|
||||
@ -142,15 +63,7 @@ void add_action (const char *new_text)
|
||||
|
||||
void *allocate_array (int size, size_t element_size)
|
||||
{
|
||||
void *mem;
|
||||
size_t num_bytes = element_size * (size_t) size;
|
||||
|
||||
mem = malloc(num_bytes);
|
||||
if (!mem)
|
||||
flexfatal (_
|
||||
("memory allocation failed in allocate_array()"));
|
||||
|
||||
return mem;
|
||||
return reallocate_array(NULL, size, element_size);
|
||||
}
|
||||
|
||||
|
||||
@ -201,7 +114,7 @@ void check_char (int c)
|
||||
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));
|
||||
@ -232,19 +145,19 @@ char *xstrdup(const char *s)
|
||||
|
||||
int cclcmp (const void *a, const void *b)
|
||||
{
|
||||
if (!*(const unsigned char *) a)
|
||||
return 1;
|
||||
else
|
||||
if (!*(const unsigned char *) b)
|
||||
return - 1;
|
||||
if (!*(const unsigned char *) a)
|
||||
return 1;
|
||||
else
|
||||
return *(const unsigned char *) a - *(const unsigned 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)
|
||||
void dataend (const char *endit)
|
||||
{
|
||||
/* short circuit any output */
|
||||
if (gentables) {
|
||||
@ -253,7 +166,8 @@ void dataend (void)
|
||||
dataflush ();
|
||||
|
||||
/* add terminator for initialization; { for vi */
|
||||
outn (" } ;\n");
|
||||
if (endit)
|
||||
outn (endit);
|
||||
}
|
||||
dataline = 0;
|
||||
datapos = 0;
|
||||
@ -264,11 +178,10 @@ void dataend (void)
|
||||
|
||||
void dataflush (void)
|
||||
{
|
||||
/* short circuit any output */
|
||||
if (!gentables)
|
||||
return;
|
||||
assert (gentables);
|
||||
|
||||
outc ('\n');
|
||||
if (datapos > 0)
|
||||
outc ('\n');
|
||||
|
||||
if (++dataline >= NUMDATALINES) {
|
||||
/* Put out a blank line so that the table is grouped into
|
||||
@ -302,18 +215,6 @@ void flexfatal (const char *msg)
|
||||
}
|
||||
|
||||
|
||||
/* htoui - convert a hexadecimal digit string to an unsigned integer value */
|
||||
|
||||
unsigned int htoui (unsigned char str[])
|
||||
{
|
||||
unsigned int result;
|
||||
|
||||
(void) sscanf ((char *) str, "%x", &result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/* lerr - report an error message */
|
||||
|
||||
void lerr (const char *msg, ...)
|
||||
@ -342,21 +243,20 @@ void lerr_fatal (const char *msg, ...)
|
||||
}
|
||||
|
||||
|
||||
/* line_directive_out - spit out a "#line" statement */
|
||||
|
||||
void line_directive_out (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];
|
||||
@ -371,10 +271,10 @@ void line_directive_out (FILE *output_file, int 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
|
||||
@ -432,7 +332,7 @@ void mk2data (int value)
|
||||
out (" ");
|
||||
|
||||
else
|
||||
outc (',');
|
||||
outc (',');
|
||||
|
||||
++datapos;
|
||||
|
||||
@ -461,7 +361,6 @@ void mkdata (int value)
|
||||
out (" ");
|
||||
else
|
||||
outc (',');
|
||||
|
||||
++datapos;
|
||||
|
||||
out_dec ("%5d", value);
|
||||
@ -513,18 +412,14 @@ unsigned char myesc (unsigned char array[])
|
||||
int sptr = 1;
|
||||
|
||||
while (sptr <= 3 &&
|
||||
isascii (array[sptr]) &&
|
||||
isdigit (array[sptr]))
|
||||
/* Don't increment inside loop control
|
||||
* because if isdigit() is a macro it might
|
||||
* expand into multiple increments ...
|
||||
*/
|
||||
array[sptr] >= '0' && array[sptr] <= '7') {
|
||||
++sptr;
|
||||
}
|
||||
|
||||
c = array[sptr];
|
||||
array[sptr] = '\0';
|
||||
|
||||
esc_char = (unsigned char) otoui (array + 1);
|
||||
esc_char = (unsigned char) strtoul (array + 1, NULL, 8);
|
||||
|
||||
array[sptr] = c;
|
||||
|
||||
@ -535,18 +430,18 @@ unsigned char myesc (unsigned char 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 = (unsigned char) htoui (array + 2);
|
||||
esc_char = (unsigned char) strtoul (array + 2, NULL, 16);
|
||||
|
||||
array[sptr] = c;
|
||||
|
||||
@ -559,18 +454,7 @@ unsigned char myesc (unsigned char array[])
|
||||
}
|
||||
|
||||
|
||||
/* otoui - convert an octal digit string to an unsigned integer value */
|
||||
|
||||
unsigned int otoui (unsigned char str[])
|
||||
{
|
||||
unsigned int result;
|
||||
|
||||
(void) sscanf ((char *) str, "%o", &result);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/* out - various flavors of outputing a (possibly formatted) string for the
|
||||
/* out - various flavors of outputting a (possibly formatted) string for the
|
||||
* generated scanner, keeping track of the line count.
|
||||
*/
|
||||
|
||||
@ -599,11 +483,6 @@ void out_str (const char *fmt, const char str[])
|
||||
fprintf (stdout,fmt, str);
|
||||
}
|
||||
|
||||
void out_str3 (const char *fmt, const char s1[], const char s2[], const char s3[])
|
||||
{
|
||||
fprintf (stdout,fmt, s1, s2, s3);
|
||||
}
|
||||
|
||||
void out_str_dec (const char *fmt, const char str[], int n)
|
||||
{
|
||||
fprintf (stdout,fmt, str, n);
|
||||
@ -657,7 +536,7 @@ char *readable_form (int c)
|
||||
case '\v':
|
||||
return "\\v";
|
||||
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);
|
||||
@ -682,147 +561,36 @@ char *readable_form (int c)
|
||||
void *reallocate_array (void *array, int size, size_t element_size)
|
||||
{
|
||||
void *new_array;
|
||||
size_t num_bytes = element_size * (size_t) size;
|
||||
|
||||
new_array = realloc(array, num_bytes);
|
||||
if (!new_array)
|
||||
flexfatal (_("attempt to increase array size failed"));
|
||||
|
||||
#ifdef HAVE_REALLOCARR
|
||||
new_array = array;
|
||||
if (reallocarr(&new_array, (size_t) size, element_size)) {
|
||||
flexfatal ((array) ?
|
||||
_("attempt to increase array size failed") :
|
||||
/* Function name is allocate_array() because of
|
||||
* compatibility (for translations): */
|
||||
_("memory allocation failed in allocate_array()"));
|
||||
}
|
||||
#else
|
||||
# ifdef 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 ((array) ?
|
||||
_("attempt to increase array size failed") :
|
||||
/* Function name is allocate_array() because of
|
||||
* compatibility (for translations): */
|
||||
_("memory allocation failed in allocate_array()"));
|
||||
}
|
||||
#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 (void)
|
||||
{
|
||||
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
|
||||
@ -836,7 +604,8 @@ void transition_struct_out (int element_v, int element_n)
|
||||
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;
|
||||
|
||||
@ -889,3 +658,20 @@ char *chomp (char *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');
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -21,16 +21,32 @@
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
# PURPOSE.
|
||||
|
||||
echo '/* File created from flex.skl via mkskel.sh */
|
||||
if test ! $# = 4; then
|
||||
echo 'Usage: mkskel.sh lang srcdir m4 version' >&2
|
||||
exit 1
|
||||
fi
|
||||
lang=$1
|
||||
srcdir=$2
|
||||
m4=$3
|
||||
VERSION=$(echo $4 | cut -d '-' -f 1)
|
||||
case $VERSION in
|
||||
*[!0-9.]*) echo 'Invalid version number' >&2; exit 1;;
|
||||
esac
|
||||
|
||||
#include "flexdef.h"
|
||||
cr=`printf '\r'`
|
||||
|
||||
const char *skel[] = {'
|
||||
|
||||
sed 's/m4_/m4preproc_/g
|
||||
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/.*/ "&",/'
|
||||
|
||||
echo ' 0
|
||||
};'
|
||||
s/[^'"$cr"']*/ "&",/'
|
||||
|
||||
48
src/nfa.c
48
src/nfa.c
@ -191,7 +191,7 @@ int dupmachine (int mach)
|
||||
* context has variable length.
|
||||
*/
|
||||
|
||||
void finish_rule (int mach, int variable_trail_rule, int headcnt, int trailcnt,
|
||||
void finish_rule (int mach, bool variable_trail_rule, int headcnt, int trailcnt,
|
||||
int pcont_act)
|
||||
{
|
||||
char action_text[MAXLINE];
|
||||
@ -216,10 +216,10 @@ void finish_rule (int mach, int variable_trail_rule, int headcnt, int trailcn
|
||||
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);
|
||||
}
|
||||
@ -228,7 +228,7 @@ void finish_rule (int mach, int variable_trail_rule, int headcnt, int trailcn
|
||||
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"),
|
||||
@ -244,49 +244,45 @@ void finish_rule (int mach, int variable_trail_rule, int headcnt, int trailcn
|
||||
/* 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(NULL, 1);
|
||||
line_directive_out(NULL, infilename, linenum);
|
||||
add_action("[[");
|
||||
}
|
||||
|
||||
@ -499,6 +495,8 @@ int mkor (int first, int second)
|
||||
}
|
||||
}
|
||||
|
||||
firstst[first] = MIN(firstst[first], firstst[second]);
|
||||
|
||||
finalst[first] = orend;
|
||||
return first;
|
||||
}
|
||||
@ -644,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;
|
||||
@ -689,10 +687,10 @@ void new_rule (void)
|
||||
current_max_rules);
|
||||
rule_linenum = reallocate_integer_array (rule_linenum,
|
||||
current_max_rules);
|
||||
rule_useful = reallocate_integer_array (rule_useful,
|
||||
current_max_rules);
|
||||
rule_has_nl = reallocate_bool_array (rule_has_nl,
|
||||
current_max_rules);
|
||||
rule_useful = reallocate_array(rule_useful,
|
||||
current_max_rules, sizeof(char));
|
||||
rule_has_nl = reallocate_array(rule_has_nl,
|
||||
current_max_rules, sizeof(char));
|
||||
}
|
||||
|
||||
if (num_rules > MAX_RULE)
|
||||
|
||||
@ -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}
|
||||
@ -229,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}
|
||||
,
|
||||
@ -255,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}
|
||||
@ -271,6 +287,10 @@ 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. */
|
||||
|
||||
@ -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,
|
||||
@ -77,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,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user