1
0
forked from GitHub/gf-rgl

300 Commits

Author SHA1 Message Date
Krasimir Angelov
deb9d40b7e placeholders for morphological functions 2026-04-04 11:18:04 +02:00
Krasimir Angelov
25f422f5ca Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2026-04-03 16:57:43 +02:00
Krasimir Angelov
f0abf5deff added compoundV 2026-04-03 16:55:51 +02:00
Inari Listenmaa
e825d92233 (Fao) add particle to verbs e.g. "fara út" 2026-04-01 16:27:14 +02:00
Inari Listenmaa
1e436d84a1 (Ice) handle PNs that consist of multiple words 2026-04-01 16:26:14 +02:00
Inari Listenmaa
84e0e2c08f (Jpn) add GN, LN, SN + constructors 2026-04-01 16:21:58 +02:00
Inari Listenmaa
4c55592af4 make it not crash on mkPN "Jósefína" feminine 2026-04-01 15:41:22 +02:00
Inari Listenmaa
28be4fb450 add existing modules to GrammarHye 2026-04-01 15:28:28 +02:00
Krasimir Angelov
74848d304e implement UsePron 2026-03-20 08:27:46 +01:00
Krasimir Angelov
928889b2aa change NP to contain GenNum instead of Number and Gender 2026-03-20 08:14:10 +01:00
Krasimir Angelov
1d7b717866 added inherent parameters for pronouns 2026-03-20 08:04:26 +01:00
Krasimir Angelov
9d18d316c5 remove the flags 2026-03-19 17:49:58 +01:00
Krasimir Angelov
c8a4c28a51 added AdverbMkd 2026-03-19 17:48:52 +01:00
Krasimir Angelov
eeca67e787 add AdverbMkd 2026-03-19 17:45:00 +01:00
Krasimir Angelov
e8005bf071 added SlashV2a 2026-03-19 17:20:10 +01:00
Krasimir Angelov
cc1168634b added VocNP 2026-03-19 15:34:57 +01:00
Krasimir Angelov
76cbf0b75b remove the utf-8 flags 2026-03-19 15:27:53 +01:00
Krasimir Angelov
ce2f785f92 autogenerate parts of the syntax 2026-03-19 15:25:04 +01:00
Krasimir Angelov
0cd3450e08 update the paradigms 2026-03-13 10:58:41 +01:00
Krasimir Angelov
62c5030be1 fix compilation 2026-03-06 14:30:29 +01:00
Krasimir Angelov
bd41b3ccb7 Imperative -> imperative 2026-03-06 13:37:22 +01:00
Krasimir Angelov
53571672e3 started numerals in Macedonian 2026-03-03 14:59:07 +01:00
Krasimir Angelov
761597ad8c move NumeralX.inc to ParamX since it is used in many places 2026-03-03 14:34:52 +01:00
Krasimir Angelov
8e780d6263 use mair/maist for comparison 2026-02-24 08:54:13 +01:00
Krasimir Angelov
ec4bc75a64 added irregular Scots verbs 2026-02-18 15:37:16 +01:00
Krasimir Angelov
dbe6eba30a added PassV2 2026-02-18 09:08:19 +01:00
Krasimir Angelov
066133bbae fix compilation 2026-02-18 09:06:06 +01:00
Krasimir Angelov
e9ecb1a8d6 fix copula 2026-02-18 09:00:26 +01:00
Krasimir Angelov
090a6ea33d started DocumentationSwa.gf 2026-02-17 18:07:55 +01:00
Krasimir Angelov
dceb5252a2 remove the experimental AnaphPron 2026-01-08 09:03:26 +01:00
Krasimir Angelov
73fa89103b remove repeated record fields 2026-01-08 08:44:26 +01:00
Krasimir Angelov
115ad31e2d added lincat CN 2025-11-27 09:11:24 +01:00
Krasimir Angelov
f715e393cb fix the lock field in mkPrep 2025-11-17 14:01:14 +01:00
Krasimir Angelov
5e6ee94baa added TPastSimple 2025-11-16 13:22:01 +01:00
Krasimir Angelov
a73b6ad6ed fixes to make the WordNet compile 2025-11-16 08:52:14 +01:00
Krasimir Angelov
06f3602e00 fix compilation with the old type checker 2025-11-14 14:32:30 +01:00
Krasimir Angelov
c7fe453c12 use consistent lin X everywhere 2025-11-14 14:12:57 +01:00
Krasimir Angelov
48658e3689 fix some of the nouns 2025-11-14 10:52:59 +01:00
Krasimir Angelov
ffc10a32c9 guessed VocNP, UttCN, UttAP 2025-11-06 13:47:58 +01:00
Krasimir Angelov
fff1c40f24 added UttNP 2025-11-06 12:54:45 +01:00
Krasimir Angelov
fd817f80d6 add a lock field 2025-11-06 12:51:53 +01:00
Krasimir Angelov
b84d05034d more type signatures 2025-11-06 12:46:05 +01:00
Krasimir Angelov
d589cedc6b fix typechecking with the normal type checker 2025-11-06 12:41:31 +01:00
Krasimir Angelov
d833b24509 added AdjCN 2025-11-06 12:36:28 +01:00
Krasimir Angelov
071b2af9c3 added gaelic 2025-11-06 11:53:36 +01:00
Krasimir Angelov
1f5615c0bb missed AllGlaAbs.gf 2025-11-06 11:53:22 +01:00
Krasimir Angelov
fda1f49d17 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2025-11-06 11:48:06 +01:00
Krasimir Angelov
6b93e87363 merge of the manual and automatic grammars 2025-11-06 11:47:31 +01:00
Aarne Ranta
f4aae6a61a Merge pull request #466 from hleiss/corrections
(Ger) Corrections in Cat, Irreg, Lexicon ; added QVP in Question and GenIP, GenModIP in Extend
2025-10-31 17:18:05 +01:00
Krasimir Angelov
066d6f9c85 fix type errors with the old type checker 2025-10-27 10:00:29 +01:00
Krasimir Angelov
3e51c585ce fix mkA008 2025-10-27 09:51:16 +01:00
Krasimir Angelov
bba1de3605 fix type errors with the old type checker 2025-10-27 09:46:22 +01:00
Krasimir Angelov
4514ebfc00 fix type errors with the old type checker 2025-10-27 09:43:01 +01:00
Krasimir Angelov
cf947426dc extended documentation 2025-10-25 12:40:02 +02:00
Krasimir Angelov
7383b30cee started with documentation 2025-10-25 12:07:43 +02:00
Krasimir Angelov
c604bd3b77 added Sub1000000000 and Sub1000000000000 2025-10-25 11:15:21 +02:00
Krasimir Angelov
8e63f9b32d fix conflicts 2025-10-25 08:21:28 +02:00
Krasimir Angelov
1aed4c3b5f added missig functions 2025-10-25 08:20:33 +02:00
Hans Leiß
78564236b9 Merge branch 'GrammaticalFramework:master' into corrections 2025-10-05 19:15:50 +02:00
Krasimir Angelov
35a650141e fix UseN and PositA 2025-10-05 09:47:31 +02:00
Krasimir Angelov
5146748f37 added armenian 2025-10-04 19:44:23 +02:00
Hans Leiss
4bf528a429 (Ger) Implemented QVP in Question, GenIP and GenModIP in Extend 2025-09-28 18:15:45 +02:00
Krasimir Angelov
4a0cc4ec40 added linref for verbs and lincat for names 2025-09-26 07:31:56 +02:00
Krasimir Angelov
a5f4679405 refactor the noun paradigms 2025-09-26 07:24:08 +02:00
Krasimir Angelov
cad17e8404 fill in the neuter forms for adjectives 2025-09-26 06:20:16 +02:00
Krasimir Angelov
c9182284e7 added Belarusian 2025-09-25 21:54:33 +02:00
Krasimir Angelov
9649f348b2 a better table for nouns 2025-09-25 13:09:10 +02:00
Krasimir Angelov
3e066bd7ec Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2025-09-25 13:02:41 +02:00
Krasimir Angelov
7d4e40bac1 added Ukrainian 2025-09-25 13:02:21 +02:00
Hans Leiss
7e52a4759c (Ger) Corrections in Cat, Res, Lexicon, Structural, Morpho, Paradigms and Questions 2025-09-21 21:05:43 +02:00
Aarne Ranta
f01d509376 word order in Ger CompCN and CompNP: RS in ext part, adv before it; agr for CompCN todo 2025-09-18 20:36:03 +02:00
Krasimir Angelov
153ad8b41a added type signatures 2025-09-11 10:07:38 +02:00
Krasimir Angelov
5375cda243 add type signatures to keep the old type checker happy 2025-09-11 10:04:27 +02:00
Krasimir Angelov
e76e11e566 added PhraseKaz 2025-09-11 09:57:32 +02:00
Krasimir Angelov
bc41082247 added UttS 2025-09-11 09:50:53 +02:00
Krasimir Angelov
0e5bb779cc Particle->Participle 2025-09-10 19:44:07 +02:00
Krasimir Angelov
08aa91cdbb better inflection tables 2025-09-10 19:41:28 +02:00
Krasimir Angelov
7d695a6d49 fix typo 2025-09-10 19:40:57 +02:00
Krasimir Angelov
febd99be26 add faroese 2025-09-10 17:19:26 +02:00
Krasimir Angelov
7016ce8a32 bootstrapped faroese 2025-09-10 16:38:50 +02:00
Krasimir Angelov
1b57ef7fee added lindef for VPSlash 2025-09-09 11:58:17 +02:00
Krasimir Angelov
cd581dc6ac fix -ing -> -in 2025-09-07 11:55:39 +02:00
Krasimir Angelov
5b588daf85 forgot AllScoAbs 2025-09-07 08:59:56 +02:00
Krasimir Angelov
35a6456524 getting started on Scots 2025-09-07 08:19:10 +02:00
Krasimir Angelov
141074bec3 typo infitive -> infinitive 2025-09-04 16:19:12 +02:00
Krasimir Angelov
e78497e46d added CompoundN 2025-08-29 22:35:56 +02:00
Krasimir Angelov
52b6305cf2 a linref for verbs which shows P3 Sg 2025-08-29 13:11:25 +02:00
Krasimir Angelov
1cd582a322 added NamesLav.gf 2025-08-29 12:54:59 +02:00
Krasimir Angelov
2ff33ea968 added AdvS 2025-08-29 09:26:26 +02:00
Krasimir Angelov
b2e2b570e1 added trivial functions 2025-08-29 09:15:10 +02:00
Krasimir Angelov
4644ef0229 added pot3as4 and potas5 2025-08-29 08:33:35 +02:00
Krasimir Angelov
f546600fd2 TPastSimple in Latin and Hungarian 2025-08-29 07:02:44 +02:00
Krasimir Angelov
9c951e244c Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2025-08-28 19:36:09 +02:00
Krasimir Angelov
5cb67dadbf NON_EXISTANT -> nonExist 2025-08-28 19:35:49 +02:00
Inari Listenmaa
39f6a43717 fix Sg Dat for class 1B nouns 2025-08-28 17:18:58 +02:00
Inari Listenmaa
81f3531136 Merge pull request #464 from inariksit/gaelic
WIP: Gaelic RG
2025-08-28 16:02:42 +02:00
Inari Listenmaa
9f21a3d103 add the correct word for bird (tunnag is "duck") 2025-08-28 16:01:58 +02:00
Inari Listenmaa
e14833217e TODO notes 2025-08-28 15:47:14 +02:00
Inari Listenmaa
8c25bdeacc add lenition in the case table as separate dimension for Nom and Dat 2025-08-28 15:43:56 +02:00
Inari Listenmaa
d652c81fa7 WIP more preposition contractions + phonological mutation rules 2025-08-27 17:22:33 +02:00
Inari Listenmaa
ed745708b2 massive restructure, very broken, will fix later 2025-08-26 17:07:07 +02:00
Krasimir Angelov
625ddf1e1e added lindef VP 2025-08-26 16:40:42 +02:00
Krasimir Angelov
512412b4bb added invarA 2025-08-26 16:30:13 +02:00
Inari Listenmaa
d4056e7db3 add pronouns, very much WIP (no object forms, possessives) 2025-08-25 17:01:43 +02:00
Inari Listenmaa
c85e7a514b Add some prepositions, merge with pronouns (TODO: merge with articles too) 2025-08-25 17:01:43 +02:00
Inari Listenmaa
a539db3d55 allomorphs for definite article 2025-08-25 17:01:43 +02:00
Inari Listenmaa
b8d9098aaa add more words 2025-08-25 17:01:43 +02:00
Inari Listenmaa
1c87e5ac78 misc fixes in morpho (works for 4 nouns!) 2025-08-25 17:01:43 +02:00
Inari Listenmaa
4f5e67a581 make leaner param for CN (morpho still as wrong as always) 2025-08-25 17:01:43 +02:00
Inari Listenmaa
cabf56aea9 still broken but in a different way 2025-08-25 17:01:43 +02:00
Inari Listenmaa
4b78bd6c67 yep the morpho sucks, but let's fix it in next commits 2025-08-25 17:01:43 +02:00
Inari Listenmaa
c9c1723090 some morphology I pulled out of my ass 2025-08-25 17:01:43 +02:00
Inari Listenmaa
1f3a35a95c start Gla by cloning the template 2025-08-25 17:01:43 +02:00
Krasimir Angelov
3aeb0707f5 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2025-08-22 19:43:34 +02:00
Krasimir Angelov
94472bc4ab make sure that DocumentationLat is always compiled 2025-08-22 19:43:13 +02:00
Inari Listenmaa
e3c9a0045e (Ger) Fix complement number agreement with AgPlPol
"Sie sind ein Vogel", not *Sie sind Vögel
2025-08-22 14:50:35 +02:00
Inari Listenmaa
97227181fe (Ara) add the preposition ka 'كَ' which attaches to its head 2025-08-22 14:27:10 +02:00
Inari Listenmaa
f2afe03303 fix example in arabic documentation 2025-08-22 14:03:29 +02:00
Krasimir Angelov
75d291d26a Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2025-08-18 19:14:13 +02:00
Krasimir Angelov
338c347d7c another version of CompoundN 2025-08-18 19:13:53 +02:00
Krasimir Angelov
e24e0cc7ce number agreement when there is no preposition 2025-08-18 18:42:40 +02:00
Inari Listenmaa
51cb9c3091 the latest tag is called release-3.12, use it here 2025-08-12 15:29:06 +02:00
Inari Listenmaa
b84cbcfc28 Merge pull request #463 from inariksit/release-morphodict
Build morphodict and put in GF_LIB_PATH
2025-08-12 15:18:27 +02:00
Inari Listenmaa
de5468e40a control morphodict from Makefile (easy to comment out if desired) 2025-08-12 15:13:51 +02:00
Inari Listenmaa
b93fd7f051 add morphodict into Setup.hs 2025-08-12 15:13:19 +02:00
Inari Listenmaa
5aa5718ca5 add MorphoDict to languages.csv 2025-08-12 15:00:45 +02:00
Krasimir Angelov
fd0706fbc1 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2025-08-12 11:13:50 +02:00
Krasimir Angelov
145e1affe9 added missing bits and pieces 2025-08-12 11:13:29 +02:00
Inari Listenmaa
3d0aa460c5 build morphodict 2025-08-11 15:32:05 +02:00
Inari Listenmaa
a0a8d99872 don't use record extension with PTypes
the current (non-majestic) runtime doesn't support it
2025-08-11 14:43:38 +02:00
Inari Listenmaa
cdc1108a36 update GitHub workflows for GF 3.12 + newer runner 2025-08-11 14:40:02 +02:00
Krasimir Angelov
1308eb85d9 fix type errors detected by the new type checker 2025-08-07 13:35:36 +02:00
Krasimir Angelov
42d06dfafd added some missing funs and cats 2025-08-07 12:19:10 +02:00
Krasimir Angelov
04df53a17a remove dead code as detected by the new typechecker 2025-05-21 14:43:45 +02:00
Krasimir Angelov
41906a31c4 TTAnt must be reimplemented for Bulgarian after we changed the tenses 2025-05-21 13:46:25 +02:00
Krasimir Angelov
2d22802af4 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2025-05-21 13:45:46 +02:00
Krasimir Angelov
76f09c2464 fix vocative for paradigm N008b 2025-05-21 13:45:26 +02:00
Inari Listenmaa
1825904f4d (Chi) add mkAdv instance that doesn't pattern match any strings 2025-05-09 15:29:21 +02:00
Krasimir Angelov
3f4fd4565a better table layout 2025-03-26 18:23:38 +01:00
Krasimir Angelov
11d4f0c770 better table layout 2025-03-26 18:22:53 +01:00
Krasimir Angelov
574ed858bc Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2025-03-26 14:50:07 +01:00
Krasimir Angelov
176d63f0ac initial documentation module for Romanian 2025-03-26 14:49:47 +01:00
Aarne Ranta
607d9240c2 Merge pull request #460 from hleiss/master
(Ger) Added missing linearizations pot21 to pot5plus in NumeralGer
2025-03-17 08:02:35 +01:00
Hans Leiss
35f3b5e206 (Ger) Added missing linearizations pot21 to pot5plus 2025-03-16 15:34:46 +01:00
Aarne Ranta
ababe72fb8 started adding capital letters to Gre.FemAccFinalN; most letters still todo 2025-03-12 16:32:40 +01:00
Aarne Ranta
693cd88f7b heuristic rule for Gre mkPN 2025-02-13 10:43:17 +01:00
Krasimir Angelov
44eec8629b added Extend modules for Hindi, Urdu, Mongolian 2025-02-09 10:15:55 +01:00
Krasimir Angelov
ebba8b5894 for prepositions show the case as well 2025-02-09 09:15:03 +01:00
Krasimir Angelov
1633d11e06 added documentation and some missing paradigm functions 2025-02-08 22:03:10 +01:00
Krasimir Angelov
9e91511724 added mkInterj 2025-02-07 18:32:35 +01:00
Krasimir Angelov
777e572681 added missing paradigm functions 2025-02-07 18:24:27 +01:00
Krasimir Angelov
186a12df0c added linref and lindef for V2 and V3 2025-02-05 11:45:20 +01:00
Krasimir Angelov
904428fb36 don't show indefinte superlative adjectives 2025-02-05 10:53:56 +01:00
Krasimir Angelov
8723bde58e fixes 2025-02-05 09:49:28 +01:00
Krasimir Angelov
7b777c425e more in the documentation 2025-02-05 09:22:01 +01:00
Krasimir Angelov
f3811e8a0e Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2025-02-05 08:30:24 +01:00
Krasimir Angelov
f03d06b81d started DocumentationLav and ExtendLav 2025-02-05 08:30:04 +01:00
Aarne Ranta
6876b79d43 added MarkupFre to LangFre 2025-02-02 15:32:17 +01:00
Inari Listenmaa
33bd050b7a also remove lincat Voc from Kaz 2025-01-24 15:09:18 +01:00
Inari Listenmaa
08793614ab also remove redundant lincats Voc,PConj,Phr,Utt from Sqi 2025-01-24 15:08:17 +01:00
Inari Listenmaa
70e41e47a7 remove redundant lincat Interj (inherited from CommonX) 2025-01-24 14:57:46 +01:00
Inari Listenmaa
66b5e4108f add empty file for MorphoDictChi (TODO populate from WN) 2025-01-24 14:44:35 +01:00
aarneranta
8613a78929 changed a runtime + to BIND in Amharic 2024-12-20 11:17:11 +01:00
Krasimir Angelov
643ea07c3b support unarticulated adjectives 2024-12-08 13:39:55 +01:00
Krasimir Angelov
c6d43a8bbc improve morphology 2024-12-08 13:37:37 +01:00
Krasimir Angelov
1b6f42397d progress on the grammar 2024-12-07 22:17:32 +01:00
Krasimir Angelov
bcf5db743f bugfixes 2024-12-07 20:23:49 +01:00
Krasimir Angelov
02456811ee fix typo 2024-12-07 20:20:10 +01:00
Krasimir Angelov
dcbfb2a464 show word class 2024-12-07 17:53:17 +01:00
Krasimir Angelov
5e02340160 added that_Quant 2024-12-06 06:47:48 +01:00
Krasimir Angelov
4e034425b9 added this_Quant 2024-12-05 21:57:03 +01:00
Krasimir Angelov
7b7752c308 added pronouns 2024-12-05 19:32:22 +01:00
Krasimir Angelov
108bfb4163 added basic syntax 2024-12-05 19:13:13 +01:00
Krasimir Angelov
d8aaeeb682 support linking clitic 2024-12-05 18:23:28 +01:00
Krasimir Angelov
ffaedd718b fix pattern matching error 2024-12-05 16:40:51 +01:00
Krasimir Angelov
b01b94001e added good_A 2024-12-05 16:33:54 +01:00
Krasimir Angelov
dc143cc3ae nicer inflection table for adjectives 2024-12-05 16:31:52 +01:00
Krasimir Angelov
0a1df37340 fill in the inflection tables for adjectives 2024-12-05 16:22:05 +01:00
Krasimir Angelov
ad3fa455b1 another update + rename Alb to Sqi 2024-12-05 14:47:29 +01:00
Krasimir Angelov
b82bcde9f1 improved morphology 2024-12-05 12:42:54 +01:00
Krasimir Angelov
6fcf76e78e added two examples 2024-12-04 11:30:15 +01:00
Krasimir Angelov
aa4dc4c3df added documentation 2024-12-04 11:28:13 +01:00
Krasimir Angelov
3891cef66a added Albanian 2024-12-04 10:31:43 +01:00
Krasimir Angelov
8e47600671 update after changes in the rgl-learner 2024-12-04 07:55:20 +01:00
Krasimir Angelov
89f2a9dea6 update the morphology after the change in the rgl-learner 2024-12-03 20:06:49 +01:00
EkaterinaVoloshina
6b5df036e3 added a contruction; fixed negation 2024-11-26 21:26:54 +01:00
Krasimir Angelov
3dae1cf820 make the noun table even more similar to the one in Turkish 2024-11-11 15:49:49 +01:00
Krasimir Angelov
c4f94ab218 make the noun table two dimensional 2024-11-11 13:32:28 +01:00
Krasimir Angelov
d626f03c48 started documentation 2024-11-11 13:12:54 +01:00
Krasimir Angelov
93a06312a7 cleanup the lincat for V 2024-11-11 13:11:29 +01:00
Krasimir Angelov
d2754c1623 fix the order of cases 2024-11-10 19:54:54 +01:00
Krasimir Angelov
d77c8fa23c added Kazakh morphology 2024-11-10 19:49:50 +01:00
Krasimir Angelov
164cf81477 minimal extensions to Numeral 2024-11-03 20:07:06 +01:00
Krasimir Angelov
4add2fb2de more lexicon building functions 2024-11-03 19:06:18 +01:00
Krasimir Angelov
37e08ad739 support for compounding nouns 2024-11-01 09:15:55 +01:00
Krasimir Angelov
466c7da532 support for aspectual verb pairs 2024-11-01 07:45:59 +01:00
Krasimir Angelov
e8bda853df remove spurious paradigms 2024-10-31 19:26:56 +01:00
Krasimir Angelov
f8bb75a13c added pronouns 2024-10-31 16:14:35 +01:00
Krasimir Angelov
576e17f03a linref for adjectives 2024-10-31 13:47:41 +01:00
Krasimir Angelov
a235cc9594 fixes for verbs 2024-10-31 13:29:48 +01:00
Krasimir Angelov
abf4cd4cb2 support for reflexive verbs 2024-10-31 13:21:27 +01:00
Krasimir Angelov
9e52b2d8a3 linref for nouns 2024-10-31 13:04:13 +01:00
Krasimir Angelov
1111ca0fdd overloaded compoundN 2024-10-31 12:57:46 +01:00
Krasimir Angelov
4de1b64b58 added compound nouns 2024-10-31 10:44:18 +01:00
Krasimir Angelov
f0d74e59a7 forgot the documentation 2024-10-31 09:48:38 +01:00
Krasimir Angelov
a2b20dc6db Macedonian morphology 2024-10-31 09:37:41 +01:00
Krasimir Angelov
21d1a192c8 added linrefs for verbs 2024-10-22 22:26:17 +02:00
Krasimir Angelov
e99bdb6d1a added mkMU 2024-10-22 21:49:22 +02:00
Krasimir Angelov
d44298a4ad added QuantityNP and mkMU 2024-10-22 20:41:16 +02:00
Krasimir Angelov
89dc2a13f0 added NamesIna 2024-10-22 20:26:18 +02:00
Krasimir Angelov
6dfce2943c added ExtendIna 2024-10-22 08:05:50 +02:00
Krasimir Angelov
0814c9da0f added Extend(Dan|Nor|Nno) 2024-10-20 20:09:02 +02:00
Krasimir Angelov
bb7786af7c added documentaion and missing paradigm functions 2024-10-20 17:11:42 +02:00
Krasimir Angelov
650076a867 fix typo N3->N2 2024-10-20 17:11:00 +02:00
Krasimir Angelov
5b636496ef added LN,GN,SN 2024-10-15 16:38:34 +02:00
Krasimir Angelov
41dfd532bd forgot the file 2024-10-15 15:43:51 +02:00
Krasimir Angelov
26e89421d3 Documentation and Names in Danish 2024-10-15 15:42:33 +02:00
Krasimir Angelov
e7a4b71160 Documentation in Bokmål 2024-10-15 15:14:18 +02:00
Krasimir Angelov
81c71043ca Documentation for Nynorsk 2024-10-15 14:36:03 +02:00
Krasimir Angelov
9217669c31 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2024-10-15 14:20:31 +02:00
Krasimir Angelov
cc964d1853 added the documentation module 2024-10-15 14:20:14 +02:00
Krasimir Angelov
62b5df23d1 some missing bits in Greek 2024-10-10 13:44:54 +02:00
aarneranta
e63a3c9d17 fixed ExtendSwe/VPS in accordance with Ger 2024-09-04 15:03:50 +02:00
Aarne Ranta
d895f4ceeb MorphoDictSpa copied from DictSpa 2024-07-30 17:02:36 +02:00
Aarne Ranta
ba2e4a4964 added Extend.SubjunctRelCN 2024-07-30 08:44:01 +02:00
Aarne Ranta
78f333e79e added a case to MakeStructuralFre.mkDet 2024-07-29 18:03:09 +02:00
Aarne Ranta
710e73688d in Formal.usePrec, removed variant parenthOpt for a better control of parentheses ; use Formal.parenth explicitly if you want to parse superfluous parentheses 2024-07-29 17:44:05 +02:00
Aarne Ranta
82075be37b corrected the formal subject of ExistsNP in Fre 2024-07-26 17:33:32 +02:00
Aarne Ranta
7d631fafa2 put RelVPS into RomanceFunctor and also inherited other VPS functions from there 2024-07-26 17:22:17 +02:00
Aarne Ranta
78fc625174 added VPS functions to Romance Extend modules 2024-07-26 16:47:43 +02:00
Krasimir Angelov
afe544bb29 added anteriority 2024-07-25 21:13:37 +02:00
Krasimir Angelov
ca385925b6 PassAgentVPSlash 2024-07-25 18:41:34 +02:00
Krasimir Angelov
4173353eb0 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2024-07-25 18:23:55 +02:00
Krasimir Angelov
5135e5c5ca started relative clauses 2024-07-25 18:23:35 +02:00
Krasimir Angelov
b1a5cf93b6 added PositAdAAdj 2024-07-25 18:16:12 +02:00
Aarne Ranta
911cbb06c1 MorphoDictPor 2024-07-25 12:01:19 +02:00
Aarne Ranta
71f3b2dc78 MakeStructural.mkDet in Ita and Por 2024-07-25 11:55:55 +02:00
Aarne Ranta
23ccacf222 mkStrongDet, mkWeakDet in MakeStructuralGer 2024-07-25 09:18:31 +02:00
Krasimir Angelov
d3ecaadef0 implement ProgrVP 2024-07-24 19:57:23 +02:00
Krasimir Angelov
4bb96aa295 mark notpresent 2024-07-24 09:51:10 +02:00
Krasimir Angelov
d198de7395 added PassV2, PassVPSlash 2024-07-24 09:48:08 +02:00
Krasimir Angelov
9b12c13057 added ExtAdvVP, AdvVPSlash, AdVVPSlash 2024-07-24 08:23:29 +02:00
Krasimir Angelov
4f05d5629b added UttVPShort 2024-07-24 08:17:33 +02:00
Krasimir Angelov
6648913d4e Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2024-07-24 08:05:15 +02:00
Krasimir Angelov
05c65ccbd8 verbal morphology is not syntactic. added negation 2024-07-24 08:04:35 +02:00
Aarne Ranta
d18b889df6 one more fix word order in ExtendGer.PredVPS ; not yet correct for Sub with ConjVPS 2024-07-22 23:59:55 +02:00
Aarne Ranta
6084aef91b trying to fix word order in ExtendGer.PredVPS ; not yet correct for Sub 2024-07-22 23:47:03 +02:00
Aarne Ranta
687f0cefc8 lost AP.ext in CompAP restored, Inv worder still to be fixed 2024-07-22 21:10:50 +02:00
Aarne Ranta
479fe7236f took away duplicates of Structural from MorphoDictEng in conformance with the other MorphoDicts 2024-07-19 18:15:31 +02:00
Aarne Ranta
15ecf3217c fixed import Cat in MorphoDictFinAbs 2024-07-18 19:17:12 +02:00
Aarne Ranta
1f98f642af DictFre copied to MorphoDict 2024-07-17 18:00:52 +02:00
Krasimir Angelov
65a05d223b various extensions in Turkish 2024-07-08 21:58:00 +02:00
Krasimir Angelov
f36bbade45 added CompoundN 2024-06-14 17:02:04 +02:00
Krasimir Angelov
c2b8d98400 fix AdvVPSlash 2024-06-14 10:53:59 +02:00
Krasimir Angelov
d182354238 fix AdvVPSlash and PastPartAP 2024-06-14 10:34:17 +02:00
Krasimir Angelov
1fbec65714 PastPartAP, PastPartAgentAP in French 2024-06-05 12:49:54 +02:00
Krasimir Angelov
d059de5711 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2024-06-05 12:48:51 +02:00
Krasimir Angelov
7a8cdf5c3d AdvVPSlash and AdVVPSlash 2024-06-05 12:48:24 +02:00
Aarne Ranta
03e81a3fab ImpP3 in Ita, Swe ; order fixed in Fre (but not necessarily the only correct one) 2024-05-07 15:53:33 +02:00
Krasimir Angelov
18716dbbd5 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2024-05-07 12:43:24 +02:00
Krasimir Angelov
44171d7d73 added VPS 2024-05-07 12:43:03 +02:00
aarneranta
726d04f00f made lincat LN = NP in Arabic, to deal with all names; also added mkLN Str Gender 2024-04-18 10:14:28 +02:00
aarneranta
a251318dad Fin linref NP: Nom, not Acc 2024-04-11 14:11:58 +02:00
Aarne Ranta
2363da4b2f Croatian GenRP corrected 2024-04-03 18:47:59 +02:00
Aarne Ranta
cd3a2e0ac4 unverified definitions of some Croatian functions 2024-04-03 17:44:00 +02:00
Krasimir Angelov
a0c8198a68 guessed DetDAP and UseDAP* 2024-04-03 16:29:39 +02:00
Krasimir Angelov
70223e85f2 guessed QuantityNP and the MU category 2024-04-03 14:25:12 +02:00
Ekaterina Voloshina
b404f4e5b3 fixed cases with ComplSlash (#459)
* fixed Slash functions

* fixed ComplSlash

---------

Co-authored-by: Krasimir Angelov <kr.angelov@gmail.com>
2024-03-25 14:10:47 +01:00
Krasimir Angelov
e7dd5304c7 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2024-03-23 09:07:40 +01:00
Krasimir Angelov
0df8e6da39 ConjCN,BaseCN,ConsCN in Dutch and Slovenian 2024-03-23 09:07:07 +01:00
aarneranta
bd75a0529c Ara.ExtAdvS 2024-03-22 13:51:20 +01:00
Krasimir Angelov
4957955df0 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2024-03-22 06:19:25 +01:00
Ekaterina Voloshina
f85fa84ae0 fixed Slash functions (#458) 2024-03-22 06:18:40 +01:00
Aarne Ranta
bb5107fa99 added GenRP to Extend Fin,Fre,Ger,Ita,Swe 2024-03-20 16:34:30 +01:00
Aarne Ranta
97b713520f commas in Ger subord clauses: things remaining to do 2024-03-20 09:27:47 +01:00
Krasimir Angelov
fb42bc6b27 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2024-03-18 16:10:06 +01:00
Krasimir Angelov
13dea0d8ac use pol.s instead of "не" to avoid meta variables in the parser 2024-03-18 16:09:00 +01:00
Krasimir Angelov
38ba6b1d6c added TPastSimple 2024-03-18 16:08:33 +01:00
Inari Listenmaa
04e76381dc Merge pull request #457 from EkaterinaVoloshina/master
added compoundPN and compoundLN
2024-03-16 12:10:14 +01:00
EkaterinaVoloshina
d6cb2806ff fixed order in passive voice 2024-03-15 17:29:34 +01:00
EkaterinaVoloshina
6ae9123f87 fixed passive voice 2024-03-15 17:17:15 +01:00
Ekaterina Voloshina
f7ba54db1c Merge branch 'GrammaticalFramework:master' into master 2024-03-13 16:39:27 +01:00
EkaterinaVoloshina
a338c2c60e added compounds for LN and PN 2024-03-13 16:35:58 +01:00
Ekaterina Voloshina
2eb19b5a2d updated inflection for masculine nouns (#456)
* updated AdjType

* fixed inflection for russian
2024-03-12 07:34:19 +01:00
EkaterinaVoloshina
bffdfdb790 fixed inflection for russian 2024-03-11 17:24:31 +01:00
Ekaterina Voloshina
fa42bf3c41 updated AdjType (#455) 2024-03-11 15:05:57 +01:00
EkaterinaVoloshina
a0a9c31745 updated AdjType 2024-03-11 11:53:39 +01:00
Krasimir Angelov
676e61e255 missed VocRus in InflectionPN 2024-03-11 10:11:40 +01:00
Krasimir Angelov
0fe84ad2cf change lincat PN to make it similar to LN and avoid storing rt and rel 2024-03-11 08:25:12 +01:00
Krasimir Angelov
2aef82181b fix the order of genders for the adjectives and show the adjectives for the nouns 2024-03-11 07:39:31 +01:00
Ekaterina Voloshina
ffcff47545 updated AdjType (#454)
* updated AdjType

* fixed mkA

* fixed AdjType

* fixed numbers

* fixed numbers
2024-03-10 19:52:19 +01:00
Krasimir Angelov
53e731593d use nonExist instead of "" when the noun has no adjective 2024-02-29 20:53:21 +01:00
Ekaterina Voloshina
9193a303a5 restored compoundN (#453) 2024-02-29 19:54:28 +01:00
Ekaterina Voloshina
4b4fbbb401 modified mkPN and added preliminary structure of compounds (#452)
* modified mkPN and added preliminary structure of compounds

* added PassAgentVPSlash

* fixed PassAgentVPSlash and mkN
2024-02-29 11:14:13 +01:00
Inari Listenmaa
600af2b8bf Merge pull request #450 from EkaterinaVoloshina/master
several modifications
2024-02-26 09:55:45 +01:00
Inari Listenmaa
15367fb05d Merge pull request #451 from GrammaticalFramework/fix-listVPS2
(Eng) Keep both prepositions in [VPS2]
2024-02-26 09:52:36 +01:00
Ekaterina Voloshina
4c508979bb Merge branch 'GrammaticalFramework:master' into master 2024-02-16 09:49:43 +01:00
EkaterinaVoloshina
a67af709c2 fixed copula verbs 2024-01-12 23:47:25 +03:00
EkaterinaVoloshina
128f283377 Merge branch 'master' of https://github.com/GrammaticalFramework/gf-rgl
Merged several updates

^X
2024-01-12 23:44:48 +03:00
EkaterinaVoloshina
7259848d30 fixed copula verbs 2024-01-12 23:42:43 +03:00
472 changed files with 719309 additions and 2474 deletions

View File

@@ -8,19 +8,26 @@ on:
jobs:
build:
runs-on: ubuntu-18.04
runs-on: ubuntu-24.04
env:
GF_VERSION: 3.10-1
GF_VERSION: 3.12
DEST: gf-rgl-${{ github.event.inputs.tag }}
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Download GF
uses: dsaltares/fetch-gh-release-asset@1.1.1
with:
repo: 'GrammaticalFramework/gf-core'
version: 'tags/release-${{ env.GF_VERSION }}'
file: 'gf-${{ env.GF_VERSION }}-ubuntu-24.04.deb'
token: ${{ secrets.GITHUB_TOKEN }}
- name: Install GF
run: |
curl -s https://www.grammaticalframework.org/download/gf_${GF_VERSION}_amd64.deb -o gf.deb
sudo dpkg -i gf.deb
sudo dpkg -i gf-${GF_VERSION}-ubuntu-24.04.deb
- name: Build RGL
run: |

View File

@@ -6,26 +6,26 @@ on:
jobs:
build:
runs-on: ubuntu-20.04
runs-on: ubuntu-24.04
env:
GF_VERSION: 3.11
GF_VERSION: 3.12
DEST: gf-rgl
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Download GF
uses: dsaltares/fetch-gh-release-asset@1.1.1
with:
repo: 'GrammaticalFramework/gf-core'
version: 'tags/${{ env.GF_VERSION }}'
file: 'gf-${{ env.GF_VERSION }}-ubuntu-20.04.deb'
version: 'tags/release-${{ env.GF_VERSION }}'
file: 'gf-${{ env.GF_VERSION }}-ubuntu-24.04.deb'
token: ${{ secrets.GITHUB_TOKEN }}
- name: Install GF
run: |
sudo dpkg -i gf-${GF_VERSION}-ubuntu-20.04.deb
sudo dpkg -i gf-${GF_VERSION}-ubuntu-24.04.deb
- name: Build RGL
run: |

View File

@@ -25,6 +25,7 @@ data LangInfo = LangInfo
, langSymbolic :: Bool
, langCompatibility :: Bool
, langSynopsis :: Bool -- ^ include in RGL synopsis
, langMorphodict :: Bool
} deriving (Show,Eq)
-- | Load language information from default config file
@@ -55,6 +56,7 @@ loadLangsFrom configFile = do
, langSymbolic = boolBit bits 8 True
, langCompatibility = boolBit bits 9 False
, langSynopsis = boolBit bits 10 False
, langMorphodict = boolBit bits 11 False
}
-- | Separate a string on a character

View File

@@ -19,6 +19,7 @@ default: build copy
build: src/*/*.gf
ifneq (, $(RUNGHC))
$(RUNGHC) build
$(RUNGHC) build morphodict
else
./Setup.sh
endif
@@ -26,6 +27,7 @@ endif
copy:
ifneq (, $(RUNGHC))
$(RUNGHC) copy
$(RUNGHC) copy morphodict
endif
install: build copy

View File

@@ -1,4 +1,4 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE CPP, LambdaCase #-}
-- | Main build script for RGL
@@ -150,11 +150,12 @@ getRGLBuildSubDir mode =
case mode of
Present -> "present"
AllTenses -> "alltenses"
MorphoDict -> "morphodict"
-------------------------------------------------------------------------------
-- Build modes
data Mode = Present | AllTenses
data Mode = Present | AllTenses | MorphoDict
deriving (Show,Eq)
all_modes :: [String]
@@ -187,6 +188,7 @@ rglCommands =
, RGLCommand "lang" False $ gfcp [l,s]
, RGLCommand "api" False $ gfcp [t,sc]
, RGLCommand "compat" False $ gfcp [c]
, RGLCommand "morphodict" False $ gfcp [m]
-- Special command, invoked when command ends in .gf
, RGLCommand "modules" False $ \modes args bi -> do
@@ -223,14 +225,20 @@ rglCommands =
s mode args = (symbol,optml mode langTry args)
c mode args = (compat,optml AllTenses langCompatibility args)
t mode args = (try,optml mode langTry args)
m mode args = (morphodict,optml mode langMorphodict args)
sc mode args = (symbolic,optml mode langSymbolic args)
optml :: Mode -> (LangInfo -> Bool) -> [String] -> ([LangInfo] -> [LangInfo])
optml mode pred args =
\langsAll ->
let langsDefault = filter (if mode == Present then langPresent else const True) (filter pred langsAll)
let langsDefault = filter (mode2langinfo mode) (filter pred langsAll)
in getOptLangs langsAll langsDefault args
mode2langinfo = \case
Present -> langPresent
MorphoDict -> langMorphodict
_ -> const True
-------------------------------------------------------------------------------
-- Getting module paths/names
@@ -260,6 +268,9 @@ syntax l = sourceDir </> "api" </> ("Syntax" ++ langCode l ++ ".gf")
symbolic :: LangInfo -> FilePath
symbolic l = sourceDir </> "api" </> ("Symbolic" ++ langCode l ++ ".gf")
morphodict :: LangInfo -> FilePath
morphodict l = sourceDir </> "morphodict" </> ("MorphoDict" ++ langCode l ++ ".gf")
-------------------------------------------------------------------------------
-- Argument helpers
@@ -302,8 +313,9 @@ getOptMode args =
else explicit_modes
where
explicit_modes =
[Present|have "present"]++
[AllTenses|have "alltenses"]
[Present | have "present"] ++
[AllTenses | have "alltenses"] ++
[MorphoDict | have "morphodict"]
have mode = mode `elem` args
-- | List of languages overriding the default definitions
@@ -366,8 +378,8 @@ gfcn :: Info -> Mode -> String -> [FilePath] -> IO ()
gfcn bi mode summary files = do
let dir = getRGLBuildDir bi mode
preproc = case mode of
Present -> "--preproc=mkPresent"
AllTenses -> ""
Present -> "--preproc=mkPresent"
_ -> ""
createDirectoryIfMissing True dir
if length files > 0
then do

View File

@@ -59,6 +59,7 @@ gfc="${gf} --batch --quiet --gf-lib-path=${dist}"
mkdir -p "${dist}/prelude"
mkdir -p "${dist}/present"
mkdir -p "${dist}/alltenses"
mkdir -p "${dist}/morphodict"
# Build: prelude
echo "Building [prelude]"
@@ -68,6 +69,7 @@ ${gfc} --gfo-dir="${dist}"/prelude "${src}"/prelude/*.gf
# Gather all language modules for building
modules_present=
modules_alltenses=
modules_morphodict=
for lang in $langs; do
for mod in $modules_langs $modules_api; do
if [ $mod == "Compatibility" ] && [[ "$langs_compat" != *"$lang"* ]]; then continue; fi
@@ -80,8 +82,12 @@ for lang in $langs; do
modules_alltenses="${modules_alltenses} ${file}"
done
done
file="${src}/morphodict/MorphoDict${lang}.gf"
if [ ! -f "$file" ]; then continue; fi
modules_morphodict="${modules_morphodict} ${file}"
done
# Build: present
echo "Building [present]"
if [ $verbose = true ]; then echo $modules_present; fi
@@ -96,6 +102,13 @@ for module in $modules_alltenses; do
${gfc} --no-pmcfg --gfo-dir="${dist}"/alltenses "${module}"
done
# Build: morphodict
echo "Building [morphodict]"
if [ $verbose = true ]; then echo $modules_morphodict; fi
for module in $modules_morphodict; do
${gfc} --no-pmcfg --gfo-dir="${dist}"/morphodict "${module}"
done
# Copy
if [ $dest == $dist ]; then exit 0; fi
echo "Copying to ${dest}"

View File

@@ -1,55 +1,64 @@
Code,Name,Directory,Functor,Unlexer,Present,All,Try,Symbolic,Compatibility,Synopsis
Afr,Afrikaans,afrikaans,,,,,,n,,y
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
Dut,Dutch,dutch,,,y,,,,,y
Eng,English,english,,,y,,,,y,y
Est,Estonian,estonian,,,,,,,,y
Eus,Basque,basque,,,,,,,,y
Fin,Finnish,finnish,,,y,,,,y,y
Fre,French,french,Romance,,y,,,,y,y
Ger,German,german,,,y,,,,,y
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
Ita,Italian,italian,Romance,,y,,,,y,y
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
Nno,Norwegian (nynorsk),nynorsk,,,y,,,,,y
Nor,Norwegian (bokmål),norwegian,Scand,,y,,,,,y
Pes,Persian,persian,,,,,,,,y
Pnb,Punjabi,punjabi,,,y,,,,,y
Pol,Polish,polish,,,,,,,,y
Por,Portuguese,portuguese,Romance,,y,,,,y,y
Ron,Romanian,romanian,,,y,,,,,y
Rus,Russian,russian,,,y,,,,,y
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,,,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
Zul,Zulu,zulu,,,,,n,n,,n
Code,Name,Directory,Functor,Unlexer,Present,All,Try,Symbolic,Compatibility,Synopsis,MorphoDict
Afr,Afrikaans,afrikaans,,,,,,n,,y,n
Amh,Amharic,amharic,,,,,n,n,,n,n
Ara,Arabic,arabic,,,,,,y,,y,y
Bel,Belarusian,belarusian,,,,y,n,n,n,y,n
Bul,Bulgarian,bulgarian,,,y,,,,,y,n
Cat,Catalan,catalan,Romance,,y,,,,y,y,n
Cgg,Rukiga,rukiga,,,y,y,n,n,y,y,n
Chi,Chinese (simplified),chinese,,,,,,,,y,y
Cze,Czech,czech,,,,,,n,,y,n
Dan,Danish,danish,Scand,,y,,,,,y,n
Dut,Dutch,dutch,,,y,,,,,y,n
Eng,English,english,,,y,,,,y,y,y
Est,Estonian,estonian,,,,,,,,y,n
Eus,Basque,basque,,,,,,,,y,n
Fao,Faroese,faroese,,,,y,n,n,n,y,n
Fin,Finnish,finnish,,,y,,,,y,y,y
Fre,French,french,Romance,,y,,,,y,y,y
Gla,Gaelic,gaelic,,,,y,n,n,n,y,n
Ger,German,german,,,y,,,,,y,y
Grc,Ancient Greek,ancient_greek,,,y,,n,n,,n,n
Gre,Greek,greek,,,,,,,,y,n
Heb,Hebrew,hebrew,,,,,n,n,,n,n
Hin,Hindi,hindi,Hindustani,to_devanagari,y,,,,,y,n
Hrv,Croatian,croatian,,,,,,y,,n,n
Hun,Hungarian,hungarian,,,n,y,y,y,n,n,n
Hye,Armenian,armenian,,,,y,n,n,n,y,n
Ice,Icelandic,icelandic,,,,,,n,,y,n
Ina,Interlingua,interlingua,,,y,,n,n,,n,n
Ita,Italian,italian,Romance,,y,,,,y,y,y
Jpn,Japanese,japanese,,,,,,,,y,n
Kaz,Kazakh,kazakh,,,,y,n,n,n,y,n
Kor,Korean,korean,,,n,y,y,y,n,n,n
Lat,Latin,latin,,,,,y,y,n,y,n
Lav,Latvian,latvian,,,,,,,y,y,n
Mkd,Macedonian,macedonian,,,,y,n,n,n,y,n
May,Malay,malay,,,y,,,,n,y,n
Mlt,Maltese,maltese,,,,,,,,y,n
Mon,Mongolian,mongolian,,,,,,n,,y,n
Nep,Nepali,nepali,,,,,,n,,y,n
Nno,Norwegian (nynorsk),nynorsk,,,y,,,,,y,n
Nor,Norwegian (bokmål),norwegian,Scand,,y,,,,,y,n
Pes,Persian,persian,,,,,,,,y,n
Pnb,Punjabi,punjabi,,,y,,,,,y,n
Pol,Polish,polish,,,,,,,,y,n
Por,Portuguese,portuguese,Romance,,y,,,,y,y,y
Ron,Romanian,romanian,,,y,,,,,y,n
Rus,Russian,russian,,,y,,,,,y,n
Slo,Slovak,slovak,,,,,,n,,y,n
Slv,Slovenian,slovenian,,,,,n,n,,n,n
Snd,Sindhi,sindhi,,,,,,,,y,n
Spa,Spanish,spanish,Romance,,y,,,,y,y,y
Sqi,Albanian,albanian,,,,y,n,n,n,y,n
Sco,Scots,scots,,,y,,,,,y,n
Swa,Swahili,swahili,Bantu,,,y,n,n,n,n,n
Swe,Swedish,swedish,Scand,,y,,,,y,y,y
Tam,Tamil,tamil,n,n,n,n,n,n,n,n,n
Tel,Telugu,telugu,,,y,n,n,n,,n,n
Tha,Thai,thai,,to_thai,,,,,,y,n
Tur,Turkish,turkish,,,y,,,n,,n,n
Ukr,Ukrainian,ukrainian,,,,y,n,n,n,y,n
Urd,Urdu,urdu,Hindustani,,,,,,,y,n
Som,Somali,somali,,,,,n,n,,n,n
Zul,Zulu,zulu,,,,,n,n,,n,n
1 Code Name Directory Functor Unlexer Present All Try Symbolic Compatibility Synopsis MorphoDict
2 Afr Afrikaans afrikaans n y n
3 Amh Amharic amharic n n n n
4 Ara Arabic arabic y y y
5 Bul Bel Bulgarian Belarusian bulgarian belarusian y y n n n y n
6 Cat Bul Catalan Bulgarian catalan bulgarian Romance y y y n
7 Cgg Cat Rukiga Catalan rukiga catalan Romance y y n n y y n
8 Chi Cgg Chinese (simplified) Rukiga chinese rukiga y y n n y y n
9 Cze Chi Czech Chinese (simplified) czech chinese n y y
10 Dan Cze Danish Czech danish czech Scand y n y n
11 Dut Dan Dutch Danish dutch danish Scand y y n
12 Eng Dut English Dutch english dutch y y y n
13 Est Eng Estonian English estonian english y y y y
14 Eus Est Basque Estonian basque estonian y n
15 Fin Eus Finnish Basque finnish basque y y y n
16 Fre Fao French Faroese french faroese Romance y y n n y n y n
17 Ger Fin German Finnish german finnish y y y y
18 Grc Fre Ancient Greek French ancient_greek french Romance y n n y n y y
19 Gre Gla Greek Gaelic greek gaelic y n n n y n
20 Heb Ger Hebrew German hebrew german y n n n y y
21 Hin Grc Hindi Ancient Greek hindi ancient_greek Hindustani to_devanagari y n n y n n
22 Hrv Gre Croatian Greek croatian greek y n y n
23 Hun Heb Hungarian Hebrew hungarian hebrew n y y n y n n n n
24 Ice Hin Icelandic Hindi icelandic hindi Hindustani to_devanagari y n y n
25 Ina Hrv Interlingua Croatian interlingua croatian y n n y n n
26 Ita Hun Italian Hungarian italian hungarian Romance y n y y y y n y n n
27 Jpn Hye Japanese Armenian japanese armenian y n n n y n
28 Kor Ice Korean Icelandic korean icelandic n y y y n n n y n
29 Lat Ina Latin Interlingua latin interlingua y y n y n n y n n
30 Lav Ita Latvian Italian latvian italian Romance y y y y
31 May Jpn Malay Japanese malay japanese y n y n
32 Mlt Kaz Maltese Kazakh maltese kazakh y n n n y n
33 Mon Kor Mongolian Korean mongolian korean n y y n y n y n n
34 Nep Lat Nepali Latin nepali latin y n y n y n
35 Nno Lav Norwegian (nynorsk) Latvian nynorsk latvian y y y n
36 Nor Mkd Norwegian (bokmål) Macedonian norwegian macedonian Scand y y n n n y n
37 Pes May Persian Malay persian malay y n y n
38 Pnb Mlt Punjabi Maltese punjabi maltese y y n
39 Pol Mon Polish Mongolian polish mongolian n y n
40 Por Nep Portuguese Nepali portuguese nepali Romance y n y y n
41 Ron Nno Romanian Norwegian (nynorsk) romanian nynorsk y y n
42 Rus Nor Russian Norwegian (bokmål) russian norwegian Scand y y n
43 Slo Pes Slovak Persian slovak persian n y n
44 Slv Pnb Slovenian Punjabi slovenian punjabi y n n n y n
45 Snd Pol Sindhi Polish sindhi polish y n
46 Spa Por Spanish Portuguese spanish portuguese Romance y y y y
47 Swa Ron Swahili Romanian swahili romanian Bantu y y n n n n y n
48 Swe Rus Swedish Russian swedish russian Scand y y y n
49 Tam Slo Tamil Slovak tamil slovak n n n n n n n n y n
50 Tel Slv Telugu Slovenian telugu slovenian y n n n n n
51 Tha Snd Thai Sindhi thai sindhi to_thai y n
52 Tur Spa Turkish Spanish turkish spanish Romance y n y n y y
53 Urd Sqi Urdu Albanian urdu albanian Hindustani y n n n y n
54 Som Sco Somali Scots somali scots y n n n y n
55 Zul Swa Zulu Swahili zulu swahili Bantu y n n n n n
56 Swe Swedish swedish Scand y y y y
57 Tam Tamil tamil n n n n n n n n n
58 Tel Telugu telugu y n n n n n
59 Tha Thai thai to_thai y n
60 Tur Turkish turkish y n n n
61 Ukr Ukrainian ukrainian y n n n y n
62 Urd Urdu urdu Hindustani y n
63 Som Somali somali n n n n
64 Zul Zulu zulu n n n n

View File

@@ -299,10 +299,10 @@ fun
fun
CardCNCard : Card -> CN -> Card ; -- three million, four lakh, six dozen etc
fun
AnaphPron : NP -> Pron ;
fun
TPastSimple : Tense ;
fun
SubjunctRelCN : CN -> RS -> CN ; -- e.g. Romance languages when subjunctive/conjunctive is needed
}

View File

@@ -89,4 +89,17 @@ concrete CatAfr of Cat =
SN = {s : Sex => NPCase => Str; pl : NPCase => Str} ;
LN = {s : Adjf => NPCase => Str ; hasArt : Bool ; n : Number} ;
lindef
VPSlash = \s -> {
s = {s = \\_ => s; prefix = ""; aux = VHebben; vtype = VAct} ;
a1 = \\_ => "" ;
n0 = \\_ => "" ;
n2 = \\_ => "" ;
a2 = "" ;
isAux = False ;
inf = <"",False> ;
ext = "" ;
c2 = ""
} ;
}

View File

@@ -315,7 +315,7 @@ param
--2 Transformations between parameter types
oper Agr : Type = {g : Gender ; n : Number ; p : Person} ;
oper Agr : PType = {g : Gender ; n : Number ; p : Person} ;
oper
agrP3 : Number -> Agr = agrgP3 Neutr ;

View File

@@ -0,0 +1,11 @@
concrete AdjectiveSqi of Adjective = CatSqi ** open ResSqi, Prelude in {
lin
PositA a = {
s = \\spec,c,g,n => case a.clit of {
True => link_clitic ! spec ! c ! g ! n ++ a.s ! c ! g ! n ;
False => a.s ! c ! g ! n
}
} ;
}

4
src/albanian/AllSqi.gf Normal file
View File

@@ -0,0 +1,4 @@
concrete AllSqi of AllSqiAbs =
LangSqi
**
{} ;

View File

@@ -0,0 +1,3 @@
abstract AllSqiAbs =
Lang
** {}

25
src/albanian/CatSqi.gf Normal file
View File

@@ -0,0 +1,25 @@
concrete CatSqi of Cat = CommonX ** open ParamX, Prelude, ResSqi in {
lincat N = Noun ;
lincat N2 = Noun ** {c2 : Compl} ;
lincat N3 = Noun ** {c2,c3 : Compl} ;
lincat A = Adj ;
lincat A2 = Adj ** {c2 : Compl} ;
lincat V, VA, VV, VS, VQ = Verb ;
lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
lincat Prep = Compl ;
lincat Numeral = {s : Str} ;
lincat Digits = {s : Str; n : Number; tail : DTail} ;
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
lincat AP = {s: Species => Case => Gender => Number => Str} ;
lincat CN = Noun ;
lincat Num = {s : Str; n : Number} ;
lincat Quant = {s : Case => Gender => Number => Str; spec : Species} ;
lincat Det = {s : Case => Gender => Str; spec : Species; n : Number} ;
lincat NP = {s: Case => Str; a : Agr} ;
lincat Pron = {s: Case => Str; acc_clit, dat_clit : Str; a : Agr} ;
}

View File

@@ -0,0 +1,117 @@
concrete DocumentationSqi of Documentation = CatSqi ** open
ParamX, ResSqi, Prelude, HTML in {
lincat
Inflection = {t : Str; s1,s2,s3 : Str} ;
Definition = {s : Str} ;
Document = {s : Str} ;
Tag = {s : Str} ;
lin InflectionN = \x -> {
t="em" ;
s1=heading1 ("Emër" ++
case x.g of {
Masc => "(mashkullor)" ;
Fem => "(femëror)"
}) ;
s2=frameTable (
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
tr (intagAttr "th" "rowspan=\"4\"" "Indef" ++ th "Nom" ++ td (x.s ! Indef ! Nom ! Sg) ++ td (x.s ! Indef ! Nom ! Pl)) ++
tr (th "Acc" ++ td (x.s ! Indef ! Acc ! Sg) ++ td (x.s ! Indef ! Acc ! Pl)) ++
tr (th "Dat" ++ td (x.s ! Indef ! Dat ! Sg) ++ td (x.s ! Indef ! Dat ! Pl)) ++
tr (th "Ablat" ++ td (x.s ! Indef ! Ablat ! Sg) ++ td (x.s ! Indef ! Ablat ! Pl)) ++
tr (intagAttr "th" "rowspan=\"4\"" "Def" ++ th "Nom" ++ td (x.s ! Def ! Nom ! Sg) ++ td (x.s ! Def ! Nom ! Pl)) ++
tr (th "Acc" ++ td (x.s ! Def ! Acc ! Sg) ++ td (x.s ! Def ! Acc ! Pl)) ++
tr (th "Dat" ++ td (x.s ! Def ! Dat ! Sg) ++ td (x.s ! Def ! Dat ! Pl)) ++
tr (th "Ablat" ++ td (x.s ! Def ! Ablat ! Sg) ++ td (x.s ! Def ! Ablat ! Pl))) ;
s3=[]
} ;
lin InflectionA = \x -> {
t="mb" ;
s1=heading1 "Mbiemër" ;
s2=frameTable (
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
tr (intagAttr "th" "rowspan=\"2\"" "Nom" ++ th "Masc" ++ td (y ! Nom ! Masc ! Sg) ++ td (y ! Nom ! Masc ! Pl)) ++
tr (th "Fem" ++ td (y ! Nom ! Fem ! Sg) ++ td (y ! Nom ! Fem ! Pl)) ++
tr (intagAttr "th" "rowspan=\"2\"" "Acc" ++ th "Masc" ++ td (y ! Acc ! Masc ! Sg) ++ td (y ! Acc ! Masc ! Pl)) ++
tr (th "Fem" ++ td (y ! Acc ! Fem ! Sg) ++ td (y ! Acc ! Fem ! Pl)) ++
tr (intagAttr "th" "rowspan=\"2\"" "Dat" ++ th "Masc" ++ td (y ! Dat ! Masc ! Sg) ++ td (y ! Dat ! Masc ! Pl)) ++
tr (th "Fem" ++ td (y ! Dat ! Fem ! Sg) ++ td (y ! Dat ! Fem ! Pl)) ++
tr (intagAttr "th" "rowspan=\"2\"" "Ablat" ++ th "Masc" ++ td (y ! Ablat ! Masc ! Sg) ++ td (y ! Ablat ! Masc ! Pl)) ++
tr (th "Fem" ++ td (y ! Ablat ! Fem ! Sg) ++ td (y ! Ablat ! Fem ! Pl))) ;
s3=[]
} where {
y : Case => Gender => Number => Str =
\\c,g,n => case x.clit of {
True => link_clitic ! Indef ! c ! g ! n ++ x.s ! c ! g ! n ;
False => x.s ! c ! g ! n
} ;
} ;
lin InflectionV = \x -> {
t="fl" ;
s1=heading1 "Folje" ;
s2=frameTable (
tr (intagAttr "th" "rowspan=\"24\"" "Indicative" ++ intagAttr "th" "rowspan=\"6\"" "Pres" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.Indicative ! Pres ! Sg ! P1)) ++
tr (th "P2" ++ td (x.Indicative ! Pres ! Sg ! P2)) ++
tr (th "P3" ++ td (x.Indicative ! Pres ! Sg ! P3)) ++
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Pres ! Pl ! P1)) ++
tr (th "P2" ++ td (x.Indicative ! Pres ! Pl ! P2)) ++
tr (th "P3" ++ td (x.Indicative ! Pres ! Pl ! P3)) ++
tr (intagAttr "th" "rowspan=\"6\"" "Past" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.Indicative ! Past ! Sg ! P1)) ++
tr (th "P2" ++ td (x.Indicative ! Past ! Sg ! P2)) ++
tr (th "P3" ++ td (x.Indicative ! Past ! Sg ! P3)) ++
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Past ! Pl ! P1)) ++
tr (th "P2" ++ td (x.Indicative ! Past ! Pl ! P2)) ++
tr (th "P3" ++ td (x.Indicative ! Past ! Pl ! P3)) ++
tr (intagAttr "th" "rowspan=\"6\"" "Aorist" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.Indicative ! Aorist ! Sg ! P1)) ++
tr (th "P2" ++ td (x.Indicative ! Aorist ! Sg ! P2)) ++
tr (th "P3" ++ td (x.Indicative ! Aorist ! Sg ! P3)) ++
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Aorist ! Pl ! P1)) ++
tr (th "P2" ++ td (x.Indicative ! Aorist ! Pl ! P2)) ++
tr (th "P3" ++ td (x.Indicative ! Aorist ! Pl ! P3)) ++
tr (intagAttr "th" "rowspan=\"6\"" "Imperfect" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.Indicative ! Imperfect ! Sg ! P1)) ++
tr (th "P2" ++ td (x.Indicative ! Imperfect ! Sg ! P2)) ++
tr (th "P3" ++ td (x.Indicative ! Imperfect ! Sg ! P3)) ++
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Imperfect ! Pl ! P1)) ++
tr (th "P2" ++ td (x.Indicative ! Imperfect ! Pl ! P2)) ++
tr (th "P3" ++ td (x.Indicative ! Imperfect ! Pl ! P3)) ++
tr (intagAttr "th" "rowspan=\"2\"" "Imperative" ++ th "Sg" ++ td (x.Imperative ! Sg)) ++
tr (th "Pl" ++ td (x.Imperative ! Pl)) ++
tr (th "participle" ++ td (x.participle)) ++
tr (intagAttr "th" "rowspan=\"6\"" "pres_optative" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.pres_optative ! Sg ! P1)) ++
tr (th "P2" ++ td (x.pres_optative ! Sg ! P2)) ++
tr (th "P3" ++ td (x.pres_optative ! Sg ! P3)) ++
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.pres_optative ! Pl ! P1)) ++
tr (th "P2" ++ td (x.pres_optative ! Pl ! P2)) ++
tr (th "P3" ++ td (x.pres_optative ! Pl ! P3)) ++
tr (intagAttr "th" "rowspan=\"6\"" "perf_optative" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.perf_optative ! Sg ! P1)) ++
tr (th "P2" ++ td (x.perf_optative ! Sg ! P2)) ++
tr (th "P3" ++ td (x.perf_optative ! Sg ! P3)) ++
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.perf_optative ! Pl ! P1)) ++
tr (th "P2" ++ td (x.perf_optative ! Pl ! P2)) ++
tr (th "P3" ++ td (x.perf_optative ! Pl ! P3)) ++
tr (intagAttr "th" "rowspan=\"6\"" "pres_admirative" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.pres_admirative ! Sg ! P1)) ++
tr (th "P2" ++ td (x.pres_admirative ! Sg ! P2)) ++
tr (th "P3" ++ td (x.pres_admirative ! Sg ! P3)) ++
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.pres_admirative ! Pl ! P1)) ++
tr (th "P2" ++ td (x.pres_admirative ! Pl ! P2)) ++
tr (th "P3" ++ td (x.pres_admirative ! Pl ! P3)) ++
tr (intagAttr "th" "rowspan=\"6\"" "imperf_admirative" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.imperf_admirative ! Sg ! P1)) ++
tr (th "P2" ++ td (x.imperf_admirative ! Sg ! P2)) ++
tr (th "P3" ++ td (x.imperf_admirative ! Sg ! P3)) ++
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.imperf_admirative ! Pl ! P1)) ++
tr (th "P2" ++ td (x.imperf_admirative ! Pl ! P2)) ++
tr (th "P3" ++ td (x.imperf_admirative ! Pl ! P3))) ;
s3=[]
} ;
lin InflectionAdv = \x -> {
t="nd" ;
s1=heading1 "Ndajfolje" ;
s2=frameTable (
tr (th "s" ++ td (x.s))) ;
s3=[]
} ;
lin
NoDefinition t = {s=t.s};
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
MkDefinitionEx t d e = {s="<p><b>Definition:</b>"++t.s++d.s++"</p><p><b>Example:</b>"++e.s++"</p>"};lin MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ i.s3 ++ e.s} ; MkTag i = {s = i.t} ;}

View File

@@ -0,0 +1,9 @@
concrete GrammarSqi of Grammar =
NounSqi,
AdjectiveSqi,
NumeralSqi,
PhraseSqi,
StructuralSqi
** {
} ;

10
src/albanian/LangSqi.gf Normal file
View File

@@ -0,0 +1,10 @@
--# -path=.:../abstract
concrete LangSqi of Lang =
GrammarSqi,
LexiconSqi
,DocumentationSqi --# notpresent
** {
flags startcat = Phr ;
}

View File

@@ -0,0 +1,8 @@
concrete LexiconSqi of Lexicon = CatSqi ** open ParadigmsSqi in {
lin
airplane_N = mkN032 "aeroplan" ;
apple_N = mkN069 "mollë" ;
good_A = mkA "mirë" ;
}

42501
src/albanian/MorphoSqi.gf Normal file

File diff suppressed because it is too large Load Diff

40
src/albanian/NounSqi.gf Normal file
View File

@@ -0,0 +1,40 @@
concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
flags optimize=all_subs ;
lin
DetCN det cn = {
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.spec ! c ! det.n ;
a = agrgP3 cn.g det.n
} ;
UsePron p = p ;
DetQuant quant num = {
s = \\c,g => quant.s ! c ! g ! num.n ++ num.s ;
n = num.n ;
spec = quant.spec
} ;
NumSg = {s = []; n = Sg} ;
NumPl = {s = []; n = Pl} ;
DefArt = {
s = \\c,g,n => [] ;
spec = Def
} ;
IndefArt = {
s = \\c,g => table Number ["një"; []] ;
spec = Indef
} ;
UseN n = n ;
UseN2 n = n ;
AdjCN ap cn = {
s = \\spec,c,n => cn.s ! spec ! c ! n ++ ap.s ! spec ! c ! cn.g ! n ;
g = cn.g
} ;
}

View File

@@ -0,0 +1,87 @@
concrete NumeralSqi of Numeral = CatSqi ** open ParamX, Prelude in {
oper bind : Str -> Str -> Str = \a -> \b -> a ++ b ;
param DForm = unit | teen | ten ;
oper LinDigit = {s : DForm => Str };
oper LinSub100 = {s : Str } ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = LinSub100 ;
lincat Sub1000 = LinSub100 ;
lincat Sub1000000 = { s : Str } ;
oper mkNum : Str -> LinDigit = \tri ->
{ s = table {unit => tri ; teen => tri + "mbë" + "dhjetë" ; ten => tri + "dhjetë" }};
lin num x = {s = x.s } ;
lin n2 = {s = table {unit => "dy" ; teen => "dy" + "mbë" + "dhjetë" ; ten => "njëzet" }};
lin n3 = mkNum "tre" ;
lin n4 = {s = table {unit => "katër" ; teen => "katër" + "mbë" + "dhjetë" ; ten => "dyzet" } };
lin n5 = mkNum "pesë" ;
lin n6 = mkNum "gjashtë";
lin n7 = mkNum "shtatë";
lin n8 = mkNum "tetë";
lin n9 = mkNum "nëntë";
oper mkR : Str -> LinSub100 = \n -> {s = n } ;
lin pot01 = { s = table {_ => "një" }};
lin pot0 d = d ;
lin pot110 = mkR "dhjetë" ;
lin pot111 = mkR ("një" + "mbë" + "dhjetë") ;
lin pot1to19 d = mkR (d.s ! teen) ;
lin pot0as1 n = mkR (n.s ! unit) ;
lin pot1 d = mkR (d.s ! ten) ;
lin pot1plus d e = mkR ((d.s ! ten) ++ "e" ++ (e.s ! unit)) ;
lin pot1as2 n = n ;
lin pot2 d = mkR (bind (d.s ! unit) "qind") ;
lin pot2plus d e = mkR ((bind (d.s ! unit) "qind") ++ "e" ++ e.s) ;
lin pot2as3 n = {s = n.s };
lin pot3 n = {s = n.s ++ "mijë" } ;
lin pot3plus n m = {s = n.s ++ "mijë" ++ m.s} ;
lincat Dig = {s : Str; n : Number} ;
lin IDig d = d ** {tail = T1} ;
IIDig d i = {
s = d.s ++ spaceIf i.tail ++ i.s ;
n = Pl ;
tail = inc i.tail
} ;
D_0 = mkDig "0" Pl ;
D_1 = mkDig "1" Sg ;
D_2 = mkDig "2" Pl ;
D_3 = mkDig "3" Pl ;
D_4 = mkDig "4" Pl ;
D_5 = mkDig "5" Pl ;
D_6 = mkDig "6" Pl ;
D_7 = mkDig "7" Pl ;
D_8 = mkDig "8" Pl ;
D_9 = mkDig "9" Pl ;
lin PosDecimal d = d ** {hasDot=False} ;
NegDecimal d = {s="-" ++ BIND ++ d.s; hasDot=False; n = Pl} ;
IFrac d i = {
s=d.s ++
if_then_Str d.hasDot BIND (BIND++","++BIND) ++
i.s ;
hasDot=True;
n = Pl
} ;
oper
mkDig : Str -> Number -> Dig = \s,n -> lin Dig {s=s; n=n} ;
spaceIf : DTail -> Str = \t -> case t of {
T3 => "" ;
_ => BIND
} ;
}

1375
src/albanian/ParadigmsSqi.gf Normal file

File diff suppressed because it is too large Load Diff

14
src/albanian/PhraseSqi.gf Normal file
View File

@@ -0,0 +1,14 @@
concrete PhraseSqi of Phrase = CatSqi ** open Prelude, ResSqi in {
lin
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
UttS s = s ;
UttNP np = {s = np.s ! Nom} ;
UttInterj i = i ;
NoPConj = {s = []} ;
NoVoc = {s = []} ;
}

261
src/albanian/ResSqi.gf Normal file
View File

@@ -0,0 +1,261 @@
resource ResSqi = ParamX-[Tense,Past,Pres] ** open Prelude in {
oper Compl = {s : Str} ;
param Species = Indef | Def ;
param Case = Nom | Acc | Dat | Ablat ;
param Gender = Masc | Fem ;
param GenNum = GSg Gender | GPl ;
oper Agr = {gn : GenNum; p : Person} ;
oper Noun = {s: Species => Case => Number => Str; g: Gender} ; -- 3978
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,g ->
{ s = table {
Indef => table {
Nom => table {
Sg => f1 ;
Pl => f2
} ;
Acc => table {
Sg => f3 ;
Pl => f4
} ;
Dat => table {
Sg => f5 ;
Pl => f6
} ;
Ablat => table {
Sg => f7 ;
Pl => f8
}
} ;
Def => table {
Nom => table {
Sg => f9 ;
Pl => f10
} ;
Acc => table {
Sg => f11 ;
Pl => f12
} ;
Dat => table {
Sg => f13 ;
Pl => f14
} ;
Ablat => table {
Sg => f15 ;
Pl => f16
}
}
} ;
g = g
} ;
oper Adj = {s: Case => Gender => Number => Str; clit: Bool} ; -- 462
oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Bool -> Adj =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,clit ->
{ s = table {
Nom => table {
Masc => table {
Sg => f1 ;
Pl => f2
} ;
Fem => table {
Sg => f3 ;
Pl => f4
}
} ;
Acc => table {
Masc => table {
Sg => f5 ;
Pl => f6
} ;
Fem => table {
Sg => f7 ;
Pl => f8
}
} ;
Dat => table {
Masc => table {
Sg => f9 ;
Pl => f10
} ;
Fem => table {
Sg => f11 ;
Pl => f12
}
} ;
Ablat => table {
Masc => table {
Sg => f13 ;
Pl => f14
} ;
Fem => table {
Sg => f15 ;
Pl => f16
}
}
} ;
clit = clit
} ;
param Tense = Pres | Past | Imperfect | Aorist ;
oper Verb = {Indicative: Tense => Number => Person => Str; Imperative: Number => Str; participle: Str; pres_optative: Number => Person => Str; perf_optative: Number => Person => Str; pres_admirative: Number => Person => Str; imperf_admirative: Number => Person => Str} ; -- 758
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43,f44,f45,f46,f47,f48,f49,f50,f51 ->
{ Indicative = table {
Pres => table {
Sg => table {
P1 => f1 ;
P2 => f2 ;
P3 => f3
} ;
Pl => table {
P1 => f4 ;
P2 => f5 ;
P3 => f6
}
} ;
Past => table {
Sg => table {
P1 => f7 ;
P2 => f8 ;
P3 => f9
} ;
Pl => table {
P1 => f10 ;
P2 => f11 ;
P3 => f12
}
} ;
Aorist => table {
Sg => table {
P1 => f13 ;
P2 => f14 ;
P3 => f15
} ;
Pl => table {
P1 => f16 ;
P2 => f17 ;
P3 => f18
}
} ;
Imperfect => table {
Sg => table {
P1 => f19 ;
P2 => f20 ;
P3 => f21
} ;
Pl => table {
P1 => f22 ;
P2 => f23 ;
P3 => f24
}
}
} ;
Imperative = table {
Sg => f25 ;
Pl => f26
} ;
participle = f27 ;
pres_optative = table {
Sg => table {
P1 => f28 ;
P2 => f29 ;
P3 => f30
} ;
Pl => table {
P1 => f31 ;
P2 => f32 ;
P3 => f33
}
} ;
perf_optative = table {
Sg => table {
P1 => f34 ;
P2 => f35 ;
P3 => f36
} ;
Pl => table {
P1 => f37 ;
P2 => f38 ;
P3 => f39
}
} ;
pres_admirative = table {
Sg => table {
P1 => f40 ;
P2 => f41 ;
P3 => f42
} ;
Pl => table {
P1 => f43 ;
P2 => f44 ;
P3 => f45
}
} ;
imperf_admirative = table {
Sg => table {
P1 => f46 ;
P2 => f47 ;
P3 => f48
} ;
Pl => table {
P1 => f49 ;
P2 => f50 ;
P3 => f51
}
}
} ;
oper link_clitic : Species => Case => Gender => Number => Str =
table {
Indef => table {
Nom => table {
Masc => table {
Sg => "i" ;
Pl => "të"
} ;
Fem => table {
Sg => "e" ;
Pl => "të"
}
} ;
_ => \\_,_ => "të"
} ;
Def => table {
Nom => table {
Masc => table {
Sg => "i" ;
Pl => "e"
} ;
Fem => table {
Sg => "e" ;
Pl => "e"
}
} ;
Acc => \\_,_ => "e" ;
_ => table {
Masc => \\_ => "të" ;
Fem => table {
Sg => "së" ;
Pl => "të"
}
}
}
} ;
oper genNum : Gender -> Number -> GenNum = \g,n ->
case n of {
Sg => GSg g ;
Pl => GPl
} ;
agrgP3 : Gender -> Number -> Agr =
\g,n -> {gn=genNum g n; p=P3} ;
}

View File

@@ -0,0 +1,19 @@
concrete StructuralSqi of Structural = CatSqi ** open ResSqi, ParadigmsSqi in {
lin i_Pron = mkPron "unë" "mua" "mua" "meje" "më" "më" (GSg Masc) P1 ;
lin youSg_Pron = mkPron "ti" "ty" "ty" "teje" "të" "të" (GSg Masc) P2 ;
lin he_Pron = mkPron "ai" "atë" "atij" "atij" "e" "i" (GSg Masc) P3 ;
lin she_Pron = mkPron "ajo" "atë" "asaj" "asaj" "e" "i" (GSg Fem) P3 ;
lin it_Pron = mkPron "ai" "atë" "atij" "atij" "e" "i" (GSg Masc) P3 ;
lin we_Pron = mkPron "ne" "ne" "neve" "nesh" "na" "na" GPl P1 ;
lin youPl_Pron = mkPron "ju" "ju" "juve" "jush" "ju" "ju" GPl P2 ;
lin they_Pron = mkPron "ata" "ata" "atyre" "atyre" "i" "u" GPl P3 ;
lin this_Quant = mkQuant "ky" "këta" "kjo" "këto"
"këtë" "këtyre" "këtë" "këtyre"
"këtij" "këtyre" "kësaj" "këtyre"
"këtij" "këtyre" "kësaj" "këtyre" ;
lin that_Quant = mkQuant "ai" "ata" "ajo" "ato"
"atë" "ata" "atë" "ato"
"atij" "atyre" "asaj" "atyre"
"atij" "atyre" "asaj" "atyre" ;
}

View File

@@ -109,11 +109,6 @@ lin pot3plus n m = {
_ => BIND
} ;
inc : DTail -> DTail = \t -> case t of {
T1 => T2 ;
T2 => T3 ;
T3 => T1
} ;
------------------ :) what a releif
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o ;

View File

@@ -995,8 +995,8 @@ pronNP : (N,A,G,D : Str) -> PerNumGen -> NP = \N,A,G,D,png-> {
{
s = \\c =>case c of
{
Gen|Dat => affix!c + word;
_ => word + affix!c
Gen|Dat => affix!c ++ Predef.BIND ++ word;
_ => word ++ Predef.BIND ++ affix!c
};
a = {png = Per3 n Masc ; isPron = False };
lock_NP = <>

View File

@@ -18,7 +18,7 @@
-- Author: Hans Leiß, LMU Munich, CIS
resource ResGrc = ParamX - [Number,Sg,Pl,ImpForm,numImp,Tense,ImpF]
resource ResGrc = ParamX - [Number,Sg,Pl,ImpForm,numImp,Tense,ImpF,inc,DTail]
** open Prelude, PhonoGrc, Predef in {
flags
optimize = noexpand ; -- optimize=all is impossible with addAccent

15
src/api/CombinatorsSco.gf Normal file
View File

@@ -0,0 +1,15 @@
--# -path=.:alltenses:prelude
resource CombinatorsSco = Combinators - [ appCN, appCNc ] with
(Cat = CatSco),
(Structural = StructuralSco),
(Noun = NounSco),
(Constructors = ConstructorsSco) **
{
oper
appCN : CN -> NP -> NP
= \cn,x -> mkNP the_Art (PossNP cn x) ;
appCNc : CN -> [NP] -> NP
= \cn,xs -> let np : NP = mkNP and_Conj xs
in mkNP the_Art (PossNP cn np) ;
}

View File

@@ -0,0 +1,3 @@
--# -path=.:alltenses:prelude
resource ConstructorsSco = Constructors with (Grammar = GrammarSco) ;

5
src/api/SymbolicSco.gf Normal file
View File

@@ -0,0 +1,5 @@
--# -path=.:../english:../common:../abstract:../prelude
resource SymbolicSco = Symbolic with
(Symbol = SymbolSco),
(Grammar = GrammarSco) ;

5
src/api/SyntaxSco.gf Normal file
View File

@@ -0,0 +1,5 @@
--# -path=.:alltenses:prelude
instance SyntaxSco of Syntax =
ConstructorsSco, CatSco, StructuralSco, CombinatorsSco ;

View File

@@ -1,3 +1,16 @@
--# -path=.:../danish:../scandinavian:../common:../abstract:../prelude
resource TryDan = SyntaxDan, LexiconDan, ParadigmsDan - [mkAdv] ;
resource TryDan = SyntaxDan-[mkAdN], LexiconDan, ParadigmsDan - [mkAdv,mkAdN] **
open (P = ParadigmsDan) in {
oper
mkAdv = overload SyntaxDan {
mkAdv : Str -> Adv = P.mkAdv ;
} ;
mkAdN = overload {
mkAdN : CAdv -> AdN = SyntaxDan.mkAdN ;
mkAdN : Str -> AdN = P.mkAdN ;
} ;
}

View File

@@ -1,3 +1,16 @@
--# -path=.:../basque:../common:../abstract:../prelude
resource TryEus = SyntaxEus, LexiconEus, ParadigmsEus - [mkAdv,mkAdN,mkDet,mkQuant,mkPConj] ;
resource TryEus = SyntaxEus-[mkVoc], LexiconEus, ParadigmsEus - [mkAdv,mkAdN,mkDet,mkQuant,mkPConj,mkVoc] **
open (P = ParadigmsEus) in {
oper
mkAdv = overload SyntaxEus {
mkAdv : Str -> Adv = P.mkAdv ;
} ;
mkVoc = overload {
mkVoc : NP -> Voc = SyntaxEus.mkVoc ;
mkVoc : Str -> Voc = P.mkVoc ;
} ;
}

View File

@@ -1,3 +1,3 @@
--# -path=.:../german:../common:../abstract:../prelude
resource TryGer = SyntaxGer, ExtraGer, LexiconGer, ParadigmsGer - [mkAdv], MakeStructuralGer ;
resource TryGer = SyntaxGer, ExtraGer, LexiconGer, ParadigmsGer - [mkAdv,mkIAdv], MakeStructuralGer ;

View File

@@ -1,17 +1,21 @@
--# -path=.:../greek:../common:../abstract:../prelude
resource TryGre = SyntaxGre, LexiconGre, ParadigmsGre ;
{-
-[mkAdv, mkDet,mkQuant]**
resource TryGre = SyntaxGre-[mkAdN,mkVoc], LexiconGre, ParadigmsGre - [mkAdN,mkAdv,mkVoc] **
open (P = ParadigmsGre) in {
oper
oper
mkAdv = overload SyntaxGre {
mkAdv : Str -> Adv = P.mkAdv ;
} ;
}
mkVoc = overload {
mkVoc : NP -> Voc = SyntaxGre.mkVoc ;
mkVoc : Str -> Voc = P.mkVoc ;
} ;
-}
mkAdN = overload {
mkAdN : CAdv -> AdN = SyntaxGre.mkAdN ;
mkAdN : Str -> AdN = P.mkAdN ;
} ;
}

View File

@@ -1,3 +1,17 @@
--# -path=.:../hungarian:../common:../abstract:../prelude
resource TryHun = SyntaxHun, LexiconHun, ParadigmsHun - [mkAdv] ;
resource TryHun = SyntaxHun-[mkAdN], LexiconHun, ParadigmsHun - [mkAdv,mkAdN] **
open (P = ParadigmsHun) in {
oper
mkAdv = overload SyntaxHun {
mkAdv : Str -> Adv = P.mkAdv ;
} ;
mkAdN = overload {
mkAdN : CAdv -> AdN = SyntaxHun.mkAdN ;
mkAdN : Str -> AdN = P.mkAdN ;
} ;
}

View File

@@ -1,3 +1,12 @@
--# -path=.:../icelandic:../common:../abstract:../prelude
resource TryIce = SyntaxIce, LexiconIce, ParadigmsIce - [mkAdv,mkAdN,mkOrd] ;
resource TryIce = SyntaxIce-[mkVoc], LexiconIce, ParadigmsIce - [mkAdv,mkAdN,mkOrd,mkVoc] **
open (P = ParadigmsIce) in {
oper
mkVoc = overload {
mkVoc : NP -> Voc = SyntaxIce.mkVoc ;
mkVoc : Str -> Voc = P.mkVoc ;
} ;
}

View File

@@ -1,3 +1,16 @@
--# -path=.:../nynorsk:../scandinavian:../common:../abstract:../prelude
resource TryNno = SyntaxNno, LexiconNno, ParadigmsNno - [mkAdv] ;
resource TryNno = SyntaxNno-[mkAdN], LexiconNno, ParadigmsNno - [mkAdv,mkAdN] **
open (P = ParadigmsNno) in {
oper
mkAdv = overload SyntaxNno {
mkAdv : Str -> Adv = P.mkAdv ;
} ;
mkAdN = overload {
mkAdN : CAdv -> AdN = SyntaxNno.mkAdN ;
mkAdN : Str -> AdN = P.mkAdN ;
} ;
}

View File

@@ -1,3 +1,16 @@
--# -path=.:../norwegian:../scandinavian:../common:../abstract:../prelude
resource TryNor = SyntaxNor, LexiconNor, ParadigmsNor - [mkAdv] ;
resource TryNor = SyntaxNor-[mkAdN], LexiconNor, ParadigmsNor - [mkAdv,mkAdN] **
open (P = ParadigmsNor) in {
oper
mkAdv = overload SyntaxNor {
mkAdv : Str -> Adv = P.mkAdv ;
} ;
mkAdN = overload {
mkAdN : CAdv -> AdN = SyntaxNor.mkAdN ;
mkAdN : Str -> AdN = P.mkAdN ;
} ;
}

22
src/api/TrySco.gf Normal file
View File

@@ -0,0 +1,22 @@
--# -path=.:../english:../common:../abstract:../prelude
resource TrySco = SyntaxSco-[mkAdN], LexiconSco, ParadigmsSco - [mkAdv,mkAdN,mkOrd,mkQuant,mkVoc] **
open (P = ParadigmsEng) in {
oper
mkAdv = overload SyntaxSco {
mkAdv : Str -> Adv = P.mkAdv ;
} ;
mkAdN = overload {
mkAdN : CAdv -> AdN = SyntaxSco.mkAdN ;
mkAdN : Str -> AdN = P.mkAdN ;
} ;
mkOrd = overload SyntaxSco {
mkOrd : Str -> Ord = P.mkOrd ;
} ;
}

View File

@@ -54,7 +54,7 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in {
Card = ResAra.NumOrdCard ;
Predet = ResAra.Predet ;
Det = ResAra.Det ;
DAP, Det = ResAra.Det ;
-- {s : Species => Gender => Case => Str ;
-- d : State; n : Size; isNum : Bool } ;
Quant = ResAra.Quant ;
@@ -92,7 +92,8 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in {
N = ResAra.Noun ;
N2 = ResAra.Noun2 ;
N3 = ResAra.Noun3 ;
GN, SN, LN, PN = {s : Case => Str; g : Gender; h : Species} ;
GN, SN, PN = {s : Case => Str; g : Gender; h : Species} ;
LN = ResAra.NP ;
linref

View File

@@ -31,15 +31,15 @@ lin
monthAdv january =
let january_CN : CN = mkCN month_Timeunit (mkNP (mkPN january)) ;
january_NP : NP = R.emptyNP **
january_NP : NP = lin NP R.emptyNP **
{s = \\c => R.cn2str january_CN R.Sg R.Const c ;
a = {pgn = R.Per3 january_CN.g R.Sg ; isPron = False}} ;
in SyntaxAra.mkAdv R.biPrep january_NP ;
in SyntaxAra.mkAdv ParadigmsAra.biPrep january_NP ;
yearAdv y = SyntaxAra.mkAdv in_Prep y ;
-- dummy
dayMonthAdv d m = SyntaxAra.mkAdv on_Prep (mkNP d) ; -- on 17 May
dayMonthAdv d m = SyntaxAra.mkAdv on_Prep (mkNP m) ; -- on 17 May
monthYearAdv m y = SyntaxAra.mkAdv on_Prep (mkNP m) ; -- in May 2012
dayMonthYearAdv d m y = SyntaxAra.mkAdv on_Prep y ; -- on 17 May 2013
@@ -51,7 +51,7 @@ lin
let ap = mkAP a in ap ** {
s = \\s,g,n,d,c =>
ap.s ! s ! g ! n ! d ! c
++ (mkAdv R.biPrep (mkNP amount_N)).s
++ (mkAdv ParadigmsAra.biPrep (mkNP amount_N)).s
++ (mkNP card cn).s ! R.Bare ---- ? /IL
} ;
@@ -60,26 +60,26 @@ oper
amount_N : N = mkN "مِقْدَار" "مَقَادِير" masc nohum ;
-- hack used in the name constructions
toNP : Bool -> NP -> NP = \b -> if_then_else NP b R.emptyNP ;
toNP : Bool -> NP -> NP = \b -> if_then_else NP b (lin NP R.emptyNP) ;
lin
-- : NP -> NP -> Cl
have_name_Cl np nm =
let subjPron : Pron = R.np2pron np ;
let subjPron : Pron = lin Pron (R.np2pron np) ;
me : NP = toNP np.a.isPron np ;
myName : NP = E.ApposNP me (mkNP (mkDet subjPron) L.name_N) ;
in mkCl myName nm ;
-- : NP -> QCl
what_name_QCl np =
let subjPron : Pron = R.np2pron np ;
let subjPron : Pron = lin Pron (R.np2pron np) ;
me : R.NP = toNP np.a.isPron np ;
myName : NP = E.ApposNP me (mkNP (mkDet subjPron) L.name_N) ;
what_IP : R.IP = R.mkIP "مَا هُوَ" R.Sg ;
what_IP : IP = lin IP (R.mkIP "مَا هُوَ" R.Sg) ;
in mkQCl what_IP myName ;
how_old_QCl np =
let subjPron : Pron = R.np2pron np ;
let subjPron : Pron = lin Pron (R.np2pron np) ;
me : R.NP = toNP np.a.isPron np ;
age_N = mkN "عُمر" ;
myAge : NP = E.ApposNP me (mkNP (mkDet subjPron) L.name_N) ;

View File

@@ -1,4 +1,4 @@
--# -path=.:../abstract:../common
--# -path=.:../abstract:../common
-- documenting Arabic inflection
---- so far with English titles and tags, AR 2024-01-31
@@ -32,7 +32,7 @@ lin
)
} ;
InflectionPN, InflectionLN, InflectionGN, InflectionSN = \pn -> { ---- TODO: special for LN, GN, SN
InflectionPN, InflectionGN, InflectionSN = \pn -> { ---- TODO: special for LN, GN, SN
t = "pn" ;
s1 = heading1 ("Proper Name" ++
case pn.g of {

View File

@@ -8,7 +8,7 @@ concrete ExtendAra of Extend =
VPS, MkVPS, PredVPS, BaseVPS, ConsVPS, ConjVPS,
EmbedSSlash, AdjAsNP, GerundNP,
PassVPSlash, ---- bogus implementation, see below
CompoundN
CompoundN, UseDAP, UseDAPMasc, UseDAPFem
]
with (Grammar=GrammarAra)
** open
@@ -105,4 +105,31 @@ lin
s2 = \\n, s, c => b.s2 ! n ! Const ! c ++ a.s2 ! n ! s ! c
} ;
lin UseDAP dap = case dap.isEmpty of {
True => case <dap.d,dap.n> of { -- if the s field is empty, make up some other determiner
<Def,One> => it_Pron ;
<Def,_> => they_Pron ;
<Indef,One> => emptyNP ** {s = someSg_Det.s ! NoHum ! Masc} ;
_ => emptyNP ** {s = somePl_Det.s ! NoHum ! Masc}
} ;
False => emptyNP ** {s = dap.s ! NoHum ! Masc} } ;
lin UseDAPMasc dap = case dap.isEmpty of {
True => case <dap.d,dap.n> of { -- if the s field is empty, make up some other determiner
<Def,One> => it_Pron ;
<Def,_> => theyMasc_Pron ;
<Indef,One> => emptyNP ** {s = someSg_Det.s ! NoHum ! Masc} ;
_ => emptyNP ** {s = somePl_Det.s ! NoHum ! Masc}
} ;
False => emptyNP ** {s = dap.s ! NoHum ! Masc} } ;
lin UseDAPFem dap = case dap.isEmpty of {
True => case <dap.d,dap.n> of { -- if the s field is empty, make up some other determiner
<Def,One> => it_Pron ;
<Def,_> => theyFem_Pron ;
<Indef,One> => emptyNP ** {s = someSg_Det.s ! NoHum ! Fem} ;
_ => emptyNP ** {s = somePl_Det.s ! NoHum ! Fem}
} ;
False => emptyNP ** {s = dap.s ! NoHum ! Fem} } ;
}

View File

@@ -23,7 +23,7 @@ flags
beautiful_A = sndA "جمل" "فَعِيل" ;
become_VA = mkVA (v4 "صبح") ;
beer_N = sdfN "بير" "فِعلة" Fem NoHum ;
beg_V2V = mkV2V (mkVV (v5 "وسل")) noPrep ;
beg_V2V = mkV2V (mkVV (v5 "وسل")) ParadigmsAra.noPrep ;
big_A = sndA "كبر" "فَعِيل" ;
bike_N = sdfN "درج" "فَعّالة" Fem NoHum ;
bird_N = brkN "طير" "فَعل" "فُعُول" Masc NoHum;
@@ -72,7 +72,7 @@ flags
door_N = brkN "بوب" "فاع" "أَفعَال" Masc NoHum ;
drink_V2 = dirV2 (regV "شَرِب") ;
-- drink_V2 = dirV2 (v1 "شرب" i a) ;
easy_A2V = mkA2 (sndA "سهل" "فَعل") liPrep ;
easy_A2V = mkA2 (sndA "سهل" "فَعل") ParadigmsAra.liPrep ;
eat_V2 = dirV2 (mkV "ءكل" FormI) ;
empty_A = sndA "فرغ" "فاعِل" ;
enemy_N = brkN "عدو" "فَعُلّ" "أَفعَاء" Masc Hum ;
@@ -202,7 +202,7 @@ flags
switch8off_V2 = dirV2 (v4 "طفء") ;
switch8on_V2 = dirV2 (v4 "شعل") ;
table_N = sdfN "طول" "فاعِلة" Fem NoHum ;
talk_V3 = mkV3 (v5 "حدث") liPrep (mkPrep "عَن") ;
talk_V3 = mkV3 (v5 "حدث") ParadigmsAra.liPrep (mkPrep "عَن") ;
teacher_N = sdmN "علم" "مُفَعِّل" Masc Hum ; --mucal~imö
teach_V2 = dirV2 (v2 "علم") ;
television_N = mkN (sndf "تِلِفِزيُون") Masc NoHum ;

View File

@@ -70,6 +70,8 @@ oper
_ => "لِ"
}) Dat ;
biPrep : Preposition = mkPrefix "بِ" ;
kaPrep : Preposition = mkPrefix "كَ" ;
accPrep : Preposition = mkPreposition [] Acc ; -- default object case in VP
genPrep : Preposition = mkPreposition [] Gen ; -- default object case in N2

View File

@@ -9,11 +9,10 @@ lin FullName gn sn = emptyNP ** {
a = {pgn = Per3 gn.g Sg ; isPron = False} ;
} ;
lin UseLN pn = emptyNP ** {
s = pn.s ;
a = {pgn = Per3 pn.g Sg ; isPron = False} ;
} ;
lin UseLN ln = ln ;
lin InLN n = A.PrepNP S.in_Prep (N.UsePN n) ; ---- TODO: alternative prepositions
lin PlainLN ln = ln ;
lin InLN n = A.PrepNP S.in_Prep n ; ---- TODO: alternative prepositions
}

View File

@@ -237,6 +237,11 @@ lin
}
};
-- : CN -> NP -> CN ; -- glass of wine
--PartNP
DetDAP d = d ;
QuantityNP n m = emptyNP ** {
s = \\c => preOrPost m.isPre m.s n.s ;
a = { pgn = agrP3 NoHum Masc (sizeToNumber n.n);
isPron = False }
};
}

View File

@@ -30,6 +30,7 @@ resource ParadigmsAra = open
ResAra,
OrthoAra,
(A=AdjectiveAra),
(N=NounAra),
CatAra
in {
@@ -97,12 +98,17 @@ resource ParadigmsAra = open
mkLN = overload {
mkLN : Str -> LN -- Predictable LN from a Str: fem hum if ends in ة, otherwise masc hum.
= \s -> lin LN (smartPN s) ;
= \s -> lin LN (N.UsePN (smartPN s)) ;
mkLN : Str -> Gender -> LN
= \s, g -> lin LN (N.UsePN (smartPN s ** {g = g})) ;
mkLN : N -> LN -- Make a LN out of N. The LN is in construct state.
= \n -> lin LN (n ** {
s = \\c => n.s ! Sg ! Const ! c
++ n.s2 ! Sg ! Def ! c -- NB this hack works for idaafa constructions (if you used mkN : N -> N -> N), but wrong for mkN : N -> A -> N. /IL
}) ;
= \n -> lin LN (N.MassNP (N.UseN n)) ;
----(n ** { ---- cannot get this to compile AR 2024-04-18
---- s = \\c => n.s ! Sg ! Const ! c
---- ++ n.s2 ! Sg ! Def ! c -- NB this hack works for idaafa constructions (if you used mkN : N -> N -> N), but wrong for mkN : N -> A -> N. /IL
---- }))) ;
mkLN : NP -> LN
= \np -> lin LN np ;
} ;
--3 Relational nouns
@@ -147,7 +153,7 @@ resource ParadigmsAra = open
nisbaA : Str -> Adj ; -- Forms relative adjectives with the suffix ِيّ. Takes either the stem and adds يّ, or the whole word ending in يّ and just adds declension.
idaafaA : N -> A -> A ; -- Forms adjectives of type غَيْرُ طَيِّبٍ 'not good'. Noun is in construct state but inflects in case. Adjective is in genitive, but inflects in gender, number and state.
idaafaA : N -> A -> A ; -- Forms adjectives of type غَيْرُ لَذيذٍ 'not tasty'. Noun is in construct state but inflects in case. Adjective is in genitive, but inflects in gender, number and state.
degrA : (masc,fem,plur : Str) -> A ; -- Adjective where masculine singular is also the comparative form. Indeclinable singular, basic triptote declension for dual and plural.
@@ -196,6 +202,7 @@ resource ParadigmsAra = open
liPrep : Prep ; -- The preposition لِ, binding to its head. Vowel assimilation and def. article elision implemented.
biPrep : Prep ; -- The preposition بِ, binding to its head.
kaPrep : Prep ; -- The preposition كَ, binding to its head.
noPrep : Prep ; -- No preposition at all, "complement case" is nominative.
--2 Conjunctions
@@ -206,6 +213,10 @@ resource ParadigmsAra = open
mkConj : Str -> Str -> Number -> Conj ; -- either, or, sg
} ;
--2 Measurement Units
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
--2 Verbs
-- Overloaded operations
@@ -365,6 +376,7 @@ resource ParadigmsAra = open
noPrep = lin Prep ResAra.noPrep ;
biPrep = lin Prep ResAra.biPrep ;
liPrep = lin Prep ResAra.liPrep ;
kaPrep = lin Prep ResAra.kaPrep ;
casePrep : Case -> Prep = \c -> lin Prep {s=[]; c=c; binds=False} ;
@@ -802,7 +814,7 @@ resource ParadigmsAra = open
dirV3 = overload {
dirV3 : V -> Prep -> V3 = \v,p -> mkV3 v (casePrep acc) p ;
dirV3 : V -> Str -> V3 = \v,s -> mkV3 v (casePrep acc) (mkPreposition s)
dirV3 : V -> Str -> V3 = \v,s -> mkV3 v (casePrep acc) (mkPrep s)
} ;
dirdirV3 v = dirV3 v (casePrep acc) ;
@@ -863,7 +875,7 @@ resource ParadigmsAra = open
mkAS,
mkAV = \a -> a ;
mkA2S,
mkA2V = \a,p -> prepA2 a (mkPreposition p) ;
mkA2V = \a,p -> lin A (prepA2 a (mkPreposition p)) ;
@@ -939,25 +951,25 @@ oper
wmkA : {masc_sg, masc_pl, root, sg_patt : Str} -> A
= \r -> mkA r.root r.sg_patt ;
wmkA : {masc_sg, fem_sg, masc_pl, fem_pl, root, pl_patt : Str} -> A
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
= \r -> mascFemA r.masc_sg r.fem_sg ;
wmkA : {masc_sg, fem_sg, masc_pl, fem_pl, root : Str} -> A
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
= \r -> mascFemA r.masc_sg r.fem_sg ;
wmkA : {masc_sg, fem_sg, root : Str} -> A
= \r -> mkA r.root ; ----
wmkA : {masc_sg, fem_sg, masc_pl, fem_pl, pl_patt : Str} -> A
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
= \r -> mascFemA r.masc_sg r.fem_sg ;
wmkA : {masc_sg : Str; fem_sg : Str; fem_pl : Str} -> A
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
= \r -> mascFemA r.masc_sg r.fem_sg ;
wmkA : {masc_sg : Str; fem_sg : Str; root : Str ; sg_patt : Str} -> A
= \r -> mkA r.root r.sg_patt ;
wmkA : {masc_sg : Str; fem_sg : Str} -> A
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
= \r -> mascFemA r.masc_sg r.fem_sg ;
wmkA : {masc_sg : Str; masc_pl : Str; fem_sg : Str; fem_pl : Str} -> A
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
= \r -> mascFemA r.masc_sg r.fem_sg ;
wmkA : {masc_sg : Str; masc_pl : Str; fem_sg : Str; root : Str} -> A
= \r -> mkA r.root ;
wmkA : {masc_sg : Str; masc_pl : Str; fem_sg : Str} -> A
= \r -> mascFemAdj r.masc_sg r.fem_sg ;
= \r -> mascFemA r.masc_sg r.fem_sg ;
wmkA : {masc_sg : Str; masc_pl : Str; root : Str} -> A
= \r -> mkA r.root ;
wmkA : {masc_sg : Str; masc_pl, pl_patt : Str; root : Str} -> A

View File

@@ -71,4 +71,5 @@ concrete SentenceAra of Sentence = CatAra ** open
UseSlash t p cls = UseCl t p (complClSlash cls) ;
AdvS adv s = s ** {s = \\o => adv.s ++ s.s ! o} ;
ExtAdvS adv s = s ** {s = \\o => adv.s ++ s.s ! o} ;
}

View File

@@ -124,7 +124,7 @@ concrete StructuralAra of Structural = CatAra **
youPl_Pron = youPlMasc_Pron ;
youPol_Pron = youPlFem_Pron ; -- arbitrary?
have_V2 = mkV2 ladaa_V (casePrep nom) ; -- "X has Y" literally "Y<nom> is on X<nom>"
have_V2 = mkV2 (lin V ladaa_V) (casePrep nom) ; -- "X has Y" literally "Y<nom> is on X<nom>"
--have_V2 = dirV2 (regV "يَملِك") ; -- "X<nom> owns/possesses Y<acc>"
lin language_title_Utt = {s = \\_ => "العربية"} ;

View File

@@ -0,0 +1,4 @@
concrete AdjectiveHye of Adjective = CatHye ** {
lin
PositA a = a ;
}

4
src/armenian/AllHye.gf Normal file
View File

@@ -0,0 +1,4 @@
concrete AllHye of AllHyeAbs =
LangHye
**
{} ;

View File

@@ -0,0 +1,3 @@
abstract AllHyeAbs =
Lang
** {}

16
src/armenian/CatHye.gf Normal file
View File

@@ -0,0 +1,16 @@
concrete CatHye of Cat = CommonX ** open ResHye in {
lincat V = Verb ;
lincat VV,VS,VQ,VA = Verb ;
lincat V2 = Verb ** {c2 : Compl} ;
lincat V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
lincat N = Noun ;
lincat N2 = Noun ** {c2 : Compl} ;
lincat N3 = Noun ** {c2,c3 : Compl} ;
lincat CN = Noun ;
lincat A = Adj ;
lincat A2 = Adj ** {c2 : Compl} ;
lincat AP = Adj ;
lincat Prep = Compl ;
}

View File

@@ -0,0 +1,133 @@
concrete DocumentationHye of Documentation = CatHye ** open
ResHye, Prelude, HTML in {
lincat
Inflection = {t : Str; s1,s2,s3 : Str} ;
Definition = {s : Str} ;
Document = {s : Str} ;
Tag = {s : Str} ;
lin
InflectionV,InflectionV2,InflectionV2A,InflectionV2Q,InflectionV2S,InflectionV2V,InflectionV3,InflectionVA,InflectionVQ,InflectionVS,InflectionVV = \x -> {
t="v" ;
s1="" ;
s2=heading1 "Infinitive" ++
paragraph (x.s) ++
heading1 "Converb" ++
frameTable (
tr (th "Imperfective" ++ td (x.Converb.Imperfective)) ++
tr (th "Simultaneous" ++ td (x.Converb.Simultaneous)) ++
tr (th "Perfective" ++ td (x.Converb.Perfective)) ++
tr (th "Futute I" ++ td (x.Converb.FutCon1)) ++
tr (th "Futute II" ++ td (x.Converb.FutCon2)) ++
tr (th "Connegative" ++ td (x.Converb.Negative))) ++
heading1 "Passive" ++
paragraph x.Passive ++
heading1 "Participle" ++
frameTable (
tr (th "Resultative" ++ td (x.Participle ! Resultative)) ++
tr (th "Subject" ++ td (x.Participle ! Subject))) ++
heading1 "Past" ++
frameTable (
tr (th "" ++ th "Sg" ++ th "Pl") ++
tr (th "P1" ++ td (x.Past ! P1 ! Sg) ++ td (x.Past ! P1 ! Pl)) ++
tr (th "P2" ++ td (x.Past ! P2 ! Sg) ++ td (x.Past ! P2 ! Pl)) ++
tr (th "P3" ++ td (x.Past ! P3 ! Sg) ++ td (x.Past ! P3 ! Pl))) ++
heading1 "Subjunctive" ++
frameTable (
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
tr (intagAttr "th" "rowspan=\"3\"" "Perfect" ++
th "P1" ++ td (x.Subjunctive ! Perfect ! P1 ! Sg) ++ td (x.Subjunctive ! Perfect ! P1 ! Pl)) ++
tr (th "P2" ++ td (x.Subjunctive ! Perfect ! P2 ! Sg) ++ td (x.Subjunctive ! Perfect ! P2 ! Pl)) ++
tr (th "P3" ++ td (x.Subjunctive ! Perfect ! P3 ! Sg) ++ td (x.Subjunctive ! Perfect ! P3 ! Pl)) ++
tr (intagAttr "th" "rowspan=\"3\"" "Non_Past" ++
th "P1" ++ td (x.Subjunctive ! Non_Past ! P1 ! Sg) ++ td (x.Subjunctive ! Non_Past ! P1 ! Pl)) ++
tr (th "P2" ++ td (x.Subjunctive ! Non_Past ! P2 ! Sg) ++ td (x.Subjunctive ! Non_Past ! P2 ! Pl)) ++
tr (th "P3" ++ td (x.Subjunctive ! Non_Past ! P3 ! Sg) ++ td (x.Subjunctive ! Non_Past ! P3 ! Pl))) ++
heading1 "Conditional" ++
frameTable (
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
tr (intagAttr "th" "rowspan=\"3\"" "Perfect" ++
th "P1" ++ td (x.Conditional ! Perfect ! P1 ! Sg) ++ td (x.Conditional ! Perfect ! P1 ! Pl)) ++
tr (th "P2" ++ td (x.Conditional ! Perfect ! P2 ! Sg) ++ td (x.Conditional ! Perfect ! P2 ! Pl)) ++
tr (th "P3" ++ td (x.Conditional ! Perfect ! P3 ! Sg) ++ td (x.Conditional ! Perfect ! P3 ! Pl)) ++
tr (intagAttr "th" "rowspan=\"4\"" "Non_Past" ++
th "P1" ++ td (x.Conditional ! Non_Past ! P1 ! Sg) ++ td (x.Conditional ! Non_Past ! P1 ! Pl)) ++
tr (th "P2" ++ td (x.Conditional ! Non_Past ! P2 ! Sg) ++ td (x.Conditional ! Non_Past ! P2 ! Pl)) ++
tr (th "P3" ++ td (x.Conditional ! Non_Past ! P3 ! Sg) ++ td (x.Conditional ! Non_Past ! P3 ! Pl))) ++
heading1 "Imperative" ++
frameTable (
tr (th "Sg" ++ th "Pl") ++
tr (td (x.Imperative_Jussive ! Sg) ++ td (x.Imperative_Jussive ! Pl))) ;
s3=[]
} ;
lin
InflectionN,InflectionN2,InflectionN3 = \x -> {
t="n" ;
s1="" ;
s2=frameTable (
tr (th "" ++ th "Sg" ++ th "Pl") ++
tr (th "Nom" ++ td (x.s ! Nom ! Sg) ++ td (x.s ! Nom ! Pl)) ++
tr (th "Dat" ++ td (x.s ! Dat ! Sg) ++ td (x.s ! Dat ! Pl)) ++
tr (th "Ablat" ++ td (x.s ! Ablat ! Sg) ++ td (x.s ! Ablat ! Pl)) ++
tr (th "Instr" ++ td (x.s ! Instr ! Sg) ++ td (x.s ! Instr ! Pl)) ++
tr (th "Loc" ++ td (x.s ! Loc ! Sg) ++ td (x.s ! Loc ! Pl)) ++
tr (intagAttr "th" "colspan=\"3\"" "definite forms") ++
tr (th "Nom" ++ td (x.def_nom ! Sg) ++ td (x.def_nom ! Pl)) ++
tr (th "Dat" ++ td (x.def_dat ! Sg) ++ td (x.def_dat ! Pl)) ++
tr (intagAttr "th" "colspan=\"3\"" "1st person possessive forms") ++
tr (th "Nom" ++ td (x.poss1 ! Nom ! Sg) ++ td (x.poss1 ! Nom ! Pl)) ++
tr (th "Dat" ++ td (x.poss1 ! Dat ! Sg) ++ td (x.poss1 ! Dat ! Pl)) ++
tr (th "Ablat" ++ td (x.poss1 ! Ablat ! Sg) ++ td (x.poss1 ! Ablat ! Pl)) ++
tr (th "Instr" ++ td (x.poss1 ! Instr ! Sg) ++ td (x.poss1 ! Instr ! Pl)) ++
tr (th "Loc" ++ td (x.poss1 ! Loc ! Sg) ++ td (x.poss1 ! Loc ! Pl)) ++
tr (intagAttr "th" "colspan=\"3\"" "2nd person possessive forms") ++
tr (th "Nom" ++ td (x.poss2 ! Nom ! Sg) ++ td (x.poss2 ! Nom ! Pl)) ++
tr (th "Dat" ++ td (x.poss2 ! Dat ! Sg) ++ td (x.poss2 ! Dat ! Pl)) ++
tr (th "Ablat" ++ td (x.poss2 ! Ablat ! Sg) ++ td (x.poss2 ! Ablat ! Pl)) ++
tr (th "Instr" ++ td (x.poss2 ! Instr ! Sg) ++ td (x.poss2 ! Instr ! Pl)) ++
tr (th "Loc" ++ td (x.poss2 ! Loc ! Sg) ++ td (x.poss2 ! Loc ! Pl))) ;
s3=[]
} ;
lin
InflectionA,InflectionA2 = \x -> {
t="a" ;
s1="" ;
s2=frameTable (
tr (th "" ++ th "Sg" ++ th "Pl") ++
tr (th "Nom" ++ td (x.s ! Nom ! Sg) ++ td (x.s ! Nom ! Pl)) ++
tr (th "Dat" ++ td (x.s ! Dat ! Sg) ++ td (x.s ! Dat ! Pl)) ++
tr (th "Ablat" ++ td (x.s ! Ablat ! Sg) ++ td (x.s ! Ablat ! Pl)) ++
tr (th "Instr" ++ td (x.s ! Instr ! Sg) ++ td (x.s ! Instr ! Pl)) ++
tr (th "Loc" ++ td (x.s ! Loc ! Sg) ++ td (x.s ! Loc ! Pl)) ++
tr (intagAttr "th" "colspan=\"3\"" "definite forms") ++
tr (th "Nom" ++ td (x.def_nom ! Sg) ++ td (x.def_nom ! Pl)) ++
tr (th "Dat" ++ td (x.def_dat ! Sg) ++ td (x.def_dat ! Pl)) ++
tr (intagAttr "th" "colspan=\"3\"" "1st person possessive forms") ++
tr (th "Nom" ++ td (x.poss1 ! Nom ! Sg) ++ td (x.poss1 ! Nom ! Pl)) ++
tr (th "Dat" ++ td (x.poss1 ! Dat ! Sg) ++ td (x.poss1 ! Dat ! Pl)) ++
tr (th "Ablat" ++ td (x.poss1 ! Ablat ! Sg) ++ td (x.poss1 ! Ablat ! Pl)) ++
tr (th "Instr" ++ td (x.poss1 ! Instr ! Sg) ++ td (x.poss1 ! Instr ! Pl)) ++
tr (th "Loc" ++ td (x.poss1 ! Loc ! Sg) ++ td (x.poss1 ! Loc ! Pl)) ++
tr (intagAttr "th" "colspan=\"3\"" "2nd person possessive forms") ++
tr (th "Nom" ++ td (x.poss2 ! Nom ! Sg) ++ td (x.poss2 ! Nom ! Pl)) ++
tr (th "Dat" ++ td (x.poss2 ! Dat ! Sg) ++ td (x.poss2 ! Dat ! Pl)) ++
tr (th "Ablat" ++ td (x.poss2 ! Ablat ! Sg) ++ td (x.poss2 ! Ablat ! Pl)) ++
tr (th "Instr" ++ td (x.poss2 ! Instr ! Sg) ++ td (x.poss2 ! Instr ! Pl)) ++
tr (th "Loc" ++ td (x.poss2 ! Loc ! Sg) ++ td (x.poss2 ! Loc ! Pl))) ;
s3=[]
} ;
lin
InflectionAdA,InflectionAdN,InflectionAdV,InflectionAdv = \x -> {t="adv"; s1=""; s2=x.s; s3=""} ;
InflectionPrep = \x -> {t="prep"; s1=""; s2=x.s; s3=""} ;
lin
NoDefinition t = {s=t.s};
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
MkDefinitionEx t d e = {s="<p><b>Definition:</b>"++t.s++d.s++"</p><p><b>Example:</b>"++e.s++"</p>"};
lin
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ i.s3 ++ e.s} ;
MkTag i = {s = i.t} ;
}

View File

@@ -0,0 +1,6 @@
concrete GrammarHye of Grammar =
TenseX,
PhraseHye,
NounHye,
AdjectiveHye ** {
}

10
src/armenian/LangHye.gf Normal file
View File

@@ -0,0 +1,10 @@
--# -path=.:../abstract
concrete LangHye of Lang =
GrammarHye,
LexiconHye
,DocumentationHye --# notpresent
** {
flags startcat = Phr ;
}

View File

@@ -0,0 +1,2 @@
concrete LexiconHye of Lexicon = CatHye ** open ParadigmsHye in {
}

7506
src/armenian/MorphoHye.gf Normal file

File diff suppressed because it is too large Load Diff

4
src/armenian/NounHye.gf Normal file
View File

@@ -0,0 +1,4 @@
concrete NounHye of Noun = CatHye ** {
lin
UseN n = n ;
}

View File

@@ -0,0 +1,491 @@
resource ParadigmsHye = MorphoHye ** open Predef, Prelude, CatHye, ResHye in {
oper
regV : Str -> V -- s
= \form -> case form of {
_ + "ղալ" => mkV002 form;
_ + "ձալ" => mkV002 form;
_ + "զալ" => mkV002 form;
_ + "լալ" => mkV002 form;
_ + "թալ" => mkV002 form;
_ + "ռալ" => mkV002 form;
_ + "րալ" => mkV002 form;
_ + "ւալ" => mkV002 form;
_ + "ջալ" => mkV002 form;
_ + "գալ" => mkV002 form;
_ + "տալ" => mkV002 form;
_ + "ճալ" => mkV002 form;
_ + "սալ" => mkV002 form;
_ + "փալ" => mkV002 form;
_ + "կալ" => mkV002 form;
_ + "վալ" => mkV002 form;
_ + "բալ" => mkV002 form;
_ + "ծալ" => mkV002 form;
_ + "չալ" => mkV002 form;
_ + "նալ" => mkV004 form;
_ + "ել" => mkV001 form;
_ => error "Cannot find an inflection rule"
} ;
reg2V : Str -> Str -> V -- s Imperative_Jussive;Pl
= \form1, form2 -> case <form1, form2> of {
<_ + "լ", _ + "է՛ք"> => mkV012 form1;
_ => regV form1
} ;
regN : Str -> N -- s;Nom;Sg
= \form -> case form of {
_ + "իւն" => mkN008 form;
_ + "ժամ" => mkN007 form;
_ + "մոմ" => mkN007 form;
_ + "ւնտ" => mkN007 form;
_ + "րստ" => mkN007 form;
_ + "խոտ" => mkN007 form;
_ + "ելտ" => mkN007 form;
_ + "տառ" => mkN007 form;
_ + "երդ" => mkN007 form;
_ + "ձող" => mkN007 form;
_ + "փող" => mkN007 form;
_ + "հող" => mkN007 form;
_ + "խաղ" => mkN007 form;
_ + "իկղ" => mkN007 form;
_ + "շոր" => mkN007 form;
_ + "զոր" => mkN007 form;
_ + "շեր" => mkN016 form;
_ + "եգր" => mkN007 form;
_ + "թել" => mkN007 form;
_ + "խել" => mkN007 form;
_ + "ճոճ" => mkN007 form;
_ + "իցք" => mkN007 form;
_ + "ենք" => mkN007 form;
_ + "ուրծք" => mkN005 form;
_ + "յծք" => mkN007 form;
_ + "նչք" => mkN007 form;
_ + "ծոց" => mkN007 form;
_ + "այց" => mkN007 form;
_ + "կաց" => mkN007 form;
_ + "ջիջ" => mkN013 form;
_ + "եղջ" => mkN007 form;
_ + "ւրթ" => mkN007 form;
_ + "յոթ" => mkN007 form;
_ + "ճապ" => mkN001 form;
_ + "րապ" => mkN001 form;
_ + "լեպ" => mkN001 form;
_ + "ծագ" => mkN007 form;
_ + "ենգ" => mkN007 form;
_ + "գիչ" => mkN013 form;
_ + "միչ" => mkN013 form;
_ + "տիչ" => mkN013 form;
_ + "նիչ" => mkN013 form;
_ + "ւրծ" => mkN007 form;
_ + "թու" => mkN012 form;
_ + "զու" => mkN012 form;
_ + "ռու" => mkN012 form;
_ + "ճու" => mkN012 form;
_ + "ղու" => mkN012 form;
_ + "ճաշ" => mkN007 form;
_ + "վիշ" => mkN013 form;
_ + "ուրձ" => mkN005 form;
_ + "դհի" => mkN006 form;
_ + "ւդի" => mkN006 form;
_ + "ուն" => mkN010 form;
_ + "սն" => mkN007 form;
_ + "կն" => mkN007 form;
_ + "շն" => mkN007 form;
_ + "մն" => mkN007 form;
_ + "ռն" => mkN007 form;
_ + "ձն" => mkN007 form;
_ + "նն" => mkN007 form;
_ + "ւմ" => mkN004 form;
_ + "րմ" => mkN007 form;
_ + "ղմ" => mkN007 form;
_ + "յմ" => mkN007 form;
_ + "հմ" => mkN007 form;
_ + "լմ" => mkN007 form;
_ + "յտ" => mkN007 form;
_ + "յռ" => mkN007 form;
_ + "ղդ" => mkN007 form;
_ + "տղ" => mkN007 form;
_ + "ղխ" => mkN007 form;
_ + "լխ" => mkN007 form;
_ + "ճխ" => mkN007 form;
_ + "չխ" => mkN007 form;
_ + "ղկ" => mkN007 form;
_ + "սկ" => mkN007 form;
_ + "տր" => mkN007 form;
_ + "կր" => mkN007 form;
_ + "նր" => mkN007 form;
_ + "ղր" => mkN007 form;
_ + "խր" => mkN007 form;
_ + "բր" => mkN007 form;
_ + "օր" => mkN016 form;
_ + "յլ" => mkN007 form;
_ + "րս" => mkN007 form;
_ + "մս" => mkN007 form;
_ + "փս" => mkN007 form;
_ + "լս" => mkN007 form;
_ + "րճ" => mkN007 form;
_ + "եճ" => mkN007 form;
_ + "աճ" => mkN007 form;
_ + "նճ" => mkN007 form;
_ + "ջք" => mkN007 form;
_ + "մք" => mkN007 form;
_ + "վք" => mkN007 form;
_ + "թք" => mkN007 form;
_ + "բք" => mkN007 form;
_ + "խց" => mkN007 form;
_ + "ղց" => mkN007 form;
_ + "վթ" => mkN007 form;
_ + "ղբ" => mkN007 form;
_ + "րբ" => mkN007 form;
_ + "ուբ" => mkN005 form;
_ + "զբ" => mkN007 form;
_ + "եբ" => mkN007 form;
_ + "ոպ" => mkN001 form;
_ + "ւպ" => mkN001 form;
_ + "իպ" => mkN001 form;
_ + "եգ" => mkN007 form;
_ + "իգ" => mkN007 form;
_ + "ոգ" => mkN007 form;
_ + "յգ" => mkN007 form;
_ + "ուրչ" => mkN005 form;
_ + "շչ" => mkN007 form;
_ + "նծ" => mkN007 form;
_ + "եծ" => mkN007 form;
_ + "յծ" => mkN007 form;
_ + "եւ" => mkN001 form;
_ + "աւ" => mkN001 form;
_ + "ւժ" => mkN007 form;
_ + "իժ" => mkN013 form;
_ + "քշ" => mkN007 form;
_ + "րշ" => mkN007 form;
_ + "ուզ" => mkN005 form;
_ + "րզ" => mkN007 form;
_ + "ավ" => mkN007 form;
_ + "յվ" => mkN007 form;
_ + "աֆ" => mkN001 form;
_ + "լֆ" => mkN001 form;
_ + "իփ" => mkN001 form;
_ + "ափ" => mkN001 form;
_ + "ոյ" => mkN007 form;
_ + "լի" => mkN006 form;
_ + "բի" => mkN006 form;
_ + "խի" => mkN006 form;
_ + "թի" => mkN006 form;
_ + "պի" => mkN006 form;
_ + "վի" => mkN006 form;
_ + "փի" => mkN006 form;
_ + "աի" => mkN006 form;
_ + "ջի" => mkN006 form;
_ + "ն" => mkN001 form;
_ + "մ" => mkN001 form;
_ + "տ" => mkN001 form;
_ + "ռ" => mkN001 form;
_ + "դ" => mkN001 form;
_ + "ղ" => mkN001 form;
_ + "խ" => mkN001 form;
_ + "կ" => mkN001 form;
_ + "ր" => mkN001 form;
_ + "լ" => mkN001 form;
_ + "ս" => mkN001 form;
_ + "ճ" => mkN001 form;
_ + "ք" => mkN001 form;
_ + "ց" => mkN001 form;
_ + "ջ" => mkN001 form;
_ + "թ" => mkN001 form;
_ + "բ" => mkN001 form;
_ + "պ" => mkN007 form;
_ + "գ" => mkN001 form;
_ + "չ" => mkN001 form;
_ + "ծ" => mkN001 form;
_ + "ւ" => mkN006 form;
_ + "ժ" => mkN001 form;
_ + "շ" => mkN001 form;
_ + "զ" => mkN001 form;
_ + "ձ" => mkN007 form;
_ + "վ" => mkN001 form;
_ + "ֆ" => mkN007 form;
_ + "հ" => mkN001 form;
_ + "փ" => mkN007 form;
_ + "յ" => mkN001 form;
_ + "ա" => mkN002 form;
_ + "ո" => mkN002 form;
_ + "ի" => mkN003 form;
_ + "ե" => mkN006 form;
_ + "է" => mkN006 form;
_ => error "Cannot find an inflection rule"
} ;
reg2N : Str -> Str -> N -- s;Nom;Sg s;Dat;Sg
= \form1, form2 -> case <form1, form2> of {
<_ + "թու", _ + "ւի"> => mkN006 form1;
<_ + "շեր", _ + "ի"> => mkN001 form1;
<_ + "ժամ", _ + "ա"> => mkN016 form1;
<_ + "ուն", _ + "բնի"> => mkN005 form1;
<_ + "ւն", _ + "վան"> => mkN009 form1;
<_ + "ւն", _ + "տան"> => mkN028 form1;
<_ + "ւն", _ + "շան"> => mkN028 form1;
<_ + "ւզ", _ + "ւզի"> => mkN001 form1;
<_ + "ւն", _ + "ի"> => mkN001 form1;
<_ + "ւն", _ + "ա"> => mkN032 form1;
<_ + "ւմ", _ + "ի"> => mkN001 form1;
<_ + "լի", _ + "ւ"> => mkN003 form1;
<_ + "բի", _ + "ւ"> => mkN003 form1;
<_ + "խի", _ + "ւ"> => mkN003 form1;
<_ + "թի", _ + "ւ"> => mkN003 form1;
<_ + "տ", _ + "մտի"> => mkN005 form1;
<_ + "տ", _ + "գտի"> => mkN005 form1;
<_ + "տ", _ + "վտի"> => mkN013 form1;
<_ + "ռ", _ + "ճռի"> => mkN013 form1;
<_ + "ն", _ + "ծնի"> => mkN013 form1;
<_ + "ն", _ + "տնի"> => mkN013 form1;
<_ + "ն", _ + "ցնի"> => mkN013 form1;
<_ + "ն", _ + "ձնի"> => mkN013 form1;
<_ + "ն", _ + "բնի"> => mkN013 form1;
<_ + "ն", _ + "խնի"> => mkN013 form1;
<_ + "ղ", _ + "ւղի"> => mkN007 form1;
<_ + "ղ", _ + "վղի"> => mkN013 form1;
<_ + "ղ", _ + "փղի"> => mkN015 form1;
<_ + "ղ", _ + "տղի"> => mkN031 form1;
<_ + "խ", _ + "ծխի"> => mkN005 form1;
<_ + "խ", _ + "բխի"> => mkN031 form1;
<_ + "կ", _ + "ղկի"> => mkN013 form1;
<_ + "կ", _ + "տկի"> => mkN013 form1;
<_ + "կ", _ + "պկի"> => mkN013 form1;
<_ + "կ", _ + "զկի"> => mkN031 form1;
<_ + "ս", _ + "մսի"> => mkN013 form1;
<_ + "ճ", _ + "վճի"> => mkN013 form1;
<_ + "ճ", _ + "հճի"> => mkN013 form1;
<_ + "ց", _ + "տցի"> => mkN005 form1;
<_ + "ց", _ + "կցի"> => mkN013 form1;
<_ + "ր", _ + "դրի"> => mkN013 form1;
<_ + "ր", _ + "գրի"> => mkN015 form1;
<_ + "ր", _ + "տրի"> => mkN005 form1;
<_ + "ր", _ + "ջրի"> => mkN005 form1;
<_ + "ր", _ + "լրի"> => mkN005 form1;
<_ + "ր", _ + "նրի"> => mkN013 form1;
<_ + "ր", _ + "խրի"> => mkN013 form1;
<_ + "ր", _ + "կրի"> => mkN013 form1;
<_ + "ր", _ + "ցրի"> => mkN013 form1;
<_ + "չ", _ + "պչի"> => mkN013 form1;
<_ + "չ", _ + "կչի"> => mkN013 form1;
<_ + "չ", _ + "րչի"> => mkN013 form1;
<_ + "չ", _ + "ցչի"> => mkN013 form1;
<_ + "չ", _ + "վչի"> => mkN013 form1;
<_ + "ծ", _ + "գծի"> => mkN015 form1;
<_ + "շ", _ + "փշի"> => mkN005 form1;
<_ + "ի", _ + "իու"> => mkN027 form1;
<_ + "ի", _ + "ձիի"> => mkN017 form1;
<_ + "ւ", _ + "վի"> => mkN012 form1;
<_ + "տ", _ + "ա"> => mkN016 form1;
<_ + "ռ", _ + "ն"> => mkN026 form1;
<_ + "ն", _ + "ջ"> => mkN034 form1;
<_ + "կ", _ + "ա"> => mkN016 form1;
<_ + "կ", _ + "ն"> => mkN023 form1;
<_ + "ր", _ + "ջ"> => mkN043 form1;
<_ + "ի", _ + "ի"> => mkN006 form1;
_ => regN form1
} ;
regA : Str -> A -- s;Nom;Sg
= \form -> case form of {
_ + "կիչ" => mkA006 form;
_ + "ենգ" => mkA005 form;
_ + "աղջ" => mkA005 form;
_ + "սկի" => mkA003 form;
_ + "աղի" => mkA003 form;
_ + "ղց" => mkA005 form;
_ + "ջն" => mkA005 form;
_ + "եպ" => mkA005 form;
_ + "նտ" => mkA005 form;
_ + "ոդ" => mkA005 form;
_ + "ղծ" => mkA005 form;
_ + "յծ" => mkA005 form;
_ + "եծ" => mkA005 form;
_ + "ձր" => mkA005 form;
_ + "նր" => mkA005 form;
_ + "ծր" => mkA005 form;
_ + "մր" => mkA005 form;
_ + "սր" => mkA005 form;
_ + "քր" => mkA005 form;
_ + "ցր" => mkA005 form;
_ + "եւ" => mkA001 form;
_ + "ոկ" => mkA005 form;
_ + "ղմ" => mkA005 form;
_ + "տք" => mkA005 form;
_ + "իղ" => mkA006 form;
_ + "նչ" => mkA008 form;
_ + "ոխ" => mkA005 form;
_ + "ղխ" => mkA005 form;
_ + "ղթ" => mkA005 form;
_ + "ւթ" => mkA011 form;
_ + "րշ" => mkA005 form;
_ + "եշ" => mkA005 form;
_ + "քշ" => mkA005 form;
_ + "ոռ" => mkA005 form;
_ + "ւգ" => mkA005 form;
_ + "եգ" => mkA005 form;
_ + "րճ" => mkA005 form;
_ + "րզ" => mkA005 form;
_ + "եզ" => mkA005 form;
_ + "ւփ" => mkA005 form;
_ + "նջ" => mkA005 form;
_ + "աջ" => mkA005 form;
_ + "մբ" => mkA001 form;
_ + "ոյ" => mkA001 form;
_ + "բի" => mkA003 form;
_ + "սի" => mkA003 form;
_ + "ց" => mkA001 form;
_ + "ն" => mkA001 form;
_ + "պ" => mkA001 form;
_ + "տ" => mkA001 form;
_ + "դ" => mkA001 form;
_ + "վ" => mkA001 form;
_ + "ծ" => mkA001 form;
_ + "ձ" => mkA001 form;
_ + "ր" => mkA001 form;
_ + "լ" => mkA001 form;
_ + "ւ" => mkA002 form;
_ + "կ" => mkA001 form;
_ + "մ" => mkA001 form;
_ + "ք" => mkA001 form;
_ + "ղ" => mkA001 form;
_ + "չ" => mkA001 form;
_ + "ժ" => mkA001 form;
_ + "խ" => mkA001 form;
_ + "թ" => mkA001 form;
_ + "ս" => mkA001 form;
_ + "շ" => mkA001 form;
_ + "հ" => mkA001 form;
_ + "ռ" => mkA001 form;
_ + "գ" => mkA001 form;
_ + "ճ" => mkA001 form;
_ + "զ" => mkA001 form;
_ + "փ" => mkA001 form;
_ + "ջ" => mkA001 form;
_ + "բ" => mkA005 form;
_ + "յ" => mkA005 form;
_ + "ե" => mkA002 form;
_ + "ի" => mkA002 form;
_ + "ա" => mkA004 form;
_ + "ո" => mkA004 form;
_ => error "Cannot find an inflection rule"
} ;
reg2A : Str -> Str -> A -- s;Nom;Sg s;Nom;Pl
= \form1, form2 -> case <form1, form2> of {
<_ + "ոռ", _ + "ներ"> => mkA001 form1;
<_ + "տ", _ + "տեր"> => mkA005 form1;
<_ + "վ", _ + "վեր"> => mkA005 form1;
<_ + "ծ", _ + "ծեր"> => mkA005 form1;
<_ + "ձ", _ + "ձեր"> => mkA005 form1;
<_ + "լ", _ + "լեր"> => mkA005 form1;
<_ + "կ", _ + "կեր"> => mkA005 form1;
<_ + "մ", _ + "մեր"> => mkA005 form1;
<_ + "ք", _ + "քեր"> => mkA005 form1;
<_ + "ղ", _ + "ղեր"> => mkA005 form1;
<_ + "խ", _ + "խեր"> => mkA005 form1;
<_ + "թ", _ + "թեր"> => mkA005 form1;
<_ + "շ", _ + "շեր"> => mkA005 form1;
<_ + "հ", _ + "հեր"> => mkA005 form1;
<_ + "ռ", _ + "ռեր"> => mkA005 form1;
<_ + "գ", _ + "գեր"> => mkA005 form1;
<_ + "ճ", _ + "ճեր"> => mkA005 form1;
<_ + "զ", _ + "զեր"> => mkA005 form1;
<_ + "ջ", _ + "ջեր"> => mkA005 form1;
_ => regA form1
} ;
mkV = overload {
mkV : Str -> V = regV; -- s
mkV : Str -> Str -> V = reg2V -- s Imperative_Jussive;Pl
} ;
mkVV : V -> VV = \v -> lin VV v ;
mkVS : V -> VS = \v -> lin VS v ;
mkVQ : V -> VQ = \v -> lin VQ v ;
mkVA : V -> VA = \v -> lin VA v ;
mkV2 = overload {
mkV2 : V -> V2 = \v -> lin V2 (v ** {c2 = noPrep}) ;
mkV2 : V -> Prep -> V2 = \v,p -> lin V2 (v ** {c2 = p}) ;
} ;
mkV3 = overload {
mkV3 : V -> V3 = \v -> lin V3 (v ** {c2 = noPrep; c3 = noPrep}) ;
mkV3 : V -> Prep -> Prep -> V3 = \v,p1,p2 -> lin V3 (v ** {c2 = p1; c3 = p2}) ;
} ;
mkV2A = overload {
mkV2A : V -> V2A = \v -> lin V2A (v ** {c2 = noPrep; c3 = noPrep}) ;
mkV2A : V -> Prep -> Prep -> V2A = \v,p1,p2 -> lin V2A (v ** {c2 = p1; c3 = p2}) ;
} ;
mkV2S = overload {
mkV2S : V -> V2S = \v -> lin V2S (v ** {c2 = noPrep; c3 = noPrep}) ;
mkV2S : V -> Prep -> Prep -> V2S = \v,p1,p2 -> lin V2S (v ** {c2 = p1; c3 = p2}) ;
} ;
mkV2Q = overload {
mkV2Q : V -> V2Q = \v -> lin V2Q (v ** {c2 = noPrep; c3 = noPrep}) ;
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p1,p2 -> lin V2Q (v ** {c2 = p1; c3 = p2}) ;
} ;
mkV2V = overload {
mkV2V : V -> V2V = \v -> lin V2V (v ** {c2 = noPrep; c3 = noPrep}) ;
mkV2V : V -> Prep -> Prep -> V2V = \v,p1,p2 -> lin V2V (v ** {c2 = p1; c3 = p2}) ;
} ;
mkN = overload {
mkN : Str -> N = regN; -- s;Nom;Sg
mkN : Str -> Str -> N = reg2N -- s;Nom;Sg s;Dat;Sg
} ;
mkN2 = overload {
mkN2 : N -> N2 = \n -> lin N2 (n ** {c2 = noPrep}) ;
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 (n ** {c2 = p}) ;
} ;
mkN3 = overload {
mkN3 : N -> N3 = \n -> lin N3 (n ** {c2 = noPrep; c3 = noPrep}) ;
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 (n ** {c2 = p1; c3 = p2}) ;
} ;
mkA = overload {
mkA : Str -> A = regA; -- s;Nom;Sg
mkA : Str -> Str -> A = reg2A -- s;Nom;Sg s;Nom;Pl
} ;
mkA2 = overload {
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
} ;
mkAdv : Str -> Adv = \s -> lin Adv {s=s} ;
mkAdV : Str -> AdV = \s -> lin AdV {s=s} ;
mkAdA : Str -> AdA = \s -> lin AdA {s=s} ;
mkAdN : Str -> AdN = \s -> lin AdN {s=s} ;
mkCAdv : Str -> CAdv = \s -> lin CAdv {s=s; p=""} ;
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Dat} ;
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
mkIP : Str -> IP = \s -> lin IP {s=s} ;
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
mkQuant : Str -> Quant = \s -> lin Quant {s=s} ;
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
mkDet : Str -> Det = \s -> lin Det {s=s} ;
mkCard : Str -> Card = \s -> lin Card {s=s} ;
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
mkLN : Str -> LN = \s -> lin LN {s=s} ;
mkGN : Str -> GN = \s -> lin GN {s=s} ;
mkSN : Str -> SN = \s -> lin SN {s=s} ;
mkPN : Str -> PN = \s -> lin PN {s=s} ;
}

11
src/armenian/PhraseHye.gf Normal file
View File

@@ -0,0 +1,11 @@
concrete PhraseHye of Phrase = CatHye ** {
lin
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
UttS s = s ;
UttInterj i = i ;
NoPConj = {s = []} ;
NoVoc = {s = []} ;
}

269
src/armenian/ResHye.gf Normal file
View File

@@ -0,0 +1,269 @@
resource ResHye = {
param Aspect = Non_Past | Perfect ;
param Person = P1 | P3 | P2 ;
param Number = Sg | Pl ;
param Case = Nom | Dat | Ablat | Instr | Loc ;
param PartType = Resultative | Subject ;
oper Verb = {s: Str; Causative: Str; Conditional: Aspect => Person => Number => Str; Converb: {Imperfective: Str; FutCon1: Str; FutCon2: Str; Negative: Str; Perfective: Str; Simultaneous: Str}; Imperative_Jussive: Number => Str; Passive: Str; Past: Person => Number => Str; Participle: PartType => Str; Subjunctive: Aspect => Person => Number => Str} ; -- 898
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43 ->
{ s = f1 ;
Causative = f2 ;
Conditional = table {
Perfect => table {
P1 => table {
Sg => f3 ;
Pl => f4
} ;
P2 => table {
Sg => f5 ;
Pl => f6
} ;
P3 => table {
Sg => f7 ;
Pl => f8
}
} ;
Non_Past => table {
P1 => table {
Sg => f9 ;
Pl => f10
} ;
P2 => table {
Sg => f11 ;
Pl => f12
} ;
P3 => table {
Sg => f13 ;
Pl => f14
}
}
} ;
Converb = { Imperfective = f15 ;
FutCon1 = f16 ;
FutCon2 = f17 ;
Negative = f18 ;
Perfective = f19 ;
Simultaneous = f20
} ;
Imperative_Jussive = table {
Sg => f21 ;
Pl => f22
} ;
Passive = f23 ;
Past = table {
P1 => table {
Sg => f24 ;
Pl => f25
} ;
P2 => table {
Sg => f26 ;
Pl => f27
} ;
P3 => table {
Sg => f28 ;
Pl => f29
}
} ;
Participle = table {
Resultative => f30 ;
Subject => f31
} ;
Subjunctive = table {
Perfect => table {
P1 => table {
Sg => f32 ;
Pl => f33
} ;
P2 => table {
Sg => f34 ;
Pl => f35
} ;
P3 => table {
Sg => f36 ;
Pl => f37
}
} ;
Non_Past => table {
P1 => table {
Sg => f38 ;
Pl => f39
} ;
P2 => table {
Sg => f40 ;
Pl => f41
} ;
P3 => table {
Sg => f42 ;
Pl => f43
}
}
}
} ;
oper Noun = {s: Case => Number => Str; def_dat: Number => Str; def_nom: Number => Str; poss1: Case => Number => Str; poss2: Case => Number => Str} ; -- 4880
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34 ->
{ s = table {
Nom => table {
Sg => f1 ;
Pl => f2
} ;
Dat => table {
Sg => f3 ;
Pl => f4
} ;
Ablat => table {
Sg => f5 ;
Pl => f6
} ;
Instr => table {
Sg => f7 ;
Pl => f8
} ;
Loc => table {
Sg => f9 ;
Pl => f10
}
} ;
def_dat = table {
Sg => f11 ;
Pl => f12
} ;
def_nom = table {
Sg => f13 ;
Pl => f14
} ;
poss1 = table {
Nom => table {
Sg => f15 ;
Pl => f16
} ;
Dat => table {
Sg => f17 ;
Pl => f18
} ;
Ablat => table {
Sg => f19 ;
Pl => f20
} ;
Instr => table {
Sg => f21 ;
Pl => f22
} ;
Loc => table {
Sg => f23 ;
Pl => f24
}
} ;
poss2 = table {
Nom => table {
Sg => f25 ;
Pl => f26
} ;
Dat => table {
Sg => f27 ;
Pl => f28
} ;
Ablat => table {
Sg => f29 ;
Pl => f30
} ;
Instr => table {
Sg => f31 ;
Pl => f32
} ;
Loc => table {
Sg => f33 ;
Pl => f34
}
}
} ;
oper Adj = {s: Case => Number => Str; def_dat: Number => Str; def_nom: Number => Str; poss1: Case => Number => Str; poss2: Case => Number => Str} ; -- 1608
oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34 ->
{ s = table {
Nom => table {
Sg => f1 ;
Pl => f2
} ;
Dat => table {
Sg => f3 ;
Pl => f4
} ;
Ablat => table {
Sg => f5 ;
Pl => f6
} ;
Instr => table {
Sg => f7 ;
Pl => f8
} ;
Loc => table {
Sg => f9 ;
Pl => f10
}
} ;
def_dat = table {
Sg => f11 ;
Pl => f12
} ;
def_nom = table {
Sg => f13 ;
Pl => f14
} ;
poss1 = table {
Nom => table {
Sg => f15 ;
Pl => f16
} ;
Dat => table {
Sg => f17 ;
Pl => f18
} ;
Ablat => table {
Sg => f19 ;
Pl => f20
} ;
Instr => table {
Sg => f21 ;
Pl => f22
} ;
Loc => table {
Sg => f23 ;
Pl => f24
}
} ;
poss2 = table {
Nom => table {
Sg => f25 ;
Pl => f26
} ;
Dat => table {
Sg => f27 ;
Pl => f28
} ;
Ablat => table {
Sg => f29 ;
Pl => f30
} ;
Instr => table {
Sg => f31 ;
Pl => f32
} ;
Loc => table {
Sg => f33 ;
Pl => f34
}
}
} ;
oper Compl = {s : Str; c : Case} ;
oper noPrep : Compl = {s=""; c=Dat} ;
}

View File

@@ -19,7 +19,7 @@ param
oper
-- AGRE = {g : Gender ; n : Number ; p : Person} ;
Agre : Type = {g : Gender ; n : Number ; p : Person} ;
Agre : PType = {g : Gender ; n : Number ; p : Person} ;
agre : Gender -> Number -> Person -> Agre = \g,n,p -> {g = g ; n = n ; p = p} ;
agrFeatures : Agr -> Agre = \a -> case a of {Ag g n p => {g = g ; n = n ; p = p}} ;

View File

@@ -121,7 +121,7 @@ concrete CatEus of Cat = CommonX ** open ResEus, Prelude in {
N = ResEus.Noun ;
N2 = ResEus.Noun2 ;
N3 = ResEus.Noun3 ;
PN = ResEus.PNoun ;
PN,LN,GN,SN = ResEus.PNoun ;
linref

View File

@@ -91,7 +91,7 @@ oper
-- Use linCNIndef so that words with FinalA get the -a at the end
baseCN : CN -> CN -> [CN] = \x,y ->
y ** --choose all the other fields from second argument
lin ListCN y ** --choose all the other fields from second argument
{ s1 = \\agr => linCNIndef x ;
s2 = y.s } ;

View File

@@ -0,0 +1,65 @@
--# -path=.:../abstract:../common
concrete DocumentationEus of Documentation = CatEus ** open
ResEus,
Prelude,
HTML in {
lincat
Inflection = {t : Str; s1,s2 : Str} ;
Definition = {s : Str} ;
Document = {s : Str} ;
Tag = {s : Str} ;
lin
InflectionN, InflectionN2, InflectionN3 = \n -> {
t = "n" ;
s1 = heading1 "Noun" ;
s2 = frameTable (
tr (th "" ++ th "Sg" ++ th "Pl") ++
tr (th "absolutive" ++ td (n.s++artDef ! Sg ! Abs ! n.ph) ++ td (n.s++artDef ! Pl ! Abs ! n.ph)) ++
tr (th "ergative" ++ td (n.s++artDef ! Sg ! Erg ! n.ph) ++ td (n.s++artDef ! Pl ! Erg ! n.ph)) ++
tr (th "dative" ++ td (n.s++artDef ! Sg ! Dat ! n.ph) ++ td (n.s++artDef ! Pl ! Dat ! n.ph)) ++
tr (th "genitive" ++ td (n.s++artDef ! Sg ! Gen ! n.ph) ++ td (n.s++artDef ! Pl ! Gen ! n.ph)) ++
tr (th "commitative" ++ td (n.s++artDef ! Sg ! Soc ! n.ph) ++ td (n.s++artDef ! Pl ! Soc ! n.ph)) ++
tr (th "instrumental"++ td (n.s++artDef ! Sg ! Ins ! n.ph) ++ td (n.s++artDef ! Pl ! Ins ! n.ph)) ++
tr (th "inessive" ++ td (n.s++artDef ! Sg ! Ine ! n.ph) ++ td (n.s++artDef ! Pl ! Ine ! n.ph)) ++
tr (th "partitive" ++ td (n.s++artDef ! Sg ! Par ! n.ph) ++ td (n.s++artDef ! Pl ! Par ! n.ph))
) ;
} ;
InflectionA, InflectionA2, InflectionA3 = \a -> {
t = "a" ;
s1 = heading1 "Adjective" ;
s2 = frameTable (
tr (th "" ++ th "Sg" ++ th "Pl") ++
tr (th "absolutive" ++ td (a.s ! AF Posit++artDef ! Sg ! Abs ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Abs ! a.ph)) ++
tr (th "ergative" ++ td (a.s ! AF Posit++artDef ! Sg ! Erg ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Erg ! a.ph)) ++
tr (th "dative" ++ td (a.s ! AF Posit++artDef ! Sg ! Dat ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Dat ! a.ph)) ++
tr (th "genitive" ++ td (a.s ! AF Posit++artDef ! Sg ! Gen ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Gen ! a.ph)) ++
tr (th "commitative" ++ td (a.s ! AF Posit++artDef ! Sg ! Soc ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Soc ! a.ph)) ++
tr (th "instrumental"++ td (a.s ! AF Posit++artDef ! Sg ! Ins ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Ins ! a.ph)) ++
tr (th "inessive" ++ td (a.s ! AF Posit++artDef ! Sg ! Ine ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Ine ! a.ph)) ++
tr (th "partitive" ++ td (a.s ! AF Posit++artDef ! Sg ! Par ! a.ph) ++ td (a.s ! AF Posit++artDef ! Pl ! Par ! a.ph))
) ;
} ;
InflectionV, InflectionV2, InflectionV3, InflectionVA, InflectionVS, InflectionVQ, InflectionV2A, InflectionV2S, InflectionV2Q = \v -> {
t = "v" ;
s1 = heading1 "Verb" ;
s2 = frameTable (
tr (th "present" ++ td (v.prc ! Pres)) ++
tr (th "past" ++ td (v.prc ! Past)) ++
tr (th "future" ++ td (v.prc ! Fut))
) ;
} ;
lin
NoDefinition t = {s=t.s};
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
MkDefinitionEx t d e = {s="<p><b>Definition:</b>"++t.s++d.s++"</p><p><b>Example:</b>"++e.s++"</p>"};
lin
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ paragraph e.s} ;
MkTag i = {s = i.t} ;
}

View File

@@ -2,6 +2,7 @@ concrete LangEus of Lang =
GrammarEus,
LexiconEus,
ConstructionEus
,DocumentationEus --# notpresent
** {

View File

@@ -196,7 +196,7 @@ lin jump_V = mkV "jauzi" egin_V ; --Apertium
lin kill_V2 = mkV2 "hil" ; --Apertium
lin king_N = mkN "errege" animate ; --Apertium
lin knee_N = mkN "belaun" ; --Apertium
lin know_V2 = lin V2 jakin_V2 ; -- synthetic verb
lin know_V2 = jakin_V2 ; -- synthetic verb
lin know_VQ = lin VQ jakin_V2 ; -- synthetic verb
lin know_VS = ukanV "uste" ;
@@ -426,11 +426,11 @@ oper
egin_V : V = mkV "egin" ;
-- Some synthetic verbs
etorri_V : R.Verb = R.syntVerbDa "etorri" R.Etorri ;
etorri_V : V = lin V (R.syntVerbDa "etorri" R.Etorri) ;
ibili_V : R.Verb = R.syntVerbDa "ibili" R.Ibili ;
ibili_V : V = lin V (R.syntVerbDa "ibili" R.Ibili) ;
jakin_V2 : R.Verb = R.syntVerbDu "jakin" R.Jakin ;
jakin_V2 : V2 = lin V2 (R.syntVerbDu "jakin" R.Jakin) ;
joan_V : R.Verb = R.syntVerbDa "joan" R.Joan ;
joan_V : V = lin V (R.syntVerbDa "joan" R.Joan) ;
}

View File

@@ -29,6 +29,8 @@ lincat Sub10 = LinDigit ;
lincat Sub100 = {s : Str ; n : Number } ;
lincat Sub1000 = {s : Str ; n : Number ; isHundred : Bool } ;
lincat Sub1000000 = {s : Str ; n : Number } ;
lincat Sub1000000000 = {s : Str ; n : Number } ;
lincat Sub1000000000000 = {s : Str ; n : Number } ;
----------------------------------------------------------------------------

View File

@@ -42,6 +42,9 @@ oper
} ;
mkPN : Str -> PN = \s -> lin PN (mkPNoun s) ;
mkLN : Str -> LN = \s -> lin LN (mkPNoun s) ;
mkGN : Str -> GN = \s -> lin GN (mkPNoun s) ;
mkSN : Str -> SN = \s -> lin SN (mkPNoun s) ;
mkN2 = overload {
mkN2 : Str -> N2 = \s -> lin N2 (mkNoun2 s genitive) ;
@@ -64,7 +67,7 @@ oper
mkA = overload {
mkA : Str -> A = \s -> lin A (regAdj s) ;
mkA : Str -> A -> A = \s,a -> irregAdvAdj s a
mkA : Str -> A -> A = \s,a -> lin A (irregAdvAdj s a)
} ;
mkA2 : Str -> Prep -> A2 = \s,pp -> lin A2 (regAdj s ** { compl = pp }) ;
@@ -101,7 +104,7 @@ oper
mkV2A : Str -> V2A = \s -> lin V2A (mkVerbDu s) ; -- Nor-nork
mkVQ : Str -> VQ = \s -> lin VQ (mkVerbDu s) ; -- Nor-nork
mkVS : Str -> VS = \s -> lin VS (mkVerbDu s) ; -- Nor-nork
mkVV : V -> VV = \v -> lin VV v ;
mkV2V : Str -> V2V = \s -> lin V2V (mkVerbDio s) ; -- ??? TODO check valency
mkV2S : Str -> V2S = \s -> lin V2S (mkVerbDio s) ; -- Nor-nori-nork: (mutilari) (neska datorrela) erantzun diot
@@ -113,15 +116,15 @@ oper
-- Verbs with non-inflecting participle
-- These are just Verb, use izanV or egonV for intransitive and ukanV for transitive.
izanV : Str -> Verb = \bizi ->
mkVerbDa bizi ** { prc = \\_ => bizi } ; -- Non-inflecting participle, auxtype is Da (nor): e.g. "bizi naiz", "beldur naiz"
izanV : Str -> V = \bizi ->
lin V (mkVerbDa bizi ** { prc = \\_ => bizi }) ; -- Non-inflecting participle, auxtype is Da (nor): e.g. "bizi naiz", "beldur naiz"
egonV : Str -> Verb = \zain ->
mkVerbDaEgon zain ** { prc = \\_ => zain } ; -- Non-inflecting participle, auxtype is Da (nor), but with egon: e.g. "zain nago"
egonV : Str -> V = \zain ->
lin V (mkVerbDaEgon zain ** { prc = \\_ => zain }) ; -- Non-inflecting participle, auxtype is Da (nor), but with egon: e.g. "zain nago"
ukanV : Str -> Verb = \maite ->
mkVerbDu maite ** { prc = \\_ => maite } ; -- Non-inflecting participle, auxtype is Du (nor-nork): e.g, "maite zaitut"
ukanV : Str -> V = \maite ->
lin V (mkVerbDu maite ** { prc = \\_ => maite }) ; -- Non-inflecting participle, auxtype is Du (nor-nork): e.g, "maite zaitut"
--2 Structural categories
@@ -154,6 +157,10 @@ oper
mkAdA : Str -> AdA = \s -> lin AdA {s = s} ;
oper mkAdN : Str -> AdN = \s -> lin AdN {s=s} ;
oper mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
oper mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
--.
-------------------------------------------------------------------------------

View File

@@ -0,0 +1,4 @@
concrete AdjectiveBel of Adjective = CatBel ** {
lin
PositA a = a ;
}

4
src/belarusian/AllBel.gf Normal file
View File

@@ -0,0 +1,4 @@
concrete AllBel of AllBelAbs =
LangBel
**
{} ;

View File

@@ -0,0 +1,3 @@
abstract AllBelAbs =
Lang
** {}

21
src/belarusian/CatBel.gf Normal file
View File

@@ -0,0 +1,21 @@
concrete CatBel of Cat = CommonX ** open ResBel in {
lincat N = Noun ;
lincat N2 = Noun ** {c2 : Compl} ;
lincat N3 = Noun ** {c2,c3 : Compl} ;
lincat V = V ;
lincat VV,VS,VQ,VA = V ;
lincat V2 = V ** {c2 : Compl} ;
lincat V3,V2A,V2S,V2Q,V2V = V ** {c2,c3 : Compl} ;
lincat A = A ;
lincat A2 = A ** {c2 : Compl} ;
lincat Prep = Compl ;
lincat CN = CommonNoun ;
lincat AP = AdjPhrase ;
lincat S = {s : Str} ;
lincat LN,SN,GN,PN = {s : Str} ;
linref V,VV,V2,V3,V2A,V2S,V2Q,V2V = \v -> v.infinitive ;
}

View File

@@ -0,0 +1,77 @@
concrete DocumentationBel of Documentation = CatBel ** open
ResBel, Prelude, HTML in {
lincat
Inflection = {t : Str; s1,s2,s3 : Str} ;
Definition = {s : Str} ;
Document = {s : Str} ;
Tag = {s : Str} ;
lin
InflectionN,InflectionN2,InflectionN3 = \x -> {
t="n" ;
s1="" ;
s2=frameTable (
tr (th "" ++ th "Sg" ++ th "Pl") ++
tr (th "Nom" ++ td (x.s ! Nom ! Sg) ++ td (x.s ! Nom ! Pl)) ++
tr (th "Acc" ++ td (x.s ! Acc ! Sg) ++ td (x.s ! Acc ! Pl)) ++
tr (th "Dat" ++ td (x.s ! Dat ! Sg) ++ td (x.s ! Dat ! Pl)) ++
tr (th "Gen" ++ td (x.s ! Gen ! Sg) ++ td (x.s ! Gen ! Pl)) ++
tr (th "Loc" ++ td (x.s ! Loc ! Sg) ++ td (x.s ! Loc ! Pl)) ++
tr (th "Instr" ++ td (x.s ! Instr ! Sg) ++ td (x.s ! Instr ! Pl))) ;
s3=[]
} ;
lin
InflectionV,InflectionV2,InflectionV2A,InflectionV2Q,InflectionV2S,InflectionV2V,InflectionV3,InflectionVA,InflectionVQ,InflectionVS,InflectionVV = \x -> {
t="v" ;
s1="" ;
s2=heading1 "Infinitive" ++
paragraph (x.infinitive) ++
heading1 "Present" ++
frameTable (
tr (intagAttr "th" "rowspan=\"6\"" "Pres" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P1 ! Sg)) ++
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P1 ! Pl)) ++
tr (intagAttr "th" "rowspan=\"2\"" "P2" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P2 ! Sg)) ++
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P2 ! Pl)) ++
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P3 ! Sg)) ++
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P3 ! Pl))) ++
heading1 "Imperative" ++
frameTable (
tr (th "Sg" ++ td (x.imperative ! Sg)) ++
tr (th "Pl" ++ td (x.imperative ! Pl))) ++
heading1 "participle" ++
frameTable (
tr (th "" ++ th "Sg" ++ th "Pl") ++
tr (th "Masc" ++ td (x.participle ! Masc ! Sg) ++ td (x.participle ! Masc ! Pl)) ++
tr (th "Fem" ++ td (x.participle ! Fem ! Sg) ++ td (x.participle ! Fem ! Pl)) ++
tr (th "Neuter" ++ td (x.participle ! Neuter ! Sg) ++ td (x.participle ! Neuter ! Pl))) ;
s3=[]
} ;
lin
InflectionA,InflectionA2 = \x -> {
t="a" ;
s1="" ;
s2=frameTable (
tr (th "" ++ th "Masc" ++ th "Fem" ++ th "Neuter" ++ th "Pl") ++
tr (th "Nom" ++ td (x.s ! Nom ! GSg Masc) ++ td (x.s ! Nom ! GSg Fem) ++ td (x.s ! Nom ! GSg Neuter) ++ td (x.s ! Nom ! GPl)) ++
tr (th "Acc" ++ td (x.s ! Acc ! GSg Masc) ++ td (x.s ! Acc ! GSg Fem) ++ td (x.s ! Acc ! GSg Neuter) ++ td (x.s ! Acc ! GPl)) ++
tr (th "Dat" ++ td (x.s ! Dat ! GSg Masc) ++ td (x.s ! Dat ! GSg Fem) ++ td (x.s ! Dat ! GSg Neuter) ++ td (x.s ! Dat ! GPl)) ++
tr (th "Gen" ++ td (x.s ! Gen ! GSg Masc) ++ td (x.s ! Gen ! GSg Fem) ++ td (x.s ! Gen ! GSg Neuter) ++ td (x.s ! Gen ! GPl)) ++
tr (th "Loc" ++ td (x.s ! Loc ! GSg Masc) ++ td (x.s ! Loc ! GSg Fem) ++ td (x.s ! Loc ! GSg Neuter) ++ td (x.s ! Loc ! GPl)) ++
tr (th "Instr"++td (x.s ! Instr ! GSg Masc)++td (x.s ! Instr ! GSg Fem)++td (x.s ! Instr ! GSg Neuter)++td (x.s ! Instr ! GPl))) ;
s3=[]
} ;
lin
InflectionAdA,InflectionAdN,InflectionAdV,InflectionAdv = \x -> {t="adv"; s1=""; s2=x.s; s3=""} ;
InflectionPrep = \x -> {t="prep"; s1=""; s2=x.s; s3=""} ;
lin
NoDefinition t = {s=t.s};
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
MkDefinitionEx t d e = {s="<p><b>Definition:</b>"++t.s++d.s++"</p><p><b>Example:</b>"++e.s++"</p>"};
lin
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ i.s3 ++ e.s} ;
MkTag i = {s = i.t} ;
}

View File

@@ -0,0 +1,6 @@
concrete GrammarBel of Grammar =
TenseX,
PhraseBel,
NounBel,
AdjectiveBel ** {
}

10
src/belarusian/LangBel.gf Normal file
View File

@@ -0,0 +1,10 @@
--# -path=.:../abstract
concrete LangBel of Lang =
GrammarBel,
LexiconBel
,DocumentationBel --# notpresent
** {
flags startcat = Phr ;
}

View File

@@ -0,0 +1,2 @@
concrete LexiconBel of Lexicon = CatBel ** open ParadigmsBel in {
}

29614
src/belarusian/MorphoBel.gf Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,4 @@
concrete NounBel of Noun = CatBel ** {
lin
UseN n = n ;
}

View File

@@ -0,0 +1,842 @@
resource ParadigmsBel = MorphoBel ** open Predef, Prelude, CatBel, ResBel in {
oper
regN : Str -> N -- s;Nom;Sg
= \form -> case form of {
_ + "цат" => mkN056 form;
_ + "фат" => mkN099 form;
_ + "бат" => mkN131 form;
_ + "ват" => mkN131 form;
_ + "кат" => mkN131 form;
_ + "энт" => mkN131 form;
_ + "онт" => mkN056 form;
_ + "ікт" => mkN056 form;
_ + "укт" => mkN056 form;
_ + "сіт" => mkN131 form;
_ + "біт" => mkN131 form;
_ + "ірт" => mkN205 form;
_ + "ост" => mkN056 form;
_ + "уст" => mkN125 form;
_ + "эфт" => mkN056 form;
_ + "нёт" => mkN056 form;
_ + "ыёт" => mkN131 form;
_ + "аэт" => mkN131 form;
_ + "цэт" => mkN131 form;
_ + "чыт" => mkN125 form;
_ + "гут" => mkN125 form;
_ + "'ят" => mkN131 form;
_ + "лец" => mkN002 form;
_ + "аец" => mkN235 form;
_ + "еец" => mkN235 form;
_ + "ыец" => mkN235 form;
_ + "іец" => mkN235 form;
_ + "зец" => mkN265 form;
_ + "вец" => mkN300 form;
_ + "рац" => mkN286 form;
_ + "рка" => mkN003 form;
_ + "іка" => mkN003 form;
_ + "ека" => mkN003 form;
_ + "ыка" => mkN003 form;
_ + "ўка" => mkN217 form;
_ + "ука" => mkN026 form;
_ + "эка" => mkN026 form;
_ + "ока" => mkN026 form;
_ + "ака" => mkN026 form;
_ + "яка" => mkN026 form;
_ + "йка" => mkN124 form;
_ + "ька" => mkN196 form;
_ + "ква" => mkN039 form;
_ + "ова" => mkN150 form;
_ + "зва" => mkN039 form;
_ + "хва" => mkN039 form;
_ + "рва" => mkN039 form;
_ + "ева" => mkN138 form;
_ + "ява" => mkN150 form;
_ + "эва" => mkN166 form;
_ + "уза" => mkN012 form;
_ + "аза" => mkN012 form;
_ + "нза" => mkN012 form;
_ + "еза" => mkN024 form;
_ + "ўза" => mkN039 form;
_ + "яза" => mkN187 form;
_ + "іма" => mkN012 form;
_ + "ома" => mkN012 form;
_ + "ьма" => mkN091 form;
_ + "чма" => mkN215 form;
_ + "ьба" => mkN012 form;
_ + "аба" => mkN012 form;
_ + "ыба" => mkN012 form;
_ + "ёба" => mkN024 form;
_ + "жба" => mkN039 form;
_ + "чба" => mkN039 form;
_ + "ўба" => mkN091 form;
_ + "ўна" => mkN012 form;
_ + "ына" => mkN012 form;
_ + "ана" => mkN012 form;
_ + "рна" => mkN012 form;
_ + "дна" => mkN024 form;
_ + "нна" => mkN039 form;
_ + "яна" => mkN061 form;
_ + "уна" => mkN091 form;
_ + "спа" => mkN012 form;
_ + "лпа" => mkN083 form;
_ + "гла" => mkN012 form;
_ + "ула" => mkN188 form;
_ + "ёла" => mkN012 form;
_ + "іла" => mkN188 form;
_ + "ела" => mkN188 form;
_ + "яла" => mkN091 form;
_ + "сла" => mkN260 form;
_ + "ыса" => mkN012 form;
_ + "оса" => mkN024 form;
_ + "йга" => mkN020 form;
_ + "рга" => mkN061 form;
_ + "ьга" => mkN088 form;
_ + "ята" => mkN245 form;
_ + "ыта" => mkN245 form;
_ + "дра" => mkN102 form;
_ + "тра" => mkN080 form;
_ + "бра" => mkN080 form;
_ + "ўра" => mkN099 form;
_ + "кра" => mkN102 form;
_ + "ыца" => mkN137 form;
_ + "ўца" => mkN137 form;
_ + "дца" => mkN078 form;
_ + "йца" => mkN078 form;
_ + "чца" => mkN078 form;
_ + "нца" => mkN080 form;
_ + "рца" => mkN080 form;
_ + "сца" => mkN080 form;
_ + "ржа" => mkN064 form;
_ + "жжа" => mkN080 form;
_ + "джа" => mkN102 form;
_ + "ыча" => mkN036 form;
_ + "эча" => mkN036 form;
_ + "яча" => mkN064 form;
_ + "чча" => mkN080 form;
_ + "нча" => mkN102 form;
_ + "оха" => mkN309 form;
_ + "ьха" => mkN309 form;
_ + "зык" => mkN005 form;
_ + "мык" => mkN005 form;
_ + "тык" => mkN043 form;
_ + "аяк" => mkN005 form;
_ + "пяк" => mkN005 form;
_ + "ляк" => mkN063 form;
_ + "мак" => mkN006 form;
_ + "пак" => mkN006 form;
_ + "шак" => mkN006 form;
_ + "сак" => mkN006 form;
_ + "вак" => mkN063 form;
_ + "зак" => mkN251 form;
_ + "вік" => mkN005 form;
_ + "лік" => mkN043 form;
_ + "вук" => mkN006 form;
_ + "цук" => mkN006 form;
_ + "рук" => mkN043 form;
_ + "шук" => mkN043 form;
_ + "нук" => mkN063 form;
_ + "чук" => mkN328 form;
_ + "шок" => mkN015 form;
_ + "мок" => mkN063 form;
_ + "чок" => mkN015 form;
_ + "нок" => mkN015 form;
_ + "рэк" => mkN063 form;
_ + "цуг" => mkN005 form;
_ + "раг" => mkN063 form;
_ + "онг" => mkN008 form;
_ + "рог" => mkN337 form;
_ + "лог" => mkN200 form;
_ + "жух" => mkN005 form;
_ + "тух" => mkN063 form;
_ + "нах" => mkN063 form;
_ + "віч" => mkN062 form;
_ + "нач" => mkN184 form;
_ + "ршч" => mkN204 form;
_ + "пыр" => mkN334 form;
_ + "лор" => mkN007 form;
_ + "рор" => mkN042 form;
_ + "пор" => mkN059 form;
_ + "хор" => mkN155 form;
_ + "фар" => mkN007 form;
_ + "нар" => mkN007 form;
_ + "хар" => mkN019 form;
_ + "гар" => mkN019 form;
_ + "вар" => mkN042 form;
_ + "жар" => mkN042 form;
_ + "сір" => mkN062 form;
_ + "пір" => mkN062 form;
_ + "хір" => mkN365 form;
_ + "гір" => mkN365 form;
_ + "кер" => mkN007 form;
_ + "мер" => mkN042 form;
_ + "лер" => mkN042 form;
_ + "нер" => mkN062 form;
_ + "вер" => mkN174 form;
_ + "ґер" => mkN127 form;
_ + "цэр" => mkN062 form;
_ + "шэр" => mkN062 form;
_ + "дэр" => mkN062 form;
_ + "гур" => mkN062 form;
_ + "чур" => mkN062 form;
_ + "аўр" => mkN334 form;
_ + "ыгр" => mkN334 form;
_ + "даж" => mkN034 form;
_ + "гаж" => mkN071 form;
_ + "ыум" => mkN031 form;
_ + "нос" => mkN013 form;
_ + "пус" => mkN009 form;
_ + "лас" => mkN009 form;
_ + "рас" => mkN045 form;
_ + "лёс" => mkN011 form;
_ + "цыс" => mkN013 form;
_ + "нес" => mkN045 form;
_ + "зіс" => mkN045 form;
_ + "вол" => mkN035 form;
_ + "рол" => mkN159 form;
_ + "пел" => mkN011 form;
_ + "рал" => mkN013 form;
_ + "дал" => mkN013 form;
_ + "кал" => mkN013 form;
_ + "сал" => mkN013 form;
_ + "сул" => mkN013 form;
_ + "мул" => mkN045 form;
_ + "нёл" => mkN013 form;
_ + "вон" => mkN009 form;
_ + "рон" => mkN011 form;
_ + "лон" => mkN011 form;
_ + "зон" => mkN011 form;
_ + "аон" => mkN013 form;
_ + "зан" => mkN013 form;
_ + "бан" => mkN195 form;
_ + "зін" => mkN011 form;
_ + "фін" => mkN013 form;
_ + "він" => mkN013 form;
_ + "рэн" => mkN011 form;
_ + "зын" => mkN011 form;
_ + "лын" => mkN214 form;
_ + "іян" => mkN013 form;
_ + "лян" => mkN045 form;
_ + "цян" => mkN195 form;
_ + "жун" => mkN195 form;
_ + "кун" => mkN195 form;
_ + "сун" => mkN195 form;
_ + "пун" => mkN366 form;
_ + "лаб" => mkN009 form;
_ + "ваб" => mkN011 form;
_ + "раб" => mkN013 form;
_ + "арб" => mkN045 form;
_ + "цай" => mkN022 form;
_ + "гай" => mkN117 form;
_ + "тай" => mkN117 form;
_ + "чай" => mkN305 form;
_ + "бой" => mkN017 form;
_ + "рой" => mkN022 form;
_ + "пой" => mkN305 form;
_ + "зей" => mkN022 form;
_ + "куй" => mkN099 form;
_ + "мыз" => mkN011 form;
_ + "цуз" => mkN013 form;
_ + "буз" => mkN214 form;
_ + "куп" => mkN013 form;
_ + "чуп" => mkN045 form;
_ + "ноп" => mkN035 form;
_ + "хоп" => mkN045 form;
_ + "льф" => mkN011 form;
_ + "орф" => mkN011 form;
_ + "сад" => mkN037 form;
_ + "гад" => mkN037 form;
_ + "айд" => mkN037 form;
_ + "код" => mkN037 form;
_ + "лод" => mkN048 form;
_ + "луд" => mkN048 form;
_ + "пед" => mkN037 form;
_ + "зед" => mkN081 form;
_ + "оід" => mkN037 form;
_ + "туш" => mkN034 form;
_ + "рыш" => mkN062 form;
_ + "дло" => mkN278 form;
_ + "яло" => mkN278 form;
_ + "бло" => mkN278 form;
_ + "ало" => mkN316 form;
_ + "іно" => mkN061 form;
_ + "гно" => mkN278 form;
_ + "тно" => mkN316 form;
_ + "дро" => mkN246 form;
_ + "яро" => mkN246 form;
_ + "шкі" => mkN242 form;
_ + "ані" => mkN088 form;
_ + "дні" => mkN241 form;
_ + "уры" => mkN061 form;
_ + "юты" => mkN181 form;
_ + "оны" => mkN145 form;
_ + "чны" => mkN181 form;
_ + "ены" => mkN291 form;
_ + "аны" => mkN291 form;
_ + "нны" => mkN291 form;
_ + "іцы" => mkN145 form;
_ + "ёды" => mkN145 form;
_ + "зія" => mkN133 form;
_ + "хія" => mkN133 form;
_ + "лея" => mkN133 form;
_ + "ель" => mkN237 form;
_ + "унь" => mkN164 form;
_ + "энь" => mkN164 form;
_ + "ань" => mkN164 form;
_ + "онь" => mkN164 form;
_ + "азь" => mkN100 form;
_ + "дзь" => mkN152 form;
_ + "ось" => mkN375 form;
_ + "ась" => mkN375 form;
_ + "яць" => mkN325 form;
_ + "уць" => mkN325 form;
_ + "іць" => mkN325 form;
_ + "іт" => mkN056 form;
_ + "рт" => mkN056 form;
_ + "ст" => mkN131 form;
_ + "ыт" => mkN056 form;
_ + "ят" => mkN056 form;
_ + "лт" => mkN056 form;
_ + "шт" => mkN056 form;
_ + "нц" => mkN042 form;
_ + "яц" => mkN046 form;
_ + "ац" => mkN046 form;
_ + "ва" => mkN024 form;
_ + "за" => mkN016 form;
_ + "ма" => mkN016 form;
_ + "ба" => mkN016 form;
_ + "на" => mkN016 form;
_ + "па" => mkN016 form;
_ + "ла" => mkN024 form;
_ + "са" => mkN016 form;
_ + "га" => mkN021 form;
_ + "та" => mkN023 form;
_ + "ра" => mkN036 form;
_ + "ца" => mkN036 form;
_ + "жа" => mkN036 form;
_ + "ша" => mkN036 form;
_ + "ча" => mkN297 form;
_ + "эа" => mkN061 form;
_ + "да" => mkN087 form;
_ + "ха" => mkN114 form;
_ + "ык" => mkN063 form;
_ + "як" => mkN006 form;
_ + "ак" => mkN178 form;
_ + "юк" => mkN006 form;
_ + "ок" => mkN043 form;
_ + "ск" => mkN043 form;
_ + "ўк" => mkN044 form;
_ + "ёк" => mkN122 form;
_ + "уг" => mkN115 form;
_ + "рг" => mkN008 form;
_ + "аг" => mkN008 form;
_ + "яг" => mkN008 form;
_ + "зг" => mkN030 form;
_ + "ог" => mkN105 form;
_ + "ег" => mkN200 form;
_ + "іх" => mkN006 form;
_ + "эх" => mkN008 form;
_ + "ях" => mkN113 form;
_ + "рч" => mkN007 form;
_ + "іч" => mkN007 form;
_ + "юч" => mkN034 form;
_ + "яч" => mkN034 form;
_ + "шч" => mkN034 form;
_ + "ыч" => mkN034 form;
_ + "еч" => mkN184 form;
_ + "эч" => mkN184 form;
_ + "ыр" => mkN019 form;
_ + "ар" => mkN062 form;
_ + "ір" => mkN007 form;
_ + "яр" => mkN019 form;
_ + "юр" => mkN042 form;
_ + "гр" => mkN062 form;
_ + "ёр" => mkN062 form;
_ + "аж" => mkN062 form;
_ + "ож" => mkN059 form;
_ + "ўж" => mkN155 form;
_ + "рж" => mkN155 form;
_ + "дж" => mkN204 form;
_ + "ам" => mkN031 form;
_ + "ум" => mkN045 form;
_ + "ьм" => mkN031 form;
_ + "ім" => mkN031 form;
_ + "йм" => mkN031 form;
_ + "ём" => mkN031 form;
_ + "юм" => mkN031 form;
_ + "эм" => mkN045 form;
_ + "яс" => mkN009 form;
_ + "ёс" => mkN045 form;
_ + "нс" => mkN045 form;
_ + "рс" => mkN045 form;
_ + "эс" => mkN045 form;
_ + "ыл" => mkN011 form;
_ + "ел" => mkN330 form;
_ + "эл" => mkN045 form;
_ + "іл" => mkN013 form;
_ + "ёл" => mkN018 form;
_ + "ін" => mkN239 form;
_ + "эн" => mkN013 form;
_ + "рн" => mkN011 form;
_ + "ын" => mkN013 form;
_ + "ен" => mkN013 form;
_ + "ун" => mkN214 form;
_ + "рб" => mkN035 form;
_ + "ўб" => mkN035 form;
_ + "юб" => mkN045 form;
_ + "уб" => mkN050 form;
_ + "ыб" => mkN050 form;
_ + "ей" => mkN017 form;
_ + "яй" => mkN017 form;
_ + "эй" => mkN022 form;
_ + "уй" => mkN067 form;
_ + "ыз" => mkN045 form;
_ + "оз" => mkN057 form;
_ + "уп" => mkN050 form;
_ + "ап" => mkN013 form;
_ + "ўп" => mkN045 form;
_ + "ып" => mkN045 form;
_ + "іф" => mkN045 form;
_ + "рд" => mkN037 form;
_ + "юд" => mkN081 form;
_ + "зд" => mkN082 form;
_ + "ьв" => mkN120 form;
_ + "аш" => mkN034 form;
_ + "уш" => mkN046 form;
_ + "рш" => mkN046 form;
_ + "ўш" => mkN059 form;
_ + "ро" => mkN061 form;
_ + "кі" => mkN322 form;
_ + "ні" => mkN099 form;
_ + "ці" => mkN099 form;
_ + "лі" => mkN241 form;
_ + "гі" => mkN242 form;
_ + "ыё" => mkN061 form;
_ + "нё" => mkN433 form;
_ + "ье" => mkN061 form;
_ + "ае" => mkN361 form;
_ + "ры" => mkN145 form;
_ + "ты" => mkN145 form;
_ + "шы" => mkN181 form;
_ + "бы" => mkN291 form;
_ + "лы" => mkN291 form;
_ + "чы" => mkN291 form;
_ + "мы" => mkN291 form;
_ + "мя" => mkN092 form;
_ + "бя" => mkN092 form;
_ + "оя" => mkN133 form;
_ + "ця" => mkN154 form;
_ + "ка" => mkN004 form;
_ + "ль" => mkN100 form;
_ + "нь" => mkN100 form;
_ + "зь" => mkN410 form;
_ + "сь" => mkN116 form;
_ + "ыў" => mkN252 form;
_ + "еў" => mkN252 form;
_ + "т" => mkN032 form;
_ + "ц" => mkN127 form;
_ + "к" => mkN008 form;
_ + "г" => mkN043 form;
_ + "х" => mkN043 form;
_ + "ч" => mkN019 form;
_ + "р" => mkN046 form;
_ + "ж" => mkN046 form;
_ + "м" => mkN011 form;
_ + "с" => mkN031 form;
_ + "л" => mkN031 form;
_ + "н" => mkN031 form;
_ + "б" => mkN031 form;
_ + "й" => mkN010 form;
_ + "з" => mkN031 form;
_ + "п" => mkN031 form;
_ + "ф" => mkN031 form;
_ + "д" => mkN027 form;
_ + "в" => mkN031 form;
_ + ("яляш"|"ялюш") => mkN243 form;
_ + "о" => mkN055 form;
_ + "і" => mkN061 form;
_ + "э" => mkN061 form;
_ + "ё" => mkN230 form;
_ + "ю" => mkN061 form;
_ + "е" => mkN201 form;
_ + "ы" => mkN283 form;
_ + "я" => mkN206 form;
_ + "у" => mkN088 form;
_ + "ь" => mkN262 form;
_ + "o" => mkN144 form;
_ + "ў" => mkN351 form;
_ => error "Cannot find an inflection rule"
} ;
reg2N : Str -> Str -> N -- s;Nom;Sg s;Acc;Pl
= \form1, form2 -> case <form1, form2> of {
<_ + "мак", _ + "мкі"> => mkN178 form1;
<_ + "ана", _ + "оны"> => mkN070 form1;
<_ + "ана", _ + "эны"> => mkN182 form1;
<_ + "нер", _ + "яры"> => mkN069 form1;
<_ + "ель", _ + "блі"> => mkN118 form1;
<_ + "ель", _ + "флі"> => mkN179 form1;
<_ + "ань", _ + "жні"> => mkN177 form1;
<_ + "раб", _ + "оў"> => mkN195 form1;
<_ + "вак", _ + "оў"> => mkN328 form1;
<_ + "вец", _ + "оў"> => mkN420 form1;
<_ + "рка", _ + "і"> => mkN004 form1;
<_ + "іка", _ + "і"> => mkN026 form1;
<_ + "ека", _ + "і"> => mkN256 form1;
<_ + "ыка", _ + "і"> => mkN026 form1;
<_ + "ыка", _ + "ў"> => mkN129 form1;
<_ + "ўка", _ + "к"> => mkN161 form1;
<_ + "зык", _ + "ў"> => mkN006 form1;
<_ + "мак", _ + "і"> => mkN005 form1;
<_ + "пак", _ + "і"> => mkN005 form1;
<_ + "шок", _ + "і"> => mkN008 form1;
<_ + "лік", _ + "ў"> => mkN063 form1;
<_ + "нос", _ + "ы"> => mkN009 form1;
<_ + "гай", _ + "і"> => mkN010 form1;
<_ + "льф", _ + "ы"> => mkN031 form1;
<_ + "рон", _ + "ў"> => mkN013 form1;
<_ + "лон", _ + "ў"> => mkN029 form1;
<_ + "лон", _ + "ы"> => mkN045 form1;
<_ + "лёс", _ + "ы"> => mkN045 form1;
<_ + "зін", _ + "ы"> => mkN031 form1;
<_ + "уза", _ + "ы"> => mkN091 form1;
<_ + "аза", _ + "ы"> => mkN016 form1;
<_ + "аза", _ + "з"> => mkN139 form1;
<_ + "ьба", _ + "ы"> => mkN016 form1;
<_ + "іма", _ + "ы"> => mkN091 form1;
<_ + "ына", _ + "ы"> => mkN016 form1;
<_ + "спа", _ + "ы"> => mkN039 form1;
<_ + "ана", _ + "ы"> => mkN016 form1;
<_ + "гла", _ + "ы"> => mkN356 form1;
<_ + "аба", _ + "ы"> => mkN016 form1;
<_ + "ула", _ + "л"> => mkN012 form1;
<_ + "ула", _ + "ы"> => mkN016 form1;
<_ + "ыса", _ + "ы"> => mkN016 form1;
<_ + "рна", _ + "ы"> => mkN091 form1;
<_ + "раб", _ + "ы"> => mkN031 form1;
<_ + "іян", _ + "ы"> => mkN031 form1;
<_ + "цыс", _ + "ы"> => mkN031 form1;
<_ + "мок", _ + "і"> => mkN015 form1;
<_ + "іла", _ + "ы"> => mkN016 form1;
<_ + "ела", _ + "ы"> => mkN016 form1;
<_ + "ова", _ + "ў"> => mkN138 form1;
<_ + "вол", _ + "ў"> => mkN029 form1;
<_ + "дра", _ + "ў"> => mkN141 form1;
<_ + "гад", _ + "ў"> => mkN081 form1;
<_ + "зва", _ + "ў"> => mkN083 form1;
<_ + "рва", _ + "ў"> => mkN083 form1;
<_ + "вар", _ + "ў"> => mkN062 form1;
<_ + "рук", _ + "ў"> => mkN328 form1;
<_ + "нер", _ + "ы"> => mkN046 form1;
<_ + "ост", _ + "ы"> => mkN054 form1;
<_ + "энт", _ + "ы"> => mkN056 form1;
<_ + "вер", _ + "ў"> => mkN062 form1;
<_ + "раг", _ + "і"> => mkN115 form1;
<_ + "ўца", _ + "ў"> => mkN078 form1;
<_ + "бра", _ + "ы"> => mkN102 form1;
<_ + "ьма", _ + "ў"> => mkN083 form1;
<_ + "ель", _ + "і"> => mkN100 form1;
<_ + "рог", _ + "і"> => mkN105 form1;
<_ + "рог", _ + "ў"> => mkN339 form1;
<_ + "унь", _ + "і"> => mkN121 form1;
<_ + "йка", _ + "к"> => mkN160 form1;
<_ + "ька", _ + "ў"> => mkN129 form1;
<_ + "ька", _ + "і"> => mkN197 form1;
<_ + "яць", _ + "ў"> => mkN132 form1;
<_ + "ось", _ + "ў"> => mkN152 form1;
<_ + "зак", _ + "ў"> => mkN191 form1;
<_ + "ар", _ + "тры"> => mkN373 form1;
<_ + "ок", _ + "ркі"> => mkN015 form1;
<_ + "ок", _ + "ткі"> => mkN015 form1;
<_ + "ок", _ + "акі"> => mkN030 form1;
<_ + "ва", _ + "івы"> => mkN150 form1;
<_ + "ла", _ + "элы"> => mkN182 form1;
<_ + "ла", _ + "ылы"> => mkN188 form1;
<_ + "са", _ + "осы"> => mkN070 form1;
<_ + "ел", _ + "елы"> => mkN031 form1;
<_ + "ль", _ + "злі"> => mkN177 form1;
<_ + "нь", _ + "дні"> => mkN173 form1;
<_ + "нь", _ + "ўні"> => mkN175 form1;
<_ + "нь", _ + "сні"> => mkN179 form1;
<_ + "нь", _ + "пні"> => mkN179 form1;
<_ + "нь", _ + "яні"> => mkN400 form1;
<_ + "ак", _ + "оў"> => mkN006 form1;
<_ + "ык", _ + "оў"> => mkN006 form1;
<_ + "як", _ + "аў"> => mkN063 form1;
<_ + "ар", _ + "оў"> => mkN019 form1;
<_ + "ла", _ + "ол"> => mkN139 form1;
<_ + "ын", _ + "оў"> => mkN038 form1;
<_ + "яр", _ + "аў"> => mkN062 form1;
<_ + "іт", _ + "ты"> => mkN032 form1;
<_ + "ль", _ + "ёў"> => mkN203 form1;
<_ + "ак", _ + "ў"> => mkN276 form1;
<_ + "ык", _ + "і"> => mkN008 form1;
<_ + "ыр", _ + "ы"> => mkN034 form1;
<_ + "ір", _ + "ы"> => mkN042 form1;
<_ + "ар", _ + "ы"> => mkN046 form1;
<_ + "аг", _ + "ў"> => mkN063 form1;
<_ + "эх", _ + "ў"> => mkN063 form1;
<_ + "ма", _ + "м"> => mkN012 form1;
<_ + "на", _ + "н"> => mkN012 form1;
<_ + "ба", _ + "б"> => mkN012 form1;
<_ + "ла", _ + "л"> => mkN012 form1;
<_ + "па", _ + "п"> => mkN012 form1;
<_ + "ап", _ + "ы"> => mkN031 form1;
<_ + "эл", _ + "ў"> => mkN013 form1;
<_ + "ен", _ + "ы"> => mkN045 form1;
<_ + "ей", _ + "ў"> => mkN022 form1;
<_ + "ёл", _ + "ы"> => mkN031 form1;
<_ + "та", _ + "ў"> => mkN078 form1;
<_ + "ін", _ + "ы"> => mkN031 form1;
<_ + "ст", _ + "ы"> => mkN032 form1;
<_ + "шч", _ + "ў"> => mkN346 form1;
<_ + "ца", _ + "ц"> => mkN137 form1;
<_ + "рд", _ + "ў"> => mkN081 form1;
<_ + "ск", _ + "ў"> => mkN063 form1;
<_ + "еч", _ + "ы"> => mkN069 form1;
<_ + "ча", _ + "ў"> => mkN141 form1;
<_ + "бя", _ + "т"> => mkN153 form1;
<_ + "ль", _ + "ў"> => mkN152 form1;
<_ + "нь", _ + "ў"> => mkN152 form1;
<_ + "ха", _ + "і"> => mkN309 form1;
<_ + "зь", _ + "ў"> => mkN132 form1;
<_ + "оя", _ + "і"> => mkN301 form1;
<_ + "ж", _ + "ыжы"> => mkN090 form1;
<_ + "г", _ + "ўгі"> => mkN044 form1;
<_ + "с", _ + "ысы"> => mkN050 form1;
<_ + "д", _ + "оды"> => mkN037 form1;
<_ + "р", _ + "ары"> => mkN059 form1;
<_ + "ь", _ + "кці"> => mkN177 form1;
<_ + "ь", _ + "гці"> => mkN177 form1;
<_ + "ь", _ + "аці"> => mkN325 form1;
<_ + "т", _ + "оў"> => mkN001 form1;
<_ + "к", _ + "оў"> => mkN006 form1;
<_ + "л", _ + "оў"> => mkN159 form1;
<_ + "й", _ + "оі"> => mkN017 form1;
<_ + "й", _ + "іі"> => mkN067 form1;
<_ + "с", _ + "оў"> => mkN195 form1;
<_ + "н", _ + "оў"> => mkN038 form1;
<_ + "о", _ + "вы"> => mkN278 form1;
<_ + "т", _ + "ў"> => mkN131 form1;
<_ + "а", _ + "к"> => mkN003 form1;
<_ + "к", _ + "ў"> => mkN063 form1;
<_ + "м", _ + "ў"> => mkN013 form1;
<_ + "л", _ + "ў"> => mkN013 form1;
<_ + "с", _ + "ў"> => mkN013 form1;
<_ + "з", _ + "ў"> => mkN013 form1;
<_ + "н", _ + "ў"> => mkN013 form1;
<_ + "п", _ + "ў"> => mkN029 form1;
<_ + "р", _ + "ў"> => mkN062 form1;
<_ + "х", _ + "ў"> => mkN063 form1;
<_ + "я", _ + "т"> => mkN153 form1;
<_ + "я", _ + "ў"> => mkN154 form1;
<_ + "я", _ + "ь"> => mkN232 form1;
<_ + "я", _ + "й"> => mkN384 form1;
<_ + "ц", _ + "ы"> => mkN299 form1;
<_ + "ь", _ + "й"> => mkN323 form1;
_ => regN form1
} ;
regV : Str -> V -- infinitive
= \form -> case form of {
_ + "агчы" => mkV021 form;
_ + "іць" => mkV036 form;
_ + "эць" => mkV048 form;
_ + "ыць" => mkV020 form;
_ + "уць" => mkV045 form;
_ + "ячы" => mkV072 form;
_ + "ьці" => mkV013 form;
_ + "зці" => mkV049 form;
_ + "бці" => mkV137 form;
_ + "сці" => mkV016 form;
_ + "цца" => mkV043 form;
_ + "ма" => mkV013 form;
_ + "шы" => mkV013 form;
_ + "ь" => mkV015 form;
_ => error "Cannot find an inflection rule"
} ;
reg2V : Str -> Str -> V -- infinitive Imperative;Sg
= \form1, form2 -> case <form1, form2> of {
<_ + "іць", _ + "ані"> => mkV096 form1;
<_ + "іць", _ + "яні"> => mkV079 form1;
<_ + "іць", _ + "апі"> => mkV017 form1;
<_ + "іць", _ + "сці"> => mkV078 form1;
<_ + "уць", _ + "кні"> => mkV074 form1;
<_ + "уць", _ + "хні"> => mkV074 form1;
<_ + "іць", _ + "ві"> => mkV001 form1;
<_ + "іць", _ + "бі"> => mkV058 form1;
<_ + "іць", _ + "зі"> => mkV058 form1;
<_ + "іць", _ + "аі"> => mkV155 form1;
<_ + "іць", _ + "пі"> => mkV058 form1;
<_ + "іць", _ + "ці"> => mkV033 form1;
<_ + "іць", _ + "сі"> => mkV050 form1;
<_ + "іць", _ + "ць"> => mkV060 form1;
<_ + "іць", _ + "мь"> => mkV106 form1;
<_ + "ыць", _ + "жы"> => mkV064 form1;
<_ + "іць", _ + "і"> => mkV011 form1;
<_ + "іць", _ + "ў"> => mkV139 form1;
<_ + "іць", _ + "й"> => mkV156 form1;
<_ + "эць", _ + "й"> => mkV015 form1;
<_ + "эць", _ + "ь"> => mkV063 form1;
<_ + "ыць", _ + "ы"> => mkV070 form1;
<_ + "ыць", _ + "й"> => mkV055 form1;
<_ + "ыць", _ + "і"> => mkV089 form1;
<_ + "уць", _ + "ь"> => mkV037 form1;
<_ + "уць", _ + "й"> => mkV055 form1;
<_ + "зці", _ + "ь"> => mkV092 form1;
<_ + "ь", _ + "жуй"> => mkV003 form1;
<_ + "ь", _ + "цай"> => mkV055 form1;
<_ + "ь", _ + "лжы"> => mkV125 form1;
<_ + "ь", _ + "аві"> => mkV102 form1;
<_ + "ь", _ + "ссі"> => mkV145 form1;
<_ + "і", _ + "асі"> => mkV137 form1;
<_ + "ы", _ + "яжы"> => mkV143 form1;
<_ + "а", _ + "іся"> => mkV046 form1;
<_ + "а", _ + "ыся"> => mkV046 form1;
<_ + "а", _ + "ься"> => mkV080 form1;
<_ + "а", _ + "рся"> => mkV087 form1;
<_ + "а", _ + "чся"> => mkV087 form1;
<_ + "ь", _ + "уй"> => mkV029 form1;
<_ + "ь", _ + "ой"> => mkV025 form1;
<_ + "ь", _ + "юй"> => mkV120 form1;
<_ + "ь", _ + "нь"> => mkV063 form1;
<_ + "ь", _ + "шы"> => mkV028 form1;
<_ + "ь", _ + "чы"> => mkV130 form1;
<_ + "ь", _ + "мі"> => mkV039 form1;
<_ + "ь", _ + "ві"> => mkV039 form1;
<_ + "ь", _ + "зі"> => mkV115 form1;
<_ + "ь", _ + "ні"> => mkV102 form1;
<_ + "ь", _ + "бі"> => mkV145 form1;
<_ + "і", _ + "сі"> => mkV049 form1;
<_ + "і", _ + "ці"> => mkV056 form1;
<_ + "ь", _ + "ь"> => mkV018 form1;
<_ + "ь", _ + "ы"> => mkV066 form1;
<_ + "ь", _ + "ч"> => mkV034 form1;
<_ + "ь", _ + "і"> => mkV069 form1;
<_ + "і", _ + "ь"> => mkV054 form1;
_ => regV form1
} ;
regA : Str -> A -- s;Nom;('GSg', Masc)
= \form -> case form of {
_ + "які" => mkA006 form;
_ + "пы" => mkA002 form;
_ + "гі" => mkA006 form;
_ + "хі" => mkA006 form;
_ + "ні" => mkA005 form;
_ + "ці" => mkA005 form;
_ + "ыі" => mkA005 form;
_ + "ы" => mkA001 form;
_ + "і" => mkA003 form;
_ + "а" => mkA004 form;
_ + "н" => mkA004 form;
_ + "т" => mkA004 form;
_ + "ў" => mkA004 form;
_ + "ь" => mkA004 form;
_ => error "Cannot find an inflection rule"
} ;
reg2A : Str -> Str -> A -- s;Nom;('GSg', Masc) s;Nom;('GSg', Neuter)
= \form1, form2 -> case <form1, form2> of {
<_ + "гі", _ + "ае"> => mkA003 form1;
<_ + "хі", _ + "ае"> => mkA003 form1;
<_ + "ы", _ + "ое"> => mkA002 form1;
<_ + "і", _ + "яе"> => mkA004 form1;
<_ + "і", _ + "ое"> => mkA006 form1;
_ => regA form1
} ;
mkN = overload {
mkN : Str -> N = regN; -- s;Nom;Sg
mkN : Str -> Str -> N = reg2N -- s;Nom;Sg s;Acc;Pl
} ;
mkN2 = overload {
mkN2 : N -> N2 = \n -> lin N2 (n ** {c2 = noPrep}) ;
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 (n ** {c2 = p}) ;
} ;
mkN3 = overload {
mkN3 : N -> N3 = \n -> lin N3 (n ** {c2 = noPrep; c3 = noPrep}) ;
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 (n ** {c2 = p1; c3 = p2}) ;
} ;
mkV = overload {
mkV : Str -> V = regV; -- infinitive
mkV : Str -> Str -> V = reg2V -- infinitive Imperative;Sg
} ;
mkVV : V -> VV = \v -> lin VV v ;
mkVS : V -> VS = \v -> lin VS v ;
mkVQ : V -> VQ = \v -> lin VQ v ;
mkVA : V -> VA = \v -> lin VA v ;
mkV2 = overload {
mkV2 : V -> V2 = \v -> lin V2 (v ** {c2 = noPrep}) ;
mkV2 : V -> Prep -> V2 = \v,p -> lin V2 (v ** {c2 = p}) ;
} ;
mkV3 = overload {
mkV3 : V -> V3 = \v -> lin V3 (v ** {c2 = noPrep; c3 = noPrep}) ;
mkV3 : V -> Prep -> Prep -> V3 = \v,p1,p2 -> lin V3 (v ** {c2 = p1; c3 = p2}) ;
} ;
mkV2A = overload {
mkV2A : V -> V2A = \v -> lin V2A (v ** {c2 = noPrep; c3 = noPrep}) ;
mkV2A : V -> Prep -> Prep -> V2A = \v,p1,p2 -> lin V2A (v ** {c2 = p1; c3 = p2}) ;
} ;
mkV2S = overload {
mkV2S : V -> V2S = \v -> lin V2S (v ** {c2 = noPrep; c3 = noPrep}) ;
mkV2S : V -> Prep -> Prep -> V2S = \v,p1,p2 -> lin V2S (v ** {c2 = p1; c3 = p2}) ;
} ;
mkV2Q = overload {
mkV2Q : V -> V2Q = \v -> lin V2Q (v ** {c2 = noPrep; c3 = noPrep}) ;
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p1,p2 -> lin V2Q (v ** {c2 = p1; c3 = p2}) ;
} ;
mkV2V = overload {
mkV2V : V -> V2V = \v -> lin V2V (v ** {c2 = noPrep; c3 = noPrep}) ;
mkV2V : V -> Prep -> Prep -> V2V = \v,p1,p2 -> lin V2V (v ** {c2 = p1; c3 = p2}) ;
} ;
mkA = overload {
mkA : Str -> A = regA; -- s;Nom;('GSg', Masc)
mkA : Str -> Str -> A = reg2A -- s;Nom;('GSg', Masc) s;Nom;('GSg', Neuter)
} ;
mkA2 = overload {
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
} ;
mkAdv : Str -> Adv = \s -> lin Adv {s=s} ;
mkAdV : Str -> AdV = \s -> lin AdV {s=s} ;
mkAdA : Str -> AdA = \s -> lin AdA {s=s} ;
mkAdN : Str -> AdN = \s -> lin AdN {s=s} ;
mkCAdv : Str -> CAdv = \s -> lin CAdv {s=s; p=""} ;
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
mkIP : Str -> IP = \s -> lin IP {s=s} ;
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
mkQuant : Str -> Quant = \s -> lin Quant {s=s} ;
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
mkDet : Str -> Det = \s -> lin Det {s=s} ;
mkCard : Str -> Card = \s -> lin Card {s=s} ;
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
mkLN : Str -> LN = \s -> lin LN {s=s} ;
mkGN : Str -> GN = \s -> lin GN {s=s} ;
mkSN : Str -> SN = \s -> lin SN {s=s} ;
mkPN : Str -> PN = \s -> lin PN {s=s} ;
}

View File

@@ -0,0 +1,11 @@
concrete PhraseBel of Phrase = CatBel ** {
lin
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
UttS s = s ;
UttInterj i = i ;
NoPConj = {s = []} ;
NoVoc = {s = []} ;
}

163
src/belarusian/ResBel.gf Normal file
View File

@@ -0,0 +1,163 @@
resource ResBel = {
param Case = Nom | Acc | Dat | Gen | Loc | Instr ;
param Number = Sg | Pl ;
param Gender = Masc | Fem | Neuter ;
oper Noun = {s: Case => Number => Str; voc: Str; g: Gender} ; -- 2696
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,g ->
{ s = table {
Nom => table {
Sg => f1 ;
Pl => f2
} ;
Acc => table {
Sg => f3 ;
Pl => f4
} ;
Dat => table {
Sg => f5 ;
Pl => f6
} ;
Gen => table {
Sg => f7 ;
Pl => f8
} ;
Loc => table {
Sg => f9 ;
Pl => f10
} ;
Instr => table {
Sg => f11 ;
Pl => f12
}
} ;
voc = f13 ;
g = g
} ;
param Aspect = Imperf | Perf ;
param Person = P1 | P2 | P3 ;
param Tense = Pres | Past ;
oper V = {active: Aspect => {Past: Str; Pres: Person => Number => Str}; imperative: Number => Str; infinitive: Str; participle: Gender => Number => Str; passive: Aspect => Tense => Str} ; -- 703
oper mkV : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27 ->
{ active = table {
Imperf => { Past = f1 ;
Pres = table {
P1 => table {
Sg => f2 ;
Pl => f3
} ;
P2 => table {
Sg => f4 ;
Pl => f5
} ;
P3 => table {
Sg => f6 ;
Pl => f7
}
}
} ;
Perf => { Past = f8 ;
Pres = table {
P1 => table {
Sg => f9 ;
Pl => f10
} ;
P2 => table {
Sg => f11 ;
Pl => f12
} ;
P3 => table {
Sg => f13 ;
Pl => f14
}
}
}
} ;
imperative = table {
Sg => f15 ;
Pl => f16
} ;
infinitive = f17 ;
participle = table {
Masc => table {
Sg => f18 ;
Pl => f19
} ;
Fem => table {
Sg => f20 ;
Pl => f21
} ;
Neuter => table {
Sg => f22 ;
Pl => f23
}
} ;
passive = table {
Imperf => table {
Pres => f24 ;
Past => f25
} ;
Perf => table {
Pres => f26 ;
Past => f27
}
}
} ;
param GenNum = GSg Gender | GPl ;
oper A = {s: Case => GenNum => Str} ; -- 704
oper mkA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24 ->
{ s = table {
Nom => table {
GSg Masc => f1 ;
GSg Fem => f2 ;
GSg Neuter => f3 ;
GPl => f4
} ;
Acc => table {
GSg Masc => f5 ;
GSg Fem => f6 ;
GSg Neuter => f7 ;
GPl => f8
} ;
Dat => table {
GSg Masc => f9 ;
GSg Fem => f10 ;
GSg Neuter => f11 ;
GPl => f12
} ;
Gen => table {
GSg Masc => f13 ;
GSg Fem => f14 ;
GSg Neuter => f15 ;
GPl => f16
} ;
Loc => table {
GSg Masc => f17 ;
GSg Fem => f18 ;
GSg Neuter => f19 ;
GPl => f20
} ;
Instr => table {
GSg Masc => f21 ;
GSg Fem => f22 ;
GSg Neuter => f23 ;
GPl => f24
}
}
} ;
oper Compl = {s : Str; c : Case} ;
oper noPrep : Compl = {s=""; c=Acc} ;
oper CommonNoun = Noun ;
oper AdjPhrase = A ;
}

View File

@@ -1,5 +1,5 @@
--# -coding=utf8
concrete CatBul of Cat = CommonX - [Temp,Tense,IAdv,AdV] ** open ResBul, Prelude, Predef, (R = ParamX) in {
concrete CatBul of Cat = CommonX - [Temp,Tense,TTAnt,IAdv,AdV] ** open ResBul, Prelude, Predef, (R = ParamX) in {
lincat
-- Tensed/Untensed

View File

@@ -32,7 +32,6 @@ concrete ConjunctionBul of Conjunction =
ConjAP conj ss = {
s = \\aform,p => linCoord []!conj.sep ++ ss.s!aform!p!conj.sep ++ conj.s ++ ss.s!aform!p!4;
adv = ss.adv!conj.conj ++ conj.s ++ ss.adv!4;
isPre = ss.isPre
} ;

View File

@@ -148,7 +148,7 @@ lin
s1= heading1 ("Прилагателно") ;
s2= frameTable (
tr (intagAttr "th" "rowspan=\"7\"" "ед.ч." ++
intagAttr "th" "rowspan=\"3\"" "мн.ч." ++
intagAttr "th" "rowspan=\"3\"" "м.р." ++
th "нечленувано" ++
td (a.s ! (ASg Masc Indef))) ++
tr (th "непълен член" ++ td (a.s ! (ASg Masc Def))) ++

View File

@@ -316,18 +316,6 @@ lin UseComp_estar = UseComp ;
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
} ;
lin TPastSimple = {s = []} ** {t = VPastSimple} ; --# notpresent
}

View File

@@ -1,4 +1,4 @@
--# -path=.:../abstract:../common:../api
--# -path=.:../abstract:../common:../api:../prelude
concrete LangBul of Lang =
GrammarBul,

View File

@@ -33,13 +33,13 @@ oper
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
mkAS : A -> AS ;
mkAS v = v ** {lock_A = <>} ;
mkAS v = v ;
mkA2S : A -> Prep -> A2S ;
mkA2S v p = mkA2 v p ** {lock_A = <>} ;
mkA2S v p = mkA2 v p ;
mkAV : A -> AV ;
mkAV v = v ** {lock_A = <>} ;
mkAV v = v ;
mkA2V : A -> Prep -> A2V ;
mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
@@ -75,7 +75,6 @@ oper
compoundV : V -> Str -> V ;
compoundV v adv = {
s = \\asp,vform => v.s ! asp ! vform ++ adv ;
n = \\nform => v.n ! nform ++ adv ;
vtype = VNormal;
lock_V=<>
} ;
@@ -105,7 +104,7 @@ oper
-- the first one or both can be absent.
mkV3 : V -> Prep -> Prep -> V3 ; -- speak, with, about
mkV3 v p q = {s = v.s; s1 = v.s1; c2 = p; c3 = q; vtype = v.vtype; lock_V3 = <>} ;
mkV3 v p q = {s = v.s; c2 = p; c3 = q; vtype = v.vtype; lock_V3 = <>} ;
dirV3 : V -> Prep -> V3 ; -- give,_,to
dirV3 v p = mkV3 v noPrep p ;
@@ -169,7 +168,7 @@ oper
--
prepN2 : N -> Prep -> N2 ;
prepN2 n p = n ** {c2 = p} ;
prepN2 n p = lin N2 (n ** {c2 = p}) ;
dirN2 : N -> N2 ;
dirN2 n = prepN2 n noPrep ;
@@ -179,7 +178,7 @@ oper
--
prepN3 : N -> Prep -> Prep -> N3 ;
prepN3 n p q = n ** {c2 = p; c3 = q} ;
prepN3 n p q = lin N3 (n ** {c2 = p; c3 = q}) ;
dirN3 : N -> Prep -> N3 ;
dirN3 n p = prepN3 n noPrep p ;
@@ -189,9 +188,9 @@ oper
compoundN = overload {
compoundN : Str -> N -> N
= \s,n -> {s = \\nform => s ++ n.s ! nform ; rel = \\aform => s ++ n.rel ! aform; relType = AdvMod; g=n.g ; anim=n.anim ; lock_N = <>} ;
= \s,n -> {s = \\nform => s ++ n.s ! nform ; rel = \\aform => s ++ n.rel ! aform; relType = AdvMod; g=n.g ; lock_N = <>} ;
compoundN : N -> Str -> N
= \n,s -> {s = \\nform => n.s ! nform ++ s; rel = \\aform => n.rel ! aform ++ s; relType = AdvMod; g=n.g ; anim=n.anim ; lock_N = <>} ;
= \n,s -> {s = \\nform => n.s ! nform ++ s; rel = \\aform => n.rel ! aform ++ s; relType = AdvMod; g=n.g ; lock_N = <>} ;
compoundN : N -> N -> N
= \n1,n2 -> lin N
{s = table {

View File

@@ -200,12 +200,6 @@ lin pot5decimal d = {
_ => BIND
} ;
inc : DTail -> DTail = \t -> case t of {
T1 => T2 ;
T2 => T3 ;
T3 => T1
} ;
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c (c+"ма") o Pl ;
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "ти") ;

View File

@@ -187,7 +187,7 @@ oper
in {s = mkNoun (v0+"е"+v1)
(v0+v1+"и")
(v0+"е"+v1+"а")
(v0+"е"+v1+"е")
(v0+v1+"ьо")
g ;
rel = \\_ => base ; relType = Pref ;
g = g ;

View File

@@ -70,8 +70,7 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
s = \\q => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! q
} ;
UseRCl t p cl = {
s = \\agr => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! agr ;
role = cl.role
s = \\agr => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! agr
} ;
UseSlash t p cl = {
s = \\agr => t.s ++ p.s ++ cl.s ! agr ! t.t ! t.a ! p.p ! Main ;

View File

@@ -1,6 +1,7 @@
concrete TenseBul of Tense = CatBul [Tense,Temp], TenseX - [Temp,Tense,TPres,TPast,TFut,TCond,IAdv,AdV,SC] ** open ResBul in {
concrete TenseBul of Tense = CatBul [Tense,Temp], TenseX - [Temp,Tense,TTAnt,TPres,TPast,TFut,TCond,IAdv,AdV,SC] ** open ResBul in {
lin
TTAnt t a = {s = a.s ++ t.s ; a = a.a ; t = t.t} ;
TPres = {s = []} ** {t = VPresent} ;
TPast = {s = []} ** {t = VPastImperfect} ; --# notpresent
TFut = {s = []} ** {t = VFut} ; --# notpresent

View File

@@ -1,7 +1,9 @@
--# -path=alltenses:../common:../abstract:../romance
concrete ExtendCat of Extend = CatCat ** ExtendRomanceFunctor-- -
-- [
-- ]
-- [
-- ]
-- don't forget to put the names of your own
-- definitions here
with
@@ -15,4 +17,6 @@ concrete ExtendCat of Extend = CatCat ** ExtendRomanceFunctor-- -
ParadigmsCat in {
-- put your own definitions here
} ;

View File

@@ -179,12 +179,6 @@ param
_ => BIND
} ;
inc : DTail -> DTail = \t -> case t of {
T1 => T2 ;
T2 => T3 ;
T3 => T1
} ;
oper
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
mkDig : Str -> TDigit = \c -> mk2Dig c (c + ":o") ;

View File

@@ -42,14 +42,14 @@ flags
-- To abstract over gender names, we define the following identifiers.
oper
Gender : Type ;
Gender : PType ;
masculine : Gender ;
feminine : Gender ;
-- To abstract over number names, we define the following.
Number : Type ;
Number : PType ;
singular : Number ;
plural : Number ;

View File

@@ -155,6 +155,8 @@ oper
= \s,at -> lin Adv {s = word s ; advType = at ; hasDe = advTypeHasDe at} ;
mkAdv : Adv -> AdvType -> Adv -- To fix the AdvType in an Adv produced by SyntaxChi.mkAdv
= \adv,at -> adv ** {advType = at ; hasDe = advTypeHasDe at} ;
mkAdv : Str -> AdvType -> Bool -> Adv
= \s,at,hasDe -> lin Adv {s = word s ; advType = at ; hasDe = hasDe} ;
} ;
@@ -181,7 +183,7 @@ oper
mkInterj : Str -> Interj
= \s -> lin Interj {s = word s} ;
emptyPrep : Preposition = mkPrep [] ;
emptyPrep : Prep = mkPrep [] ;
mkpNP : Str -> CatChi.NP
= \s -> lin NP {s = word s ; det = []} ;

Some files were not shown because too many files have changed in this diff Show More