mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-08-22 04:06:23 -06:00
Compare commits
275 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 621dc23f60 | |||
| dcd262df05 | |||
| c3f937c667 | |||
| 20cb49cd57 | |||
| bd0506760e | |||
| eae650960b | |||
| 34062e2ed2 | |||
| 827a0296c9 | |||
| 110266306d | |||
| 498acd0b86 | |||
| d947e7e2e2 | |||
| 00790d98fa | |||
| 83cfc496a4 | |||
| 363219730e | |||
| 8c4cd58bd1 | |||
| 11f73acc28 | |||
| 344342012d | |||
| a79202f667 | |||
| 8a82c2ca53 | |||
| e866940d65 | |||
| 8f1b3eeece | |||
| b14c0f8492 | |||
| 2e6a750c1a | |||
| 98128249bd | |||
| 1e581fbd10 | |||
| f2ac424bfe | |||
| e65469ffb2 | |||
| 8458a74e25 | |||
| 7156f488dd | |||
| ff44b03344 | |||
| 4282523f2f | |||
| d8208cba24 | |||
| 0a03e037f4 | |||
| 0201d62777 | |||
| b8bb7f1d72 | |||
| fe56b729b4 | |||
| cab232a4f6 | |||
| cdeaf5a271 | |||
| 60e38122d0 | |||
| 800e2b0dda | |||
| 84bdce7cc8 | |||
| add5029b7a | |||
| 19ba581f0e | |||
| a890a1aad5 | |||
| 26a1e55cbe | |||
| 992e670c10 | |||
| eea95a6f76 | |||
| f1facac1bf | |||
| c5bb0dacb5 | |||
| 44ea945c8c | |||
| 9265270a0c | |||
| 86e2afcfc0 | |||
| 6115d44398 | |||
| cf6a376272 | |||
| 3a8527689c | |||
| 416d37eee7 | |||
| c4d578cac3 | |||
| a7341d9be1 | |||
| 57ef377e6d | |||
| 3a133d035d | |||
| 912ddd521f | |||
| 945bc086f2 | |||
| 70806027c1 | |||
| 88a3759a9e | |||
| 1910010e70 | |||
| 0cd851aa10 | |||
| 2b07314680 | |||
| a3e19ed673 | |||
| b571d86b7c | |||
| 6064e69d8e | |||
| 510abc0364 | |||
| 331a07bd35 | |||
| 34ba4cf564 | |||
| 5a9ab2cbdf | |||
| 97b8cb72aa | |||
| 09087c1944 | |||
| f497b4a63a | |||
| 56e97ebfff | |||
| 16c19eb4b0 | |||
| 35f5d9a68b | |||
| 0f78e35bed | |||
| bff00560d5 | |||
| 4ab63d2d66 | |||
| 41e3b8280b | |||
| 4a3e30a1cd | |||
| 9458f96f0b | |||
| ba922b5daa | |||
| f261b2f45b | |||
| 939e96fb6c | |||
| 3da5f0d318 | |||
| 37d915c879 | |||
| b69c3518a7 | |||
| 0896a77049 | |||
| 7225033a03 | |||
| ed27aa97fc | |||
| de3d59c7e8 | |||
| 03024d7b72 | |||
| f6187834c4 | |||
| 842747b407 | |||
| 922f664f74 | |||
| 3943089d3d | |||
| 6a6788c24e | |||
| e7e7f12ad8 | |||
| 90d8897bf9 | |||
| be0fb1f7c1 | |||
| 7d73dd8195 | |||
| 48ec088faa | |||
| 8a84ca1a45 | |||
| 34f5e625e3 | |||
| 27c2d7cbb3 | |||
| 26abc63953 | |||
| 15df5ed37e | |||
| 43f19f283e | |||
| 9b6b94ec1d | |||
| 8b462bdbfb | |||
| 14c7db6427 | |||
| 2c613bfc83 | |||
| 8a8c1c6b42 | |||
| 76b27152f9 | |||
| 36bc768f26 | |||
| b7275a2bac | |||
| 7e8e6dbf34 | |||
| 27ff3935c5 | |||
| 4cd3d3158e | |||
| e3b27613fd | |||
| 5f6a8b2905 | |||
| 6203aee170 | |||
| ffb77daf31 | |||
| 494c91f9dd | |||
| 6f6405b90e | |||
| da0e273d3d | |||
| 263b668249 | |||
| 019a347246 | |||
| 6aeda22ed6 | |||
| ae9b7d4d45 | |||
| 323e4b4cdf | |||
| e42c5f53e2 | |||
| fea01dd313 | |||
| 9e402cb608 | |||
| 401ac1f954 | |||
| 6a2cb9ec77 | |||
| b339f7c2fc | |||
| d6f3cae141 | |||
| 44acdbd350 | |||
| f630f6ef29 | |||
| 8808ce108b | |||
| 1c3bb0f6eb | |||
| 5cc990d259 | |||
| 621cfd8b43 | |||
| deb9d40b7e | |||
| 25f422f5ca | |||
| f0abf5deff | |||
| e825d92233 | |||
| 1e436d84a1 | |||
| 84e0e2c08f | |||
| 4c55592af4 | |||
| 28be4fb450 | |||
| 74848d304e | |||
| 928889b2aa | |||
| 1d7b717866 | |||
| 9d18d316c5 | |||
| c8a4c28a51 | |||
| eeca67e787 | |||
| e8005bf071 | |||
| cc1168634b | |||
| 76cbf0b75b | |||
| ce2f785f92 | |||
| 0cd3450e08 | |||
| 62c5030be1 | |||
| bd41b3ccb7 | |||
| 53571672e3 | |||
| 761597ad8c | |||
| 8e780d6263 | |||
| ec4bc75a64 | |||
| dbe6eba30a | |||
| 066133bbae | |||
| e9ecb1a8d6 | |||
| 090a6ea33d | |||
| dceb5252a2 | |||
| 73fa89103b | |||
| 115ad31e2d | |||
| f715e393cb | |||
| 5e6ee94baa | |||
| a73b6ad6ed | |||
| 06f3602e00 | |||
| c7fe453c12 | |||
| 48658e3689 | |||
| ffc10a32c9 | |||
| fff1c40f24 | |||
| fd817f80d6 | |||
| b84d05034d | |||
| d589cedc6b | |||
| d833b24509 | |||
| 071b2af9c3 | |||
| 1f5615c0bb | |||
| fda1f49d17 | |||
| 6b93e87363 | |||
| f4aae6a61a | |||
| 066d6f9c85 | |||
| 3e51c585ce | |||
| bba1de3605 | |||
| 4514ebfc00 | |||
| cf947426dc | |||
| 7383b30cee | |||
| c604bd3b77 | |||
| 8e63f9b32d | |||
| 1aed4c3b5f | |||
| fe2dde5a2c | |||
| 2adce20f76 | |||
| b8a0e7adfe | |||
| 78564236b9 | |||
| 35a650141e | |||
| 5146748f37 | |||
| 4bf528a429 | |||
| 4a0cc4ec40 | |||
| a5f4679405 | |||
| cad17e8404 | |||
| c9182284e7 | |||
| 9649f348b2 | |||
| 3e066bd7ec | |||
| 7d4e40bac1 | |||
| 7e52a4759c | |||
| f01d509376 | |||
| 153ad8b41a | |||
| 5375cda243 | |||
| e76e11e566 | |||
| bc41082247 | |||
| 0e5bb779cc | |||
| 08aa91cdbb | |||
| 7d695a6d49 | |||
| febd99be26 | |||
| 7016ce8a32 | |||
| 1b57ef7fee | |||
| cd581dc6ac | |||
| 5b588daf85 | |||
| 35a6456524 | |||
| 141074bec3 | |||
| e78497e46d | |||
| 52b6305cf2 | |||
| 1cd582a322 | |||
| 2ff33ea968 | |||
| b2e2b570e1 | |||
| 4644ef0229 | |||
| f546600fd2 | |||
| 9c951e244c | |||
| 5cb67dadbf | |||
| 39f6a43717 | |||
| 81f3531136 | |||
| 9f21a3d103 | |||
| e14833217e | |||
| 8c25bdeacc | |||
| d652c81fa7 | |||
| ed745708b2 | |||
| 625ddf1e1e | |||
| 512412b4bb | |||
| d4056e7db3 | |||
| c85e7a514b | |||
| a539db3d55 | |||
| b8d9098aaa | |||
| 1c87e5ac78 | |||
| 4f5e67a581 | |||
| cabf56aea9 | |||
| 4b78bd6c67 | |||
| c9c1723090 | |||
| 1f3a35a95c | |||
| e4cf12ee1a | |||
| 943f387a23 | |||
| 3aeb0707f5 | |||
| 94472bc4ab | |||
| e3c9a0045e | |||
| 97227181fe | |||
| f2afe03303 | |||
| 75d291d26a | |||
| 338c347d7c | |||
| e24e0cc7ce |
+7
-1
@@ -2,18 +2,21 @@ Code,Name,Directory,Functor,Unlexer,Present,All,Try,Symbolic,Compatibility,Synop
|
||||
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
|
||||
Cze,Czech,czech,,,,,,y,,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
|
||||
@@ -21,6 +24,7 @@ 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
|
||||
@@ -47,12 +51,14 @@ 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
|
||||
|
||||
|
@@ -299,9 +299,6 @@ fun
|
||||
fun
|
||||
CardCNCard : Card -> CN -> Card ; -- three million, four lakh, six dozen etc
|
||||
|
||||
fun
|
||||
AnaphPron : NP -> Pron ;
|
||||
|
||||
fun
|
||||
TPastSimple : Tense ;
|
||||
|
||||
|
||||
@@ -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 = ""
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
+60
-24
@@ -1,25 +1,61 @@
|
||||
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} ;
|
||||
|
||||
concrete CatSqi of Cat = CommonX ** open ParamX,Prelude,ResSqi in {
|
||||
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 ACard = {s : Str} ;
|
||||
lincat AP = {s : Species => Case => Gender => Number => Str} ;
|
||||
lincat CN = Noun ;
|
||||
lincat Card = {s : Str} ;
|
||||
lincat Cl = {s : Str} ;
|
||||
lincat ClSlash = {s : Str} ;
|
||||
lincat Comp = {s : Str} ;
|
||||
lincat Conj = {s : Str} ;
|
||||
lincat DAP = {s : Str} ;
|
||||
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
|
||||
lincat Det = {s : Case => Gender => Str; sp : Species; n : Number} ;
|
||||
lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
||||
lincat GN = {s : Str} ;
|
||||
lincat IComp = {s : Str} ;
|
||||
lincat IDet = {s : Str} ;
|
||||
lincat IP = {s : Str} ;
|
||||
lincat IQuant = {s : Str} ;
|
||||
lincat Imp = {s : Str} ;
|
||||
lincat LN = {s : Str} ;
|
||||
lincat N = Noun ;
|
||||
lincat N2 = {s : Species => Case => Number => Str; g : Gender;
|
||||
c2 : {s : Str}} ;
|
||||
lincat N3 = {s : Species => Case => Number => Str; g : Gender;
|
||||
c2 : {s : Str}; c3 : {s : Str}} ;
|
||||
lincat NP = {s : Case => Str; a : Agr} ;
|
||||
lincat Num = {s : Str; n : Number} ;
|
||||
lincat Numeral = {s : Str} ;
|
||||
lincat Ord = {s : Str} ;
|
||||
lincat PN = {s : Str} ;
|
||||
lincat Predet = {s : Str} ;
|
||||
lincat Pron = {s: Case => Str; acc_clit, dat_clit : Str; a : Agr} ;
|
||||
lincat QCl = {s : Str} ;
|
||||
lincat QS = {s : Str} ;
|
||||
lincat Quant = {s : Case => Gender => Number => Str; sp : Species} ;
|
||||
lincat RCl = {s : Str} ;
|
||||
lincat RP = {s : Str} ;
|
||||
lincat RS = {s : Str} ;
|
||||
lincat S = {s : Str} ;
|
||||
lincat SN = {s : Str} ;
|
||||
lincat SSlash = {s : Str} ;
|
||||
lincat Subj = {s : Str} ;
|
||||
lincat VP = {indicative : Tense => Number => Person => Case => Str;
|
||||
participle : Case => Str;
|
||||
pres_optative : Number => Person => Case => Str;
|
||||
perf_optative : Number => Person => Case => Str;
|
||||
pres_admirative : Number => Person => Case => Str;
|
||||
imperf_admirative : Number => Person => Case => Str} ;
|
||||
lincat VPSlash = {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} ;
|
||||
}
|
||||
|
||||
@@ -51,32 +51,32 @@ 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 (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)) ++
|
||||
|
||||
+270
-270
File diff suppressed because it is too large
Load Diff
@@ -4,16 +4,16 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
|
||||
|
||||
lin
|
||||
DetCN det cn = {
|
||||
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.spec ! c ! det.n ;
|
||||
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.sp ! c ! det.n ;
|
||||
a = agrgP3 cn.g det.n
|
||||
} ;
|
||||
|
||||
UsePron p = p ;
|
||||
-- UsePron p = p ;
|
||||
|
||||
DetQuant quant num = {
|
||||
s = \\c,g => quant.s ! c ! g ! num.n ++ num.s ;
|
||||
n = num.n ;
|
||||
spec = quant.spec
|
||||
sp = quant.sp
|
||||
} ;
|
||||
|
||||
NumSg = {s = []; n = Sg} ;
|
||||
@@ -21,16 +21,15 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
|
||||
|
||||
DefArt = {
|
||||
s = \\c,g,n => [] ;
|
||||
spec = Def
|
||||
sp = Def
|
||||
} ;
|
||||
|
||||
IndefArt = {
|
||||
s = \\c,g => table Number ["një"; []] ;
|
||||
spec = Indef
|
||||
sp = 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 ;
|
||||
|
||||
@@ -84,10 +84,4 @@ oper
|
||||
_ => BIND
|
||||
} ;
|
||||
|
||||
inc : DTail -> DTail = \t -> case t of {
|
||||
T1 => T2 ;
|
||||
T2 => T3 ;
|
||||
T3 => T1
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1327,7 +1327,7 @@ oper mkQuant : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Quant =
|
||||
}
|
||||
}
|
||||
} ;
|
||||
spec = Indef
|
||||
sp = Indef
|
||||
} ;
|
||||
|
||||
oper mkDet : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det =
|
||||
@@ -1350,7 +1350,7 @@ oper mkDet : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det =
|
||||
Fem => f8
|
||||
}
|
||||
} ;
|
||||
spec = Indef ;
|
||||
sp = Indef ;
|
||||
n = n
|
||||
} ;
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ 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 ;
|
||||
|
||||
|
||||
@@ -104,10 +104,10 @@ oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Bool -> Adj =
|
||||
|
||||
|
||||
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 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 {
|
||||
{ indicative = table {
|
||||
Pres => table {
|
||||
Sg => table {
|
||||
P1 => f1 ;
|
||||
@@ -157,7 +157,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Imperative = table {
|
||||
imperative = table {
|
||||
Sg => f25 ;
|
||||
Pl => f26
|
||||
} ;
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
+1
-420
@@ -128,10 +128,8 @@ C1eC2aC3 = {C1 ="" ; C1C2="'"; C2C3 ="!"; C3="#"};
|
||||
peC1aC2C3 = { C1 = "ä" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||
penC1aC2C3e = { C1 = "än" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||
pteC1aC2C3 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||
pteC1aC2C3 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3=""};-- 3
|
||||
pteC1aC2C3u = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3="&"};
|
||||
pyeC1aC2C3 = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||
pteC1aC2C3 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||
pyeC1aC2C3u = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3="&"};
|
||||
|
||||
--Passive Jus_Imperat mkV3gdl
|
||||
@@ -343,7 +341,6 @@ leC1AC2aC3 = {C1 ="l" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||
enC1AC2aC3 = { C1 = "(n" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||
C1AC2aC3 = { C1 = "" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||
C1AC2aC3i = { C1 = "" ; C1C2="!"; C2C3 ="'"; C3="#"};
|
||||
C1AC2aC3u = { C1 = "" ; C1C2="!"; C2C3 ="'"; C3="&"};
|
||||
yC1AC2aC3 = { C1 = "y" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||
tC1AC2aC3 = { C1 = "t" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||
yC1AC2aC3u = { C1 = "y" ; C1C2="!"; C2C3 ="'"; C3="&"};
|
||||
@@ -661,7 +658,7 @@ C1AC2n = { C1 = "" ; C1C2="!"; C2 ="n"};
|
||||
C1AC2k = { C1 = "" ; C1C2="!"; C2 ="k"};
|
||||
C1AC2sh = { C1 = "" ; C1C2="!"; C2 ="x"};
|
||||
C1AC2achehu = { C1 = "" ; C1C2 ="!"; C2 ="!ch&"};
|
||||
C1AC2a = { C1 = "" ; C1C2="!"; C2 ="'"};
|
||||
C1AC2a = { C1 = "" ; C1C2="!"; C2 ="'"};
|
||||
C1AC2ach = { C1 = "" ; C1C2="!"; C2 ="'c"};
|
||||
C1AC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
||||
-- Imper -- mkV2yz
|
||||
@@ -701,7 +698,6 @@ C1C2ek = { C1 = "" ; C1C2=""; C2 ="'k"};
|
||||
C1C2esh = { C1 = "" ; C1C2=""; C2 ="'x"};
|
||||
C1C2achehu = { C1 = "" ; C1C2=""; C2 ="!ch&"};
|
||||
C1C2o = { C1 = "" ; C1C2=""; C2 ="/"};
|
||||
C1C2a = { C1 = "" ; C1C2=""; C2="!"};
|
||||
C1C2ew = { C1 = "" ; C1C2=""; C2="'w"};
|
||||
|
||||
--CompPer mkV2yz y!l'h& !l !l !l cX7l 7l l'c !l
|
||||
@@ -721,81 +717,12 @@ meC1aC2= {C1 ="m'" ; C1C2="!"; C2 =""};
|
||||
--Infinitve mkV2yz
|
||||
C1aC2ii= {C1 ="" ; C1C2="!"; C2 ="#"};
|
||||
|
||||
|
||||
--mkV2yz -- yz -- catch
|
||||
--Perf --
|
||||
C1AC2hu = {C1 ="" ; C1C2="!"; C2 ="h&"};
|
||||
C1AC2n = { C1 = "" ; C1C2="!"; C2 ="n"};
|
||||
C1AC2k = { C1 = "" ; C1C2="!"; C2 ="k"};
|
||||
C1AC2sh = { C1 = "" ; C1C2="!"; C2 ="x"};
|
||||
C1AC2achehu = { C1 = "" ; C1C2 ="!"; C2 ="!ch&"};
|
||||
C1AC2a = { C1 = "" ; C1C2="!"; C2 ="'"};
|
||||
C1AC2ach = { C1 = "" ; C1C2="!"; C2 ="'c"};
|
||||
C1AC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
||||
-- Imper -- mkV2yz
|
||||
eC1C2alehu = { C1 = "ä" ; C1C2=""; C2 ="!l'h&"};
|
||||
enC1C2alen = { C1 = "än" ; C1C2=""; C2 ="!l'n"};
|
||||
teC1C2yaleh = { C1 = "t" ; C1C2=""; C2 ="!l'h"};
|
||||
teC1C2aleh = { C1 = "t" ; C1C2=""; C2 ="y!l'x"};
|
||||
teC1C2alachehu = { C1 = "t" ; C1C2=""; C2 ="!l!ch&"};
|
||||
yeC1C2al = { C1 = "y" ; C1C2=""; C2 ="!l"};
|
||||
teC1C2alech = { C1 = "t" ; C1C2=""; C2 ="!l'c"};
|
||||
yeC1C2alu = { C1 = "y" ; C1C2=""; C2 ="!l&"};
|
||||
|
||||
-- Cont -- mkV2yz
|
||||
eC1C2 = { C1 = "ä" ; C1C2=""; C2 =""};
|
||||
enC1C2 = { C1 = "än" ; C1C2=""; C2 =""};
|
||||
teC1C2 = { C1 = "t" ; C1C2=""; C2 =""};
|
||||
--teC1C2 = { C1 = "t" ; C1C2=""; C2 =""};3
|
||||
teC1C2u = { C1 = "t" ; C1C2=""; C2 ="&"};
|
||||
yeC1C2 = { C1 = "y" ; C1C2=""; C2 =""};
|
||||
--teC1C2 = { C1 = "t" ; C1C2=""; C2 =""};
|
||||
yeC1C2u = { C1 = "y" ; C1C2=""; C2 ="&"};
|
||||
|
||||
|
||||
--Jus_Imperat mkV2yz
|
||||
leC1aC2a = {C1 ="l" ; C1C2="!"; C2 =""};
|
||||
enC1aC2a = { C1 = "än" ; C1C2="!"; C2 =""};
|
||||
C1aC2 = { C1 = "" ; C1C2="!"; C2 =""};
|
||||
C1aC2i = { C1 = "" ; C1C2="!"; C2 ="#"};
|
||||
C1eC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
||||
yC1aC2a = { C1 = "y" ; C1C2="!"; C2 =""};
|
||||
tC1aC2a = { C1 = "t" ; C1C2="!"; C2 =""};
|
||||
yC1aC2u = { C1 = "y" ; C1C2="!"; C2 ="&"};
|
||||
--Gerund mkV2yz
|
||||
C1C2ie = {C1 ="" ; C1C2=""; C2 ="%"};
|
||||
C1C2en = { C1 = "" ; C1C2=""; C2 ="'n"};
|
||||
C1C2ek = { C1 = "" ; C1C2=""; C2 ="'k"};
|
||||
C1C2esh = { C1 = "" ; C1C2=""; C2 ="'x"};
|
||||
C1C2achehu = { C1 = "" ; C1C2=""; C2 ="!ch&"};
|
||||
C1C2o = { C1 = "" ; C1C2=""; C2 ="/"};
|
||||
C1C2a = { C1 = "" ; C1C2=""; C2="!"};
|
||||
C1C2ew = { C1 = "" ; C1C2=""; C2="'w"};
|
||||
|
||||
--CompPer mkV2yz y!l'h& !l !l !l cX7l 7l l'c !l
|
||||
C1C2iealehu = {C1 ="" ; C1C2=""; C2 ="%y!l'h&"};
|
||||
C1C2enal = { C1 = "" ; C1C2=""; C2 ="'n!l"};
|
||||
C1C2ekal = { C1 = "" ; C1C2=""; C2 ="'k!l"};
|
||||
C1C2eshal = { C1 = "" ; C1C2=""; C2 ="'x!l"};
|
||||
C1C2achehual = { C1 = "" ; C1C2=""; C2 ="!cX7l"};
|
||||
C1C2oal = { C1 = "" ; C1C2=""; C2 ="7l"};
|
||||
C1C2alech = { C1 = "" ; C1C2=""; C2="!l'c"};
|
||||
C1C2ewal = { C1 = "" ; C1C2=""; C2="'w!l"};
|
||||
|
||||
|
||||
--Infinitve mkV2yz
|
||||
meC1aC2= {C1 ="m'" ; C1C2="!"; C2 =""};
|
||||
|
||||
--Infinitve mkV2yz
|
||||
C1aC2ii= {C1 ="" ; C1C2="!"; C2 ="#"};
|
||||
|
||||
--nore -- nr -- live
|
||||
--Perf --
|
||||
C1oC2hu = {C1 ="" ; C1C2="/"; C2 ="h&"};
|
||||
C1oC2n = { C1 = "" ; C1C2="/"; C2 ="n"};
|
||||
C1oC2k = { C1 = "" ; C1C2="/"; C2 ="k"};
|
||||
C1oC2sh = { C1 = "" ; C1C2="/"; C2 ="x"};
|
||||
C1oC2achehu = { C1 = "" ; C1C2 ="/"; C2 ="!ch&"};
|
||||
C1oC2a = { C1 = "" ; C1C2="/"; C2 ="'"};
|
||||
C1oC2ach = { C1 = "" ; C1C2="/"; C2 ="'c"};
|
||||
C1oC2u = { C1 = "" ; C1C2="/"; C2 ="&"};
|
||||
@@ -858,87 +785,12 @@ meC1oC2= {C1 ="m'" ; C1C2="/"; C2 =""};
|
||||
C1uaC2i= {C1 ="" ; C1C2="7"; C2 ="#"};
|
||||
|
||||
|
||||
|
||||
|
||||
--nore -- nr -- live
|
||||
--Perf --
|
||||
C1oC2hu = {C1 ="" ; C1C2="/"; C2 ="h&"};
|
||||
C1oC2n = { C1 = "" ; C1C2="/"; C2 ="n"};
|
||||
C1oC2k = { C1 = "" ; C1C2="/"; C2 ="k"};
|
||||
C1oC2sh = { C1 = "" ; C1C2="/"; C2 ="x"};
|
||||
C1oC2achehu = { C1 = "" ; C1C2 ="/"; C2 ="!ch&"};
|
||||
C1oC2a = { C1 = "" ; C1C2="/"; C2 ="'"};
|
||||
C1oC2ach = { C1 = "" ; C1C2="/"; C2 ="'c"};
|
||||
C1oC2u = { C1 = "" ; C1C2="/"; C2 ="&"};
|
||||
-- Imper -- mkV2nr
|
||||
eC1oC2alehu = { C1 = "ä" ; C1C2="/"; C2 ="!l'h&"};
|
||||
enC1oC2alen = { C1 = "än" ; C1C2="/"; C2 ="!l'n"};
|
||||
teC1oC2yaleh = { C1 = "t" ; C1C2="/"; C2 ="!l'h"};
|
||||
teC1oC2alesh = { C1 = "t" ; C1C2="/"; C2 ="y!l'x"};
|
||||
teC1oC2alachehu = { C1 = "t" ; C1C2="/"; C2 ="!l!ch&"};
|
||||
yeC1oC2al = { C1 = "y" ; C1C2="/"; C2 ="!l"};
|
||||
teC1oC2alech = { C1 = "t" ; C1C2="/"; C2 ="!l'c"};
|
||||
yeC1oC2alu = { C1 = "y" ; C1C2="/"; C2 ="!l&"};
|
||||
|
||||
-- Imper -- mkV2nr
|
||||
eC1oC2 = { C1 = "ä" ; C1C2="/"; C2 =""};
|
||||
enC1oC2 = { C1 = "än" ; C1C2="/"; C2 =""};
|
||||
teC1oC2 = { C1 = "t" ; C1C2="/"; C2 =""};
|
||||
teC1oC2i = { C1 = "t" ; C1C2="/"; C2 ="#"};
|
||||
teC1oC2u = { C1 = "t" ; C1C2="/"; C2 ="&"};
|
||||
yeC1oC2 = { C1 = "y" ; C1C2="/"; C2 =""};
|
||||
--teC1oC2 = { C1 = "t" ; C1C2="/"; C2 ="!l'c"};
|
||||
yeC1oC2u = { C1 = "y" ; C1C2="/"; C2 ="&"};
|
||||
|
||||
--Jus_Imperat mkV2nr
|
||||
leC1uC2 = {C1 ="l" ; C1C2="&"; C2 =""};
|
||||
enC1uC2 = { C1 = "än" ; C1C2="&"; C2 =""};
|
||||
C1uC2 = { C1 = "" ; C1C2="&"; C2 =""};
|
||||
C1uC2i = { C1 = "" ; C1C2="&"; C2 ="#"};
|
||||
C1uC2u = { C1 = "" ; C1C2="&"; C2 ="&"};
|
||||
yC1uC2 = { C1 = "y" ; C1C2="&"; C2 =""};
|
||||
tC1uC2 = { C1 = "t" ; C1C2="&"; C2 =""};
|
||||
yC1uC2u = { C1 = "y" ; C1C2="&"; C2 ="&"};
|
||||
|
||||
|
||||
|
||||
--Gerund mkV2nr
|
||||
C1oC2ie = {C1 ="" ; C1C2="/"; C2 ="%"};
|
||||
C1oC2en = { C1 = "" ; C1C2="/"; C2 ="'n"};
|
||||
C1oC2ek = { C1 = "" ; C1C2="/"; C2 ="'k"};
|
||||
C1oC2esh = { C1 = "" ; C1C2="/"; C2 ="'x"};
|
||||
C1oC2achehu = { C1 = "" ; C1C2="/"; C2 ="!ch&"};
|
||||
C1oC2o = { C1 = "" ; C1C2="/"; C2 ="/"};
|
||||
C1oC2A = { C1 = "" ; C1C2="/"; C2="!"};
|
||||
C1oC2ew = { C1 = "" ; C1C2="/"; C2="'w"};
|
||||
|
||||
--CompPer mkV2nr y!l'h& !l !l !l cX7l 7l l'c !l
|
||||
C1oC2iealehu = {C1 ="" ; C1C2="/"; C2 ="%y!l'h& "};
|
||||
C1oC2enal = { C1 = "" ; C1C2="/"; C2 ="'n!l"};
|
||||
C1oC2ekal = { C1 = "" ; C1C2="/"; C2 ="'k!l"};
|
||||
C1oC2eshal = { C1 = "" ; C1C2="/"; C2 ="'x!l"};
|
||||
C1oC2achehual = { C1 = "" ; C1C2="/"; C2 ="!cX7l"};
|
||||
C1oC2oal = { C1 = "" ; C1C2="/"; C2 ="7l"};
|
||||
C1oC2Alech = { C1 = "" ; C1C2="/"; C2="!l'c"};
|
||||
C1oC2ewal = { C1 = "" ; C1C2="/"; C2="'w!l"};
|
||||
|
||||
--Infinitve mkV2nr
|
||||
meC1oC2= {C1 ="m'" ; C1C2="/"; C2 =""};
|
||||
|
||||
--Participle mkV2nr
|
||||
C1uaC2i= {C1 ="" ; C1C2="7"; C2 ="#"};
|
||||
|
||||
|
||||
--mkV2wN -- wN -- swim --- Eg lie, see, say
|
||||
--Perf --
|
||||
C1AC2ehu = {C1 ="" ; C1C2="!"; C2 ="'h&"};
|
||||
C1AC2en = { C1 = "" ; C1C2="!"; C2 ="'n"};
|
||||
C1AC2ek = { C1 = "" ; C1C2="!"; C2 ="'k"};
|
||||
C1AC2esh = { C1 = "" ; C1C2="!"; C2 ="'x"};
|
||||
--C1AC2achehu = { C1 = "" ; C1C2 ="!"; C2 ="!ch&"};
|
||||
--C1AC2a = { C1 = "" ; C1C2="!"; C2 ="'"};
|
||||
--C1AC2ach = { C1 = "" ; C1C2="!"; C2 ="'c"};
|
||||
--C1AC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
||||
-- Imper -- mkV2wN
|
||||
eC1aC2alehu = { C1 = "ä" ; C1C2="!"; C2 ="!l'h&"};
|
||||
enC1aC2alen = { C1 = "än" ; C1C2="!"; C2 ="!l'n"};
|
||||
@@ -992,74 +844,6 @@ C1aC2tewal = { C1 = "" ; C1C2="!"; C2="t'w!l"};
|
||||
meC1aC2et= {C1 ="m'" ; C1C2="!"; C2 ="'t"};
|
||||
--nore -- nr -- live
|
||||
|
||||
|
||||
|
||||
--mkV2wN -- wN -- swim --- Eg lie, see, say
|
||||
--Perf --
|
||||
C1AC2ehu = {C1 ="" ; C1C2="!"; C2 ="'h&"};
|
||||
C1AC2en = { C1 = "" ; C1C2="!"; C2 ="'n"};
|
||||
C1AC2ek = { C1 = "" ; C1C2="!"; C2 ="'k"};
|
||||
C1AC2esh = { C1 = "" ; C1C2="!"; C2 ="'x"};
|
||||
--C1AC2achehu = { C1 = "" ; C1C2 ="!"; C2 ="!ch&"};
|
||||
--C1AC2a = { C1 = "" ; C1C2="!"; C2 ="'"};
|
||||
--C1AC2ach = { C1 = "" ; C1C2="!"; C2 ="'c"};
|
||||
--C1AC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
||||
-- Imper -- mkV2wN
|
||||
eC1aC2alehu = { C1 = "ä" ; C1C2="!"; C2 ="!l'h&"};
|
||||
enC1aC2alen = { C1 = "än" ; C1C2="!"; C2 ="!l'n"};
|
||||
teC1aC2yaleh = { C1 = "t" ; C1C2="!"; C2 ="!l'h"};
|
||||
teC1aC2alesh = { C1 = "t" ; C1C2="!"; C2 ="y!l'x"};
|
||||
teC1aC2alachehu = { C1 = "t" ; C1C2="!"; C2 ="!l!ch&"};
|
||||
yeC1aC2al = { C1 = "y" ; C1C2="!"; C2 ="!l"};
|
||||
teC1aC2alech = { C1 = "t" ; C1C2="!"; C2 ="!l'c"};
|
||||
yeC1aC2alu = { C1 = "y" ; C1C2="!"; C2 ="!l&"};
|
||||
|
||||
-- Cont -- mkV2wN
|
||||
eC1aC2 = { C1 = "ä" ; C1C2="!"; C2 =""};
|
||||
enC1aC2 = { C1 = "än" ; C1C2="!"; C2 =""};
|
||||
teC1aC2 = { C1 = "t" ; C1C2="!"; C2 =""};
|
||||
--teC1aC2 = { C1 = "t" ; C1C2="!"; C2 =""};
|
||||
teC1aC2u = { C1 = "t" ; C1C2="!"; C2 ="&"};
|
||||
yeC1aC2 = { C1 = "y" ; C1C2="!"; C2 =""};
|
||||
--teC1aC2 = { C1 = "t" ; C1C2="!"; C2 =""};
|
||||
yeC1aC2u = { C1 = "y" ; C1C2="!"; C2 ="&"};
|
||||
|
||||
--Jus_Imperat mkV2wN
|
||||
--leC1aC2a = {C1 ="l" ; C1C2="!"; C2 =""};
|
||||
--enC1aC2a = { C1 = "än" ; C1C2="!"; C2 =""};
|
||||
--C1aC2 = { C1 = "" ; C1C2="!"; C2 =""};
|
||||
--C1aC2i = { C1 = "" ; C1C2="!"; C2 ="#"};
|
||||
--C1eC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
||||
--yC1aC2a = { C1 = "y" ; C1C2="!"; C2 =""};
|
||||
--tC1aC2a = { C1 = "t" ; C1C2="!"; C2 =""};
|
||||
--yC1aC2u = { C1 = "y" ; C1C2="!"; C2 ="&"};
|
||||
--Gerund mkV2wN
|
||||
C1aC2cie = {C1 ="" ; C1C2="!"; C2 ="c%"};
|
||||
C1aC2ten = { C1 = "" ; C1C2="!"; C2 ="t'n"};
|
||||
C1aC2tek = { C1 = "" ; C1C2="!"; C2 ="t'k"};
|
||||
C1aC2tesh = { C1 = "" ; C1C2="!"; C2 ="t'x"};
|
||||
C1aC2tachehu = { C1 = "" ; C1C2="!"; C2 ="t!ch&"};
|
||||
C1aC2to = { C1 = "" ; C1C2="!"; C2 ="t/"};
|
||||
C1aC2ta = { C1 = "" ; C1C2="!"; C2="t!"};
|
||||
C1aC2tew = { C1 = "" ; C1C2="!"; C2="t'w"};
|
||||
|
||||
--ComPer mkV2wN y!l'h& !l !l !l cX7l 7l l'c !l
|
||||
C1aC2ciealehu = {C1 ="" ; C1C2="!"; C2 ="c%y!l'h&"};
|
||||
C1aC2tenal = { C1 = "" ; C1C2="!"; C2 ="t'n!l"};
|
||||
C1aC2tekal = { C1 = "" ; C1C2="!"; C2 ="t'k!l"};
|
||||
C1aC2teshal = { C1 = "" ; C1C2="!"; C2 ="t'x!l"};
|
||||
C1aC2tachehual = { C1 = "" ; C1C2="!"; C2 ="t!cX7l"};
|
||||
C1aC2toal = { C1 = "" ; C1C2="!"; C2 ="t7l"};
|
||||
C1aC2talech = { C1 = "" ; C1C2="!"; C2="t!l'c"};
|
||||
C1aC2tewal = { C1 = "" ; C1C2="!"; C2="t'w!l"};
|
||||
|
||||
--Infinitve mkV2wN
|
||||
meC1aC2et= {C1 ="m'" ; C1C2="!"; C2 ="'t"};
|
||||
--nore -- nr -- live
|
||||
|
||||
|
||||
|
||||
|
||||
----------- This much is enough for the duo-radicals---
|
||||
--There are few verbs still remaining like the case of shete, hede , --washe, aye, ale , all need unique froms for them selves. I will get --back here later!!
|
||||
|
||||
@@ -1109,63 +893,8 @@ tC1eC2 = { C1 = "t" ; C1C2=""; C2 =""};
|
||||
meC1C2et= {C1 ="m'" ; C1C2=""; C2 ="'t"};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
----------- This much is enough for the duo-radicals---
|
||||
--There are few verbs still remaining like the case of shete, hede , --washe, aye, ale , all need unique froms for them selves. I will get --back here later!!
|
||||
|
||||
--seTe -- st -- give
|
||||
--Perf --
|
||||
C1eC2hu = {C1 ="" ; C1C2="'"; C2 ="'h&"};
|
||||
C1eC2n = { C1 = "" ; C1C2="'"; C2 ="'n"};
|
||||
C1eC2k = { C1 = "" ; C1C2="'"; C2 ="'k"};
|
||||
C1eC2sh = { C1 = "" ; C1C2="'"; C2 ="'x"};
|
||||
C1eC2achehu = { C1 = "" ; C1C2 ="'"; C2 ="'ch&"};
|
||||
C1eC2a = { C1 = "" ; C1C2="'"; C2 ="'"};
|
||||
C1eC2ach = { C1 = "" ; C1C2="'"; C2 ="'c"};
|
||||
--C1eC2u = { C1 = "" ; C1C2="'"; C2 ="&"}; same as C1aC2u (bela)
|
||||
-- Imper -- mkV2sT
|
||||
--eC1eC2alehu = { C1 = "ä" ; C1C2="'"; C2 ="!l'h&"}; eC1aC2alehu
|
||||
--enC1eC2alen = { C1 = "än" ; C1C2="'"; C2 ="!l'n"};enC1aC2alen
|
||||
--teC1eC2yaleh = { C1 = "t" ; C1C2="'"; C2 ="!l'h"};teC1aC2yaleh
|
||||
--teC1eC2aleh = { C1 = "t" ; C1C2="'"; C2 ="y!l'x"};teC1aC2aleh
|
||||
--teC1eC2alachehu = { C1 = "t" ; C1C2="'"; C2 ="!l!ch&"};teC1aC2alachehu
|
||||
--yeC1eC2al = { C1 = "y" ; C1C2="'"; C2 ="!l"};yeC1aC2al
|
||||
--teC1eC2alech = { C1 = "t" ; C1C2="'"; C2 ="!l'c"};teC1aC2alech
|
||||
--yeC1eC2alu = { C1 = "y" ; C1C2="'"; C2 ="!l&"};yeC1aC2alu
|
||||
|
||||
--Jus_Imperat mkV2sT
|
||||
|
||||
leC1eC2 = {C1 ="l" ; C1C2=""; C2 =""};
|
||||
enC1eC2 = { C1 = "än" ; C1C2=""; C2 =""};
|
||||
C1C2 = { C1 = "" ; C1C2=""; C2 =""};
|
||||
C1eC2i = { C1 = "" ; C1C2=""; C2 ="#"};
|
||||
--C1eC2u = { C1 = "" ; C1C2=""; C2 ="&"}; C1C2u
|
||||
yC1eC2 = { C1 = "y" ; C1C2=""; C2 =""};
|
||||
tC1eC2 = { C1 = "t" ; C1C2=""; C2 =""};
|
||||
--yC1eC2u = { C1 = "y" ; C1C2=""; C2 ="&"};yC1C2u
|
||||
|
||||
|
||||
--Gerund mkV2sT
|
||||
|
||||
--C1eC2ie = {C1 ="" ; C1C2="'"; C2 ="c%"}; C1aC2cie
|
||||
--C1eC2en = { C1 = "" ; C1C2="'"; C2 ="'n"};C1aC2ten
|
||||
--C1eC2ek = { C1 = "" ; C1C2="'"; C2 ="'k"}; C1aC2tek
|
||||
--C1eC2esh = { C1 = "" ; C1C2="'"; C2 ="'x"}; C1aC2tesh
|
||||
--C1eC2achehu = { C1 = "" ; C1C2="'"; C2 ="!ch&"};C1aC2tachehu
|
||||
--C1eC2o = { C1 = "" ; C1C2="'"; C2 ="/"};C1aC2to
|
||||
--C1eC2A = { C1 = "" ; C1C2="'"; C2="!"};C1aC2ta
|
||||
--C1eC2ew = { C1 = "" ; C1C2="'"; C2="'w"}; C1aC2tew
|
||||
--Infinitve mkV2sT
|
||||
meC1C2et= {C1 ="m'" ; C1C2=""; C2 ="'t"};
|
||||
|
||||
|
||||
|
||||
|
||||
---- Quadro_Radical
|
||||
|
||||
|
||||
--Starting with type Tri-Radical Roots
|
||||
-- Eg. dbdb - fight
|
||||
-- qzqz - freeze
|
||||
@@ -1238,152 +967,4 @@ meC1aC2C3aC4 = {C1 ="m'" ; C1C2="'"; C2C3 =""; C3C4="'"; C4= "" };
|
||||
--Participle mkV4dbdb
|
||||
C1eC2C3aC4i = {C1 ="" ; C1C2="'"; C2C3 =""; C3C4="!"; C4= "#" };
|
||||
|
||||
|
||||
---- Quadro_Radical
|
||||
|
||||
|
||||
--Starting with type Tri-Radical Roots
|
||||
-- Eg. dbdb - fight
|
||||
-- qzqz - freeze
|
||||
-- wrwr - throw
|
||||
-- tnfs - breath
|
||||
|
||||
--Perf --
|
||||
C1aC2aC3aC4hu = {C1 ="" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "h&" };
|
||||
C1aC2aC3aC4n = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "n" };
|
||||
C1aC2aC3aC4k = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "k" };
|
||||
C1aC2aC3aC4sh = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "x" };
|
||||
C1aC2aC3aC4achehu = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "!ch&" };
|
||||
C1aC2aC3aC4a = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "'" };
|
||||
C1aC2aC3aC4ech = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "'c" };
|
||||
C1aC2aC3aC4u = { C1 = "" ; C1C2="'"; C2C3 ="'"; C3C4="'"; C4= "&" };
|
||||
--Imper --mkV4dbdb
|
||||
eC1aC2aC3C4alehu = { C1 = "ä" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l'h&" };
|
||||
enC1aC2aC3C4alen = { C1 = "än" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l'n" };
|
||||
teC1aC2aC3C4yaleh = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l'h" };
|
||||
teC1aC2aC3C4aleh = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "y!l'x" };
|
||||
teC1aC2aC3C4alachehu = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l!ch&" };
|
||||
yeC1aC2aC3C4al = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l" };
|
||||
teC1aC2aC3C4alech = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l'c" };
|
||||
yeC1aC2aC3C4alu = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "!l&" };
|
||||
|
||||
--Cont --mkV4dbdb
|
||||
eC1aC2aC3C4 = { C1 = "ä" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "" };
|
||||
enC1aC2aC3C4 = { C1 = "än" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "" };
|
||||
teC1aC2aC3C4 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "" };
|
||||
teC1aC2aC3C4i = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "#" };
|
||||
teC1aC2aC3C4u = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "&" };
|
||||
yeC1aC2aC3C4 = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "" };
|
||||
--teC1aC2aC3C4 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "" };
|
||||
yeC1aC2aC3C4u = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3C4=""; C4= "&" };
|
||||
|
||||
|
||||
|
||||
--Jus_Imperat mkV4dbdb
|
||||
leC1aC2C3C4 = {C1 ="l" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "" };
|
||||
enC1aC2C3C4 = { C1 = "än" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "" };
|
||||
C1aC2C3C4 = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "" };
|
||||
C1aC2C3C4i = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "#" };
|
||||
C1aC2C3C4u = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "&" };
|
||||
yC1aC2C3C4 = { C1 = "y" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "" };
|
||||
tC1aC2C3C4 = { C1 = "t" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "" };
|
||||
yC1aC2C3C4u = { C1 = "y" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "&" };
|
||||
--Gerund mkV4dbdb
|
||||
C1aC2C3C4ie = {C1 ="" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "%" };
|
||||
C1aC2C3C4en = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'n" };
|
||||
C1aC2C3C4ek = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'k" };
|
||||
C1aC2C3C4esh = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'x" };
|
||||
C1aC2C3C4achehu = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "!ch&" };
|
||||
C1aC2C3C4o = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "/" };
|
||||
C1aC2C3C4a = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "!" };
|
||||
C1aC2C3C4ew = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'w" };
|
||||
|
||||
--CompPerf mkV4dbdb y!l'h& !l !l !l cX7l 7l l'c !l
|
||||
C1aC2C3C4iealehu = {C1 ="" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "%y!l'h&" };
|
||||
C1aC2C3C4enal = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'n!l" };
|
||||
C1aC2C3C4ekal = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'k!l" };
|
||||
C1aC2C3C4eshal = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'x!l" };
|
||||
C1aC2C3C4achehual = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "!cX7l" };
|
||||
C1aC2C3C4oal = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "7l" };
|
||||
C1aC2C3C4alech = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "!l'c" };
|
||||
C1aC2C3C4ewal = { C1 = "" ; C1C2="'"; C2C3 =""; C3C4=""; C4= "'w!l" };
|
||||
|
||||
--Infinitve mkV4dbdb
|
||||
meC1aC2C3aC4 = {C1 ="m'" ; C1C2="'"; C2C3 =""; C3C4="'"; C4= "" };
|
||||
|
||||
--Participle mkV4dbdb
|
||||
C1eC2C3aC4i = {C1 ="" ; C1C2="'"; C2C3 =""; C3C4="!"; C4= "#" };
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{-
|
||||
resource PatternsAmh = {
|
||||
|
||||
flags coding=utf8 ;
|
||||
|
||||
oper
|
||||
--perf
|
||||
C1aC2aC3ku = {C1 ="" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ኩ"};
|
||||
C1aC2aC3n = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ን"};
|
||||
C1aC2aC3k = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ክ"};
|
||||
C1aC2aC3sh = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ሽ"};
|
||||
C1aC2aC3achehu = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="አችሁ"};
|
||||
C1aC2aC3e = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ኧ"};
|
||||
C1aC2aC3ech = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ኧች"};
|
||||
C1aC2aC3u = { C1 = "" ; C1C2="ኧ"; C2C3 ="ኧ"; C3="ኡ"};
|
||||
|
||||
--imper
|
||||
eC1aC2C3alehu = { C1 = "እ" ; C1C2="ኧ"; C2C3 =""; C3="አለሁ"};
|
||||
enC1aC2C3alen = { C1 = "እን" ; C1C2="ኧ"; C2C3 =""; C3="አለን"};
|
||||
teC1aC2C3yaleh = { C1 = "ት" ; C1C2="ኧ"; C2C3 =""; C3="አለህ"};
|
||||
teC1aC2C3aleh = { C1 = "ት" ; C1C2="ኧ"; C2C3 =""; C3="ያለሽ"};
|
||||
teC1aC2C3alachehu = { C1 = "ት" ; C1C2="ኧ"; C2C3 =""; C3="አላችሁ"};
|
||||
yeC1aC2C3al = { C1 = "ይ" ; C1C2="ኧ"; C2C3 =""; C3="አል"};
|
||||
teC1aC2C3alech = { C1 = "ት" ; C1C2="ኧ"; C2C3 =""; C3="አለች"};
|
||||
yeC1aC2C3alu = { C1 = "ይ" ; C1C2="ኧ"; C2C3 =""; C3="አሉ"};
|
||||
|
||||
|
||||
}
|
||||
-}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -22,12 +22,9 @@ concrete PhraseAmh of Phrase = CatAmh ** open
|
||||
UttIP ip = ip ; --- Acc also
|
||||
UttVP vp = {s = vp.obj.s ++ vp.inf} ;
|
||||
UttIAdv iadv = iadv ;
|
||||
UttCN n = {s = n.s ! Sg ! Indef!Nom} ;
|
||||
UttCard n = {s = n.s ! Masc!Sg!Indef!Nom} ;
|
||||
UttImpSg pol imp = {s = pol.s ++ imp.s!pol.p!Masc!Sg};
|
||||
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p! Masc! Pl} ; --- TO DO
|
||||
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Masc!Pl} ; -- TO DO ---
|
||||
UttQS qs = {s = qs.s } ; -- TO DO
|
||||
{-
|
||||
|
||||
PConjConj conj = {s = conj.s2} ; ---
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) ;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
resource ConstructorsSco = Constructors with (Grammar = GrammarSco) ;
|
||||
@@ -0,0 +1,5 @@
|
||||
--# -path=.:../english:../common:../abstract:../prelude
|
||||
|
||||
resource SymbolicSco = Symbolic with
|
||||
(Symbol = SymbolSco),
|
||||
(Grammar = GrammarSco) ;
|
||||
@@ -0,0 +1,5 @@
|
||||
--# -path=.:alltenses:prelude
|
||||
|
||||
instance SyntaxSco of Syntax =
|
||||
ConstructorsSco, CatSco, StructuralSco, CombinatorsSco ;
|
||||
|
||||
+14
-1
@@ -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 ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -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 ;
|
||||
|
||||
@@ -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 ;
|
||||
} ;
|
||||
|
||||
|
||||
}
|
||||
@@ -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) ;
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -502,17 +504,17 @@ oper
|
||||
AComp d c => comp ! Sg ! d ! c
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
mascFemCompAdj : (kabir, kabira, akbar : Str) -> Adj =
|
||||
\kabir, kabira, akbar ->
|
||||
ntablesAdj (positAdj kabir ! Masc) (positAdj kabir ! Fem) (positAdj akbar ! Masc) ;
|
||||
|
||||
|
||||
mascFemAdj : (kabir, kabira : Str) -> Adj = \kabir, kabira ->
|
||||
mascFemCompAdj kabir kabira kabir ; ---- comp
|
||||
|
||||
mascAdj : (kabir : Str) -> Adj = \kabir ->
|
||||
mascFemAdj kabir (kabir + "َة") ;
|
||||
|
||||
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
+17
-15
@@ -99,7 +99,7 @@ resource ParadigmsAra = open
|
||||
mkLN = overload {
|
||||
mkLN : Str -> LN -- Predictable LN from a Str: fem hum if ends in ة, otherwise masc hum.
|
||||
= \s -> lin LN (N.UsePN (smartPN s)) ;
|
||||
mkLN : Str -> Gender -> LN
|
||||
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.MassNP (N.UseN n)) ;
|
||||
@@ -108,7 +108,7 @@ resource ParadigmsAra = open
|
||||
---- ++ 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 -> np ;
|
||||
= \np -> lin LN np ;
|
||||
} ;
|
||||
|
||||
--3 Relational nouns
|
||||
@@ -153,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.
|
||||
|
||||
@@ -202,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
|
||||
@@ -375,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} ;
|
||||
|
||||
@@ -812,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) ;
|
||||
@@ -873,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)) ;
|
||||
|
||||
|
||||
|
||||
@@ -914,7 +916,7 @@ oper
|
||||
wmkN : {sg, pl : Str ; g : Gender} -> N
|
||||
= \r -> mkN r.sg r.pl r.g nohum ; --- hum/nohum not in Wikt
|
||||
wmkN : {sg : Str} -> N
|
||||
= \r -> smartN r.sg ;
|
||||
= \r -> smartN r.sg ;
|
||||
wmkN : {sg : Str ; g : Gender ; root : Str} -> N
|
||||
= \r -> smartN r.sg ** {g = r.g} ; ----
|
||||
wmkN : {sg : Str; g : Gender} -> N
|
||||
@@ -924,8 +926,8 @@ oper
|
||||
wmkN : {sg : Str; pl : Str} -> N
|
||||
= \r -> mkN r.sg r.pl masc nohum ; ---- ** {g = (smartN r.sg).g} ;
|
||||
wmkN : {sg, pl : Str ; root : Str} -> N
|
||||
= \r -> mkN r.sg r.pl masc nohum ; ----
|
||||
wmkN : {sg : Str; root : Str} -> N
|
||||
= \r -> mkN r.sg r.pl masc nohum ; ----
|
||||
wmkN : {sg : Str; root : Str} -> N
|
||||
= \r -> smartN r.sg ;
|
||||
} ;
|
||||
|
||||
@@ -949,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
|
||||
|
||||
@@ -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 = \\_ => "العربية"} ;
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
concrete AdjectiveHye of Adjective = CatHye ** open ResHye, Prelude in {
|
||||
lin
|
||||
AdAP ada ap = {
|
||||
s = \\sp,c,num => ada.s ++ ap.s ! sp ! c ! num;
|
||||
isPre = ap.isPre
|
||||
} ;
|
||||
PositA a = {
|
||||
s = \\sp,c,num =>
|
||||
case <sp,c> of {
|
||||
<Def,Nom> => a.def_nom ! num ;
|
||||
<Def,Dat> => a.def_dat ! num ;
|
||||
<Poss P1,_> => a.poss1 ! c ! num ;
|
||||
<Poss P2,_> => a.poss2 ! c ! num ;
|
||||
_ => a.s ! c ! num
|
||||
} ;
|
||||
isPre = True
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
concrete AdverbHye of Adverb = CatHye ** open Prelude,ResHye in {
|
||||
lin PrepNP p np = {s = case p.isPre of {
|
||||
False => np.s ! p.c ++ p.s;
|
||||
True => p.s ++ np.s ! p.c
|
||||
}} ;
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
concrete AllHye of AllHyeAbs =
|
||||
LangHye
|
||||
**
|
||||
{} ;
|
||||
@@ -0,0 +1,3 @@
|
||||
abstract AllHyeAbs =
|
||||
Lang
|
||||
** {}
|
||||
@@ -0,0 +1,63 @@
|
||||
concrete CatHye of Cat = CommonX ** open Prelude,ResHye in {
|
||||
lincat A = Adj ;
|
||||
lincat A2 = Adj ** {c2 : Compl} ;
|
||||
lincat ACard = {s : Str} ;
|
||||
lincat AP = {s : Species => Case => Number => Str; isPre : Bool} ;
|
||||
lincat CN = {s : Species => Case => Number => Str} ;
|
||||
lincat Card = {s : Str} ;
|
||||
lincat Cl = {s : Str;
|
||||
conditional : Aspect => Number => Str;
|
||||
converb : {imperfective : Str; futCon1 : Str;
|
||||
futCon2 : Str; negative : Str;
|
||||
perfective : Str; simultaneous : Str};
|
||||
passive : Str; past : Person => Number => Str;
|
||||
participle : PartType => Str;
|
||||
subjunctive : Aspect => Number => Str} ;
|
||||
lincat ClSlash = {s : Str} ;
|
||||
lincat Comp = {s : Str} ;
|
||||
lincat Conj = {s : Str} ;
|
||||
lincat DAP = {s : Str} ;
|
||||
lincat Decimal = {s : Str} ;
|
||||
lincat Det = {s : Str; n : Number; sp : Species} ;
|
||||
lincat Digits = {s : Str} ;
|
||||
lincat GN = {s : Str} ;
|
||||
lincat IComp = {s : Str} ;
|
||||
lincat IDet = {s : Str} ;
|
||||
lincat IP = {s : Str} ;
|
||||
lincat IQuant = {s : Str} ;
|
||||
lincat Imp = {s : Str} ;
|
||||
lincat LN = {s : Str} ;
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||
lincat NP = {s : Case => Str; a : Agr} ;
|
||||
lincat Num = {s : Str; n : Number} ;
|
||||
lincat Numeral = {s : Str} ;
|
||||
lincat Ord = {s : Str} ;
|
||||
lincat PN = {s : Str} ;
|
||||
lincat Predet = {s : Str} ;
|
||||
lincat Prep = Compl ** {isPre : Bool} ;
|
||||
lincat Pron = {s : Str; empty : Str; a : Agr} ;
|
||||
lincat QCl = {s : Str} ;
|
||||
lincat QS = {s : Str} ;
|
||||
lincat Quant = {s : Str; sp : Species} ;
|
||||
lincat RCl = {s : Str} ;
|
||||
lincat RP = {s : Str} ;
|
||||
lincat RS = {s : Str} ;
|
||||
lincat S = {s : Str} ;
|
||||
lincat SN = {s : Str} ;
|
||||
lincat SSlash = {s : Str} ;
|
||||
lincat Subj = {s : Str} ;
|
||||
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 VP = {s : Str;
|
||||
conditional : Aspect => Person => Number => Str;
|
||||
converb : {imperfective : Str; futCon1 : Str; futCon2 : Str;
|
||||
negative : Str; perfective : Str; simultaneous : Str};
|
||||
imperative : Number => Str; passive : Str;
|
||||
past : Person => Number => Str; participle : PartType => Str;
|
||||
subjunctive : Aspect => Person => Number => Str} ;
|
||||
lincat VPSlash = Verb ** {c2 : Compl} ;
|
||||
}
|
||||
@@ -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 ! Sg) ++ td (x.imperative ! 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} ;
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
concrete GrammarHye of Grammar =
|
||||
TenseX,
|
||||
PhraseHye,
|
||||
NounHye,
|
||||
VerbHye,
|
||||
AdjectiveHye,
|
||||
AdverbHye,
|
||||
SentenceHye,
|
||||
StructuralHye ** {
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
--# -path=.:../abstract
|
||||
concrete LangHye of Lang =
|
||||
GrammarHye,
|
||||
LexiconHye
|
||||
,DocumentationHye --# notpresent
|
||||
** {
|
||||
|
||||
flags startcat = Phr ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
concrete LexiconHye of Lexicon = CatHye ** open ParadigmsHye in {
|
||||
lin apple_N = mkN001 "խնձոր" ;
|
||||
lin man_N = mkN047 "տղամարդ" ;
|
||||
lin woman_N = mkN034 "կին" ;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,35 @@
|
||||
concrete NounHye of Noun = CatHye ** open ResHye in {
|
||||
lin AdjCN ap cn = {
|
||||
s = \\sp,c,n =>
|
||||
case ap.isPre of {
|
||||
True => ap.s ! Indef ! Nom ! Sg ++ cn.s ! sp ! c ! n;
|
||||
False => cn.s ! sp ! c ! n ++ ap.s ! Indef ! Nom ! Sg
|
||||
}
|
||||
} ;
|
||||
lin AdvCN cn adv = {
|
||||
s = \\sp,c,num => adv.s ++ cn.s ! sp ! c ! num
|
||||
} ;
|
||||
lin DefArt = {s = []; sp = Def} ;
|
||||
lin DetCN det cn = {s = \\c => det.s ++ cn.s ! det.sp ! c ! det.n;
|
||||
a = {n=det.n; p=P3}} ;
|
||||
lin DetQuant quant num = {s = quant.s ++ num.s; n = num.n; sp=quant.sp} ;
|
||||
lin IndefArt = {s = "մի"; sp = Indef} ;
|
||||
lin NumPl = {s = []; n = Pl} ;
|
||||
lin NumSg = {s = []; n = Sg} ;
|
||||
lin MassNP cn = {
|
||||
s = \\c => cn.s ! Indef ! c ! Sg;
|
||||
a = {n=Sg; p=P3}
|
||||
} ;
|
||||
lin PossPron pron = {s = pron.empty; sp = Poss pron.a.p} ;
|
||||
lin UseN n = {
|
||||
s = \\sp,c,num =>
|
||||
case <sp,c> of {
|
||||
<Def,Nom> => n.def_nom ! num ;
|
||||
<Def,Dat> => n.def_dat ! num ;
|
||||
<Poss P1,_> => n.poss1 ! c ! num ;
|
||||
<Poss P2,_> => n.poss2 ! c ! num ;
|
||||
_ => n.s ! c ! num
|
||||
}
|
||||
} ;
|
||||
lin UsePron pron = {s = \\c => pron.s; a=pron.a} ;
|
||||
}
|
||||
@@ -0,0 +1,500 @@
|
||||
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; isPre=False} ;
|
||||
|
||||
singular : Number = Sg ;
|
||||
plural : Number = Pl ;
|
||||
|
||||
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; sp=Indef} ;
|
||||
mkDet : Str -> Number -> Det = \s,n -> lin Det {s=s; n=n; sp=Indef} ;
|
||||
mkPredet : Str -> Predet = \s -> lin Predet {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} ;
|
||||
|
||||
mkPron : Str -> Number -> Person -> Pron = \s,n,p ->
|
||||
lin Pron {
|
||||
s = s ;
|
||||
empty = [] ;
|
||||
a = {n = n; p = p}
|
||||
} ;
|
||||
}
|
||||
@@ -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 = []} ;
|
||||
}
|
||||
@@ -0,0 +1,268 @@
|
||||
resource ResHye = ParamX ** {
|
||||
|
||||
param Aspect = Non_Past | Perfect ;
|
||||
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: 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 = 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
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
param Species = Indef | Def | Poss Person ;
|
||||
oper Agr = {n : Number; p : Person} ;
|
||||
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} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
concrete SentenceHye of Sentence = CatHye ** open Prelude,ResHye in {
|
||||
lin PredVP np vp = {s = np.s ! Nom ++ vp.s;
|
||||
conditional = \\a,n => np.s ! Nom ++ vp.conditional ! a ! P3 ! n;
|
||||
converb = {imperfective = np.s ! Nom ++ vp.converb.imperfective;
|
||||
futCon1 = np.s ! Nom ++ vp.converb.futCon1;
|
||||
futCon2 = np.s ! Nom ++ vp.converb.futCon2;
|
||||
negative = np.s ! Nom ++ vp.converb.negative;
|
||||
perfective = np.s ! Nom ++ vp.converb.perfective;
|
||||
simultaneous = np.s ! Nom ++ vp.converb.simultaneous};
|
||||
passive = np.s ! Nom ++ vp.passive;
|
||||
past = \\_,n => np.s ! Nom ++ vp.past ! P3 ! n;
|
||||
participle = \\p => np.s ! Nom ++ vp.participle ! p;
|
||||
subjunctive = \\a,n => np.s ! Nom ++ vp.subjunctive ! a ! P3 ! n} ;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
concrete StructuralHye of Structural = CatHye ** open ResHye, ParadigmsHye in {
|
||||
lin i_Pron = mkPron "ես" Sg P1 ;
|
||||
lin youSg_Pron = mkPron "դու" Sg P2 ;
|
||||
lin he_Pron, she_Pron, it_Pron = mkPron "նա" Sg P3 ;
|
||||
lin we_Pron = mkPron "մեք" Pl P1 ;
|
||||
lin youPl_Pron = mkPron "դուք" Pl P2 ;
|
||||
lin they_Pron = mkPron "նոքա" Pl P3 ;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
concrete VerbHye of Verb = CatHye ** open Prelude,ResHye in {
|
||||
lin AdvVP vp adv = {s = adv.s ++ vp.s;
|
||||
conditional = \\a,p,n => adv.s ++ vp.conditional ! a ! p ! n;
|
||||
converb = {imperfective = adv.s ++ vp.converb.imperfective;
|
||||
futCon1 = adv.s ++ vp.converb.futCon1;
|
||||
futCon2 = adv.s ++ vp.converb.futCon2;
|
||||
negative = adv.s ++ vp.converb.negative;
|
||||
perfective = adv.s ++ vp.converb.perfective;
|
||||
simultaneous = adv.s ++ vp.converb.simultaneous};
|
||||
imperative = \\n => vp.imperative ! n ++ adv.s;
|
||||
passive = adv.s ++ vp.passive;
|
||||
past = \\p,n => adv.s ++ vp.past ! p ! n;
|
||||
participle = \\p => adv.s ++ vp.participle ! p;
|
||||
subjunctive = \\a,p,n => adv.s ++ vp.subjunctive ! a ! p ! n} ;
|
||||
lin ComplSlash vp np = {s = vp.s ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
conditional = \\a,p,n => vp.conditional ! a ! p ! n
|
||||
++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
converb = {imperfective = vp.converb.imperfective
|
||||
++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
futCon1 = vp.converb.futCon1 ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
futCon2 = vp.converb.futCon2 ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
negative = vp.converb.negative ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
perfective = vp.converb.perfective
|
||||
++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
simultaneous = vp.converb.simultaneous
|
||||
++ vp.c2.s ++ np.s ! vp.c2.c};
|
||||
imperative = \\n => vp.imperative ! n ++ vp.c2.s ++ np.s ! Nom;
|
||||
passive = vp.passive ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
past = \\p,n => vp.past ! p ! n ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
participle = \\p => vp.participle ! p ++ vp.c2.s ++ np.s ! vp.c2.c;
|
||||
subjunctive = \\a,p,n => vp.subjunctive ! a ! p ! n
|
||||
++ vp.c2.s ++ np.s ! vp.c2.c} ;
|
||||
lin SlashV2a v = v ;
|
||||
lin UseV v = v ;
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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 } ;
|
||||
|
||||
@@ -144,4 +144,4 @@ oper
|
||||
conjNbr : Number -> Number -> Number = \n,m ->
|
||||
case n of { Pl => Pl ; _ => m } ;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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} ;
|
||||
|
||||
}
|
||||
@@ -2,7 +2,8 @@ concrete LangEus of Lang =
|
||||
GrammarEus,
|
||||
LexiconEus,
|
||||
ConstructionEus
|
||||
,DocumentationEus --# notpresent
|
||||
|
||||
** {
|
||||
|
||||
} ;
|
||||
} ;
|
||||
|
||||
@@ -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) ;
|
||||
}
|
||||
|
||||
@@ -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 } ;
|
||||
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
@@ -42,7 +42,10 @@ 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) ;
|
||||
mkN2 : Str -> Case -> N2 = \s,cas -> lin N2 (mkNoun2 s cas) ;
|
||||
@@ -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} ;
|
||||
|
||||
--.
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
concrete AdjectiveBel of Adjective = CatBel ** open ResBel in {
|
||||
lin
|
||||
PositA a = a ;
|
||||
ComparA a np = {s = \\c,gn => "больш" ++ a.s ! c ! gn ++ "за" ++ np.s ! Acc} ;
|
||||
ComplA2 a np = {s = \\c,gn => a.s ! c ! gn ++ prepNP a.c2 np} ;
|
||||
ReflA2 a = {s = \\c,gn => a.s ! c ! gn ++ "да сябе"} ;
|
||||
UseA2 a = a ;
|
||||
UseComparA a = {s = \\c,gn => "больш" ++ a.s ! c ! gn} ;
|
||||
CAdvAP cadv ap np = {s = \\c,gn => cadv.s ++ ap.s ! c ! gn ++ cadv.p ++ np.s ! Nom} ;
|
||||
AdjOrd ord = ord ;
|
||||
SentAP ap sc = {s = \\c,gn => ap.s ! c ! gn ++ sc.s} ;
|
||||
AdAP ada ap = {s = \\c,gn => ada.s ++ ap.s ! c ! gn} ;
|
||||
AdvAP ap adv = {s = \\c,gn => ap.s ! c ! gn ++ adv.s} ;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
concrete AdverbBel of Adverb = CatBel ** open ResBel in {
|
||||
|
||||
lin
|
||||
PositAdvAdj a = {s = a.s ! Nom ! GSg Neuter} ;
|
||||
PrepNP prep np = {s = prepNP prep np} ;
|
||||
ComparAdvAdj cadv a np = {s = cadv.s ++ a.s ! Nom ! GSg Neuter ++ cadv.p ++ np.s ! Nom} ;
|
||||
ComparAdvAdjS cadv a s = {s = cadv.s ++ a.s ! Nom ! GSg Neuter ++ cadv.p ++ s.s} ;
|
||||
AdAdv ada adv = {s = ada.s ++ adv.s} ;
|
||||
PositAdAAdj a = {s = a.s ! Nom ! GSg Neuter} ;
|
||||
SubjS subj s = {s = subj.s ++ s.s} ;
|
||||
AdnCAdv cadv = {s = cadv.s} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
concrete AllBel of AllBelAbs =
|
||||
LangBel,
|
||||
ExtendBel
|
||||
**
|
||||
{} ;
|
||||
@@ -0,0 +1,4 @@
|
||||
abstract AllBelAbs =
|
||||
Lang,
|
||||
Extend
|
||||
** {}
|
||||
@@ -0,0 +1,68 @@
|
||||
concrete CatBel of Cat = CommonX ** open ResBel, (R = ParamX) in {
|
||||
|
||||
lincat
|
||||
S = {s : Str} ;
|
||||
QS = {s : Str} ;
|
||||
RS = {s : Str} ;
|
||||
Cl = {s : R.Tense => R.Polarity => Str} ;
|
||||
ClSlash = {s : R.Tense => R.Polarity => Str; c : Compl} ;
|
||||
SSlash = {s : Str; c : Compl} ;
|
||||
Imp = {s : R.Polarity => Number => Str} ;
|
||||
|
||||
QCl = {s : R.Tense => R.Polarity => Str} ;
|
||||
IP = NPhrase ;
|
||||
IComp = {s : Str} ;
|
||||
IDet = {s : Case => Gender => Str; n : Number} ;
|
||||
IQuant = {s : Case => Gender => Number => Str} ;
|
||||
|
||||
RCl = {s : R.Tense => R.Polarity => Str} ;
|
||||
RP = {s : Str} ;
|
||||
|
||||
VP = VPhrase ;
|
||||
Comp = {s : Agr => Str} ;
|
||||
VPSlash = VSlash ;
|
||||
|
||||
N = Noun ;
|
||||
N2 = Noun ** {c2 : Compl} ;
|
||||
N3 = Noun ** {c2,c3 : Compl} ;
|
||||
CN = CommonNoun ;
|
||||
NP = NPhrase ;
|
||||
Pron = {s: Case => Str; a: Agr} ;
|
||||
Det = {s : Case => Gender => Str; n : Number} ;
|
||||
Predet = {s : Case => Gender => Number => Str} ;
|
||||
Quant = {s : Case => Gender => Number => Str} ;
|
||||
Num = {s : Case => Gender => Str; n : Number} ;
|
||||
Card = {s : Str; n : Number} ;
|
||||
ACard = {s : Str; n : Number} ;
|
||||
Ord = Adj ;
|
||||
DAP = {s : Case => Gender => Str; n : Number} ;
|
||||
|
||||
Numeral = {s : Str} ;
|
||||
Digits = {s : Str} ;
|
||||
Decimal = {s : Str} ;
|
||||
|
||||
Conj = {s : Str; n : Number} ;
|
||||
Subj = {s : Str} ;
|
||||
Prep = Compl ;
|
||||
|
||||
V = Verb ;
|
||||
VV,VS,VQ,VA = Verb ;
|
||||
V2 = Verb ** {c2 : Compl} ;
|
||||
V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
||||
A = Adj ;
|
||||
A2 = Adj ** {c2 : Compl} ;
|
||||
AP = AdjPhrase ;
|
||||
|
||||
LN = {s : Case => Str; g : Gender; n : Number} ;
|
||||
PN = {s : Case => Str; g : Gender; n : Number} ;
|
||||
GN = {s : Str; g : Gender} ;
|
||||
SN = {s : Str} ;
|
||||
|
||||
linref
|
||||
V,VV,V2,V3,V2A,V2S,V2Q,V2V = \v -> v.infinitive ;
|
||||
N,N2,N3 = \n -> n.s ! Nom ! Sg ;
|
||||
A,A2,AP,Ord = \a -> a.s ! Nom ! GSg Masc ;
|
||||
NP,IP = \np -> np.s ! Nom ;
|
||||
S,QS,RS = \s -> s.s ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
concrete ConjunctionBel of Conjunction = CatBel ** open ResBel in {
|
||||
|
||||
lin
|
||||
ConjS conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||
ConjRS conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||
ConjAP conj xs = {s = \\c,gn => xs.s1 ! c ! gn ++ conj.s ++ xs.s2 ! c ! gn} ;
|
||||
ConjNP conj xs = {
|
||||
s = \\c => xs.s1 ! c ++ conj.s ++ xs.s2 ! c ;
|
||||
a = {g=Masc; n=conj.n; p=P3}
|
||||
} ;
|
||||
ConjAdv conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||
ConjAdV conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||
ConjIAdv conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||
ConjCN conj xs = {
|
||||
s = \\c,n => xs.s1 ! c ! n ++ conj.s ++ xs.s2 ! c ! n ;
|
||||
voc = xs.voc ;
|
||||
g = xs.g
|
||||
} ;
|
||||
ConjDet conj xs = {
|
||||
s = \\c,g => xs.s1 ! c ! g ++ conj.s ++ xs.s2 ! c ! g ;
|
||||
n = conj.n
|
||||
} ;
|
||||
|
||||
BaseS x y = {s1 = x.s; s2 = y.s} ;
|
||||
ConsS x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
|
||||
BaseRS x y = {s1 = x.s; s2 = y.s} ;
|
||||
ConsRS x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
|
||||
BaseAdv x y = {s1 = x.s; s2 = y.s} ;
|
||||
ConsAdv x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
|
||||
BaseAdV x y = {s1 = x.s; s2 = y.s} ;
|
||||
ConsAdV x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
|
||||
BaseIAdv x y = {s1 = x.s; s2 = y.s} ;
|
||||
ConsIAdv x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
|
||||
BaseNP x y = {
|
||||
s1 = x.s ;
|
||||
s2 = y.s
|
||||
} ;
|
||||
ConsNP x xs = {
|
||||
s1 = \\c => x.s ! c ++ "," ++ xs.s1 ! c ;
|
||||
s2 = xs.s2
|
||||
} ;
|
||||
BaseAP x y = {s1 = x.s; s2 = y.s} ;
|
||||
ConsAP x xs = {s1 = \\c,gn => x.s ! c ! gn ++ "," ++ xs.s1 ! c ! gn; s2 = xs.s2} ;
|
||||
BaseCN x y = {s1 = x.s; s2 = y.s; voc = x.voc ++ "," ++ y.voc; g = x.g} ;
|
||||
ConsCN x xs = {s1 = \\c,n => x.s ! c ! n ++ "," ++ xs.s1 ! c ! n; s2 = xs.s2; voc = x.voc ++ "," ++ xs.voc; g = xs.g} ;
|
||||
BaseDAP x y = {s1 = x.s; s2 = y.s} ;
|
||||
ConsDAP x xs = {s1 = \\c,g => x.s ! c ! g ++ "," ++ xs.s1 ! c ! g; s2 = xs.s2} ;
|
||||
|
||||
lincat
|
||||
[S] = {s1,s2 : Str} ;
|
||||
[RS] = {s1,s2 : Str} ;
|
||||
[Adv] = {s1,s2 : Str} ;
|
||||
[AdV] = {s1,s2 : Str} ;
|
||||
[IAdv] = {s1,s2 : Str} ;
|
||||
[NP] = {s1,s2 : Case => Str} ;
|
||||
[AP] = {s1,s2 : Case => GenNum => Str} ;
|
||||
[CN] = {s1,s2 : Case => Number => Str; voc : Str; g : Gender} ;
|
||||
[DAP] = {s1,s2 : Case => Gender => Str} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
concrete ConstructionBel of Construction = CatBel ** open ResBel, ParadigmsBel, (R = ParamX) in {
|
||||
|
||||
lincat
|
||||
Timeunit, Hour, Weekday, Month, Monthday, Year, Language = {s : Str} ;
|
||||
|
||||
oper
|
||||
adjVP : Adj -> VPhrase = \a -> {
|
||||
s = \\t,p,agr => copula t p agr ++ a.s ! Nom ! genNum agr.g agr.n ;
|
||||
inf = "быць" ++ a.s ! Nom ! GSg Masc ;
|
||||
imp = \\p,_ => neg p ++ "будзь" ++ a.s ! Nom ! GSg Masc
|
||||
} ;
|
||||
|
||||
lin
|
||||
hungry_VP = adjVP (mkA "галодны") ;
|
||||
thirsty_VP = adjVP (mkA "спрагнены") ;
|
||||
tired_VP = adjVP (mkA "стомлены") ;
|
||||
scared_VP = adjVP (mkA "спалоханы") ;
|
||||
ill_VP = adjVP (mkA "хворы") ;
|
||||
ready_VP = adjVP (mkA "гатовы") ;
|
||||
has_age_VP card = {
|
||||
s = \\t,p,a => copula t p a ++ card.s ++ "гадоў" ;
|
||||
inf = card.s ++ "гадоў" ;
|
||||
imp = \\p,_ => neg p ++ card.s ++ "гадоў"
|
||||
} ;
|
||||
|
||||
have_name_Cl np name = {s = \\t,p => np.s ! Gen ++ "імя" ++ name.s ! Nom} ;
|
||||
married_Cl np spouse = {s = \\t,p => np.s ! Nom ++ copula t p np.a ++ "жанаты" ++ "з" ++ spouse.s ! Instr} ;
|
||||
what_name_QCl np = {s = \\t,p => "як" ++ "завуць" ++ np.s ! Acc} ;
|
||||
how_old_QCl np = {s = \\t,p => "колькі гадоў" ++ np.s ! Dat} ;
|
||||
how_far_QCl np = {s = \\t,p => "як далёка" ++ np.s ! Nom} ;
|
||||
|
||||
weather_adjCl ap = {s = \\t,p => copula t p defaultAgr ++ ap.s ! Nom ! GSg Neuter} ;
|
||||
is_right_VP = adjVP (mkA "правы") ;
|
||||
is_wrong_VP = adjVP (mkA "няправы") ;
|
||||
|
||||
n_units_AP card cn a = {s = \\c,gn => card.s ++ cn.s ! Gen ! Pl ++ a.s ! c ! gn} ;
|
||||
n_units_of_NP card cn np = mkSimpleNP (card.s ++ cn.s ! Gen ! Pl ++ np.s ! Gen) Neuter Sg P3 ;
|
||||
n_unit_CN card unit cn = nounFromStr (card.s ++ unit.s ! Nom ! Pl ++ cn.s ! Nom ! Sg) cn.g ;
|
||||
|
||||
bottle_of_CN np = nounFromStr ("бутэлька" ++ np.s ! Gen) Fem ;
|
||||
cup_of_CN np = nounFromStr ("кубак" ++ np.s ! Gen) Masc ;
|
||||
glass_of_CN np = nounFromStr ("шклянка" ++ np.s ! Gen) Fem ;
|
||||
few_X_short_of_Y np x y = {s = np.s ! Nom ++ "бракуе" ++ x.s ! Gen ! Pl ++ "да" ++ y.s ! Gen ! Sg} ;
|
||||
|
||||
timeunitAdv card unit = {s = card.s ++ unit.s} ;
|
||||
timeunitRange c1 c2 unit = {s = c1.s ++ "да" ++ c2.s ++ unit.s} ;
|
||||
oneHour = {s = "1"} ; twoHour = {s = "2"} ; threeHour = {s = "3"} ; fourHour = {s = "4"} ;
|
||||
fiveHour = {s = "5"} ; sixHour = {s = "6"} ; sevenHour = {s = "7"} ; eightHour = {s = "8"} ;
|
||||
nineHour = {s = "9"} ; tenHour = {s = "10"} ; elevenHour = {s = "11"} ; twelveHour = {s = "12"} ;
|
||||
thirteenHour = {s = "13"} ; fourteenHour = {s = "14"} ; fifteenHour = {s = "15"} ; sixteenHour = {s = "16"} ;
|
||||
seventeenHour = {s = "17"} ; eighteenHour = {s = "18"} ; nineteenHour = {s = "19"} ; twentyHour = {s = "20"} ;
|
||||
twentyOneHour = {s = "21"} ; twentyTwoHour = {s = "22"} ; twentyThreeHour = {s = "23"} ; twentyFourHour = {s = "24"} ;
|
||||
timeHour h = {s = "а" ++ h.s} ;
|
||||
timeHourMinute h m = {s = "а" ++ h.s ++ ":" ++ m.s} ;
|
||||
|
||||
weekdayPunctualAdv d = {s = "у" ++ d.s} ;
|
||||
weekdayHabitualAdv d = {s = "па" ++ d.s} ;
|
||||
weekdayLastAdv d = {s = "мінулай" ++ d.s} ;
|
||||
weekdayNextAdv d = {s = "наступнай" ++ d.s} ;
|
||||
monthAdv m = {s = "у" ++ m.s} ;
|
||||
yearAdv y = {s = "у" ++ y.s} ;
|
||||
dayMonthAdv d m = {s = d.s ++ m.s} ;
|
||||
monthYearAdv m y = {s = m.s ++ y.s} ;
|
||||
dayMonthYearAdv d m y = {s = d.s ++ m.s ++ y.s} ;
|
||||
intYear i = {s = i.s} ;
|
||||
intMonthday i = {s = i.s} ;
|
||||
|
||||
InLanguage l = {s = "па-" ++ l.s} ;
|
||||
weekdayN d = nounFromStr d.s Masc ;
|
||||
monthN m = nounFromStr m.s Masc ;
|
||||
weekdayPN d = mkPN d.s ;
|
||||
monthPN m = mkPN m.s ;
|
||||
languageNP l = mkSimpleNP l.s Neuter Sg P3 ;
|
||||
languageCN l = nounFromStr l.s Neuter ;
|
||||
|
||||
second_Timeunit = {s = "секунд"} ;
|
||||
minute_Timeunit = {s = "хвілін"} ;
|
||||
hour_Timeunit = {s = "гадзін"} ;
|
||||
day_Timeunit = {s = "дзён"} ;
|
||||
week_Timeunit = {s = "тыдняў"} ;
|
||||
month_Timeunit = {s = "месяцаў"} ;
|
||||
year_Timeunit = {s = "гадоў"} ;
|
||||
|
||||
monday_Weekday = {s = "панядзелак"} ;
|
||||
tuesday_Weekday = {s = "аўторак"} ;
|
||||
wednesday_Weekday = {s = "серада"} ;
|
||||
thursday_Weekday = {s = "чацвер"} ;
|
||||
friday_Weekday = {s = "пятніца"} ;
|
||||
saturday_Weekday = {s = "субота"} ;
|
||||
sunday_Weekday = {s = "нядзеля"} ;
|
||||
|
||||
january_Month = {s = "студзень"} ;
|
||||
february_Month = {s = "люты"} ;
|
||||
march_Month = {s = "сакавік"} ;
|
||||
april_Month = {s = "красавік"} ;
|
||||
may_Month = {s = "май"} ;
|
||||
june_Month = {s = "чэрвень"} ;
|
||||
july_Month = {s = "ліпень"} ;
|
||||
august_Month = {s = "жнівень"} ;
|
||||
september_Month = {s = "верасень"} ;
|
||||
october_Month = {s = "кастрычнік"} ;
|
||||
november_Month = {s = "лістапад"} ;
|
||||
december_Month = {s = "снежань"} ;
|
||||
|
||||
afrikaans_Language = {s = "афрыкаанс"} ;
|
||||
amharic_Language = {s = "амхарску"} ;
|
||||
arabic_Language = {s = "арабску"} ;
|
||||
bulgarian_Language = {s = "балгарску"} ;
|
||||
catalan_Language = {s = "каталанску"} ;
|
||||
chinese_Language = {s = "кітайску"} ;
|
||||
danish_Language = {s = "дацку"} ;
|
||||
dutch_Language = {s = "нідэрландску"} ;
|
||||
english_Language = {s = "англійску"} ;
|
||||
estonian_Language = {s = "эстонску"} ;
|
||||
finnish_Language = {s = "фінску"} ;
|
||||
french_Language = {s = "французску"} ;
|
||||
german_Language = {s = "нямецку"} ;
|
||||
greek_Language = {s = "грэцку"} ;
|
||||
hebrew_Language = {s = "іўрыце"} ;
|
||||
hindi_Language = {s = "хіндзі"} ;
|
||||
japanese_Language = {s = "японску"} ;
|
||||
italian_Language = {s = "італьянску"} ;
|
||||
latin_Language = {s = "лацінску"} ;
|
||||
latvian_Language = {s = "латышску"} ;
|
||||
maltese_Language = {s = "мальтыйску"} ;
|
||||
nepali_Language = {s = "непальску"} ;
|
||||
norwegian_Language = {s = "нарвежску"} ;
|
||||
persian_Language = {s = "персідску"} ;
|
||||
polish_Language = {s = "польску"} ;
|
||||
punjabi_Language = {s = "панджабі"} ;
|
||||
romanian_Language = {s = "румынску"} ;
|
||||
russian_Language = {s = "руску"} ;
|
||||
sindhi_Language = {s = "сіндхі"} ;
|
||||
spanish_Language = {s = "іспанску"} ;
|
||||
swahili_Language = {s = "суахілі"} ;
|
||||
swedish_Language = {s = "шведску"} ;
|
||||
thai_Language = {s = "тайску"} ;
|
||||
turkish_Language = {s = "турэцку"} ;
|
||||
urdu_Language = {s = "урду"} ;
|
||||
|
||||
}
|
||||
@@ -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} ;
|
||||
}
|
||||
@@ -0,0 +1,244 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
concrete ExtendBel of Extend = CatBel ** open ResBel, (R = ParamX), ParadigmsBel in {
|
||||
|
||||
lincat
|
||||
VPS = {s : Agr => Str} ;
|
||||
[VPS] = {s1,s2 : Agr => Str} ;
|
||||
VPI = {s : Str} ;
|
||||
[VPI] = {s1,s2 : Str} ;
|
||||
VPS2 = {s : Agr => Str; c : Compl; post : Str} ;
|
||||
[VPS2] = {s1,s2 : Agr => Str; c : Compl; post : Str} ;
|
||||
VPI2 = {s : Str; c : Compl; post : Str} ;
|
||||
[VPI2] = {s1,s2 : Str; c : Compl; post : Str} ;
|
||||
[Comp] = {s1,s2 : Agr => Str} ;
|
||||
[Imp] = {s1,s2 : R.Polarity => Number => Str} ;
|
||||
RNP = {s : Case => Str} ;
|
||||
RNPList = {s1,s2 : Case => Str} ;
|
||||
X = {s : Str} ;
|
||||
|
||||
lin
|
||||
iFem_Pron = mkPron "я" "мяне" "мне" "мяне" "мне" "мной" Fem Sg P1 ;
|
||||
youFem_Pron = mkPron "ты" "цябе" "табе" "цябе" "табе" "табой" Fem Sg P2 ;
|
||||
weFem_Pron = mkPron "мы" "нас" "нам" "нас" "нас" "намі" Fem Pl P1 ;
|
||||
youPlFem_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
|
||||
theyFem_Pron = mkPron "яны" "іх" "ім" "іх" "іх" "імі" Fem Pl P3 ;
|
||||
theyNeutr_Pron = mkPron "яны" "іх" "ім" "іх" "іх" "імі" Neuter Pl P3 ;
|
||||
youPolFem_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
|
||||
youPolPl_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
|
||||
youPolPlFem_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
|
||||
|
||||
GenNP np = {s = \\_,_,_ => np.s ! Gen} ;
|
||||
GenIP ip = {s = \\_,_,_ => ip.s ! Gen} ;
|
||||
GenRP num cn = {s = cn.s ! Gen ! num.n ++ "якога"} ;
|
||||
GenModNP num np cn = {
|
||||
s = \\c => np.s ! Gen ++ cn.s ! c ! num.n ;
|
||||
a = {g=cn.g; n=num.n; p=P3}
|
||||
} ;
|
||||
GenModIP num ip cn = {
|
||||
s = \\c => ip.s ! Gen ++ cn.s ! c ! num.n ;
|
||||
a = {g=cn.g; n=num.n; p=P3}
|
||||
} ;
|
||||
|
||||
CompBareCN cn = {s = \\a => cn.s ! Nom ! a.n} ;
|
||||
PiedPipingQuestSlash ip cl = {s = \\t,p => cl.c.s ++ ip.s ! cl.c.c ++ cl.s ! t ! p} ;
|
||||
PiedPipingRelSlash rp cl = {s = \\t,p => rp.s ++ cl.s ! t ! p} ;
|
||||
StrandQuestSlash ip cl = {s = \\t,p => cl.c.s ++ ip.s ! cl.c.c ++ cl.s ! t ! p} ;
|
||||
StrandRelSlash rp cl = {s = \\t,p => rp.s ++ cl.s ! t ! p} ;
|
||||
EmptyRelSlash cl = {s = \\t,p => "што" ++ cl.s ! t ! p} ;
|
||||
|
||||
MkVPS temp pol vp = {s = \\a => vp.s ! temp.t ! pol.p ! a} ;
|
||||
ConjVPS conj xs = {s = \\a => xs.s1 ! a ++ conj.s ++ xs.s2 ! a} ;
|
||||
PredVPS np vps = {s = np.s ! Nom ++ vps.s ! np.a} ;
|
||||
SQuestVPS np vps = {s = np.s ! Nom ++ vps.s ! np.a} ;
|
||||
QuestVPS ip vps = {s = ip.s ! Nom ++ vps.s ! ip.a} ;
|
||||
RelVPS rp vps = {s = rp.s ++ vps.s ! defaultAgr} ;
|
||||
BaseVPS x y = {s1 = x.s; s2 = y.s} ;
|
||||
ConsVPS x xs = {s1 = \\a => x.s ! a ++ "," ++ xs.s1 ! a; s2 = xs.s2} ;
|
||||
|
||||
ExistS temp pol np = {s = copula temp.t pol.p np.a ++ np.s ! Nom} ;
|
||||
ExistNPQS temp pol np = {s = copula temp.t pol.p np.a ++ np.s ! Nom} ;
|
||||
ExistIPQS temp pol ip = {s = copula temp.t pol.p ip.a ++ ip.s ! Nom} ;
|
||||
|
||||
MkVPI vp = {s = vp.inf} ;
|
||||
ConjVPI conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
|
||||
ComplVPIVV vv vpi = {
|
||||
s = \\t,p,a => finiteVerb vv t p a ++ vpi.s ;
|
||||
inf = vv.infinitive ++ vpi.s ;
|
||||
imp = \\p,n => neg p ++ vv.imperative ! n ++ vpi.s
|
||||
} ;
|
||||
BaseVPI x y = {s1 = x.s; s2 = y.s} ;
|
||||
ConsVPI x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
|
||||
|
||||
MkVPS2 temp pol vp = {s = \\a => vp.s ! temp.t ! pol.p ! a; c = vp.c; post = vp.post} ;
|
||||
ConjVPS2 conj xs = {s = \\a => xs.s1 ! a ++ conj.s ++ xs.s2 ! a; c = xs.c; post = xs.post} ;
|
||||
ComplVPS2 vps np = {s = \\a => vps.s ! a ++ prepNP vps.c np ++ vps.post} ;
|
||||
ReflVPS2 vps rnp = {s = \\a => vps.s ! a ++ rnp.s ! vps.c.c ++ vps.post} ;
|
||||
BaseVPS2 x y = {s1 = x.s; s2 = y.s; c = x.c; post = x.post ++ y.post} ;
|
||||
ConsVPS2 x xs = {s1 = \\a => x.s ! a ++ "," ++ xs.s1 ! a; s2 = xs.s2; c = xs.c; post = x.post ++ xs.post} ;
|
||||
|
||||
MkVPI2 vp = {s = vp.inf; c = vp.c; post = vp.post} ;
|
||||
ConjVPI2 conj xs = {s = xs.s1 ++ conj.s ++ xs.s2; c = xs.c; post = xs.post} ;
|
||||
ComplVPI2 vpi np = {s = vpi.s ++ prepNP vpi.c np ++ vpi.post} ;
|
||||
BaseVPI2 x y = {s1 = x.s; s2 = y.s; c = x.c; post = x.post ++ y.post} ;
|
||||
ConsVPI2 x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2; c = xs.c; post = x.post ++ xs.post} ;
|
||||
|
||||
ConjComp conj xs = {s = \\a => xs.s1 ! a ++ conj.s ++ xs.s2 ! a} ;
|
||||
BaseComp x y = {s1 = x.s; s2 = y.s} ;
|
||||
ConsComp x xs = {s1 = \\a => x.s ! a ++ "," ++ xs.s1 ! a; s2 = xs.s2} ;
|
||||
ConjImp conj xs = {s = \\p,n => xs.s1 ! p ! n ++ conj.s ++ xs.s2 ! p ! n} ;
|
||||
BaseImp x y = {s1 = x.s; s2 = y.s} ;
|
||||
ConsImp x xs = {s1 = \\p,n => x.s ! p ! n ++ "," ++ xs.s1 ! p ! n; s2 = xs.s2} ;
|
||||
|
||||
ProDrop pron = pron ;
|
||||
ICompAP ap = {s = ap.s ! Nom ! GSg Masc} ;
|
||||
IAdvAdv adv = {s = adv.s} ;
|
||||
CompIQuant iq = {s = iq.s ! Nom ! Masc ! Sg} ;
|
||||
PrepCN prep cn = {s = prep.s ++ cn.s ! prep.c ! Sg} ;
|
||||
|
||||
FocusObj np ss = {s = np.s ! Acc ++ ss.s} ;
|
||||
FocusAdv adv s = {s = adv.s ++ s.s} ;
|
||||
FocusAdV adv s = {s = adv.s ++ s.s} ;
|
||||
FocusAP ap np = {s = ap.s ! Nom ! genNum np.a.g np.a.n ++ np.s ! Nom} ;
|
||||
|
||||
PresPartAP vp = adjFromStr vp.inf ;
|
||||
EmbedPresPart vp = {s = vp.inf} ;
|
||||
PastPartAP vp = adjFromStr vp.inf ;
|
||||
PastPartAgentAP vp np = adjFromStr (vp.inf ++ prepNP (mkPrep "кім" instrumental) np) ;
|
||||
PassVPSlash vp = {
|
||||
s = \\t,p,a => copula t p a ++ vp.inf ;
|
||||
inf = "быць" ++ vp.inf ;
|
||||
imp = \\p,_ => neg p ++ "будзь" ++ vp.inf
|
||||
} ;
|
||||
PassAgentVPSlash vp np = addAdvVP (PassVPSlash vp) (prepNP (mkPrep "кім" instrumental) np) ;
|
||||
NominalizeVPSlashNP vp np = mkSimpleNP (vp.inf ++ prepNP vp.c np) Neuter Sg P3 ;
|
||||
ProgrVPSlash vp = vp ;
|
||||
A2VPSlash a = {
|
||||
s = \\t,p,agr => copula t p agr ++ a.s ! Nom ! genNum agr.g agr.n ;
|
||||
inf = a.s ! Nom ! GSg Masc ;
|
||||
c = a.c2 ;
|
||||
imp = \\p,_ => neg p ++ a.s ! Nom ! GSg Masc ;
|
||||
post = []
|
||||
} ;
|
||||
N2VPSlash n = {
|
||||
s = \\t,p,agr => copula t p agr ++ n.s ! Nom ! agr.n ;
|
||||
inf = n.s ! Nom ! Sg ;
|
||||
c = n.c2 ;
|
||||
imp = \\p,_ => neg p ++ n.s ! Nom ! Sg ;
|
||||
post = []
|
||||
} ;
|
||||
ExistsNP np = {s = \\t,p => copula t p np.a ++ np.s ! Nom} ;
|
||||
ExistCN cn = {s = \\t,p => copula t p {g=cn.g; n=Sg; p=P3} ++ cn.s ! Nom ! Sg} ;
|
||||
ExistMassCN cn = ExistCN cn ;
|
||||
ExistPluralCN cn = {s = \\t,p => copula t p {g=cn.g; n=Pl; p=P3} ++ cn.s ! Nom ! Pl} ;
|
||||
AdvIsNP adv np = {s = \\t,p => adv.s ++ copula t p np.a ++ np.s ! Nom} ;
|
||||
AdvIsNPAP adv np ap = {s = \\t,p => adv.s ++ copula t p np.a ++ np.s ! Nom ++ ap.s ! Nom ! genNum np.a.g np.a.n} ;
|
||||
PurposeVP vp = {s = "каб" ++ vp.inf} ;
|
||||
ComplBareVS vs s = {
|
||||
s = \\t,p,a => finiteVerb vs t p a ++ s.s ;
|
||||
inf = vs.infinitive ++ s.s ;
|
||||
imp = \\p,n => neg p ++ vs.imperative ! n ++ s.s
|
||||
} ;
|
||||
SlashBareV2S v s = {
|
||||
s = \\t,p,a => finiteVerb v t p a ;
|
||||
inf = v.infinitive ++ s.s ;
|
||||
c = v.c2 ;
|
||||
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||
post = s.s
|
||||
} ;
|
||||
ComplDirectVS vs utt = {
|
||||
s = \\t,p,a => finiteVerb vs t p a ++ utt.s ;
|
||||
inf = vs.infinitive ++ utt.s ;
|
||||
imp = \\p,n => neg p ++ vs.imperative ! n ++ utt.s
|
||||
} ;
|
||||
ComplDirectVQ vq utt = {
|
||||
s = \\t,p,a => finiteVerb vq t p a ++ utt.s ;
|
||||
inf = vq.infinitive ++ utt.s ;
|
||||
imp = \\p,n => neg p ++ vq.imperative ! n ++ utt.s
|
||||
} ;
|
||||
FrontComplDirectVS np vs utt = {s = \\t,p => utt.s ++ np.s ! Nom ++ finiteVerb vs t p np.a} ;
|
||||
FrontComplDirectVQ np vq utt = {s = \\t,p => utt.s ++ np.s ! Nom ++ finiteVerb vq t p np.a} ;
|
||||
PredAPVP ap vp = {s = \\t,p => copula t p defaultAgr ++ ap.s ! Nom ! GSg Neuter ++ vp.inf} ;
|
||||
AdjAsCN ap = nounFromStr (ap.s ! Nom ! GSg Masc) Masc ;
|
||||
AdjAsNP ap = mkSimpleNP (ap.s ! Nom ! GSg Masc) Masc Sg P3 ;
|
||||
PredIAdvVP iadv vp = {s = \\t,p => iadv.s ++ vp.inf} ;
|
||||
EmbedSSlash ss = {s = ss.s} ;
|
||||
|
||||
ReflRNP vp rnp = {
|
||||
s = \\t,p,a => vp.s ! t ! p ! a ++ rnp.s ! vp.c.c ++ vp.post ;
|
||||
inf = vp.inf ++ rnp.s ! vp.c.c ;
|
||||
imp = \\p,n => vp.imp ! p ! n ++ rnp.s ! vp.c.c ++ vp.post
|
||||
} ;
|
||||
ReflPron = {s = caseTable "сябе"} ;
|
||||
ReflPoss num cn = {s = \\c => "свой" ++ cn.s ! c ! num.n} ;
|
||||
PredetRNP pred rnp = {s = \\c => pred.s ! c ! Masc ! Sg ++ rnp.s ! c} ;
|
||||
AdvRNP np prep rnp = {s = \\c => np.s ! c ++ prep.s ++ rnp.s ! prep.c} ;
|
||||
AdvRVP vp prep rnp = addAdvVP vp (prep.s ++ rnp.s ! prep.c) ;
|
||||
AdvRAP ap prep rnp = {s = \\c,gn => ap.s ! c ! gn ++ prep.s ++ rnp.s ! prep.c} ;
|
||||
ReflA2RNP a rnp = {s = \\c,gn => a.s ! c ! gn ++ a.c2.s ++ rnp.s ! a.c2.c} ;
|
||||
PossPronRNP pron num cn rnp = {
|
||||
s = \\c => pron.s ! Gen ++ cn.s ! c ! num.n ++ rnp.s ! Gen ;
|
||||
a = {g=cn.g; n=num.n; p=P3}
|
||||
} ;
|
||||
ConjRNP conj xs = {s = \\c => xs.s1 ! c ++ conj.s ++ xs.s2 ! c} ;
|
||||
Base_rr_RNP x y = {s1 = x.s; s2 = y.s} ;
|
||||
Base_nr_RNP x y = {s1 = x.s; s2 = y.s} ;
|
||||
Base_rn_RNP x y = {s1 = x.s; s2 = y.s} ;
|
||||
Cons_rr_RNP x xs = {s1 = \\c => x.s ! c ++ "," ++ xs.s1 ! c; s2 = xs.s2} ;
|
||||
Cons_nr_RNP x xs = {s1 = \\c => x.s ! c ++ "," ++ xs.s1 ! c; s2 = xs.s2} ;
|
||||
ReflPossPron = mkQuant "свой" ;
|
||||
ComplGenVV vv ant pol vp = {
|
||||
s = \\t,p,a => finiteVerb vv t p a ++ neg pol.p ++ vp.inf ;
|
||||
inf = vv.infinitive ++ neg pol.p ++ vp.inf ;
|
||||
imp = \\p,n => neg p ++ vv.imperative ! n ++ neg pol.p ++ vp.inf
|
||||
} ;
|
||||
CompoundN n1 n2 = {
|
||||
s = \\c,n => n1.s ! Nom ! Sg ++ n2.s ! c ! n ;
|
||||
voc = n1.voc ++ n2.voc ;
|
||||
g = n2.g
|
||||
} ;
|
||||
CompoundAP n a = {s = \\c,gn => n.s ! Nom ! Sg ++ a.s ! c ! gn} ;
|
||||
GerundCN vp = nounFromStr vp.inf Neuter ;
|
||||
GerundNP vp = mkSimpleNP vp.inf Neuter Sg P3 ;
|
||||
GerundAdv vp = {s = vp.inf} ;
|
||||
WithoutVP vp = {s = "без" ++ vp.inf} ;
|
||||
ByVP vp = {s = "праз" ++ vp.inf} ;
|
||||
InOrderToVP vp = {s = "каб" ++ vp.inf} ;
|
||||
ApposNP np app = {s = \\c => np.s ! c ++ app.s ! Nom; a = np.a} ;
|
||||
AdAdV ada adv = {s = ada.s ++ adv.s} ;
|
||||
UttAdV adv = {s = adv.s} ;
|
||||
PositAdVAdj a = {s = a.s ! Nom ! GSg Neuter} ;
|
||||
CompS s = {s = \\_ => s.s} ;
|
||||
CompQS qs = {s = \\_ => qs.s} ;
|
||||
CompVP ant pol vp = {s = \\_ => neg pol.p ++ vp.inf} ;
|
||||
UncontractedNeg = {s = []; p = R.Neg} ;
|
||||
UttVPShort vp = {s = vp.inf} ;
|
||||
ComplSlashPartLast vp np = {
|
||||
s = \\t,p,a => vp.s ! t ! p ! a ++ prepNP vp.c np ++ vp.post ;
|
||||
inf = vp.inf ++ prepNP vp.c np ;
|
||||
imp = \\p,n => vp.imp ! p ! n ++ prepNP vp.c np ++ vp.post
|
||||
} ;
|
||||
DetNPMasc det = {s = \\c => det.s ! c ! Masc; a = {g=Masc; n=det.n; p=P3}} ;
|
||||
DetNPFem det = {s = \\c => det.s ! c ! Fem; a = {g=Fem; n=det.n; p=P3}} ;
|
||||
UseComp_estar comp = UseComp_ser comp ;
|
||||
UseComp_ser comp = {
|
||||
s = \\t,p,a => copula t p a ++ comp.s ! a ;
|
||||
inf = "быць" ++ comp.s ! defaultAgr ;
|
||||
imp = \\p,_ => neg p ++ "будзь" ++ comp.s ! defaultAgr
|
||||
} ;
|
||||
SubjRelNP np rs = {s = \\c => np.s ! c ++ rs.s; a = np.a} ;
|
||||
UttAccNP np = {s = np.s ! Acc} ;
|
||||
UttDatNP np = {s = np.s ! Dat} ;
|
||||
UttAccIP ip = {s = ip.s ! Acc} ;
|
||||
UttDatIP ip = {s = ip.s ! Dat} ;
|
||||
UseDAP dap = {s = \\c => dap.s ! c ! Masc; a = {g=Neuter; n=dap.n; p=P3}} ;
|
||||
UseDAPMasc dap = {s = \\c => dap.s ! c ! Masc; a = {g=Masc; n=dap.n; p=P3}} ;
|
||||
UseDAPFem dap = {s = \\c => dap.s ! c ! Fem; a = {g=Fem; n=dap.n; p=P3}} ;
|
||||
CardCNCard card cn = {s = card.s ++ cn.s ! Gen ! Pl; n = Pl} ;
|
||||
TPastSimple = {s = []; t = R.Past} ;
|
||||
SubjunctRelCN cn rs = {
|
||||
s = \\c,n => cn.s ! c ! n ++ rs.s ;
|
||||
voc = cn.voc ;
|
||||
g = cn.g
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
concrete GrammarBel of Grammar =
|
||||
TenseX,
|
||||
PhraseBel,
|
||||
NounBel,
|
||||
AdjectiveBel,
|
||||
AdverbBel,
|
||||
VerbBel,
|
||||
SentenceBel,
|
||||
QuestionBel,
|
||||
RelativeBel,
|
||||
ConjunctionBel,
|
||||
NumeralBel,
|
||||
NamesBel,
|
||||
StructuralBel,
|
||||
IdiomBel ** {
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
concrete IdiomBel of Idiom = CatBel ** open ResBel, (R = ParamX), ParadigmsBel in {
|
||||
|
||||
lin
|
||||
ImpersCl vp = {s = \\t,p => vp.s ! t ! p ! defaultAgr} ;
|
||||
GenericCl vp = {s = \\t,p => "нехта" ++ vp.s ! t ! p ! defaultAgr} ;
|
||||
CleftNP np rs = {s = \\_,_ => "гэта" ++ np.s ! Nom ++ rs.s} ;
|
||||
CleftAdv adv s = {s = \\_,_ => "гэта" ++ adv.s ++ s.s} ;
|
||||
|
||||
ExistNP np = {s = \\t,p => copula t p np.a ++ np.s ! Nom} ;
|
||||
ExistIP ip = {s = \\t,p => copula t p ip.a ++ ip.s ! Nom} ;
|
||||
ExistNPAdv np adv = {s = \\t,p => copula t p np.a ++ np.s ! Nom ++ adv.s} ;
|
||||
ExistIPAdv ip adv = {s = \\t,p => copula t p ip.a ++ ip.s ! Nom ++ adv.s} ;
|
||||
|
||||
ProgrVP vp = vp ;
|
||||
ImpPl1 vp = {s = "давайце" ++ vp.inf} ;
|
||||
ImpP3 np vp = {s = "няхай" ++ np.s ! Nom ++ vp.s ! R.Pres ! R.Pos ! np.a} ;
|
||||
|
||||
SelfAdvVP vp = addAdvVP vp "сам" ;
|
||||
SelfAdVVP vp = addAdVVP "сам" vp ;
|
||||
SelfNP np = {s = \\c => np.s ! c ++ "сам"; a = np.a} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
--# -path=.:../abstract
|
||||
concrete LangBel of Lang =
|
||||
GrammarBel,
|
||||
LexiconBel,
|
||||
ConstructionBel
|
||||
,DocumentationBel --# notpresent
|
||||
** {
|
||||
|
||||
|
||||
flags startcat = Phr ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
concrete LexiconBel of Lexicon = CatBel ** open ParadigmsBel in {
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,19 @@
|
||||
concrete NamesBel of Names = CatBel ** open ResBel, ParadigmsBel in {
|
||||
|
||||
lin
|
||||
GivenName gn = mkSimpleNP gn.s gn.g Sg P3 ;
|
||||
MaleSurname sn = mkSimpleNP sn.s Masc Sg P3 ;
|
||||
FemaleSurname sn = mkSimpleNP sn.s Fem Sg P3 ;
|
||||
PlSurname sn = mkSimpleNP sn.s Masc Pl P3 ;
|
||||
FullName gn sn = mkSimpleNP (gn.s ++ sn.s) gn.g Sg P3 ;
|
||||
|
||||
UseLN ln = {s = ln.s; a = {g=ln.g; n=ln.n; p=P3}} ;
|
||||
PlainLN ln = {s = ln.s; a = {g=ln.g; n=ln.n; p=P3}} ;
|
||||
InLN ln = {s = "у" ++ ln.s ! Loc} ;
|
||||
AdjLN ap ln = {
|
||||
s = \\c => ap.s ! c ! genNum ln.g ln.n ++ ln.s ! c ;
|
||||
g = ln.g ;
|
||||
n = ln.n
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
concrete NounBel of Noun = CatBel ** open ResBel, Prelude in {
|
||||
lin
|
||||
UseN n = n ;
|
||||
|
||||
DetCN det cn = {
|
||||
s = \\c => det.s ! c ! cn.g ++ cn.s ! c ! det.n ;
|
||||
a = {g=cn.g; n=det.n; p=P3}
|
||||
} ;
|
||||
UsePN pn = {
|
||||
s = pn.s ;
|
||||
a = {g=pn.g; n=pn.n; p=P3}
|
||||
} ;
|
||||
UsePron p = p ;
|
||||
|
||||
PredetNP pred np = {
|
||||
s = \\c => pred.s ! c ! np.a.g ! np.a.n ++ np.s ! c ;
|
||||
a = np.a
|
||||
} ;
|
||||
PPartNP np v = {
|
||||
s = \\c => np.s ! c ++ v.participle ! np.a.g ! np.a.n ;
|
||||
a = np.a
|
||||
} ;
|
||||
AdvNP np adv = {
|
||||
s = \\c => np.s ! c ++ adv.s ;
|
||||
a = np.a
|
||||
} ;
|
||||
ExtAdvNP np adv = {
|
||||
s = \\c => np.s ! c ++ adv.s ;
|
||||
a = np.a
|
||||
} ;
|
||||
RelNP np rs = {
|
||||
s = \\c => np.s ! c ++ rs.s ;
|
||||
a = np.a
|
||||
} ;
|
||||
DetNP det = {
|
||||
s = \\c => det.s ! c ! Masc ;
|
||||
a = {g=Masc; n=det.n; p=P3}
|
||||
} ;
|
||||
|
||||
DetQuant q n = {
|
||||
s = \\c,g => q.s ! c ! g ! n.n ++ n.s ! c ! g ;
|
||||
n = n.n
|
||||
} ;
|
||||
DetQuantOrd q n o = {
|
||||
s = \\c,g => q.s ! c ! g ! n.n ++ n.s ! c ! g ++ o.s ! c ! genNum g n.n ;
|
||||
n = n.n
|
||||
} ;
|
||||
NumSg = {s = \\_,_ => []; n = Sg} ;
|
||||
NumPl = {s = \\_,_ => []; n = Pl} ;
|
||||
NumCard card = {s = \\_,_ => card.s; n = card.n} ;
|
||||
NumDigits digits = {s = digits.s; n = Pl} ;
|
||||
NumDecimal dec = {s = dec.s; n = Pl} ;
|
||||
NumNumeral numeral = {s = numeral.s; n = Pl} ;
|
||||
AdNum adn card = {s = adn.s ++ card.s; n = card.n} ;
|
||||
|
||||
OrdDigits d = adjFromStr d.s ;
|
||||
OrdNumeral n = adjFromStr n.s ;
|
||||
OrdSuperl a = {s = \\c,gn => "най" ++ a.s ! c ! gn} ;
|
||||
OrdNumeralSuperl n a = {s = \\c,gn => n.s ++ a.s ! c ! gn} ;
|
||||
|
||||
IndefArt = {s = \\_,_,_ => []} ;
|
||||
DefArt = {s = \\_,_,_ => []} ;
|
||||
MassNP cn = {
|
||||
s = \\c => cn.s ! c ! Sg ;
|
||||
a = {g=cn.g; n=Sg; p=P3}
|
||||
} ;
|
||||
PossPron p = {s = \\_,_,_ => p.s ! Gen} ;
|
||||
|
||||
ComplN2 n np = {
|
||||
s = \\c,num => n.s ! c ! num ++ prepNP n.c2 np ;
|
||||
voc = n.voc ;
|
||||
g = n.g
|
||||
} ;
|
||||
ComplN3 n np = n ** {c2 = n.c3} ;
|
||||
UseN2 n = n ;
|
||||
Use2N3 n = n ** {c2 = n.c2} ;
|
||||
Use3N3 n = n ** {c2 = n.c3} ;
|
||||
|
||||
AdjCN ap cn = {
|
||||
s = \\c,num => ap.s ! c ! genNum cn.g num ++ cn.s ! c ! num ;
|
||||
voc = cn.voc ;
|
||||
g = cn.g
|
||||
} ;
|
||||
RelCN cn rs = {
|
||||
s = \\c,num => cn.s ! c ! num ++ rs.s ;
|
||||
voc = cn.voc ;
|
||||
g = cn.g
|
||||
} ;
|
||||
AdvCN cn adv = {
|
||||
s = \\c,num => cn.s ! c ! num ++ adv.s ;
|
||||
voc = cn.voc ;
|
||||
g = cn.g
|
||||
} ;
|
||||
SentCN cn sc = {
|
||||
s = \\c,num => cn.s ! c ! num ++ sc.s ;
|
||||
voc = cn.voc ;
|
||||
g = cn.g
|
||||
} ;
|
||||
ApposCN cn np = {
|
||||
s = \\c,num => cn.s ! c ! num ++ np.s ! Nom ;
|
||||
voc = cn.voc ;
|
||||
g = cn.g
|
||||
} ;
|
||||
PossNP cn np = {
|
||||
s = \\c,num => cn.s ! c ! num ++ np.s ! Gen ;
|
||||
voc = cn.voc ;
|
||||
g = cn.g
|
||||
} ;
|
||||
PartNP cn np = {
|
||||
s = \\c,num => cn.s ! c ! num ++ np.s ! Gen ;
|
||||
voc = cn.voc ;
|
||||
g = cn.g
|
||||
} ;
|
||||
CountNP det np = {
|
||||
s = \\c => det.s ! c ! Masc ++ "з" ++ np.s ! Gen ;
|
||||
a = {g=Masc; n=det.n; p=P3}
|
||||
} ;
|
||||
|
||||
AdjDAP dap ap = {
|
||||
s = \\c,g => dap.s ! c ! g ++ ap.s ! c ! genNum g dap.n ;
|
||||
n = dap.n
|
||||
} ;
|
||||
DetDAP det = det ;
|
||||
|
||||
QuantityNP dec mu = mkSimpleNP (dec.s ++ mu.s) Neuter Sg P3 ;
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
concrete NumeralBel of Numeral = CatBel ** {
|
||||
|
||||
lincat
|
||||
Digit, Sub10, Sub100, Sub1000, Sub1000000, Sub1000000000, Sub1000000000000 = {s : Str} ;
|
||||
Dig = {s : Str} ;
|
||||
|
||||
lin
|
||||
num n = n ;
|
||||
|
||||
n2 = {s = "2"} ;
|
||||
n3 = {s = "3"} ;
|
||||
n4 = {s = "4"} ;
|
||||
n5 = {s = "5"} ;
|
||||
n6 = {s = "6"} ;
|
||||
n7 = {s = "7"} ;
|
||||
n8 = {s = "8"} ;
|
||||
n9 = {s = "9"} ;
|
||||
|
||||
pot01 = {s = "1"} ;
|
||||
pot0 d = d ;
|
||||
pot0as1 n = n ;
|
||||
pot110 = {s = "10"} ;
|
||||
pot111 = {s = "11"} ;
|
||||
pot1to19 d = {s = "1" ++ d.s} ;
|
||||
pot1 d = {s = d.s ++ "0"} ;
|
||||
pot1plus d n = {s = d.s ++ n.s} ;
|
||||
pot1as2 n = n ;
|
||||
pot21 = {s = "100"} ;
|
||||
pot2 n = {s = n.s ++ "00"} ;
|
||||
pot2plus n m = {s = n.s ++ "00" ++ m.s} ;
|
||||
pot2as3 n = n ;
|
||||
pot31 = {s = "1000"} ;
|
||||
pot3 n = {s = n.s ++ "000"} ;
|
||||
pot3plus n m = {s = n.s ++ "000" ++ m.s} ;
|
||||
pot3as4 n = n ;
|
||||
pot3decimal d = {s = d.s ++ "тысяч"} ;
|
||||
pot41 = {s = "1000000"} ;
|
||||
pot4 n = {s = n.s ++ "000000"} ;
|
||||
pot4plus n m = {s = n.s ++ "000000" ++ m.s} ;
|
||||
pot4as5 n = n ;
|
||||
pot4decimal d = {s = d.s ++ "мільёна"} ;
|
||||
pot51 = {s = "1000000000"} ;
|
||||
pot5 n = {s = n.s ++ "000000000"} ;
|
||||
pot5plus n m = {s = n.s ++ "000000000" ++ m.s} ;
|
||||
pot5decimal d = {s = d.s ++ "мільярда"} ;
|
||||
|
||||
IDig d = d ;
|
||||
IIDig d ds = {s = d.s ++ ds.s} ;
|
||||
|
||||
D_0 = {s = "0"} ;
|
||||
D_1 = {s = "1"} ;
|
||||
D_2 = {s = "2"} ;
|
||||
D_3 = {s = "3"} ;
|
||||
D_4 = {s = "4"} ;
|
||||
D_5 = {s = "5"} ;
|
||||
D_6 = {s = "6"} ;
|
||||
D_7 = {s = "7"} ;
|
||||
D_8 = {s = "8"} ;
|
||||
D_9 = {s = "9"} ;
|
||||
|
||||
PosDecimal d = d ;
|
||||
NegDecimal d = {s = "-" ++ d.s} ;
|
||||
IFrac d dig = {s = d.s ++ "." ++ dig.s} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,901 @@
|
||||
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
|
||||
} ;
|
||||
|
||||
compoundN = overload {
|
||||
compoundN : A -> N -> N = \a,n -> lin N {
|
||||
s = \\c,num => a.s ! c ! genNum n.g num ++ n.s ! c ! num ;
|
||||
voc = a.s ! Nom ! genNum n.g Sg ++ n.voc ;
|
||||
g = n.g
|
||||
} ;
|
||||
compoundN : N -> A -> N = \n,a -> lin N {
|
||||
s = \\c,num => n.s ! c ! num ++ a.s ! c ! genNum n.g num ;
|
||||
voc = n.voc ++ a.s ! Nom ! genNum n.g Sg ;
|
||||
g = n.g
|
||||
} ;
|
||||
compoundN : N -> Str -> N = \n,adv -> lin N {
|
||||
s = \\c,num => n.s ! c ! num ++ adv ;
|
||||
voc = n.voc ++ adv ;
|
||||
g = n.g
|
||||
} ;
|
||||
compoundN : Str -> N -> N = \adv,n -> lin N {
|
||||
s = \\c,num => adv ++ n.s ! c ! num ;
|
||||
voc = adv ++ n.voc ;
|
||||
g = n.g
|
||||
}
|
||||
} ;
|
||||
|
||||
mkPron : (_,_,_,_,_,_ : Str) -> Gender -> Number -> Person -> Pron =
|
||||
\nom,acc,dat,gen,loc,instr,g,n,p -> lin Pron {
|
||||
s = table {
|
||||
Nom => nom ;
|
||||
Acc => acc ;
|
||||
Dat => dat ;
|
||||
Gen => gen ;
|
||||
Loc => loc ;
|
||||
Instr => instr
|
||||
} ;
|
||||
a = {g=g; n = n; p = p}
|
||||
} ;
|
||||
|
||||
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
|
||||
} ;
|
||||
|
||||
compoundV : V -> Str -> V = \v,adv -> lin V {
|
||||
active = \\a => {past=(v.active ! a).past ++ adv ;
|
||||
pres=\\p,num=>(v.active ! a).pres ! p ! num ++ adv
|
||||
} ;
|
||||
imperative = \\num => v.imperative ! num ++ adv ;
|
||||
infinitive = v.infinitive ++ adv ;
|
||||
participle = \\g,num => v.participle ! g ! num ++ adv ;
|
||||
passive = \\a,t => v.passive ! a ! t ++ adv
|
||||
} ;
|
||||
|
||||
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} ;
|
||||
|
||||
nominative : Case = Nom ;
|
||||
accusative : Case = Acc ;
|
||||
dative : Case = Dat ;
|
||||
genitive : Case = Gen ;
|
||||
locative : Case = Loc ;
|
||||
instrumental : Case = Instr ;
|
||||
|
||||
mkPrep = overload {
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
|
||||
mkPrep : Case -> Prep = \c -> lin Prep {s=[]; c=c} ;
|
||||
mkPrep : Str -> Case -> Prep = \s,c -> lin Prep {s=s; c=c}
|
||||
} ;
|
||||
|
||||
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
||||
mkIP : Str -> IP = \s -> lin IP (mkSimpleNP s Masc Sg P3) ;
|
||||
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=\\_,_,_ => s} ;
|
||||
mkIDet : Str -> IDet = \s -> lin IDet {s=\\_,_ => s; n=Sg} ;
|
||||
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
||||
mkQuant : Str -> Quant = \s -> lin Quant {s=\\_,_,_ => s} ;
|
||||
adjQuant : A -> Quant = \a -> lin Quant {s=\\c,g,n => a.s ! c ! genNum g n} ;
|
||||
mkPredet : Str -> Predet = \s -> lin Predet {s=\\_,_,_ => s} ;
|
||||
mkDet : Str -> Det = \s -> lin Det {s=\\_,_ => s; n=Sg} ;
|
||||
mkCard : Str -> Card = \s -> lin Card {s=s; n=Pl} ;
|
||||
mkACard : Str -> ACard = \s -> lin ACard {s=s; n=Pl} ;
|
||||
mkConj : Str -> Conj = \s -> lin Conj {s=s; n=Pl} ;
|
||||
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
||||
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
||||
|
||||
mkLN : Str -> LN = \s -> lin LN {s=caseTable s; g=Neuter; n=Sg} ;
|
||||
mkGN : Str -> GN = \s -> lin GN {s=s; g=Masc} ;
|
||||
mkSN : Str -> SN = \s -> lin SN {s=s} ;
|
||||
mkPN : Str -> PN = \s -> lin PN {s=caseTable s; g=Masc; n=Sg} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
concrete PhraseBel of Phrase = CatBel ** open ResBel in {
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttS s = s ;
|
||||
UttQS qs = qs ;
|
||||
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! Sg} ;
|
||||
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ;
|
||||
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ;
|
||||
UttIP ip = {s = ip.s ! Nom} ;
|
||||
UttIAdv iadv = iadv ;
|
||||
UttNP np = {s = np.s ! Nom} ;
|
||||
UttAdv adv = adv ;
|
||||
UttVP vp = {s = vp.inf} ;
|
||||
UttCN cn = {s = cn.s ! Nom ! Sg} ;
|
||||
UttCard card = {s = card.s} ;
|
||||
UttAP ap = {s = ap.s ! Nom ! GSg Masc} ;
|
||||
UttInterj i = i ;
|
||||
|
||||
NoPConj = {s = []} ;
|
||||
PConjConj conj = {s = conj.s} ;
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
VocNP np = {s = np.s ! Nom} ;
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
concrete QuestionBel of Question = CatBel ** open ResBel, (R = ParamX) in {
|
||||
|
||||
lincat
|
||||
QVP = {s : Str} ;
|
||||
|
||||
lin
|
||||
QuestCl cl = cl ;
|
||||
QuestVP ip vp = {
|
||||
s = \\t,p => ip.s ! Nom ++ vp.s ! t ! p ! ip.a
|
||||
} ;
|
||||
QuestSlash ip cl = {
|
||||
s = \\t,p => cl.c.s ++ ip.s ! cl.c.c ++ cl.s ! t ! p
|
||||
} ;
|
||||
QuestIAdv iadv cl = {
|
||||
s = \\t,p => iadv.s ++ cl.s ! t ! p
|
||||
} ;
|
||||
QuestIComp icomp np = {
|
||||
s = \\t,p => icomp.s ++ np.s ! Nom
|
||||
} ;
|
||||
|
||||
IdetCN idet cn = {
|
||||
s = \\c => idet.s ! c ! cn.g ++ cn.s ! c ! idet.n ;
|
||||
a = {g=cn.g; n=idet.n; p=P3}
|
||||
} ;
|
||||
IdetIP idet = {
|
||||
s = \\c => idet.s ! c ! Masc ;
|
||||
a = {g=Masc; n=idet.n; p=P3}
|
||||
} ;
|
||||
AdvIP ip adv = {
|
||||
s = \\c => ip.s ! c ++ adv.s ;
|
||||
a = ip.a
|
||||
} ;
|
||||
IdetQuant iquant num = {
|
||||
s = \\c,g => iquant.s ! c ! g ! num.n ++ num.s ! c ! g ;
|
||||
n = num.n
|
||||
} ;
|
||||
|
||||
PrepIP prep ip = {s = prepNP prep ip} ;
|
||||
AdvIAdv iadv adv = {s = iadv.s ++ adv.s} ;
|
||||
CompIAdv iadv = iadv ;
|
||||
CompIP ip = {s = ip.s ! Nom} ;
|
||||
|
||||
ComplSlashIP vp ip = {s = vp.s ! R.Pres ! R.Pos ! defaultAgr ++ vp.c.s ++ ip.s ! vp.c.c ++ vp.post} ;
|
||||
AdvQVP vp iadv = {s = vp.s ! R.Pres ! R.Pos ! defaultAgr ++ iadv.s} ;
|
||||
AddAdvQVP qvp iadv = {s = qvp.s ++ iadv.s} ;
|
||||
QuestQVP ip qvp = {
|
||||
s = \\_,_ => ip.s ! Nom ++ qvp.s
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
concrete RelativeBel of Relative = CatBel ** open ResBel in {
|
||||
|
||||
lin
|
||||
RelCl cl = {s = \\t,p => "што" ++ cl.s ! t ! p} ;
|
||||
RelVP rp vp = {s = \\t,p => rp.s ++ vp.s ! t ! p ! defaultAgr} ;
|
||||
RelSlash rp cl = {s = \\t,p => rp.s ++ cl.s ! t ! p} ;
|
||||
|
||||
IdRP = {s = "які"} ;
|
||||
FunRP prep np rp = {s = prepNP prep np ++ rp.s} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,286 @@
|
||||
resource ResBel = open (R = ParamX), Prelude in {
|
||||
|
||||
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 Verb = {active: Aspect => {past: Str; pres: Person => Number => Str}; imperative: Number => Str; infinitive: Str; participle: Gender => Number => Str; passive: Aspect => Tense => Str} ; -- 703
|
||||
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 ->
|
||||
{ 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 genNum : Gender -> Number -> GenNum = \g,n ->
|
||||
case n of {
|
||||
Sg => GSg g ;
|
||||
Pl => GPl
|
||||
} ;
|
||||
|
||||
oper Adj = {s: Case => GenNum => Str} ; -- 704
|
||||
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 ->
|
||||
{ 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 = Adj ;
|
||||
|
||||
oper Agr = {g : Gender ; n : Number ; p : Person} ;
|
||||
oper defaultAgr : Agr = {g=Masc; n=Sg; p=P3} ;
|
||||
|
||||
oper NPhrase : Type = {s : Case => Str; a : Agr} ;
|
||||
oper mkNPhrase : (Case => Str) -> Agr -> NPhrase =
|
||||
\s,a -> {s = s; a = a} ;
|
||||
oper caseTable : Str -> Case => Str =
|
||||
\s -> table {Nom => s; Acc => s; Dat => s; Gen => s; Loc => s; Instr => s} ;
|
||||
oper mkSimpleNP : Str -> Gender -> Number -> Person -> NPhrase =
|
||||
\s,g,n,p -> mkNPhrase (caseTable s) {g=g; n=n; p=p} ;
|
||||
|
||||
oper nounFromStr : Str -> Gender -> Noun =
|
||||
\s,g -> {
|
||||
s = \\_,_ => s ;
|
||||
voc = s ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
oper adjFromStr : Str -> Adj =
|
||||
\s -> {s = \\_,_ => s} ;
|
||||
|
||||
oper prepNP : Compl -> NPhrase -> Str =
|
||||
\prep,np -> prep.s ++ np.s ! prep.c ;
|
||||
|
||||
oper neg : R.Polarity -> Str =
|
||||
\p -> case p of {
|
||||
R.Pos => [] ;
|
||||
R.Neg => "не"
|
||||
} ;
|
||||
|
||||
oper futureBe : Agr -> Str =
|
||||
\a -> case <a.p,a.n> of {
|
||||
<P1,Sg> => "буду" ;
|
||||
<P2,Sg> => "будзеш" ;
|
||||
<P3,Sg> => "будзе" ;
|
||||
<P1,Pl> => "будзем" ;
|
||||
<P2,Pl> => "будзеце" ;
|
||||
<P3,Pl> => "будуць"
|
||||
} ;
|
||||
|
||||
oper pastBe : Agr -> Str =
|
||||
\a -> case <a.g,a.n> of {
|
||||
<Masc,Sg> => "быў" ;
|
||||
<Fem,Sg> => "была" ;
|
||||
<Neuter,Sg> => "было" ;
|
||||
<_,Pl> => "былі"
|
||||
} ;
|
||||
|
||||
oper copula : R.Tense -> R.Polarity -> Agr -> Str =
|
||||
\t,p,a -> case t of {
|
||||
R.Pres => neg p ;
|
||||
R.Past => neg p ++ pastBe a ;
|
||||
R.Fut => neg p ++ futureBe a ;
|
||||
R.Cond => neg p ++ pastBe a ++ "бы"
|
||||
} ;
|
||||
|
||||
oper finiteVerb : Verb -> R.Tense -> R.Polarity -> Agr -> Str =
|
||||
\v,t,p,a -> case t of {
|
||||
R.Pres => neg p ++ (v.active ! Imperf).pres ! a.p ! a.n ;
|
||||
R.Past => neg p ++ v.participle ! a.g ! a.n ;
|
||||
R.Fut => neg p ++ futureBe a ++ v.infinitive ;
|
||||
R.Cond => neg p ++ v.participle ! a.g ! a.n ++ "бы"
|
||||
} ;
|
||||
|
||||
oper VPhrase : Type = {
|
||||
s : R.Tense => R.Polarity => Agr => Str ;
|
||||
inf : Str ;
|
||||
imp : R.Polarity => Number => Str
|
||||
} ;
|
||||
|
||||
oper mkVPhrase : Verb -> VPhrase =
|
||||
\v -> {
|
||||
s = \\t,p,a => finiteVerb v t p a ;
|
||||
inf = v.infinitive ;
|
||||
imp = \\p,n => neg p ++ v.imperative ! n
|
||||
} ;
|
||||
|
||||
oper VSlash : Type = {
|
||||
s : R.Tense => R.Polarity => Agr => Str ;
|
||||
inf : Str ;
|
||||
c : Compl ;
|
||||
imp : R.Polarity => Number => Str ;
|
||||
post : Str
|
||||
} ;
|
||||
|
||||
oper mkVSlash : Verb -> Compl -> VSlash =
|
||||
\v,c -> {
|
||||
s = \\t,p,a => finiteVerb v t p a ;
|
||||
inf = v.infinitive ;
|
||||
c = c ;
|
||||
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||
post = []
|
||||
} ;
|
||||
|
||||
oper addAdvVP : VPhrase -> Str -> VPhrase =
|
||||
\vp,adv -> {
|
||||
s = \\t,p,a => vp.s ! t ! p ! a ++ adv ;
|
||||
inf = vp.inf ++ adv ;
|
||||
imp = \\p,n => vp.imp ! p ! n ++ adv
|
||||
} ;
|
||||
|
||||
oper addAdVVP : Str -> VPhrase -> VPhrase =
|
||||
\adv,vp -> {
|
||||
s = \\t,p,a => adv ++ vp.s ! t ! p ! a ;
|
||||
inf = adv ++ vp.inf ;
|
||||
imp = \\p,n => adv ++ vp.imp ! p ! n
|
||||
} ;
|
||||
|
||||
oper addAdvSlash : VSlash -> Str -> VSlash =
|
||||
\vp,adv -> {
|
||||
s = \\t,p,a => vp.s ! t ! p ! a ;
|
||||
inf = vp.inf ++ adv ;
|
||||
c = vp.c ;
|
||||
imp = \\p,n => vp.imp ! p ! n ;
|
||||
post = vp.post ++ adv
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
concrete SentenceBel of Sentence = CatBel ** open ResBel, (R = ParamX), Prelude in {
|
||||
|
||||
lin
|
||||
PredVP np vp = {
|
||||
s = \\t,p => np.s ! Nom ++ vp.s ! t ! p ! np.a
|
||||
} ;
|
||||
PredSCVP sc vp = {
|
||||
s = \\t,p => sc.s ++ vp.s ! t ! p ! defaultAgr
|
||||
} ;
|
||||
|
||||
SlashVP np vp = {
|
||||
s = \\t,p => np.s ! Nom ++ vp.s ! t ! p ! np.a ++ vp.post ;
|
||||
c = vp.c
|
||||
} ;
|
||||
AdvSlash cl adv = {
|
||||
s = \\t,p => cl.s ! t ! p ++ adv.s ;
|
||||
c = cl.c
|
||||
} ;
|
||||
SlashPrep cl prep = {
|
||||
s = \\t,p => cl.s ! t ! p ++ prep.s ;
|
||||
c = prep
|
||||
} ;
|
||||
SlashVS np vs ss = {
|
||||
s = \\t,p => np.s ! Nom ++ finiteVerb vs t p np.a ++ ss.s ;
|
||||
c = ss.c
|
||||
} ;
|
||||
|
||||
ImpVP vp = {s = \\p,n => vp.imp ! p ! n} ;
|
||||
AdvImp adv imp = {s = \\p,n => adv.s ++ imp.s ! p ! n} ;
|
||||
|
||||
EmbedS s = {s = "што" ++ s.s} ;
|
||||
EmbedQS qs = {s = qs.s} ;
|
||||
EmbedVP vp = {s = vp.inf} ;
|
||||
|
||||
UseCl temp pol cl = {s = temp.s ++ pol.s ++ cl.s ! temp.t ! pol.p} ;
|
||||
UseQCl temp pol cl = {s = temp.s ++ pol.s ++ cl.s ! temp.t ! pol.p} ;
|
||||
UseRCl temp pol cl = {s = cl.s ! temp.t ! pol.p} ;
|
||||
UseSlash temp pol cl = {s = cl.s ! temp.t ! pol.p; c = cl.c} ;
|
||||
|
||||
AdvS adv s = {s = adv.s ++ s.s} ;
|
||||
ExtAdvS adv s = {s = adv.s ++ s.s} ;
|
||||
SSubjS s1 subj s2 = {s = s1.s ++ subj.s ++ s2.s} ;
|
||||
RelS s rs = {s = s.s ++ rs.s} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
concrete StructuralBel of Structural = CatBel ** open ResBel, ParadigmsBel in {
|
||||
|
||||
lin
|
||||
above_Prep = mkPrep "над" instrumental ;
|
||||
after_Prep = mkPrep "пасля" genitive ;
|
||||
all_Predet = mkPredet "усе" ;
|
||||
almost_AdA = mkAdA "амаль" ;
|
||||
almost_AdN = mkAdN "амаль" ;
|
||||
although_Subj = mkSubj "хоць" ;
|
||||
always_AdV = mkAdV "заўсёды" ;
|
||||
and_Conj = mkConj "і" ;
|
||||
because_Subj = mkSubj "бо" ;
|
||||
before_Prep = mkPrep "перад" instrumental ;
|
||||
behind_Prep = mkPrep "за" instrumental ;
|
||||
between_Prep = mkPrep "паміж" instrumental ;
|
||||
both7and_DConj = mkConj "і" ;
|
||||
but_PConj = mkPConj "але" ;
|
||||
by8agent_Prep = mkPrep "кім" instrumental ;
|
||||
by8means_Prep = mkPrep "праз" accusative ;
|
||||
can8know_VV = mkVV (mkV021 "магчы") ;
|
||||
can_VV = mkVV (mkV021 "магчы") ;
|
||||
during_Prep = mkPrep "падчас" genitive ;
|
||||
either7or_DConj = mkConj "або" ;
|
||||
every_Det = {s = \\_,_ => "кожны"; n = Sg} ;
|
||||
everybody_NP = mkSimpleNP "усе" Masc Pl P3 ;
|
||||
everything_NP = mkSimpleNP "усё" Neuter Sg P3 ;
|
||||
everywhere_Adv = mkAdv "усюды" ;
|
||||
few_Det = {s = \\_,_ => "некалькі"; n = Pl} ;
|
||||
for_Prep = mkPrep "для" genitive ;
|
||||
from_Prep = mkPrep "ад" genitive ;
|
||||
|
||||
i_Pron = mkPron "я" "мяне" "мне" "мяне" "мне" "мной" Masc Sg P1 ;
|
||||
youSg_Pron = mkPron "ты" "цябе" "табе" "цябе" "табе" "табой" Masc Sg P2 ;
|
||||
he_Pron = mkPron "ён" "яго" "яму" "яго" "ім" "ім" Masc Sg P3 ;
|
||||
she_Pron = mkPron "яна" "яе" "ёй" "яе" "ёй" "ёю" Fem Sg P3 ;
|
||||
it_Pron = mkPron "яно" "яго" "яму" "яго" "ім" "ім" Neuter Sg P3 ;
|
||||
we_Pron = mkPron "мы" "нас" "нам" "нас" "нас" "намі" Masc Pl P1 ;
|
||||
youPl_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Masc Pl P2 ;
|
||||
youPol_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Masc Pl P2 ;
|
||||
they_Pron = mkPron "яны" "іх" "ім" "іх" "іх" "імі" Masc Pl P3 ;
|
||||
|
||||
here_Adv = mkAdv "тут" ;
|
||||
here7to_Adv = mkAdv "сюды" ;
|
||||
here7from_Adv = mkAdv "адсюль" ;
|
||||
how_IAdv = mkIAdv "як" ;
|
||||
how8many_IDet = mkIDet "колькі" ;
|
||||
how8much_IAdv = mkIAdv "колькі" ;
|
||||
if_Subj = mkSubj "калі" ;
|
||||
in8front_Prep = mkPrep "перад" instrumental ;
|
||||
in_Prep = mkPrep "у" locative ;
|
||||
less_CAdv = {s = "менш"; p = "чым"} ;
|
||||
many_Det = {s = \\_,_ => "шмат"; n = Pl} ;
|
||||
more_CAdv = {s = "больш"; p = "чым"} ;
|
||||
most_Predet = mkPredet "большасць" ;
|
||||
much_Det = {s = \\_,_ => "шмат"; n = Sg} ;
|
||||
must_VV = mkVV (mkV "мусіць") ;
|
||||
no_Utt = {s = "не"} ;
|
||||
on_Prep = mkPrep "на" locative ;
|
||||
only_Predet = mkPredet "толькі" ;
|
||||
or_Conj = mkConj "або" ;
|
||||
otherwise_PConj = mkPConj "інакш" ;
|
||||
part_Prep = mkPrep "з" genitive ;
|
||||
please_Voc = mkVoc "калі ласка" ;
|
||||
possess_Prep = mkPrep "у" genitive ;
|
||||
quite_Adv = mkAdA "зусім" ;
|
||||
so_AdA = mkAdA "так" ;
|
||||
someSg_Det = {s = \\_,_ => "нейкі"; n = Sg} ;
|
||||
somePl_Det = {s = \\_,_ => "некаторыя"; n = Pl} ;
|
||||
somebody_NP = mkSimpleNP "нехта" Masc Sg P3 ;
|
||||
something_NP = mkSimpleNP "нешта" Neuter Sg P3 ;
|
||||
somewhere_Adv = mkAdv "недзе" ;
|
||||
that_Quant = mkQuant "той" ;
|
||||
that_Subj = mkSubj "што" ;
|
||||
there_Adv = mkAdv "там" ;
|
||||
there7to_Adv = mkAdv "туды" ;
|
||||
there7from_Adv = mkAdv "адтуль" ;
|
||||
therefore_PConj = mkPConj "таму" ;
|
||||
this_Quant = mkQuant "гэты" ;
|
||||
through_Prep = mkPrep "праз" accusative ;
|
||||
to_Prep = mkPrep "да" genitive ;
|
||||
too_AdA = mkAdA "занадта" ;
|
||||
under_Prep = mkPrep "пад" instrumental ;
|
||||
very_AdA = mkAdA "вельмі" ;
|
||||
want_VV = mkVV (mkV009 "хацець") ;
|
||||
whatPl_IP = mkSimpleNP "што" Neuter Pl P3 ;
|
||||
whatSg_IP = mkSimpleNP "што" Neuter Sg P3 ;
|
||||
when_IAdv = mkIAdv "калі" ;
|
||||
when_Subj = mkSubj "калі" ;
|
||||
where_IAdv = mkIAdv "дзе" ;
|
||||
which_IQuant = mkIQuant "які" ;
|
||||
whoPl_IP = mkSimpleNP "хто" Masc Pl P3 ;
|
||||
whoSg_IP = mkSimpleNP "хто" Masc Sg P3 ;
|
||||
why_IAdv = mkIAdv "чаму" ;
|
||||
with_Prep = mkPrep "з" instrumental ;
|
||||
without_Prep = mkPrep "без" genitive ;
|
||||
yes_Utt = {s = "так"} ;
|
||||
|
||||
no_Quant = mkQuant "ніякі" ;
|
||||
not_Predet = mkPredet "не" ;
|
||||
if_then_Conj = mkConj "калі" ;
|
||||
at_least_AdN = mkAdN "прынамсі" ;
|
||||
at_most_AdN = mkAdN "найбольш" ;
|
||||
nobody_NP = mkSimpleNP "ніхто" Masc Sg P3 ;
|
||||
nothing_NP = mkSimpleNP "нішто" Neuter Sg P3 ;
|
||||
except_Prep = mkPrep "акрамя" genitive ;
|
||||
as_CAdv = {s = "так"; p = "як"} ;
|
||||
have_V2 = mkV2 (mkV071 "мець") ;
|
||||
language_title_Utt = {s = "беларуская"} ;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
concrete VerbBel of Verb = CatBel ** open ResBel, (R = ParamX), Prelude in {
|
||||
|
||||
lin
|
||||
UseV v = mkVPhrase v ;
|
||||
|
||||
ComplVV vv vp = {
|
||||
s = \\t,p,a => finiteVerb vv t p a ++ vp.inf ;
|
||||
inf = vv.infinitive ++ vp.inf ;
|
||||
imp = \\p,n => neg p ++ vv.imperative ! n ++ vp.inf
|
||||
} ;
|
||||
ComplVS vs s = {
|
||||
s = \\t,p,a => finiteVerb vs t p a ++ "што" ++ s.s ;
|
||||
inf = vs.infinitive ++ "што" ++ s.s ;
|
||||
imp = \\p,n => neg p ++ vs.imperative ! n ++ "што" ++ s.s
|
||||
} ;
|
||||
ComplVQ vq qs = {
|
||||
s = \\t,p,a => finiteVerb vq t p a ++ qs.s ;
|
||||
inf = vq.infinitive ++ qs.s ;
|
||||
imp = \\p,n => neg p ++ vq.imperative ! n ++ qs.s
|
||||
} ;
|
||||
ComplVA va ap = {
|
||||
s = \\t,p,a => finiteVerb va t p a ++ ap.s ! Nom ! genNum a.g a.n ;
|
||||
inf = va.infinitive ++ ap.s ! Nom ! GSg Masc ;
|
||||
imp = \\p,n => neg p ++ va.imperative ! n ++ ap.s ! Nom ! GPl
|
||||
} ;
|
||||
|
||||
SlashV2a v = mkVSlash v v.c2 ;
|
||||
Slash2V3 v np = {
|
||||
s = \\t,p,a => finiteVerb v t p a ++ prepNP v.c2 np ;
|
||||
inf = v.infinitive ++ prepNP v.c2 np ;
|
||||
c = v.c3 ;
|
||||
imp = \\p,n => neg p ++ v.imperative ! n ++ prepNP v.c2 np ;
|
||||
post = []
|
||||
} ;
|
||||
Slash3V3 v np = {
|
||||
s = \\t,p,a => finiteVerb v t p a ;
|
||||
inf = v.infinitive ++ prepNP v.c3 np ;
|
||||
c = v.c2 ;
|
||||
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||
post = prepNP v.c3 np
|
||||
} ;
|
||||
SlashV2V v vp = {
|
||||
s = \\t,p,a => finiteVerb v t p a ;
|
||||
inf = v.infinitive ++ vp.inf ;
|
||||
c = v.c2 ;
|
||||
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||
post = vp.inf
|
||||
} ;
|
||||
SlashV2S v s = {
|
||||
s = \\t,p,a => finiteVerb v t p a ;
|
||||
inf = v.infinitive ++ "што" ++ s.s ;
|
||||
c = v.c2 ;
|
||||
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||
post = "што" ++ s.s
|
||||
} ;
|
||||
SlashV2Q v qs = {
|
||||
s = \\t,p,a => finiteVerb v t p a ;
|
||||
inf = v.infinitive ++ qs.s ;
|
||||
c = v.c2 ;
|
||||
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||
post = qs.s
|
||||
} ;
|
||||
SlashV2A v ap = {
|
||||
s = \\t,p,a => finiteVerb v t p a ;
|
||||
inf = v.infinitive ++ ap.s ! Nom ! GSg Masc ;
|
||||
c = v.c2 ;
|
||||
imp = \\p,n => neg p ++ v.imperative ! n ;
|
||||
post = ap.s ! Nom ! GSg Masc
|
||||
} ;
|
||||
|
||||
ComplSlash vp np = {
|
||||
s = \\t,p,a => vp.s ! t ! p ! a ++ prepNP vp.c np ++ vp.post ;
|
||||
inf = vp.inf ++ prepNP vp.c np ;
|
||||
imp = \\p,n => vp.imp ! p ! n ++ prepNP vp.c np ++ vp.post
|
||||
} ;
|
||||
|
||||
SlashVV vv vp = {
|
||||
s = \\t,p,a => finiteVerb vv t p a ++ vp.s ! R.Pres ! R.Pos ! a ;
|
||||
inf = vv.infinitive ++ vp.inf ;
|
||||
c = vp.c ;
|
||||
imp = \\p,n => neg p ++ vv.imperative ! n ++ vp.imp ! R.Pos ! n ;
|
||||
post = vp.post
|
||||
} ;
|
||||
SlashV2VNP v np vp = {
|
||||
s = \\t,p,a => finiteVerb v t p a ++ prepNP v.c2 np ++ vp.s ! R.Pres ! R.Pos ! a ;
|
||||
inf = v.infinitive ++ prepNP v.c2 np ++ vp.inf ;
|
||||
c = vp.c ;
|
||||
imp = \\p,n => neg p ++ v.imperative ! n ++ prepNP v.c2 np ++ vp.imp ! R.Pos ! n ;
|
||||
post = vp.post
|
||||
} ;
|
||||
|
||||
ReflVP vp = {
|
||||
s = \\t,p,a => vp.s ! t ! p ! a ++ "сябе" ++ vp.post ;
|
||||
inf = vp.inf ++ "сябе" ;
|
||||
imp = \\p,n => vp.imp ! p ! n ++ "сябе" ++ vp.post
|
||||
} ;
|
||||
UseComp comp = {
|
||||
s = \\t,p,a => copula t p a ++ comp.s ! a ;
|
||||
inf = "быць" ++ comp.s ! defaultAgr ;
|
||||
imp = \\p,_ => neg p ++ "будзь" ++ comp.s ! defaultAgr
|
||||
} ;
|
||||
|
||||
PassV2 v = {
|
||||
s = \\t,p,a => copula t p a ++ v.participle ! a.g ! a.n ;
|
||||
inf = "быць" ++ v.participle ! Masc ! Sg ;
|
||||
imp = \\p,_ => neg p ++ "будзь" ++ v.participle ! Masc ! Sg
|
||||
} ;
|
||||
|
||||
AdvVP vp adv = addAdvVP vp adv.s ;
|
||||
ExtAdvVP vp adv = addAdvVP vp adv.s ;
|
||||
AdVVP adv vp = addAdVVP adv.s vp ;
|
||||
AdvVPSlash vp adv = addAdvSlash vp adv.s ;
|
||||
AdVVPSlash adv vp = {
|
||||
s = \\t,p,a => adv.s ++ vp.s ! t ! p ! a ;
|
||||
inf = adv.s ++ vp.inf ;
|
||||
c = vp.c ;
|
||||
imp = \\p,n => adv.s ++ vp.imp ! p ! n ;
|
||||
post = vp.post
|
||||
} ;
|
||||
VPSlashPrep vp prep = {
|
||||
s = \\t,p,a => vp.s ! t ! p ! a ++ prep.s ;
|
||||
inf = vp.inf ++ prep.s ;
|
||||
c = prep ;
|
||||
imp = \\p,n => vp.imp ! p ! n ++ prep.s ;
|
||||
post = []
|
||||
} ;
|
||||
|
||||
CompAP ap = {s = \\a => ap.s ! Nom ! genNum a.g a.n} ;
|
||||
CompNP np = {s = \\_ => np.s ! Nom} ;
|
||||
CompAdv adv = {s = \\_ => adv.s} ;
|
||||
CompCN cn = {s = \\a => cn.s ! Nom ! a.n} ;
|
||||
UseCopula = {
|
||||
s = \\t,p,a => copula t p a ;
|
||||
inf = "быць" ;
|
||||
imp = \\p,_ => neg p ++ "будзь"
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -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))) ++
|
||||
|
||||
@@ -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
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
--# -path=.:../abstract:../common:../api
|
||||
--# -path=.:../abstract:../common:../api:../prelude
|
||||
|
||||
concrete LangBul of Lang =
|
||||
GrammarBul,
|
||||
|
||||
@@ -168,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 ;
|
||||
@@ -178,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 ;
|
||||
|
||||
@@ -121,6 +121,7 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
|
||||
|
||||
NumNumeral numeral = {s = \\gspec => numeral.s ! NCard gspec; nn = case numeral.n of {Sg => NNum Sg; Pl => NCountable}} ;
|
||||
OrdNumeral numeral = {s = \\aform => numeral.s ! NOrd aform} ;
|
||||
OrdNumeralSuperl numeral a = {s = \\aform => numeral.s ! NOrd aform ++ "най" ++ hyphen ++ a.s ! indefAForm aform} ;
|
||||
|
||||
AdNum adn num = {s = \\gspec => adn.s ++ num.s ! gspec; nn = num.nn} ;
|
||||
|
||||
|
||||
@@ -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 + "ти") ;
|
||||
|
||||
|
||||
@@ -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") ;
|
||||
|
||||
@@ -183,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 = []} ;
|
||||
|
||||
@@ -139,9 +139,6 @@ lin
|
||||
|
||||
SubjunctRelCN cn rs = RelCN cn rs ; -- no difference from indicative
|
||||
|
||||
lincat
|
||||
X = {s : Str} ;
|
||||
|
||||
lin
|
||||
UseComp_estar = UseComp ;
|
||||
UseComp_ser = UseComp ;
|
||||
|
||||
@@ -64,5 +64,11 @@ resource ParamX = open Prelude in {
|
||||
param
|
||||
DTail = T1 | T2 | T3 ;
|
||||
|
||||
oper
|
||||
inc : DTail -> DTail = \t -> case t of {
|
||||
T1 => T2 ;
|
||||
T2 => T3 ;
|
||||
T3 => T1
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -6,4 +6,8 @@ lin
|
||||
s = prep.s ++ np.prep ! prep.c
|
||||
} ;
|
||||
|
||||
SubjS subj s = {
|
||||
s = subj.s ++ s.s
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
+3
-2
@@ -21,10 +21,11 @@ concrete CatCze of Cat =
|
||||
RP = AdjForms ;
|
||||
|
||||
VP = {verb : VerbForms ; clit,compl : Agr => Str} ; ---- more fields probably needed
|
||||
VPSlash = {verb : VerbForms ; clit,compl : Agr => Str ; c : ComplementCase} ; ----
|
||||
VPSlash = {verb : VerbForms ; clit,compl : Agr => Str ; c : ComplementCase ; ind : Agr => Str} ; -- ind : incorporated indirect object, rendered after the object slot
|
||||
V = ResCze.VerbForms ;
|
||||
V2 = ResCze.VerbForms ** {c : ComplementCase} ;
|
||||
VS,VQ = ResCze.VerbForms ;
|
||||
V3 = ResCze.VerbForms ** {c,c2 : ComplementCase} ; -- c : direct object, c2 : indirect object
|
||||
VS,VQ,VV = ResCze.VerbForms ;
|
||||
|
||||
A = ResCze.AdjForms ;
|
||||
AP = ResCze.Adjective ** {isPost : Bool} ; -- {s : Gender => Number => Case => Str}
|
||||
|
||||
@@ -12,7 +12,6 @@ concrete ExtendCze of Extend = CatCze **
|
||||
,SlashBareV2S
|
||||
,PredIAdvVP
|
||||
,PredAPVP
|
||||
,ExistsNP
|
||||
,ExistS
|
||||
,ExistPluralCN
|
||||
,ExistNPQS
|
||||
|
||||
@@ -1,5 +1,32 @@
|
||||
concrete IdiomCze of Idiom = CatCze ** open Prelude, ResCze in {
|
||||
|
||||
lin
|
||||
ImpP3 np vp = {
|
||||
s = "nechť" ++ np.s ! Nom ++ vp.clit ! np.a ++
|
||||
verbAgr vp.verb np.a True ++ vp.compl ! np.a
|
||||
} ;
|
||||
|
||||
ImpersCl vp = let agr = Ag Neutr Sg P3 in {
|
||||
subj = [] ;
|
||||
clit = vp.clit ! agr ;
|
||||
compl = vp.compl ! agr ;
|
||||
verb = vp.verb ;
|
||||
a = agr
|
||||
} ;
|
||||
|
||||
GenericCl vp = let agr = Ag (Masc Anim) Pl P3 in {
|
||||
subj = [] ;
|
||||
clit = vp.clit ! agr ;
|
||||
compl = vp.compl ! agr ;
|
||||
verb = vp.verb ;
|
||||
a = agr
|
||||
} ;
|
||||
|
||||
ExistNP np = {
|
||||
subj, clit = [] ;
|
||||
compl = np.s ! Nom ;
|
||||
verb = iii_kupovatVerbForms "existovat" ;
|
||||
a = np.a
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
--# -path=.:../abstract:../common:../api
|
||||
|
||||
concrete LangCze of Lang =
|
||||
concrete LangCze of Lang =
|
||||
GrammarCze,
|
||||
LexiconCze
|
||||
-- ,ConstructionCze
|
||||
-- ,DocumentationCze --# notpresent
|
||||
,MarkupCze - [stringMark]
|
||||
** {
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
concrete MarkupCze of Markup = CatCze, MarkHTMLX ** open ResCze in {
|
||||
|
||||
lin
|
||||
MarkupCN m cn = cn ** {s = \\n,c => appMark m (cn.s ! n ! c)} ;
|
||||
|
||||
-- s, clit and prep are alternative surface forms, so each is marked;
|
||||
-- but clit ! Nom is the pro-drop subject, empty for every pronoun,
|
||||
-- and marking it up would leave the tags around nothing
|
||||
MarkupNP m np = np ** {
|
||||
s = \\c => appMark m (np.s ! c) ;
|
||||
clit = \\c => case c of {
|
||||
Nom => np.clit ! Nom ;
|
||||
_ => appMark m (np.clit ! c)
|
||||
} ;
|
||||
prep = \\c => appMark m (np.prep ! c)
|
||||
} ;
|
||||
|
||||
MarkupAP m ap = ap ** {s = \\g,n,c => appMark m (ap.s ! g ! n ! c)} ;
|
||||
MarkupAdv m adv = {s = appMark m adv.s} ;
|
||||
MarkupS m s = {s = appMark m s.s} ;
|
||||
MarkupUtt m utt = {s = appMark m utt.s} ;
|
||||
MarkupPhr m phr = {s = appMark m phr.s} ;
|
||||
MarkupText m txt = {s = appMark m txt.s} ;
|
||||
|
||||
}
|
||||
@@ -9,12 +9,10 @@ oper AdjOrd : Ord -> AP = notYet "AdjOrd" ;
|
||||
oper AdnCAdv : CAdv -> AdN = notYet "AdnCAdv" ;
|
||||
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
|
||||
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
|
||||
oper AdvS : Adv -> S -> S = notYet "AdvS" ;
|
||||
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
|
||||
oper CAdvAP : CAdv -> AP -> NP -> AP = notYet "CAdvAP" ;
|
||||
oper CleftAdv : Adv -> S -> Cl = notYet "CleftAdv" ;
|
||||
oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ;
|
||||
oper CompCN : CN -> Comp = notYet "CompCN" ;
|
||||
oper CompIAdv : IAdv -> IComp = notYet "CompIAdv" ;
|
||||
oper CompIP : IP -> IComp = notYet "CompIP" ;
|
||||
oper ComparA : A -> NP -> AP = notYet "ComparA" ;
|
||||
@@ -63,8 +61,6 @@ oper RelNP : NP -> RS -> NP = notYet "RelNP" ;
|
||||
oper RelSlash : RP -> ClSlash -> RCl = notYet "RelSlash" ;
|
||||
oper SentAP : AP -> SC -> AP = notYet "SentAP" ;
|
||||
oper SentCN : CN -> SC -> CN = notYet "SentCN" ;
|
||||
oper Slash2V3 : V3 -> NP -> VPSlash = notYet "Slash2V3" ;
|
||||
oper Slash3V3 : V3 -> NP -> VPSlash = notYet "Slash3V3" ;
|
||||
oper SlashPrep : Cl -> Prep -> ClSlash = notYet "SlashPrep" ;
|
||||
oper SlashV2A : V2A -> AP -> VPSlash = notYet "SlashV2A" ;
|
||||
oper SlashV2Q : V2Q -> QS -> VPSlash = notYet "SlashV2Q" ;
|
||||
|
||||
@@ -99,5 +99,12 @@ lin
|
||||
NumDecimal ds = ds ** {s = \\_,_ => ds.s} ;
|
||||
NumNumeral nu = nu ;
|
||||
|
||||
SentCN cn sc = cn ** {s = \\n,c => cn.s ! n ! c ++ sc.s} ;
|
||||
|
||||
PredetNP pred np = np ** {
|
||||
s = \\c => pred.s ++ np.s ! c ;
|
||||
clit = \\c => pred.s ++ np.clit ! c ;
|
||||
prep = \\c => pred.s ++ np.prep ! c
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -122,6 +122,14 @@ oper
|
||||
= \vf,c -> vf ** {c = c} ;
|
||||
} ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : VerbForms -> VerbForms ** {c,c2 : ComplementCase}
|
||||
= \vf -> vf ** {c = {s = [] ; c = Acc ; hasPrep = False} ;
|
||||
c2 = {s = [] ; c = Dat ; hasPrep = False}} ;
|
||||
mkV3 : VerbForms -> ComplementCase -> ComplementCase -> VerbForms ** {c,c2 : ComplementCase}
|
||||
= \vf,c,c2 -> vf ** {c = c ; c2 = c2} ;
|
||||
} ;
|
||||
|
||||
------------------------
|
||||
-- Adverbs, prepositions, conjunctions, ...
|
||||
|
||||
|
||||
@@ -6,6 +6,11 @@ lin
|
||||
UttCN cn = {s = cn.s ! Sg ! Nom} ;
|
||||
UttAP ap = {s = ap.s ! Masc Anim ! Sg ! Nom} ;
|
||||
UttNP np = {s = np.s ! Nom} ;
|
||||
UttVP vp = let agr = Ag Neutr Sg P3 in {s = vp.clit ! agr ++ vp.verb.inf ++ vp.compl ! agr} ;
|
||||
|
||||
UttImpSg pol imp = {s = pol.s ++ imp.s} ;
|
||||
UttImpPl pol imp = {s = pol.s ++ imp.s} ;
|
||||
UttImpPol pol imp = {s = pol.s ++ imp.s} ;
|
||||
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
|
||||
@@ -4,4 +4,6 @@ concrete QuestionCze of Question = CatCze **
|
||||
lin
|
||||
QuestCl cl = cl ; ----
|
||||
|
||||
QuestIAdv iadv cl = cl ** {clit = iadv.s ++ cl.clit} ;
|
||||
|
||||
}
|
||||
|
||||
+122
-21
@@ -28,6 +28,11 @@ oper
|
||||
softConsonant : pattern Str = #("ť"|"ď"|"j"|"ň"|"ř"|"š"|"c"|"č"|"ž") ;
|
||||
neutralConsonant : pattern Str = #("b"|"f"|"l"|"m"|"p"|"s"|"v") ;
|
||||
|
||||
-- neutral consonants take the hard endings by default (hrad, pán), and so do
|
||||
-- the foreign "z" and "x"; this is the class to test when choosing a paradigm
|
||||
hardishConsonant : pattern Str =
|
||||
#("d"|"t"|"g"|"h"|"k"|"n"|"r" | "b"|"f"|"l"|"m"|"p"|"s"|"v" | "z"|"x") ;
|
||||
|
||||
consonant : pattern Str =
|
||||
#(
|
||||
"d" | "t" | "g" | "h" | "k" | "n" | "r" |
|
||||
@@ -139,22 +144,33 @@ oper
|
||||
|
||||
declensionNounForms : (nom,gen : Str) -> Gender -> NounForms
|
||||
= \nom,gen,g ->
|
||||
let decl : DeclensionType = case <g, nom, gen> of {
|
||||
<Masc Anim, _ + #hardConsonant, _ + "a"> => declPAN ;
|
||||
<Masc Anim, _ + "a" , _ + "a"> => declPREDSEDA ;
|
||||
<Masc Inanim, _ + #hardConsonant, _ + "u"> => declHRAD ;
|
||||
<Fem, _ + "a" , _ + "y"> => declZENA ;
|
||||
<Neutr, _ + "o" , _ + "a"> => declMESTO ;
|
||||
<Masc Anim, _ + #softConsonant, _ + "e"> => declMUZ ;
|
||||
<Masc Anim, _ + "tel" , _ + "e"> => declMUZ ;
|
||||
-- the oblique stem, for the paradigms that cannot derive it from the nominative
|
||||
let stem : Str = Predef.tk 1 gen ;
|
||||
decl : DeclensionType = case <g, nom, gen> of {
|
||||
<Masc Anim, _ + "tel" , _ + "e"> => declMUZstem stem ;
|
||||
<Masc Anim, _ + "ce" , _ + "e"> => declSOUDCE ;
|
||||
<Masc Inanim, _ + #softConsonant, _ + "e"> => declSTROJ ;
|
||||
<Masc Anim, _ + ("us"|"os") , _ + "a"> => declLATINUSA ;
|
||||
<Masc Anim, _ + "a" , _ + "a"> => declPREDSEDA ;
|
||||
<Masc Anim, _ + (#softConsonant|#hardishConsonant), _ + ("e"|"ě")> => declMUZstem stem ;
|
||||
<Masc Anim, _ + #hardishConsonant, _ + "a"> => declPAN ;
|
||||
<Masc Inanim, _ + ("us"|"os") , _ + "u"> => declLATINUS ;
|
||||
<Masc Inanim, _ + "ý" , _ + "ého"> => declADJM ;
|
||||
<Masc Inanim, _ + (#softConsonant|#hardishConsonant), _ + ("e"|"ě")> => declSTROJ ;
|
||||
<Masc Inanim, _ + #hardishConsonant, _ + "u"> => declHRADstem stem ;
|
||||
<Masc Inanim, _ + #hardishConsonant, _ + "a"> => declHRADAstem stem ;
|
||||
<Fem, _ + "a" , _ + "y"> => declZENA ;
|
||||
<Fem, _ + "á" , _ + "é"> => declADJF ;
|
||||
<Fem, _ + ("e"|"ě") , _ + ("e"|"ě")> => declRUZE ;
|
||||
<Fem, _ + #softConsonant, _ + "e"> => declPISEN ;
|
||||
<Fem, _ + "ost" , _ + "i"> => declKOST ; --- also many other "st" 3.6.3
|
||||
<Fem, _ + (#softConsonant|#hardishConsonant), _ + "i"> => declKOST ; --- also many other "st" 3.6.3
|
||||
<Fem, _ + (#softConsonant|#hardishConsonant), _ + ("e"|"ě")> => declPISEN ;
|
||||
<Neutr, _ + "um" , _ + "a"> => declLATINUM ;
|
||||
<Neutr, _ + "ma" , _ + ("matu"|"mata")> => declGREEKMA ;
|
||||
<Neutr, _ + "o" , _ + "a"> => declMESTO ;
|
||||
<Neutr, _ + "e" , _+"ete"> => declKURE ;
|
||||
<Neutr, _ + "e" , _ + "e"> => declMORE ;
|
||||
<Neutr, _ + "í" , _ + "í"> => declSTAVENI ;
|
||||
<Neutr, _ + ("e"|"ě") , _ + ("e"|"ě")> => declMORE ;
|
||||
<Masc Inanim, _ + ("é"|"i"|"y"|"e"), _ + ("é"|"i"|"y"|"e")> => declINVAR (Masc Inanim) ;
|
||||
<Neutr, _ + ("é"|"i"|"y") , _ + ("é"|"i"|"y")> => declINVAR Neutr ;
|
||||
_ => (\s -> declSTROJ ("" + s)) -- Predef.error ("cannot infer declension type for" ++ nom ++ gen)
|
||||
}
|
||||
in decl nom ;
|
||||
@@ -165,12 +181,14 @@ oper
|
||||
= \s -> case s of {
|
||||
_ + "ost" => declKOST s ;
|
||||
_ + "tel" => declMUZ s ;
|
||||
_ + #hardConsonant => declHRAD s ;
|
||||
_ + "us" => declLATINUS s ;
|
||||
_ + "um" => declLATINUM s ;
|
||||
_ + #hardishConsonant => declHRAD s ;
|
||||
_ + #softConsonant => declSTROJ s ;
|
||||
_ + "a" => declZENA s ;
|
||||
_ + "o" => declMESTO s ;
|
||||
_ + "ce" => declSOUDCE s ;
|
||||
_ + "e" => declMORE s ;
|
||||
_ + ("e"|"ě") => declMORE s ;
|
||||
_ + "í" => declSTAVENI s ;
|
||||
_ => declSTROJ ("" + s) -- Predef.error ("cannot guess declension type for" ++ s)
|
||||
} ;
|
||||
@@ -216,9 +234,9 @@ oper
|
||||
g = Masc Anim
|
||||
} ;
|
||||
|
||||
declHRAD : DeclensionType = \hrad -> --- 3.5.2: sloc u/ě/e extra arg, sport-u, hrad-ě ; sgen u/a
|
||||
let hrd = dropFleetingE hrad
|
||||
in
|
||||
-- the oblique stem is a separate argument, because it cannot always be
|
||||
-- derived from the nominative: uzel-uzlu but člen-členu
|
||||
declHRADstem : Str -> DeclensionType = \hrd,hrad ->
|
||||
{
|
||||
snom,sacc = hrad ;
|
||||
sgen,sdat = hrd + "u" ; --- Berlín-a
|
||||
@@ -233,6 +251,9 @@ oper
|
||||
g = Masc Inanim
|
||||
} ;
|
||||
|
||||
declHRAD : DeclensionType = \hrad -> --- 3.5.2: sloc u/ě/e extra arg, sport-u, hrad-ě ; sgen u/a
|
||||
declHRADstem (dropFleetingE hrad) hrad ;
|
||||
|
||||
declZENA : DeclensionType = \zena -> --- 3.6.1 sge y/i ; pgen sometimes shortening
|
||||
let zen = init zena
|
||||
in
|
||||
@@ -270,9 +291,91 @@ oper
|
||||
g = Neutr
|
||||
} ;
|
||||
|
||||
-- Latin masculines in -us: the ending is dropped outside the nominative
|
||||
-- (algoritmus - algoritmu), otherwise they follow hrad
|
||||
declLATINUS : DeclensionType = \algoritmus ->
|
||||
let algoritm = Predef.tk 2 algoritmus
|
||||
in declHRAD algoritm ** {
|
||||
snom, sacc = algoritmus ;
|
||||
svoc = algoritm + "e"
|
||||
} ;
|
||||
|
||||
declLATINUSA : DeclensionType = \genius ->
|
||||
declLATINUS genius ** {g = Masc Anim} ;
|
||||
|
||||
-- Latin neuters in -um: the ending is dropped outside the nominative
|
||||
-- (kontinuum - kontinua), otherwise they follow město
|
||||
declLATINUM : DeclensionType = \kompaktum ->
|
||||
let kompakt = Predef.tk 2 kompaktum
|
||||
in declMESTO (kompakt + "o") ** {
|
||||
snom, sacc, svoc = kompaktum
|
||||
} ;
|
||||
|
||||
-- Greek neuters in -ma, with the stem extended by -t- (schéma - schématu)
|
||||
declGREEKMA : DeclensionType = \schema ->
|
||||
let schemat = schema + "t"
|
||||
in {
|
||||
snom,sacc,svoc = schema ;
|
||||
sgen,sdat,sloc = schemat + "u" ;
|
||||
sins = schemat + "em" ;
|
||||
|
||||
pnom,pacc = schemat + "a" ;
|
||||
pgen = schemat ;
|
||||
pdat = schemat + "ům" ;
|
||||
ploc = schemat + "ech" ;
|
||||
pins = schemat + "y" ;
|
||||
g = Neutr
|
||||
} ;
|
||||
|
||||
-- the hrad type with genitive -a instead of -u (les - lesa, zákon - zákona)
|
||||
declHRADAstem : Str -> DeclensionType = \les_,les ->
|
||||
declHRADstem les_ les ** {sgen = les_ + "a"} ;
|
||||
|
||||
declHRADA : DeclensionType = \les ->
|
||||
declHRADAstem (dropFleetingE les) les ;
|
||||
|
||||
-- nouns that are adjectives in form: proměnná - proměnné, nultý - nultého
|
||||
declADJF : DeclensionType = \promenna ->
|
||||
let a = mladyAdjForms (init promenna + "ý")
|
||||
in {
|
||||
snom,svoc = a.fsnom ;
|
||||
sgen = a.fsgen ;
|
||||
sdat,sloc = a.fsdat ;
|
||||
sacc = a.fsacc ;
|
||||
sins = a.fsins ;
|
||||
pnom,pacc = a.fpnom ;
|
||||
pgen,ploc = a.pgen ;
|
||||
pdat = a.msins ;
|
||||
pins = a.pins ;
|
||||
g = Fem
|
||||
} ;
|
||||
|
||||
declADJM : DeclensionType = \nulty ->
|
||||
let a = mladyAdjForms nulty
|
||||
in {
|
||||
snom,sacc,svoc = a.msnom ;
|
||||
sgen = a.msgen ;
|
||||
sdat = a.msdat ;
|
||||
sloc = a.msloc ;
|
||||
sins = a.msins ;
|
||||
pnom,pacc = a.fpnom ;
|
||||
pgen,ploc = a.pgen ;
|
||||
pdat = a.msins ;
|
||||
pins = a.pins ;
|
||||
g = Masc Inanim
|
||||
} ;
|
||||
|
||||
-- indeclinable loans: bombé, tamari, software
|
||||
declINVAR : Gender -> DeclensionType = \g,s -> {
|
||||
snom,sgen,sdat,sacc,svoc,sloc,sins = s ;
|
||||
pnom,pgen,pdat,pacc,ploc,pins = s ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
declMUZ : DeclensionType = \muz_ -> --- 3.5.3 : sdat,sloc ; pnom
|
||||
let muz = dropFleetingE muz_
|
||||
in
|
||||
declMUZstem (dropFleetingE muz_) muz_ ;
|
||||
|
||||
declMUZstem : Str -> DeclensionType = \muz,muz_ ->
|
||||
{
|
||||
snom = muz_ ;
|
||||
sgen,sacc = muz + "e" ; --- pacc
|
||||
@@ -726,7 +829,6 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
|
||||
|
||||
Ag _ Pl P1 => jarniAdjForms "naše" ** {
|
||||
msnom = "náš" ;
|
||||
msins = "naším" ;
|
||||
fsgen,mpnom = "naši" ;
|
||||
fsins = "naší" ;
|
||||
pdat, msins = "našim" ;
|
||||
@@ -735,7 +837,6 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
|
||||
} ;
|
||||
Ag _ Pl P2 => jarniAdjForms "vaše" ** {
|
||||
msnom = "váš" ;
|
||||
msins = "vaším" ;
|
||||
fsgen,mpnom = "vaši" ;
|
||||
fsins = "vaší" ;
|
||||
pdat, msins = "vašim" ;
|
||||
|
||||
@@ -28,5 +28,24 @@ lin
|
||||
pol.s ++ verbAgr rcl.verb a pol.p ++
|
||||
rcl.compl ! a ;
|
||||
} ;
|
||||
|
||||
|
||||
-- no imperative in VerbForms yet; the 1st person plural present is used
|
||||
-- instead, which is the normal register in mathematical Czech
|
||||
-- ("předpokládáme, že ..." = "we assume that ...")
|
||||
ImpVP vp = let agr = Ag (Masc Anim) Pl P1 in
|
||||
{s = vp.clit ! agr ++ verbAgr vp.verb agr True ++ vp.compl ! agr} ;
|
||||
|
||||
EmbedS s = {s = "že" ++ s.s} ;
|
||||
|
||||
EmbedQS qs = {s = qs.s} ;
|
||||
|
||||
EmbedVP vp = let agr = Ag Neutr Sg P3 in
|
||||
{s = vp.clit ! agr ++ vp.verb.inf ++ vp.compl ! agr} ;
|
||||
|
||||
AdvS a s = {s = a.s ++ s.s} ;
|
||||
|
||||
ExtAdvS a s = {s = a.s ++ SOFT_BIND ++ "," ++ s.s} ;
|
||||
|
||||
SSubjS a subj b = {s = a.s ++ SOFT_BIND ++ "," ++ subj.s ++ b.s} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,42 @@
|
||||
concrete StructuralCze of Structural = CatCze **
|
||||
open ParadigmsCze, ResCze, Prelude in {
|
||||
|
||||
-- a singular determiner inflecting like an adjective, e.g. "každý", "nějaký"
|
||||
oper
|
||||
adjDet : AdjForms -> Determiner = \afs -> {
|
||||
s = \\g,c => (adjFormsAdjective afs).s ! g ! Sg ! c ;
|
||||
size = Num1
|
||||
} ;
|
||||
|
||||
lin
|
||||
all_Predet = {s = "všechny"} ;
|
||||
and_Conj = mkConj "a" ;
|
||||
both7and_DConj = {s1 = "jak" ; s2 = "tak"} ;
|
||||
between_Prep = mkPrep "mezi" Ins ;
|
||||
by8agent_Prep = mkPrep "od" Gen ; ---- TODO this means "from", there might be no good translation
|
||||
by8means_Prep = mkPrep "pomocí" Gen ;
|
||||
can_VV = {
|
||||
inf = "moci" ;
|
||||
pressg1 = "mohu" ;
|
||||
pressg2 = "můžeš" ;
|
||||
pressg3, negpressg3 = "může" ;
|
||||
prespl1 = "můžeme" ;
|
||||
prespl2 = "můžete" ;
|
||||
prespl3 = "mohou" ;
|
||||
pastpartsg = "mohl" ;
|
||||
pastpartpl = "mohli" ;
|
||||
} ;
|
||||
either7or_DConj = {s1 = "buď" ; s2 = "nebo"} ;
|
||||
every_Det = adjDet (mladyAdjForms "každý") ;
|
||||
few_Det = invarNumeral "málo" ; -- CEG 6.8 --- TODO genitive mála
|
||||
for_Prep = mkPrep "pro" accusative ;
|
||||
if_Subj = {s = "jestliže"} ;
|
||||
no_Quant = adjFormsAdjective (mladyAdjForms "žádný") ;
|
||||
on_Prep = mkPrep "na" Loc ;
|
||||
someSg_Det = adjDet (mladyAdjForms "nějaký") ;
|
||||
that_Subj = {s = "že"} ;
|
||||
under_Prep = mkPrep "pod" Ins ;
|
||||
where_IAdv = {s = "kde"} ;
|
||||
from_Prep = mkPrep (pre {"s"|"z" => "ze" ; _ => "z"}) Gen ; ---- consonant clusters
|
||||
have_V2 = mkV2 haveVerbForms ;
|
||||
in_Prep = mkPrep (pre {"v"|"m" => "ve" ; _ => "v"}) Loc ; ----
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user