mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
Compare commits
58 Commits
20260403
...
fix-somali
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba879527ab | ||
|
|
4ab63d2d66 | ||
|
|
41e3b8280b | ||
|
|
4a3e30a1cd | ||
|
|
9458f96f0b | ||
|
|
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 |
@@ -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 ACard = {s : Str} ;
|
||||
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 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; spec : 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; spec : 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)) ++
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -8,7 +8,7 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
|
||||
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 ;
|
||||
@@ -30,7 +30,6 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
|
||||
} ;
|
||||
|
||||
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 ;
|
||||
|
||||
@@ -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
|
||||
} ;
|
||||
|
||||
@@ -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="&"};
|
||||
@@ -701,75 +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
|
||||
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 ="#"};
|
||||
|
||||
|
||||
--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
|
||||
@@ -795,78 +723,6 @@ 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 ="#"};
|
||||
|
||||
|
||||
|
||||
|
||||
--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 ="&"};
|
||||
@@ -935,10 +791,6 @@ 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} ; ---
|
||||
|
||||
@@ -1,4 +1,19 @@
|
||||
concrete AdjectiveHye of Adjective = CatHye ** {
|
||||
concrete AdjectiveHye of Adjective = CatHye ** open ResHye, Prelude in {
|
||||
lin
|
||||
PositA a = a ;
|
||||
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
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
6
src/armenian/AdverbHye.gf
Normal file
6
src/armenian/AdverbHye.gf
Normal file
@@ -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
|
||||
}} ;
|
||||
}
|
||||
@@ -1,16 +1,63 @@
|
||||
concrete CatHye of Cat = CommonX ** open ResHye in {
|
||||
|
||||
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 N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||
lincat CN = Noun ;
|
||||
lincat A = Adj ;
|
||||
lincat A2 = Adj ** {c2 : Compl} ;
|
||||
lincat AP = Adj ;
|
||||
lincat Prep = Compl ;
|
||||
|
||||
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} ;
|
||||
}
|
||||
|
||||
@@ -15,50 +15,50 @@ lin
|
||||
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))) ++
|
||||
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 ++
|
||||
paragraph x.passive ++
|
||||
heading1 "Participle" ++
|
||||
frameTable (
|
||||
tr (th "Resultative" ++ td (x.Participle ! Resultative)) ++
|
||||
tr (th "Subject" ++ td (x.Participle ! Subject))) ++
|
||||
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))) ++
|
||||
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)) ++
|
||||
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))) ++
|
||||
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)) ++
|
||||
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))) ++
|
||||
th "P1" ++ td (x.conditional ! Non_Past ! P1 ! Sg) ++ td (x.conditional ! Non_Past ! P1 ! Pl)) ++
|
||||
tr (th "P2" ++ td (x.conditional ! Non_Past ! P2 ! Sg) ++ td (x.conditional ! Non_Past ! P2 ! Pl)) ++
|
||||
tr (th "P3" ++ td (x.conditional ! Non_Past ! P3 ! Sg) ++ td (x.conditional ! Non_Past ! P3 ! Pl))) ++
|
||||
heading1 "Imperative" ++
|
||||
frameTable (
|
||||
tr (th "Sg" ++ th "Pl") ++
|
||||
tr (td (x.Imperative_Jussive ! Sg) ++ td (x.Imperative_Jussive ! Pl))) ;
|
||||
tr (td (x.imperative ! Sg) ++ td (x.imperative ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
|
||||
@@ -2,5 +2,9 @@ concrete GrammarHye of Grammar =
|
||||
TenseX,
|
||||
PhraseHye,
|
||||
NounHye,
|
||||
AdjectiveHye ** {
|
||||
VerbHye,
|
||||
AdjectiveHye,
|
||||
AdverbHye,
|
||||
SentenceHye,
|
||||
StructuralHye ** {
|
||||
}
|
||||
@@ -1,2 +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
@@ -1,4 +1,35 @@
|
||||
concrete NounHye of Noun = CatHye ** {
|
||||
lin
|
||||
UseN n = n ;
|
||||
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} ;
|
||||
}
|
||||
|
||||
@@ -468,16 +468,19 @@ oper
|
||||
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} ;
|
||||
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} ;
|
||||
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} ;
|
||||
mkDet : Str -> Det = \s -> lin Det {s=s} ;
|
||||
mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
||||
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
|
||||
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
||||
@@ -488,4 +491,10 @@ oper
|
||||
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}
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
resource ResHye = {
|
||||
resource ResHye = ParamX ** {
|
||||
|
||||
param Aspect = Non_Past | Perfect ;
|
||||
param Person = P1 | P3 | P2 ;
|
||||
param Number = Sg | Pl ;
|
||||
param Case = Nom | Dat | Ablat | Instr | Loc ;
|
||||
param PartType = Resultative | Subject ;
|
||||
oper Verb = {s: Str; Causative: Str; Conditional: Aspect => Person => Number => Str; Converb: {Imperfective: Str; FutCon1: Str; FutCon2: Str; Negative: Str; Perfective: Str; Simultaneous: Str}; Imperative_Jussive: Number => Str; Passive: Str; Past: Person => Number => Str; Participle: PartType => Str; Subjunctive: Aspect => Person => Number => Str} ; -- 898
|
||||
oper 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 {
|
||||
causative = f2 ;
|
||||
conditional = table {
|
||||
Perfect => table {
|
||||
P1 => table {
|
||||
Sg => f3 ;
|
||||
@@ -40,19 +38,19 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Converb = { Imperfective = f15 ;
|
||||
FutCon1 = f16 ;
|
||||
FutCon2 = f17 ;
|
||||
Negative = f18 ;
|
||||
Perfective = f19 ;
|
||||
Simultaneous = f20
|
||||
converb = { imperfective = f15 ;
|
||||
futCon1 = f16 ;
|
||||
futCon2 = f17 ;
|
||||
negative = f18 ;
|
||||
perfective = f19 ;
|
||||
simultaneous = f20
|
||||
} ;
|
||||
Imperative_Jussive = table {
|
||||
imperative = table {
|
||||
Sg => f21 ;
|
||||
Pl => f22
|
||||
} ;
|
||||
Passive = f23 ;
|
||||
Past = table {
|
||||
passive = f23 ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => f24 ;
|
||||
Pl => f25
|
||||
@@ -66,11 +64,11 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
Pl => f29
|
||||
}
|
||||
} ;
|
||||
Participle = table {
|
||||
participle = table {
|
||||
Resultative => f30 ;
|
||||
Subject => f31
|
||||
} ;
|
||||
Subjunctive = table {
|
||||
subjunctive = table {
|
||||
Perfect => table {
|
||||
P1 => table {
|
||||
Sg => f32 ;
|
||||
@@ -102,7 +100,8 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
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 ->
|
||||
|
||||
14
src/armenian/SentenceHye.gf
Normal file
14
src/armenian/SentenceHye.gf
Normal file
@@ -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} ;
|
||||
}
|
||||
8
src/armenian/StructuralHye.gf
Normal file
8
src/armenian/StructuralHye.gf
Normal file
@@ -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 ;
|
||||
}
|
||||
35
src/armenian/VerbHye.gf
Normal file
35
src/armenian/VerbHye.gf
Normal file
@@ -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 ;
|
||||
}
|
||||
@@ -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 ;
|
||||
|
||||
@@ -39,8 +39,8 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
|
||||
|
||||
DetQuant quant num = {
|
||||
s = quant.s ! num.hasCard ! num.n ++ num.s ! quant.isDef ! Nom;
|
||||
sp = \\g,hasAdj,c => case <num.hasCard,num.n> of {
|
||||
<False,Sg> => quant.sp ! g ! hasAdj ! num.n ! c ++ num.s ! quant.isDef ! Nom ;
|
||||
sp = \\g,hasAdj,c => case num.hasCard of {
|
||||
False => quant.sp ! g ! hasAdj ! num.n ! c ++ num.s ! quant.isDef ! Nom ;
|
||||
_ => quant.s ! True ! num.n ++ num.sp ! quant.isDef ! npcase2case c
|
||||
} ;
|
||||
n = num.n ;
|
||||
|
||||
@@ -10,7 +10,11 @@ lincat
|
||||
lin
|
||||
InflectionN,InflectionN2,InflectionN3 = \x -> {
|
||||
t="n" ;
|
||||
s1="" ;
|
||||
s1 = heading1 ("Noun" ++ case x.g of {
|
||||
Neuter=> "(neuter)";
|
||||
Masc => "(masc)";
|
||||
Fem => "(fem)"
|
||||
}) ;
|
||||
s2=frameTable (
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Indef" ++ th "Def") ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Sg" ++
|
||||
@@ -30,17 +34,17 @@ lin
|
||||
t="a" ;
|
||||
s1="" ;
|
||||
s2=frameTable (
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Masc" ++ th "Fem" ++ th "Neutr") ++
|
||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Masc" ++ th "Fem" ++ th "Neuter") ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Sg" ++
|
||||
th "Nom" ++ td (x.s ! Masc ! Sg ! Nom) ++ td (x.s ! Fem ! Sg ! Nom) ++ td (x.s ! Neutr ! Sg ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Masc ! Sg ! Acc) ++ td (x.s ! Fem ! Sg ! Acc) ++ td (x.s ! Neutr ! Sg ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Masc ! Sg ! Dat) ++ td (x.s ! Fem ! Sg ! Dat) ++ td (x.s ! Neutr ! Sg ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Masc ! Sg ! Gen) ++ td (x.s ! Fem ! Sg ! Gen) ++ td (x.s ! Neutr ! Sg ! Gen)) ++
|
||||
th "Nom" ++ td (x.s ! Masc ! Sg ! Nom) ++ td (x.s ! Fem ! Sg ! Nom) ++ td (x.s ! Neuter ! Sg ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Masc ! Sg ! Acc) ++ td (x.s ! Fem ! Sg ! Acc) ++ td (x.s ! Neuter ! Sg ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Masc ! Sg ! Dat) ++ td (x.s ! Fem ! Sg ! Dat) ++ td (x.s ! Neuter ! Sg ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Masc ! Sg ! Gen) ++ td (x.s ! Fem ! Sg ! Gen) ++ td (x.s ! Neuter ! Sg ! Gen)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Pl" ++
|
||||
th "Nom" ++ td (x.s ! Masc ! Pl ! Nom) ++ td (x.s ! Fem ! Pl ! Nom) ++ td (x.s ! Neutr ! Pl ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Masc ! Pl ! Acc) ++ td (x.s ! Fem ! Pl ! Acc) ++ td (x.s ! Neutr ! Pl ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Masc ! Pl ! Dat) ++ td (x.s ! Fem ! Pl ! Dat) ++ td (x.s ! Neutr ! Pl ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Masc ! Pl ! Gen) ++ td (x.s ! Fem ! Pl ! Gen) ++ td (x.s ! Neutr ! Pl ! Gen))) ;
|
||||
th "Nom" ++ td (x.s ! Masc ! Pl ! Nom) ++ td (x.s ! Fem ! Pl ! Nom) ++ td (x.s ! Neuter ! Pl ! Nom)) ++
|
||||
tr (th "Acc" ++ td (x.s ! Masc ! Pl ! Acc) ++ td (x.s ! Fem ! Pl ! Acc) ++ td (x.s ! Neuter ! Pl ! Acc)) ++
|
||||
tr (th "Dat" ++ td (x.s ! Masc ! Pl ! Dat) ++ td (x.s ! Fem ! Pl ! Dat) ++ td (x.s ! Neuter ! Pl ! Dat)) ++
|
||||
tr (th "Gen" ++ td (x.s ! Masc ! Pl ! Gen) ++ td (x.s ! Fem ! Pl ! Gen) ++ td (x.s ! Neuter ! Pl ! Gen))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
lin
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,10 +3,10 @@ resource ResFao = {
|
||||
param Species = Indef | Def ;
|
||||
param Number = Sg | Pl ;
|
||||
param Case = Nom | Acc | Dat | Gen ;
|
||||
param Gender = Neutr | Fem | Masc ;
|
||||
oper Noun = {s: Species => Number => Case => Str} ; -- 2135
|
||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16 ->
|
||||
param Gender = Masc | Fem | Neuter ;
|
||||
oper Noun = {s: Species => Number => Case => Str; g : Gender} ; -- 2135
|
||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,g ->
|
||||
{ s = table {
|
||||
Indef => table {
|
||||
Sg => table {
|
||||
@@ -36,7 +36,8 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun =
|
||||
Gen => f16
|
||||
}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
@@ -72,7 +73,7 @@ oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
|
||||
Gen => f16
|
||||
}
|
||||
} ;
|
||||
Neutr => table {
|
||||
Neuter=> table {
|
||||
Sg => table {
|
||||
Nom => f17 ;
|
||||
Acc => f18 ;
|
||||
|
||||
@@ -670,31 +670,6 @@ resource ResGre = ParamX ** open Prelude in {
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
mkNoun_anthropos : (s1,_ : Str) -> Gender -> Noun =
|
||||
\anthropos, anthropon, g ->
|
||||
let
|
||||
anthrop = Predef.tk 2 anthropos ;
|
||||
anthrOp = Predef.tk 2 anthropon ;
|
||||
in {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Nom => anthropos ;
|
||||
Gen|CPrep P_Dat => anthrOp + "ου" ;
|
||||
Acc |CPrep P_se |CPrep PNul => anthrop + "ο";
|
||||
Vocative => anthrop + "ε"
|
||||
} ;
|
||||
Pl => table {
|
||||
Nom | Vocative=> anthrop + "οι" ;
|
||||
Gen |CPrep P_Dat=> anthropon ;
|
||||
Acc |CPrep P_se |CPrep PNul => anthrOp + "ους"
|
||||
}
|
||||
} ;
|
||||
g = g
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
----------------Neuter nouns in -ς , with stress movement,syllabic augmentation, irregular (φως, γεγονός, ημίφως) --------------
|
||||
mkNoun_fws: (s1,_ : Str) -> Gender -> Noun =
|
||||
\fws, fwtos, g ->
|
||||
|
||||
@@ -72,9 +72,7 @@ taC1C2eC3o = { C1 = "ת" ; C1C2=""; C2C3 =""; C3="ו"};
|
||||
taC1C2aC3nah = { C1 = "ת" ; C1C2=""; C2C3 =""; C3="נה"};
|
||||
|
||||
yaC1C2aC3 = { C1 = "י" ; C1C2=""; C2C3 =""; C3=""};
|
||||
taC1C2aC3 = { C1 = "ת" ; C1C2=""; C2C3 =""; C3=""};
|
||||
yaC1C2aC3u = { C1 = "י" ; C1C2=""; C2C3 =""; C3="ו"};
|
||||
taC1C2aC3nah = { C1 = "ת" ; C1C2=""; C2C3 =""; C3="נה"};
|
||||
|
||||
|
||||
C1uC2aC3 = { C1 = "" ; C1C2="ו"; C2C3 =""; C3=""};
|
||||
|
||||
@@ -1,13 +1,69 @@
|
||||
concrete CatKaz of Cat = CommonX ** open ResKaz in {
|
||||
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||
lincat V, VA, VV, VS, VQ = Verb ;
|
||||
lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
|
||||
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
||||
concrete CatKaz of Cat = CommonX ** open Prelude,ResKaz in {
|
||||
lincat A = {s : Str} ;
|
||||
lincat A2 = A ** {c2 : Compl} ;
|
||||
lincat ACard = {s : Str} ;
|
||||
lincat AP = {s : Str} ;
|
||||
lincat CN = {s : Case => Str} ;
|
||||
lincat Card = {s : Str} ;
|
||||
lincat Cl = {infinitive : Case => 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} ;
|
||||
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 = {s : Case => Number => Str;
|
||||
poss : Number => Person => Number => Str} ;
|
||||
lincat N2 = {s : Case => Number => Str;
|
||||
poss : Number => Person => Number => Str; c2 : {s : Str}} ;
|
||||
lincat N3 = {s : Case => Number => Str;
|
||||
poss : Number => Person => Number => Str; c2 : {s : Str};
|
||||
c3 : {s : Str}} ;
|
||||
lincat NP = {s : Case => Str} ;
|
||||
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 ;
|
||||
|
||||
lincat Pron = {s : Str} ;
|
||||
lincat QCl = {s : Str} ;
|
||||
lincat QS = {s : Str} ;
|
||||
lincat Quant = {s : Str} ;
|
||||
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 = {infinitive : Case => Str;
|
||||
indicative : {fut : Case => Str;
|
||||
pres : {progressive : Polarity => Case => Str;
|
||||
noAspect : Polarity => Case => Str};
|
||||
past : {perfect : Polarity => Case => Str;
|
||||
progressive : Polarity => Case => Str;
|
||||
noAspect : Polarity => Case => Str}};
|
||||
subjunctive : Person => Case => Str} ;
|
||||
lincat VPSlash = {infinitive : Str;
|
||||
indicative : {fut : Str;
|
||||
pres : {progressive : Polarity => Person => Number => Str;
|
||||
noAspect : Polarity => Person => Number => Str};
|
||||
past : {perfect : Polarity => Person => Number => Str;
|
||||
progressive : Polarity => Person => Number => Str;
|
||||
noAspect : Polarity => Person => Number => Str}};
|
||||
imperative : Polarity => Formality => Number => Str;
|
||||
subjunctive : Person => Number => Str} ;
|
||||
}
|
||||
|
||||
@@ -34,118 +34,118 @@ lin InflectionV, InflectionV2, InflectionV3, InflectionV2V, InflectionV2S,
|
||||
InflectionVQ, InflectionVA = \x -> {
|
||||
t="v" ;
|
||||
s1="" ;
|
||||
s2=heading2 "Infinitive" ++ paragraph (x.Infinitive) ++
|
||||
-- tr (th "Indicative" ++ th "Fut" ++ td (x.Indicative.Fut)) ++
|
||||
s2=heading2 "Infinitive" ++ paragraph (x.infinitive) ++
|
||||
-- tr (th "Indicative" ++ th "Fut" ++ td (x.indicative.Fut)) ++
|
||||
heading2 "Present"++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.noAspect ! Neg ! P3 ! Pl))) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.pres.noAspect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.noAspect ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Present Progressive"++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Pos ! P1 ! Sg))++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Pres.Progressive ! Neg ! P3 ! Pl))) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Pos ! P1 ! Sg))++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.pres.progressive ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.pres.progressive ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Past" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.noAspect ! Neg ! P3 ! Pl))) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.past.noAspect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.noAspect ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Past Perfect" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Perfect ! Neg ! P3 ! Pl))) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.past.perfect ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.past.perfect ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.past.perfect ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.past.perfect ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.past.perfect ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.past.perfect ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.past.perfect ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.past.perfect ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.perfect ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Past Progressive" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Indicative.Past.Progressive ! Neg ! P3 ! Pl))) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.past.progressive ! Pos ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Pos ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.past.progressive ! Pos ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Pos ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.past.progressive ! Pos ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Pos ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.past.progressive ! Pos ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Pos ! P3 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"6\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.indicative.past.progressive ! Neg ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Neg ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.indicative.past.progressive ! Neg ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Neg ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.indicative.past.progressive ! Neg ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Neg ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.indicative.past.progressive ! Neg ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.indicative.past.progressive ! Neg ! P3 ! Pl))) ++
|
||||
heading2 "Imperative" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "Informal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Pos ! Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Pos ! Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Pos ! Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Pos ! Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "Informal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Neg ! Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Neg ! Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Neg ! Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Neg ! Formal ! Pl))) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "Informal" ++ th "Sg" ++ td (x.imperative ! Pos ! Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative ! Pos ! Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.imperative ! Pos ! Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative ! Pos ! Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"4\"" "Neg" ++ intagAttr "th" "rowspan=\"2\"" "Informal" ++ th "Sg" ++ td (x.imperative ! Neg ! Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative ! Neg ! Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.imperative ! Neg ! Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.imperative ! Neg ! Formal ! Pl))) ++
|
||||
heading2 "Subjunctive" ++
|
||||
frameTable (
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Subjunctive ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Subjunctive ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Subjunctive ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Subjunctive ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Subjunctive ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Subjunctive ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Subjunctive ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.Subjunctive ! P3 ! Pl))) ;
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.subjunctive ! P1 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.subjunctive ! P1 ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.subjunctive ! P2 Informal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.subjunctive ! P2 Informal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.subjunctive ! P2 Formal ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.subjunctive ! P2 Formal ! Pl)) ++
|
||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.subjunctive ! P3 ! Sg)) ++
|
||||
tr (th "Pl" ++ td (x.subjunctive ! P3 ! Pl))) ;
|
||||
s3=[]
|
||||
} ;
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -81,12 +81,12 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str
|
||||
|
||||
|
||||
param Polarity = Pos | Neg ;
|
||||
oper Verb = {Infinitive: Str; Indicative: {Fut: Str; Pres: {Progressive: Polarity => Person => Number => Str; noAspect: Polarity => Person => Number => Str}; Past: {Perfect: Polarity => Person => Number => Str; Progressive: Polarity => Person => Number => Str; noAspect: Polarity => Person => Number => Str}}; Imperative_Jussive: Polarity => Formality => Number => Str; Subjunctive: Person => Number => Str} ; -- 113
|
||||
oper Verb = {infinitive: Str; indicative: {fut: Str; pres: {progressive: Polarity => Person => Number => Str; noAspect: Polarity => Person => Number => Str}; past: {perfect: Polarity => Person => Number => Str; progressive: Polarity => Person => Number => Str; noAspect: Polarity => Person => Number => Str}}; imperative: Polarity => Formality => Number => Str; subjunctive: Person => Number => Str} ; -- 113
|
||||
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,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64,f65,f66,f67,f68,f69,f70,f71,f72,f73,f74,f75,f76,f77,f78,f79,f80,f81,f82,f83,f84,f85,f86,f87,f88,f89,f90,f91,f92,f93,f94,f95,f96,f97,f98 ->
|
||||
{ Infinitive = f1 ;
|
||||
Indicative = { Fut = f2 ;
|
||||
Pres = { Progressive = table {
|
||||
{ infinitive = f1 ;
|
||||
indicative = { fut = f2 ;
|
||||
pres = { progressive = table {
|
||||
Pos => table {
|
||||
P1 => table {
|
||||
Sg => f3 ;
|
||||
@@ -163,7 +163,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Past = { Perfect = table {
|
||||
past = { perfect = table {
|
||||
Pos => table {
|
||||
P1 => table {
|
||||
Sg => f35 ;
|
||||
@@ -201,7 +201,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Progressive = table {
|
||||
progressive = table {
|
||||
Pos => table {
|
||||
P1 => table {
|
||||
Sg => f51 ;
|
||||
@@ -279,7 +279,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Imperative_Jussive = table {
|
||||
imperative = table {
|
||||
Pos => table {
|
||||
Informal => table {
|
||||
Sg => f83 ;
|
||||
@@ -301,7 +301,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
}
|
||||
}
|
||||
} ;
|
||||
Subjunctive = table {
|
||||
subjunctive = table {
|
||||
P1 => table {
|
||||
Sg => f91 ;
|
||||
Pl => f92
|
||||
|
||||
@@ -1,4 +1,23 @@
|
||||
concrete AdjectiveMkd of Adjective = CatMkd ** open Prelude,ResMkd in {
|
||||
|
||||
lin AdAP a ap = {s = \\s,g => a.s ++ ap.s ! s ! g;
|
||||
isPre = ap.isPre} ;
|
||||
lin AdjOrd o = {s = o.s; isPre = False} ;
|
||||
lin AdvAP ap adv = {
|
||||
s = \\s,g => ap.s ! s ! g ++ adv.s;
|
||||
isPre = False
|
||||
} ;
|
||||
lin CAdvAP c ap np = {s = \\s,g => c.s
|
||||
++ ap.s ! s ! g ++ np.s ! RSubj;
|
||||
isPre = ap.isPre} ;
|
||||
lin ComparA a np = {s = \\s,g => "по" ++ BIND ++ a.s ! s ! g ++ "од" ++ np.s ! RPrep;
|
||||
isPre = False} ;
|
||||
lin ComplA2 a2 np = {s = \\s,g => a2.s ! s ! g ++ a2.c2.s ++ np.s ! RObj a2.c2.c;
|
||||
isPre = False} ;
|
||||
lin PositA a = a ** {isPre = True} ;
|
||||
lin ReflA2 a2 = {s = \\s,g => a2.s ! s ! g; isPre = False} ;
|
||||
lin SentAP ap sc = {s = \\s,g => ap.s ! s ! g ++ sc.s;
|
||||
isPre = ap.isPre} ;
|
||||
lin UseA2 a2 = {s = a2.s; isPre = True} ;
|
||||
lin UseComparA a = {s = \\s,g => "по" ++ BIND ++ a.s ! s ! g; isPre = True} ;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
concrete AdverbMkd of Adverb = CatMkd ** open Prelude,ResMkd in {
|
||||
lin AdAdv a a2 = {s = a.s ++ a2.s} ;
|
||||
lin AdnCAdv c = {s = c.s} ;
|
||||
lin ComparAdvAdj c a np = {s = c.s
|
||||
++ a.s ! Indef ! np.a.g ++ np.s ! RSubj} ;
|
||||
lin ComparAdvAdjS c a s = {s = c.s
|
||||
++ a.s ! Indef ! GSg Masc ++ s.s} ;
|
||||
lin PositAdAAdj a = {s = a.s ! Indef ! GSg Masc} ;
|
||||
lin PositAdvAdj a = {s = a.s ! Indef ! GSg Masc} ;
|
||||
lin PrepNP p np = {s = p.s ++ np.s ! RPrep} ;
|
||||
lin SubjS s s2 = {s = s.s ++ s2.s} ;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
--# -path=.:../abstract:../common:../prelude:../api
|
||||
|
||||
concrete AllMkd of AllMkdAbs =
|
||||
LangMkd
|
||||
LangMkd,
|
||||
ExtendMkd
|
||||
** {
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
abstract AllMkdAbs =
|
||||
Lang
|
||||
Lang,
|
||||
Extend
|
||||
** {
|
||||
|
||||
} ;
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
concrete CatMkd of Cat = CommonX ** open ResMkd, Prelude in {
|
||||
concrete CatMkd of Cat = CommonX - [Temp,Tense] ** open ParamX, ResMkd, Prelude, Predef in {
|
||||
|
||||
lincat
|
||||
Temp = {s : Str ; t : ResMkd.Tense ; a : Anteriority} ;
|
||||
Tense = {s : Str ; t : ResMkd.Tense} ;
|
||||
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
@@ -9,7 +13,7 @@ lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
|
||||
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
||||
lincat A = Adj ;
|
||||
lincat A2 = Adj ** {c2 : Compl} ;
|
||||
lincat Pron = Pron ;
|
||||
lincat Pron = Pronoun ;
|
||||
lincat Prep = Compl ;
|
||||
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
|
||||
lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
||||
@@ -17,33 +21,35 @@ lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
||||
linref N,N2,N3 = \n -> n.s ! Indef ! Sg ;
|
||||
linref V, VA, VV, VS, VQ, V2, V2S, V2Q, V3, V2A, V2V =
|
||||
\v -> v.present ! Imperfective ! Sg ! P3 ++
|
||||
case v.isRefl of {
|
||||
True => "се" ;
|
||||
False => []
|
||||
case v.vtype of {
|
||||
VNormal => [] ;
|
||||
VMedial Acc => "се" ;
|
||||
VMedial Dat => "си"
|
||||
} ;
|
||||
linref A, A2 = \a -> a.s ! Indef ! GSg Masc ;
|
||||
|
||||
lincat AP = {s : Species => GenNum => Str; isPre : Bool} ;
|
||||
lincat NP = {s : Role => Str; vocative: Str; g : GenNum; p : Person} ;
|
||||
lincat Num = {s : Str; n : Number} ;
|
||||
lincat Quant = {s : Str; sp : Species} ;
|
||||
lincat Det = {s : Str; n : Number; sp : Species} ;
|
||||
lincat NP = {s : Role => Str; vocative: Str; a : Agr} ;
|
||||
lincat Num = {s : Str; n : NNumber} ;
|
||||
lincat Quant = {s : GenNum => Str; sp : Species} ;
|
||||
lincat Ord = {s : Species => GenNum => Str} ;
|
||||
lincat Det, DAP = {s : Gender => Str; n : NNumber; sp : Species} ;
|
||||
|
||||
lincat VP = {present : Aspect => Number => Person => Str;
|
||||
aorist : Number => Person => Str;
|
||||
imperfect : Aspect => Number => Person => Str;
|
||||
imperative : Aspect => Number => Str;
|
||||
participle : {aorist : Aspect => GenNum => Str; perfect : Aspect => Str}} ;
|
||||
lincat VPSlash = {present : Aspect => Number => Person => Str;
|
||||
aorist : Number => Person => Str;
|
||||
imperfect : Aspect => Number => Person => Str;
|
||||
imperative : Aspect => Number => Str;
|
||||
participle : {aorist : Aspect => GenNum => Str;
|
||||
imperfect : GenNum => Str; perfect : Aspect => Str;
|
||||
adjectival : Aspect => Str; adverbial : Str};
|
||||
noun_from_verb : Str; isRefl : Bool; c2 : Compl} ;
|
||||
lincat Cl = {present : Aspect => Str;
|
||||
aorist : Str;
|
||||
participle : {aorist : Aspect => Str; perfect : Aspect => Str}} ;
|
||||
lincat VP = Verb ** {compl : Agr => Str} ;
|
||||
lincat VPSlash = Verb ** {compl : Agr => Str; c2 : Compl} ;
|
||||
lincat S,QS = {s : Str} ;
|
||||
lincat RS = {s : GenNum => Str} ;
|
||||
lincat Cl = {s : Order => ResMkd.Tense => Anteriority => Polarity => Str} ;
|
||||
lincat QCl = {s : ResMkd.Tense => Anteriority => Polarity => Str} ;
|
||||
lincat RCl = {s : GenNum => ResMkd.Tense => Anteriority => Polarity => Str} ;
|
||||
lincat RP = {s : GenNum => Str} ;
|
||||
lincat IP = {s : Str; g : GenNum} ;
|
||||
lincat IQuant = {s : GenNum => Str} ;
|
||||
lincat IDet = {s : Gender => Str; n : Number} ;
|
||||
lincat Subj = {s : Str} ;
|
||||
lincat Imp = {s : Polarity => GenNum => Str} ;
|
||||
lincat Comp = {s : GenNum => Str} ;
|
||||
|
||||
lincat Conj = {s : Str; sep : Ints 3; n : Number} ;
|
||||
|
||||
}
|
||||
|
||||
104
src/macedonian/ConjunctionMkd.gf
Normal file
104
src/macedonian/ConjunctionMkd.gf
Normal file
@@ -0,0 +1,104 @@
|
||||
--# -coding=utf8
|
||||
concrete ConjunctionMkd of Conjunction =
|
||||
CatMkd ** open ResMkd, Coordination, Prelude, Predef in {
|
||||
|
||||
lin
|
||||
ConjS conj ss = {
|
||||
s = linCoord []!conj.sep ++ ss.s!conj.sep ++ conj.s ++ ss.s!4;
|
||||
} ;
|
||||
|
||||
ConjAdv conj ss = {
|
||||
s = linCoord []!conj.sep ++ ss.s!conj.sep ++ conj.s ++ ss.s!4;
|
||||
} ;
|
||||
|
||||
ConjAdV conj ss = {
|
||||
s = linCoord []!conj.sep ++ ss.s!conj.sep ++ conj.s ++ ss.s!4;
|
||||
} ;
|
||||
|
||||
ConjIAdv conj ss = {
|
||||
s = linCoord []!conj.sep ++ ss.s!conj.sep ++ conj.s ++ ss.s!4;
|
||||
} ;
|
||||
|
||||
ConjNP conj ss = {
|
||||
s = \\role => linCoord []!conj.sep ++ ss.s!role!conj.sep ++ conj.s ++ ss.s!role!4;
|
||||
vocative = linCoord []!conj.sep ++ ss.vocative!conj.sep ++ conj.s ++ ss.vocative!4;
|
||||
a = {g = conjGenNum (genNum Masc conj.n) ss.gn; p = ss.p}
|
||||
} ;
|
||||
|
||||
ConjAP conj ss = {
|
||||
s = \\sp,gn => linCoord []!conj.sep ++ ss.s!sp!gn!conj.sep ++ conj.s ++ ss.s!sp!gn!4;
|
||||
isPre = ss.isPre
|
||||
} ;
|
||||
|
||||
ConjRS conj ss = {
|
||||
s = \\gn => linCoord []!conj.sep ++ ss.s!gn!conj.sep ++ conj.s ++ ss.s!gn!4;
|
||||
} ;
|
||||
|
||||
ConjCN conj ss = {
|
||||
s = \\sp,n => linCoord []!conj.sep ++ ss.s!sp!n!conj.sep ++ conj.s ++ ss.s!sp!n!4;
|
||||
count_form = linCoord []!conj.sep ++ ss.count_form!conj.sep ++ conj.s ++ ss.s!Indef!Pl!4;
|
||||
vocative = \\n => linCoord []!conj.sep ++ ss.vocative!n!conj.sep ++ conj.s ++ ss.vocative!n!4;
|
||||
g = ss.g
|
||||
} ;
|
||||
|
||||
-- These fun's are generated from the list cat's.
|
||||
BaseS x y = {s = table {4 => y.s; _ => x.s}} ;
|
||||
ConsS x xs = {s = table {4 => xs.s!4; t => x.s++linCoord bindComma!t++xs.s!t}} ;
|
||||
|
||||
BaseAdv x y = {s = table {4 => y.s; _ => x.s}} ;
|
||||
ConsAdv x xs = {s = table {4 => xs.s!4; t => x.s++linCoord bindComma!t++xs.s!t}} ;
|
||||
|
||||
BaseAdV x y = {s = table {4 => y.s; _ => x.s}} ;
|
||||
ConsAdV x xs = {s = table {4 => xs.s!4; t => x.s++linCoord bindComma!t++xs.s!t}} ;
|
||||
|
||||
BaseIAdv x y = {s = table {4 => y.s; _ => x.s}} ;
|
||||
ConsIAdv x xs = {s = table {4 => xs.s!4; t => x.s++linCoord bindComma!t++xs.s!t}} ;
|
||||
|
||||
BaseNP x y =
|
||||
{s = \\role=>table {4 => y.s!role; _ => x.s!role};
|
||||
vocative = table {4 => y.vocative; _ => x.vocative};
|
||||
gn = conjGenNum x.a.g y.a.g;
|
||||
p = x.a.p} ;
|
||||
ConsNP x xs =
|
||||
{s = \\role=>table {4 => xs.s!role!4; t => x.s!role++linCoord bindComma!t++xs.s!role!t};
|
||||
vocative = table {4 => xs.vocative!4; t => x.vocative++linCoord bindComma!t++xs.vocative!t};
|
||||
gn = conjGenNum xs.gn x.a.g;
|
||||
p = x.a.p} ;
|
||||
|
||||
BaseAP x y =
|
||||
{s = \\sp,gn => table {4 => y.s!sp!gn; _ => x.s!sp!gn} ;
|
||||
isPre = andB x.isPre y.isPre} ;
|
||||
ConsAP x xs =
|
||||
{s = \\sp,gn => table {4 => xs.s!sp!gn!4; t => x.s!sp!gn++linCoord bindComma!t++xs.s!sp!gn!t};
|
||||
isPre = andB x.isPre xs.isPre} ;
|
||||
|
||||
BaseRS x y =
|
||||
{s = \\gn=>table {4 => y.s!gn; _ => x.s!gn}} ;
|
||||
ConsRS x xs =
|
||||
{s = \\gn=>table {4 => xs.s!gn!4; t => x.s!gn++linCoord bindComma!t++xs.s!gn!t}} ;
|
||||
|
||||
BaseCN x y =
|
||||
{s = \\sp,n=>table {4 => y.s!sp!n; _ => x.s!sp!n};
|
||||
count_form = table {4 => y.count_form; t => x.count_form};
|
||||
vocative = \\n=>table {4 => y.vocative!n; t => x.vocative!n};
|
||||
g = x.g} ;
|
||||
ConsCN x xs =
|
||||
{s = \\sp,n=>table {4 => xs.s!sp!n!4; t => x.s!sp!n++linCoord bindComma!t++xs.s!sp!n!t};
|
||||
count_form = table {4 => xs.count_form!4; t => x.count_form++linCoord bindComma!t++xs.count_form!t};
|
||||
vocative = \\n=>table {4 => xs.vocative!n!4; t => x.vocative!n++linCoord bindComma!t++xs.vocative!n!t};
|
||||
g = x.g} ;
|
||||
|
||||
lincat
|
||||
[S] = {s : Ints 4 => Str} ;
|
||||
[Adv] = {s : Ints 4 => Str} ;
|
||||
[AdV] = {s : Ints 4 => Str} ;
|
||||
[IAdv] = {s : Ints 4 => Str} ;
|
||||
[NP] = {s : Role => Ints 4 => Str; vocative : Ints 4 => Str; gn : GenNum; p : Person} ;
|
||||
[AP] = {s : Species => GenNum => Ints 4 => Str; isPre : Bool} ;
|
||||
[RS] = {s : GenNum => Ints 4 => Str} ;
|
||||
[CN] = {s : Species => Number => Ints 4 => Str ;
|
||||
count_form : Ints 4 => Str ;
|
||||
vocative : Number => Ints 4 => Str ;
|
||||
g : Gender} ;
|
||||
|
||||
}
|
||||
@@ -121,7 +121,7 @@ lin
|
||||
heading3 ("Партицип") ++
|
||||
adjForms (v.participle.aorist ! Imperfective) ++
|
||||
tag "br" ++
|
||||
adjForms v.participle.imperfect ++
|
||||
adjForms (v.participle.imperfect ! Imperfective) ++
|
||||
heading2 ("Свършен вид") ++
|
||||
heading3 ("Изявително наклонение") ++
|
||||
heading4 ("Сегашно време") ++
|
||||
@@ -134,6 +134,8 @@ lin
|
||||
imperative (v.imperative ! Perfective) ++
|
||||
heading3 ("Партицип") ++
|
||||
adjForms (v.participle.aorist ! Perfective) ++
|
||||
tag "br" ++
|
||||
adjForms (v.participle.imperfect ! Perfective) ++
|
||||
heading1 ("Именка") ++
|
||||
v.noun_from_verb ;
|
||||
s3= ""
|
||||
|
||||
38
src/macedonian/ExtendMkd.gf
Normal file
38
src/macedonian/ExtendMkd.gf
Normal file
@@ -0,0 +1,38 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
concrete ExtendMkd of Extend = CatMkd ** open ResMkd, ParadigmsMkd, StructuralMkd in {
|
||||
|
||||
lin
|
||||
CompoundN n1 n2 =
|
||||
let comp : Species => Number => Str
|
||||
= \\sp,n => case n1.relType of {
|
||||
Pref => n1.rel ! sp ! genNum n2.g n ++ n2.s ! sp ! n ;
|
||||
AdjMod => n1.rel ! sp ! genNum n2.g n ++ n2.s ! Indef ! n ;
|
||||
AdvMod => n2.s ! sp ! n ++ n1.rel ! sp ! genNum n2.g n
|
||||
} ;
|
||||
voc : Number => Str
|
||||
= \\n => case n1.relType of {
|
||||
Pref => n1.rel ! Indef ! genNum n2.g n ++ n2.vocative ! n ;
|
||||
AdjMod => n1.rel ! Indef ! genNum n2.g n ++ n2.vocative ! n ;
|
||||
AdvMod => n2.vocative ! n ++ n1.rel ! Indef ! genNum n2.g n
|
||||
}
|
||||
in {
|
||||
s = comp ;
|
||||
count_form = comp ! Indef ! Pl ;
|
||||
vocative = voc ;
|
||||
rel = \\sp,n => "на" ++ comp ! sp ! Sg ; relType = AdvMod ;
|
||||
g = n2.g
|
||||
} ;
|
||||
|
||||
iFem_Pron = mkPron "јас" "мене" "ме" "мене" "ми" "мене" "мој" "мојот" "моја" "мојата" "мое" "моето" "мои" "моите" "ми" (GSg Fem) P1 ;
|
||||
youFem_Pron = mkPron "ти" "тебе" "те" "тебе" "ти" "тебе" "твој" "твојот" "твоја" "твојата" "твое" "твоето" "твои" "твоите" "ти" (GSg Fem) P2 ;
|
||||
weFem_Pron = we_Pron ;
|
||||
youPlFem_Pron = youPl_Pron ;
|
||||
theyFem_Pron = they_Pron ;
|
||||
youPolFem_Pron = mkPron "вие" "вас" "ве" "вам" "ви" "вас" "ваш" "вашиот" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" "ви" (GSg Fem) P2 ;
|
||||
youPolPl_Pron = youPol_Pron ;
|
||||
youPolPlFem_Pron = youPol_Pron ;
|
||||
|
||||
lin TPastSimple = {s = []} ** {t = VPastSimple} ; --# notpresent
|
||||
|
||||
}
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
concrete GrammarMkd of Grammar = VerbMkd,SentenceMkd,NounMkd,AdverbMkd,AdjectiveMkd,NumeralMkd,PhraseMkd,TextX,StructuralMkd,TenseX ** {
|
||||
concrete GrammarMkd of Grammar = NamesMkd,VerbMkd,SentenceMkd,QuestionMkd,NounMkd,AdverbMkd,AdjectiveMkd,IdiomMkd,NumeralMkd,PhraseMkd,RelativeMkd,TextMkd,StructuralMkd,TenseMkd,ConjunctionMkd ** {
|
||||
}
|
||||
|
||||
52
src/macedonian/IdiomMkd.gf
Normal file
52
src/macedonian/IdiomMkd.gf
Normal file
@@ -0,0 +1,52 @@
|
||||
concrete IdiomMkd of Idiom = CatMkd ** open Prelude,ResMkd in {
|
||||
|
||||
lin CleftAdv a s = {s = \\t,a2,p,o => a.s ++ s.s} ;
|
||||
lin CleftNP np rs = {s = \\t,a,p,o => np.s ! RSubj
|
||||
++ rs.s ! np.a.g} ;
|
||||
lin ExistIP ip = {s = \\t,a,p => ip.s} ;
|
||||
lin ExistIPAdv ip a = {s = \\t,a2,p => ip.s ++ a.s} ;
|
||||
lin ExistNP np = {s = \\t,a,p,o => np.s ! RSubj} ;
|
||||
lin ExistNPAdv np a = {s = \\t,a2,p,o => np.s ! RSubj ++ a.s} ;
|
||||
lin GenericCl vp = {s = \\t,a,p,o => vp.present ! Imperfective ! Sg
|
||||
! P1} ;
|
||||
lin ImpP3 np vp = {s = np.s ! RSubj
|
||||
++ vp.present ! Imperfective ! Sg ! np.a.p} ;
|
||||
lin ImpPl1 vp = {s = vp.present ! Imperfective ! Sg ! P1} ;
|
||||
lin ImpersCl vp = {s = \\t,a,p,o => vp.present ! Imperfective ! Sg
|
||||
! P1} ;
|
||||
lin ProgrVP vp = vp ** {
|
||||
present = \\a,n,p => vp.present ! Imperfective ! n ! p ;
|
||||
imperfect = \\a,n,p => vp.imperfect ! Imperfective ! n ! p ;
|
||||
imperative = \\a,n => vp.imperative ! Imperfective ! n ;
|
||||
participle = {aorist = \\a,gn => vp.participle.aorist ! Imperfective ! gn ;
|
||||
perfect = \\a => vp.participle.perfect ! Imperfective ;
|
||||
imperfect = \\a => vp.participle.imperfect ! Imperfective ;
|
||||
adjectival = vp.participle.adjectival ;
|
||||
adverbial = vp.participle.adverbial}
|
||||
} ;
|
||||
|
||||
lin SelfAdVVP vp = {present = \\a,n,p => vp.present ! a ! n ! p;
|
||||
aorist = \\n,p => vp.aorist ! n ! p;
|
||||
imperfect = \\a,n,p => vp.imperfect ! a ! n ! p;
|
||||
imperative = \\a,n => vp.imperative ! a ! n;
|
||||
participle = {aorist = \\a,g => vp.participle.aorist ! a ! g;
|
||||
imperfect = \\a,g => vp.participle.imperfect ! a ! g;
|
||||
perfect = \\a => vp.participle.perfect ! a;
|
||||
adjectival = \\a => vp.participle.adjectival ! a;
|
||||
adverbial = vp.participle.adverbial};
|
||||
noun_from_verb = vp.noun_from_verb; vtype = vp.vtype;
|
||||
compl = \\v => vp.compl ! {g = GSg Masc; p = P1}} ;
|
||||
lin SelfAdvVP vp = {present = \\a,n,p => vp.present ! a ! n ! p;
|
||||
aorist = \\n,p => vp.aorist ! n ! p;
|
||||
imperfect = \\a,n,p => vp.imperfect ! a ! n ! p;
|
||||
imperative = \\a,n => vp.imperative ! a ! n;
|
||||
participle = {aorist = \\a,g => vp.participle.aorist ! a ! g;
|
||||
imperfect = \\a,g => vp.participle.imperfect ! a ! g;
|
||||
perfect = \\a => vp.participle.perfect ! a;
|
||||
adjectival = \\a => vp.participle.adjectival ! a;
|
||||
adverbial = vp.participle.adverbial};
|
||||
noun_from_verb = vp.noun_from_verb; vtype = vp.vtype;
|
||||
compl = \\v => vp.compl ! {g = GSg Masc; p = P1}} ;
|
||||
lin SelfNP np = {s = \\r => np.s ! r; vocative = np.vocative;
|
||||
a = {g = np.a.g; p = np.a.p}} ;
|
||||
}
|
||||
@@ -5,7 +5,14 @@ lin
|
||||
airplane_N = mkN001 "авион" ;
|
||||
apple_N = mkN012 "јаболко" ;
|
||||
bad_A = mkA004 "лош" ;
|
||||
good_A = mkA021 "добар" ;
|
||||
close_V2 = mkV2 (dualV (mkV "затвара") (mkV "затвори")) ;
|
||||
die_V = dualV (mkV002 "умира") (mkV021 "умре") ;
|
||||
door_N = mkN008 "врата" ;
|
||||
factory_N = mkN008 "фабрика" ;
|
||||
fish_N = mkN "риба" ;
|
||||
good_A = mkA021 "добар" ;
|
||||
play_V = mkV001 "игра" ;
|
||||
man_N = mkN001 "маж" ;
|
||||
woman_N = mkN "жена" ;
|
||||
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
18
src/macedonian/NamesMkd.gf
Normal file
18
src/macedonian/NamesMkd.gf
Normal file
@@ -0,0 +1,18 @@
|
||||
concrete NamesMkd of Names = CatMkd ** open Prelude,ResMkd in {
|
||||
lin AdjLN ap ln = {s = ap.s ! Indef ! GSg Masc ++ ln.s} ;
|
||||
lin FemaleSurname sn = {s = \\r => sn.s; vocative = sn.s;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
lin FullName gn sn = {s = \\r => gn.s ++ sn.s;
|
||||
vocative = gn.s ++ sn.s; a = {g = GSg Masc; p = P1}} ;
|
||||
lin GivenName gn = {s = \\r => gn.s; vocative = gn.s;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
lin InLN ln = {s = ln.s} ;
|
||||
lin MaleSurname sn = {s = \\r => sn.s; vocative = sn.s;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
lin PlSurname sn = {s = \\r => sn.s; vocative = sn.s;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
lin PlainLN ln = {s = \\r => ln.s; vocative = ln.s;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
lin UseLN ln = {s = \\r => ln.s; vocative = ln.s;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in {
|
||||
lin AdNum a c = {s = a.s ++ c.s} ;
|
||||
lin AdjCN ap cn = {
|
||||
s = case ap.isPre of {
|
||||
True => \\s,n => ap.s ! s
|
||||
@@ -21,27 +22,133 @@ concrete NounMkd of Noun = CatMkd ** open Prelude,ResMkd in {
|
||||
} ++
|
||||
cn.vocative ! n;
|
||||
count_form = ap.s ! Indef ! GPl ++ cn.count_form; g = cn.g} ;
|
||||
lin AdjDAP d ap = {
|
||||
s = \\g => d.s ! g ++ ap.s ! Indef ! genNum g (nnum2num d.n) ;
|
||||
n = d.n ;
|
||||
sp = d.sp
|
||||
} ;
|
||||
lin AdvCN cn adv = {
|
||||
s = \\s,n => cn.s ! s ! n ++ adv.s;
|
||||
count_form = cn.count_form ++ adv.s;
|
||||
vocative = \\n => cn.vocative ! n ++ adv.s;
|
||||
g = cn.g
|
||||
} ;
|
||||
lin DefArt = {s = []; sp = Def Unspecified} ;
|
||||
lin AdvNP np a = {s = \\r => np.s ! r ++ a.s;
|
||||
vocative = np.vocative ++ a.s; a = np.a} ;
|
||||
lin ApposCN cn np = {s = \\s,n => cn.s ! s ! n ++ np.s ! RSubj;
|
||||
count_form = cn.count_form ++ np.s ! RSubj;
|
||||
vocative = \\n => cn.vocative ! n ++ np.vocative; g = cn.g} ;
|
||||
lin ComplN2 n2 np = {s = \\s,n => n2.s ! s ! n ++ n2.c2.s ++ np.s ! RObj n2.c2.c;
|
||||
count_form = n2.count_form ++ n2.c2.s ++ np.s ! RObj n2.c2.c;
|
||||
vocative = \\n => n2.vocative ! n ++ n2.c2.s ++ np.s ! RObj n2.c2.c;
|
||||
g = n2.g} ;
|
||||
lin ComplN3 n3 np = {s = \\s,n => n3.s ! s ! n ++ n3.c2.s ++ np.s ! RObj n3.c2.c;
|
||||
count_form = n3.count_form ++ n3.c2.s ++ np.s ! RObj n3.c2.c;
|
||||
vocative = \\n => n3.vocative ! n ++ n3.c2.s ++ np.s ! RObj n3.c2.c;
|
||||
rel = \\s,g => n3.s ! s ! genNum2num g ++ n3.c2.s ++ np.s ! RObj n3.c2.c;
|
||||
relType = AdvMod;
|
||||
g = n3.g;
|
||||
c2 = n3.c3} ;
|
||||
lin CountNP d np = {s = \\r => d.s ! Masc ++ np.s ! r;
|
||||
vocative = d.s ! Masc ++ np.vocative;
|
||||
a = np.a} ;
|
||||
lin DefArt = {s = \\_=>[]; sp = Def Unspecified} ;
|
||||
lin DetCN det cn = {
|
||||
s = \\r => det.s ++ cn.s ! det.sp ! det.n;
|
||||
vocative = det.s ++ cn.vocative ! det.n;
|
||||
g = case det.n of {
|
||||
Sg => GSg cn.g;
|
||||
Pl => GPl
|
||||
s = \\r => case det.n of {
|
||||
NNum n => det.s ! cn.g ++ cn.s ! det.sp ! n;
|
||||
NCountable => det.s ! cn.g ++ cn.count_form
|
||||
} ;
|
||||
p = P3;
|
||||
vocative = det.s ! cn.g ++ cn.vocative ! nnum2num det.n ;
|
||||
a = {g = genNum cn.g (nnum2num det.n) ;
|
||||
p = P3};
|
||||
} ;
|
||||
lin DetQuant det num = {s = det.s ++ num.s; n = num.n;
|
||||
sp = det.sp} ;
|
||||
lin IndefArt = {s = []; sp = Indef} ;
|
||||
lin NumPl = {s = []; n = Pl} ;
|
||||
lin NumSg = {s = []; n = Sg} ;
|
||||
lin DetDAP d = d ;
|
||||
lin DetNP d = {s = \\r => d.s ! Masc; vocative = d.s ! Masc;
|
||||
a = {g = GSg Masc; p = P1}} ;
|
||||
lin DetQuant q num = {s = \\g => q.s ! genNum g (nnum2num num.n) ++ num.s;
|
||||
n = num.n;
|
||||
sp = q.sp} ;
|
||||
lin DetQuantOrd q n o = {
|
||||
s = \\g => q.s ! GSg Masc ++ n.s ++ o.s ! q.sp ! genNum g (nnum2num n.n);
|
||||
n = n.n;
|
||||
sp = Indef
|
||||
} ;
|
||||
lin ExtAdvNP np a = {
|
||||
s = \\r => np.s ! r ++ SOFT_BIND++"," ++ a.s;
|
||||
vocative = np.vocative ++ SOFT_BIND++"," ++ a.s;
|
||||
a = np.a
|
||||
} ;
|
||||
lin IndefArt = {s = \\_=>[]; sp = Indef} ;
|
||||
lin MassNP cn = {s = \\r => cn.s ! Indef ! Sg;
|
||||
vocative = cn.vocative ! Sg;
|
||||
a = {g = GSg cn.g; p = P3}} ;
|
||||
lin NumCard c = {s = c.s; n = NNum Sg} ;
|
||||
lin NumDecimal d = {s = d.s} ;
|
||||
lin NumDigits d = {s = d.s} ;
|
||||
lin NumNumeral n = {s = n.s} ;
|
||||
lin NumPl = {s = []; n = NNum Pl} ;
|
||||
lin NumSg = {s = []; n = NNum Sg} ;
|
||||
lin UseN s = s ;
|
||||
lin UsePron p = p ** {vocative=p.s ! RSubj} ;
|
||||
|
||||
lin RelNP np rs = {
|
||||
s = \\r => np.s ! r ++ rs.s ! np.a.g ;
|
||||
vocative = np.vocative ++ rs.s ! np.a.g ;
|
||||
a = np.a;
|
||||
} ;
|
||||
lin OrdDigits d = {s = \\s,gn => d.s} ;
|
||||
lin OrdNumeral n = {s = \\s,gn => n.s} ;
|
||||
lin OrdNumeralSuperl n a = {s = \\s,gn => n.s ++ "нај" ++ BIND ++ a.s ! s ! gn} ;
|
||||
lin OrdSuperl a = {s = \\s,gn => "нај" ++ BIND ++ a.s ! s ! gn} ;
|
||||
lin PPartNP np v2 = {s = \\r => np.s ! r
|
||||
++ v2.present ! Imperfective ! Sg ! np.a.p;
|
||||
vocative = np.vocative ++ v2.present ! Imperfective ! Sg ! np.a.p;
|
||||
a = {g = np.a.g; p = np.a.p}} ;
|
||||
lin PartNP cn np = {s = \\s,n => cn.s ! s ! n ++ np.s ! RSubj;
|
||||
count_form = cn.count_form ++ np.s ! RSubj;
|
||||
vocative = \\n => cn.vocative ! n ++ np.vocative; g = cn.g} ;
|
||||
lin PossNP cn np = {
|
||||
s = \\s,n => cn.s ! s ! n ++ "на" ++ np.s ! RObj Acc;
|
||||
count_form = cn.count_form ++ "на" ++ np.s ! RObj Acc;
|
||||
vocative = \\n => cn.vocative ! n ++ "на" ++ np.s ! RObj Acc;
|
||||
g = cn.g
|
||||
} ;
|
||||
lin PossPron p = {s = p.poss ! Def Unspecified; sp = Indef} ;
|
||||
lin PredetNP p np = {
|
||||
s = \\r => p.s ++ np.s ! r;
|
||||
vocative = p.s ++ np.vocative;
|
||||
a = np.a
|
||||
} ;
|
||||
lin QuantityNP d mu =
|
||||
let s = case mu.isPre of {
|
||||
True => mu.s ++ d.s ;
|
||||
False => d.s ++ mu.s
|
||||
}
|
||||
in { s = \\r => s;
|
||||
vocative = s;
|
||||
a = {g = GSg Masc; p = P3}
|
||||
} ;
|
||||
lin RelCN cn rs = {
|
||||
s = \\sp,n => cn.s ! sp ! n ++ rs.s ! genNum cn.g n ;
|
||||
count_form = cn.count_form ++ rs.s ! GPl ;
|
||||
vocative = \\n => cn.vocative ! n ++ rs.s ! genNum cn.g n ;
|
||||
g = cn.g;
|
||||
} ;
|
||||
lin SentCN cn sc = {s = \\s,n => cn.s ! s ! n ++ sc.s;
|
||||
count_form = cn.count_form ++ sc.s;
|
||||
vocative = \\n => cn.vocative ! n ++ sc.s; g = cn.g} ;
|
||||
lin Use2N3 n3 = {s = \\s,n => n3.s ! s ! n;
|
||||
count_form = n3.count_form; vocative = \\n => n3.vocative ! n;
|
||||
rel = \\s,g => n3.rel ! s ! g; relType = n3.relType; g = n3.g;
|
||||
c2 = {s = n3.c2.s; c = n3.c2.c}} ;
|
||||
lin Use3N3 n3 = {s = \\s,n => n3.s ! s ! n;
|
||||
count_form = n3.count_form; vocative = \\n => n3.vocative ! n;
|
||||
rel = \\s,g => n3.rel ! s ! g; relType = n3.relType; g = n3.g;
|
||||
c2 = {s = n3.c2.s; c = n3.c2.c}} ;
|
||||
lin UseN2 n2 = n2 ;
|
||||
lin UsePN pn = {
|
||||
s = \\r => pn.s;
|
||||
vocative = pn.s;
|
||||
a = {g = GSg Masc; p = P3}
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -1051,7 +1051,9 @@ mkV = overload {
|
||||
mkV : Str -> Str -> Str -> V = reg3V -- present;Sg;P3 participle;adverbial participle;adjectival
|
||||
} ;
|
||||
|
||||
reflV : V -> V = \v -> v ** {isRefl=True} ;
|
||||
accusative : Case = Acc ;
|
||||
dative : Case = Dat ;
|
||||
medialV : V -> Case -> V = \v,c -> v ** {vtype=VMedial c} ;
|
||||
|
||||
dualV : V -> V -> V = \impf,perf -> lin V
|
||||
{ present = table {
|
||||
@@ -1071,7 +1073,10 @@ dualV : V -> V -> V = \impf,perf -> lin V
|
||||
Imperfective => impf.participle.aorist ! Imperfective ;
|
||||
Perfective => perf.participle.aorist ! Perfective
|
||||
} ;
|
||||
imperfect = impf.participle.imperfect ;
|
||||
imperfect = table {
|
||||
Imperfective => impf.participle.imperfect ! Imperfective ;
|
||||
Perfective => perf.participle.imperfect ! Perfective
|
||||
} ;
|
||||
perfect = table {
|
||||
Imperfective => impf.participle.perfect ! Imperfective ;
|
||||
Perfective => perf.participle.perfect ! Perfective
|
||||
@@ -1083,7 +1088,24 @@ dualV : V -> V -> V = \impf,perf -> lin V
|
||||
adverbial = impf.participle.adverbial
|
||||
} ;
|
||||
noun_from_verb = impf.noun_from_verb ;
|
||||
isRefl = impf.isRefl
|
||||
vtype = impf.vtype
|
||||
} ;
|
||||
|
||||
compoundV = overload {
|
||||
compoundV : V -> Str -> V = \v,s -> lin V {
|
||||
present = \\a,n,p => v.present ! a ! n ! p ++ s ;
|
||||
aorist = \\n,p => v.aorist ! n ! p ++ s ;
|
||||
imperfect = \\a,n,p => v.imperfect ! a ! n ! p ++ s ;
|
||||
imperative = \\a,n => v.imperative ! a ! n ++ s ;
|
||||
participle = { aorist = \\a,gn => v.participle.aorist ! a ! gn ++ s ;
|
||||
imperfect = \\a,gn => v.participle.imperfect ! a ! gn ++ s ;
|
||||
perfect = \\a => v.participle.perfect ! a ++ s ;
|
||||
adjectival = \\a => v.participle.adjectival ! a ++ s ;
|
||||
adverbial = v.participle.adverbial
|
||||
} ;
|
||||
noun_from_verb = v.noun_from_verb ++ s ;
|
||||
vtype = v.vtype
|
||||
}
|
||||
} ;
|
||||
|
||||
mkV2 = overload {
|
||||
@@ -1102,13 +1124,13 @@ mkV2V = overload {
|
||||
} ;
|
||||
|
||||
mkV2S = overload {
|
||||
mkV2S : V -> V2S = \v -> lin V2S v ** {c2,c3=noPrep} ;
|
||||
mkV2S : V -> Prep -> Prep -> V2S = \v,p2,p3 -> lin V2S v ** {c2=p2; c3=p3} ;
|
||||
mkV2S : V -> V2S = \v -> lin V2S v ** {c2=noPrep} ;
|
||||
mkV2S : V -> Prep -> V2S = \v,p2 -> lin V2S v ** {c2=p2} ;
|
||||
} ;
|
||||
|
||||
mkV2Q = overload {
|
||||
mkV2Q : V -> V2Q = \v -> lin V2Q v ** {c2,c3=noPrep} ;
|
||||
mkV2Q : V -> Prep -> Prep -> V2Q = \v,p2,p3 -> lin V2Q v ** {c2=p2; c3=p3} ;
|
||||
mkV2Q : V -> V2Q = \v -> lin V2Q v ** {c2=noPrep} ;
|
||||
mkV2Q : V -> Prep -> V2Q = \v,p2 -> lin V2Q v ** {c2=p2} ;
|
||||
} ;
|
||||
|
||||
mkV2A = overload {
|
||||
@@ -1139,7 +1161,70 @@ mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
||||
|
||||
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
||||
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s} ;
|
||||
noPrep : Prep = lin Prep {s=""} ;
|
||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
|
||||
noPrep : Prep = lin Prep {s=""; c=Acc} ;
|
||||
|
||||
mkIP : Str -> GenNum -> IP = \s,g -> lin IP {s=s; g=g} ;
|
||||
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
||||
|
||||
mkIQuant : Str -> Str -> Str -> Str -> IQuant = \m,f,n,pl ->
|
||||
lin IQuant {
|
||||
s=table {
|
||||
GSg Masc => m;
|
||||
GSg Fem => f;
|
||||
GSg Neuter => n;
|
||||
GPl => pl
|
||||
}
|
||||
} ;
|
||||
|
||||
mkIDet = overload {
|
||||
mkIDet : Str -> IDet = \s -> lin IDet {s=\\_=>s; n=Pl} ;
|
||||
mkIDet : Str -> Str -> Str -> IDet = \m,f,n ->
|
||||
lin IDet {
|
||||
s=table {
|
||||
Masc => m ;
|
||||
Fem => f ;
|
||||
Neuter => n
|
||||
} ;
|
||||
n=Sg;
|
||||
} ;
|
||||
} ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre = False} ;
|
||||
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
||||
|
||||
mkQuant : Str -> Str -> Str -> Str -> Quant = \m,f,n,pl ->
|
||||
lin Quant {
|
||||
s=table {
|
||||
GSg Masc => m;
|
||||
GSg Fem => f;
|
||||
GSg Neuter => n;
|
||||
GPl => pl
|
||||
} ;
|
||||
sp=Indef
|
||||
} ;
|
||||
|
||||
mkDet = overload {
|
||||
mkDet : Str -> Det = \s -> lin Det {s=\\_=>s; n=NNum Pl; sp=Indef} ;
|
||||
mkDet : Str -> Str -> Str -> Det = \m,f,n ->
|
||||
lin Det {
|
||||
s=table {
|
||||
Masc => m ;
|
||||
Fem => f ;
|
||||
Neuter => n
|
||||
} ;
|
||||
n=NNum Sg;
|
||||
sp=Indef
|
||||
} ;
|
||||
} ;
|
||||
|
||||
mkConj : Str -> Number -> Conj =
|
||||
\s,n -> lin Conj {s = s; sep = 3; n = n} ;
|
||||
|
||||
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
||||
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
||||
mkCAdv : Str -> CAdv = \s -> lin CAdv {s=s; p=""} ;
|
||||
mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
||||
mkACard : Str -> ACard = \s -> lin ACard {s=s} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
concrete PhraseMkd of Phrase = CatMkd ** open Prelude, ResMkd in {
|
||||
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttS s = s ;
|
||||
UttInterj i = i ;
|
||||
|
||||
NoPConj = {s = []} ;
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
VocNP np = {s = SOFT_BIND++"," ++ np.vocative} ;
|
||||
|
||||
lin NoPConj = {s : Str = []} ;
|
||||
lin NoVoc = {s : Str = []} ;
|
||||
lin PConjConj c = {s = c.s} ;
|
||||
lin PhrUtt pconj utt voc = {s : Str = pconj.s ++ utt.s ++ voc.s} ;
|
||||
lin UttAP ap = {s = ap.s ! Indef ! GSg Masc} ;
|
||||
lin UttAdv a = {s = a.s} ;
|
||||
lin UttCN cn = {s = cn.s ! Indef ! Sg} ;
|
||||
lin UttCard c = {s = c.s} ;
|
||||
lin UttIAdv i = {s = i.s} ;
|
||||
lin UttIP ip = {s = ip.s} ;
|
||||
lin UttImpPl p i = {s = p.s ++ i.s ! p.p ! GPl} ;
|
||||
lin UttImpPol p i = {s = p.s ++ i.s ! p.p ! GPl} ;
|
||||
lin UttImpSg p i = {s = p.s ++ i.s ! p.p ! GSg Masc} ;
|
||||
lin UttInterj i = i ;
|
||||
lin UttNP np = {s = np.s ! RSubj} ;
|
||||
lin UttQS s = s ;
|
||||
lin UttS s = s ;
|
||||
lin UttVP vp = {s = "да" ++ vp.present ! Perfective ! Sg ! P3 ++ vp.compl ! {g=GSg Masc; p=P3}} ;
|
||||
lin VocNP np = {s : Str = SOFT_BIND ++ "," ++ np.vocative} ;
|
||||
}
|
||||
|
||||
22
src/macedonian/QuestionMkd.gf
Normal file
22
src/macedonian/QuestionMkd.gf
Normal file
@@ -0,0 +1,22 @@
|
||||
concrete QuestionMkd of Question = CatMkd ** open Prelude,ResMkd in {
|
||||
lin AdvIAdv i a = {s = i.s ++ a.s} ;
|
||||
lin AdvIP ip a = {s = ip.s ++ a.s; g = ip.g} ;
|
||||
lin CompIAdv i = {s = i.s} ;
|
||||
lin CompIP ip = {s = ip.s} ;
|
||||
lin IdetCN idet cn = {
|
||||
s = idet.s ! cn.g ++ cn.s ! Indef ! idet.n;
|
||||
g = genNum cn.g idet.n
|
||||
} ;
|
||||
lin IdetIP idet = {s = idet.s ! Masc; g = genNum Masc idet.n} ;
|
||||
lin IdetQuant i n = {
|
||||
s = \\g => i.s ! GSg Masc ++ n.s;
|
||||
n = Sg
|
||||
} ;
|
||||
lin PrepIP p ip = {s : Str = p.s ++ ip.s} ;
|
||||
lincat QVP = {s : Str} ;
|
||||
lin QuestCl cl = {s = cl.s ! Quest} ;
|
||||
lin QuestIAdv i cl = {s = \\t,a,p => i.s ++ cl.s ! Main ! t ! a ! p} ;
|
||||
lin QuestIComp i np = {s = \\t,a,p => i.s ++ np.s ! RSubj} ;
|
||||
lin QuestSlash ip c = {s = \\t,a,p => ip.s ++ c.s} ;
|
||||
lin QuestVP ip vp = {s = mkClause ip.s {g=ip.g; p=P3} vp ! Main} ;
|
||||
}
|
||||
15
src/macedonian/RelativeMkd.gf
Normal file
15
src/macedonian/RelativeMkd.gf
Normal file
@@ -0,0 +1,15 @@
|
||||
concrete RelativeMkd of Relative = CatMkd ** open Prelude,ResMkd in {
|
||||
lin FunRP p np rp = {s = \\g => p.s ++ np.s ! RSubj ++ rp.s ! g} ;
|
||||
lin IdRP = {s = table {
|
||||
GSg Masc => "кој" ;
|
||||
GSg Fem => "која" ;
|
||||
GSg Neuter => "кое" ;
|
||||
GPl => "кои"
|
||||
}
|
||||
} ;
|
||||
lin RelCl cl = {s = \\g => cl.s ! Main} ;
|
||||
lin RelSlash rp c = {s = \\g,t,a,p => rp.s ! g ++ c.s} ;
|
||||
lin RelVP rp vp = {
|
||||
s = \\gn => mkClause (rp.s ! gn) {g=gn; p=P3} vp ! Main
|
||||
} ;
|
||||
}
|
||||
@@ -1,12 +1,16 @@
|
||||
resource ResMkd = ParamX [DTail,T1,T2,T3,inc] ** open Prelude in {
|
||||
resource ResMkd = ParamX - [Tense] ** open Prelude, Predef in {
|
||||
|
||||
oper Compl = {s : Str} ;
|
||||
oper Compl = {s : Str; c : Case} ;
|
||||
|
||||
param Species = Indef | Def Distance ;
|
||||
param Distance = Unspecified | Distal | Proximal ;
|
||||
param Number = Sg | Pl ;
|
||||
param NRelType = Pref | AdjMod | AdvMod ;
|
||||
NNumber =
|
||||
NNum Number
|
||||
| NCountable
|
||||
;
|
||||
param Gender = Masc | Fem | Neuter ;
|
||||
oper Agr = {g : GenNum; p : Person} ;
|
||||
oper Noun = {s: Species => Number => Str; count_form: Str; vocative: Number => Str; rel: Species => GenNum => Str; relType : NRelType; g: Gender} ; -- 24855
|
||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,g ->
|
||||
@@ -40,9 +44,18 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
||||
|
||||
|
||||
param Aspect = Imperfective | Perfective ;
|
||||
param Person = P1 | P3 | P2 ;
|
||||
param GenNum = GSg Gender | GPl ;
|
||||
oper Verb = {present: Aspect => Number => Person => Str; aorist: Number => Person => Str; imperfect: Aspect => Number => Person => Str; imperative: Aspect => Number => Str; participle: {aorist: Aspect => GenNum => Str; imperfect: GenNum => Str; perfect: Aspect => Str; adjectival: Aspect => Str; adverbial: Str}; noun_from_verb: Str; isRefl: Bool} ; -- 8174
|
||||
param VType = VNormal | VMedial Case ;
|
||||
Tense = VPresent
|
||||
| VPastSimple --# notpresent
|
||||
| VPastImperfect --# notpresent
|
||||
| VFut --# notpresent
|
||||
| VCond --# notpresent
|
||||
;
|
||||
|
||||
Order = Main | Quest ;
|
||||
|
||||
oper Verb = {present: Aspect => Number => Person => Str; aorist: Number => Person => Str; imperfect: Aspect => Number => Person => Str; imperative: Aspect => Number => Str; participle: {aorist: Aspect => GenNum => Str; imperfect: Aspect => GenNum => Str; perfect: Aspect => Str; adjectival: Aspect => Str; adverbial: Str}; noun_from_verb: Str; vtype: VType} ; -- 8174
|
||||
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 ->
|
||||
{ present = \\_ =>
|
||||
@@ -95,7 +108,8 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ :
|
||||
GSg Neuter => f23 ;
|
||||
GPl => f24
|
||||
} ;
|
||||
imperfect = table {
|
||||
imperfect = \\_ =>
|
||||
table {
|
||||
GSg Masc => f25 ;
|
||||
GSg Fem => f26 ;
|
||||
GSg Neuter => f27 ;
|
||||
@@ -106,7 +120,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ :
|
||||
adverbial = f31
|
||||
} ;
|
||||
noun_from_verb = f32 ;
|
||||
isRefl = False
|
||||
vtype = VNormal
|
||||
} ;
|
||||
|
||||
|
||||
@@ -153,7 +167,19 @@ oper mkAdv : Str -> Adv =
|
||||
|
||||
param Case = Acc | Dat ;
|
||||
param Role = RSubj | RObj Case | RPrep ;
|
||||
oper Pron = {s : Role => Str; clitic : Case => Str; g : GenNum; p : Person} ;
|
||||
oper Pronoun = {
|
||||
s : Role => Str;
|
||||
clitic : Case => Str;
|
||||
poss : Species => GenNum => Str ;
|
||||
poss_clitic : Str ;
|
||||
a : {g : GenNum; p : Person}
|
||||
} ;
|
||||
|
||||
conjGenNum : GenNum -> GenNum -> GenNum = \a,b ->
|
||||
case <a,b> of {
|
||||
<GSg _,GSg g> => GSg g ;
|
||||
_ => GPl
|
||||
} ;
|
||||
|
||||
genNum : Gender -> Number -> GenNum = \g,n ->
|
||||
case n of {
|
||||
@@ -161,4 +187,155 @@ genNum : Gender -> Number -> GenNum = \g,n ->
|
||||
Pl => GPl
|
||||
} ;
|
||||
|
||||
nnum2num : NNumber -> Number = \n ->
|
||||
case n of {
|
||||
NNum n => n ;
|
||||
NCountable => Pl
|
||||
} ;
|
||||
|
||||
genNum2num : GenNum -> Number = \gn ->
|
||||
case gn of {
|
||||
GSg _ => Sg ;
|
||||
GPl => Pl
|
||||
} ;
|
||||
|
||||
auxBe = {
|
||||
present : Number => Person => Str
|
||||
= table {
|
||||
Sg => table {
|
||||
P1 => "сум" ;
|
||||
P2 => "си" ;
|
||||
P3 => "е"
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => "сме" ;
|
||||
P2 => "сте" ;
|
||||
P3 => "се"
|
||||
}
|
||||
} ;
|
||||
imperfect : Number => Person => Str
|
||||
= table {
|
||||
Sg => table {
|
||||
P1 => "бев" ;
|
||||
P2 => "беше" ;
|
||||
P3 => "беше"
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => "бевме" ;
|
||||
P2 => "бевте" ;
|
||||
P3 => "беа"
|
||||
}
|
||||
} ;
|
||||
imperative : Number => Str =
|
||||
table {
|
||||
Sg => "биди" ;
|
||||
Pl => "бидете"
|
||||
} ;
|
||||
participle = {
|
||||
aorist : GenNum => Str
|
||||
= table {
|
||||
GSg Masc => "бил" ;
|
||||
GSg Fem => "била" ;
|
||||
GSg Neuter => "било" ;
|
||||
GPl => "биле"
|
||||
} ;
|
||||
imperfect : GenNum => Str
|
||||
= table {
|
||||
GSg Masc => "бидел" ;
|
||||
GSg Fem => "бидела" ;
|
||||
GSg Neuter => "бидело" ;
|
||||
GPl => "биделе"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
auxHave = {
|
||||
present : Number => Person => Str
|
||||
= table {
|
||||
Sg => table {
|
||||
P1 => "имам" ;
|
||||
P2 => "имаш" ;
|
||||
P3 => "има"
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => "имаме" ;
|
||||
P2 => "имате" ;
|
||||
P3 => "имаат"
|
||||
}
|
||||
} ;
|
||||
imperfect : Number => Person => Str
|
||||
= table {
|
||||
Sg => table {
|
||||
P1 => "имав" ;
|
||||
P2 => "имаше" ;
|
||||
P3 => "имаше"
|
||||
} ;
|
||||
Pl => table {
|
||||
P1 => "имавме" ;
|
||||
P2 => "имавте" ;
|
||||
P3 => "имаа"
|
||||
}
|
||||
} ;
|
||||
imperative : Number => Str =
|
||||
table {
|
||||
Sg => "имај" ;
|
||||
Pl => "имајте"
|
||||
} ;
|
||||
participle = {
|
||||
imperfect : GenNum => Str
|
||||
= table {
|
||||
GSg Masc => "имал" ;
|
||||
GSg Fem => "имала" ;
|
||||
GSg Neuter => "имало" ;
|
||||
GPl => "имале"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
mkClause : Str -> Agr -> Verb ** {compl : Agr => Str} -> Order => Tense => Anteriority => Polarity => Str
|
||||
= \subj,agr,vp ->
|
||||
let n = case agr.g of {
|
||||
GSg _ => Sg ;
|
||||
GPl => Pl
|
||||
}
|
||||
in \\o,t,a,p =>
|
||||
case <t,a> of {
|
||||
<VPresent,Simul> => subj ++ neg ++ se ++ vp.present ! Imperfective ! n ! agr.p ++ li ++ vp.compl ! agr ;
|
||||
<VPresent,Anter> => case o of {
|
||||
Main => subj ++ neg ++ auxBe.present ! n ! agr.p ++ se ++ vp.participle.imperfect ! Perfective ! agr.g ++ vp.compl ! agr ;
|
||||
Quest => subj ++ neg ++ se ++ vp.participle.imperfect ! Perfective ! agr.g ++ li ++ auxBe.present ! n ! agr.p ++ vp.compl ! agr
|
||||
} ;
|
||||
<VPastSimple,Simul> => subj ++ neg ++ se ++ vp.aorist ! n ! agr.p ++ li ++ vp.compl ! agr ;
|
||||
<VPastSimple,Anter> => subj ++ neg ++ se ++ auxBe.imperfect ! n ! agr.p ++ li ++ vp.participle.imperfect ! Perfective ! agr.g ++ vp.compl ! agr ;
|
||||
<VPastImperfect,Simul> => subj ++ neg ++ se ++ vp.imperfect ! Perfective ! n ! agr.p ++ li ++ vp.compl ! agr ;
|
||||
<VPastImperfect,Anter> => subj ++ neg ++ se ++ auxBe.imperfect ! n ! agr.p ++ li ++ vp.participle.imperfect ! Perfective ! agr.g ++ vp.compl ! agr ;
|
||||
<VFut, Simul> => subj ++ fut.p1 ++ se ++ vp.present ! Perfective ! n ! agr.p ++ fut.p2 ++ vp.compl ! agr ;
|
||||
<VFut, Anter> => subj ++ fut.p1 ++ se ++ auxHave.present ! n ! agr.p ++ fut.p2 ++ vp.participle.perfect ! Perfective ++ vp.compl ! agr ;
|
||||
<VCond,Simul> => subj ++ neg ++ "би" ++ li ++ se ++ vp.participle.imperfect ! Perfective ! agr.g ++ vp.compl ! agr ;
|
||||
<VCond,Anter> => subj ++ neg ++ "би" ++ li ++ auxHave.participle.imperfect ! agr.g ++ se ++ vp.participle.perfect ! Perfective ++ vp.compl ! agr
|
||||
} where {
|
||||
neg = case p of {
|
||||
Pos => "" ;
|
||||
Neg => "не"
|
||||
} ;
|
||||
fut = case <p,o> of {
|
||||
<Pos,Main> => <"ке",[]> ;
|
||||
<Neg,Main> => <"нема да",[]> ;
|
||||
<Pos,Quest> => <"ке","ли"> ;
|
||||
<Neg,Quest> => <"нема ли да",[]>
|
||||
} ;
|
||||
li = case o of {
|
||||
Main => "" ;
|
||||
Quest => "ли"
|
||||
} ;
|
||||
se = case vp.vtype of {
|
||||
VNormal => "" ;
|
||||
VMedial Acc => "се" ;
|
||||
VMedial Dat => "си"
|
||||
}
|
||||
} ;
|
||||
|
||||
linCoord : Str -> Ints 4 => Str ;
|
||||
linCoord comma = table {0 => "и"; 1=>"или"; 2=>"ниту"; 3=>comma; 4=>[]} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,13 +1,31 @@
|
||||
concrete SentenceMkd of Sentence = CatMkd ** open Prelude,ResMkd in {
|
||||
|
||||
lin PredVP np vp =
|
||||
let n = case np.g of {
|
||||
GSg _ => Sg ;
|
||||
GPl => Pl
|
||||
}
|
||||
in {present = \\a => np.s ! RSubj ++ vp.present ! a ! n ! np.p ;
|
||||
aorist = np.s ! RSubj ++ vp.aorist ! n ! np.p ;
|
||||
participle = {aorist = \\a => np.s ! RSubj ++ vp.participle.aorist ! a ! np.g;
|
||||
perfect = \\a => np.s ! RSubj ++ vp.participle.perfect ! a}} ;
|
||||
|
||||
lin AdvImp a i = {s = \\p,gn => a.s ++ i.s ! p ! gn} ;
|
||||
lin AdvS a s = {s = a.s ++ s.s} ;
|
||||
lin AdvSlash c a = {s = c.s ++ a.s} ;
|
||||
lin EmbedQS qs = {s = qs.s} ;
|
||||
lin EmbedS s = {s = s.s} ;
|
||||
lin EmbedVP vp = {s = "да" ++ vp.present ! Perfective ! Sg ! P3 ++ vp.compl ! {g=GSg Masc; p=P3}} ;
|
||||
lin ExtAdvS a s = {s = a.s ++ s.s} ;
|
||||
lin ImpVP vp = {
|
||||
s = \\p,gn=>case p of {
|
||||
Pos => vp.imperative ! Perfective ! genNum2num gn ;
|
||||
Neg => "не" ++ vp.imperative ! Imperfective ! genNum2num gn
|
||||
} ++
|
||||
vp.compl ! {g=gn; p=P2}
|
||||
} ;
|
||||
lin PredSCVP sc vp = {s = \\t,a,p,o => sc.s
|
||||
++ vp.present ! Imperfective ! Sg ! P1} ;
|
||||
lin PredVP np vp = {s = mkClause (np.s ! RSubj) np.a vp} ;
|
||||
lin RelS s rs = {s = s.s ++ rs.s ! GSg Masc} ;
|
||||
lin SSubjS s s2 s3 = {s = s.s ++ s2.s ++ s3.s} ;
|
||||
lin SlashPrep cl p = {s = cl.s ! Main ! VPresent ! Simul ! Pos
|
||||
++ p.s} ;
|
||||
lin SlashVP np v = {s = np.s ! RSubj
|
||||
++ v.present ! Imperfective ! Sg ! np.a.p} ;
|
||||
lin SlashVS np vs s = {s = np.s ! RSubj
|
||||
++ vs.present ! Imperfective ! Sg ! np.a.p ++ s.s} ;
|
||||
lin UseCl t p cl = {s = t.s ++ p.s ++ cl.s ! Main ! t.t ! t.a ! p.p} ;
|
||||
lin UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ;
|
||||
lin UseRCl t p cl = {s = \\gn => t.s ++ p.s ++ cl.s ! gn ! t.t ! t.a ! p.p} ;
|
||||
lin UseSlash t p c = {s = t.s ++ p.s ++ c.s} ;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,29 @@
|
||||
concrete StructuralMkd of Structural = CatMkd ** open ResMkd,MorphoMkd in {
|
||||
concrete StructuralMkd of Structural = CatMkd ** open ResMkd,MorphoMkd,ParadigmsMkd in {
|
||||
|
||||
lin i_Pron = mkPron "јас" "мене" "ме" "мене" "ми" "мене" "мој" "мојот" "моја" "мојата" "мое" "моето" "мои" "моите" "ми" (GSg Masc) P1 ;
|
||||
lin youSg_Pron = mkPron "ти" "тебе" "те" "тебе" "ти" "тебе" "твој" "твојот" "твоја" "твојата" "твое" "твоето" "твои" "твоите" "ти" (GSg Masc) P2 ;
|
||||
lin he_Pron = mkPron "тој" "него" "го" "нему" "му" "него" "негов" "неговиот" "негова" "неговата" "негово" "неговото" "негови" "неговите" "му" (GSg Masc) P3 ;
|
||||
lin she_Pron = mkPron "таа" "неа" "ја" "нејзе" "ѝ" "неа" "нејзин" "нејзиниот" "нејзина" "нејзината" "нејзино" "нејзиното" "нејзини" "нејзините" "ѝ" (GSg Masc) P3 ;
|
||||
lin it_Pron = mkPron "тоа" "него" "го" "нему" "му" "него" "негов" "неговиот" "негова" "неговата" "негово" "неговото" "негови" "неговите" "му" (GSg Masc) P3 ;
|
||||
lin she_Pron = mkPron "таа" "неа" "ја" "нејзе" "ѝ" "неа" "нејзин" "нејзиниот" "нејзина" "нејзината" "нејзино" "нејзиното" "нејзини" "нејзините" "ѝ" (GSg Fem) P3 ;
|
||||
lin it_Pron = mkPron "тоа" "него" "го" "нему" "му" "него" "негов" "неговиот" "негова" "неговата" "негово" "неговото" "негови" "неговите" "му" (GSg Neuter) P3 ;
|
||||
lin we_Pron = mkPron "ние" "нас" "нѐ" "нам" "ни" "нас" "наш" "нашиот" "наша" "нашата" "наше" "нашето" "наши" "нашите" "ни" GPl P1 ;
|
||||
lin youPl_Pron = mkPron "вие" "вас" "ве" "вам" "ви" "вас" "ваш" "вашиот" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" "ви" GPl P2 ;
|
||||
lin youPol_Pron = mkPron "вие" "вас" "ве" "вам" "ви" "вас" "ваш" "вашиот" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" "ви" (GSg Masc) P2 ;
|
||||
lin they_Pron = mkPron "тие" "нив" "ги" "ним" "им" "нив" "нивен" "нивниот" "нивна" "нивната" "нивно" "нивното" "нивни" "нивните" "им" GPl P3 ;
|
||||
lin this_Quant = mkQuant "овој" "оваа" "ова" "овие" ;
|
||||
lin that_Quant = mkQuant "тој" "таа" "тоа" "тие" ;
|
||||
lin how_IAdv = mkIAdv "как" ;
|
||||
lin how8many_IDet = mkIDet "колку" ;
|
||||
lin how8much_IAdv = mkIAdv "колку" ;
|
||||
lin whatSg_IP = mkIP "што" (GSg Masc) ;
|
||||
lin whatPl_IP = mkIP "што" GPl ;
|
||||
lin when_IAdv = mkIAdv "кога" ;
|
||||
lin where_IAdv = mkIAdv "каде" ;
|
||||
lin which_IQuant = mkIQuant "кој" "која" "кое" "кои" ;
|
||||
lin whoSg_IP = mkIP "кој" (GSg Masc) ;
|
||||
lin whoPl_IP = mkIP "кои" GPl ;
|
||||
lin and_Conj = mkConj "и" Pl ;
|
||||
lin or_Conj = mkConj "или" Sg ;
|
||||
lin both7and_DConj = mkConj "и" Pl ** {sep=0} ;
|
||||
lin either7or_DConj = mkConj "или" Sg ** {sep=1} ;
|
||||
|
||||
}
|
||||
|
||||
10
src/macedonian/TenseMkd.gf
Normal file
10
src/macedonian/TenseMkd.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
concrete TenseMkd of Tense = CatMkd[Tense,Temp], TenseX - [Tense,Temp,TTAnt,TPres,TPast,TFut,TCond] ** open ResMkd in {
|
||||
|
||||
lin
|
||||
TTAnt t a = {s = a.s ++ t.s ; a = a.a ; t = t.t} ;
|
||||
TPres = {s = []} ** {t = VPresent} ;
|
||||
TPast = {s = []} ** {t = VPastImperfect} ; --# notpresent
|
||||
TFut = {s = []} ** {t = VFut} ; --# notpresent
|
||||
TCond = {s = []} ** {t = VCond} ; --# notpresent
|
||||
|
||||
}
|
||||
7
src/macedonian/TextMkd.gf
Normal file
7
src/macedonian/TextMkd.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
concrete TextMkd of Text = open Prelude in {
|
||||
lin
|
||||
TEmpty = {s = []} ;
|
||||
TFullStop x xs = {s = x.s ++ SOFT_BIND ++ "." ++ xs.s} ;
|
||||
TQuestMark x xs = {s = x.s ++ SOFT_BIND ++ "?" ++ xs.s} ;
|
||||
TExclMark x xs = {s = x.s ++ SOFT_BIND ++ "!" ++ xs.s} ;
|
||||
}
|
||||
@@ -1,13 +1,132 @@
|
||||
concrete VerbMkd of Verb = CatMkd ** open Prelude,ResMkd in {
|
||||
|
||||
lin ComplSlash vps np = {present = \\a,n,p => vps.present ! a ! n
|
||||
! p
|
||||
++ np.s ! RObj Acc ;
|
||||
aorist = \\n,p => vps.aorist ! n ! p ++ np.s ! RObj Acc;
|
||||
imperfect = \\a,n,p => vps.imperfect ! a ! n ! p ++ np.s ! RObj Acc;
|
||||
imperative = \\a,n => vps.imperative ! a ! n ++ np.s ! RObj Acc;
|
||||
participle = {aorist = \\a,gn => vps.participle.aorist ! a ! gn ++ np.s ! RObj Acc;
|
||||
perfect = \\a => vps.participle.perfect ! a ++ np.s ! RObj Acc}} ;
|
||||
lin SlashV2a v = v ;
|
||||
lin AdVVP a vp = {present = \\a2,n,p => a.s
|
||||
++ vp.present ! a2 ! n ! p;
|
||||
aorist = \\n,p => a.s ++ vp.aorist ! n ! p;
|
||||
imperfect = \\a2,n,p => a.s ++ vp.imperfect ! a2 ! n ! p;
|
||||
imperative = \\a2,n => a.s ++ vp.imperative ! a2 ! n;
|
||||
participle = {aorist = \\a2,g => a.s
|
||||
++ vp.participle.aorist ! a2 ! g;
|
||||
imperfect = \\a2,g => a.s ++ vp.participle.imperfect ! a2 ! g;
|
||||
perfect = \\a2 => a.s ++ vp.participle.perfect ! a2;
|
||||
adjectival = \\a2 => a.s ++ vp.participle.adjectival ! a2;
|
||||
adverbial = a.s ++ vp.participle.adverbial};
|
||||
noun_from_verb = a.s ++ vp.noun_from_verb;
|
||||
vtype = vp.vtype;
|
||||
compl = vp.compl} ;
|
||||
lin AdVVPSlash a v = {present = \\a2,n,p => a.s
|
||||
++ v.present ! a2 ! n ! p;
|
||||
aorist = \\n,p => a.s ++ v.aorist ! n ! p;
|
||||
imperfect = \\a2,n,p => a.s ++ v.imperfect ! a2 ! n ! p;
|
||||
imperative = \\a2,n => a.s ++ v.imperative ! a2 ! n;
|
||||
participle = {aorist = \\a2,g => a.s
|
||||
++ v.participle.aorist ! a2 ! g;
|
||||
imperfect = \\a2,g => a.s ++ v.participle.imperfect ! a2 ! g;
|
||||
perfect = \\a2 => a.s ++ v.participle.perfect ! a2;
|
||||
adjectival = \\a2 => a.s ++ v.participle.adjectival ! a2;
|
||||
adverbial = a.s ++ v.participle.adverbial};
|
||||
noun_from_verb = a.s ++ v.noun_from_verb;
|
||||
vtype = v.vtype;
|
||||
compl = v.compl;
|
||||
c2 = v.c2} ;
|
||||
lin AdvVP vp adv = vp ** {compl = \\a => vp.compl ! a ++ adv.s} ;
|
||||
lin AdvVPSlash vps adv = vps ** {compl = \\a => vps.compl ! a ++ adv.s} ;
|
||||
lin CompAP ap = {s = \\gn => ap.s ! Indef ! gn} ;
|
||||
lin CompAdv a = {s = \\_ => a.s} ;
|
||||
lin CompCN cn = {s = \\_ => cn.s ! Indef ! Sg} ;
|
||||
lin CompNP np = {s = \\_ => np.s ! RSubj} ;
|
||||
lin ComplSlash vp np = vp ** {compl = \\a => vp.compl ! a ++ vp.c2.s ++ np.s ! RObj vp.c2.c} ;
|
||||
lin ComplVA va ap = va ** {compl = \\agr => ap.s ! Indef ! agr.g} ;
|
||||
lin ComplVQ vq qs = vq ** {compl = \\_ => qs.s} ;
|
||||
lin ComplVS vs s = vs ** {compl = \\_ => s.s} ;
|
||||
lin ComplVV vv vp = vv ** {compl = \\agr => "да" ++ vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ vp.compl ! agr} ;
|
||||
lin ExtAdvVP vp a = vp ** {compl = \\agr => vp.compl ! agr ++ SOFT_BIND++"," ++ a.s} ;
|
||||
lin Slash2V3 v3 np = {present = \\a,n,p => v3.present ! a ! n ! p
|
||||
++ np.s ! RSubj;
|
||||
aorist = \\n,p => v3.aorist ! n ! p ++ np.s ! RSubj;
|
||||
imperfect = \\a,n,p => v3.imperfect ! a ! n ! p ++ np.s ! RSubj;
|
||||
imperative = \\a,n => v3.imperative ! a ! n ++ np.s ! RSubj;
|
||||
participle = {aorist = \\a,g => v3.participle.aorist ! a ! g
|
||||
++ np.s ! RSubj;
|
||||
imperfect = \\a,g => v3.participle.imperfect ! a ! g
|
||||
++ np.s ! RSubj;
|
||||
perfect = \\a => v3.participle.perfect ! a ++ np.s ! RSubj;
|
||||
adjectival = \\a => v3.participle.adjectival ! a
|
||||
++ np.s ! RSubj;
|
||||
adverbial = v3.participle.adverbial ++ np.s ! RSubj};
|
||||
noun_from_verb = v3.noun_from_verb ++ np.s ! RSubj;
|
||||
vtype = v3.vtype;
|
||||
compl = \\v => v3.present ! Imperfective ! Sg ! v.p
|
||||
++ np.s ! RSubj;
|
||||
c2 = {s = v3.c2.s ++ np.s ! RSubj; c = v3.c2.c}} ;
|
||||
lin Slash3V3 v3 np = {present = \\a,n,p => v3.present ! a ! n ! p
|
||||
++ np.s ! RSubj;
|
||||
aorist = \\n,p => v3.aorist ! n ! p ++ np.s ! RSubj;
|
||||
imperfect = \\a,n,p => v3.imperfect ! a ! n ! p ++ np.s ! RSubj;
|
||||
imperative = \\a,n => v3.imperative ! a ! n ++ np.s ! RSubj;
|
||||
participle = {aorist = \\a,g => v3.participle.aorist ! a ! g
|
||||
++ np.s ! RSubj;
|
||||
imperfect = \\a,g => v3.participle.imperfect ! a ! g
|
||||
++ np.s ! RSubj;
|
||||
perfect = \\a => v3.participle.perfect ! a ++ np.s ! RSubj;
|
||||
adjectival = \\a => v3.participle.adjectival ! a
|
||||
++ np.s ! RSubj;
|
||||
adverbial = v3.participle.adverbial ++ np.s ! RSubj};
|
||||
noun_from_verb = v3.noun_from_verb ++ np.s ! RSubj;
|
||||
vtype = v3.vtype;
|
||||
compl = \\v => v3.present ! Imperfective ! Sg ! v.p
|
||||
++ np.s ! RSubj;
|
||||
c2 = {s = v3.c2.s ++ np.s ! RSubj; c = v3.c2.c}} ;
|
||||
lin SlashV2A v ap = v ** {compl = \\agr => ap.s ! Indef ! agr.g} ;
|
||||
lin SlashV2Q v qs = v ** {compl = \\_ => qs.s} ;
|
||||
lin SlashV2S v s = v ** {compl = \\_ => s.s} ;
|
||||
lin SlashV2V v vp = v ** {compl = \\agr => "да" ++ vp.present ! Perfective ! genNum2num agr.g ! agr.p ++ vp.compl ! agr};
|
||||
lin SlashV2a v = v ** {compl = \\_ => []} ;
|
||||
|
||||
lin UseComp comp = {
|
||||
present = \\_=>auxBe.present ;
|
||||
aorist = auxBe.imperfect ;
|
||||
imperfect = \\_=>auxBe.imperfect ;
|
||||
imperative = \\_=>auxBe.imperative ;
|
||||
participle = {aorist = \\_=>auxBe.participle.aorist ;
|
||||
imperfect = \\_=>auxBe.participle.imperfect ;
|
||||
perfect = \\_=>nonExist ;
|
||||
adjectival = \\_=>nonExist ;
|
||||
adverbial = nonExist} ;
|
||||
noun_from_verb = nonExist ;
|
||||
compl = \\agr=>comp.s ! agr.g ;
|
||||
vtype=VNormal
|
||||
} ;
|
||||
|
||||
lin UseCopula = {
|
||||
present = \\_=>auxBe.present ;
|
||||
aorist = auxBe.imperfect ;
|
||||
imperfect = \\_=>auxBe.imperfect ;
|
||||
imperative = \\_=>auxBe.imperative ;
|
||||
participle = {aorist = \\_=>auxBe.participle.aorist ;
|
||||
imperfect = \\_=>auxBe.participle.imperfect ;
|
||||
perfect = \\_=>nonExist ;
|
||||
adjectival = \\_=>nonExist ;
|
||||
adverbial = nonExist} ;
|
||||
noun_from_verb = nonExist ;
|
||||
compl = \\_=>[] ;
|
||||
vtype=VNormal
|
||||
} ;
|
||||
|
||||
lin UseV v = v ** {compl = \\_ => []} ;
|
||||
lin VPSlashPrep vp p = {present = \\a,n,p2 => vp.present ! a ! n
|
||||
! p2
|
||||
++ p.s;
|
||||
aorist = \\n,p2 => vp.aorist ! n ! p2 ++ p.s;
|
||||
imperfect = \\a,n,p2 => vp.imperfect ! a ! n ! p2 ++ p.s;
|
||||
imperative = \\a,n => vp.imperative ! a ! n ++ p.s;
|
||||
participle = {aorist = \\a,g => vp.participle.aorist ! a ! g
|
||||
++ p.s;
|
||||
imperfect = \\a,g => vp.participle.imperfect ! a ! g ++ p.s;
|
||||
perfect = \\a => vp.participle.perfect ! a ++ p.s;
|
||||
adjectival = \\a => vp.participle.adjectival ! a ++ p.s;
|
||||
adverbial = vp.participle.adverbial ++ p.s};
|
||||
noun_from_verb = vp.noun_from_verb ++ p.s; vtype = vp.vtype;
|
||||
compl = \\v => vp.compl ! {g = GSg Masc; p = P1} ++ p.s;
|
||||
c2 = {s = vp.present ! Imperfective ! Sg ! P1 ++ p.s; c = p.c}} ;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ concrete AllMlt of AllMltAbs =
|
||||
LangMlt,
|
||||
DictMlt,
|
||||
IrregMlt,
|
||||
ExtraMlt
|
||||
** {
|
||||
ExtendMlt
|
||||
** open ExtraMlt in {
|
||||
|
||||
} ;
|
||||
|
||||
@@ -10,5 +10,5 @@ abstract AllMltAbs =
|
||||
Lang,
|
||||
DictMltAbs,
|
||||
IrregMltAbs,
|
||||
ExtraMltAbs
|
||||
Extend
|
||||
** {} ;
|
||||
|
||||
17
src/maltese/ExtendMlt.gf
Normal file
17
src/maltese/ExtendMlt.gf
Normal file
@@ -0,0 +1,17 @@
|
||||
concrete ExtendMlt of Extend =
|
||||
CatMlt ** ExtendFunctor - [
|
||||
ComplDirectVS,
|
||||
ComplDirectVQ,
|
||||
iFem_Pron, youFem_Pron, weFem_Pron, youPlFem_Pron,
|
||||
theyFem_Pron, youPolFem_Pron
|
||||
]
|
||||
with (Grammar = GrammarMlt) ** open ParadigmsMlt, MorphoMlt, ResMlt in {
|
||||
|
||||
lin iFem_Pron = mkPron "jien" "i" singular P1 feminine ; --- also JIENA
|
||||
youFem_Pron = mkPron "int" "ek" singular P2 feminine ; --- also INTI
|
||||
weFem_Pron = mkPron "aħna" "na" plural P1 feminine ;
|
||||
youPlFem_Pron = mkPron "intom" "kom" plural P2 feminine ;
|
||||
theyFem_Pron = mkPron "huma" "hom" plural P3 feminine ;
|
||||
youPolFem_Pron = mkPron "int" "ek" singular P2 feminine ; --- also INTI
|
||||
|
||||
}
|
||||
@@ -310,6 +310,13 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude, Maybe in {
|
||||
isDefn = np.isDefn ;
|
||||
} ;
|
||||
|
||||
QuantityNP n m = { -- quessed
|
||||
s = \\c => preOrPost m.isPre m.s (n.s ! NumNom) ;
|
||||
a = agrP3 (numform2num n.n) Masc ;
|
||||
isPron = False ;
|
||||
isDefn = False ;
|
||||
} ;
|
||||
|
||||
oper
|
||||
-- Overwrite the s field in an NP
|
||||
overwriteNPs : NounPhrase -> (NPCase => Str) -> NounPhrase = \np,tbl -> {
|
||||
|
||||
@@ -742,10 +742,8 @@ met_CAdv = lin CAdv {s = " мэт" ; c2 = noPrep Nom} ;
|
||||
meterhueue_CAdv = lin CAdv {s = " мэтэрхүү" ; c2 = noPrep Nom} ;
|
||||
net_CAdv = lin CAdv {s = " нэт" ; c2 = noPrep Nom} ;
|
||||
shig_CAdv = lin CAdv {s = " шиг" ; c2 = noPrep Nom} ;
|
||||
shig_CAdv = lin CAdv {s = " шиг" ; c2 = noPrep Nom} ;
|
||||
atlaa_Conj = mkConj "атлаа" ;
|
||||
ba_Conj = mkConj "ба" ;
|
||||
ba_Conj = mkConj "ба" ;
|
||||
bas_Conj = mkConj "бас" ;
|
||||
boegoeoed_Conj = mkConj "бөгөөд" ;
|
||||
boegoeoetoel_Conj = mkConj "бөгөөтөл" ;
|
||||
|
||||
@@ -86,7 +86,6 @@ oper
|
||||
hlaar4 : Suffix = \\vt => "хл" + aa4!vt + "р" ;
|
||||
haar4 : Suffix = \\vt => "х" + aa4!vt + "р" ;
|
||||
tal4 : Suffix = \\vt => "т" + a4!vt + "л" ;
|
||||
saar4 : Suffix = \\vt => "с" + aa4!vt + "р" ;
|
||||
nguut2 : Suffix = table {MascA | MascO => "нгуут" ; FemE | FemOE => "нгүүт"} ;
|
||||
ngaa4 : Suffix = \\vt => "нг" + aa4!vt ;
|
||||
aad4 : Suffix = \\vt => aa4!vt + "д" ;
|
||||
|
||||
@@ -16,10 +16,8 @@ oper 'إِرْهابِي_N' = wmkN { g = masc ; sg = "إِرْهابِي" } ;
|
||||
oper 'عَاصِمَة_N' = wmkN { g = fem ; pl = "عَوَاصِم" ; root = "عصم" ; sg = "عَاصِمَة" } ;
|
||||
oper 'رِعايَة_N' = wmkN { g = fem ; root = "رعي" ; sg = "رِعايَة" } ;
|
||||
oper 'طِفْل_N' = wmkN { g = masc ; pl = "أَطْفَال" ; root = "طفل" ; sg = "طِفْل" } ;
|
||||
oper 'طِفْل_N' = wmkN { g = masc ; pl = "أَطْفَال" ; root = "طفل" ; sg = "طِفْل" } ;
|
||||
oper 'مَدِينَة_N' = wmkN { g = fem ; pl = "مُدُن" ; root = "مدن" ; sg = "مَدِينَة" } ;
|
||||
oper 'دَوْلَة_N' = wmkN { g = fem ; pl = "دُوَل" ; sg = "دَوْلَة" } ;
|
||||
oper 'دَوْلَة_N' = wmkN { g = fem ; pl = "دُوَل" ; sg = "دَوْلَة" } ;
|
||||
oper 'ثَقَافَة_N' = wmkN { g = fem ; pl = "ثَقَافَات" ; root = "ثقف" ; sg = "ثَقَافَة" } ;
|
||||
oper 'اِنْخِفَاض_N' = wmkN { g = masc ; pl = "اِنْخِفَاضَات" ; sg = "اِنْخِفَاض" } ;
|
||||
oper 'تَوْزِيع_N' = wmkN { g = masc ; sg = "تَوْزِيع" } ;
|
||||
@@ -65,15 +63,11 @@ oper 'فُنْدُق_N' = wmkN { g = masc ; pl = "فَنَادِق" ; sg = "فُ
|
||||
oper 'فِهْرِس_N' = wmkN { g = masc ; pl = "فَهَارِس" ; sg = "فِهْرِس" } ;
|
||||
oper 'تَضَخُّم_N' = wmkN { g = masc ; root = "ضخم" ; sg = "تَضَخُّم" } ;
|
||||
oper 'مَوْضِع_N' = wmkN { g = masc ; pl = "مَوَاضِع" ; root = "وضع" ; sg = "مَوْضِع" } ;
|
||||
oper 'رَئِيس_N' = wmkN { g = masc ; pl = "رُؤَسَاء" ; root = "رءس" ; sg = "رَئِيس" } ;
|
||||
oper 'رَئِيس_N' = wmkN { g = masc ; pl = "رُؤَسَاء" ; root = "رءس" ; sg = "رَئِيس" } ;
|
||||
oper 'مُنْتَج_N' = wmkN { g = masc ; pl = "مُنْتَجَات" ; sg = "مُنْتَج" } ;
|
||||
oper 'مَلِكَة_N' = wmkN { g = fem ; pl = "مَلِكَات" ; sg = "مَلِكَة" } ;
|
||||
oper 'مُعَدَّل_N' = wmkN { g = masc ; root = "عدل" ; sg = "مُعَدَّل" } ;
|
||||
oper 'مُعَدَّل_N' = wmkN { g = masc ; root = "عدل" ; sg = "مُعَدَّل" } ;
|
||||
oper 'مَاء_N' = wmkN { g = masc ; pl = "مِيَاه" ; root = "موه" ; sg = "مَاء" } ;
|
||||
oper 'عَالَم_N' = wmkN { g = masc ; pl = "عَالَمُون" ; sg = "عَالَم" } ;
|
||||
oper 'عَالَم_N' = wmkN { g = masc ; pl = "عَالَمُون" ; sg = "عَالَم" } ;
|
||||
oper 'مَنْطِقَة_N' = wmkN { g = fem ; pl = "مَنْطِقَات" ; root = "نطق" ; sg = "مَنْطِقَة" } ;
|
||||
oper 'كِتَاب_N' = wmkN { g = masc ; pl = "كُتُب" ; sg = "كِتَاب" } ;
|
||||
oper 'عُمْلَة_N' = wmkN { g = fem ; pl = "عُمْلَات" ; root = "عمل" ; sg = "عُمْلَة" } ;
|
||||
@@ -82,7 +76,6 @@ oper 'شَرْق_N' = wmkN { g = masc ; sg = "شَرْق" } ;
|
||||
oper 'رَأْس_N' = wmkN { g = masc ; pl = "رُؤُوس" ; sg = "رَأْس" } ;
|
||||
oper 'سُكّان_N' = wmkN { g = fem ; sg = "سُكّان" } ;
|
||||
oper 'مَلَكِيَّة_N' = wmkN { g = fem ; pl = "مَلَكِيَّات" ; root = "ملك" ; sg = "مَلَكِيَّة" } ;
|
||||
oper 'سُكّان_N' = wmkN { g = fem ; sg = "سُكّان" } ;
|
||||
oper 'جُمْهُورِيَّة_N' = wmkN { g = fem ; pl = "جُمْهُورِيَّات" ; sg = "جُمْهُورِيَّة" } ;
|
||||
oper 'رُوسِيَّة_N' = wmkN { g = fem ; pl = "رُوسِيَّات" ; sg = "رُوسِيَّة" } ;
|
||||
oper 'جَنُوب_N' = wmkN { g = masc ; root = "جنب" ; sg = "جَنُوب" } ;
|
||||
@@ -126,7 +119,6 @@ oper 'عَرَبِي_A' = wmkA { fem_pl = "عَرَبِيَّات" ; fem_sg = "
|
||||
oper 'حُر_A' = wmkA { fem_pl = "حُرَّات" ; fem_sg = "حُرَّة" ; masc_pl = "أَحْرَار" ; masc_sg = "حُر" ; root = "حرر" } ;
|
||||
oper 'هَجِين_A' = wmkA { fem_pl = "هَجَائِن" ; fem_sg = "هَجِين" ; masc_pl = "هِجَان" ; masc_sg = "هَجِين" ; root = "هجن" } ;
|
||||
oper 'رَسْمِي_A' = wmkA { fem_pl = "رَسْمِيَّات" ; fem_sg = "رَسْمِيَّة" ; masc_pl = "رَسْمِيُّون" ; masc_sg = "رَسْمِي" } ;
|
||||
oper 'رَسْمِي_A' = wmkA { fem_pl = "رَسْمِيَّات" ; fem_sg = "رَسْمِيَّة" ; masc_pl = "رَسْمِيُّون" ; masc_sg = "رَسْمِي" } ;
|
||||
oper 'أُرْثُوذُكْسِيَّة_A' = wmkA { fem_sg = "nan" ; masc_sg = "nan" } ;
|
||||
oper 'مُرَبَّع_A' = wmkA { fem_pl = "مُرَبَّعَات" ; fem_sg = "مُرَبَّعَة" ; masc_pl = "مُرَبَّعُون" ; masc_sg = "مُرَبَّع" } ;
|
||||
oper 'مُسْلِم_A' = wmkA { fem_pl = "مُسْلِمَات" ; fem_sg = "مُسْلِمَة" ; masc_pl = "مُسْلِمُون" ; masc_sg = "مُسْلِم" ; root = "سلم" } ;
|
||||
|
||||
@@ -107,8 +107,6 @@ concrete CatPol of Cat = CommonX - [CAdv] ** open ResPol, Prelude, (R = ParamX)
|
||||
VP = VerbPhrase;
|
||||
Comp = { s: GenNum => Str };
|
||||
|
||||
Ord = { s : AForm => Str };
|
||||
|
||||
A = Adj;
|
||||
A2 = Adj ** { c : Complement };
|
||||
|
||||
|
||||
@@ -30,8 +30,6 @@ lin
|
||||
}
|
||||
};
|
||||
UttImpPol = UttImpPl;
|
||||
--UttAdv : Adv -> Utt ; -- here
|
||||
UttAdv adv = {s= adv.s};
|
||||
|
||||
-- better but can be improved upon
|
||||
UttVP vp = case <vp.isCompApStem,vp.containsAdv, vp.containsAdV,vp.containsComp, vp.containsComp2> of {
|
||||
|
||||
@@ -393,8 +393,6 @@ oper
|
||||
= \word, g, anim, zi, rel, p -> lin N2 (mkFun (noMinorCases (Z.makeNoun word g anim rel AdjType (Z.parseIndex zi))) p) ;
|
||||
} ;
|
||||
|
||||
nullPrep : Prep = lin Prep {s=[] ; c=Gen ; neggen=False ; hasPrep=False} ;
|
||||
|
||||
mkN3 = overload {
|
||||
mkN3 : N -> Prep -> Prep -> N3
|
||||
= \n, p2, p3 -> lin N3 (mkFun2 n p2 p3) ;
|
||||
|
||||
@@ -125,6 +125,7 @@ concrete CatSom of Cat = CommonX - [Adv,IAdv] ** open ResSom, Prelude in {
|
||||
|
||||
linref
|
||||
-- Cl = linCl ;
|
||||
V, VS, VQ, VA, VV, V2A, V2V, V2S, V2Q, V2, V3 = \v -> v.s ! VImp Sg Pos ;
|
||||
VP = infVP ;
|
||||
CN = linCN ;
|
||||
Prep = \prep -> prep.s ! ZeroObj ++ prep.sii ++ prep.dhex ++ prep.hoostiisa ! Sg3 Masc ;
|
||||
|
||||
154
src/somali/DocumentationSom.gf
Normal file
154
src/somali/DocumentationSom.gf
Normal file
@@ -0,0 +1,154 @@
|
||||
concrete DocumentationSom of Documentation = CatSom ** open ResSom,Prelude,HTML in {
|
||||
lincat Definition = {s : Str} ;
|
||||
lincat Document = {s : Str} ;
|
||||
lincat Inflection = {t : Str; s1 : Str; s2 : Str} ;
|
||||
lincat Tag = {s : Str} ;
|
||||
lin InflectionA, InflectionA2 = \adj -> {
|
||||
t = "a";
|
||||
s1 = heading1 "Adjective";
|
||||
s2 = frameTable (tr (td "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "Nom" ++ td (adj.s ! AF Sg Nom) ++ td (adj.s ! AF Pl Nom)) ++
|
||||
tr (th "Abs" ++ td (adj.s ! AF Sg Abs) ++ td (adj.s ! AF Pl Abs)))
|
||||
} ;
|
||||
lin InflectionAdA, InflectionAdN, InflectionAdV = \adv -> {
|
||||
t = "adv";
|
||||
s1 = heading1 "Adverb";
|
||||
s2 = paragraph adv.s
|
||||
} ;
|
||||
lin InflectionAdv adv = {t = "adv"; s1 = heading1 "Adverb";
|
||||
s2 = frameTable (tr (th "sii" ++ td adv.sii)
|
||||
++ tr (th "dhex" ++ td adv.dhex)
|
||||
++ tr (th "berri" ++ td adv.berri)
|
||||
++ tr (th "miscAdv" ++ td adv.miscAdv)
|
||||
++ tr (th "np" ++ td adv.np.s))} ;
|
||||
lin InflectionGN pn = {t = "pn"; s1 = heading1 "Name";
|
||||
s2 = frameTable (tr (th "" ++ td pn.s))} ;
|
||||
lin InflectionLN pn = {t = "pn"; s1 = heading1 "Name";
|
||||
s2 = frameTable (tr (th "" ++ td pn.s))} ;
|
||||
lin InflectionN,InflectionN2,InflectionN3 = \noun -> {
|
||||
t = "n";
|
||||
s1 = heading1 "Noun";
|
||||
s2 = frameTable (tr (td "" ++ th "Sg" ++ th "Pl") ++
|
||||
tr (th "Def" ++ td (noun.s ! Def Sg) ++ td (noun.s ! Def Pl)) ++
|
||||
tr (th "Indef" ++ td (noun.s ! Indef Sg) ++ td (noun.s ! Indef Pl)) ++
|
||||
tr (th "Nom" ++ td (noun.s ! NomSg) ++ td []) ++
|
||||
tr (th "Numerative" ++ intagAttr "td" "colspan=2" (noun.s ! Numerative)))
|
||||
} ;
|
||||
lin InflectionPN pn = {t = "pn"; s1 = heading1 "Name";
|
||||
s2 = frameTable (tr (th "" ++ td pn.s))} ;
|
||||
lin InflectionPrep prep = {t = "prep"; s1 = heading1 "Preposition";
|
||||
s2 = frameTable (tr (th "Sg1Obj" ++ td (prep.s ! Sg1Obj))
|
||||
++ tr (th "Sg2Obj" ++ td (prep.s ! Sg2Obj))
|
||||
++ tr (th "(Pl1Obj Excl)"
|
||||
++ td (prep.s ! Pl1Obj Excl))
|
||||
++ tr (th "(Pl1Obj Incl)"
|
||||
++ td (prep.s ! Pl1Obj Incl))
|
||||
++ tr (th "Pl2Obj"
|
||||
++ td (prep.s ! Pl2Obj))
|
||||
++ tr (th "ReflexiveObj"
|
||||
++ td (prep.s
|
||||
! ReflexiveObj))
|
||||
++ tr (th "ZeroObj"
|
||||
++ td (prep.s
|
||||
! ZeroObj))
|
||||
++ tr (th "berri"
|
||||
++ td prep.berri)
|
||||
++ tr (th "sii"
|
||||
++ td prep.sii)
|
||||
++ tr (th "dhex"
|
||||
++ td prep.dhex)
|
||||
++ tr (th "hoostiisa Sg1"
|
||||
++ td (prep.hoostiisa
|
||||
! Sg1))
|
||||
++ tr (th "hoostiisa Sg2"
|
||||
++ td (prep.hoostiisa
|
||||
! Sg2))
|
||||
++ tr (th "hoostiisa (Sg3 Masc)"
|
||||
++ td (prep.hoostiisa
|
||||
! Sg3 Masc))
|
||||
++ tr (th "hoostiisa (Sg3 Fem)"
|
||||
++ td (prep.hoostiisa
|
||||
! Sg3 Fem))
|
||||
++ tr (th "hoostiisa (Pl1 Excl)"
|
||||
++ td (prep.hoostiisa
|
||||
! Pl1 Excl))
|
||||
++ tr (th "hoostiisa (Pl1 Incl)"
|
||||
++ td (prep.hoostiisa
|
||||
! Pl1 Incl))
|
||||
++ tr (th "hoostiisa Pl2"
|
||||
++ td (prep.hoostiisa
|
||||
! Pl2))
|
||||
++ tr (th "hoostiisa Pl3"
|
||||
++ td (prep.hoostiisa
|
||||
! Pl3))
|
||||
++ tr (th "hoostiisa Impers"
|
||||
++ td (prep.hoostiisa
|
||||
! Impers)))} ;
|
||||
lin InflectionSN pn = {t = "pn"; s1 = heading1 "Name";
|
||||
s2 = frameTable (tr (th "" ++ td pn.s))} ;
|
||||
lin InflectionV v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionV2 v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionV2A v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionV2Q v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionV2S v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionV2V v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionV3 v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionVA v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionVQ v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionVS v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin InflectionVV v = {t = "v"; s1 = heading1 "Verb"; s2 = inflectV v} ;
|
||||
lin MkDefinition t d = {s = "<p><b>Definition:</b>"
|
||||
++ t.s ++ d.s ++ "</p>"} ;
|
||||
lin MkDefinitionEx t d e = {s = "<p><b>Definition:</b>"
|
||||
++ t.s ++ d.s ++ "<p><b>Example:</b>" ++ t.s ++ "</p>"} ;
|
||||
lin MkDocument d i e = {s = i.s1 ++ i.s2} ;
|
||||
lin MkTag i = {s = i.t} ;
|
||||
lin NoDefinition t = t ;
|
||||
|
||||
oper inflectV : Verb -> Str = \v ->
|
||||
heading2 "Infinitive" ++
|
||||
paragraph (v.s ! VInf) ++
|
||||
heading2 "Present" ++
|
||||
heading3 "Simple" ++
|
||||
frameTable (tr (td "" ++ th "Pos" ++ th "Neg") ++
|
||||
tr (th "Sg1_Sg3Masc" ++ td (v.s ! VPres Simple Sg1_Sg3Masc Pos) ++ td (v.s ! VPres Simple Sg1_Sg3Masc Neg)) ++
|
||||
tr (th "Sg2_Sg3Fem" ++ td (v.s ! VPres Simple Sg2_Sg3Fem Pos) ++ td (v.s ! VPres Simple Sg2_Sg3Fem Neg)) ++
|
||||
tr (th "Pl1" ++ td (v.s ! VPres Simple Pl1_ Pos) ++ td (v.s ! VPres Simple Pl1_ Neg)) ++
|
||||
tr (th "Pl2" ++ td (v.s ! VPres Simple Pl2_ Pos) ++ td (v.s ! VPres Simple Pl2_ Neg)) ++
|
||||
tr (th "Pl3" ++ td (v.s ! VPres Simple Pl3_ Pos) ++ td (v.s ! VPres Simple Pl3_ Neg))) ++
|
||||
heading3 "Progressive" ++
|
||||
frameTable (tr (td "" ++ th "Pos" ++ th "Neg") ++
|
||||
tr (th "Sg1_Sg3Masc" ++ td (v.s ! VPres Progressive Sg1_Sg3Masc Pos) ++ td (v.s ! VPres Progressive Sg1_Sg3Masc Neg)) ++
|
||||
tr (th "Sg2_Sg3Fem" ++ td (v.s ! VPres Progressive Sg2_Sg3Fem Pos) ++ td (v.s ! VPres Progressive Sg2_Sg3Fem Neg)) ++
|
||||
tr (th "Pl1" ++ td (v.s ! VPres Progressive Pl1_ Pos) ++ td (v.s ! VPres Progressive Pl1_ Neg)) ++
|
||||
tr (th "Pl2" ++ td (v.s ! VPres Progressive Pl2_ Pos) ++ td (v.s ! VPres Progressive Pl2_ Neg)) ++
|
||||
tr (th "Pl3" ++ td (v.s ! VPres Progressive Pl3_ Pos) ++ td (v.s ! VPres Progressive Pl3_ Neg))) ++
|
||||
heading2 "Past" ++
|
||||
heading3 "Simple" ++
|
||||
frameTable (tr (td "" ++ th "Pos" ++ th "Neg") ++
|
||||
tr (th "Sg1_Sg3Masc" ++ td (v.s ! VPast Simple Sg1_Sg3Masc) ++ intagAttr "td" "rowspan=5" (v.s ! VNegPast Simple)) ++
|
||||
tr (th "Sg2_Sg3Fem" ++ td (v.s ! VPast Simple Sg2_Sg3Fem)) ++
|
||||
tr (th "Pl1" ++ td (v.s ! VPast Simple Pl1_)) ++
|
||||
tr (th "Pl2" ++ td (v.s ! VPast Simple Pl2_)) ++
|
||||
tr (th "Pl3" ++ td (v.s ! VPast Simple Pl3_))) ++
|
||||
heading3 "Progressive" ++
|
||||
frameTable (tr (td "" ++ th "Pos" ++ th "Neg") ++
|
||||
tr (th "Sg1_Sg3Masc" ++ td (v.s ! VPast Progressive Sg1_Sg3Masc) ++ intagAttr "td" "rowspan=5" (v.s ! VNegPast Progressive)) ++
|
||||
tr (th "Sg2_Sg3Fem" ++ td (v.s ! VPast Progressive Sg2_Sg3Fem)) ++
|
||||
tr (th "Pl1" ++ td (v.s ! VPast Progressive Pl1_)) ++
|
||||
tr (th "Pl2" ++ td (v.s ! VPast Progressive Pl2_)) ++
|
||||
tr (th "Pl3" ++ td (v.s ! VPast Progressive Pl3_))) ++
|
||||
heading2 "Imperative" ++
|
||||
frameTable (tr (td "" ++ th "Pos" ++ th "Neg") ++
|
||||
tr (th "Sg" ++ td (v.s ! VImp Sg Pos) ++ td (v.s ! VImp Sg Neg)) ++
|
||||
tr (th "Pl" ++ td (v.s ! VImp Pl Pos) ++ td (v.s ! VImp Pl Neg))) ++
|
||||
heading2 "Relative" ++
|
||||
frameTable (tr (td "" ++ th "Pos" ++ th "Neg") ++
|
||||
tr (th "SgMasc" ++ td (v.s ! VRel SgMasc) ++ intagAttr "td" "rowspan=3" (v.s ! VRelNeg)) ++
|
||||
tr (th "SgFem" ++ td (v.s ! VRel SgFem)) ++
|
||||
tr (th "PlInv" ++ td (v.s ! VRel PlInv))) ++
|
||||
heading2 "Negative Conditional" ++
|
||||
frameTable (tr (th "SgMasc" ++ td (v.s ! VNegCond SgMasc)) ++
|
||||
tr (th "SgFem" ++ td (v.s ! VNegCond SgFem)) ++
|
||||
tr (th "PlInv" ++ td (v.s ! VNegCond PlInv))) ;
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
concrete LangSom of Lang =
|
||||
GrammarSom,
|
||||
LexiconSom,
|
||||
ConstructionSom ;
|
||||
ConstructionSom,
|
||||
DocumentationSom ;
|
||||
|
||||
@@ -64,7 +64,10 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
||||
} ;
|
||||
|
||||
-- : Pron -> NP ;
|
||||
UsePron pron = pron ** {st = Definite} ;
|
||||
UsePron pron = pron ** {
|
||||
s = pron.sp ;
|
||||
st = Definite
|
||||
} ;
|
||||
|
||||
-- : Predet -> NP -> NP ; -- only the man
|
||||
PredetNP predet np =
|
||||
@@ -250,7 +253,7 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
||||
mod = \\st,n,c =>
|
||||
cn.mod ! st ! n ! Abs -- If there was something before, it is now in Abs
|
||||
++ andConj st cn.modtype -- If the sentence is already modified, any new modifier needs to be introduced with conjunction
|
||||
++ ap.s ! AF n c ;
|
||||
++ ap.s ! AF n c ++ " " ++ ap.compar ;
|
||||
modtype = AMod
|
||||
} ;
|
||||
|
||||
|
||||
@@ -23,6 +23,18 @@ Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQ
|
||||
LangSom: bisad BIND daasi bisad BIND dan waa ka weyn tahay
|
||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN cat_N)) (UseComp (CompAP (ComparA big_A (DetCN (DetQuant this_Quant NumSg) (UseN cat_N)))))))) NoVoc
|
||||
|
||||
-- LangEng: house bigger than car
|
||||
LangSom: guri ka weyn baabuur
|
||||
Lang: PhrUtt NoPConj (UttCN (AdjCN (ComparA big_A (MassNP (UseN car_N))) (UseN house_N))) NoVoc
|
||||
|
||||
-- LangEng: house bigger than he
|
||||
Lang> l PhrUtt NoPConj (UttCN (AdjCN (ComparA big_A (UsePron he_Pron)) (UseN house_N))) NoVoc
|
||||
guri ka weyn isaga
|
||||
|
||||
-- LangEng: house bigger than I
|
||||
Lang> l PhrUtt NoPConj (UttCN (AdjCN (ComparA big_A (UsePron i_Pron)) (UseN house_N))) NoVoc
|
||||
guri ka weyn aniga
|
||||
|
||||
-- LangEng: that cat is biggest
|
||||
LangSom: bisad BIND daasi waa ugu weyn tahay
|
||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN cat_N)) (UseComp (CompAP (AdjOrd (OrdSuperl big_A))))))) NoVoc
|
||||
|
||||
@@ -125,10 +125,4 @@ oper
|
||||
comp = \\a => vps.comp ! a ++ (let agr = complAgr a in vps.s.s ! VPart agr.g agr.n) ++ agent ;
|
||||
} ;
|
||||
|
||||
lin ExistsNP np =
|
||||
mkClause [] True False np.a
|
||||
(insertComplement (\\_ => (np.s ! Nom).ton)
|
||||
(predV (mkV "existir"))) ;
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
@@ -243,4 +243,9 @@ concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, ParamX,
|
||||
a = np.a
|
||||
} ;
|
||||
|
||||
QuantityNP n m = {
|
||||
s = \\c => preOrPost m.isPre m.s (n.s ! NCard ! Sg ! Nom) ;
|
||||
h = mkHar I_Har SVow ; -- guessed
|
||||
a = agrP3 n.n
|
||||
} ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user