mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
Compare commits
122 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fe56b729b4 | ||
|
|
cab232a4f6 | ||
|
|
cdeaf5a271 | ||
|
|
60e38122d0 | ||
|
|
800e2b0dda | ||
|
|
84bdce7cc8 | ||
|
|
add5029b7a | ||
|
|
19ba581f0e | ||
|
|
a890a1aad5 | ||
|
|
26a1e55cbe | ||
|
|
992e670c10 | ||
|
|
eea95a6f76 | ||
|
|
f1facac1bf | ||
|
|
c5bb0dacb5 | ||
|
|
44ea945c8c | ||
|
|
9265270a0c | ||
|
|
86e2afcfc0 | ||
|
|
6115d44398 | ||
|
|
cf6a376272 | ||
|
|
3a8527689c | ||
|
|
416d37eee7 | ||
|
|
c4d578cac3 | ||
|
|
a7341d9be1 | ||
|
|
57ef377e6d | ||
|
|
3a133d035d | ||
|
|
912ddd521f | ||
|
|
945bc086f2 | ||
|
|
70806027c1 | ||
|
|
88a3759a9e | ||
|
|
1910010e70 | ||
|
|
0cd851aa10 | ||
|
|
2b07314680 | ||
|
|
a3e19ed673 | ||
|
|
b571d86b7c | ||
|
|
6064e69d8e | ||
|
|
510abc0364 | ||
|
|
331a07bd35 | ||
|
|
34ba4cf564 | ||
|
|
5a9ab2cbdf | ||
|
|
97b8cb72aa | ||
|
|
09087c1944 | ||
|
|
f497b4a63a | ||
|
|
56e97ebfff | ||
|
|
16c19eb4b0 | ||
|
|
35f5d9a68b | ||
|
|
0f78e35bed | ||
|
|
bff00560d5 | ||
|
|
4ab63d2d66 | ||
|
|
41e3b8280b | ||
|
|
4a3e30a1cd | ||
|
|
9458f96f0b | ||
|
|
ba922b5daa | ||
|
|
f261b2f45b | ||
|
|
939e96fb6c | ||
|
|
3da5f0d318 | ||
|
|
37d915c879 | ||
|
|
b69c3518a7 | ||
|
|
0896a77049 | ||
|
|
7225033a03 | ||
|
|
ed27aa97fc | ||
|
|
de3d59c7e8 | ||
|
|
03024d7b72 | ||
|
|
f6187834c4 | ||
|
|
842747b407 | ||
|
|
922f664f74 | ||
|
|
3943089d3d | ||
|
|
6a6788c24e | ||
|
|
e7e7f12ad8 | ||
|
|
90d8897bf9 | ||
|
|
be0fb1f7c1 | ||
|
|
7d73dd8195 | ||
|
|
48ec088faa | ||
|
|
8a84ca1a45 | ||
|
|
34f5e625e3 | ||
|
|
27c2d7cbb3 | ||
|
|
26abc63953 | ||
|
|
15df5ed37e | ||
|
|
43f19f283e | ||
|
|
9b6b94ec1d | ||
|
|
8b462bdbfb | ||
|
|
14c7db6427 | ||
|
|
2c613bfc83 | ||
|
|
8a8c1c6b42 | ||
|
|
76b27152f9 | ||
|
|
36bc768f26 | ||
|
|
b7275a2bac | ||
|
|
7e8e6dbf34 | ||
|
|
27ff3935c5 | ||
|
|
4cd3d3158e | ||
|
|
e3b27613fd | ||
|
|
5f6a8b2905 | ||
|
|
6203aee170 | ||
|
|
ffb77daf31 | ||
|
|
494c91f9dd | ||
|
|
6f6405b90e | ||
|
|
da0e273d3d | ||
|
|
263b668249 | ||
|
|
019a347246 | ||
|
|
6aeda22ed6 | ||
|
|
ae9b7d4d45 | ||
|
|
323e4b4cdf | ||
|
|
e42c5f53e2 | ||
|
|
fea01dd313 | ||
|
|
9e402cb608 | ||
|
|
401ac1f954 | ||
|
|
6a2cb9ec77 | ||
|
|
b339f7c2fc | ||
|
|
d6f3cae141 | ||
|
|
44acdbd350 | ||
|
|
f630f6ef29 | ||
|
|
8808ce108b | ||
|
|
1c3bb0f6eb | ||
|
|
5cc990d259 | ||
|
|
621cfd8b43 | ||
|
|
deb9d40b7e | ||
|
|
25f422f5ca | ||
|
|
f0abf5deff | ||
|
|
fe2dde5a2c | ||
|
|
2adce20f76 | ||
|
|
b8a0e7adfe | ||
|
|
e4cf12ee1a | ||
|
|
943f387a23 |
@@ -1,25 +1,61 @@
|
|||||||
concrete CatSqi of Cat = CommonX ** open ParamX, Prelude, ResSqi in {
|
concrete CatSqi of Cat = CommonX ** open ParamX,Prelude,ResSqi in {
|
||||||
|
lincat A = Adj ;
|
||||||
lincat N = Noun ;
|
lincat A2 = Adj ** {c2 : Compl} ;
|
||||||
lincat N2 = Noun ** {c2 : Compl} ;
|
lincat V, VA, VV, VS, VQ = Verb ;
|
||||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
|
||||||
lincat A = Adj ;
|
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
||||||
lincat A2 = Adj ** {c2 : Compl} ;
|
lincat Prep = Compl ;
|
||||||
lincat V, VA, VV, VS, VQ = Verb ;
|
lincat ACard = {s : Str} ;
|
||||||
lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
|
lincat AP = {s : Species => Case => Gender => Number => Str} ;
|
||||||
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
lincat CN = Noun ;
|
||||||
lincat Prep = Compl ;
|
lincat Card = {s : Str} ;
|
||||||
|
lincat Cl = {s : Str} ;
|
||||||
lincat Numeral = {s : Str} ;
|
lincat ClSlash = {s : Str} ;
|
||||||
lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
lincat Comp = {s : Str} ;
|
||||||
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
|
lincat Conj = {s : Str} ;
|
||||||
|
lincat DAP = {s : Str} ;
|
||||||
lincat AP = {s: Species => Case => Gender => Number => Str} ;
|
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
|
||||||
lincat CN = Noun ;
|
lincat Det = {s : Case => Gender => Str; sp : Species; n : Number} ;
|
||||||
lincat Num = {s : Str; n : Number} ;
|
lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
||||||
lincat Quant = {s : Case => Gender => Number => Str; spec : Species} ;
|
lincat GN = {s : Str} ;
|
||||||
lincat Det = {s : Case => Gender => Str; spec : Species; n : Number} ;
|
lincat IComp = {s : Str} ;
|
||||||
lincat NP = {s: Case => Str; a : Agr} ;
|
lincat IDet = {s : Str} ;
|
||||||
lincat Pron = {s: Case => Str; acc_clit, dat_clit : Str; a : Agr} ;
|
lincat IP = {s : Str} ;
|
||||||
|
lincat IQuant = {s : Str} ;
|
||||||
|
lincat Imp = {s : Str} ;
|
||||||
|
lincat LN = {s : Str} ;
|
||||||
|
lincat N = Noun ;
|
||||||
|
lincat N2 = {s : Species => Case => Number => Str; g : Gender;
|
||||||
|
c2 : {s : Str}} ;
|
||||||
|
lincat N3 = {s : Species => Case => Number => Str; g : Gender;
|
||||||
|
c2 : {s : Str}; c3 : {s : Str}} ;
|
||||||
|
lincat NP = {s : Case => Str; a : Agr} ;
|
||||||
|
lincat Num = {s : Str; n : Number} ;
|
||||||
|
lincat Numeral = {s : Str} ;
|
||||||
|
lincat Ord = {s : Str} ;
|
||||||
|
lincat PN = {s : Str} ;
|
||||||
|
lincat Predet = {s : Str} ;
|
||||||
|
lincat Pron = {s: Case => Str; acc_clit, dat_clit : Str; a : Agr} ;
|
||||||
|
lincat QCl = {s : Str} ;
|
||||||
|
lincat QS = {s : Str} ;
|
||||||
|
lincat Quant = {s : Case => Gender => Number => Str; sp : Species} ;
|
||||||
|
lincat RCl = {s : Str} ;
|
||||||
|
lincat RP = {s : Str} ;
|
||||||
|
lincat RS = {s : Str} ;
|
||||||
|
lincat S = {s : Str} ;
|
||||||
|
lincat SN = {s : Str} ;
|
||||||
|
lincat SSlash = {s : Str} ;
|
||||||
|
lincat Subj = {s : Str} ;
|
||||||
|
lincat VP = {indicative : Tense => Number => Person => Case => Str;
|
||||||
|
participle : Case => Str;
|
||||||
|
pres_optative : Number => Person => Case => Str;
|
||||||
|
perf_optative : Number => Person => Case => Str;
|
||||||
|
pres_admirative : Number => Person => Case => Str;
|
||||||
|
imperf_admirative : Number => Person => Case => Str} ;
|
||||||
|
lincat VPSlash = {indicative : Tense => Number => Person => Str;
|
||||||
|
imperative : Number => Str; participle : Str;
|
||||||
|
pres_optative : Number => Person => Str;
|
||||||
|
perf_optative : Number => Person => Str;
|
||||||
|
pres_admirative : Number => Person => Str;
|
||||||
|
imperf_admirative : Number => Person => Str} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,32 +51,32 @@ lin InflectionV = \x -> {
|
|||||||
t="fl" ;
|
t="fl" ;
|
||||||
s1=heading1 "Folje" ;
|
s1=heading1 "Folje" ;
|
||||||
s2=frameTable (
|
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 (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 "P2" ++ td (x.indicative ! Pres ! Sg ! P2)) ++
|
||||||
tr (th "P3" ++ td (x.Indicative ! Pres ! Sg ! P3)) ++
|
tr (th "P3" ++ td (x.indicative ! Pres ! Sg ! P3)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Pres ! Pl ! P1)) ++
|
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 "P2" ++ td (x.indicative ! Pres ! Pl ! P2)) ++
|
||||||
tr (th "P3" ++ td (x.Indicative ! Pres ! Pl ! P3)) ++
|
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 (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 "P2" ++ td (x.indicative ! Past ! Sg ! P2)) ++
|
||||||
tr (th "P3" ++ td (x.Indicative ! Past ! Sg ! P3)) ++
|
tr (th "P3" ++ td (x.indicative ! Past ! Sg ! P3)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Past ! Pl ! P1)) ++
|
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 "P2" ++ td (x.indicative ! Past ! Pl ! P2)) ++
|
||||||
tr (th "P3" ++ td (x.Indicative ! Past ! Pl ! P3)) ++
|
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 (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 "P2" ++ td (x.indicative ! Aorist ! Sg ! P2)) ++
|
||||||
tr (th "P3" ++ td (x.Indicative ! Aorist ! Sg ! P3)) ++
|
tr (th "P3" ++ td (x.indicative ! Aorist ! Sg ! P3)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Aorist ! Pl ! P1)) ++
|
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 "P2" ++ td (x.indicative ! Aorist ! Pl ! P2)) ++
|
||||||
tr (th "P3" ++ td (x.Indicative ! Aorist ! Pl ! P3)) ++
|
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 (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 "P2" ++ td (x.indicative ! Imperfect ! Sg ! P2)) ++
|
||||||
tr (th "P3" ++ td (x.Indicative ! Imperfect ! Sg ! P3)) ++
|
tr (th "P3" ++ td (x.indicative ! Imperfect ! Sg ! P3)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"3\"" "Pl" ++ th "P1" ++ td (x.Indicative ! Imperfect ! Pl ! P1)) ++
|
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 "P2" ++ td (x.indicative ! Imperfect ! Pl ! P2)) ++
|
||||||
tr (th "P3" ++ td (x.Indicative ! Imperfect ! Pl ! P3)) ++
|
tr (th "P3" ++ td (x.indicative ! Imperfect ! Pl ! P3)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"2\"" "Imperative" ++ th "Sg" ++ td (x.Imperative ! Sg)) ++
|
tr (intagAttr "th" "rowspan=\"2\"" "Imperative" ++ th "Sg" ++ td (x.imperative ! Sg)) ++
|
||||||
tr (th "Pl" ++ td (x.Imperative ! Pl)) ++
|
tr (th "Pl" ++ td (x.imperative ! Pl)) ++
|
||||||
tr (th "participle" ++ td (x.participle)) ++
|
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 (intagAttr "th" "rowspan=\"6\"" "pres_optative" ++ intagAttr "th" "rowspan=\"3\"" "Sg" ++ th "P1" ++ td (x.pres_optative ! Sg ! P1)) ++
|
||||||
tr (th "P2" ++ td (x.pres_optative ! Sg ! P2)) ++
|
tr (th "P2" ++ td (x.pres_optative ! Sg ! P2)) ++
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -4,16 +4,16 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
|
|||||||
|
|
||||||
lin
|
lin
|
||||||
DetCN det cn = {
|
DetCN det cn = {
|
||||||
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.spec ! c ! det.n ;
|
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.sp ! c ! det.n ;
|
||||||
a = agrgP3 cn.g det.n
|
a = agrgP3 cn.g det.n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UsePron p = p ;
|
-- UsePron p = p ;
|
||||||
|
|
||||||
DetQuant quant num = {
|
DetQuant quant num = {
|
||||||
s = \\c,g => quant.s ! c ! g ! num.n ++ num.s ;
|
s = \\c,g => quant.s ! c ! g ! num.n ++ num.s ;
|
||||||
n = num.n ;
|
n = num.n ;
|
||||||
spec = quant.spec
|
sp = quant.sp
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
NumSg = {s = []; n = Sg} ;
|
NumSg = {s = []; n = Sg} ;
|
||||||
@@ -21,16 +21,15 @@ concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
|
|||||||
|
|
||||||
DefArt = {
|
DefArt = {
|
||||||
s = \\c,g,n => [] ;
|
s = \\c,g,n => [] ;
|
||||||
spec = Def
|
sp = Def
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IndefArt = {
|
IndefArt = {
|
||||||
s = \\c,g => table Number ["një"; []] ;
|
s = \\c,g => table Number ["një"; []] ;
|
||||||
spec = Indef
|
sp = Indef
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseN n = n ;
|
UseN n = n ;
|
||||||
UseN2 n = n ;
|
|
||||||
|
|
||||||
AdjCN ap cn = {
|
AdjCN ap cn = {
|
||||||
s = \\spec,c,n => cn.s ! spec ! c ! n ++ ap.s ! spec ! c ! cn.g ! n ;
|
s = \\spec,c,n => cn.s ! spec ! c ! n ++ ap.s ! spec ! c ! cn.g ! n ;
|
||||||
|
|||||||
@@ -1327,7 +1327,7 @@ oper mkQuant : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Quant =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
spec = Indef
|
sp = Indef
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
oper mkDet : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det =
|
oper mkDet : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det =
|
||||||
@@ -1350,7 +1350,7 @@ oper mkDet : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det =
|
|||||||
Fem => f8
|
Fem => f8
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
spec = Indef ;
|
sp = Indef ;
|
||||||
n = n
|
n = n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -104,10 +104,10 @@ oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Bool -> Adj =
|
|||||||
|
|
||||||
|
|
||||||
param Tense = Pres | Past | Imperfect | Aorist ;
|
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 =
|
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 ->
|
\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 {
|
Pres => table {
|
||||||
Sg => table {
|
Sg => table {
|
||||||
P1 => f1 ;
|
P1 => f1 ;
|
||||||
@@ -157,7 +157,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
Imperative = table {
|
imperative = table {
|
||||||
Sg => f25 ;
|
Sg => f25 ;
|
||||||
Pl => f26
|
Pl => f26
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -128,10 +128,8 @@ C1eC2aC3 = {C1 ="" ; C1C2="'"; C2C3 ="!"; C3="#"};
|
|||||||
peC1aC2C3 = { C1 = "ä" ; C1C2="'"; C2C3 ="'"; C3=""};
|
peC1aC2C3 = { C1 = "ä" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||||
penC1aC2C3e = { C1 = "än" ; C1C2="'"; C2C3 ="'"; C3=""};
|
penC1aC2C3e = { C1 = "än" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||||
pteC1aC2C3 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3=""};
|
pteC1aC2C3 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||||
pteC1aC2C3 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3=""};-- 3
|
|
||||||
pteC1aC2C3u = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3="&"};
|
pteC1aC2C3u = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3="&"};
|
||||||
pyeC1aC2C3 = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3=""};
|
pyeC1aC2C3 = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3=""};
|
||||||
pteC1aC2C3 = { C1 = "t" ; C1C2="'"; C2C3 ="'"; C3=""};
|
|
||||||
pyeC1aC2C3u = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3="&"};
|
pyeC1aC2C3u = { C1 = "y" ; C1C2="'"; C2C3 ="'"; C3="&"};
|
||||||
|
|
||||||
--Passive Jus_Imperat mkV3gdl
|
--Passive Jus_Imperat mkV3gdl
|
||||||
@@ -343,7 +341,6 @@ leC1AC2aC3 = {C1 ="l" ; C1C2="!"; C2C3 ="'"; C3=""};
|
|||||||
enC1AC2aC3 = { C1 = "(n" ; C1C2="!"; C2C3 ="'"; C3=""};
|
enC1AC2aC3 = { C1 = "(n" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||||
C1AC2aC3 = { C1 = "" ; C1C2="!"; C2C3 ="'"; C3=""};
|
C1AC2aC3 = { C1 = "" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||||
C1AC2aC3i = { C1 = "" ; C1C2="!"; C2C3 ="'"; C3="#"};
|
C1AC2aC3i = { C1 = "" ; C1C2="!"; C2C3 ="'"; C3="#"};
|
||||||
C1AC2aC3u = { C1 = "" ; C1C2="!"; C2C3 ="'"; C3="&"};
|
|
||||||
yC1AC2aC3 = { C1 = "y" ; C1C2="!"; C2C3 ="'"; C3=""};
|
yC1AC2aC3 = { C1 = "y" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||||
tC1AC2aC3 = { C1 = "t" ; C1C2="!"; C2C3 ="'"; C3=""};
|
tC1AC2aC3 = { C1 = "t" ; C1C2="!"; C2C3 ="'"; C3=""};
|
||||||
yC1AC2aC3u = { C1 = "y" ; C1C2="!"; C2C3 ="'"; C3="&"};
|
yC1AC2aC3u = { C1 = "y" ; C1C2="!"; C2C3 ="'"; C3="&"};
|
||||||
@@ -661,7 +658,7 @@ C1AC2n = { C1 = "" ; C1C2="!"; C2 ="n"};
|
|||||||
C1AC2k = { C1 = "" ; C1C2="!"; C2 ="k"};
|
C1AC2k = { C1 = "" ; C1C2="!"; C2 ="k"};
|
||||||
C1AC2sh = { C1 = "" ; C1C2="!"; C2 ="x"};
|
C1AC2sh = { C1 = "" ; C1C2="!"; C2 ="x"};
|
||||||
C1AC2achehu = { C1 = "" ; C1C2 ="!"; C2 ="!ch&"};
|
C1AC2achehu = { C1 = "" ; C1C2 ="!"; C2 ="!ch&"};
|
||||||
C1AC2a = { C1 = "" ; C1C2="!"; C2 ="'"};
|
C1AC2a = { C1 = "" ; C1C2="!"; C2 ="'"};
|
||||||
C1AC2ach = { C1 = "" ; C1C2="!"; C2 ="'c"};
|
C1AC2ach = { C1 = "" ; C1C2="!"; C2 ="'c"};
|
||||||
C1AC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
C1AC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
||||||
-- Imper -- mkV2yz
|
-- Imper -- mkV2yz
|
||||||
@@ -701,7 +698,6 @@ C1C2ek = { C1 = "" ; C1C2=""; C2 ="'k"};
|
|||||||
C1C2esh = { C1 = "" ; C1C2=""; C2 ="'x"};
|
C1C2esh = { C1 = "" ; C1C2=""; C2 ="'x"};
|
||||||
C1C2achehu = { C1 = "" ; C1C2=""; C2 ="!ch&"};
|
C1C2achehu = { C1 = "" ; C1C2=""; C2 ="!ch&"};
|
||||||
C1C2o = { C1 = "" ; C1C2=""; C2 ="/"};
|
C1C2o = { C1 = "" ; C1C2=""; C2 ="/"};
|
||||||
C1C2a = { C1 = "" ; C1C2=""; C2="!"};
|
|
||||||
C1C2ew = { C1 = "" ; C1C2=""; C2="'w"};
|
C1C2ew = { C1 = "" ; C1C2=""; C2="'w"};
|
||||||
|
|
||||||
--CompPer mkV2yz y!l'h& !l !l !l cX7l 7l l'c !l
|
--CompPer mkV2yz y!l'h& !l !l !l cX7l 7l l'c !l
|
||||||
@@ -721,81 +717,12 @@ meC1aC2= {C1 ="m'" ; C1C2="!"; C2 =""};
|
|||||||
--Infinitve mkV2yz
|
--Infinitve mkV2yz
|
||||||
C1aC2ii= {C1 ="" ; C1C2="!"; C2 ="#"};
|
C1aC2ii= {C1 ="" ; C1C2="!"; C2 ="#"};
|
||||||
|
|
||||||
|
|
||||||
--mkV2yz -- yz -- catch
|
|
||||||
--Perf --
|
|
||||||
C1AC2hu = {C1 ="" ; C1C2="!"; C2 ="h&"};
|
|
||||||
C1AC2n = { C1 = "" ; C1C2="!"; C2 ="n"};
|
|
||||||
C1AC2k = { C1 = "" ; C1C2="!"; C2 ="k"};
|
|
||||||
C1AC2sh = { C1 = "" ; C1C2="!"; C2 ="x"};
|
|
||||||
C1AC2achehu = { C1 = "" ; C1C2 ="!"; C2 ="!ch&"};
|
|
||||||
C1AC2a = { C1 = "" ; C1C2="!"; C2 ="'"};
|
|
||||||
C1AC2ach = { C1 = "" ; C1C2="!"; C2 ="'c"};
|
|
||||||
C1AC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
|
||||||
-- Imper -- mkV2yz
|
|
||||||
eC1C2alehu = { C1 = "ä" ; C1C2=""; C2 ="!l'h&"};
|
|
||||||
enC1C2alen = { C1 = "än" ; C1C2=""; C2 ="!l'n"};
|
|
||||||
teC1C2yaleh = { C1 = "t" ; C1C2=""; C2 ="!l'h"};
|
|
||||||
teC1C2aleh = { C1 = "t" ; C1C2=""; C2 ="y!l'x"};
|
|
||||||
teC1C2alachehu = { C1 = "t" ; C1C2=""; C2 ="!l!ch&"};
|
|
||||||
yeC1C2al = { C1 = "y" ; C1C2=""; C2 ="!l"};
|
|
||||||
teC1C2alech = { C1 = "t" ; C1C2=""; C2 ="!l'c"};
|
|
||||||
yeC1C2alu = { C1 = "y" ; C1C2=""; C2 ="!l&"};
|
|
||||||
|
|
||||||
-- Cont -- mkV2yz
|
|
||||||
eC1C2 = { C1 = "ä" ; C1C2=""; C2 =""};
|
|
||||||
enC1C2 = { C1 = "än" ; C1C2=""; C2 =""};
|
|
||||||
teC1C2 = { C1 = "t" ; C1C2=""; C2 =""};
|
|
||||||
--teC1C2 = { C1 = "t" ; C1C2=""; C2 =""};3
|
|
||||||
teC1C2u = { C1 = "t" ; C1C2=""; C2 ="&"};
|
|
||||||
yeC1C2 = { C1 = "y" ; C1C2=""; C2 =""};
|
|
||||||
--teC1C2 = { C1 = "t" ; C1C2=""; C2 =""};
|
|
||||||
yeC1C2u = { C1 = "y" ; C1C2=""; C2 ="&"};
|
|
||||||
|
|
||||||
|
|
||||||
--Jus_Imperat mkV2yz
|
|
||||||
leC1aC2a = {C1 ="l" ; C1C2="!"; C2 =""};
|
|
||||||
enC1aC2a = { C1 = "än" ; C1C2="!"; C2 =""};
|
|
||||||
C1aC2 = { C1 = "" ; C1C2="!"; C2 =""};
|
|
||||||
C1aC2i = { C1 = "" ; C1C2="!"; C2 ="#"};
|
|
||||||
C1eC2u = { C1 = "" ; C1C2="!"; C2 ="&"};
|
|
||||||
yC1aC2a = { C1 = "y" ; C1C2="!"; C2 =""};
|
|
||||||
tC1aC2a = { C1 = "t" ; C1C2="!"; C2 =""};
|
|
||||||
yC1aC2u = { C1 = "y" ; C1C2="!"; C2 ="&"};
|
|
||||||
--Gerund mkV2yz
|
|
||||||
C1C2ie = {C1 ="" ; C1C2=""; C2 ="%"};
|
|
||||||
C1C2en = { C1 = "" ; C1C2=""; C2 ="'n"};
|
|
||||||
C1C2ek = { C1 = "" ; C1C2=""; C2 ="'k"};
|
|
||||||
C1C2esh = { C1 = "" ; C1C2=""; C2 ="'x"};
|
|
||||||
C1C2achehu = { C1 = "" ; C1C2=""; C2 ="!ch&"};
|
|
||||||
C1C2o = { C1 = "" ; C1C2=""; C2 ="/"};
|
|
||||||
C1C2a = { C1 = "" ; C1C2=""; C2="!"};
|
|
||||||
C1C2ew = { C1 = "" ; C1C2=""; C2="'w"};
|
|
||||||
|
|
||||||
--CompPer mkV2yz y!l'h& !l !l !l cX7l 7l l'c !l
|
|
||||||
C1C2iealehu = {C1 ="" ; C1C2=""; C2 ="%y!l'h&"};
|
|
||||||
C1C2enal = { C1 = "" ; C1C2=""; C2 ="'n!l"};
|
|
||||||
C1C2ekal = { C1 = "" ; C1C2=""; C2 ="'k!l"};
|
|
||||||
C1C2eshal = { C1 = "" ; C1C2=""; C2 ="'x!l"};
|
|
||||||
C1C2achehual = { C1 = "" ; C1C2=""; C2 ="!cX7l"};
|
|
||||||
C1C2oal = { C1 = "" ; C1C2=""; C2 ="7l"};
|
|
||||||
C1C2alech = { C1 = "" ; C1C2=""; C2="!l'c"};
|
|
||||||
C1C2ewal = { C1 = "" ; C1C2=""; C2="'w!l"};
|
|
||||||
|
|
||||||
|
|
||||||
--Infinitve mkV2yz
|
|
||||||
meC1aC2= {C1 ="m'" ; C1C2="!"; C2 =""};
|
|
||||||
|
|
||||||
--Infinitve mkV2yz
|
|
||||||
C1aC2ii= {C1 ="" ; C1C2="!"; C2 ="#"};
|
|
||||||
|
|
||||||
--nore -- nr -- live
|
--nore -- nr -- live
|
||||||
--Perf --
|
--Perf --
|
||||||
C1oC2hu = {C1 ="" ; C1C2="/"; C2 ="h&"};
|
C1oC2hu = {C1 ="" ; C1C2="/"; C2 ="h&"};
|
||||||
C1oC2n = { C1 = "" ; C1C2="/"; C2 ="n"};
|
C1oC2n = { C1 = "" ; C1C2="/"; C2 ="n"};
|
||||||
C1oC2k = { C1 = "" ; C1C2="/"; C2 ="k"};
|
C1oC2k = { C1 = "" ; C1C2="/"; C2 ="k"};
|
||||||
C1oC2sh = { C1 = "" ; C1C2="/"; C2 ="x"};
|
C1oC2sh = { C1 = "" ; C1C2="/"; C2 ="x"};
|
||||||
C1oC2achehu = { C1 = "" ; C1C2 ="/"; C2 ="!ch&"};
|
|
||||||
C1oC2a = { C1 = "" ; C1C2="/"; C2 ="'"};
|
C1oC2a = { C1 = "" ; C1C2="/"; C2 ="'"};
|
||||||
C1oC2ach = { C1 = "" ; C1C2="/"; C2 ="'c"};
|
C1oC2ach = { C1 = "" ; C1C2="/"; C2 ="'c"};
|
||||||
C1oC2u = { C1 = "" ; C1C2="/"; C2 ="&"};
|
C1oC2u = { C1 = "" ; C1C2="/"; C2 ="&"};
|
||||||
@@ -858,87 +785,12 @@ meC1oC2= {C1 ="m'" ; C1C2="/"; C2 =""};
|
|||||||
C1uaC2i= {C1 ="" ; C1C2="7"; C2 ="#"};
|
C1uaC2i= {C1 ="" ; C1C2="7"; C2 ="#"};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--nore -- nr -- live
|
|
||||||
--Perf --
|
|
||||||
C1oC2hu = {C1 ="" ; C1C2="/"; C2 ="h&"};
|
|
||||||
C1oC2n = { C1 = "" ; C1C2="/"; C2 ="n"};
|
|
||||||
C1oC2k = { C1 = "" ; C1C2="/"; C2 ="k"};
|
|
||||||
C1oC2sh = { C1 = "" ; C1C2="/"; C2 ="x"};
|
|
||||||
C1oC2achehu = { C1 = "" ; C1C2 ="/"; C2 ="!ch&"};
|
|
||||||
C1oC2a = { C1 = "" ; C1C2="/"; C2 ="'"};
|
|
||||||
C1oC2ach = { C1 = "" ; C1C2="/"; C2 ="'c"};
|
|
||||||
C1oC2u = { C1 = "" ; C1C2="/"; C2 ="&"};
|
|
||||||
-- Imper -- mkV2nr
|
|
||||||
eC1oC2alehu = { C1 = "ä" ; C1C2="/"; C2 ="!l'h&"};
|
|
||||||
enC1oC2alen = { C1 = "än" ; C1C2="/"; C2 ="!l'n"};
|
|
||||||
teC1oC2yaleh = { C1 = "t" ; C1C2="/"; C2 ="!l'h"};
|
|
||||||
teC1oC2alesh = { C1 = "t" ; C1C2="/"; C2 ="y!l'x"};
|
|
||||||
teC1oC2alachehu = { C1 = "t" ; C1C2="/"; C2 ="!l!ch&"};
|
|
||||||
yeC1oC2al = { C1 = "y" ; C1C2="/"; C2 ="!l"};
|
|
||||||
teC1oC2alech = { C1 = "t" ; C1C2="/"; C2 ="!l'c"};
|
|
||||||
yeC1oC2alu = { C1 = "y" ; C1C2="/"; C2 ="!l&"};
|
|
||||||
|
|
||||||
-- Imper -- mkV2nr
|
|
||||||
eC1oC2 = { C1 = "ä" ; C1C2="/"; C2 =""};
|
|
||||||
enC1oC2 = { C1 = "än" ; C1C2="/"; C2 =""};
|
|
||||||
teC1oC2 = { C1 = "t" ; C1C2="/"; C2 =""};
|
|
||||||
teC1oC2i = { C1 = "t" ; C1C2="/"; C2 ="#"};
|
|
||||||
teC1oC2u = { C1 = "t" ; C1C2="/"; C2 ="&"};
|
|
||||||
yeC1oC2 = { C1 = "y" ; C1C2="/"; C2 =""};
|
|
||||||
--teC1oC2 = { C1 = "t" ; C1C2="/"; C2 ="!l'c"};
|
|
||||||
yeC1oC2u = { C1 = "y" ; C1C2="/"; C2 ="&"};
|
|
||||||
|
|
||||||
--Jus_Imperat mkV2nr
|
|
||||||
leC1uC2 = {C1 ="l" ; C1C2="&"; C2 =""};
|
|
||||||
enC1uC2 = { C1 = "än" ; C1C2="&"; C2 =""};
|
|
||||||
C1uC2 = { C1 = "" ; C1C2="&"; C2 =""};
|
|
||||||
C1uC2i = { C1 = "" ; C1C2="&"; C2 ="#"};
|
|
||||||
C1uC2u = { C1 = "" ; C1C2="&"; C2 ="&"};
|
|
||||||
yC1uC2 = { C1 = "y" ; C1C2="&"; C2 =""};
|
|
||||||
tC1uC2 = { C1 = "t" ; C1C2="&"; C2 =""};
|
|
||||||
yC1uC2u = { C1 = "y" ; C1C2="&"; C2 ="&"};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--Gerund mkV2nr
|
|
||||||
C1oC2ie = {C1 ="" ; C1C2="/"; C2 ="%"};
|
|
||||||
C1oC2en = { C1 = "" ; C1C2="/"; C2 ="'n"};
|
|
||||||
C1oC2ek = { C1 = "" ; C1C2="/"; C2 ="'k"};
|
|
||||||
C1oC2esh = { C1 = "" ; C1C2="/"; C2 ="'x"};
|
|
||||||
C1oC2achehu = { C1 = "" ; C1C2="/"; C2 ="!ch&"};
|
|
||||||
C1oC2o = { C1 = "" ; C1C2="/"; C2 ="/"};
|
|
||||||
C1oC2A = { C1 = "" ; C1C2="/"; C2="!"};
|
|
||||||
C1oC2ew = { C1 = "" ; C1C2="/"; C2="'w"};
|
|
||||||
|
|
||||||
--CompPer mkV2nr y!l'h& !l !l !l cX7l 7l l'c !l
|
|
||||||
C1oC2iealehu = {C1 ="" ; C1C2="/"; C2 ="%y!l'h& "};
|
|
||||||
C1oC2enal = { C1 = "" ; C1C2="/"; C2 ="'n!l"};
|
|
||||||
C1oC2ekal = { C1 = "" ; C1C2="/"; C2 ="'k!l"};
|
|
||||||
C1oC2eshal = { C1 = "" ; C1C2="/"; C2 ="'x!l"};
|
|
||||||
C1oC2achehual = { C1 = "" ; C1C2="/"; C2 ="!cX7l"};
|
|
||||||
C1oC2oal = { C1 = "" ; C1C2="/"; C2 ="7l"};
|
|
||||||
C1oC2Alech = { C1 = "" ; C1C2="/"; C2="!l'c"};
|
|
||||||
C1oC2ewal = { C1 = "" ; C1C2="/"; C2="'w!l"};
|
|
||||||
|
|
||||||
--Infinitve mkV2nr
|
|
||||||
meC1oC2= {C1 ="m'" ; C1C2="/"; C2 =""};
|
|
||||||
|
|
||||||
--Participle mkV2nr
|
|
||||||
C1uaC2i= {C1 ="" ; C1C2="7"; C2 ="#"};
|
|
||||||
|
|
||||||
|
|
||||||
--mkV2wN -- wN -- swim --- Eg lie, see, say
|
--mkV2wN -- wN -- swim --- Eg lie, see, say
|
||||||
--Perf --
|
--Perf --
|
||||||
C1AC2ehu = {C1 ="" ; C1C2="!"; C2 ="'h&"};
|
C1AC2ehu = {C1 ="" ; C1C2="!"; C2 ="'h&"};
|
||||||
C1AC2en = { C1 = "" ; C1C2="!"; C2 ="'n"};
|
C1AC2en = { C1 = "" ; C1C2="!"; C2 ="'n"};
|
||||||
C1AC2ek = { C1 = "" ; C1C2="!"; C2 ="'k"};
|
C1AC2ek = { C1 = "" ; C1C2="!"; C2 ="'k"};
|
||||||
C1AC2esh = { C1 = "" ; C1C2="!"; C2 ="'x"};
|
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
|
-- Imper -- mkV2wN
|
||||||
eC1aC2alehu = { C1 = "ä" ; C1C2="!"; C2 ="!l'h&"};
|
eC1aC2alehu = { C1 = "ä" ; C1C2="!"; C2 ="!l'h&"};
|
||||||
enC1aC2alen = { C1 = "än" ; C1C2="!"; C2 ="!l'n"};
|
enC1aC2alen = { C1 = "än" ; C1C2="!"; C2 ="!l'n"};
|
||||||
@@ -992,74 +844,6 @@ C1aC2tewal = { C1 = "" ; C1C2="!"; C2="t'w!l"};
|
|||||||
meC1aC2et= {C1 ="m'" ; C1C2="!"; C2 ="'t"};
|
meC1aC2et= {C1 ="m'" ; C1C2="!"; C2 ="'t"};
|
||||||
--nore -- nr -- live
|
--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---
|
----------- 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!!
|
--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"};
|
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
|
---- Quadro_Radical
|
||||||
|
|
||||||
|
|
||||||
--Starting with type Tri-Radical Roots
|
--Starting with type Tri-Radical Roots
|
||||||
-- Eg. dbdb - fight
|
-- Eg. dbdb - fight
|
||||||
-- qzqz - freeze
|
-- qzqz - freeze
|
||||||
@@ -1238,152 +967,4 @@ meC1aC2C3aC4 = {C1 ="m'" ; C1C2="'"; C2C3 =""; C3C4="'"; C4= "" };
|
|||||||
--Participle mkV4dbdb
|
--Participle mkV4dbdb
|
||||||
C1eC2C3aC4i = {C1 ="" ; C1C2="'"; C2C3 =""; C3C4="!"; C4= "#" };
|
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
|
UttIP ip = ip ; --- Acc also
|
||||||
UttVP vp = {s = vp.obj.s ++ vp.inf} ;
|
UttVP vp = {s = vp.obj.s ++ vp.inf} ;
|
||||||
UttIAdv iadv = iadv ;
|
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};
|
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
|
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 ---
|
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} ; ---
|
PConjConj conj = {s = conj.s2} ; ---
|
||||||
|
|||||||
@@ -1,4 +1,19 @@
|
|||||||
concrete AdjectiveHye of Adjective = CatHye ** {
|
concrete AdjectiveHye of Adjective = CatHye ** open ResHye, Prelude in {
|
||||||
lin
|
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 V = Verb ;
|
lincat A2 = Adj ** {c2 : Compl} ;
|
||||||
lincat VV,VS,VQ,VA = Verb ;
|
lincat ACard = {s : Str} ;
|
||||||
lincat V2 = Verb ** {c2 : Compl} ;
|
lincat AP = {s : Species => Case => Number => Str; isPre : Bool} ;
|
||||||
lincat V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
lincat CN = {s : Species => Case => Number => Str} ;
|
||||||
lincat N = Noun ;
|
lincat Card = {s : Str} ;
|
||||||
lincat N2 = Noun ** {c2 : Compl} ;
|
lincat Cl = {s : Str;
|
||||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
conditional : Aspect => Number => Str;
|
||||||
lincat CN = Noun ;
|
converb : {imperfective : Str; futCon1 : Str;
|
||||||
lincat A = Adj ;
|
futCon2 : Str; negative : Str;
|
||||||
lincat A2 = Adj ** {c2 : Compl} ;
|
perfective : Str; simultaneous : Str};
|
||||||
lincat AP = Adj ;
|
passive : Str; past : Person => Number => Str;
|
||||||
lincat Prep = Compl ;
|
participle : PartType => Str;
|
||||||
|
subjunctive : Aspect => Number => Str} ;
|
||||||
|
lincat ClSlash = {s : Str} ;
|
||||||
|
lincat Comp = {s : Str} ;
|
||||||
|
lincat Conj = {s : Str} ;
|
||||||
|
lincat DAP = {s : Str} ;
|
||||||
|
lincat Decimal = {s : Str} ;
|
||||||
|
lincat Det = {s : Str; n : Number; sp : Species} ;
|
||||||
|
lincat Digits = {s : Str} ;
|
||||||
|
lincat GN = {s : Str} ;
|
||||||
|
lincat IComp = {s : Str} ;
|
||||||
|
lincat IDet = {s : Str} ;
|
||||||
|
lincat IP = {s : Str} ;
|
||||||
|
lincat IQuant = {s : Str} ;
|
||||||
|
lincat Imp = {s : Str} ;
|
||||||
|
lincat LN = {s : Str} ;
|
||||||
|
lincat N = Noun ;
|
||||||
|
lincat N2 = Noun ** {c2 : Compl} ;
|
||||||
|
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||||
|
lincat NP = {s : Case => Str; a : Agr} ;
|
||||||
|
lincat Num = {s : Str; n : Number} ;
|
||||||
|
lincat Numeral = {s : Str} ;
|
||||||
|
lincat Ord = {s : Str} ;
|
||||||
|
lincat PN = {s : Str} ;
|
||||||
|
lincat Predet = {s : Str} ;
|
||||||
|
lincat Prep = Compl ** {isPre : Bool} ;
|
||||||
|
lincat Pron = {s : Str; empty : Str; a : Agr} ;
|
||||||
|
lincat QCl = {s : Str} ;
|
||||||
|
lincat QS = {s : Str} ;
|
||||||
|
lincat Quant = {s : Str; sp : Species} ;
|
||||||
|
lincat RCl = {s : Str} ;
|
||||||
|
lincat RP = {s : Str} ;
|
||||||
|
lincat RS = {s : Str} ;
|
||||||
|
lincat S = {s : Str} ;
|
||||||
|
lincat SN = {s : Str} ;
|
||||||
|
lincat SSlash = {s : Str} ;
|
||||||
|
lincat Subj = {s : Str} ;
|
||||||
|
lincat V = Verb ;
|
||||||
|
lincat VV,VS,VQ,VA = Verb ;
|
||||||
|
lincat V2 = Verb ** {c2 : Compl} ;
|
||||||
|
lincat V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
||||||
|
lincat VP = {s : Str;
|
||||||
|
conditional : Aspect => Person => Number => Str;
|
||||||
|
converb : {imperfective : Str; futCon1 : Str; futCon2 : Str;
|
||||||
|
negative : Str; perfective : Str; simultaneous : Str};
|
||||||
|
imperative : Number => Str; passive : Str;
|
||||||
|
past : Person => Number => Str; participle : PartType => Str;
|
||||||
|
subjunctive : Aspect => Person => Number => Str} ;
|
||||||
|
lincat VPSlash = Verb ** {c2 : Compl} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,50 +15,50 @@ lin
|
|||||||
paragraph (x.s) ++
|
paragraph (x.s) ++
|
||||||
heading1 "Converb" ++
|
heading1 "Converb" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (th "Imperfective" ++ td (x.Converb.Imperfective)) ++
|
tr (th "Imperfective" ++ td (x.converb.imperfective)) ++
|
||||||
tr (th "Simultaneous" ++ td (x.Converb.Simultaneous)) ++
|
tr (th "Simultaneous" ++ td (x.converb.simultaneous)) ++
|
||||||
tr (th "Perfective" ++ td (x.Converb.Perfective)) ++
|
tr (th "Perfective" ++ td (x.converb.perfective)) ++
|
||||||
tr (th "Futute I" ++ td (x.Converb.FutCon1)) ++
|
tr (th "Futute I" ++ td (x.converb.futCon1)) ++
|
||||||
tr (th "Futute II" ++ td (x.Converb.FutCon2)) ++
|
tr (th "Futute II" ++ td (x.converb.futCon2)) ++
|
||||||
tr (th "Connegative" ++ td (x.Converb.Negative))) ++
|
tr (th "Connegative" ++ td (x.converb.negative))) ++
|
||||||
heading1 "Passive" ++
|
heading1 "Passive" ++
|
||||||
paragraph x.Passive ++
|
paragraph x.passive ++
|
||||||
heading1 "Participle" ++
|
heading1 "Participle" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (th "Resultative" ++ td (x.Participle ! Resultative)) ++
|
tr (th "Resultative" ++ td (x.participle ! Resultative)) ++
|
||||||
tr (th "Subject" ++ td (x.Participle ! Subject))) ++
|
tr (th "Subject" ++ td (x.participle ! Subject))) ++
|
||||||
heading1 "Past" ++
|
heading1 "Past" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
tr (th "" ++ th "Sg" ++ th "Pl") ++
|
||||||
tr (th "P1" ++ td (x.Past ! P1 ! Sg) ++ td (x.Past ! P1 ! 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 "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 "P3" ++ td (x.past ! P3 ! Sg) ++ td (x.past ! P3 ! Pl))) ++
|
||||||
heading1 "Subjunctive" ++
|
heading1 "Subjunctive" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
|
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
|
||||||
tr (intagAttr "th" "rowspan=\"3\"" "Perfect" ++
|
tr (intagAttr "th" "rowspan=\"3\"" "Perfect" ++
|
||||||
th "P1" ++ td (x.Subjunctive ! Perfect ! P1 ! Sg) ++ td (x.Subjunctive ! Perfect ! P1 ! 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 "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 (th "P3" ++ td (x.subjunctive ! Perfect ! P3 ! Sg) ++ td (x.subjunctive ! Perfect ! P3 ! Pl)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"3\"" "Non_Past" ++
|
tr (intagAttr "th" "rowspan=\"3\"" "Non_Past" ++
|
||||||
th "P1" ++ td (x.Subjunctive ! Non_Past ! P1 ! Sg) ++ td (x.Subjunctive ! Non_Past ! P1 ! 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 "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))) ++
|
tr (th "P3" ++ td (x.subjunctive ! Non_Past ! P3 ! Sg) ++ td (x.subjunctive ! Non_Past ! P3 ! Pl))) ++
|
||||||
heading1 "Conditional" ++
|
heading1 "Conditional" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
|
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Sg" ++ th "Pl") ++
|
||||||
tr (intagAttr "th" "rowspan=\"3\"" "Perfect" ++
|
tr (intagAttr "th" "rowspan=\"3\"" "Perfect" ++
|
||||||
th "P1" ++ td (x.Conditional ! Perfect ! P1 ! Sg) ++ td (x.Conditional ! Perfect ! P1 ! 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 "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 (th "P3" ++ td (x.conditional ! Perfect ! P3 ! Sg) ++ td (x.conditional ! Perfect ! P3 ! Pl)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"4\"" "Non_Past" ++
|
tr (intagAttr "th" "rowspan=\"4\"" "Non_Past" ++
|
||||||
th "P1" ++ td (x.Conditional ! Non_Past ! P1 ! Sg) ++ td (x.Conditional ! Non_Past ! P1 ! 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 "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))) ++
|
tr (th "P3" ++ td (x.conditional ! Non_Past ! P3 ! Sg) ++ td (x.conditional ! Non_Past ! P3 ! Pl))) ++
|
||||||
heading1 "Imperative" ++
|
heading1 "Imperative" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (th "Sg" ++ th "Pl") ++
|
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=[]
|
s3=[]
|
||||||
} ;
|
} ;
|
||||||
lin
|
lin
|
||||||
|
|||||||
@@ -2,5 +2,9 @@ concrete GrammarHye of Grammar =
|
|||||||
TenseX,
|
TenseX,
|
||||||
PhraseHye,
|
PhraseHye,
|
||||||
NounHye,
|
NounHye,
|
||||||
AdjectiveHye ** {
|
VerbHye,
|
||||||
}
|
AdjectiveHye,
|
||||||
|
AdverbHye,
|
||||||
|
SentenceHye,
|
||||||
|
StructuralHye ** {
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,2 +1,5 @@
|
|||||||
concrete LexiconHye of Lexicon = CatHye ** open ParadigmsHye in {
|
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 ** {
|
concrete NounHye of Noun = CatHye ** open ResHye in {
|
||||||
lin
|
lin AdjCN ap cn = {
|
||||||
UseN n = n ;
|
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} ;
|
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
||||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
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} ;
|
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
||||||
mkIP : Str -> IP = \s -> lin IP {s=s} ;
|
mkIP : Str -> IP = \s -> lin IP {s=s} ;
|
||||||
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
||||||
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
|
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
|
||||||
mkSubj : Str -> Subj = \s -> lin Subj {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} ;
|
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
||||||
mkDet : Str -> Det = \s -> lin Det {s=s} ;
|
|
||||||
mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
||||||
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
|
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
|
||||||
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
||||||
@@ -488,4 +491,10 @@ oper
|
|||||||
mkSN : Str -> SN = \s -> lin SN {s=s} ;
|
mkSN : Str -> SN = \s -> lin SN {s=s} ;
|
||||||
mkPN : Str -> PN = \s -> lin PN {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 Aspect = Non_Past | Perfect ;
|
||||||
param Person = P1 | P3 | P2 ;
|
|
||||||
param Number = Sg | Pl ;
|
|
||||||
param Case = Nom | Dat | Ablat | Instr | Loc ;
|
param Case = Nom | Dat | Ablat | Instr | Loc ;
|
||||||
param PartType = Resultative | Subject ;
|
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 =
|
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 ->
|
\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 ;
|
{ s = f1 ;
|
||||||
Causative = f2 ;
|
causative = f2 ;
|
||||||
Conditional = table {
|
conditional = table {
|
||||||
Perfect => table {
|
Perfect => table {
|
||||||
P1 => table {
|
P1 => table {
|
||||||
Sg => f3 ;
|
Sg => f3 ;
|
||||||
@@ -40,19 +38,19 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
Converb = { Imperfective = f15 ;
|
converb = { imperfective = f15 ;
|
||||||
FutCon1 = f16 ;
|
futCon1 = f16 ;
|
||||||
FutCon2 = f17 ;
|
futCon2 = f17 ;
|
||||||
Negative = f18 ;
|
negative = f18 ;
|
||||||
Perfective = f19 ;
|
perfective = f19 ;
|
||||||
Simultaneous = f20
|
simultaneous = f20
|
||||||
} ;
|
} ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => f21 ;
|
Sg => f21 ;
|
||||||
Pl => f22
|
Pl => f22
|
||||||
} ;
|
} ;
|
||||||
Passive = f23 ;
|
passive = f23 ;
|
||||||
Past = table {
|
past = table {
|
||||||
P1 => table {
|
P1 => table {
|
||||||
Sg => f24 ;
|
Sg => f24 ;
|
||||||
Pl => f25
|
Pl => f25
|
||||||
@@ -66,11 +64,11 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
|||||||
Pl => f29
|
Pl => f29
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
Participle = table {
|
participle = table {
|
||||||
Resultative => f30 ;
|
Resultative => f30 ;
|
||||||
Subject => f31
|
Subject => f31
|
||||||
} ;
|
} ;
|
||||||
Subjunctive = table {
|
subjunctive = table {
|
||||||
Perfect => table {
|
Perfect => table {
|
||||||
P1 => table {
|
P1 => table {
|
||||||
Sg => f32 ;
|
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 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 =
|
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 ->
|
\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 ;
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
concrete AllBel of AllBelAbs =
|
concrete AllBel of AllBelAbs =
|
||||||
LangBel
|
LangBel,
|
||||||
|
ExtendBel
|
||||||
**
|
**
|
||||||
{} ;
|
{} ;
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
abstract AllBelAbs =
|
abstract AllBelAbs =
|
||||||
Lang
|
Lang,
|
||||||
** {}
|
Extend
|
||||||
|
** {}
|
||||||
|
|||||||
@@ -3,12 +3,13 @@ concrete CatBel of Cat = CommonX ** open ResBel in {
|
|||||||
lincat N = Noun ;
|
lincat N = Noun ;
|
||||||
lincat N2 = Noun ** {c2 : Compl} ;
|
lincat N2 = Noun ** {c2 : Compl} ;
|
||||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||||
lincat V = V ;
|
lincat Pron = {s: Case => Str; g: Gender; n : Number; p: Person} ;
|
||||||
lincat VV,VS,VQ,VA = V ;
|
lincat V = Verb ;
|
||||||
lincat V2 = V ** {c2 : Compl} ;
|
lincat VV,VS,VQ,VA = Verb ;
|
||||||
lincat V3,V2A,V2S,V2Q,V2V = V ** {c2,c3 : Compl} ;
|
lincat V2 = Verb ** {c2 : Compl} ;
|
||||||
lincat A = A ;
|
lincat V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
||||||
lincat A2 = A ** {c2 : Compl} ;
|
lincat A = Adj ;
|
||||||
|
lincat A2 = Adj ** {c2 : Compl} ;
|
||||||
lincat Prep = Compl ;
|
lincat Prep = Compl ;
|
||||||
lincat CN = CommonNoun ;
|
lincat CN = CommonNoun ;
|
||||||
lincat AP = AdjPhrase ;
|
lincat AP = AdjPhrase ;
|
||||||
|
|||||||
@@ -29,12 +29,12 @@ lin
|
|||||||
paragraph (x.infinitive) ++
|
paragraph (x.infinitive) ++
|
||||||
heading1 "Present" ++
|
heading1 "Present" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (intagAttr "th" "rowspan=\"6\"" "Pres" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P1 ! Sg)) ++
|
tr (intagAttr "th" "rowspan=\"6\"" "Pres" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td ((x.active ! Imperf).pres ! P1 ! Sg)) ++
|
||||||
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P1 ! Pl)) ++
|
tr (th "Pl" ++ td ((x.active ! Imperf).pres ! P1 ! Pl)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"2\"" "P2" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P2 ! Sg)) ++
|
tr (intagAttr "th" "rowspan=\"2\"" "P2" ++ th "Sg" ++ td ((x.active ! Imperf).pres ! P2 ! Sg)) ++
|
||||||
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P2 ! Pl)) ++
|
tr (th "Pl" ++ td ((x.active ! Imperf).pres ! P2 ! Pl)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P3 ! Sg)) ++
|
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td ((x.active ! Imperf).pres ! P3 ! Sg)) ++
|
||||||
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P3 ! Pl))) ++
|
tr (th "Pl" ++ td ((x.active ! Imperf).pres ! P3 ! Pl))) ++
|
||||||
heading1 "Imperative" ++
|
heading1 "Imperative" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (th "Sg" ++ td (x.imperative ! Sg)) ++
|
tr (th "Sg" ++ td (x.imperative ! Sg)) ++
|
||||||
|
|||||||
15
src/belarusian/ExtendBel.gf
Normal file
15
src/belarusian/ExtendBel.gf
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
--# -path=.:../abstract:../common:prelude
|
||||||
|
concrete ExtendBel of Extend = CatBel ** open ResBel, ParadigmsBel in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
iFem_Pron = mkPron "я" "мяне" "мне" "мяне" "мне" "мной" Fem Sg P1 ;
|
||||||
|
youFem_Pron = mkPron "ты" "табе" "табе" "табе" "табе" "табой" Fem Sg P2 ;
|
||||||
|
weFem_Pron = mkPron "мы" "нас" "нам" "нас" "наc" "намі" Fem Pl P1 ;
|
||||||
|
youPlFem_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
|
||||||
|
theyFem_Pron = mkPron "вони" "їх" "їм" "їх" "них" "ними" Fem Pl P3 ;
|
||||||
|
youPolFem_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
|
||||||
|
youPolPl_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
|
||||||
|
youPolPlFem_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -2,5 +2,6 @@ concrete GrammarBel of Grammar =
|
|||||||
TenseX,
|
TenseX,
|
||||||
PhraseBel,
|
PhraseBel,
|
||||||
NounBel,
|
NounBel,
|
||||||
AdjectiveBel ** {
|
AdjectiveBel,
|
||||||
}
|
StructuralBel ** {
|
||||||
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -636,6 +636,44 @@ oper
|
|||||||
_ => regN form1
|
_ => regN form1
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
compoundN = overload {
|
||||||
|
compoundN : A -> N -> N = \a,n -> lin N {
|
||||||
|
s = \\c,num => a.s ! c ! genNum n.g num ++ n.s ! c ! num ;
|
||||||
|
voc = a.s ! Nom ! genNum n.g Sg ++ n.voc ;
|
||||||
|
g = n.g
|
||||||
|
} ;
|
||||||
|
compoundN : N -> A -> N = \n,a -> lin N {
|
||||||
|
s = \\c,num => n.s ! c ! num ++ a.s ! c ! genNum n.g num ;
|
||||||
|
voc = n.voc ++ a.s ! Nom ! genNum n.g Sg ;
|
||||||
|
g = n.g
|
||||||
|
} ;
|
||||||
|
compoundN : N -> Str -> N = \n,adv -> lin N {
|
||||||
|
s = \\c,num => n.s ! c ! num ++ adv ;
|
||||||
|
voc = n.voc ++ adv ;
|
||||||
|
g = n.g
|
||||||
|
} ;
|
||||||
|
compoundN : Str -> N -> N = \adv,n -> lin N {
|
||||||
|
s = \\c,num => adv ++ n.s ! c ! num ;
|
||||||
|
voc = adv ++ n.voc ;
|
||||||
|
g = n.g
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkPron : (_,_,_,_,_,_ : Str) -> Gender -> Number -> Person -> Pron =
|
||||||
|
\nom,acc,dat,gen,loc,instr,g,n,p -> lin Pron {
|
||||||
|
s = table {
|
||||||
|
Nom => nom ;
|
||||||
|
Acc => acc ;
|
||||||
|
Dat => dat ;
|
||||||
|
Gen => gen ;
|
||||||
|
Loc => loc ;
|
||||||
|
Instr => instr
|
||||||
|
} ;
|
||||||
|
g = g ;
|
||||||
|
n = n ;
|
||||||
|
p = p
|
||||||
|
} ;
|
||||||
|
|
||||||
regV : Str -> V -- infinitive
|
regV : Str -> V -- infinitive
|
||||||
= \form -> case form of {
|
= \form -> case form of {
|
||||||
_ + "агчы" => mkV021 form;
|
_ + "агчы" => mkV021 form;
|
||||||
@@ -717,6 +755,16 @@ oper
|
|||||||
_ => regV form1
|
_ => regV form1
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
compoundV : V -> Str -> V = \v,adv -> lin V {
|
||||||
|
active = \\a => {past=(v.active ! a).past ++ adv ;
|
||||||
|
pres=\\p,num=>(v.active ! a).pres ! p ! num ++ adv
|
||||||
|
} ;
|
||||||
|
imperative = \\num => v.imperative ! num ++ adv ;
|
||||||
|
infinitive = v.infinitive ++ adv ;
|
||||||
|
participle = \\g,num => v.participle ! g ! num ++ adv ;
|
||||||
|
passive = \\a,t => v.passive ! a ! t ++ adv
|
||||||
|
} ;
|
||||||
|
|
||||||
regA : Str -> A -- s;Nom;('GSg', Masc)
|
regA : Str -> A -- s;Nom;('GSg', Masc)
|
||||||
= \form -> case form of {
|
= \form -> case form of {
|
||||||
_ + "які" => mkA006 form;
|
_ + "які" => mkA006 form;
|
||||||
|
|||||||
@@ -40,12 +40,12 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
|||||||
param Aspect = Imperf | Perf ;
|
param Aspect = Imperf | Perf ;
|
||||||
param Person = P1 | P2 | P3 ;
|
param Person = P1 | P2 | P3 ;
|
||||||
param Tense = Pres | Past ;
|
param Tense = Pres | Past ;
|
||||||
oper V = {active: Aspect => {Past: Str; Pres: Person => Number => Str}; imperative: Number => Str; infinitive: Str; participle: Gender => Number => Str; passive: Aspect => Tense => Str} ; -- 703
|
oper Verb = {active: Aspect => {past: Str; pres: Person => Number => Str}; imperative: Number => Str; infinitive: Str; participle: Gender => Number => Str; passive: Aspect => Tense => Str} ; -- 703
|
||||||
oper mkV : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
|
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 ->
|
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27 ->
|
||||||
{ active = table {
|
{ active = table {
|
||||||
Imperf => { Past = f1 ;
|
Imperf => { past = f1 ;
|
||||||
Pres = table {
|
pres = table {
|
||||||
P1 => table {
|
P1 => table {
|
||||||
Sg => f2 ;
|
Sg => f2 ;
|
||||||
Pl => f3
|
Pl => f3
|
||||||
@@ -60,8 +60,8 @@ oper mkV : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
Perf => { Past = f8 ;
|
Perf => { past = f8 ;
|
||||||
Pres = table {
|
pres = table {
|
||||||
P1 => table {
|
P1 => table {
|
||||||
Sg => f9 ;
|
Sg => f9 ;
|
||||||
Pl => f10
|
Pl => f10
|
||||||
@@ -110,8 +110,14 @@ oper mkV : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
|
|||||||
|
|
||||||
|
|
||||||
param GenNum = GSg Gender | GPl ;
|
param GenNum = GSg Gender | GPl ;
|
||||||
oper A = {s: Case => GenNum => Str} ; -- 704
|
oper genNum : Gender -> Number -> GenNum = \g,n ->
|
||||||
oper mkA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A =
|
case n of {
|
||||||
|
Sg => GSg g ;
|
||||||
|
Pl => GPl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper Adj = {s: Case => GenNum => Str} ; -- 704
|
||||||
|
oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
|
||||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24 ->
|
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24 ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
Nom => table {
|
Nom => table {
|
||||||
@@ -158,6 +164,6 @@ oper Compl = {s : Str; c : Case} ;
|
|||||||
oper noPrep : Compl = {s=""; c=Acc} ;
|
oper noPrep : Compl = {s=""; c=Acc} ;
|
||||||
|
|
||||||
oper CommonNoun = Noun ;
|
oper CommonNoun = Noun ;
|
||||||
oper AdjPhrase = A ;
|
oper AdjPhrase = Adj ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
12
src/belarusian/StructuralBel.gf
Normal file
12
src/belarusian/StructuralBel.gf
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
concrete StructuralBel of Structural = CatBel ** open ResBel, ParadigmsBel in {
|
||||||
|
lin
|
||||||
|
i_Pron = mkPron "я" "мяне" "мне" "мяне" "мне" "мной" Masc Sg P1 ;
|
||||||
|
youSg_Pron = mkPron "ты" "табе" "табе" "табе" "табе" "табой" Masc Sg P2 ;
|
||||||
|
he_Pron = mkPron "ён" "яго" "яму" "яго" "ім" "ім" Masc Sg P3 ;
|
||||||
|
she_Pron = mkPron "яна" "яе" "ёй" "яе" "ёй" "ёю" Fem Sg P3 ;
|
||||||
|
it_Pron = mkPron "яно" "яго" "яму" "яго" "ім" "ім" Neuter Sg P3 ;
|
||||||
|
we_Pron = mkPron "мы" "нас" "нам" "нас" "наc" "намі" Masc Pl P1 ;
|
||||||
|
youPl_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Masc Pl P2 ;
|
||||||
|
youPol_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Masc Pl P2 ;
|
||||||
|
they_Pron = mkPron "яны" "іх" "їм" "їх" "іх" "імі" Masc Pl P3 ;
|
||||||
|
}
|
||||||
@@ -139,9 +139,6 @@ lin
|
|||||||
|
|
||||||
SubjunctRelCN cn rs = RelCN cn rs ; -- no difference from indicative
|
SubjunctRelCN cn rs = RelCN cn rs ; -- no difference from indicative
|
||||||
|
|
||||||
lincat
|
|
||||||
X = {s : Str} ;
|
|
||||||
|
|
||||||
lin
|
lin
|
||||||
UseComp_estar = UseComp ;
|
UseComp_estar = UseComp ;
|
||||||
UseComp_ser = UseComp ;
|
UseComp_ser = UseComp ;
|
||||||
|
|||||||
@@ -39,9 +39,9 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
|
|||||||
|
|
||||||
DetQuant quant num = {
|
DetQuant quant num = {
|
||||||
s = quant.s ! num.hasCard ! num.n ++ num.s ! quant.isDef ! Nom;
|
s = quant.s ! num.hasCard ! num.n ++ num.s ! quant.isDef ! Nom;
|
||||||
sp = \\g,hasAdj,c => case <num.hasCard,num.n> of {
|
sp = \\g,hasAdj,c => case num.hasCard of {
|
||||||
<False,Sg> => quant.sp ! g ! hasAdj ! num.n ! c ++ num.s ! quant.isDef ! Nom ;
|
False => quant.sp ! g ! hasAdj ! num.n ! c ++ num.s ! quant.isDef ! Nom ;
|
||||||
_ => quant.s ! True ! num.n ++ num.sp ! quant.isDef ! npcase2case c
|
_ => quant.s ! True ! num.n ++ num.sp ! quant.isDef ! npcase2case c
|
||||||
} ;
|
} ;
|
||||||
n = num.n ;
|
n = num.n ;
|
||||||
hasNum = num.hasCard
|
hasNum = num.hasCard
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
concrete AdjectiveFao of Adjective = CatFao ** {
|
concrete AdjectiveFao of Adjective = CatFao ** open ResFao in {
|
||||||
lin
|
lin
|
||||||
PositA a = a ;
|
PositA a = a ;
|
||||||
|
ComparA a np = {
|
||||||
|
s = \\g,n,c => "meir" ++ a.s ! g ! n ! c ++ "enn" ++ np.s ! Nom
|
||||||
|
} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
concrete AllFao of AllFaoAbs =
|
concrete AllFao of AllFaoAbs =
|
||||||
LangFao
|
LangFao,
|
||||||
|
ExtendFao
|
||||||
**
|
**
|
||||||
{} ;
|
{} ;
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
abstract AllFaoAbs =
|
abstract AllFaoAbs =
|
||||||
Lang
|
Lang,
|
||||||
** {}
|
Extend
|
||||||
|
** {}
|
||||||
|
|||||||
@@ -9,9 +9,20 @@ lincat V = Verb ;
|
|||||||
lincat VV,VS,VQ,VA = Verb ;
|
lincat VV,VS,VQ,VA = Verb ;
|
||||||
lincat V2 = Verb ** {c2 : Compl} ;
|
lincat V2 = Verb ** {c2 : Compl} ;
|
||||||
lincat V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
lincat V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
|
||||||
|
lincat VP = VerbPhrase ;
|
||||||
|
lincat VPSlash = Verb ** {c2 : Compl} ;
|
||||||
|
lincat Comp = {s : Gender => Number => Str} ;
|
||||||
|
lincat Cl = Clause ;
|
||||||
lincat Prep = Compl ;
|
lincat Prep = Compl ;
|
||||||
lincat CN = CommonNoun ;
|
lincat CN = CommonNoun ;
|
||||||
|
lincat NP, Pron = {s : Case => Str ; g : Gender ; n : Number ; p : Person} ;
|
||||||
|
lincat RCl = {s : Tense => Polarity => Gender => PersNum => Str} ;
|
||||||
|
lincat RS = {s : Gender => PersNum => Str} ;
|
||||||
|
lincat RP = {s : Str} ;
|
||||||
lincat AP = AdjPhrase ;
|
lincat AP = AdjPhrase ;
|
||||||
|
lincat Det = {s : Gender => Case => Str ; n : Number ; sp : Species} ;
|
||||||
|
lincat Quant = {s : Gender => Number => Case => Str ; sp : Species} ;
|
||||||
|
lincat Num = {s : Gender => Case => Str ; n : Number} ;
|
||||||
lincat S = {s : Str} ;
|
lincat S = {s : Str} ;
|
||||||
|
|
||||||
lincat LN,SN,GN,PN = {s : Str} ;
|
lincat LN,SN,GN,PN = {s : Str} ;
|
||||||
|
|||||||
@@ -10,7 +10,11 @@ lincat
|
|||||||
lin
|
lin
|
||||||
InflectionN,InflectionN2,InflectionN3 = \x -> {
|
InflectionN,InflectionN2,InflectionN3 = \x -> {
|
||||||
t="n" ;
|
t="n" ;
|
||||||
s1="" ;
|
s1 = heading1 ("Noun" ++ case x.g of {
|
||||||
|
Neuter=> "(neuter)";
|
||||||
|
Masc => "(masc)";
|
||||||
|
Fem => "(fem)"
|
||||||
|
}) ;
|
||||||
s2=frameTable (
|
s2=frameTable (
|
||||||
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Indef" ++ th "Def") ++
|
tr (intagAttr "th" "colspan=\"2\"" "" ++ th "Indef" ++ th "Def") ++
|
||||||
tr (intagAttr "th" "rowspan=\"4\"" "Sg" ++
|
tr (intagAttr "th" "rowspan=\"4\"" "Sg" ++
|
||||||
@@ -30,17 +34,17 @@ lin
|
|||||||
t="a" ;
|
t="a" ;
|
||||||
s1="" ;
|
s1="" ;
|
||||||
s2=frameTable (
|
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" ++
|
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)) ++
|
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 ! Neutr ! Sg ! Acc)) ++
|
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 ! Neutr ! Sg ! Dat)) ++
|
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 ! Neutr ! Sg ! Gen)) ++
|
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" ++
|
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)) ++
|
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 ! Neutr ! Pl ! Acc)) ++
|
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 ! Neutr ! Pl ! Dat)) ++
|
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 ! Neutr ! Pl ! Gen))) ;
|
tr (th "Gen" ++ td (x.s ! Masc ! Pl ! Gen) ++ td (x.s ! Fem ! Pl ! Gen) ++ td (x.s ! Neuter ! Pl ! Gen))) ;
|
||||||
s3=[]
|
s3=[]
|
||||||
} ;
|
} ;
|
||||||
lin
|
lin
|
||||||
@@ -51,8 +55,8 @@ lin
|
|||||||
paragraph x.Converb ++
|
paragraph x.Converb ++
|
||||||
heading2 "Imperative" ++
|
heading2 "Imperative" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (th "Sg" ++ td (x.Imperative_Jussive ! Sg)) ++
|
tr (th "Sg" ++ td (x.imperative ! Sg)) ++
|
||||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Pl))) ++
|
tr (th "Pl" ++ td (x.imperative ! Pl))) ++
|
||||||
heading2 "Indicative" ++
|
heading2 "Indicative" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (intagAttr "th" "rowspan=\"4\"" "Pres" ++ th "Sg P1" ++ td (x.Indicative ! Pres ! PSg P1)) ++
|
tr (intagAttr "th" "rowspan=\"4\"" "Pres" ++ th "Sg P1" ++ td (x.Indicative ! Pres ! PSg P1)) ++
|
||||||
|
|||||||
13
src/faroese/ExtendFao.gf
Normal file
13
src/faroese/ExtendFao.gf
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
concrete ExtendFao of Extend = CatFao **
|
||||||
|
open ParadigmsFao, ResFao in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
iFem_Pron = mkPron "eg" "meg" "mær" "mín" Masc Sg P1 ;
|
||||||
|
youFem_Pron = mkPron "tú" "teg" "tær" "tín" Masc Sg P2 ;
|
||||||
|
weFem_Pron = mkPron "vit" "okkum" "okkum" "okkara" Masc Pl P1 ;
|
||||||
|
youPlFem_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ;
|
||||||
|
theyFem_Pron = mkPron "tær" "tær" "teimum" "teirra" Masc Pl P3 ;
|
||||||
|
youPolFem_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ;
|
||||||
|
youPolPl_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ;
|
||||||
|
youPolPlFem_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ;
|
||||||
|
}
|
||||||
@@ -2,5 +2,9 @@ concrete GrammarFao of Grammar =
|
|||||||
TenseX,
|
TenseX,
|
||||||
PhraseFao,
|
PhraseFao,
|
||||||
NounFao,
|
NounFao,
|
||||||
AdjectiveFao ** {
|
VerbFao,
|
||||||
}
|
AdjectiveFao,
|
||||||
|
SentenceFao,
|
||||||
|
RelativeFao,
|
||||||
|
StructuralFao ** {
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,2 +1,9 @@
|
|||||||
concrete LexiconFao of Lexicon = CatFao ** open ParadigmsFao in {
|
concrete LexiconFao of Lexicon = CatFao ** open ParadigmsFao, ResFao in {
|
||||||
}
|
lin
|
||||||
|
apple_N = mkN "epli" ;
|
||||||
|
big_A = mkA "stórur" ;
|
||||||
|
child_N = mkN "barn" ;
|
||||||
|
die_V = mkV "doyggja" "doyrt" ;
|
||||||
|
good_A = mkA "góður" ;
|
||||||
|
go_V = mkVerb "farið" "far" "farið" "fari" "fert" "fer" "fara" "fór" "fórt" "fór" "fóru" "fara" "farandi" "farin" ;
|
||||||
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,51 @@
|
|||||||
concrete NounFao of Noun = CatFao ** {
|
concrete NounFao of Noun = CatFao ** open ResFao in {
|
||||||
lin
|
lin
|
||||||
UseN n = n ;
|
UseN n = n ;
|
||||||
|
UsePron p = p ;
|
||||||
|
RelNP np rs =
|
||||||
|
np ** {s = \\c => np.s ! c ++ "," ++ rs.s ! np.g ! persNum np.n np.p} ;
|
||||||
|
DetCN det cn = {
|
||||||
|
s = \\c => det.s ! cn.g ! c ++ cn.s ! det.sp ! det.n ! c ;
|
||||||
|
g = cn.g ;
|
||||||
|
n = det.n ;
|
||||||
|
p = P3
|
||||||
|
} ;
|
||||||
|
DefArt = {
|
||||||
|
s = \\_,_,_ => [] ;
|
||||||
|
sp = Def
|
||||||
|
} ;
|
||||||
|
IndefArt = {
|
||||||
|
s = table {
|
||||||
|
Masc => table {
|
||||||
|
Sg => table {Nom => "ein" ; Acc => "ein" ; Dat => "einum" ; Gen => "eins"} ;
|
||||||
|
Pl => \\_ => []
|
||||||
|
} ;
|
||||||
|
Fem => table {
|
||||||
|
Sg => table {Nom => "ein" ; Acc => "eina" ; Dat => "einari" ; Gen => "einar"} ;
|
||||||
|
Pl => \\_ => []
|
||||||
|
} ;
|
||||||
|
Neuter => table {
|
||||||
|
Sg => table {Nom => "eitt" ; Acc => "eitt" ; Dat => "einum" ; Gen => "eins"} ;
|
||||||
|
Pl => \\_ => []
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
sp = Indef
|
||||||
|
} ;
|
||||||
|
DetQuant quant num = {
|
||||||
|
s = \\g,c => quant.s ! g ! num.n ! c ++ num.s ! g ! c ;
|
||||||
|
n = num.n ;
|
||||||
|
sp = quant.sp
|
||||||
|
} ;
|
||||||
|
NumSg = {
|
||||||
|
s = \\_,_ => [] ;
|
||||||
|
n = Sg
|
||||||
|
} ;
|
||||||
|
NumPl = {
|
||||||
|
s = \\_,_ => [] ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
AdjCN ap cn = {
|
||||||
|
s = \\sp,n,c => ap.s ! cn.g ! n ! c ++ cn.s ! sp ! n ! c ;
|
||||||
|
g = cn.g
|
||||||
|
} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -319,6 +319,19 @@ oper
|
|||||||
_ => regN form1
|
_ => regN form1
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mkPron : (_,_,_,_ : Str) -> Gender -> Number -> Person -> Pron =
|
||||||
|
\nom,acc,dat,gen,g,n,p -> lin Pron {
|
||||||
|
s = table {
|
||||||
|
Nom => nom ;
|
||||||
|
Acc => acc ;
|
||||||
|
Dat => dat ;
|
||||||
|
Gen => gen
|
||||||
|
} ;
|
||||||
|
g = g ;
|
||||||
|
n = n ;
|
||||||
|
p = p
|
||||||
|
} ;
|
||||||
|
|
||||||
regA : Str -> A -- s;Masc;Sg;Nom
|
regA : Str -> A -- s;Masc;Sg;Nom
|
||||||
= \form -> case form of {
|
= \form -> case form of {
|
||||||
_ + "dur" => mkA001 form;
|
_ + "dur" => mkA001 form;
|
||||||
@@ -494,6 +507,10 @@ oper
|
|||||||
mkA : Str -> Str -> A = reg2A -- s;Masc;Sg;Nom s;Masc;Sg;Dat
|
mkA : Str -> Str -> A = reg2A -- s;Masc;Sg;Nom s;Masc;Sg;Dat
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
invarA : Str -> A = \s -> lin A {
|
||||||
|
s = \\_,_,_ => s
|
||||||
|
} ;
|
||||||
|
|
||||||
mkA2 = overload {
|
mkA2 = overload {
|
||||||
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
|
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
|
||||||
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
|
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
|
||||||
@@ -502,7 +519,7 @@ oper
|
|||||||
mkV = overload {
|
mkV = overload {
|
||||||
mkV : Str -> V = regV; -- Nonfinite
|
mkV : Str -> V = regV; -- Nonfinite
|
||||||
mkV : Str -> Str -> V = reg2V ; -- Nonfinite Indicative;Pres;('PSg', P2)
|
mkV : Str -> Str -> V = reg2V ; -- Nonfinite Indicative;Pres;('PSg', P2)
|
||||||
mkV : V -> Str -> V -- particle verb
|
mkV : V -> Str -> V -- particle verb
|
||||||
= \v,p -> v ** {particle = p}
|
= \v,p -> v ** {particle = p}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -556,10 +573,11 @@ oper
|
|||||||
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
||||||
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
|
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
|
||||||
mkSubj : Str -> Subj = \s -> lin Subj {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} ;
|
||||||
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
||||||
mkDet : Str -> Det = \s -> lin Det {s=s} ;
|
mkDet : Str -> Det = \s -> lin Det {s=\\_,_ => s; n=Sg; sp=Indef} ;
|
||||||
mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
||||||
|
mkACard : Str -> ACard = \s -> lin ACard {s=s} ;
|
||||||
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
|
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
|
||||||
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
|
||||||
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
concrete PhraseFao of Phrase = CatFao ** {
|
concrete PhraseFao of Phrase = CatFao ** open ResFao in {
|
||||||
lin
|
lin
|
||||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||||
|
|
||||||
UttS s = s ;
|
UttS s = s ;
|
||||||
|
UttNP np = {s = np.s ! Nom} ;
|
||||||
|
UttVP vp = {s = vp.Nonfinite} ;
|
||||||
|
UttCN cn = {s = cn.s ! Indef ! Sg ! Nom} ;
|
||||||
|
UttAP ap = {s = ap.s ! Masc ! Sg ! Nom} ;
|
||||||
|
UttAdv adv = adv ;
|
||||||
UttInterj i = i ;
|
UttInterj i = i ;
|
||||||
|
|
||||||
NoPConj = {s = []} ;
|
NoPConj = {s = []} ;
|
||||||
|
|||||||
7
src/faroese/RelativeFao.gf
Normal file
7
src/faroese/RelativeFao.gf
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
concrete RelativeFao of Relative = CatFao ** open ResFao in {
|
||||||
|
lin
|
||||||
|
IdRP = {s = "sum"} ;
|
||||||
|
RelVP rp vp = {
|
||||||
|
s = \\t,pol,g,pn => rp.s ++ vp.Indicative ! t ! pol ! g ! pn
|
||||||
|
} ;
|
||||||
|
}
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
resource ResFao = {
|
resource ResFao = ParamX - [Tense,Pres,Past] ** {
|
||||||
|
|
||||||
param Species = Indef | Def ;
|
param Species = Indef | Def ;
|
||||||
param Number = Sg | Pl ;
|
|
||||||
param Case = Nom | Acc | Dat | Gen ;
|
param Case = Nom | Acc | Dat | Gen ;
|
||||||
param Gender = Neutr | Fem | Masc ;
|
param Gender = Masc | Fem | Neuter ;
|
||||||
oper Noun = {s: Species => Number => Case => Str} ; -- 2135
|
oper Noun = {s: Species => Number => Case => Str; g : Gender} ; -- 2135
|
||||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun =
|
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
||||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16 ->
|
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,g ->
|
||||||
{ s = table {
|
{ s = table {
|
||||||
Indef => table {
|
Indef => table {
|
||||||
Sg => table {
|
Sg => table {
|
||||||
@@ -36,7 +35,8 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun =
|
|||||||
Gen => f16
|
Gen => f16
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} ;
|
||||||
|
g = g
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
|
|||||||
Gen => f16
|
Gen => f16
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
Neutr => table {
|
Neuter=> table {
|
||||||
Sg => table {
|
Sg => table {
|
||||||
Nom => f17 ;
|
Nom => f17 ;
|
||||||
Acc => f18 ;
|
Acc => f18 ;
|
||||||
@@ -89,17 +89,28 @@ oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
param Tense = Past | Pres ;
|
param Tense = Pres | Past ;
|
||||||
|
|
||||||
param PersNum = PSg Person | PPl ;
|
param PersNum = PSg Person | PPl ;
|
||||||
param Person = P1 | P3 | P2 ;
|
oper persNum : Number -> Person -> PersNum =
|
||||||
oper Verb = {Converb: Str; Imperative_Jussive: Number => Str; Indicative: Tense => PersNum => Str; Nonfinite: Str; Participle: Tense => Str ; particle : Str} ; -- 596
|
\n,p -> case n of {
|
||||||
|
Sg => PSg p ;
|
||||||
|
Pl => PPl
|
||||||
|
} ;
|
||||||
|
oper persNumNumber : PersNum -> Number =
|
||||||
|
\pn -> case pn of {
|
||||||
|
PSg _ => Sg ;
|
||||||
|
PPl => Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper Verb = {Converb: Str; imperative: Number => Str; Indicative: Tense => PersNum => Str; Nonfinite: Str; Participle: Tense => Str ; particle : Str} ; -- 596
|
||||||
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14 ->
|
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14 ->
|
||||||
{ Converb = f1 ;
|
{ Converb = f1 ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Sg => f2 ;
|
Sg => f2 ;
|
||||||
Pl => f3
|
Pl => f3
|
||||||
} ;
|
} ;
|
||||||
Indicative = table {
|
Indicative = table {
|
||||||
Pres => table {
|
Pres => table {
|
||||||
PSg P1 => f4 ;
|
PSg P1 => f4 ;
|
||||||
@@ -128,5 +139,34 @@ oper noPrep : Compl = {s=""; c=Acc} ;
|
|||||||
|
|
||||||
oper CommonNoun = Noun ;
|
oper CommonNoun = Noun ;
|
||||||
oper AdjPhrase = Adj ;
|
oper AdjPhrase = Adj ;
|
||||||
|
oper VerbPhrase = {
|
||||||
|
Converb : Str ;
|
||||||
|
Indicative : Tense => Polarity => Gender => PersNum => Str ;
|
||||||
|
Nonfinite : Str ;
|
||||||
|
Participle : Tense => Str ;
|
||||||
|
} ;
|
||||||
|
oper Clause = {
|
||||||
|
Converb : Str ;
|
||||||
|
Indicative : Tense => Polarity => Str ;
|
||||||
|
Nonfinite : Str ;
|
||||||
|
Participle : Tense => Str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
copula : Tense => PersNum => Str =
|
||||||
|
table {
|
||||||
|
Pres => table {
|
||||||
|
PSg P1 => "eri" ;
|
||||||
|
PSg P2 => "ert" ;
|
||||||
|
PSg P3 => "er" ;
|
||||||
|
PPl => "eru"
|
||||||
|
} ;
|
||||||
|
Past => table {
|
||||||
|
PSg P1 => "var" ;
|
||||||
|
PSg P2 => "vart" ;
|
||||||
|
PSg P3 => "var" ;
|
||||||
|
PPl => "vóru"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
31
src/faroese/SentenceFao.gf
Normal file
31
src/faroese/SentenceFao.gf
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
concrete SentenceFao of Sentence = CatFao ** open Prelude, ResFao, (P = ParamX) in {
|
||||||
|
lin PredVP np vp = {Converb = np.s ! Nom ++ vp.Converb;
|
||||||
|
Indicative = \\t,pol =>
|
||||||
|
let p = persNum np.n np.p
|
||||||
|
in np.s ! Nom ++ vp.Indicative ! t ! pol ! np.g ! p;
|
||||||
|
Nonfinite = np.s ! Nom ++ vp.Nonfinite;
|
||||||
|
Participle = \\t => np.s ! Nom ++ vp.Participle ! t} ;
|
||||||
|
UseCl temp pol cl =
|
||||||
|
let
|
||||||
|
tense = case temp.t of {
|
||||||
|
P.Pres => Pres ;
|
||||||
|
P.Past => Past ;
|
||||||
|
P.Fut => Pres ;
|
||||||
|
P.Cond => Past
|
||||||
|
} ;
|
||||||
|
in {
|
||||||
|
s = temp.s ++ pol.s ++ cl.Indicative ! tense ! pol.p
|
||||||
|
} ;
|
||||||
|
UseRCl temp pol rcl =
|
||||||
|
let
|
||||||
|
tense = case temp.t of {
|
||||||
|
P.Pres => Pres ;
|
||||||
|
P.Past => Past ;
|
||||||
|
P.Fut => Pres ;
|
||||||
|
P.Cond => Past
|
||||||
|
}
|
||||||
|
in {
|
||||||
|
s = \\g,pn =>
|
||||||
|
temp.s ++ pol.s ++ rcl.s ! tense ! pol.p ! g ! pn
|
||||||
|
} ;
|
||||||
|
}
|
||||||
14
src/faroese/StructuralFao.gf
Normal file
14
src/faroese/StructuralFao.gf
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
concrete StructuralFao of Structural = CatFao **
|
||||||
|
open ParadigmsFao, ResFao in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
i_Pron = mkPron "eg" "meg" "mær" "mín" Masc Sg P1 ;
|
||||||
|
youSg_Pron = mkPron "tú" "teg" "tær" "tín" Masc Sg P2 ;
|
||||||
|
he_Pron = mkPron "hann" "hann" "honum" "hansara" Masc Sg P3 ;
|
||||||
|
she_Pron = mkPron "hon" "hana" "henni" "hennara" Fem Sg P3 ;
|
||||||
|
it_Pron = mkPron "tað" "tað" "tí" "tess" Neuter Sg P3 ;
|
||||||
|
we_Pron = mkPron "vit" "okkum" "okkum" "okkara" Masc Pl P1 ;
|
||||||
|
youPl_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ;
|
||||||
|
they_Pron = mkPron "teir" "teir" "teimum" "teirra" Masc Pl P3 ;
|
||||||
|
youPol_Pron = mkPron "tit" "tykkum" "tykkum" "tykkara" Masc Pl P2 ;
|
||||||
|
}
|
||||||
42
src/faroese/VerbFao.gf
Normal file
42
src/faroese/VerbFao.gf
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
concrete VerbFao of Verb = CatFao ** open Prelude,ResFao in {
|
||||||
|
lin UseV v = {Converb = v.Converb ++ v.particle;
|
||||||
|
Indicative = \\t,pol,g,p => v.Indicative ! t ! p ++ v.particle ++
|
||||||
|
case pol of {
|
||||||
|
Pos => [] ;
|
||||||
|
Neg => "ikki"
|
||||||
|
} ;
|
||||||
|
Nonfinite = v.Nonfinite ++ v.particle;
|
||||||
|
Participle = \\t => v.Participle ! t ++ v.particle} ;
|
||||||
|
lin AdvVP vp adv = {Converb = vp.Converb ++ adv.s;
|
||||||
|
Indicative = \\t,pol,g,p => vp.Indicative ! t ! pol ! g ! p ++ adv.s;
|
||||||
|
Nonfinite = vp.Nonfinite ++ adv.s;
|
||||||
|
Participle = \\t => vp.Participle ! t ++ adv.s} ;
|
||||||
|
lin ComplSlash vps np = {Converb = vps.Converb ++ vps.particle
|
||||||
|
++ vps.c2.s ++ np.s ! vps.c2.c;
|
||||||
|
Indicative = \\t,pol,g,p =>
|
||||||
|
vps.Indicative ! t ! p ++ vps.particle ++
|
||||||
|
case pol of {
|
||||||
|
Pos => [] ;
|
||||||
|
Neg => "ikki"
|
||||||
|
} ++
|
||||||
|
vps.c2.s ++ np.s ! vps.c2.c ;
|
||||||
|
Nonfinite = vps.Nonfinite ++ vps.particle ++ vps.c2.s ++ np.s ! vps.c2.c;
|
||||||
|
Participle = \\t => vps.Participle ! t ++ vps.particle ++ vps.c2.s ++ np.s ! vps.c2.c} ;
|
||||||
|
lin UseComp comp = {
|
||||||
|
Converb = copula ! Pres ! PPl ++ comp.s ! Masc ! Sg ;
|
||||||
|
Indicative = \\t,pol,g,p => copula ! t ! p ++
|
||||||
|
case pol of {
|
||||||
|
Pos => [] ;
|
||||||
|
Neg => "ikki"
|
||||||
|
} ++
|
||||||
|
comp.s ! g ! persNumNumber p ;
|
||||||
|
Nonfinite = "vera" ++ comp.s ! Masc ! Sg ;
|
||||||
|
Participle = \\t => "verið" ++ comp.s ! Masc ! Sg
|
||||||
|
} ;
|
||||||
|
lin CompAP ap = {s = \\g,n => ap.s ! g ! n ! Nom} ;
|
||||||
|
lin CompNP np = {s = \\_,_ => np.s ! Nom} ;
|
||||||
|
lin CompAdv adv = {s = \\_,_ => adv.s} ;
|
||||||
|
lin CompCN cn = {s = \\_,n => cn.s ! Indef ! n ! Nom} ;
|
||||||
|
|
||||||
|
lin SlashV2a v = v ;
|
||||||
|
}
|
||||||
@@ -68,6 +68,8 @@ oper
|
|||||||
mkPN = overload {
|
mkPN = overload {
|
||||||
mkPN : (anna : Str) -> PN
|
mkPN : (anna : Str) -> PN
|
||||||
= \p -> lin PN (regName p) ;
|
= \p -> lin PN (regName p) ;
|
||||||
|
mkPN : (anna : Str) -> Gender -> PN
|
||||||
|
= \p, g -> lin PN (regName p ** {g = g}) ;
|
||||||
mkPN : (nm,gm,am,vm,pn,pa : Str) -> Gender -> PN
|
mkPN : (nm,gm,am,vm,pn,pa : Str) -> Gender -> PN
|
||||||
= \ nm,gm,am,vm,pn,pa, g -> lin PN (mkName nm gm am vm pn pa g) ;
|
= \ nm,gm,am,vm,pn,pa, g -> lin PN (mkName nm gm am vm pn pa g) ;
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -670,31 +670,6 @@ resource ResGre = ParamX ** open Prelude in {
|
|||||||
g = g
|
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 (φως, γεγονός, ημίφως) --------------
|
----------------Neuter nouns in -ς , with stress movement,syllabic augmentation, irregular (φως, γεγονός, ημίφως) --------------
|
||||||
mkNoun_fws: (s1,_ : Str) -> Gender -> Noun =
|
mkNoun_fws: (s1,_ : Str) -> Gender -> Noun =
|
||||||
\fws, fwtos, g ->
|
\fws, fwtos, g ->
|
||||||
|
|||||||
@@ -72,9 +72,7 @@ taC1C2eC3o = { C1 = "ת" ; C1C2=""; C2C3 =""; C3="ו"};
|
|||||||
taC1C2aC3nah = { C1 = "ת" ; C1C2=""; C2C3 =""; C3="נה"};
|
taC1C2aC3nah = { C1 = "ת" ; C1C2=""; C2C3 =""; C3="נה"};
|
||||||
|
|
||||||
yaC1C2aC3 = { C1 = "י" ; C1C2=""; C2C3 =""; C3=""};
|
yaC1C2aC3 = { C1 = "י" ; C1C2=""; C2C3 =""; C3=""};
|
||||||
taC1C2aC3 = { C1 = "ת" ; C1C2=""; C2C3 =""; C3=""};
|
|
||||||
yaC1C2aC3u = { C1 = "י" ; C1C2=""; C2C3 =""; C3="ו"};
|
yaC1C2aC3u = { C1 = "י" ; C1C2=""; C2C3 =""; C3="ו"};
|
||||||
taC1C2aC3nah = { C1 = "ת" ; C1C2=""; C2C3 =""; C3="נה"};
|
|
||||||
|
|
||||||
|
|
||||||
C1uC2aC3 = { C1 = "" ; C1C2="ו"; C2C3 =""; C3=""};
|
C1uC2aC3 = { C1 = "" ; C1C2="ו"; C2C3 =""; C3=""};
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ concrete AdjectiveHun of Adjective = CatHun ** open ResHun, Prelude in {
|
|||||||
-- : A -> AP ;
|
-- : A -> AP ;
|
||||||
PositA a = emptyAP ** {
|
PositA a = emptyAP ** {
|
||||||
s = \\n,c =>
|
s = \\n,c =>
|
||||||
let adj : Noun = (a ** {s = a.s ! Posit}) in
|
let adj : Noun = (a ** {s = a.s ! Posit; g = NonHuman}) in
|
||||||
caseFromStem glue adj c n ;
|
caseFromStem glue adj c n ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ concrete AdjectiveHun of Adjective = CatHun ** open ResHun, Prelude in {
|
|||||||
-- : A -> AP ; -- warmer
|
-- : A -> AP ; -- warmer
|
||||||
UseComparA a = emptyAP ** {
|
UseComparA a = emptyAP ** {
|
||||||
s = \\n,c =>
|
s = \\n,c =>
|
||||||
let adj : Noun = (a ** {s = a.s ! Compar}) in
|
let adj : Noun = (a ** {s = a.s ! Compar; g = NonHuman}) in
|
||||||
caseFromStem glue adj c n ;
|
caseFromStem glue adj c n ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -54,7 +54,9 @@ concrete AdjectiveHun of Adjective = CatHun ** open ResHun, Prelude in {
|
|||||||
-- phrases, although the semantics is only clear for some adjectives.
|
-- phrases, although the semantics is only clear for some adjectives.
|
||||||
|
|
||||||
-- : AP -> SC -> AP ; -- good that she is here
|
-- : AP -> SC -> AP ; -- good that she is here
|
||||||
-- SentAP ap sc = ap ** {} ;
|
SentAP ap sc = ap ** {
|
||||||
|
compl = \\n => ap.compl ! n ++ sc.s ;
|
||||||
|
} ;
|
||||||
|
|
||||||
-- An adjectival phrase can be modified by an *adadjective*, such as "very".
|
-- An adjectival phrase can be modified by an *adadjective*, such as "very".
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,11 @@ concrete AdverbHun of Adverb = CatHun ** open ResHun, ParamHun, ParadigmsHun, Pr
|
|||||||
lin
|
lin
|
||||||
|
|
||||||
-- : A -> Adv ;
|
-- : A -> Adv ;
|
||||||
--PositAdvAdj adj = { } ;
|
PositAdvAdj adj = {
|
||||||
|
s = let a : Str = adj.s ! Posit ! SgNom
|
||||||
|
in a ++ BIND ++ "an" ;
|
||||||
|
isPre = False ;
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : CAdv -> A -> NP -> Adv ; -- more warmly than John
|
-- : CAdv -> A -> NP -> Adv ; -- more warmly than John
|
||||||
-- ComparAdvAdj cadv a np = { } ;
|
-- ComparAdvAdj cadv a np = { } ;
|
||||||
@@ -19,15 +23,18 @@ lin
|
|||||||
-- Adverbs can be modified by 'adadjectives', just like adjectives.
|
-- Adverbs can be modified by 'adadjectives', just like adjectives.
|
||||||
|
|
||||||
--AdAdv : AdA -> Adv -> Adv ; -- very quickly
|
--AdAdv : AdA -> Adv -> Adv ; -- very quickly
|
||||||
-- AdAdv ada adv = adv **
|
AdAdv ada adv = adv ** {s = ada.s ++ adv.s} ;
|
||||||
-- Like adverbs, adadjectives can be produced by adjectives.
|
-- Like adverbs, adadjectives can be produced by adjectives.
|
||||||
|
|
||||||
-- : A -> AdA ; -- extremely
|
-- : A -> AdA ; -- extremely
|
||||||
-- PositAdAAdj a = { } ;
|
PositAdAAdj a = {s = a.s ! Posit ! SgNom} ;
|
||||||
-- Subordinate clauses can function as adverbs.
|
-- Subordinate clauses can function as adverbs.
|
||||||
|
|
||||||
-- : Subj -> S -> Adv ;
|
-- : Subj -> S -> Adv ;
|
||||||
-- SubjS subj s =
|
SubjS subj s = {
|
||||||
|
s = subj.s ++ s.s ;
|
||||||
|
isPre = False ;
|
||||||
|
} ;
|
||||||
|
|
||||||
-- Comparison adverbs also work as numeral adverbs.
|
-- Comparison adverbs also work as numeral adverbs.
|
||||||
|
|
||||||
|
|||||||
@@ -2,5 +2,6 @@
|
|||||||
|
|
||||||
concrete AllHun of AllHunAbs =
|
concrete AllHun of AllHunAbs =
|
||||||
LangHun,
|
LangHun,
|
||||||
|
IrregHun,
|
||||||
ExtendHun
|
ExtendHun
|
||||||
** {} ;
|
** {} ;
|
||||||
|
|||||||
@@ -2,5 +2,6 @@
|
|||||||
|
|
||||||
abstract AllHunAbs =
|
abstract AllHunAbs =
|
||||||
Lang,
|
Lang,
|
||||||
|
IrregHunAbs,
|
||||||
Extend
|
Extend
|
||||||
** {} ;
|
** {} ;
|
||||||
|
|||||||
@@ -76,8 +76,7 @@ concrete CatHun of Cat = CommonX - [Adv] ** open ResHun, Prelude in {
|
|||||||
|
|
||||||
-- Constructed in NumeralHun.
|
-- Constructed in NumeralHun.
|
||||||
|
|
||||||
Card = ResHun.Numeral ;
|
Card, ACard, Numeral = ResHun.Numeral ;
|
||||||
Numeral = ResHun.Numeral ;
|
|
||||||
Digits = {s : CardOrd => Str} ;
|
Digits = {s : CardOrd => Str} ;
|
||||||
Decimal = {s : CardOrd => Str; hasDot : Bool} ;
|
Decimal = {s : CardOrd => Str; hasDot : Bool} ;
|
||||||
|
|
||||||
@@ -126,5 +125,8 @@ linref
|
|||||||
NP = linNP ;
|
NP = linNP ;
|
||||||
V,VS,VQ,VA = \v -> v.s ! VPres P3 Sg ;
|
V,VS,VQ,VA = \v -> v.s ! VPres P3 Sg ;
|
||||||
V2,V3,V2S,V2Q,V2A = \v -> v.s ! Indef ! VPres P3 Sg ;
|
V2,V3,V2S,V2Q,V2A = \v -> v.s ! Indef ! VPres P3 Sg ;
|
||||||
|
VP = \vp -> vp.obj ++ vp.adv ++ vp.s ! VInf ;
|
||||||
|
|
||||||
|
lindef
|
||||||
|
VP = \s -> {s = \\_=>s; obj,adv=[]; sc=SCNom; c2=Acc} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,22 +52,37 @@ lin
|
|||||||
in np ** {s = linTable} ;
|
in np ** {s = linTable} ;
|
||||||
-- Relative sentences
|
-- Relative sentences
|
||||||
lincat
|
lincat
|
||||||
[RS] = {s1,s2 : Number => Case => Str} ;
|
[RS] = {s1,s2 : Gender => Number => Case => Str} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
BaseRS = twoTable2 Number Case ;
|
BaseRS = twoTable3 Gender Number Case ;
|
||||||
ConsRS = consrTable2 Number Case comma ;
|
ConsRS = consrTable3 Gender Number Case comma ;
|
||||||
ConjRS = conjunctDistrTable2 Number Case ;
|
ConjRS = conjunctDistrTable3 Gender Number Case ;
|
||||||
|
|
||||||
|
lincat
|
||||||
|
[CN] = {
|
||||||
|
s1,s2 : NumCaseStem => Str ;
|
||||||
|
h : Harm ;
|
||||||
|
g : Gender
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
BaseCN x y = twoTable NumCaseStem x y ** {
|
||||||
|
h = y.h ;
|
||||||
|
g = y.g
|
||||||
|
} ;
|
||||||
|
ConsCN x xs = consrTable NumCaseStem comma x xs ** {
|
||||||
|
h = xs.h ;
|
||||||
|
g = xs.g
|
||||||
|
} ;
|
||||||
|
ConjCN co cs = conjunctDistrTable NumCaseStem co cs ** {
|
||||||
|
compl = \\_,_ => [] ;
|
||||||
|
postmod = [] ;
|
||||||
|
h = cs.h ;
|
||||||
|
g = cs.g
|
||||||
|
} ;
|
||||||
|
|
||||||
{-
|
{-
|
||||||
lincat
|
|
||||||
[CN] = { } ;
|
|
||||||
|
|
||||||
lin
|
|
||||||
BaseCN = {} ;
|
|
||||||
ConsCN = {} ;
|
|
||||||
ConjCN co cs = conjunctDistrTable … co cs ** cs ;
|
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
[DAP] =
|
[DAP] =
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,178 @@
|
|||||||
concrete ConstructionHun of Construction = CatHun ** open ParadigmsHun in {
|
concrete ConstructionHun of Construction = CatHun ** open
|
||||||
|
ParadigmsHun, ResHun, NounHun, VerbHun, AdjectiveHun, Prelude in {
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
Timeunit = N ;
|
Timeunit = N ;
|
||||||
|
Hour = {s : Str} ;
|
||||||
Weekday = N ;
|
Weekday = N ;
|
||||||
Monthday = NP ;
|
Monthday = NP ;
|
||||||
Month = N ;
|
Month = N ;
|
||||||
Year = NP ;
|
Year = NP ;
|
||||||
|
Language = N ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
hungry_VP = UseComp (CompAP (PositA (mkA "éhes"))) ;
|
||||||
|
thirsty_VP = UseComp (CompAP (PositA (mkA "szomjas"))) ;
|
||||||
|
tired_VP = UseComp (CompAP (PositA (mkA "fáradt"))) ;
|
||||||
|
scared_VP = UseComp (CompAP (PositA (mkA "ijedt"))) ;
|
||||||
|
ill_VP = UseComp (CompAP (PositA (mkA "beteg"))) ;
|
||||||
|
ready_VP = UseComp (CompAP (PositA (mkA "kész"))) ;
|
||||||
|
|
||||||
|
has_age_VP card = useV (copula ** {
|
||||||
|
s = \\vf => case vf of {
|
||||||
|
VPres P3 _ => [] ;
|
||||||
|
_ => copula.s ! vf
|
||||||
|
}
|
||||||
|
}) ** {
|
||||||
|
adv = card.s ! Indep ++ "éves"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
n_units_AP card cn a =
|
||||||
|
let ap : AP = PositA a in ap ** {
|
||||||
|
s = \\n,c => card.s ! Attrib ++ cn.s ! SgNom ++ ap.s ! n ! c
|
||||||
|
} ;
|
||||||
|
|
||||||
|
n_units_of_NP card cn np = lin NP (indeclNP
|
||||||
|
(card.s ! Attrib ++ cn.s ! SgNom ++ np.s ! NoPoss ! Nom ++ np.postmod)) ;
|
||||||
|
|
||||||
|
n_unit_CN card unit cn = cn ** {
|
||||||
|
s = \\ncs => card.s ! Attrib ++ unit.s ! SgNom ++ cn.s ! ncs
|
||||||
|
} ;
|
||||||
|
|
||||||
|
bottle_of_CN np = (UseN (mkN "palack")) ** {
|
||||||
|
compl = \\_,_ => np.s ! NoPoss ! Nom ++ np.postmod
|
||||||
|
} ;
|
||||||
|
cup_of_CN np = (UseN (mkN "csésze")) ** {
|
||||||
|
compl = \\_,_ => np.s ! NoPoss ! Nom ++ np.postmod
|
||||||
|
} ;
|
||||||
|
glass_of_CN np = (UseN (mkN "pohár")) ** {
|
||||||
|
compl = \\_,_ => np.s ! NoPoss ! Nom ++ np.postmod
|
||||||
|
} ;
|
||||||
|
|
||||||
|
timeunitAdv n time = mkAdv (n.s ! Attrib ++ time.s ! SgNom) ;
|
||||||
|
timeunitRange l u time =
|
||||||
|
mkAdv (l.s ! Attrib ++ BIND ++ "-" ++ BIND ++ u.s ! Attrib ++ time.s ! SgNom) ;
|
||||||
|
|
||||||
|
oneHour = {s = "1"} ;
|
||||||
|
twoHour = {s = "2"} ;
|
||||||
|
threeHour = {s = "3"} ;
|
||||||
|
fourHour = {s = "4"} ;
|
||||||
|
fiveHour = {s = "5"} ;
|
||||||
|
sixHour = {s = "6"} ;
|
||||||
|
sevenHour = {s = "7"} ;
|
||||||
|
eightHour = {s = "8"} ;
|
||||||
|
nineHour = {s = "9"} ;
|
||||||
|
tenHour = {s = "10"} ;
|
||||||
|
elevenHour = {s = "11"} ;
|
||||||
|
twelveHour = {s = "12"} ;
|
||||||
|
thirteenHour = {s = "13"} ;
|
||||||
|
fourteenHour = {s = "14"} ;
|
||||||
|
fifteenHour = {s = "15"} ;
|
||||||
|
sixteenHour = {s = "16"} ;
|
||||||
|
seventeenHour = {s = "17"} ;
|
||||||
|
eighteenHour = {s = "18"} ;
|
||||||
|
nineteenHour = {s = "19"} ;
|
||||||
|
twentyHour = {s = "20"} ;
|
||||||
|
twentyOneHour = {s = "21"} ;
|
||||||
|
twentyTwoHour = {s = "22"} ;
|
||||||
|
twentyThreeHour = {s = "23"} ;
|
||||||
|
twentyFourHour = {s = "24"} ;
|
||||||
|
|
||||||
|
timeHour h = mkAdv (h.s ++ "órakor") ;
|
||||||
|
timeHourMinute h m = mkAdv (h.s ++ BIND ++ ":" ++ BIND ++ m.s ! Attrib) ;
|
||||||
|
|
||||||
|
weekdayPunctualAdv w = mkAdv (caseFromStem glue w Sup Sg) ;
|
||||||
|
weekdayHabitualAdv w = mkAdv (caseFromStem glue w Sup Sg) ;
|
||||||
|
weekdayNextAdv w = mkAdv ("jövő" ++ caseFromStem glue w Sup Sg) ;
|
||||||
|
weekdayLastAdv w = mkAdv ("múlt" ++ caseFromStem glue w Sup Sg) ;
|
||||||
|
|
||||||
|
monthAdv m = mkAdv (caseFromStem glue m Ine Sg) ;
|
||||||
|
yearAdv y = mkAdv (y.s ! NoPoss ! Nom ++ BIND ++ "-ban") ;
|
||||||
|
dayMonthAdv d m =
|
||||||
|
mkAdv (d.s ! NoPoss ! Nom ++ BIND ++ "." ++ m.s ! SgNom) ;
|
||||||
|
monthYearAdv m y =
|
||||||
|
mkAdv (m.s ! SgNom ++ y.s ! NoPoss ! Nom ++ BIND ++ "-ban") ;
|
||||||
|
dayMonthYearAdv d m y =
|
||||||
|
mkAdv (d.s ! NoPoss ! Nom ++ BIND ++ "." ++ m.s ! SgNom ++ y.s ! NoPoss ! Nom ++ BIND ++ "-ban") ;
|
||||||
|
|
||||||
|
intYear i = lin NP (indeclNP i.s) ;
|
||||||
|
intMonthday i = lin NP (indeclNP i.s) ;
|
||||||
|
|
||||||
|
InLanguage l = mkAdv (l.s ! SgNom ++ "nyelven") ;
|
||||||
|
|
||||||
|
weekdayN w = w ;
|
||||||
|
monthN m = m ;
|
||||||
|
|
||||||
|
weekdayPN w = lin PN (MassNP (UseN w)) ;
|
||||||
|
monthPN m = lin PN (MassNP (UseN m)) ;
|
||||||
|
|
||||||
|
languageCN l = UseN l ;
|
||||||
|
languageNP l = lin NP (MassNP (UseN l)) ;
|
||||||
|
|
||||||
|
second_Timeunit = mkN "másodperc" ;
|
||||||
|
minute_Timeunit = mkN "perc" ;
|
||||||
|
hour_Timeunit = mkN "óra" ;
|
||||||
|
day_Timeunit = mkN "nap" ;
|
||||||
|
week_Timeunit = mkN "hét" ;
|
||||||
|
month_Timeunit = mkN "hónap" ;
|
||||||
|
year_Timeunit = mkN "év" ;
|
||||||
|
|
||||||
|
monday_Weekday = mkN "hétfő" ;
|
||||||
|
tuesday_Weekday = mkN "kedd" ;
|
||||||
|
wednesday_Weekday = mkN "szerda" ;
|
||||||
|
thursday_Weekday = mkN "csütörtök" ;
|
||||||
|
friday_Weekday = mkN "péntek" ;
|
||||||
|
saturday_Weekday = mkN "szombat" ;
|
||||||
|
sunday_Weekday = mkN "vasárnap" ;
|
||||||
|
|
||||||
|
january_Month = mkN "január" ;
|
||||||
|
february_Month = mkN "február" ;
|
||||||
|
march_Month = mkN "március" ;
|
||||||
|
april_Month = mkN "április" ;
|
||||||
|
may_Month = mkN "május" ;
|
||||||
|
june_Month = mkN "június" ;
|
||||||
|
july_Month = mkN "július" ;
|
||||||
|
august_Month = mkN "augusztus" ;
|
||||||
|
september_Month = mkN "szeptember" ;
|
||||||
|
october_Month = mkN "október" ;
|
||||||
|
november_Month = mkN "november" ;
|
||||||
|
december_Month = mkN "december" ;
|
||||||
|
|
||||||
|
afrikaans_Language = mkN "afrikaans" ;
|
||||||
|
amharic_Language = mkN "amhara" ;
|
||||||
|
arabic_Language = mkN "arab" ;
|
||||||
|
bulgarian_Language = mkN "bolgár" ;
|
||||||
|
catalan_Language = mkN "katalán" ;
|
||||||
|
chinese_Language = mkN "kínai" ;
|
||||||
|
danish_Language = mkN "dán" ;
|
||||||
|
dutch_Language = mkN "holland" ;
|
||||||
|
english_Language = mkN "angol" ;
|
||||||
|
estonian_Language = mkN "észt" ;
|
||||||
|
finnish_Language = mkN "finn" ;
|
||||||
|
french_Language = mkN "francia" ;
|
||||||
|
german_Language = mkN "német" ;
|
||||||
|
greek_Language = mkN "görög" ;
|
||||||
|
hebrew_Language = mkN "héber" ;
|
||||||
|
hindi_Language = mkN "hindi" ;
|
||||||
|
japanese_Language = mkN "japán" ;
|
||||||
|
italian_Language = mkN "olasz" ;
|
||||||
|
latin_Language = mkN "latin" ;
|
||||||
|
latvian_Language = mkN "lett" ;
|
||||||
|
maltese_Language = mkN "máltai" ;
|
||||||
|
nepali_Language = mkN "nepáli" ;
|
||||||
|
norwegian_Language = mkN "norvég" ;
|
||||||
|
persian_Language = mkN "perzsa" ;
|
||||||
|
polish_Language = mkN "lengyel" ;
|
||||||
|
punjabi_Language = mkN "pandzsábi" ;
|
||||||
|
romanian_Language = mkN "román" ;
|
||||||
|
russian_Language = mkN "orosz" ;
|
||||||
|
sindhi_Language = mkN "szindhi" ;
|
||||||
|
spanish_Language = mkN "spanyol" ;
|
||||||
|
swahili_Language = mkN "szuahéli" ;
|
||||||
|
swedish_Language = mkN "svéd" ;
|
||||||
|
thai_Language = mkN "thai" ;
|
||||||
|
turkish_Language = mkN "török" ;
|
||||||
|
urdu_Language = mkN "urdu" ;
|
||||||
{-
|
{-
|
||||||
lin
|
lin
|
||||||
|
|
||||||
|
|||||||
206
src/hungarian/DocumentationHun.gf
Normal file
206
src/hungarian/DocumentationHun.gf
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
--# -path=.:../abstract:../common:../prelude
|
||||||
|
|
||||||
|
concrete DocumentationHun of Documentation = CatHun ** open
|
||||||
|
ResHun, Prelude, HTML in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
Inflection = {t : Str; s1,s2 : Str} ;
|
||||||
|
Definition = {s : Str} ;
|
||||||
|
Document = {s : Str} ;
|
||||||
|
Tag = {s : Str} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
InflectionN = \noun -> nounInflection "n" "Főnév" noun ;
|
||||||
|
InflectionN2 = \noun -> nounInflection "n2" "Kétargumentumú főnév" noun ;
|
||||||
|
InflectionN3 = \noun -> nounInflection "n3" "Háromargumentumú főnév" noun ;
|
||||||
|
|
||||||
|
InflectionPN = \pn -> nameInflection "pn" "Tulajdonnév" pn ;
|
||||||
|
InflectionLN = \ln -> nameInflection "ln" "Helynév" ln ;
|
||||||
|
InflectionGN = \gn -> nameInflection "gn" "Keresztnév" gn ;
|
||||||
|
InflectionSN = \sn -> nameInflection "sn" "Vezetéknév" sn ;
|
||||||
|
|
||||||
|
InflectionA = \adj -> adjectiveInflection "a" "Melléknév" adj ;
|
||||||
|
InflectionA2 = \adj -> adjectiveInflection "a2" "Vonzatos melléknév" adj ;
|
||||||
|
|
||||||
|
InflectionV = \v -> verbInflection "v" "Ige" v ;
|
||||||
|
InflectionVS = \v -> verbInflection "vs" "Mondatvonzatú ige" v ;
|
||||||
|
InflectionVQ = \v -> verbInflection "vq" "Kérdő mondatvonzatú ige" v ;
|
||||||
|
InflectionVA = \v -> verbInflection "va" "Melléknévi vonzatú ige" v ;
|
||||||
|
|
||||||
|
InflectionV2 = \v -> verb2Inflection "v2" "Tárgyas ige" v ;
|
||||||
|
InflectionVV = \v -> verb2Inflection "vv" "Igenévi vonzatú ige" v ;
|
||||||
|
InflectionV3 = \v -> verb2Inflection "v3" "Háromargumentumú ige" v ;
|
||||||
|
InflectionV2V = \v -> verb2Inflection "v2v" "Tárgyas és igenévi vonzatú ige" v ;
|
||||||
|
InflectionV2S = \v -> verb2Inflection "v2s" "Tárgyas és mondatvonzatú ige" v ;
|
||||||
|
InflectionV2Q = \v -> verb2Inflection "v2q" "Tárgyas és kérdő mondatvonzatú ige" v ;
|
||||||
|
InflectionV2A = \v -> verb2Inflection "v2a" "Tárgyas és melléknévi vonzatú ige" v ;
|
||||||
|
|
||||||
|
InflectionAdv = \adv -> adverbInflection "adv" "Határozószó" adv.s ;
|
||||||
|
InflectionAdV = \adv -> adverbInflection "adv" "Igei határozószó" adv.s ;
|
||||||
|
InflectionAdA = \adv -> adverbInflection "adv" "Melléknévi határozószó" adv.s ;
|
||||||
|
InflectionAdN = \adv -> adverbInflection "adv" "Főnévi határozószó" adv.s ;
|
||||||
|
|
||||||
|
InflectionPrep = \prep -> {
|
||||||
|
t = "prep" ;
|
||||||
|
s1 = heading1 "Névutó" ;
|
||||||
|
s2 = frameTable (
|
||||||
|
tr (th "előtag" ++ td prep.pr) ++
|
||||||
|
tr (th "eset" ++ td (caseName prep.c)) ++
|
||||||
|
tr (th "névutó" ++ td prep.s))
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
NoDefinition t = {s = t.s} ;
|
||||||
|
MkDefinition t d = {s = "<p><b>Meghatározás:</b>" ++ t.s ++ d.s ++ "</p>"} ;
|
||||||
|
MkDefinitionEx t d e =
|
||||||
|
{s = "<p><b>Meghatározás:</b>" ++ t.s ++ d.s ++
|
||||||
|
"</p><p><b>Példa:</b>" ++ e.s ++ "</p>"} ;
|
||||||
|
|
||||||
|
lin
|
||||||
|
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ paragraph e.s} ;
|
||||||
|
MkTag i = {s = i.t} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
nounInflection : Str -> Str -> Noun -> {t : Str; s1,s2 : Str} =
|
||||||
|
\tag,title,noun -> {
|
||||||
|
t = tag ;
|
||||||
|
s1 = heading1 title ;
|
||||||
|
s2 = caseTable2 (\n,c -> nounCase noun n c) ++
|
||||||
|
heading2 "Birtokos alakok" ++
|
||||||
|
possTable noun
|
||||||
|
} ;
|
||||||
|
|
||||||
|
nameInflection : Str -> Str -> NounPhrase -> {t : Str; s1,s2 : Str} =
|
||||||
|
\tag,title,np -> {
|
||||||
|
t = tag ;
|
||||||
|
s1 = heading1 title ;
|
||||||
|
s2 = frameTable (
|
||||||
|
tr (th "alanyeset" ++ td (np.s ! NoPoss ! Nom)) ++
|
||||||
|
tr (th "tárgyeset" ++ td (np.s ! NoPoss ! Acc)) ++
|
||||||
|
tr (th "részes eset" ++ td (np.s ! NoPoss ! Dat)) ++
|
||||||
|
tr (th "inessivus" ++ td (np.s ! NoPoss ! Ine)) ++
|
||||||
|
tr (th "elativus" ++ td (np.s ! NoPoss ! Ela)) ++
|
||||||
|
tr (th "allativus" ++ td (np.s ! NoPoss ! All)) ++
|
||||||
|
tr (th "adessivus" ++ td (np.s ! NoPoss ! Ade)) ++
|
||||||
|
tr (th "ablativus" ++ td (np.s ! NoPoss ! Abl)) ++
|
||||||
|
tr (th "superessivus" ++ td (np.s ! NoPoss ! Sup)) ++
|
||||||
|
tr (th "instrumentalis" ++ td (np.s ! NoPoss ! Ins)) ++
|
||||||
|
tr (th "translativus" ++ td (np.s ! NoPoss ! Tra)))
|
||||||
|
} ;
|
||||||
|
|
||||||
|
adjectiveInflection : Str -> Str -> Adjective -> {t : Str; s1,s2 : Str} =
|
||||||
|
\tag,title,adj -> {
|
||||||
|
t = tag ;
|
||||||
|
s1 = heading1 title ;
|
||||||
|
s2 = heading2 "Alapfok" ++
|
||||||
|
caseTable2 (\n,c -> adjCase adj Posit n c) ++
|
||||||
|
heading2 "Középfok" ++
|
||||||
|
caseTable2 (\n,c -> adjCase adj Compar n c) ++
|
||||||
|
heading2 "Felsőfok" ++
|
||||||
|
caseTable2 (\n,c -> adjCase adj Superl n c)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
adverbInflection : Str -> Str -> Str -> {t : Str; s1,s2 : Str} =
|
||||||
|
\tag,title,s -> {
|
||||||
|
t = tag ;
|
||||||
|
s1 = heading1 title ;
|
||||||
|
s2 = paragraph s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
verbInflection : Str -> Str -> Verb -> {t : Str; s1,s2 : Str} =
|
||||||
|
\tag,title,v -> {
|
||||||
|
t = tag ;
|
||||||
|
s1 = heading1 title ;
|
||||||
|
s2 = verbTable (\vf -> v.s ! vf)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
verb2Inflection : Str -> Str -> Verb2 -> {t : Str; s1,s2 : Str} =
|
||||||
|
\tag,title,v -> {
|
||||||
|
t = tag ;
|
||||||
|
s1 = heading1 title ;
|
||||||
|
s2 = paragraph ("vonzat esete: " ++ caseName v.c2) ++
|
||||||
|
heading2 "Határozatlan ragozás" ++
|
||||||
|
verbTable (\vf -> v.s ! Indef ! vf) ++
|
||||||
|
heading2 "Határozott ragozás" ++
|
||||||
|
verbTable (\vf -> v.s ! Def ! vf)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
caseTable2 : (Number -> Case -> Str) -> Str =
|
||||||
|
\forms -> frameTable (
|
||||||
|
tr (th "" ++ th "egyes szám" ++ th "többes szám") ++
|
||||||
|
tr (th "alanyeset" ++ td (forms Sg Nom) ++ td (forms Pl Nom)) ++
|
||||||
|
tr (th "tárgyeset" ++ td (forms Sg Acc) ++ td (forms Pl Acc)) ++
|
||||||
|
tr (th "részes eset" ++ td (forms Sg Dat) ++ td (forms Pl Dat)) ++
|
||||||
|
tr (th "inessivus" ++ td (forms Sg Ine) ++ td (forms Pl Ine)) ++
|
||||||
|
tr (th "elativus" ++ td (forms Sg Ela) ++ td (forms Pl Ela)) ++
|
||||||
|
tr (th "allativus" ++ td (forms Sg All) ++ td (forms Pl All)) ++
|
||||||
|
tr (th "adessivus" ++ td (forms Sg Ade) ++ td (forms Pl Ade)) ++
|
||||||
|
tr (th "ablativus" ++ td (forms Sg Abl) ++ td (forms Pl Abl)) ++
|
||||||
|
tr (th "superessivus" ++ td (forms Sg Sup) ++ td (forms Pl Sup)) ++
|
||||||
|
tr (th "instrumentalis" ++ td (forms Sg Ins) ++ td (forms Pl Ins)) ++
|
||||||
|
tr (th "translativus" ++ td (forms Sg Tra) ++ td (forms Pl Tra)))
|
||||||
|
;
|
||||||
|
|
||||||
|
possTable : Noun -> Str =
|
||||||
|
\noun -> frameTable (
|
||||||
|
tr (th "" ++ th "birtok egyes szám" ++ th "birtok többes szám") ++
|
||||||
|
tr (th "1. személy egyes szám" ++ td (possForm noun Sg P1 Sg) ++ td (possForm noun Pl P1 Sg)) ++
|
||||||
|
tr (th "2. személy egyes szám" ++ td (possForm noun Sg P2 Sg) ++ td (possForm noun Pl P2 Sg)) ++
|
||||||
|
tr (th "3. személy egyes szám" ++ td (possForm noun Sg P3 Sg) ++ td (possForm noun Pl P3 Sg)) ++
|
||||||
|
tr (th "1. személy többes szám" ++ td (possForm noun Sg P1 Pl) ++ td (possForm noun Pl P1 Pl)) ++
|
||||||
|
tr (th "2. személy többes szám" ++ td (possForm noun Sg P2 Pl) ++ td (possForm noun Pl P2 Pl)) ++
|
||||||
|
tr (th "3. személy többes szám" ++ td (possForm noun Sg P3 Pl) ++ td (possForm noun Pl P3 Pl)))
|
||||||
|
;
|
||||||
|
|
||||||
|
verbTable : (VForm -> Str) -> Str =
|
||||||
|
\forms ->
|
||||||
|
heading2 "Főnévi igenév" ++
|
||||||
|
paragraph (forms VInf) ++
|
||||||
|
heading2 "Jelen idő" ++
|
||||||
|
personNumberTable (\p,n -> forms (VPres p n)) ++
|
||||||
|
heading2 "Múlt idő" ++
|
||||||
|
personNumberTable (\p,n -> forms (VPast p n)) ;
|
||||||
|
|
||||||
|
personNumberTable : (Person -> Number -> Str) -> Str =
|
||||||
|
\forms -> frameTable (
|
||||||
|
tr (th "" ++ th "egyes szám" ++ th "többes szám") ++
|
||||||
|
tr (th "1. személy" ++ td (forms P1 Sg) ++ td (forms P1 Pl)) ++
|
||||||
|
tr (th "2. személy" ++ td (forms P2 Sg) ++ td (forms P2 Pl)) ++
|
||||||
|
tr (th "3. személy" ++ td (forms P3 Sg) ++ td (forms P3 Pl)))
|
||||||
|
;
|
||||||
|
|
||||||
|
nounCase : Noun -> Number -> Case -> Str =
|
||||||
|
\noun,n,c -> caseFromStem glue noun c n ;
|
||||||
|
|
||||||
|
adjCase : Adjective -> Degree -> Number -> Case -> Str =
|
||||||
|
\adj,d,n,c -> caseFromStem glue {s = adj.s ! d ; h = adj.h ; g = NonHuman} c n ;
|
||||||
|
|
||||||
|
possForm : Noun -> Number -> Person -> Number -> Str =
|
||||||
|
\noun,possd,person,possr ->
|
||||||
|
let det : Determiner = {
|
||||||
|
s = \\_ => [] ;
|
||||||
|
sp = \\_ => [] ;
|
||||||
|
n = possd ;
|
||||||
|
dt = DetPoss (agr2pstem <person,possr>) ;
|
||||||
|
poss = possForms ! <person,possr> ;
|
||||||
|
caseagr = False
|
||||||
|
} ;
|
||||||
|
cn : CNoun = noun ** {compl = \\_,_ => [] ; postmod = []} ;
|
||||||
|
in caseFromPossStem cn det Nom ;
|
||||||
|
|
||||||
|
caseName : Case -> Str = \c ->
|
||||||
|
case c of {
|
||||||
|
Nom => "alanyeset" ;
|
||||||
|
Acc => "tárgyeset" ;
|
||||||
|
Dat => "részes eset" ;
|
||||||
|
Ine => "inessivus" ;
|
||||||
|
Ela => "elativus" ;
|
||||||
|
All => "allativus" ;
|
||||||
|
Ade => "adessivus" ;
|
||||||
|
Abl => "ablativus" ;
|
||||||
|
Sup => "superessivus" ;
|
||||||
|
Ins => "instrumentalis" ;
|
||||||
|
Tra => "translativus" ;
|
||||||
|
_ => case2str c
|
||||||
|
} ;
|
||||||
|
}
|
||||||
@@ -3,9 +3,362 @@
|
|||||||
concrete ExtendHun of Extend = CatHun
|
concrete ExtendHun of Extend = CatHun
|
||||||
-- ** ExtendFunctor - []
|
-- ** ExtendFunctor - []
|
||||||
-- with (Grammar=GrammarHun)
|
-- with (Grammar=GrammarHun)
|
||||||
** open Prelude, ResHun, NounHun in {
|
** open Prelude, ResHun, NounHun, VerbHun, AdjectiveHun in {
|
||||||
|
|
||||||
|
lincat
|
||||||
|
VPS = {s : Person => Number => Str} ;
|
||||||
|
[VPS] = {s1,s2 : Person => Number => Str} ;
|
||||||
|
VPI = SS ;
|
||||||
|
[VPI] = {s1,s2 : Str} ;
|
||||||
|
VPS2 = {s : ObjDef => Person => Number => Str ; c2 : Case} ;
|
||||||
|
[VPS2] = {s1,s2 : ObjDef => Person => Number => Str ; c2 : Case} ;
|
||||||
|
VPI2 = {s : ObjDef => Str ; c2 : Case} ;
|
||||||
|
[VPI2] = {s1,s2 : ObjDef => Str ; c2 : Case} ;
|
||||||
|
[Comp] = {s1,s2 : VForm => Str} ;
|
||||||
|
[Imp] = {s1,s2 : Number => Polarity => Str} ;
|
||||||
|
RNP = NounPhrase ;
|
||||||
|
RNPList = {s1,s2 : Possessor => Case => Str ; agr : Person*Number ; g : Gender ; postmod : Str} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
TPastSimple = {s = []} ** {t = Past} ; --# notpresent
|
TPastSimple = {s = []} ** {t = Past} ; --# notpresent
|
||||||
|
|
||||||
|
CompoundN n1 n2 =
|
||||||
|
n2 ** {s = \\nc => n1.s ! SgNom ++ BIND ++ n2.s ! nc} ;
|
||||||
|
|
||||||
|
GenModNP num np cn =
|
||||||
|
let det : Determiner = DetQuant DefArt num ;
|
||||||
|
pron : Pronoun = pronTable ! np.agr ;
|
||||||
|
in emptyNP ** cn ** det ** {
|
||||||
|
s = \\_,c =>
|
||||||
|
np.s ! NoPoss ! Nom
|
||||||
|
++ np.postmod
|
||||||
|
++ caseFromPossStem cn (DetQuant (PossPron pron) num) c
|
||||||
|
++ cn.compl ! det.n ! c ;
|
||||||
|
agr = <P3,det.n> ;
|
||||||
|
objdef = Def ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
EmptyRelSlash cls = relSlash {s = \\_,_,_ => []} cls ;
|
||||||
|
|
||||||
|
UseDAP = DetNP ;
|
||||||
|
UseDAPMasc,
|
||||||
|
UseDAPFem = \dap -> DetNP dap ** {g = Human} ;
|
||||||
|
|
||||||
|
MkVPS t pol vp = {
|
||||||
|
s = \\p,n =>
|
||||||
|
t.s ++ pol.s ++ if_then_Pol pol.p [] "nem" ++
|
||||||
|
case t.t of {
|
||||||
|
Past => vp.s ! VPast p n ;
|
||||||
|
Fut => futureAux Indef p n ++ vp.s ! VInf ;
|
||||||
|
_ => vp.s ! VPres p n
|
||||||
|
} ++ vp.obj ++ vp.adv
|
||||||
|
} ;
|
||||||
|
|
||||||
|
BaseVPS x y = {
|
||||||
|
s1 = x.s ;
|
||||||
|
s2 = y.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConsVPS x xs = {
|
||||||
|
s1 = \\p,n => x.s ! p ! n ++ bindComma ++ xs.s1 ! p ! n ;
|
||||||
|
s2 = xs.s2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConjVPS conj xs = {
|
||||||
|
s = \\p,n => xs.s1 ! p ! n ++ conj.s2 ++ xs.s2 ! p ! n
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PredVPS np vps = {
|
||||||
|
s = linNP np ++ vps.s ! np.agr.p1 ! np.agr.p2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
MkVPI vp = {s = infVP vp} ;
|
||||||
|
|
||||||
|
BaseVPI x y = {
|
||||||
|
s1 = x.s ;
|
||||||
|
s2 = y.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConsVPI x xs = {
|
||||||
|
s1 = x.s ++ bindComma ++ xs.s1 ;
|
||||||
|
s2 = xs.s2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConjVPI conj xs = {
|
||||||
|
s = xs.s1 ++ conj.s2 ++ xs.s2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ComplVPIVV vv vpi =
|
||||||
|
useV (vv ** {s = vv.s ! Indef}) ** {
|
||||||
|
adv = vpi.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
MkVPS2 t pol vps = {
|
||||||
|
s = \\od,p,n =>
|
||||||
|
t.s ++ pol.s ++ if_then_Pol pol.p [] "nem" ++
|
||||||
|
case t.t of {
|
||||||
|
Past => vps.s ! od ! VPast p n ;
|
||||||
|
Fut => futureAux od p n ++ vps.s ! od ! VInf ;
|
||||||
|
_ => vps.s ! od ! VPres p n
|
||||||
|
} ++ vps.adv ;
|
||||||
|
c2 = vps.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ComplVPS2 vps np = {
|
||||||
|
s = \\p,n => vps.s ! np.objdef ! p ! n ++ np.s ! NoPoss ! vps.c2 ++ np.postmod
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ReflVPS2 vps rnp = {
|
||||||
|
s = \\p,n => vps.s ! rnp.objdef ! p ! n ++ rnp.s ! NoPoss ! vps.c2 ++ rnp.postmod
|
||||||
|
} ;
|
||||||
|
|
||||||
|
BaseVPS2 x y = {
|
||||||
|
s1 = x.s ;
|
||||||
|
s2 = y.s ;
|
||||||
|
c2 = y.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConsVPS2 x xs = {
|
||||||
|
s1 = \\od,p,n => x.s ! od ! p ! n ++ bindComma ++ xs.s1 ! od ! p ! n ;
|
||||||
|
s2 = xs.s2 ;
|
||||||
|
c2 = xs.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConjVPS2 conj xs = {
|
||||||
|
s = \\od,p,n => xs.s1 ! od ! p ! n ++ conj.s2 ++ xs.s2 ! od ! p ! n ;
|
||||||
|
c2 = xs.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
MkVPI2 vps = {
|
||||||
|
s = \\_ => infVPSlash vps ;
|
||||||
|
c2 = vps.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ComplVPI2 vpi np = {
|
||||||
|
s = vpi.s ! np.objdef ++ np.s ! NoPoss ! vpi.c2 ++ np.postmod
|
||||||
|
} ;
|
||||||
|
|
||||||
|
BaseVPI2 x y = {
|
||||||
|
s1 = x.s ;
|
||||||
|
s2 = y.s ;
|
||||||
|
c2 = y.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConsVPI2 x xs = {
|
||||||
|
s1 = \\od => x.s ! od ++ bindComma ++ xs.s1 ! od ;
|
||||||
|
s2 = xs.s2 ;
|
||||||
|
c2 = xs.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConjVPI2 conj xs = {
|
||||||
|
s = \\od => xs.s1 ! od ++ conj.s2 ++ xs.s2 ! od ;
|
||||||
|
c2 = xs.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
BaseComp x y = {
|
||||||
|
s1 = x.s ;
|
||||||
|
s2 = y.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConsComp x xs = {
|
||||||
|
s1 = \\vf => x.s ! vf ++ bindComma ++ xs.s1 ! vf ;
|
||||||
|
s2 = xs.s2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConjComp conj xs = UseCopula ** {
|
||||||
|
s = \\vf => xs.s1 ! vf ++ conj.s2 ++ xs.s2 ! vf
|
||||||
|
} ;
|
||||||
|
|
||||||
|
BaseImp x y = {
|
||||||
|
s1 = x.s ;
|
||||||
|
s2 = y.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConsImp x xs = {
|
||||||
|
s1 = \\n,p => x.s ! n ! p ++ bindComma ++ xs.s1 ! n ! p ;
|
||||||
|
s2 = xs.s2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConjImp conj xs = {
|
||||||
|
s = \\n,p => xs.s1 ! n ! p ++ conj.s2 ++ xs.s2 ! n ! p
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PresPartAP vp = emptyAP ** {
|
||||||
|
s = \\_,_ => vp.obj ++ vp.adv ++ vp.s ! VPresPart
|
||||||
|
} ;
|
||||||
|
|
||||||
|
EmbedPresPart vp = {s = infVP vp} ;
|
||||||
|
|
||||||
|
PastPartAP vps = emptyAP ** {
|
||||||
|
s = \\_,_ => vps.adv ++ vps.s ! Indef ! VAdvPart
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PastPartAgentAP vps np = emptyAP ** {
|
||||||
|
s = \\_,_ =>
|
||||||
|
vps.adv ++ vps.s ! Indef ! VAdvPart
|
||||||
|
++ applyAdp (caseAdp Nom "által") np
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PassVPSlash vps = passiveVP vps [] ;
|
||||||
|
|
||||||
|
PassAgentVPSlash vps np =
|
||||||
|
passiveVP vps (applyAdp (caseAdp Nom "által") np) ;
|
||||||
|
|
||||||
|
ProgrVPSlash vps = vps ;
|
||||||
|
|
||||||
|
ComplBareVS vs s = useV vs ** {
|
||||||
|
adv = s.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ReflRNP vps rnp = insertObj vps rnp ;
|
||||||
|
|
||||||
|
ReflPron = indeclNP "magát" ** {objdef = Def ; g = Human} ;
|
||||||
|
|
||||||
|
ReflPoss num cn = DetCN (DetQuant DefArt num) cn ;
|
||||||
|
|
||||||
|
PredetRNP predet rnp = rnp ** {
|
||||||
|
s = \\p,c => predet.s ++ rnp.s ! p ! c
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvRNP np prep rnp = np ** {
|
||||||
|
s = \\p,c => np.s ! p ! c ++ applyAdp prep rnp ;
|
||||||
|
postmod = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvRVP vp prep rnp = insertAdv vp {
|
||||||
|
s = applyAdp prep rnp
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdvRAP ap prep rnp = ap ** {
|
||||||
|
compl = \\n => ap.compl ! n ++ applyAdp prep rnp
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ReflA2RNP a2 rnp =
|
||||||
|
let ap : AP = ComplA2 a2 rnp in ap ;
|
||||||
|
|
||||||
|
PossPronRNP pron num cn rnp =
|
||||||
|
let det : Determiner = DetQuant (PossPron pron) num
|
||||||
|
in emptyNP ** cn ** det ** {
|
||||||
|
s = \\_,c =>
|
||||||
|
rnp.s ! NoPoss ! Nom
|
||||||
|
++ caseFromPossStem cn det c
|
||||||
|
++ cn.compl ! det.n ! c ;
|
||||||
|
agr = <P3,det.n> ;
|
||||||
|
objdef = Def ;
|
||||||
|
g = NonHuman
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Base_rr_RNP x y = {
|
||||||
|
s1 = x.s ;
|
||||||
|
s2 = y.s ;
|
||||||
|
agr = y.agr ;
|
||||||
|
g = y.g ;
|
||||||
|
postmod = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Base_nr_RNP x y = {
|
||||||
|
s1 = x.s ;
|
||||||
|
s2 = y.s ;
|
||||||
|
agr = y.agr ;
|
||||||
|
g = y.g ;
|
||||||
|
postmod = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
Base_rn_RNP x y = {
|
||||||
|
s1 = x.s ;
|
||||||
|
s2 = y.s ;
|
||||||
|
agr = y.agr ;
|
||||||
|
g = y.g ;
|
||||||
|
postmod = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ConjRNP conj xs = emptyNP ** {
|
||||||
|
s = \\p,c => xs.s1 ! p ! c ++ conj.s2 ++ xs.s2 ! p ! c ;
|
||||||
|
agr = <P3,conj.n> ;
|
||||||
|
objdef = Def ;
|
||||||
|
g = xs.g ;
|
||||||
|
postmod = [] ;
|
||||||
|
empty = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
GerundCN vp =
|
||||||
|
let gn : Str = infVP vp
|
||||||
|
in {
|
||||||
|
s = \\_ => gn ;
|
||||||
|
h = H_a ;
|
||||||
|
g = NonHuman ;
|
||||||
|
compl = \\_,_ => [] ;
|
||||||
|
postmod = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
GerundNP vp = MassNP (GerundCN vp) ;
|
||||||
|
|
||||||
|
GerundAdv vp = {
|
||||||
|
s = infVP vp ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
CompoundAP n a = emptyAP ** {
|
||||||
|
s = \\_,_ => n.s ! SgNom ++ a.s ! Posit ! SgNom
|
||||||
|
} ;
|
||||||
|
|
||||||
|
WithoutVP vp = {
|
||||||
|
s = infVP vp ++ "nélkül" ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ByVP vp = {
|
||||||
|
s = infVP vp ++ "által" ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
InOrderToVP vp = {
|
||||||
|
s = infVP vp ++ "céljából" ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ApposNP np1 np2 = np1 ** {
|
||||||
|
s = \\p,c => np1.s ! p ! c ++ bindComma ++ np2.s ! NoPoss ! Nom ;
|
||||||
|
postmod = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdAdV ada adv = {
|
||||||
|
s = ada.s ++ adv.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
UttAdV adv = {
|
||||||
|
s = adv.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PositAdVAdj adj = {
|
||||||
|
s = adj.s ! Posit ! SgNom
|
||||||
|
} ;
|
||||||
|
|
||||||
|
UttVPShort vp = {
|
||||||
|
s = infVP vp
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ComplSlashPartLast vps np = insertObj vps np ;
|
||||||
|
|
||||||
|
iFem_Pron = pronTable ! <P1,Sg> ** {g = Human} ;
|
||||||
|
theyFem_Pron = pronTable ! <P3,Pl> ** {g = Human} ;
|
||||||
|
theyNeutr_Pron = pronTable ! <P3,Pl> ;
|
||||||
|
weFem_Pron = pronTable ! <P1,Pl> ** {g = Human} ;
|
||||||
|
youFem_Pron = pronTable ! <P2,Sg> ** {g = Human} ;
|
||||||
|
youPlFem_Pron = pronTable ! <P2,Pl> ** {g = Human} ;
|
||||||
|
youPolFem_Pron = pronTable ! <P2,Sg> ** {g = Human} ;
|
||||||
|
youPolPlFem_Pron = pronTable ! <P2,Pl> ** {g = Human} ;
|
||||||
|
youPolPl_Pron = pronTable ! <P2,Pl> ** {g = Human} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
passiveVP : VPSlash -> Str -> VP = \vps,agent ->
|
||||||
|
lin VP (useV (copula ** {
|
||||||
|
s = \\vf => case vf of {
|
||||||
|
VPres P3 _ => [] ;
|
||||||
|
_ => copula.s ! vf
|
||||||
|
}
|
||||||
|
}) ** {
|
||||||
|
adv = vps.adv ++ vps.s ! Indef ! VAdvPart ++ agent
|
||||||
|
}) ;
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ concrete GrammarHun of Grammar =
|
|||||||
TextX - [Adv],
|
TextX - [Adv],
|
||||||
StructuralHun,
|
StructuralHun,
|
||||||
IdiomHun,
|
IdiomHun,
|
||||||
TenseX - [Adv]
|
TenseX - [Adv],
|
||||||
|
NamesHun
|
||||||
** {
|
** {
|
||||||
|
|
||||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||||
|
|||||||
@@ -44,4 +44,51 @@ concrete IdiomHun of Idiom = CatHun ** open Prelude, ResHun, VerbHun, NounHun, S
|
|||||||
SelfNP : NP -> NP ; -- the president himself (is at home)
|
SelfNP : NP -> NP ; -- the president himself (is at home)
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
lin
|
||||||
|
ImpersCl vp = predVP emptyNP vp ;
|
||||||
|
|
||||||
|
ExistNP np = existNP np [] ;
|
||||||
|
|
||||||
|
ExistNPAdv np adv = existNP np adv.s ;
|
||||||
|
|
||||||
|
ExistIP ip = {
|
||||||
|
s = \\t,a,p =>
|
||||||
|
ip.s ! NoPoss ! Nom
|
||||||
|
++ if_then_Pol p [] "nem"
|
||||||
|
++ copula.s ! case t of {
|
||||||
|
Past => VPast P3 ip.agr.p2 ;
|
||||||
|
_ => VPres P3 ip.agr.p2
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ExistIPAdv ip adv = {
|
||||||
|
s = \\t,a,p =>
|
||||||
|
ip.s ! NoPoss ! Nom
|
||||||
|
++ adv.s
|
||||||
|
++ if_then_Pol p [] "nem"
|
||||||
|
++ copula.s ! case t of {
|
||||||
|
Past => VPast P3 ip.agr.p2 ;
|
||||||
|
_ => VPres P3 ip.agr.p2
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ProgrVP vp = vp ;
|
||||||
|
|
||||||
|
ImpPl1 vp = {
|
||||||
|
s = "próbáljunk" ++ infVP vp
|
||||||
|
} ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
existNP : NounPhrase -> Str -> ResHun.ClSlash = \np,adv -> {
|
||||||
|
s = \\t,_,p =>
|
||||||
|
if_then_Pol p [] "nem"
|
||||||
|
++ copula.s ! case t of {
|
||||||
|
Past => VPast P3 np.agr.p2 ;
|
||||||
|
_ => VPres P3 np.agr.p2
|
||||||
|
}
|
||||||
|
++ linNP np
|
||||||
|
++ adv ;
|
||||||
|
c2 = Acc
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
46
src/hungarian/IrregHun.gf
Normal file
46
src/hungarian/IrregHun.gf
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
--# -path=.:prelude:../abstract:../common
|
||||||
|
concrete IrregHun of IrregHunAbs = CatHun ** open ParadigmsHun in {
|
||||||
|
lin
|
||||||
|
áll_V = mkV "állok" "állsz" "áll" "állunk" "álltok" "állnak"
|
||||||
|
"álltam" "álltál" "állt" "álltunk" "álltatok" "álltak"
|
||||||
|
"állni" "álló" "állva" ;
|
||||||
|
átugrik_V = mkV "átugrom" "átugrasz" "átugrik" "átugrunk" "átugrotok" "átugranak"
|
||||||
|
"átugrottam" "átugrottál" "átugrott" "átugrottunk" "átugrottatok" "átugrottak"
|
||||||
|
"átugrani" "átugrikó" "átugrikva" ;
|
||||||
|
bovelkedik_V = mkV "bővelkedem" "bővelkedsz" "bővelkedik" "bővelkedünk" "bővelkedtek" "bővelkednek"
|
||||||
|
"bővelkedtem" "bővelkedtél" "bővelkedett" "bővelkedtünk" "bővelkedtetek" "bővelkedtek"
|
||||||
|
"bővelkedni" "bővelkedő" "bővelkedve" ;
|
||||||
|
csatlakozik_V = mkV "csatlakozom" "csatlakozol" "csatlakozik" "csatlakozunk" "csatlakoztok" "csatlakoznak"
|
||||||
|
"csatlakoztam" "csatlakoztál" "csatlakozott" "csatlakoztunk" "csatlakoztatok" "csatlakoztak"
|
||||||
|
"csatlakozni" "csatlakozó" "csatlakozva" ;
|
||||||
|
csökken_V = mkV "csökkenek" "csökkensz" "csökken" "csökkenünk" "csökkentek" "csökkennek"
|
||||||
|
"csökkentem" "csökkentél" "csökkent" "csökkentünk" "csökkentetek" "csökkentek"
|
||||||
|
"csökkenni" "csökkenő" "csökkenve" ;
|
||||||
|
dolgozik_V = mkV "dolgozom" "dolgozol" "dolgozik" "dolgozunk" "dolgoztok" "dolgoznak"
|
||||||
|
"dolgoztam" "dolgoztál" "dolgozott" "dolgoztunk" "dolgoztatok" "dolgoztak"
|
||||||
|
"dolgozni" "dolgozó" "dolgozva" ;
|
||||||
|
elvet_V = mkV "elvetek" "elvetsz" "elvet" "elvetünk" "elvettek" "elvetnek"
|
||||||
|
"elvetettem" "elvetettél" "elvetett" "elvetettünk" "elvetettetek" "elvetettek"
|
||||||
|
"elvetni" "elvető" "elvetve" ;
|
||||||
|
eszik_V = mkV "eszem" "eszel" "eszik" "eszünk" "esztek" "esznek"
|
||||||
|
"ettem" "ettél" "evett" "ettünk" "ettetek" "ettek"
|
||||||
|
"enni" "evő" "éve" ;
|
||||||
|
fut_V = mkV "futok" "futsz" "fut" "futunk" "futtok" "futnak"
|
||||||
|
"futottam" "futottál" "futott" "futottunk" "futottatok" "futottak"
|
||||||
|
"futni" "futó" "futva" ;
|
||||||
|
jár_V = mkV "járok" "jársz" "jár" "járunk" "jártok" "járnak"
|
||||||
|
"jártam" "jártál" "járt" "jártunk" "jártatok" "jártak"
|
||||||
|
"járni" "járó" "járva" ;
|
||||||
|
küld_V = mkV "küldök" "küldesz" "küld" "küldünk" "küldötök" "küldenek"
|
||||||
|
"küldtem" "küldtél" "küldött" "küldtünk" "küldtetek" "küldtek"
|
||||||
|
"küldeni" "küldő" "küldve" ;
|
||||||
|
meglátogat_V = mkV "meglátogatok" "meglátogatsz" "meglátogat" "meglátogatunk" "meglátogattok" "meglátogatnak"
|
||||||
|
"meglátogattam" "meglátogattál" "meglátogatott" "meglátogattunk" "meglátogattatok" "meglátogattak"
|
||||||
|
"meglátogatni" "meglátogató" "meglátogatva" ;
|
||||||
|
tud_V = mkV "tudok" "tudsz" "tud" "tudunk" "tudtok" "tudnak"
|
||||||
|
"tudtam" "tudtál" "tudott" "tudtunk" "tudtatok" "tudtak"
|
||||||
|
"tudni" "tudó" "tudva" ;
|
||||||
|
úszik_V = mkV "úszom" "úszol" "úszik" "úszunk" "úsztok" "úsznak"
|
||||||
|
"úsztam" "úsztál" "úszott" "úsztunk" "úsztatok" "úsztak"
|
||||||
|
"úszni" "úszó" "úszva" ;
|
||||||
|
}
|
||||||
17
src/hungarian/IrregHunAbs.gf
Normal file
17
src/hungarian/IrregHunAbs.gf
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
abstract IrregHunAbs = Cat ** {
|
||||||
|
fun
|
||||||
|
áll_V : V ;
|
||||||
|
átugrik_V : V ;
|
||||||
|
bovelkedik_V : V ;
|
||||||
|
csatlakozik_V : V ;
|
||||||
|
csökken_V : V ;
|
||||||
|
dolgozik_V : V ;
|
||||||
|
elvet_V : V ;
|
||||||
|
eszik_V : V ;
|
||||||
|
fut_V : V ;
|
||||||
|
jár_V : V ;
|
||||||
|
küld_V : V ;
|
||||||
|
meglátogat_V : V ;
|
||||||
|
tud_V : V ;
|
||||||
|
úszik_V : V ;
|
||||||
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
concrete LangHun of Lang =
|
concrete LangHun of Lang =
|
||||||
GrammarHun,
|
GrammarHun,
|
||||||
LexiconHun,
|
LexiconHun,
|
||||||
ConstructionHun ;
|
ConstructionHun,
|
||||||
|
DocumentationHun --# notpresent
|
||||||
|
;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
concrete LexiconHun of Lexicon = CatHun **
|
concrete LexiconHun of Lexicon = CatHun **
|
||||||
open ParadigmsHun, ParamHun, Prelude in {
|
open ParadigmsHun, ParamHun, IrregHun, Prelude in {
|
||||||
|
|
||||||
----
|
----
|
||||||
-- A
|
-- A
|
||||||
@@ -19,7 +19,7 @@ lin art_N = mkN "művészet" "művészetet" ;
|
|||||||
----
|
----
|
||||||
-- B
|
-- B
|
||||||
|
|
||||||
lin baby_N = mkN "bébi" "bébit" ;
|
lin baby_N = humanN (mkN "bébi" "bébit") ;
|
||||||
-- lin back_N = mkN "" ;
|
-- lin back_N = mkN "" ;
|
||||||
lin bad_A = mkA "rossz" ;
|
lin bad_A = mkA "rossz" ;
|
||||||
lin bank_N = mkN "bank" "bankot" ;
|
lin bank_N = mkN "bank" "bankot" ;
|
||||||
@@ -65,7 +65,7 @@ lin cat_N = mkN "macska" "macskát";
|
|||||||
lin ceiling_N = roof_N ;
|
lin ceiling_N = roof_N ;
|
||||||
lin chair_N = mkN "szék" "széket";
|
lin chair_N = mkN "szék" "széket";
|
||||||
lin cheese_N = mkN "sajt" "sajtot" ;
|
lin cheese_N = mkN "sajt" "sajtot" ;
|
||||||
lin child_N = mkN "gyerek" "gyereket" ;
|
lin child_N = humanN (mkN "gyerek" "gyereket") ;
|
||||||
lin church_N = mkN "templom" "templomot" ;
|
lin church_N = mkN "templom" "templomot" ;
|
||||||
lin city_N = mkN "város" "várost" ;
|
lin city_N = mkN "város" "várost" ;
|
||||||
lin clean_A = mkA "tiszta" ;
|
lin clean_A = mkA "tiszta" ;
|
||||||
@@ -92,7 +92,7 @@ lin day_N = mkN "nap" "napot" ;
|
|||||||
-- lin dirty_A = mkA "" ;
|
-- lin dirty_A = mkA "" ;
|
||||||
-- lin distance_N3 = mkN "" ;
|
-- lin distance_N3 = mkN "" ;
|
||||||
-- lin do_V2 = mkV2 do_V ;
|
-- lin do_V2 = mkV2 do_V ;
|
||||||
lin doctor_N = mkN "orvos" "orvost";
|
lin doctor_N = humanN (mkN "orvos" "orvost");
|
||||||
lin dog_N = mkN "kutya" "kutyát";
|
lin dog_N = mkN "kutya" "kutyát";
|
||||||
lin door_N = mkN "ajtó" "ajtót" ;
|
lin door_N = mkN "ajtó" "ajtót" ;
|
||||||
-- lin drink_V2 = mkV2 "" ;
|
-- lin drink_V2 = mkV2 "" ;
|
||||||
@@ -105,7 +105,7 @@ lin door_N = mkN "ajtó" "ajtót" ;
|
|||||||
|
|
||||||
lin ear_N = mkN "fül" "fület";
|
lin ear_N = mkN "fül" "fület";
|
||||||
lin earth_N = mkN "föld" "földet";
|
lin earth_N = mkN "föld" "földet";
|
||||||
-- lin eat_V2 = mkV2 "" ;
|
lin eat_V2 = mkV2 eszik_V ;
|
||||||
lin egg_N = mkN "tojás" "tojást" ;
|
lin egg_N = mkN "tojás" "tojást" ;
|
||||||
lin empty_A = mkA "üres" ;
|
lin empty_A = mkA "üres" ;
|
||||||
lin enemy_N = mkN "ellenség" "ellenséget" ;
|
lin enemy_N = mkN "ellenség" "ellenséget" ;
|
||||||
@@ -139,7 +139,7 @@ lin forest_N = mkN "erdő" "erdőt" ;
|
|||||||
-- lin forget_V2 = mkV2 "" ;
|
-- lin forget_V2 = mkV2 "" ;
|
||||||
-- lin freeze_V = mkV "" ;
|
-- lin freeze_V = mkV "" ;
|
||||||
lin fridge_N = mkN "hűtő" "hűtőt" ;
|
lin fridge_N = mkN "hűtő" "hűtőt" ;
|
||||||
lin friend_N = mkN "barát" "barátot" ;
|
lin friend_N = humanN (mkN "barát" "barátot") ;
|
||||||
lin fruit_N = mkN "gyümölcs" "gyümölcsöt" "gyümölcsök" "gyümölcse" ; --TODO: plural PossPl2 fails "gyümölcseitek" instead of "gyümölcseitök", wovel harmony changing?
|
lin fruit_N = mkN "gyümölcs" "gyümölcsöt" "gyümölcsök" "gyümölcse" ; --TODO: plural PossPl2 fails "gyümölcseitek" instead of "gyümölcseitök", wovel harmony changing?
|
||||||
lin full_A = mkA "tele" ;
|
lin full_A = mkA "tele" ;
|
||||||
-- --lin fun_AV
|
-- --lin fun_AV
|
||||||
@@ -148,7 +148,7 @@ lin full_A = mkA "tele" ;
|
|||||||
-- G
|
-- G
|
||||||
|
|
||||||
lin garden_N = mkN "kert" "kertet" ;
|
lin garden_N = mkN "kert" "kertet" ;
|
||||||
lin girl_N = mkN "lány" "lányt";
|
lin girl_N = humanN (mkN "lány" "lányt");
|
||||||
-- lin give_V3 = mkV3 "" ;
|
-- lin give_V3 = mkV3 "" ;
|
||||||
lin glove_N = mkN "kesztyű" "kesztyűt" ;
|
lin glove_N = mkN "kesztyű" "kesztyűt" ;
|
||||||
-- lin go_V = mkV "" ;
|
-- lin go_V = mkV "" ;
|
||||||
@@ -179,7 +179,7 @@ lin horse_N = mkN "ló" "lovat";
|
|||||||
lin hot_A = mkA "forró" ;
|
lin hot_A = mkA "forró" ;
|
||||||
lin house_N = mkN "ház" "házat" ;
|
lin house_N = mkN "ház" "házat" ;
|
||||||
-- lin hunt_V2 = mkV2 "" ;
|
-- lin hunt_V2 = mkV2 "" ;
|
||||||
lin husband_N = mkN "férj" "férjet";
|
lin husband_N = humanN (mkN "férj" "férjet");
|
||||||
|
|
||||||
--------
|
--------
|
||||||
-- I - K
|
-- I - K
|
||||||
@@ -190,7 +190,7 @@ lin iron_N = mkN "vas" "vasat" ;
|
|||||||
-- lin john_PN = mkPN "" ;
|
-- lin john_PN = mkPN "" ;
|
||||||
-- lin jump_V = mkV "" ;
|
-- lin jump_V = mkV "" ;
|
||||||
-- lin kill_V2 = mkV2 "" ;
|
-- lin kill_V2 = mkV2 "" ;
|
||||||
lin king_N = mkN "király" "királyt" ;
|
lin king_N = humanN (mkN "király" "királyt") ;
|
||||||
lin knee_N = mkN "térd" "térdet";
|
lin knee_N = mkN "térd" "térdet";
|
||||||
-- lin know_V2 = mkV2 "" ;
|
-- lin know_V2 = mkV2 "" ;
|
||||||
-- lin know_VQ = mkVQ "" ;
|
-- lin know_VQ = mkVQ "" ;
|
||||||
@@ -223,12 +223,12 @@ lin love_N = mkN "szerelem" "szerelmet";
|
|||||||
----
|
----
|
||||||
-- M
|
-- M
|
||||||
|
|
||||||
lin man_N = mkN "férfi" "ak" harmA ; -- force plural allomorph and a-harmony
|
lin man_N = humanN (mkN "férfi" "ak" harmA) ; -- force plural allomorph and a-harmony
|
||||||
lin married_A2 = mkA2 "házas" Ins ;
|
lin married_A2 = mkA2 "házas" Ins ;
|
||||||
lin meat_N = mkN "hús" "húst";
|
lin meat_N = mkN "hús" "húst";
|
||||||
lin milk_N = mkN "tej" "tejet" ;
|
lin milk_N = mkN "tej" "tejet" ;
|
||||||
lin moon_N = mkN "hold" "holdat" ;
|
lin moon_N = mkN "hold" "holdat" ;
|
||||||
lin mother_N2 = mkN2 (mkN "anya" "anyát") ;
|
lin mother_N2 = mkN2 (humanN (mkN "anya" "anyát")) ;
|
||||||
lin mountain_N = mkN "hegy" "hegyet";
|
lin mountain_N = mkN "hegy" "hegyet";
|
||||||
lin mouth_N = mkN "száj" "szájat" ;
|
lin mouth_N = mkN "száj" "szájat" ;
|
||||||
lin music_N = mkN "zene" "zenét";
|
lin music_N = mkN "zene" "zenét";
|
||||||
@@ -259,12 +259,12 @@ lin paper_N = mkN "papír" "papírt" "papírok" "papírja" ;
|
|||||||
-- lin paris_PN = mkPN "Paris" ;
|
-- lin paris_PN = mkPN "Paris" ;
|
||||||
lin peace_N = mkN "béke" "békét";
|
lin peace_N = mkN "béke" "békét";
|
||||||
lin pen_N = mkN "toll" "tollat" ;
|
lin pen_N = mkN "toll" "tollat" ;
|
||||||
lin person_N = mkN "ember" "embert";
|
lin person_N = humanN (mkN "ember" "embert");
|
||||||
lin planet_N = mkN "bolygó" "bolygót" ;
|
lin planet_N = mkN "bolygó" "bolygót" ;
|
||||||
lin plastic_N = mkN "műanyag" "műanyagot" "műanyagok" "műanyaga" ;
|
lin plastic_N = mkN "műanyag" "műanyagot" "műanyagok" "műanyaga" ;
|
||||||
-- lin play_V = mkV "" ;
|
-- lin play_V = mkV "" ;
|
||||||
lin policeman_N = mkN "rendőr" "rendőrt"; --the police "rendőrség"
|
lin policeman_N = humanN (mkN "rendőr" "rendőrt"); --the police "rendőrség"
|
||||||
lin priest_N = mkN "pap" "papot" "papok" "papja" ;
|
lin priest_N = humanN (mkN "pap" "papot" "papok" "papja") ;
|
||||||
-- lin pull_V2 = mkV2 "" ;
|
-- lin pull_V2 = mkV2 "" ;
|
||||||
-- lin push_V2 = mkV2 "" ;
|
-- lin push_V2 = mkV2 "" ;
|
||||||
-- lin put_V2 = mkV2 "" ;
|
-- lin put_V2 = mkV2 "" ;
|
||||||
@@ -272,12 +272,12 @@ lin priest_N = mkN "pap" "papot" "papok" "papja" ;
|
|||||||
-- --------
|
-- --------
|
||||||
-- -- Q - R
|
-- -- Q - R
|
||||||
--
|
--
|
||||||
lin queen_N = mkN "kírálynő" "kírálynőt" ;
|
lin queen_N = humanN (mkN "kírálynő" "kírálynőt") ;
|
||||||
lin question_N = mkN "kérdés" "kérdést" ;
|
lin question_N = mkN "kérdés" "kérdést" ;
|
||||||
lin radio_N = mkN "rádió" "rádiót" ;
|
lin radio_N = mkN "rádió" "rádiót" ;
|
||||||
lin rain_N = mkN "eső" "esőt" ;
|
lin rain_N = mkN "eső" "esőt" ;
|
||||||
-- lin rain_V0 = mkV "" ;
|
-- lin rain_V0 = mkV "" ;
|
||||||
-- lin read_V2 = mkV2 "" ;
|
lin read_V2 = mkV2 "olvas" ;
|
||||||
lin ready_A = mkA "kész" ;
|
lin ready_A = mkA "kész" ;
|
||||||
lin reason_N = mkN "ok" "okot" "okok" "oka" ;
|
lin reason_N = mkN "ok" "okot" "okok" "oka" ;
|
||||||
lin red_A = mkA "piros" ;
|
lin red_A = mkA "piros" ;
|
||||||
@@ -363,7 +363,7 @@ lin table_N = mkN "asztal" "asztalt";
|
|||||||
lin tail_N = mkN "farok" "farkot";
|
lin tail_N = mkN "farok" "farkot";
|
||||||
lin talk_V3 = mkV3 "beszél" ;
|
lin talk_V3 = mkV3 "beszél" ;
|
||||||
-- lin teach_V2 = mkV2 "" ;
|
-- lin teach_V2 = mkV2 "" ;
|
||||||
lin teacher_N = mkN "tanár" "tanárt" ;
|
lin teacher_N = humanN (mkN "tanár" "tanárt") ;
|
||||||
lin television_N = mkN "tévé" "tévét" ; --also "televízió" but not used
|
lin television_N = mkN "tévé" "tévét" ; --also "televízió" but not used
|
||||||
lin thick_A = mkA "vastag" ;
|
lin thick_A = mkA "vastag" ;
|
||||||
lin thin_A = mkA "vekony" ;
|
lin thin_A = mkA "vekony" ;
|
||||||
@@ -401,14 +401,14 @@ lin water_N = mkN "víz" "vizet" ;
|
|||||||
lin wet_A = mkA "nedves" ;
|
lin wet_A = mkA "nedves" ;
|
||||||
lin white_A = mkA "fehér" ;
|
lin white_A = mkA "fehér" ;
|
||||||
lin wide_A = mkA "széles" ;
|
lin wide_A = mkA "széles" ;
|
||||||
lin wife_N = mkN "feleség" "feleséget" ;
|
lin wife_N = humanN (mkN "feleség" "feleséget") ;
|
||||||
-- lin win_V2 = mkV2 "" ;
|
-- lin win_V2 = mkV2 "" ;
|
||||||
lin wind_N = mkN "szél" "szelet" ;
|
lin wind_N = mkN "szél" "szelet" ;
|
||||||
lin window_N = mkN "ablak" "ablakot" "ablakok" "ablaka" ;
|
lin window_N = mkN "ablak" "ablakot" "ablakok" "ablaka" ;
|
||||||
lin wine_N = mkN "bor" "bort";
|
lin wine_N = mkN "bor" "bort";
|
||||||
lin wing_N = mkN "szárny" "szárnyat";
|
lin wing_N = mkN "szárny" "szárnyat";
|
||||||
-- lin wipe_V2 = mkV2 "" ;
|
-- lin wipe_V2 = mkV2 "" ;
|
||||||
lin woman_N = mkN "nő" "nőt" ;
|
lin woman_N = humanN (mkN "nő" "nőt") ;
|
||||||
-- lin wonder_VQ = mkVQ "" ;
|
-- lin wonder_VQ = mkVQ "" ;
|
||||||
lin wood_N = mkN "fa" "fát"; --same as tree
|
lin wood_N = mkN "fa" "fát"; --same as tree
|
||||||
lin worm_N = mkN "féreg" "férget"; --also "kukac"
|
lin worm_N = mkN "féreg" "férget"; --also "kukac"
|
||||||
|
|||||||
30
src/hungarian/NamesHun.gf
Normal file
30
src/hungarian/NamesHun.gf
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
concrete NamesHun of Names = CatHun ** open ResHun, Prelude in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
GivenName gn = gn ** {g = Human ; objdef = Def} ;
|
||||||
|
MaleSurname sn = sn ** {g = Human ; objdef = Def} ;
|
||||||
|
FemaleSurname sn = sn ** {g = Human ; objdef = Def} ;
|
||||||
|
PlSurname sn = sn ** {g = Human ; objdef = Def ; agr = <P3,Pl>} ;
|
||||||
|
|
||||||
|
FullName gn sn = emptyNP ** {
|
||||||
|
s = \\p,c => gn.s ! p ! Nom ++ sn.s ! p ! c ;
|
||||||
|
agr = <P3,Sg> ;
|
||||||
|
objdef = Def ;
|
||||||
|
g = Human ;
|
||||||
|
postmod = [] ;
|
||||||
|
empty = []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
UseLN ln = ln ** {objdef = Def} ;
|
||||||
|
PlainLN ln = ln ** {objdef = Def} ;
|
||||||
|
|
||||||
|
InLN ln = {
|
||||||
|
s = ln.s ! NoPoss ! Ine ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
AdjLN ap ln = ln ** {
|
||||||
|
s = \\p,c => ap.s ! Sg ! Nom ++ ln.s ! p ! c
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,6 +3,10 @@ concrete NounHun of Noun = CatHun ** open
|
|||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
hunV : pattern Str = #("a"|"e"|"i"|"o"|"u"|"ö"|"ü"|
|
||||||
|
"á"|"é"|"í"|"ó"|"ú"|"ő"|"ű") ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
--2 Noun phrases
|
--2 Noun phrases
|
||||||
@@ -65,7 +69,7 @@ concrete NounHun of Noun = CatHun ** open
|
|||||||
|
|
||||||
-- : NP -> RS -> NP ; -- Paris, which is here
|
-- : NP -> RS -> NP ; -- Paris, which is here
|
||||||
RelNP np rs = np ** {
|
RelNP np rs = np ** {
|
||||||
s = \\p,c => np.s ! p ! c ++ bindComma ++ rs.s ! np.agr.p2 ! c ;
|
s = \\p,c => np.s ! p ! c ++ bindComma ++ rs.s ! np.g ! np.agr.p2 ! c ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Determiners can form noun phrases directly.
|
-- Determiners can form noun phrases directly.
|
||||||
@@ -144,22 +148,24 @@ concrete NounHun of Noun = CatHun ** open
|
|||||||
-- : Numeral -> Card ;
|
-- : Numeral -> Card ;
|
||||||
NumNumeral num = num ;
|
NumNumeral num = num ;
|
||||||
|
|
||||||
{-
|
|
||||||
-- : AdN -> Card -> Card ;
|
-- : AdN -> Card -> Card ;
|
||||||
AdNum adn card = card ** { s = adn.s ++ card.s } ;
|
AdNum adn card = card ** { s = \\p => adn.s ++ card.s ! p } ;
|
||||||
|
|
||||||
-- : Digits -> Ord ;
|
-- : Digits -> Ord ;
|
||||||
OrdDigits digs = digs ** { s = digs.s ! NOrd } ;
|
OrdDigits digs = {
|
||||||
|
s = \\_,_ => digs.s ! NOrd ;
|
||||||
|
n = Sg
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : Numeral -> Ord ;
|
-- : Numeral -> Ord ;
|
||||||
OrdNumeral num = num ** {
|
OrdNumeral num = {
|
||||||
s = \\_ => num.ord
|
s = \\_,_ => num.s ! Attrib ;
|
||||||
|
n = Sg
|
||||||
} ;
|
} ;
|
||||||
-}
|
|
||||||
-- : A -> Ord ;
|
-- : A -> Ord ;
|
||||||
OrdSuperl a = {
|
OrdSuperl a = {
|
||||||
s = \\n,c =>
|
s = \\n,c =>
|
||||||
let adj : Noun = (a ** {s = a.s ! Superl}) in
|
let adj : Noun = (a ** {s = a.s ! Superl; g=NonHuman}) in
|
||||||
caseFromStem glue adj c n ;
|
caseFromStem glue adj c n ;
|
||||||
n = Sg -- ?? is this meaningful?
|
n = Sg -- ?? is this meaningful?
|
||||||
} ;
|
} ;
|
||||||
@@ -172,7 +178,7 @@ concrete NounHun of Noun = CatHun ** open
|
|||||||
-- : Quant
|
-- : Quant
|
||||||
DefArt = mkQuant "a" "a" ** {
|
DefArt = mkQuant "a" "a" ** {
|
||||||
s,
|
s,
|
||||||
sp = \\_,_ => pre {"a" ; "az" / v } ;
|
sp = \\_,_ => pre {"a" ; "az" / hunV } ;
|
||||||
dt = DefDet ;
|
dt = DefDet ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -185,7 +191,10 @@ concrete NounHun of Noun = CatHun ** open
|
|||||||
|
|
||||||
-- : Pron -> Quant
|
-- : Pron -> Quant
|
||||||
PossPron pron = pron ** {
|
PossPron pron = pron ** {
|
||||||
s,sp = \\_ => pron.s ;
|
s,sp = \\_,_ => case pron.agr of {
|
||||||
|
<P3,_> => "az" ++ pron.s ! Nom ;
|
||||||
|
_ => pre {"a" ; "az" / hunV} ++ pron.s ! Nom
|
||||||
|
} ;
|
||||||
dt = DetPoss (agr2pstem pron.agr) ;
|
dt = DetPoss (agr2pstem pron.agr) ;
|
||||||
caseagr = False ;
|
caseagr = False ;
|
||||||
} ;
|
} ;
|
||||||
@@ -200,7 +209,9 @@ concrete NounHun of Noun = CatHun ** open
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : N2 -> NP -> CN ;
|
-- : N2 -> NP -> CN ;
|
||||||
-- ComplN2 n2 np =
|
ComplN2 n2 np = (UseN n2) ** {
|
||||||
|
compl = \\n,c => np.s ! NoPoss ! Dat ++ np.postmod
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : N3 -> NP -> N2 ; -- distance from this city (to Paris)
|
-- : N3 -> NP -> N2 ; -- distance from this city (to Paris)
|
||||||
-- ComplN3 n3 np =
|
-- ComplN3 n3 np =
|
||||||
@@ -220,7 +231,7 @@ concrete NounHun of Noun = CatHun ** open
|
|||||||
|
|
||||||
-- : CN -> RS -> CN ;
|
-- : CN -> RS -> CN ;
|
||||||
RelCN cn rs = cn ** {
|
RelCN cn rs = cn ** {
|
||||||
compl = \\n,c => cn.compl ! n ! c ++ rs.s ! n ! c
|
compl = \\n,c => cn.compl ! n ! c ++ rs.s ! cn.g ! n ! c
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : CN -> Adv -> CN ;
|
-- : CN -> Adv -> CN ;
|
||||||
@@ -234,7 +245,9 @@ concrete NounHun of Noun = CatHun ** open
|
|||||||
-- to decide. Sentential complements are defined in VerbHun.
|
-- to decide. Sentential complements are defined in VerbHun.
|
||||||
|
|
||||||
-- : CN -> SC -> CN ; -- question where she sleeps
|
-- : CN -> SC -> CN ; -- question where she sleeps
|
||||||
-- SentCN cn sc = cn ** { } ;
|
SentCN cn sc = cn ** {
|
||||||
|
compl = \\n,c => cn.compl ! n ! c ++ sc.s
|
||||||
|
} ;
|
||||||
|
|
||||||
--2 Apposition
|
--2 Apposition
|
||||||
|
|
||||||
@@ -248,29 +261,37 @@ concrete NounHun of Noun = CatHun ** open
|
|||||||
--2 Possessive and partitive constructs
|
--2 Possessive and partitive constructs
|
||||||
|
|
||||||
-- : PossNP : CN -> NP -> CN ;
|
-- : PossNP : CN -> NP -> CN ;
|
||||||
-- PossNP cn np = cn ** {
|
PossNP cn np = cn ** {
|
||||||
-- compl = \\n,c => cn.compl ! n ! c ++ np.s ! Poss P3 n ! c -- TODO check
|
compl = \\n,c => cn.compl ! n ! c ++ np.s ! NoPoss ! Dat ++ np.postmod
|
||||||
-- } ;
|
} ;
|
||||||
|
|
||||||
-- : CN -> NP -> CN ; -- glass of wine / two kilos of red apples
|
-- : CN -> NP -> CN ; -- glass of wine / two kilos of red apples
|
||||||
-- PartNP cn np = cn ** {
|
PartNP cn np = cn ** {
|
||||||
-- } ;
|
compl = \\n,c => cn.compl ! n ! c ++ np.s ! NoPoss ! Nom ++ np.postmod
|
||||||
|
} ;
|
||||||
|
|
||||||
{-
|
-- : Det -> NP -> NP ; -- three of them, some of the boys
|
||||||
|
CountNP det np = emptyNP ** det ** {
|
||||||
|
s = \\_,c => det.sp ! c ++ np.s ! NoPoss ! Ela ++ np.postmod ;
|
||||||
|
agr = <P3,det.n> ;
|
||||||
|
objdef = dt2objdef det.dt
|
||||||
|
} ;
|
||||||
|
|
||||||
-- This is different from the partitive, as shown by many languages.
|
-- : Decimal -> MU -> NP ;
|
||||||
|
QuantityNP dec mu = indeclNP
|
||||||
-- : Det -> NP -> NP ;
|
(case mu.isPre of {
|
||||||
CountNP det np = np **
|
True => mu.s ++ dec.s ! NCard ;
|
||||||
{ } ; -- Nonsense for DefArt or IndefArt
|
False => dec.s ! NCard ++ mu.s
|
||||||
|
}) ** {
|
||||||
|
objdef = Def
|
||||||
|
} ;
|
||||||
|
|
||||||
--3 Conjoinable determiners and ones with adjectives
|
--3 Conjoinable determiners and ones with adjectives
|
||||||
|
|
||||||
-- : DAP -> AP -> DAP ; -- the large (one)
|
-- : DAP -> AP -> DAP ; -- the large (one)
|
||||||
AdjDAP dap ap = dap ** { } ;
|
AdjDAP dap ap = dap ;
|
||||||
|
|
||||||
-- : Det -> DAP ; -- this (or that)
|
-- : Det -> DAP ; -- this (or that)
|
||||||
DetDAP det = det ;
|
DetDAP det = det ;
|
||||||
-}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
resource NounMorphoHun = ParamHun ** open Prelude, Predef in {
|
resource NounMorphoHun = ParamHun ** open Prelude, Predef in {
|
||||||
|
|
||||||
oper
|
oper
|
||||||
Noun = {s : NumCaseStem => Str ; h : Harm} ;
|
Noun = {s : NumCaseStem => Str ; h : Harm ; g : Gender} ;
|
||||||
|
|
||||||
-- Paradigm functions
|
-- Paradigm functions
|
||||||
-- http://www.cse.chalmers.se/~aarne/articles/smart-preprint.pdf
|
-- http://www.cse.chalmers.se/~aarne/articles/smart-preprint.pdf
|
||||||
@@ -275,6 +275,7 @@ oper
|
|||||||
PossdSg_PossrSg1P2 => init possdSg_PossrSg1P2 ;
|
PossdSg_PossrSg1P2 => init possdSg_PossrSg1P2 ;
|
||||||
PossdPl => possdPl } ;
|
PossdPl => possdPl } ;
|
||||||
h = h ;
|
h = h ;
|
||||||
|
g = NonHuman
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -571,7 +572,7 @@ oper
|
|||||||
<_,_ + #v> => endCaseVow ;
|
<_,_ + #v> => endCaseVow ;
|
||||||
<_,_ + #v + ("sz"|"z"|"s"|"zs"|"j"|"ly"|"l"|"r"|"n"|"ny"|"ssz"
|
<_,_ + #v + ("sz"|"z"|"s"|"zs"|"j"|"ly"|"l"|"r"|"n"|"ny"|"ssz"
|
||||||
|"zz"|"ss"|"ll"|"rr"|"nn"|"ns"|"nsz"|"nz")> => endCaseConsAcc ;
|
|"zz"|"ss"|"ll"|"rr"|"nn"|"ns"|"nsz"|"nz")> => endCaseConsAcc ;
|
||||||
<True,_> => endCaseConsAccAt ;
|
<True,_> => endCaseCons ;
|
||||||
_ => endCaseCons } ;
|
_ => endCaseCons } ;
|
||||||
|
|
||||||
-- Last consonant doubles before instrumental and translative
|
-- Last consonant doubles before instrumental and translative
|
||||||
@@ -593,7 +594,7 @@ oper
|
|||||||
|
|
||||||
-- All other singular forms and stems
|
-- All other singular forms and stems
|
||||||
c => w + endCaseSg c ! h } ;
|
c => w + endCaseSg c ! h } ;
|
||||||
|
g = NonHuman
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -27,59 +27,77 @@ lin
|
|||||||
n9 = mkNum3 "kilenc" "kilencven" "kilencedik" ;
|
n9 = mkNum3 "kilenc" "kilencven" "kilencedik" ;
|
||||||
|
|
||||||
-- : Sub10 ; -- 1
|
-- : Sub10 ; -- 1
|
||||||
pot01 = mkNum3 "egy" "tíz" "első" ** {n=Sg} ;
|
pot01 = mkNum3 "egy" "tíz" "első" ;
|
||||||
-- : Digit -> Sub10 ; -- d * 1
|
-- : Digit -> Sub10 ; -- d * 1
|
||||||
pot0 d = d ;
|
pot0 d = d ;
|
||||||
|
|
||||||
-- : Sub100 ; -- 10
|
-- : Sub100 ; -- 10
|
||||||
pot110 = {s = table {p => "tíz"} ; n = numNumber ; numtype = IsNum} ;
|
pot110 = {s = table {p => "tíz"}} ;
|
||||||
-- : Sub100 ; -- 11
|
-- : Sub100 ; -- 11
|
||||||
pot111 = {s = table {p => "tizenegy"} ; n = numNumber ; numtype = IsNum} ;
|
pot111 = {s = table {p => "tizenegy"}} ;
|
||||||
-- : Digit -> Sub100 ; -- 10 + d
|
-- : Digit -> Sub100 ; -- 10 + d
|
||||||
pot1to19 d =
|
pot1to19 d =
|
||||||
{s = table {p => "tizen" ++ d.s ! <Unit,p>} ;
|
{s = table {p => "tizen" ++ d.s ! <Unit,p>}} ;
|
||||||
n = numNumber ; numtype = IsNum} ;
|
|
||||||
-- : Sub10 -> Sub100 ; -- coercion of 1..9
|
-- : Sub10 -> Sub100 ; -- coercion of 1..9
|
||||||
pot0as1 n =
|
pot0as1 n =
|
||||||
{s = table {p => n.s ! <Unit,p>} ;
|
{s = table {p => n.s ! <Unit,p>}} ;
|
||||||
n = numNumber ; numtype = IsNum} ;
|
|
||||||
|
|
||||||
-- : Digit -> Sub100 ; -- d * 10
|
-- : Digit -> Sub100 ; -- d * 10
|
||||||
pot1 d =
|
pot1 d =
|
||||||
{s = table {p => d.s ! <Ten,p>} ;
|
{s = table {p => d.s ! <Ten,p>}} ;
|
||||||
n = numNumber ; numtype = IsNum} ;
|
|
||||||
-- : Digit -> Sub10 -> Sub100 ; -- d * 10 + n
|
-- : Digit -> Sub10 -> Sub100 ; -- d * 10 + n
|
||||||
pot1plus d e =
|
pot1plus d e =
|
||||||
{s = table {p => (d.s ! <Ten,Attrib>) ++ e.s ! <Unit,p>} ;
|
{s = table {p => (d.s ! <Ten,Attrib>) ++ e.s ! <Unit,p>}} ;
|
||||||
n = numNumber ; numtype = IsNum} ;
|
|
||||||
|
|
||||||
-- : Sub100 -> Sub1000 ; -- coercion of 1..99
|
-- : Sub100 -> Sub1000 ; -- coercion of 1..99
|
||||||
pot1as2 n = n ;
|
pot1as2 n = n ;
|
||||||
|
-- : Sub1000 ; -- a hundred
|
||||||
|
pot21 =
|
||||||
|
{s = table {p => "száz"}} ;
|
||||||
-- : Sub10 -> Sub1000 ; -- m * 100
|
-- : Sub10 -> Sub1000 ; -- m * 100
|
||||||
pot2 d =
|
pot2 d =
|
||||||
{s = table {p => (d.s ! <Unit,Attrib>) ++ "száz"} ;
|
{s = table {p => (d.s ! <Unit,Attrib>) ++ "száz"}} ;
|
||||||
n = numNumber ; numtype = IsNum} ;
|
|
||||||
-- : Sub10 -> Sub100 -> Sub1000 ; -- m * 100 + n
|
-- : Sub10 -> Sub100 -> Sub1000 ; -- m * 100 + n
|
||||||
pot2plus d e =
|
pot2plus d e =
|
||||||
{s = table {p => (d.s ! <Unit,Attrib>) ++ "száz" ++ e.s ! p} ;
|
{s = table {p => (d.s ! <Unit,Attrib>) ++ "száz" ++ e.s ! p}} ;
|
||||||
n = numNumber ; numtype = IsNum} ;
|
|
||||||
|
|
||||||
-- : Sub1000 -> Sub1000000 ; -- coercion of 1..999
|
-- : Sub1000 -> Sub1000000 ; -- coercion of 1..999
|
||||||
pot2as3 n = n ;
|
pot2as3 n = n ;
|
||||||
|
-- : Sub1000000 ; -- a thousand
|
||||||
|
pot31 =
|
||||||
|
{s = table {p => "ezer"}} ;
|
||||||
-- : Sub1000 -> Sub1000000 ; -- m * 1000
|
-- : Sub1000 -> Sub1000000 ; -- m * 1000
|
||||||
pot3 n =
|
pot3 n =
|
||||||
{s = table {p => n.s ! Attrib ++ "ezer"} ;
|
{s = table {p => n.s ! Attrib ++ "ezer"}} ;
|
||||||
n = numNumber ; numtype = IsNum} ;
|
|
||||||
-- : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n
|
-- : Sub1000 -> Sub1000 -> Sub1000000 ; -- m * 1000 + n
|
||||||
pot3plus n m =
|
pot3plus n m =
|
||||||
{s = table {p => n.s ! Attrib ++ "ezer" ++ m.s ! p} ;
|
{s = table {p => n.s ! Attrib ++ "ezer" ++ m.s ! p}} ;
|
||||||
n = numNumber ; numtype = IsNum} ;
|
pot3decimal d =
|
||||||
|
{s = table {p => d.s ! NCard ++ "ezer"}} ;
|
||||||
|
|
||||||
pot3as4 n = n ;
|
pot3as4 n = n ;
|
||||||
|
|
||||||
|
pot41 =
|
||||||
|
{s = table {p => "egymillió"}} ;
|
||||||
|
pot4 n =
|
||||||
|
{s = table {p => n.s ! Attrib ++ "millió"}} ;
|
||||||
|
pot4plus n m =
|
||||||
|
{s = table {p => n.s ! Attrib ++ "millió" ++ m.s ! p}} ;
|
||||||
pot4as5 n = n ;
|
pot4as5 n = n ;
|
||||||
|
pot4decimal d =
|
||||||
|
{s = table {p => d.s ! NCard ++ "millió"}} ;
|
||||||
|
|
||||||
|
pot51 =
|
||||||
|
{s = table {p => "egymilliárd"}} ;
|
||||||
|
pot5 n =
|
||||||
|
{s = table {p => n.s ! Attrib ++ "milliárd"}} ;
|
||||||
|
pot5plus n m =
|
||||||
|
{s = table {p => n.s ! Attrib ++ "milliárd" ++ m.s ! p}} ;
|
||||||
|
pot5decimal d =
|
||||||
|
{s = table {p => d.s ! NCard ++ "milliárd"}} ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
LinDigit : Type = {s : DForm*Place => Str ; n : Number} ;
|
LinDigit : Type = {s : DForm*Place => Str} ;
|
||||||
|
|
||||||
mkNum3 : (x1,_,x3 : Str) -> LinDigit = \három,harminc,harmadik ->
|
mkNum3 : (x1,_,x3 : Str) -> LinDigit = \három,harminc,harmadik ->
|
||||||
mkNum5 három harminc három harminc harmadik ;
|
mkNum5 három harminc három harminc harmadik ;
|
||||||
@@ -89,13 +107,8 @@ oper
|
|||||||
<Ten,Indep> => ti ;
|
<Ten,Indep> => ti ;
|
||||||
<Unit,Attrib> => ua ;
|
<Unit,Attrib> => ua ;
|
||||||
<Ten, Attrib> => ta } ;
|
<Ten, Attrib> => ta } ;
|
||||||
-- ord = ord ; -- TODO figure out where to use ordinal
|
|
||||||
n = numNumber ;
|
|
||||||
numType = IsNum ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
numNumber = Sg ;
|
|
||||||
|
|
||||||
-- numerals as sequences of digits
|
-- numerals as sequences of digits
|
||||||
lincat
|
lincat
|
||||||
Dig = TDigit ;
|
Dig = TDigit ;
|
||||||
@@ -106,8 +119,7 @@ oper
|
|||||||
|
|
||||||
-- : Dig -> Digits -> Digits ; -- 876
|
-- : Dig -> Digits -> Digits ; -- 876
|
||||||
IIDig d i = {
|
IIDig d i = {
|
||||||
s = \\x => d.s ++ BIND ++ i.s ! x ;
|
s = \\x => d.s ++ BIND ++ i.s ! x
|
||||||
n = numNumber
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
D_0 = mkDig "0" ;
|
D_0 = mkDig "0" ;
|
||||||
@@ -122,21 +134,26 @@ oper
|
|||||||
D_9 = mkDig "9" ;
|
D_9 = mkDig "9" ;
|
||||||
|
|
||||||
PosDecimal d = d ** {hasDot=False} ;
|
PosDecimal d = d ** {hasDot=False} ;
|
||||||
NegDecinal d = {
|
NegDecimal d = {
|
||||||
s = \\x => "-" ++ BIND ++ d.s ! x ;
|
s = \\x => "-" ++ BIND ++ d.s ! x ;
|
||||||
n = numNumber ;
|
|
||||||
hasDot=False
|
hasDot=False
|
||||||
} ;
|
} ;
|
||||||
|
IFrac d i = {
|
||||||
|
s = \\x => d.s ! x ++
|
||||||
|
case d.hasDot of {
|
||||||
|
True => BIND ;
|
||||||
|
False => BIND ++ "." ++ BIND
|
||||||
|
} ++ i.s ;
|
||||||
|
hasDot=True
|
||||||
|
} ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
mkDig : Str -> TDigit = \s -> {
|
mkDig : Str -> TDigit = \s -> {
|
||||||
s = s ;
|
s = s ;
|
||||||
n = numNumber
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
TDigit = {
|
TDigit = {
|
||||||
s : Str ; -- TODO add ordinals
|
s : Str ; -- TODO add ordinals
|
||||||
n : Number
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ oper
|
|||||||
mkN : (unoka : Str) -> (testvér : N) -> N ; -- Compound noun. Use: `mkN "unoka" (mkN "testvér")` (would give wrong harmony with `mkN "unokatestvér"`)
|
mkN : (unoka : Str) -> (testvér : N) -> N ; -- Compound noun. Use: `mkN "unoka" (mkN "testvér")` (would give wrong harmony with `mkN "unokatestvér"`)
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
humanN : N -> N = \n -> n ** {g = Human} ;
|
||||||
|
|
||||||
mkPN : overload {
|
mkPN : overload {
|
||||||
mkPN : Str -> PN ; -- Singular PN out of a string
|
mkPN : Str -> PN ; -- Singular PN out of a string
|
||||||
mkPN : Str -> Number -> PN -- PN with a given number
|
mkPN : Str -> Number -> PN -- PN with a given number
|
||||||
@@ -58,6 +60,7 @@ oper
|
|||||||
-- Verbs
|
-- Verbs
|
||||||
mkV : overload {
|
mkV : overload {
|
||||||
mkV : (sg3 : Str) -> V ; -- Predictable verb. Takes singular P3 form in present tense.
|
mkV : (sg3 : Str) -> V ; -- Predictable verb. Takes singular P3 form in present tense.
|
||||||
|
mkV : (x1,_,_,_,_,_,_,_,_,_,_,_,x13 : Str) -> V ; -- Full present, past, and infinitive forms.
|
||||||
-- mkV : (nore : Str) -> (hada : V) -> V ; -- Add a prefix to an existing verb, e.g. 노래+하다
|
-- mkV : (nore : Str) -> (hada : V) -> V ; -- Add a prefix to an existing verb, e.g. 노래+하다
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -227,7 +230,12 @@ oper
|
|||||||
-- mkV : (nore : Str) -> (hada : V) -> V = \nore,hada -> hada ** {
|
-- mkV : (nore : Str) -> (hada : V) -> V = \nore,hada -> hada ** {
|
||||||
-- s = \\vf => nore + hada.s ! vf} ;
|
-- s = \\vf => nore + hada.s ! vf} ;
|
||||||
mkV : (x1,_,_,_,_,_,x7 : Str) -> V = \sg1,sg2,sg3,pl1,pl2,pl3,inf ->
|
mkV : (x1,_,_,_,_,_,x7 : Str) -> V = \sg1,sg2,sg3,pl1,pl2,pl3,inf ->
|
||||||
lin V (mkVerbFull sg1 sg2 sg3 pl1 pl2 pl3 inf) ;
|
lin V (mkVerbPres sg1 sg2 sg3 pl1 pl2 pl3 inf) ;
|
||||||
|
mkV : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,x15 : Str) -> V =
|
||||||
|
\sg1,sg2,sg3,pl1,pl2,pl3,pastSg1,pastSg2,pastSg3,pastPl1,pastPl2,pastPl3,inf,ppart,apart ->
|
||||||
|
lin V (mkVerbFull sg1 sg2 sg3 pl1 pl2 pl3
|
||||||
|
pastSg1 pastSg2 pastSg3 pastPl1 pastPl2 pastPl3
|
||||||
|
inf ppart apart) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
copula = lin V ResHun.copula ;
|
copula = lin V ResHun.copula ;
|
||||||
@@ -279,6 +287,7 @@ oper
|
|||||||
|
|
||||||
mkV3 = overload {
|
mkV3 = overload {
|
||||||
mkV3 : (plain : Str) -> V3 = \v3 -> lin V3 (mkVerb3 v3) ;
|
mkV3 : (plain : Str) -> V3 = \v3 -> lin V3 (mkVerb3 v3) ;
|
||||||
|
mkV3 : V -> V3 = \v -> lin V3 (v2tov3 (vtov2 v)) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkPrep = overload {
|
mkPrep = overload {
|
||||||
@@ -292,6 +301,7 @@ oper
|
|||||||
= \c -> lin Prep (ResHun.caseAdp c) ;
|
= \c -> lin Prep (ResHun.caseAdp c) ;
|
||||||
|
|
||||||
mkInterj : Str -> Interj = \s -> lin Interj {s = s} ;
|
mkInterj : Str -> Interj = \s -> lin Interj {s = s} ;
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
|
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ oper
|
|||||||
-- Nouns
|
-- Nouns
|
||||||
|
|
||||||
param
|
param
|
||||||
|
Gender = Human | NonHuman ;
|
||||||
|
|
||||||
NumCaseStem =
|
NumCaseStem =
|
||||||
SgNom | SgAccStem | SgSup -- These may use 2-3 different stems
|
SgNom | SgAccStem | SgSup -- These may use 2-3 different stems
|
||||||
@@ -73,16 +74,16 @@ param
|
|||||||
|
|
||||||
Case =
|
Case =
|
||||||
Nom | Acc | Dat
|
Nom | Acc | Dat
|
||||||
-- | Ill -- Locatives
|
| Ill -- Locatives
|
||||||
| Ine
|
| Ine
|
||||||
| Ela
|
| Ela
|
||||||
| All
|
| All
|
||||||
| Ade
|
| Ade
|
||||||
| Abl
|
| Abl
|
||||||
-- | Sub
|
| Sub
|
||||||
| Sup
|
| Sup
|
||||||
-- | Del
|
| Del
|
||||||
-- | Cau -- Causal-final 'for the purpose of, for the reason that'
|
| Cau -- Causal-final 'for the purpose of, for the reason that'
|
||||||
| Ins -- Instrumental
|
| Ins -- Instrumental
|
||||||
| Tra -- Translative
|
| Tra -- Translative
|
||||||
-- | Ess | Ter | For
|
-- | Ess | Ter | For
|
||||||
@@ -198,14 +199,10 @@ param
|
|||||||
|
|
||||||
VForm =
|
VForm =
|
||||||
VInf
|
VInf
|
||||||
| VPres Person Number ;
|
| VPres Person Number
|
||||||
|
| VPast Person Number
|
||||||
oper
|
| VPresPart
|
||||||
|
| VAdvPart ;
|
||||||
agr2vf : Person*Number -> VForm = \pn ->
|
|
||||||
case <pn.p1,pn.p2> of {
|
|
||||||
<p,n> => VPres p n
|
|
||||||
} ;
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Clauses
|
-- Clauses
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ concrete PhraseHun of Phrase = CatHun ** open Prelude, ResHun in {
|
|||||||
UttS s = s ;
|
UttS s = s ;
|
||||||
UttQS qs = qs ;
|
UttQS qs = qs ;
|
||||||
UttIAdv iadv = iadv ;
|
UttIAdv iadv = iadv ;
|
||||||
{-
|
|
||||||
UttImpSg pol imp =
|
UttImpSg pol imp =
|
||||||
|
{s = pol.s ++ imp.s ! Sg ! pol.p} ;
|
||||||
UttImpPl pol imp =
|
UttImpPl pol imp =
|
||||||
UttImpPol = UttImpSg ;
|
{s = pol.s ++ imp.s ! Pl ! pol.p} ;
|
||||||
-}
|
UttImpPol = UttImpPl ;
|
||||||
UttIP,
|
UttIP,
|
||||||
UttNP = \np -> {s = linNP np} ;
|
UttNP = \np -> {s = linNP np} ;
|
||||||
UttVP vp = {s = vp.obj ++ vp.adv ++ vp.s ! VInf} ;
|
UttVP vp = {s = vp.obj ++ vp.adv ++ vp.s ! VInf} ;
|
||||||
@@ -24,6 +24,6 @@ concrete PhraseHun of Phrase = CatHun ** open Prelude, ResHun in {
|
|||||||
-- PConjConj conj = {s = conj.s1 ++ conj.s2 ! …} ;
|
-- PConjConj conj = {s = conj.s1 ++ conj.s2 ! …} ;
|
||||||
|
|
||||||
NoVoc = {s = []} ;
|
NoVoc = {s = []} ;
|
||||||
-- VocNP np = { s = "," ++ np.s ! … } ; -}
|
VocNP np = {s = bindComma ++ linNP np} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,40 +1,49 @@
|
|||||||
concrete QuestionHun of Question = CatHun ** open
|
concrete QuestionHun of Question = CatHun ** open
|
||||||
Prelude, ResHun, ParadigmsHun, (NH=NounHun) in {
|
Prelude, ResHun, ParadigmsHun, (NH=NounHun), (VH=VerbHun) in {
|
||||||
|
|
||||||
-- A question can be formed from a clause ('yes-no question') or
|
-- A question can be formed from a clause ('yes-no question') or
|
||||||
-- with an interrogative.
|
-- with an interrogative.
|
||||||
|
|
||||||
{-
|
lincat
|
||||||
|
QVP = VerbPhrase ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
-- : Cl -> QCl ;
|
-- : Cl -> QCl ;
|
||||||
QuestCl =
|
QuestCl cl = cl ;
|
||||||
|
|
||||||
-- : IP -> VP -> QCl ;
|
-- : IP -> VP -> QCl ;
|
||||||
QuestVP ip vp =
|
QuestVP ip vp = predVP ip vp ;
|
||||||
|
|
||||||
-- : IP -> ClSlash -> QCl ; -- whom does John love
|
-- : IP -> ClSlash -> QCl ; -- whom does John love
|
||||||
QuestSlash ip cls =
|
QuestSlash ip cls = {
|
||||||
|
s = \\t,a,p => ip.s ! NoPoss ! cls.c2 ++ cls.s ! t ! a ! p
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : IAdv -> Cl -> QCl ; -- why does John walk
|
-- : IAdv -> Cl -> QCl ; -- why does John walk
|
||||||
QuestIAdv iadv cls =
|
QuestIAdv iadv cls = {
|
||||||
|
s = \\t,a,p => iadv.s ++ cls.s ! t ! a ! p
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
-- : IComp -> NP -> QCl ; -- where is John?
|
-- : IComp -> NP -> QCl ; -- where is John?
|
||||||
QuestIComp icomp np =
|
QuestIComp icomp np = {
|
||||||
|
s = \\_,_,p =>
|
||||||
|
icomp.s ++ if_then_Pol p [] "nem" ++ linNP np
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
-- Interrogative pronouns can be formed with interrogative
|
-- Interrogative pronouns can be formed with interrogative
|
||||||
-- determiners, with or without a noun.
|
-- determiners, with or without a noun.
|
||||||
|
|
||||||
-- : IDet -> CN -> IP ; -- which five songs
|
-- : IDet -> CN -> IP ; -- which five songs
|
||||||
IdetCN idet cn = {…} ** NH.DetCN idet cn ;
|
IdetCN idet cn = NH.DetCN idet cn ;
|
||||||
|
|
||||||
-- : IDet -> IP ; -- which five
|
-- : IDet -> IP ; -- which five
|
||||||
IdetIP idet = {…} ** NH.DetNP idet ;
|
IdetIP idet = NH.DetNP idet ;
|
||||||
|
|
||||||
-- They can be modified with adverbs.
|
-- They can be modified with adverbs.
|
||||||
-- : IP -> Adv -> IP ; -- who in Paris
|
-- : IP -> Adv -> IP ; -- who in Paris
|
||||||
--AdvIP = NH.AdvNP ;
|
AdvIP = NH.AdvNP ;
|
||||||
|
|
||||||
-- Interrogative quantifiers have number forms and can take number modifiers.
|
-- Interrogative quantifiers have number forms and can take number modifiers.
|
||||||
|
|
||||||
@@ -43,12 +52,14 @@ concrete QuestionHun of Question = CatHun ** open
|
|||||||
|
|
||||||
-- Interrogative adverbs can be formed prepositionally.
|
-- Interrogative adverbs can be formed prepositionally.
|
||||||
-- : Prep -> IP -> IAdv ; -- with whom
|
-- : Prep -> IP -> IAdv ; -- with whom
|
||||||
PrepIP prep ip = ;
|
PrepIP prep ip = {s = applyAdp prep ip} ;
|
||||||
|
|
||||||
-- They can be modified with other adverbs.
|
-- They can be modified with other adverbs.
|
||||||
|
|
||||||
-- : IAdv -> Adv -> IAdv ; -- where in Paris
|
-- : IAdv -> Adv -> IAdv ; -- where in Paris
|
||||||
-- AdvIAdv iadv adv =
|
AdvIAdv iadv adv = {
|
||||||
|
s = iadv.s ++ adv.s
|
||||||
|
} ;
|
||||||
|
|
||||||
-- Interrogative complements to copulas can be both adverbs and
|
-- Interrogative complements to copulas can be both adverbs and
|
||||||
-- pronouns.
|
-- pronouns.
|
||||||
@@ -57,21 +68,16 @@ concrete QuestionHun of Question = CatHun ** open
|
|||||||
CompIAdv iadv = iadv ; -- where (is it)
|
CompIAdv iadv = iadv ; -- where (is it)
|
||||||
|
|
||||||
-- : IP -> IComp ;
|
-- : IP -> IComp ;
|
||||||
CompIP ip = {s = ip.s ! Abs} ; -- who (is it)
|
CompIP ip = {s = ip.s ! NoPoss ! Nom} ; -- who (is it)
|
||||||
|
|
||||||
|
|
||||||
-- More $IP$, $IDet$, and $IAdv$ are defined in $Structural$.
|
-- More $IP$, $IDet$, and $IAdv$ are defined in $Structural$.
|
||||||
|
|
||||||
-- Wh questions with two or more question words require a new, special category.
|
-- Wh questions with two or more question words require a new, special category.
|
||||||
|
|
||||||
cat
|
ComplSlashIP vps ip = VH.insertObj vps ip ;
|
||||||
QVP ; -- buy what where
|
AdvQVP vp iadv = vp ** {adv = vp.adv ++ iadv.s} ;
|
||||||
fun
|
AddAdvQVP qvp iadv = qvp ** {adv = qvp.adv ++ iadv.s} ;
|
||||||
ComplSlashIP : VPSlash -> IP -> QVP ; -- buys what
|
QuestQVP ip qvp = predVP ip qvp ;
|
||||||
AdvQVP : VP -> IAdv -> QVP ; -- lives where
|
|
||||||
AddAdvQVP : QVP -> IAdv -> QVP ; -- buys what where
|
|
||||||
|
|
||||||
QuestQVP : IP -> QVP -> QCl ; -- who buys what where
|
|
||||||
-}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,16 +13,30 @@ lin
|
|||||||
|
|
||||||
-- : RP ;
|
-- : RP ;
|
||||||
IdRP = {s =
|
IdRP = {s =
|
||||||
table {Sg => caseTable "ami" "amit" "aminek" -- nom, acc, dat
|
table {
|
||||||
"amibe" "amiben" "amiből" -- ill, ine, ela
|
Human =>
|
||||||
"amihez" "aminél" "amitől" -- all, ade, abl
|
table {Sg => caseTable "aki" "akit" "akinek" -- nom, acc, dat
|
||||||
"amire" "amin" "amiről" -- sub, sup, del
|
"akibe" "akiben" "akiből" -- ill, ine, ela
|
||||||
"amiért" "amivel" "amivé" ; -- cau, ins, tra
|
"akihez" "akinél" "akitől" -- all, ade, abl
|
||||||
Pl => caseTable "amik" "amiket" "amiknek" -- nom, acc, dat
|
"akire" "akin" "akiről" -- sub, sup, del
|
||||||
"amikbe" "amikben" "amikből" -- ill, ine, ela
|
"akiért" "akivel" "akivé" ; -- cau, ins, tra
|
||||||
"amikhez" "amiknél" "amiktől" -- all, ade, abl
|
Pl => caseTable "akik" "akiket" "akiknek" -- nom, acc, dat
|
||||||
"amikre" "amiken" "amikről" -- sub, sup, del
|
"akikbe" "akikben" "akikből" -- ill, ine, ela
|
||||||
"amikért" "amikkel" "amikké"}; -- cau, ins, tra
|
"akikhez" "akiknél" "akiktől" -- all, ade, abl
|
||||||
|
"akikre" "akiken" "akikről" -- sub, sup, del
|
||||||
|
"akikért" "akikkel" "akikké"} ; -- cau, ins, tra
|
||||||
|
NonHuman =>
|
||||||
|
table {Sg => caseTable "ami" "amit" "aminek" -- nom, acc, dat
|
||||||
|
"amibe" "amiben" "amiből" -- ill, ine, ela
|
||||||
|
"amihez" "aminél" "amitől" -- all, ade, abl
|
||||||
|
"amire" "amin" "amiről" -- sub, sup, del
|
||||||
|
"amiért" "amivel" "amivé" ; -- cau, ins, tra
|
||||||
|
Pl => caseTable "amik" "amiket" "amiknek" -- nom, acc, dat
|
||||||
|
"amikbe" "amikben" "amikből" -- ill, ine, ela
|
||||||
|
"amikhez" "amiknél" "amiktől" -- all, ade, abl
|
||||||
|
"amikre" "amiken" "amikről" -- sub, sup, del
|
||||||
|
"amikért" "amikkel" "amikké"} -- cau, ins, tra
|
||||||
|
} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : Prep -> NP -> RP -> RP ; -- the mother of whom
|
-- : Prep -> NP -> RP -> RP ; -- the mother of whom
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ resource ResHun = NounMorphoHun ** open Prelude, Predef in {
|
|||||||
oper
|
oper
|
||||||
CNoun : Type = Noun ** {
|
CNoun : Type = Noun ** {
|
||||||
compl : Number => Case => Str ;
|
compl : Number => Case => Str ;
|
||||||
postmod : Str ;
|
postmod : Str
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkCaseNoun : Str -> Number => Case => Str = \s ->
|
mkCaseNoun : Str -> Number => Case => Str = \s ->
|
||||||
@@ -75,6 +75,7 @@ oper
|
|||||||
agr : Person*Number ;
|
agr : Person*Number ;
|
||||||
objdef : ObjDef ;
|
objdef : ObjDef ;
|
||||||
empty : Str ; -- standard trick for pro-drop
|
empty : Str ; -- standard trick for pro-drop
|
||||||
|
g : Gender ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
NounPhrase : Type = BaseNP ** {
|
NounPhrase : Type = BaseNP ** {
|
||||||
@@ -86,6 +87,7 @@ oper
|
|||||||
s = \\_,_ => [] ;
|
s = \\_,_ => [] ;
|
||||||
agr = <P3,Sg> ;
|
agr = <P3,Sg> ;
|
||||||
objdef = Indef ;
|
objdef = Indef ;
|
||||||
|
g = NonHuman ;
|
||||||
postmod, empty = [] ;
|
postmod, empty = [] ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -395,6 +397,24 @@ oper
|
|||||||
<P3,Pl> => harm "nak" "nek" -- TODO allomorphs -anak, -enek
|
<P3,Pl> => harm "nak" "nek" -- TODO allomorphs -anak, -enek
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
endingsPastIndef : VerbEndings = table {
|
||||||
|
<P1,Sg> => harm3 "tam" "tem" "tem" ;
|
||||||
|
<P2,Sg> => harm "tál" "tél" ;
|
||||||
|
<P3,Sg> => harm1 "t" ;
|
||||||
|
<P1,Pl> => harm "tunk" "tünk" ;
|
||||||
|
<P2,Pl> => harm3 "tatok" "tetek" "tötök" ;
|
||||||
|
<P3,Pl> => harm "tak" "tek"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
endingsPastDef : VerbEndings = table {
|
||||||
|
<P1,Sg> => harm3 "tam" "tem" "tem" ;
|
||||||
|
<P2,Sg> => harm "tad" "ted" ;
|
||||||
|
<P3,Sg> => harm "ta" "te" ;
|
||||||
|
<P1,Pl> => harm "tuk" "tük" ;
|
||||||
|
<P2,Pl> => harm "tátok" "tétek" ;
|
||||||
|
<P3,Pl> => harm "ták" "ték"
|
||||||
|
} ;
|
||||||
|
|
||||||
BaseVerb : Type = {
|
BaseVerb : Type = {
|
||||||
sc : SubjCase ; -- subject case
|
sc : SubjCase ; -- subject case
|
||||||
} ;
|
} ;
|
||||||
@@ -406,7 +426,7 @@ oper
|
|||||||
c2 : Case -- object case
|
c2 : Case -- object case
|
||||||
} ;
|
} ;
|
||||||
Verb3 : Type = Verb2 ** {
|
Verb3 : Type = Verb2 ** {
|
||||||
-- c3 : Case -- indirect object case
|
c3 : Case -- indirect object case
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
datV2 : Verb -> Verb2 = \v -> {
|
datV2 : Verb -> Verb2 = \v -> {
|
||||||
@@ -418,18 +438,44 @@ oper
|
|||||||
mkVerb2 : Str -> Verb2 = \sg3 -> vtov2 (mkVerb sg3) ;
|
mkVerb2 : Str -> Verb2 = \sg3 -> vtov2 (mkVerb sg3) ;
|
||||||
mkVerb3 : Str -> Verb3 = \sg3 -> v2tov3 (mkVerb2 sg3) ;
|
mkVerb3 : Str -> Verb3 = \sg3 -> v2tov3 (mkVerb2 sg3) ;
|
||||||
|
|
||||||
|
futureAux : ObjDef -> Person -> Number -> Str = \od,p,n ->
|
||||||
|
case <od,p,n> of {
|
||||||
|
<Indef,P1,Sg> => "fogok" ;
|
||||||
|
<Indef,P2,Sg> => "fogsz" ;
|
||||||
|
<Indef,P3,Sg> => "fog" ;
|
||||||
|
<Indef,P1,Pl> => "fogunk" ;
|
||||||
|
<Indef,P2,Pl> => "fogtok" ;
|
||||||
|
<Indef,P3,Pl> => "fognak" ;
|
||||||
|
<Def,P1,Sg> => "fogom" ;
|
||||||
|
<Def,P2,Sg> => "fogod" ;
|
||||||
|
<Def,P3,Sg> => "fogja" ;
|
||||||
|
<Def,P1,Pl> => "fogjuk" ;
|
||||||
|
<Def,P2,Pl> => "fogjátok" ;
|
||||||
|
<Def,P3,Pl> => "fogják"
|
||||||
|
} ;
|
||||||
|
|
||||||
vtov2 : Verb -> Verb2 = \v -> v ** {
|
vtov2 : Verb -> Verb2 = \v -> v ** {
|
||||||
s = table {
|
s = table {
|
||||||
Def => let vDef : Verb = mkVerbReg endingsDef (v.s ! VInf) (v.s ! VPres P3 Sg)
|
Def => let vDef : Verb = mkVerbRegPast endingsDef endingsPastDef
|
||||||
|
(v.s ! VInf) (v.s ! VPres P3 Sg)
|
||||||
in vDef.s ;
|
in vDef.s ;
|
||||||
Indef => v.s } ;
|
Indef => v.s } ;
|
||||||
c2 = Acc
|
c2 = Acc
|
||||||
} ;
|
} ;
|
||||||
v2tov3 : Verb2 -> Verb3 = \v -> v ** {c3 = Dat} ;
|
v2tov3 : Verb2 -> Verb3 = \v -> v ** {c3 = Dat} ;
|
||||||
|
|
||||||
mkVerb : (sg3 : Str) -> Verb = mkVerbReg endingsIndef "TODO:infinitive" ; -- TODO
|
mkVerb : (sg3 : Str) -> Verb = \sg3 ->
|
||||||
|
let inf : Str
|
||||||
|
= case sg3 of {
|
||||||
|
_ + ("ít" | (#c + #c)) => sg3 + harm3 "ani" "eni" "eni" ! getHarm sg3 ;
|
||||||
|
_ => sg3 + "ni"
|
||||||
|
}
|
||||||
|
in mkVerbReg endingsIndef inf sg3 ;
|
||||||
|
|
||||||
mkVerbReg : VerbEndings -> (inf, stem : Str) -> Verb = \hf,inf,stem ->
|
mkVerbReg : VerbEndings -> (inf, stem : Str) -> Verb =
|
||||||
|
\hf,inf,stem -> mkVerbRegPast hf endingsPastIndef inf stem ;
|
||||||
|
|
||||||
|
mkVerbRegPast : VerbEndings -> VerbEndings -> (inf, stem : Str) -> Verb = \hf,pastHf,inf,stem ->
|
||||||
let h : Harm = getHarm stem ;
|
let h : Harm = getHarm stem ;
|
||||||
sg1 : Str = stem + hf ! <P1,Sg> ! h ;
|
sg1 : Str = stem + hf ! <P1,Sg> ! h ;
|
||||||
sg2 : Str = stem + hf ! <P2,Sg> ! h ;
|
sg2 : Str = stem + hf ! <P2,Sg> ! h ;
|
||||||
@@ -437,10 +483,43 @@ oper
|
|||||||
pl1 : Str = stem + hf ! <P1,Pl> ! h ;
|
pl1 : Str = stem + hf ! <P1,Pl> ! h ;
|
||||||
pl2 : Str = stem + hf ! <P2,Pl> ! h ;
|
pl2 : Str = stem + hf ! <P2,Pl> ! h ;
|
||||||
pl3 : Str = stem + hf ! <P3,Pl> ! h ;
|
pl3 : Str = stem + hf ! <P3,Pl> ! h ;
|
||||||
in mkVerbFull sg1 sg2 sg3 pl1 pl2 pl3 inf ;
|
pastSg1 : Str = stem + pastHf ! <P1,Sg> ! h ;
|
||||||
|
pastSg2 : Str = stem + pastHf ! <P2,Sg> ! h ;
|
||||||
|
pastSg3 : Str = stem + pastHf ! <P3,Sg> ! h ;
|
||||||
|
pastPl1 : Str = stem + pastHf ! <P1,Pl> ! h ;
|
||||||
|
pastPl2 : Str = stem + pastHf ! <P2,Pl> ! h ;
|
||||||
|
pastPl3 : Str = stem + pastHf ! <P3,Pl> ! h ;
|
||||||
|
ppart : Str = case sg3 of {
|
||||||
|
x + "o" + y@("g"|"l") => x+y+"ó" ;
|
||||||
|
_ + ("ér"|"éz"|"ít") => sg3 + "ő" ;
|
||||||
|
_ => sg3 + "ó"
|
||||||
|
} ;
|
||||||
|
apart : Str = sg3 + harm "va" "ve" ! h
|
||||||
|
in mkVerbFull sg1 sg2 sg3 pl1 pl2 pl3
|
||||||
|
pastSg1 pastSg2 pastSg3 pastPl1 pastPl2 pastPl3
|
||||||
|
inf ppart apart ;
|
||||||
|
|
||||||
mkVerbFull : (x1,_,_,_,_,_,x7 : Str) -> Verb =
|
mkVerbPres : (x1,_,_,_,_,_,x7 : Str) -> Verb =
|
||||||
\sg1,sg2,sg3,pl1,pl2,pl3,inf -> {
|
\sg1,sg2,sg3,pl1,pl2,pl3,inf ->
|
||||||
|
let h : Harm = getHarm sg3 ;
|
||||||
|
pastSg1 : Str = sg3 + endingsPastIndef ! <P1,Sg> ! h ;
|
||||||
|
pastSg2 : Str = sg3 + endingsPastIndef ! <P2,Sg> ! h ;
|
||||||
|
pastSg3 : Str = sg3 + endingsPastIndef ! <P3,Sg> ! h ;
|
||||||
|
pastPl1 : Str = sg3 + endingsPastIndef ! <P1,Pl> ! h ;
|
||||||
|
pastPl2 : Str = sg3 + endingsPastIndef ! <P2,Pl> ! h ;
|
||||||
|
pastPl3 : Str = sg3 + endingsPastIndef ! <P3,Pl> ! h ;
|
||||||
|
ppart : Str = case sg3 of {
|
||||||
|
x + "o" + y@("g"|"l") => x+y+"ó" ;
|
||||||
|
_ + ("ér"|"éz"|"ít") => sg3 + "ő" ;
|
||||||
|
_ => sg3 + "ó"
|
||||||
|
} ;
|
||||||
|
apart : Str = sg3 + harm "va" "ve" ! h
|
||||||
|
in mkVerbFull sg1 sg2 sg3 pl1 pl2 pl3
|
||||||
|
pastSg1 pastSg2 pastSg3 pastPl1 pastPl2 pastPl3
|
||||||
|
inf ppart apart ;
|
||||||
|
|
||||||
|
mkVerbFull : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,x15 : Str) -> Verb =
|
||||||
|
\sg1,sg2,sg3,pl1,pl2,pl3,pastSg1,pastSg2,pastSg3,pastPl1,pastPl2,pastPl3,inf,ppart,apart -> {
|
||||||
s = table {
|
s = table {
|
||||||
VInf => inf ;
|
VInf => inf ;
|
||||||
VPres P1 Sg => sg1 ;
|
VPres P1 Sg => sg1 ;
|
||||||
@@ -448,7 +527,15 @@ oper
|
|||||||
VPres P3 Sg => sg3 ;
|
VPres P3 Sg => sg3 ;
|
||||||
VPres P1 Pl => pl1 ;
|
VPres P1 Pl => pl1 ;
|
||||||
VPres P2 Pl => pl2 ;
|
VPres P2 Pl => pl2 ;
|
||||||
VPres P3 Pl => pl3
|
VPres P3 Pl => pl3 ;
|
||||||
|
VPast P1 Sg => pastSg1 ;
|
||||||
|
VPast P2 Sg => pastSg2 ;
|
||||||
|
VPast P3 Sg => pastSg3 ;
|
||||||
|
VPast P1 Pl => pastPl1 ;
|
||||||
|
VPast P2 Pl => pastPl2 ;
|
||||||
|
VPast P3 Pl => pastPl3 ;
|
||||||
|
VPresPart => ppart ;
|
||||||
|
VAdvPart => apart
|
||||||
} ;
|
} ;
|
||||||
sc = SCNom
|
sc = SCNom
|
||||||
} ;
|
} ;
|
||||||
@@ -460,7 +547,15 @@ oper
|
|||||||
"vagyunk"
|
"vagyunk"
|
||||||
"vagytok"
|
"vagytok"
|
||||||
"vannak"
|
"vannak"
|
||||||
"lenni" ;
|
"voltam"
|
||||||
|
"voltál"
|
||||||
|
"volt"
|
||||||
|
"voltunk"
|
||||||
|
"voltatok"
|
||||||
|
"voltak"
|
||||||
|
"lenni"
|
||||||
|
"levő"
|
||||||
|
"léve" ;
|
||||||
|
|
||||||
megvan : Verb = copula ** {
|
megvan : Verb = copula ** {
|
||||||
s = \\vf => "meg" + copula.s ! vf ;
|
s = \\vf => "meg" + copula.s ! vf ;
|
||||||
@@ -489,8 +584,22 @@ oper
|
|||||||
adv = [] ;
|
adv = [] ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertAdv : VerbPhrase -> SS -> VerbPhrase = \vp,adv -> vp ** {adv = adv.s} ;
|
insertAdv : VerbPhrase -> SS -> VerbPhrase = \vp,adv -> vp ** {adv = vp.adv ++ adv.s} ;
|
||||||
insertAdvSlash : VPSlash -> SS -> VPSlash = \vps,adv -> vps ** {adv = adv.s} ;
|
insertAdvSlash : VPSlash -> SS -> VPSlash = \vps,adv -> vps ** {adv = vps.adv ++ adv.s} ;
|
||||||
|
|
||||||
|
infVP : VerbPhrase -> Str = \vp ->
|
||||||
|
vp.obj ++ vp.adv ++ vp.s ! VInf ;
|
||||||
|
|
||||||
|
infVPSlash : VPSlash -> Str = \vps ->
|
||||||
|
vps.adv ++ vps.s ! Indef ! VInf ;
|
||||||
|
|
||||||
|
verbStemFromInf : Str -> Str = \inf ->
|
||||||
|
case inf of {
|
||||||
|
stem + "ani" => stem ;
|
||||||
|
stem + "eni" => stem ;
|
||||||
|
stem + "ni" => stem ;
|
||||||
|
_ => inf
|
||||||
|
} ;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Cl, S
|
-- Cl, S
|
||||||
@@ -515,7 +624,11 @@ oper
|
|||||||
SCDat => Dat }
|
SCDat => Dat }
|
||||||
in linNP' NoPoss subjcase np
|
in linNP' NoPoss subjcase np
|
||||||
++ if_then_Pol p [] "nem"
|
++ if_then_Pol p [] "nem"
|
||||||
++ vp.s ! agr2vf np.agr
|
++ case <t,np.agr.p1,np.agr.p2> of {
|
||||||
|
<Past,p,n> => vp.s ! VPast p n ;
|
||||||
|
<Fut,p,n> => futureAux Indef p n ++ vp.s ! VInf ;
|
||||||
|
<_,p,n> => vp.s ! VPres p n
|
||||||
|
}
|
||||||
++ vp.obj -- ! np.agr
|
++ vp.obj -- ! np.agr
|
||||||
++ vp.adv
|
++ vp.adv
|
||||||
++ np.empty -- standard trick for prodrop+metavariable problem
|
++ np.empty -- standard trick for prodrop+metavariable problem
|
||||||
@@ -523,27 +636,32 @@ oper
|
|||||||
|
|
||||||
-- Relative
|
-- Relative
|
||||||
|
|
||||||
RP : Type = {s : Number => Case => Str} ;
|
RP : Type = {s : Gender => Number => Case => Str} ;
|
||||||
RClause : Type = {s : Tense => Anteriority => Polarity => Number => Case => Str} ;
|
RClause : Type = {s : Tense => Anteriority => Polarity => Gender => Number => Case => Str} ;
|
||||||
|
|
||||||
relVP : RP -> VerbPhrase -> RClause = \rp -> relVP' (rp ** {agr=<P3,Sg>}) ;
|
relVP : RP -> VerbPhrase -> RClause = \rp -> relVP' (rp ** {agr=<P3,Sg>}) ;
|
||||||
|
|
||||||
relVP' : RP ** {agr : Person*Number} -> VerbPhrase -> RClause = \rp,vp -> {
|
relVP' : RP ** {agr : Person*Number} -> VerbPhrase -> RClause = \rp,vp -> {
|
||||||
s = \\t,a,p,n,c => let subjcase : Case = case vp.sc of {
|
s = \\t,a,p,g,n,c => let subjcase : Case = case vp.sc of {
|
||||||
SCNom => Nom ;
|
SCNom => Nom ;
|
||||||
SCDat => Dat }
|
SCDat => Dat }
|
||||||
in rp.s ! n ! subjcase
|
in rp.s ! g ! n ! subjcase
|
||||||
++ if_then_Pol p [] "nem"
|
++ if_then_Pol p [] "nem"
|
||||||
++ vp.obj -- ! <rp.agr.p1,n>
|
++ vp.obj -- ! <rp.agr.p1,n>
|
||||||
++ vp.adv
|
++ vp.adv
|
||||||
++ vp.s ! VPres rp.agr.p1 n -- variable by number
|
++ case <t,rp.agr.p1,n> of {
|
||||||
|
<Past,p,n> => vp.s ! VPast p n ;
|
||||||
|
<Fut,p,n> => futureAux Indef p n ++ vp.s ! VInf ;
|
||||||
|
<_,p,n> => vp.s ! VPres p n
|
||||||
|
} -- variable by number
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
relSlash : RP -> ClSlash -> RClause = \rp,cls -> {
|
relSlash : RP -> ClSlash -> RClause = \rp,cls -> {
|
||||||
s = \\t,a,p,n,c => let objcase : Case = case cls.c2 of {
|
s = \\t,a,p,g,n,c => let objcase : Case = case cls.c2 of {
|
||||||
Acc => c ;
|
Acc => c ;
|
||||||
_ => cls.c2 }
|
_ => cls.c2
|
||||||
in rp.s ! n ! objcase
|
}
|
||||||
|
in rp.s ! g ! n ! objcase
|
||||||
++ cls.s ! t ! a ! p
|
++ cls.s ! t ! a ! p
|
||||||
} ;
|
} ;
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -11,16 +11,24 @@ lin
|
|||||||
PredVP = predVP ;
|
PredVP = predVP ;
|
||||||
|
|
||||||
-- : SC -> VP -> Cl ; -- that she goes is good (Saeed p. 94)
|
-- : SC -> VP -> Cl ; -- that she goes is good (Saeed p. 94)
|
||||||
--PredSCVP sc vp = ;
|
PredSCVP sc vp = predVP (indeclNP sc.s) vp ;
|
||||||
|
|
||||||
--2 Clauses missing object noun phrases
|
--2 Clauses missing object noun phrases
|
||||||
-- : NP -> VPSlash -> ClSlash ;
|
-- : NP -> VPSlash -> ClSlash ;
|
||||||
SlashVP np vps = predVP np (vps ** {s = vps.s ! Indef ; obj = []}) ;
|
SlashVP np vps = predVP np (vps ** {s = vps.s ! Indef ; obj = []}) ;
|
||||||
{-
|
|
||||||
-- : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today
|
|
||||||
AdvSlash cls adv = cls ** insertAdv adv cls ;
|
|
||||||
|
|
||||||
-- SlashPrep : Cl -> Prep -> ClSlash ; -- (with whom) he walks
|
-- : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today
|
||||||
|
AdvSlash cls adv = cls ** {
|
||||||
|
s = \\t,a,p => cls.s ! t ! a ! p ++ adv.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- : Cl -> Prep -> ClSlash ; -- (with whom) he walks
|
||||||
|
SlashPrep cl prep = cl ** {
|
||||||
|
c2 = prep.c ;
|
||||||
|
s = \\t,a,p => cl.s ! t ! a ! p ++ prep.s
|
||||||
|
} ;
|
||||||
|
|
||||||
|
{-
|
||||||
|
|
||||||
-- : NP -> VS -> SSlash -> ClSlash ; -- (whom) she says that he loves
|
-- : NP -> VS -> SSlash -> ClSlash ; -- (whom) she says that he loves
|
||||||
-- SlashVS np vs ss = {} ;
|
-- SlashVS np vs ss = {} ;
|
||||||
@@ -31,21 +39,27 @@ lin
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
--2 Imperatives
|
--2 Imperatives
|
||||||
|
-}
|
||||||
-- : VP -> Imp ;
|
-- : VP -> Imp ;
|
||||||
ImpVP vp = {s = \\num,pol => linVP (VImp num pol) Statement vp} ;
|
ImpVP vp = {
|
||||||
|
s = \\num,pol =>
|
||||||
|
if_then_Pol pol [] "ne"
|
||||||
|
++ vp.s ! VPres P2 num
|
||||||
|
++ vp.obj
|
||||||
|
++ vp.adv
|
||||||
|
} ;
|
||||||
|
|
||||||
--2 Embedded sentences
|
-- : Adv -> Imp -> Imp ;
|
||||||
|
AdvImp adv imp = {
|
||||||
|
s = \\num,pol => adv.s ++ imp.s ! num ! pol
|
||||||
|
} ;
|
||||||
|
--2 Sentences
|
||||||
|
|
||||||
-- : S -> SC ;
|
-- : S -> SC ;
|
||||||
EmbedS s = {s = s.s ! True} ; -- choose subordinate
|
EmbedS s = {s = s.s} ;
|
||||||
|
|
||||||
-- : QS -> SC ;
|
-- : QS -> SC ;
|
||||||
-- EmbedQS qs = { } ;
|
EmbedQS qs = {s = qs.s} ;
|
||||||
|
|
||||||
-- : VP -> SC ;
|
|
||||||
EmbedVP vp = {s = infVP vp} ;
|
|
||||||
-}
|
|
||||||
--2 Sentences
|
|
||||||
|
|
||||||
-- : Temp -> Pol -> Cl -> S ;
|
-- : Temp -> Pol -> Cl -> S ;
|
||||||
UseCl t p cl = {
|
UseCl t p cl = {
|
||||||
@@ -56,7 +70,7 @@ lin
|
|||||||
UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ;
|
UseQCl t p cl = {s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p} ;
|
||||||
|
|
||||||
-- : Temp -> Pol -> RCl -> RS ;
|
-- : Temp -> Pol -> RCl -> RS ;
|
||||||
UseRCl t p cl = {s = \\n,c => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! n ! c} ;
|
UseRCl t p cl = {s = \\g,n,c => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! g ! n ! c} ;
|
||||||
|
|
||||||
-- AdvS : Adv -> S -> S ; -- then I will go home
|
-- AdvS : Adv -> S -> S ; -- then I will go home
|
||||||
AdvS = advS "" ;
|
AdvS = advS "" ;
|
||||||
@@ -65,7 +79,9 @@ lin
|
|||||||
ExtAdvS = advS (SOFT_BIND ++ ",");
|
ExtAdvS = advS (SOFT_BIND ++ ",");
|
||||||
|
|
||||||
-- : S -> Subj -> S -> S ;
|
-- : S -> Subj -> S -> S ;
|
||||||
-- SSubjS s1 subj s2 = AdvS (AK.SubjS subj s2) s1 ;
|
SSubjS s1 subj s2 = {
|
||||||
|
s = s1.s ++ bindComma ++ subj.s ++ s2.s
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : S -> RS -> S ; -- she sleeps, which is good
|
-- : S -> RS -> S ; -- she sleeps, which is good
|
||||||
-- RelS sent rs = advS {s = rs.s ! Sg3 Masc ++ SOFT_BIND ++ ","} sent ;
|
-- RelS sent rs = advS {s = rs.s ! Sg3 Masc ++ SOFT_BIND ++ ","} sent ;
|
||||||
|
|||||||
@@ -121,21 +121,54 @@ lin under_Prep = nomAdp "alatt" ;
|
|||||||
-- Pron
|
-- Pron
|
||||||
|
|
||||||
-- Pronouns are closed class, no constructor in ParadigmsHun.
|
-- Pronouns are closed class, no constructor in ParadigmsHun.
|
||||||
i_Pron = pronTable ! <P1,Sg> ;
|
i_Pron = pronTable ! <P1,Sg> ** {g = Human} ;
|
||||||
youPol_Pron,
|
youPol_Pron,
|
||||||
youSg_Pron = pronTable ! <P2,Sg> ;
|
youSg_Pron = pronTable ! <P2,Sg> ** {g = Human} ;
|
||||||
he_Pron,
|
he_Pron,
|
||||||
she_Pron,
|
she_Pron = pronTable ! <P3,Sg> ** {g = Human} ;
|
||||||
it_Pron = pronTable ! <P3,Sg> ;
|
it_Pron = pronTable ! <P3,Sg> ;
|
||||||
we_Pron = pronTable ! <P1,Pl> ;
|
we_Pron = pronTable ! <P1,Pl> ** {g = Human} ;
|
||||||
youPl_Pron = pronTable ! <P2,Pl> ;
|
youPl_Pron = pronTable ! <P2,Pl> ** {g = Human} ;
|
||||||
they_Pron = pronTable ! <P3,Pl> ;
|
they_Pron = pronTable ! <P3,Pl> ** {g = Human} ;
|
||||||
|
|
||||||
--lin whatPl_IP = ;
|
|
||||||
--lin whatSg_IP = :
|
|
||||||
--lin whoPl_IP = ;
|
|
||||||
--lin whoSg_IP = ;
|
|
||||||
|
|
||||||
|
lin whatPl_IP = emptyNP ** {
|
||||||
|
s = \\_ => caseTable "mi" "mit" "minek"
|
||||||
|
"mibe" "miben" "miből"
|
||||||
|
"mihez" "minél" "mitől"
|
||||||
|
"mire" "min" "miről"
|
||||||
|
"miért" "mivel" "mivé" ;
|
||||||
|
agr = <P3,Pl> ;
|
||||||
|
objdef = Def
|
||||||
|
} ;
|
||||||
|
lin whatSg_IP = emptyNP ** {
|
||||||
|
s = \\_ => caseTable "mi" "mit" "minek"
|
||||||
|
"mibe" "miben" "miből"
|
||||||
|
"mihez" "minél" "mitől"
|
||||||
|
"mire" "min" "miről"
|
||||||
|
"miért" "mivel" "mivé" ;
|
||||||
|
agr = <P3,Sg> ;
|
||||||
|
objdef = Def
|
||||||
|
} ;
|
||||||
|
lin whoPl_IP = emptyNP ** {
|
||||||
|
s = \\_ => caseTable "ki" "kit" "kinek"
|
||||||
|
"kibe" "kiben" "kiből"
|
||||||
|
"kihez" "kinél" "kitől"
|
||||||
|
"kire" "kin" "kiről"
|
||||||
|
"kiért" "kivel" "kivé" ;
|
||||||
|
agr = <P3,Pl> ;
|
||||||
|
objdef = Def ;
|
||||||
|
g = Human
|
||||||
|
} ;
|
||||||
|
lin whoSg_IP = emptyNP ** {
|
||||||
|
s = \\_ => caseTable "ki" "kit" "kinek"
|
||||||
|
"kibe" "kiben" "kiből"
|
||||||
|
"kihez" "kinél" "kitől"
|
||||||
|
"kire" "kin" "kiről"
|
||||||
|
"kiért" "kivel" "kivé" ;
|
||||||
|
agr = <P3,Pl> ;
|
||||||
|
objdef = Def ;
|
||||||
|
g = Human
|
||||||
|
} ;
|
||||||
-------
|
-------
|
||||||
-- Subj
|
-- Subj
|
||||||
|
|
||||||
|
|||||||
@@ -21,48 +21,59 @@ lin
|
|||||||
-- } ;
|
-- } ;
|
||||||
|
|
||||||
-- : VS -> S -> VP ;
|
-- : VS -> S -> VP ;
|
||||||
-- ComplVS vs s =
|
ComplVS vs s = useV vs ** {
|
||||||
-- let vps = useV vs ;
|
adv = "hogy" ++ s.s
|
||||||
-- subord = SubjS {s=""} s ;
|
} ;
|
||||||
-- in vps ** {} ;
|
|
||||||
|
|
||||||
{-
|
|
||||||
-- : VQ -> QS -> VP ;
|
-- : VQ -> QS -> VP ;
|
||||||
ComplVQ vq qs = ;
|
ComplVQ vq qs = useV vq ** {
|
||||||
|
adv = qs.s
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : VA -> AP -> VP ; -- they become red
|
-- : VA -> AP -> VP ; -- they become red
|
||||||
ComplVA va ap = ResHun.insertObj (CompAP ap).s (useV va) ;
|
ComplVA va ap = useV va ** {
|
||||||
|
adv = ap.s ! Sg ! Nom ++ ap.compl ! Sg
|
||||||
|
} ;
|
||||||
|
|
||||||
--------
|
--------
|
||||||
-- Slash
|
-- Slash
|
||||||
-}
|
|
||||||
-- : V2 -> VPSlash
|
-- : V2 -> VPSlash
|
||||||
SlashV2a = ResHun.useVc ;
|
SlashV2a = ResHun.useVc ;
|
||||||
|
|
||||||
{-
|
|
||||||
-- : V3 -> NP -> VPSlash ; -- give it (to her)
|
-- : V3 -> NP -> VPSlash ; -- give it (to her)
|
||||||
|
Slash2V3 v3 np = v3 ** {
|
||||||
|
adv = np.s ! NoPoss ! v3.c2 ++ np.postmod ;
|
||||||
|
c2 = v3.c3
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : V3 -> NP -> VPSlash ; -- give (it) to her
|
-- : V3 -> NP -> VPSlash ; -- give (it) to her
|
||||||
Slash2V3,
|
Slash3V3 v3 np = v3 ** {
|
||||||
Slash3V3 = \v3 -> insertObj (useVc3 v3) ;
|
adv = np.s ! NoPoss ! v3.c3 ++ np.postmod ;
|
||||||
|
c2 = v3.c2
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : V2S -> S -> VPSlash ; -- answer (to him) that it is good
|
-- : V2S -> S -> VPSlash ; -- answer (to him) that it is good
|
||||||
SlashV2S v2s s =
|
SlashV2S v2s s = useVc v2s ** {
|
||||||
let vps = useVc v2s ;
|
adv = "hogy" ++ s.s
|
||||||
subord = SubjS {s=""} s ;
|
} ;
|
||||||
in vps ** {obj = } ;
|
|
||||||
|
|
||||||
|
|
||||||
-- : V2V -> VP -> VPSlash ; -- beg (her) to go
|
-- : V2V -> VP -> VPSlash ; -- beg (her) to go
|
||||||
SlashV2V v2v vp = ;
|
SlashV2V v2v vp = useVc v2v ** {
|
||||||
|
adv = infVP vp
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : V2Q -> QS -> VPSlash ; -- ask (him) who came
|
-- : V2Q -> QS -> VPSlash ; -- ask (him) who came
|
||||||
SlashV2Q v2q qs = ;
|
SlashV2Q v2q qs = useVc v2q ** {
|
||||||
|
adv = qs.s
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : V2A -> AP -> VPSlash ; -- paint (it) red
|
-- : V2A -> AP -> VPSlash ; -- paint (it) red
|
||||||
SlashV2A v2a ap = useVc v2a ** {
|
SlashV2A v2a ap = useVc v2a ** {
|
||||||
aComp = \\_ => (CompAP ap).aComp ! Sg3 Masc
|
adv = ap.s ! Sg ! Nom ++ ap.compl ! Sg
|
||||||
} ;
|
} ;
|
||||||
-}
|
|
||||||
-- : VPSlash -> NP -> VP
|
-- : VPSlash -> NP -> VP
|
||||||
ComplSlash = insertObj ;
|
ComplSlash = insertObj ;
|
||||||
{-
|
{-
|
||||||
@@ -89,19 +100,27 @@ lin
|
|||||||
|
|
||||||
-- : VPSlash -> Adv -> VPSlash ; -- use (it) here
|
-- : VPSlash -> Adv -> VPSlash ; -- use (it) here
|
||||||
AdvVPSlash = insertAdvSlash ;
|
AdvVPSlash = insertAdvSlash ;
|
||||||
{-
|
|
||||||
-- : VP -> Adv -> VP ; -- sleep , even though ...
|
-- : VP -> Adv -> VP ; -- sleep , even though ...
|
||||||
ExtAdvVP vp adv = vp ** { } ;
|
ExtAdvVP vp adv = vp ** {
|
||||||
|
adv = vp.adv ++ bindComma ++ adv.s
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : AdV -> VP -> VP ; -- always sleep
|
-- : AdV -> VP -> VP ; -- always sleep
|
||||||
AdVVP adv vp = vp ** { } ;
|
AdVVP adv vp = vp ** {
|
||||||
|
s = \\vf => adv.s ++ vp.s ! vf
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : AdV -> VPSlash -> VPSlash ; -- always use (it)
|
-- : AdV -> VPSlash -> VPSlash ; -- always use (it)
|
||||||
AdVVPSlash adv vps = vps ** { } ;
|
AdVVPSlash adv vps = vps ** {
|
||||||
|
s = \\o,vf => adv.s ++ vps.s ! o ! vf
|
||||||
|
} ;
|
||||||
|
|
||||||
-- : VP -> Prep -> VPSlash ; -- live in (it)
|
-- : VP -> Prep -> VPSlash ; -- live in (it)
|
||||||
VPSlashPrep vp prep =
|
VPSlashPrep vp prep = vp ** {
|
||||||
-}
|
s = \\_ => vp.s ;
|
||||||
|
adv = vp.obj ++ vp.adv ++ prep.s ;
|
||||||
|
c2 = prep.c
|
||||||
|
} ;
|
||||||
|
|
||||||
--2 Complements to copula
|
--2 Complements to copula
|
||||||
|
|
||||||
@@ -111,8 +130,10 @@ lin
|
|||||||
CompAP ap = UseCopula ** {
|
CompAP ap = UseCopula ** {
|
||||||
s = \\vf => case vf of {
|
s = \\vf => case vf of {
|
||||||
VPres P3 n => ap.s ! n ! Nom ++ ap.compl ! n ;
|
VPres P3 n => ap.s ! n ! Nom ++ ap.compl ! n ;
|
||||||
VPres _ n => ap.s ! n ! Nom ++ copula.s ! vf ++ ap.compl ! n ;
|
VPres _ n => ap.s ! n ! Nom ++ copula.s ! vf ++ ap.compl ! n ;
|
||||||
_ => ap.s ! Sg ! Nom ++ copula.s ! vf ++ ap.compl ! Sg } ;
|
VPast _ n => ap.s ! n ! Nom ++ copula.s ! vf ++ ap.compl ! n ;
|
||||||
|
_ => ap.s ! Sg ! Nom ++ copula.s ! vf ++ ap.compl ! Sg
|
||||||
|
} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- : CN -> Comp ;
|
-- : CN -> Comp ;
|
||||||
@@ -164,9 +185,13 @@ insertObj : ResHun.VPSlash -> NounPhrase -> VerbPhrase = \vps,np -> vps ** {
|
|||||||
<SCDat,Nom> =>
|
<SCDat,Nom> =>
|
||||||
let agr : Person*Number = case vf of {
|
let agr : Person*Number = case vf of {
|
||||||
VPres p n => <p,n> ;
|
VPres p n => <p,n> ;
|
||||||
|
VPast p n => <p,n> ;
|
||||||
_ => <P3,Sg> } ;
|
_ => <P3,Sg> } ;
|
||||||
|
objvf : VForm = case vf of {
|
||||||
|
VPast _ _ => VPast np.agr.p1 np.agr.p2 ;
|
||||||
|
_ => VPres np.agr.p1 np.agr.p2 } ;
|
||||||
in np.s ! Poss agr.p1 agr.p2 ! vps.c2
|
in np.s ! Poss agr.p1 agr.p2 ! vps.c2
|
||||||
++ vps.s ! np.objdef ! agr2vf np.agr ;
|
++ vps.s ! np.objdef ! objvf ;
|
||||||
|
|
||||||
-- Default case: Verb agrees in person and number with subject
|
-- Default case: Verb agrees in person and number with subject
|
||||||
_ => vps.s ! np.objdef ! vf } ;
|
_ => vps.s ! np.objdef ! vf } ;
|
||||||
|
|||||||
@@ -1,13 +1,69 @@
|
|||||||
concrete CatKaz of Cat = CommonX ** open ResKaz in {
|
concrete CatKaz of Cat = CommonX ** open Prelude,ResKaz in {
|
||||||
|
lincat A = {s : Str} ;
|
||||||
lincat N = Noun ;
|
lincat A2 = A ** {c2 : Compl} ;
|
||||||
lincat N2 = Noun ** {c2 : Compl} ;
|
lincat ACard = {s : Str} ;
|
||||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
lincat AP = {s : Str} ;
|
||||||
lincat V, VA, VV, VS, VQ = Verb ;
|
lincat CN = {s : Case => Str} ;
|
||||||
lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
|
lincat Card = {s : Str} ;
|
||||||
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
lincat Cl = {infinitive : Case => Str} ;
|
||||||
lincat A = {s : Str} ;
|
lincat ClSlash = {s : Str} ;
|
||||||
lincat A2 = A ** {c2 : Compl} ;
|
lincat Comp = {s : Str} ;
|
||||||
lincat Prep = Compl ;
|
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 -> {
|
InflectionVQ, InflectionVA = \x -> {
|
||||||
t="v" ;
|
t="v" ;
|
||||||
s1="" ;
|
s1="" ;
|
||||||
s2=heading2 "Infinitive" ++ paragraph (x.Infinitive) ++
|
s2=heading2 "Infinitive" ++ paragraph (x.infinitive) ++
|
||||||
-- tr (th "Indicative" ++ th "Fut" ++ td (x.Indicative.Fut)) ++
|
-- tr (th "Indicative" ++ th "Fut" ++ td (x.indicative.Fut)) ++
|
||||||
heading2 "Present"++
|
heading2 "Present"++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.noAspect ! Pos ! P1 ! Sg)) ++
|
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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (th "Pl" ++ td (x.indicative.pres.noAspect ! Neg ! P3 ! Pl))) ++
|
||||||
heading2 "Present Progressive"++
|
heading2 "Present Progressive"++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Pres.Progressive ! Pos ! P1 ! Sg))++
|
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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (th "Pl" ++ td (x.indicative.pres.progressive ! Neg ! P3 ! Pl))) ++
|
||||||
heading2 "Past" ++
|
heading2 "Past" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.noAspect ! Pos ! P1 ! Sg)) ++
|
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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (th "Pl" ++ td (x.indicative.past.noAspect ! Neg ! P3 ! Pl))) ++
|
||||||
heading2 "Past Perfect" ++
|
heading2 "Past Perfect" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Perfect ! Pos ! P1 ! Sg)) ++
|
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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (th "Pl" ++ td (x.indicative.past.perfect ! Neg ! P3 ! Pl))) ++
|
||||||
heading2 "Past Progressive" ++
|
heading2 "Past Progressive" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (intagAttr "th" "rowspan=\"6\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Indicative.Past.Progressive ! Pos ! P1 ! Sg)) ++
|
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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (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 (th "Pl" ++ td (x.indicative.past.progressive ! Neg ! P3 ! Pl))) ++
|
||||||
heading2 "Imperative" ++
|
heading2 "Imperative" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (intagAttr "th" "rowspan=\"4\"" "Pos" ++ intagAttr "th" "rowspan=\"2\"" "Informal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Pos ! Informal ! Sg)) ++
|
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_Jussive ! Pos ! Informal ! Pl)) ++
|
tr (th "Pl" ++ td (x.imperative ! Pos ! Informal ! Pl)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Pos ! Formal ! Sg)) ++
|
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.imperative ! Pos ! Formal ! Sg)) ++
|
||||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Pos ! Formal ! Pl)) ++
|
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_Jussive ! Neg ! Informal ! Sg)) ++
|
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_Jussive ! Neg ! Informal ! Pl)) ++
|
tr (th "Pl" ++ td (x.imperative ! Neg ! Informal ! Pl)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.Imperative_Jussive ! Neg ! Formal ! Sg)) ++
|
tr (intagAttr "th" "rowspan=\"2\"" "Formal" ++ th "Sg" ++ td (x.imperative ! Neg ! Formal ! Sg)) ++
|
||||||
tr (th "Pl" ++ td (x.Imperative_Jussive ! Neg ! Formal ! Pl))) ++
|
tr (th "Pl" ++ td (x.imperative ! Neg ! Formal ! Pl))) ++
|
||||||
heading2 "Subjunctive" ++
|
heading2 "Subjunctive" ++
|
||||||
frameTable (
|
frameTable (
|
||||||
tr (intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.Subjunctive ! P1 ! Sg)) ++
|
tr (intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td (x.subjunctive ! P1 ! Sg)) ++
|
||||||
tr (th "Pl" ++ td (x.Subjunctive ! P1 ! Pl)) ++
|
tr (th "Pl" ++ td (x.subjunctive ! P1 ! Pl)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Informal" ++ th "Sg" ++ td (x.Subjunctive ! P2 Informal ! Sg)) ++
|
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 (th "Pl" ++ td (x.subjunctive ! P2 Informal ! Pl)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"2\"" "P2 Formal" ++ th "Sg" ++ td (x.Subjunctive ! P2 Formal ! Sg)) ++
|
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 (th "Pl" ++ td (x.subjunctive ! P2 Formal ! Pl)) ++
|
||||||
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.Subjunctive ! P3 ! Sg)) ++
|
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td (x.subjunctive ! P3 ! Sg)) ++
|
||||||
tr (th "Pl" ++ td (x.Subjunctive ! P3 ! Pl))) ;
|
tr (th "Pl" ++ td (x.subjunctive ! P3 ! Pl))) ;
|
||||||
s3=[]
|
s3=[]
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -81,12 +81,12 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str
|
|||||||
|
|
||||||
|
|
||||||
param Polarity = Pos | Neg ;
|
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 =
|
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 ->
|
\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 ;
|
{ infinitive = f1 ;
|
||||||
Indicative = { Fut = f2 ;
|
indicative = { fut = f2 ;
|
||||||
Pres = { Progressive = table {
|
pres = { progressive = table {
|
||||||
Pos => table {
|
Pos => table {
|
||||||
P1 => table {
|
P1 => table {
|
||||||
Sg => f3 ;
|
Sg => f3 ;
|
||||||
@@ -163,7 +163,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
Past = { Perfect = table {
|
past = { perfect = table {
|
||||||
Pos => table {
|
Pos => table {
|
||||||
P1 => table {
|
P1 => table {
|
||||||
Sg => f35 ;
|
Sg => f35 ;
|
||||||
@@ -201,7 +201,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
Progressive = table {
|
progressive = table {
|
||||||
Pos => table {
|
Pos => table {
|
||||||
P1 => table {
|
P1 => table {
|
||||||
Sg => f51 ;
|
Sg => f51 ;
|
||||||
@@ -279,7 +279,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
Imperative_Jussive = table {
|
imperative = table {
|
||||||
Pos => table {
|
Pos => table {
|
||||||
Informal => table {
|
Informal => table {
|
||||||
Sg => f83 ;
|
Sg => f83 ;
|
||||||
@@ -301,7 +301,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
Subjunctive = table {
|
subjunctive = table {
|
||||||
P1 => table {
|
P1 => table {
|
||||||
Sg => f91 ;
|
Sg => f91 ;
|
||||||
Pl => f92
|
Pl => f92
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--# -path=.:abstract:common:prelude
|
--# -path=.:abstract:common:prelude
|
||||||
|
|
||||||
concrete CatLav of Cat = CommonX - [Adv, CAdv] ** open ResLav, Prelude in {
|
concrete CatLav of Cat = CommonX - [Adv, CAdv, Voc] ** open ResLav, Prelude in {
|
||||||
|
|
||||||
flags
|
flags
|
||||||
|
|
||||||
@@ -110,7 +110,18 @@ lincat
|
|||||||
|
|
||||||
N3 = Noun ** {prep1, prep2 : Preposition ; isPre1, isPre2 : Bool} ;
|
N3 = Noun ** {prep1, prep2 : Preposition ; isPre1, isPre2 : Bool} ;
|
||||||
|
|
||||||
PN,LN = ProperNoun ;
|
-- TODO Make most proper nouns more similar to nouns:
|
||||||
|
-- (1) given names GN should have both numbers (to fit with Tēzaurs and to be
|
||||||
|
-- able to express that there are multiple people in the room with the
|
||||||
|
-- same name)
|
||||||
|
-- (2) family names SN being inflected on gender doesn't fit neither with
|
||||||
|
-- Tēzaurs, nor with the fact that for some masc surnames there are
|
||||||
|
-- multiple legaly valid fem variants
|
||||||
|
-- (3) if PN is meant to be generic proper noun, it might also be inflected
|
||||||
|
-- in number
|
||||||
|
-- In general Latvian tends to make every noun inflectable in all cases/numbers,
|
||||||
|
-- the plural-only placenames like "Cēsis" is the one very stable exception.
|
||||||
|
PN,LN = ProperNoun ;
|
||||||
GN = {s : Case => Str ; gend : Gender} ;
|
GN = {s : Case => Str ; gend : Gender} ;
|
||||||
SN = {s : Gender => Case => Str; pl : Case => Str} ;
|
SN = {s : Gender => Case => Str; pl : Case => Str} ;
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,8 @@ oper
|
|||||||
mkNounByDeclPal : Str -> Declension -> Bool -> Noun = \lemma,decl,pal ->
|
mkNounByDeclPal : Str -> Declension -> Bool -> Noun = \lemma,decl,pal ->
|
||||||
case decl of {
|
case decl of {
|
||||||
D0|D1|D2|D3 => mkNounByGendDeclPal lemma Masc decl pal ;
|
D0|D1|D2|D3 => mkNounByGendDeclPal lemma Masc decl pal ;
|
||||||
D4|D5|D6|DR => mkNounByGendDeclPal lemma Fem decl pal
|
D4|D5|D6|DR => mkNounByGendDeclPal lemma Fem decl pal ;
|
||||||
|
DG => mkNounByGendDeclPal nonExist Fem decl pal -- FIX ME REMAKE
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Specified gender and declension; default palatalization
|
-- Specified gender and declension; default palatalization
|
||||||
@@ -97,7 +98,8 @@ oper
|
|||||||
D4 => mkNoun_D4 lemma gend ;
|
D4 => mkNoun_D4 lemma gend ;
|
||||||
D5 => mkNoun_D5 lemma gend pal ;
|
D5 => mkNoun_D5 lemma gend pal ;
|
||||||
D6 => mkNoun_D6 lemma gend pal ;
|
D6 => mkNoun_D6 lemma gend pal ;
|
||||||
DR => mkNoun_DR lemma
|
DR => mkNoun_DR lemma ;
|
||||||
|
DG => mkNoun_DR nonExist -- FIX ME REMAKE
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Indeclinable noun
|
-- Indeclinable noun
|
||||||
|
|||||||
@@ -43,13 +43,15 @@ oper
|
|||||||
mkRegVerb : Str -> Conjugation -> Verb_TMP = \lemma,conj ->
|
mkRegVerb : Str -> Conjugation -> Verb_TMP = \lemma,conj ->
|
||||||
case conj of {
|
case conj of {
|
||||||
C2 => mkVerb_C2 lemma ;
|
C2 => mkVerb_C2 lemma ;
|
||||||
C3 => mkVerb_C3 lemma
|
C3 => mkVerb_C3 lemma ;
|
||||||
|
C1|CI => mkVerb_C3 nonExist -- FIX ME REMAKE
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkReflVerb : Str -> Conjugation -> Verb_TMP = \lemma,conj ->
|
mkReflVerb : Str -> Conjugation -> Verb_TMP = \lemma,conj ->
|
||||||
case conj of {
|
case conj of {
|
||||||
C2 => mkVerb_C2_Refl lemma ;
|
C2 => mkVerb_C2_Refl lemma ;
|
||||||
C3 => mkVerb_C3_Refl lemma
|
C3 => mkVerb_C3_Refl lemma ;
|
||||||
|
C1|CI => mkVerb_C3_Refl nonExist -- FIX ME REMAKE
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
filter_Neg : Verb_TMP -> Verb_TMP = \full -> {
|
filter_Neg : Verb_TMP -> Verb_TMP = \full -> {
|
||||||
|
|||||||
574
src/latvian/PortedMorphoParadigmsLav.gf
Normal file
574
src/latvian/PortedMorphoParadigmsLav.gf
Normal file
@@ -0,0 +1,574 @@
|
|||||||
|
--# -path=.:abstract:common:prelude
|
||||||
|
|
||||||
|
-- Contents of this file are automatically ported paradigms from
|
||||||
|
-- https://github.com/LUMII-AILab/Morphology/blob/master/src/main/resources/Lexicon_v2.xml
|
||||||
|
-- NB: Do NOT edit this without consulting lauma@ailab.lv or normundsg@ailab.lv
|
||||||
|
-- Otherwise your changes might get accidentally revoked!
|
||||||
|
|
||||||
|
resource PortedMorphoParadigmsLav = open PortedMorphoStemchangesLav, ResLav in {
|
||||||
|
|
||||||
|
flags coding = utf8 ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
|
||||||
|
noun_1a_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stem + "us" ;
|
||||||
|
Dat => stem + "iem" ;
|
||||||
|
Loc => stem + "os" ;
|
||||||
|
Nom => stem + "i" ;
|
||||||
|
Voc => stem + "i" ;
|
||||||
|
Gen => stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "u" ;
|
||||||
|
Dat => stem + "am" ;
|
||||||
|
Loc => stem + "ā" ;
|
||||||
|
Nom => stem + "s" ;
|
||||||
|
Voc => variants { stem + "s" ; stem + "" } ;
|
||||||
|
Gen => stem + "a"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_1a_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "s" => noun_1a_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_1a_fromLemma is only applicable for words that end in -s, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_1a_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "i" => noun_1a_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_1a_fromNomPl is only applicable for words that end in -i, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_1b_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stem + "us" ;
|
||||||
|
Dat => stem + "iem" ;
|
||||||
|
Loc => stem + "os" ;
|
||||||
|
Nom => stem + "i" ;
|
||||||
|
Voc => stem + "i" ;
|
||||||
|
Gen => stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "u" ;
|
||||||
|
Dat => stem + "am" ;
|
||||||
|
Loc => stem + "ā" ;
|
||||||
|
Nom => stem + "š" ;
|
||||||
|
Voc => variants { stem + "š" ; stem + "" } ;
|
||||||
|
Gen => stem + "a"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_1b_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "š" => noun_1b_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_1b_fromLemma is only applicable for words that end in -š, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_1b_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "i" => noun_1b_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_1b_fromNomPl is only applicable for words that end in -i, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_2a_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stemchangeSimple 1 stem + "us" ;
|
||||||
|
Dat => stemchangeSimple 1 stem + "iem" ;
|
||||||
|
Loc => stemchangeSimple 1 stem + "os" ;
|
||||||
|
Nom => stemchangeSimple 1 stem + "i" ;
|
||||||
|
Voc => stemchangeSimple 1 stem + "i" ;
|
||||||
|
Gen => stemchangeSimple 1 stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "i" ;
|
||||||
|
Dat => stem + "im" ;
|
||||||
|
Loc => stem + "ī" ;
|
||||||
|
Nom => stem + "is" ;
|
||||||
|
Voc => stem + "i" ;
|
||||||
|
Gen => stemchangeSimple 1 stem + "a"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_2a_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "is" => noun_2a_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_2a_fromLemma is only applicable for words that end in -is, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_2a_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "i" => noun_2a_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_2a_fromNomPl is only applicable for words that end in -i, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_2c_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stemchangeSimple 1 stem + "us" ;
|
||||||
|
Dat => stemchangeSimple 1 stem + "iem" ;
|
||||||
|
Loc => stemchangeSimple 1 stem + "os" ;
|
||||||
|
Nom => stemchangeSimple 1 stem + "i" ;
|
||||||
|
Voc => stemchangeSimple 1 stem + "i" ;
|
||||||
|
Gen => stemchangeSimple 1 stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "i" ;
|
||||||
|
Dat => stem + "im" ;
|
||||||
|
Loc => stem + "ī" ;
|
||||||
|
Nom => stem + "s" ;
|
||||||
|
Voc => variants { stem + "" ; stem + "s" } ;
|
||||||
|
Gen => stem + "s"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_2c_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "s" => noun_2c_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_2c_fromLemma is only applicable for words that end in -s, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_2c_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "i" => noun_2c_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_2c_fromNomPl is only applicable for words that end in -i, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_2d_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stemchangeSimple 1 stem + "us" ;
|
||||||
|
Dat => stemchangeSimple 1 stem + "iem" ;
|
||||||
|
Loc => stemchangeSimple 1 stem + "os" ;
|
||||||
|
Nom => stemchangeSimple 1 stem + "i" ;
|
||||||
|
Voc => stemchangeSimple 1 stem + "i" ;
|
||||||
|
Gen => stemchangeSimple 1 stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "i" ;
|
||||||
|
Dat => stem + "im" ;
|
||||||
|
Loc => stem + "ī" ;
|
||||||
|
Nom => stem + "s" ;
|
||||||
|
Voc => stem + "i" ;
|
||||||
|
Gen => stemchangeSimple 1 stem + "a"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_2d_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "s" => noun_2d_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_2d_fromLemma is only applicable for words that end in -s, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_2d_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "i" => noun_2d_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_2d_fromNomPl is only applicable for words that end in -i, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_3m_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stem + "us" ;
|
||||||
|
Dat => stem + "iem" ;
|
||||||
|
Loc => stem + "os" ;
|
||||||
|
Nom => stem + "i" ;
|
||||||
|
Voc => stem + "i" ;
|
||||||
|
Gen => stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "u" ;
|
||||||
|
Dat => stem + "um" ;
|
||||||
|
Loc => stem + "ū" ;
|
||||||
|
Nom => stem + "us" ;
|
||||||
|
Voc => variants { stem + "us" ; stem + "u" } ;
|
||||||
|
Gen => stem + "us"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_3m_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "us" => noun_3m_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_3m_fromLemma is only applicable for words that end in -us, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_3m_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "i" => noun_3m_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_3m_fromNomPl is only applicable for words that end in -i, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_4f_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stem + "as" ;
|
||||||
|
Dat => stem + "ām" ;
|
||||||
|
Loc => stem + "ās" ;
|
||||||
|
Nom => stem + "as" ;
|
||||||
|
Voc => stem + "as" ;
|
||||||
|
Gen => stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "u" ;
|
||||||
|
Dat => stem + "ai" ;
|
||||||
|
Loc => stem + "ā" ;
|
||||||
|
Nom => stem + "a" ;
|
||||||
|
Voc => variants { stem + "a" ; stemchangeSimple 17 stem + "" } ;
|
||||||
|
Gen => stem + "as"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Fem
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_4f_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "a" => noun_4f_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_4f_fromLemma is only applicable for words that end in -a, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_4f_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "as" => noun_4f_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_4f_fromNomPl is only applicable for words that end in -as, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_4m_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stem + "as" ;
|
||||||
|
Dat => stem + "ām" ;
|
||||||
|
Loc => stem + "ās" ;
|
||||||
|
Nom => stem + "as" ;
|
||||||
|
Voc => stem + "as" ;
|
||||||
|
Gen => stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "u" ;
|
||||||
|
Dat => stem + "am" ;
|
||||||
|
Loc => stem + "ā" ;
|
||||||
|
Nom => stem + "a" ;
|
||||||
|
Voc => stem + "a" ;
|
||||||
|
Gen => stem + "as"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_4m_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "a" => noun_4m_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_4m_fromLemma is only applicable for words that end in -a, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_4m_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "as" => noun_4m_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_4m_fromNomPl is only applicable for words that end in -as, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_5fa_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stem + "es" ;
|
||||||
|
Dat => stem + "ēm" ;
|
||||||
|
Loc => stem + "ēs" ;
|
||||||
|
Nom => stem + "es" ;
|
||||||
|
Voc => stem + "es" ;
|
||||||
|
Gen => stemchangeSimple 1 stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "i" ;
|
||||||
|
Dat => stem + "ei" ;
|
||||||
|
Loc => stem + "ē" ;
|
||||||
|
Nom => stem + "e" ;
|
||||||
|
Voc => variants { stem + "e" ; stemchangeSimple 17 stem + "" } ;
|
||||||
|
Gen => stem + "es"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Fem
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_5fa_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "e" => noun_5fa_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_5fa_fromLemma is only applicable for words that end in -e, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_5fa_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "es" => noun_5fa_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_5fa_fromNomPl is only applicable for words that end in -es, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_5ma_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stem + "es" ;
|
||||||
|
Dat => stem + "ēm" ;
|
||||||
|
Loc => stem + "ēs" ;
|
||||||
|
Nom => stem + "es" ;
|
||||||
|
Voc => stem + "es" ;
|
||||||
|
Gen => stemchangeSimple 1 stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "i" ;
|
||||||
|
Dat => stem + "em" ;
|
||||||
|
Loc => stem + "ē" ;
|
||||||
|
Nom => stem + "e" ;
|
||||||
|
Voc => stem + "e" ;
|
||||||
|
Gen => stem + "es"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_5ma_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "e" => noun_5ma_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_5ma_fromLemma is only applicable for words that end in -e, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_5ma_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "es" => noun_5ma_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_5ma_fromNomPl is only applicable for words that end in -es, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_6a_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stem + "is" ;
|
||||||
|
Dat => stem + "īm" ;
|
||||||
|
Loc => stem + "īs" ;
|
||||||
|
Nom => stem + "is" ;
|
||||||
|
Voc => stem + "is" ;
|
||||||
|
Gen => stemchangeSimple 1 stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "i" ;
|
||||||
|
Dat => stem + "ij" ;
|
||||||
|
Loc => stem + "ī" ;
|
||||||
|
Nom => stem + "s" ;
|
||||||
|
Voc => stem + "s" ;
|
||||||
|
Gen => stem + "s"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Fem
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_6a_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "s" => noun_6a_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_6a_fromLemma is only applicable for words that end in -s, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_6a_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "is" => noun_6a_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_6a_fromNomPl is only applicable for words that end in -is, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_3f_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stem + "us" ;
|
||||||
|
Dat => stem + "ūm" ;
|
||||||
|
Loc => stem + "ūs" ;
|
||||||
|
Nom => stem + "us" ;
|
||||||
|
Voc => stem + "us" ;
|
||||||
|
Gen => stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "u" ;
|
||||||
|
Dat => stem + "ui" ;
|
||||||
|
Loc => stem + "ū" ;
|
||||||
|
Nom => stem + "us" ;
|
||||||
|
Voc => variants { stem + "us" ; stem + "u" } ;
|
||||||
|
Gen => stem + "us"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Fem
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_3f_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "us" => noun_3f_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_3f_fromLemma is only applicable for words that end in -us, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_3f_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "us" => noun_3f_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_3f_fromNomPl is only applicable for words that end in -us, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_6b_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stem + "is" ;
|
||||||
|
Dat => stem + "īm" ;
|
||||||
|
Loc => stem + "īs" ;
|
||||||
|
Nom => stem + "is" ;
|
||||||
|
Voc => stem + "is" ;
|
||||||
|
Gen => stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "i" ;
|
||||||
|
Dat => stem + "ij" ;
|
||||||
|
Loc => stem + "ī" ;
|
||||||
|
Nom => stem + "s" ;
|
||||||
|
Voc => stem + "s" ;
|
||||||
|
Gen => stem + "s"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Fem
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_6b_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "s" => noun_6b_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_6b_fromLemma is only applicable for words that end in -s, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_6b_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "is" => noun_6b_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_6b_fromNomPl is only applicable for words that end in -is, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_5fb_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stem + "es" ;
|
||||||
|
Dat => stem + "ēm" ;
|
||||||
|
Loc => stem + "ēs" ;
|
||||||
|
Nom => stem + "es" ;
|
||||||
|
Voc => stem + "es" ;
|
||||||
|
Gen => stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "i" ;
|
||||||
|
Dat => stem + "ei" ;
|
||||||
|
Loc => stem + "ē" ;
|
||||||
|
Nom => stem + "e" ;
|
||||||
|
Voc => variants { stem + "e" ; stemchangeSimple 17 stem + "" } ;
|
||||||
|
Gen => stem + "es"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Fem
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_5fb_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "e" => noun_5fb_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_5fb_fromLemma is only applicable for words that end in -e, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_5fb_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "es" => noun_5fb_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_5fb_fromNomPl is only applicable for words that end in -es, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_5mb_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stem + "es" ;
|
||||||
|
Dat => stem + "ēm" ;
|
||||||
|
Loc => stem + "ēs" ;
|
||||||
|
Nom => stem + "es" ;
|
||||||
|
Voc => stem + "es" ;
|
||||||
|
Gen => stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "i" ;
|
||||||
|
Dat => stem + "em" ;
|
||||||
|
Loc => stem + "ē" ;
|
||||||
|
Nom => stem + "e" ;
|
||||||
|
Voc => stem + "e" ;
|
||||||
|
Gen => stem + "es"
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_5mb_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "e" => noun_5mb_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_5mb_fromLemma is only applicable for words that end in -e, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_5mb_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "es" => noun_5mb_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_5mb_fromNomPl is only applicable for words that end in -es, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_2b_fromStems : Str -> Noun = \stem ->
|
||||||
|
{
|
||||||
|
s = table {
|
||||||
|
Pl => table {
|
||||||
|
Acc => stem + "us" ;
|
||||||
|
Dat => stem + "iem" ;
|
||||||
|
Loc => stem + "os" ;
|
||||||
|
Nom => stem + "i" ;
|
||||||
|
Voc => stem + "i" ;
|
||||||
|
Gen => stem + "u"
|
||||||
|
} ;
|
||||||
|
Sg => table {
|
||||||
|
Acc => stem + "i" ;
|
||||||
|
Dat => stem + "im" ;
|
||||||
|
Loc => stem + "ī" ;
|
||||||
|
Nom => stem + "is" ;
|
||||||
|
Voc => stem + "i" ;
|
||||||
|
Gen => variants { stem + "a" ; stemchangeSimple 1 stem + "a" }
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
gend = Masc
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_2b_fromLemma : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "is" => noun_2b_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_2b_fromLemma is only applicable for words that end in -is, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
noun_2b_fromNomPl : Str -> Noun = \lemma ->
|
||||||
|
case lemma of {
|
||||||
|
stem + "i" => noun_2b_fromStems stem ;
|
||||||
|
_ => Predef.error ("noun_2b_fromNomPl is only applicable for words that end in -i, tried to apply to" ++ lemma)
|
||||||
|
} ;
|
||||||
|
}
|
||||||
|
|
||||||
105
src/latvian/PortedMorphoStemchangesLav.gf
Normal file
105
src/latvian/PortedMorphoStemchangesLav.gf
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
--# -path=.:abstract:common:prelude
|
||||||
|
|
||||||
|
-- Here goes manually ported stemchanges from
|
||||||
|
-- https://github.com/LUMII-AILab/Morphology/blob/master/src/main/java/lv/semti/morphology/analyzer/Mijas.java
|
||||||
|
|
||||||
|
resource PortedMorphoStemchangesLav = open Prelude, Predef, ResLav in {
|
||||||
|
|
||||||
|
flags coding = utf8 ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
|
||||||
|
stemchangeSimple : Int -> Str -> Str = \parId,stem ->
|
||||||
|
case parId of {
|
||||||
|
0 => stem ;
|
||||||
|
|
||||||
|
-- For nouns we need changes 0, 1, 17
|
||||||
|
1 => case stem of { -- nouns
|
||||||
|
s + ("kst") => s + "kš" ;
|
||||||
|
s + ("nst") => s + "nš" ;
|
||||||
|
s + ("ll") => s + "ļļ" ;
|
||||||
|
s + ("sl") => s + "šļ" ;
|
||||||
|
s + ("zl") => s + "žļ" ;
|
||||||
|
s + ("ln") => s + "ļņ" ;
|
||||||
|
s + ("nn") => s + "ņņ" ;
|
||||||
|
s + ("sn") => s + "šņ" ;
|
||||||
|
s + ("zn") => s + "žņ" ;
|
||||||
|
s + ("īt") => s + "īš" ;
|
||||||
|
s + ("d") => s + "ž" ;
|
||||||
|
s + ("t") => s + "š" ;
|
||||||
|
s + ("n") => s + "ņ" ;
|
||||||
|
s + ("s") => s + "š" ;
|
||||||
|
s + ("z") => s + "ž" ;
|
||||||
|
s + ("b"|"f"|"m"|"p"|"v") => stem + "j" ;
|
||||||
|
|
||||||
|
_ => stem
|
||||||
|
} ;
|
||||||
|
|
||||||
|
17 => case <stem, countSyllables stem > of { -- shortened vocative for fem nouns
|
||||||
|
<s + ("īt"|"iņ"), _ > => stem ;
|
||||||
|
--<_, 0|1> => variants {} ;
|
||||||
|
<_, 0|1> => nonExist ; -- Exception
|
||||||
|
<_, _> => stem
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- For full adjectives we need changes 0, 3, 34, 13
|
||||||
|
|
||||||
|
_ => error ("Unsupported stemchange")
|
||||||
|
};
|
||||||
|
|
||||||
|
stemchangeForAdjAdv : Int -> Str -> Definiteness -> Degree -> Str = \parId,stem,defi,deg ->
|
||||||
|
case parId of {
|
||||||
|
3 => case stem of {
|
||||||
|
s + "āk" => case deg of {
|
||||||
|
Posit => stem ;
|
||||||
|
_ => nonExist -- TODO what should go there for nonexisting forms?
|
||||||
|
};
|
||||||
|
_ => case deg of {
|
||||||
|
Posit => stem ;
|
||||||
|
Compar => stem + "āk" ;
|
||||||
|
Superl => case defi of {
|
||||||
|
Def => "vis" + stem + "āk" ;
|
||||||
|
Indef => nonExist
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
34 => case deg of { -- pēdēj-ais -> pēdē-jam, zaļ-š -> zaļa-jam
|
||||||
|
Posit => case stem of {
|
||||||
|
s + "ēj" => s + "ē" ;
|
||||||
|
_ => stem + "a"
|
||||||
|
} ;
|
||||||
|
Compar => stem + "āka" ;
|
||||||
|
Superl => case defi of {
|
||||||
|
Def => "vis" + stem + "āka" ;
|
||||||
|
Indef => nonExist
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
_ => case deg of { _ => stemchangeSimple parId stem }
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Inari's trick for counting syllables https://inariksit.github.io/gf/2018/08/28/gf-gotchas.html#cute-way-to-count-syllables
|
||||||
|
-- pattern macro for vowels
|
||||||
|
v : pattern Str = #("a"|"ā"|"e"|"ē"|"i"|"ī"|"o"|"u"|"ū") ;
|
||||||
|
|
||||||
|
-- type alias for the helper function
|
||||||
|
SylCnt : Type = Bool -> Str -> Ints 10 ;
|
||||||
|
|
||||||
|
countSyllables : Str -> Ints 10 = go count False
|
||||||
|
where { -- synonym of let
|
||||||
|
go : SylCnt -> SylCnt = \f,wasVowel,word -> -- These three arguments come from the fact that SylCnt is the abovedefined 3rd order function.
|
||||||
|
case <word,wasVowel> of {
|
||||||
|
<#v + s, False> => Predef.plus (f True s) 1 ;
|
||||||
|
<#v + s, True> => f True s ;
|
||||||
|
<? + s, _> => f False s ;
|
||||||
|
_ => 0
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- end of recursion
|
||||||
|
scBase : SylCnt = \_,_ -> 0 ;
|
||||||
|
|
||||||
|
-- the function given to countSyllables
|
||||||
|
count : SylCnt = go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go (go scBase)))))))))))))))))))))))))))))))))))))))
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
53
src/latvian/PortedMorphoUtilsLav.gf
Normal file
53
src/latvian/PortedMorphoUtilsLav.gf
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
--# -path=.:abstract:common:prelude
|
||||||
|
|
||||||
|
-- Here goes manually made utils used for automaticaly exported Tēzaurs lexicon.
|
||||||
|
|
||||||
|
resource PortedMorphoUtilsLav = open Prelude, Predef, ResLav in {
|
||||||
|
|
||||||
|
flags coding = utf8 ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
|
||||||
|
changeNounForm : Number -> Case -> Str -> Noun -> Noun =
|
||||||
|
\N,C,form,noun -> noun ** {
|
||||||
|
s = \\n,c => case <n,N,c,C> of {
|
||||||
|
<Sg, Sg, Nom, Nom> |
|
||||||
|
<Sg, Sg, Gen, Gen> |
|
||||||
|
<Sg, Sg, Dat, Dat> |
|
||||||
|
<Sg, Sg, Voc, Voc> |
|
||||||
|
<Pl, Pl, Nom, Nom> |
|
||||||
|
<Pl, Pl, Gen, Gen> |
|
||||||
|
<Pl, Pl, Dat, Dat> |
|
||||||
|
<Pl, Pl, Voc, Voc> => form ;
|
||||||
|
_ => noun.s ! n ! c }
|
||||||
|
} ;
|
||||||
|
|
||||||
|
addNounForm : Number -> Case -> Str -> Noun -> Noun =
|
||||||
|
\N,C,form,noun -> noun ** {
|
||||||
|
s = \\n,c => case <n,N,c,C> of {
|
||||||
|
<Sg, Sg, Nom, Nom> |
|
||||||
|
<Sg, Sg, Gen, Gen> |
|
||||||
|
<Sg, Sg, Dat, Dat> |
|
||||||
|
<Sg, Sg, Voc, Voc> |
|
||||||
|
<Pl, Pl, Nom, Nom> |
|
||||||
|
<Pl, Pl, Gen, Gen> |
|
||||||
|
<Pl, Pl, Dat, Dat> |
|
||||||
|
<Pl, Pl, Voc, Voc> => variants {form ; noun.s ! n ! c} ;
|
||||||
|
_ => noun.s ! n ! c }
|
||||||
|
} ;
|
||||||
|
|
||||||
|
{- A note about GF restrictions as of 2025-08-27:
|
||||||
|
Following thing does not work, compiler asumes that N an C are free variables.
|
||||||
|
changeForm_ideal : Number -> Case -> Str -> Noun -> Noun ;
|
||||||
|
changeForm_ideal N C str noun = noun ** {NF N C => str} ;
|
||||||
|
Meanwhile this should work
|
||||||
|
changeForm_fixed : Str -> Noun -> Noun ;
|
||||||
|
changeForm_fixed str noun = noun ** {NF Sg Nom => str} ;
|
||||||
|
Related: https://github.com/GrammaticalFramework/gf-core/issues/198
|
||||||
|
Also Inari suggested to avoid using a function and write this thing inline:
|
||||||
|
Noun : Type = {s : NForm => Str} ;
|
||||||
|
myRegularNoun = {- … some noun …- } ;
|
||||||
|
mySpecialNoun = {s = myRegularNoun.s ** {NF Sg Acc => "special form"}} ;
|
||||||
|
-}
|
||||||
|
|
||||||
|
}
|
||||||
68316
src/latvian/PortedTezaursDictLav.gf
Normal file
68316
src/latvian/PortedTezaursDictLav.gf
Normal file
File diff suppressed because it is too large
Load Diff
68305
src/latvian/PortedTezaursDictLavAbs.gf
Normal file
68305
src/latvian/PortedTezaursDictLavAbs.gf
Normal file
File diff suppressed because it is too large
Load Diff
16
src/latvian/README.md
Normal file
16
src/latvian/README.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Latvian GF Resource Grammar
|
||||||
|
|
||||||
|
There is an ongoing work to develop a wide-coverage reimplementation of the Latvian RGL morphology, based on [Tezaurs.lv](https://tezaurs.lv) dictionary data. Currently, the reimplementation covers noun paradigms and lexical entries, which will be followed by other parts of speech, eventually substituting the legacy Latvian RGL morphology.
|
||||||
|
|
||||||
|
The reimplemented morphology and lexicon module consists of the following components:
|
||||||
|
- `PortedMorphoParadigmsLav.gf`: automatically converted paradigm desrciptions from the [Latvian Morphological Toolkit](https://github.com/LUMII-AILab/Morphology/); please, DO NOT EDIT.
|
||||||
|
- `PortedMorphoStemchangesLav.gf`: manually ported stemchange functions for the above mentioned paradigms; must be kept aligned with the [source code](https://github.com/LUMII-AILab/Morphology/blob/master/src/main/java/lv/semti/morphology/analyzer/Mijas.java) of the toolkit.
|
||||||
|
- `PortedTezaursDictLav.gf` and `PortedTezaursDictLavAbs.gf`: automatically exported lexicon data from [Tezaurs.lv](https://tezaurs.lv); please, DO NOT EDIT.
|
||||||
|
- `PortedMorphoUtilsLav.gf`: utility functions.
|
||||||
|
|
||||||
|
For edits and improvements, please, contact us at lauma@ailab.lv!
|
||||||
|
|
||||||
|
|
||||||
|
## Acknowledgements
|
||||||
|
|
||||||
|
The work on porting Tezaurs.lv inflectional paradigms to GF and creating a wide-coverage computational GF lexicon for Latvian was funded by the Latvian Council of Science under the grant agreement lzp-2022/1-0443 ([Advancing Latvian Computational Lexical Resources for Natural Language Understanding and Generation](https://wordnet.ailab.lv/project2)).
|
||||||
@@ -13,12 +13,12 @@ param
|
|||||||
|
|
||||||
Case = Nom | Gen | Dat | Acc | Loc | Voc ;
|
Case = Nom | Gen | Dat | Acc | Loc | Voc ;
|
||||||
Gender = Masc | Fem ;
|
Gender = Masc | Fem ;
|
||||||
Declension = D0 | D1 | D2 | D3 | D4 | D5 | D6 | DR ;
|
Declension = D0 | D1 | D2 | D3 | D4 | D5 | D6 | DR | DG; -- ammended for Tēzaurs.
|
||||||
|
|
||||||
-- Adjectives
|
-- Adjectives
|
||||||
|
|
||||||
Definiteness = Indef | Def ;
|
Definiteness = Indef | Def ;
|
||||||
AType = AQual | ARel | AIndecl ;
|
AType = AQual | ARel | AIndecl ; -- Doesn't exactly fit with Tēzaurs system - AIndecl is not needed.
|
||||||
|
|
||||||
AForm =
|
AForm =
|
||||||
AAdj Degree Definiteness Gender Number Case
|
AAdj Degree Definiteness Gender Number Case
|
||||||
@@ -27,7 +27,7 @@ param
|
|||||||
-- Verbs
|
-- Verbs
|
||||||
|
|
||||||
Voice = Act | Pass ;
|
Voice = Act | Pass ;
|
||||||
Conjugation = C2 | C3 ; -- C1 - "irregular" verbs
|
Conjugation = C2 | C3 | C1 | CI ; -- C1 - "irregular" verbs ; ammended for Tēzaurs.
|
||||||
|
|
||||||
-- Verb moods:
|
-- Verb moods:
|
||||||
-- Ind - indicative
|
-- Ind - indicative
|
||||||
|
|||||||
@@ -185,15 +185,14 @@ lin
|
|||||||
ComplSlash vpslash np =
|
ComplSlash vpslash np =
|
||||||
let agr : Agreement = np.agr in {
|
let agr : Agreement = np.agr in {
|
||||||
v = vpslash.v ;
|
v = vpslash.v ;
|
||||||
{-
|
-- compl = \\agr => case vpslash.voice of {
|
||||||
compl = \\agr => case vpslash.voice of {
|
-- Act => vpslash.rightVal.s ++ np.s ! (vpslash.rightVal.c ! (fromAgr agr).num) ;
|
||||||
Act => vpslash.rightVal.s ++ np.s ! (vpslash.rightVal.c ! (fromAgr agr).num) ;
|
-- Pass => case vpslash.rightVal.c ! (fromAgr agr).num of {
|
||||||
Pass => case vpslash.rightVal.c ! (fromAgr agr).num of {
|
-- Nom => np.s ! (vpslash.rightVal.c ! Sg) ;
|
||||||
Nom => np.s ! (vpslash.rightVal.c ! Sg) ;
|
-- _ => vpslash.rightVal.s ++ np.s ! (vpslash.rightVal.c ! (fromAgr agr).num)
|
||||||
_ => vpslash.rightVal.s ++ np.s ! (vpslash.rightVal.c ! (fromAgr agr).num)
|
-- }
|
||||||
}
|
-- } ++ vpslash.compl ! agr ;
|
||||||
} ++ vpslash.compl ! agr ;
|
|
||||||
-}
|
|
||||||
compl = \\agr => vpslash.rightVal.s ++
|
compl = \\agr => vpslash.rightVal.s ++
|
||||||
np.s ! (vpslash.rightVal.c ! (fromAgr agr).num) ++
|
np.s ! (vpslash.rightVal.c ! (fromAgr agr).num) ++
|
||||||
vpslash.compl ! agr ;
|
vpslash.compl ! agr ;
|
||||||
|
|||||||
@@ -1,4 +1,23 @@
|
|||||||
concrete AdjectiveMkd of Adjective = CatMkd ** open Prelude,ResMkd in {
|
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 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 {
|
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.adverb} ;
|
||||||
lin PrepNP p np = {s = p.s ++ np.s ! RPrep} ;
|
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
|
--# -path=.:../abstract:../common:../prelude:../api
|
||||||
|
|
||||||
concrete AllMkd of AllMkdAbs =
|
concrete AllMkd of AllMkdAbs =
|
||||||
LangMkd
|
LangMkd,
|
||||||
|
ExtendMkd
|
||||||
** {
|
** {
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
--# -path=.:../abstract:../common:prelude
|
--# -path=.:../abstract:../common:prelude
|
||||||
|
|
||||||
abstract AllMkdAbs =
|
abstract AllMkdAbs =
|
||||||
Lang
|
Lang,
|
||||||
|
Extend
|
||||||
** {
|
** {
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user