mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 08:58:55 -06:00
Compare commits
729 Commits
experiment
...
somali-ver
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b336c2453 | ||
|
|
8b8564e828 | ||
|
|
722c077eb6 | ||
|
|
7c334847a5 | ||
|
|
ea4249752e | ||
|
|
8a12362649 | ||
|
|
0e09cf9b4a | ||
|
|
7c9b6d0d02 | ||
|
|
e7559884e0 | ||
|
|
70cbbe689d | ||
|
|
fcfb60b6e5 | ||
|
|
7cae261a97 | ||
|
|
bd6faa569e | ||
|
|
a429a9bb9c | ||
|
|
a5929da02c | ||
|
|
ed61647f86 | ||
|
|
ccdb58de21 | ||
|
|
a66d15a0ea | ||
|
|
760210c219 | ||
|
|
2d429489bb | ||
|
|
8b1309c99d | ||
|
|
654e02da7e | ||
|
|
efdc35f22f | ||
|
|
260582b58a | ||
|
|
edfe72514b | ||
|
|
95e7996a2d | ||
|
|
1c0a4f98ed | ||
|
|
ac2c5c52ac | ||
|
|
5ea609092b | ||
|
|
95364e667c | ||
|
|
9c96fc6653 | ||
|
|
69d5b80f23 | ||
|
|
1b9b15fbed | ||
|
|
14955ff5d4 | ||
|
|
e192627e24 | ||
|
|
1c496a719b | ||
|
|
306951280a | ||
|
|
1da671016b | ||
|
|
817f6702b1 | ||
|
|
2551040b5a | ||
|
|
98e3aa8c61 | ||
|
|
1c927b1bf1 | ||
|
|
bd23dfa08d | ||
|
|
bd93d8296d | ||
|
|
4334bb0846 | ||
|
|
33e9e60b3a | ||
|
|
9ca05bae95 | ||
|
|
b462d7893f | ||
|
|
2fcd5bd3ae | ||
|
|
4a56f8e3fd | ||
|
|
cb397987fc | ||
|
|
a5f3e9ebd2 | ||
|
|
b845b174c0 | ||
|
|
7ec7a831f3 | ||
|
|
a2aca74dd6 | ||
|
|
b4a2f686bb | ||
|
|
1ad71e10b1 | ||
|
|
87b6bf9f0a | ||
|
|
bfb016b3ea | ||
|
|
a8b061926b | ||
|
|
61c120f531 | ||
|
|
6743078f6d | ||
|
|
dab2749b82 | ||
|
|
7ca6505762 | ||
|
|
0eeaf5bce7 | ||
|
|
ebd4a462eb | ||
|
|
5ed93e6a03 | ||
|
|
fd51156369 | ||
|
|
ee01aa1cd5 | ||
|
|
f53078dbad | ||
|
|
b17d353994 | ||
|
|
b2f8d2e9dd | ||
|
|
ea149d63f1 | ||
|
|
36235ca3a9 | ||
|
|
77b370cbcf | ||
|
|
23afeee87c | ||
|
|
a741e192e2 | ||
|
|
ef1d9a0cbc | ||
|
|
7b3b49400a | ||
|
|
e49c64bac9 | ||
|
|
65e5b78edd | ||
|
|
c6f6a749b5 | ||
|
|
f807a16b46 | ||
|
|
828bf9c677 | ||
|
|
a6faaeb351 | ||
|
|
3ea7af5cb8 | ||
|
|
8c3375b67b | ||
|
|
14cabc847a | ||
|
|
3116d6887a | ||
|
|
73a73d66d9 | ||
|
|
f8dfc34895 | ||
|
|
4ceb822713 | ||
|
|
1c8127bcc2 | ||
|
|
a4c3da9e34 | ||
|
|
21e84c764c | ||
|
|
7085acacc9 | ||
|
|
d0e433cd46 | ||
|
|
b319bb1e96 | ||
|
|
79b67f620b | ||
|
|
7066d2f6bb | ||
|
|
c052380eda | ||
|
|
52184784c8 | ||
|
|
23f8429019 | ||
|
|
a2df258331 | ||
|
|
b96f4c9841 | ||
|
|
0f47122ba9 | ||
|
|
7d9d2a2b5c | ||
|
|
a718a92485 | ||
|
|
b066fb4d35 | ||
|
|
30d90909d5 | ||
|
|
7cc24e3d88 | ||
|
|
54d4a762d6 | ||
|
|
96f4543c4c | ||
|
|
dc19b6a88a | ||
|
|
43a742c91e | ||
|
|
c20e9b6383 | ||
|
|
8755f9da65 | ||
|
|
14351f2767 | ||
|
|
c656f91f93 | ||
|
|
8811da5e51 | ||
|
|
8fc2460af6 | ||
|
|
60c733bd35 | ||
|
|
47eca9545b | ||
|
|
a27e502233 | ||
|
|
0b7ad68400 | ||
|
|
ac3b8bba6b | ||
|
|
83d1ef4fa0 | ||
|
|
e80c399b0f | ||
|
|
2ef266052f | ||
|
|
5a6701cda8 | ||
|
|
235fd0570f | ||
|
|
54713a2987 | ||
|
|
d8e313c75c | ||
|
|
b1a1961454 | ||
|
|
13fac41ce6 | ||
|
|
7c2c519e50 | ||
|
|
44fdb933aa | ||
|
|
b5ea76dd79 | ||
|
|
7a0b1eed34 | ||
|
|
3eac1b9d0c | ||
|
|
ae2b3bec29 | ||
|
|
e7a5daa17f | ||
|
|
0500091297 | ||
|
|
bca75fae7b | ||
|
|
912de3f664 | ||
|
|
70d9c74279 | ||
|
|
0c57e45540 | ||
|
|
5dde3189e3 | ||
|
|
2340a98507 | ||
|
|
67d5bb9714 | ||
|
|
96717e5785 | ||
|
|
c5606ff55d | ||
|
|
fc1ca4b8f1 | ||
|
|
d953c0f503 | ||
|
|
5645134aa3 | ||
|
|
fe2c221e7b | ||
|
|
8eea5d481f | ||
|
|
34300d68bb | ||
|
|
d49405b405 | ||
|
|
c86481df61 | ||
|
|
ff54d2e7ad | ||
|
|
018fe16e2b | ||
|
|
14d090b15f | ||
|
|
04fb507c9a | ||
|
|
1e73c0b2c7 | ||
|
|
40b28cf858 | ||
|
|
9cdb7ec37b | ||
|
|
a6cfe58398 | ||
|
|
81218506d9 | ||
|
|
3bcb34559e | ||
|
|
4beacc0f64 | ||
|
|
e9940f32c5 | ||
|
|
444bf51e09 | ||
|
|
9cfc36fc73 | ||
|
|
607f4d68ae | ||
|
|
7fc42192d7 | ||
|
|
43fbf928fd | ||
|
|
afe76e1fe0 | ||
|
|
728bb1faf9 | ||
|
|
f634af931e | ||
|
|
df93a21d79 | ||
|
|
de2989d7c6 | ||
|
|
529f315c7a | ||
|
|
1379ba6c77 | ||
|
|
d3de861e86 | ||
|
|
1b5840c89d | ||
|
|
e4a195a777 | ||
|
|
865dadbc64 | ||
|
|
1b9c4613bf | ||
|
|
2092bb64d8 | ||
|
|
4fec15272c | ||
|
|
ad34d3f209 | ||
|
|
41de2cc021 | ||
|
|
d43be53e18 | ||
|
|
f2c1fede4f | ||
|
|
ef771d62fa | ||
|
|
33ce949606 | ||
|
|
0502797cb0 | ||
|
|
9fe3ffce2b | ||
|
|
08dfe78f2f | ||
|
|
4a2a556162 | ||
|
|
8a87dc210c | ||
|
|
d48cf92359 | ||
|
|
d5e5edb02f | ||
|
|
3026b8b59a | ||
|
|
c4f39c0a74 | ||
|
|
ddf6d0d30d | ||
|
|
4c03a40aef | ||
|
|
8073d2a91b | ||
|
|
6421fb7ee9 | ||
|
|
149407d19b | ||
|
|
20275832ad | ||
|
|
02d3752a26 | ||
|
|
bec96b267d | ||
|
|
6f3a72aa1d | ||
|
|
b7363f9219 | ||
|
|
5c84ce9623 | ||
|
|
edcef16eb1 | ||
|
|
08ac422d9a | ||
|
|
a6e0875878 | ||
|
|
a9c18fc48c | ||
|
|
85960e0416 | ||
|
|
cff79f72c5 | ||
|
|
c712efc8eb | ||
|
|
3e79ab25e1 | ||
|
|
a1c85431be | ||
|
|
967a8fb8a1 | ||
|
|
2418e8cfcf | ||
|
|
5a8eda803d | ||
|
|
bcd7a09864 | ||
|
|
7dd63173f2 | ||
|
|
a59ed0e0e2 | ||
|
|
e80cd82870 | ||
|
|
ee5c842972 | ||
|
|
4e204d66a8 | ||
|
|
0bae53b0b9 | ||
|
|
b2cc67aef5 | ||
|
|
21259015e0 | ||
|
|
e06c3433b9 | ||
|
|
5eb333ce6a | ||
|
|
41d4b7fabd | ||
|
|
46509b93a3 | ||
|
|
cb016ea750 | ||
|
|
58255b27bf | ||
|
|
ccdc04992e | ||
|
|
06593c5fb9 | ||
|
|
c9ee6f3d82 | ||
|
|
9f3b45bf48 | ||
|
|
86fca40ac2 | ||
|
|
f58d0358cc | ||
|
|
c80899e07e | ||
|
|
f67c3ec838 | ||
|
|
f1e14bbd5f | ||
|
|
263ee4319d | ||
|
|
783e2f3831 | ||
|
|
91b0578221 | ||
|
|
8b05843585 | ||
|
|
d14de723d0 | ||
|
|
bc206fcbfe | ||
|
|
d35a709eb7 | ||
|
|
0245dc2d59 | ||
|
|
7fe4fd01f5 | ||
|
|
184497284d | ||
|
|
9400e0ed21 | ||
|
|
bf213bf77e | ||
|
|
828ea2545c | ||
|
|
4db945a500 | ||
|
|
83fed4e812 | ||
|
|
65ddced771 | ||
|
|
c0daf6d0ba | ||
|
|
f9a633ea52 | ||
|
|
5aff25b37f | ||
|
|
95bc972f44 | ||
|
|
bd060578d6 | ||
|
|
e853942d43 | ||
|
|
cc4aef88f9 | ||
|
|
27073a6c0c | ||
|
|
8495ed2f06 | ||
|
|
e1130eb279 | ||
|
|
40caeea67f | ||
|
|
dd5b34492a | ||
|
|
cf9e2cdd7f | ||
|
|
42a6de9803 | ||
|
|
5679eeb1fb | ||
|
|
dd05feeac0 | ||
|
|
916cca5d22 | ||
|
|
613a159591 | ||
|
|
79ea965fc4 | ||
|
|
facd4727cf | ||
|
|
0d4b92a006 | ||
|
|
8b876cf74c | ||
|
|
8b14dcf6ba | ||
|
|
4e8ff8e7fd | ||
|
|
76f23214c1 | ||
|
|
e8503511ca | ||
|
|
b1b752673d | ||
|
|
219de4ca9a | ||
|
|
31c31b3e69 | ||
|
|
983274d239 | ||
|
|
0aaa38e051 | ||
|
|
1f7e16642b | ||
|
|
0e8ac21976 | ||
|
|
b8ddf4304b | ||
|
|
a72600b27c | ||
|
|
b3d1ccbc40 | ||
|
|
5eafffb8fe | ||
|
|
61cb94443a | ||
|
|
7778e6138c | ||
|
|
ffd1f28b42 | ||
|
|
1d033679f2 | ||
|
|
bf33191c88 | ||
|
|
9fa07fb22d | ||
|
|
4df65b593e | ||
|
|
0c659deae3 | ||
|
|
5e308e7aa7 | ||
|
|
e0b4d6940a | ||
|
|
57e6f8f244 | ||
|
|
5c415fc913 | ||
|
|
57490c18d2 | ||
|
|
fe5c124602 | ||
|
|
7f58e8ec8b | ||
|
|
460ec475bd | ||
|
|
4e947e4ce8 | ||
|
|
0dbb5e4ee8 | ||
|
|
734d000b4d | ||
|
|
bbf109a473 | ||
|
|
3aefd51280 | ||
|
|
5f8a21dc08 | ||
|
|
b7b4c08e8a | ||
|
|
92bfa85a49 | ||
|
|
9a6301691d | ||
|
|
1b02447b44 | ||
|
|
565cd8fa61 | ||
|
|
b26e6e1c9f | ||
|
|
e4e304d551 | ||
|
|
33ffc1db48 | ||
|
|
88ae0d5093 | ||
|
|
066a9f6170 | ||
|
|
ce9618b945 | ||
|
|
336c297dc1 | ||
|
|
45d47afc36 | ||
|
|
d021ebd527 | ||
|
|
a435b6b8dc | ||
|
|
4720114c84 | ||
|
|
475d0fb860 | ||
|
|
c2551f5766 | ||
|
|
0c52f9cbed | ||
|
|
83a59f2757 | ||
|
|
c8862b8ed8 | ||
|
|
0ee84ddb7d | ||
|
|
7da1cc310b | ||
|
|
c81edf3fbb | ||
|
|
4c1ff7b3a2 | ||
|
|
8a95b3ffa9 | ||
|
|
021e6e6509 | ||
|
|
bf0e3a58dd | ||
|
|
1a3b3ef796 | ||
|
|
0c55010376 | ||
|
|
a1a5f84708 | ||
|
|
a310e38904 | ||
|
|
4212850c9e | ||
|
|
a71333fc0e | ||
|
|
bcd46433d1 | ||
|
|
0190fe2943 | ||
|
|
43a02443bb | ||
|
|
90a44af861 | ||
|
|
93c78de1f1 | ||
|
|
c4f7875d6a | ||
|
|
ba694f03e8 | ||
|
|
a0d397bed4 | ||
|
|
b8a1a72cca | ||
|
|
23493335bb | ||
|
|
be36e65343 | ||
|
|
97553b080b | ||
|
|
6131fdb41f | ||
|
|
1e761ede38 | ||
|
|
7f9a4dce2b | ||
|
|
049bd8943e | ||
|
|
f09de4661e | ||
|
|
5a5adef0db | ||
|
|
eb7b74578f | ||
|
|
4af32f3570 | ||
|
|
f0b5a89fd4 | ||
|
|
9d56ac6fee | ||
|
|
a181ab36a4 | ||
|
|
2f10c2d769 | ||
|
|
664164e8c1 | ||
|
|
83a16737dc | ||
|
|
7704f6a18c | ||
|
|
4a892e646c | ||
|
|
0abf88324e | ||
|
|
6459c07548 | ||
|
|
c61fe0c314 | ||
|
|
93999cd21e | ||
|
|
984c8deb34 | ||
|
|
1d32508312 | ||
|
|
447926a2ec | ||
|
|
2dd8faaea7 | ||
|
|
7c1de7ba23 | ||
|
|
4054fec0d0 | ||
|
|
e552ceb71d | ||
|
|
82a74d84be | ||
|
|
3770caad33 | ||
|
|
f9dc1695ca | ||
|
|
b086b774bf | ||
|
|
4394c8f979 | ||
|
|
7daf14378d | ||
|
|
27925cd4ce | ||
|
|
7dd56dbb53 | ||
|
|
0eb77f5291 | ||
|
|
32ac7b5fe3 | ||
|
|
373079cf4c | ||
|
|
d97b1ebbce | ||
|
|
a33768ad1a | ||
|
|
b352dcb1a0 | ||
|
|
8a66158961 | ||
|
|
da7309e6b5 | ||
|
|
38cdfc8efe | ||
|
|
99469eeb54 | ||
|
|
258cd95cca | ||
|
|
445c4f5187 | ||
|
|
b8acdddabd | ||
|
|
3c27bbd125 | ||
|
|
354990319d | ||
|
|
ef3270ae29 | ||
|
|
88d0217d10 | ||
|
|
5281c3ba71 | ||
|
|
b696b9e932 | ||
|
|
9620c738c5 | ||
|
|
e421518a36 | ||
|
|
47ea6a6830 | ||
|
|
57390d366c | ||
|
|
862c50e936 | ||
|
|
3d703856a6 | ||
|
|
93945265b8 | ||
|
|
1cc58f5048 | ||
|
|
e85efec7a5 | ||
|
|
62488a2980 | ||
|
|
74b7171842 | ||
|
|
6e6b7b09ad | ||
|
|
c1e12b60ab | ||
|
|
fdc28dfd8a | ||
|
|
e122aea3ad | ||
|
|
c79c113e01 | ||
|
|
d3dd3d668c | ||
|
|
d1322ea14d | ||
|
|
1c98bc22f6 | ||
|
|
2205d5c91c | ||
|
|
ec9dcb92bf | ||
|
|
7f032c511f | ||
|
|
00a72f907b | ||
|
|
afc299308c | ||
|
|
5b28e621b3 | ||
|
|
8208485f48 | ||
|
|
014c3569eb | ||
|
|
20483a23b1 | ||
|
|
61ffe8e9a4 | ||
|
|
bc0fb02f20 | ||
|
|
0e065d8005 | ||
|
|
7927fdae85 | ||
|
|
eaf401eda7 | ||
|
|
6d781d3d02 | ||
|
|
f2cf027f55 | ||
|
|
eafa5e8f7a | ||
|
|
095f11abb7 | ||
|
|
53eb8ab9df | ||
|
|
c98f9a84d8 | ||
|
|
6693a27d6c | ||
|
|
4f821ca621 | ||
|
|
1853365942 | ||
|
|
848e3e5ceb | ||
|
|
ee86e2390c | ||
|
|
decdfac926 | ||
|
|
bd8550b652 | ||
|
|
cb502488d1 | ||
|
|
da443a79af | ||
|
|
7da28a09be | ||
|
|
2f379bf9c6 | ||
|
|
45e99c5e40 | ||
|
|
c4d72d1bae | ||
|
|
969559b45b | ||
|
|
70eee40ae8 | ||
|
|
60533ef002 | ||
|
|
a3701d1a48 | ||
|
|
b6f37abe91 | ||
|
|
0ee2377c99 | ||
|
|
ace36f7129 | ||
|
|
e3c6694019 | ||
|
|
9275d5e720 | ||
|
|
d2d841e949 | ||
|
|
ee34115ce4 | ||
|
|
e7f620fc60 | ||
|
|
7c79aae07f | ||
|
|
0a84fbaf5d | ||
|
|
f9ad041ac1 | ||
|
|
8af91c8836 | ||
|
|
27b39f3431 | ||
|
|
4f70384664 | ||
|
|
38d852a5bb | ||
|
|
7c4546f3c3 | ||
|
|
a0ad410692 | ||
|
|
7fbcb60b87 | ||
|
|
73050c74a1 | ||
|
|
71d7de2577 | ||
|
|
2ade51ecff | ||
|
|
eb50c5a9e3 | ||
|
|
29af125799 | ||
|
|
cc75637704 | ||
|
|
310e143bea | ||
|
|
0b63fb7a69 | ||
|
|
0e5450e792 | ||
|
|
5a2b25ff25 | ||
|
|
7396ed93f7 | ||
|
|
bfa64d477d | ||
|
|
9d657a6f24 | ||
|
|
156e193d47 | ||
|
|
adb1cffb75 | ||
|
|
617cb25f1e | ||
|
|
85282418a7 | ||
|
|
632d4e2ff1 | ||
|
|
b3cc234c14 | ||
|
|
af36eaf077 | ||
|
|
4d3f5be892 | ||
|
|
431ff47824 | ||
|
|
ce08eaf14b | ||
|
|
1ddfe0ac26 | ||
|
|
8bbdfecb26 | ||
|
|
069804581b | ||
|
|
6bf2555a4a | ||
|
|
cb8cc63528 | ||
|
|
8acb3331d1 | ||
|
|
868ea0fc0c | ||
|
|
1131058b68 | ||
|
|
6bbb0e2487 | ||
|
|
ac8322f907 | ||
|
|
e2746d8b81 | ||
|
|
0adc3845e3 | ||
|
|
6e95fbbbb9 | ||
|
|
1dc1530b20 | ||
|
|
89b38c13d4 | ||
|
|
6d1d9d17d1 | ||
|
|
de405c7929 | ||
|
|
fe28bea8ec | ||
|
|
4e39ada69b | ||
|
|
88b3974bee | ||
|
|
9d75eebcc0 | ||
|
|
9d0555f8b8 | ||
|
|
fe45b7ed5c | ||
|
|
f55f5b2d3c | ||
|
|
891bd2f3b1 | ||
|
|
8696b27bee | ||
|
|
4b171129a1 | ||
|
|
ee2bfe6014 | ||
|
|
2bb3630f00 | ||
|
|
24bc84627b | ||
|
|
da1767b18a | ||
|
|
94341f57f9 | ||
|
|
f59a706d45 | ||
|
|
349e537104 | ||
|
|
2b46848d3f | ||
|
|
3836bc2df5 | ||
|
|
c55592cea6 | ||
|
|
ec159d05d4 | ||
|
|
8768dd92f1 | ||
|
|
14338be99a | ||
|
|
f6b44aa57e | ||
|
|
e7fcae8680 | ||
|
|
6740b37cfc | ||
|
|
4c330b7d62 | ||
|
|
eb6a4da33c | ||
|
|
0b1149d509 | ||
|
|
24b94cdeac | ||
|
|
df4ba9eb96 | ||
|
|
8dc5daf664 | ||
|
|
feac50919b | ||
|
|
6fee9d712a | ||
|
|
2f3146441b | ||
|
|
9594ee9cf2 | ||
|
|
eeec3d998e | ||
|
|
519a31e88a | ||
|
|
0c65539e0c | ||
|
|
aa3b6648f3 | ||
|
|
2d102d2549 | ||
|
|
7505813fa5 | ||
|
|
6cedca7f4f | ||
|
|
dd102142f5 | ||
|
|
aa8840b61b | ||
|
|
33d7b7173e | ||
|
|
ae7e895b14 | ||
|
|
ad76508743 | ||
|
|
43e39af33a | ||
|
|
0875fde0e7 | ||
|
|
c4bffc32f1 | ||
|
|
fc7bede563 | ||
|
|
e14cdf99e3 | ||
|
|
2ef7fed0d2 | ||
|
|
0c5d685d8a | ||
|
|
02d92f6cc9 | ||
|
|
24d3d2abaa | ||
|
|
9ba407f051 | ||
|
|
aad7b002aa | ||
|
|
b776f47c6b | ||
|
|
c96156116e | ||
|
|
b2e2631269 | ||
|
|
6ca4907c11 | ||
|
|
d4aba3bded | ||
|
|
5dc5433068 | ||
|
|
7c997ea280 | ||
|
|
5c9885d0a2 | ||
|
|
e48097f8a5 | ||
|
|
7368d1a80c | ||
|
|
622f0da641 | ||
|
|
2f83cadc2e | ||
|
|
2406c9bfd9 | ||
|
|
b3b1f4ebd8 | ||
|
|
479136bfc5 | ||
|
|
272484b1fd | ||
|
|
895ee33a95 | ||
|
|
bf3609c083 | ||
|
|
08896eb34b | ||
|
|
244b6c2447 | ||
|
|
42fb9fd465 | ||
|
|
6661bdff95 | ||
|
|
a793daaf11 | ||
|
|
58cfa9e8dc | ||
|
|
c759a3f5f4 | ||
|
|
d4ee4addc5 | ||
|
|
dd813bc7cc | ||
|
|
39b9918060 | ||
|
|
9d9349a17a | ||
|
|
7f05718d5c | ||
|
|
cae8e43d21 | ||
|
|
f072f56f3f | ||
|
|
eb08304c10 | ||
|
|
b422417d4b | ||
|
|
2ef1e7d8b6 | ||
|
|
adcc4c4c81 | ||
|
|
fe50ca3fa6 | ||
|
|
0f4f1f78c1 | ||
|
|
6bd9193b7e | ||
|
|
44e1f6fab0 | ||
|
|
6ff11a2458 | ||
|
|
db8f3ebf72 | ||
|
|
1c92a0826b | ||
|
|
454164a521 | ||
|
|
e679629d70 | ||
|
|
6b874440db | ||
|
|
a06732a064 | ||
|
|
36dffcb152 | ||
|
|
a233e33bf8 | ||
|
|
70540a7e19 | ||
|
|
f7f784aeb1 | ||
|
|
0e363f02dd | ||
|
|
93876d6f1c | ||
|
|
c34b05d9df | ||
|
|
0ca88f2caf | ||
|
|
32606cfa59 | ||
|
|
5a3f5e430a | ||
|
|
ecb032770e | ||
|
|
7a100120af | ||
|
|
1665b277a0 | ||
|
|
e0380cfa62 | ||
|
|
36b0fb1e69 | ||
|
|
5132f66809 | ||
|
|
1d726ed956 | ||
|
|
4abec966a9 | ||
|
|
eb6244bc85 | ||
|
|
bfcae3bbbb | ||
|
|
98f65975ae | ||
|
|
bf4b4b2d22 | ||
|
|
bcadbaaf32 | ||
|
|
84361d473d | ||
|
|
13ee63e25d | ||
|
|
f9467bffd3 | ||
|
|
c0734bdfbb | ||
|
|
68290c590e | ||
|
|
a17f4fd401 | ||
|
|
7a07513f8e | ||
|
|
bbbe9bbb03 | ||
|
|
b07a19d8c1 | ||
|
|
1be01b549e | ||
|
|
d47d2ce52f | ||
|
|
8e824083a2 | ||
|
|
8b5e28b948 | ||
|
|
6ad61614b8 | ||
|
|
e4f9b85f53 | ||
|
|
a6fc60e2d3 | ||
|
|
49d97eeef9 | ||
|
|
979808415b | ||
|
|
71868cc361 | ||
|
|
642beb9169 | ||
|
|
f9437f01a9 | ||
|
|
f22f5d4abf | ||
|
|
14f183a577 | ||
|
|
a76a017064 | ||
|
|
9918e391b3 | ||
|
|
1f1dec615b | ||
|
|
118240d38d | ||
|
|
3fc6efec77 | ||
|
|
74485ab138 | ||
|
|
f719268045 | ||
|
|
ea7f9aba0f | ||
|
|
662b731dd0 | ||
|
|
1f9e6aeaad | ||
|
|
88b8e84cab | ||
|
|
e53684c2f2 | ||
|
|
0fbe5a14cd | ||
|
|
78146df910 | ||
|
|
4d3e106148 | ||
|
|
7f2a5bf18f | ||
|
|
9922d750db | ||
|
|
2cf9c2ff1e | ||
|
|
267e457cc2 | ||
|
|
2aaccfface | ||
|
|
d1f0e4ab0d | ||
|
|
b33a65bbb5 | ||
|
|
7403f44eda | ||
|
|
203ea9c061 | ||
|
|
d1d481b6e8 | ||
|
|
7ba3842ced | ||
|
|
49fbbffacc | ||
|
|
270067291a | ||
|
|
e199fbbb0c | ||
|
|
71782b8e04 | ||
|
|
27f7d5397a | ||
|
|
c686004c4a | ||
|
|
7528e87dcd | ||
|
|
334038fee2 | ||
|
|
962a94cb24 |
61
.github/workflows/release.yml
vendored
Normal file
61
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
name: Create RGL release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
tag:
|
||||
description: Release tag (should be YYYYMMDD format)
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-18.04
|
||||
env:
|
||||
GF_VERSION: 3.10-1
|
||||
DEST: gf-rgl-${{ github.event.inputs.tag }}
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Install GF
|
||||
run: |
|
||||
curl -s https://www.grammaticalframework.org/download/gf_${GF_VERSION}_amd64.deb -o gf.deb
|
||||
sudo dpkg -i gf.deb
|
||||
|
||||
- name: Build RGL
|
||||
run: |
|
||||
mkdir -p ${DEST}
|
||||
bash Setup.sh --dest=${DEST} --gf=gf --verbose
|
||||
|
||||
- name: Create archive
|
||||
run: |
|
||||
zip asset.zip -r ${{ env.DEST }}
|
||||
|
||||
# - name: Upload artifact
|
||||
# uses: actions/upload-artifact@v2
|
||||
# with:
|
||||
# name: gf-rgl-${{ github.sha }}
|
||||
# path: ${{ env.DEST }}
|
||||
# if-no-files-found: error
|
||||
|
||||
- name: Create release
|
||||
id: create_release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: ${{ github.event.inputs.tag }}
|
||||
release_name: Release ${{ github.event.inputs.tag }}
|
||||
draft: false
|
||||
prerelease: false
|
||||
|
||||
- name: Upload release asset
|
||||
id: upload-release-asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: asset.zip
|
||||
asset_name: gf-rgl-${{ github.event.inputs.tag }}.zip
|
||||
asset_content_type: application/zip
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,3 +4,4 @@ dist/
|
||||
*.o
|
||||
*.pgf
|
||||
*.tmp
|
||||
*~
|
||||
|
||||
@@ -4,7 +4,7 @@ language: c
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
- windows
|
||||
# - windows
|
||||
|
||||
addons:
|
||||
apt:
|
||||
|
||||
30
Makefile
30
Makefile
@@ -1,16 +1,32 @@
|
||||
# A simple wrapper over the Haskell-based RGL build script
|
||||
# A wrapper over the Haskell and Bash build scripts
|
||||
# Will try and fallback in order:
|
||||
# - runghc Setup.hs
|
||||
# - stack runghc Setup.hs
|
||||
# - ./Setup.sh
|
||||
|
||||
RUNMAKE=runghc Setup.hs
|
||||
ifneq (, $(shell which runghc))
|
||||
RUNGHC=runghc Setup.hs
|
||||
else ifneq (, $(shell which stack))
|
||||
RUNGHC=stack runghc Setup.hs
|
||||
else
|
||||
RUNGHC=
|
||||
endif
|
||||
|
||||
.PHONY: build copy install doc clean
|
||||
|
||||
default: build copy
|
||||
|
||||
build: src/*/*.gf
|
||||
$(RUNMAKE) build
|
||||
ifneq (, $(RUNGHC))
|
||||
$(RUNGHC) build
|
||||
else
|
||||
./Setup.sh
|
||||
endif
|
||||
|
||||
copy:
|
||||
$(RUNMAKE) copy
|
||||
ifneq (, $(RUNGHC))
|
||||
$(RUNGHC) copy
|
||||
endif
|
||||
|
||||
install: build copy
|
||||
|
||||
@@ -18,4 +34,8 @@ doc: build
|
||||
make -C doc GF_LIB_PATH=../dist
|
||||
|
||||
clean:
|
||||
$(RUNMAKE) clean
|
||||
ifneq (, $(RUNGHC))
|
||||
$(RUNGHC) clean
|
||||
else
|
||||
rm -r dist
|
||||
endif
|
||||
|
||||
19
README.md
19
README.md
@@ -2,8 +2,6 @@
|
||||
|
||||
# GF Resource Grammar Library (RGL)
|
||||
|
||||
[](https://travis-ci.org/GrammaticalFramework/gf-rgl)
|
||||
|
||||
The GF Resource Grammar Library is the standard library for Grammatical Framework. It covers the morphology and basic syntax of over 30 languages.
|
||||
|
||||
For more about the RGL, see the [synopsis page](http://www.grammaticalframework.org/lib/doc/synopsis/).
|
||||
@@ -47,12 +45,7 @@ This file should be kept up-to-date and all build methods should read this confi
|
||||
|
||||
If default is `y` then anything other than `n`, including the empty string, is treated as true (and vice versa when default is `n`).
|
||||
|
||||
## Haskell script: `Setup.hs`
|
||||
|
||||
This build method gives you most options.
|
||||
You will need Haskell installed on your system.
|
||||
|
||||
### Basic
|
||||
## Using Make
|
||||
|
||||
If you have `Make` installed and don't care about advanced settings,
|
||||
you can compile the RGL and install it to the default location with:
|
||||
@@ -64,9 +57,15 @@ make install
|
||||
This is the same as `make build` followed by `make copy`.
|
||||
There is also `make clean` available.
|
||||
|
||||
### Advanced
|
||||
The Makefile will try to use the Haskell install script,
|
||||
falling back to the shell script if you do not have Haskell installed.
|
||||
|
||||
For more fine-grained control over the build process, you can run the build script directly:
|
||||
## Haskell script: `Setup.hs`
|
||||
|
||||
This build method gives you most options.
|
||||
You will need Haskell installed on your system.
|
||||
|
||||
Run the build script with:
|
||||
|
||||
```
|
||||
runghc Setup.hs ...
|
||||
|
||||
10
RELEASE.md
Normal file
10
RELEASE.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# RGL releases
|
||||
|
||||
The RGL does not use semantic versioning.
|
||||
Releases are instead made periodically, as snapshots of the current state of the library.
|
||||
Releases are Git tagged `YYYYMMDD`, and for each release a binary package (as `.gfo` files) is made available as a GitHub release.
|
||||
|
||||
## Creating a new release
|
||||
|
||||
1. Run the "Create release" workflow through the GitHub actions interface
|
||||
(instructions [here](https://docs.github.com/en/free-pro-team@latest/actions/managing-workflow-runs/manually-running-a-workflow)).
|
||||
14
Setup.bat
14
Setup.bat
@@ -37,20 +37,6 @@ if "%dest%"=="" (
|
||||
)
|
||||
:BreakLibPath
|
||||
|
||||
set DATA_DIR=..\gf-core\DATA_DIR
|
||||
if "%dest%"=="" (
|
||||
REM Look in already compiled GF folder
|
||||
if exist %DATA_DIR% (
|
||||
for /f "delims=" %%x in (%DATA_DIR%) do (
|
||||
if not "%%x"=="" (
|
||||
set dest=%%x\lib
|
||||
goto BreakDataDir
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:BreakDataDir
|
||||
|
||||
if "%dest%"=="" (
|
||||
echo Unable to determine where to install the RGL. Please do one of the following:
|
||||
echo - Pass the --dest=... flag to this script
|
||||
|
||||
17
Setup.hs
17
Setup.hs
@@ -8,8 +8,8 @@ import System.IO (hPutStrLn,stderr)
|
||||
import System.IO.Error (catchIOError)
|
||||
import System.Exit (ExitCode(..),exitFailure)
|
||||
import System.Environment (getArgs,lookupEnv)
|
||||
import System.Process (rawSystem)
|
||||
import System.FilePath ((</>),splitSearchPath) -- ,takeFileName,addExtension,dropExtension)
|
||||
import System.Process (rawSystem,readProcess)
|
||||
import System.FilePath ((</>),splitSearchPath)
|
||||
import System.Directory (createDirectoryIfMissing,copyFile,getDirectoryContents,removeDirectoryRecursive,findFile)
|
||||
#if __GLASGOW_HASKELL__>=800
|
||||
import System.Directory (getModificationTime,setModificationTime)
|
||||
@@ -61,7 +61,7 @@ errLocation = unlines $
|
||||
[ "Unable to determine where to install the RGL. Please do one of the following:"
|
||||
, " - Pass the " ++ destination_flag ++ "... flag to this script"
|
||||
, " - Set the GF_LIB_PATH environment variable"
|
||||
, " - Compile & install GF from the gf-core repository (must be in same directory as gf-rgl)"
|
||||
, " - Compile & install GF from the gf-core repository"
|
||||
]
|
||||
|
||||
-- | Copy single file between directories
|
||||
@@ -116,10 +116,11 @@ data Info = Info
|
||||
mkInfo :: IO Info
|
||||
mkInfo = do
|
||||
args <- getArgs
|
||||
let gf = maybe default_gf id (getFlag gf_flag args)
|
||||
-- Look for install location in a few different places
|
||||
let mflag = getFlag destination_flag args
|
||||
mbuilt <- catchIOError (readFile "../gf-core/DATA_DIR" >>= \d -> return (Just (d </> "lib"))) (\e -> return Nothing)
|
||||
menvar <- lookupEnv "GF_LIB_PATH" >>= return . fmap (head . splitSearchPath)
|
||||
mbuilt <- catchIOError (readProcess gf ["--version"] "" >>= return . getPath) (\e -> return Nothing)
|
||||
let
|
||||
inst_dir =
|
||||
case catMaybes [mflag,menvar,mbuilt] of
|
||||
@@ -129,12 +130,18 @@ mkInfo = do
|
||||
return $ Info
|
||||
{ infoBuildDir = "dist"
|
||||
, infoInstallDir = inst_dir
|
||||
, infoGFPath = maybe default_gf id (getFlag gf_flag args)
|
||||
, infoGFPath = gf
|
||||
, infoVerbose = verbose
|
||||
}
|
||||
where
|
||||
default_gf = "gf"
|
||||
|
||||
getPath s =
|
||||
let l = last (lines s)
|
||||
in if take 14 l == "Shared folder:"
|
||||
then Just (drop 15 l </> "lib")
|
||||
else Nothing
|
||||
|
||||
getRGLBuildDir :: Info -> Mode -> FilePath
|
||||
getRGLBuildDir info mode = infoBuildDir info </> getRGLBuildSubDir mode
|
||||
|
||||
|
||||
11
Setup.sh
11
Setup.sh
@@ -38,15 +38,15 @@ done
|
||||
if [ -z "$dest" ]; then
|
||||
dest=$(echo "$GF_LIB_PATH" | sed 's/:.*$//')
|
||||
fi
|
||||
if [ -z "$dest" ] && [ -f "../gf-core/DATA_DIR" ]; then
|
||||
dest=$(cat ../gf-core/DATA_DIR)
|
||||
if [ -z "$dest" ] && [ "$(gf --version | tail -1 | cut -c -14)" == "Shared folder:" ]; then
|
||||
dest=$(gf --version | tail -1 | cut -c 16-)
|
||||
if [ -n "$dest" ]; then dest="${dest}/lib"; fi
|
||||
fi
|
||||
if [ -z "$dest" ]; then
|
||||
echo "Unable to determine where to install the RGL. Please do one of the following:"
|
||||
echo " - Pass the --dest=... flag to this script"
|
||||
echo " - Set the GF_LIB_PATH environment variable"
|
||||
echo " - Compile & install GF from the gf-core repository (must be in same directory as gf-rgl)"
|
||||
echo " - Compile & install GF from the gf-core repository"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -72,6 +72,7 @@ for lang in $langs; do
|
||||
for mod in $modules_langs $modules_api; do
|
||||
if [ $mod == "Compatibility" ] && [[ "$langs_compat" != *"$lang"* ]]; then continue; fi
|
||||
if [ $mod == "Try" ] && [[ "$langs_try" != *"$lang"* ]]; then continue; fi
|
||||
if [ $mod == "Symbol" ] && [[ "$langs_try" != *"$lang"* ]]; then continue; fi
|
||||
if [ $mod == "Symbolic" ] && [[ "$langs_symbolic" != *"$lang"* ]]; then continue; fi
|
||||
for file in "${src}"/*/"${mod}${lang}".gf; do
|
||||
if [ ! -f "$file" ]; then continue; fi
|
||||
@@ -96,5 +97,7 @@ for module in $modules_alltenses; do
|
||||
done
|
||||
|
||||
# Copy
|
||||
if [ $dest == $dist ]; then exit 0; fi
|
||||
echo "Copying to ${dest}"
|
||||
cp -R -p "${dist}"/* "${dest}"
|
||||
mkdir -p "${dest}"
|
||||
cp -R "${dist}"/* "${dest}"
|
||||
|
||||
371
doc/missing-in-rgl-Grammar.tsv
Normal file
371
doc/missing-in-rgl-Grammar.tsv
Normal file
@@ -0,0 +1,371 @@
|
||||
fun type Afr Amh Grc Ara Eus Bul Cat Chi Hrv Cze Dan Dut Gus Eng Est Fin Fre Ger Gre Heb Hin Hun Ice Ina Ita Jpn Kam Kor Lat Lav Lit May Mlt Mon Nep Nor Nno Pes Pol Por Pnb Ron Cgg Rus Snd Slo Slv Som Spa Swa Swe Tam Tel Tha Tur Ukr Urd Zul
|
||||
AAnter Ant + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - + +
|
||||
ASimul Ant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
AdAP AdA -> AP -> AP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + + - + + + - + + + + + +
|
||||
AdAdv AdA -> Adv -> Adv + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - + + + + - + + + - + +
|
||||
AdNum AdN -> Card -> Card + - + + + + + + + - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - - + + + - - + + + + +
|
||||
AdVVP AdV -> VP -> VP + - + + + + + + - - + + - + + + + + + - + - + + + + - + + + + + + + + + + + + + + + + + + - - - + - + - + + + - + +
|
||||
AdVVPSlash AdV -> VPSlash -> VPSlash - - - + + + + + - - + - - + - + + + + - + - + - + + - + + - - - + + + + + - - + - - + + - - - - + - + - + - - - + +
|
||||
AddAdvQVP QVP -> IAdv -> QVP - - - + - - + - - - + - + + - - + - + + - - + - + + + - - - - - + + + + + - - + - - - - - - - - + - + - + - - - - +
|
||||
AdjCN AP -> CN -> CN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
|
||||
AdjDAP DAP -> AP -> DAP - - - - + + + - - - + - + + + - + - - - - - + - + + + - - - - - - - - + + - - + - - + + - - - - + + + - - - + - - +
|
||||
AdjOrd Ord -> AP + + + + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + - + + + + + +
|
||||
AdnCAdv CAdv -> AdN + - - + - + + + + - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + + + +
|
||||
AdvAP AP -> Adv -> AP - - - + + + + + + + + + + + + + + - + - + + + - + + + - + + - + + + + + + + - + - - - + - + + - + + + - + - + + + +
|
||||
AdvCN CN -> Adv -> CN + + + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + + + - + + + - - + + + + +
|
||||
AdvIAdv IAdv -> Adv -> IAdv + - - + + + + + - - + + + + + + + + + + + - + + + + + - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
|
||||
AdvIP IP -> Adv -> IP + + + + + + + + - - + + + + + + + + + + + - + + + + + - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
|
||||
AdvImp Adv -> Imp -> Imp - - - - - + + - - - + - - + - - + - - - - - - - + - - - - - - - - - - + + - - + - - - - - - - - + - + - + - - - - +
|
||||
AdvNP NP -> Adv -> NP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - - + + + + +
|
||||
AdvQVP VP -> IAdv -> QVP - - - + - - + - - - + - + + - - + - + + - - + - + + + - - - - - + + + + + - - + - - - - - - - - + - + - + - - - - +
|
||||
AdvS Adv -> S -> S + + + + + + + + - - + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + - + + - + + + - + - + + + - + +
|
||||
AdvSlash ClSlash -> Adv -> ClSlash + - - + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
|
||||
AdvVP VP -> Adv -> VP + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
|
||||
AdvVPSlash VPSlash -> Adv -> VPSlash - - - - + + + + - - + - - + + + + + + - + + + - + + - + + - - - + + + + + - - + - - + + - - - + + - + - + - - - + +
|
||||
ApposCN CN -> NP -> CN + + - + + + + + + + + + - + + + + + + - + + + + + + - + + + + - + + + + + + + + + + + + + + - - + - + - - + + + + +
|
||||
BaseAP AP -> AP -> ListAP + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + - + + + + - + + + - + + + + + +
|
||||
BaseAdV AdV -> AdV -> ListAdV - - - - + + - - - - - - + + + + - - - + - + + - - + + + - - - - + - - - - - - - - - - + - - - - - + - - + - + - - +
|
||||
BaseAdv Adv -> Adv -> ListAdv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
|
||||
BaseCN CN -> CN -> ListCN - - + + + + + + - - + - + + + + + + + + - - + - + + + - - - - - + + - + + + - + - - - + - - - - + + + - + - + - - +
|
||||
BaseDAP DAP -> DAP -> ListDAP - - - - + - - - - - + - + + - - - - - + - - + - - + + - - - - - - - - + + - - - - - - + - - - - - + + - + - - - - +
|
||||
BaseIAdv IAdv -> IAdv -> ListIAdv - - - - + + + - - - + - + + + + + - + + - + + - + + + + - - - - + + - + + - - + - - - + - - - - + + + - + - - - - +
|
||||
BaseNP NP -> NP -> ListNP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + - + + + + + +
|
||||
BaseRS RS -> RS -> ListRS + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
|
||||
BaseS S -> S -> ListS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
|
||||
CAdvAP CAdv -> AP -> NP -> AP + + - - + + + + - - + + + + + + + + + - + + + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
|
||||
CleftAdv Adv -> S -> Cl + - + + - + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
|
||||
CleftNP NP -> RS -> Cl + - + - - + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
|
||||
CompAP AP -> Comp + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
|
||||
CompAdv Adv -> Comp + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
|
||||
CompCN CN -> Comp + - + + + + + + - - + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
|
||||
CompIAdv IAdv -> IComp + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
CompIP IP -> IComp + + + + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
CompNP NP -> Comp + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
|
||||
ComparA A -> NP -> AP + + + + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + + - - + + + + - + + + + + +
|
||||
ComparAdvAdj CAdv -> A -> NP -> Adv + + + - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
|
||||
ComparAdvAdjS CAdv -> A -> S -> Adv + - - - - + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
|
||||
ComplA2 A2 -> NP -> AP + - + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
|
||||
ComplN2 N2 -> NP -> CN + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
|
||||
ComplN3 N3 -> NP -> N2 + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - - + + + - - + + - + +
|
||||
ComplSlash VPSlash -> NP -> VP + + + + + + + + + + + + - + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
|
||||
ComplSlashIP VPSlash -> IP -> QVP - - - + - - + - - - + - + + - - + - + + - - + - + + + - - - - - + + + + + - - + - - - - - - - - + - + - + - - - - +
|
||||
ComplVA VA -> AP -> VP + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
|
||||
ComplVQ VQ -> QS -> VP + - + + + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
|
||||
ComplVS VS -> S -> VP + - + + + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + + + + + + + + + - - + + - + - + + + - + +
|
||||
ComplVV VV -> VP -> VP + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
|
||||
ConjAP Conj -> ListAP -> AP + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + - + + + + - + + + - + + + + + +
|
||||
ConjAdV Conj -> ListAdV -> AdV - - - - + + - - - - - - + + + + - - - + - + + - - + + + - - - - + - - - - - - - - - - + - - - - - + - - + - + - - +
|
||||
ConjAdv Conj -> ListAdv -> Adv + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
|
||||
ConjCN Conj -> ListCN -> CN - - + + + + + + - - + - + + + + + + + + - - + - + + + - - - - - + + - + + + - + - - - + - - - - + + + - + - + - - +
|
||||
ConjDet Conj -> ListDAP -> Det - - - - + - - - - - + - + + - - - - - + - - + - - + + - - - - - - - - + + - - - - - - + - - - - - + + - + - - - - +
|
||||
ConjIAdv Conj -> ListIAdv -> IAdv - - - - + + + - - - + - + + + + + - + + - + + - + + + + - - - - + + - + + - - + - - - + - - - - + + + - + - - - - +
|
||||
ConjNP Conj -> ListNP -> NP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + - + + + + + +
|
||||
ConjRS Conj -> ListRS -> RS + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
|
||||
ConjS Conj -> ListS -> S + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
|
||||
ConsAP AP -> ListAP -> ListAP + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + + + + + + + + + - + + + + - + + + - + + + + + +
|
||||
ConsAdV AdV -> ListAdV -> ListAdV - - - - + + - - - - - - + + + + - - - + - + + - - + + + - - - - + - - - - - - - - - - + - - - - - + - - + - + - - +
|
||||
ConsAdv Adv -> ListAdv -> ListAdv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
|
||||
ConsCN CN -> ListCN -> ListCN - - + + + + + + - - + - + + + + + + + + - - + - + + + - - - - - + + - + + + - + - - - + - - - - + + + - + - + - - +
|
||||
ConsDAP DAP -> ListDAP -> ListDAP - - - - + - - - - - + - + + - - - - - + - - + - - + + - - - - - - - - + + - - - - - - + - - - - - + + - + - - - - +
|
||||
ConsIAdv IAdv -> ListIAdv -> ListIAdv - - - - + + + - - - + - + + + + + - + + - + + - + + + + - - - - + + - + + - - + - - - + - - - - + + + - + - - - - +
|
||||
ConsNP NP -> ListNP -> ListNP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + + + + + + - + + + + + +
|
||||
ConsRS RS -> ListRS -> ListRS + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
|
||||
ConsS S -> ListS -> ListS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + - + + + - - + + + - + + + + + +
|
||||
CountNP Det -> NP -> NP - - - - + + + + - - + - + + - + + - + - + - + - + + + - + - - + + - - + + - - + - - + + - - - - + + + - - - + - + +
|
||||
D_0 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
D_1 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
D_2 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
D_3 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
D_4 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
D_5 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
D_6 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
D_7 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
D_8 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
D_9 Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
DefArt Quant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
|
||||
DetCN Det -> CN -> NP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + +
|
||||
DetDAP Det -> DAP - - - - + + + - - - + + + + + + + + - - - - + - + + + - - - + - - - - + + - + + - - + + - - - - + + + - - - + - - +
|
||||
DetNP Det -> NP + + - + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - + + + + +
|
||||
DetQuant Quant -> Num -> Det + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + +
|
||||
DetQuantOrd Quant -> Num -> Ord -> Det + + + + + + + + - - + + + + + + + + + - + + + + + + + - - + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
|
||||
EmbedQS QS -> SC + - - + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
|
||||
EmbedS S -> SC + - + + + + + + - - + + - + + + + + + - + - + + + + - + - + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
|
||||
EmbedVP VP -> SC + + - + + + + + - - + + - + + + + + + - + - + + + + - + - + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
|
||||
ExistIP IP -> QCl + - + + - + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + - + + - - - + - + - + + + - + +
|
||||
ExistIPAdv IP -> Adv -> QCl - - + - - + - - - - - - + + - + - + - + - - + - - + + - + - - - + + - - - - - + - - - + - - - - + - + - + - - - - +
|
||||
ExistNP NP -> Cl + - + + + + + + + - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + - + + - + + + - + - + + + + + +
|
||||
ExistNPAdv NP -> Adv -> Cl - - + + - + - - + - - - + + - + + + - + - - + - + + + - + - - - + + - - - + - + - - - + - - - - + - + - + - - + - +
|
||||
ExtAdvNP NP -> Adv -> NP - - - - + + + + - - + + + + - + + + - - - + + - + + + - + - - + + - - + + - - + - - + + - - - - + + + - - - + - - +
|
||||
ExtAdvS Adv -> S -> S - - - - + + + + - - + + - + + + + + + - + + + - + + - + - - + + + + - + + - + + - + + + - - + + + - + - + + - - + +
|
||||
ExtAdvVP VP -> Adv -> VP - - - - + + + + - - + + - + - + + + - - - - + - + + - - - - - - + - - + + - - + - - - + - - - - + - + - + - - - - +
|
||||
FunRP Prep -> NP -> RP -> RP + - - - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + - + + - + - + - + - + + + - + +
|
||||
GenericCl VP -> Cl + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
|
||||
IDig Dig -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
IIDig Dig -> Digits -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
IdRP RP + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
|
||||
IdetCN IDet -> CN -> IP + + + + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
|
||||
IdetIP IDet -> IP + + + + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + + + + - - + + - + - + + + - + +
|
||||
IdetQuant IQuant -> Num -> IDet + + - + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
|
||||
ImpP3 NP -> VP -> Utt - - + - - - - - - - - - + + - + + + + + + - + - - + + - + + - - + + + - - + - + + - - + + - - - - - - - + - - - + +
|
||||
ImpPl1 VP -> Utt + - + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
|
||||
ImpVP VP -> Imp + + + + + + + + - - + + - + + + + + + - + - + + + + - - - + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
ImpersCl VP -> Cl + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
|
||||
IndefArt Quant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
|
||||
MassNP CN -> NP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
|
||||
NoPConj PConj + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
NoVoc Voc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
NumCard Card -> Num + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
|
||||
NumDigits Digits -> Card + + + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + + - - + + + - - + + + + +
|
||||
NumNumeral Numeral -> Card + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
|
||||
NumPl Num + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
|
||||
NumSg Num + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + +
|
||||
OrdDigits Digits -> Ord + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - - + + + - - + + - + +
|
||||
OrdNumeral Numeral -> Ord + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
|
||||
OrdNumeralSuperl Numeral -> A -> Ord - - - - + - + + - - + + + + - + + + - - - - + - + + + - - - - + - - - + + - - + - - + + - - - - + + + - - - + - - +
|
||||
OrdSuperl A -> Ord + + + + + + + + + - + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + - - + + + + - - + + + + +
|
||||
PConjConj Conj -> PConj + - + - + + + + + + + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + + - + + + + - + + + + + +
|
||||
PNeg Pol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
PPartNP NP -> V2 -> NP + + - - + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + + + + - - - + - + - - + + - + +
|
||||
PPos Pol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
PartNP CN -> NP -> CN - - - - + + + + - - + - + + - + + - + - + - + - + + + - - - + - + - - + + - - + - - + + - - - + + + + - - - + - + +
|
||||
PassV2 V2 -> VP + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
|
||||
PhrUtt PConj -> Utt -> Voc -> Phr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
PositA A -> AP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
PositAdAAdj A -> AdA + - - - + + + + - - + + + + + + + + + - + - + - + + + - + - - - + + - + + - - + - - - + - - - - + + + - + - - - + +
|
||||
PositAdvAdj A -> Adv + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
|
||||
PossNP CN -> NP -> CN - - + + + + + + - - + + + + + + + + + - + - + - + + + - - - + + + - - + + + - + - - + + - - - + + + + - - - + - + +
|
||||
PossPron Pron -> Quant + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
|
||||
PredSCVP SC -> VP -> Cl + - + - + + + + - - + + - + + + + + + - + - + + + + - + - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
|
||||
PredVP NP -> VP -> Cl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
PredetNP Predet -> NP -> NP + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - - + + - + +
|
||||
PrepIP Prep -> IP -> IAdv + - + + + + + + - - + + + + + + + + + + + - + + + + + - - + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
|
||||
PrepNP Prep -> NP -> Adv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
ProgrVP VP -> VP + - + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
|
||||
QuestCl Cl -> QCl + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
|
||||
QuestIAdv IAdv -> Cl -> QCl + + - + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
QuestIComp IComp -> NP -> QCl + - - + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
QuestQVP IP -> QVP -> QCl - - - + - - + - - - + - + + - - + - + + - - + - + + + - - - - - + + + + + - - + - - - - - - - - + - + - + - - - - +
|
||||
QuestSlash IP -> ClSlash -> QCl + - - + + + + + - - + + + + + + + + + + + - + + + + + - - + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
QuestVP IP -> VP -> QCl + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
ReflA2 A2 -> AP + - + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - - + + + - + + + - + +
|
||||
ReflVP VPSlash -> VP + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - + + + - + - + + + - + +
|
||||
RelCN CN -> RS -> CN + - + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + + - + + + + - - + + + + +
|
||||
RelCl Cl -> RCl + - - + + + + + - - + + + + + + + + + + + - + + + + + + - + + - + + + + + + + + + + + + + - + - + - + - + + + - + +
|
||||
RelNP NP -> RS -> NP + - + + + + + + - - + + + + + + + + + - + + + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
|
||||
RelS S -> RS -> S + - + - + + + + - - + + - + + + + + + - + - + + + + - - - - + - + + + + + + + + + + - + + - - - + - + - + + - - + +
|
||||
RelSlash RP -> ClSlash -> RCl + - + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
RelVP RP -> VP -> RCl + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
|
||||
SSubjS S -> Subj -> S -> S - + - - + + + + - - + + - + - + + + + - + - + - + + - - - - - - + + + + + + - + + - - + + - - + + - + - + + - - + +
|
||||
SelfAdVVP VP -> VP - - + + - - - + - - - - + + - + + + - + - - + - - + + - + - - - + - - - - - - + - - - + - - - - + - + - + - - - - +
|
||||
SelfAdvVP VP -> VP - - + + - - - + - - - - + + - + + + - + - - + - - + + - + - - - + - - - - - - + - - - + - - - - + - + - + - - - - +
|
||||
SelfNP NP -> NP - - + + - - - + - - - - + + - + + + - + - - + - - + + - + - - - + - - - - - - + - - - + - - - - - - + - + - - - - +
|
||||
SentAP AP -> SC -> AP + - + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + - + + - - + + + + - + + + - + +
|
||||
SentCN CN -> SC -> CN + - + + + + + + - - + + + + + + + + + - + - + + + + + + - + + - + + + + + + + + + + + + + - - - + + + - - + + - + +
|
||||
Slash2V3 V3 -> NP -> VPSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
Slash3V3 V3 -> NP -> VPSlash + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
SlashPrep Cl -> Prep -> ClSlash + - + - - + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + - + + - - - + - + - + + + - + +
|
||||
SlashV2A V2A -> AP -> VPSlash + - - - + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + - + + - - + + - + - + + + - + +
|
||||
SlashV2Q V2Q -> QS -> VPSlash + - + - + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
|
||||
SlashV2S V2S -> S -> VPSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
|
||||
SlashV2V V2V -> VP -> VPSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
|
||||
SlashV2VNP V2V -> NP -> VPSlash -> VPSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
|
||||
SlashV2a V2 -> VPSlash + + + + + + + + + + + + - + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
|
||||
SlashVP NP -> VPSlash -> ClSlash + + + + + + + + - - + + - + + + + + + - + + + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
SlashVS NP -> VS -> SSlash -> ClSlash + - + - - + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - - + - + - + + + - + +
|
||||
SlashVV VV -> VPSlash -> VPSlash + - - + + + + + - - + + - + + + + + + - + - + + + + - - - + + + + + + + + + + + + + + + + - - - + - + - + + + - + +
|
||||
SubjS Subj -> S -> Adv + - + + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
TCond Tense + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - + +
|
||||
TEmpty Text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
TExclMark Phr -> Text -> Text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
TFullStop Phr -> Text -> Text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
TFut Tense + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - + +
|
||||
TPast Tense + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + +
|
||||
TPres Tense + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
TQuestMark Phr -> Text -> Text + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
TTAnt Tense -> Ant -> Temp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
Use2N3 N3 -> N2 + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - + + + + - - + + - + +
|
||||
Use3N3 N3 -> N2 + + + + + + + + - - + + + + + + + + + - + - + + + + + - - + + - + + + + + + + + + + + + + - - + + + + - - + - - + +
|
||||
UseA2 A2 -> AP + - + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + + + - + + + + - + + + + + +
|
||||
UseCl Temp -> Pol -> Cl -> S + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
UseComp Comp -> VP + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
|
||||
UseComparA A -> AP + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
UseCopula VP - - + + + + + + - - + + - + - + + + + - - + + - + + - + + - - + + + - + + - - + - + + + - - - + + - + - + - - - - +
|
||||
UseN N -> CN + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
UseN2 N2 -> CN + + + + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + - - + + - + +
|
||||
UsePN PN -> NP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
|
||||
UsePron Pron -> NP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + +
|
||||
UseQCl Temp -> Pol -> QCl -> QS + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
|
||||
UseRCl Temp -> Pol -> RCl -> RS + - + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + + - + + - + - + + + + + +
|
||||
UseSlash Temp -> Pol -> ClSlash -> SSlash + - + + + + + + - - + + - + + + + + + - + - + + + + - - - + + - + + + + + + + + + + - + + - - + + - + - + + + - + +
|
||||
UseV V -> VP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
UttAP AP -> Utt + + - + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
|
||||
UttAdv Adv -> Utt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
UttCN CN -> Utt + + - + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
UttCard Card -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
UttIAdv IAdv -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
|
||||
UttIP IP -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
UttImpPl Pol -> Imp -> Utt + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
UttImpPol Pol -> Imp -> Utt + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
UttImpSg Pol -> Imp -> Utt + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
UttInterj Interj -> Utt - - - + + + + + - - + + + + + + + + + - + + + + + + + + + - - - + + - + + - - + - - + + - - + + + + + - + + + - + +
|
||||
UttNP NP -> Utt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
UttQS QS -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
|
||||
UttS S -> Utt + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
UttVP VP -> Utt + + - + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
VPSlashPrep VP -> Prep -> VPSlash - - - + + + + + - - + + - + + + + + + + + - + - + + - - - + - - + + - + + + - + - + - + - - - + + - + - + - - - + +
|
||||
VocNP NP -> Voc + + + - + + + + + + + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + + - + + - + - + + + + + +
|
||||
above_Prep Prep + + + + + + + + - - + + + + + + + + + + + + + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
active2passive Cl -> Cl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
after_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
all_Predet Predet + + - + + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
almost_AdA AdA + - - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
almost_AdN AdN + - - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
although_Subj Subj + + + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
|
||||
always_AdV AdV + + + - + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
and_Conj Conj + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
as_CAdv CAdv + + - - + + + + - - + + + + + + + + + - + + + - + + + - + + + - + + + - - + + + + + + + + - - - + - + - + + + - + +
|
||||
at_least_AdN AdN + - - - + + + + - - + + + + + + + + + - + - + - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + + - + +
|
||||
at_most_AdN AdN + - - - + + + + - - + + + + + + + + + - + - + - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + + - + +
|
||||
because_Subj Subj + + + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
|
||||
before_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
behind_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
between_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
both7and_DConj Conj + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
but_PConj PConj + + + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
by8agent_Prep Prep + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - + + + - + +
|
||||
by8means_Prep Prep + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
can8know_VV VV + - - - + + + + - - + + - + + + + + + - + - + + + + - - + + + - + + + + + - + + + + + + + - - + + - + - + + + - + +
|
||||
can_VV VV + - - + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
dconcat Digits -> Digits -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
digits2num Digits -> Numeral + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
digits2numeral Card -> Card + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
dn Dig -> Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
dn10 Dig -> Sub10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
dn100 Dig -> Dig -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
dn1000 Dig -> Dig -> Dig -> Sub1000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
dn1000000a Dig -> Dig -> Dig -> Dig -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
dn1000000b Dig -> Dig -> Dig -> Dig -> Dig -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
dn1000000c Dig -> Dig -> Dig -> Dig -> Dig -> Dig -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
during_Prep Prep + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
either7or_DConj Conj + + + - + + + + - - + + + + + + + + + - + + + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
every_Det Det + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
everybody_NP NP + + - + + + + + - - + + + + + + + + + - + - - + + + + - + + + - + + + + + - + + + + + + - - - - + + + - + + + - + +
|
||||
everything_NP NP + + - + + + + + - - + + + + + + + + + + + - - + + + + - + + + - + + + + + + + + + + + + - - - - + + + - + + + - + +
|
||||
everywhere_Adv Adv + + + - + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
except_Prep Prep + - + - + - + + - - + + + + + + + + + + + - + - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + + - + +
|
||||
few_Det Det + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + - - + + + - + + + - + +
|
||||
for_Prep Prep + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + - - + + + - + + + + + +
|
||||
from_Prep Prep + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + - - + + + + + + + + + + + + + + - - + + + - + + + + + +
|
||||
have_V2 V2 + + - + + + + + + + + + - + + + + + + - + + + - + + - + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + +
|
||||
he_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
here7from_Adv Adv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
here7to_Adv Adv + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
here_Adv Adv + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
|
||||
how8many_IDet IDet + + + + + + + + - - + + - + + + + + + + + - - + + + - - + + + + + + + + + + + + + + + + + - - - + - + - + + + - + +
|
||||
how8much_IAdv IAdv + - - + + + + + - - - + + + + + + + + + + - + - + + + - + + - - + + + - - + - + + + + + + - + - + + + - + + + - + +
|
||||
how_IAdv IAdv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
i_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
if_Subj Subj + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + - + + + - + + + - + +
|
||||
if_then_Conj Conj + - - - + - + + - - + + + + + + + + + - - - + - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + - - + +
|
||||
in8front_Prep Prep + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
in_Prep Prep + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
it_Pron Pron + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
language_title_Utt Utt + + + + + + + + - - + + + + + + + + + - + + - + + + + + + + + + + + + + + + + + + - + + + - - + + + + - + - + - + +
|
||||
less_CAdv CAdv + + - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
|
||||
many_Det Det + + + + + + + + - + + + + + + + + + + - + + - + + + + + + + + - + + + + + + + + + + + + + + - - + + + - + + + - + +
|
||||
more_CAdv CAdv + + - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + - + - + + + - + +
|
||||
most_Predet Predet + + - + + + + + - - + + - + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
much_Det Det + + + + + + + + - - + + + + + + + + + - + - - + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
must_VV VV + - - + + + + + - - + + - + + + + + + - - - + + + + - - + + + + + + + + + + + + - + + + - - + + + - + - + + + - - +
|
||||
n2 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
n3 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
n4 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
n5 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
n6 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
n7 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
n8 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
n9 Digit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
nd Digit -> Dig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
nd10 Sub10 -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
nd100 Sub100 -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
nd1000 Sub1000 -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
nd1000000 Sub1000000 -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
no_Quant Quant + - - - + - + + - - + + - + + + + + + - - - - - + + + - + + + - + + + - - + + + + + + + + - - - + + + - + + + - + +
|
||||
no_Utt Utt + - + + + + + + - - + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
nobody_NP NP + - + - + - + + - - + + + + + + + + + - - - - - + + + - + + + - + + + - - + + + + + + + - - + - + + + - + + + - + +
|
||||
not_Predet Predet + - - - + - + + - - + + + + + + + + + - + - + - + + + - + - + - + + + - - + + + + + + + + - - - + + + - + + + - + +
|
||||
nothing_NP NP + - + + + - + + - - + + + + + + + + + - - - - - + + + - + + + - + + + - - + + + + + + + - - + - + + + - + + + - + +
|
||||
num Sub1000000 -> Numeral + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
num2digits Numeral -> Digits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
on_Prep Prep + + + + + + + + - - + + + + + + + + + - + + + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
only_Predet Predet + + - + + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
or_Conj Conj + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
otherwise_PConj PConj + + - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
part_Prep Prep + - + + + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
please_Voc Voc + + - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
possess_Prep Prep + - + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - + + + + + +
|
||||
pot0 Digit -> Sub10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot01 Sub10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot0as1 Sub10 -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot1 Digit -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot110 Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot111 Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot1as2 Sub100 -> Sub1000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot1plus Digit -> Sub10 -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot1to19 Digit -> Sub100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot2 Sub10 -> Sub1000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot21 Sub1000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
|
||||
pot2as3 Sub1000 -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot2plus Sub10 -> Sub100 -> Sub1000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot3 Sub1000 -> Sub1000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot31 Sub1000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
|
||||
pot3as4 Sub1000000 -> Sub1000000000 + - + - - + + + - - - + - + + + + + + + - - - - + - - + - + - - + - - - - - + + - + - + - + + + + + + - + + + - - +
|
||||
pot3float Float -> Sub1000000 - - - - - + - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - +
|
||||
pot3plus Sub1000 -> Sub1000 -> Sub1000000 + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
pot4 Sub1000 -> Sub1000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
|
||||
pot41 Sub1000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
|
||||
pot4as5 Sub1000000000 -> Sub1000000000000 + - + - - + + + - - - + - + + + + + + + - - - - + - - + - + - - + - - - - - + + - + - + - + + + + + + - + + + - - +
|
||||
pot4float Float -> Sub1000000000 - - - - - + - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
|
||||
pot4plus Sub1000 -> Sub1000000 -> Sub1000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - - - +
|
||||
pot5 Sub1000 -> Sub1000000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
|
||||
pot51 Sub1000000000000 - - - - - + - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
|
||||
pot5float Float -> Sub1000000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
|
||||
pot5plus Sub1000 -> Sub1000000000 -> Sub1000000000000 - - - - - + - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - +
|
||||
quite_Adv AdA + - - - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
she_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
so_AdA AdA + + - + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
somePl_Det Det + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + + - + + + + - + + + - + +
|
||||
someSg_Det Det + + + + + + + + - - + + + + + + + + + - + + + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
somebody_NP NP + + + + + + + + - - + + + + + + + + + - + - - + + + + - + + + + + + + + + + + + + + + + - - + - + + + - + + + - + +
|
||||
something_NP NP + + + + + + + + - + + + + + + + + + + - + + - + + + + + + + + - + + + + + + + + + + + + - + + - + + + - + + + - + +
|
||||
somewhere_Adv Adv + + + - + + + + + - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + + + +
|
||||
that_Quant Quant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
that_Subj Subj + - + + + + + + - - - + + + + + + + + + + - + - + + + - + + - + + + + - - + - + + + + + + - - + + + + - + + + - + +
|
||||
there7from_Adv Adv + + + - + + + + - - + + + + + + + + + + + - - + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
there7to_Adv Adv + + + - + + + + - - + + + + + + + + + + + - - + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
there_Adv Adv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
therefore_PConj PConj + + + - + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
they_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
this_Quant Quant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
|
||||
through_Prep Prep + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + - - + +
|
||||
to_Prep Prep + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - + + + + + +
|
||||
too_AdA AdA + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + - + + + + + + + + + + + + + - - - + + + - + + + - + +
|
||||
under_Prep Prep + + + + + + + + - - + + + + + + + + + + + + + + + + + - + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
very_AdA AdA + + - + + + + + - - + + + + + + + + + - + - + + + + + + + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
|
||||
want_VV VV + + + + + + + + - - + + - + + + + + + - + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
we_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
whatPl_IP IP + - + + + + + + - - + + - + + + + + + + + - + + + + - - + + + - + + + + + + + + - + + + + - - - + - + - + + + - + +
|
||||
whatSg_IP IP + - + + + + + + - - + + - + + + + + + + + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
when_IAdv IAdv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
|
||||
when_Subj Subj + - + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + - + + + - + + + - + +
|
||||
where_IAdv IAdv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
|
||||
which_IQuant IQuant + + + + + + + + - - + + + + + + + + + - + - + + + + + - + + + + + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
whoPl_IP IP + + + + + + + + - - + + - + + + + + + + + - + + + + - - + + + - + + + + + + + + - + + + + - - - + - + - + + + - + +
|
||||
whoSg_IP IP + + + + + + + + - - + + - + + + + + + + + - + + + + - - + + + + + + + + + + + + + + + + + - + + + - + - + + + - + +
|
||||
why_IAdv IAdv + + + + + + + + - - + + + + + + + + + + + - + + + + + - + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
|
||||
with_Prep Prep + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
without_Prep Prep + + + + + + + + - - + + + + + + + + + + - - + + + + + - + + + - + + + + + + + + + + + + + - + - + + + - + + + - + +
|
||||
yes_Utt Utt + - + + + + + + - - + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + - - + + + + - + + + - + +
|
||||
youPl_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
youPol_Pron Pron + + + + + + + + - - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - + + + - + +
|
||||
youSg_Pron Pron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + +
|
||||
|
@@ -67,6 +67,16 @@ http://acl.ldc.upenn.edu/W/W07/W07-08.pdf
|
||||
//and agreement of constructions with numerals.//
|
||||
|
||||
|
||||
===Basque===
|
||||
|
||||
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/basque (Inari Listenmaa, Francis Tyers)
|
||||
|
||||
- **Publications**
|
||||
|
||||
Inari Listenmaa.
|
||||
//Formal Methods for Testing Grammars.// PhD thesis. Chalmers University of Technology and University of Gothenburg. 2019. [PDF https://gupea.ub.gu.se/bitstream/2077/59037/1/gupea_2077_59037_1.pdf]
|
||||
#BR
|
||||
//Mentioned in Chapter 5 of the thesis.//
|
||||
|
||||
|
||||
===Bulgarian===
|
||||
@@ -117,6 +127,10 @@ Appendix to the GF book (A. Ranta, //Grammatical Framework//, CSLI 2011),
|
||||
http://www.grammaticalframework.org/gf-book/gf-chinese-appendix.pdf
|
||||
|
||||
|
||||
===Czech===
|
||||
|
||||
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/czech (Aarne Ranta, Michal Měchura)
|
||||
|
||||
|
||||
===Danish===
|
||||
|
||||
@@ -145,7 +159,7 @@ The GF Resource Grammar Library.
|
||||
//Linguistic Issues in Language Technology//,
|
||||
2 (2),
|
||||
2009.
|
||||
[PDF http://elanguage.net/journals/index.php/lilt/article/viewFile/214/158]
|
||||
[PDF https://journals.colorado.edu/index.php/lilt/article/view/1205/1047]
|
||||
#BR
|
||||
//A systematic presentation of the library from the linguistic point of view.//
|
||||
//Not only about English, but English examples abound.//
|
||||
@@ -155,8 +169,13 @@ The GF Resource Grammar Library.
|
||||
|
||||
- **Source**: http://www.grammaticalframework.org/lib/src/estonian (Kaarel Kaljurand, Inari Listenmaa)
|
||||
|
||||
%- **Publications**
|
||||
- **Publications**
|
||||
|
||||
Inari Listenmaa and Kaarel Kaljurand.
|
||||
Computational Estonian Grammar in Grammatical Framework.
|
||||
//Proceedings of the SALTMIL Workshop at LREC//,
|
||||
2014.
|
||||
[PDF http://ixa2.si.ehu.es/~jipsagak/SALTMIL/LREC_2014_Workshop_Proceedings_Saltmil.pdf]
|
||||
|
||||
|
||||
===Finnish===
|
||||
@@ -256,6 +275,9 @@ In The 3rd Workshop
|
||||
on South and Southeast Asian NLP, COLING 2012. //Reprinted in Shafqat's thesis//
|
||||
|
||||
|
||||
===Hungarian===
|
||||
|
||||
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/hungarian (Inari Listenmaa, Julia Jansson)
|
||||
|
||||
|
||||
===Icelandic===
|
||||
@@ -281,8 +303,6 @@ Bjarki Traustason, MSc thesis, Chalmers
|
||||
%- **Publications**
|
||||
|
||||
|
||||
|
||||
|
||||
===Japanese===
|
||||
|
||||
- **Source**: http://www.grammaticalframework.org/lib/src/japanese (Liza Zimina)
|
||||
@@ -302,14 +322,31 @@ Lecture Notes in Computer Science Volume 7614, 2012, pp 156-167.
|
||||
http://link.springer.com/chapter/10.1007%2F978-3-642-33983-7_16
|
||||
|
||||
|
||||
===Korean===
|
||||
|
||||
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/korean (Inari Listenmaa)
|
||||
|
||||
|
||||
|
||||
===Latin===
|
||||
|
||||
- **Source**: http://www.grammaticalframework.org/lib/src/latin (Aarne Ranta)
|
||||
- **Source**: http://www.grammaticalframework.org/lib/src/latin (Herbert Lange, Aarne Ranta)
|
||||
|
||||
%- **Publications**
|
||||
- **Publications**
|
||||
|
||||
Herbert Lange.
|
||||
Erstellen einer Grammatik für das Lateinische im “Grammatical Framework”,
|
||||
Master’s thesis (Magiserarbeit), Ludwig-Maximilians-University Munich, 2013.
|
||||
|
||||
Herbert Lange. Implementation of a Latin Grammar in Grammatical Framework, //DATeCH//, 2017.
|
||||
|
||||
Herbert Lange and Peter Ljunglöf.
|
||||
MULLE: A grammar-based Latin language learning tool to supplement the classroom setting.
|
||||
//Proceedings of the 5th Workshop on Natural Language Processing Techniques for Educational Applications//,
|
||||
2018.
|
||||
[PDF https://www.aclweb.org/anthology/W18-3715.pdf]
|
||||
#BR
|
||||
//Latin RGL used in a language-learning application.//
|
||||
|
||||
|
||||
===Latvian===
|
||||
@@ -397,6 +434,15 @@ Slide presentation, TYPES 2010, Warsaw,
|
||||
http://www.mimuw.edu.pl/~asl/publications/types2010-slides.pdf
|
||||
|
||||
|
||||
===Portuguese===
|
||||
|
||||
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/portuguese (Bruno Cuconato)
|
||||
|
||||
- **Publications**
|
||||
|
||||
Bruno Cuconato Claro.
|
||||
//A computational grammar for Portuguese//. MSc thesis. Rio de Janeiro, 2019.
|
||||
|
||||
|
||||
===Punjabi===
|
||||
|
||||
@@ -438,7 +484,7 @@ LNCS 6008,
|
||||
|
||||
===Russian===
|
||||
|
||||
- **Source**: http://www.grammaticalframework.org/lib/src/russian (Janna Khegai, Nikita Frolov)
|
||||
- **Source**: http://www.grammaticalframework.org/lib/src/russian (Janna Khegai, Nikita Frolov, Roman Suzi)
|
||||
|
||||
- **Publications**
|
||||
|
||||
@@ -475,6 +521,21 @@ MSc Thesis, Chalmers University of Technology,
|
||||
http://publications.lib.chalmers.se/records/fulltext/163234.pdf
|
||||
|
||||
|
||||
===Slovak===
|
||||
|
||||
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/slovak (Aarne Ranta, Slavomír Čéplö, Michal Měchura)
|
||||
|
||||
|
||||
===Slovenian===
|
||||
|
||||
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/slovenian (Krasimir Angelov, Anna Ehrlemark)
|
||||
|
||||
|
||||
===Somali===
|
||||
|
||||
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/somali (Inari Listenmaa)
|
||||
|
||||
|
||||
===Spanish===
|
||||
|
||||
- **Source**: http://www.grammaticalframework.org/lib/src/spanish http://www.grammaticalframework.org/lib/src/romance
|
||||
@@ -485,7 +546,8 @@ http://publications.lib.chalmers.se/records/fulltext/163234.pdf
|
||||
|
||||
===Swahili===
|
||||
|
||||
- **Source**: http://www.grammaticalframework.org/lib/src/swahili (Wanjiku Ng'ang'a)
|
||||
- **Source**: http://www.grammaticalframework.org/lib/src/swahili (Benson Kituku).
|
||||
- **Previous version**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/swahili/old (Wanjiku Ng'ang'a).
|
||||
|
||||
|
||||
- **Publications**
|
||||
@@ -519,10 +581,6 @@ P. Sojka et al (eds), TSD 2012, LNCS 7499, pp. 183-190.
|
||||
http://link.springer.com/content/pdf/10.1007%2F978-3-642-32790-2_22.pdf
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
===Thai===
|
||||
|
||||
- **Source**: http://www.grammaticalframework.org/lib/src/thai (Aarne Ranta, Chotiros Kairoje)
|
||||
@@ -556,3 +614,17 @@ July 21-22, 2007, LSA 2007 Linguistic Institute, Stanford University.
|
||||
2007.
|
||||
|
||||
See also **Hindi** above.
|
||||
|
||||
|
||||
===Zulu===
|
||||
|
||||
- **Source:** https://github.com/LauretteM/gf-rgl-zul/tree/master/src/zulu (Laurette Marais, Laurette Pretorius)
|
||||
|
||||
- **Publications**
|
||||
|
||||
Laurette Marais, Johannes A. Louw, Jaco Badenhorst, Karen Calteaux, Ilana Wilken, Nina van Niekerk,and Glenn Stein.
|
||||
AwezaMed: A Multilingual, MultimodalSpeech-To-Speech Translation Application for Maternal Health Care.
|
||||
//Proceedings of the 23rd International Conference on Information Fusion//.
|
||||
July 6-9, 2020.
|
||||
#BR
|
||||
//The article presents a health care translation system, which uses the Zulu resource grammar.//
|
||||
|
||||
93
doc/show_missing.py
Normal file
93
doc/show_missing.py
Normal file
@@ -0,0 +1,93 @@
|
||||
# show missing functions in the RGL languages
|
||||
# basic usage: python3 show_missing.py >missing-in-rgl-Grammar.tsv
|
||||
|
||||
import subprocess
|
||||
|
||||
# this is the functions you want to find: default is all funs in Grammar
|
||||
GF_LIB_PATH = '/Users/aarne/GF/dist/build/rgl/'
|
||||
ALLTENSES_PATH = GF_LIB_PATH + 'alltenses/'
|
||||
RGL_SOURCE_PATH = '/Users/aarne/GF/gf-rgl/src/'
|
||||
GRAMMAR = 'Grammar'
|
||||
|
||||
# these are the languages you investigate
|
||||
LANGS = ['Cze', 'Urd']
|
||||
|
||||
# get all functions in GRAMMAR, together with their types
|
||||
def get_funs(module=GRAMMAR):
|
||||
cmd = 'echo "pg -funs" | gf -run ' + ALLTENSES_PATH + module + '.gfo'
|
||||
missing = subprocess.Popen(cmd, text=True, shell=True,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
output = missing.communicate()[0].split(';')
|
||||
return ([(fun.split()[0].strip(), ' '.join(fun.split()[2:])) for fun in output if fun.split()])
|
||||
|
||||
# get all missing functions in GRAMMARLng; this can take a long time
|
||||
def get_missing_from_compiled(Lng, module=GRAMMAR):
|
||||
print('investigating', Lng)
|
||||
cmd = 'echo "pg -missing" | gf -run ' + ALLTENSES_PATH + module + Lng + '.gfo'
|
||||
missing = subprocess.Popen(cmd, text=True, shell=True,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
output = missing.communicate()[0].split()
|
||||
return set(output[2:])
|
||||
|
||||
# to get all languages in the compiled RGL, use all_langs from here
|
||||
def all_rgl_compiled_langs():
|
||||
modules = subprocess.run(['ls', ALLTENSES_PATH], capture_output=True, text=True)
|
||||
files = str(modules.stdout)
|
||||
return [file[-7:-4] for file in files.split() if file[:-7].endswith(GRAMMAR)]
|
||||
|
||||
# LANGS = all_rgl_compiled_langs() # uncomment this line if you want all languages
|
||||
|
||||
|
||||
# it is much faster to use source files (sending gfos to /tmp)
|
||||
def str_until(c, s):
|
||||
i = s.find(c)
|
||||
if i >= 0:
|
||||
return s[:i]
|
||||
else:
|
||||
return s
|
||||
|
||||
def get_missing_from_source(lang, gf_file):
|
||||
cmd = 'gf -batch -retain -no-pmcfg -src -gfo-dir=/tmp ' + gf_file
|
||||
missing = subprocess.Popen(cmd, text=True, shell=True,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
output = missing.communicate()[1].split('\n')
|
||||
missing = (lang, {str_until('\x1b[39;49m', line.split()[-1])
|
||||
for line in output
|
||||
if line.strip().startswith('Warning: no linearization of')})
|
||||
return missing
|
||||
|
||||
|
||||
def all_rgl_source_modules(module=GRAMMAR):
|
||||
cmd = 'ls ' + RGL_SOURCE_PATH + '*/' + module + '?*.gf'
|
||||
files = subprocess.Popen(cmd, text=True, shell=True,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
output = files.communicate()[0].split()
|
||||
return {file[-6:-3]: file for file in output}
|
||||
|
||||
LANGS = all_rgl_source_modules() # Lng: file dict
|
||||
|
||||
# make a text with tab-separated strings withcolumns fun, type, langs and rows for each fun
|
||||
def make_table(funs=get_funs(), module=GRAMMAR, langs=LANGS):
|
||||
header = ['fun', 'type'] + list(langs.keys()) # if dict, otherwise langs ###
|
||||
rows = [header]
|
||||
print('\t'.join(header))
|
||||
|
||||
# missings = {lang: get_missing_from_compiled(lang, module) for lang in langs}
|
||||
missings = {lang: get_missing_from_source(lang, file)[1] for lang,file in langs.items()}
|
||||
for fun in funs:
|
||||
row = [fun[0], fun[1]]
|
||||
for lang in langs.keys():
|
||||
if fun[0] in missings[lang]:
|
||||
row.append('-')
|
||||
else:
|
||||
row.append('+')
|
||||
rows.append(row)
|
||||
print('\t'.join(row))
|
||||
|
||||
|
||||
# the output is send to stdout
|
||||
make_table()
|
||||
|
||||
|
||||
|
||||
|
||||
111
doc/status.txt
111
doc/status.txt
@@ -7,64 +7,65 @@ Aarne Ranta
|
||||
The following table gives the languages currently available in the
|
||||
GF Resource Grammar Library.
|
||||
|
||||
For another view, see the
|
||||
[The Resource Grammar Library coverage map http://www.postcrashgames.com/gf_world/] .
|
||||
|
||||
Corrections and additions are welcome! Notice that only those parts of implementations
|
||||
that are currently available via http://grammaticalframework.org
|
||||
that are currently available via https://github.com/GrammaticalFramework/gf-rgl/
|
||||
are marked in the table
|
||||
|
||||
|
||||
|| ISO | Language | Git | Mini | Parad | Lex | Lang | API | Symb | Irreg | Dict | Trans | tested | publ | authors ||
|
||||
| Afr | Afrikaans | + | - | ++ | + | + | + | - | - | - | - | - | - | *LP,LM
|
||||
| Amh | Amharic | + | + | ++ | + | + | - | - | - | - | - | - | + | *MK
|
||||
| Ara | Arabic | + | + | + | + | + | + | + | - | - | - | + | + | AD,*IL
|
||||
| Bul | Bulgarian | + | + | + | + | + | + | + | + | + | + | ++ | + | *KA
|
||||
| Cat | Catalan | + | + | ++ | + | + | + | + | + | - | + | ++ | - | *JS,*IL
|
||||
| Chi | Chinese | + | - | ++ | + | + | + | - | - | + | + | - | + | ZL,*AR,*CP,QH
|
||||
| Dan | Danish | + | + | ++ | + | + | + | + | + | - | - | + | - | *AR
|
||||
| Dut | Dutch | + | + | ++ | + | + | + | + | + | - | + | + | - | *AR,FJ
|
||||
| Eng | English | + | + | ++ | + | + | + | + | + | + | + | ++ | + | *AR,BB,KA
|
||||
| Est | Estonian | + | - | ++ | + | + | + | - | - | + | + | + | + | *KK,*IL
|
||||
| Eus | Basque | + | - | ++ | + | + | + | - | - | - | - | - | + | *IL
|
||||
| Fin | Finnish | + | + | ++ | + | + | + | + | - | + | + | ++ | + | *AR,*IL
|
||||
| Fre | French | + | + | ++ | + | + | + | + | + | + | + | ++ | - | *AR,RE
|
||||
| Ger | German | + | + | ++ | + | + | + | + | + | + | + | ++ | - | *AR,HH,EG
|
||||
| Gre | Greek(mod) | + | - | ++ | + | + | + | - | - | - | - | - | + | *IP
|
||||
| Grc | Greek(anc) | - | - | - | - | - | - | - | - | - | - | - | + | *HLe
|
||||
| Heb | Hebrew | + | - | - | - | - | - | - | - | - | - | - | + | *DD
|
||||
| Hin | Hindi | + | + | ++ | + | + | + | + | - | - | + | + | + | *SV,*KP,MH,AR,PK
|
||||
| Ice | Icelandic | + | - | ++ | + | + | + | - | - | - | - | - | + | *BT
|
||||
| Ina | Interlingua | + | + | ++ | + | + | - | - | - | - | - | - | - | JB
|
||||
| Ita | Italian | + | + | ++ | + | + | + | + | - | - | + | ++ | - | *AR,*RE,GP
|
||||
| Jpn | Japanese | + | - | ++ | + | + | + | - | - | - | + | + | + | *LZ
|
||||
| Lat | Latin | + | - | - | - | - | - | - | - | + | - | - | - | *AR,*HLa
|
||||
| Lav | Latvian | + | - | ++ | + | + | + | - | - | - | - | + | + | *NG,*PP
|
||||
| Mlt | Maltese | + | + | ++ | + | + | + | + | - | - | - | - | + | *JC
|
||||
| Mon | Mongolian | + | - | ++ | + | + | + | - | - | + | - | - | + | *NE
|
||||
| Nep | Nepali | + | + | ++ | + | + | - | - | - | - | - | - | + | *DS
|
||||
| Nno | Norwegian(n) | + | + | ++ | + | + | + | + | + | - | - | - | - | *SRE
|
||||
| Nor | Norwegian(b) | + | + | ++ | + | + | + | + | + | - | - | + | - | *AR
|
||||
| Pes | Persian | + | - | + | + | + | + | - | - | - | - | + | + | SV,EA,SM,*IL
|
||||
| Pnb | Punjabi | + | + | + | + | + | + | + | - | - | - | - | + | *SV,MH
|
||||
| Pol | Polish | + | + | + | + | + | + | + | - | - | - | + | + | IN,*AS
|
||||
| Por | Portuguese | + | + | ++ | + | + | + | + | + | - | + | + | - | *BC
|
||||
| Ron | Romanian | + | + | ++ | + | + | + | + | - | - | - | + | + | *RE
|
||||
| Rus | Russian | + | + | ++ | + | + | + | - | - | + | + | - | + | JK,*NF
|
||||
| Snd | Sindhi | + | + | ++ | + | + | + | + | - | - | - | - | + | *SV,*JD
|
||||
| Spa | Spanish | + | + | ++ | + | + | + | + | + | - | + | ++ | - | *AR,IA,TS,*IL
|
||||
| Swa | Swahili | + | - | - | - | - | - | - | - | - | - | - | + | *WN,JM
|
||||
| Swe | Swedish | + | + | ++ | + | + | + | + | + | + | + | ++ | + | *MA,*AR,MF
|
||||
| Tha | Thai | + | - | ++ | + | + | + | + | - | - | + | + | - | *AR,CK
|
||||
| Tsn | Tswana | - | - | - | - | - | - | - | - | - | - | - | - | *LP,AB
|
||||
| Tur | Turkish | + | - | ++ | + | - | - | - | - | + | - | - | - | *SC,KA
|
||||
| Urd | Urdu | + | + | ++ | + | + | + | + | - | - | - | + | + | *SV,MH
|
||||
|| ISO | Language | Parad | Lex | Lang | API | Symb | Irreg | Dict | WN | tested | publ | authors ||
|
||||
| Afr | Afrikaans | ++ | + | + | + | - | - | - | - | - | - | *LP,LM |
|
||||
| Amh | Amharic | ++ | + | + | - | - | - | - | - | - | + | *MK |
|
||||
| Ara | Arabic | + | + | + | + | + | - | - | - | + | + | AD,*IL |
|
||||
| Bul | Bulgarian | + | + | + | + | + | + | + | + | ++ | + | *KA |
|
||||
| Cat | Catalan | ++ | + | + | + | + | + | - | + | ++ | - | *JS,*IL |
|
||||
| Chi | Chinese | ++ | + | + | + | - | - | + | + | - | + | ZL,*AR,*CP,QH |
|
||||
| Cze | Czech | + | + | + | + | - | - | - | - | + | - | *AR,*MM |
|
||||
| Dan | Danish | ++ | + | + | + | + | + | - | - | + | - | *AR |
|
||||
| Dut | Dutch | ++ | + | + | + | + | + | - | + | + | - | *AR,FJ |
|
||||
| Eng | English | ++ | + | + | + | + | + | + | + | ++ | + | *AR,BB,KA |
|
||||
| Est | Estonian | ++ | + | + | + | - | - | + | + | + | + | *KK,*IL |
|
||||
| Eus | Basque | ++ | + | + | + | - | - | - | - | - | + | *IL |
|
||||
| Fin | Finnish | ++ | + | + | + | + | - | + | + | ++ | + | *AR,*IL |
|
||||
| Fre | French | ++ | + | + | + | + | + | + | - | ++ | - | *AR,RE |
|
||||
| Ger | German | ++ | + | + | + | + | + | + | - | ++ | - | *AR,HH,EG |
|
||||
| Gre | Greek(mod) | ++ | + | + | + | - | - | - | - | - | + | *IP |
|
||||
| Grc | Greek(anc) | - | - | - | - | - | - | - | - | - | + | *HLe |
|
||||
| Heb | Hebrew | - | - | - | - | - | - | - | - | - | + | *DD |
|
||||
| Hin | Hindi | ++ | + | + | + | + | - | - | - | + | + | *SV,*KP,MH,AR,PK |
|
||||
| Hun | Hungarian | ++ | + | + | + | + | - | - | - | + | - | *IL,*JJ |
|
||||
| Ice | Icelandic | ++ | + | + | + | - | - | - | - | - | + | *BT |
|
||||
| Ina | Interlingua | ++ | + | + | - | - | - | - | - | - | - | JB |
|
||||
| Ita | Italian | ++ | + | + | + | + | - | - | + | ++ | - | *AR,*RE,GP |
|
||||
| Jpn | Japanese | ++ | + | + | + | - | - | - | - | + | + | *LZ |
|
||||
| Kor | Korean | ++ | + | + | + | + | - | - | - | + | - | *IL |
|
||||
| Lat | Latin | - | - | - | - | - | - | + | - | - | - | *AR,*HLa |
|
||||
| Lav | Latvian | ++ | + | + | + | - | - | - | - | + | + | *NG,*PP |
|
||||
| Mlt | Maltese | ++ | + | + | + | + | - | - | - | - | + | *JC |
|
||||
| Mon | Mongolian | ++ | + | + | + | - | - | + | - | - | + | *NE |
|
||||
| Nep | Nepali | ++ | + | + | - | - | - | - | - | - | + | *DS |
|
||||
| Nno | Norwegian(n) | ++ | + | + | + | + | + | - | - | - | - | *SRE |
|
||||
| Nor | Norwegian(b) | ++ | + | + | + | + | + | - | - | + | - | *AR |
|
||||
| Pes | Persian | + | + | + | + | - | - | - | - | + | + | SV,EA,SM,*IL |
|
||||
| Pnb | Punjabi | + | + | + | + | + | - | - | - | - | + | *SV,MH |
|
||||
| Pol | Polish | + | + | + | + | + | - | - | - | + | + | IN,*AS |
|
||||
| Por | Portuguese | ++ | + | + | + | + | + | + | + | + | + | *BC |
|
||||
| Ron | Romanian | ++ | + | + | + | + | - | - | - | + | + | *RE |
|
||||
| Rus | Russian | ++ | + | + | + | - | - | + | - | - | + | JK,NF,*RS |
|
||||
| Slk | Slovak | + | + | + | + | - | - | - | - | + | - | *AR,*MM,SČ |
|
||||
| Slv | Slovene | ++ | + | + | + | - | - | - | + | + | - | *KA,AE |
|
||||
| Snd | Sindhi | ++ | + | + | + | + | - | - | - | - | + | *SV,*JD |
|
||||
| Som | Somali | + | - | - | - | - | - | - | - | - | - | *IL |
|
||||
| Spa | Spanish | ++ | + | + | + | + | + | - | + | ++ | - | *AR,IA,TS,*IL |
|
||||
| Swa | Swahili | + | + | - | - | - | - | - | - | - | + | *WN,JM,BK |
|
||||
| Swe | Swedish | ++ | + | + | + | + | + | + | + | ++ | + | *MA,*AR,MF |
|
||||
| Tha | Thai | ++ | + | + | + | + | - | - | + | + | - | *AR,CK |
|
||||
| Tur | Turkish | ++ | + | - | - | - | - | + | + | - | - | *SC,KA |
|
||||
| Urd | Urdu | ++ | + | + | + | + | - | - | - | + | + | *SV,MH |
|
||||
|
||||
ISO = 3-letter ISO language code, used in library file names
|
||||
(mostly ISO 639-2 B (bibliographic))
|
||||
|
||||
Git = available in the gf-rgl Git repository
|
||||
|
||||
Parad = ``Paradigms`` file complete for major POS, ++ means with smart paradigms
|
||||
|
||||
Lex = the resource ``Lexicon`` (nearly) complete
|
||||
@@ -73,13 +74,13 @@ Lang = the resource ``Syntax`` (nearly) complete
|
||||
|
||||
API = the ``Syntax`` compiles
|
||||
|
||||
Symb = the ``Symbolic`` API compiles
|
||||
Symb = the ``Symbolic`` API complete
|
||||
|
||||
Irreg = the ``Irreg`` module with irregular verbs exists
|
||||
|
||||
Dict = the ``Dict`` module, large-scale morphological lexicon, exists
|
||||
|
||||
Trans = large-scale translation module and dictionary exists
|
||||
WN = [WordNet https://cloud.grammaticalframework.org/wordnet] lexicon exists
|
||||
|
||||
tested = tested in some applications, ++ means extensively tested with no major issues
|
||||
|
||||
@@ -93,10 +94,12 @@ authors = main contributors, * means still active
|
||||
|
||||
AB Ansu Berg,
|
||||
AD Ali El Dada,
|
||||
AE Anna Ehrlemark,
|
||||
AR Aarne Ranta,
|
||||
AS Adam Slaski,
|
||||
BB Björn Bringert,
|
||||
BC Bruno Cuconato,
|
||||
BK Benson Kituku,
|
||||
BT Bjarki Traustason,
|
||||
CK Chotiros Kairoje,
|
||||
CP Chen Peng,
|
||||
@@ -116,6 +119,7 @@ IP Ioanna Papadopoulou,
|
||||
JB Jean-Philippe Bernardy,
|
||||
JC John J. Camilleri,
|
||||
JD Jherna Devi,
|
||||
JJ Julia Jansson,
|
||||
JK Janna Khegai,
|
||||
JM Juliet Mutahi,
|
||||
JS Jordi Saludes,
|
||||
@@ -129,13 +133,16 @@ MA Malin Ahlberg,
|
||||
MF Markus Forsberg,
|
||||
MK Markos Kassa Gobena,
|
||||
MH Muhammad Humayoun,
|
||||
MM Michal Měchura,
|
||||
NE Nyamsuren Erdenebadrakh,
|
||||
NF Nick Frolov,
|
||||
NG Normunds Gruzitis,
|
||||
QH Qiao Haiyan,
|
||||
RE Ramona Enache,
|
||||
RS Roman Suzi,
|
||||
PP Peteris Paikens,
|
||||
SC Server Cimen,
|
||||
SČ Slavomír Čéplö,
|
||||
SM Sofy Moradi,
|
||||
SRE Stian Rødven Eide,
|
||||
SV Shafqat Virk,
|
||||
@@ -147,7 +154,7 @@ ZL Zhuo Lin Qiqige
|
||||
|
||||
==Rules==
|
||||
|
||||
Only components available at http://grammaticalframework.org are indicated in the table.
|
||||
Only components available at https://github.com/GrammaticalFramework/gf-rgl/ are indicated in the table.
|
||||
|
||||
If you want to work on a language already in the table, please be kind and contact the
|
||||
active authors of it.
|
||||
|
||||
@@ -32,7 +32,6 @@ the library, view all functions in a module's scope, and quickly jump to their d
|
||||
Other relevant documents:
|
||||
- [The RGL Status Document ../status.html]: the current status of different languages
|
||||
and the authors of each grammar
|
||||
- [The Resource Grammar Library coverage map http://www.postcrashgames.com/gf_world/]
|
||||
- [RGL Documentation and Publications ../rgl-publications.html]: links to publications and other documentation
|
||||
- [More modules ../gfdoc/sources.html]: extra modules, dictionaries, and
|
||||
the internals of the resource grammar
|
||||
@@ -46,7 +45,7 @@ abstract functions and their Universal Dependency labels
|
||||
- Paper "The GF Resource Grammar Library" by A. Ranta
|
||||
(//Linguistic Issues in Language Technology//, 2 (2), 2009). An overview of
|
||||
the library with linguistic motivations.
|
||||
[PDF http://journals.linguisticsociety.org/elanguage/lilt/article/download/214/214-501-1-PB.pdf]
|
||||
[PDF https://journals.colorado.edu/index.php/lilt/article/view/1205/1047]
|
||||
- Paper "Grammars as Software Libraries" by A. Ranta
|
||||
(In Y. Bertot, G. Huet, J-J. Lévy, and G. Plotkin (eds.),
|
||||
//From Semantics to Computer Science//, Cambridge University Press,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4,6 +4,7 @@ Amh,Amharic,amharic,,,,,n,n,,n
|
||||
Ara,Arabic,arabic,,,,,,y,,y
|
||||
Bul,Bulgarian,bulgarian,,,y,,,,,y
|
||||
Cat,Catalan,catalan,Romance,,y,,,,y,y
|
||||
Cgg,Rukiga,rukiga,,,y,y,n,n,y,y
|
||||
Chi,Chinese (simplified),chinese,,,,,,,,y
|
||||
Cze,Czech,czech,,,,,,n,,y
|
||||
Dan,Danish,danish,Scand,,y,,,,,y
|
||||
@@ -18,6 +19,7 @@ Grc,Ancient Greek,ancient_greek,,,y,,n,n,,n
|
||||
Gre,Greek,greek,,,,,,,,y
|
||||
Heb,Hebrew,hebrew,,,,,n,n,,n
|
||||
Hin,Hindi,hindi,Hindustani,to_devanagari,y,,,,,y
|
||||
Hrv,Croatian,croatian,,,,,,y,,n
|
||||
Hun,Hungarian,hungarian,,,n,y,y,y,n,n
|
||||
Ice,Icelandic,icelandic,,,,,,n,,y
|
||||
Ina,Interlingua,interlingua,,,y,,n,n,,n
|
||||
@@ -26,6 +28,7 @@ Jpn,Japanese,japanese,,,,,,,,y
|
||||
Kor,Korean,korean,,,n,y,y,y,n,n
|
||||
Lat,Latin,latin,,,,,y,y,n,y
|
||||
Lav,Latvian,latvian,,,,,,,y,y
|
||||
May,Malay,malay,,,y,,,,n,y
|
||||
Mlt,Maltese,maltese,,,,,,,,y
|
||||
Mon,Mongolian,mongolian,,,,,,n,,y
|
||||
Nep,Nepali,nepali,,,,,,n,,y
|
||||
@@ -41,9 +44,11 @@ Slo,Slovak,slovak,,,,,,n,,y
|
||||
Slv,Slovenian,slovenian,,,,,n,n,,n
|
||||
Snd,Sindhi,sindhi,,,,,,,,y
|
||||
Spa,Spanish,spanish,Romance,,y,,,,y,y
|
||||
Swa,Swahili,swahili,Bantu,,,n,n,n,n,n
|
||||
Swa,Swahili,swahili,Bantu,,,y,n,n,n,n
|
||||
Swe,Swedish,swedish,Scand,,y,,,,y,y
|
||||
Tam,Tamil,tamil,n,n,n,n,n,n,n,n
|
||||
Tel,Telugu,telugu,,,y,n,n,n,,n
|
||||
Tha,Thai,thai,,to_thai,,,,,,y
|
||||
Tur,Turkish,turkish,,,y,,,n,,n
|
||||
Urd,Urdu,urdu,Hindustani,,,,,,,y
|
||||
Som,Somali,somali,,,,,n,n,,n
|
||||
|
||||
|
BIN
src/FileHierarchy.png
Normal file
BIN
src/FileHierarchy.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
268
src/Lang.labels
268
src/Lang.labels
@@ -1,157 +1,157 @@
|
||||
PredVP nsubj head
|
||||
PredVPS nsubj head
|
||||
DirectComplVQ empty nsubj head ccomp -- Temp argument can only be empty in English
|
||||
DirectComplVS empty nsubj head ccomp -- Temp argument can only be empty in English
|
||||
SlashVP nsubj head
|
||||
SlashVS nsubj head ccomp
|
||||
FocusObjS nsubj head -- again might be wrong; more correct to call it dobj
|
||||
QuestIAdv advmod head -- "where does John sleep" cf. AdvVP
|
||||
QuestIComp head nsubj -- "where is John": John is clearly nsubj, but is where the head?
|
||||
QuestQVP nsubj head
|
||||
QuestSlash obj head
|
||||
QuestVP nsubj head
|
||||
PredVP nsubj head
|
||||
PredVPS nsubj head
|
||||
DirectComplVQ empty nsubj head ccomp -- Temp argument can only be empty in English
|
||||
DirectComplVS empty nsubj head ccomp -- Temp argument can only be empty in English
|
||||
SlashVP nsubj head
|
||||
SlashVS nsubj head ccomp
|
||||
FocusObjS nsubj head -- again might be wrong; more correct to call it obj
|
||||
QuestIAdv advmod head -- "where does John sleep" cf. AdvVP
|
||||
QuestIComp head nsubj -- "where is John": John is clearly nsubj, but is where the head?
|
||||
QuestQVP nsubj head
|
||||
QuestSlash obj head
|
||||
QuestVP nsubj head
|
||||
IdetCN det head
|
||||
|
||||
PredSCVP csubj head
|
||||
PredSCVP csubj head
|
||||
|
||||
ComplSlash head obj
|
||||
ComplSlashIP head obj
|
||||
Slash3V3 head obj
|
||||
SlashV2VNP head obj xcomp
|
||||
PastPartAgentAP head obj
|
||||
AdvQVP head obj
|
||||
ComplSlash head obj
|
||||
ComplSlashIP head obj
|
||||
Slash3V3 head obj
|
||||
SlashV2VNP head obj xcomp
|
||||
PastPartAgentAP head obj
|
||||
AdvQVP head obj
|
||||
|
||||
Slash2V3 head iobj
|
||||
Slash2V3 head iobj
|
||||
|
||||
ComplVS head ccomp
|
||||
ComplVQ head ccomp
|
||||
SlashV2S head ccomp
|
||||
SlashV2Q head ccomp
|
||||
CleftAdv head advcl -- not sure
|
||||
ComplVS head ccomp
|
||||
ComplVQ head ccomp
|
||||
SlashV2S head ccomp
|
||||
SlashV2Q head ccomp
|
||||
CleftAdv head advcl -- not sure
|
||||
|
||||
ComplVA head xcomp
|
||||
ComplVV head xcomp
|
||||
SlashVV head acl
|
||||
SlashV2A head xcomp
|
||||
SlashV2V head xcomp
|
||||
ComplVA head xcomp
|
||||
ComplVV head xcomp
|
||||
SlashVV head acl
|
||||
SlashV2A head xcomp
|
||||
SlashV2V head xcomp
|
||||
|
||||
AdvNP head nmod -- not sure
|
||||
ExtAdvNP head nmod -- not sure
|
||||
PassAgentVPSlash head nmod -- not sure
|
||||
CleftNP head acl -- this cannot be nmod, not with type RS
|
||||
AdvNP head nmod -- not sure
|
||||
ExtAdvNP head nmod -- not sure
|
||||
PassAgentVPSlash head nmod -- not sure
|
||||
CleftNP head acl -- this cannot be nmod, not with type RS
|
||||
|
||||
SSubjS head mark advcl
|
||||
RelS head advcl
|
||||
SSubjS head mark advcl
|
||||
RelS head advcl
|
||||
|
||||
AdNum advmod head
|
||||
AdAP advmod head
|
||||
AdvAP head advmod
|
||||
ComparAdvAdj advmod amod head
|
||||
ComparAdvAdjS advmod amod head
|
||||
AdvIAdv advmod head
|
||||
AdVVP advmod head
|
||||
AdvVP head advmod
|
||||
ExtAdvVP head advmod
|
||||
AddAdvQVP head advmod
|
||||
AdVVPSlash advmod head
|
||||
AdvVPSlash head advmod
|
||||
AdvSlash head advmod
|
||||
ExistIPAdv head advmod
|
||||
AdvS advmod head
|
||||
ExtAdvS advmod head
|
||||
AdNum advmod head
|
||||
AdAP advmod head
|
||||
AdvAP head advmod
|
||||
ComparAdvAdj advmod amod head
|
||||
ComparAdvAdjS advmod amod head
|
||||
AdvIAdv advmod head
|
||||
AdVVP advmod head
|
||||
AdvVP head advmod
|
||||
ExtAdvVP head advmod
|
||||
AddAdvQVP head advmod
|
||||
AdVVPSlash advmod head
|
||||
AdvVPSlash head advmod
|
||||
AdvSlash head advmod
|
||||
ExistIPAdv head advmod
|
||||
AdvS advmod head
|
||||
ExtAdvS advmod head
|
||||
|
||||
SubjS mark head
|
||||
RelVP mark head
|
||||
RelSlash mark head
|
||||
SubjS mark head
|
||||
RelVP mark head
|
||||
RelSlash mark head
|
||||
|
||||
ComplN2 head nmod
|
||||
ComplN3 nmod head
|
||||
AdvCN head nmod
|
||||
PossNP head nmod
|
||||
PartNP head nmod
|
||||
ExistNPAdv head nmod
|
||||
ComplN2 head nmod
|
||||
ComplN3 nmod head
|
||||
AdvCN head nmod
|
||||
PossNP head nmod
|
||||
PartNP head nmod
|
||||
ExistNPAdv head nmod
|
||||
|
||||
OrdNumeralSuperl nummod head -- quite wrong; cannot find relevant details in the documentation; but most probably head lies outside the score of this function
|
||||
DetQuant head nummod -- quite wrong; I think the head lies outside the scope of the function
|
||||
CNNumNP head nummod
|
||||
OrdNumeralSuperl nummod head -- quite wrong; cannot find relevant details in the documentation; but most probably head lies outside the score of this function
|
||||
DetQuant head nummod -- quite wrong; I think the head lies outside the scope of the function
|
||||
CNNumNP head nummod
|
||||
|
||||
ApposCN head appos
|
||||
ApposNP head appos
|
||||
ApposCN head appos
|
||||
ApposNP head appos
|
||||
|
||||
RelNP head acl
|
||||
RelCN head acl
|
||||
SentCN head acl
|
||||
SentAP head acl
|
||||
RelNP head acl
|
||||
RelCN head acl
|
||||
SentCN head acl
|
||||
SentAP head acl
|
||||
|
||||
DetQuantOrd head nummod amod -- quite wrong; again for same reason as DetQuant function
|
||||
DetCN det head
|
||||
IdetCN det head
|
||||
DetQuantOrd head nummod amod -- quite wrong; again for same reason as DetQuant function
|
||||
DetCN det head
|
||||
IdetCN det head
|
||||
IdetQuant head nummod
|
||||
CountNP det head
|
||||
PredetNP det head
|
||||
CountNP det head
|
||||
PredetNP det head
|
||||
PPartNP head amod -- only in core RGL
|
||||
|
||||
AdjCN amod head
|
||||
AdjDAP head amod
|
||||
CAdvAP case amod head
|
||||
ComparA amod head
|
||||
ComplA2 amod head
|
||||
CompoundAP head amod
|
||||
AdAdV amod head
|
||||
AdAdv amod head
|
||||
AdjCN amod head
|
||||
AdjDAP head amod
|
||||
CAdvAP case amod head
|
||||
ComparA amod head
|
||||
ComplA2 amod head
|
||||
CompoundAP head amod
|
||||
AdAdV amod head
|
||||
AdAdv amod head
|
||||
|
||||
CompoundN compound head
|
||||
CompoundN compound head
|
||||
|
||||
IIDig head goeswith
|
||||
IIDig head goeswith
|
||||
|
||||
PrepNP case head
|
||||
PrepIP case head
|
||||
SlashPrep head case
|
||||
VPSlashPrep head case
|
||||
PrepNP case head
|
||||
PrepIP case head
|
||||
SlashPrep head case
|
||||
VPSlashPrep head case
|
||||
|
||||
UttImpPl empty head
|
||||
UttImpPol empty head
|
||||
UttImpSg empty head
|
||||
UttImpPl empty head
|
||||
UttImpPol empty head
|
||||
UttImpSg empty head
|
||||
|
||||
MkVPS empty empty head
|
||||
MkVPS empty empty head
|
||||
|
||||
UseCl empty empty head
|
||||
UseQCl empty empty head
|
||||
UseRCl empty empty head
|
||||
UseSlash empty empty head
|
||||
UseVC empty empty head
|
||||
UseCl empty empty head
|
||||
UseQCl empty empty head
|
||||
UseRCl empty empty head
|
||||
UseSlash empty empty head
|
||||
UseVC empty empty head
|
||||
|
||||
BaseAP head conj
|
||||
BaseAdV head conj
|
||||
BaseAdv head conj
|
||||
BaseCN head conj
|
||||
BaseDAP head conj
|
||||
BaseIAdv head conj
|
||||
BaseNP head conj
|
||||
BaseRS head conj
|
||||
BaseS head conj
|
||||
ConsAP head conj
|
||||
ConsAdV head conj
|
||||
ConsAdv head conj
|
||||
ConsCN head conj
|
||||
ConsDAP head conj
|
||||
ConsIAdv head conj
|
||||
ConsNP head conj
|
||||
ConsRS head conj
|
||||
ConsS head conj
|
||||
ConjAP cc head
|
||||
ConjAdV cc head
|
||||
ConjAdv cc head
|
||||
ConjCN cc head
|
||||
ConjDet cc head
|
||||
ConjIAdv cc head
|
||||
ConjNP cc head
|
||||
ConjRS cc head
|
||||
ConjS cc head
|
||||
PhrUtt cc head discourse
|
||||
BaseAP head conj
|
||||
BaseAdV head conj
|
||||
BaseAdv head conj
|
||||
BaseCN head conj
|
||||
BaseDAP head conj
|
||||
BaseIAdv head conj
|
||||
BaseNP head conj
|
||||
BaseRS head conj
|
||||
BaseS head conj
|
||||
ConsAP head conj
|
||||
ConsAdV head conj
|
||||
ConsAdv head conj
|
||||
ConsCN head conj
|
||||
ConsDAP head conj
|
||||
ConsIAdv head conj
|
||||
ConsNP head conj
|
||||
ConsRS head conj
|
||||
ConsS head conj
|
||||
ConjAP cc head
|
||||
ConjAdV cc head
|
||||
ConjAdv cc head
|
||||
ConjCN cc head
|
||||
ConjDet cc head
|
||||
ConjIAdv cc head
|
||||
ConjNP cc head
|
||||
ConjRS cc head
|
||||
ConjS cc head
|
||||
PhrUtt cc head discourse
|
||||
|
||||
PlusChunk head dep
|
||||
TTAnt empty empty head
|
||||
PlusChunk head dep
|
||||
TTAnt empty empty head
|
||||
|
||||
TExclMark head dep -- punctuation in the middle in these three
|
||||
TFullStop head dep
|
||||
@@ -159,13 +159,13 @@ TQuestMark head dep
|
||||
|
||||
ComplV2 head obj -- shortcuts in App
|
||||
ComplV2V head obj xcomp
|
||||
ComplV3 head iobj obj ---- could be dobj dobj
|
||||
ComplV3 head iobj obj ---- could be obj obj
|
||||
PassAgentV2 head ncomp -- not sure
|
||||
RelV2 mark nsubj head
|
||||
QuestV2 obj nsubj head
|
||||
|
||||
ModCN amod head -- in ResourceDemo
|
||||
RSubjS mark advcl head
|
||||
RSubjS mark advcl head
|
||||
SlashV2 nsubj head
|
||||
RAdvCN head case nmod
|
||||
SubjCl head mark advcl
|
||||
@@ -181,7 +181,7 @@ AdV ADV
|
||||
Adv ADV
|
||||
CAdv ADV
|
||||
Card NUM
|
||||
Conj CONJ
|
||||
Conj CCONJ
|
||||
Det DET
|
||||
Digits NUM
|
||||
IAdv ADV
|
||||
@@ -194,7 +194,7 @@ N2 NOUN
|
||||
N3 NOUN
|
||||
Numeral NUM
|
||||
Ord NUM
|
||||
PConj CONJ
|
||||
PConj CCONJ
|
||||
PN PROPN
|
||||
Predet DET
|
||||
Prep ADP
|
||||
@@ -214,7 +214,3 @@ VA VERB
|
||||
VQ VERB
|
||||
VS VERB
|
||||
VV VERB
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
78
src/README.md
Normal file
78
src/README.md
Normal file
@@ -0,0 +1,78 @@
|
||||
# Introduction
|
||||
|
||||
## Intended audience of this Readme
|
||||
|
||||
This Readme is designed for new developers who wish to either extend/improve on a resource grammar or create a new one. It provides an overview of the relationships between files and a simple working pipeline for developers to get started.
|
||||
|
||||
Note that while files in this folder are meant to be named with 3 letter suffixes representing the language, e.g. "ResBul" for the Bulgarian resource file, this Readme will use a 4 letter suffix "Lang" to represent a language in general, e.g. "ResLang".
|
||||
|
||||
## Author(s) of this Readme
|
||||
|
||||
This Readme was written by Nemo and edited by Inari on 14th August 2022.
|
||||
|
||||
# Creating a new resource grammar
|
||||
|
||||
If you are working on an RGL for a new language, you will need to run "Clone.hs" in the "src" folder so that you can clone a project from another language to your language to give you a basis to start with.
|
||||
|
||||
As per the instructions, the syntax is "Clone fromdir todir fromlang tolang", e.g. "runghc Clone swedish danish Swe Dan". You may want to add the option --comment-body after the word "Clone" to comment out every line in the body of the files to start fresh.
|
||||
|
||||
This is especially useful if your new language has very little in common with the language you are copying from because they come from different language families.
|
||||
|
||||
# File hierarchy
|
||||
|
||||
The number of files may be overwhelming, but they are related together following the graphic under "Module dependencies" under the rgl-tutorial. In the graphic, an example is that GrammarIta and ResIta are dependent on Prelude as they have arrows pointing towards the Prelude ellipse.
|
||||
|
||||
http://www.grammaticalframework.org/lib/doc/rgl-tutorial/index.html
|
||||
|
||||
The below graphic is an alternative graphic explaining the relations, taken from private correspondence with Inari.
|
||||
|
||||

|
||||
|
||||
CatLang defines the categories, and the modules AdjectiveLang, NounLang, SentenceLang, PhraseLang, and so on, all extend Cat. The Grammar is defined as a collection of all those AdjectiveLang, NounLang, SentenceLang, and so on modules. LangLang is defined as the collection GrammarLang and LexiconLang and is where you will be checking your program. You may ignore:
|
||||
|
||||
- AllLangAbs, AllLang, ExtendLang, ExtraLangAbs, ExtraLang, ConstructionLang, DocumentationLang, MarkupLang, BackwardLang
|
||||
|
||||
If the language you cloned from has any of these resource modules, you can remove them completely:
|
||||
|
||||
- IrregLang (unless you want to populate it with irregular verbs of your own language), MissingLang (see how to generate your own if you need it later: https://inariksit.github.io/gf/2018/08/28/gf-gotchas.html#generating-missingxxx)
|
||||
|
||||
# Relationships between functions in files
|
||||
|
||||
There may be several ways the functions within the files are organised relative to one another. In other words, there may be several schemas depending on the author. More recent RGLs might implement one schema detailed by this blog post by Inari.
|
||||
https://inariksit.github.io/gf/2018/08/28/gf-gotchas.html#my-naming-scheme-for-lincats-and-opers
|
||||
|
||||
# Main goal
|
||||
|
||||
You may think of your long-term goal as eventually implementing all the abstract functions found in the "abstract" folder. In other words, you are somewhat constrained by the available categories in Cat.gf and functions in relevant e.g. Noun.gf, Verb.gf etc. files.
|
||||
|
||||
In the future, if you find that the available functions do not apply to your language, you may search in the Extend.gf file for more optional functions, or in Extra.gf. if it doesn't exist, create your own ExtraLangAbs.gf with the concrete ExtraLang.gf, all in the same directory gf-rgl/src/lang. This blog post contains more information.
|
||||
|
||||
https://inariksit.github.io/gf/2021/02/15/rgl-api-core-extensions.html#language-specific-extra-modules
|
||||
|
||||
There is a prioritised list of RGL functions for new resource grammars written by contributor heatherleaf. You can start by implementing the "+++" functions.
|
||||
|
||||
https://github.com/GrammaticalFramework/gf-rgl/issues/238
|
||||
|
||||
# Working pipeline example
|
||||
|
||||
For a pipeline, You might wish to start with implementing functions that create Noun Phrase like DetCN: Det -> CN -> NP; a function that takes a Determiner and a Common Noun and gives a Noun Phrase. In this case, the workflow is done by editing:
|
||||
|
||||
1. ResLang: Contains the relevant Operations (Opers) for e.g. "Noun", "mkN", "Determiner" and "Quant".
|
||||
2. ParamLang: Contains the language paramters used in ResLang.
|
||||
3. CatLang: CatLang will be defined in terms of Opers found in ResLang. This means that instead of Defining NP in CatLang as, say, {s: Str}, you will define NP as ResLang.NounPhrase, which points to a NounPhrase Oper in ResLang. Then you need to implement the word syntax in NounLang.
|
||||
4. NounLang: Contains the relevant lins in defining sentence structure.
|
||||
5. LexiconLang: Contains the lins that define the Noun words.
|
||||
|
||||
As you will have to define a determiner that is created from a Quant, you will have to look at the following files too.
|
||||
|
||||
6. StructuralLang: Contains the lins that define the Quant/Determiner words.
|
||||
|
||||
Note that you will have to use mkQuant instead of creating Det by mkDet directly.
|
||||
|
||||
# Testing your work
|
||||
|
||||
When you are done with your implementation, you may test that everything works by starting up LangLang and, in this case, writing something like:
|
||||
|
||||
```DetCN (DetQuant xxxx_Quant NumSg) (UseN xxxx_N)```
|
||||
|
||||
Where you replace 'xxxx' with the word in Lang.
|
||||
@@ -126,6 +126,8 @@ abstract Cat = Common ** {
|
||||
N ; -- common noun e.g. "house"
|
||||
N2 ; -- relational noun e.g. "son"
|
||||
N3 ; -- three-place relational noun e.g. "connection"
|
||||
GN ; -- given name e.g. "George"
|
||||
SN ; -- second name e.g. "Washington"
|
||||
PN ; -- proper name e.g. "Paris"
|
||||
|
||||
-- DEPRECATED: QuantSg, QuantPl
|
||||
|
||||
@@ -13,6 +13,9 @@ fun
|
||||
InflectionN : N -> Inflection ;
|
||||
InflectionN2 : N2 -> Inflection ;
|
||||
InflectionN3 : N3 -> Inflection ;
|
||||
InflectionPN : PN -> Inflection ;
|
||||
InflectionGN : GN -> Inflection ;
|
||||
InflectionSN : SN -> Inflection ;
|
||||
InflectionA : A -> Inflection ;
|
||||
InflectionA2 : A2 -> Inflection ;
|
||||
InflectionV : V -> Inflection ;
|
||||
@@ -27,6 +30,9 @@ fun
|
||||
InflectionV2Q : V2Q -> Inflection ;
|
||||
InflectionV2A : V2A -> Inflection ;
|
||||
InflectionAdv : Adv -> Inflection ;
|
||||
InflectionAdV : AdV -> Inflection ;
|
||||
InflectionAdA : AdA -> Inflection ;
|
||||
InflectionAdN : AdN -> Inflection ;
|
||||
InflectionPrep : Prep -> Inflection ;
|
||||
|
||||
fun
|
||||
|
||||
@@ -47,6 +47,7 @@ abstract Extend = Cat ** {
|
||||
PredVPS : NP -> VPS -> S ; -- she [has walked and won't sleep]
|
||||
SQuestVPS : NP -> VPS -> QS ; -- has she walked
|
||||
QuestVPS : IP -> VPS -> QS ; -- who has walked
|
||||
RelVPS : RP -> VPS -> RS ; -- which won't sleep
|
||||
|
||||
-- existentials that work in the absence of Cl
|
||||
ExistS : Temp -> Pol -> NP -> S ; -- there was a party
|
||||
@@ -69,11 +70,20 @@ abstract Extend = Cat ** {
|
||||
MkVPS2 : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved
|
||||
ConjVPS2 : Conj -> [VPS2] -> VPS2 ; -- has loved and now hates
|
||||
ComplVPS2 : VPS2 -> NP -> VPS ; -- has loved and now hates that person
|
||||
ReflVPS2 : VPS2 -> RNP -> VPS ; -- have loved and now hate myself and my car
|
||||
|
||||
MkVPI2 : VPSlash -> VPI2 ; -- to love
|
||||
ConjVPI2 : Conj -> [VPI2] -> VPI2 ; -- to love and hate
|
||||
ComplVPI2 : VPI2 -> NP -> VPI ; -- to love and hate that person
|
||||
|
||||
-- Conjunction of copula complements
|
||||
cat [Comp]{2} ;
|
||||
fun ConjComp : Conj -> ListComp -> Comp ;
|
||||
|
||||
-- Conjunction of imperatives
|
||||
cat [Imp] {2} ;
|
||||
fun ConjImp : Conj -> ListImp -> Imp ;
|
||||
|
||||
fun
|
||||
ProDrop : Pron -> Pron ; -- unstressed subject pronoun becomes empty: "am tired"
|
||||
|
||||
@@ -116,6 +126,11 @@ abstract Extend = Cat ** {
|
||||
|
||||
ProgrVPSlash : VPSlash -> VPSlash;
|
||||
|
||||
-- construct VPSlash from A2 and N2
|
||||
|
||||
A2VPSlash : A2 -> VPSlash ; -- is married to (that person)
|
||||
N2VPSlash : N2 -> VPSlash ; -- is a mother of (that person)
|
||||
|
||||
-- existential for mathematics
|
||||
|
||||
ExistsNP : NP -> Cl ; -- there exists a number / there exist numbers
|
||||
@@ -126,7 +141,7 @@ abstract Extend = Cat ** {
|
||||
ExistMassCN : CN -> Cl ; -- there is beer / there is no beer
|
||||
ExistPluralCN : CN -> Cl ; -- there are trees / there are no trees
|
||||
|
||||
-- generalisation of existential, with adverb as a parameter
|
||||
-- generalisation of existential, with adverb as an argument
|
||||
AdvIsNP : Adv -> NP -> Cl ; -- here is the tree / here are the trees
|
||||
AdvIsNPAP : Adv -> NP -> AP -> Cl ; -- here are the instructions documented
|
||||
|
||||
@@ -184,6 +199,15 @@ abstract Extend = Cat ** {
|
||||
|
||||
PredetRNP : Predet -> RNP -> RNP ; -- all my brothers
|
||||
|
||||
AdvRNP : NP -> Prep -> RNP -> RNP ; -- a dispute with his wife
|
||||
AdvRVP : VP -> Prep -> RNP -> VP ; -- lectured about her travels
|
||||
AdvRAP : AP -> Prep -> RNP -> AP ; -- adamant in his refusal
|
||||
|
||||
ReflA2RNP : A2 -> RNP -> AP ; -- indifferent to their surroundings
|
||||
-- NOTE: generalizes ReflA2
|
||||
|
||||
PossPronRNP : Pron -> Num -> CN -> RNP -> NP ; -- his abandonment of his wife and children
|
||||
|
||||
ConjRNP : Conj -> RNPList -> RNP ; -- my family, John and myself
|
||||
|
||||
Base_rr_RNP : RNP -> RNP -> RNPList ; -- my family, myself
|
||||
@@ -193,6 +217,9 @@ abstract Extend = Cat ** {
|
||||
Cons_nr_RNP : NP -> RNPList -> RNPList ; -- John, my family, myself
|
||||
---- Cons_rn_RNP : RNP -> ListNP -> RNPList ; -- myself, John, Mary
|
||||
|
||||
-- reflexive possessive on its own right, like in Swedish, Czech, Slovak
|
||||
|
||||
ReflPossPron : Quant ; -- Swe sin,sitt,sina
|
||||
|
||||
--- from Extensions
|
||||
|
||||
@@ -240,6 +267,7 @@ abstract Extend = Cat ** {
|
||||
weFem_Pron : Pron ; -- we (Fem)
|
||||
youPlFem_Pron : Pron ; -- you plural (Fem)
|
||||
theyFem_Pron : Pron ; -- they (Fem)
|
||||
theyNeutr_Pron : Pron ; -- they (Neutr)
|
||||
youPolFem_Pron : Pron ; -- you polite (Fem)
|
||||
youPolPl_Pron : Pron ; -- you polite plural (Masc)
|
||||
youPolPlFem_Pron : Pron ; -- you polite plural (Fem)
|
||||
@@ -251,4 +279,31 @@ abstract Extend = Cat ** {
|
||||
UttDatIP : IP -> Utt ; -- whom (dative)
|
||||
|
||||
|
||||
-- UseDAP replaces DetNP from the RGL which is more limited.
|
||||
-- Instead of (DetNP d) use (UseDAP (DetDAP d)). The advantage
|
||||
-- is that now we can also have an adjective inserted, i.e.
|
||||
-- (UseDAP (AdjDAP (DetDAP d) a). There are also versions of
|
||||
-- UseDAP for different genders.
|
||||
fun UseDAP : DAP -> NP ;
|
||||
UseDAPMasc : DAP -> NP ;
|
||||
UseDAPFem : DAP -> NP ;
|
||||
|
||||
cat X ; -- for words that are difficult to classify, mainly for MorphoDict
|
||||
|
||||
fun
|
||||
UseComp_estar : Comp -> VP ; -- esta lleno, as opposed to es lleno
|
||||
UseComp_ser : Comp -> VP ; -- es lleno, as opposed to esta lleno
|
||||
|
||||
fun
|
||||
CardCNCard : Card -> CN -> Card ; -- three million, four lakh, six dozen etc
|
||||
|
||||
GivenName : GN -> PN ;
|
||||
MaleSurname : SN -> PN ;
|
||||
FemaleSurname : SN -> PN ;
|
||||
PlSurname : SN -> PN ;
|
||||
FullName : GN -> SN -> PN ;
|
||||
|
||||
fun
|
||||
AnaphPron : NP -> Pron ;
|
||||
|
||||
}
|
||||
|
||||
@@ -20,11 +20,13 @@
|
||||
abstract Numeral = Cat [Numeral,Digits] ** {
|
||||
|
||||
cat
|
||||
Digit ; -- 2..9
|
||||
Sub10 ; -- 1..9
|
||||
Sub100 ; -- 1..99
|
||||
Sub1000 ; -- 1..999
|
||||
Sub1000000 ; -- 1..999999
|
||||
Digit ; -- 2..9
|
||||
Sub10 ; -- 1..9
|
||||
Sub100 ; -- 1..99
|
||||
Sub1000 ; -- 1..999
|
||||
Sub1000000 ; -- 1..999999
|
||||
Sub1000000000 ; -- 1..999999999
|
||||
Sub1000000000000 ; -- 1..999999999999
|
||||
|
||||
data
|
||||
num : Sub1000000 -> Numeral ; -- 123456 [coercion to top category]
|
||||
@@ -33,18 +35,36 @@ data
|
||||
|
||||
pot01 : Sub10 ; -- 1
|
||||
pot0 : Digit -> Sub10 ; -- d * 1
|
||||
pot0as1 : Sub10 -> Sub100 ; -- coercion of 1..9
|
||||
|
||||
pot110 : Sub100 ; -- 10
|
||||
pot111 : Sub100 ; -- 11
|
||||
pot1to19 : Digit -> Sub100 ; -- 10 + d
|
||||
pot0as1 : Sub10 -> Sub100 ; -- coercion of 1..9
|
||||
pot1 : Digit -> Sub100 ; -- d * 10
|
||||
pot1plus : Digit -> Sub10 -> Sub100 ; -- d * 10 + n
|
||||
pot1as2 : Sub100 -> Sub1000 ; -- coercion of 1..99
|
||||
|
||||
pot21 : Sub1000 ; -- a hundred instead of one hundred
|
||||
pot2 : Sub10 -> Sub1000 ; -- m * 100
|
||||
pot2plus : Sub10 -> Sub100 -> Sub1000 ; -- m * 100 + n
|
||||
pot2as3 : Sub1000 -> Sub1000000 ; -- coercion of 1..999
|
||||
|
||||
pot31 : Sub1000000 ; -- a thousand instead of one thousand
|
||||
pot3 : Sub1000 -> Sub1000000 ; -- m * 1000
|
||||
pot3plus : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n
|
||||
pot3as4 : Sub1000000 -> Sub1000000000 ; -- coercion of 1..999999
|
||||
pot3float : Float -> Sub1000000 ; -- 3.5 thousand
|
||||
|
||||
pot41 : Sub1000000000 ; -- a million instead of one million
|
||||
pot4 : Sub1000 -> Sub1000000000 ; -- m * 1000000000
|
||||
pot4plus : Sub1000 -> Sub1000000 -> Sub1000000000 ; -- m * 1000000000 + n
|
||||
pot4as5 : Sub1000000000 -> Sub1000000000000 ; -- coercion of 1..999999999
|
||||
pot4float : Float -> Sub1000000000 ; -- 3.5 million
|
||||
|
||||
pot51 : Sub1000000000000 ; -- a billion instead of one billion
|
||||
pot5 : Sub1000 -> Sub1000000000000 ; -- m * 1000000000
|
||||
pot5plus : Sub1000 -> Sub1000000000 -> Sub1000000000000 ; -- m * 1000000000 + n
|
||||
pot5float : Float -> Sub1000000000000 ; -- 3.5 billion
|
||||
|
||||
-- Numerals as sequences of digits have a separate, simpler grammar
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ abstract Sentence = Cat ** {
|
||||
-- To fix these parameters, see [Phrase Phrase.html].
|
||||
|
||||
ImpVP : VP -> Imp ; -- love yourselves
|
||||
AdvImp : Adv -> Imp -> Imp ; -- please love yourselves
|
||||
|
||||
--2 Embedded sentences
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
concrete AllAfr of AllAfrAbs =
|
||||
LangAfr,
|
||||
IrregAfr,
|
||||
ExtraAfr
|
||||
ExtendAfr
|
||||
**
|
||||
{
|
||||
--{} ;
|
||||
|
||||
@@ -83,6 +83,6 @@ concrete CatAfr of Cat =
|
||||
N = Noun ;
|
||||
N2 = {s : NForm => Str ; g : Gender} ** {c2 : Preposition} ;
|
||||
N3 = {s : NForm => Str ; g : Gender} ** {c2,c3 : Preposition} ;
|
||||
PN = {s : NPCase => Str} ;
|
||||
GN, SN, PN = {s : NPCase => Str} ;
|
||||
|
||||
}
|
||||
|
||||
165
src/afrikaans/DocumentationAfr.gf
Normal file
165
src/afrikaans/DocumentationAfr.gf
Normal file
@@ -0,0 +1,165 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
concrete DocumentationAfr of Documentation = CatAfr ** open
|
||||
ResAfr,
|
||||
Prelude,
|
||||
HTML
|
||||
in {
|
||||
|
||||
|
||||
lincat
|
||||
Inflection = {t : Str; s1,s2 : Str} ;
|
||||
Definition = {s : Str} ;
|
||||
Document = {s : Str} ;
|
||||
Tag = {s : Str} ;
|
||||
|
||||
lin
|
||||
InflectionN, InflectionN2, InflectionN3 = \noun -> {
|
||||
t = "s" ;
|
||||
s1 = heading1 "Selfstandige Naamwoord" ;
|
||||
s2 = frameTable (
|
||||
tr (th "Enkelvoud" ++ th "Meervoud" ) ++
|
||||
tr (td (noun.s ! NF Sg Nom) ++ td (noun.s ! NF Pl Nom)))
|
||||
} ;
|
||||
|
||||
InflectionPN = \pn -> {
|
||||
t = "pn" ;
|
||||
s1 = heading1 "Naam" ;
|
||||
s2 = paragraph (pn.s ! NPNom)
|
||||
} ;
|
||||
|
||||
InflectionGN = \pn -> {
|
||||
t = "vnm" ;
|
||||
s1 = heading1 "Voornaam" ;
|
||||
s2 = paragraph (pn.s ! NPNom)
|
||||
} ;
|
||||
|
||||
InflectionSN = \pn -> {
|
||||
t = "van" ;
|
||||
s1 = heading1 "Van" ;
|
||||
s2 = paragraph (pn.s ! NPNom)
|
||||
} ;
|
||||
|
||||
InflectionA, InflectionA2 = \adj ->
|
||||
let
|
||||
gforms : AForm -> Str = \a ->
|
||||
td (adj.s ! Posit ! a) ++
|
||||
td (adj.s ! Compar ! a) ++
|
||||
case a of {
|
||||
AGen => td "-" ; -- superlative partitive not used
|
||||
_ => td (adj.s ! Superl ! a)
|
||||
} ;
|
||||
dtable : Str =
|
||||
frameTable (
|
||||
tr (th [] ++ th "Stellend" ++ th "Vergrotend" ++
|
||||
th "Oortreffend") ++
|
||||
tr (th "Predikatief" ++ gforms APred) ++
|
||||
tr (th "Attributief" ++ gforms AAttr) ++
|
||||
tr (th "Partitief" ++ gforms AGen)
|
||||
)
|
||||
in { t = "bv" ;
|
||||
s1 = heading1 "Byvoeglike naamwoord" ;
|
||||
s2 = dtable
|
||||
} ;
|
||||
|
||||
InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
|
||||
t = "bw" ;
|
||||
s1 = heading1 "Bywoord" ;
|
||||
s2 = paragraph adv.s
|
||||
} ;
|
||||
|
||||
InflectionPrep p = {
|
||||
t = "prep" ;
|
||||
s1 = heading1 "Voorsetsel" ;
|
||||
s2 = paragraph p.s
|
||||
} ;
|
||||
|
||||
InflectionV v = {
|
||||
t = "w" ;
|
||||
s1 = heading1 "Werkwoord" ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2 v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Werkwoord" ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV3 v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Werkwoord" ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2V v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Werkwoord" ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2S v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Werkwoord" ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2Q v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Werkwoord" ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionV2A v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Werkwoord" ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionVV v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Werkwoord" ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionVS v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Werkwoord" ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionVQ v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Werkwoord" ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
InflectionVA v = {
|
||||
t = "v" ;
|
||||
s1 = heading1 "Werkwoord" ;
|
||||
s2 = inflVerb v
|
||||
} ;
|
||||
|
||||
lin
|
||||
NoDefinition t = {s=t.s};
|
||||
MkDefinition t d = {s="<p><b>Definisie:</b>"++t.s++d.s++"</p>"};
|
||||
MkDefinitionEx t d e = {s="<p><b>Definisie:</b>"++t.s++d.s++"</p><p><b>Voorbeeld:</b>"++e.s++"</p>"};
|
||||
|
||||
MkDocument d i e = ss (i.s1 ++ d.s ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph
|
||||
MkTag i = ss i.t ;
|
||||
|
||||
oper
|
||||
inflVerb : VVerb -> Str = \verb ->
|
||||
let
|
||||
vfin : VForm -> Str = \f ->
|
||||
verb.s ! f ++ verb.prefix ;
|
||||
gforms : VForm -> Str = \f ->
|
||||
td (vfin f) ;
|
||||
|
||||
in frameTable (
|
||||
tr (th "Infinitief" ++ td (verb.s ! VInf)) ++
|
||||
tr (th "Teenwoordige Tyd" ++ td (verb.s ! VPres)) ++
|
||||
tr (th "Verlede Tyd" ++ td (verb.s ! VPast)) ++
|
||||
tr (th "Perfectief" ++ td (verb.s ! VPerf))
|
||||
) ;
|
||||
}
|
||||
20
src/afrikaans/ExtendAfr.gf
Normal file
20
src/afrikaans/ExtendAfr.gf
Normal file
@@ -0,0 +1,20 @@
|
||||
concrete ExtendAfr of Extend =
|
||||
CatAfr ** ExtendFunctor - [PassVPSlash,PassAgentVPSlash]
|
||||
with
|
||||
(Grammar = GrammarAfr) **
|
||||
|
||||
open
|
||||
ParadigmsAfr, ResAfr in {
|
||||
|
||||
-- KA: guessed from PassV2 in Afrikaans and the equivalents in Dutch
|
||||
lin PassVPSlash vps =
|
||||
insertInf (vps.s.s ! VPerf) (predV word_V) ;
|
||||
PassAgentVPSlash vps np =
|
||||
insertAdv (appPrep "door" np.s) (insertInf (vps.s.s ! VPerf) (predV word_V)) ;
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = \\c => gn.s ! NPNom ++ sn.s ! c ;
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -2,4 +2,6 @@
|
||||
|
||||
concrete LangAfr of Lang =
|
||||
GrammarAfr,
|
||||
LexiconAfr ;
|
||||
LexiconAfr
|
||||
,DocumentationAfr --# notpresent
|
||||
;
|
||||
|
||||
@@ -7,7 +7,7 @@ flags optimize = all_subs ;
|
||||
lincat
|
||||
Digit = {s : DForm => CardOrd => Str ; en : Str} ;
|
||||
Sub10 = {s : DForm => CardOrd => Str ; n : Number ; en : Str ; attr : Str} ;
|
||||
Sub100, Sub1000, Sub1000000 =
|
||||
Sub100, Sub1000, Sub1000000, Sub1000000000, Sub1000000000000 =
|
||||
{s : CardOrd => Str ; n : Number ; attr : Str} ;
|
||||
|
||||
lin
|
||||
@@ -50,6 +50,8 @@ lin
|
||||
pot3plus n m =
|
||||
addAttr {s = \\g => n.attr ++ "duisend" ++ m.s ! g ; n = Pl} ;
|
||||
|
||||
pot3as4 n = n ;
|
||||
pot4as5 n = n ;
|
||||
|
||||
lincat
|
||||
Dig = TDigit ;
|
||||
|
||||
@@ -323,8 +323,8 @@ concrete ExtraGrc of ExtraGrcAbs = CatGrc, NumeralGrc[Sub1000000,tenthousand] **
|
||||
Sub10000 = {s : CardOrd => Str ; n : Number} ; -- TODO: constructors
|
||||
|
||||
lin -- d * 10000
|
||||
pot4 d = { s = \\f => d.s ! NAdv ++ (tenthousand ! f) ; n = Pl } ;
|
||||
pot4plus d m = {
|
||||
pot3X d = { s = \\f => d.s ! NAdv ++ (tenthousand ! f) ; n = Pl } ;
|
||||
pot3Xplus d m = {
|
||||
s = \\f => d.s ! NAdv ++ tenthousand ! f ++ "kai`" ++ m.s ! f ; n = Pl} ;
|
||||
|
||||
|
||||
|
||||
@@ -153,8 +153,8 @@ abstract ExtraGrcAbs = Extra, Numeral[Sub1000000] ** {
|
||||
Sub10000 ; -- 1..9999
|
||||
|
||||
data
|
||||
pot4 : Sub10000 -> Sub1000000 ; -- m * 10000
|
||||
pot4plus : Sub10000 -> Sub10000 -> Sub1000000 ; -- m * 10000 + n
|
||||
pot3X : Sub10000 -> Sub1000000 ; -- m * 10000
|
||||
pot3Xplus : Sub10000 -> Sub10000 -> Sub1000000 ; -- m * 10000 + n
|
||||
|
||||
-- Conjunctions:
|
||||
|
||||
|
||||
@@ -5,9 +5,11 @@ concrete NumeralGrc of Numeral = CatGrc ** open ResGrc, MorphoGrc in {
|
||||
lincat
|
||||
Digit = {s : DForm => CardOrd => Str} ;
|
||||
Sub10 = {s : DForm => CardOrd => Str ; n : Number} ;
|
||||
Sub100 = {s : CardOrd => Str ; n : Number} ;
|
||||
Sub1000 = {s : CardOrd => Str ; n : Number} ;
|
||||
Sub1000000 = {s : CardOrd => Str ; n : Number} ;
|
||||
Sub100 = {s : CardOrd => Str ; n : Number} ;
|
||||
Sub1000 = {s : CardOrd => Str ; n : Number} ;
|
||||
Sub1000000 = {s : CardOrd => Str ; n : Number} ;
|
||||
Sub1000000000 = {s : CardOrd => Str ; n : Number} ;
|
||||
Sub1000000000000 = {s : CardOrd => Str ; n : Number} ;
|
||||
|
||||
lin num x = x ;
|
||||
|
||||
@@ -52,6 +54,8 @@ lin -- mkDigit d (d+10) (d*10) d-th d-times
|
||||
pot3plus d m = {
|
||||
s = \\f => d.s ! NAdv ++ thousand ! f ++ "kai`" ++ m.s ! f ; n = Pl} ;
|
||||
|
||||
pot3as4 n = n ;
|
||||
pot4as5 n = n ;
|
||||
|
||||
-- numerals as sequences of digits
|
||||
|
||||
|
||||
9
src/api/CombinatorsHrv.gf
Normal file
9
src/api/CombinatorsHrv.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsHrv = Combinators with
|
||||
(Cat = CatHrv),
|
||||
(Structural = StructuralHrv),
|
||||
(Constructors = ConstructorsHrv)
|
||||
** open MissingHrv in {}
|
||||
|
||||
|
||||
8
src/api/CombinatorsMay.gf
Normal file
8
src/api/CombinatorsMay.gf
Normal file
@@ -0,0 +1,8 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsMay = Combinators - [ appCN, appCNc ] with
|
||||
(Cat = CatMay),
|
||||
(Structural = StructuralMay),
|
||||
(Noun = NounMay),
|
||||
(Constructors = ConstructorsMay) **
|
||||
{}
|
||||
9
src/api/CombinatorsTam.gf
Normal file
9
src/api/CombinatorsTam.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource CombinatorsTam = Combinators - [ appCN, appCNc ] with
|
||||
(Cat = CatTam),
|
||||
(Structural = StructuralTam),
|
||||
(Noun = NounTam),
|
||||
(Constructors = ConstructorsTam) **
|
||||
{}
|
||||
}
|
||||
@@ -121,9 +121,9 @@ incomplete resource Constructors = open Grammar in { --%
|
||||
mkText : QS -> Text -- Did she sleep?
|
||||
= \q -> TQuestMark (PhrUtt NoPConj (UttQS q) NoVoc) TEmpty ; --%
|
||||
mkText : (Pol) -> Imp -> Text -- Don't sleep!
|
||||
= \p,i -> TExclMark (PhrUtt NoPConj (UttImpSg p i) NoVoc) TEmpty; --%
|
||||
= \p,i -> TExclMark (PhrUtt NoPConj (UttImpSg p i) NoVoc) TEmpty ; --%
|
||||
mkText : Imp -> Text -- Sleep! --%
|
||||
= \i -> TExclMark (PhrUtt NoPConj (UttImpSg PPos i) NoVoc) TEmpty; --%
|
||||
= \i -> TExclMark (PhrUtt NoPConj (UttImpSg PPos i) NoVoc) TEmpty ; --%
|
||||
|
||||
-- Finally, two texts can be combined into a text.
|
||||
|
||||
@@ -374,11 +374,11 @@ incomplete resource Constructors = open Grammar in { --%
|
||||
mkCl = overload {
|
||||
|
||||
mkCl : NP -> V -> Cl -- she sleeps
|
||||
= \s,v -> PredVP s (UseV v); --%
|
||||
= \s,v -> PredVP s (UseV v) ; --%
|
||||
mkCl : NP -> V2 -> NP -> Cl -- she loves him
|
||||
= \s,v,o -> PredVP s (ComplV2 v o); --%
|
||||
= \s,v,o -> PredVP s (ComplV2 v o) ; --%
|
||||
mkCl : NP -> V3 -> NP -> NP -> Cl -- she sends it to him
|
||||
= \s,v,o,i -> PredVP s (ComplV3 v o i); --%
|
||||
= \s,v,o,i -> PredVP s (ComplV3 v o i) ; --%
|
||||
mkCl : NP -> VV -> VP -> Cl -- she wants to sleep
|
||||
= \s,v,vp -> PredVP s (ComplVV v vp) ; --%
|
||||
mkCl : NP -> VS -> S -> Cl -- she says that she sleeps
|
||||
@@ -1006,9 +1006,9 @@ incomplete resource Constructors = open Grammar in { --%
|
||||
|
||||
|
||||
mkCN : A -> N -> CN -- big house
|
||||
= \x,y -> AdjCN (PositA x) (UseN y); --%
|
||||
= \x,y -> AdjCN (PositA x) (UseN y) ; --%
|
||||
mkCN : A -> CN -> CN -- big blue house
|
||||
= \x,y -> AdjCN (PositA x) y; --%
|
||||
= \x,y -> AdjCN (PositA x) y ; --%
|
||||
mkCN : AP -> N -> CN -- very big house
|
||||
= \x,y -> AdjCN x (UseN y) ; --%
|
||||
mkCN : AP -> CN -> CN -- very big blue house
|
||||
@@ -1211,11 +1211,11 @@ incomplete resource Constructors = open Grammar in { --%
|
||||
mkQCl : IP -> VP -> QCl -- who sleeps --:
|
||||
= QuestVP ; --%
|
||||
mkQCl : IP -> V -> QCl -- who sleeps
|
||||
= \s,v -> QuestVP s (UseV v); --%
|
||||
= \s,v -> QuestVP s (UseV v) ; --%
|
||||
mkQCl : IP -> V2 -> NP -> QCl -- who loves her
|
||||
= \s,v,o -> QuestVP s (ComplV2 v o); --%
|
||||
= \s,v,o -> QuestVP s (ComplV2 v o) ; --%
|
||||
mkQCl : IP -> V3 -> NP -> NP -> QCl -- who sends it to her
|
||||
= \s,v,o,i -> QuestVP s (ComplV3 v o i); --%
|
||||
= \s,v,o,i -> QuestVP s (ComplV3 v o i) ; --%
|
||||
mkQCl : IP -> VV -> VP -> QCl -- who wants to sleep
|
||||
= \s,v,vp -> QuestVP s (ComplVV v vp) ; --%
|
||||
mkQCl : IP -> VS -> S -> QCl -- who says that she sleeps
|
||||
@@ -1408,11 +1408,11 @@ incomplete resource Constructors = open Grammar in { --%
|
||||
= RelVP ; --%
|
||||
|
||||
mkRCl : RP -> V -> RCl -- who sleeps
|
||||
= \s,v -> RelVP s (UseV v); --%
|
||||
= \s,v -> RelVP s (UseV v) ; --%
|
||||
mkRCl : RP -> V2 -> NP -> RCl -- who loves her
|
||||
= \s,v,o -> RelVP s (ComplV2 v o); --%
|
||||
= \s,v,o -> RelVP s (ComplV2 v o) ; --%
|
||||
mkRCl : RP -> V3 -> NP -> NP -> RCl -- who sends it to her
|
||||
= \s,v,o,i -> RelVP s (ComplV3 v o i); --%
|
||||
= \s,v,o,i -> RelVP s (ComplV3 v o i) ; --%
|
||||
mkRCl : RP -> VV -> VP -> RCl -- who wants to sleep
|
||||
= \s,v,vp -> RelVP s (ComplVV v vp) ; --%
|
||||
mkRCl : RP -> VS -> S -> RCl -- who says that she sleeps
|
||||
|
||||
5
src/api/ConstructorsHrv.gf
Normal file
5
src/api/ConstructorsHrv.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsHrv = Constructors with (Grammar = GrammarHrv)
|
||||
** open MissingHrv in {}
|
||||
|
||||
4
src/api/ConstructorsMay.gf
Normal file
4
src/api/ConstructorsMay.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:alltenses:prelude:../malay
|
||||
|
||||
resource ConstructorsMay = Constructors with (Grammar = GrammarMay) **
|
||||
open MissingMay in {} ;
|
||||
5
src/api/ConstructorsTam.gf
Normal file
5
src/api/ConstructorsTam.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:alltenses:prelude:../tamil
|
||||
|
||||
resource ConstructorsTam = Constructors with (Grammar = GrammarTam) **
|
||||
open MissingTam in {} ;
|
||||
}
|
||||
@@ -6,8 +6,9 @@ incomplete resource Symbolic = open Symbol, Grammar, PredefCnc in {
|
||||
symb : overload {
|
||||
symb : Symb -> NP ; -- x
|
||||
symb : Str -> NP ; -- x
|
||||
symb : Int -> NP ; -- 23
|
||||
symb : Int -> NP ; -- 23 (is prime)
|
||||
symb : Float -> NP ; -- 0.99
|
||||
symb : Int -> Card ; -- 23 (houses)
|
||||
symb : N -> Digits -> NP ; -- level 4
|
||||
symb : N -> Card -> NP ; -- level at least four
|
||||
symb : CN -> Card -> NP ; -- advanced level at least four
|
||||
@@ -45,6 +46,8 @@ incomplete resource Symbolic = open Symbol, Grammar, PredefCnc in {
|
||||
= \i -> UsePN (IntPN i) ;
|
||||
symb : Float -> NP
|
||||
= \i -> UsePN (FloatPN i) ;
|
||||
symb : Int -> Card
|
||||
= \s -> SymbNum (mkSymb s.s) ;
|
||||
symb : N -> Digits -> NP
|
||||
= \c,i -> CNNumNP (UseN c) (NumDigits i) ;
|
||||
symb : N -> Card -> NP
|
||||
|
||||
6
src/api/SymbolicHrv.gf
Normal file
6
src/api/SymbolicHrv.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
--# -path=.:../slovak:../common:../abstract:../prelude
|
||||
|
||||
resource SymbolicHrv = Symbolic with
|
||||
(Symbol = SymbolHrv),
|
||||
(Grammar = GrammarHrv)
|
||||
** open MissingHrv in {}
|
||||
5
src/api/SymbolicMay.gf
Normal file
5
src/api/SymbolicMay.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:../malay:../common:../abstract:../prelude
|
||||
|
||||
resource SymbolicMay = Symbolic with
|
||||
(Symbol = SymbolMay),
|
||||
(Grammar = GrammarMay) ** open MissingMay in {} ;
|
||||
6
src/api/SymbolicTam.gf
Normal file
6
src/api/SymbolicTam.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
--# -path=.:../tamil:../common:../abstract:../prelude
|
||||
|
||||
resource SymbolicTam = Symbolic with
|
||||
(Symbol = SymbolTam),
|
||||
(Grammar = GrammarTam) ** open MissingTam in {} ;
|
||||
}
|
||||
4
src/api/SyntaxHrv.gf
Normal file
4
src/api/SyntaxHrv.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:./alltenses:../prelude
|
||||
|
||||
instance SyntaxHrv of Syntax =
|
||||
ConstructorsHrv, CatHrv, StructuralHrv, CombinatorsHrv ;
|
||||
5
src/api/SyntaxMay.gf
Normal file
5
src/api/SyntaxMay.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxMay of Syntax =
|
||||
ConstructorsMay, CatMay, StructuralMay, CombinatorsMay ;
|
||||
|
||||
6
src/api/SyntaxTam.gf
Normal file
6
src/api/SyntaxTam.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxTam of Syntax =
|
||||
ConstructorsTam, CatTam, StructuralTam, CombinatorsTam ;
|
||||
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -path=.:../english:../common:../abstract:../prelude
|
||||
|
||||
resource TryEng = SyntaxEng-[mkAdN], LexiconEng, ParadigmsEng - [mkAdv,mkAdN,mkOrd,mkQuant] **
|
||||
resource TryEng = SyntaxEng-[mkAdN], LexiconEng, ParadigmsEng - [mkAdv,mkAdN,mkOrd,mkQuant,mkVoc] **
|
||||
open (P = ParadigmsEng) in {
|
||||
|
||||
oper
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
--# -path=.:../finnish:../common:../abstract:../prelude
|
||||
|
||||
resource TryFin = SyntaxFin, LexiconFin-[mkOrd], ParadigmsFin - [mkAdv,mkAdN,mkDet,mkQuant,mkPConj] ;
|
||||
resource TryFin =
|
||||
SyntaxFin,
|
||||
LexiconFin-[mkOrd],
|
||||
ParadigmsFin - [mkAdv,mkAdN,mkDet,mkQuant,mkPConj],
|
||||
MakeStructuralFin - [mkDet,mkIDet,mkConj,mkSubj]
|
||||
;
|
||||
|
||||
13
src/api/TryHrv.gf
Normal file
13
src/api/TryHrv.gf
Normal file
@@ -0,0 +1,13 @@
|
||||
--# -path=.:../slovak:../common:../abstract:../prelude
|
||||
|
||||
resource TryHrv = SyntaxHrv, LexiconHrv, ParadigmsHrv -[mkAdv, mkAdN, mkOrd, mkDet, mkQuant]**
|
||||
open (P = ParadigmsHrv) in {
|
||||
|
||||
-- oper
|
||||
|
||||
-- mkAdv = overload SyntaxHrv {
|
||||
-- mkAdv : Str -> Adv = P.mkAdv ;
|
||||
-- } ;
|
||||
|
||||
}
|
||||
|
||||
3
src/api/TryMay.gf
Normal file
3
src/api/TryMay.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:../malay:../common:../abstract:../prelude
|
||||
|
||||
resource TryMay = SyntaxMay, LexiconMay, ParadigmsMay - [mkAdv,mkAdN,mkOrd,mkNum] ;
|
||||
@@ -1,3 +1,3 @@
|
||||
--# -path=.:../russian:../common:../abstract:../prelude
|
||||
|
||||
resource TryRus = SyntaxRus, LexiconRus, ParadigmsRus - [mkAdv] ;
|
||||
resource TryRus = SyntaxRus, LexiconRus, ParadigmsRus - [mkAdv,mkIAdv,mkOrd,mkAdN] ;
|
||||
|
||||
4
src/api/TryTam.gf
Normal file
4
src/api/TryTam.gf
Normal file
@@ -0,0 +1,4 @@
|
||||
--# -path=.:../tamil :../common:../abstract:../prelude
|
||||
|
||||
resource TryTam = SyntaxTam, LexiconTam, ParadigmsTam - [mkAdv,mkAdN,mkOrd,mkNum] ;
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
--# -path=.:../abstract:../common:../api:../prelude
|
||||
|
||||
concrete AllAra of AllAraAbs = LangAra ;
|
||||
concrete AllAra of AllAraAbs = LangAra, ExtendAra ;
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
abstract AllAraAbs = Lang ;
|
||||
abstract AllAraAbs = Lang, Extend ;
|
||||
|
||||
@@ -6,7 +6,7 @@ concrete ExtendAra of Extend =
|
||||
EmptyRelSlash, PredAPVP,
|
||||
ComplDirectVS, ComplDirectVQ, -- because of Utt
|
||||
VPS, MkVPS, PredVPS, BaseVPS, ConsVPS, ConjVPS,
|
||||
EmbedSSlash, AdjAsNP
|
||||
EmbedSSlash, AdjAsNP, GerundNP
|
||||
]
|
||||
with (Grammar=GrammarAra)
|
||||
** open
|
||||
@@ -44,7 +44,7 @@ lin
|
||||
DetNPFem det = emptyNP ** {s = det.s ! NoHum ! Fem} ;
|
||||
|
||||
-- : AP -> NP
|
||||
AdjAsNP ap =
|
||||
AdjAsNP ap =
|
||||
let adjAsN : Noun = {
|
||||
s = ap.s ! NoHum ! Masc ;
|
||||
s2 = emptyNTable ;
|
||||
@@ -59,6 +59,11 @@ lin
|
||||
-- : SSlash -> SC
|
||||
EmbedSSlash = Grammar.EmbedS ;
|
||||
|
||||
-- : VP -> NP
|
||||
GerundNP vp = emptyNP ** {
|
||||
s = \\_ => uttVP VPGer vp ! Masc ; -- NB. NP should inflect in case, but there are no cases for masdar in the inflection table of VP. If desired, can add here with BIND. /IL
|
||||
} ; -- The Gender param here doesn't make a difference, because the VPGer in VP's inflection table doesn't have gender to start with. So we could equally well choose Fem too.
|
||||
|
||||
lincat
|
||||
VPS = {s : PerGenNum => Str} ; -- finite VP's with tense and polarity
|
||||
[VPS] = {s1,s2 : PerGenNum => Str} ;
|
||||
|
||||
@@ -81,7 +81,7 @@ incomplete concrete CatBantu of Cat =
|
||||
-- N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Str} ;
|
||||
N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Prep} ;
|
||||
N3 = {s : Number => Case => Str ; g : Gender} ** {c2,c3 : Prep} ;
|
||||
PN = {s : Case => Str ; g : Gender} ;
|
||||
GN, SN, PN = {s : Case => Str ; g : Gender} ;
|
||||
--Tense = {s : Str ; t : ResKam.Tense} ;
|
||||
|
||||
linref
|
||||
|
||||
@@ -1,31 +1,28 @@
|
||||
incomplete concrete PhraseBantu of Phrase =
|
||||
CatBantu ** open CommonBantu, ResBantu, Prelude in { }
|
||||
{-}
|
||||
flags optimize = all_subs ;
|
||||
CatBantu ** open CommonBantu, ResBantu, Prelude in {
|
||||
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttS s = {s = s.s ! Indic} ;
|
||||
UttS s = {s = s.s} ;
|
||||
UttQS qs = {s = qs.s ! QDir} ;
|
||||
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg False ! Fem} ;
|
||||
{- UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg False ! Fem} ;
|
||||
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Pl False ! Fem} ;
|
||||
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg True ! Fem} ;
|
||||
|
||||
UttIP ip = {s = ip.s ! Nom} ; --- Acc also
|
||||
UttIP ip = {s = ip.s ! Nom} ; --- Acc also -}
|
||||
UttIAdv iadv = iadv ;
|
||||
UttNP np = {s = (np.s ! Nom).ton} ;
|
||||
UttVP vp = {s = infVP vp (agrP3 Fem Sg)} ; --- Agr
|
||||
UttNP np = {s = np.s ! npNom} ;
|
||||
{- UttVP vp = {s = infVP vp (agrP3 Fem Sg)} ; --- Agr -}
|
||||
UttAdv adv = adv ;
|
||||
UttCN n = {s = n.s ! Sg} ;
|
||||
UttAP ap = {s = ap.s ! AF Masc Sg} ;
|
||||
UttCard n = {s = n.s ! Masc} ;
|
||||
UttCN n = {s = n.s ! Sg ! Nom} ;
|
||||
{- UttAP ap = {s = ap.s ! AF Masc Sg} ;
|
||||
UttCard n = {s = n.s ! Masc} ;-}
|
||||
UttInterj i = i ;
|
||||
|
||||
NoPConj = {s = []} ;
|
||||
PConjConj conj = {s = conj.s2} ;
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
VocNP np = {s = "," ++ (np.s ! Nom).ton} ;
|
||||
|
||||
-}
|
||||
{- VocNP np = {s = "," ++ (np.s ! Nom).ton} ; -}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete AdjectiveBul of Adjective = CatBul ** open ResBul, Prelude in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
lin
|
||||
PositA a = {
|
||||
@@ -9,11 +9,11 @@ concrete AdjectiveBul of Adjective = CatBul ** open ResBul, Prelude in {
|
||||
} ;
|
||||
|
||||
ComparA a np = {
|
||||
s = \\aform,_ => "ïî" ++ hyphen ++ a.s ! aform ++ "îò" ++ np.s ! RObj CPrep ;
|
||||
s = \\aform,_ => "по" ++ hyphen ++ a.s ! aform ++ "от" ++ np.s ! RObj CPrep ;
|
||||
isPre = True
|
||||
} ;
|
||||
UseComparA a = {
|
||||
s = \\aform,_ => "ïî" ++ hyphen ++ a.s ! aform ;
|
||||
s = \\aform,_ => "по" ++ hyphen ++ a.s ! aform ;
|
||||
isPre = True
|
||||
} ;
|
||||
|
||||
@@ -35,7 +35,7 @@ concrete AdjectiveBul of Adjective = CatBul ** open ResBul, Prelude in {
|
||||
} ;
|
||||
|
||||
ReflA2 a = {
|
||||
s = \\aform,_ => a.s ! aform ++ linPrep a.c2 ++ ["ñåáå ñè"] ;
|
||||
s = \\aform,_ => a.s ! aform ++ linPrep a.c2 ++ ["себе си"] ;
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete AdverbBul of Adverb = CatBul ** open ResBul, Prelude in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
lin
|
||||
PositAdvAdj a = {s = a.adv} ;
|
||||
@@ -8,7 +8,7 @@ concrete AdverbBul of Adverb = CatBul ** open ResBul, Prelude in {
|
||||
s = cadv.s ++ a.s ! ASg Neut Indef ++ cadv.p ++ np.s ! RObj CPrep
|
||||
} ;
|
||||
ComparAdvAdjS cadv a s = {
|
||||
s = cadv.s ++ a.s ! ASg Neut Indef ++ cadv.p ++ "êîëêîòî" ++ s.s
|
||||
s = cadv.s ++ a.s ! ASg Neut Indef ++ cadv.p ++ "колкото" ++ s.s
|
||||
} ;
|
||||
|
||||
PrepNP prep np = {s = prep.s ++ np.s ! RObj prep.c} ;
|
||||
|
||||
@@ -86,7 +86,9 @@ concrete CatBul of Cat = CommonX - [IAdv,AdV] ** open ResBul, Prelude, Predef, (
|
||||
N = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ;
|
||||
N2 = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ** {c2 : Preposition} ;
|
||||
N3 = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ** {c2,c3 : Preposition} ;
|
||||
PN = {s : Str; g : Gender} ;
|
||||
GN = {s : Str; g : Sex} ;
|
||||
SN = {s : Sex => Str; pl : Str} ;
|
||||
PN = {s : Str; gn : GenNum} ;
|
||||
|
||||
lindef
|
||||
SSlash = \s -> {s = \\_ => s; c2 = {s=""; c=Acc}};
|
||||
|
||||
@@ -4,21 +4,21 @@ concrete CompatibilityBul of Compatibility = CatBul ** open Prelude, ResBul in {
|
||||
|
||||
-- from Noun 19/4/2008
|
||||
flags
|
||||
coding = cp1251 ;
|
||||
coding = utf8 ;
|
||||
|
||||
lin
|
||||
NumInt n = {s = \\_ => n.s; n = Pl; nonEmpty = True} ;
|
||||
OrdInt n = {s = \\aform => n.s ++ "-" ++
|
||||
case aform of {
|
||||
ASg Masc Indef => "òè" ;
|
||||
ASg Fem Indef => "òà" ;
|
||||
ASg Neut Indef => "òî" ;
|
||||
ASg Masc Def => "òèÿ" ;
|
||||
ASg Fem Def => "òàòà" ;
|
||||
ASg Neut Def => "òîòî" ;
|
||||
ASgMascDefNom => "òèÿò" ;
|
||||
APl Indef => "òè" ;
|
||||
APl Def => "òèòå"
|
||||
ASg Masc Indef => "ти" ;
|
||||
ASg Fem Indef => "та" ;
|
||||
ASg Neut Indef => "то" ;
|
||||
ASg Masc Def => "тия" ;
|
||||
ASg Fem Def => "тата" ;
|
||||
ASg Neut Def => "тото" ;
|
||||
ASgMascDefNom => "тият" ;
|
||||
APl Indef => "ти" ;
|
||||
APl Def => "тите"
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete ConjunctionBul of Conjunction =
|
||||
CatBul ** open ResBul, Coordination, Prelude, Predef in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
@@ -79,6 +79,39 @@ lin
|
||||
s3 = ""
|
||||
} ;
|
||||
|
||||
InflectionPN = \pn -> {
|
||||
t = "същ.с." ;
|
||||
s1= heading1 ("Съществително Собствено"++
|
||||
case pn.gn of {
|
||||
GSg Masc => "(м.р.)" ;
|
||||
GSg Fem => "(ж.р.)" ;
|
||||
GSg Neut => "(ср.р.)" ;
|
||||
GPl => "(мн.ч.)"
|
||||
}) ;
|
||||
s2 = pn.s ;
|
||||
s3 = ""
|
||||
} ;
|
||||
|
||||
InflectionGN = \gn -> {
|
||||
t = "същ.с.л." ;
|
||||
s1= heading1 (case gn.g of {
|
||||
Male => "Мъжко Име" ;
|
||||
Female => "Женско Име"
|
||||
}) ;
|
||||
s2 = gn.s ;
|
||||
s3 = ""
|
||||
} ;
|
||||
|
||||
InflectionSN = \sn -> {
|
||||
t = "същ.с.ф." ;
|
||||
s1= heading1 ("Фамилно Име") ;
|
||||
s2 = frameTable (
|
||||
tr (th "мъжко" ++ td (sn.s ! Male)) ++
|
||||
tr (th "женско" ++ td (sn.s ! Female)) ++
|
||||
tr (th "семейно" ++ td sn.pl)) ;
|
||||
s3 = ""
|
||||
} ;
|
||||
|
||||
InflectionA, InflectionA2 = \a -> {
|
||||
t = "пр" ;
|
||||
s1= heading1 ("Прилагателно") ;
|
||||
@@ -104,7 +137,7 @@ lin
|
||||
s3= ""
|
||||
} ;
|
||||
|
||||
InflectionAdv = \adv -> {
|
||||
InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
|
||||
t = "нар" ;
|
||||
s1= heading1 ("Наречие") ;
|
||||
s2= paragraph (adv.s) ;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
concrete ExtendBul of Extend = CatBul ** open Prelude, Predef, ResBul, GrammarBul, MorphoFunsBul in {
|
||||
flags
|
||||
coding=utf8;
|
||||
|
||||
lin
|
||||
GenModNP num np cn = DetCN (DetQuant DefArt num) (AdvCN cn (PrepNP (mkPrep "на") np)) ;
|
||||
@@ -94,6 +96,10 @@ lin
|
||||
lin
|
||||
PassVPSlash vp = insertObj (\\a => vp.ad.s ++ vp.s ! Perf ! VPassive (aform a.gn Indef (RObj Acc)) ++
|
||||
vp.compl1 ! a ++ vp.compl2 ! a) Pos (predV verbBe) ;
|
||||
ProgrVPSlash vp = vp ** {
|
||||
s = \\_ => vp.s ! Imperf ;
|
||||
isSimple = False
|
||||
} ;
|
||||
|
||||
PassAgentVPSlash vp np =
|
||||
insertObj (\\_ => "от" ++ np.s ! RObj CPrep) Pos
|
||||
@@ -117,6 +123,21 @@ lin
|
||||
vp.compl ! agr
|
||||
} ;
|
||||
|
||||
lincat
|
||||
VPI = {s : Agr => Str} ;
|
||||
[VPI] = {s : Agr => Ints 4 => Str} ;
|
||||
|
||||
lin
|
||||
BaseVPI x y = {s = \\a=>table {4 => y.s!a; _ => x.s!a}} ;
|
||||
ConsVPI x xs = {s = \\a=>table {4 => xs.s!a!4; t => x.s!a++linCoord bindComma!t++xs.s!a!t}};
|
||||
|
||||
MkVPI vp = {s = daComplex Simul Pos vp ! Perf} ;
|
||||
ConjVPI conj vpi = {
|
||||
s = \\a => linCoord []!conj.sep ++ vpi.s!a!conj.sep ++ conj.s ++ vpi.s!a!4
|
||||
} ;
|
||||
ComplVPIVV vv vpi =
|
||||
insertObj (\\a => vpi.s ! a) Pos (predV vv) ;
|
||||
|
||||
lincat
|
||||
VPS = {s : Agr => Str} ;
|
||||
[VPS] = {s : Agr => Ints 4 => Str} ;
|
||||
@@ -138,6 +159,25 @@ lin
|
||||
s = \\a => linCoord []!conj.sep ++ vps.s!a!conj.sep ++ conj.s ++ vps.s!a!4
|
||||
} ;
|
||||
|
||||
lincat [Comp] = {s : Agr => Ints 4 => Str} ;
|
||||
lin BaseComp x y =
|
||||
{s = \\agr=>table {4 => y.s!agr; _ => x.s!agr}} ;
|
||||
ConsComp x xs =
|
||||
{s = \\agr=>table {4 => xs.s!agr!4; t => x.s!agr++linCoord bindComma!t++xs.s!agr!t}} ;
|
||||
ConjComp conj ss = {
|
||||
s = \\agr => linCoord [] ! conj.sep ++ ss.s!agr!conj.sep ++ conj.s ++ ss.s!agr!4 ;
|
||||
p = Pos
|
||||
} ;
|
||||
|
||||
lincat ListImp = {s : Polarity => GenNum => Ints 4 => Str} ;
|
||||
lin BaseImp x y =
|
||||
{s = \\p,gn=>table {4 => y.s!p!gn; _ => x.s!p!gn}} ;
|
||||
ConsImp x xs =
|
||||
{s = \\p,gn=>table {4 => xs.s!p!gn!4; t => x.s!p!gn++linCoord bindComma!t++xs.s!p!gn!t}} ;
|
||||
ConjImp conj ss = {
|
||||
s = \\p,gn => linCoord [] ! conj.sep ++ ss.s!p!gn!conj.sep ++ conj.s ++ ss.s!p!gn!4
|
||||
} ;
|
||||
|
||||
lin
|
||||
ComplBareVS = ComplVS ;
|
||||
ComplSlashPartLast = ComplSlash ;
|
||||
@@ -187,6 +227,20 @@ lin
|
||||
gn = rnp.gn
|
||||
} ;
|
||||
|
||||
AdvRNP np prep rnp = {s = \\role => np.s ! role ++ prep.s ++ rnp.s ! RObj prep.c; gn = np.gn; p = np.p} ;
|
||||
AdvRVP vp prep rnp = insertObj (\\a => prep.s ++ rnp.s ! RObj prep.c) Pos vp ;
|
||||
AdvRAP ap prep rnp = {
|
||||
s = \\aform,p => ap.s ! aform ! p ++ prep.s ++ rnp.s ! RObj prep.c ;
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
ReflA2RNP a rnp = {
|
||||
s = \\aform,_ => a.s ! aform ++ a.c2.s ++ rnp.s ! RObj a.c2.c ;
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
PossPronRNP pron num cn rnp = DetCN (DetQuant (PossPron pron) num) (PossNP cn (lin NP {s = rnp.s; gn = rnp.gn; p=NounP3 Pos})) ;
|
||||
|
||||
lin
|
||||
ApposNP np1 np2 = {s = \\role => case role of {
|
||||
RObj c => linCase c (personPol np1.p) ++ np1.s ! RObj CPrep ;
|
||||
@@ -216,5 +270,73 @@ lin
|
||||
p = NounP3 det.p
|
||||
} ;
|
||||
|
||||
lin UseDAP dap = {
|
||||
s = \\role => let s = dap.s ! False ! ANeut ! role
|
||||
in case role of {
|
||||
RObj c => linCase c dap.p ++ s;
|
||||
_ => s
|
||||
} ;
|
||||
gn = gennum ANeut (numnnum dap.nn);
|
||||
p = NounP3 dap.p
|
||||
} ;
|
||||
|
||||
UseDAPMasc dap = {
|
||||
s = \\role => let s = dap.s ! False ! (AMasc Human) ! role
|
||||
in case role of {
|
||||
RObj c => linCase c dap.p ++ s;
|
||||
_ => s
|
||||
} ;
|
||||
gn = gennum (AMasc Human) (numnnum dap.nn);
|
||||
p = NounP3 dap.p
|
||||
} ;
|
||||
|
||||
UseDAPFem dap = {
|
||||
s = \\role => let s = dap.s ! False ! AFem ! role
|
||||
in case role of {
|
||||
RObj c => linCase c dap.p ++ s;
|
||||
_ => s
|
||||
} ;
|
||||
gn = gennum AFem (numnnum dap.nn);
|
||||
p = NounP3 dap.p
|
||||
} ;
|
||||
|
||||
lin UseComp_estar = UseComp ;
|
||||
UseComp_ser = UseComp ;
|
||||
|
||||
lin GivenName = \n -> {
|
||||
s = n.s ;
|
||||
gn = GSg (sex2gender n.g)
|
||||
} ;
|
||||
lin MaleSurname = \n -> {
|
||||
s = n.s ! Male ;
|
||||
gn = GSg Masc
|
||||
} ;
|
||||
lin FemaleSurname = \n -> {
|
||||
s = n.s ! Female;
|
||||
gn = GSg Fem
|
||||
} ;
|
||||
lin PlSurname = \n -> {
|
||||
s = n.pl ;
|
||||
gn = GPl
|
||||
} ;
|
||||
lin FullName gn sn = {
|
||||
s = gn.s ++ sn.s ! gn.g ;
|
||||
gn = GSg (sex2gender gn.g)
|
||||
} ;
|
||||
|
||||
lin ProDrop pro = pro ;
|
||||
|
||||
lin AnaphPron np =
|
||||
case <np.gn, np.p> of {
|
||||
<GSg _, PronP1> => i_Pron ;
|
||||
<GSg _, PronP2> => youSg_Pron ;
|
||||
<GSg Masc, _> => he_Pron ;
|
||||
<GSg Fem, _> => she_Pron ;
|
||||
<GSg Neutr, _> => it_Pron ;
|
||||
<GPl, PronP1> => we_Pron ;
|
||||
<GPl, PronP2> => youPl_Pron ;
|
||||
<GPl, _> => they_Pron
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete ExtraBul of ExtraBulAbs = CatBul **
|
||||
open ResBul, MorphoFunsBul, Coordination, Prelude, Predef in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
lin
|
||||
@@ -30,21 +30,21 @@ concrete ExtraBul of ExtraBulAbs = CatBul **
|
||||
s = \\t,a,p,agr => slash.c2.s ++ whichRP ! agr.gn ++ slash.s ! agr ! t ! a ! p ! Main
|
||||
} ;
|
||||
|
||||
i8fem_Pron = mkPron "àç" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg Fem) PronP1 ;
|
||||
i8neut_Pron = mkPron "àç" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg Neut) PronP1 ;
|
||||
i8fem_Pron = mkPron "аз" "мой" "моя" "моят" "моя" "моята" "мое" "моето" "мои" "моите" (GSg Fem) PronP1 ;
|
||||
i8neut_Pron = mkPron "аз" "мой" "моя" "моят" "моя" "моята" "мое" "моето" "мои" "моите" (GSg Neut) PronP1 ;
|
||||
|
||||
whatSg8fem_IP = mkIP "êàêâà" "êàêâà" (GSg Fem) ;
|
||||
whatSg8neut_IP = mkIP "êàêâî" "êàêâî" (GSg Neut) ;
|
||||
whatSg8fem_IP = mkIP "каква" "каква" (GSg Fem) ;
|
||||
whatSg8neut_IP = mkIP "какво" "какво" (GSg Neut) ;
|
||||
|
||||
whoSg8fem_IP = mkIP "êîÿ" "êîãî" (GSg Fem) ;
|
||||
whoSg8neut_IP = mkIP "êîå" "êîãî" (GSg Neut) ;
|
||||
whoSg8fem_IP = mkIP "коя" "кого" (GSg Fem) ;
|
||||
whoSg8neut_IP = mkIP "кое" "кого" (GSg Neut) ;
|
||||
|
||||
youSg8fem_Pron = mkPron "òè" "òâîé" "òâîÿ" "òâîÿò" "òâîÿ" "òâîÿòà" "òâîå" "òâîåòî" "òâîè" "òâîèòå" (GSg Fem) PronP2 ;
|
||||
youSg8neut_Pron = mkPron "òè" "òâîé" "òâîÿ" "òâîÿò" "òâîÿ" "òâîÿòà" "òâîå" "òâîåòî" "òâîè" "òâîèòå" (GSg Neut) PronP2 ;
|
||||
youSg8fem_Pron = mkPron "ти" "твой" "твоя" "твоят" "твоя" "твоята" "твое" "твоето" "твои" "твоите" (GSg Fem) PronP2 ;
|
||||
youSg8neut_Pron = mkPron "ти" "твой" "твоя" "твоят" "твоя" "твоята" "твое" "твоето" "твои" "твоите" (GSg Neut) PronP2 ;
|
||||
|
||||
onePl_Num = {s = table {
|
||||
CFMasc Indef _ | CFFem Indef | CFNeut Indef => "åäíè" ;
|
||||
CFMasc Def _ | CFMascDefNom _ | CFFem Def | CFNeut Def => "åäíèòå"
|
||||
CFMasc Indef _ | CFFem Indef | CFNeut Indef => "едни" ;
|
||||
CFMasc Def _ | CFMascDefNom _ | CFFem Def | CFNeut Def => "едните"
|
||||
} ;
|
||||
nn = NCountable;
|
||||
nonEmpty = True
|
||||
@@ -53,22 +53,7 @@ concrete ExtraBul of ExtraBulAbs = CatBul **
|
||||
UttImpSg8fem pol imp = {s = pol.s ++ imp.s ! pol.p ! GSg Fem} ;
|
||||
UttImpSg8neut pol imp = {s = pol.s ++ imp.s ! pol.p ! GSg Fem} ;
|
||||
|
||||
IAdvAdv adv = {s = \\qf => (mkIAdv "êîëêî").s ! qf ++ adv.s} ;
|
||||
|
||||
lincat
|
||||
VPI = {s : Agr => Str} ;
|
||||
[VPI] = {s : Agr => Ints 4 => Str} ;
|
||||
|
||||
lin
|
||||
BaseVPI x y = {s = \\a=>table {4 => y.s!a; _ => x.s!a}} ;
|
||||
ConsVPI x xs = {s = \\a=>table {4 => xs.s!a!4; t => x.s!a++linCoord bindComma!t++xs.s!a!t}};
|
||||
|
||||
MkVPI vp = {s = daComplex Simul Pos vp ! Perf} ;
|
||||
ConjVPI conj vpi = {
|
||||
s = \\a => linCoord []!conj.sep ++ vpi.s!a!conj.sep ++ conj.s ++ vpi.s!a!4
|
||||
} ;
|
||||
ComplVPIVV vv vpi =
|
||||
insertObj (\\a => vpi.s ! a) Pos (predV vv) ;
|
||||
IAdvAdv adv = {s = \\qf => (mkIAdv "колко").s ! qf ++ adv.s} ;
|
||||
|
||||
lincat
|
||||
VPS = {s : Agr => Str} ;
|
||||
@@ -95,7 +80,7 @@ concrete ExtraBul of ExtraBulAbs = CatBul **
|
||||
vp.compl1 ! a ++ vp.compl2 ! a) Pos (predV verbBe) ;
|
||||
|
||||
PassAgentVPSlash vp np =
|
||||
insertObj (\\_ => "îò" ++ np.s ! RObj CPrep) Pos
|
||||
insertObj (\\_ => "от" ++ np.s ! RObj CPrep) Pos
|
||||
(insertObj (\\a => vp.ad.s ++ vp.s ! Perf ! VPassive (aform a.gn Indef (RObj Acc)) ++
|
||||
vp.compl1 ! a ++ vp.compl2 ! a) Pos (predV verbBe)) ;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
abstract ExtraBulAbs = Extra ** {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
fun
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
|
||||
concrete GrammarBul of Grammar =
|
||||
NounBul,
|
||||
@@ -17,7 +17,7 @@ concrete GrammarBul of Grammar =
|
||||
IdiomBul,
|
||||
TenseX - [CAdv,IAdv,AdV,SC]
|
||||
** {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
ImpersCl vp = mkClause [] (GSg Neut) (NounP3 Pos) vp ;
|
||||
GenericCl vp = mkClause "íÿêîé" (GSg Neut) (NounP3 Pos) vp ;
|
||||
GenericCl vp = mkClause "някой" (GSg Neut) (NounP3 Pos) vp ;
|
||||
|
||||
CleftNP np rs =
|
||||
mkClause (np.s ! RSubj)
|
||||
(GSg Neut) np.p
|
||||
(insertObj (\\_ => thisRP ! np.gn ++ rs.s ! personAgr np.gn np.p) (personPol np.p) (predV verbBe)) ;
|
||||
|
||||
CleftAdv ad s = {s = \\t,a,p,o => case p of {Pos=>[]; Neg=>"íå"} ++ ad.s ++ s.s } ;
|
||||
CleftAdv ad s = {s = \\t,a,p,o => case p of {Pos=>[]; Neg=>"не"} ++ ad.s ++ s.s } ;
|
||||
|
||||
ExistNP np = ExistNPAdv np (lin Adv {s = ""}) ;
|
||||
ExistIP ip = ExistIPAdv ip (lin Adv {s = ""}) ;
|
||||
@@ -21,8 +21,8 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
|
||||
ExistNPAdv np adv =
|
||||
{ s = \\t,a,p,o =>
|
||||
let verb = case orPol p (personPol np.p) of {
|
||||
Pos => mkV186 "èìàì" ;
|
||||
Neg => mkV186 "íÿìàì"
|
||||
Pos => mkV186 "имам" ;
|
||||
Neg => mkV186 "нямам"
|
||||
} ;
|
||||
|
||||
agr=agrP3 (GSg Neut);
|
||||
@@ -42,21 +42,21 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
|
||||
<Pres,Anter> => {aux1=[]; aux2=auxPres; main=perfect} ; --# notpresent
|
||||
<Past,Simul> => {aux1=[]; aux2=[]; main=aorist} ; --# notpresent
|
||||
<Past,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent
|
||||
<Fut, Simul> => {aux1="ùå"; aux2=[]; main=present} ; --# notpresent
|
||||
<Fut, Anter> => {aux1="ùå"++auxPres; aux2=[]; main=perfect} ; --# notpresent
|
||||
<Fut, Simul> => {aux1="ще"; aux2=[]; main=present} ; --# notpresent
|
||||
<Fut, Anter> => {aux1="ще"++auxPres; aux2=[]; main=perfect} ; --# notpresent
|
||||
<Cond,_> => {aux1=auxCondS; aux2=[]; main=perfect} --# notpresent
|
||||
} ;
|
||||
|
||||
in case o of {
|
||||
Main => v.aux1 ++ v.main ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s ;
|
||||
Inv => np.s ! RObj Acc ++ v.aux1 ++ v.main ++ v.aux2 ++ adv.s ;
|
||||
Quest => v.aux1 ++ v.main ++ "ëè" ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s
|
||||
Quest => v.aux1 ++ v.main ++ "ли" ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s
|
||||
}
|
||||
} ;
|
||||
|
||||
ExistIPAdv ip adv =
|
||||
mkQuestion {s = ip.s ! RSubj}
|
||||
(mkClause "òóê" ip.gn (NounP3 Pos) (insertObj (\\_ => adv.s) Pos (predV verbBe))) ;
|
||||
(mkClause "тук" ip.gn (NounP3 Pos) (insertObj (\\_ => adv.s) Pos (predV verbBe))) ;
|
||||
|
||||
ProgrVP vp = {
|
||||
s = \\_ => vp.s ! Imperf ;
|
||||
@@ -68,6 +68,6 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
|
||||
isSimple = False
|
||||
} ;
|
||||
|
||||
ImpPl1 vp = {s = "íåêà" ++ daComplex Simul Pos vp ! Perf ! {gn = GPl ; p = P1}} ;
|
||||
ImpPl1 vp = {s = "нека" ++ daComplex Simul Pos vp ! Perf ! {gn = GPl ; p = P1}} ;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,383 +1,383 @@
|
||||
--# -path=.:prelude
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
|
||||
concrete LexiconBul of Lexicon = CatBul **
|
||||
open ParadigmsBul, ResBul, Prelude in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
flags
|
||||
optimize=values ;
|
||||
|
||||
lin
|
||||
airplane_N = mkN007 "ñàìîëåò" ;
|
||||
answer_V2S = mkV2S (actionV (mkV187 "îòãîâàðÿì") (mkV173 "îòãîâîðÿ")) naP noPrep ;
|
||||
apartment_N = mkN007 "àïàðòàìåíò" ;
|
||||
apple_N = mkN041 "ÿáúëêà" ;
|
||||
art_N = mkN054 "èçêóñòâî" ;
|
||||
ask_V2Q = mkV2Q (stateV (mkV186 "ïèòàì")) noPrep noPrep ;
|
||||
baby_N = mkN065 "áåáå" ;
|
||||
bad_A = mkA076 "ëîø" ;
|
||||
bank_N = mkN041 "áàíêà" ;
|
||||
beautiful_A = mkA076 "êðàñèâ" ;
|
||||
become_VA = mkVA (actionV (mkV186 "ñòàâàì") (mkV152 "ñòàíà")) ;
|
||||
beer_N = mkN041 "áèðà" ;
|
||||
beg_V2V = mkV2V (stateV (mkV173 "ìîëÿ")) noPrep zaP ;
|
||||
big_A = mkA081 "ãîëÿì" ;
|
||||
bike_N = mkN061 "êîëåëî" ;
|
||||
bird_N = mkN041 "ïòèöà" ;
|
||||
black_A = mkA079 "÷åðåí" ;
|
||||
blue_A = mkA086 "ñèí" ;
|
||||
boat_N = mkN007 "êîðàá" ;
|
||||
book_N = mkN041 "êíèãà" ;
|
||||
boot_N = mkN041 "îáóâêà" ;
|
||||
boss_N = mkN001 "øåô" ;
|
||||
boy_N = mkN065 "ìîì÷å" ;
|
||||
bread_N = mkN001 "õëÿá" ;
|
||||
break_V2 = dirV2 (actionV (mkV173 "÷óïÿ") (mkV173 "ñ÷óïÿ")) ;
|
||||
broad_A = mkA079 "îáøèðåí" ;
|
||||
brother_N2 = prepN2 (mkN025 "áðàò") naP ;
|
||||
brown_A = mkA076 "êàôÿâ" ;
|
||||
butter_N = mkN054 "ìàñëî" ;
|
||||
buy_V2 = dirV2 (actionV (mkV186 "êóïóâàì") (mkV173 "êóïÿ")) ;
|
||||
camera_N = mkN041 "êàìåðà" ;
|
||||
cap_N = mkN041 "øàïêà" ;
|
||||
car_N = mkN041 "êîëà" ;
|
||||
carpet_N = mkN007 "êèëèì" ;
|
||||
cat_N = mkN041 "êîòêà" ;
|
||||
ceiling_N = mkN007 "òàâàí" ;
|
||||
chair_N = mkN001 "ñòîë" ;
|
||||
cheese_N = mkN066 "ñèðåíå" ;
|
||||
child_N = mkN067 "äåòå" ;
|
||||
church_N = mkN041 "öúðêâà" ;
|
||||
city_N = mkN001 "ãðàä" ;
|
||||
clean_A = mkA076 "÷èñò" ;
|
||||
clever_A = mkA079 "óìåí" ;
|
||||
close_V2 = dirV2 (actionV (mkV187 "çàòâàðÿì") (mkV173 "çàòâîðÿ")) ;
|
||||
coat_N = mkN054 "ïàëòî" ;
|
||||
cold_A = mkA076 "ñòóäåí" ;
|
||||
come_V = actionV (mkV186 "èäâàì") (table { -- special case "äîéäè", "äîéäåòå" are archaic
|
||||
VImperative Sg => "åëà";
|
||||
VImperative Pl => "åëàòå";
|
||||
vform => mkV146a "äîéäà" ! vform}) ;
|
||||
computer_N = mkN009 "êîìïþòúð" ;
|
||||
country_N = mkN041 "äúðæàâà" ;
|
||||
cousin_N = mkN007a "áðàòîâ÷åä" ;
|
||||
cow_N = mkN041 "êðàâà" ;
|
||||
die_V = actionV (mkV186 "óìèðàì") (mkV150a "óìðà") ;
|
||||
dirty_A = mkA079 "ìðúñåí" ;
|
||||
distance_N3 = prepN3 (mkN072 "ðàçñòîÿíèå") otP doP ;
|
||||
doctor_N = mkN007a "äîêòîð" ;
|
||||
dog_N = mkN065 "êó÷å" ;
|
||||
door_N = mkN041 "âðàòà" ;
|
||||
drink_V2 = dirV2 (stateV (mkV163 "ïèÿ")) ;
|
||||
easy_A2V = mkA2V (mkA079 "ëåñåí") zaP ;
|
||||
eat_V2 = dirV2 (stateV (mkV169 "ÿì")) ;
|
||||
empty_A = mkA079 "ïðàçåí" ;
|
||||
enemy_N = mkN001 "âðàã" ;
|
||||
factory_N = mkN041 "ôàáðèêà" ;
|
||||
father_N2 = prepN2 (mkN038 "áàùà") naP ;
|
||||
fear_VS = mkVS (stateV (mkV186 "ñòðàõóâàì")) ;
|
||||
find_V2 = dirV2 (actionV (mkV186 "íàìèðàì") (mkV173 "íàìåðÿ")) ;
|
||||
fish_N = mkN041 "ðèáà" ;
|
||||
floor_N = mkN007 "åòàæ" ;
|
||||
fridge_N = mkN007 "ôðèçåð" ;
|
||||
friend_N = mkN031a "ïðèÿòåë" ;
|
||||
fruit_N = mkN001 "ïëîä" ;
|
||||
fun_AV = mkA079 "çàáàâåí" ;
|
||||
forget_V2 = dirV2 (actionV (mkV187 "çàáðàâÿì") (mkV173 "çàáðàâÿ")) ;
|
||||
garden_N = mkN041 "ãðàäèíà" ;
|
||||
girl_N = mkN065 "ìîìè÷å" ;
|
||||
glove_N = mkN041 "ðúêàâèöà" ;
|
||||
gold_N = mkN054 "çëàòî" ;
|
||||
good_A = adjAdv (mkA080 "äîáúð") "äîáðå" ;
|
||||
go_V = actionV (mkV186 "îòèâàì") (mkV146 "îòèäà") ;
|
||||
green_A = mkA076 "çåëåí" ;
|
||||
harbour_N = mkN066 "ïðèñòàíèùå" ;
|
||||
hate_V2 = dirV2 (stateV (mkV173 "ìðàçÿ")) ;
|
||||
hat_N = mkN041 "øàïêà" ;
|
||||
hear_V2 = dirV2 (actionV (mkV186 "÷óâàì") (mkV163 "÷óÿ")) ;
|
||||
hill_N = mkN001 "õúëì" ;
|
||||
hope_VS = mkVS (medialV (stateV (mkV186 "íàäÿâàì")) Acc) ;
|
||||
horse_N = mkN035 "êîí" ;
|
||||
hot_A = mkA076 "ãîðåù" ;
|
||||
house_N = mkN041 "êúùà" ;
|
||||
important_A = mkA079 "âàæåí" ;
|
||||
industry_N = mkN047 "èíäóñòðèÿ" ;
|
||||
iron_N = mkN057 "æåëÿçî" ;
|
||||
king_N = mkN035a "öàð" ;
|
||||
airplane_N = mkN007 "самолет" ;
|
||||
answer_V2S = mkV2S (actionV (mkV187 "отговарям") (mkV173 "отговоря")) naP noPrep ;
|
||||
apartment_N = mkN007 "апартамент" ;
|
||||
apple_N = mkN041 "ябълка" ;
|
||||
art_N = mkN054 "изкуство" ;
|
||||
ask_V2Q = mkV2Q (stateV (mkV186 "питам")) noPrep noPrep ;
|
||||
baby_N = mkN065 "бебе" ;
|
||||
bad_A = mkA076 "лош" ;
|
||||
bank_N = mkN041 "банка" ;
|
||||
beautiful_A = mkA076 "красив" ;
|
||||
become_VA = mkVA (actionV (mkV186 "ставам") (mkV152 "стана")) ;
|
||||
beer_N = mkN041 "бира" ;
|
||||
beg_V2V = mkV2V (stateV (mkV173 "моля")) noPrep zaP ;
|
||||
big_A = mkA081 "голям" ;
|
||||
bike_N = mkN061 "колело" ;
|
||||
bird_N = mkN041 "птица" ;
|
||||
black_A = mkA079 "черен" ;
|
||||
blue_A = mkA086 "син" ;
|
||||
boat_N = mkN007 "кораб" ;
|
||||
book_N = mkN041 "книга" ;
|
||||
boot_N = mkN041 "обувка" ;
|
||||
boss_N = mkN001 "шеф" ;
|
||||
boy_N = mkN065 "момче" ;
|
||||
bread_N = mkN001 "хляб" ;
|
||||
break_V2 = dirV2 (actionV (mkV173 "чупя") (mkV173 "счупя")) ;
|
||||
broad_A = mkA079 "обширен" ;
|
||||
brother_N2 = prepN2 (mkN025 "брат") naP ;
|
||||
brown_A = mkA076 "кафяв" ;
|
||||
butter_N = mkN054 "масло" ;
|
||||
buy_V2 = dirV2 (actionV (mkV186 "купувам") (mkV173 "купя")) ;
|
||||
camera_N = mkN041 "камера" ;
|
||||
cap_N = mkN041 "шапка" ;
|
||||
car_N = mkN041 "кола" ;
|
||||
carpet_N = mkN007 "килим" ;
|
||||
cat_N = mkN041 "котка" ;
|
||||
ceiling_N = mkN007 "таван" ;
|
||||
chair_N = mkN001 "стол" ;
|
||||
cheese_N = mkN066 "сирене" ;
|
||||
child_N = mkN067 "дете" ;
|
||||
church_N = mkN041 "църква" ;
|
||||
city_N = mkN001 "град" ;
|
||||
clean_A = mkA076 "чист" ;
|
||||
clever_A = mkA079 "умен" ;
|
||||
close_V2 = dirV2 (actionV (mkV187 "затварям") (mkV173 "затворя")) ;
|
||||
coat_N = mkN054 "палто" ;
|
||||
cold_A = mkA076 "студен" ;
|
||||
come_V = actionV (mkV186 "идвам") (table { -- special case "дойди", "дойдете" are archaic
|
||||
VImperative Sg => "ела";
|
||||
VImperative Pl => "елате";
|
||||
vform => mkV146a "дойда" ! vform}) ;
|
||||
computer_N = mkN009 "компютър" ;
|
||||
country_N = mkN041 "държава" ;
|
||||
cousin_N = mkN007a "братовчед" ;
|
||||
cow_N = mkN041 "крава" ;
|
||||
die_V = actionV (mkV186 "умирам") (mkV150a "умра") ;
|
||||
dirty_A = mkA079 "мръсен" ;
|
||||
distance_N3 = prepN3 (mkN072 "разстояние") otP doP ;
|
||||
doctor_N = mkN007a "доктор" ;
|
||||
dog_N = mkN065 "куче" ;
|
||||
door_N = mkN041 "врата" ;
|
||||
drink_V2 = dirV2 (stateV (mkV163 "пия")) ;
|
||||
easy_A2V = mkA2V (mkA079 "лесен") zaP ;
|
||||
eat_V2 = dirV2 (stateV (mkV169 "ям")) ;
|
||||
empty_A = mkA079 "празен" ;
|
||||
enemy_N = mkN001 "враг" ;
|
||||
factory_N = mkN041 "фабрика" ;
|
||||
father_N2 = prepN2 (mkN038 "баща") naP ;
|
||||
fear_VS = mkVS (stateV (mkV186 "страхувам")) ;
|
||||
find_V2 = dirV2 (actionV (mkV186 "намирам") (mkV173 "намеря")) ;
|
||||
fish_N = mkN041 "риба" ;
|
||||
floor_N = mkN007 "етаж" ;
|
||||
fridge_N = mkN007 "фризер" ;
|
||||
friend_N = mkN031a "приятел" ;
|
||||
fruit_N = mkN001 "плод" ;
|
||||
fun_AV = mkA079 "забавен" ;
|
||||
forget_V2 = dirV2 (actionV (mkV187 "забравям") (mkV173 "забравя")) ;
|
||||
garden_N = mkN041 "градина" ;
|
||||
girl_N = mkN065 "момиче" ;
|
||||
glove_N = mkN041 "ръкавица" ;
|
||||
gold_N = mkN054 "злато" ;
|
||||
good_A = adjAdv (mkA080 "добър") "добре" ;
|
||||
go_V = actionV (mkV186 "отивам") (mkV146 "отида") ;
|
||||
green_A = mkA076 "зелен" ;
|
||||
harbour_N = mkN066 "пристанище" ;
|
||||
hate_V2 = dirV2 (stateV (mkV173 "мразя")) ;
|
||||
hat_N = mkN041 "шапка" ;
|
||||
hear_V2 = dirV2 (actionV (mkV186 "чувам") (mkV163 "чуя")) ;
|
||||
hill_N = mkN001 "хълм" ;
|
||||
hope_VS = mkVS (medialV (stateV (mkV186 "надявам")) Acc) ;
|
||||
horse_N = mkN035 "кон" ;
|
||||
hot_A = mkA076 "горещ" ;
|
||||
house_N = mkN041 "къща" ;
|
||||
important_A = mkA079 "важен" ;
|
||||
industry_N = mkN047 "индустрия" ;
|
||||
iron_N = mkN057 "желязо" ;
|
||||
king_N = mkN035a "цар" ;
|
||||
know_V2 = dirV2 {
|
||||
s = \\_,vform => case vform of {
|
||||
VPassive aform => (mkA079 "èçâåñòåí").s ! aform ;
|
||||
_ => mkV162 "çíàÿ" ! vform
|
||||
VPassive aform => (mkA079 "известен").s ! aform ;
|
||||
_ => mkV162 "зная" ! vform
|
||||
} ;
|
||||
vtype = VNormal ;
|
||||
lock_V = <>
|
||||
} ;
|
||||
know_VQ = mkVQ (actionV (mkV188 "çíàì") (mkV162 "çíàÿ")) ;
|
||||
know_VS = mkVS (actionV (mkV188 "çíàì") (mkV162 "çíàÿ")) ;
|
||||
lake_N = mkN054 "åçåðî" ;
|
||||
lamp_N = mkN041 "ëàìïà" ;
|
||||
learn_V2 = dirV2 (actionV (mkV176 "ó÷à") (mkV176 "íàó÷à")) ;
|
||||
leather_N = mkN041 "êîæà" ;
|
||||
leave_V2 = dirV2 (actionV (mkV187 "îñòàâÿì") (mkV173 "îñòàâÿ")) ;
|
||||
like_V2 = dirV2 (actionV (mkV186 "õàðåñâàì") (mkV186 "õàðåñàì")) ;
|
||||
listen_V2 = dirV2 (stateV (mkV186 "ñëóøàì")) ;
|
||||
live_V = stateV (mkV160 "æèâåÿ") ;
|
||||
long_A = mkA080 "äúëúã" ;
|
||||
lose_V2 = dirV2 (actionV (mkV173 "ãóáÿ") (mkV173 "çàãóáÿ")) ;
|
||||
love_N = mkN049 "ëþáîâ" ;
|
||||
love_V2 = dirV2 (stateV (mkV186 "îáè÷àì")) ;
|
||||
man_N = mkN024 "ìúæ" ;
|
||||
married_A2 = mkA2 (mkA076 "æåíåí") zaP ;
|
||||
meat_N = mkN054 "ìåñî" ;
|
||||
milk_N = mkN057 "ìëÿêî" ;
|
||||
moon_N = mkN041 "ëóíà" ;
|
||||
mother_N2 = prepN2 (mkN041a "ìàéêà") naP ;
|
||||
mountain_N = mkN041 "ïëàíèíà" ;
|
||||
music_N = mkN041 "ìóçèêà" ;
|
||||
narrow_A = mkA084 "òåñåí" ;
|
||||
new_A = mkA076 "íîâ" ;
|
||||
newspaper_N = mkN014 "âåñòíèê" ;
|
||||
oil_N = mkN065 "îëèî" ;
|
||||
old_A = mkA076 "ñòàð" ;
|
||||
open_V2 = dirV2 (actionV (mkV187 "îòâàðÿì") (mkV173 "îòâîðÿ")) ;
|
||||
paint_V2A = mkV2A (actionV (mkV186 "ðèñóâàì") (mkV186 "íàðèñóâàì")) noPrep ;
|
||||
paper_N = mkN047 "õàðòèÿ" ;
|
||||
paris_PN = mkPN "Ïàðèæ" Masc ;
|
||||
peace_N = mkN040a "ìèð" ;
|
||||
pen_N = mkN041 "ïèñàëêà" ;
|
||||
planet_N = mkN041 "ïëàíåòà" ;
|
||||
plastic_N = mkN041 "ïëàñòìàñà" ;
|
||||
play_V2 = dirV2 (stateV (mkV161 "èãðàÿ")) ;
|
||||
policeman_N = mkN032a "ïîëèöàé" ;
|
||||
priest_N = mkN014 "ñâåùåíèê" ;
|
||||
probable_AS = mkA079 "âåðîÿòåí" ;
|
||||
queen_N = mkN041 "êðàëèöà" ;
|
||||
radio_N = mkN054 "ðàäèî" ;
|
||||
rain_V0 = mkV0 (stateV (mkV174 "âàëè")) ;
|
||||
read_V2 = dirV2 (stateV (mkV145 "÷åòà")) ;
|
||||
red_A = mkA076 "÷åðâåí" ;
|
||||
religion_N = mkN047 "ðåëèãèÿ" ;
|
||||
restaurant_N = mkN007 "ðåñòîðàíò" ;
|
||||
river_N = mkN041 "ðåêà" ;
|
||||
rock_N = mkN041 "ñêàëà" ;
|
||||
roof_N = mkN007 "ïîêðèâ" ;
|
||||
rubber_N = mkN041 "ãóìà" ;
|
||||
run_V = stateV (mkV186 "áÿãàì") ;
|
||||
say_VS = mkVS (actionV (mkV186 "êàçâàì") (mkV156 "êàæà")) ;
|
||||
school_N = mkN066 "ó÷èëèùå" ;
|
||||
science_N = mkN041 "íàóêà" ;
|
||||
sea_N = mkN065 "ìîðå" ;
|
||||
seek_V2 = dirV2 (stateV (mkV173 "òúðñÿ")) ;
|
||||
see_V2 = dirV2 (actionV (mkV186 "âèæäàì") (mkV181 "âèäÿ")) ;
|
||||
sell_V3 = dirV3 (stateV (mkV186 "ïðîäàâàì")) naP ;
|
||||
send_V3 = dirV3 (actionV (mkV186 "ïðàùàì") (mkV173 "ïðàòÿ")) doP ;
|
||||
sheep_N = mkN044 "îâöà" ;
|
||||
ship_N = mkN007 "êîðàá" ;
|
||||
shirt_N = mkN041 "ðèçà" ;
|
||||
shoe_N = mkN041 "îáóâêà" ;
|
||||
shop_N = mkN007 "ìàãàçèí" ;
|
||||
short_A = mkA076 "êúñ" ;
|
||||
silver_N = mkN054 "ñðåáðî" ;
|
||||
sister_N = mkN041a "ñåñòðà" ;
|
||||
sleep_V = stateV (mkV182 "ñïÿ") ;
|
||||
small_A = mkA080 "ìàëúê" ;
|
||||
snake_N = mkN047 "çìèÿ" ;
|
||||
sock_N = mkN007 "÷îðàï" ;
|
||||
speak_V2 = dirV2 (stateV (mkV173 "ãîâîðÿ")) ;
|
||||
star_N = mkN041 "çâåçäà" ;
|
||||
steel_N = mkN041 "ñòîìàíà" ;
|
||||
stone_N = mkN017 "êàìúê" ;
|
||||
stove_N = mkN041 "ïå÷êà" ;
|
||||
student_N = mkN007a "ñòóäåíò" ;
|
||||
stupid_A = mkA076 "ãëóïàâ" ;
|
||||
sun_N = mkN066 "ñëúíöå" ;
|
||||
switch8off_V2 = dirV2 (actionV (mkV186 "èçêëþ÷âàì") (mkV176 "èçêëþ÷à")) ;
|
||||
switch8on_V2 = dirV2 (actionV (mkV186 "âêëþ÷âàì") (mkV176 "âêëþ÷à")) ;
|
||||
table_N = mkN041 "ìàñà" ;
|
||||
talk_V3 = mkV3 (stateV (mkV173 "ãîâîðÿ")) naP zaP ;
|
||||
teacher_N = mkN031a "ó÷èòåë" ;
|
||||
teach_V2 = dirV2 (actionV (mkV186 "ïðåïîäàâàì") (mkV168 "ïðåïîäàì")) ;
|
||||
television_N = mkN047 "òåëåâèçèÿ" ;
|
||||
thick_A = mkA076 "äåáåë" ;
|
||||
thin_A = mkA080 "òúíúê" ;
|
||||
train_N = mkN001 "âëàê" ;
|
||||
travel_V = stateV (mkV186 "ïúòóâàì") ;
|
||||
tree_N = mkN061 "äúðâî" ;
|
||||
ugly_A = mkA076 "ãëóïàâ" ;
|
||||
understand_V2 = dirV2 (actionV (mkV186 "ðàçáèðàì") (mkV170 "ðàçáåðà")) ;
|
||||
university_N = mkN007 "óíèâåðñèòåò" ;
|
||||
village_N = mkN054 "ñåëî" ;
|
||||
wait_V2 = prepV2 (stateV (mkV186 "÷àêàì")) zaP ;
|
||||
walk_V = stateV (mkV173 "õîäÿ") ;
|
||||
warm_A = mkA080 "òîïúë" ;
|
||||
war_N = mkN041 "âîéíà" ;
|
||||
watch_V2 = dirV2 (stateV (mkV186 "ãëåäàì")) ;
|
||||
water_N = mkN041 "âîäà" ;
|
||||
white_A = mkA081 "áÿë" ;
|
||||
window_N = mkN008 "ïðîçîðåö" ;
|
||||
wine_N = mkN054 "âèíî" ;
|
||||
win_V2 = dirV2 (actionV (mkV186 "ïîáåæäàâàì") (mkV174 "ïîáåäÿ")) ;
|
||||
woman_N = mkN041a "æåíà" ;
|
||||
wonder_VQ = mkVQ (medialV (actionV (mkV186 "ó÷óäâàì") (mkV173 "÷óäÿ")) Acc) ;
|
||||
wood_N = mkN041 "äúðâåñèíà" ;
|
||||
write_V2 = dirV2 (stateV (mkV159 "ïèøà")) ;
|
||||
yellow_A = mkA076 "æúëò" ;
|
||||
young_A = mkA076 "ìëàä" ;
|
||||
do_V2 = dirV2 (actionV (mkV173 "ïðàâÿ") (mkV173 "íàïðàâÿ")) ;
|
||||
now_Adv = mkAdv "ñåãà" ;
|
||||
already_Adv = mkAdv "âå÷å" ;
|
||||
song_N = mkN050 "ïåñåí" ;
|
||||
add_V3 = dirV3 (actionV (mkV186 "ñúáèðàì") (mkV170 "ñúáåðà")) sP ;
|
||||
number_N = mkN054 "÷èñëî" ;
|
||||
put_V2 = prepV2 (actionV (mkV186 "ñëàãàì") (mkV176 "ñëîæà")) noPrep ;
|
||||
stop_V = actionV (mkV186 "ñïèðàì") (mkV150 "ñïðà") ;
|
||||
jump_V = actionV (mkV186 "ñêà÷àì") (mkV176 "ñêî÷à") ;
|
||||
left_Ord = mkA081 "ëÿâ" ** {nonEmpty=True} ;
|
||||
right_Ord = mkA084 "äåñåí" ** {nonEmpty=True} ;
|
||||
far_Adv = mkAdv "äàëå÷å" ;
|
||||
correct_A = mkA079 "ïðàâèëåí" ;
|
||||
dry_A = mkA076 "ñóõ" ;
|
||||
dull_A = mkA076 "òúï" ;
|
||||
full_A = mkA079 "ïúëåí" ;
|
||||
heavy_A = mkA080 "òåæúê" ;
|
||||
near_A = mkA080 "áëèçúê" ;
|
||||
rotten_A = mkA076 "ïðîãíèë" ;
|
||||
round_A = mkA080 "êðúãúë" ;
|
||||
sharp_A = mkA080 "îñòúð" ;
|
||||
smooth_A = mkA080 "ãëàäúê" ;
|
||||
straight_A = mkA081 "ïðÿê" ;
|
||||
wet_A = mkA080 "ìîêúð" ; ----
|
||||
wide_A = mkA076 "øèðîê" ;
|
||||
animal_N = mkN062 "æèâîòíî" ;
|
||||
ashes_N = mkN049 "ïåïeë" ;
|
||||
back_N = mkN003 "ãðúá" ;
|
||||
bark_N = mkN028 "ëàé" ;
|
||||
belly_N = mkN007 "êîðåì" ;
|
||||
blood_N = mkN053 "êðúâ" ;
|
||||
bone_N = mkN049 "êîñò" ;
|
||||
breast_N = mkN041 "ãúðäà" ;
|
||||
cloud_N = mkN014 "îáëàê" ;
|
||||
day_N = mkN033 "äåí" ;
|
||||
dust_N = mkN001 "ïðàõ" ;
|
||||
ear_N = mkN064 "óõî" ;
|
||||
earth_N = mkN047 "çåìÿ" ;
|
||||
egg_N = mkN066 "ÿéöå" ;
|
||||
eye_N = mkN063 "îêî" ;
|
||||
fat_N = mkN041 "ìàçíèíà" ;
|
||||
feather_N = mkN054 "ïåðî" ;
|
||||
fingernail_N = mkN034 "íîêúò" ;
|
||||
fire_N = mkN030 "îãúí" ;
|
||||
flower_N = mkN068 "öâåòå" ;
|
||||
fog_N = mkN041 "ìúãëà" ;
|
||||
foot_N = mkN041 "ñòúïêà" ;
|
||||
forest_N = mkN041 "ãîðà" ;
|
||||
grass_N = mkN041 "òðåâà" ;
|
||||
guts_N = mkN054 "÷åðâî" ;
|
||||
hair_N = mkN041 "êîñà" ;
|
||||
hand_N = mkN045 "ðúêà" ;
|
||||
head_N = mkN041 "ãëàâà" ;
|
||||
heart_N = mkN066 "ñúðöå" ;
|
||||
horn_N = mkN001 "ðîã" ;
|
||||
husband_N = mkN015 "ñúïðóã" ; -- personal
|
||||
ice_N = mkN001 "ëåä" ;
|
||||
knee_N = mkN058 "êîëÿíî" ;
|
||||
leaf_N = mkN054 "ëèñòî" ;
|
||||
leg_N = mkN022 "êðàê" ;
|
||||
liver_N = mkN001 "äðîá" ;
|
||||
louse_N = mkN041 "âúøêà" ;
|
||||
mouth_N = mkN042 "óñòà" ;
|
||||
name_N = mkN069 "èìå" ;
|
||||
neck_N = mkN003 "ãðúá" ;
|
||||
night_N = mkN049 "íîù" ;
|
||||
nose_N = mkN001 "íîñ" ;
|
||||
person_N = mkN014 "÷îâåê" ;
|
||||
rain_N = mkN001 "äúæä" ;
|
||||
road_N = mkN037 "ïúò" ;
|
||||
root_N = mkN007 "êîðåí" ;
|
||||
rope_N = mkN065 "âúæå" ;
|
||||
salt_N = mkN049 "ñîë" ;
|
||||
sand_N = mkN014 "ïÿñúê" ;
|
||||
seed_N = mkN069 "ñåìå" ;
|
||||
skin_N = mkN041 "êîæà" ;
|
||||
sky_N = mkN070 "íåáå" ;
|
||||
smoke_N = mkN014 "ïóøåê" ;
|
||||
snow_N = mkN002 "ñíÿã" ;
|
||||
stick_N = mkN041 "ïðú÷êà" ;
|
||||
tail_N = mkN041 "îïàøêà" ;
|
||||
tongue_N = mkN014 "åçèê" ;
|
||||
tooth_N = mkN007 "çúá" ;
|
||||
wife_N = mkN041 "ñúïðóãà" ;
|
||||
wind_N = mkN004 "âÿòúð" ;
|
||||
wing_N = mkN056 "êðèëî" ;
|
||||
worm_N = mkN032 "÷åðâåé" ;
|
||||
year_N = mkN041 "ãîäèíà" ;
|
||||
blow_V = stateV (mkV186 "äóõàì") ;
|
||||
breathe_V = dirV2 (stateV (mkV186 "äèøàì")) ;
|
||||
burn_V = actionV (mkV187 "èçãàðÿì") (mkV177 "èçãîðÿ") ;
|
||||
dig_V = stateV (mkV161 "êîïàÿ") ;
|
||||
fall_V = actionV (mkV186 "ïàäàì") (mkV152 "ïàäíà") ;
|
||||
float_V = stateV (mkV186 "ïëàâàì") ;
|
||||
flow_V = stateV (mkV148 "òåêà") ;
|
||||
fly_V = stateV (mkV177 "ëåòÿ") ;
|
||||
freeze_V = stateV (mkV186 "çàìðúçâàì") ;
|
||||
give_V3 = dirV3 (actionV (mkV186 "äàâàì") (mkV186 "äàì")) naP ;
|
||||
laugh_V = medialV (stateV (mkV160 "ñìåÿ")) Acc ;
|
||||
lie_V = stateV (mkV178 "ëåæà") ;
|
||||
play_V = stateV (mkV161 "èãðàÿ") ;
|
||||
sew_V = stateV (mkV163 "øèÿ") ;
|
||||
sing_V = stateV (mkV164 "ïåÿ") ;
|
||||
sit_V = stateV (mkV177 "ñåäÿ") ;
|
||||
smell_V = stateV (mkV159 "ìèðèøà") ;
|
||||
spit_V = stateV (mkV163 "ïëþÿ") ;
|
||||
stand_V = stateV (mkV180 "ñòîÿ") ;
|
||||
swell_V = actionV (mkV186 "íàäóâàì") (mkV163 "íàäóÿ") ;
|
||||
swim_V = stateV (mkV186 "ïëóâàì") ;
|
||||
think_V = stateV (mkV173 "ìèñëÿ") ;
|
||||
turn_V = actionV (mkV186 "îáðúùàì") (mkV152 "îáúðíà") ;
|
||||
vomit_V = actionV (mkV186 "ïîâðúùàì") (mkV152 "ïîâúðíà") ;
|
||||
know_VQ = mkVQ (actionV (mkV188 "знам") (mkV162 "зная")) ;
|
||||
know_VS = mkVS (actionV (mkV188 "знам") (mkV162 "зная")) ;
|
||||
lake_N = mkN054 "езеро" ;
|
||||
lamp_N = mkN041 "лампа" ;
|
||||
learn_V2 = dirV2 (actionV (mkV176 "уча") (mkV176 "науча")) ;
|
||||
leather_N = mkN041 "кожа" ;
|
||||
leave_V2 = dirV2 (actionV (mkV187 "оставям") (mkV173 "оставя")) ;
|
||||
like_V2 = dirV2 (actionV (mkV186 "харесвам") (mkV186 "харесам")) ;
|
||||
listen_V2 = dirV2 (stateV (mkV186 "слушам")) ;
|
||||
live_V = stateV (mkV160 "живея") ;
|
||||
long_A = mkA080 "дълъг" ;
|
||||
lose_V2 = dirV2 (actionV (mkV173 "губя") (mkV173 "загубя")) ;
|
||||
love_N = mkN049 "любов" ;
|
||||
love_V2 = dirV2 (stateV (mkV186 "обичам")) ;
|
||||
man_N = mkN024 "мъж" ;
|
||||
married_A2 = mkA2 (mkA076 "женен") zaP ;
|
||||
meat_N = mkN054 "месо" ;
|
||||
milk_N = mkN057 "мляко" ;
|
||||
moon_N = mkN041 "луна" ;
|
||||
mother_N2 = prepN2 (mkN041a "майка") naP ;
|
||||
mountain_N = mkN041 "планина" ;
|
||||
music_N = mkN041 "музика" ;
|
||||
narrow_A = mkA084 "тесен" ;
|
||||
new_A = mkA076 "нов" ;
|
||||
newspaper_N = mkN014 "вестник" ;
|
||||
oil_N = mkN065 "олио" ;
|
||||
old_A = mkA076 "стар" ;
|
||||
open_V2 = dirV2 (actionV (mkV187 "отварям") (mkV173 "отворя")) ;
|
||||
paint_V2A = mkV2A (actionV (mkV186 "рисувам") (mkV186 "нарисувам")) noPrep ;
|
||||
paper_N = mkN047 "хартия" ;
|
||||
paris_PN = mkPN "Париж" Masc ;
|
||||
peace_N = mkN040a "мир" ;
|
||||
pen_N = mkN041 "писалка" ;
|
||||
planet_N = mkN041 "планета" ;
|
||||
plastic_N = mkN041 "пластмаса" ;
|
||||
play_V2 = dirV2 (stateV (mkV161 "играя")) ;
|
||||
policeman_N = mkN032a "полицай" ;
|
||||
priest_N = mkN014 "свещеник" ;
|
||||
probable_AS = mkA079 "вероятен" ;
|
||||
queen_N = mkN041 "кралица" ;
|
||||
radio_N = mkN054 "радио" ;
|
||||
rain_V0 = mkV0 (stateV (mkV174 "вали")) ;
|
||||
read_V2 = dirV2 (stateV (mkV145 "чета")) ;
|
||||
red_A = mkA076 "червен" ;
|
||||
religion_N = mkN047 "религия" ;
|
||||
restaurant_N = mkN007 "ресторант" ;
|
||||
river_N = mkN041 "река" ;
|
||||
rock_N = mkN041 "скала" ;
|
||||
roof_N = mkN007 "покрив" ;
|
||||
rubber_N = mkN041 "гума" ;
|
||||
run_V = stateV (mkV186 "бягам") ;
|
||||
say_VS = mkVS (actionV (mkV186 "казвам") (mkV156 "кажа")) ;
|
||||
school_N = mkN066 "училище" ;
|
||||
science_N = mkN041 "наука" ;
|
||||
sea_N = mkN065 "море" ;
|
||||
seek_V2 = dirV2 (stateV (mkV173 "търся")) ;
|
||||
see_V2 = dirV2 (actionV (mkV186 "виждам") (mkV181 "видя")) ;
|
||||
sell_V3 = dirV3 (stateV (mkV186 "продавам")) naP ;
|
||||
send_V3 = dirV3 (actionV (mkV186 "пращам") (mkV173 "пратя")) doP ;
|
||||
sheep_N = mkN044 "овца" ;
|
||||
ship_N = mkN007 "кораб" ;
|
||||
shirt_N = mkN041 "риза" ;
|
||||
shoe_N = mkN041 "обувка" ;
|
||||
shop_N = mkN007 "магазин" ;
|
||||
short_A = mkA076 "къс" ;
|
||||
silver_N = mkN054 "сребро" ;
|
||||
sister_N = mkN041a "сестра" ;
|
||||
sleep_V = stateV (mkV182 "спя") ;
|
||||
small_A = mkA080 "малък" ;
|
||||
snake_N = mkN047 "змия" ;
|
||||
sock_N = mkN007 "чорап" ;
|
||||
speak_V2 = dirV2 (stateV (mkV173 "говоря")) ;
|
||||
star_N = mkN041 "звезда" ;
|
||||
steel_N = mkN041 "стомана" ;
|
||||
stone_N = mkN017 "камък" ;
|
||||
stove_N = mkN041 "печка" ;
|
||||
student_N = mkN007a "студент" ;
|
||||
stupid_A = mkA076 "глупав" ;
|
||||
sun_N = mkN066 "слънце" ;
|
||||
switch8off_V2 = dirV2 (actionV (mkV186 "изключвам") (mkV176 "изключа")) ;
|
||||
switch8on_V2 = dirV2 (actionV (mkV186 "включвам") (mkV176 "включа")) ;
|
||||
table_N = mkN041 "маса" ;
|
||||
talk_V3 = mkV3 (stateV (mkV173 "говоря")) naP zaP ;
|
||||
teacher_N = mkN031a "учител" ;
|
||||
teach_V2 = dirV2 (actionV (mkV186 "преподавам") (mkV168 "преподам")) ;
|
||||
television_N = mkN047 "телевизия" ;
|
||||
thick_A = mkA076 "дебел" ;
|
||||
thin_A = mkA080 "тънък" ;
|
||||
train_N = mkN001 "влак" ;
|
||||
travel_V = stateV (mkV186 "пътувам") ;
|
||||
tree_N = mkN061 "дърво" ;
|
||||
ugly_A = mkA076 "глупав" ;
|
||||
understand_V2 = dirV2 (actionV (mkV186 "разбирам") (mkV170 "разбера")) ;
|
||||
university_N = mkN007 "университет" ;
|
||||
village_N = mkN054 "село" ;
|
||||
wait_V2 = prepV2 (stateV (mkV186 "чакам")) zaP ;
|
||||
walk_V = stateV (mkV173 "ходя") ;
|
||||
warm_A = mkA080 "топъл" ;
|
||||
war_N = mkN041 "война" ;
|
||||
watch_V2 = dirV2 (stateV (mkV186 "гледам")) ;
|
||||
water_N = mkN041 "вода" ;
|
||||
white_A = mkA081 "бял" ;
|
||||
window_N = mkN008 "прозорец" ;
|
||||
wine_N = mkN054 "вино" ;
|
||||
win_V2 = dirV2 (actionV (mkV186 "побеждавам") (mkV174 "победя")) ;
|
||||
woman_N = mkN041a "жена" ;
|
||||
wonder_VQ = mkVQ (medialV (actionV (mkV186 "учудвам") (mkV173 "чудя")) Acc) ;
|
||||
wood_N = mkN041 "дървесина" ;
|
||||
write_V2 = dirV2 (stateV (mkV159 "пиша")) ;
|
||||
yellow_A = mkA076 "жълт" ;
|
||||
young_A = mkA076 "млад" ;
|
||||
do_V2 = dirV2 (actionV (mkV173 "правя") (mkV173 "направя")) ;
|
||||
now_Adv = mkAdv "сега" ;
|
||||
already_Adv = mkAdv "вече" ;
|
||||
song_N = mkN050 "песен" ;
|
||||
add_V3 = dirV3 (actionV (mkV186 "събирам") (mkV170 "събера")) sP ;
|
||||
number_N = mkN054 "число" ;
|
||||
put_V2 = prepV2 (actionV (mkV186 "слагам") (mkV176 "сложа")) noPrep ;
|
||||
stop_V = actionV (mkV186 "спирам") (mkV150 "спра") ;
|
||||
jump_V = actionV (mkV186 "скачам") (mkV176 "скоча") ;
|
||||
left_Ord = mkA081 "ляв" ** {nonEmpty=True} ;
|
||||
right_Ord = mkA084 "десен" ** {nonEmpty=True} ;
|
||||
far_Adv = mkAdv "далече" ;
|
||||
correct_A = mkA079 "правилен" ;
|
||||
dry_A = mkA076 "сух" ;
|
||||
dull_A = mkA076 "тъп" ;
|
||||
full_A = mkA079 "пълен" ;
|
||||
heavy_A = mkA080 "тежък" ;
|
||||
near_A = mkA080 "близък" ;
|
||||
rotten_A = mkA076 "прогнил" ;
|
||||
round_A = mkA080 "кръгъл" ;
|
||||
sharp_A = mkA080 "остър" ;
|
||||
smooth_A = mkA080 "гладък" ;
|
||||
straight_A = mkA081 "пряк" ;
|
||||
wet_A = mkA080 "мокър" ; ----
|
||||
wide_A = mkA076 "широк" ;
|
||||
animal_N = mkN062 "животно" ;
|
||||
ashes_N = mkN049 "пепeл" ;
|
||||
back_N = mkN003 "гръб" ;
|
||||
bark_N = mkN028 "лай" ;
|
||||
belly_N = mkN007 "корем" ;
|
||||
blood_N = mkN053 "кръв" ;
|
||||
bone_N = mkN049 "кост" ;
|
||||
breast_N = mkN041 "гърда" ;
|
||||
cloud_N = mkN014 "облак" ;
|
||||
day_N = mkN033 "ден" ;
|
||||
dust_N = mkN001 "прах" ;
|
||||
ear_N = mkN064 "ухо" ;
|
||||
earth_N = mkN047 "земя" ;
|
||||
egg_N = mkN066 "яйце" ;
|
||||
eye_N = mkN063 "око" ;
|
||||
fat_N = mkN041 "мазнина" ;
|
||||
feather_N = mkN054 "перо" ;
|
||||
fingernail_N = mkN034 "нокът" ;
|
||||
fire_N = mkN030 "огън" ;
|
||||
flower_N = mkN068 "цвете" ;
|
||||
fog_N = mkN041 "мъгла" ;
|
||||
foot_N = mkN041 "стъпка" ;
|
||||
forest_N = mkN041 "гора" ;
|
||||
grass_N = mkN041 "трева" ;
|
||||
guts_N = mkN054 "черво" ;
|
||||
hair_N = mkN041 "коса" ;
|
||||
hand_N = mkN045 "ръка" ;
|
||||
head_N = mkN041 "глава" ;
|
||||
heart_N = mkN066 "сърце" ;
|
||||
horn_N = mkN001 "рог" ;
|
||||
husband_N = mkN015 "съпруг" ; -- personal
|
||||
ice_N = mkN001 "лед" ;
|
||||
knee_N = mkN058 "коляно" ;
|
||||
leaf_N = mkN054 "листо" ;
|
||||
leg_N = mkN022 "крак" ;
|
||||
liver_N = mkN001 "дроб" ;
|
||||
louse_N = mkN041 "въшка" ;
|
||||
mouth_N = mkN042 "уста" ;
|
||||
name_N = mkN069 "име" ;
|
||||
neck_N = mkN003 "гръб" ;
|
||||
night_N = mkN049 "нощ" ;
|
||||
nose_N = mkN001 "нос" ;
|
||||
person_N = mkN014 "човек" ;
|
||||
rain_N = mkN001 "дъжд" ;
|
||||
road_N = mkN037 "път" ;
|
||||
root_N = mkN007 "корен" ;
|
||||
rope_N = mkN065 "въже" ;
|
||||
salt_N = mkN049 "сол" ;
|
||||
sand_N = mkN014 "пясък" ;
|
||||
seed_N = mkN069 "семе" ;
|
||||
skin_N = mkN041 "кожа" ;
|
||||
sky_N = mkN070 "небе" ;
|
||||
smoke_N = mkN014 "пушек" ;
|
||||
snow_N = mkN002 "сняг" ;
|
||||
stick_N = mkN041 "пръчка" ;
|
||||
tail_N = mkN041 "опашка" ;
|
||||
tongue_N = mkN014 "език" ;
|
||||
tooth_N = mkN007 "зъб" ;
|
||||
wife_N = mkN041 "съпруга" ;
|
||||
wind_N = mkN004 "вятър" ;
|
||||
wing_N = mkN056 "крило" ;
|
||||
worm_N = mkN032 "червей" ;
|
||||
year_N = mkN041 "година" ;
|
||||
blow_V = stateV (mkV186 "духам") ;
|
||||
breathe_V = dirV2 (stateV (mkV186 "дишам")) ;
|
||||
burn_V = actionV (mkV187 "изгарям") (mkV177 "изгоря") ;
|
||||
dig_V = stateV (mkV161 "копая") ;
|
||||
fall_V = actionV (mkV186 "падам") (mkV152 "падна") ;
|
||||
float_V = stateV (mkV186 "плавам") ;
|
||||
flow_V = stateV (mkV148 "тека") ;
|
||||
fly_V = stateV (mkV177 "летя") ;
|
||||
freeze_V = stateV (mkV186 "замръзвам") ;
|
||||
give_V3 = dirV3 (actionV (mkV186 "давам") (mkV186 "дам")) naP ;
|
||||
laugh_V = medialV (stateV (mkV160 "смея")) Acc ;
|
||||
lie_V = stateV (mkV178 "лежа") ;
|
||||
play_V = stateV (mkV161 "играя") ;
|
||||
sew_V = stateV (mkV163 "шия") ;
|
||||
sing_V = stateV (mkV164 "пея") ;
|
||||
sit_V = stateV (mkV177 "седя") ;
|
||||
smell_V = stateV (mkV159 "мириша") ;
|
||||
spit_V = stateV (mkV163 "плюя") ;
|
||||
stand_V = stateV (mkV180 "стоя") ;
|
||||
swell_V = actionV (mkV186 "надувам") (mkV163 "надуя") ;
|
||||
swim_V = stateV (mkV186 "плувам") ;
|
||||
think_V = stateV (mkV173 "мисля") ;
|
||||
turn_V = actionV (mkV186 "обръщам") (mkV152 "обърна") ;
|
||||
vomit_V = actionV (mkV186 "повръщам") (mkV152 "повърна") ;
|
||||
|
||||
bite_V2 = dirV2 (stateV (mkV154 "õàïÿ")) ;
|
||||
count_V2 = dirV2 (stateV (mkV175 "áðîÿ")) ;
|
||||
cut_V2 = dirV2 (stateV (mkV157 "ðåæà")) ;
|
||||
fear_V2 = prepV2 (medialV (stateV (mkV186 "ñòðàõóâàì")) Acc) otP;
|
||||
fight_V2 = prepV2 (medialV (stateV (mkV173 "áîðÿ")) Acc) sP;
|
||||
hit_V2 = dirV2 (actionV (mkV187 "óäðÿì") (mkV173 "óäàðÿ")) ;
|
||||
hold_V2 = dirV2 (stateV (mkV179 "äúðæà")) ;
|
||||
hunt_V2 = dirV2 (stateV (mkV174 "ëîâÿ")) ;
|
||||
kill_V2 = dirV2 (actionV (mkV186 "óáèâàì") (mkV163 "óáèÿ")) ;
|
||||
pull_V2 = dirV2 (stateV (mkV186 "äúðïàì")) ;
|
||||
push_V2 = dirV2 (stateV (mkV186 "áóòàì")) ;
|
||||
rub_V2 = dirV2 (stateV (mkV163 "òðèÿ")) ;
|
||||
scratch_V2 = dirV2 (actionV (mkV186 "äðàñêàì") (mkV152 "äðàñíà")) ;
|
||||
split_V2 = dirV2 (actionV (mkV187 "ðàçäåëÿì") (mkV174 "ðàçäåëÿ")) ;
|
||||
squeeze_V2 = dirV2 (actionV (mkV186 "ñòèñêàì") (mkV152 "ñòèñíà")) ;
|
||||
stab_V2 = dirV2 (actionV (mkV186 "ïðîìóøâàì") (mkV176 "ïðîìóøà")) ;
|
||||
suck_V2 = dirV2 (stateV (mkV155 "ñó÷à")) ;
|
||||
throw_V2 = dirV2 (actionV (mkV187 "õâúðëÿì") (mkV173 "õâúðëÿ")) ;
|
||||
tie_V2 = dirV2 (actionV (mkV186 "âðúçâàì") (mkV156 "âúðæà")) ;
|
||||
wash_V2 = dirV2 (stateV (mkV163 "ìèÿ")) ;
|
||||
wipe_V2 = dirV2 (stateV (mkV159 "áúðøà")) ;
|
||||
bite_V2 = dirV2 (stateV (mkV154 "хапя")) ;
|
||||
count_V2 = dirV2 (stateV (mkV175 "броя")) ;
|
||||
cut_V2 = dirV2 (stateV (mkV157 "режа")) ;
|
||||
fear_V2 = prepV2 (medialV (stateV (mkV186 "страхувам")) Acc) otP;
|
||||
fight_V2 = prepV2 (medialV (stateV (mkV173 "боря")) Acc) sP;
|
||||
hit_V2 = dirV2 (actionV (mkV187 "удрям") (mkV173 "ударя")) ;
|
||||
hold_V2 = dirV2 (stateV (mkV179 "държа")) ;
|
||||
hunt_V2 = dirV2 (stateV (mkV174 "ловя")) ;
|
||||
kill_V2 = dirV2 (actionV (mkV186 "убивам") (mkV163 "убия")) ;
|
||||
pull_V2 = dirV2 (stateV (mkV186 "дърпам")) ;
|
||||
push_V2 = dirV2 (stateV (mkV186 "бутам")) ;
|
||||
rub_V2 = dirV2 (stateV (mkV163 "трия")) ;
|
||||
scratch_V2 = dirV2 (actionV (mkV186 "драскам") (mkV152 "драсна")) ;
|
||||
split_V2 = dirV2 (actionV (mkV187 "разделям") (mkV174 "разделя")) ;
|
||||
squeeze_V2 = dirV2 (actionV (mkV186 "стискам") (mkV152 "стисна")) ;
|
||||
stab_V2 = dirV2 (actionV (mkV186 "промушвам") (mkV176 "промуша")) ;
|
||||
suck_V2 = dirV2 (stateV (mkV155 "суча")) ;
|
||||
throw_V2 = dirV2 (actionV (mkV187 "хвърлям") (mkV173 "хвърля")) ;
|
||||
tie_V2 = dirV2 (actionV (mkV186 "връзвам") (mkV156 "вържа")) ;
|
||||
wash_V2 = dirV2 (stateV (mkV163 "мия")) ;
|
||||
wipe_V2 = dirV2 (stateV (mkV159 "бърша")) ;
|
||||
|
||||
grammar_N = mkN041 "ãðàìàòèêà" ;
|
||||
language_N = mkN014 "åçèê" ;
|
||||
rule_N = mkN054 "ïðàâèëî" ;
|
||||
grammar_N = mkN041 "граматика" ;
|
||||
language_N = mkN014 "език" ;
|
||||
rule_N = mkN054 "правило" ;
|
||||
|
||||
john_PN = mkPN "Äæîí" Masc ;
|
||||
question_N = mkN007 "âúïðîñ" ;
|
||||
ready_A = mkA076 "ãîòîâ" ;
|
||||
reason_N = mkN041 "ïðè÷èíà" ;
|
||||
today_Adv = mkAdv "äíåñ" ;
|
||||
uncertain_A = mkA079 "íåÿñåí" ;
|
||||
john_PN = mkPN "Джон" Masc ;
|
||||
question_N = mkN007 "въпрос" ;
|
||||
ready_A = mkA076 "готов" ;
|
||||
reason_N = mkN041 "причина" ;
|
||||
today_Adv = mkAdv "днес" ;
|
||||
uncertain_A = mkA079 "неясен" ;
|
||||
|
||||
oper
|
||||
zaP = mkPrep "çà" Acc ;
|
||||
zaP = mkPrep "за" Acc ;
|
||||
naP = mkPrep [] Dat ;
|
||||
otP = mkPrep "îò" Acc ;
|
||||
doP = mkPrep "äî" Acc ;
|
||||
sP = mkPrep (pre { "ñ" ;
|
||||
"ñúñ" / strs {"ñ" ; "ç" ; "Ñ" ; "Ç"}
|
||||
otP = mkPrep "от" Acc ;
|
||||
doP = mkPrep "до" Acc ;
|
||||
sP = mkPrep (pre { "с" ;
|
||||
"със" / strs {"с" ; "з" ; "С" ; "З"}
|
||||
}) Acc ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,20 +1,12 @@
|
||||
--# -path=.:../../prelude
|
||||
--# -coding=cp1251
|
||||
|
||||
--1 A Simple English Resource Morphology
|
||||
--
|
||||
-- Aarne Ranta 2002 -- 2005
|
||||
--
|
||||
-- This resource morphology contains definitions needed in the resource
|
||||
-- syntax. To build a lexicon, it is better to use $ParadigmsEng$, which
|
||||
-- gives a higher-level access to this module.
|
||||
--# -coding=utf8
|
||||
|
||||
resource MorphoBul = ResBul ** open
|
||||
Predef,
|
||||
Prelude,
|
||||
CatBul
|
||||
in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
flags optimize=all ;
|
||||
@@ -95,73 +87,73 @@ oper
|
||||
\cheta,chete,chetoh,chetqh,chel,chetql,cheten,chetqst,cheti,chetene ->
|
||||
table {
|
||||
VPres Sg P1 => cheta;
|
||||
VPres Sg P2 => chete + "ø";
|
||||
VPres Sg P2 => chete + "ш";
|
||||
VPres Sg P3 => chete;
|
||||
VPres Pl P1 => case chete of {
|
||||
_ + ("à"|"ÿ") => chete + "ìå";
|
||||
_ => chete + "ì"
|
||||
_ + ("а"|"я") => chete + "ме";
|
||||
_ => chete + "м"
|
||||
};
|
||||
VPres Pl P2 => chete + "òå";
|
||||
VPres Pl P2 => chete + "те";
|
||||
VPres Pl P3 => case cheta of {
|
||||
vika + "ì" => case chete of {
|
||||
zn + "àå" => zn + "àÿò";
|
||||
dad + "å" => dad + "àò";
|
||||
vika => vika + "ò"
|
||||
vika + "м" => case chete of {
|
||||
zn + "ае" => zn + "аят";
|
||||
dad + "е" => dad + "ат";
|
||||
vika => vika + "т"
|
||||
};
|
||||
_ => cheta + "ò"
|
||||
_ => cheta + "т"
|
||||
};
|
||||
VAorist Sg P1 => chetoh;
|
||||
VAorist Sg _ => case chetoh of {
|
||||
chet+"îõ" => chete;
|
||||
zova+ "õ" => zova
|
||||
chet+"ох" => chete;
|
||||
zova+ "х" => zova
|
||||
};
|
||||
VAorist Pl P1 => chetoh + "ìå";
|
||||
VAorist Pl P2 => chetoh + "òå";
|
||||
VAorist Pl P3 => chetoh + "à";
|
||||
VAorist Pl P1 => chetoh + "ме";
|
||||
VAorist Pl P2 => chetoh + "те";
|
||||
VAorist Pl P3 => chetoh + "а";
|
||||
VImperfect Sg P1 => chetqh;
|
||||
VImperfect Sg _ => case chete of {
|
||||
rabot + "è" => rabot + "eøå";
|
||||
_ => chete + "øå"
|
||||
rabot + "и" => rabot + "eше";
|
||||
_ => chete + "ше"
|
||||
};
|
||||
VImperfect Pl P1 => chetqh + "ìå";
|
||||
VImperfect Pl P2 => chetqh + "òå";
|
||||
VImperfect Pl P3 => chetqh + "à";
|
||||
VImperfect Pl P1 => chetqh + "ме";
|
||||
VImperfect Pl P2 => chetqh + "те";
|
||||
VImperfect Pl P3 => chetqh + "а";
|
||||
VPerfect aform =>let chel1 : Str =
|
||||
case chel of {
|
||||
pas+"úë" => pas+"ë";
|
||||
pas+"ъл" => pas+"л";
|
||||
_ => chel
|
||||
} ;
|
||||
chel2 : Str =
|
||||
case chel of {
|
||||
w+"ëÿçúë" => w+"ëåçë";
|
||||
w+"лязъл" => w+"лезл";
|
||||
_ => chel
|
||||
}
|
||||
in (mkAdjective chel
|
||||
(chel2+"èÿ")
|
||||
(chel2+"èÿò")
|
||||
(chel2+"ия")
|
||||
(chel2+"ият")
|
||||
(chel1+"a")
|
||||
(chel1+"àòà")
|
||||
(chel1+"î")
|
||||
(chel1+"îòî")
|
||||
(ia2e chel1+"è")
|
||||
(ia2e chel1+"èòå")).s ! aform ;
|
||||
(chel1+"ата")
|
||||
(chel1+"о")
|
||||
(chel1+"ото")
|
||||
(ia2e chel1+"и")
|
||||
(ia2e chel1+"ите")).s ! aform ;
|
||||
VPluPerfect aform => regAdjective chetql ! aform ;
|
||||
VPassive aform => regAdjective cheten ! aform ;
|
||||
VPresPart aform => regAdjective chetqst ! aform ;
|
||||
VImperative Sg => cheti;
|
||||
VImperative Pl => case cheti of {
|
||||
chet + "è" => chet + "åòå";
|
||||
ela => ela + "òå"
|
||||
chet + "и" => chet + "ете";
|
||||
ela => ela + "те"
|
||||
};
|
||||
VNoun nform => let v0 = init chetene
|
||||
in (mkNoun (v0+"å")
|
||||
(v0+"èÿ")
|
||||
(v0+"èÿ")
|
||||
(v0+"å")
|
||||
in (mkNoun (v0+"е")
|
||||
(v0+"ия")
|
||||
(v0+"ия")
|
||||
(v0+"е")
|
||||
ANeut) ! nform;
|
||||
VGerund => case chete of {
|
||||
rabot + "è" => rabot + "åéêè";
|
||||
_ => chete + "éêè"
|
||||
rabot + "и" => rabot + "ейки";
|
||||
_ => chete + "йки"
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -172,51 +164,51 @@ oper
|
||||
table {
|
||||
NF Sg Indef => sg ;
|
||||
NF Sg Def => case sg of {
|
||||
_+"à"=>sg+"òà" ;
|
||||
_+"ÿ"=>sg+"òà" ;
|
||||
_+"î"=>sg+"òî" ;
|
||||
_+"ó"=>sg+"òî" ;
|
||||
_+"å"=>sg+"òî" ;
|
||||
_+"è"=>sg+"òî" ;
|
||||
s+"é"=>s +"ÿ" ;
|
||||
_+("úð")
|
||||
=>sg +"à" ;
|
||||
_+("òåë"|"àð"|"ÿð"|"äåí"
|
||||
|"ïúò"|"îãúí"|"ñúí"
|
||||
|"êîí"|"êðàë"|"öàð"
|
||||
|"çåò"|"ëàêúò"|"íîêúò")
|
||||
=>sg +"ÿ" ;
|
||||
_+"а"=>sg+"та" ;
|
||||
_+"я"=>sg+"та" ;
|
||||
_+"о"=>sg+"то" ;
|
||||
_+"у"=>sg+"то" ;
|
||||
_+"е"=>sg+"то" ;
|
||||
_+"и"=>sg+"то" ;
|
||||
s+"й"=>s +"я" ;
|
||||
_+("ър")
|
||||
=>sg +"а" ;
|
||||
_+("тел"|"ар"|"яр"|"ден"
|
||||
|"път"|"огън"|"сън"
|
||||
|"кон"|"крал"|"цар"
|
||||
|"зет"|"лакът"|"нокът")
|
||||
=>sg +"я" ;
|
||||
_ =>case g of {
|
||||
AFem => sg+"òà" ;
|
||||
_ => sg+"à"
|
||||
AFem => sg+"та" ;
|
||||
_ => sg+"а"
|
||||
}
|
||||
} ;
|
||||
NF Pl Indef => pl ;
|
||||
NF Pl Def => case pl of {
|
||||
_+"à"=>pl+"òà" ;
|
||||
_+"å"=>pl+"òå" ;
|
||||
_+"è"=>pl+"òå" ;
|
||||
_+"ÿ"=>pl+"òà" ;
|
||||
_ =>pl+"òå"
|
||||
_+"а"=>pl+"та" ;
|
||||
_+"е"=>pl+"те" ;
|
||||
_+"и"=>pl+"те" ;
|
||||
_+"я"=>pl+"та" ;
|
||||
_ =>pl+"те"
|
||||
} ;
|
||||
NFSgDefNom => case sg of {
|
||||
_+"à"=>sg+"òà" ;
|
||||
_+"ÿ"=>sg+"òà" ;
|
||||
_+"î"=>sg+"òî" ;
|
||||
_+"ó"=>sg+"òî" ;
|
||||
_+"å"=>sg+"òî" ;
|
||||
_+"è"=>sg+"òî" ;
|
||||
s+"é"=>s +"ÿò" ;
|
||||
_+("úð")
|
||||
=>sg +"úò" ;
|
||||
_+("òåë"|"àð"|"ÿð"|"äåí"
|
||||
|"ïúò"|"îãúí"|"ñúí"
|
||||
|"êîí"|"êðàë"|"öàð"
|
||||
|"çåò"|"ëàêúò"|"íîêúò")
|
||||
=>sg+"ÿò" ;
|
||||
_+"а"=>sg+"та" ;
|
||||
_+"я"=>sg+"та" ;
|
||||
_+"о"=>sg+"то" ;
|
||||
_+"у"=>sg+"то" ;
|
||||
_+"е"=>sg+"то" ;
|
||||
_+"и"=>sg+"то" ;
|
||||
s+"й"=>s +"ят" ;
|
||||
_+("ър")
|
||||
=>sg +"ът" ;
|
||||
_+("тел"|"ар"|"яр"|"ден"
|
||||
|"път"|"огън"|"сън"
|
||||
|"кон"|"крал"|"цар"
|
||||
|"зет"|"лакът"|"нокът")
|
||||
=>sg+"ят" ;
|
||||
_ =>case g of {
|
||||
AFem => sg+"òà" ;
|
||||
_ => sg+"úò"
|
||||
AFem => sg+"та" ;
|
||||
_ => sg+"ът"
|
||||
}
|
||||
} ;
|
||||
NFPlCount => count ;
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
--# -path=.:../abstract:../../prelude:../common
|
||||
|
||||
resource MorphoFunsBul = open
|
||||
Prelude,
|
||||
CatBul,
|
||||
MorphoBul
|
||||
in {
|
||||
flags coding=cp1251 ;
|
||||
in {
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
oper
|
||||
@@ -57,12 +57,6 @@ oper
|
||||
dualV : VTable -> VTable -> V ;
|
||||
dualV imperf perf = {
|
||||
s = table {Imperf=>imperf; Perf=>perf};
|
||||
n = let v0 = init (imperf ! (VImperfect Sg P1)) + "í"
|
||||
in (mkNoun (v0+"å")
|
||||
(v0+"èÿ")
|
||||
(v0+"èÿ")
|
||||
(v0+"å")
|
||||
ANeut).s;
|
||||
vtype = VNormal;
|
||||
lock_V=<>
|
||||
} ;
|
||||
@@ -72,12 +66,6 @@ oper
|
||||
singleV : VTable -> V ;
|
||||
singleV vtable = {
|
||||
s = \\_=>vtable;
|
||||
n = let v0 = init (vtable ! (VImperfect Sg P1)) + "í"
|
||||
in (mkNoun (v0+"å")
|
||||
(v0+"èÿ")
|
||||
(v0+"èÿ")
|
||||
(v0+"å")
|
||||
ANeut).s;
|
||||
vtype = VNormal;
|
||||
lock_V=<>
|
||||
} ;
|
||||
@@ -278,13 +266,35 @@ oper
|
||||
|
||||
--2 Proper Names
|
||||
--
|
||||
mkPN : Str -> Gender -> PN ;
|
||||
mkPN s g = {s = s; g = g ; lock_PN = <>} ;
|
||||
|
||||
masculine : Gender = Masc ;
|
||||
feminine : Gender = Fem ;
|
||||
neutr : Gender = Neut ;
|
||||
|
||||
male : Sex = Male ;
|
||||
female : Sex = Female ;
|
||||
|
||||
mkGN : Str -> Sex -> GN =
|
||||
\s,g -> lin GN {s = s; g = g} ;
|
||||
mkSN = overload {
|
||||
mkSN : Str -> SN =
|
||||
\s -> lin SN {s = \\_ => s; pl = s} ;
|
||||
mkSN : Str -> Str -> Str -> SN =
|
||||
\m,f,pl -> lin SN {s = table Sex [m; f]; pl = pl} ;
|
||||
} ;
|
||||
|
||||
mkPN = overload {
|
||||
mkPN : Str -> PN = \s -> {s = s; gn = GSg Masc ; lock_PN = <>} ;
|
||||
mkPN : Str -> Gender -> PN =
|
||||
\s,g -> {s = s; gn = GSg g ; lock_PN = <>} ;
|
||||
mkPN : Str -> GenNum -> PN =
|
||||
\s,gn -> {s = s; gn = gn ; lock_PN = <>} ;
|
||||
} ;
|
||||
|
||||
|
||||
--2 IAdv
|
||||
--
|
||||
|
||||
mkIAdv : Str -> IAdv ;
|
||||
mkIAdv s = {s = table {QDir=>s;QIndir=>s+"òî"}; lock_IAdv = <>} ;
|
||||
mkIAdv s = {s = table {QDir=>s;QIndir=>s+"то"}; lock_IAdv = <>} ;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
|
||||
flags optimize=all_subs ; coding=cp1251 ;
|
||||
flags optimize=all_subs ; coding=utf8 ;
|
||||
|
||||
lin
|
||||
DetCN det cn =
|
||||
@@ -42,7 +42,7 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
|
||||
RObj c => linCase c Pos ++ pn.s;
|
||||
_ => pn.s
|
||||
} ;
|
||||
gn = GSg pn.g ;
|
||||
gn = pn.gn ;
|
||||
p = NounP3 Pos
|
||||
} ;
|
||||
UsePron p = p ;
|
||||
@@ -123,17 +123,17 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
|
||||
|
||||
AdNum adn num = {s = \\gspec => adn.s ++ num.s ! gspec; nn = num.nn} ;
|
||||
|
||||
OrdSuperl a = {s = \\aform => "íàé" ++ hyphen ++ a.s ! aform} ;
|
||||
OrdSuperl a = {s = \\aform => "най" ++ hyphen ++ a.s ! aform} ;
|
||||
|
||||
DefArt = {
|
||||
s = table {
|
||||
True => \\_ => [] ;
|
||||
False => table {
|
||||
ASg Masc _ => "òîé" ;
|
||||
ASgMascDefNom => "òîé" ;
|
||||
ASg Fem _ => "òÿ" ;
|
||||
ASg Neut _ => "òî" ;
|
||||
APl _ => "òå"
|
||||
ASg Masc _ => "той" ;
|
||||
ASgMascDefNom => "той" ;
|
||||
ASg Fem _ => "тя" ;
|
||||
ASg Neut _ => "то" ;
|
||||
APl _ => "те"
|
||||
}
|
||||
} ;
|
||||
nonEmpty = False ;
|
||||
@@ -145,11 +145,11 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
|
||||
s = table {
|
||||
True => \\_ => [] ;
|
||||
False => table {
|
||||
ASg Masc _ => "åäèí" ;
|
||||
ASgMascDefNom => "åäèí" ;
|
||||
ASg Fem _ => "åäíà" ;
|
||||
ASg Neut _ => "åäíî" ;
|
||||
APl _ => "åäíè"
|
||||
ASg Masc _ => "един" ;
|
||||
ASgMascDefNom => "един" ;
|
||||
ASg Fem _ => "една" ;
|
||||
ASg Neut _ => "едно" ;
|
||||
APl _ => "едни"
|
||||
}
|
||||
} ;
|
||||
nonEmpty = False ;
|
||||
@@ -197,9 +197,9 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
|
||||
|
||||
ApposCN cn np = {s = \\nf => cn.s ! nf ++ np.s ! RSubj; g=cn.g} ;
|
||||
|
||||
PossNP cn np = {s = \\nf => cn.s ! nf ++ "íà" ++ np.s ! (RObj CPrep); g = cn.g} ;
|
||||
PossNP cn np = {s = \\nf => cn.s ! nf ++ "на" ++ np.s ! (RObj CPrep); g = cn.g} ;
|
||||
|
||||
PartNP cn np = {s = \\nf => cn.s ! nf ++ "îò" ++ np.s ! (RObj CPrep); g = cn.g} ;
|
||||
PartNP cn np = {s = \\nf => cn.s ! nf ++ "от" ++ np.s ! (RObj CPrep); g = cn.g} ;
|
||||
|
||||
CountNP det np = {
|
||||
s = \\role => let g = case np.gn of { -- this is lossy
|
||||
|
||||
@@ -1,91 +1,147 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete NumeralBul of Numeral = CatBul [Numeral,Digits] ** open Prelude, ResBul in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
lincat
|
||||
Digit = {s : DForm => CardOrd => Str} ;
|
||||
Sub10 = {s : DForm => CardOrd => Str; n : Number} ;
|
||||
Sub100 = {s : CardOrd => NumF => Str; n : Number; i : Bool} ;
|
||||
Sub1000 = {s : CardOrd => NumF => Str; n : Number; i : Bool} ;
|
||||
Sub1000000 = {s : CardOrd => NumF => Str; n : Number} ;
|
||||
Digit = {s : DForm => CardOrd => Str} ;
|
||||
Sub10 = {s : DForm => CardOrd => Str; n : Number} ;
|
||||
Sub100 = {s : CardOrd => NumF => Str; n : Number; i : Bool} ;
|
||||
Sub1000 = {s : CardOrd => NumF => Str; n : Number; i : Bool} ;
|
||||
Sub1000000 = {s : CardOrd => NumF => Str; n : Number} ;
|
||||
Sub1000000000 = {s : CardOrd => NumF => Str; n : Number} ;
|
||||
Sub1000000000000 = {s : CardOrd => NumF => Str; n : Number} ;
|
||||
|
||||
lin num x = {s = \\c => x.s ! c ! Formal; n=x.n} ;
|
||||
lin n2 = mkDigit "äâà" "äâàìà" "äâå" "âòîðè" "äâàéñåò" "äâåñòà" "äâåñòàòà" ;
|
||||
lin n3 = mkDigit "òðè" "òðèìà" "òðè" "òðåòè" "òðèéñåò" "òðèñòà" "òðèñòàòà" ;
|
||||
lin n4 = mkDigit "÷åòèðè" "÷åòèðèìà" "÷åòèðè" "÷åòâúðòè" "÷åòèðèéñåò" "÷åòèðèñòîòèí" "÷åòèðèñòîòèíòå" ;
|
||||
lin n5 = mkDigit "ïåò" "ïåòèìà" "ïåò" "ïåòè" "ïåòäåñåò" "ïåòñòîòèí" "ïåòñòîòèíòå" ;
|
||||
lin n6 = mkDigit "øåñò" "øåñòèìà" "øåñò" "øåñòè" "øåéñåò" "øåñòñòîòèí" "øåñòñòîòèíòå" ;
|
||||
lin n7 = mkDigit "ñåäåì" "ñåäìèíà" "ñåäåì" "ñåäìè" "ñåäåìäåñåò" "ñåäåìñòîòèí" "ñåäåìñòîòèíòå" ;
|
||||
lin n8 = mkDigit "îñåì" "îñìèíà" "îñåì" "îñìè" "îñåìäåñåò" "îñåìñòîòèí" "îñåìñòîòèíòå" ;
|
||||
lin n9 = mkDigit "äåâåò" "äåâåòèìà" "äåâåò" "äåâåòè" "äåâåòäåñåò" "äåâåòñòîòèí" "äåâåòñòîòèíòå" ;
|
||||
lin n2 = mkDigit "два" "двама" "две" "втори" "двайсет" "двеста" "двестата" ;
|
||||
lin n3 = mkDigit "три" "трима" "три" "трети" "трийсет" "триста" "тристата" ;
|
||||
lin n4 = mkDigit "четири" "четирима" "четири" "четвърти" "четирийсет" "четиристотин" "четиристотинте" ;
|
||||
lin n5 = mkDigit "пет" "петима" "пет" "пети" "петдесет" "петстотин" "петстотинте" ;
|
||||
lin n6 = mkDigit "шест" "шестима" "шест" "шести" "шейсет" "шестстотин" "шестстотинте" ;
|
||||
lin n7 = mkDigit "седем" "седмина" "седем" "седми" "седемдесет" "седемстотин" "седемстотинте" ;
|
||||
lin n8 = mkDigit "осем" "осмина" "осем" "осми" "осемдесет" "осемстотин" "осемстотинте" ;
|
||||
lin n9 = mkDigit "девет" "деветима" "девет" "девети" "деветдесет" "деветстотин" "деветстотинте" ;
|
||||
|
||||
lin pot01 =
|
||||
{s = table {
|
||||
unit => table {
|
||||
NCard (CFMasc Indef _) => "åäèí" ;
|
||||
NCard (CFMasc Def _) => "åäèíèÿ" ;
|
||||
NCard (CFMascDefNom _) => "åäèíèÿò" ;
|
||||
NCard (CFFem Indef) => "åäíà" ;
|
||||
NCard (CFFem Def) => "åäíàòà" ;
|
||||
NCard (CFNeut Indef) => "åäíî" ;
|
||||
NCard (CFNeut Def) => "åäíîòî" ;
|
||||
NCard (CFMasc Indef _) => "един" ;
|
||||
NCard (CFMasc Def _) => "единия" ;
|
||||
NCard (CFMascDefNom _) => "единият" ;
|
||||
NCard (CFFem Indef) => "една" ;
|
||||
NCard (CFFem Def) => "едната" ;
|
||||
NCard (CFNeut Indef) => "едно" ;
|
||||
NCard (CFNeut Def) => "едното" ;
|
||||
NOrd aform => case aform of {
|
||||
ASg Masc Indef => "ïúðâè" ;
|
||||
ASg Masc Def => "ïúðâèÿ" ;
|
||||
ASgMascDefNom => "ïúðâèÿò" ;
|
||||
ASg Fem Indef => "ïúðâà" ;
|
||||
ASg Fem Def => "ïúðâàòà" ;
|
||||
ASg Neut Indef => "ïúðâî" ;
|
||||
ASg Neut Def => "ïúðâîòî" ;
|
||||
APl Indef => "ïúðâè" ;
|
||||
APl Def => "ïúðâèòå"
|
||||
ASg Masc Indef => "първи" ;
|
||||
ASg Masc Def => "първия" ;
|
||||
ASgMascDefNom => "първият" ;
|
||||
ASg Fem Indef => "първа" ;
|
||||
ASg Fem Def => "първата" ;
|
||||
ASg Neut Indef => "първо" ;
|
||||
ASg Neut Def => "първото" ;
|
||||
APl Indef => "първи" ;
|
||||
APl Def => "първите"
|
||||
}
|
||||
} ;
|
||||
teen nf => case nf of {
|
||||
Formal => mkCardOrd "åäèíàäåñåò" "åäèíàäåñåòèìà" "åäèíàäåñåò" "åäèíàäåñåòè" ;
|
||||
Informal => mkCardOrd "åäèíàéñåò" "åäèíàéñåò" "åäèíàéñåò" "åäèíàéñòè"
|
||||
Formal => mkCardOrd "единадесет" "единадесетима" "единадесет" "единадесети" ;
|
||||
Informal => mkCardOrd "единайсет" "единайсет" "единайсет" "единайсти"
|
||||
} ;
|
||||
ten nf => mkCardOrd "äåñåò" "äåñåòèìà" "äåñåò" "äåñåòè" ;
|
||||
hundred => mkCardOrd100 "ñòî" "ñòîòå" "ñòîòåí"
|
||||
ten nf => mkCardOrd "десет" "десетима" "десет" "десети" ;
|
||||
hundred => mkCardOrd100 "сто" "стоте" "стотен"
|
||||
}
|
||||
;n = Sg
|
||||
} ;
|
||||
lin pot0 d = d ** {n = Pl} ;
|
||||
lin pot0as1 n = {s = \\c,nf => n.s ! unit ! c; n = n.n; i = True} ;
|
||||
|
||||
lin pot110 = {s=\\c,nf => pot01.s ! ten nf ! c; n = Pl; i = True} ;
|
||||
lin pot111 = {s=\\c,nf => pot01.s ! teen nf ! c; n = Pl; i = True} ;
|
||||
lin pot1to19 d = {s = \\c,nf => d.s ! teen nf ! c; n = Pl; i = True} ;
|
||||
lin pot0as1 n = {s = \\c,nf => n.s ! unit ! c; n = n.n; i = True} ;
|
||||
lin pot1 d = {s = \\c,nf => d.s ! ten nf ! c; n = Pl; i = True} ;
|
||||
lin pot1plus d e = {
|
||||
s = \\c,nf => d.s ! ten nf ! NCard (CFMasc Indef NonHuman) ++ "è" ++ e.s ! unit ! c ; n = Pl; i = False} ;
|
||||
|
||||
s = \\c,nf => d.s ! ten nf ! NCard (CFMasc Indef NonHuman) ++ "и" ++ e.s ! unit ! c ; n = Pl; i = False} ;
|
||||
lin pot1as2 n = n ;
|
||||
|
||||
lin pot21 = {
|
||||
s = \\o,_ => mkCardOrd100 "сто" "стоте" "стотен" ! o ;
|
||||
i = False ;
|
||||
n = Pl
|
||||
} ;
|
||||
lin pot2 n = {s = \\c,nf => n.s ! hundred ! c; n = Pl; i = True} ;
|
||||
lin pot2plus d e = {
|
||||
s = \\c,nf => d.s ! hundred ! NCard (CFMasc Indef NonHuman) ++ case e.i of {False => []; True => "è"} ++ e.s ! c ! nf ;
|
||||
s = \\c,nf => d.s ! hundred ! NCard (CFMasc Indef NonHuman) ++ case e.i of {False => []; True => "и"} ++ e.s ! c ! nf ;
|
||||
n = Pl ;
|
||||
i = False
|
||||
} ;
|
||||
|
||||
lin pot2as3 n = n ;
|
||||
|
||||
lin pot31 = {
|
||||
s = \\o,_ => mkCardOrd100 "хиляда" "хилядата" "хиляден" ! o ;
|
||||
n = Pl
|
||||
} ;
|
||||
lin pot3 n = {
|
||||
s = \\c,nf => case n.n of {
|
||||
Sg => mkCardOrd100 "õèëÿäà" "õèëÿäàòà" "õèëÿäåí" ! c ;
|
||||
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "õèëÿäè" "õèëÿäèòå" "õèëÿäåí" ! c
|
||||
Sg => mkCardOrd100 "хиляда" "хилядата" "хиляден" ! c ;
|
||||
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "хиляди" "хилядите" "хиляден" ! c
|
||||
} ;
|
||||
n = Pl
|
||||
} ;
|
||||
lin pot3plus n m = {
|
||||
s = \\c,nf => case n.n of {
|
||||
Sg => mkCardOrd100 "õèëÿäà" "õèëÿäàòà" "õèëÿäåí" ! NCard (CFMasc Indef NonHuman) ;
|
||||
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "õèëÿäè" "õèëÿäèòå" "õèëÿäåí" ! NCard (CFMasc Indef NonHuman)
|
||||
Sg => mkCardOrd100 "хиляда" "хилядата" "хиляден" ! NCard (CFMasc Indef NonHuman) ;
|
||||
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "хиляди" "хилядите" "хиляден" ! NCard (CFMasc Indef NonHuman)
|
||||
}
|
||||
++ case m.i of {False => []; True => "è"} ++ m.s ! c ! nf ;
|
||||
++ case m.i of {False => []; True => "и"} ++ m.s ! c ! nf ;
|
||||
n = Pl
|
||||
} ;
|
||||
lin pot3as4 n = n ;
|
||||
lin pot3float f = {
|
||||
s = \\c,nf => f.s ++ mkCardOrd100 "хиляди" "хилядите" "хиляден" ! c ;
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
lin pot41 = {
|
||||
s = \\o,_ => mkCardOrd100 "милион" "милионите" "милионен" ! o ;
|
||||
n = Pl
|
||||
} ;
|
||||
lin pot4 n = {
|
||||
s = \\c,nf => case n.n of {
|
||||
Sg => mkCardOrd100 "милион" "милионите" "милионен" ! c ;
|
||||
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "милиони" "милионите" "милионен" ! c
|
||||
} ;
|
||||
n = Pl
|
||||
} ;
|
||||
lin pot4plus n1 n2 = {
|
||||
s = \\o,f => (pot4 n1).s ! o ! f ++ "и" ++ n2.s ! o ! f;
|
||||
n = Pl
|
||||
} ;
|
||||
lin pot4as5 n = n ;
|
||||
lin pot4float f = {
|
||||
s = \\c,nf => f.s ++ mkCardOrd100 "милиона" "милиона" "милионен" ! c ;
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
lin pot51 = {
|
||||
s = \\o,_ => mkCardOrd100 "милиярд" "милиярдите" "милиярден" ! o ;
|
||||
n = Pl
|
||||
} ;
|
||||
lin pot5 n = {
|
||||
s = \\c,nf => case n.n of {
|
||||
Sg => mkCardOrd100 "милиярд" "милиярдите" "милиярден" ! c ;
|
||||
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "милиярд" "милиярдите" "милиярден" ! c
|
||||
} ;
|
||||
n = Pl
|
||||
} ;
|
||||
lin pot5plus n1 n2 = {
|
||||
s = \\o,f => (pot5 n1).s ! o ! f ++ "и" ++ n2.s ! o ! f;
|
||||
n = Pl
|
||||
} ;
|
||||
lin pot5float f = {
|
||||
s = \\c,nf => f.s ++ mkCardOrd100 "милиярда" "милиярда" "милиярден" ! c ;
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
-- numerals as sequences of digits
|
||||
|
||||
@@ -101,16 +157,16 @@ lin pot3plus n m = {
|
||||
tail = inc i.tail
|
||||
} ;
|
||||
|
||||
D_0 = mk3Dig "0" "0" "0åâ" Pl ;
|
||||
D_1 = mk3Dig "1" "1" "1âè" Sg ;
|
||||
D_2 = mk2Dig "2" "2ðè" ;
|
||||
D_0 = mk3Dig "0" "0" "0ев" Pl ;
|
||||
D_1 = mk3Dig "1" "1" "1ви" Sg ;
|
||||
D_2 = mk2Dig "2" "2ри" ;
|
||||
D_3 = mkDig "3" ;
|
||||
D_4 = mkDig "4" ;
|
||||
D_5 = mkDig "5" ;
|
||||
D_6 = mkDig "6" ;
|
||||
D_7 = mk3Dig "7" "7íà" "7ìè" Pl ;
|
||||
D_8 = mk3Dig "8" "8íà" "8ìè" Pl ;
|
||||
D_9 = mk3Dig "9" "9èìà" "9òè" Pl ;
|
||||
D_7 = mk3Dig "7" "7на" "7ми" Pl ;
|
||||
D_8 = mk3Dig "8" "8на" "8ми" Pl ;
|
||||
D_9 = mk3Dig "9" "9има" "9ти" Pl ;
|
||||
|
||||
oper
|
||||
spaceIf : DTail -> Str = \t -> case t of {
|
||||
@@ -124,8 +180,8 @@ lin pot3plus n m = {
|
||||
T3 => T1
|
||||
} ;
|
||||
|
||||
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c (c+"ìà") o Pl ;
|
||||
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "òè") ;
|
||||
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c (c+"ма") o Pl ;
|
||||
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "ти") ;
|
||||
|
||||
mk3Dig : Str -> Str -> Str -> Number -> TDigit = \c1,c2,o,n -> {
|
||||
s = mkCardOrd c1 c2 c1 o ;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete PhraseBul of Phrase = CatBul ** open Prelude, ResBul in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
lin
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
flags optimize=all_subs ;
|
||||
@@ -12,7 +12,7 @@ concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in {
|
||||
let cls = cl.s ! t ! a ! p
|
||||
in table {
|
||||
QDir => cls ! Quest ;
|
||||
QIndir => "àêî" ++ cls ! Main
|
||||
QIndir => "ако" ++ cls ! Main
|
||||
} ---- "whether" in ExtEng
|
||||
} ;
|
||||
|
||||
@@ -22,7 +22,7 @@ concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in {
|
||||
} ;
|
||||
|
||||
QuestSlash ip slash =
|
||||
mkQuestion {s = \\qform => slash.c2.s ++ case slash.c2.c of {Dat=>"íà";_=>[]} ++ ip.s ! (RObj slash.c2.c) ! qform}
|
||||
mkQuestion {s = \\qform => slash.c2.s ++ case slash.c2.c of {Dat=>"на";_=>[]} ++ ip.s ! (RObj slash.c2.c) ! qform}
|
||||
{s = slash.s ! (agrP3 ip.gn) } ;
|
||||
|
||||
QuestIAdv iadv cl = mkQuestion iadv cl ;
|
||||
@@ -30,7 +30,7 @@ concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in {
|
||||
QuestIComp icomp np =
|
||||
mkQuestion icomp (mkClause (np.s ! RSubj) np.gn np.p (predV verbBe)) ;
|
||||
|
||||
PrepIP p ip = {s = \\qform => p.s ++ case p.c of {Dat=>"íà";_=>[]} ++ ip.s ! RSubj ! qform} ;
|
||||
PrepIP p ip = {s = \\qform => p.s ++ case p.c of {Dat=>"на";_=>[]} ++ ip.s ! RSubj ! qform} ;
|
||||
|
||||
AdvIP ip adv = {
|
||||
s = \\role,qform => ip.s ! role ! qform ++ adv.s ;
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete RelativeBul of Relative = CatBul ** open ResBul in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
RelCl cl = {
|
||||
s = \\t,a,p,agr => suchRP ! agr.gn ++ "֌" ++ cl.s ! t ! a ! p ! Main
|
||||
s = \\t,a,p,agr => suchRP ! agr.gn ++ "че" ++ cl.s ! t ! a ! p ! Main
|
||||
} ;
|
||||
|
||||
RelVP rp vp = {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
--# -path=.:../abstract:../common:../../prelude
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
|
||||
--1 Bulgarian auxiliary operations.
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
resource ResBul = ParamX ** open Prelude, Predef in {
|
||||
|
||||
flags
|
||||
coding=cp1251 ; optimize=all ;
|
||||
coding=utf8 ; optimize=all ;
|
||||
|
||||
|
||||
-- Some parameters, such as $Number$, are inherited from $ParamX$.
|
||||
@@ -47,7 +47,8 @@ resource ResBul = ParamX ** open Prelude, Predef in {
|
||||
|
||||
param
|
||||
Gender = Masc | Fem | Neut ;
|
||||
|
||||
Sex = Male | Female ;
|
||||
|
||||
Species = Indef | Def ;
|
||||
|
||||
-- The plural never makes a gender distinction.
|
||||
@@ -328,149 +329,149 @@ resource ResBul = ParamX ** open Prelude, Predef in {
|
||||
|
||||
auxBe : VTable =
|
||||
table {
|
||||
VPres Sg P1 => "ñúì" ;
|
||||
VPres Sg P2 => "ñè" ;
|
||||
VPres Sg P3 => "å" ;
|
||||
VPres Pl P1 => "ñìå" ;
|
||||
VPres Pl P2 => "ñòå" ;
|
||||
VPres Pl P3 => "ñà" ;
|
||||
VAorist Sg P1 => "áÿõ" ;
|
||||
VAorist Sg _ => "áåøå" ;
|
||||
VAorist Pl P1 => "áÿõìå" ;
|
||||
VAorist Pl P2 => "áÿõòå" ;
|
||||
VAorist Pl P3 => "áÿõà" ;
|
||||
VImperfect Sg P1 => "áÿõ" ;
|
||||
VImperfect Sg _ => "áåøå" ;
|
||||
VImperfect Pl P1 => "áÿõìå" ;
|
||||
VImperfect Pl P2 => "áÿõòå" ;
|
||||
VImperfect Pl P3 => "áÿõà" ;
|
||||
VPerfect aform => regAdjective "áèë" ! aform ;
|
||||
VPluPerfect aform => regAdjective "áèë" ! aform ;
|
||||
VPassive aform => regAdjective "áúäåí" ! aform ;
|
||||
VPresPart aform => regAdjective "áúäåù" ! aform ;
|
||||
VImperative Sg => "áúäè" ;
|
||||
VImperative Pl => "áúäåòå" ;
|
||||
VNoun _ => "áúäåíå";
|
||||
VGerund => "áèäåéêè"
|
||||
VPres Sg P1 => "съм" ;
|
||||
VPres Sg P2 => "си" ;
|
||||
VPres Sg P3 => "е" ;
|
||||
VPres Pl P1 => "сме" ;
|
||||
VPres Pl P2 => "сте" ;
|
||||
VPres Pl P3 => "са" ;
|
||||
VAorist Sg P1 => "бях" ;
|
||||
VAorist Sg _ => "беше" ;
|
||||
VAorist Pl P1 => "бяхме" ;
|
||||
VAorist Pl P2 => "бяхте" ;
|
||||
VAorist Pl P3 => "бяха" ;
|
||||
VImperfect Sg P1 => "бях" ;
|
||||
VImperfect Sg _ => "беше" ;
|
||||
VImperfect Pl P1 => "бяхме" ;
|
||||
VImperfect Pl P2 => "бяхте" ;
|
||||
VImperfect Pl P3 => "бяха" ;
|
||||
VPerfect aform => regAdjective "бил" ! aform ;
|
||||
VPluPerfect aform => regAdjective "бил" ! aform ;
|
||||
VPassive aform => regAdjective "бъден" ! aform ;
|
||||
VPresPart aform => regAdjective "бъдещ" ! aform ;
|
||||
VImperative Sg => "бъди" ;
|
||||
VImperative Pl => "бъдете" ;
|
||||
VNoun _ => "бъдене";
|
||||
VGerund => "бидейки"
|
||||
} ;
|
||||
|
||||
auxWould : VTable =
|
||||
table {
|
||||
VPres Sg P1 => "áúäà" ;
|
||||
VPres Sg P2 => "áúäåø" ;
|
||||
VPres Sg P3 => "áúäå" ;
|
||||
VPres Pl P1 => "áúäåì" ;
|
||||
VPres Pl P2 => "áúäåòå" ;
|
||||
VPres Pl P3 => "áúäàò" ;
|
||||
VAorist Sg P1 => "áÿõ" ;
|
||||
VAorist Sg _ => "áåøå" ;
|
||||
VAorist Pl P1 => "áÿõìå" ;
|
||||
VAorist Pl P2 => "áÿõòå" ;
|
||||
VAorist Pl P3 => "áÿõà" ;
|
||||
VImperfect Sg P1 => "áúäåõ" ;
|
||||
VImperfect Sg _ => "áúäåøå" ;
|
||||
VImperfect Pl P1 => "áúäåõìå" ;
|
||||
VImperfect Pl P2 => "áúäåõòå" ;
|
||||
VImperfect Pl P3 => "áúäåõà" ;
|
||||
VPerfect aform => regAdjective "áèë" ! aform ;
|
||||
VPluPerfect aform => regAdjective "áúäåë" ! aform ;
|
||||
VPassive aform => regAdjective "áúäåí" ! aform ;
|
||||
VPresPart aform => regAdjective "áúäåù" ! aform ;
|
||||
VImperative Sg => "áúäè" ;
|
||||
VImperative Pl => "áúäåòå" ;
|
||||
VNoun _ => "áúäåíå";
|
||||
VGerund => "áúäåéêè"
|
||||
VPres Sg P1 => "бъда" ;
|
||||
VPres Sg P2 => "бъдеш" ;
|
||||
VPres Sg P3 => "бъде" ;
|
||||
VPres Pl P1 => "бъдем" ;
|
||||
VPres Pl P2 => "бъдете" ;
|
||||
VPres Pl P3 => "бъдат" ;
|
||||
VAorist Sg P1 => "бях" ;
|
||||
VAorist Sg _ => "беше" ;
|
||||
VAorist Pl P1 => "бяхме" ;
|
||||
VAorist Pl P2 => "бяхте" ;
|
||||
VAorist Pl P3 => "бяха" ;
|
||||
VImperfect Sg P1 => "бъдех" ;
|
||||
VImperfect Sg _ => "бъдеше" ;
|
||||
VImperfect Pl P1 => "бъдехме" ;
|
||||
VImperfect Pl P2 => "бъдехте" ;
|
||||
VImperfect Pl P3 => "бъдеха" ;
|
||||
VPerfect aform => regAdjective "бил" ! aform ;
|
||||
VPluPerfect aform => regAdjective "бъдел" ! aform ;
|
||||
VPassive aform => regAdjective "бъден" ! aform ;
|
||||
VPresPart aform => regAdjective "бъдещ" ! aform ;
|
||||
VImperative Sg => "бъди" ;
|
||||
VImperative Pl => "бъдете" ;
|
||||
VNoun _ => "бъдене";
|
||||
VGerund => "бъдейки"
|
||||
} ;
|
||||
|
||||
auxCond : Number => Person => Str =
|
||||
table {
|
||||
Sg => table {
|
||||
P1 => "áèõ" ;
|
||||
_ => "áè"
|
||||
P1 => "бих" ;
|
||||
_ => "би"
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => "áèõìå" ;
|
||||
P2 => "áèõòå" ;
|
||||
P3 => "áèõà"
|
||||
P1 => "бихме" ;
|
||||
P2 => "бихте" ;
|
||||
P3 => "биха"
|
||||
}
|
||||
} ;
|
||||
|
||||
verbBe : Verb = {s=table Aspect [auxBe; auxWould] ; vtype=VNormal} ;
|
||||
|
||||
reflClitics : Case => Str = table {Acc => "ñå"; Dat => "ñè"; WithPrep => with_Word ++ "ñåáå ñè"; CPrep => "ñåáå ñè"} ;
|
||||
reflClitics : Case => Str = table {Acc => "се"; Dat => "си"; WithPrep => with_Word ++ "себе си"; CPrep => "себе си"} ;
|
||||
|
||||
personalClitics : Agr -> Case => Str = \agr ->
|
||||
table {
|
||||
Acc => case agr.gn of {
|
||||
GSg g => case agr.p of {
|
||||
P1 => "ìå" ;
|
||||
P2 => "òå" ;
|
||||
P1 => "ме" ;
|
||||
P2 => "те" ;
|
||||
P3 => case g of {
|
||||
Masc => "ãî" ;
|
||||
Fem => "ÿ" ;
|
||||
Neut => "ãî"
|
||||
Masc => "го" ;
|
||||
Fem => "я" ;
|
||||
Neut => "го"
|
||||
}
|
||||
} ;
|
||||
GPl => case agr.p of {
|
||||
P1 => "íè" ;
|
||||
P2 => "âè" ;
|
||||
P3 => "ãè"
|
||||
P1 => "ни" ;
|
||||
P2 => "ви" ;
|
||||
P3 => "ги"
|
||||
}
|
||||
} ;
|
||||
Dat => case agr.gn of {
|
||||
GSg g => case agr.p of {
|
||||
P1 => "ìè" ;
|
||||
P2 => "òè" ;
|
||||
P1 => "ми" ;
|
||||
P2 => "ти" ;
|
||||
P3 => case g of {
|
||||
Masc => "ìó" ;
|
||||
Fem => "é" ;
|
||||
Neut => "ìó"
|
||||
Masc => "му" ;
|
||||
Fem => "й" ;
|
||||
Neut => "му"
|
||||
}
|
||||
} ;
|
||||
GPl => case agr.p of {
|
||||
P1 => "íè" ;
|
||||
P2 => "âè" ;
|
||||
P3 => "èì"
|
||||
P1 => "ни" ;
|
||||
P2 => "ви" ;
|
||||
P3 => "им"
|
||||
}
|
||||
} ;
|
||||
WithPrep => case agr.gn of {
|
||||
GSg g => case agr.p of {
|
||||
P1 => with_Word ++ "ìåí" ;
|
||||
P2 => with_Word ++ "òåá" ;
|
||||
P1 => with_Word ++ "мен" ;
|
||||
P2 => with_Word ++ "теб" ;
|
||||
P3 => case g of {
|
||||
Masc => with_Word ++ "íåãî" ;
|
||||
Fem => with_Word ++ "íåÿ" ;
|
||||
Neut => with_Word ++ "íåãî"
|
||||
Masc => with_Word ++ "него" ;
|
||||
Fem => with_Word ++ "нея" ;
|
||||
Neut => with_Word ++ "него"
|
||||
}
|
||||
} ;
|
||||
GPl => case agr.p of {
|
||||
P1 => with_Word ++ "íàñ" ;
|
||||
P2 => with_Word ++ "âàñ" ;
|
||||
P3 => with_Word ++ "òÿõ"
|
||||
P1 => with_Word ++ "нас" ;
|
||||
P2 => with_Word ++ "вас" ;
|
||||
P3 => with_Word ++ "тях"
|
||||
}
|
||||
} ;
|
||||
CPrep => case agr.gn of {
|
||||
GSg g => case agr.p of {
|
||||
P1 => "ìåí" ;
|
||||
P2 => "òåá" ;
|
||||
P1 => "мен" ;
|
||||
P2 => "теб" ;
|
||||
P3 => case g of {
|
||||
Masc => "íåãî" ;
|
||||
Fem => "íåÿ" ;
|
||||
Neut => "íåãî"
|
||||
Masc => "него" ;
|
||||
Fem => "нея" ;
|
||||
Neut => "него"
|
||||
}
|
||||
} ;
|
||||
GPl => case agr.p of {
|
||||
P1 => "íàñ" ;
|
||||
P2 => "âàñ" ;
|
||||
P3 => "òÿõ"
|
||||
P1 => "нас" ;
|
||||
P2 => "вас" ;
|
||||
P3 => "тях"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
ia2e : Str -> Str = -- to be used when the next syllable has vowel different from "à","ú","î" or "ó"
|
||||
ia2e : Str -> Str = -- to be used when the next syllable has vowel different from "а","ъ","о" or "у"
|
||||
\s -> case s of {
|
||||
x@(_*+_) + "ÿ" + y@(("á"|"â"|"ã"|"ä"|"æ"|"ç"|"ê"|"ë"|"ì"|"í"|"ï"|"ð"|"ñ"|"ò"|"ô"|"õ"|"ö"|"÷"|"ø")*)
|
||||
=> x+"å"+y;
|
||||
x + "я" + y@(["бвгджзклмнпрстфхцчш"]*)
|
||||
=> x+"е"+y;
|
||||
_ => s
|
||||
};
|
||||
|
||||
@@ -478,19 +479,19 @@ resource ResBul = ParamX ** open Prelude, Predef in {
|
||||
\base ->
|
||||
let base0 : Str
|
||||
= case base of {
|
||||
x+"è" => x;
|
||||
x+"и" => x;
|
||||
x => x
|
||||
}
|
||||
in table {
|
||||
ASg Masc Indef => base ;
|
||||
ASg Masc Def => (base0+"èÿ") ;
|
||||
ASgMascDefNom => (base0+"èÿò") ;
|
||||
ASg Fem Indef => (base0+"à") ;
|
||||
ASg Fem Def => (base0+"àòà") ;
|
||||
ASg Neut Indef => (base0+"î") ;
|
||||
ASg Neut Def => (base0+"îòî") ;
|
||||
APl Indef => (ia2e base0+"è") ;
|
||||
APl Def => (ia2e base0+"èòå")
|
||||
ASg Masc Def => (base0+"ия") ;
|
||||
ASgMascDefNom => (base0+"ият") ;
|
||||
ASg Fem Indef => (base0+"а") ;
|
||||
ASg Fem Def => (base0+"ата") ;
|
||||
ASg Neut Indef => (base0+"о") ;
|
||||
ASg Neut Def => (base0+"ото") ;
|
||||
APl Indef => (ia2e base0+"и") ;
|
||||
APl Def => (ia2e base0+"ите")
|
||||
};
|
||||
|
||||
-- For $Sentence$.
|
||||
@@ -545,37 +546,37 @@ resource ResBul = ParamX ** open Prelude, Predef in {
|
||||
_ => auxPres++s++clitic.s
|
||||
} ;
|
||||
|
||||
li0 = case <verb.ad.isEmpty,q0> of {<False,True> => "ëè"; _ => []} ;
|
||||
li0 = case <verb.ad.isEmpty,q0> of {<False,True> => "ли"; _ => []} ;
|
||||
|
||||
q = case verb.ad.isEmpty of {True => q0; False => False} ;
|
||||
li = case q of {True => "ëè"; _ => []} ;
|
||||
li = case q of {True => "ли"; _ => []} ;
|
||||
|
||||
vf1 : Str -> {s1 : Str; s2 : Str} = \s ->
|
||||
case p of {
|
||||
Pos => case q of {True => {s1=[]; s2="ëè"++apc []};
|
||||
Pos => case q of {True => {s1=[]; s2="ли"++apc []};
|
||||
False => {s1=apc []; s2=[]}} ;
|
||||
Neg => {s1="íå"++apc li; s2=[]}
|
||||
Neg => {s1="не"++apc li; s2=[]}
|
||||
} ;
|
||||
|
||||
vf2 : Str -> {s1 : Str; s2 : Str} = \s ->
|
||||
case p of {
|
||||
Pos => case q of {True => {s1=[]; s2="ëè"++s};
|
||||
Pos => case q of {True => {s1=[]; s2="ли"++s};
|
||||
False => {s1=s; s2=[]}} ;
|
||||
Neg => case verb.vtype of
|
||||
{VNormal => {s1="íå"++s; s2=li} ;
|
||||
_ => {s1="íå"++s++li; s2=[]}}
|
||||
{VNormal => {s1="не"++s; s2=li} ;
|
||||
_ => {s1="не"++s++li; s2=[]}}
|
||||
} ;
|
||||
|
||||
vf3 : Str -> {s1 : Str; s2 : Str} = \s ->
|
||||
case p of {
|
||||
Pos => {s1="ùå"++s; s2=li} ;
|
||||
Neg => {s1="íÿìà"++li++"äà"++s; s2=[]}
|
||||
Pos => {s1="ще"++s; s2=li} ;
|
||||
Neg => {s1="няма"++li++"да"++s; s2=[]}
|
||||
} ;
|
||||
|
||||
vf4 : Str -> {s1 : Str; s2 : Str} = \s ->
|
||||
case p of {
|
||||
Pos => {s1= s++li++clitic.s; s2=[]} ;
|
||||
Neg => {s1="íå"++s++li++clitic.s; s2=[]}
|
||||
Neg => {s1="не"++s++li++clitic.s; s2=[]}
|
||||
} ;
|
||||
|
||||
verbs : {aux:{s1:Str; s2:Str}; main:Str} =
|
||||
@@ -600,8 +601,8 @@ resource ResBul = ParamX ** open Prelude, Predef in {
|
||||
VPhrasal Dat => {s=personalClitics agr ! Dat++vp.clitics; agr={gn=GSg Neut; p=P3}} ;
|
||||
VPhrasal c => {s=vp.clitics++personalClitics agr ! c; agr={gn=GSg Neut; p=P3}}
|
||||
} ;
|
||||
pol = case p of {Pos => ""; Neg => "íå"}
|
||||
in vp.ad.s ++ "äà" ++ pol ++ clitic.s ++
|
||||
pol = case p of {Pos => ""; Neg => "не"}
|
||||
in vp.ad.s ++ "да" ++ pol ++ clitic.s ++
|
||||
case a of {
|
||||
Simul => vp.s ! asp ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ;
|
||||
Anter => auxBe ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ++
|
||||
@@ -629,10 +630,10 @@ resource ResBul = ParamX ** open Prelude, Predef in {
|
||||
linCase : Case -> Polarity -> Str =
|
||||
\c,p -> case c of {
|
||||
Acc => "" ;
|
||||
Dat => "íà" ;
|
||||
Dat => "на" ;
|
||||
WithPrep => case p of {
|
||||
Pos => with_Word ;
|
||||
Neg => "áåç"
|
||||
Neg => "без"
|
||||
} ;
|
||||
CPrep => ""
|
||||
} ;
|
||||
@@ -656,17 +657,17 @@ resource ResBul = ParamX ** open Prelude, Predef in {
|
||||
{s = table {
|
||||
unit => mkCardOrd dva dvama dve vtori ;
|
||||
teen nf => case nf of {
|
||||
Formal => mkCardOrd (dva+"íàäåñåò") (dva+"íàäåñåòèìà") (dva+"íàäåñåò") (dva+"íàäåñåòè") ;
|
||||
Informal => mkCardOrd (dva+"íàéñåò") (dva+"íàéñåò") (dva+"íàéñåò") (dva+"íàéñòè")
|
||||
Formal => mkCardOrd (dva+"надесет") (dva+"надесетима") (dva+"надесет") (dva+"надесети") ;
|
||||
Informal => mkCardOrd (dva+"найсет") (dva+"найсет") (dva+"найсет") (dva+"найсти")
|
||||
} ;
|
||||
ten nf => case nf of {
|
||||
Formal => mkCardOrd (dva+"äåñåò") (dva+"äåñåòèìà") (dva+"äåñåò") (dva+"äåñåòè") ;
|
||||
Informal => mkCardOrd dvaiset dvaiset dvaiset (dvaiset+"è")
|
||||
Formal => mkCardOrd (dva+"десет") (dva+"десетима") (dva+"десет") (dva+"десети") ;
|
||||
Informal => mkCardOrd dvaiset dvaiset dvaiset (dvaiset+"и")
|
||||
} ;
|
||||
hundred => let dvesten : Str
|
||||
= case dvesta of {
|
||||
dvest+"à" => dvest+"åí" ;
|
||||
chetiristot+"èí" => chetiristot+"åí"
|
||||
dvest+"а" => dvest+"ен" ;
|
||||
chetiristot+"ин" => chetiristot+"ен"
|
||||
}
|
||||
in mkCardOrd100 dvesta dvestata dvesten
|
||||
}
|
||||
@@ -676,19 +677,19 @@ resource ResBul = ParamX ** open Prelude, Predef in {
|
||||
\dva, dvama, dve, vtori ->
|
||||
table {
|
||||
NCard dg => digitGenderSpecies dva dvama dve ! dg ;
|
||||
NOrd aform => let vtora : Str = case vtori of {_+"â" => vtori; _ => init vtori} + "à" ;
|
||||
vtoro : Str = case vtori of {_+"â" => vtori; _ => init vtori} + "î";
|
||||
i : Str = case vtori of {_+"â" => "è"; _ => ""}
|
||||
NOrd aform => let vtora : Str = case vtori of {_+"в" => vtori; _ => init vtori} + "а" ;
|
||||
vtoro : Str = case vtori of {_+"в" => vtori; _ => init vtori} + "о";
|
||||
i : Str = case vtori of {_+"в" => "и"; _ => ""}
|
||||
in case aform of {
|
||||
ASg Masc Indef => vtori ;
|
||||
ASg Masc Def => vtori+i+"ÿ" ;
|
||||
ASgMascDefNom => vtori+i+"ÿò" ;
|
||||
ASg Masc Def => vtori+i+"я" ;
|
||||
ASgMascDefNom => vtori+i+"ят" ;
|
||||
ASg Fem Indef => vtora ;
|
||||
ASg Fem Def => vtora+"òà" ;
|
||||
ASg Fem Def => vtora+"та" ;
|
||||
ASg Neut Indef => vtoro ;
|
||||
ASg Neut Def => vtoro+"òî" ;
|
||||
ASg Neut Def => vtoro+"то" ;
|
||||
APl Indef => vtori+i ;
|
||||
APl Def => vtori+i+"òå"
|
||||
APl Def => vtori+i+"те"
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -705,14 +706,14 @@ resource ResBul = ParamX ** open Prelude, Predef in {
|
||||
NOrd aform => let stotn = init (init stoten) + last stoten ;
|
||||
in case aform of {
|
||||
ASg Masc Indef => stoten ;
|
||||
ASg Masc Def => stotn+"èÿ" ;
|
||||
ASgMascDefNom => stotn+"èÿò" ;
|
||||
ASg Fem Indef => stotn+"à" ;
|
||||
ASg Fem Def => stotn+"àòà" ;
|
||||
ASg Neut Indef => stotn+"î" ;
|
||||
ASg Neut Def => stotn+"îòî" ;
|
||||
APl Indef => stotn+"è" ;
|
||||
APl Def => stotn+"èòå"
|
||||
ASg Masc Def => stotn+"ия" ;
|
||||
ASgMascDefNom => stotn+"ият" ;
|
||||
ASg Fem Indef => stotn+"а" ;
|
||||
ASg Fem Def => stotn+"ата" ;
|
||||
ASg Neut Indef => stotn+"о" ;
|
||||
ASg Neut Def => stotn+"ото" ;
|
||||
APl Indef => stotn+"и" ;
|
||||
APl Def => stotn+"ите"
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -720,12 +721,12 @@ resource ResBul = ParamX ** open Prelude, Predef in {
|
||||
\dva, dvama, dve
|
||||
-> let addDef : Str -> Gender -> Str =
|
||||
\s,g -> case s of {
|
||||
dves+"òà" => dves+"òàòå" ;
|
||||
dv+"à" => dv+"àòà" ;
|
||||
"0" => s+"òà" ;
|
||||
"1" => s+case g of {Masc => "ÿò"; Fem => "òà"; Neut => "òî"} ;
|
||||
"2" => s+case g of {Masc => "òà"; _ => "òå"} ;
|
||||
x => x+"òå"
|
||||
dves+"та" => dves+"тате" ;
|
||||
dv+"а" => dv+"ата" ;
|
||||
"0" => s+"та" ;
|
||||
"1" => s+case g of {Masc => "ят"; Fem => "та"; Neut => "то"} ;
|
||||
"2" => s+case g of {Masc => "та"; _ => "те"} ;
|
||||
x => x+"те"
|
||||
}
|
||||
in table {
|
||||
CFMasc Indef NonHuman => dva ;
|
||||
@@ -743,19 +744,19 @@ resource ResBul = ParamX ** open Prelude, Predef in {
|
||||
mkIP : Str -> Str -> GenNum -> {s : Role => QForm => Str ; gn : GenNum} =
|
||||
\koi,kogo,gn -> {
|
||||
s = table {
|
||||
RSubj => table QForm [koi; koi+"òî"] ;
|
||||
RObj Acc => table QForm [kogo; kogo+"òî"] ;
|
||||
RObj Dat => table QForm ["íà" ++ kogo; "íà" ++ kogo+"òî"] ;
|
||||
RObj WithPrep => table QForm [with_Word ++ kogo; with_Word ++ kogo+"òî"] ;
|
||||
RObj CPrep => table QForm [kogo; kogo+"òî"] ;
|
||||
RVoc => table QForm [koi; koi+"òî"]
|
||||
RSubj => table QForm [koi; koi+"то"] ;
|
||||
RObj Acc => table QForm [kogo; kogo+"то"] ;
|
||||
RObj Dat => table QForm ["на" ++ kogo; "на" ++ kogo+"то"] ;
|
||||
RObj WithPrep => table QForm [with_Word ++ kogo; with_Word ++ kogo+"то"] ;
|
||||
RObj CPrep => table QForm [kogo; kogo+"то"] ;
|
||||
RVoc => table QForm [koi; koi+"то"]
|
||||
} ;
|
||||
gn = gn
|
||||
} ;
|
||||
|
||||
with_Word : Str
|
||||
= pre { "ñ" ;
|
||||
"ñúñ" / strs {"ñ" ; "ç" ; "Ñ" ; "Ç"}
|
||||
= pre { "с" ;
|
||||
"със" / strs {"с" ; "з" ; "С" ; "З"}
|
||||
} ;
|
||||
|
||||
mkPron : (az,moj,moia,moiat,moia_,moiata,moe,moeto,moi,moite : Str) ->
|
||||
@@ -812,43 +813,50 @@ resource ResBul = ParamX ** open Prelude, Predef in {
|
||||
|
||||
whichRP : GenNum => Str
|
||||
= table {
|
||||
GSg Masc => "êîéòî" ;
|
||||
GSg Fem => "êîÿòî" ;
|
||||
GSg Neut => "êîåòî" ;
|
||||
GPl => "êîèòî"
|
||||
GSg Masc => "който" ;
|
||||
GSg Fem => "която" ;
|
||||
GSg Neut => "което" ;
|
||||
GPl => "които"
|
||||
} ;
|
||||
|
||||
suchRP : GenNum => Str
|
||||
= table {
|
||||
GSg Masc => "òàêúâ" ;
|
||||
GSg Fem => "òàêàâà" ;
|
||||
GSg Neut => "òàêîâà" ;
|
||||
GPl => "òàêèâà"
|
||||
GSg Masc => "такъв" ;
|
||||
GSg Fem => "такава" ;
|
||||
GSg Neut => "такова" ;
|
||||
GPl => "такива"
|
||||
} ;
|
||||
|
||||
thisRP : GenNum => Str
|
||||
= table {
|
||||
GSg Masc => "òîçè" ;
|
||||
GSg Fem => "òaçè" ;
|
||||
GSg Neut => "òîâà" ;
|
||||
GPl => "òåçè"
|
||||
GSg Masc => "този" ;
|
||||
GSg Fem => "тaзи" ;
|
||||
GSg Neut => "това" ;
|
||||
GPl => "тези"
|
||||
} ;
|
||||
|
||||
linCoord : Str -> Ints 4 => Str ;
|
||||
linCoord comma = table {0 => "è"; 1=>"èëè"; 2=>"íèòî"; 3=>comma; 4=>[]} ;
|
||||
linCoord comma = table {0 => "и"; 1=>"или"; 2=>"нито"; 3=>comma; 4=>[]} ;
|
||||
|
||||
hyphen : Str = SOFT_BIND ++ "-" ++ SOFT_BIND ;
|
||||
|
||||
reflPron : AForm => Str =
|
||||
table {
|
||||
ASg Masc Indef => "ñâîé" ;
|
||||
ASg Masc Def => "ñâîÿ" ;
|
||||
ASgMascDefNom => "ñâîÿò" ;
|
||||
ASg Fem Indef => "ñâîÿ" ;
|
||||
ASg Fem Def => "ñâîÿòà" ;
|
||||
ASg Neut Indef => "ñâîå" ;
|
||||
ASg Neut Def => "ñâîåòî" ;
|
||||
APl Indef => "ñâîè" ;
|
||||
APl Def => "ñâîèòå"
|
||||
ASg Masc Indef => "свой" ;
|
||||
ASg Masc Def => "своя" ;
|
||||
ASgMascDefNom => "своят" ;
|
||||
ASg Fem Indef => "своя" ;
|
||||
ASg Fem Def => "своята" ;
|
||||
ASg Neut Indef => "свое" ;
|
||||
ASg Neut Def => "своето" ;
|
||||
APl Indef => "свои" ;
|
||||
APl Def => "своите"
|
||||
} ;
|
||||
|
||||
sex2gender : Sex -> Gender = \g ->
|
||||
case g of {
|
||||
Male => Masc ;
|
||||
Female => Fem
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
flags optimize=all_subs ;
|
||||
@@ -27,10 +27,14 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
|
||||
}
|
||||
in case orPol p vp.p of {
|
||||
Pos => vp.ad.s ++ verb Perf ++ clitic ;
|
||||
Neg => "íå" ++ vp.ad.s ++ clitic ++ verb Imperf
|
||||
Neg => "не" ++ vp.ad.s ++ clitic ++ verb Imperf
|
||||
} ++ compl ;
|
||||
} ;
|
||||
|
||||
AdvImp adv imp = {
|
||||
s = \\pol,gennum => adv.s ++ imp.s ! pol ! gennum
|
||||
} ;
|
||||
|
||||
SlashVP np slash = {
|
||||
s = \\agr => (mkClause (np.s ! RSubj) np.gn np.p {s = slash.s ;
|
||||
ad = slash.ad ;
|
||||
@@ -51,11 +55,11 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
|
||||
|
||||
SlashVS np vs slash = {
|
||||
s = \\agr => (mkClause (np.s ! RSubj) np.gn np.p
|
||||
(insertObj (\\_ => "֌" ++ slash.s ! agr) Pos (predV vs))).s ;
|
||||
(insertObj (\\_ => "че" ++ slash.s ! agr) Pos (predV vs))).s ;
|
||||
c2 = slash.c2
|
||||
} ;
|
||||
|
||||
EmbedS s = {s = "֌" ++ s.s} ;
|
||||
EmbedS s = {s = "че" ++ s.s} ;
|
||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||
EmbedVP vp = {s = daComplex Simul vp.p vp ! Perf ! agrP3 (GSg Masc)} ;
|
||||
|
||||
|
||||
@@ -1,132 +1,132 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete StructuralBul of Structural = CatBul **
|
||||
open MorphoBul, ParadigmsBul, Prelude, (X = ConstructX) in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
flags optimize=all ;
|
||||
|
||||
lin
|
||||
above_Prep = mkPrep "íàä" ;
|
||||
after_Prep = mkPrep "ñëåä" ;
|
||||
all_Predet = {s = table GenNum ["âñè÷êèÿ";"âñè÷êàòà";"âñè÷êîòî";"âñè÷êèòå"]} ;
|
||||
almost_AdA, almost_AdN = ss "ïî÷òè" ;
|
||||
at_least_AdN, at_most_AdN = ss "ïî÷òè" ; ---- AR
|
||||
although_Subj = ss ["âúïðåêè ÷å"] ;
|
||||
always_AdV = mkAdV "âèíàãè" ;
|
||||
and_Conj = mkConj "è" Pl ;
|
||||
because_Subj = ss "çàùîòî" ;
|
||||
before_Prep = mkPrep "ïðåäè" ;
|
||||
behind_Prep = mkPrep "çàä" ;
|
||||
between_Prep = mkPrep "ìåæäó" ;
|
||||
both7and_DConj = mkConj "è" Pl ** {sep=0} ;
|
||||
but_PConj = ss "íî" ;
|
||||
by8agent_Prep = mkPrep "÷ðåç" ;
|
||||
by8means_Prep = mkPrep "÷ðåç" ;
|
||||
can8know_VV, can_VV = mkVV (stateV (mkV166 "ìîãà")) ;
|
||||
during_Prep = mkPrep ["ïî âðåìå íà"] ;
|
||||
either7or_DConj = mkConj "èëè" Sg ** {sep=1} ;
|
||||
everybody_NP = mkNP "âñåêè" (GSg Masc) (NounP3 Pos);
|
||||
every_Det = mkDeterminerSg "âñåêè" "âñÿêà" "âñÿêî";
|
||||
everything_NP = mkNP "âñè÷êî" (GSg Neut) (NounP3 Pos);
|
||||
everywhere_Adv = ss "íàâñÿêúäå" ;
|
||||
few_Det = {s = \\_,_,_ => "íÿêîëêî"; nn = NCountable; spec = Indef; p = Pos} ;
|
||||
above_Prep = mkPrep "над" ;
|
||||
after_Prep = mkPrep "след" ;
|
||||
all_Predet = {s = table GenNum ["всичкия";"всичката";"всичкото";"всичките"]} ;
|
||||
almost_AdA, almost_AdN = ss "почти" ;
|
||||
at_least_AdN, at_most_AdN = ss "почти" ; ---- AR
|
||||
although_Subj = ss ["въпреки че"] ;
|
||||
always_AdV = mkAdV "винаги" ;
|
||||
and_Conj = mkConj "и" Pl ;
|
||||
because_Subj = ss "защото" ;
|
||||
before_Prep = mkPrep "преди" ;
|
||||
behind_Prep = mkPrep "зад" ;
|
||||
between_Prep = mkPrep "между" ;
|
||||
both7and_DConj = mkConj "и" Pl ** {sep=0} ;
|
||||
but_PConj = ss "но" ;
|
||||
by8agent_Prep = mkPrep "чрез" ;
|
||||
by8means_Prep = mkPrep "чрез" ;
|
||||
can8know_VV, can_VV = mkVV (stateV (mkV166 "мога")) ;
|
||||
during_Prep = mkPrep ["по време на"] ;
|
||||
either7or_DConj = mkConj "или" Sg ** {sep=1} ;
|
||||
everybody_NP = mkNP "всеки" (GSg Masc) (NounP3 Pos);
|
||||
every_Det = mkDeterminerSg "всеки" "всяка" "всяко";
|
||||
everything_NP = mkNP "всичко" (GSg Neut) (NounP3 Pos);
|
||||
everywhere_Adv = ss "навсякъде" ;
|
||||
few_Det = {s = \\_,_,_ => "няколко"; nn = NCountable; spec = Indef; p = Pos} ;
|
||||
--- first_Ord = ss "first" ; DEPRECATED
|
||||
for_Prep = mkPrep "çà" ;
|
||||
from_Prep = mkPrep "îò" ;
|
||||
he_Pron = mkPron "òîé" "íåãîâ" "íåãîâèÿ" "íåãîâèÿò" "íåãîâà" "íåãîâàòà" "íåãîâî" "íåãîâîòî" "íåãîâè" "íåãîâèòå" (GSg Masc) PronP3 ;
|
||||
here_Adv = ss "òóê" ;
|
||||
here7to_Adv = ss ["äî òóê"] ;
|
||||
here7from_Adv = ss ["îò òóê"] ;
|
||||
how_IAdv = mkIAdv "êàê" ;
|
||||
how8much_IAdv = mkIAdv "êîëêî" ;
|
||||
how8many_IDet = {s = \\_ => table QForm ["êîëêî";"êîëêîòî"]; n = Pl; nonEmpty = False} ;
|
||||
if_Subj = ss "àêî" ;
|
||||
in8front_Prep = mkPrep "ïðåä" ;
|
||||
i_Pron = mkPron "àç" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg Masc) PronP1 ;
|
||||
in_Prep = mkPrep (pre { "â" ;
|
||||
"âúâ" / strs {"â" ; "ô" ; "Â" ; "Ô"}
|
||||
for_Prep = mkPrep "за" ;
|
||||
from_Prep = mkPrep "от" ;
|
||||
he_Pron = mkPron "той" "негов" "неговия" "неговият" "негова" "неговата" "негово" "неговото" "негови" "неговите" (GSg Masc) PronP3 ;
|
||||
here_Adv = ss "тук" ;
|
||||
here7to_Adv = ss ["до тук"] ;
|
||||
here7from_Adv = ss ["от тук"] ;
|
||||
how_IAdv = mkIAdv "как" ;
|
||||
how8much_IAdv = mkIAdv "колко" ;
|
||||
how8many_IDet = {s = \\_ => table QForm ["колко";"колкото"]; n = Pl; nonEmpty = False} ;
|
||||
if_Subj = ss "ако" ;
|
||||
in8front_Prep = mkPrep "пред" ;
|
||||
i_Pron = mkPron "аз" "мой" "моя" "моят" "моя" "моята" "мое" "моето" "мои" "моите" (GSg Masc) PronP1 ;
|
||||
in_Prep = mkPrep (pre { "в" ;
|
||||
"във" / strs {"в" ; "ф" ; "В" ; "Ф"}
|
||||
}) ;
|
||||
it_Pron = mkPron "òî" "íåãîâ" "íåãîâèÿ" "íåãîâèÿò" "íåãîâà" "íåãîâàòà" "íåãîâî" "íåãîâîòî" "íåãîâè" "íåãîâèòå" (GSg Neut) PronP3 ;
|
||||
less_CAdv = X.mkCAdv "ïî-ìàëêî" "îò" ;
|
||||
many_Det = mkDeterminerPl "ìíîãî" ;
|
||||
more_CAdv = X.mkCAdv "ïîâå÷å" "îò" ;
|
||||
most_Predet = {s = \\_ => "ïîâå÷åòî"} ;
|
||||
much_Det = mkDeterminerSg "ìíîãî" "ìíîãî" "ìíîãî";
|
||||
it_Pron = mkPron "то" "негов" "неговия" "неговият" "негова" "неговата" "негово" "неговото" "негови" "неговите" (GSg Neut) PronP3 ;
|
||||
less_CAdv = X.mkCAdv "по-малко" "от" ;
|
||||
many_Det = mkDeterminerPl "много" ;
|
||||
more_CAdv = X.mkCAdv "повече" "от" ;
|
||||
most_Predet = {s = \\_ => "повечето"} ;
|
||||
much_Det = mkDeterminerSg "много" "много" "много";
|
||||
must_VV =
|
||||
mkVV {
|
||||
s = \\_=>table {
|
||||
VPres _ _ => "òðÿáâà" ;
|
||||
VAorist _ _ => "òðÿáâàøå" ;
|
||||
VImperfect _ _ => "òðÿáâàëî" ;
|
||||
VPerfect _ => "òðÿáâàëî" ;
|
||||
VPluPerfect _ => "òðÿáâàëî" ;
|
||||
VPassive _ => "òðÿáâàëî" ;
|
||||
VPresPart _ => "òðÿáâàëî" ;
|
||||
VImperative Sg => "òðÿáâàé" ;
|
||||
VImperative Pl => "òðÿáâàéòå" ;
|
||||
VNoun _ => "òðÿáâàíå" ;
|
||||
VGerund => "òðÿáâàéêè"
|
||||
VPres _ _ => "трябва" ;
|
||||
VAorist _ _ => "трябваше" ;
|
||||
VImperfect _ _ => "трябвало" ;
|
||||
VPerfect _ => "трябвало" ;
|
||||
VPluPerfect _ => "трябвало" ;
|
||||
VPassive _ => "трябвало" ;
|
||||
VPresPart _ => "трябвало" ;
|
||||
VImperative Sg => "трябвай" ;
|
||||
VImperative Pl => "трябвайте" ;
|
||||
VNoun _ => "трябване" ;
|
||||
VGerund => "трябвайки"
|
||||
} ;
|
||||
vtype=VNormal ;
|
||||
lock_V=<>
|
||||
} ;
|
||||
no_Utt = ss "íå" ;
|
||||
on_Prep = mkPrep "íà" ;
|
||||
no_Utt = ss "не" ;
|
||||
on_Prep = mkPrep "на" ;
|
||||
---- one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
|
||||
only_Predet = {s = \\_ => "ñàìî"} ;
|
||||
or_Conj = mkConj "èëè" Sg ;
|
||||
otherwise_PConj = ss "èíà÷å" ;
|
||||
part_Prep = mkPrep "îò" ;
|
||||
please_Voc = ss "ìîëÿ" ;
|
||||
only_Predet = {s = \\_ => "само"} ;
|
||||
or_Conj = mkConj "или" Sg ;
|
||||
otherwise_PConj = ss "иначе" ;
|
||||
part_Prep = mkPrep "от" ;
|
||||
please_Voc = ss "моля" ;
|
||||
possess_Prep = mkPrep [] Dat ;
|
||||
quite_Adv = ss "äîñòà" ;
|
||||
she_Pron = mkPron "òÿ" "íåèí" "íåéíèÿ" "íåéíèÿò" "íåéíà" "íåéíàòà" "íåéíî" "íåéíîòî" "íåéíè" "íåéíèòå" (GSg Fem) PronP3 ;
|
||||
so_AdA = ss "òîëêîâà" ;
|
||||
somebody_NP = mkNP "íÿêîé" (GSg Masc) (NounP3 Pos);
|
||||
someSg_Det = mkDeterminerSg "íÿêîé" "íÿêîÿ" "íÿêîå" ;
|
||||
somePl_Det = mkDeterminerPl "íÿêîè" ;
|
||||
something_NP = mkNP "íåùî" (GSg Neut) (NounP3 Pos);
|
||||
somewhere_Adv = ss "íÿêúäå" ;
|
||||
that_Quant = mkQuant "îíçè" "îíàçè" "îíîâà" "îíåçè" ;
|
||||
that_Subj = ss "֌" ;
|
||||
there_Adv = ss "òàì" ;
|
||||
there7to_Adv = ss ["äî òàì"] ;
|
||||
there7from_Adv = ss ["îò òàì"] ;
|
||||
therefore_PConj = ss ["òàêà ÷å"] ;
|
||||
they_Pron = mkPron "òå" "òåõåí" "òåõíèÿ" "òåõíèÿò" "òÿõíà" "òÿõíàòà" "òÿõíî" "òÿõíîòî" "òåõíè" "òåõíèòå" GPl PronP3 ;
|
||||
this_Quant = mkQuant "òîçè" "òàçè" "òîâà" "òåçè" ;
|
||||
through_Prep = mkPrep "ïðåç" ;
|
||||
too_AdA = ss "ïðåêàëåíî" ;
|
||||
to_Prep = mkPrep "äî" ;
|
||||
under_Prep = mkPrep "ïîä" ;
|
||||
very_AdA = ss "ìíîãî" ;
|
||||
want_VV = mkVV (stateV (mkV186 "èñêàì")) ;
|
||||
we_Pron = mkPron "íèå" "íàø" "íàøèÿ" "íàøèÿò" "íàøà" "íàøàòà" "íàøå" "íàøåòî" "íàøè" "íàøèòå" GPl PronP1 ;
|
||||
whatPl_IP = mkIP "êàêâè" "êàêâè" GPl ;
|
||||
whatSg_IP = mkIP "êàêúâ" "êàêúâ" (GSg Masc) ;
|
||||
when_IAdv = mkIAdv "êîãà" ;
|
||||
when_Subj = ss "êîãàòî" ;
|
||||
where_IAdv = mkIAdv "êúäå" ;
|
||||
which_IQuant = {s = table GenNum [table QForm ["êîé";"êîéòî"];
|
||||
table QForm ["êîÿ";"êîÿòî"];
|
||||
table QForm ["êîå";"êîåòî"];
|
||||
table QForm ["êîè";"êîèòî"]]} ;
|
||||
whoSg_IP = mkIP "êîé" "êîãî" (GSg Masc) ;
|
||||
whoPl_IP = mkIP "êîè" "êîè" GPl ;
|
||||
why_IAdv = mkIAdv "çàùî" ;
|
||||
without_Prep = mkPrep "áåç" ;
|
||||
quite_Adv = ss "доста" ;
|
||||
she_Pron = mkPron "тя" "неин" "нейния" "нейният" "нейна" "нейната" "нейно" "нейното" "нейни" "нейните" (GSg Fem) PronP3 ;
|
||||
so_AdA = ss "толкова" ;
|
||||
somebody_NP = mkNP "някой" (GSg Masc) (NounP3 Pos);
|
||||
someSg_Det = mkDeterminerSg "някой" "някоя" "някое" ;
|
||||
somePl_Det = mkDeterminerPl "някои" ;
|
||||
something_NP = mkNP "нещо" (GSg Neut) (NounP3 Pos);
|
||||
somewhere_Adv = ss "някъде" ;
|
||||
that_Quant = mkQuant "онзи" "онази" "онова" "онези" ;
|
||||
that_Subj = ss "че" ;
|
||||
there_Adv = ss "там" ;
|
||||
there7to_Adv = ss ["до там"] ;
|
||||
there7from_Adv = ss ["от там"] ;
|
||||
therefore_PConj = ss ["така че"] ;
|
||||
they_Pron = mkPron "те" "техен" "техния" "техният" "тяхна" "тяхната" "тяхно" "тяхното" "техни" "техните" GPl PronP3 ;
|
||||
this_Quant = mkQuant "този" "тази" "това" "тези" ;
|
||||
through_Prep = mkPrep "през" ;
|
||||
too_AdA = ss "прекалено" ;
|
||||
to_Prep = mkPrep "до" ;
|
||||
under_Prep = mkPrep "под" ;
|
||||
very_AdA = ss "много" ;
|
||||
want_VV = mkVV (stateV (mkV186 "искам")) ;
|
||||
we_Pron = mkPron "ние" "наш" "нашия" "нашият" "наша" "нашата" "наше" "нашето" "наши" "нашите" GPl PronP1 ;
|
||||
whatPl_IP = mkIP "какви" "какви" GPl ;
|
||||
whatSg_IP = mkIP "какъв" "какъв" (GSg Masc) ;
|
||||
when_IAdv = mkIAdv "кога" ;
|
||||
when_Subj = ss "когато" ;
|
||||
where_IAdv = mkIAdv "къде" ;
|
||||
which_IQuant = {s = table GenNum [table QForm ["кой";"който"];
|
||||
table QForm ["коя";"която"];
|
||||
table QForm ["кое";"което"];
|
||||
table QForm ["кои";"които"]]} ;
|
||||
whoSg_IP = mkIP "кой" "кого" (GSg Masc) ;
|
||||
whoPl_IP = mkIP "кои" "кои" GPl ;
|
||||
why_IAdv = mkIAdv "защо" ;
|
||||
without_Prep = mkPrep "без" ;
|
||||
with_Prep = mkPrep "" WithPrep ;
|
||||
yes_Utt = ss "äà" ;
|
||||
youSg_Pron = mkPron "òè" "òâîé" "òâîÿ" "òâîÿò" "òâîÿ" "òâîÿòà" "òâîå" "òâîåòî" "òâîè" "òâîèòå" (GSg Masc) PronP2 ;
|
||||
youPl_Pron = mkPron "âèå" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" GPl PronP2 ;
|
||||
youPol_Pron = mkPron "âèå" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" GPl PronP2 ;
|
||||
yes_Utt = ss "да" ;
|
||||
youSg_Pron = mkPron "ти" "твой" "твоя" "твоят" "твоя" "твоята" "твое" "твоето" "твои" "твоите" (GSg Masc) PronP2 ;
|
||||
youPl_Pron = mkPron "вие" "ваш" "вашия" "вашият" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" GPl PronP2 ;
|
||||
youPol_Pron = mkPron "вие" "ваш" "вашия" "вашият" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" GPl PronP2 ;
|
||||
|
||||
as_CAdv = X.mkCAdv [] "êîëêîòî" ;
|
||||
as_CAdv = X.mkCAdv [] "колкото" ;
|
||||
|
||||
have_V2 = dirV2 (stateV (mkV186 "èìàì")) ;
|
||||
have_V2 = dirV2 (stateV (mkV186 "имам")) ;
|
||||
|
||||
lin language_title_Utt = ss "Áúëãàðñêè" ;
|
||||
lin language_title_Utt = ss "Български" ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
--# -path=.:../abstract:../common:../prelude
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
|
||||
concrete SymbolBul of Symbol = CatBul ** open Prelude, ResBul in {
|
||||
|
||||
flags
|
||||
coding = cp1251 ;
|
||||
coding = utf8 ;
|
||||
|
||||
lin
|
||||
SymbPN i = {s = i.s ; g = Neut} ;
|
||||
IntPN i = {s = i.s ; g = Neut} ;
|
||||
FloatPN i = {s = i.s ; g = Neut} ;
|
||||
NumPN i = {s = i.s ! CFNeut Indef ; g = Neut} ;
|
||||
SymbPN i = {s = i.s ; gn = GSg Neut} ;
|
||||
IntPN i = {s = i.s ; gn = GSg Neut} ;
|
||||
FloatPN i = {s = i.s ; gn = GSg Neut} ;
|
||||
NumPN i = {s = i.s ! CFNeut Indef ; gn = GSg Neut} ;
|
||||
CNIntNP cn i = {
|
||||
s = \\c => cn.s ! NF Sg Indef ++ i.s ;
|
||||
gn = gennum cn.g Sg ;
|
||||
@@ -32,15 +32,15 @@ lin
|
||||
SymbNum sy = {s = \\_ => sy.s; nn = NNum Pl} ;
|
||||
SymbOrd sy = {s = \\aform => sy.s ++ "-" ++
|
||||
case aform of {
|
||||
ASg Masc Indef => "òè" ;
|
||||
ASg Fem Indef => "òà" ;
|
||||
ASg Neut Indef => "òî" ;
|
||||
ASg Masc Def => "òèÿ" ;
|
||||
ASg Fem Def => "òàòà" ;
|
||||
ASg Neut Def => "òîòî" ;
|
||||
ASgMascDefNom => "òèÿò" ;
|
||||
APl Indef => "òè" ;
|
||||
APl Def => "òèòå"
|
||||
ASg Masc Indef => "ти" ;
|
||||
ASg Fem Indef => "та" ;
|
||||
ASg Neut Indef => "то" ;
|
||||
ASg Masc Def => "тия" ;
|
||||
ASg Fem Def => "тата" ;
|
||||
ASg Neut Def => "тото" ;
|
||||
ASgMascDefNom => "тият" ;
|
||||
APl Indef => "ти" ;
|
||||
APl Def => "тите"
|
||||
}
|
||||
} ;
|
||||
|
||||
@@ -52,7 +52,7 @@ lin
|
||||
|
||||
MkSymb s = s ;
|
||||
|
||||
BaseSymb = infixSS "è" ;
|
||||
BaseSymb = infixSS "и" ;
|
||||
ConsSymb = infixSS bindComma ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete TextBul of Text = CatBul ** open Prelude in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
-- This will work for almost all languages except Spanish.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -coding=cp1251
|
||||
--# -coding=utf8
|
||||
concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
|
||||
flags coding=cp1251 ;
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
flags optimize=all_subs ;
|
||||
@@ -39,7 +39,7 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
|
||||
}) vp.p
|
||||
(predV vv) ;
|
||||
|
||||
ComplVS v s = insertObj (\\_ => bindComma ++ "֌" ++ s.s) Pos (predV v) ;
|
||||
ComplVS v s = insertObj (\\_ => bindComma ++ "че" ++ s.s) Pos (predV v) ;
|
||||
ComplVQ v q = insertObj (\\_ => q.s ! QDir) Pos (predV v) ;
|
||||
|
||||
ComplVA v ap =
|
||||
@@ -50,7 +50,7 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
|
||||
insertSlashObj2 (\\a => v.c3.s ++ ap.s ! aform a.gn Indef (RObj Acc) ! a.p) Pos (slashV v v.c2 v.subjCtrl) ;
|
||||
|
||||
-- test: I saw a boy to whom she said that they are here
|
||||
SlashV2S v s = insertSlashObj2 (\\_ => bindComma ++ "֌" ++ s.s) Pos (slashV v v.c2 False) ;
|
||||
SlashV2S v s = insertSlashObj2 (\\_ => bindComma ++ "че" ++ s.s) Pos (slashV v v.c2 False) ;
|
||||
|
||||
-- test: I saw a boy whom she asked who is here
|
||||
SlashV2Q v q = insertSlashObj2 (\\_ => q.s ! QDir) Pos (slashV v v.c2 False) ;
|
||||
|
||||
@@ -1741,6 +1741,71 @@ VP (Imp Sg P1) => nonExist
|
||||
}
|
||||
} ;
|
||||
|
||||
oper tossir_31b : Str -> Verbum = \tossir ->
|
||||
let t_ = Predef.tk 5 tossir in
|
||||
{s = table {
|
||||
VI Infn => t_ + "ossir" ;
|
||||
VI Ger => t_ + "ossint" ;
|
||||
VP (Pres Ind Pl P1) => t_ + "ossim" ;
|
||||
VP (Pres Ind Sg P1) => t_ + "usso" ;
|
||||
VP (Pres Ind Pl P2) => t_ + "ossiu" ;
|
||||
VP (Pres Ind Sg P2) => t_ + "usses" ;
|
||||
VP (Pres Ind Pl P3) => t_ + "ussen" ;
|
||||
VP (Pres Ind Sg P3) => t_ + "us" ;
|
||||
VP (Pres Sub Pl P1) => t_ + "ossim" ;
|
||||
VP (Pres Sub Sg P1) => t_ + "ussi" ;
|
||||
VP (Pres Sub Pl P2) => t_ + "ossiu" ;
|
||||
VP (Pres Sub Sg P2) => t_ + "ussis" ;
|
||||
VP (Pres Sub Pl P3) => t_ + "ussin" ;
|
||||
VP (Pres Sub Sg P3) => t_ + "ussi" ;
|
||||
VP (Impf Ind Pl P1) => t_ + "ossíem" ;--# notpresent
|
||||
VP (Impf Ind Sg P1) => t_ + "ossia" ;--# notpresent
|
||||
VP (Impf Ind Pl P2) => t_ + "ossíeu" ;--# notpresent
|
||||
VP (Impf Ind Sg P2) => t_ + "ossies" ;--# notpresent
|
||||
VP (Impf Ind Pl P3) => t_ + "ossien" ;--# notpresent
|
||||
VP (Impf Ind Sg P3) => t_ + "ossia" ;--# notpresent
|
||||
VP (Impf Sub Pl P1) => t_ + "ossíssim" ;--# notpresent
|
||||
VP (ImpfSubPlE P1) => t_ + "ossíssem" ;--# notpresent
|
||||
VP (Impf Sub Sg P1) => t_ + "ossís" ;--# notpresent
|
||||
VP (Impf Sub Pl P2) => t_ + "ossíssiu" ;--# notpresent
|
||||
VP (ImpfSubPlE P2) => t_ + "ossísseu" ;--# notpresent
|
||||
VP (Impf Sub Sg P2) => t_ + "ossissis" ;--# notpresent
|
||||
VP ImpfSubSgE => t_ + "ossisses" ;--# notpresent
|
||||
VP (Impf Sub Pl P3) => t_ + "ossissin" ;--# notpresent
|
||||
VP (ImpfSubPlE P3) => t_ + "ossissen" ;--# notpresent
|
||||
VP (Impf Sub Sg P3) => t_ + "ossís" ;--# notpresent
|
||||
VP (Fut Pl P1) => t_ + "ossirem" ;--# notpresent
|
||||
VP (Fut Sg P1) => t_ + "ossiré" ;--# notpresent
|
||||
VP (Fut Pl P2) => t_ + "ossireu" ;--# notpresent
|
||||
VP (Fut Sg P2) => t_ + "ossiràs" ;--# notpresent
|
||||
VP (Fut Pl P3) => t_ + "ossiran" ;--# notpresent
|
||||
VP (Fut Sg P3) => t_ + "ossirà" ;--# notpresent
|
||||
VP (Pret Pl P1) => t_ + "ossírem" ;--# notpresent
|
||||
VP (Pret Sg P1) => t_ + "ossí" ;--# notpresent
|
||||
VP (Pret Pl P2) => t_ + "ossíreu" ;--# notpresent
|
||||
VP (Pret Sg P2) => t_ + "ossires" ;--# notpresent
|
||||
VP (Pret Pl P3) => t_ + "ossiren" ;--# notpresent
|
||||
VP (Pret Sg P3) => t_ + "ossí" ;--# notpresent
|
||||
VP (Cond Pl P1) => t_ + "ossiríem" ;--# notpresent
|
||||
VP (Cond Sg P1) => t_ + "ossiria" ;--# notpresent
|
||||
VP (Cond Pl P2) => t_ + "ossiríeu" ;--# notpresent
|
||||
VP (Cond Sg P2) => t_ + "ossiries" ;--# notpresent
|
||||
VP (Cond Pl P3) => t_ + "ossirien" ;--# notpresent
|
||||
VP (Cond Sg P3) => t_ + "ossiria" ;--# notpresent
|
||||
VP (Imp Pl P1) => t_ + "ossim" ;
|
||||
VP (Imp Pl P2) => t_ + "ossiu" ;
|
||||
VP (Imp Sg P2) => t_ + "us" ;
|
||||
VP (Imp Pl P3) => t_ + "ussin" ;
|
||||
VP (Imp Sg P3) => t_ + "ussi" ;
|
||||
VP (Pass Pl Fem) => t_ + "ossides" ;
|
||||
VP (Pass Sg Fem) => t_ + "ossida" ;
|
||||
VP (Pass Pl Masc) => t_ + "ossits" ;
|
||||
VP (Pass Sg Masc) => t_ + "ossit" ;
|
||||
VP (Imp Sg P1) => nonExist
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
oper coure_32 : Str -> Verbum = \coure ->
|
||||
let c_ = Predef.tk 4 coure in
|
||||
{s = table {
|
||||
@@ -5595,7 +5660,6 @@ let t_ = Predef.tk 5 tòrcer in
|
||||
VP (Imp Sg P1) => nonExist
|
||||
}
|
||||
} ;
|
||||
--- tossir-- is not in the used source .
|
||||
|
||||
oper trencar_112 : Str -> Verbum = \trencar ->
|
||||
let tren_ = Predef.tk 3 trencar in
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
--# -path=.:../romance:../abstract:../common:prelude
|
||||
instance DiffCat of DiffRomance - [partAgr,stare_V,vpAgrSubj,vpAgrClits] = open CommonRomance, PhonoCat, BeschCat, Prelude in {
|
||||
instance DiffCat of DiffRomance - [partAgr,stare_V,vpAgrSubj,vpAgrClits,AFormSimple] = open CommonRomance, PhonoCat, BeschCat, Prelude in {
|
||||
|
||||
flags optimize=noexpand ;
|
||||
coding=utf8 ;
|
||||
@@ -64,7 +64,22 @@ oper
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
-- AForm and comparatives
|
||||
param
|
||||
AFormComplex = AF Gender Number | AAttrMasc | AA ;
|
||||
oper
|
||||
AForm = AFormComplex ;
|
||||
aform2aagr : AForm -> AAgr = \a -> case a of {
|
||||
DiffCat.AF g n => aagr g n ;
|
||||
_ => aagr Masc Sg -- "le plus lentement"
|
||||
} ;
|
||||
genNum2Aform : Gender -> Number -> AForm = DiffCat.AF ;
|
||||
genNumPos2Aform : Gender -> Number -> Bool -> AForm = \g,n,isPre ->
|
||||
case <g,n,isPre> of {
|
||||
<Masc,Sg,True> => AAttrMasc ;
|
||||
_ => genNum2Aform g n
|
||||
} ;
|
||||
piuComp = "més" ;
|
||||
|
||||
possCase = \_,_,c -> prepCase c ;
|
||||
|
||||
@@ -112,7 +127,7 @@ oper
|
||||
\\pol,g,n => case pol of {
|
||||
RPos => neg.p1 ++ imper ++ bindIf refl.isRefl ++ refl.pron
|
||||
++ bindIf hasClit ++ clit ++ compl ;
|
||||
RNeg _ => neg.p1 ++ refl.pron ++ clit ++ compl ++ subj
|
||||
RNeg _ => neg.p1 ++ refl.pron ++ clit ++ compl ++ subj
|
||||
} where {
|
||||
pe = case isPol of {True => P3 ; _ => p} ;
|
||||
refl = case vp.s.vtyp of {
|
||||
@@ -127,7 +142,7 @@ oper
|
||||
agr = {g = g ; n = n ; p = pe} ;
|
||||
compl = neg.p2 ++ vp.comp ! agr ++ vp.ext ! pol
|
||||
} ;
|
||||
|
||||
|
||||
CopulaType = Bool ;
|
||||
selectCopula = \isEstar -> case isEstar of {True => estar_V ; False => copula} ;
|
||||
serCopula = False ;
|
||||
|
||||
@@ -45,12 +45,12 @@ lin
|
||||
s1 = heading1 (nounHeading adjective_Category).s ;
|
||||
s2 = frameTable (
|
||||
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
|
||||
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Masc Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Masc Pl))) ++
|
||||
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Fem Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Fem Pl)))
|
||||
tr (th (heading masculine_Parameter) ++ td (adj.s ! genNum2Aform Masc Sg) ++ td (adj.s ! genNum2Aform Masc Pl)) ++
|
||||
tr (th (heading feminine_Parameter) ++ td (adj.s ! genNum2Aform Fem Sg) ++ td (adj.s ! genNum2Aform Fem Pl))
|
||||
)
|
||||
} ;
|
||||
|
||||
InflectionAdv adv = {
|
||||
InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
|
||||
t = "adv" ;
|
||||
s1 = heading1 "Adverbi" ;
|
||||
s2 = paragraph adv.s
|
||||
|
||||
@@ -15,5 +15,10 @@ concrete ExtendCat of Extend = CatCat ** ExtendRomanceFunctor-- -
|
||||
ParadigmsCat in {
|
||||
-- put your own definitions here
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = gn.s ++ sn.s ;
|
||||
g = gn.g
|
||||
} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -20,6 +20,7 @@ lin escopir_V = verbV (escopir_49 "escopir") ;
|
||||
lin fondre_V = verbV (fondre_57 "fendre") ;
|
||||
lin jeure_V = verbV (jeure_62 "jeure" (True|False)) ;
|
||||
lin omplir_V = verbV (omplir_80 "omplir") ;
|
||||
lin tossir_V = verbV (tossir_31b "tossir") ;
|
||||
lin venir_V = verbV (venir_117 "venir" (True|False)) ;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1102,5 +1102,6 @@ fun escopir_V : V ;
|
||||
fun fondre_V : V ;
|
||||
fun jeure_V : V ;
|
||||
fun omplir_V : V ;
|
||||
fun tossir_V : V ;
|
||||
fun venir_V : V ;
|
||||
}
|
||||
|
||||
@@ -31,8 +31,8 @@ lin
|
||||
big_A = mkA "gros" "grossa" ;
|
||||
bike_N = regFN "bicicleta" ;
|
||||
bird_N = regMN "ocell" ;
|
||||
black_A = compADeg (mkA "negre" "negra" "negres" "negres" "negrament") ;
|
||||
blue_A = compADeg (mkA "blau" "blava" "blaus" "blaves" "blavament") ;
|
||||
black_A = mkA "negre" "negra" "negres" "negres" "negrament" ;
|
||||
blue_A = mkA "blau" "blava" "blaus" "blaves" "blavament" ;
|
||||
boat_N = regFN "barca" ;
|
||||
book_N = regMN "llibre" ;
|
||||
boot_N = regFN "bota" ;
|
||||
@@ -42,7 +42,7 @@ lin
|
||||
break_V2 = dirV2 (verbV (trencar_112 "trencar")) ;
|
||||
broad_A = regADeg "ample" ; -- put it in MorphoCat?: like black_A
|
||||
brother_N2 = deN2 (regMN "germà") ;
|
||||
brown_A = compADeg (mkA "marró" "marrona" "marrons" "marrones" "marronament") ;
|
||||
brown_A = mkA "marró" "marrona" "marrons" "marrones" "marronament" ;
|
||||
butter_N = regFN "mantega" ;
|
||||
buy_V2 = dirV2 (mkV "comprar") ;
|
||||
camera_N = regFN "càmara" ;
|
||||
@@ -75,7 +75,7 @@ lin
|
||||
drink_V2 = dirV2 (verbV (beure_11 "beure")) ;
|
||||
easy_A2V = mkA2V (regA "fácil") dative genitive ;
|
||||
eat_V2 = dirV2 (verbV (envejar_48 "menjar")) ;
|
||||
empty_A = compADeg (mkA "buit" "buida" "buits" "buides" "buidament") ;
|
||||
empty_A = mkA "buit" "buida" "buits" "buides" "buidament" ;
|
||||
enemy_N = regMN "enemic" ; -- enemiga
|
||||
factory_N = regFN "fàbrica" ;
|
||||
father_N2 = deN2 (regMN "pare") ;
|
||||
@@ -92,7 +92,7 @@ lin
|
||||
girl_N = regFN "noia" ;
|
||||
glove_N = regMN "guant" ;
|
||||
gold_N = regMN "or" ;
|
||||
good_A = mkA (prefA "bo" "bon") (mkA "millor") ;
|
||||
good_A = mkA (prefA "bo" "bon" "bé") (mkA "millor") ;
|
||||
go_V = (verbV (anar_4 "anar" 0)) ;
|
||||
green_A = regADeg "verd" ;
|
||||
harbour_N = regMN "port" ;
|
||||
@@ -132,7 +132,7 @@ lin
|
||||
mountain_N = regFN "muntanya" ;
|
||||
music_N = regFN "música" ;
|
||||
narrow_A = regADeg "estret" ;
|
||||
new_A = prefixA (compADeg (mkA "nou" "nova" "nous" "noves" "novament")) ;
|
||||
new_A = prefixA (mkA "nou" "nova" "nous" "noves" "novament") ;
|
||||
newspaper_N = regMN "diari" ; -- periòdic
|
||||
oil_N = regMN "oli" ;
|
||||
old_A = regADeg "vell" ;
|
||||
@@ -195,23 +195,23 @@ lin
|
||||
teacher_N = regMN "mestre" ; -- mestra
|
||||
teach_V2 = dirV2 (mkV "ensenyar") ;
|
||||
television_N = mkN "televisió" "televisions" feminine ; -- televisor masc
|
||||
thick_A = compADeg (mkA "gruixut" "gruixuda" "gruixuts" "gruixudes" "gruixudament") ;
|
||||
thin_A = compADeg (mkA "fi" "fina" "fins" "fines" "finament") ;
|
||||
thick_A = mkA "gruixut" "gruixuda" "gruixuts" "gruixudes" "gruixudament" ;
|
||||
thin_A = mkA "fi" "fina" "fins" "fines" "finament" ;
|
||||
train_N = regMN "tren" ;
|
||||
travel_V = verbV (envejar_48 "viatjar") ;
|
||||
tree_N = regMN "arbre" ;
|
||||
--- trousers_N = regN "pantalón" ; -- masc
|
||||
ugly_A = compADeg (mkA "lleig" "lletja" "lletjos" "lletges" "lletjament") ;
|
||||
ugly_A = mkA "lleig" "lletja" "lletjos" "lletges" "lletjament" ;
|
||||
understand_V2 = dirV2 (verbV (atendre_8 "entendre")) ;
|
||||
university_N = regFN "universitat" ;
|
||||
village_N = regMN "poble" ;
|
||||
wait_V2 = mkV2 (mkV "esperar") dative ;
|
||||
walk_V = mkV "caminar" ;
|
||||
warm_A = compADeg (mkA "tebi" "tèbia" "tebis" "tèbies" "tèbiament") ;
|
||||
warm_A = mkA "tebi" "tèbia" "tebis" "tèbies" "tèbiament" ;
|
||||
war_N = regFN "guerra" ;
|
||||
watch_V2 = dirV2 (mkV "mirar") ;
|
||||
water_N = mkN "aigua" ; -- aigües
|
||||
white_A = compADeg (mkA "blanc" "blanca" "blancs" "blanques" "blancament") ;
|
||||
white_A = mkA "blanc" "blanca" "blancs" "blanques" "blancament" ;
|
||||
window_N = regFN "finestra" ;
|
||||
wine_N = regMN "vi" ;
|
||||
win_V2 = dirV2 (mkV "guanyar") ;
|
||||
@@ -219,8 +219,8 @@ lin
|
||||
wonder_VQ = mkVQ (reflV (mkV "preguntar")) ;
|
||||
wood_N = regFN "fusta" ;
|
||||
write_V2 = dirV2 (verbV (escriure_50 "escriure" True)) ;
|
||||
yellow_A = compADeg (mkA "groc" "groga" "grocs" "grogues" "grogament") ;
|
||||
young_A = compADeg (mkA "jove" "jove" "joves" "joves" "jovement") ;
|
||||
yellow_A = mkA "groc" "groga" "grocs" "grogues" "grogament" ;
|
||||
young_A = mkA "jove" "jove" "joves" "joves" "jovement" ;
|
||||
do_V2 = dirV2 (verbV (fer_56 "fer")) ;
|
||||
now_Adv = mkAdv "ara" ;
|
||||
already_Adv = mkAdv "ja" ;
|
||||
|
||||
@@ -96,11 +96,11 @@ oper
|
||||
|
||||
mkAdjFull : (x1,_,_,_,_,x6 : Str) -> Adj = \bon,bo,prima,prims,primes,primament ->
|
||||
{s = table {
|
||||
ASg Masc AAttr => bon ;
|
||||
ASg Masc APred => bo ;
|
||||
ASg Fem _ => prima ;
|
||||
APl Masc => prims ;
|
||||
APl Fem => primes ;
|
||||
AAttrMasc => bon ;
|
||||
AF Masc Sg => bo ;
|
||||
AF Fem Sg => prima ;
|
||||
AF Masc Pl => prims ;
|
||||
AF Fem Pl => primes ;
|
||||
AA => primament
|
||||
}
|
||||
} ;
|
||||
@@ -121,8 +121,8 @@ oper
|
||||
let fond = Predef.tk 1 fondo
|
||||
in adjBlau fondo (fond + "a") ;
|
||||
|
||||
adjBo : (bo,bon : Str) -> Adj = \bo,bon ->
|
||||
mkAdjFull bon bo (bon + "a") (bon + "s") (bon + "es") (bon + "ament") ;
|
||||
adjBo : (bo,bon,be : Str) -> Adj = \bo,bon,be ->
|
||||
mkAdjFull bon bo (bon + "a") (bon + "s") (bon + "es") be ;
|
||||
|
||||
adjFidel : Str -> Adj = \fidel ->
|
||||
let fidels : Str = case (last fidel) of {
|
||||
|
||||
@@ -12,6 +12,8 @@ lincat
|
||||
Sub100 = {s : CardOrd => Str ; n : Number} ;
|
||||
Sub1000 = {s : CardOrd => Str ; n : Number} ;
|
||||
Sub1000000 = {s : CardOrd => Str ; n : Number} ;
|
||||
Sub1000000000 = {s : CardOrd => Str ; n : Number} ;
|
||||
Sub1000000000000 = {s : CardOrd => Str ; n : Number} ;
|
||||
|
||||
|
||||
-- Auxiliaries
|
||||
@@ -125,7 +127,9 @@ lin
|
||||
pot3plus n m =
|
||||
{s= \\co => (table {Sg => []; Pl => (n.s ! co)} ! n.n) ++ "mil" ++ (m.s !co);
|
||||
n= Pl} ;
|
||||
|
||||
|
||||
pot3as4 n = n ;
|
||||
pot4as5 n = n ;
|
||||
|
||||
param
|
||||
DForm = unit | teen | ten | tenplus | Aunit | OrdF ;
|
||||
|
||||
@@ -334,25 +334,31 @@ oper
|
||||
|
||||
makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False ; isPol = False ; isNeg = False} ** {lock_NP = <>} ;
|
||||
|
||||
mk5A a b c d e =
|
||||
compADeg {s = \\_ => (mkAdj a b c d e).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||
mk2A a b = compADeg {s = \\_ => (mkAdj2Reg a b).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
|
||||
mk5A a b c d e = compADeg (mkAdj a b c d e) ;
|
||||
mk2A a b = compADeg (mkAdj2Reg a b) ;
|
||||
regA a = compADeg (mkAdjReg a) ;
|
||||
prefA = overload {
|
||||
prefA : A -> A = \a -> a ** {isPre = True} ;
|
||||
prefA : Str -> Str -> A = \bo,bon ->
|
||||
compADeg (lin A {s = \\_ => (adjBo bo bon).s ; isPre = True ; copTyp = serCopula}) ;
|
||||
let adj : A = compADeg (adjBo bo bon (bon+"ament")) ; -- not sure if there is any actual adjective that behaves like this /IL
|
||||
in adj ** {isPre = True} ;
|
||||
prefA : (bo,bon,be : Str) -> A = \bo,bon,be ->
|
||||
let adj : A = compADeg (adjBo bo bon be) ;
|
||||
in adj ** {isPre = True} ;
|
||||
} ;
|
||||
|
||||
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
|
||||
|
||||
mkADeg a b =
|
||||
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ;
|
||||
isPre = a.isPre ; copTyp = serCopula ; lock_A = <>} ;
|
||||
compADeg a =
|
||||
{s = table {Posit => a.s ! Posit ; _ => \\f => "més" ++ a.s ! Posit ! f} ;
|
||||
isPre = a.isPre ; copTyp = a.copTyp ;
|
||||
lock_A = <>} ;
|
||||
mkADeg a b = a ** {
|
||||
compar = \\num => b.s ! AF Masc num ; -- millor, millors
|
||||
isDeg = True } ;
|
||||
compADeg a = lin A
|
||||
{s = a.s ;
|
||||
compar = \\_ => nonExist ;
|
||||
isPre = False ; -- default values
|
||||
copTyp = serCopula ;
|
||||
isDeg = False
|
||||
} ;
|
||||
regADeg a = compADeg (regA a) ;
|
||||
|
||||
mkAdv x = ss x ** {lock_Adv = <>} ;
|
||||
@@ -440,7 +446,7 @@ oper
|
||||
|
||||
special_ppV ve pa = {
|
||||
s = table {
|
||||
VPart g n => (regA pa).s ! Posit ! genNum2Aform g n ;
|
||||
VPart g n => (regA pa).s ! genNum2Aform g n ;
|
||||
p => ve.s ! p
|
||||
} ;
|
||||
lock_V = <> ;
|
||||
@@ -518,7 +524,7 @@ oper
|
||||
mk2A : (lleig,lletja : Str) -> A ;
|
||||
regA : Str -> A ;
|
||||
mkADeg : A -> A -> A ;
|
||||
compADeg : A -> A ;
|
||||
compADeg : Adj -> A ;
|
||||
regADeg : Str -> A ;
|
||||
prefA : overload {
|
||||
prefA : A -> A ; -- gran
|
||||
|
||||
@@ -4,26 +4,58 @@ concrete AdjectiveChi of Adjective = CatChi ** open ResChi, Prelude in {
|
||||
|
||||
PositA a = a ** {hasAdA = False} ;
|
||||
|
||||
--ComparA a np = complexAP (a.s ++ than_s ++ np.s) ;
|
||||
ComparA a np = complexAP (than_s ++ np.s ++ a.s) ;
|
||||
ComparA a np = a ** {
|
||||
s = table {_=> than_s ++ linNP np ++ a.s!Attr};
|
||||
hasAdA = False
|
||||
|
||||
UseComparA a = complexAP (geng_s ++ a.s) ;
|
||||
};
|
||||
|
||||
AdjOrd ord = complexAP ord.s ;
|
||||
UseComparA a = a ** {
|
||||
s = table { _=> geng_s ++ a.s!Attr};
|
||||
hasAdA = False
|
||||
};
|
||||
|
||||
-- CAdvAP ad ap np = complexAP (ap.s ++ ad.s ++ ad.p ++ np.s) ;
|
||||
CAdvAP ad ap np = complexAP (ad.s++ np.s++ad.p++ap.s ) ; --modified by ChenPeng 11.24
|
||||
AdjOrd ord = ord ** {
|
||||
s = table {
|
||||
adjPlace => ord.s
|
||||
-- Attr => ord.s; --"first is he" ;
|
||||
-- Pred => ord.s --"he is first"
|
||||
} ;
|
||||
hasAdA = False;
|
||||
monoSyl = True -- to do and figure out in relation to Ord = {s : Str}
|
||||
};
|
||||
|
||||
ComplA2 a np = complexAP (appPrep a.c2 np.s ++ a.s) ;
|
||||
CAdvAP ad ap np = ap ** {
|
||||
s = table {adjPlace => ad.s ++ linNP np ++ ad.p ++ ap.s!adjPlace}
|
||||
};
|
||||
|
||||
ReflA2 a = complexAP (a.s ++ appPrep a.c2 reflPron) ;
|
||||
ComplA2 a np = a ** {
|
||||
s= table { adjPlace => appPrep a.c2 (linNP np) ++ a.s!adjPlace};
|
||||
hasAdA = False
|
||||
};
|
||||
|
||||
SentAP ap sc = complexAP (ap.s ++ sc.s) ;
|
||||
|
||||
AdAP ada ap = {s = ada.s ++ ap.s ; monoSyl = False ; hasAdA = True} ;
|
||||
ReflA2 a = a ** {
|
||||
s = table {adjPlace => a.s!adjPlace ++ appPrep a.c2 reflPron};
|
||||
hasAdA = False
|
||||
};
|
||||
|
||||
|
||||
SentAP ap sc = ap ** {
|
||||
s = table { adjPlace => ap.s ! adjPlace ++ sc.s }
|
||||
} ;
|
||||
|
||||
-- AdAP ada ap = {s = ada.s ++ ap.s ; monoSyl = False ; hasAdA = True} ;
|
||||
AdAP ada ap = ap ** {
|
||||
s = table { adjPlace => ada.s ++ ap.s ! adjPlace };
|
||||
monoSyl = False;
|
||||
hasAdA = True
|
||||
};
|
||||
|
||||
UseA2 a = a ** {hasAdA = False} ;
|
||||
|
||||
AdvAP ap adv = complexAP (adv.s ++ ap.s) ; ----
|
||||
|
||||
AdvAP ap adv = ap ** {
|
||||
s = table { adjPlace => adv.s ++ ap.s ! adjPlace }
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
concrete AdverbChi of Adverb = CatChi **
|
||||
concrete AdverbChi of Adverb = CatChi **
|
||||
open ResChi, Prelude in {
|
||||
|
||||
lin
|
||||
PositAdvAdj a = {s = a.s ++ "地" ; advType = ATManner ; hasDe = False} ; ---- for all adjs?
|
||||
PositAdvAdj a = {s = a.s!Attr ++ "地" ; advType = ATManner ; hasDe = False} ; ---- for all adjs?
|
||||
|
||||
PrepNP prep np = ss (appPrep prep np.s) ** {advType = prep.advType ; hasDe = prep.hasDe} ; --- should depend on np too ?
|
||||
PrepNP prep np = ss (appPrep prep (linNP np)) ** {advType = prep.advType ; hasDe = prep.hasDe} ; --- should depend on np too ?
|
||||
|
||||
ComparAdvAdj cadv a np = ss (a.s ++ cadv.s ++ cadv.p ++ np.s) ** {advType = ATManner ; hasDe = False} ;
|
||||
ComparAdvAdj cadv a np = ss (a.s!Attr ++ cadv.s ++ cadv.p ++ (linNP np)) ** {advType = ATManner ; hasDe = False} ;
|
||||
|
||||
ComparAdvAdjS cadv a s = ss (a.s ++ cadv.s ++ cadv.p ++ s.s) ** {advType = ATManner ; hasDe = False} ;
|
||||
ComparAdvAdjS cadv a s = ss (a.s!Attr ++ cadv.s ++ cadv.p ++ linS s) ** {advType = ATManner ; hasDe = False} ;
|
||||
|
||||
AdAdv ad adv = adv ** {s = ad.s ++ adv.s} ;
|
||||
|
||||
SubjS subj s = ss (subj.prePart ++ s.s ++ subj.sufPart) ** {advType = ATTime ; hasDe = False} ;
|
||||
SubjS subj s = ss (subj.prePart ++ linS s ++ subj.sufPart) ** {advType = ATTime ; hasDe = False} ;
|
||||
|
||||
AdnCAdv cadv = ss (cadv.s ++ conjThat) ** {advType = ATManner ; hasDe = False} ; -----
|
||||
|
||||
PositAdAAdj a = {s = a.s} ; ----
|
||||
PositAdAAdj a = {s = a.s!Attr} ; ----
|
||||
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
--# -path=.:../abstract:../common:../api:../prelude
|
||||
|
||||
concrete AllChi of AllChiAbs = LangChi, ExtraChi ;
|
||||
concrete AllChi of AllChiAbs = LangChi, ExtendChi ;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
abstract AllChiAbs =
|
||||
abstract AllChiAbs =
|
||||
Lang,
|
||||
ExtraChiAbs ;
|
||||
Extend ;
|
||||
|
||||
@@ -4,14 +4,14 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
|
||||
|
||||
-- Tensed/Untensed
|
||||
|
||||
S = {s : Str} ;
|
||||
S = Sentence ;
|
||||
QS = {s : Bool => Str} ; -- True = direct question (with ma for sentential questions)
|
||||
RS = {s : Str} ;
|
||||
SSlash = {s : Str ; c2 : Preposition} ;
|
||||
SSlash = {s : Str ; c2 : Preposition} ;
|
||||
|
||||
-- Sentence
|
||||
|
||||
Cl = Clause ; -- {s : Polarity => Aspect => Str ; np: Str ; vp: Polarity => Aspect => Str} ;
|
||||
Cl = Clause ; -- {s : Polarity => Aspect => Str ; np: Str ; vp: Polarity => Aspect => Str} ;
|
||||
|
||||
ClSlash = Clause ** {c2 : Preposition} ;
|
||||
|
||||
@@ -21,7 +21,7 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
|
||||
|
||||
QCl = {s : Bool => Polarity => Aspect => Str} ; -- True = direct question
|
||||
IP = {s : Str} ;
|
||||
IComp = {s : Str} ;
|
||||
IComp = {s : Str} ;
|
||||
IDet = {s : Str ; detType : DetType} ;
|
||||
IQuant = {s : Str} ;
|
||||
|
||||
@@ -32,7 +32,7 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
|
||||
|
||||
-- Verb
|
||||
|
||||
VP = ResChi.VP ;
|
||||
VP = ResChi.VP ;
|
||||
Comp = ResChi.VP ;
|
||||
VPSlash = ResChi.VP ** {c2 : Preposition ; isPre : Bool} ; -- whether the missing arg is before verb
|
||||
|
||||
@@ -43,7 +43,8 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
|
||||
-- Noun
|
||||
|
||||
CN = ResChi.Noun ;
|
||||
NP, Pron = ResChi.NP ;
|
||||
NP = ResChi.NP ;
|
||||
Pron = SS ;
|
||||
Det = Determiner ;
|
||||
Quant = Determiner ** {pl : Str} ;
|
||||
Predet = {s : Str} ; ----
|
||||
@@ -59,13 +60,16 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
|
||||
|
||||
-- Structural
|
||||
|
||||
Conj = {s : ConjForm => {s1,s2 : Str}} ;
|
||||
Conj = {
|
||||
s : ConjForm => {s1,s2 : Str} ; -- different form whether it's used for S, A, N, ...
|
||||
conjType : ConjType -- different placement whether it's and,or,... or if-then
|
||||
} ;
|
||||
Subj = {prePart : Str ; sufPart : Str} ;
|
||||
Prep = Preposition ;
|
||||
|
||||
-- Open lexical classes, e.g. Lexicon
|
||||
|
||||
V, VS, VQ, VA = Verb ;
|
||||
V, VS, VQ, VA = Verb ;
|
||||
V2, V2Q, V2S = Verb ** {c2 : Preposition ; hasPrep : Bool ; part : Str} ;
|
||||
V3, V2A, V2V = Verb ** {c2, c3 : Preposition ; hasPrep : Bool ; part : Str} ;
|
||||
VV = Verb ;
|
||||
@@ -76,7 +80,7 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
|
||||
N = ResChi.Noun ;
|
||||
N2 = ResChi.Noun ** {c2 : Preposition} ;
|
||||
N3 = ResChi.Noun ** {c2,c3 : Preposition} ;
|
||||
PN = ResChi.NP ;
|
||||
GN, SN, PN = SS ;
|
||||
|
||||
-- overridden
|
||||
|
||||
@@ -84,4 +88,9 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
|
||||
Tense = {s : Str ; t : Aspect} ;
|
||||
Ant = {s : Str ; t : Aspect} ;
|
||||
|
||||
linref
|
||||
S = linS ;
|
||||
Prep = linPrep ;
|
||||
VP = infVP ;
|
||||
NP = \np -> np.det ++ np.s ;
|
||||
}
|
||||
|
||||
@@ -2,35 +2,52 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin
|
||||
|
||||
lin
|
||||
|
||||
ConjS c = conjunctDistrSS (c.s ! CSent) ;
|
||||
ConjS c ss =
|
||||
let conj = c.s ! CSent
|
||||
in case c.conjType of {
|
||||
Jiu => {preJiu = conj.s1 ++ ss.s1 ++ comma ++ ss.preJiu ;
|
||||
postJiu = conj.s2 ++ ss.postJiu} ;
|
||||
NotJiu => {preJiu = conj.s1 ++ ss.s1 ++ conj.s2 ++ ss.preJiu ;
|
||||
postJiu = ss.postJiu}
|
||||
} ;
|
||||
ConjAdv c as = conjunctDistrSS (c.s ! CSent) as ** {advType = as.advType ; hasDe = as.hasDe} ; ---- ??
|
||||
ConjNP c = conjunctDistrSS (c.s ! CPhr CNPhrase) ;
|
||||
ConjAP c as = conjunctDistrSS (c.s ! CPhr CAPhrase) as ** {monoSyl = notB as.monoSyl ; hasAdA = True} ; ---- add de iff as doesn't
|
||||
ConjNP c nps = conjunctDistrSS (c.s ! CPhr CNPhrase) nps ** {det = []} ;
|
||||
ConjAP c as = conjunctDistrTable AdjPlace (c.s ! CPhr CAPhrase) as ** {monoSyl = notB as.monoSyl ; hasAdA = True} ; ---- add de iff as doesn't
|
||||
ConjRS c = conjunctDistrSS (c.s ! CSent) ;
|
||||
ConjCN c ns = conjunctDistrSS (c.s ! CPhr CNPhrase) ns ** {c = ns.c} ;
|
||||
ConjCN c ns = conjunctDistrSS (c.s ! CPhr CNPhrase) ns ** {c = ns.c} ;
|
||||
|
||||
-- These fun's are generated from the list cat's.
|
||||
|
||||
BaseS = twoSS ;
|
||||
ConsS = consrSS duncomma ;
|
||||
BaseS s t = t ** {
|
||||
s1 = linS s
|
||||
} ;
|
||||
|
||||
ConsS s ss = -- here we do the same thing actually, the crucial split has happened in BaseS
|
||||
ss ** {s1 = linS s ++ comma ++ ss.s1};
|
||||
|
||||
|
||||
BaseAdv x y = twoSS x y ** {advType = x.advType ; hasDe = y.hasDe} ; ---- ??
|
||||
ConsAdv x xs = consrSS duncomma x xs ** {advType = x.advType ; hasDe = xs.hasDe} ; ---- ??
|
||||
BaseNP = twoSS ;
|
||||
ConsNP = consrSS duncomma ;
|
||||
BaseAP x y = twoSS x y ** {monoSyl = y.monoSyl} ;
|
||||
ConsAP x xs = consrSS duncomma x xs ** {monoSyl = xs.monoSyl} ;
|
||||
BaseNP np1 np2 = twoSS (mergeNP np1) (mergeNP np2) ;
|
||||
ConsNP np nps = consrSS duncomma (mergeNP np) nps ;
|
||||
BaseAP x y = twoTable AdjPlace x y ** {monoSyl = y.monoSyl} ;
|
||||
ConsAP x xs = consrTable AdjPlace duncomma x xs ** {monoSyl = xs.monoSyl} ;
|
||||
BaseRS = twoSS ;
|
||||
ConsRS = consrSS duncomma ;
|
||||
BaseCN x y = twoSS x y ** {c = x.c} ; --- classified comes from first part ; should it rather be ge?
|
||||
ConsCN x xs = consrSS duncomma x xs ** {c = x.c} ;
|
||||
|
||||
lincat
|
||||
[S] = {s1,s2 : Str} ;
|
||||
--[S] = ConjType => {s1,s2 : Str} ;
|
||||
[S] = {s1,preJiu,postJiu : Str} ;
|
||||
[Adv] = {s1,s2 : Str ; advType : AdvType ; hasDe : Bool} ;
|
||||
[NP] = {s1,s2 : Str} ;
|
||||
[AP] = {s1,s2 : Str ; monoSyl : Bool} ;
|
||||
[AP] = {s1,s2 : AdjPlace => Str ; monoSyl : Bool} ;
|
||||
[RS] = {s1,s2 : Str} ;
|
||||
[CN] = {s1,s2 : Str ; c : Str} ;
|
||||
|
||||
oper
|
||||
mergeNP : ResChi.NP -> SS = \np -> ss (linNP np) ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user