1 Commits
Author SHA1 Message Date
Inari Listenmaa ba879527ab (Som) Add full forms of the pronoun into the s field in UsePron…
…The clitic forms used in VPs and Cls are syncategorematic, so those constructions did not break.
2026-04-22 17:20:09 +02:00
287 changed files with 13457 additions and 160314 deletions
+2 -2
View File
@@ -7,7 +7,7 @@ Bul,Bulgarian,bulgarian,,,y,,,,,y,n
Cat,Catalan,catalan,Romance,,y,,,,y,y,n
Cgg,Rukiga,rukiga,,,y,y,n,n,y,y,n
Chi,Chinese (simplified),chinese,,,,,,,,y,y
Cze,Czech,czech,,,,,,y,,y,n
Cze,Czech,czech,,,,,,n,,y,n
Dan,Danish,danish,Scand,,y,,,,,y,n
Dut,Dutch,dutch,,,y,,,,,y,n
Eng,English,english,,,y,,,,y,y,y
@@ -55,7 +55,7 @@ Sco,Scots,scots,,,y,,,,,y,n
Swa,Swahili,swahili,Bantu,,,y,n,n,n,n,n
Swe,Swedish,swedish,Scand,,y,,,,y,y,y
Tam,Tamil,tamil,n,n,n,n,n,n,n,n,n
Tel,Telugu,telugu,,,y,y,n,n,,n,n
Tel,Telugu,telugu,,,y,n,n,n,,n,n
Tha,Thai,thai,,to_thai,,,,,,y,n
Tur,Turkish,turkish,,,y,,,n,,n,n
Ukr,Ukrainian,ukrainian,,,,y,n,n,n,y,n
1 Code Name Directory Functor Unlexer Present All Try Symbolic Compatibility Synopsis MorphoDict
7 Cat Catalan catalan Romance y y y n
8 Cgg Rukiga rukiga y y n n y y n
9 Chi Chinese (simplified) chinese y y
10 Cze Czech czech y n y n
11 Dan Danish danish Scand y y n
12 Dut Dutch dutch y y n
13 Eng English english y y y y
55 Swa Swahili swahili Bantu y n n n n n
56 Swe Swedish swedish Scand y y y y
57 Tam Tamil tamil n n n n n n n n n
58 Tel Telugu telugu y y n n n n n
59 Tha Thai thai to_thai y n
60 Tur Turkish turkish y n n n
61 Ukr Ukrainian ukrainian y n n n y n
-1
View File
@@ -35,7 +35,6 @@ fun
InflectionAdA : AdA -> Inflection ;
InflectionAdN : AdN -> Inflection ;
InflectionPrep : Prep -> Inflection ;
InflectionCl : Cl -> Inflection ;
fun
NoDefinition : String -> Definition ;
+4 -19
View File
@@ -1,26 +1,11 @@
concrete AdjectiveSqi of Adjective = CatSqi ** open ResSqi, Prelude in {
oper
adjForm : A -> Species => Case => Gender => Number => Str = \a -> \\sp,c,g,n =>
case a.clit of {
True => link_clitic ! sp ! c ! g ! n ++ a.s ! c ! g ! n ;
False => a.s ! c ! g ! n
} ;
lin
PositA a = {
s = adjForm a
s = \\spec,c,g,n => case a.clit of {
True => link_clitic ! spec ! c ! g ! n ++ a.s ! c ! g ! n ;
False => a.s ! c ! g ! n
}
} ;
ComparA a np = {s=\\sp,c,g,n=>"më" ++ adjForm a ! sp ! c ! g ! n ++ "se" ++ np.s ! Ablat} ;
UseComparA a = {s=\\sp,c,g,n=>"më" ++ adjForm a ! sp ! c ! g ! n} ;
ComplA2 a np = {s=\\sp,c,g,n=>adjForm (lin A a) ! sp ! c ! g ! n ++ a.c2.s ++ np.s ! a.c2.c} ;
UseA2 a = PositA a ;
ReflA2 a = {s=\\sp,c,g,n=>adjForm (lin A a) ! sp ! c ! g ! n ++ a.c2.s ++ "vetveten"} ;
CAdvAP cadv ap np = {s=\\sp,c,g,n=>cadv.s ++ ap.s ! sp ! c ! g ! n ++ cadv.p ++ np.s ! Ablat} ;
AdjOrd ord = {s=\\_,c,g,n=>ord.s ! c ! g ! n} ;
SentAP ap sc = {s=\\sp,c,g,n=>ap.s ! sp ! c ! g ! n ++ "që" ++ sc.s} ;
AdAP ada ap = {s=\\sp,c,g,n=>ada.s ++ ap.s ! sp ! c ! g ! n} ;
AdvAP ap adv = {s=\\sp,c,g,n=>ap.s ! sp ! c ! g ! n ++ adv.s} ;
}
-11
View File
@@ -1,11 +0,0 @@
concrete AdverbSqi of Adverb = CatSqi ** open Prelude, ResSqi in {
lin
PositAdvAdj a = {s=a.s ! Nom ! Masc ! Sg} ;
PrepNP p np = {s=p.s ++ np.s ! p.c} ;
ComparAdvAdj c a np = {s=c.s ++ a.s ! Nom ! Masc ! Sg ++ c.p ++ np.s ! Ablat} ;
ComparAdvAdjS c a s = {s=c.s ++ a.s ! Nom ! Masc ! Sg ++ c.p ++ s.s} ;
AdAdv a adv = {s=a.s ++ adv.s} ;
PositAdAAdj a = {s=a.s ! Nom ! Masc ! Sg} ;
SubjS subj s = {s=subj.s ++ s.s} ;
AdnCAdv c = {s=c.s ++ c.p} ;
}
+1 -2
View File
@@ -1,5 +1,4 @@
concrete AllSqi of AllSqiAbs =
LangSqi,
IrregSqi
LangSqi
**
{} ;
+1 -2
View File
@@ -1,4 +1,3 @@
abstract AllSqiAbs =
Lang,
IrregSqiAbs
Lang
** {}
+24 -42
View File
@@ -1,79 +1,61 @@
concrete CatSqi of Cat = CommonX ** open ParamX,Prelude,ResSqi in {
lincat A = Adj ;
linref A = \a -> case a.clit of {True=>"i"; False=>[]} ++ a.s ! Nom ! Masc ! Sg ;
lincat A2 = Adj ** {c2 : Compl} ;
linref A2 = \a -> case a.clit of {True=>"i"; False=>[]} ++ a.s ! Nom ! Masc ! Sg ++ a.c2.s ;
lincat V, VA, VV, VS, VQ = Verb ;
lincat V2 = Verb ** {c2 : Compl} ;
lincat V2S, V2Q, V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
lincat Prep = Compl ;
lincat ACard = {s : Str} ;
lincat AP = {s : Species => Case => Gender => Number => Str} ;
lincat CN = Noun ;
lincat Card = {s : Str} ;
lincat Cl = {s : ParamX.Tense => Anteriority => Polarity => Str} ;
lincat ClSlash = {s : ParamX.Tense => Anteriority => Polarity => Str; c2 : Compl} ;
lincat Comp = {s : Agr => Str} ;
lincat Cl = {s : Str} ;
lincat ClSlash = {s : Str} ;
lincat Comp = {s : Str} ;
lincat Conj = {s : Str} ;
lincat DAP = {s : Str; n : Number} ;
lincat DAP = {s : Str} ;
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
lincat Det = {
s : Case => Gender => Str;
post : Species => Case => Gender => Str;
sp : Species;
n : Number
} ;
lincat Det = {s : Case => Gender => Str; spec : Species; n : Number} ;
lincat Digits = {s : Str; n : Number; tail : DTail} ;
lincat GN = {s : Str} ;
lincat IComp = {s : Str} ;
lincat IDet = {s : Gender => Str; n : Number} ;
lincat IP = {s : Str; a : Agr} ;
lincat IQuant = {s : Gender => Str} ;
lincat Imp = {s : Polarity => Number => Str} ;
lincat IDet = {s : Str} ;
lincat IP = {s : Str} ;
lincat IQuant = {s : Str} ;
lincat Imp = {s : Str} ;
lincat LN = {s : Str} ;
lincat N = Noun ;
lincat N2 = {s : Species => Case => Number => Str; g : Gender;
c2 : Compl} ;
c2 : {s : Str}} ;
lincat N3 = {s : Species => Case => Number => Str; g : Gender;
c2 : Compl; c3 : Compl} ;
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 : Case => Gender => Number => 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 : ParamX.Tense => Anteriority => Polarity => Str} ;
lincat QCl = {s : Str} ;
lincat QS = {s : Str} ;
lincat Quant = {
s : Case => Gender => Number => Str;
sp : Species;
isPoss : Bool
} ;
lincat RCl = {s : Agr => ParamX.Tense => Anteriority => Polarity => Str} ;
lincat RP = {s : Case => GenNum => Str} ;
lincat RS = {s : Agr => Str} ;
lincat Quant = {s : Case => Gender => Number => Str; spec : Species} ;
lincat RCl = {s : Str} ;
lincat RP = {s : Str} ;
lincat RS = {s : Str} ;
lincat S = {s : Str} ;
lincat SN = {s : Str} ;
lincat SSlash = {s : Str; c2 : Compl} ;
lincat SSlash = {s : Str} ;
lincat Subj = {s : Str} ;
lincat VP = {indicative : Tense => Number => Person => Gender => Case => Str;
subjunctive : Number => Person => Gender => Case => Str;
imperative : Number => Case => Str;
participle : Agr => Case => 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;
vtype : VType} ;
imperf_admirative : Number => Person => Case => Str} ;
lincat VPSlash = {indicative : Tense => Number => Person => Str;
subjunctive : 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;
vtype : VType;
c2 : Compl} ;
imperf_admirative : Number => Person => Str} ;
}
-27
View File
@@ -1,27 +0,0 @@
concrete ConjunctionSqi of Conjunction = CatSqi ** open ResSqi, Prelude, ParamX in {
lincat
[S] = {first,last : Str} ;
[RS] = {first,last : Agr => Str} ;
[Adv] = {first,last : Str} ;
[AdV] = {first,last : Str} ;
[IAdv] = {first,last : Str} ;
[NP] = {first,last : Case => Str; a : Agr} ;
[AP] = {first,last : Species=>Case=>Gender=>Number=>Str} ;
[CN] = {first,last : Species=>Case=>Number=>Str; g:Gender} ;
[DAP] = {first,last : Str; n:Number} ;
lin
BaseS x y={first=x.s;last=y.s}; ConsS x xs={first=x.s++","++xs.first;last=xs.last}; ConjS c xs={s=xs.first++c.s++xs.last};
BaseAdv x y={first=x.s;last=y.s}; ConsAdv x xs={first=x.s++","++xs.first;last=xs.last}; ConjAdv c xs={s=xs.first++c.s++xs.last};
BaseAdV x y={first=x.s;last=y.s}; ConsAdV x xs={first=x.s++","++xs.first;last=xs.last}; ConjAdV c xs={s=xs.first++c.s++xs.last};
BaseIAdv x y={first=x.s;last=y.s}; ConsIAdv x xs={first=x.s++","++xs.first;last=xs.last}; ConjIAdv c xs={s=xs.first++c.s++xs.last};
BaseNP x y={first=x.s;last=y.s;a={gn=GPl;p=P3}};
ConsNP x xs={first=\\k=>x.s!k++","++xs.first!k;last=xs.last;a={gn=GPl;p=P3}};
ConjNP c xs={s=\\k=>xs.first!k++c.s++xs.last!k;a=xs.a};
BaseAP x y={first=x.s;last=y.s}; ConsAP x xs={first=\\sp,k,g,n=>x.s!sp!k!g!n++","++xs.first!sp!k!g!n;last=xs.last};
ConjAP c xs={s=\\sp,k,g,n=>xs.first!sp!k!g!n++c.s++xs.last!sp!k!g!n};
BaseRS x y={first=x.s;last=y.s}; ConsRS x xs={first=\\a=>x.s!a++","++xs.first!a;last=xs.last}; ConjRS c xs={s=\\a=>xs.first!a++c.s++xs.last!a};
BaseCN x y={first=x.s;last=y.s;g=x.g}; ConsCN x xs={first=\\sp,k,n=>x.s!sp!k!n++","++xs.first!sp!k!n;last=xs.last;g=xs.g};
ConjCN c xs={s=\\sp,k,n=>xs.first!sp!k!n++c.s++xs.last!sp!k!n;g=xs.g};
BaseDAP x y={first=x.s;last=y.s;n=Pl}; ConsDAP x xs={first=x.s++","++xs.first;last=xs.last;n=Pl};
ConjDet c xs={s=\\_,_=>xs.first++c.s++xs.last;post=\\_,_,_=>[];n=xs.n;sp=Def};
}
-64
View File
@@ -1,64 +0,0 @@
concrete ConstructionSqi of Construction = CatSqi **
open Prelude, ParamX, ResSqi, ParadigmsSqi, GrammarSqi in {
lincat
Timeunit = N ;
Hour = {s:Str} ;
Weekday = N ;
Month = N ;
Monthday = {s:Str} ;
Year = {s:Str} ;
Language = N ;
oper
adjVP : A -> VP = \a -> UseComp (CompAP (PositA a)) ;
appendVP : VP -> Str -> VP = \v,s -> v ** {
indicative=\\t,n,p,g,c=>v.indicative!t!n!p!g!c++s;
subjunctive=\\n,p,g,c=>v.subjunctive!n!p!g!c++s;
imperative=\\n,c=>v.imperative!n!c++s;
participle=\\a,c=>v.participle!a!c++s
} ;
hour : Str -> Hour = \s -> lin Hour {s=s} ;
lin
hungry_VP=adjVP (mkA "uritur"); thirsty_VP=adjVP (mkA "etur");
tired_VP=adjVP (mkA "lodhur"); scared_VP=adjVP (mkA "frikësuar");
ill_VP=adjVP (mkA "sëmurë"); ready_VP=adjVP (mkA "gatshëm");
has_age_VP c=appendVP (UseV (irregV "kam" "ke" "ka" "kemi" "keni" "kanë" "ki" "kini" "pasur")) (c.s++"vjeç");
n_units_AP c unit a={s=\\sp,k,g,n=>c.s++unit.s!Indef!Nom!Pl++(PositA a).s!sp!k!g!n};
n_units_of_NP c unit np={s=\\_=>c.s++unit.s!Indef!Nom!Pl++"nga"++np.s!Ablat;a={gn=GPl;p=P3}};
n_unit_CN c unit cn={s=\\sp,k,n=>c.s++unit.s!Indef!Nom!Sg++cn.s!sp!k!n;g=cn.g};
bottle_of_CN np={s=\\sp,k,n=>(mkN "shishe").s!sp!k!n++"me"++np.s!Acc;g=Fem};
cup_of_CN np={s=\\sp,k,n=>(mkN "filxhan").s!sp!k!n++"me"++np.s!Acc;g=Masc};
glass_of_CN np={s=\\sp,k,n=>(mkN "gotë").s!sp!k!n++"me"++np.s!Acc;g=Fem};
timeunitAdv c u={s="për"++c.s++u.s!Indef!Acc!Pl};
timeunitRange a b u={s="nga"++a.s++"deri në"++b.s++u.s!Indef!Acc!Pl};
oneHour=hour "1"; twoHour=hour "2"; threeHour=hour "3"; fourHour=hour "4";
fiveHour=hour "5"; sixHour=hour "6"; sevenHour=hour "7"; eightHour=hour "8";
nineHour=hour "9"; tenHour=hour "10"; elevenHour=hour "11"; twelveHour=hour "12";
thirteenHour=hour "13"; fourteenHour=hour "14"; fifteenHour=hour "15"; sixteenHour=hour "16";
seventeenHour=hour "17"; eighteenHour=hour "18"; nineteenHour=hour "19"; twentyHour=hour "20";
twentyOneHour=hour "21"; twentyTwoHour=hour "22"; twentyThreeHour=hour "23"; twentyFourHour=hour "24";
timeHour h={s="në orën"++h.s}; timeHourMinute h m={s="në orën"++h.s++SOFT_BIND++":"++SOFT_BIND++m.s};
weekdayPunctualAdv w={s="të"++w.s!Def!Acc!Sg};
weekdayHabitualAdv w={s="të"++w.s!Def!Acc!Pl};
weekdayLastAdv w={s="të"++w.s!Def!Acc!Sg++"e kaluar"};
weekdayNextAdv w={s="të"++w.s!Def!Acc!Sg++"e ardhshme"};
monthAdv m={s="në"++m.s!Indef!Acc!Sg}; yearAdv y={s="në"++y.s};
dayMonthAdv d m={s="më"++d.s++m.s!Indef!Acc!Sg};
monthYearAdv m y={s="në"++m.s!Indef!Acc!Sg++y.s};
dayMonthYearAdv d m y={s="më"++d.s++m.s!Indef!Acc!Sg++y.s};
intYear i={s=i.s}; intMonthday i={s=i.s};
weekdayN w=w; monthN m=m;
weekdayPN w=mkPN (w.s!Indef!Nom!Sg); monthPN m=mkPN (m.s!Indef!Nom!Sg);
second_Timeunit=mkN "sekondë"; minute_Timeunit=mkN "minutë"; hour_Timeunit=mkN "orë";
day_Timeunit=mkN "ditë"; week_Timeunit=mkN "javë"; month_Timeunit=mkN "muaj"; year_Timeunit=mkN "vit";
monday_Weekday=mkN "e hënë"; tuesday_Weekday=mkN "e martë"; wednesday_Weekday=mkN "e mërkurë";
thursday_Weekday=mkN "e enjte"; friday_Weekday=mkN "e premte"; saturday_Weekday=mkN "e shtunë"; sunday_Weekday=mkN "e diel";
january_Month=mkN "janar"; february_Month=mkN "shkurt"; march_Month=mkN "mars"; april_Month=mkN "prill";
may_Month=mkN "maj"; june_Month=mkN "qershor"; july_Month=mkN "korrik"; august_Month=mkN "gusht";
september_Month=mkN "shtator"; october_Month=mkN "tetor"; november_Month=mkN "nëntor"; december_Month=mkN "dhjetor";
}
-135
View File
@@ -1,135 +0,0 @@
concrete ExtendSqi of Extend = CatSqi **
open Prelude, ParamX, ResSqi, GrammarSqi, (I=IrregSqi) in {
lincat
RNP = {s : Agr => Case => Str; isPron : Bool} ;
RNPList = {first,last : Agr => Case => Str} ;
VPS = {s : Agr => Str} ;
VPI = {s : Agr => Str} ;
[VPS] = {first,last : Agr => Str} ;
[VPI] = {first,last : Agr => Str} ;
[Comp] = {first,last : Agr => Str} ;
[Imp] = {first,last : Polarity => Number => Str} ;
oper
baseVP : Verb -> VP = \v -> lin VP {
indicative = \\t,n,p,_,_ => v.indicative ! t ! n ! p ;
subjunctive = \\n,p,_,_ => subjunctiveForm v.vtype
(v.indicative ! ResSqi.Pres ! Sg ! P1)
(v.indicative ! ResSqi.Pres ! n ! p) n p ;
imperative = \\n,_ => v.imperative ! n ;
participle = \\_,_ => v.participle ;
pres_optative = \\n,p,_ => v.pres_optative ! n ! p ;
perf_optative = \\n,p,_ => v.perf_optative ! n ! p ;
pres_admirative = \\n,p,_ => v.pres_admirative ! n ! p ;
imperf_admirative = \\n,p,_ => v.imperf_admirative ! n ! p ;
vtype = v.vtype
} ;
extAddVP : VP -> (Agr => Str) -> VP = \v,x -> v ** {
indicative = \\t,n,p,g,c => v.indicative ! t ! n ! p ! g ! c ++
x ! {gn=genNum g n; p=p} ;
subjunctive = \\n,p,g,c => v.subjunctive ! n ! p ! g ! c ++
x ! {gn=genNum g n; p=p} ;
imperative = \\n,c => v.imperative ! n ! c ++
x ! {gn=case n of {Sg=>GSg Masc; Pl=>GPl}; p=P2} ;
participle = \\a,c => v.participle ! a ! c ++ x ! a
} ;
baseSlashVP : VPSlash -> VP = \v -> lin VP {
indicative = \\t,n,p,_,_ => v.indicative ! t ! n ! p ;
subjunctive = \\n,p,_,_ => v.subjunctive ! n ! p ;
imperative = \\n,_ => v.imperative ! n ;
participle = \\_,_ => v.participle ;
pres_optative = \\n,p,_ => v.pres_optative ! n ! p ;
perf_optative = \\n,p,_ => v.perf_optative ! n ! p ;
pres_admirative = \\n,p,_ => v.pres_admirative ! n ! p ;
imperf_admirative = \\n,p,_ => v.imperf_admirative ! n ! p ;
vtype = v.vtype
} ;
lin
GenModNP n np cn = {
s = \\c => cn.s ! Def ! c ! n.n ++
link_clitic ! Def ! c ! cn.g ! n.n ++ np.s ! Ablat ;
a = agrgP3 cn.g n.n
} ;
EmptyRelSlash cl = {s=\\_,t,a,p=>"që"++cl.s!t!a!p++cl.c2.s} ;
ReflPron = {
s = \\a,c => case <agrNumber a,c> of {
<Sg,Acc> => "veten" ; <Pl,Acc> => "veten" ; _ => "vetes"
} ;
isPron = True
} ;
ReflPoss n cn = {s=\\_,c=>cn.s!Def!c!n.n; isPron=False} ;
PredetRNP p r = r ** {s=\\a,c=>p.s++r.s!a!c} ;
AdvRNP np p r = {s=\\a,c=>np.s!c++p.s++r.s!a!p.c; isPron=False} ;
AdvRVP vp p r = extAddVP vp (\\a=>p.s++r.s!a!p.c) ;
AdvRAP ap p r = {
s=\\sp,c,g,n=>ap.s!sp!c!g!n++p.s++r.s!(agrgP3 g n)!p.c
} ;
PossPronRNP p n cn r = {
s=\\c=>cn.s!Def!c!n.n++link_clitic!Def!c!cn.g!n.n++r.s!p.a!Ablat;
a=agrgP3 cn.g n.n
} ;
CompoundN a b = {
s=\\sp,c,n=>(UseN b).s!sp!c!n++(UseN a).s!Indef!Ablat!Sg;
g=b.g
} ;
CompoundAP n a = {
s=\\sp,c,g,num=>(UseN n).s!Indef!Nom!Sg++(PositA a).s!sp!c!g!num
} ;
GerundCN vp = {s=\\_,_,_=>vp.participle!{gn=GSg Masc;p=P3}!Nom; g=Masc} ;
GerundNP vp = {s=\\_=>vp.participle!{gn=GSg Masc;p=P3}!Nom; a={gn=GSg Masc;p=P3}} ;
GerundAdv vp = {s="duke"++vp.participle!{gn=GSg Masc;p=P3}!Nom} ;
WithoutVP vp = {s="pa"++vp.participle!{gn=GSg Masc;p=P3}!Nom} ;
ByVP vp = {s="duke"++vp.participle!{gn=GSg Masc;p=P3}!Nom} ;
ApposNP a b = a ** {s=\\c=>a.s!c++SOFT_BIND++","++b.s!c} ;
PositAdVAdj a = {s=a.s!Nom!Masc!Sg} ;
UttVPShort vp = {s=vp.imperative!Sg!Nom} ;
ComplSlashPartLast sl np = ComplSlash sl np ;
PresPartAP vp = {s=\\_,_,_,_=>"duke"++vp.participle!{gn=GSg Masc;p=P3}!Nom} ;
PastPartAP sl = {s=\\_,_,_,_=>sl.participle} ;
PastPartAgentAP sl np = {
s=\\_,_,_,_=>sl.participle++"nga"++np.s!Nom
} ;
PassVPSlash sl = extAddVP (baseVP I.jam_V) (\\_=>sl.participle) ;
PassAgentVPSlash sl np =
extAddVP (baseVP I.jam_V) (\\_=>sl.participle++"nga"++np.s!Nom) ;
ProgrVPSlash sl = sl ;
ComplBareVS v s = extAddVP (baseVP v) (\\_=>s.s) ;
MkVPS t p vp = {
s=\\a=>(PredVP {s=\\_=>[];a=a} vp).s!t.t!t.a!p.p
} ;
BaseVPS x y = {first=x.s; last=y.s} ;
ConsVPS x xs = {first=\\a=>x.s!a++","++xs.first!a; last=xs.last} ;
ConjVPS c xs = {s=\\a=>xs.first!a++c.s++xs.last!a} ;
PredVPS np v = {s=v.s!np.a} ;
MkVPI vp = {s=\\a=>"të"++vp.subjunctive ! agrNumber a ! a.p ! agrGender a ! Nom} ;
BaseVPI x y = {first=x.s; last=y.s} ;
ConsVPI x xs = {first=\\a=>x.s!a++","++xs.first!a; last=xs.last} ;
ConjVPI c xs = {s=\\a=>xs.first!a++c.s++xs.last!a} ;
ComplVPIVV v x = extAddVP (baseVP v) (\\a=>x.s!a) ;
BaseComp x y = {first=x.s; last=y.s} ;
ConsComp x xs = {first=\\a=>x.s!a++","++xs.first!a; last=xs.last} ;
ConjComp c xs = {s=\\a=>xs.first!a++c.s++xs.last!a} ;
BaseImp x y = {first=x.s; last=y.s} ;
ConsImp x xs = {
first=\\p,n=>x.s!p!n++","++xs.first!p!n;
last=xs.last
} ;
ConjImp c xs = {s=\\p,n=>xs.first!p!n++c.s++xs.last!p!n} ;
UseDAP d = {s=\\_=>d.s; a=agrgP3 Masc d.n} ;
UseDAPMasc = UseDAP ;
UseDAPFem d = {s=\\_=>d.s; a=agrgP3 Fem d.n} ;
TPastSimple = {s=[]; t=ParamX.Past} ;
}
-8
View File
@@ -1,16 +1,8 @@
concrete GrammarSqi of Grammar =
NounSqi,
VerbSqi,
AdjectiveSqi,
AdverbSqi,
SentenceSqi,
QuestionSqi,
RelativeSqi,
ConjunctionSqi,
NumeralSqi,
PhraseSqi,
IdiomSqi,
NamesSqi,
StructuralSqi
** {
-23
View File
@@ -1,23 +0,0 @@
concrete IdiomSqi of Idiom = CatSqi ** open Prelude, ParamX, ResSqi in {
lin
ImpersCl vp = {s=\\t,a,p=>negation p++futureParticle t++vp.indicative!sqiTense t!Sg!P3!Masc!Nom} ;
GenericCl vp = {s=\\t,a,p=>"njeriu"++negation p++futureParticle t++vp.indicative!sqiTense t!Sg!P3!Masc!Nom} ;
CleftNP np rs = {s=\\_,_,_=>np.s!Nom++rs.s!np.a} ;
CleftAdv adv s = {s=\\_,_,_=>adv.s++s.s} ;
ExistNP np = {s=\\t,_,p=>negation p++case t of {ParamX.Past=>"pati";_=>"ka"}++np.s!Acc} ;
ExistIP ip = {s=\\_,_,p=>negation p++"ka"++ip.s} ;
ExistNPAdv np adv = {s=\\t,a,p=>(ExistNP np).s!t!a!p++adv.s} ;
ExistIPAdv ip adv = {s=\\t,a,p=>(ExistIP ip).s!t!a!p++adv.s} ;
ProgrVP vp = vp ;
ImpPl1 vp = {s="le të"++vp.subjunctive!Pl!P1!Masc!Nom} ;
ImpP3 np vp = {s="le"++np.s!Nom++"të"++vp.subjunctive!agrNumber np.a!np.a.p!agrGender np.a!Nom} ;
SelfAdvVP vp = vp ** {
indicative=\\t,n,p,g,c=>vp.indicative!t!n!p!g!c++"vetë";
subjunctive=\\n,p,g,c=>vp.subjunctive!n!p!g!c++"vetë"
} ;
SelfAdVVP vp = vp ** {
indicative=\\t,n,p,g,c=>"vetë"++vp.indicative!t!n!p!g!c;
subjunctive=\\n,p,g,c=>"vetë"++vp.subjunctive!n!p!g!c
} ;
SelfNP np = np ** {s=\\c=>np.s!c++"vetë"} ;
}
-24
View File
@@ -1,24 +0,0 @@
concrete IrregSqi of IrregSqiAbs = CatSqi ** open ParadigmsSqi in {
lin
bej_V = irregV "bëj" "bën" "bën" "bëjmë" "bëni" "bëjnë" "bëj" "bëni" "bërë" ;
bie_V = irregV "bie" "bie" "bie" "biem" "bini" "bien" "bjer" "bini" "rënë" ;
dal_V = irregV "dal" "del" "del" "dalim" "dilni" "dalin" "dil" "dilni" "dalë" ;
dua_V = irregV "dua" "do" "do" "duam" "doni" "duan" "duaj" "doni" "dashur" ;
eci_V = irregV "eci" "ecën" "ecën" "ecim" "ecni" "ecin" "ec" "ecni" "ecur" ;
ha_V = irregV "ha" "ha" "ha" "hamë" "hani" "hanë" "ha" "hani" "ngrënë" ;
hyj_V = irregV "hyj" "hyn" "hyn" "hyjmë" "hyni" "hyjnë" "hyr" "hyni" "hyrë" ;
iki_V = irregV "iki" "ikën" "ikën" "ikim" "ikni" "ikin" "ik" "ikni" "ikur" ;
jam_V = irregV "jam" "je" "është" "jemi" "jeni" "janë" "ji" "jini" "qenë" ;
jap_V = irregV "jap" "jep" "jep" "japim" "jepni" "japin" "jep" "jepni" "dhënë" ;
kam_V = irregV "kam" "ke" "ka" "kemi" "keni" "kanë" "ki" "kini" "pasur" ;
ngre_V = irregV "ngre" "ngre" "ngre" "ngremë" "ngrini" "ngrenë" "ngre" "ngrini" "ngritur" ;
njoh_V = irregV "njoh" "njeh" "njeh" "njohim" "njihni" "njohin" "njih" "njihni" "njohur" ;
pi_V = irregV "pi" "pi" "pi" "pimë" "pini" "pinë" "pi" "pini" "pirë" ;
shoh_V = irregV "shoh" "sheh" "sheh" "shohim" "shihni" "shohin" "shih" "shihni" "parë" ;
them_V = irregV "them" "thua" "thotë" "themi" "thoni" "thonë" "thuaj" "thoni" "thënë" ;
urrej_V = irregV "urrej" "urren" "urren" "urrejmë" "urreni" "urrejnë" "urre" "urreni" "urryer" ;
ve_V = irregV "vë" "vë" "vë" "vëmë" "vini" "vënë" "vër" "vini" "vënë" ;
vij_V = irregV "vij" "vjen" "vjen" "vijmë" "vini" "vijnë" "eja" "ejani" "ardhur" ;
}
-24
View File
@@ -1,24 +0,0 @@
abstract IrregSqiAbs = Cat ** {
fun
bej_V : V ;
bie_V : V ;
dal_V : V ;
dua_V : V ;
eci_V : V ;
ha_V : V ;
hyj_V : V ;
iki_V : V ;
jam_V : V ;
jap_V : V ;
kam_V : V ;
ngre_V : V ;
njoh_V : V ;
pi_V : V ;
shoh_V : V ;
them_V : V ;
urrej_V : V ;
ve_V : V ;
vij_V : V ;
}
-1
View File
@@ -2,7 +2,6 @@
concrete LangSqi of Lang =
GrammarSqi,
LexiconSqi
,ConstructionSqi
,DocumentationSqi --# notpresent
** {
+8125 -8149
View File
File diff suppressed because it is too large Load Diff
-12
View File
@@ -1,12 +0,0 @@
concrete NamesSqi of Names = CatSqi ** open ResSqi in {
lin
GivenName n = {s=\\_=>n.s; a={gn=GSg Masc;p=P3}} ;
MaleSurname n = {s=\\_=>n.s; a={gn=GSg Masc;p=P3}} ;
FemaleSurname n = {s=\\_=>n.s; a={gn=GSg Fem;p=P3}} ;
PlSurname n = {s=\\_=>n.s; a={gn=GPl;p=P3}} ;
FullName n s = {s=\\_=>n.s++s.s; a={gn=GSg Masc;p=P3}} ;
UseLN n = {s=\\_=>n.s; a={gn=GSg Masc;p=P3}} ;
PlainLN n = {s=\\_=>n.s; a={gn=GSg Masc;p=P3}} ;
InLN n = {s="në"++n.s} ;
AdjLN a n = {s=n.s++a.s!Def!Nom!Masc!Sg} ;
}
+10 -101
View File
@@ -1,129 +1,38 @@
concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi, Prelude in {
concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
flags optimize=all_subs ;
lin
DetCN det cn = {
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.sp ! c ! det.n ++
det.post ! det.sp ! c ! cn.g ;
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.spec ! c ! det.n ;
a = agrgP3 cn.g det.n
} ;
UsePron p = {s=p.s; a=p.a} ;
UsePN p = {s=\\_=>p.s; a={gn=GSg Masc;p=P3}} ;
PredetNP p np = np ** {s=\\c=>p.s ++ np.s ! c} ;
AdvNP np adv = np ** {s=\\c=>np.s ! c ++ adv.s} ;
ExtAdvNP np adv = np ** {s=\\c=>np.s ! c ++ SOFT_BIND ++ "," ++ adv.s} ;
MassNP cn = {s=\\c=>cn.s ! Indef ! c ! Sg; a=agrgP3 cn.g Sg} ;
-- UsePron p = p ;
DetQuant quant num = {
s = \\c,g => case quant.isPoss of {
True => num.s;
False => quant.s ! c ! g ! num.n ++ num.s
} ;
post = \\_,c,g => case quant.isPoss of {
True => quant.s ! c ! g ! num.n;
False => []
} ;
s = \\c,g => quant.s ! c ! g ! num.n ++ num.s ;
n = num.n ;
sp = quant.sp
} ;
DetQuantOrd quant num ord = {
s = \\c,g => case quant.isPoss of {
True => num.s;
False => quant.s ! c ! g ! num.n ++ num.s
} ;
post = \\_,c,g => case quant.isPoss of {
True => quant.s ! c ! g ! num.n ++ ord.s ! c ! g ! num.n;
False => ord.s ! c ! g ! num.n
} ;
n=num.n; sp=quant.sp
spec = quant.spec
} ;
NumSg = {s = []; n = Sg} ;
NumPl = {s = []; n = Pl} ;
NumCard c = {s=c.s; n=Pl} ;
NumNumeral n = n ;
NumDecimal n = {s=n.s} ;
AdNum a n = {s=a.s ++ n.s} ;
OrdNumeral n = {s=\\_,_,_=>n.s} ;
OrdDigits n = {s=\\_,_,_=>n.s} ;
OrdSuperl a = {s=\\c,g,n=>"më" ++
case a.clit of {
True => case <c,g,n> of {
<Nom,Masc,Sg> => "i" ++ a.s ! c ! g ! n;
<Nom,Fem,Sg> => "e" ++ a.s ! c ! g ! n;
_ => "të" ++ a.s ! c ! g ! n
};
False => a.s ! c ! g ! n
}} ;
OrdNumeralSuperl n a = {s=\\c,g,num=>n.s ++ a.s ! c ! g ! num} ;
DefArt = {
s = \\c,g,n => [] ;
sp = Def;
isPoss = False
spec = Def
} ;
IndefArt = {
s = \\c,g => table Number ["një"; []] ;
sp = Indef;
isPoss = False
spec = Indef
} ;
UseN n = n ;
ComplN2 n np = {
s=\\sp,c,num=>n.s ! sp ! c ! num ++ n.c2.s ++ np.s ! n.c2.c;
g=n.g
} ;
ComplN3 n np = n ** {s=\\sp,c,num=>n.s ! sp ! c ! num ++ n.c2.s ++ np.s ! n.c2.c; c2=n.c3} ;
Use2N3 n = n ** {c2=n.c2} ;
Use3N3 n = n ** {c2=n.c3} ;
RelCN cn rs = cn ** {s=\\sp,c,n=>cn.s ! sp ! c ! n ++ rs.s ! agrgP3 cn.g n} ;
AdvCN cn adv = cn ** {s=\\sp,c,n=>cn.s ! sp ! c ! n ++ adv.s} ;
SentCN cn sc = cn ** {s=\\sp,c,n=>cn.s ! sp ! c ! n ++ sc.s} ;
ApposCN cn np = cn ** {s=\\sp,c,n=>cn.s ! sp ! c ! n ++ np.s ! c} ;
PossNP cn np = cn ** {
s=\\sp,c,n=>cn.s ! sp ! c ! n ++
link_clitic ! sp ! c ! cn.g ! n ++ np.s ! Ablat
} ;
PartNP cn np = cn ** {s=\\sp,c,n=>cn.s ! sp ! c ! n ++ "me" ++ np.s ! Acc} ;
CountNP det np = {s=\\c=>det.s ! c ! Masc ++ "nga" ++ np.s ! Ablat; a=agrgP3 Masc det.n} ;
PossPron p = {
s=\\c,g,n=>case <p.a.gn,p.a.p,g,n> of {
<GSg _,P1,Masc,Sg> => case c of {Nom=>"im"; _=>"tim"};
<GSg _,P1,Fem,Sg> => case c of {Nom=>"ime"; Acc=>"time"; _=>"sime"};
<GSg _,P2,Masc,Sg> => case c of {Nom=>"yt"; _=>"tënd"};
<GSg _,P2,Fem,Sg> => case c of {Nom=>"jote"; Acc=>"tënde"; _=>"sate"};
<GSg Masc,P3,_,_> => link_clitic!Def!c!g!n++"tij";
<GSg Fem,P3,_,_> => link_clitic!Def!c!g!n++"saj";
<GPl,P3,_,_> => link_clitic!Def!c!g!n++"tyre";
<GSg _,P1,Masc,Pl> => link_clitic!Def!c!g!n++"mi";
<GSg _,P1,Fem,Pl> => link_clitic!Def!c!g!n++"mia";
<GSg _,P2,Masc,Pl> => link_clitic!Def!c!g!n++"tu";
<GSg _,P2,Fem,Pl> => link_clitic!Def!c!g!n++"tua";
<GPl,P1,Masc,Sg> => case c of {Nom=>"ynë"; _=>"tonë"};
<GPl,P1,Fem,Sg> => case c of {Nom=>"jonë"; Acc=>"tonë"; _=>"sonë"};
<GPl,P1,Masc,Pl> => "tanë";
<GPl,P1,Fem,Pl> => "tona";
<GPl,P2,_,Sg> => case c of {Nom=>"juaj"; _=>"tuaj"};
<GPl,P2,_,Pl> => "tuaj"
};
sp=Def;
isPoss=True
} ;
DetDAP det = {
s=det.s ! Nom ! Masc ++ det.post ! det.sp ! Nom ! Masc;
n=det.n
} ;
AdjDAP dap ap = {s=dap.s ++ ap.s ! Indef ! Nom ! Masc ! dap.n; n=dap.n} ;
QuantityNP dec mu = {s=\\_=>case mu.isPre of {True=>mu.s++dec.s; False=>dec.s++mu.s}; a=agrgP3 Masc Pl} ;
AdjCN ap cn = {
s = \\sp,c,n => cn.s ! sp ! c ! n ++ ap.s ! sp ! c ! cn.g ! n ;
s = \\spec,c,n => cn.s ! spec ! c ! n ++ ap.s ! spec ! c ! cn.g ! n ;
g = cn.g
} ;
-15
View File
@@ -12,8 +12,6 @@ lincat Sub10 = LinDigit ;
lincat Sub100 = LinSub100 ;
lincat Sub1000 = LinSub100 ;
lincat Sub1000000 = { s : Str } ;
lincat Sub1000000000 = {s : Str} ;
lincat Sub1000000000000 = {s : Str} ;
oper mkNum : Str -> LinDigit = \tri ->
{ s = table {unit => tri ; teen => tri + "mbë" + "dhjetë" ; ten => tri + "dhjetë" }};
@@ -41,23 +39,10 @@ lin pot1 d = mkR (d.s ! ten) ;
lin pot1plus d e = mkR ((d.s ! ten) ++ "e" ++ (e.s ! unit)) ;
lin pot1as2 n = n ;
lin pot2 d = mkR (bind (d.s ! unit) "qind") ;
lin pot21 = mkR "njëqind" ;
lin pot2plus d e = mkR ((bind (d.s ! unit) "qind") ++ "e" ++ e.s) ;
lin pot2as3 n = {s = n.s };
lin pot3 n = {s = n.s ++ "mijë" } ;
lin pot3plus n m = {s = n.s ++ "mijë" ++ m.s} ;
lin pot31 = {s="një mijë"} ;
lin pot3as4 n=n ;
lin pot3decimal n={s=n.s++"mijë"} ;
lin pot41={s="një milion"} ;
lin pot4 n={s=n.s++"milionë"} ;
lin pot4plus n m={s=n.s++"milionë"++m.s} ;
lin pot4decimal n={s=n.s++"milionë"} ;
lin pot4as5 n=n ;
lin pot51={s="një miliard"} ;
lin pot5 n={s=n.s++"miliardë"} ;
lin pot5plus n m={s=n.s++"miliardë"++m.s} ;
lin pot5decimal n={s=n.s++"miliardë"} ;
lincat Dig = {s : Str; n : Number} ;
+11 -90
View File
@@ -1199,39 +1199,6 @@ oper
_ => regV form1
} ;
irregV : (p1sg,p2sg,p3sg,p1pl,p2pl,p3pl,impSg,impPl,part : Str) -> V =
\p1sg,p2sg,p3sg,p1pl,p2pl,p3pl,impSg,impPl,part -> lin V {
indicative = table {
Pres => table {
Sg => table {P1 => p1sg ; P2 => p2sg ; P3 => p3sg} ;
Pl => table {P1 => p1pl ; P2 => p2pl ; P3 => p3pl}
} ;
_ => table {
Sg => table {P1 => p1sg ; P2 => p2sg ; P3 => p3sg} ;
Pl => table {P1 => p1pl ; P2 => p2pl ; P3 => p3pl}
}
} ;
imperative = table {Sg => impSg ; Pl => impPl} ;
participle = part ;
pres_optative = \\n,p => case <n,p> of {
<Sg,P1>=>p1sg; <Sg,P2>=>p2sg; <Sg,P3>=>p3sg;
<Pl,P1>=>p1pl; <Pl,P2>=>p2pl; <Pl,P3>=>p3pl
} ;
perf_optative = \\n,p => case <n,p> of {
<Sg,P1>=>p1sg; <Sg,P2>=>p2sg; <Sg,P3>=>p3sg;
<Pl,P1>=>p1pl; <Pl,P2>=>p2pl; <Pl,P3>=>p3pl
} ;
pres_admirative = \\n,p => case <n,p> of {
<Sg,P1>=>p1sg; <Sg,P2>=>p2sg; <Sg,P3>=>p3sg;
<Pl,P1>=>p1pl; <Pl,P2>=>p2pl; <Pl,P3>=>p3pl
} ;
imperf_admirative = \\n,p => case <n,p> of {
<Sg,P1>=>p1sg; <Sg,P2>=>p2sg; <Sg,P3>=>p3sg;
<Pl,P1>=>p1pl; <Pl,P2>=>p2pl; <Pl,P3>=>p3pl
} ;
vtype = VNormal
} ;
mkN = overload {
mkN : Str -> N = regN; -- s;Indef;Nom;Sg
mkN : Str -> Str -> N = reg2N -- s;Indef;Nom;Sg s;Indef;Nom;Pl
@@ -1264,19 +1231,6 @@ mkV = overload {
mkV : Str -> Str -> V = reg2V -- Indicative;Pres;Sg;P1 participle
} ;
compoundV : V -> Str -> V = \v,adv -> lin V {
indicative = \\t,n,p => v.indicative ! t ! n ! p ++ adv ;
imperative = \\n => v.imperative ! n ++ adv ;
participle = v.participle ++ adv ;
pres_optative = \\n,p => v.pres_optative ! n ! p ++ adv ;
perf_optative = \\n,p => v.perf_optative ! n ! p ++ adv ;
pres_admirative = \\n,p => v.pres_admirative ! n ! p ++ adv ;
imperf_admirative = \\n,p => v.imperf_admirative ! n ! p ++ adv ;
vtype = v.vtype
} ;
reflV : V -> V = \v -> v ** {vtype=VRefl} ;
mkV2 = overload {
mkV2 : V -> V2 = \v -> lin V2 v ** {c2=noPrep} ;
mkV2 : V -> Prep -> V2 = \v,p -> lin V2 v ** {c2=p} ;
@@ -1319,9 +1273,9 @@ mkAdN : Str -> AdN = \s -> lin AdN {s=s} ;
mkCAdv : Str -> CAdv = \s -> lin CAdv {s=s; p=""} ;
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
mkIP : Str -> IP = \s -> lin IP {s=s; a={gn=GSg Masc; p=P3}} ;
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=\\_=>s} ;
mkIDet : Str -> IDet = \s -> lin IDet {s=\\_=>s; n=Sg} ;
mkIP : Str -> IP = \s -> lin IP {s=s} ;
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
@@ -1329,13 +1283,7 @@ mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
mkQuant = overload {
mkQuant : Str -> Quant = \s -> lin Quant {
s = \\_,_,_ => s ;
sp = Indef ;
isPoss = False
} ;
mkQuant : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Quant =
oper mkQuant : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Quant =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16 -> lin Quant
{ s = table {
Nom => table {
@@ -1379,19 +1327,10 @@ mkQuant = overload {
}
}
} ;
sp = Indef ;
isPoss = False
}
} ;
mkDet = overload {
mkDet : Str -> Number -> Det = \s,n -> lin Det {
s = \\_,_ => s ;
post = \\_,_,_ => [] ;
sp = Indef ;
n = n
spec = Indef
} ;
mkDet : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det =
oper mkDet : (_,_,_,_,_,_,_,_ : Str) -> Number -> Det =
\f1,f2,f3,f4,f5,f6,f7,f8,n -> lin Det
{ s = table {
Nom => table {
@@ -1411,11 +1350,9 @@ mkDet = overload {
Fem => f8
}
} ;
post = \\_,_,_ => [] ;
sp = Indef ;
spec = Indef ;
n = n
}
} ;
} ;
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
@@ -1432,23 +1369,7 @@ mkCard : Str -> Card = \s -> lin Card {s=s} ;
mkACard : Str -> ACard = \s -> lin ACard {s=s} ;
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
mkPrep : Str -> Prep = \s -> lin Prep {
s=s;
c=case s of {
"nga" => Nom;
"prej" => Ablat;
"gjatë" => Ablat;
"pas" => Ablat;
"para" => Ablat;
"prapa" => Ablat;
"midis" => Ablat;
"mes" => Ablat;
"përveç" => Ablat;
"përtej" => Ablat;
"krahas" => Ablat;
_ => Acc
}
} ;
noPrep : Prep = lin Prep {s=""; c=Acc} ;
mkPrep : Str -> Prep = \s -> lin Prep {s=s} ;
noPrep : Prep = lin Prep {s=""} ;
}
-13
View File
@@ -4,24 +4,11 @@ concrete PhraseSqi of Phrase = CatSqi ** open Prelude, ResSqi in {
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
UttS s = s ;
UttQS s = s ;
UttImpSg p i = {s=i.s ! p.p ! Sg} ;
UttImpPl p i = {s=i.s ! p.p ! Pl} ;
UttImpPol p i = {s=i.s ! p.p ! Pl} ;
UttIP ip = {s=ip.s} ;
UttIAdv a = a ;
UttNP np = {s = np.s ! Nom} ;
UttAdv a = a ;
UttVP vp = {s="të" ++ vp.subjunctive ! Sg ! P3 ! Masc ! Nom} ;
UttCN cn = {s=cn.s ! Indef ! Nom ! Sg} ;
UttCard c = c ;
UttAP ap = {s=ap.s ! Indef ! Nom ! Masc ! Sg} ;
UttInterj i = i ;
NoPConj = {s = []} ;
PConjConj c = c ;
NoVoc = {s = []} ;
VocNP np = {s=SOFT_BIND ++ "," ++ np.s ! Nom} ;
}
-21
View File
@@ -1,21 +0,0 @@
concrete QuestionSqi of Question = CatSqi ** open Prelude, ParamX, ResSqi, (I=IrregSqi) in {
lincat QVP = {s : Str} ;
lin
QuestCl cl = cl ;
QuestVP ip vp = {s=\\t,a,p=>ip.s++negation p++futureParticle t++vp.indicative!sqiTense t!agrNumber ip.a!ip.a.p!agrGender ip.a!Nom} ;
QuestSlash ip cl = {s=\\t,a,p=>ip.s++cl.s!t!a!p++cl.c2.s} ;
QuestIAdv i cl = {s=\\t,a,p=>i.s++cl.s!t!a!p} ;
QuestIComp i np = {s=\\_,_,_=>i.s++(lin Verb I.jam_V).indicative!ResSqi.Pres!agrNumber np.a!np.a.p++np.s!Nom} ;
IdetCN d cn = {s=d.s!cn.g++cn.s!Indef!Nom!d.n; a=agrgP3 cn.g d.n} ;
IdetIP d = {s=d.s!Masc; a=agrgP3 Masc d.n} ;
AdvIP ip a = ip ** {s=ip.s++a.s} ;
IdetQuant q n = {s=\\g=>q.s!g++n.s; n=n.n} ;
PrepIP p ip = {s=p.s++ip.s} ;
AdvIAdv i a = {s=i.s++a.s} ;
CompIAdv i = i ;
CompIP ip = {s=ip.s} ;
ComplSlashIP sl ip = {s=sl.indicative!ResSqi.Pres!Sg!P3++sl.c2.s++ip.s} ;
AdvQVP vp i = {s=vp.indicative!ResSqi.Pres!Sg!P3!Masc!Nom++i.s} ;
AddAdvQVP q i = {s=q.s++i.s} ;
QuestQVP ip q = {s=\\_,_,_=>ip.s++q.s} ;
}
-8
View File
@@ -1,8 +0,0 @@
concrete RelativeSqi of Relative = CatSqi ** open ParamX, ResSqi in {
lin
RelCl cl = {s=\\_,t,a,p=>"që"++cl.s!t!a!p} ;
RelVP rp vp = {s=\\agr,t,a,p=>rp.s!Nom!agr.gn++negation p++futureParticle t++vp.indicative!sqiTense t!agrNumber agr!agr.p!agrGender agr!Nom} ;
RelSlash rp cl = {s=\\agr,t,a,p=>rp.s!cl.c2.c!agr.gn++cl.s!t!a!p++cl.c2.s} ;
IdRP = {s=\\_,_=>"që"} ;
FunRP prep np rp = {s=\\c,g=>prep.s++np.s!prep.c++rp.s!c!g} ;
}
+3 -62
View File
@@ -1,6 +1,6 @@
resource ResSqi = ParamX-[Tense,Past,Pres] ** open Prelude in {
oper Compl = {s : Str; c : Case} ;
oper Compl = {s : Str} ;
param Species = Indef | Def ;
param Case = Nom | Acc | Dat | Ablat ;
@@ -9,16 +9,6 @@ param Gender = Masc | Fem ;
param GenNum = GSg Gender | GPl ;
oper Agr = {gn : GenNum; p : Person} ;
oper agrNumber : Agr -> Number = \a -> case a.gn of {
GSg _ => Sg ;
GPl => Pl
} ;
oper agrGender : Agr -> Gender = \a -> case a.gn of {
GSg g => g ;
GPl => Masc
} ;
oper Noun = {s: Species => Case => Number => Str; g: Gender} ; -- 3978
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,g ->
@@ -114,8 +104,7 @@ oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Bool -> Adj =
param Tense = Pres | Past | Imperfect | Aorist ;
param VType = VNormal | VRefl | VJ ;
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; vtype : VType} ; -- 758
oper Verb = {indicative: Tense => Number => Person => Str; imperative: Number => Str; participle: Str; pres_optative: Number => Person => Str; perf_optative: Number => Person => Str; pres_admirative: Number => Person => Str; imperf_admirative: Number => Person => Str} ; -- 758
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43,f44,f45,f46,f47,f48,f49,f50,f51 ->
{ indicative = table {
@@ -220,8 +209,7 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
P2 => f50 ;
P3 => f51
}
} ;
vtype = VNormal
}
} ;
oper link_clitic : Species => Case => Gender => Number => Str =
@@ -270,51 +258,4 @@ oper genNum : Gender -> Number -> GenNum = \g,n ->
agrgP3 : Gender -> Number -> Agr =
\g,n -> {gn=genNum g n; p=P3} ;
oper sqiTense : ParamX.Tense -> Tense = \t -> case t of {
ParamX.Pres => Pres ;
ParamX.Past => Aorist ;
ParamX.Fut => Pres ;
ParamX.Cond => Imperfect
} ;
oper negation : Polarity -> Str = \p -> case p of {
Pos => [] ;
Neg => "nuk"
} ;
oper futureParticle : ParamX.Tense -> Str = \t -> case t of {
ParamX.Fut => "do" ++ "të" ;
ParamX.Cond => "do" ++ "të" ;
_ => []
} ;
oper subjunctiveForm : VType -> Str -> Str -> Number -> Person -> Str =
\vt,citation,fallback,n,p -> case vt of {
VJ => case <n,p> of {
<Sg,P1> => citation ;
<Sg,P3> => citation ++ BIND ++ "ë" ;
_ => fallback
} ;
_ => fallback
} ;
oper haveAux : ParamX.Tense => Number => Person => Str = table {
ParamX.Pres => table {
Sg => table {P1 => "kam"; P2 => "ke"; P3 => "ka"};
Pl => table {P1 => "kemi"; P2 => "keni"; P3 => "kanë"}
} ;
ParamX.Past => table {
Sg => table {P1 => "kisha"; P2 => "kishe"; P3 => "kishte"};
Pl => table {P1 => "kishim"; P2 => "kishit"; P3 => "kishin"}
} ;
ParamX.Fut => table {
Sg => table {P1 => "do të kem"; P2 => "do të kesh"; P3 => "do të ketë"};
Pl => table {P1 => "do të kemi"; P2 => "do të keni"; P3 => "do të kenë"}
} ;
ParamX.Cond => table {
Sg => table {P1 => "do të kisha"; P2 => "do të kishe"; P3 => "do të kishte"};
Pl => table {P1 => "do të kishim"; P2 => "do të kishit"; P3 => "do të kishin"}
}
} ;
}
-46
View File
@@ -1,46 +0,0 @@
concrete SentenceSqi of Sentence = CatSqi ** open Prelude, ParamX, ResSqi in {
oper
mkClause : Str -> Agr -> VP -> ParamX.Tense -> Anteriority -> Polarity -> Str =
\subj,a,vp,t,ant,pol -> case <ant,t> of {
<Simul,ParamX.Past> => subj ++ negation pol ++
haveAux ! ParamX.Pres ! agrNumber a ! a.p ++ vp.participle ! a ! Nom ;
<Simul,_> => subj ++ negation pol ++ futureParticle t ++
vp.indicative ! sqiTense t ! agrNumber a ! a.p ! agrGender a ! Nom ;
<Anter,_> => subj ++ negation pol ++ haveAux ! t ! agrNumber a ! a.p ++
vp.participle ! a ! Nom
} ;
lin
PredVP np vp = {s = \\t,a,p => mkClause (np.s ! Nom) np.a vp t a p} ;
PredSCVP sc vp = {s = \\t,a,p => mkClause sc.s {gn=GSg Masc; p=P3} vp t a p} ;
SlashVP np sl = {
s = \\t,a,p => np.s ! Nom ++ negation p ++ futureParticle t ++
sl.indicative ! sqiTense t ! agrNumber np.a ! np.a.p ;
c2 = sl.c2
} ;
AdvSlash cl adv = cl ** {s = \\t,a,p => cl.s ! t ! a ! p ++ adv.s} ;
SlashPrep cl prep = {s = cl.s; c2 = prep} ;
SlashVS np vs ss = {
s = \\t,a,p => np.s ! Nom ++ negation p ++ vs.indicative ! sqiTense t ! agrNumber np.a ! np.a.p ++ "që" ++ ss.s ;
c2 = {s=[]; c=Acc}
} ;
ImpVP vp = {s = \\pol,n => case pol of {Pos => []; Neg => "mos"} ++ vp.imperative ! n ! Nom} ;
AdvImp adv imp = {s = \\p,n => adv.s ++ imp.s ! p ! n} ;
EmbedS s = {s = "që" ++ s.s} ;
EmbedQS q = {s = q.s} ;
EmbedVP vp = {s = "të" ++ vp.subjunctive ! Sg ! P3 ! Masc ! Nom} ;
UseCl t p cl = {s = cl.s ! t.t ! t.a ! p.p} ;
UseQCl t p cl = {s = cl.s ! t.t ! t.a ! p.p} ;
UseRCl t p cl = {s = \\a => cl.s ! a ! t.t ! t.a ! p.p} ;
UseSlash t p cl = {s = cl.s ! t.t ! t.a ! p.p; c2=cl.c2} ;
AdvS adv s = {s = adv.s ++ s.s} ;
ExtAdvS adv s = {s = adv.s ++ SOFT_BIND ++ "," ++ s.s} ;
SSubjS s1 subj s2 = {s = s1.s ++ subj.s ++ s2.s} ;
RelS s rs = {s = s.s ++ SOFT_BIND ++ "," ++ rs.s ! {gn=GSg Masc;p=P3}} ;
}
-103
View File
@@ -16,107 +16,4 @@ lin that_Quant = mkQuant "ai" "ata" "ajo" "ato"
"atë" "ata" "atë" "ato"
"atij" "atyre" "asaj" "atyre"
"atij" "atyre" "asaj" "atyre" ;
lin
youPol_Pron = youPl_Pron ;
and_Conj = mkConj "dhe" ;
or_Conj = mkConj "ose" ;
if_then_Conj = mkConj "nëse" ;
above_Prep = mkPrep "mbi" ;
after_Prep = mkPrep "pas" ;
before_Prep = mkPrep "para" ;
behind_Prep = mkPrep "prapa" ;
between_Prep = mkPrep "midis" ;
by8agent_Prep = mkPrep "nga" ;
by8means_Prep = mkPrep "me" ;
during_Prep = mkPrep "gjatë" ;
except_Prep = mkPrep "përveç" ;
for_Prep = mkPrep "për" ;
from_Prep = mkPrep "nga" ;
in8front_Prep = mkPrep "përpara" ;
in_Prep = mkPrep "në" ;
on_Prep = mkPrep "mbi" ;
part_Prep = mkPrep "nga" ;
possess_Prep = mkPrep "i" ;
through_Prep = mkPrep "përmes" ;
to_Prep = mkPrep "te" ;
under_Prep = mkPrep "nën" ;
with_Prep = mkPrep "me" ;
without_Prep = mkPrep "pa" ;
although_Subj = mkSubj "megjithëse" ;
because_Subj = mkSubj "sepse" ;
if_Subj = mkSubj "nëse" ;
that_Subj = mkSubj "që" ;
when_Subj = mkSubj "kur" ;
always_AdV = mkAdV "gjithmonë" ;
almost_AdA = mkAdA "pothuajse" ;
so_AdA = mkAdA "kaq" ;
too_AdA = mkAdA "tepër" ;
very_AdA = mkAdA "shumë" ;
almost_AdN = mkAdN "pothuajse" ;
at_least_AdN = mkAdN "të paktën" ;
at_most_AdN = mkAdN "më së shumti" ;
more_CAdv = {s="më";p="se"} ;
less_CAdv = {s="më pak";p="se"} ;
as_CAdv = {s="po aq";p="sa"} ;
here_Adv = mkAdv "këtu" ;
there_Adv = mkAdv "atje" ;
everywhere_Adv = mkAdv "kudo" ;
somewhere_Adv = mkAdv "diku" ;
here7from_Adv = mkAdv "nga këtu" ;
here7to_Adv = mkAdv "deri këtu" ;
there7from_Adv = mkAdv "nga atje" ;
there7to_Adv = mkAdv "deri atje" ;
quite_Adv = mkAdv "mjaft" ;
how_IAdv = mkIAdv "si" ;
how8much_IAdv = mkIAdv "sa" ;
when_IAdv = mkIAdv "kur" ;
where_IAdv = mkIAdv "ku" ;
why_IAdv = mkIAdv "pse" ;
which_IQuant = {s=table {Masc=>"cili";Fem=>"cila"}} ;
how8many_IDet = {s=\\_=>"sa";n=Pl} ;
whatSg_IP = {s="çfarë";a={gn=GSg Masc;p=P3}} ;
whatPl_IP = {s="çfarë";a={gn=GPl;p=P3}} ;
whoSg_IP = {s="kush";a={gn=GSg Masc;p=P3}} ;
whoPl_IP = {s="cilët";a={gn=GPl;p=P3}} ;
all_Predet = {s="të gjithë"} ;
most_Predet = {s="shumica e"} ;
not_Predet = {s="jo"} ;
only_Predet = {s="vetëm"} ;
every_Det = {s=\\_,_=>"çdo";post=\\_,_,_=>[];sp=Indef;n=Sg} ;
few_Det = {s=\\_,_=>"pak";post=\\_,_,_=>[];sp=Indef;n=Pl} ;
many_Det = {s=\\_,_=>"shumë";post=\\_,_,_=>[];sp=Indef;n=Pl} ;
much_Det = {s=\\_,_=>"shumë";post=\\_,_,_=>[];sp=Indef;n=Sg} ;
someSg_Det = {s=\\_,_=>"një";post=\\_,_,_=>[];sp=Indef;n=Sg} ;
somePl_Det = {s=\\_,_=>"disa";post=\\_,_,_=>[];sp=Indef;n=Pl} ;
no_Quant = mkQuant "asnjë" ;
everybody_NP = {s=\\_=>"të gjithë";a={gn=GPl;p=P3}} ;
everything_NP = {s=\\_=>"gjithçka";a={gn=GSg Masc;p=P3}} ;
nobody_NP = {s=\\_=>"askush";a={gn=GSg Masc;p=P3}} ;
nothing_NP = {s=\\_=>"asgjë";a={gn=GSg Masc;p=P3}} ;
somebody_NP = {s=\\_=>"dikush";a={gn=GSg Masc;p=P3}} ;
something_NP = {s=\\_=>"diçka";a={gn=GSg Masc;p=P3}} ;
can_VV = mkVV (mkV "mund") ;
can8know_VV = mkVV (irregV "di" "di" "di" "dimë" "dini" "dinë" "di" "dini" "ditur") ;
must_VV = mkVV (mkV "duhet") ;
want_VV = mkVV (irregV "dua" "do" "do" "duam" "doni" "duan" "duaj" "doni" "dashur") ;
have_V2 = mkV2 (irregV "kam" "ke" "ka" "kemi" "keni" "kanë" "ki" "kini" "pasur") ;
but_PConj = {s="por"} ;
otherwise_PConj = {s="përndryshe"} ;
therefore_PConj = {s="prandaj"} ;
please_Voc = {s="ju lutem"} ;
yes_Utt = {s="po"} ;
no_Utt = {s="jo"} ;
language_title_Utt = {s="shqip"} ;
}
-150
View File
@@ -1,150 +0,0 @@
concrete VerbSqi of Verb = CatSqi ** open Prelude, ParamX, ResSqi, (I=IrregSqi) in {
oper
verbVP : Verb -> VP = \v -> lin VP {
indicative = \\t,n,p,_,_ => v.indicative ! t ! n ! p ;
subjunctive = \\n,p,_,_ => subjunctiveForm v.vtype
(v.indicative ! ResSqi.Pres ! Sg ! P1)
(v.indicative ! ResSqi.Pres ! n ! p) n p ;
imperative = \\n,_ => v.imperative ! n ;
participle = \\_,c => v.participle ;
pres_optative = \\n,p,c => v.pres_optative ! n ! p ;
perf_optative = \\n,p,c => v.perf_optative ! n ! p ;
pres_admirative = \\n,p,c => v.pres_admirative ! n ! p ;
imperf_admirative = \\n,p,c => v.imperf_admirative ! n ! p ;
vtype = v.vtype
} ;
addVP : VP -> (Agr => Case => Str) -> VP = \vp,x -> vp ** {
indicative = \\t,n,p,g,c => vp.indicative ! t ! n ! p ! g ! c ++
x ! {gn=genNum g n; p=p} ! c ;
subjunctive = \\n,p,g,c => vp.subjunctive ! n ! p ! g ! c ++
x ! {gn=genNum g n; p=p} ! c ;
imperative = \\n,c => vp.imperative ! n ! c ++
x ! {gn=genNum Masc n; p=P2} ! c ;
participle = \\a,c => vp.participle ! a ! c ++ x ! a ! c ;
pres_optative = \\n,p,c => vp.pres_optative ! n ! p ! c ++
x ! {gn=genNum Masc n; p=p} ! c ;
perf_optative = \\n,p,c => vp.perf_optative ! n ! p ! c ++
x ! {gn=genNum Masc n; p=p} ! c ;
pres_admirative = \\n,p,c => vp.pres_admirative ! n ! p ! c ++
x ! {gn=genNum Masc n; p=p} ! c ;
imperf_admirative = \\n,p,c => vp.imperf_admirative ! n ! p ! c ++
x ! {gn=genNum Masc n; p=p} ! c
} ;
slashVP : Verb -> Compl -> VPSlash = \v,c -> lin VPSlash {
indicative=\\t,n,p=>v.indicative!t!n!p;
subjunctive=\\n,p=>subjunctiveForm v.vtype
(v.indicative!ResSqi.Pres!Sg!P1)
(v.indicative!ResSqi.Pres!n!p) n p;
imperative=\\n=>v.imperative!n;
participle=v.participle;
pres_optative=v.pres_optative;
perf_optative=v.perf_optative;
pres_admirative=v.pres_admirative;
imperf_admirative=v.imperf_admirative;
c2=c;
vtype=v.vtype
} ;
addSlash : VPSlash -> Str -> VPSlash = \sl,x -> sl ** {
indicative = \\t,n,p => sl.indicative ! t ! n ! p ++ x ;
subjunctive = \\n,p => sl.subjunctive ! n ! p ++ x ;
imperative = \\n => sl.imperative ! n ++ x ;
participle = sl.participle ++ x ;
pres_optative = \\n,p => sl.pres_optative ! n ! p ++ x ;
perf_optative = \\n,p => sl.perf_optative ! n ! p ++ x ;
pres_admirative = \\n,p => sl.pres_admirative ! n ! p ++ x ;
imperf_admirative = \\n,p => sl.imperf_admirative ! n ! p ++ x
} ;
slashToVP : VPSlash -> VP = \v -> lin VP {
indicative = \\t,n,p,g,c => v.indicative ! t ! n ! p ;
subjunctive = \\n,p,_,_ => v.subjunctive ! n ! p ;
imperative = \\n,c => v.imperative ! n ;
participle = \\_,c => v.participle ;
pres_optative = \\n,p,c => v.pres_optative ! n ! p ;
perf_optative = \\n,p,c => v.perf_optative ! n ! p ;
pres_admirative = \\n,p,c => v.pres_admirative ! n ! p ;
imperf_admirative = \\n,p,c => v.imperf_admirative ! n ! p ;
vtype = v.vtype
} ;
lin
UseV v = verbVP v ;
SlashV2a v = slashVP v v.c2 ;
ComplSlash v np = addVP (slashToVP v) (\\_,_ => v.c2.s ++ np.s ! v.c2.c) ;
ComplVS v s = addVP (verbVP v) (\\_,_ => "që" ++ s.s) ;
ComplVQ v q = addVP (verbVP v) (\\_,_ => q.s) ;
ComplVA v ap = addVP (verbVP v) (\\a,c =>
ap.s ! Indef ! c ! agrGender a ! agrNumber a) ;
ComplVV v vp = addVP (verbVP v) (\\a,_ =>
"të" ++ vp.subjunctive ! agrNumber a ! a.p ! agrGender a ! Nom) ;
Slash2V3 v np = addSlash (slashVP (lin Verb v) v.c3)
(v.c2.s ++ np.s ! v.c2.c) ;
Slash3V3 v np = addSlash (slashVP (lin Verb v) v.c2)
(v.c3.s ++ np.s ! v.c3.c) ;
SlashV2S v s = addSlash (slashVP (lin Verb v) v.c2) ("që" ++ s.s) ;
SlashV2Q v q = addSlash (slashVP (lin Verb v) v.c2) q.s ;
SlashV2A v ap = addSlash (slashVP (lin Verb v) v.c2)
(ap.s ! Indef ! Nom ! Masc ! Sg) ;
SlashV2V v vp = addSlash (slashVP (lin Verb v) v.c2)
("të" ++ vp.subjunctive ! Sg ! P3 ! Masc ! Nom) ;
SlashVV v sl = sl ** {
indicative = \\t,n,p => v.indicative ! t ! n ! p ++ "të" ++ sl.subjunctive ! Sg ! P3 ;
subjunctive = \\n,p => subjunctiveForm v.vtype
(v.indicative!ResSqi.Pres!Sg!P1)
(v.indicative!ResSqi.Pres!n!p) n p ++ "të" ++ sl.subjunctive ! Sg ! P3
} ;
SlashV2VNP v np sl = sl ** {
indicative = \\t,n,p => v.indicative ! t ! n ! p ++ v.c2.s ++ np.s ! v.c2.c ++ "të" ++ sl.subjunctive ! Sg ! P3 ;
subjunctive = \\n,p => subjunctiveForm v.vtype
(v.indicative!ResSqi.Pres!Sg!P1)
(v.indicative!ResSqi.Pres!n!p) n p ++ v.c2.s ++ np.s ! v.c2.c ++ "të" ++ sl.subjunctive ! Sg ! P3
} ;
ReflVP sl = addVP (slashToVP sl) (\\_,_ => "veten") ;
UseComp comp = addVP (verbVP (lin Verb I.jam_V)) (\\a,_ => comp.s ! a) ;
UseCopula = verbVP (lin Verb I.jam_V) ;
PassV2 v = addVP (verbVP (lin Verb I.jam_V)) (\\_,_ => v.participle) ;
AdvVP vp adv = addVP vp (\\_,_ => adv.s) ;
ExtAdvVP vp adv = addVP vp (\\_,_ => SOFT_BIND ++ "," ++ adv.s) ;
AdVVP adv vp = vp ** {
indicative = \\t,n,p,g,c => adv.s ++ vp.indicative ! t ! n ! p ! g ! c ;
subjunctive = \\n,p,g,c => adv.s ++ vp.subjunctive ! n ! p ! g ! c ;
imperative = \\n,c => adv.s ++ vp.imperative ! n ! c
} ;
AdvVPSlash sl adv = sl ** {
indicative = \\t,n,p => sl.indicative ! t ! n ! p ++ adv.s ;
subjunctive = \\n,p => sl.subjunctive ! n ! p ++ adv.s ;
imperative = \\n => sl.imperative ! n ++ adv.s ;
participle = sl.participle ++ adv.s
} ;
AdVVPSlash adv sl = sl ** {
indicative = \\t,n,p => adv.s ++ sl.indicative ! t ! n ! p ;
subjunctive = \\n,p => adv.s ++ sl.subjunctive ! n ! p ;
imperative = \\n => adv.s ++ sl.imperative ! n
} ;
VPSlashPrep vp prep = lin VPSlash {
indicative = \\t,n,p => vp.indicative ! t ! n ! p ! Masc ! Nom ;
subjunctive = \\n,p => vp.subjunctive ! n ! p ! Masc ! Nom ;
imperative = \\n => vp.imperative ! n ! Nom ;
participle = vp.participle ! {gn=GSg Masc;p=P3} ! Nom ;
pres_optative = \\n,p => vp.pres_optative ! n ! p ! Nom ;
perf_optative = \\n,p => vp.perf_optative ! n ! p ! Nom ;
pres_admirative = \\n,p => vp.pres_admirative ! n ! p ! Nom ;
imperf_admirative = \\n,p => vp.imperf_admirative ! n ! p ! Nom ;
vtype = vp.vtype ;
c2 = prep
} ;
CompAP ap = {s = \\a => ap.s ! Indef ! Nom ! agrGender a ! agrNumber a} ;
CompNP np = {s = \\_ => np.s ! Nom} ;
CompAdv adv = {s = \\_ => adv.s} ;
CompCN cn = {s = \\_ => cn.s ! Indef ! Nom ! Sg} ;
}
+1 -1
View File
@@ -1,6 +1,6 @@
--# -path=.:../maltese:../common:../abstract:../prelude
resource TryMlt = SyntaxMlt, LexiconMlt, ParadigmsMlt - [mkAdN, mkAdv,mkCard,mkDet,mkIAdv,mkIDet,mkOrd,mkPConj,mkQuant,mkVoc] **
resource TryMlt = SyntaxMlt, LexiconMlt, ParadigmsMlt - [mkAdN, mkAdv,mkOrd,mkQuant] **
open (P = ParadigmsMlt) in {
}
+1 -3
View File
@@ -4,7 +4,7 @@ concrete ExtendAra of Extend =
CatAra ** ExtendFunctor - [
GenNP, ApposNP, ICompAP, DetNPMasc, DetNPFem,
EmptyRelSlash, PredAPVP,
ComplDirectVS, ComplDirectVQ, UttAdV, -- because of Utt
ComplDirectVS, ComplDirectVQ, -- because of Utt
VPS, MkVPS, PredVPS, BaseVPS, ConsVPS, ConjVPS,
EmbedSSlash, AdjAsNP, GerundNP,
PassVPSlash, ---- bogus implementation, see below
@@ -31,8 +31,6 @@ lin
-- : NP -> NP -> NP
ApposNP np1 np2 = np2 ** {s = \\c => np1.s ! c ++ np2.s ! c} ;
UttAdV adv = {s = \\_ => adv.s} ;
-- : AP -> IComp ; -- "how old"
ICompAP ap = {s = \\gn => "كَمْ" ++ ap.s ! NoHum ! gn.g ! gn.n ! Indef ! Acc} ;
+1 -11
View File
@@ -1,14 +1,4 @@
concrete AdjectiveBel of Adjective = CatBel ** open ResBel in {
concrete AdjectiveBel of Adjective = CatBel ** {
lin
PositA a = a ;
ComparA a np = {s = \\c,gn => "больш" ++ a.s ! c ! gn ++ "за" ++ np.s ! Acc} ;
ComplA2 a np = {s = \\c,gn => a.s ! c ! gn ++ prepNP a.c2 np} ;
ReflA2 a = {s = \\c,gn => a.s ! c ! gn ++ "да сябе"} ;
UseA2 a = a ;
UseComparA a = {s = \\c,gn => "больш" ++ a.s ! c ! gn} ;
CAdvAP cadv ap np = {s = \\c,gn => cadv.s ++ ap.s ! c ! gn ++ cadv.p ++ np.s ! Nom} ;
AdjOrd ord = ord ;
SentAP ap sc = {s = \\c,gn => ap.s ! c ! gn ++ sc.s} ;
AdAP ada ap = {s = \\c,gn => ada.s ++ ap.s ! c ! gn} ;
AdvAP ap adv = {s = \\c,gn => ap.s ! c ! gn ++ adv.s} ;
}
-13
View File
@@ -1,13 +0,0 @@
concrete AdverbBel of Adverb = CatBel ** open ResBel in {
lin
PositAdvAdj a = {s = a.s ! Nom ! GSg Neuter} ;
PrepNP prep np = {s = prepNP prep np} ;
ComparAdvAdj cadv a np = {s = cadv.s ++ a.s ! Nom ! GSg Neuter ++ cadv.p ++ np.s ! Nom} ;
ComparAdvAdjS cadv a s = {s = cadv.s ++ a.s ! Nom ! GSg Neuter ++ cadv.p ++ s.s} ;
AdAdv ada adv = {s = ada.s ++ adv.s} ;
PositAdAAdj a = {s = a.s ! Nom ! GSg Neuter} ;
SubjS subj s = {s = subj.s ++ s.s} ;
AdnCAdv cadv = {s = cadv.s} ;
}
+1 -2
View File
@@ -1,5 +1,4 @@
concrete AllBel of AllBelAbs =
LangBel,
ExtendBel
LangBel
**
{} ;
+1 -2
View File
@@ -1,4 +1,3 @@
abstract AllBelAbs =
Lang,
Extend
Lang
** {}
+16 -63
View File
@@ -1,68 +1,21 @@
concrete CatBel of Cat = CommonX ** open ResBel, (R = ParamX) in {
concrete CatBel of Cat = CommonX ** open ResBel in {
lincat
S = {s : Str} ;
QS = {s : Str} ;
RS = {s : Str} ;
Cl = {s : R.Tense => R.Polarity => Str} ;
ClSlash = {s : R.Tense => R.Polarity => Str; c : Compl} ;
SSlash = {s : Str; c : Compl} ;
Imp = {s : R.Polarity => Number => Str} ;
lincat N = Noun ;
lincat N2 = Noun ** {c2 : Compl} ;
lincat N3 = Noun ** {c2,c3 : Compl} ;
lincat V = V ;
lincat VV,VS,VQ,VA = V ;
lincat V2 = V ** {c2 : Compl} ;
lincat V3,V2A,V2S,V2Q,V2V = V ** {c2,c3 : Compl} ;
lincat A = A ;
lincat A2 = A ** {c2 : Compl} ;
lincat Prep = Compl ;
lincat CN = CommonNoun ;
lincat AP = AdjPhrase ;
lincat S = {s : Str} ;
QCl = {s : R.Tense => R.Polarity => Str} ;
IP = NPhrase ;
IComp = {s : Str} ;
IDet = {s : Case => Gender => Str; n : Number} ;
IQuant = {s : Case => Gender => Number => Str} ;
lincat LN,SN,GN,PN = {s : Str} ;
RCl = {s : R.Tense => R.Polarity => Str} ;
RP = {s : Str} ;
VP = VPhrase ;
Comp = {s : Agr => Str} ;
VPSlash = VSlash ;
N = Noun ;
N2 = Noun ** {c2 : Compl} ;
N3 = Noun ** {c2,c3 : Compl} ;
CN = CommonNoun ;
NP = NPhrase ;
Pron = {s: Case => Str; a: Agr} ;
Det = {s : Case => Gender => Str; n : Number} ;
Predet = {s : Case => Gender => Number => Str} ;
Quant = {s : Case => Gender => Number => Str} ;
Num = {s : Case => Gender => Str; n : Number} ;
Card = {s : Str; n : Number} ;
ACard = {s : Str; n : Number} ;
Ord = Adj ;
DAP = {s : Case => Gender => Str; n : Number} ;
Numeral = {s : Str} ;
Digits = {s : Str} ;
Decimal = {s : Str} ;
Conj = {s : Str; n : Number} ;
Subj = {s : Str} ;
Prep = Compl ;
V = Verb ;
VV,VS,VQ,VA = Verb ;
V2 = Verb ** {c2 : Compl} ;
V3,V2A,V2S,V2Q,V2V = Verb ** {c2,c3 : Compl} ;
A = Adj ;
A2 = Adj ** {c2 : Compl} ;
AP = AdjPhrase ;
LN = {s : Case => Str; g : Gender; n : Number} ;
PN = {s : Case => Str; g : Gender; n : Number} ;
GN = {s : Str; g : Gender} ;
SN = {s : Str} ;
linref
V,VV,V2,V3,V2A,V2S,V2Q,V2V = \v -> v.infinitive ;
N,N2,N3 = \n -> n.s ! Nom ! Sg ;
A,A2,AP,Ord = \a -> a.s ! Nom ! GSg Masc ;
NP,IP = \np -> np.s ! Nom ;
S,QS,RS = \s -> s.s ;
linref V,VV,V2,V3,V2A,V2S,V2Q,V2V = \v -> v.infinitive ;
}
-60
View File
@@ -1,60 +0,0 @@
concrete ConjunctionBel of Conjunction = CatBel ** open ResBel in {
lin
ConjS conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
ConjRS conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
ConjAP conj xs = {s = \\c,gn => xs.s1 ! c ! gn ++ conj.s ++ xs.s2 ! c ! gn} ;
ConjNP conj xs = {
s = \\c => xs.s1 ! c ++ conj.s ++ xs.s2 ! c ;
a = {g=Masc; n=conj.n; p=P3}
} ;
ConjAdv conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
ConjAdV conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
ConjIAdv conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
ConjCN conj xs = {
s = \\c,n => xs.s1 ! c ! n ++ conj.s ++ xs.s2 ! c ! n ;
voc = xs.voc ;
g = xs.g
} ;
ConjDet conj xs = {
s = \\c,g => xs.s1 ! c ! g ++ conj.s ++ xs.s2 ! c ! g ;
n = conj.n
} ;
BaseS x y = {s1 = x.s; s2 = y.s} ;
ConsS x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
BaseRS x y = {s1 = x.s; s2 = y.s} ;
ConsRS x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
BaseAdv x y = {s1 = x.s; s2 = y.s} ;
ConsAdv x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
BaseAdV x y = {s1 = x.s; s2 = y.s} ;
ConsAdV x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
BaseIAdv x y = {s1 = x.s; s2 = y.s} ;
ConsIAdv x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
BaseNP x y = {
s1 = x.s ;
s2 = y.s
} ;
ConsNP x xs = {
s1 = \\c => x.s ! c ++ "," ++ xs.s1 ! c ;
s2 = xs.s2
} ;
BaseAP x y = {s1 = x.s; s2 = y.s} ;
ConsAP x xs = {s1 = \\c,gn => x.s ! c ! gn ++ "," ++ xs.s1 ! c ! gn; s2 = xs.s2} ;
BaseCN x y = {s1 = x.s; s2 = y.s; voc = x.voc ++ "," ++ y.voc; g = x.g} ;
ConsCN x xs = {s1 = \\c,n => x.s ! c ! n ++ "," ++ xs.s1 ! c ! n; s2 = xs.s2; voc = x.voc ++ "," ++ xs.voc; g = xs.g} ;
BaseDAP x y = {s1 = x.s; s2 = y.s} ;
ConsDAP x xs = {s1 = \\c,g => x.s ! c ! g ++ "," ++ xs.s1 ! c ! g; s2 = xs.s2} ;
lincat
[S] = {s1,s2 : Str} ;
[RS] = {s1,s2 : Str} ;
[Adv] = {s1,s2 : Str} ;
[AdV] = {s1,s2 : Str} ;
[IAdv] = {s1,s2 : Str} ;
[NP] = {s1,s2 : Case => Str} ;
[AP] = {s1,s2 : Case => GenNum => Str} ;
[CN] = {s1,s2 : Case => Number => Str; voc : Str; g : Gender} ;
[DAP] = {s1,s2 : Case => Gender => Str} ;
}
-141
View File
@@ -1,141 +0,0 @@
concrete ConstructionBel of Construction = CatBel ** open ResBel, ParadigmsBel, (R = ParamX) in {
lincat
Timeunit, Hour, Weekday, Month, Monthday, Year, Language = {s : Str} ;
oper
adjVP : Adj -> VPhrase = \a -> {
s = \\t,p,agr => copula t p agr ++ a.s ! Nom ! genNum agr.g agr.n ;
inf = "быць" ++ a.s ! Nom ! GSg Masc ;
imp = \\p,_ => neg p ++ "будзь" ++ a.s ! Nom ! GSg Masc
} ;
lin
hungry_VP = adjVP (mkA "галодны") ;
thirsty_VP = adjVP (mkA "спрагнены") ;
tired_VP = adjVP (mkA "стомлены") ;
scared_VP = adjVP (mkA "спалоханы") ;
ill_VP = adjVP (mkA "хворы") ;
ready_VP = adjVP (mkA "гатовы") ;
has_age_VP card = {
s = \\t,p,a => copula t p a ++ card.s ++ "гадоў" ;
inf = card.s ++ "гадоў" ;
imp = \\p,_ => neg p ++ card.s ++ "гадоў"
} ;
have_name_Cl np name = {s = \\t,p => np.s ! Gen ++ "імя" ++ name.s ! Nom} ;
married_Cl np spouse = {s = \\t,p => np.s ! Nom ++ copula t p np.a ++ "жанаты" ++ "з" ++ spouse.s ! Instr} ;
what_name_QCl np = {s = \\t,p => "як" ++ "завуць" ++ np.s ! Acc} ;
how_old_QCl np = {s = \\t,p => "колькі гадоў" ++ np.s ! Dat} ;
how_far_QCl np = {s = \\t,p => "як далёка" ++ np.s ! Nom} ;
weather_adjCl ap = {s = \\t,p => copula t p defaultAgr ++ ap.s ! Nom ! GSg Neuter} ;
is_right_VP = adjVP (mkA "правы") ;
is_wrong_VP = adjVP (mkA "няправы") ;
n_units_AP card cn a = {s = \\c,gn => card.s ++ cn.s ! Gen ! Pl ++ a.s ! c ! gn} ;
n_units_of_NP card cn np = mkSimpleNP (card.s ++ cn.s ! Gen ! Pl ++ np.s ! Gen) Neuter Sg P3 ;
n_unit_CN card unit cn = nounFromStr (card.s ++ unit.s ! Nom ! Pl ++ cn.s ! Nom ! Sg) cn.g ;
bottle_of_CN np = nounFromStr ("бутэлька" ++ np.s ! Gen) Fem ;
cup_of_CN np = nounFromStr ("кубак" ++ np.s ! Gen) Masc ;
glass_of_CN np = nounFromStr ("шклянка" ++ np.s ! Gen) Fem ;
few_X_short_of_Y np x y = {s = np.s ! Nom ++ "бракуе" ++ x.s ! Gen ! Pl ++ "да" ++ y.s ! Gen ! Sg} ;
timeunitAdv card unit = {s = card.s ++ unit.s} ;
timeunitRange c1 c2 unit = {s = c1.s ++ "да" ++ c2.s ++ unit.s} ;
oneHour = {s = "1"} ; twoHour = {s = "2"} ; threeHour = {s = "3"} ; fourHour = {s = "4"} ;
fiveHour = {s = "5"} ; sixHour = {s = "6"} ; sevenHour = {s = "7"} ; eightHour = {s = "8"} ;
nineHour = {s = "9"} ; tenHour = {s = "10"} ; elevenHour = {s = "11"} ; twelveHour = {s = "12"} ;
thirteenHour = {s = "13"} ; fourteenHour = {s = "14"} ; fifteenHour = {s = "15"} ; sixteenHour = {s = "16"} ;
seventeenHour = {s = "17"} ; eighteenHour = {s = "18"} ; nineteenHour = {s = "19"} ; twentyHour = {s = "20"} ;
twentyOneHour = {s = "21"} ; twentyTwoHour = {s = "22"} ; twentyThreeHour = {s = "23"} ; twentyFourHour = {s = "24"} ;
timeHour h = {s = "а" ++ h.s} ;
timeHourMinute h m = {s = "а" ++ h.s ++ ":" ++ m.s} ;
weekdayPunctualAdv d = {s = "у" ++ d.s} ;
weekdayHabitualAdv d = {s = "па" ++ d.s} ;
weekdayLastAdv d = {s = "мінулай" ++ d.s} ;
weekdayNextAdv d = {s = "наступнай" ++ d.s} ;
monthAdv m = {s = "у" ++ m.s} ;
yearAdv y = {s = "у" ++ y.s} ;
dayMonthAdv d m = {s = d.s ++ m.s} ;
monthYearAdv m y = {s = m.s ++ y.s} ;
dayMonthYearAdv d m y = {s = d.s ++ m.s ++ y.s} ;
intYear i = {s = i.s} ;
intMonthday i = {s = i.s} ;
InLanguage l = {s = "па-" ++ l.s} ;
weekdayN d = nounFromStr d.s Masc ;
monthN m = nounFromStr m.s Masc ;
weekdayPN d = mkPN d.s ;
monthPN m = mkPN m.s ;
languageNP l = mkSimpleNP l.s Neuter Sg P3 ;
languageCN l = nounFromStr l.s Neuter ;
second_Timeunit = {s = "секунд"} ;
minute_Timeunit = {s = "хвілін"} ;
hour_Timeunit = {s = "гадзін"} ;
day_Timeunit = {s = "дзён"} ;
week_Timeunit = {s = "тыдняў"} ;
month_Timeunit = {s = "месяцаў"} ;
year_Timeunit = {s = "гадоў"} ;
monday_Weekday = {s = "панядзелак"} ;
tuesday_Weekday = {s = "аўторак"} ;
wednesday_Weekday = {s = "серада"} ;
thursday_Weekday = {s = "чацвер"} ;
friday_Weekday = {s = "пятніца"} ;
saturday_Weekday = {s = "субота"} ;
sunday_Weekday = {s = "нядзеля"} ;
january_Month = {s = "студзень"} ;
february_Month = {s = "люты"} ;
march_Month = {s = "сакавік"} ;
april_Month = {s = "красавік"} ;
may_Month = {s = "май"} ;
june_Month = {s = "чэрвень"} ;
july_Month = {s = "ліпень"} ;
august_Month = {s = "жнівень"} ;
september_Month = {s = "верасень"} ;
october_Month = {s = "кастрычнік"} ;
november_Month = {s = "лістапад"} ;
december_Month = {s = "снежань"} ;
afrikaans_Language = {s = "афрыкаанс"} ;
amharic_Language = {s = "амхарску"} ;
arabic_Language = {s = "арабску"} ;
bulgarian_Language = {s = "балгарску"} ;
catalan_Language = {s = "каталанску"} ;
chinese_Language = {s = "кітайску"} ;
danish_Language = {s = "дацку"} ;
dutch_Language = {s = "нідэрландску"} ;
english_Language = {s = "англійску"} ;
estonian_Language = {s = "эстонску"} ;
finnish_Language = {s = "фінску"} ;
french_Language = {s = "французску"} ;
german_Language = {s = "нямецку"} ;
greek_Language = {s = "грэцку"} ;
hebrew_Language = {s = "іўрыце"} ;
hindi_Language = {s = "хіндзі"} ;
japanese_Language = {s = "японску"} ;
italian_Language = {s = "італьянску"} ;
latin_Language = {s = "лацінску"} ;
latvian_Language = {s = "латышску"} ;
maltese_Language = {s = "мальтыйску"} ;
nepali_Language = {s = "непальску"} ;
norwegian_Language = {s = "нарвежску"} ;
persian_Language = {s = "персідску"} ;
polish_Language = {s = "польску"} ;
punjabi_Language = {s = "панджабі"} ;
romanian_Language = {s = "румынску"} ;
russian_Language = {s = "руску"} ;
sindhi_Language = {s = "сіндхі"} ;
spanish_Language = {s = "іспанску"} ;
swahili_Language = {s = "суахілі"} ;
swedish_Language = {s = "шведску"} ;
thai_Language = {s = "тайску"} ;
turkish_Language = {s = "турэцку"} ;
urdu_Language = {s = "урду"} ;
}
+6 -6
View File
@@ -29,12 +29,12 @@ lin
paragraph (x.infinitive) ++
heading1 "Present" ++
frameTable (
tr (intagAttr "th" "rowspan=\"6\"" "Pres" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td ((x.active ! Imperf).pres ! P1 ! Sg)) ++
tr (th "Pl" ++ td ((x.active ! Imperf).pres ! P1 ! Pl)) ++
tr (intagAttr "th" "rowspan=\"2\"" "P2" ++ th "Sg" ++ td ((x.active ! Imperf).pres ! P2 ! Sg)) ++
tr (th "Pl" ++ td ((x.active ! Imperf).pres ! P2 ! Pl)) ++
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td ((x.active ! Imperf).pres ! P3 ! Sg)) ++
tr (th "Pl" ++ td ((x.active ! Imperf).pres ! P3 ! Pl))) ++
tr (intagAttr "th" "rowspan=\"6\"" "Pres" ++ intagAttr "th" "rowspan=\"2\"" "P1" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P1 ! Sg)) ++
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P1 ! Pl)) ++
tr (intagAttr "th" "rowspan=\"2\"" "P2" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P2 ! Sg)) ++
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P2 ! Pl)) ++
tr (intagAttr "th" "rowspan=\"2\"" "P3" ++ th "Sg" ++ td ((x.active ! Imperf).Pres ! P3 ! Sg)) ++
tr (th "Pl" ++ td ((x.active ! Imperf).Pres ! P3 ! Pl))) ++
heading1 "Imperative" ++
frameTable (
tr (th "Sg" ++ td (x.imperative ! Sg)) ++
-244
View File
@@ -1,244 +0,0 @@
--# -path=.:../abstract:../common:prelude
concrete ExtendBel of Extend = CatBel ** open ResBel, (R = ParamX), ParadigmsBel in {
lincat
VPS = {s : Agr => Str} ;
[VPS] = {s1,s2 : Agr => Str} ;
VPI = {s : Str} ;
[VPI] = {s1,s2 : Str} ;
VPS2 = {s : Agr => Str; c : Compl; post : Str} ;
[VPS2] = {s1,s2 : Agr => Str; c : Compl; post : Str} ;
VPI2 = {s : Str; c : Compl; post : Str} ;
[VPI2] = {s1,s2 : Str; c : Compl; post : Str} ;
[Comp] = {s1,s2 : Agr => Str} ;
[Imp] = {s1,s2 : R.Polarity => Number => Str} ;
RNP = {s : Case => Str} ;
RNPList = {s1,s2 : Case => Str} ;
X = {s : Str} ;
lin
iFem_Pron = mkPron "я" "мяне" "мне" "мяне" "мне" "мной" Fem Sg P1 ;
youFem_Pron = mkPron "ты" "цябе" "табе" "цябе" "табе" "табой" Fem Sg P2 ;
weFem_Pron = mkPron "мы" "нас" "нам" "нас" "нас" "намі" Fem Pl P1 ;
youPlFem_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
theyFem_Pron = mkPron "яны" "іх" "ім" "іх" "іх" "імі" Fem Pl P3 ;
theyNeutr_Pron = mkPron "яны" "іх" "ім" "іх" "іх" "імі" Neuter Pl P3 ;
youPolFem_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
youPolPl_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
youPolPlFem_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Fem Pl P2 ;
GenNP np = {s = \\_,_,_ => np.s ! Gen} ;
GenIP ip = {s = \\_,_,_ => ip.s ! Gen} ;
GenRP num cn = {s = cn.s ! Gen ! num.n ++ "якога"} ;
GenModNP num np cn = {
s = \\c => np.s ! Gen ++ cn.s ! c ! num.n ;
a = {g=cn.g; n=num.n; p=P3}
} ;
GenModIP num ip cn = {
s = \\c => ip.s ! Gen ++ cn.s ! c ! num.n ;
a = {g=cn.g; n=num.n; p=P3}
} ;
CompBareCN cn = {s = \\a => cn.s ! Nom ! a.n} ;
PiedPipingQuestSlash ip cl = {s = \\t,p => cl.c.s ++ ip.s ! cl.c.c ++ cl.s ! t ! p} ;
PiedPipingRelSlash rp cl = {s = \\t,p => rp.s ++ cl.s ! t ! p} ;
StrandQuestSlash ip cl = {s = \\t,p => cl.c.s ++ ip.s ! cl.c.c ++ cl.s ! t ! p} ;
StrandRelSlash rp cl = {s = \\t,p => rp.s ++ cl.s ! t ! p} ;
EmptyRelSlash cl = {s = \\t,p => "што" ++ cl.s ! t ! p} ;
MkVPS temp pol vp = {s = \\a => vp.s ! temp.t ! pol.p ! a} ;
ConjVPS conj xs = {s = \\a => xs.s1 ! a ++ conj.s ++ xs.s2 ! a} ;
PredVPS np vps = {s = np.s ! Nom ++ vps.s ! np.a} ;
SQuestVPS np vps = {s = np.s ! Nom ++ vps.s ! np.a} ;
QuestVPS ip vps = {s = ip.s ! Nom ++ vps.s ! ip.a} ;
RelVPS rp vps = {s = rp.s ++ vps.s ! defaultAgr} ;
BaseVPS x y = {s1 = x.s; s2 = y.s} ;
ConsVPS x xs = {s1 = \\a => x.s ! a ++ "," ++ xs.s1 ! a; s2 = xs.s2} ;
ExistS temp pol np = {s = copula temp.t pol.p np.a ++ np.s ! Nom} ;
ExistNPQS temp pol np = {s = copula temp.t pol.p np.a ++ np.s ! Nom} ;
ExistIPQS temp pol ip = {s = copula temp.t pol.p ip.a ++ ip.s ! Nom} ;
MkVPI vp = {s = vp.inf} ;
ConjVPI conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
ComplVPIVV vv vpi = {
s = \\t,p,a => finiteVerb vv t p a ++ vpi.s ;
inf = vv.infinitive ++ vpi.s ;
imp = \\p,n => neg p ++ vv.imperative ! n ++ vpi.s
} ;
BaseVPI x y = {s1 = x.s; s2 = y.s} ;
ConsVPI x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2} ;
MkVPS2 temp pol vp = {s = \\a => vp.s ! temp.t ! pol.p ! a; c = vp.c; post = vp.post} ;
ConjVPS2 conj xs = {s = \\a => xs.s1 ! a ++ conj.s ++ xs.s2 ! a; c = xs.c; post = xs.post} ;
ComplVPS2 vps np = {s = \\a => vps.s ! a ++ prepNP vps.c np ++ vps.post} ;
ReflVPS2 vps rnp = {s = \\a => vps.s ! a ++ rnp.s ! vps.c.c ++ vps.post} ;
BaseVPS2 x y = {s1 = x.s; s2 = y.s; c = x.c; post = x.post ++ y.post} ;
ConsVPS2 x xs = {s1 = \\a => x.s ! a ++ "," ++ xs.s1 ! a; s2 = xs.s2; c = xs.c; post = x.post ++ xs.post} ;
MkVPI2 vp = {s = vp.inf; c = vp.c; post = vp.post} ;
ConjVPI2 conj xs = {s = xs.s1 ++ conj.s ++ xs.s2; c = xs.c; post = xs.post} ;
ComplVPI2 vpi np = {s = vpi.s ++ prepNP vpi.c np ++ vpi.post} ;
BaseVPI2 x y = {s1 = x.s; s2 = y.s; c = x.c; post = x.post ++ y.post} ;
ConsVPI2 x xs = {s1 = x.s ++ "," ++ xs.s1; s2 = xs.s2; c = xs.c; post = x.post ++ xs.post} ;
ConjComp conj xs = {s = \\a => xs.s1 ! a ++ conj.s ++ xs.s2 ! a} ;
BaseComp x y = {s1 = x.s; s2 = y.s} ;
ConsComp x xs = {s1 = \\a => x.s ! a ++ "," ++ xs.s1 ! a; s2 = xs.s2} ;
ConjImp conj xs = {s = \\p,n => xs.s1 ! p ! n ++ conj.s ++ xs.s2 ! p ! n} ;
BaseImp x y = {s1 = x.s; s2 = y.s} ;
ConsImp x xs = {s1 = \\p,n => x.s ! p ! n ++ "," ++ xs.s1 ! p ! n; s2 = xs.s2} ;
ProDrop pron = pron ;
ICompAP ap = {s = ap.s ! Nom ! GSg Masc} ;
IAdvAdv adv = {s = adv.s} ;
CompIQuant iq = {s = iq.s ! Nom ! Masc ! Sg} ;
PrepCN prep cn = {s = prep.s ++ cn.s ! prep.c ! Sg} ;
FocusObj np ss = {s = np.s ! Acc ++ ss.s} ;
FocusAdv adv s = {s = adv.s ++ s.s} ;
FocusAdV adv s = {s = adv.s ++ s.s} ;
FocusAP ap np = {s = ap.s ! Nom ! genNum np.a.g np.a.n ++ np.s ! Nom} ;
PresPartAP vp = adjFromStr vp.inf ;
EmbedPresPart vp = {s = vp.inf} ;
PastPartAP vp = adjFromStr vp.inf ;
PastPartAgentAP vp np = adjFromStr (vp.inf ++ prepNP (mkPrep "кім" instrumental) np) ;
PassVPSlash vp = {
s = \\t,p,a => copula t p a ++ vp.inf ;
inf = "быць" ++ vp.inf ;
imp = \\p,_ => neg p ++ "будзь" ++ vp.inf
} ;
PassAgentVPSlash vp np = addAdvVP (PassVPSlash vp) (prepNP (mkPrep "кім" instrumental) np) ;
NominalizeVPSlashNP vp np = mkSimpleNP (vp.inf ++ prepNP vp.c np) Neuter Sg P3 ;
ProgrVPSlash vp = vp ;
A2VPSlash a = {
s = \\t,p,agr => copula t p agr ++ a.s ! Nom ! genNum agr.g agr.n ;
inf = a.s ! Nom ! GSg Masc ;
c = a.c2 ;
imp = \\p,_ => neg p ++ a.s ! Nom ! GSg Masc ;
post = []
} ;
N2VPSlash n = {
s = \\t,p,agr => copula t p agr ++ n.s ! Nom ! agr.n ;
inf = n.s ! Nom ! Sg ;
c = n.c2 ;
imp = \\p,_ => neg p ++ n.s ! Nom ! Sg ;
post = []
} ;
ExistsNP np = {s = \\t,p => copula t p np.a ++ np.s ! Nom} ;
ExistCN cn = {s = \\t,p => copula t p {g=cn.g; n=Sg; p=P3} ++ cn.s ! Nom ! Sg} ;
ExistMassCN cn = ExistCN cn ;
ExistPluralCN cn = {s = \\t,p => copula t p {g=cn.g; n=Pl; p=P3} ++ cn.s ! Nom ! Pl} ;
AdvIsNP adv np = {s = \\t,p => adv.s ++ copula t p np.a ++ np.s ! Nom} ;
AdvIsNPAP adv np ap = {s = \\t,p => adv.s ++ copula t p np.a ++ np.s ! Nom ++ ap.s ! Nom ! genNum np.a.g np.a.n} ;
PurposeVP vp = {s = "каб" ++ vp.inf} ;
ComplBareVS vs s = {
s = \\t,p,a => finiteVerb vs t p a ++ s.s ;
inf = vs.infinitive ++ s.s ;
imp = \\p,n => neg p ++ vs.imperative ! n ++ s.s
} ;
SlashBareV2S v s = {
s = \\t,p,a => finiteVerb v t p a ;
inf = v.infinitive ++ s.s ;
c = v.c2 ;
imp = \\p,n => neg p ++ v.imperative ! n ;
post = s.s
} ;
ComplDirectVS vs utt = {
s = \\t,p,a => finiteVerb vs t p a ++ utt.s ;
inf = vs.infinitive ++ utt.s ;
imp = \\p,n => neg p ++ vs.imperative ! n ++ utt.s
} ;
ComplDirectVQ vq utt = {
s = \\t,p,a => finiteVerb vq t p a ++ utt.s ;
inf = vq.infinitive ++ utt.s ;
imp = \\p,n => neg p ++ vq.imperative ! n ++ utt.s
} ;
FrontComplDirectVS np vs utt = {s = \\t,p => utt.s ++ np.s ! Nom ++ finiteVerb vs t p np.a} ;
FrontComplDirectVQ np vq utt = {s = \\t,p => utt.s ++ np.s ! Nom ++ finiteVerb vq t p np.a} ;
PredAPVP ap vp = {s = \\t,p => copula t p defaultAgr ++ ap.s ! Nom ! GSg Neuter ++ vp.inf} ;
AdjAsCN ap = nounFromStr (ap.s ! Nom ! GSg Masc) Masc ;
AdjAsNP ap = mkSimpleNP (ap.s ! Nom ! GSg Masc) Masc Sg P3 ;
PredIAdvVP iadv vp = {s = \\t,p => iadv.s ++ vp.inf} ;
EmbedSSlash ss = {s = ss.s} ;
ReflRNP vp rnp = {
s = \\t,p,a => vp.s ! t ! p ! a ++ rnp.s ! vp.c.c ++ vp.post ;
inf = vp.inf ++ rnp.s ! vp.c.c ;
imp = \\p,n => vp.imp ! p ! n ++ rnp.s ! vp.c.c ++ vp.post
} ;
ReflPron = {s = caseTable "сябе"} ;
ReflPoss num cn = {s = \\c => "свой" ++ cn.s ! c ! num.n} ;
PredetRNP pred rnp = {s = \\c => pred.s ! c ! Masc ! Sg ++ rnp.s ! c} ;
AdvRNP np prep rnp = {s = \\c => np.s ! c ++ prep.s ++ rnp.s ! prep.c} ;
AdvRVP vp prep rnp = addAdvVP vp (prep.s ++ rnp.s ! prep.c) ;
AdvRAP ap prep rnp = {s = \\c,gn => ap.s ! c ! gn ++ prep.s ++ rnp.s ! prep.c} ;
ReflA2RNP a rnp = {s = \\c,gn => a.s ! c ! gn ++ a.c2.s ++ rnp.s ! a.c2.c} ;
PossPronRNP pron num cn rnp = {
s = \\c => pron.s ! Gen ++ cn.s ! c ! num.n ++ rnp.s ! Gen ;
a = {g=cn.g; n=num.n; p=P3}
} ;
ConjRNP conj xs = {s = \\c => xs.s1 ! c ++ conj.s ++ xs.s2 ! c} ;
Base_rr_RNP x y = {s1 = x.s; s2 = y.s} ;
Base_nr_RNP x y = {s1 = x.s; s2 = y.s} ;
Base_rn_RNP x y = {s1 = x.s; s2 = y.s} ;
Cons_rr_RNP x xs = {s1 = \\c => x.s ! c ++ "," ++ xs.s1 ! c; s2 = xs.s2} ;
Cons_nr_RNP x xs = {s1 = \\c => x.s ! c ++ "," ++ xs.s1 ! c; s2 = xs.s2} ;
ReflPossPron = mkQuant "свой" ;
ComplGenVV vv ant pol vp = {
s = \\t,p,a => finiteVerb vv t p a ++ neg pol.p ++ vp.inf ;
inf = vv.infinitive ++ neg pol.p ++ vp.inf ;
imp = \\p,n => neg p ++ vv.imperative ! n ++ neg pol.p ++ vp.inf
} ;
CompoundN n1 n2 = {
s = \\c,n => n1.s ! Nom ! Sg ++ n2.s ! c ! n ;
voc = n1.voc ++ n2.voc ;
g = n2.g
} ;
CompoundAP n a = {s = \\c,gn => n.s ! Nom ! Sg ++ a.s ! c ! gn} ;
GerundCN vp = nounFromStr vp.inf Neuter ;
GerundNP vp = mkSimpleNP vp.inf Neuter Sg P3 ;
GerundAdv vp = {s = vp.inf} ;
WithoutVP vp = {s = "без" ++ vp.inf} ;
ByVP vp = {s = "праз" ++ vp.inf} ;
InOrderToVP vp = {s = "каб" ++ vp.inf} ;
ApposNP np app = {s = \\c => np.s ! c ++ app.s ! Nom; a = np.a} ;
AdAdV ada adv = {s = ada.s ++ adv.s} ;
UttAdV adv = {s = adv.s} ;
PositAdVAdj a = {s = a.s ! Nom ! GSg Neuter} ;
CompS s = {s = \\_ => s.s} ;
CompQS qs = {s = \\_ => qs.s} ;
CompVP ant pol vp = {s = \\_ => neg pol.p ++ vp.inf} ;
UncontractedNeg = {s = []; p = R.Neg} ;
UttVPShort vp = {s = vp.inf} ;
ComplSlashPartLast vp np = {
s = \\t,p,a => vp.s ! t ! p ! a ++ prepNP vp.c np ++ vp.post ;
inf = vp.inf ++ prepNP vp.c np ;
imp = \\p,n => vp.imp ! p ! n ++ prepNP vp.c np ++ vp.post
} ;
DetNPMasc det = {s = \\c => det.s ! c ! Masc; a = {g=Masc; n=det.n; p=P3}} ;
DetNPFem det = {s = \\c => det.s ! c ! Fem; a = {g=Fem; n=det.n; p=P3}} ;
UseComp_estar comp = UseComp_ser comp ;
UseComp_ser comp = {
s = \\t,p,a => copula t p a ++ comp.s ! a ;
inf = "быць" ++ comp.s ! defaultAgr ;
imp = \\p,_ => neg p ++ "будзь" ++ comp.s ! defaultAgr
} ;
SubjRelNP np rs = {s = \\c => np.s ! c ++ rs.s; a = np.a} ;
UttAccNP np = {s = np.s ! Acc} ;
UttDatNP np = {s = np.s ! Dat} ;
UttAccIP ip = {s = ip.s ! Acc} ;
UttDatIP ip = {s = ip.s ! Dat} ;
UseDAP dap = {s = \\c => dap.s ! c ! Masc; a = {g=Neuter; n=dap.n; p=P3}} ;
UseDAPMasc dap = {s = \\c => dap.s ! c ! Masc; a = {g=Masc; n=dap.n; p=P3}} ;
UseDAPFem dap = {s = \\c => dap.s ! c ! Fem; a = {g=Fem; n=dap.n; p=P3}} ;
CardCNCard card cn = {s = card.s ++ cn.s ! Gen ! Pl; n = Pl} ;
TPastSimple = {s = []; t = R.Past} ;
SubjunctRelCN cn rs = {
s = \\c,n => cn.s ! c ! n ++ rs.s ;
voc = cn.voc ;
g = cn.g
} ;
}
+1 -11
View File
@@ -2,15 +2,5 @@ concrete GrammarBel of Grammar =
TenseX,
PhraseBel,
NounBel,
AdjectiveBel,
AdverbBel,
VerbBel,
SentenceBel,
QuestionBel,
RelativeBel,
ConjunctionBel,
NumeralBel,
NamesBel,
StructuralBel,
IdiomBel ** {
AdjectiveBel ** {
}
-22
View File
@@ -1,22 +0,0 @@
concrete IdiomBel of Idiom = CatBel ** open ResBel, (R = ParamX), ParadigmsBel in {
lin
ImpersCl vp = {s = \\t,p => vp.s ! t ! p ! defaultAgr} ;
GenericCl vp = {s = \\t,p => "нехта" ++ vp.s ! t ! p ! defaultAgr} ;
CleftNP np rs = {s = \\_,_ => "гэта" ++ np.s ! Nom ++ rs.s} ;
CleftAdv adv s = {s = \\_,_ => "гэта" ++ adv.s ++ s.s} ;
ExistNP np = {s = \\t,p => copula t p np.a ++ np.s ! Nom} ;
ExistIP ip = {s = \\t,p => copula t p ip.a ++ ip.s ! Nom} ;
ExistNPAdv np adv = {s = \\t,p => copula t p np.a ++ np.s ! Nom ++ adv.s} ;
ExistIPAdv ip adv = {s = \\t,p => copula t p ip.a ++ ip.s ! Nom ++ adv.s} ;
ProgrVP vp = vp ;
ImpPl1 vp = {s = "давайце" ++ vp.inf} ;
ImpP3 np vp = {s = "няхай" ++ np.s ! Nom ++ vp.s ! R.Pres ! R.Pos ! np.a} ;
SelfAdvVP vp = addAdvVP vp "сам" ;
SelfAdVVP vp = addAdVVP "сам" vp ;
SelfNP np = {s = \\c => np.s ! c ++ "сам"; a = np.a} ;
}
+1 -3
View File
@@ -1,12 +1,10 @@
--# -path=.:../abstract
concrete LangBel of Lang =
GrammarBel,
LexiconBel,
ConstructionBel
LexiconBel
,DocumentationBel --# notpresent
** {
flags startcat = Phr ;
}
File diff suppressed because it is too large Load Diff
-19
View File
@@ -1,19 +0,0 @@
concrete NamesBel of Names = CatBel ** open ResBel, ParadigmsBel in {
lin
GivenName gn = mkSimpleNP gn.s gn.g Sg P3 ;
MaleSurname sn = mkSimpleNP sn.s Masc Sg P3 ;
FemaleSurname sn = mkSimpleNP sn.s Fem Sg P3 ;
PlSurname sn = mkSimpleNP sn.s Masc Pl P3 ;
FullName gn sn = mkSimpleNP (gn.s ++ sn.s) gn.g Sg P3 ;
UseLN ln = {s = ln.s; a = {g=ln.g; n=ln.n; p=P3}} ;
PlainLN ln = {s = ln.s; a = {g=ln.g; n=ln.n; p=P3}} ;
InLN ln = {s = "у" ++ ln.s ! Loc} ;
AdjLN ap ln = {
s = \\c => ap.s ! c ! genNum ln.g ln.n ++ ln.s ! c ;
g = ln.g ;
n = ln.n
} ;
}
+1 -123
View File
@@ -1,126 +1,4 @@
concrete NounBel of Noun = CatBel ** open ResBel, Prelude in {
concrete NounBel of Noun = CatBel ** {
lin
UseN n = n ;
DetCN det cn = {
s = \\c => det.s ! c ! cn.g ++ cn.s ! c ! det.n ;
a = {g=cn.g; n=det.n; p=P3}
} ;
UsePN pn = {
s = pn.s ;
a = {g=pn.g; n=pn.n; p=P3}
} ;
UsePron p = p ;
PredetNP pred np = {
s = \\c => pred.s ! c ! np.a.g ! np.a.n ++ np.s ! c ;
a = np.a
} ;
PPartNP np v = {
s = \\c => np.s ! c ++ v.participle ! np.a.g ! np.a.n ;
a = np.a
} ;
AdvNP np adv = {
s = \\c => np.s ! c ++ adv.s ;
a = np.a
} ;
ExtAdvNP np adv = {
s = \\c => np.s ! c ++ adv.s ;
a = np.a
} ;
RelNP np rs = {
s = \\c => np.s ! c ++ rs.s ;
a = np.a
} ;
DetNP det = {
s = \\c => det.s ! c ! Masc ;
a = {g=Masc; n=det.n; p=P3}
} ;
DetQuant q n = {
s = \\c,g => q.s ! c ! g ! n.n ++ n.s ! c ! g ;
n = n.n
} ;
DetQuantOrd q n o = {
s = \\c,g => q.s ! c ! g ! n.n ++ n.s ! c ! g ++ o.s ! c ! genNum g n.n ;
n = n.n
} ;
NumSg = {s = \\_,_ => []; n = Sg} ;
NumPl = {s = \\_,_ => []; n = Pl} ;
NumCard card = {s = \\_,_ => card.s; n = card.n} ;
NumDigits digits = {s = digits.s; n = Pl} ;
NumDecimal dec = {s = dec.s; n = Pl} ;
NumNumeral numeral = {s = numeral.s; n = Pl} ;
AdNum adn card = {s = adn.s ++ card.s; n = card.n} ;
OrdDigits d = adjFromStr d.s ;
OrdNumeral n = adjFromStr n.s ;
OrdSuperl a = {s = \\c,gn => "най" ++ a.s ! c ! gn} ;
OrdNumeralSuperl n a = {s = \\c,gn => n.s ++ a.s ! c ! gn} ;
IndefArt = {s = \\_,_,_ => []} ;
DefArt = {s = \\_,_,_ => []} ;
MassNP cn = {
s = \\c => cn.s ! c ! Sg ;
a = {g=cn.g; n=Sg; p=P3}
} ;
PossPron p = {s = \\_,_,_ => p.s ! Gen} ;
ComplN2 n np = {
s = \\c,num => n.s ! c ! num ++ prepNP n.c2 np ;
voc = n.voc ;
g = n.g
} ;
ComplN3 n np = n ** {c2 = n.c3} ;
UseN2 n = n ;
Use2N3 n = n ** {c2 = n.c2} ;
Use3N3 n = n ** {c2 = n.c3} ;
AdjCN ap cn = {
s = \\c,num => ap.s ! c ! genNum cn.g num ++ cn.s ! c ! num ;
voc = cn.voc ;
g = cn.g
} ;
RelCN cn rs = {
s = \\c,num => cn.s ! c ! num ++ rs.s ;
voc = cn.voc ;
g = cn.g
} ;
AdvCN cn adv = {
s = \\c,num => cn.s ! c ! num ++ adv.s ;
voc = cn.voc ;
g = cn.g
} ;
SentCN cn sc = {
s = \\c,num => cn.s ! c ! num ++ sc.s ;
voc = cn.voc ;
g = cn.g
} ;
ApposCN cn np = {
s = \\c,num => cn.s ! c ! num ++ np.s ! Nom ;
voc = cn.voc ;
g = cn.g
} ;
PossNP cn np = {
s = \\c,num => cn.s ! c ! num ++ np.s ! Gen ;
voc = cn.voc ;
g = cn.g
} ;
PartNP cn np = {
s = \\c,num => cn.s ! c ! num ++ np.s ! Gen ;
voc = cn.voc ;
g = cn.g
} ;
CountNP det np = {
s = \\c => det.s ! c ! Masc ++ "з" ++ np.s ! Gen ;
a = {g=Masc; n=det.n; p=P3}
} ;
AdjDAP dap ap = {
s = \\c,g => dap.s ! c ! g ++ ap.s ! c ! genNum g dap.n ;
n = dap.n
} ;
DetDAP det = det ;
QuantityNP dec mu = mkSimpleNP (dec.s ++ mu.s) Neuter Sg P3 ;
}
-65
View File
@@ -1,65 +0,0 @@
concrete NumeralBel of Numeral = CatBel ** {
lincat
Digit, Sub10, Sub100, Sub1000, Sub1000000, Sub1000000000, Sub1000000000000 = {s : Str} ;
Dig = {s : Str} ;
lin
num n = n ;
n2 = {s = "2"} ;
n3 = {s = "3"} ;
n4 = {s = "4"} ;
n5 = {s = "5"} ;
n6 = {s = "6"} ;
n7 = {s = "7"} ;
n8 = {s = "8"} ;
n9 = {s = "9"} ;
pot01 = {s = "1"} ;
pot0 d = d ;
pot0as1 n = n ;
pot110 = {s = "10"} ;
pot111 = {s = "11"} ;
pot1to19 d = {s = "1" ++ d.s} ;
pot1 d = {s = d.s ++ "0"} ;
pot1plus d n = {s = d.s ++ n.s} ;
pot1as2 n = n ;
pot21 = {s = "100"} ;
pot2 n = {s = n.s ++ "00"} ;
pot2plus n m = {s = n.s ++ "00" ++ m.s} ;
pot2as3 n = n ;
pot31 = {s = "1000"} ;
pot3 n = {s = n.s ++ "000"} ;
pot3plus n m = {s = n.s ++ "000" ++ m.s} ;
pot3as4 n = n ;
pot3decimal d = {s = d.s ++ "тысяч"} ;
pot41 = {s = "1000000"} ;
pot4 n = {s = n.s ++ "000000"} ;
pot4plus n m = {s = n.s ++ "000000" ++ m.s} ;
pot4as5 n = n ;
pot4decimal d = {s = d.s ++ "мільёна"} ;
pot51 = {s = "1000000000"} ;
pot5 n = {s = n.s ++ "000000000"} ;
pot5plus n m = {s = n.s ++ "000000000" ++ m.s} ;
pot5decimal d = {s = d.s ++ "мільярда"} ;
IDig d = d ;
IIDig d ds = {s = d.s ++ ds.s} ;
D_0 = {s = "0"} ;
D_1 = {s = "1"} ;
D_2 = {s = "2"} ;
D_3 = {s = "3"} ;
D_4 = {s = "4"} ;
D_5 = {s = "5"} ;
D_6 = {s = "6"} ;
D_7 = {s = "7"} ;
D_8 = {s = "8"} ;
D_9 = {s = "9"} ;
PosDecimal d = d ;
NegDecimal d = {s = "-" ++ d.s} ;
IFrac d dig = {s = d.s ++ "." ++ dig.s} ;
}
+11 -70
View File
@@ -636,42 +636,6 @@ oper
_ => regN form1
} ;
compoundN = overload {
compoundN : A -> N -> N = \a,n -> lin N {
s = \\c,num => a.s ! c ! genNum n.g num ++ n.s ! c ! num ;
voc = a.s ! Nom ! genNum n.g Sg ++ n.voc ;
g = n.g
} ;
compoundN : N -> A -> N = \n,a -> lin N {
s = \\c,num => n.s ! c ! num ++ a.s ! c ! genNum n.g num ;
voc = n.voc ++ a.s ! Nom ! genNum n.g Sg ;
g = n.g
} ;
compoundN : N -> Str -> N = \n,adv -> lin N {
s = \\c,num => n.s ! c ! num ++ adv ;
voc = n.voc ++ adv ;
g = n.g
} ;
compoundN : Str -> N -> N = \adv,n -> lin N {
s = \\c,num => adv ++ n.s ! c ! num ;
voc = adv ++ n.voc ;
g = n.g
}
} ;
mkPron : (_,_,_,_,_,_ : Str) -> Gender -> Number -> Person -> Pron =
\nom,acc,dat,gen,loc,instr,g,n,p -> lin Pron {
s = table {
Nom => nom ;
Acc => acc ;
Dat => dat ;
Gen => gen ;
Loc => loc ;
Instr => instr
} ;
a = {g=g; n = n; p = p}
} ;
regV : Str -> V -- infinitive
= \form -> case form of {
_ + "агчы" => mkV021 form;
@@ -753,16 +717,6 @@ oper
_ => regV form1
} ;
compoundV : V -> Str -> V = \v,adv -> lin V {
active = \\a => {past=(v.active ! a).past ++ adv ;
pres=\\p,num=>(v.active ! a).pres ! p ! num ++ adv
} ;
imperative = \\num => v.imperative ! num ++ adv ;
infinitive = v.infinitive ++ adv ;
participle = \\g,num => v.participle ! g ! num ++ adv ;
passive = \\a,t => v.passive ! a ! t ++ adv
} ;
regA : Str -> A -- s;Nom;('GSg', Masc)
= \form -> case form of {
_ + "які" => mkA006 form;
@@ -865,37 +819,24 @@ oper
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
nominative : Case = Nom ;
accusative : Case = Acc ;
dative : Case = Dat ;
genitive : Case = Gen ;
locative : Case = Loc ;
instrumental : Case = Instr ;
mkPrep = overload {
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
mkPrep : Case -> Prep = \c -> lin Prep {s=[]; c=c} ;
mkPrep : Str -> Case -> Prep = \s,c -> lin Prep {s=s; c=c}
} ;
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
mkIP : Str -> IP = \s -> lin IP (mkSimpleNP s Masc Sg P3) ;
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=\\_,_,_ => s} ;
mkIDet : Str -> IDet = \s -> lin IDet {s=\\_,_ => s; n=Sg} ;
mkIP : Str -> IP = \s -> lin IP {s=s} ;
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
mkQuant : Str -> Quant = \s -> lin Quant {s=\\_,_,_ => s} ;
adjQuant : A -> Quant = \a -> lin Quant {s=\\c,g,n => a.s ! c ! genNum g n} ;
mkPredet : Str -> Predet = \s -> lin Predet {s=\\_,_,_ => s} ;
mkDet : Str -> Det = \s -> lin Det {s=\\_,_ => s; n=Sg} ;
mkCard : Str -> Card = \s -> lin Card {s=s; n=Pl} ;
mkACard : Str -> ACard = \s -> lin ACard {s=s; n=Pl} ;
mkConj : Str -> Conj = \s -> lin Conj {s=s; n=Pl} ;
mkQuant : Str -> Quant = \s -> lin Quant {s=s} ;
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
mkDet : Str -> Det = \s -> lin Det {s=s} ;
mkCard : Str -> Card = \s -> lin Card {s=s} ;
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
mkLN : Str -> LN = \s -> lin LN {s=caseTable s; g=Neuter; n=Sg} ;
mkGN : Str -> GN = \s -> lin GN {s=s; g=Masc} ;
mkLN : Str -> LN = \s -> lin LN {s=s} ;
mkGN : Str -> GN = \s -> lin GN {s=s} ;
mkSN : Str -> SN = \s -> lin SN {s=s} ;
mkPN : Str -> PN = \s -> lin PN {s=caseTable s; g=Masc; n=Sg} ;
mkPN : Str -> PN = \s -> lin PN {s=s} ;
}
+1 -15
View File
@@ -1,25 +1,11 @@
concrete PhraseBel of Phrase = CatBel ** open ResBel in {
concrete PhraseBel of Phrase = CatBel ** {
lin
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
UttS s = s ;
UttQS qs = qs ;
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! Sg} ;
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ;
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ;
UttIP ip = {s = ip.s ! Nom} ;
UttIAdv iadv = iadv ;
UttNP np = {s = np.s ! Nom} ;
UttAdv adv = adv ;
UttVP vp = {s = vp.inf} ;
UttCN cn = {s = cn.s ! Nom ! Sg} ;
UttCard card = {s = card.s} ;
UttAP ap = {s = ap.s ! Nom ! GSg Masc} ;
UttInterj i = i ;
NoPConj = {s = []} ;
PConjConj conj = {s = conj.s} ;
NoVoc = {s = []} ;
VocNP np = {s = np.s ! Nom} ;
}
-50
View File
@@ -1,50 +0,0 @@
concrete QuestionBel of Question = CatBel ** open ResBel, (R = ParamX) in {
lincat
QVP = {s : Str} ;
lin
QuestCl cl = cl ;
QuestVP ip vp = {
s = \\t,p => ip.s ! Nom ++ vp.s ! t ! p ! ip.a
} ;
QuestSlash ip cl = {
s = \\t,p => cl.c.s ++ ip.s ! cl.c.c ++ cl.s ! t ! p
} ;
QuestIAdv iadv cl = {
s = \\t,p => iadv.s ++ cl.s ! t ! p
} ;
QuestIComp icomp np = {
s = \\t,p => icomp.s ++ np.s ! Nom
} ;
IdetCN idet cn = {
s = \\c => idet.s ! c ! cn.g ++ cn.s ! c ! idet.n ;
a = {g=cn.g; n=idet.n; p=P3}
} ;
IdetIP idet = {
s = \\c => idet.s ! c ! Masc ;
a = {g=Masc; n=idet.n; p=P3}
} ;
AdvIP ip adv = {
s = \\c => ip.s ! c ++ adv.s ;
a = ip.a
} ;
IdetQuant iquant num = {
s = \\c,g => iquant.s ! c ! g ! num.n ++ num.s ! c ! g ;
n = num.n
} ;
PrepIP prep ip = {s = prepNP prep ip} ;
AdvIAdv iadv adv = {s = iadv.s ++ adv.s} ;
CompIAdv iadv = iadv ;
CompIP ip = {s = ip.s ! Nom} ;
ComplSlashIP vp ip = {s = vp.s ! R.Pres ! R.Pos ! defaultAgr ++ vp.c.s ++ ip.s ! vp.c.c ++ vp.post} ;
AdvQVP vp iadv = {s = vp.s ! R.Pres ! R.Pos ! defaultAgr ++ iadv.s} ;
AddAdvQVP qvp iadv = {s = qvp.s ++ iadv.s} ;
QuestQVP ip qvp = {
s = \\_,_ => ip.s ! Nom ++ qvp.s
} ;
}
-11
View File
@@ -1,11 +0,0 @@
concrete RelativeBel of Relative = CatBel ** open ResBel in {
lin
RelCl cl = {s = \\t,p => "што" ++ cl.s ! t ! p} ;
RelVP rp vp = {s = \\t,p => rp.s ++ vp.s ! t ! p ! defaultAgr} ;
RelSlash rp cl = {s = \\t,p => rp.s ++ cl.s ! t ! p} ;
IdRP = {s = "які"} ;
FunRP prep np rp = {s = prepNP prep np ++ rp.s} ;
}
+10 -133
View File
@@ -1,4 +1,4 @@
resource ResBel = open (R = ParamX), Prelude in {
resource ResBel = {
param Case = Nom | Acc | Dat | Gen | Loc | Instr ;
param Number = Sg | Pl ;
@@ -40,12 +40,12 @@ oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
param Aspect = Imperf | Perf ;
param Person = P1 | P2 | P3 ;
param Tense = Pres | Past ;
oper Verb = {active: Aspect => {past: Str; pres: Person => Number => Str}; imperative: Number => Str; infinitive: Str; participle: Gender => Number => Str; passive: Aspect => Tense => Str} ; -- 703
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
oper V = {active: Aspect => {Past: Str; Pres: Person => Number => Str}; imperative: Number => Str; infinitive: Str; participle: Gender => Number => Str; passive: Aspect => Tense => Str} ; -- 703
oper mkV : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27 ->
{ active = table {
Imperf => { past = f1 ;
pres = table {
Imperf => { Past = f1 ;
Pres = table {
P1 => table {
Sg => f2 ;
Pl => f3
@@ -60,8 +60,8 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V
}
}
} ;
Perf => { past = f8 ;
pres = table {
Perf => { Past = f8 ;
Pres = table {
P1 => table {
Sg => f9 ;
Pl => f10
@@ -110,14 +110,8 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> V
param GenNum = GSg Gender | GPl ;
oper genNum : Gender -> Number -> GenNum = \g,n ->
case n of {
Sg => GSg g ;
Pl => GPl
} ;
oper Adj = {s: Case => GenNum => Str} ; -- 704
oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Adj =
oper A = {s: Case => GenNum => Str} ; -- 704
oper mkA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A =
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24 ->
{ s = table {
Nom => table {
@@ -164,123 +158,6 @@ oper Compl = {s : Str; c : Case} ;
oper noPrep : Compl = {s=""; c=Acc} ;
oper CommonNoun = Noun ;
oper AdjPhrase = Adj ;
oper Agr = {g : Gender ; n : Number ; p : Person} ;
oper defaultAgr : Agr = {g=Masc; n=Sg; p=P3} ;
oper NPhrase : Type = {s : Case => Str; a : Agr} ;
oper mkNPhrase : (Case => Str) -> Agr -> NPhrase =
\s,a -> {s = s; a = a} ;
oper caseTable : Str -> Case => Str =
\s -> table {Nom => s; Acc => s; Dat => s; Gen => s; Loc => s; Instr => s} ;
oper mkSimpleNP : Str -> Gender -> Number -> Person -> NPhrase =
\s,g,n,p -> mkNPhrase (caseTable s) {g=g; n=n; p=p} ;
oper nounFromStr : Str -> Gender -> Noun =
\s,g -> {
s = \\_,_ => s ;
voc = s ;
g = g
} ;
oper adjFromStr : Str -> Adj =
\s -> {s = \\_,_ => s} ;
oper prepNP : Compl -> NPhrase -> Str =
\prep,np -> prep.s ++ np.s ! prep.c ;
oper neg : R.Polarity -> Str =
\p -> case p of {
R.Pos => [] ;
R.Neg => "не"
} ;
oper futureBe : Agr -> Str =
\a -> case <a.p,a.n> of {
<P1,Sg> => "буду" ;
<P2,Sg> => "будзеш" ;
<P3,Sg> => "будзе" ;
<P1,Pl> => "будзем" ;
<P2,Pl> => "будзеце" ;
<P3,Pl> => "будуць"
} ;
oper pastBe : Agr -> Str =
\a -> case <a.g,a.n> of {
<Masc,Sg> => "быў" ;
<Fem,Sg> => "была" ;
<Neuter,Sg> => "было" ;
<_,Pl> => "былі"
} ;
oper copula : R.Tense -> R.Polarity -> Agr -> Str =
\t,p,a -> case t of {
R.Pres => neg p ;
R.Past => neg p ++ pastBe a ;
R.Fut => neg p ++ futureBe a ;
R.Cond => neg p ++ pastBe a ++ "бы"
} ;
oper finiteVerb : Verb -> R.Tense -> R.Polarity -> Agr -> Str =
\v,t,p,a -> case t of {
R.Pres => neg p ++ (v.active ! Imperf).pres ! a.p ! a.n ;
R.Past => neg p ++ v.participle ! a.g ! a.n ;
R.Fut => neg p ++ futureBe a ++ v.infinitive ;
R.Cond => neg p ++ v.participle ! a.g ! a.n ++ "бы"
} ;
oper VPhrase : Type = {
s : R.Tense => R.Polarity => Agr => Str ;
inf : Str ;
imp : R.Polarity => Number => Str
} ;
oper mkVPhrase : Verb -> VPhrase =
\v -> {
s = \\t,p,a => finiteVerb v t p a ;
inf = v.infinitive ;
imp = \\p,n => neg p ++ v.imperative ! n
} ;
oper VSlash : Type = {
s : R.Tense => R.Polarity => Agr => Str ;
inf : Str ;
c : Compl ;
imp : R.Polarity => Number => Str ;
post : Str
} ;
oper mkVSlash : Verb -> Compl -> VSlash =
\v,c -> {
s = \\t,p,a => finiteVerb v t p a ;
inf = v.infinitive ;
c = c ;
imp = \\p,n => neg p ++ v.imperative ! n ;
post = []
} ;
oper addAdvVP : VPhrase -> Str -> VPhrase =
\vp,adv -> {
s = \\t,p,a => vp.s ! t ! p ! a ++ adv ;
inf = vp.inf ++ adv ;
imp = \\p,n => vp.imp ! p ! n ++ adv
} ;
oper addAdVVP : Str -> VPhrase -> VPhrase =
\adv,vp -> {
s = \\t,p,a => adv ++ vp.s ! t ! p ! a ;
inf = adv ++ vp.inf ;
imp = \\p,n => adv ++ vp.imp ! p ! n
} ;
oper addAdvSlash : VSlash -> Str -> VSlash =
\vp,adv -> {
s = \\t,p,a => vp.s ! t ! p ! a ;
inf = vp.inf ++ adv ;
c = vp.c ;
imp = \\p,n => vp.imp ! p ! n ;
post = vp.post ++ adv
} ;
oper AdjPhrase = A ;
}
-45
View File
@@ -1,45 +0,0 @@
concrete SentenceBel of Sentence = CatBel ** open ResBel, (R = ParamX), Prelude in {
lin
PredVP np vp = {
s = \\t,p => np.s ! Nom ++ vp.s ! t ! p ! np.a
} ;
PredSCVP sc vp = {
s = \\t,p => sc.s ++ vp.s ! t ! p ! defaultAgr
} ;
SlashVP np vp = {
s = \\t,p => np.s ! Nom ++ vp.s ! t ! p ! np.a ++ vp.post ;
c = vp.c
} ;
AdvSlash cl adv = {
s = \\t,p => cl.s ! t ! p ++ adv.s ;
c = cl.c
} ;
SlashPrep cl prep = {
s = \\t,p => cl.s ! t ! p ++ prep.s ;
c = prep
} ;
SlashVS np vs ss = {
s = \\t,p => np.s ! Nom ++ finiteVerb vs t p np.a ++ ss.s ;
c = ss.c
} ;
ImpVP vp = {s = \\p,n => vp.imp ! p ! n} ;
AdvImp adv imp = {s = \\p,n => adv.s ++ imp.s ! p ! n} ;
EmbedS s = {s = "што" ++ s.s} ;
EmbedQS qs = {s = qs.s} ;
EmbedVP vp = {s = vp.inf} ;
UseCl temp pol cl = {s = temp.s ++ pol.s ++ cl.s ! temp.t ! pol.p} ;
UseQCl temp pol cl = {s = temp.s ++ pol.s ++ cl.s ! temp.t ! pol.p} ;
UseRCl temp pol cl = {s = cl.s ! temp.t ! pol.p} ;
UseSlash temp pol cl = {s = cl.s ! temp.t ! pol.p; c = cl.c} ;
AdvS adv s = {s = adv.s ++ s.s} ;
ExtAdvS adv s = {s = adv.s ++ s.s} ;
SSubjS s1 subj s2 = {s = s1.s ++ subj.s ++ s2.s} ;
RelS s rs = {s = s.s ++ rs.s} ;
}
-110
View File
@@ -1,110 +0,0 @@
concrete StructuralBel of Structural = CatBel ** open ResBel, ParadigmsBel in {
lin
above_Prep = mkPrep "над" instrumental ;
after_Prep = mkPrep "пасля" genitive ;
all_Predet = mkPredet "усе" ;
almost_AdA = mkAdA "амаль" ;
almost_AdN = mkAdN "амаль" ;
although_Subj = mkSubj "хоць" ;
always_AdV = mkAdV "заўсёды" ;
and_Conj = mkConj "і" ;
because_Subj = mkSubj "бо" ;
before_Prep = mkPrep "перад" instrumental ;
behind_Prep = mkPrep "за" instrumental ;
between_Prep = mkPrep "паміж" instrumental ;
both7and_DConj = mkConj "і" ;
but_PConj = mkPConj "але" ;
by8agent_Prep = mkPrep "кім" instrumental ;
by8means_Prep = mkPrep "праз" accusative ;
can8know_VV = mkVV (mkV021 "магчы") ;
can_VV = mkVV (mkV021 "магчы") ;
during_Prep = mkPrep "падчас" genitive ;
either7or_DConj = mkConj "або" ;
every_Det = {s = \\_,_ => "кожны"; n = Sg} ;
everybody_NP = mkSimpleNP "усе" Masc Pl P3 ;
everything_NP = mkSimpleNP "усё" Neuter Sg P3 ;
everywhere_Adv = mkAdv "усюды" ;
few_Det = {s = \\_,_ => "некалькі"; n = Pl} ;
for_Prep = mkPrep "для" genitive ;
from_Prep = mkPrep "ад" genitive ;
i_Pron = mkPron "я" "мяне" "мне" "мяне" "мне" "мной" Masc Sg P1 ;
youSg_Pron = mkPron "ты" "цябе" "табе" "цябе" "табе" "табой" Masc Sg P2 ;
he_Pron = mkPron "ён" "яго" "яму" "яго" "ім" "ім" Masc Sg P3 ;
she_Pron = mkPron "яна" "яе" "ёй" "яе" "ёй" "ёю" Fem Sg P3 ;
it_Pron = mkPron "яно" "яго" "яму" "яго" "ім" "ім" Neuter Sg P3 ;
we_Pron = mkPron "мы" "нас" "нам" "нас" "нас" "намі" Masc Pl P1 ;
youPl_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Masc Pl P2 ;
youPol_Pron = mkPron "вы" "вас" "вам" "вас" "вас" "вамі" Masc Pl P2 ;
they_Pron = mkPron "яны" "іх" "ім" "іх" "іх" "імі" Masc Pl P3 ;
here_Adv = mkAdv "тут" ;
here7to_Adv = mkAdv "сюды" ;
here7from_Adv = mkAdv "адсюль" ;
how_IAdv = mkIAdv "як" ;
how8many_IDet = mkIDet "колькі" ;
how8much_IAdv = mkIAdv "колькі" ;
if_Subj = mkSubj "калі" ;
in8front_Prep = mkPrep "перад" instrumental ;
in_Prep = mkPrep "у" locative ;
less_CAdv = {s = "менш"; p = "чым"} ;
many_Det = {s = \\_,_ => "шмат"; n = Pl} ;
more_CAdv = {s = "больш"; p = "чым"} ;
most_Predet = mkPredet "большасць" ;
much_Det = {s = \\_,_ => "шмат"; n = Sg} ;
must_VV = mkVV (mkV "мусіць") ;
no_Utt = {s = "не"} ;
on_Prep = mkPrep "на" locative ;
only_Predet = mkPredet "толькі" ;
or_Conj = mkConj "або" ;
otherwise_PConj = mkPConj "інакш" ;
part_Prep = mkPrep "з" genitive ;
please_Voc = mkVoc "калі ласка" ;
possess_Prep = mkPrep "у" genitive ;
quite_Adv = mkAdA "зусім" ;
so_AdA = mkAdA "так" ;
someSg_Det = {s = \\_,_ => "нейкі"; n = Sg} ;
somePl_Det = {s = \\_,_ => "некаторыя"; n = Pl} ;
somebody_NP = mkSimpleNP "нехта" Masc Sg P3 ;
something_NP = mkSimpleNP "нешта" Neuter Sg P3 ;
somewhere_Adv = mkAdv "недзе" ;
that_Quant = mkQuant "той" ;
that_Subj = mkSubj "што" ;
there_Adv = mkAdv "там" ;
there7to_Adv = mkAdv "туды" ;
there7from_Adv = mkAdv "адтуль" ;
therefore_PConj = mkPConj "таму" ;
this_Quant = mkQuant "гэты" ;
through_Prep = mkPrep "праз" accusative ;
to_Prep = mkPrep "да" genitive ;
too_AdA = mkAdA "занадта" ;
under_Prep = mkPrep "пад" instrumental ;
very_AdA = mkAdA "вельмі" ;
want_VV = mkVV (mkV009 "хацець") ;
whatPl_IP = mkSimpleNP "што" Neuter Pl P3 ;
whatSg_IP = mkSimpleNP "што" Neuter Sg P3 ;
when_IAdv = mkIAdv "калі" ;
when_Subj = mkSubj "калі" ;
where_IAdv = mkIAdv "дзе" ;
which_IQuant = mkIQuant "які" ;
whoPl_IP = mkSimpleNP "хто" Masc Pl P3 ;
whoSg_IP = mkSimpleNP "хто" Masc Sg P3 ;
why_IAdv = mkIAdv "чаму" ;
with_Prep = mkPrep "з" instrumental ;
without_Prep = mkPrep "без" genitive ;
yes_Utt = {s = "так"} ;
no_Quant = mkQuant "ніякі" ;
not_Predet = mkPredet "не" ;
if_then_Conj = mkConj "калі" ;
at_least_AdN = mkAdN "прынамсі" ;
at_most_AdN = mkAdN "найбольш" ;
nobody_NP = mkSimpleNP "ніхто" Masc Sg P3 ;
nothing_NP = mkSimpleNP "нішто" Neuter Sg P3 ;
except_Prep = mkPrep "акрамя" genitive ;
as_CAdv = {s = "так"; p = "як"} ;
have_V2 = mkV2 (mkV071 "мець") ;
language_title_Utt = {s = "беларуская"} ;
}
-138
View File
@@ -1,138 +0,0 @@
concrete VerbBel of Verb = CatBel ** open ResBel, (R = ParamX), Prelude in {
lin
UseV v = mkVPhrase v ;
ComplVV vv vp = {
s = \\t,p,a => finiteVerb vv t p a ++ vp.inf ;
inf = vv.infinitive ++ vp.inf ;
imp = \\p,n => neg p ++ vv.imperative ! n ++ vp.inf
} ;
ComplVS vs s = {
s = \\t,p,a => finiteVerb vs t p a ++ "што" ++ s.s ;
inf = vs.infinitive ++ "што" ++ s.s ;
imp = \\p,n => neg p ++ vs.imperative ! n ++ "што" ++ s.s
} ;
ComplVQ vq qs = {
s = \\t,p,a => finiteVerb vq t p a ++ qs.s ;
inf = vq.infinitive ++ qs.s ;
imp = \\p,n => neg p ++ vq.imperative ! n ++ qs.s
} ;
ComplVA va ap = {
s = \\t,p,a => finiteVerb va t p a ++ ap.s ! Nom ! genNum a.g a.n ;
inf = va.infinitive ++ ap.s ! Nom ! GSg Masc ;
imp = \\p,n => neg p ++ va.imperative ! n ++ ap.s ! Nom ! GPl
} ;
SlashV2a v = mkVSlash v v.c2 ;
Slash2V3 v np = {
s = \\t,p,a => finiteVerb v t p a ++ prepNP v.c2 np ;
inf = v.infinitive ++ prepNP v.c2 np ;
c = v.c3 ;
imp = \\p,n => neg p ++ v.imperative ! n ++ prepNP v.c2 np ;
post = []
} ;
Slash3V3 v np = {
s = \\t,p,a => finiteVerb v t p a ;
inf = v.infinitive ++ prepNP v.c3 np ;
c = v.c2 ;
imp = \\p,n => neg p ++ v.imperative ! n ;
post = prepNP v.c3 np
} ;
SlashV2V v vp = {
s = \\t,p,a => finiteVerb v t p a ;
inf = v.infinitive ++ vp.inf ;
c = v.c2 ;
imp = \\p,n => neg p ++ v.imperative ! n ;
post = vp.inf
} ;
SlashV2S v s = {
s = \\t,p,a => finiteVerb v t p a ;
inf = v.infinitive ++ "што" ++ s.s ;
c = v.c2 ;
imp = \\p,n => neg p ++ v.imperative ! n ;
post = "што" ++ s.s
} ;
SlashV2Q v qs = {
s = \\t,p,a => finiteVerb v t p a ;
inf = v.infinitive ++ qs.s ;
c = v.c2 ;
imp = \\p,n => neg p ++ v.imperative ! n ;
post = qs.s
} ;
SlashV2A v ap = {
s = \\t,p,a => finiteVerb v t p a ;
inf = v.infinitive ++ ap.s ! Nom ! GSg Masc ;
c = v.c2 ;
imp = \\p,n => neg p ++ v.imperative ! n ;
post = ap.s ! Nom ! GSg Masc
} ;
ComplSlash vp np = {
s = \\t,p,a => vp.s ! t ! p ! a ++ prepNP vp.c np ++ vp.post ;
inf = vp.inf ++ prepNP vp.c np ;
imp = \\p,n => vp.imp ! p ! n ++ prepNP vp.c np ++ vp.post
} ;
SlashVV vv vp = {
s = \\t,p,a => finiteVerb vv t p a ++ vp.s ! R.Pres ! R.Pos ! a ;
inf = vv.infinitive ++ vp.inf ;
c = vp.c ;
imp = \\p,n => neg p ++ vv.imperative ! n ++ vp.imp ! R.Pos ! n ;
post = vp.post
} ;
SlashV2VNP v np vp = {
s = \\t,p,a => finiteVerb v t p a ++ prepNP v.c2 np ++ vp.s ! R.Pres ! R.Pos ! a ;
inf = v.infinitive ++ prepNP v.c2 np ++ vp.inf ;
c = vp.c ;
imp = \\p,n => neg p ++ v.imperative ! n ++ prepNP v.c2 np ++ vp.imp ! R.Pos ! n ;
post = vp.post
} ;
ReflVP vp = {
s = \\t,p,a => vp.s ! t ! p ! a ++ "сябе" ++ vp.post ;
inf = vp.inf ++ "сябе" ;
imp = \\p,n => vp.imp ! p ! n ++ "сябе" ++ vp.post
} ;
UseComp comp = {
s = \\t,p,a => copula t p a ++ comp.s ! a ;
inf = "быць" ++ comp.s ! defaultAgr ;
imp = \\p,_ => neg p ++ "будзь" ++ comp.s ! defaultAgr
} ;
PassV2 v = {
s = \\t,p,a => copula t p a ++ v.participle ! a.g ! a.n ;
inf = "быць" ++ v.participle ! Masc ! Sg ;
imp = \\p,_ => neg p ++ "будзь" ++ v.participle ! Masc ! Sg
} ;
AdvVP vp adv = addAdvVP vp adv.s ;
ExtAdvVP vp adv = addAdvVP vp adv.s ;
AdVVP adv vp = addAdVVP adv.s vp ;
AdvVPSlash vp adv = addAdvSlash vp adv.s ;
AdVVPSlash adv vp = {
s = \\t,p,a => adv.s ++ vp.s ! t ! p ! a ;
inf = adv.s ++ vp.inf ;
c = vp.c ;
imp = \\p,n => adv.s ++ vp.imp ! p ! n ;
post = vp.post
} ;
VPSlashPrep vp prep = {
s = \\t,p,a => vp.s ! t ! p ! a ++ prep.s ;
inf = vp.inf ++ prep.s ;
c = prep ;
imp = \\p,n => vp.imp ! p ! n ++ prep.s ;
post = []
} ;
CompAP ap = {s = \\a => ap.s ! Nom ! genNum a.g a.n} ;
CompNP np = {s = \\_ => np.s ! Nom} ;
CompAdv adv = {s = \\_ => adv.s} ;
CompCN cn = {s = \\a => cn.s ! Nom ! a.n} ;
UseCopula = {
s = \\t,p,a => copula t p a ;
inf = "быць" ;
imp = \\p,_ => neg p ++ "будзь"
} ;
}
+3 -111
View File
@@ -1,5 +1,7 @@
--# -path=.:../abstract:../common
concrete DocumentationBul of Documentation = CatBul ** open
ResBul, Prelude, ParamX, HTML in {
ResBul, Prelude,
HTML in {
flags coding=utf8 ;
lincat
@@ -180,116 +182,6 @@ lin
s3= ""
} ;
{-
-} --# notpresent
InflectionCl = \cl -> {
t = "изр" ;
s1 = heading1 ("Изречение") ;
s2 =
heading2 "Изявително Наклонение" ++
frameTable (
tr (intagAttr "th" "colspan=\"3\"" "Акционни времена" ++
intagAttr "th" "colspan=\"3\"" "Резултативни времена") ++
tr (th "" ++ th "съобщително" ++ th "въпросително" ++
th "" ++ th "съобщително" ++ th "въпросително") ++
tr (intagAttr "th" "rowspan=\"2\"" "сегашно" ++
td (cl.s ! VPresent ! Simul ! Pos ! Main) ++
td (cl.s ! VPresent ! Simul ! Pos ! Quest) ++
intagAttr "th" "rowspan=\"2\"" "минало неопределено" ++
td (cl.s ! VPresent ! Anter ! Pos ! Main) ++
td (cl.s ! VPresent ! Anter ! Pos ! Quest)) ++
tr (td (cl.s ! VPresent ! Simul ! Neg ! Main) ++
td (cl.s ! VPresent ! Simul ! Neg ! Quest) ++
td (cl.s ! VPresent ! Anter ! Neg ! Main) ++
td (cl.s ! VPresent ! Anter ! Neg ! Quest)) ++
tr (intagAttr "th" "rowspan=\"2\"" "минало несвършено" ++
td (cl.s ! (VPastImperfect Indicative) ! Simul ! Pos ! Main) ++
td (cl.s ! (VPastImperfect Indicative) ! Simul ! Pos ! Quest) ++
intagAttr "th" "rowspan=\"2\"" "минало предварително" ++
td (cl.s ! (VPastImperfect Indicative) ! Anter ! Pos ! Main) ++
td (cl.s ! (VPastImperfect Indicative) ! Anter ! Pos ! Quest)) ++
tr (td (cl.s ! (VPastImperfect Indicative) ! Simul ! Neg ! Main) ++
td (cl.s ! (VPastImperfect Indicative) ! Simul ! Neg ! Quest) ++
td (cl.s ! (VPastImperfect Indicative) ! Anter ! Neg ! Main) ++
td (cl.s ! (VPastImperfect Indicative) ! Anter ! Neg ! Quest)) ++
tr (intagAttr "th" "rowspan=\"2\"" "минало свършено" ++
td (cl.s ! (VPastSimple Indicative) ! Simul ! Pos ! Main) ++
td (cl.s ! (VPastSimple Indicative) ! Simul ! Pos ! Quest) ++
intagAttr "th" "rowspan=\"2\" colspan=\"3\"" "") ++
tr (td (cl.s ! (VPastSimple Indicative) ! Simul ! Neg ! Main) ++
td (cl.s ! (VPastSimple Indicative) ! Simul ! Neg ! Quest)) ++
tr (intagAttr "th" "rowspan=\"2\"" "бъдеще" ++
td (cl.s ! (VFut Indicative) ! Simul ! Pos ! Main) ++
td (cl.s ! (VFut Indicative) ! Simul ! Pos ! Quest) ++
intagAttr "th" "rowspan=\"2\"" "бъдеще предварително" ++
td (cl.s ! (VFut Indicative) ! Anter ! Pos ! Main) ++
td (cl.s ! (VFut Indicative) ! Anter ! Pos ! Quest)) ++
tr (td (cl.s ! (VFut Indicative) ! Simul ! Neg ! Main) ++
td (cl.s ! (VFut Indicative) ! Simul ! Neg ! Quest) ++
td (cl.s ! (VFut Indicative) ! Anter ! Neg ! Main) ++
td (cl.s ! (VFut Indicative) ! Anter ! Neg ! Quest)) ++
tr (intagAttr "th" "rowspan=\"2\"" "бъдеще в миналото" ++
td (cl.s ! (VPastFut) ! Simul ! Pos ! Main) ++
td (cl.s ! (VPastFut) ! Simul ! Pos ! Quest) ++
intagAttr "th" "rowspan=\"2\"" "бъдеще предв. в миналото" ++
td (cl.s ! VPastFut ! Anter ! Pos ! Main) ++
td (cl.s ! VPastFut ! Anter ! Pos ! Quest)) ++
tr (td (cl.s ! VPastFut ! Simul ! Neg ! Main) ++
td (cl.s ! VPastFut ! Simul ! Neg ! Quest) ++
td (cl.s ! VPastFut ! Anter ! Neg ! Main) ++
td (cl.s ! VPastFut ! Anter ! Neg ! Quest))) ++
heading3 "Условно Наклонение" ++
frameTable (
tr (th "съобщително" ++ th "въпросително") ++
tr (td (cl.s ! (VCond Indicative) ! Simul ! Pos ! Main) ++
td (cl.s ! (VCond Indicative) ! Simul ! Pos ! Quest)) ++
tr (td (cl.s ! (VCond Indicative) ! Simul ! Neg ! Main) ++
td (cl.s ! (VCond Indicative) ! Simul ! Neg ! Quest))) ++
heading2 "Преизказни Форми" ++
frameTable (
tr (intagAttr "th" "colspan=\"3\"" "Акционни времена" ++
intagAttr "th" "colspan=\"3\"" "Резултативни времена") ++
tr (th "" ++ th "съобщително" ++ th "въпросително" ++
th "" ++ th "съобщително" ++ th "въпросително") ++
tr (intagAttr "th" "rowspan=\"2\"" "сегашно / минало несвършено" ++
td (cl.s ! (VPastImperfect Renarrative) ! Simul ! Pos ! Main) ++
td (cl.s ! (VPastImperfect Renarrative) ! Simul ! Pos ! Quest) ++
intagAttr "th" "rowspan=\"2\"" "минало неопределено/предварително" ++
td (cl.s ! (VPastImperfect Renarrative) ! Anter ! Pos ! Main) ++
td (cl.s ! (VPastImperfect Renarrative) ! Anter ! Pos ! Quest)) ++
tr (td (cl.s ! (VPastImperfect Renarrative) ! Simul ! Neg ! Main) ++
td (cl.s ! (VPastImperfect Renarrative) ! Simul ! Neg ! Quest) ++
td (cl.s ! (VPastImperfect Renarrative) ! Anter ! Neg ! Main) ++
td (cl.s ! (VPastImperfect Renarrative) ! Anter ! Neg ! Quest)) ++
tr (intagAttr "th" "rowspan=\"2\"" "минало свършено" ++
td (cl.s ! (VPastSimple Renarrative) ! Simul ! Pos ! Main) ++
td (cl.s ! (VPastSimple Renarrative) ! Simul ! Pos ! Quest) ++
intagAttr "th" "rowspan=\"2\" colspan=\"3\"" "") ++
tr (td (cl.s ! (VPastSimple Renarrative) ! Simul ! Neg ! Main) ++
td (cl.s ! (VPastSimple Renarrative) ! Simul ! Neg ! Quest)) ++
tr (intagAttr "th" "rowspan=\"2\"" "бъдеще / бъдеще в миналото" ++
td (cl.s ! (VFut Renarrative) ! Simul ! Pos ! Main) ++
td (cl.s ! (VFut Renarrative) ! Simul ! Pos ! Quest) ++
intagAttr "th" "rowspan=\"2\"" "бъдеще предв. / бъдеще предв. в миналото" ++
td (cl.s ! (VFut Renarrative) ! Anter ! Pos ! Main) ++
td (cl.s ! (VFut Renarrative) ! Anter ! Pos ! Quest)) ++
tr (td (cl.s ! (VFut Renarrative) ! Simul ! Neg ! Main) ++
td (cl.s ! (VFut Renarrative) ! Simul ! Neg ! Quest) ++
td (cl.s ! (VFut Renarrative) ! Anter ! Neg ! Main) ++
td (cl.s ! (VFut Renarrative) ! Anter ! Neg ! Quest))) ++
heading3 "Условно Наклонение" ++
frameTable (
tr (th "съобщително" ++ th "въпросително") ++
tr (td (cl.s ! (VCond Renarrative) ! Simul ! Pos ! Main) ++
td (cl.s ! (VCond Renarrative) ! Simul ! Pos ! Quest)) ++
tr (td (cl.s ! (VCond Renarrative) ! Simul ! Neg ! Main) ++
td (cl.s ! (VCond Renarrative) ! Simul ! Neg ! Quest))) ;
s3 = ""
} ;
{- --# notpresent
-}
InflectionV v = {
t = "гл" ;
s1= heading1 ("Глагол") ++
+3 -4
View File
@@ -8,8 +8,6 @@ lin
AdAdV a adv = {s = a.s ++ adv.s; p = adv.p} ;
UttAdV adv = {s = adv.s} ;
EmptyRelSlash slash = {
s = \\t,a,p,agr => linPrep slash.c2 ++ whichRP ! agr.gn ++ slash.s ! agr ! t ! a ! p ! Main
} ;
@@ -152,7 +150,7 @@ lin
MkVPS t p vp = {
s = \\a =>
let verb = vpTenses vp ! t.t ! t.a ! p.p ! a ! Main ! Perf ;
let verb = vpTenses vp ! t.t ! t.a ! p.p ! a ! False ! Perf ;
compl = vp.compl ! a
in t.s ++ p.s ++ verb ++ compl
} ;
@@ -318,6 +316,7 @@ lin UseComp_estar = UseComp ;
lin ProDrop pro = pro ;
lin TPastSimple = {s = []} ** {t = VPastSimple Indicative} ; --# notpresent
lin TPastSimple = {s = []} ** {t = VPastSimple} ; --# notpresent
}
+1 -1
View File
@@ -67,7 +67,7 @@ concrete ExtraBul of ExtraBulAbs = CatBul **
MkVPS t p vp = {
s = \\a =>
let verb = vpTenses vp ! t.t ! t.a ! p.p ! a ! Main ! Perf ;
let verb = vpTenses vp ! t.t ! t.a ! p.p ! a ! False ! Perf ;
compl = vp.compl ! a
in t.s ++ p.s ++ verb ++ compl
} ;
+25 -4
View File
@@ -27,12 +27,33 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
agr=agrP3 (GSg Neut);
tenses = vpTenses (predV (singleV verb)) ! t ! a ! Pos ! agr
present = verb ! (VPres (numGenNum agr.gn) agr.p) ;
aorist = verb ! (VAorist (numGenNum agr.gn) agr.p) ;
imperfect = verb ! (VImperfect (numGenNum agr.gn) agr.p) ;
perfect = verb ! (VPerfect (aform agr.gn Indef (RObj Acc))) ;
auxPres = auxBe ! VPres (numGenNum agr.gn) agr.p ;
auxAorist = auxBe ! VAorist (numGenNum agr.gn) agr.p ;
auxCondS = auxCond ! numGenNum agr.gn ! agr.p ;
v : {aux1:Str; aux2:Str; main:Str}
= case <t,a> of {
<VPresent,Simul> => {aux1=[]; aux2=[]; main=present}
; --# notpresent
<VPresent,Anter> => {aux1=[]; aux2=auxPres; main=perfect} ; --# notpresent
<VPastSimple,Simul> => {aux1=[]; aux2=[]; main=aorist} ; --# notpresent
<VPastSimple,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent
<VPastImperfect,Simul> => {aux1=[]; aux2=[]; main=imperfect} ; --# notpresent
<VPastImperfect,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent
<VFut, Simul> => {aux1="ще"; aux2=[]; main=present} ; --# notpresent
<VFut, Anter> => {aux1="ще"++auxPres; aux2=[]; main=perfect} ; --# notpresent
<VCond,_> => {aux1=auxCondS; aux2=[]; main=perfect} --# notpresent
} ;
in case o of {
Main => tenses ! Inv ! Perf ++ np.s ! RObj Acc ++ adv.s ;
Inv => np.s ! RObj Acc ++ tenses ! Main ! Perf ++ adv.s ;
Quest => tenses ! Quest ! Perf ++ np.s ! RObj Acc ++ adv.s
Main => v.aux1 ++ v.main ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s ;
Inv => np.s ! RObj Acc ++ v.aux1 ++ v.main ++ v.aux2 ++ adv.s ;
Quest => v.aux1 ++ v.main ++ "ли" ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s
}
} ;
-1
View File
@@ -121,7 +121,6 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
NumNumeral numeral = {s = \\gspec => numeral.s ! NCard gspec; nn = case numeral.n of {Sg => NNum Sg; Pl => NCountable}} ;
OrdNumeral numeral = {s = \\aform => numeral.s ! NOrd aform} ;
OrdNumeralSuperl numeral a = {s = \\aform => numeral.s ! NOrd aform ++ "най" ++ hyphen ++ a.s ! indefAForm aform} ;
AdNum adn num = {s = \\gspec => adn.s ++ num.s ! gspec; nn = num.nn} ;
+25 -101
View File
@@ -77,17 +77,12 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
VVType = VVInf Aspect | VVGerund ;
Mood =
Indicative
| Renarrative ;
Tense =
VPresent
| VPastSimple Mood --# notpresent
| VPastImperfect Mood --# notpresent
| VPastFut --# notpresent
| VFut Mood --# notpresent
| VCond Mood --# notpresent
| VPastSimple --# notpresent
| VPastImperfect --# notpresent
| VFut --# notpresent
| VCond --# notpresent
;
-- The order of sentence is needed already in $VP$.
@@ -408,19 +403,6 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
}
} ;
auxWill : Number => Person => Str =
table {
Sg => table {
P1 => "щях" ;
_ => "щеше"
} ;
Pl => table {
P1 => "щяхме" ;
P2 => "щяхте" ;
P3 => "щяха"
}
} ;
verbBe : Verb = {s=table Aspect [auxBe; auxWould] ; vtype=VNormal} ;
reflClitics : Case => Str = table {Acc => "се"; Dat => "си"; WithPrep => with_Word ++ "себе си"; CPrep => "себе си"} ;
@@ -537,17 +519,18 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
_ => Pos
} ;
agr = personAgr gn p1 ;
verb : Order => Str
= \\o => vpTenses vp ! t ! a ! p ! agr ! o ! Perf ;
verb : Bool => Str
= \\q => vpTenses vp ! t ! a ! p ! agr ! q ! Perf ;
compl = vp.compl ! agr
in case o of {
Inv => verb ! Inv ++ compl ++ subj ;
o => subj ++ verb ! o ++ compl
Main => subj ++ verb ! False ++ compl ;
Inv => verb ! False ++ compl ++ subj ;
Quest => subj ++ verb ! True ++ compl
}
} ;
vpTenses : VP -> Tense => Anteriority => Polarity => Agr => Order => Aspect => Str =
\verb -> \\t,a,p,agr,o,asp =>
vpTenses : VP -> Tense => Anteriority => Polarity => Agr => Bool => Aspect => Str =
\verb -> \\t,a,p,agr,q0,asp =>
let clitic = case verb.vtype of {
VNormal => {s=verb.clitics; agr=agr} ;
VMedial c => {s=verb.clitics++reflClitics ! c; agr=agr} ;
@@ -560,14 +543,11 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
aorist = verb.s ! asp ! (VAorist (numGenNum clitic.agr.gn) clitic.agr.p) ;
imperfect = verb.s ! Imperf ! (VImperfect (numGenNum clitic.agr.gn) clitic.agr.p) ;
perfect = verb.s ! asp ! (VPerfect (aform clitic.agr.gn Indef (RObj Acc))) ;
pluperfect = verb.s ! asp ! (VPluPerfect (aform clitic.agr.gn Indef (RObj Acc))) ;
auxPres = auxBe ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ;
auxAorist = auxBe ! VAorist (numGenNum clitic.agr.gn) clitic.agr.p ;
auxPerf = auxBe ! VPerfect (aform clitic.agr.gn Indef (RObj Acc)) ;
auxImperf = auxBe ! VImperfect (numGenNum clitic.agr.gn) clitic.agr.p ;
auxCondS = auxCond ! numGenNum clitic.agr.gn ! clitic.agr.p ;
auxWillS = auxWill ! numGenNum clitic.agr.gn ! clitic.agr.p ;
apc : Str -> Str = \s ->
case <numGenNum clitic.agr.gn, clitic.agr.p> of {
@@ -575,33 +555,22 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
_ => auxPres++s++clitic.s
} ;
li0 = case <verb.ad.isEmpty,o> of {
<False,Quest> => "ли" ;
_ => []
} ;
li0 = case <verb.ad.isEmpty,q0> of {<False,True> => "ли"; _ => []} ;
li = case <verb.ad.isEmpty,o> of {
<True,Quest> => "ли";
_ => []
} ;
q = case verb.ad.isEmpty of {True => q0; False => False} ;
li = case q of {True => "ли"; _ => []} ;
vf1 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => case <verb.ad.isEmpty,o> of {
<True,Quest> => {s1=[]; s2="ли"++apc []};
<True,Inv> => {s1=[]; s2=apc []};
_ => {s1=apc []; s2=[]}
} ;
Pos => case q of {True => {s1=[]; s2="ли"++apc []};
False => {s1=apc []; s2=[]}} ;
Neg => {s1="не"++apc li; s2=[]}
} ;
vf2 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => case <verb.ad.isEmpty,o> of {
<True,Quest> => {s1=[]; s2="ли"++s};
<True,Inv> => {s1=[]; s2=s};
_ => {s1=s; s2=[]}
} ;
Pos => case q of {True => {s1=[]; s2="ли"++s};
False => {s1=s; s2=[]}} ;
Neg => case verb.vtype of
{VNormal => {s1="не"++s; s2=li} ;
_ => {s1="не"++s++li; s2=[]}}
@@ -619,63 +588,18 @@ resource ResBul = ParamX - [Tense,Pres,Past,Fut,Cond] ** open Prelude, Predef in
Neg => {s1="не"++s++li++clitic.s; s2=[]}
} ;
vf5 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => {s1=auxWillS++li++"да"++s; s2=[]} ;
Neg => {s1="нямаше"++li++"да"++s; s2=[]}
} ;
vf6 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => let aux : Str =
case numGenNum clitic.agr.gn of {
Sg => "щял" ;
Pl => "щели"
}
in case <verb.ad.isEmpty,o> of {
<True,Quest> => {s1=aux++li++auxPres++"да"++s; s2=[]};
<True,Inv> => {s1=aux++auxPres++"да"++s; s2=[]};
_ => {s1=auxPres++aux++li++"да"++s; s2=[]}
} ;
Neg => {s1="нямало"++li++"да"++s; s2=[]}
} ;
vf7 : {s1 : Str; s2 : Str} =
case <a,clitic.agr.p> of {
<Simul,P1> => case <p,o> of {
<Pos,Inv> => {s1=[]; s2=auxPres++li++clitic.s} ;
<Pos,_> => {s1=auxPres++li++clitic.s; s2=[]} ;
<Neg,_> => {s1="не"++auxPres++li++clitic.s; s2=[]}
} ;
<Simul,P2> => vf4 auxPres ;
<Simul,P3> => vf2 clitic.s ;
<Anter,P3> => vf4 auxPerf ;
<Anter,_ > => case <p,o> of {
<Pos,Inv> => {s1=[]; s2=auxPres++li++clitic.s++auxPerf} ;
<Pos,_> => {s1=auxPres++li++clitic.s++auxPerf; s2=[]} ;
<Neg,_> => {s1="не"++auxPres++li++clitic.s++auxPerf; s2=[]}
}
} ;
verbs : {aux:{s1:Str; s2:Str}; main:Str} =
case <t,a> of {
<VPresent,Simul> => {aux=vf2 clitic.s; main=presentImperf}
; --# notpresent
<VPresent,Anter> => {aux=vf1 clitic.s; main=perfect} ; --# notpresent
<VPastSimple Indicative,Simul> => {aux=vf2 clitic.s; main=aorist} ; --# notpresent
<VPastSimple Indicative,Anter> => {aux=vf4 auxAorist; main=perfect} ; --# notpresent
<VPastSimple Renarrative,_> => {aux=vf7; main=pluperfect} ; --# notpresent
<VPastImperfect Indicative,Simul> => {aux=vf2 clitic.s; main=imperfect} ; --# notpresent
<VPastImperfect Indicative,Anter> => {aux=vf4 auxImperf; main=perfect} ; --# notpresent
<VPastImperfect Renarrative,_> => {aux=vf7; main=perfect} ; --# notpresent
<VPastFut,Simul> => {aux=vf5 clitic.s; main=present} ; --# notpresent
<VPastFut,Anter> => {aux=vf5 (apc []); main=perfect} ; --# notpresent
<VFut Indicative, Simul> => {aux=vf3 clitic.s; main=present} ; --# notpresent
<VFut Indicative, Anter> => {aux=vf3 (apc []); main=perfect} ; --# notpresent
<VFut Renarrative, Simul> => {aux=vf6 clitic.s; main=present} ; --# notpresent
<VFut Renarrative, Anter> => {aux=vf6 (apc []); main=perfect} ; --# notpresent
<VCond Indicative,_ > => {aux=vf4 auxCondS; main=perfect} ; --# notpresent
<VCond Renarrative,_ > => {aux=vf4 (auxCondS++auxPerf); main=perfect} --# notpresent
<VPastSimple,Simul> => {aux=vf2 clitic.s; main=aorist} ; --# notpresent
<VPastSimple,Anter> => {aux=vf4 auxAorist; main=perfect} ; --# notpresent
<VPastImperfect,Simul> => {aux=vf2 clitic.s; main=imperfect} ; --# notpresent
<VPastImperfect,Anter> => {aux=vf4 auxImperf; main=perfect} ; --# notpresent
<VFut, Simul> => {aux=vf3 clitic.s; main=present} ; --# notpresent
<VFut, Anter> => {aux=vf3 (apc []); main=perfect} ; --# notpresent
<VCond,_ > => {aux=vf4 auxCondS; main=perfect} --# notpresent
}
in verb.ad.s ++ li0 ++ verbs.aux.s1 ++ verbs.main ++ verbs.aux.s2 ;
+3 -3
View File
@@ -3,8 +3,8 @@ concrete TenseBul of Tense = CatBul [Tense,Temp], TenseX - [Temp,Tense,TTAnt,TPr
lin
TTAnt t a = {s = a.s ++ t.s ; a = a.a ; t = t.t} ;
TPres = {s = []} ** {t = VPresent} ;
TPast = {s = []} ** {t = VPastImperfect Indicative} ; --# notpresent
TFut = {s = []} ** {t = VFut Indicative} ; --# notpresent
TCond = {s = []} ** {t = VCond Indicative} ; --# notpresent
TPast = {s = []} ** {t = VPastImperfect} ; --# notpresent
TFut = {s = []} ** {t = VFut} ; --# notpresent
TCond = {s = []} ** {t = VCond} ; --# notpresent
}
+1 -1
View File
@@ -101,7 +101,7 @@ lin
InOrderToVP = variants {} ; -- VP -> Adv ; -- (in order) to publish the document
ApposNP = variants {} ; -- NP -> NP -> NP ; -- Mr Macron, the president of France,
AdAdV = variants {} ; -- AdA -> AdV -> AdV ; -- almost always
UttAdV adv = {s = adv.s} ; -- AdV -> Utt ; -- always(!)
UttAdV = variants {} ; -- AdV -> Utt ; -- always(!)
PositAdVAdj = variants {} ; -- A -> AdV ; -- (that she) positively (sleeps)
CompS = variants {} ; -- S -> Comp ; -- (the fact is) that she sleeps
CompQS = variants {} ; -- QS -> Comp ; -- (the question is) who sleeps
-4
View File
@@ -6,8 +6,4 @@ lin
s = prep.s ++ np.prep ! prep.c
} ;
SubjS subj s = {
s = subj.s ++ s.s
} ;
}
+2 -3
View File
@@ -21,11 +21,10 @@ concrete CatCze of Cat =
RP = AdjForms ;
VP = {verb : VerbForms ; clit,compl : Agr => Str} ; ---- more fields probably needed
VPSlash = {verb : VerbForms ; clit,compl : Agr => Str ; c : ComplementCase ; ind : Agr => Str} ; -- ind : incorporated indirect object, rendered after the object slot
VPSlash = {verb : VerbForms ; clit,compl : Agr => Str ; c : ComplementCase} ; ----
V = ResCze.VerbForms ;
V2 = ResCze.VerbForms ** {c : ComplementCase} ;
V3 = ResCze.VerbForms ** {c,c2 : ComplementCase} ; -- c : direct object, c2 : indirect object
VS,VQ,VV = ResCze.VerbForms ;
VS,VQ = ResCze.VerbForms ;
A = ResCze.AdjForms ;
AP = ResCze.Adjective ** {isPost : Bool} ; -- {s : Gender => Number => Case => Str}
+1
View File
@@ -12,6 +12,7 @@ concrete ExtendCze of Extend = CatCze **
,SlashBareV2S
,PredIAdvVP
,PredAPVP
,ExistsNP
,ExistS
,ExistPluralCN
,ExistNPQS
-27
View File
@@ -1,32 +1,5 @@
concrete IdiomCze of Idiom = CatCze ** open Prelude, ResCze in {
lin
ImpP3 np vp = {
s = "nechť" ++ np.s ! Nom ++ vp.clit ! np.a ++
verbAgr vp.verb np.a True ++ vp.compl ! np.a
} ;
ImpersCl vp = let agr = Ag Neutr Sg P3 in {
subj = [] ;
clit = vp.clit ! agr ;
compl = vp.compl ! agr ;
verb = vp.verb ;
a = agr
} ;
GenericCl vp = let agr = Ag (Masc Anim) Pl P3 in {
subj = [] ;
clit = vp.clit ! agr ;
compl = vp.compl ! agr ;
verb = vp.verb ;
a = agr
} ;
ExistNP np = {
subj, clit = [] ;
compl = np.s ! Nom ;
verb = iii_kupovatVerbForms "existovat" ;
a = np.a
} ;
}
-1
View File
@@ -5,7 +5,6 @@ concrete LangCze of Lang =
LexiconCze
-- ,ConstructionCze
-- ,DocumentationCze --# notpresent
,MarkupCze - [stringMark]
** {
}
-27
View File
@@ -1,27 +0,0 @@
--# -path=.:../abstract:../common
concrete MarkupCze of Markup = CatCze, MarkHTMLX ** open ResCze in {
lin
MarkupCN m cn = cn ** {s = \\n,c => appMark m (cn.s ! n ! c)} ;
-- s, clit and prep are alternative surface forms, so each is marked;
-- but clit ! Nom is the pro-drop subject, empty for every pronoun,
-- and marking it up would leave the tags around nothing
MarkupNP m np = np ** {
s = \\c => appMark m (np.s ! c) ;
clit = \\c => case c of {
Nom => np.clit ! Nom ;
_ => appMark m (np.clit ! c)
} ;
prep = \\c => appMark m (np.prep ! c)
} ;
MarkupAP m ap = ap ** {s = \\g,n,c => appMark m (ap.s ! g ! n ! c)} ;
MarkupAdv m adv = {s = appMark m adv.s} ;
MarkupS m s = {s = appMark m s.s} ;
MarkupUtt m utt = {s = appMark m utt.s} ;
MarkupPhr m phr = {s = appMark m phr.s} ;
MarkupText m txt = {s = appMark m txt.s} ;
}
+4
View File
@@ -9,10 +9,12 @@ oper AdjOrd : Ord -> AP = notYet "AdjOrd" ;
oper AdnCAdv : CAdv -> AdN = notYet "AdnCAdv" ;
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
oper AdvS : Adv -> S -> S = notYet "AdvS" ;
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
oper CAdvAP : CAdv -> AP -> NP -> AP = notYet "CAdvAP" ;
oper CleftAdv : Adv -> S -> Cl = notYet "CleftAdv" ;
oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ;
oper CompCN : CN -> Comp = notYet "CompCN" ;
oper CompIAdv : IAdv -> IComp = notYet "CompIAdv" ;
oper CompIP : IP -> IComp = notYet "CompIP" ;
oper ComparA : A -> NP -> AP = notYet "ComparA" ;
@@ -61,6 +63,8 @@ oper RelNP : NP -> RS -> NP = notYet "RelNP" ;
oper RelSlash : RP -> ClSlash -> RCl = notYet "RelSlash" ;
oper SentAP : AP -> SC -> AP = notYet "SentAP" ;
oper SentCN : CN -> SC -> CN = notYet "SentCN" ;
oper Slash2V3 : V3 -> NP -> VPSlash = notYet "Slash2V3" ;
oper Slash3V3 : V3 -> NP -> VPSlash = notYet "Slash3V3" ;
oper SlashPrep : Cl -> Prep -> ClSlash = notYet "SlashPrep" ;
oper SlashV2A : V2A -> AP -> VPSlash = notYet "SlashV2A" ;
oper SlashV2Q : V2Q -> QS -> VPSlash = notYet "SlashV2Q" ;
-7
View File
@@ -99,12 +99,5 @@ lin
NumDecimal ds = ds ** {s = \\_,_ => ds.s} ;
NumNumeral nu = nu ;
SentCN cn sc = cn ** {s = \\n,c => cn.s ! n ! c ++ sc.s} ;
PredetNP pred np = np ** {
s = \\c => pred.s ++ np.s ! c ;
clit = \\c => pred.s ++ np.clit ! c ;
prep = \\c => pred.s ++ np.prep ! c
} ;
}
-11
View File
@@ -122,20 +122,9 @@ oper
= \vf,c -> vf ** {c = c} ;
} ;
mkV3 = overload {
mkV3 : VerbForms -> VerbForms ** {c,c2 : ComplementCase}
= \vf -> vf ** {c = {s = [] ; c = Acc ; hasPrep = False} ;
c2 = {s = [] ; c = Dat ; hasPrep = False}} ;
mkV3 : VerbForms -> ComplementCase -> ComplementCase -> VerbForms ** {c,c2 : ComplementCase}
= \vf,c,c2 -> vf ** {c = c ; c2 = c2} ;
} ;
------------------------
-- Adverbs, prepositions, conjunctions, ...
mkAdA : Str -> AdA
= \s -> lin AdA {s = s} ;
mkAdv : Str -> Adv
= \s -> lin Adv {s = s} ;
-5
View File
@@ -6,11 +6,6 @@ lin
UttCN cn = {s = cn.s ! Sg ! Nom} ;
UttAP ap = {s = ap.s ! Masc Anim ! Sg ! Nom} ;
UttNP np = {s = np.s ! Nom} ;
UttVP vp = let agr = Ag Neutr Sg P3 in {s = vp.clit ! agr ++ vp.verb.inf ++ vp.compl ! agr} ;
UttImpSg pol imp = {s = pol.s ++ imp.s} ;
UttImpPl pol imp = {s = pol.s ++ imp.s} ;
UttImpPol pol imp = {s = pol.s ++ imp.s} ;
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
-2
View File
@@ -4,6 +4,4 @@ concrete QuestionCze of Question = CatCze **
lin
QuestCl cl = cl ; ----
QuestIAdv iadv cl = cl ** {clit = iadv.s ++ cl.clit} ;
}
+18 -136
View File
@@ -28,11 +28,6 @@ oper
softConsonant : pattern Str = #("ť"|"ď"|"j"|"ň"|"ř"|"š"|"c"|"č"|"ž") ;
neutralConsonant : pattern Str = #("b"|"f"|"l"|"m"|"p"|"s"|"v") ;
-- neutral consonants take the hard endings by default (hrad, pán), and so do
-- the foreign "z" and "x"; this is the class to test when choosing a paradigm
hardishConsonant : pattern Str =
#("d"|"t"|"g"|"h"|"k"|"n"|"r" | "b"|"f"|"l"|"m"|"p"|"s"|"v" | "z"|"x") ;
consonant : pattern Str =
#(
"d" | "t" | "g" | "h" | "k" | "n" | "r" |
@@ -144,33 +139,22 @@ oper
declensionNounForms : (nom,gen : Str) -> Gender -> NounForms
= \nom,gen,g ->
-- the oblique stem, for the paradigms that cannot derive it from the nominative
let stem : Str = Predef.tk 1 gen ;
decl : DeclensionType = case <g, nom, gen> of {
<Masc Anim, _ + "tel" , _ + "e"> => declMUZstem stem ;
<Masc Anim, _ + "ce" , _ + "e"> => declSOUDCE ;
<Masc Anim, _ + ("us"|"os") , _ + "a"> => declLATINUSA ;
let decl : DeclensionType = case <g, nom, gen> of {
<Masc Anim, _ + #hardConsonant, _ + "a"> => declPAN ;
<Masc Anim, _ + "a" , _ + "a"> => declPREDSEDA ;
<Masc Anim, _ + (#softConsonant|#hardishConsonant), _ + ("e"|"ě")> => declMUZstem stem ;
<Masc Anim, _ + #hardishConsonant, _ + "a"> => declPAN ;
<Masc Inanim, _ + ("us"|"os") , _ + "u"> => declLATINUS ;
<Masc Inanim, _ + "ý" , _ + "ého"> => declADJM ;
<Masc Inanim, _ + (#softConsonant|#hardishConsonant), _ + ("e"|"ě")> => declSTROJ ;
<Masc Inanim, _ + #hardishConsonant, _ + "u"> => declHRADstem stem ;
<Masc Inanim, _ + #hardishConsonant, _ + "a"> => declHRADAstem stem ;
<Masc Inanim, _ + #hardConsonant, _ + "u"> => declHRAD ;
<Fem, _ + "a" , _ + "y"> => declZENA ;
<Fem, _ + "á" , _ + "é"> => declADJF ;
<Fem, _ + ("e"|"ě") , _ + ("e"|"ě")> => declRUZE ;
<Fem, _ + (#softConsonant|#hardishConsonant), _ + "i"> => declKOST ; --- also many other "st" 3.6.3
<Fem, _ + (#softConsonant|#hardishConsonant), _ + ("e"|"ě")> => declPISEN ;
<Neutr, _ + "um" , _ + "a"> => declLATINUM ;
<Neutr, _ + "ma" , _ + ("matu"|"mata")> => declGREEKMA ;
<Neutr, _ + "o" , _ + "a"> => declMESTO ;
<Masc Anim, _ + #softConsonant, _ + "e"> => declMUZ ;
<Masc Anim, _ + "tel" , _ + "e"> => declMUZ ;
<Masc Anim, _ + "ce" , _ + "e"> => declSOUDCE ;
<Masc Inanim, _ + #softConsonant, _ + "e"> => declSTROJ ;
<Fem, _ + ("e"|"ě") , _ + ("e"|"ě")> => declRUZE ;
<Fem, _ + #softConsonant, _ + "e"> => declPISEN ;
<Fem, _ + "ost" , _ + "i"> => declKOST ; --- also many other "st" 3.6.3
<Neutr, _ + "e" , _+"ete"> => declKURE ;
<Neutr, _ + "e" , _ + "e"> => declMORE ;
<Neutr, _ + "í" , _ + "í"> => declSTAVENI ;
<Neutr, _ + ("e"|"ě") , _ + ("e"|"ě")> => declMORE ;
<Masc Inanim, _ + ("é"|"i"|"y"|"e"), _ + ("é"|"i"|"y"|"e")> => declINVAR (Masc Inanim) ;
<Neutr, _ + ("é"|"i"|"y") , _ + ("é"|"i"|"y")> => declINVAR Neutr ;
_ => (\s -> declSTROJ ("" + s)) -- Predef.error ("cannot infer declension type for" ++ nom ++ gen)
}
in decl nom ;
@@ -181,14 +165,12 @@ oper
= \s -> case s of {
_ + "ost" => declKOST s ;
_ + "tel" => declMUZ s ;
_ + "us" => declLATINUS s ;
_ + "um" => declLATINUM s ;
_ + #hardishConsonant => declHRAD s ;
_ + #hardConsonant => declHRAD s ;
_ + #softConsonant => declSTROJ s ;
_ + "a" => declZENA s ;
_ + "o" => declMESTO s ;
_ + "ce" => declSOUDCE s ;
_ + ("e"|"ě") => declMORE s ;
_ + "e" => declMORE s ;
_ + "í" => declSTAVENI s ;
_ => declSTROJ ("" + s) -- Predef.error ("cannot guess declension type for" ++ s)
} ;
@@ -234,9 +216,9 @@ oper
g = Masc Anim
} ;
-- the oblique stem is a separate argument, because it cannot always be
-- derived from the nominative: uzel-uzlu but člen-členu
declHRADstem : Str -> DeclensionType = \hrd,hrad ->
declHRAD : DeclensionType = \hrad -> --- 3.5.2: sloc u/ě/e extra arg, sport-u, hrad-ě ; sgen u/a
let hrd = dropFleetingE hrad
in
{
snom,sacc = hrad ;
sgen,sdat = hrd + "u" ; --- Berlín-a
@@ -251,9 +233,6 @@ oper
g = Masc Inanim
} ;
declHRAD : DeclensionType = \hrad -> --- 3.5.2: sloc u/ě/e extra arg, sport-u, hrad-ě ; sgen u/a
declHRADstem (dropFleetingE hrad) hrad ;
declZENA : DeclensionType = \zena -> --- 3.6.1 sge y/i ; pgen sometimes shortening
let zen = init zena
in
@@ -291,91 +270,9 @@ oper
g = Neutr
} ;
-- Latin masculines in -us: the ending is dropped outside the nominative
-- (algoritmus - algoritmu), otherwise they follow hrad
declLATINUS : DeclensionType = \algoritmus ->
let algoritm = Predef.tk 2 algoritmus
in declHRAD algoritm ** {
snom, sacc = algoritmus ;
svoc = algoritm + "e"
} ;
declLATINUSA : DeclensionType = \genius ->
declLATINUS genius ** {g = Masc Anim} ;
-- Latin neuters in -um: the ending is dropped outside the nominative
-- (kontinuum - kontinua), otherwise they follow město
declLATINUM : DeclensionType = \kompaktum ->
let kompakt = Predef.tk 2 kompaktum
in declMESTO (kompakt + "o") ** {
snom, sacc, svoc = kompaktum
} ;
-- Greek neuters in -ma, with the stem extended by -t- (schéma - schématu)
declGREEKMA : DeclensionType = \schema ->
let schemat = schema + "t"
in {
snom,sacc,svoc = schema ;
sgen,sdat,sloc = schemat + "u" ;
sins = schemat + "em" ;
pnom,pacc = schemat + "a" ;
pgen = schemat ;
pdat = schemat + "ům" ;
ploc = schemat + "ech" ;
pins = schemat + "y" ;
g = Neutr
} ;
-- the hrad type with genitive -a instead of -u (les - lesa, zákon - zákona)
declHRADAstem : Str -> DeclensionType = \les_,les ->
declHRADstem les_ les ** {sgen = les_ + "a"} ;
declHRADA : DeclensionType = \les ->
declHRADAstem (dropFleetingE les) les ;
-- nouns that are adjectives in form: proměnná - proměnné, nultý - nultého
declADJF : DeclensionType = \promenna ->
let a = mladyAdjForms (init promenna + "ý")
in {
snom,svoc = a.fsnom ;
sgen = a.fsgen ;
sdat,sloc = a.fsdat ;
sacc = a.fsacc ;
sins = a.fsins ;
pnom,pacc = a.fpnom ;
pgen,ploc = a.pgen ;
pdat = a.msins ;
pins = a.pins ;
g = Fem
} ;
declADJM : DeclensionType = \nulty ->
let a = mladyAdjForms nulty
in {
snom,sacc,svoc = a.msnom ;
sgen = a.msgen ;
sdat = a.msdat ;
sloc = a.msloc ;
sins = a.msins ;
pnom,pacc = a.fpnom ;
pgen,ploc = a.pgen ;
pdat = a.msins ;
pins = a.pins ;
g = Masc Inanim
} ;
-- indeclinable loans: bombé, tamari, software
declINVAR : Gender -> DeclensionType = \g,s -> {
snom,sgen,sdat,sacc,svoc,sloc,sins = s ;
pnom,pgen,pdat,pacc,ploc,pins = s ;
g = g
} ;
declMUZ : DeclensionType = \muz_ -> --- 3.5.3 : sdat,sloc ; pnom
declMUZstem (dropFleetingE muz_) muz_ ;
declMUZstem : Str -> DeclensionType = \muz,muz_ ->
let muz = dropFleetingE muz_
in
{
snom = muz_ ;
sgen,sacc = muz + "e" ; --- pacc
@@ -721,21 +618,6 @@ adjFormsAdjective : AdjForms -> Adjective = \afs -> {
pastpartpl = kupo + "vali" ;
} ;
iii_krýtVerbForms : Str -> VerbForms = \krýt ->
let
kry = shortenVowel (Predef.tk 1 krýt) ;
in
{
inf = krýt ;
pressg1 = kry + "ji" ;
pressg2 = kry + "ješ" ;
pressg3, negpressg3 = kry + "je" ;
prespl1 = kry + "jeme" ;
prespl2 = kry + "jete" ;
prespl3 = kry + "jí" ;
pastpartsg = kry + "l" ;
pastpartpl = kry + "li" ;
} ;
---------------------------
-- Pronouns
-19
View File
@@ -29,23 +29,4 @@ lin
rcl.compl ! a ;
} ;
-- no imperative in VerbForms yet; the 1st person plural present is used
-- instead, which is the normal register in mathematical Czech
-- ("předpokládáme, že ..." = "we assume that ...")
ImpVP vp = let agr = Ag (Masc Anim) Pl P1 in
{s = vp.clit ! agr ++ verbAgr vp.verb agr True ++ vp.compl ! agr} ;
EmbedS s = {s = "že" ++ s.s} ;
EmbedQS qs = {s = qs.s} ;
EmbedVP vp = let agr = Ag Neutr Sg P3 in
{s = vp.clit ! agr ++ vp.verb.inf ++ vp.compl ! agr} ;
AdvS a s = {s = a.s ++ s.s} ;
ExtAdvS a s = {s = a.s ++ SOFT_BIND ++ "," ++ s.s} ;
SSubjS a subj b = {s = a.s ++ SOFT_BIND ++ "," ++ subj.s ++ b.s} ;
}
-31
View File
@@ -1,42 +1,11 @@
concrete StructuralCze of Structural = CatCze **
open ParadigmsCze, ResCze, Prelude in {
-- a singular determiner inflecting like an adjective, e.g. "každý", "nějaký"
oper
adjDet : AdjForms -> Determiner = \afs -> {
s = \\g,c => (adjFormsAdjective afs).s ! g ! Sg ! c ;
size = Num1
} ;
lin
all_Predet = {s = "všechny"} ;
and_Conj = mkConj "a" ;
both7and_DConj = {s1 = "jak" ; s2 = "tak"} ;
between_Prep = mkPrep "mezi" Ins ;
by8agent_Prep = mkPrep "od" Gen ; ---- TODO this means "from", there might be no good translation
by8means_Prep = mkPrep "pomocí" Gen ;
can_VV = {
inf = "moci" ;
pressg1 = "mohu" ;
pressg2 = "můžeš" ;
pressg3, negpressg3 = "může" ;
prespl1 = "můžeme" ;
prespl2 = "můžete" ;
prespl3 = "mohou" ;
pastpartsg = "mohl" ;
pastpartpl = "mohli" ;
} ;
either7or_DConj = {s1 = "buď" ; s2 = "nebo"} ;
every_Det = adjDet (mladyAdjForms "každý") ;
few_Det = invarNumeral "málo" ; -- CEG 6.8 --- TODO genitive mála
for_Prep = mkPrep "pro" accusative ;
if_Subj = {s = "jestliže"} ;
no_Quant = adjFormsAdjective (mladyAdjForms "žádný") ;
on_Prep = mkPrep "na" Loc ;
someSg_Det = adjDet (mladyAdjForms "nějaký") ;
that_Subj = {s = "že"} ;
under_Prep = mkPrep "pod" Ins ;
where_IAdv = {s = "kde"} ;
from_Prep = mkPrep (pre {"s"|"z" => "ze" ; _ => "z"}) Gen ; ---- consonant clusters
have_V2 = mkV2 haveVerbForms ;
in_Prep = mkPrep (pre {"v"|"m" => "ve" ; _ => "v"}) Loc ; ----
+2 -41
View File
@@ -3,48 +3,9 @@
concrete SymbolCze of Symbol = CatCze ** open Prelude, ResCze in {
lincat
Symb, [Symb] = SS ;
Symb = {s : Str} ;
lin
MkSymb s = s ;
BaseSymb = infixSS "a" ;
ConsSymb = infixSS bindComma ;
SymbPN s = symbolPN s.s ;
IntPN i = symbolPN i.s ;
FloatPN f = symbolPN f.s ;
-- unlike a bare symbol, a cardinal used as a name still declines
NumPN card = lin PN {s = \\c => card.s ! Neutr ! c ; g = Neutr} ;
-- the numeral is an invariable label: "úroveň pět", "na úrovni pět"
CNNumNP cn card = {
s,clit,prep = \\c => cn.s ! Sg ! c ++ card.s ! cn.g ! Nom ;
a = Ag cn.g Sg P3 ;
hasClit = False ;
} ;
CNIntNP cn i = {
s,clit,prep = \\c => cn.s ! Sg ! c ++ i.s ;
a = Ag cn.g Sg P3 ;
hasClit = False ;
} ;
-- as DetCN in NounCze, with the symbols in apposition
CNSymbNP det cn xs = {
s,clit,prep = \\c => det.s ! cn.g ! c ++ numSizeForm cn.s det.size c ++ xs.s ;
a = numSizeAgr cn.g det.size P3 ;
hasClit = False ;
} ;
SymbS sy = sy ;
SymbNum sy = {s = \\_,_ => sy.s ; size = Num5} ; -- "n čísel", like numerals from 5 up
SymbOrd sy = {s = glue sy.s "-tý"} ; ---- Ord is still an uninflected string
oper
symbolPN : Str -> PN
= \s -> lin PN {s = \\_ => s ; g = Neutr} ;
SymbPN s = lin PN {s = \\_ => s.s ; g = Neutr} ;
}
+3 -47
View File
@@ -8,35 +8,17 @@ lin
ComplSlash vps np = case <np.hasClit, vps.c.hasPrep> of {
<True,False> => vps ** {
clit = \\a => vps.clit ! a ++ np.clit ! vps.c.c ;
compl = \\a => vps.compl ! a ++ vps.ind ! a
clit = \\a => vps.clit ! a ++ np.clit ! vps.c.c
} ;
_ => vps ** {
compl = \\a => vps.compl ! a ++ vps.c.s ++ np.s ! vps.c.c ++ vps.ind ! a
compl = \\a => vps.compl ! a ++ vps.c.s ++ np.s ! vps.c.c
}
} ;
SlashV2a v = {
verb = v ;
clit,compl = \\_ => [] ;
c = v.c ;
ind = \\_ => []
} ;
-- three-place verbs: c = direct object case, c2 = indirect object case
Slash2V3 v np = { -- fill the direct object, leave the indirect open
verb = v ;
clit = \\_ => [] ;
compl = \\_ => v.c.s ++ np.s ! v.c.c ;
c = v.c2 ;
ind = \\_ => []
} ;
Slash3V3 v np = { -- fill the indirect object (rendered after the object slot)
verb = v ;
clit = \\_ => [] ;
compl = \\_ => [] ;
c = v.c ;
ind = \\_ => v.c2.s ++ np.s ! v.c2.c
c = v.c
} ;
UseComp comp = {
@@ -55,12 +37,6 @@ lin
s = \\a_ => np.s ! Nom ; ---- InstrC in Pol
} ;
CompCN cn = {
s = \\a => case a of {
Ag _ n _ => cn.s ! n ! Nom ---- InstrC also possible
}
} ;
CompAdv adv = {
s = \\a_ => adv.s
} ;
@@ -69,24 +45,4 @@ lin
compl = \\a => vp.compl ! a ++ adv.s
} ;
-- VerbForms has no passive participle yet, so the reflexive passive is used:
-- "číslo se dělí" = "the number is divided"
PassV2 v = {
verb = v ;
clit = \\_ => "se" ;
compl = \\_ => []
} ;
ComplVV vv vp = {
verb = vv ;
clit = vp.clit ;
compl = \\a => vp.verb.inf ++ vp.compl ! a
} ;
ComplVS vs s = {
verb = vs ;
clit = \\_ => [] ;
compl = \\_ => SOFT_BIND ++ "," ++ "že" ++ s.s
} ;
}
-40
View File
@@ -111,27 +111,6 @@ lin
s3= ""
} ;
{-
-} --# notpresent
InflectionCl = \cl -> {
t = "cl" ;
s1 = heading1 "Clause" ;
s2 = frameTable (
tr (intagAttr "th" "colspan=\"3\"" "Simple tenses" ++
intagAttr "th" "colspan=\"3\"" "Perfect tenses") ++
tr (th "tense" ++ th "declarative" ++ th "interrogative" ++
th "tense" ++ th "declarative" ++ th "interrogative") ++
inflClauseTense "present" "present perfect" Pres cl ++
inflClauseTense "past" "past perfect" Past cl ++
inflClauseTense "future" "future perfect" Fut cl ++
inflClauseTense "conditional" "conditional perfect" Cond cl
)
} ;
{- --# notpresent
-}
InflectionV v = {
t = "v" ;
s1= heading1 "Verb" ++
@@ -248,25 +227,6 @@ lin
} ;
oper
{-
-} --# notpresent
inflClauseTense : Str -> Str -> ResEng.Tense -> Cl -> Str = \simple,perfect,tense,cl ->
tr (intagAttr "th" "rowspan=\"2\"" simple ++
td (cl.s ! tense ! Simul ! CPos ! ODir False) ++
td (cl.s ! tense ! Simul ! CPos ! OQuest) ++
intagAttr "th" "rowspan=\"2\"" perfect ++
td (cl.s ! tense ! Anter ! CPos ! ODir False) ++
td (cl.s ! tense ! Anter ! CPos ! OQuest)) ++
tr (td (cl.s ! tense ! Simul ! CNeg True ! ODir False) ++
td (cl.s ! tense ! Simul ! CNeg True ! OQuest) ++
td (cl.s ! tense ! Anter ! CNeg True ! ODir False) ++
td (cl.s ! tense ! Anter ! CNeg True ! OQuest)) ;
{- --# notpresent
-}
inflVerb : Verb -> Str = \verb ->
frameTable (
tr (th "infinitive" ++ td (verb.s ! VInf)) ++
-2
View File
@@ -500,6 +500,4 @@ lin CardCNCard card cn =
lin theyFem_Pron = mkPron "they" "them" "their" "theirs" plural P3 feminine ;
lin theyNeutr_Pron = mkPron "they" "them" "their" "theirs" plural P3 nonhuman ;
lin UttAdV adv = adv ;
}
+1 -1
View File
@@ -149,7 +149,7 @@ flags optimize=values ;
stick_V = irregV "stick" "stuck" "stuck" ;
sting_V = irregV "sting" "stung" "stung" ;
stink_V = irregV "stink" "stank" "stunk" ;
stride_V = irregV "stride" "strode" "stridden" ;
stride_V = irregV "stride" "strod" "stridden" ;
strike_V = irregV "strike" "struck" "struck" ;
string_V = irregV "string" "strung" "strung" ;
strive_V = irregV "strive" "strove" "striven" ;
+1 -29
View File
@@ -1,32 +1,4 @@
concrete AdjectiveFao of Adjective = CatFao ** open ResFao in {
concrete AdjectiveFao of Adjective = CatFao ** {
lin
PositA a = a ;
ComparA a np = {
s = \\g,n,c => "meir" ++ a.s ! g ! n ! c ++ "enn" ++ np.s ! Nom
} ;
ComplA2 a np = {
s = \\g,n,c => a.s ! g ! n ! c ++ a.c2.s ++ np.s ! a.c2.c
} ;
ReflA2 a = {
s = \\g,n,c => a.s ! g ! n ! c ++ a.c2.s ++ "seg"
} ;
UseA2 a = a ;
UseComparA a = {
s = \\g,n,c => "meir" ++ a.s ! g ! n ! c
} ;
CAdvAP cadv ap np = {
s = \\g,n,c => cadv.s ++ ap.s ! g ! n ! c ++ cadv.p ++ np.s ! Nom
} ;
AdjOrd ord = {
s = ord.s
} ;
SentAP ap sc = {
s = \\g,n,c => ap.s ! g ! n ! c ++ sc.s
} ;
AdAP ada ap = {
s = \\g,n,c => ada.s ++ ap.s ! g ! n ! c
} ;
AdvAP ap adv = {
s = \\g,n,c => ap.s ! g ! n ! c ++ adv.s
} ;
}
-11
View File
@@ -1,11 +0,0 @@
concrete AdverbFao of Adverb = CatFao ** open Prelude,ResFao in {
lin
PositAdvAdj a = {s = a.s ! Neuter ! Sg ! Nom} ;
PrepNP p np = {s = p.s ++ np.s ! p.c} ;
ComparAdvAdj cadv a np = {s = cadv.s ++ a.s ! Neuter ! Sg ! Nom ++ cadv.p ++ np.s ! Nom} ;
ComparAdvAdjS cadv a s = {s = cadv.s ++ a.s ! Neuter ! Sg ! Nom ++ cadv.p ++ s.s} ;
AdAdv ada adv = {s = ada.s ++ adv.s} ;
PositAdAAdj a = {s = a.s ! Neuter ! Sg ! Nom} ;
SubjS subj s = {s = subj.s ++ s.s} ;
AdnCAdv cadv = {s = cadv.s} ;
}
+1 -2
View File
@@ -1,5 +1,4 @@
concrete AllFao of AllFaoAbs =
LangFao,
ExtendFao
LangFao
**
{} ;
+1 -2
View File
@@ -1,4 +1,3 @@
abstract AllFaoAbs =
Lang,
Extend
Lang
** {}
+1 -34
View File
@@ -1,4 +1,4 @@
concrete CatFao of Cat = CommonX ** open ResFao, Prelude in {
concrete CatFao of Cat = CommonX ** open ResFao in {
lincat N = Noun ;
lincat N2 = Noun ** {c2 : Compl} ;
@@ -9,43 +9,10 @@ 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 = VerbPhrase ;
lincat VPSlash = Verb ** {c2 : Compl ; sc : Str} ;
lincat Comp = {s : Gender => Number => Str} ;
lincat Cl = Clause ;
lincat ClSlash = {s : Tense => Polarity => Str ; c2 : Compl} ;
lincat SSlash = {s : Str ; c2 : Compl} ;
lincat Imp = {s : Polarity => Number => Str} ;
lincat Prep = Compl ;
lincat CN = CommonNoun ;
lincat NP, Pron = {s : Case => Str ; g : Gender ; n : Number ; p : Person} ;
lincat QS = {s : Str} ;
lincat QCl = {s : Tense => Polarity => Str} ;
lincat IP = {s : Str ; n : Number} ;
lincat IComp = {s : Str} ;
lincat IDet = {s : Str ; n : Number} ;
lincat IQuant = {s : Str} ;
lincat RCl = {s : Tense => Polarity => Gender => PersNum => Str} ;
lincat RS = {s : Gender => PersNum => Str} ;
lincat RP = {s : Str} ;
lincat AP = AdjPhrase ;
lincat Det = {s : Gender => Case => Str ; n : Number ; sp : Species} ;
lincat Predet = {s : Str} ;
lincat Quant = {s : Bool => Gender => Number => Case => Str; sp : Species} ;
lincat Num = {s : Gender => Case => Str ; n : Number ; hasCard : Bool} ;
lincat Card = {s : Gender => Case => Str ; n : Number} ;
lincat ACard = {s : Str} ;
lincat Ord = {s : Gender => Number => Case => Str} ;
lincat DAP = {s : Gender => Case => Str ; n : Number ; sp : Species} ;
lincat S = {s : Str} ;
lincat Numeral = {
s : CardOrd => Gender => Case => Str ;
n : Number
} ;
lincat Digits = {s : Str ; n : Number} ;
lincat Decimal = {s : Str ; n : Number ; hasDot : Bool} ;
lincat Conj = {s : Str} ;
lincat Subj = {s : Str} ;
lincat LN,SN,GN,PN = {s : Str} ;
-53
View File
@@ -1,53 +0,0 @@
concrete ConjunctionFao of Conjunction = CatFao ** open ResFao, Prelude in {
lincat
[S] = {s1,s2 : Str} ;
[RS] = {s1,s2 : Gender => PersNum => Str} ;
[Adv], [AdV], [IAdv] = {s1,s2 : Str} ;
[NP] = {s1,s2 : Case => Str ; g : Gender ; n : Number ; p : Person} ;
[AP] = {s1,s2 : Gender => Number => Case => Str} ;
[CN] = {s1,s2 : Species => Number => Case => Str ; g : Gender} ;
[DAP] = {s1,s2 : Gender => Case => Str ; n : Number ; sp : Species} ;
lin
ConjS conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
ConjRS conj xs = {s = \\g,p => xs.s1 ! g ! p ++ conj.s ++ xs.s2 ! g ! p} ;
ConjAdv conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
ConjAdV conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
ConjIAdv conj xs = {s = xs.s1 ++ conj.s ++ xs.s2} ;
ConjNP conj xs = {
s = \\c => xs.s1 ! c ++ conj.s ++ xs.s2 ! c ;
g = xs.g ;
n = Pl ;
p = P3
} ;
ConjAP conj xs = {s = \\g,n,c => xs.s1 ! g ! n ! c ++ conj.s ++ xs.s2 ! g ! n ! c} ;
ConjCN conj xs = {
s = \\sp,n,c => xs.s1 ! sp ! n ! c ++ conj.s ++ xs.s2 ! sp ! n ! c ;
g = xs.g
} ;
ConjDet conj xs = {
s = \\g,c => xs.s1 ! g ! c ++ conj.s ++ xs.s2 ! g ! c ;
n = xs.n ;
sp = xs.sp
} ;
BaseS x y = {s1 = x.s ; s2 = y.s} ;
ConsS x xs = {s1 = x.s ++ "," ++ xs.s1 ; s2 = xs.s2} ;
BaseRS x y = {s1 = x.s ; s2 = y.s} ;
ConsRS x xs = {s1 = \\g,p => x.s ! g ! p ++ "," ++ xs.s1 ! g ! p ; s2 = xs.s2} ;
BaseAdv x y = {s1 = x.s ; s2 = y.s} ;
ConsAdv x xs = {s1 = x.s ++ "," ++ xs.s1 ; s2 = xs.s2} ;
BaseAdV x y = {s1 = x.s ; s2 = y.s} ;
ConsAdV x xs = {s1 = x.s ++ "," ++ xs.s1 ; s2 = xs.s2} ;
BaseIAdv x y = {s1 = x.s ; s2 = y.s} ;
ConsIAdv x xs = {s1 = x.s ++ "," ++ xs.s1 ; s2 = xs.s2} ;
BaseNP x y = {s1 = x.s ; s2 = y.s ; g = x.g ; n = Pl ; p = P3} ;
ConsNP x xs = {s1 = \\c => x.s ! c ++ "," ++ xs.s1 ! c ; s2 = xs.s2 ; g = xs.g ; n = Pl ; p = P3} ;
BaseAP x y = {s1 = x.s ; s2 = y.s} ;
ConsAP x xs = {s1 = \\g,n,c => x.s ! g ! n ! c ++ "," ++ xs.s1 ! g ! n ! c ; s2 = xs.s2} ;
BaseCN x y = {s1 = x.s ; s2 = y.s ; g = x.g} ;
ConsCN x xs = {s1 = \\sp,n,c => x.s ! sp ! n ! c ++ "," ++ xs.s1 ! sp ! n ! c ; s2 = xs.s2 ; g = xs.g} ;
BaseDAP x y = {s1 = x.s ; s2 = y.s ; n = y.n ; sp = y.sp} ;
ConsDAP x xs = {s1 = \\g,c => x.s ! g ! c ++ "," ++ xs.s1 ! g ! c ; s2 = xs.s2 ; n = xs.n ; sp = xs.sp} ;
}
-173
View File
@@ -1,173 +0,0 @@
concrete ConstructionFao of Construction = CatFao ** open ResFao, ParadigmsFao in {
lincat
Timeunit, Hour, Weekday, Month, Monthday, Year, Language = {s : Str} ;
lin
hungry_VP = beVP "svangur" ;
thirsty_VP = beVP "tystur" ;
tired_VP = beVP "troyttur" ;
scared_VP = beVP "bangin" ;
ill_VP = beVP "sjúkur" ;
ready_VP = beVP "klárur" ;
has_age_VP card = beVP (cardStr card ++ "ára gamal") ;
have_name_Cl np name = {
Converb = np.s ! Nom ++ "eitur" ++ name.s ! Nom ;
Indicative = \\t,pol => np.s ! Nom ++ "eitur" ++ negStr pol ++ name.s ! Nom ;
Nonfinite = np.s ! Nom ++ "eita" ++ name.s ! Nom ;
Participle = \\_ => np.s ! Nom ++ "itið" ++ name.s ! Nom
} ;
married_Cl np spouse = {
Converb = np.s ! Nom ++ "er giftur við" ++ spouse.s ! Dat ;
Indicative = \\t,pol => np.s ! Nom ++ copula ! t ! persNum np.n np.p ++ negStr pol ++ "giftur við" ++ spouse.s ! Dat ;
Nonfinite = np.s ! Nom ++ "vera giftur við" ++ spouse.s ! Dat ;
Participle = \\_ => np.s ! Nom ++ "verið giftur við" ++ spouse.s ! Dat
} ;
what_name_QCl np = {
s = \\t,pol => "hvat" ++ "eitur" ++ np.s ! Nom
} ;
how_old_QCl np = {
s = \\t,pol => "hvussu gamal" ++ copula ! t ! persNum np.n np.p ++ negStr pol ++ np.s ! Nom
} ;
how_far_QCl np = {
s = \\t,pol => "hvussu langt burtur" ++ copula ! t ! persNum np.n np.p ++ negStr pol ++ np.s ! Nom
} ;
weather_adjCl ap = {
Converb = "tað er" ++ ap.s ! Neuter ! Sg ! Nom ;
Indicative = \\t,pol => "tað" ++ copula ! t ! PSg P3 ++ negStr pol ++ ap.s ! Neuter ! Sg ! Nom ;
Nonfinite = "vera" ++ ap.s ! Neuter ! Sg ! Nom ;
Participle = \\_ => "verið" ++ ap.s ! Neuter ! Sg ! Nom
} ;
is_right_VP = beVP "rættur" ;
is_wrong_VP = beVP "skeivur" ;
n_units_AP card cn a = {
s = \\g,n,c => card.s ! cn.g ! Nom ++ cn.s ! Indef ! Pl ! Nom ++ a.s ! g ! n ! c
} ;
n_units_of_NP card cn np = mkNP (card.s ! cn.g ! Nom ++ cn.s ! Indef ! Pl ! Nom ++ "av" ++ np.s ! Dat) np.g np.n np.p ;
n_unit_CN card unit cn = mkCN (card.s ! unit.g ! Nom ++ unit.s ! Indef ! Sg ! Nom ++ cn.s ! Indef ! Sg ! Nom) cn.g ;
bottle_of_CN np = mkCN ("fløska av" ++ np.s ! Dat) Fem ;
cup_of_CN np = mkCN ("koppur av" ++ np.s ! Dat) Masc ;
glass_of_CN np = mkCN ("glas av" ++ np.s ! Dat) Neuter ;
few_X_short_of_Y np x y = {s = np.s ! Nom ++ "vantar nakrar" ++ x.s ! Indef ! Pl ! Acc ++ "í" ++ y.s ! Def ! Sg ! Acc} ;
timeunitAdv card unit = {s = "í" ++ cardStr card ++ unit.s} ;
timeunitRange c1 c2 unit = {s = "í" ++ cardStr c1 ++ "til" ++ cardStr c2 ++ unit.s} ;
oneHour = {s = "eitt"} ;
twoHour = {s = "tvey"} ;
threeHour = {s = "trý"} ;
fourHour = {s = "fýra"} ;
fiveHour = {s = "fimm"} ;
sixHour = {s = "seks"} ;
sevenHour = {s = "sjey"} ;
eightHour = {s = "átta"} ;
nineHour = {s = "níggju"} ;
tenHour = {s = "tíggju"} ;
elevenHour = {s = "ellivu"} ;
twelveHour = {s = "tólv"} ;
thirteenHour = {s = "trettan"} ;
fourteenHour = {s = "fjúrtan"} ;
fifteenHour = {s = "fimtan"} ;
sixteenHour = {s = "sekstan"} ;
seventeenHour = {s = "seytjan"} ;
eighteenHour = {s = "átjan"} ;
nineteenHour = {s = "nítjan"} ;
twentyHour = {s = "tjúgu"} ;
twentyOneHour = {s = "tjúgueitt"} ;
twentyTwoHour = {s = "tjúgutvey"} ;
twentyThreeHour = {s = "tjúgutrý"} ;
twentyFourHour = {s = "tjúgufýra"} ;
timeHour h = {s = "klokkan" ++ h.s} ;
timeHourMinute h m = {s = "klokkan" ++ h.s ++ cardStr m} ;
weekdayPunctualAdv w = {s = w.s} ;
weekdayHabitualAdv w = {s = w.s} ;
weekdayLastAdv w = {s = "seinasta" ++ w.s} ;
weekdayNextAdv w = {s = "næsta" ++ w.s} ;
monthAdv m = {s = "í" ++ m.s} ;
yearAdv y = {s = "í" ++ y.s} ;
dayMonthAdv d m = {s = d.s ++ m.s} ;
monthYearAdv m y = {s = m.s ++ y.s} ;
dayMonthYearAdv d m y = {s = d.s ++ m.s ++ y.s} ;
intYear i = {s = i.s} ;
intMonthday i = {s = i.s} ;
InLanguage l = {s = "á" ++ l.s} ;
weekdayN w = mkCN w.s Masc ;
monthN m = mkCN m.s Masc ;
weekdayPN w = {s = w.s} ;
monthPN m = {s = m.s} ;
languageNP l = mkNP l.s Neuter Sg P3 ;
languageCN l = mkCN l.s Neuter ;
second_Timeunit = {s = "sekund"} ;
minute_Timeunit = {s = "minutt"} ;
hour_Timeunit = {s = "tími"} ;
day_Timeunit = {s = "dagur"} ;
week_Timeunit = {s = "vika"} ;
month_Timeunit = {s = "mánaður"} ;
year_Timeunit = {s = "ár"} ;
monday_Weekday = {s = "mánadagur"} ;
tuesday_Weekday = {s = "týsdagur"} ;
wednesday_Weekday = {s = "mikudagur"} ;
thursday_Weekday = {s = "hósdagur"} ;
friday_Weekday = {s = "fríggjadagur"} ;
saturday_Weekday = {s = "leygardagur"} ;
sunday_Weekday = {s = "sunnudagur"} ;
january_Month = {s = "januar"} ;
february_Month = {s = "februar"} ;
march_Month = {s = "mars"} ;
april_Month = {s = "apríl"} ;
may_Month = {s = "mai"} ;
june_Month = {s = "juni"} ;
july_Month = {s = "juli"} ;
august_Month = {s = "august"} ;
september_Month = {s = "september"} ;
october_Month = {s = "oktober"} ;
november_Month = {s = "november"} ;
december_Month = {s = "desember"} ;
afrikaans_Language = {s = "afrikaans"} ;
amharic_Language = {s = "amhariskt"} ;
arabic_Language = {s = "arabiskt"} ;
bulgarian_Language = {s = "bulgarskt"} ;
catalan_Language = {s = "katalanskt"} ;
chinese_Language = {s = "kinesiskt"} ;
danish_Language = {s = "danskt"} ;
dutch_Language = {s = "hollendskt"} ;
english_Language = {s = "enskt"} ;
estonian_Language = {s = "estiskt"} ;
finnish_Language = {s = "finskt"} ;
french_Language = {s = "franskt"} ;
german_Language = {s = "týskt"} ;
greek_Language = {s = "grikskt"} ;
hebrew_Language = {s = "hebraiskt"} ;
hindi_Language = {s = "hindi"} ;
japanese_Language = {s = "japanskt"} ;
italian_Language = {s = "italskt"} ;
latin_Language = {s = "latín"} ;
latvian_Language = {s = "lettiskt"} ;
maltese_Language = {s = "maltesiskt"} ;
nepali_Language = {s = "nepalskt"} ;
norwegian_Language = {s = "norskt"} ;
persian_Language = {s = "persiskt"} ;
polish_Language = {s = "pólskt"} ;
punjabi_Language = {s = "punjabi"} ;
romanian_Language = {s = "rumenskt"} ;
russian_Language = {s = "russiskt"} ;
sindhi_Language = {s = "sindhi"} ;
spanish_Language = {s = "spanskt"} ;
swahili_Language = {s = "swahili"} ;
swedish_Language = {s = "svenskt"} ;
thai_Language = {s = "tailendskt"} ;
turkish_Language = {s = "turkiskt"} ;
urdu_Language = {s = "urdu"} ;
oper
beVP : Str -> VerbPhrase = \ap -> {
Converb = copula ! Pres ! PPl ++ ap ;
Indicative = \\t,pol,_,p => copula ! t ! p ++ negStr pol ++ ap ;
Nonfinite = "vera" ++ ap ;
Participle = \\_ => "verið" ++ ap
} ;
cardStr : Card -> Str = \card ->
card.s ! Neuter ! Nom ;
}
+2 -2
View File
@@ -55,8 +55,8 @@ lin
paragraph x.Converb ++
heading2 "Imperative" ++
frameTable (
tr (th "Sg" ++ td (x.imperative ! Sg)) ++
tr (th "Pl" ++ td (x.imperative ! Pl))) ++
tr (th "Sg" ++ td (x.Imperative_Jussive ! Sg)) ++
tr (th "Pl" ++ td (x.Imperative_Jussive ! Pl))) ++
heading2 "Indicative" ++
frameTable (
tr (intagAttr "th" "rowspan=\"4\"" "Pres" ++ th "Sg P1" ++ td (x.Indicative ! Pres ! PSg P1)) ++
-34
View File
@@ -1,34 +0,0 @@
concrete ExtendFao of Extend = CatFao **
open ParadigmsFao, ResFao, (P = ParamX) in {
lincat
VPS = {s : Gender => PersNum => Str} ;
[VPS] = {s1,s2 : Gender => PersNum => Str} ;
VPI = {s : Str} ;
[VPI] = {s1,s2 : Str} ;
VPS2 = {s : Gender => PersNum => Str ; c2 : Compl ; sc : Str} ;
[VPS2] = {s1,s2 : Gender => PersNum => Str ; c2 : Compl ; sc : Str} ;
VPI2 = {s : Str ; c2 : Compl ; sc : Str} ;
[VPI2] = {s1,s2 : Str ; c2 : Compl ; sc : Str} ;
[Comp] = {s1,s2 : Gender => Number => Str} ;
[Imp] = {s1,s2 : Polarity => Number => Str} ;
RNP = {s : Case => Str ; g : Gender ; n : Number ; p : Person} ;
RNPList = {s1,s2 : Case => Str ; g : Gender ; n : Number ; p : Person} ;
X = {s : Str} ;
lin
UttAdV adv = {s = adv.s} ;
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 ;
lin
TPastSimple = {s = [] ; t = P.Past} ;
}
+1 -11
View File
@@ -2,15 +2,5 @@ concrete GrammarFao of Grammar =
TenseX,
PhraseFao,
NounFao,
VerbFao,
AdjectiveFao,
AdverbFao,
NumeralFao,
SentenceFao,
QuestionFao,
RelativeFao,
ConjunctionFao,
StructuralFao,
IdiomFao,
NamesFao ** {
AdjectiveFao ** {
}
-62
View File
@@ -1,62 +0,0 @@
concrete IdiomFao of Idiom = CatFao ** open ResFao in {
lin
ImpersCl vp = {
Converb = "tað" ++ vp.Converb ;
Indicative = \\t,pol => "tað" ++ vp.Indicative ! t ! pol ! Neuter ! PSg P3 ;
Nonfinite = "tað" ++ vp.Nonfinite ;
Participle = \\t => "tað" ++ vp.Participle ! t
} ;
GenericCl vp = {
Converb = "mann" ++ vp.Converb ;
Indicative = \\t,pol => "mann" ++ vp.Indicative ! t ! pol ! Masc ! PSg P3 ;
Nonfinite = "mann" ++ vp.Nonfinite ;
Participle = \\t => "mann" ++ vp.Participle ! t
} ;
CleftNP np rs = {
Converb = "tað er" ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p ;
Indicative = \\t,pol => "tað" ++ copula ! t ! PSg P3 ++ negStr pol ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p ;
Nonfinite = "vera" ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p ;
Participle = \\_ => "verið" ++ np.s ! Nom ++ rs.s ! np.g ! persNum np.n np.p
} ;
CleftAdv adv s = {
Converb = "tað er" ++ adv.s ++ s.s ;
Indicative = \\t,pol => "tað" ++ copula ! t ! PSg P3 ++ negStr pol ++ adv.s ++ s.s ;
Nonfinite = "vera" ++ adv.s ++ s.s ;
Participle = \\_ => "verið" ++ adv.s ++ s.s
} ;
ExistNP np = {
Converb = "tað er" ++ np.s ! Nom ;
Indicative = \\t,pol => "tað" ++ copula ! t ! persNum np.n P3 ++ negStr pol ++ np.s ! Nom ;
Nonfinite = "vera" ++ np.s ! Nom ;
Participle = \\_ => "verið" ++ np.s ! Nom
} ;
ExistIP ip = {
s = \\t,pol => "hvat" ++ copula ! t ! persNum ip.n P3 ++ negStr pol
} ;
ExistNPAdv np adv = {
Converb = "tað er" ++ np.s ! Nom ++ adv.s ;
Indicative = \\t,pol => "tað" ++ copula ! t ! persNum np.n P3 ++ negStr pol ++ np.s ! Nom ++ adv.s ;
Nonfinite = "vera" ++ np.s ! Nom ++ adv.s ;
Participle = \\_ => "verið" ++ np.s ! Nom ++ adv.s
} ;
ExistIPAdv ip adv = {
s = \\t,pol => ip.s ++ copula ! t ! persNum ip.n P3 ++ negStr pol ++ adv.s
} ;
ProgrVP vp = {
Converb = "vera við at" ++ vp.Nonfinite ;
Indicative = \\t,pol,g,p => copula ! t ! p ++ negStr pol ++ "við at" ++ vp.Nonfinite ;
Nonfinite = "vera við at" ++ vp.Nonfinite ;
Participle = \\_ => "verið við at" ++ vp.Nonfinite
} ;
ImpPl1 vp = {s = "lat okkum" ++ vp.Nonfinite} ;
ImpP3 np vp = {s = "lat" ++ np.s ! Acc ++ vp.Nonfinite} ;
SelfAdvVP vp = vp ** {
Converb = vp.Converb ++ "sjálvur" ;
Indicative = \\t,pol,g,p => vp.Indicative ! t ! pol ! g ! p ++ "sjálvur" ;
Nonfinite = vp.Nonfinite ++ "sjálvur" ;
Participle = \\t => vp.Participle ! t ++ "sjálvur"
} ;
SelfAdVVP = SelfAdvVP ;
SelfNP np = np ** {s = \\c => np.s ! c ++ "sjálvur"} ;
}
-1
View File
@@ -2,7 +2,6 @@
concrete LangFao of Lang =
GrammarFao,
LexiconFao
,ConstructionFao
,DocumentationFao --# notpresent
** {
+1 -8
View File
@@ -1,9 +1,2 @@
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" ;
concrete LexiconFao of Lexicon = CatFao ** open ParadigmsFao in {
}
+128 -128
View File
@@ -600,18 +600,18 @@ mkN016 base =
Gen => base_1+"ar"
} ;
Pl => table {
Nom => nonExist ;
Acc => nonExist ;
Dat => nonExist ;
Gen => nonExist
}
} ;
Def => table {
Sg => table {
Nom => base_1+"urin" ;
Acc => base_1+"in" ;
Dat => base_1+"inum" ;
Gen => base_1+"arins"
}
} ;
Def => table {
Sg => table {
Nom => nonExist ;
Acc => nonExist ;
Dat => nonExist ;
Gen => nonExist
} ;
Pl => table {
Nom => nonExist ;
@@ -5670,18 +5670,18 @@ mkN146 base =
Gen => base_1+"s"
} ;
Pl => table {
Nom => nonExist ;
Acc => nonExist ;
Dat => nonExist ;
Gen => nonExist
}
} ;
Def => table {
Sg => table {
Nom => base_1+"kurin" ;
Acc => base_1+"kin" ;
Dat => base_1+"kinum" ;
Gen => base_1+"sins"
}
} ;
Def => table {
Sg => table {
Nom => nonExist ;
Acc => nonExist ;
Dat => nonExist ;
Gen => nonExist
} ;
Pl => table {
Nom => nonExist ;
@@ -8769,7 +8769,7 @@ mkV001 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"að" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a" ;
Pl => base_1+"ið"
} ;
@@ -8802,7 +8802,7 @@ mkV002 base =
case base of {
"ei"+base_1+"a" => lin V
{ Converb = "hi"+base_1+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => "ei"+base_1 ;
Pl => "ei"+base_1+"ið"
} ;
@@ -8835,7 +8835,7 @@ mkV003 base =
case base of {
"a"+base_1+"a" => lin V
{ Converb = "i"+base_1+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => "a"+base_1 ;
Pl => "a"+base_1+"ið"
} ;
@@ -8868,7 +8868,7 @@ mkV004 base =
case base of {
"a"+base_1+"a" => lin V
{ Converb = "a"+base_1+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => "a"+base_1 ;
Pl => "a"+base_1+"ið"
} ;
@@ -8901,7 +8901,7 @@ mkV005 base =
case base of {
base_1+"a"+base_2@(?+?) => lin V
{ Converb = base_1+"a"+base_2 ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -8934,7 +8934,7 @@ mkV006 base =
case base of {
base_1+"ða" => lin V
{ Converb = base_1+"tt" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ð" ;
Pl => base_1+"ðið"
} ;
@@ -8967,7 +8967,7 @@ mkV007 base =
case base of {
"eiga" => lin V
{ Converb = "átt" ;
imperative = table {
Imperative_Jussive = table {
Sg => "eig" ;
Pl => "eigið"
} ;
@@ -9000,7 +9000,7 @@ mkV008 base =
case base of {
base_1+"e"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -9033,7 +9033,7 @@ mkV009 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -9066,7 +9066,7 @@ mkV010 base =
case base of {
base_1+"da" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"d" ;
Pl => base_1+"dið"
} ;
@@ -9099,7 +9099,7 @@ mkV011 base =
case base of {
base_1+"e"+base_2@?+"ja" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+"j" ;
Pl => base_1+"e"+base_2+"jið"
} ;
@@ -9132,7 +9132,7 @@ mkV012 base =
case base of {
base_1+"i"+base_2@?+"ja" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2 ;
Pl => base_1+"i"+base_2+"jið"
} ;
@@ -9165,7 +9165,7 @@ mkV013 base =
case base of {
base_1+"i"+base_2@?+"da" => lin V
{ Converb = base_1+"u"+base_2+"dið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2+"d" ;
Pl => base_1+"i"+base_2+"dið"
} ;
@@ -9198,7 +9198,7 @@ mkV014 base =
case base of {
base_1+"í"+base_2@?+"a" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"í"+base_2 ;
Pl => base_1+"í"+base_2+"ið"
} ;
@@ -9231,7 +9231,7 @@ mkV015 base =
case base of {
base_1+"jó"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"jó"+base_2 ;
Pl => base_1+"jó"+base_2+"ið"
} ;
@@ -9264,7 +9264,7 @@ mkV016 base =
case base of {
base_1+"gja" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"g" ;
Pl => base_1+"gið"
} ;
@@ -9297,7 +9297,7 @@ mkV017 base =
case base of {
base_1+"e"+base_2@?+"na" => lin V
{ Converb = base_1+"u"+base_2+"nið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+"n" ;
Pl => base_1+"e"+base_2+"nið"
} ;
@@ -9330,7 +9330,7 @@ mkV018 base =
case base of {
base_1+"e"+base_2@("m"|(?+?))+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -9363,7 +9363,7 @@ mkV019 base =
case base of {
base_1+"ó"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ó"+base_2 ;
Pl => base_1+"ó"+base_2+"ið"
} ;
@@ -9396,7 +9396,7 @@ mkV020 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -9429,7 +9429,7 @@ mkV021 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"að" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a" ;
Pl => base_1+"ið"
} ;
@@ -9462,7 +9462,7 @@ mkV022 base =
case base of {
base_1+"úgva" => lin V
{ Converb = base_1+"úð" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"úgv" ;
Pl => base_1+"úgvið"
} ;
@@ -9495,7 +9495,7 @@ mkV023 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -9528,7 +9528,7 @@ mkV024 base =
case base of {
base_1+"e"+base_2@?+base_3@?+"a" => lin V
{ Converb = base_1+"o"+base_2+base_3+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+base_3 ;
Pl => base_1+"e"+base_2+base_3+"ið"
} ;
@@ -9561,7 +9561,7 @@ mkV025 base =
case base of {
base_1+"ggja" => lin V
{ Converb = base_1+"ð" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ggj" ;
Pl => base_1+"ggið"
} ;
@@ -9594,7 +9594,7 @@ mkV026 base =
case base of {
base_1+"aga" => lin V
{ Converb = base_1+"igið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ag" ;
Pl => base_1+"agið"
} ;
@@ -9627,7 +9627,7 @@ mkV027 base =
case base of {
base_1+"e"+base_2@?+"ka" => lin V
{ Converb = base_1+"u"+base_2+"kið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+"k" ;
Pl => base_1+"e"+base_2+"kið"
} ;
@@ -9660,7 +9660,7 @@ mkV028 base =
case base of {
base_1+"e"+base_2@?+"a" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -9693,7 +9693,7 @@ mkV029 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"að" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a" ;
Pl => base_1+"ið"
} ;
@@ -9726,7 +9726,7 @@ mkV030 base =
case base of {
"ve"+base_1+"a" => lin V
{ Converb = "ve"+base_1+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => "ve"+base_1 ;
Pl => "ve"+base_1+"ið"
} ;
@@ -9759,7 +9759,7 @@ mkV031 base =
case base of {
base_1+"na" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"na" ;
Pl => base_1+"nið"
} ;
@@ -9792,7 +9792,7 @@ mkV032 base =
case base of {
base_1+"a"+base_2@(?+?)+"a" => lin V
{ Converb = base_1+"a"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -9825,7 +9825,7 @@ mkV033 base =
case base of {
base_1+"a"+base_2@?+"a" => lin V
{ Converb = base_1+"a"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -9858,7 +9858,7 @@ mkV034 base =
case base of {
base_1+"áa" => lin V
{ Converb = base_1+"ingið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"á" ;
Pl => base_1+"áið"
} ;
@@ -9891,7 +9891,7 @@ mkV035 base =
case base of {
base_1+"la" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"la" ;
Pl => base_1+"lið"
} ;
@@ -9924,7 +9924,7 @@ mkV036 base =
case base of {
base_1+"ða"+base_2@(?+?) => lin V
{ Converb = base_1+"da"+base_2 ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -9957,7 +9957,7 @@ mkV037 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1 ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -9990,7 +9990,7 @@ mkV038 base =
case base of {
base_1+"e"+base_2@?+"ja" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -10023,7 +10023,7 @@ mkV039 base =
case base of {
base_1+"na" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"n" ;
Pl => base_1+"nið"
} ;
@@ -10056,7 +10056,7 @@ mkV040 base =
case base of {
base_1+"ú"+base_2@?+"va" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ú"+base_2 ;
Pl => base_1+"ú"+base_2+"ið"
} ;
@@ -10089,7 +10089,7 @@ mkV041 base =
case base of {
base_1+"y"+base_2@?+"a" => lin V
{ Converb = base_1+"u"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"y"+base_2 ;
Pl => base_1+"y"+base_2+"ið"
} ;
@@ -10122,7 +10122,7 @@ mkV042 base =
case base of {
base_1+"e"+base_2@?+"ja" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"jið"
} ;
@@ -10155,7 +10155,7 @@ mkV043 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"tt" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -10188,7 +10188,7 @@ mkV044 base =
case base of {
base_1+"ú"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ú"+base_2 ;
Pl => base_1+"ú"+base_2+"ið"
} ;
@@ -10221,7 +10221,7 @@ mkV045 base =
case base of {
base_1+"la" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"l" ;
Pl => base_1+"lið"
} ;
@@ -10254,7 +10254,7 @@ mkV046 base =
case base of {
base_1+"a"+base_2@?+"a" => lin V
{ Converb = base_1+"a"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -10287,7 +10287,7 @@ mkV047 base =
case base of {
base_1+"anga" => lin V
{ Converb = base_1+"ingið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"akk" ;
Pl => base_1+"angið"
} ;
@@ -10320,7 +10320,7 @@ mkV048 base =
case base of {
base_1+"ja"+base_2@?+"da" => lin V
{ Converb = base_1+"o"+base_2+"dið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ja"+base_2+"d" ;
Pl => base_1+"ja"+base_2+"dið"
} ;
@@ -10353,7 +10353,7 @@ mkV049 base =
case base of {
base_1+"e"+base_2@?+"a" => lin V
{ Converb = base_1+"jø"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -10386,7 +10386,7 @@ mkV050 base =
case base of {
base_1+"jó"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"jó"+base_2 ;
Pl => base_1+"jó"+base_2+"ið"
} ;
@@ -10419,7 +10419,7 @@ mkV051 base =
case base of {
base_1+"e"+base_2@?+"pa" => lin V
{ Converb = base_1+"o"+base_2+"pið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+"p" ;
Pl => base_1+"e"+base_2+"pið"
} ;
@@ -10452,7 +10452,7 @@ mkV052 base =
case base of {
base_1+"y"+base_2@?+"ja" => lin V
{ Converb = base_1+"u"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"y"+base_2 ;
Pl => base_1+"y"+base_2+"ið"
} ;
@@ -10485,7 +10485,7 @@ mkV053 base =
case base of {
base_1+"á"+base_2@?+"a" => lin V
{ Converb = base_1+"á"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"á"+base_2 ;
Pl => base_1+"á"+base_2+"ið"
} ;
@@ -10518,7 +10518,7 @@ mkV054 base =
case base of {
base_1+"a"+base_2@?+"a" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -10551,7 +10551,7 @@ mkV055 base =
case base of {
base_1+"ógva" => lin V
{ Converb = base_1+"óð" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ógv" ;
Pl => base_1+"ógvið"
} ;
@@ -10584,7 +10584,7 @@ mkV056 base =
case base of {
base_1+"a"+base_2@?+"da" => lin V
{ Converb = base_1+"i"+base_2+"dið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2+"d" ;
Pl => base_1+"a"+base_2+"dið"
} ;
@@ -10617,7 +10617,7 @@ mkV057 base =
case base of {
base_1+"anga" => lin V
{ Converb = base_1+"ingið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ang" ;
Pl => base_1+"angið"
} ;
@@ -10650,7 +10650,7 @@ mkV058 base =
case base of {
base_1+"a"+base_2@?+"a" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -10683,7 +10683,7 @@ mkV059 base =
case base of {
base_1+"ei"+base_2@(?+?)+"ja" => lin V
{ Converb = base_1+"o"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ei"+base_2+"j" ;
Pl => base_1+"ei"+base_2+"jið"
} ;
@@ -10716,7 +10716,7 @@ mkV060 base =
case base of {
base_1+"vø"+base_2@(?+?)+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"vø"+base_2 ;
Pl => base_1+"vø"+base_2+"ið"
} ;
@@ -10749,7 +10749,7 @@ mkV061 base =
case base of {
base_1+"y"+base_2@?+"gja" => lin V
{ Converb = base_1+"u"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"y"+base_2+"g" ;
Pl => base_1+"y"+base_2+"gið"
} ;
@@ -10782,7 +10782,7 @@ mkV062 base =
case base of {
base_1+"o"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"o"+base_2 ;
Pl => base_1+"o"+base_2+"ið"
} ;
@@ -10815,7 +10815,7 @@ mkV063 base =
case base of {
base_1+"pa" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"p" ;
Pl => base_1+"pið"
} ;
@@ -10848,7 +10848,7 @@ mkV064 base =
case base of {
base_1+"úgva" => lin V
{ Converb = base_1+"ovið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"úg" ;
Pl => base_1+"úgið"
} ;
@@ -10881,7 +10881,7 @@ mkV065 base =
case base of {
base_1+"u"+base_2@?+"na" => lin V
{ Converb = base_1+"u"+base_2+"nað" ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -10914,7 +10914,7 @@ mkV066 base =
case base of {
base_1+"ø"+base_2@?+"a" => lin V
{ Converb = base_1+"ø"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ø"+base_2 ;
Pl => base_1+"ø"+base_2+"ið"
} ;
@@ -10947,7 +10947,7 @@ mkV067 base =
case base of {
base_1+"sa" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"s" ;
Pl => base_1+"sið"
} ;
@@ -10980,7 +10980,7 @@ mkV068 base =
case base of {
base_1+"a" => lin V
{ Converb = base_1+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -11013,7 +11013,7 @@ mkV069 base =
case base of {
base_1+"e"+base_2@?+"gja" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+"gj" ;
Pl => base_1+"e"+base_2+"gjið"
} ;
@@ -11046,7 +11046,7 @@ mkV070 base =
case base of {
base_1+"iggja" => lin V
{ Converb = base_1+"igið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"igg" ;
Pl => base_1+"iggið"
} ;
@@ -11079,7 +11079,7 @@ mkV071 base =
case base of {
base_1+"e"+base_2@?+"a" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -11112,7 +11112,7 @@ mkV072 base =
case base of {
base_1+"a"+base_2@?+"a" => lin V
{ Converb = base_1+"a"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -11145,7 +11145,7 @@ mkV073 base =
case base of {
base_1+"á"+base_2@?+"a" => lin V
{ Converb = base_1+"á"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"á"+base_2 ;
Pl => base_1+"á"+base_2+"ið"
} ;
@@ -11178,7 +11178,7 @@ mkV074 base =
case base of {
base_1+"ey"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ey"+base_2 ;
Pl => base_1+"ey"+base_2+"ið"
} ;
@@ -11211,7 +11211,7 @@ mkV075 base =
case base of {
base_1+"ega" => lin V
{ Converb = nonExist ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -11244,7 +11244,7 @@ mkV076 base =
case base of {
base_1+"u"+base_2@?+"na" => lin V
{ Converb = base_1+"u"+base_2+"nað" ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -11277,7 +11277,7 @@ mkV077 base =
case base of {
base_1+"ja" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -11310,7 +11310,7 @@ mkV078 base =
case base of {
base_1+"ja" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"jið"
} ;
@@ -11343,7 +11343,7 @@ mkV079 base =
case base of {
base_1+"ða" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ð" ;
Pl => base_1+"ðið"
} ;
@@ -11376,7 +11376,7 @@ mkV080 base =
case base of {
base_1+"áa" => lin V
{ Converb = base_1+"átt" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"á" ;
Pl => base_1+"áið"
} ;
@@ -11409,7 +11409,7 @@ mkV081 base =
case base of {
base_1+"áða" => lin V
{ Converb = base_1+"átt" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"áð" ;
Pl => base_1+"áðið"
} ;
@@ -11442,7 +11442,7 @@ mkV082 base =
case base of {
base_1+"ða"+base_2@(?+?) => lin V
{ Converb = base_1+"ð"+base_2 ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -11475,7 +11475,7 @@ mkV083 base =
case base of {
base_1+"ø"+base_2@?+"ka" => lin V
{ Converb = base_1+"o"+base_2+"kið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ø"+base_2+"k" ;
Pl => base_1+"ø"+base_2+"kið"
} ;
@@ -11508,7 +11508,7 @@ mkV084 base =
case base of {
base_1+"íggja" => lin V
{ Converb = base_1+"æð" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"íggj" ;
Pl => base_1+"íggið"
} ;
@@ -11541,7 +11541,7 @@ mkV085 base =
case base of {
base_1+"kja" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"k" ;
Pl => base_1+"kið"
} ;
@@ -11574,7 +11574,7 @@ mkV086 base =
case base of {
base_1+"i"+base_2@?+"a" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2 ;
Pl => base_1+"i"+base_2+"ið"
} ;
@@ -11607,7 +11607,7 @@ mkV087 base =
case base of {
base_1+"i"+base_2@?+"a" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2 ;
Pl => base_1+"i"+base_2+"ið"
} ;
@@ -11640,7 +11640,7 @@ mkV088 base =
case base of {
base_1+"u"+base_2@?+"a" => lin V
{ Converb = base_1+"u"+base_2+"að" ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -11673,7 +11673,7 @@ mkV089 base =
case base of {
base_1+"ei"+base_2@(?+?)+"ja" => lin V
{ Converb = base_1+"o"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ei"+base_2+"j" ;
Pl => base_1+"ei"+base_2+"jið"
} ;
@@ -11706,7 +11706,7 @@ mkV090 base =
case base of {
base_1+"ja" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"j" ;
Pl => base_1+"jið"
} ;
@@ -11739,7 +11739,7 @@ mkV091 base =
case base of {
base_1+"jó"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"jó"+base_2 ;
Pl => base_1+"jó"+base_2+"ið"
} ;
@@ -11772,7 +11772,7 @@ mkV092 base =
case base of {
base_1+"áa" => lin V
{ Converb = base_1+"igið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"á" ;
Pl => base_1+"áið"
} ;
@@ -11805,7 +11805,7 @@ mkV093 base =
case base of {
base_1+"y"+base_2@?+"ja" => lin V
{ Converb = base_1+"u"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"y"+base_2 ;
Pl => base_1+"y"+base_2+"ið"
} ;
@@ -11838,7 +11838,7 @@ mkV094 base =
case base of {
base_1+"i"+base_2@?+"na" => lin V
{ Converb = base_1+"u"+base_2+"nið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2+"n" ;
Pl => base_1+"i"+base_2+"nið"
} ;
@@ -11871,7 +11871,7 @@ mkV095 base =
case base of {
base_1+"anda" => lin V
{ Converb = base_1+"aðið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"att" ;
Pl => base_1+"andið"
} ;
@@ -11904,7 +11904,7 @@ mkV096 base =
case base of {
base_1+"ei"+base_2@?+"ja" => lin V
{ Converb = base_1+"o"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ei"+base_2 ;
Pl => base_1+"ei"+base_2+"ið"
} ;
@@ -11937,7 +11937,7 @@ mkV097 base =
case base of {
base_1+"inga" => lin V
{ Converb = base_1+"ungið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ikk" ;
Pl => base_1+"ingið"
} ;
@@ -11970,7 +11970,7 @@ mkV098 base =
case base of {
base_1+"ja"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ja"+base_2 ;
Pl => base_1+"ja"+base_2+"ið"
} ;
@@ -12003,7 +12003,7 @@ mkV099 base =
case base of {
base_1+"o"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"o"+base_2 ;
Pl => base_1+"o"+base_2+"ið"
} ;
@@ -12036,7 +12036,7 @@ mkV100 base =
case base of {
base_1+"í"+base_2@?+"ja" => lin V
{ Converb = base_1+"i"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"í"+base_2+"j" ;
Pl => base_1+"í"+base_2+"jið"
} ;
@@ -12069,7 +12069,7 @@ mkV101 base =
case base of {
base_1+"i"+base_2@?+"ja" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2 ;
Pl => base_1+"i"+base_2+"jið"
} ;
@@ -12102,7 +12102,7 @@ mkV102 base =
case base of {
base_1+"ja" => lin V
{ Converb = base_1+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1 ;
Pl => base_1+"ið"
} ;
@@ -12135,7 +12135,7 @@ mkV103 base =
case base of {
base_1+"ø"+base_2@?+"ja" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"ø"+base_2+"j" ;
Pl => base_1+"ø"+base_2+"jið"
} ;
@@ -12168,7 +12168,7 @@ mkV104 base =
case base of {
base_1+"y"+base_2@(?+?)+"ja" => lin V
{ Converb = base_1+"u"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"y"+base_2+"j" ;
Pl => base_1+"y"+base_2+"jið"
} ;
@@ -12201,7 +12201,7 @@ mkV105 base =
case base of {
base_1+"i"+base_2@?+"a" => lin V
{ Converb = base_1+"a"+base_2+"t" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"i"+base_2 ;
Pl => base_1+"i"+base_2+"ið"
} ;
@@ -12234,7 +12234,7 @@ mkV106 base =
case base of {
base_1+"e"+base_2@?+"fa" => lin V
{ Converb = base_1+"o"+base_2+"fið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2+"f" ;
Pl => base_1+"e"+base_2+"fið"
} ;
@@ -12267,7 +12267,7 @@ mkV107 base =
case base of {
base_1+"a"+base_2@(?+?)+"a" => lin V
{ Converb = base_1+"a"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"a"+base_2 ;
Pl => base_1+"a"+base_2+"ið"
} ;
@@ -12300,7 +12300,7 @@ mkV108 base =
case base of {
base_1+"e"+base_2@(?+?)+"a" => lin V
{ Converb = nonExist ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -12333,7 +12333,7 @@ mkV109 base =
case base of {
base_1+base_2@?+base_3@?+"a" => lin V
{ Converb = base_1+base_2+base_3+"að" ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
@@ -12366,7 +12366,7 @@ mkV110 base =
case base of {
"d"+base_1+"finite" => lin V
{ Converb = "v"+base_1+"rð" ;
imperative = table {
Imperative_Jussive = table {
Sg => "v"+base_1+"rðsins" ;
Pl => "v"+base_1+"rðanna"
} ;
@@ -12399,7 +12399,7 @@ mkV111 base =
case base of {
base_1+"e"+base_2@?+"a" => lin V
{ Converb = base_1+"o"+base_2+"ið" ;
imperative = table {
Imperative_Jussive = table {
Sg => base_1+"e"+base_2 ;
Pl => base_1+"e"+base_2+"ið"
} ;
@@ -12432,7 +12432,7 @@ mkV112 base =
case base of {
base_1+"ja" => lin V
{ Converb = base_1+"að" ;
imperative = table {
Imperative_Jussive = table {
Sg => nonExist ;
Pl => nonExist
} ;
-14
View File
@@ -1,14 +0,0 @@
concrete NamesFao of Names = CatFao ** open ResFao in {
lin
GivenName gn = mkNP gn.s Masc Sg P3 ;
MaleSurname sn = mkNP sn.s Masc Sg P3 ;
FemaleSurname sn = mkNP sn.s Fem Sg P3 ;
PlSurname sn = mkNP sn.s Masc Pl P3 ;
FullName gn sn = mkNP (gn.s ++ sn.s) Masc Sg P3 ;
UseLN ln = mkNP ln.s Neuter Sg P3 ;
PlainLN ln = mkNP ln.s Neuter Sg P3 ;
InLN ln = {s = "í" ++ ln.s} ;
AdjLN ap ln = {s = ap.s ! Neuter ! Sg ! Nom ++ ln.s} ;
}
+1 -158
View File
@@ -1,161 +1,4 @@
concrete NounFao of Noun = CatFao ** open ResFao, Prelude in {
concrete NounFao of Noun = CatFao ** {
lin
UseN n = n ;
UseN2 n = n ;
Use2N3 n = n ** {c2 = n.c2} ;
Use3N3 n = n ** {c2 = n.c3} ;
UsePN pn = mkNP pn.s Masc Sg P3 ;
UsePron p = p ;
RelNP np rs =
np ** {s = \\c => np.s ! c ++ "," ++ rs.s ! np.g ! persNum np.n np.p} ;
DetNP det = {
s = \\c => det.s ! Masc ! c ;
g = Masc ;
n = det.n ;
p = P3
} ;
PredetNP pred np = np ** {
s = \\c => pred.s ++ np.s ! c
} ;
PPartNP np v2 = np ** {
s = \\c => np.s ! c ++ v2.Participle ! Past
} ;
AdvNP np adv = np ** {
s = \\c => np.s ! c ++ adv.s
} ;
ExtAdvNP np adv = np ** {
s = \\c => np.s ! c ++ "," ++ adv.s
} ;
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 = \\b =>
table {
Masc => table {
Sg => case b of {
False => table {Nom => "ein" ; Acc => "ein" ; Dat => "einum" ; Gen => "eins"} ;
True => \\_ => []
} ;
Pl => \\_ => []
} ;
Fem => table {
Sg => case b of {
False => table {Nom => "ein" ; Acc => "eina" ; Dat => "einari" ; Gen => "einar"} ;
True => \\_ => []
} ;
Pl => \\_ => []
} ;
Neuter => table {
Sg => case b of {
False => table {Nom => "eitt" ; Acc => "eitt" ; Dat => "einum" ; Gen => "eins"} ;
True => \\_ => []
} ;
Pl => \\_ => []
}
} ;
sp = Indef ;
} ;
DetQuant quant num = {
s = \\g,c => quant.s ! num.hasCard ! g ! num.n ! c ++
num.s ! g ! c ;
n = num.n ;
sp = quant.sp
} ;
DetQuantOrd quant num ord = {
s = \\g,c => quant.s ! num.hasCard ! g ! num.n ! c ++
num.s ! g ! c ++ ord.s ! g ! num.n ! c ;
n = num.n ;
sp = quant.sp
} ;
NumSg = {
s = \\_,_ => [] ;
n = Sg ;
hasCard = False
} ;
NumPl = {
s = \\_,_ => [] ;
n = Pl ;
hasCard = False
} ;
NumCard card = card ** {hasCard = True} ;
NumDigits digits = {s = \\_,_ => digits.s ; n = Pl} ;
NumDecimal dec = {s = \\_,_ => dec.s ; n = Pl} ;
NumNumeral numeral = {s=numeral.s ! NCard; n=numeral.n} ;
AdNum adn card = {s = \\g,c => adn.s ++ card.s ! g ! c ; n = card.n} ;
OrdDigits digits = {s = \\_,_,_ => digits.s ++ BIND ++ "."} ;
OrdNumeral numeral = {s = \\g,n,c => numeral.s ! NOrd n ! g ! c} ;
OrdSuperl a = {s = a.s} ;
OrdNumeralSuperl numeral a = {
s = \\g,n,c => numeral.s ! NOrd n ! g ! c ++ a.s ! g ! n ! c
} ;
MassNP cn = {
s = \\c => cn.s ! Indef ! Sg ! c ;
g = cn.g ;
n = Sg ;
p = P3
} ;
PossPron pron = {
s = \\_,_,_,_ => pron.s ! Gen ;
sp = Def
} ;
ComplN2 n2 np = {
s = \\sp,n,c => n2.s ! sp ! n ! c ++ n2.c2.s ++ np.s ! n2.c2.c ;
g = n2.g
} ;
ComplN3 n3 np = n3 ** {
s = \\sp,n,c => n3.s ! sp ! n ! c ++ n3.c2.s ++ np.s ! n3.c2.c ;
c2 = n3.c3
} ;
AdjCN ap cn = {
s = \\sp,n,c => ap.s ! cn.g ! n ! c ++ cn.s ! sp ! n ! c ;
g = cn.g
} ;
RelCN cn rs = {
s = \\sp,n,c => cn.s ! sp ! n ! c ++ rs.s ! cn.g ! persNum n P3 ;
g = cn.g
} ;
AdvCN cn adv = {
s = \\sp,n,c => cn.s ! sp ! n ! c ++ adv.s ;
g = cn.g
} ;
SentCN cn sc = {
s = \\sp,n,c => cn.s ! sp ! n ! c ++ sc.s ;
g = cn.g
} ;
ApposCN cn np = {
s = \\sp,n,c => cn.s ! sp ! n ! c ++ np.s ! Nom ;
g = cn.g
} ;
PossNP cn np = {
s = \\sp,n,c => cn.s ! sp ! n ! c ++ np.s ! Gen ;
g = cn.g
} ;
PartNP cn np = {
s = \\sp,n,c => cn.s ! sp ! n ! c ++ "av" ++ np.s ! Dat ;
g = cn.g
} ;
CountNP det np = {
s = \\c => det.s ! np.g ! c ++ "av" ++ np.s ! Dat ;
g = np.g ;
n = det.n ;
p = P3
} ;
AdjDAP dap ap = dap ** {
s = \\g,c => dap.s ! g ! c ++ ap.s ! g ! dap.n ! c
} ;
DetDAP det = det ;
QuantityNP dec mu = {
s = \\_ => dec.s ++ mu.s ;
g = Neuter ;
n = Pl ;
p = P3
} ;
}
-316
View File
@@ -1,316 +0,0 @@
concrete NumeralFao of Numeral = CatFao [Numeral, Digits, Decimal] ** open Prelude, ResFao in {
lincat
Digit = {
s,teen,ten : CardOrd => Gender => Case => Str ;
n : Number ;
} ;
Sub10 = {
s : CardOrd => Gender => Case => Str ;
hundredth, thousandth, millionth, milliardth : Gender => Case => Str ;
n : Number
} ;
Sub100, Sub1000 = {
s : CardOrd => Gender => Case => Str ;
thousandth, millionth, milliardth : Gender => Case => Str ;
n : Number
} ;
Sub1000000, Sub1000000000, Sub1000000000000 =
{s : CardOrd => Gender => Case => Str ; n : Number} ;
Dig = {s : Str; n : Number} ;
lin
num n = n ;
n2 = {
s = table {
NCard => table {
Masc => caseList "tveir" "tveir" "tveimum" "tveggja" ;
Fem => caseList "tvær" "tvær" "tveimum" "tveggja" ;
Neuter => caseList "tvey" "tvey" "tveimum" "tveggja"
} ;
NOrd n => table {
Masc => case n of {
Sg => caseList "annar" "annan" "øðrum" "annars" ;
Pl => caseList "aðrir" "aðrar" "øðrum" "annara"
} ;
Fem => case n of {
Sg => caseList "onnur" "aðra" "aðrari" "annarar" ;
Pl => caseList "aðrar" "aðrar" "øðrum" "annara"
} ;
Neuter => case n of {
Sg => caseList "annað" "annað" "øðrum" "annars" ;
Pl => caseList "onnur" "onnur" "øðrum" "annara"
}
}
} ;
teen = table {
NCard => \\_,_ => "tólv" ;
NOrd n => mkWeakOrd "tólvti" ! n
} ;
ten = table {
NCard => \\_,_ => "tjúgu" ;
NOrd n => mkWeakOrd "tjúgundi" ! n
} ;
n = Pl
} ;
n3 = {
s = table {
NCard => table {
Masc => caseList "tríggir" "tríggjar" "trimum" "tríggja" ;
Fem => caseList "tríggjar" "tríggjar" "trimum" "tríggja" ;
Neuter => caseList "trý" "trý" "trimum" "tríggja"
} ;
NOrd n => mkOrdForms "triði" "triðja" "triðju" ! n
} ;
teen = table {
NCard => \\_,_ => "trettan" ;
NOrd n => mkWeakOrd "trettandi" ! n
} ;
ten = table {
NCard => \\_,_ => "tríati" ;
NOrd n => mkWeakOrd "tretivundi" ! n
} ;
n = Pl
} ;
n4 = mkDigit "fýra" "fjúrtan" "fýrati" "fjórði" "fjúrtandi" "fjørutandi" ;
n5 = mkDigit "fimm" "fimtan" "fimmti" "fimti" "fimtandi" "fimtandi" ;
n6 = mkDigit "seks" "sekstan" "seksti" "sætti" "sekstandi" "sekstandi" ;
n7 = mkDigit "sjey" "seytjan" "sjeyti" "sjeyndi" "seytjandi" "sjútandi" ;
n8 = mkDigit "átta" "átjan" "áttati" "áttandi" "átjandi" "áttandi" ;
n9 = mkDigit "níggju" "nítjan" "níti" "níggjundi" "nítjandi" "nítandi" ;
pot01 = {
s = table {
NCard => table {
Masc => caseList "ein" "ein" "einum" "eins" ;
Fem => caseList "einar" "eina" "einari" "einar" ;
Neuter => caseList "eitt" "eitt" "einum" "eins"
} ;
NOrd n => mkWeakOrd "fyrsti" ! n
} ;
hundredth = mkWeakOrd "hundraðandi" ! Sg ;
thousandth = mkWeakOrd "túsundandi" ! Sg ;
millionth = mkWeakOrd "milliónandi" ! Sg ;
milliardth = mkWeakOrd "milliardandi" ! Sg ;
n = Sg
} ;
pot0 d = d ** {
hundredth = mkCompoundOrd (numBase d) "hundraðandi" ! Pl ;
thousandth = mkCompoundOrd (numBase d) "túsundandi" ! Pl ;
millionth = mkCompoundOrd (numBase d) "milliónandi" ! Pl ;
milliardth = mkCompoundOrd (numBase d) "milliardandi" ! Pl
} ;
pot0as1 n = n ;
pot110 =
let ten : Gender => Case => Str =
table {
Neuter => \\_ => "ti" ;
_ => \\_ => "tíggju"
} ;
in mkCardOrd ten
(mkWeakOrd "tíggjundi") ** {
thousandth = \\g,c => ten ! g ! Nom ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
millionth = \\g,c => ten ! g ! Nom ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
milliardth = \\g,c => ten ! g ! Nom ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
};
pot111 =
mkCardOrd (\\_,_ => "ellivu")
(mkWeakOrd "ellivti") ** {
thousandth = \\g,c => "ellivu" ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
millionth = \\g,c => "ellivu" ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
milliardth = \\g,c => "ellivu" ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
};
pot1to19 d =
mkCardOrd (d.teen ! NCard)
(\\n => d.teen ! NOrd n) ** {
thousandth = \\g,c => d.teen ! NCard ! g ! Nom ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
millionth = \\g,c => d.teen ! NCard ! g ! Nom ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
milliardth = \\g,c => d.teen ! NCard ! g ! Nom ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
};
pot1 d =
mkCardOrd (d.ten ! NCard)
(\\n => d.ten ! NOrd n) ** {
thousandth = \\g,c => d.ten ! NCard ! g ! Nom ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
millionth = \\g,c => d.ten ! NCard ! g ! Nom ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
milliardth = \\g,c => d.ten ! NCard ! g ! Nom ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
} ;
pot1plus d e = {
s = table {
NCard => \\g,c => e.s ! NCard ! g ! c ++ "og" ++ d.ten ! NCard ! g ! Nom ;
NOrd n => \\g,c => d.ten ! NCard ! g ! c ++ "og" ++ e.s ! NOrd n ! g ! Nom
} ;
thousandth = \\g,c => d.ten ! NCard ! g ! Nom ++ "og" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
millionth = \\g,c => d.ten ! NCard ! g ! Nom ++ "og" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
milliardth = \\g,c => d.ten ! NCard ! g ! Nom ++ "og" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom ;
n = Pl
} ;
pot1as2 n = n ;
pot21 =
mkCardOrd (\\_,_ => "hundrað")
(mkWeakOrd "hundraðandi") ** {
thousandth = \\g,c => "hundrað" ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
millionth = \\g,c => "hundrað" ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
milliardth = \\g,c => "hundrað" ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
} ;
pot2 d =
mkCardOrd (\\_,_ => numBase d ++ "hundrað")
(\\_ => d.hundredth) ** {
thousandth = \\g,c => numBase d ++ "hundrað" ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
millionth = \\g,c => numBase d ++ "hundrað" ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
milliardth = \\g,c => numBase d ++ "hundrað" ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
} ;
pot2plus d e = {
s = table {
NCard => \\g,c => numBase d ++ "hundrað" ++ e.s ! NCard ! g ! c ;
NOrd n => \\g,c => numBase d ++ "hundrað" ++ "og" ++ e.s ! NOrd n ! g ! c
} ;
thousandth = \\g,c => numBase d ++ "hundrað" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
millionth = \\g,c => numBase d ++ "hundrað" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
milliardth = \\g,c => numBase d ++ "hundrað" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom ;
n = Pl
} ;
pot2as3 n = n ;
pot31 = mkCardOrd (\\_,_ => "túsund")
(mkWeakOrd "túsundandi") ;
pot3 n = mkCardOrd (\\_,_ => numBase n ++ "túsund")
(\\_ => n.thousandth) ;
pot3plus n m = {
s = table {
NCard => \\g,c => numBase n ++ "túsund" ++ m.s ! NCard ! g ! c ;
NOrd num => \\g,c => numBase n ++ "túsund" ++ "og" ++ m.s ! NOrd num ! g ! c
} ;
n = Pl
} ;
pot3as4 n = n ;
pot3decimal d = mkCardOrd (\\_,_ => d.s ++ "túsund")
(\\_,_,_ => d.s ++ "túsundandi") ;
pot41 = mkCardOrd (\\_,_ => "millión")
(mkWeakOrd "milliónandi") ;
pot4 n = mkCardOrd (\\_,_ => numBase n ++ "millión")
(\\_ => n.millionth) ;
pot4plus n m = {
s = table {
NCard => \\g,c => numBase n ++ "millión" ++ m.s ! NCard ! g ! c ;
NOrd num => \\g,c => numBase n ++ "millión" ++ "og" ++ m.s ! NOrd num ! g ! c
} ;
n = Pl
} ;
pot4as5 n = n ;
pot4decimal d = mkCardOrd (\\_,_ => d.s ++ "millión")
(\\_,_,_ => d.s ++ "milliónandi") ;
pot51 = mkCardOrd (\\_,_ => "milliard")
(mkWeakOrd "milliardandi") ;
pot5 n = mkCardOrd (\\_,_ => numBase n ++ "milliard")
(\\_ => n.milliardth) ;
pot5plus n m = {
s = table {
NCard => \\g,c => numBase n ++ "milliard" ++ m.s ! NCard ! g ! c ;
NOrd num => \\g,c => numBase n ++ "milliard" ++ "og" ++ m.s ! NOrd num ! g ! c
} ;
n = Pl
} ;
pot5decimal d = mkCardOrd (\\_,_ => d.s ++ "milliard")
(\\_,_,_ => d.s ++ "milliardandi") ;
IDig d = d ;
IIDig d ds = {s = d.s ++ BIND ++ ds.s; n = Pl} ;
D_0 = {s = "0"; n = Pl} ;
D_1 = {s = "1"; n = Sg} ;
D_2 = {s = "2"; n = Pl} ;
D_3 = {s = "3"; n = Pl} ;
D_4 = {s = "4"; n = Pl} ;
D_5 = {s = "5"; n = Pl} ;
D_6 = {s = "6"; n = Pl} ;
D_7 = {s = "7"; n = Pl} ;
D_8 = {s = "8"; n = Pl} ;
D_9 = {s = "9"; n = Pl} ;
PosDecimal d = d ** {hasDot = False} ;
NegDecimal d = {s = "-" ++ BIND ++ d.s; n = Pl; hasDot = False} ;
IFrac d i = {s = d.s ++ if_then_Str d.hasDot BIND (BIND++"."++BIND) ++ i.s; n = Pl; hasDot = True} ;
oper
caseList : Str -> Str -> Str -> Str -> Case => Str = \nom,acc,dat,gen ->
table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ;
mkCardOrd :
(Gender => Case => Str) ->
(Number => Gender => Case => Str) ->
{s : CardOrd => Gender => Case => Str ; n : Number} =
\card,ord -> {
s = table {
NCard => card ;
NOrd n => ord ! n
} ;
n = Pl
} ;
mkDigit :
Str -> Str -> Str -> Str -> Str -> Str -> Digit =
\str,teen,ten,unitOrd,teenOrd,tenOrd -> lin Digit {
s = table {
NCard => \\_,_ => str ;
NOrd n => mkWeakOrd unitOrd ! n
} ;
teen = table {
NCard => \\_,_ => teen ;
NOrd n => mkWeakOrd teenOrd ! n
} ;
ten = table {
NCard => \\_,_ => ten ;
NOrd n => mkWeakOrd tenOrd ! n
} ;
n = Pl
} ;
mkOrdForms : Str -> Str -> Str -> Number => Gender => Case => Str = \masc,obl,pl ->
table {
Sg =>
table {
Masc => caseList masc obl obl obl ;
Fem => caseList obl pl pl pl ;
Neuter => \\_ => obl
} ;
Pl => \\_,_ => pl
} ;
mkWeakOrd : Str -> Number => Gender => Case => Str = \lemma ->
let stem : Str = init lemma in
mkOrdForms lemma (stem + "a") (stem + "u") ;
mkCompoundOrd : Str -> Str -> Number => Gender => Case => Str = \prefix,lemma ->
let stem : Str = init lemma in
mkOrdForms
(prefix ++ BIND ++ lemma)
(prefix ++ BIND ++ (stem + "a"))
(prefix ++ BIND ++ (stem + "u")) ;
numBase : {s : CardOrd => Gender => Case => Str} -> Str = \n ->
n.s ! NCard ! Neuter ! Nom ;
}
+5 -37
View File
@@ -319,19 +319,6 @@ oper
_ => 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
= \form -> case form of {
_ + "dur" => mkA001 form;
@@ -502,20 +489,11 @@ oper
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 (n ** {c2 = p1; c3 = p2}) ;
} ;
invarN : Str -> N = \s -> lin N {
s = \\_,_,_ => s ;
g = Masc
} ;
mkA = overload {
mkA : Str -> A = regA; -- s;Masc;Sg;Nom
mkA : Str -> Str -> A = reg2A -- s;Masc;Sg;Nom s;Masc;Sg;Dat
} ;
invarA : Str -> A = \s -> lin A {
s = \\_,_,_ => s
} ;
mkA2 = overload {
mkA2 : A -> A2 = \a -> lin A2 (a ** {c2 = noPrep}) ;
mkA2 : A -> Prep -> A2 = \a,p -> lin A2 (a ** {c2 = p}) ;
@@ -528,15 +506,6 @@ oper
= \v,p -> v ** {particle = p}
} ;
invarV : Str -> V = \s -> lin V {
Converb = s ;
imperative = \\_ => s ;
Indicative = \\_,_ => s ;
Nonfinite = s ;
Participle = \\_ => s ;
particle = []
} ;
mkVV : V -> VV = \v -> lin VV v ;
mkVS : V -> VS = \v -> lin VS v ;
mkVQ : V -> VQ = \v -> lin VQ v ;
@@ -583,15 +552,14 @@ oper
mkPrep : Str -> Prep = \s -> lin Prep {s=s; c=Acc} ;
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
mkIP : Str -> IP = \s -> lin IP {s=s; n=Sg} ;
mkIP : Str -> IP = \s -> lin IP {s=s} ;
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
mkIDet : Str -> IDet = \s -> lin IDet {s=s; n=Sg} ;
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
mkQuant : Str -> Quant = \s -> lin Quant {s=\\_,_,_,_ => s; sp=Indef} ;
mkQuant : Str -> Quant = \s -> lin Quant {s=s} ;
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
mkDet : Str -> Det = \s -> lin Det {s=\\_,_ => s; n=Sg; sp=Indef} ;
mkCard : Str -> Card = \s -> lin Card {s=\\_,_ => s; n=Pl} ;
mkACard : Str -> ACard = \s -> lin ACard {s=s} ;
mkDet : Str -> Det = \s -> lin Det {s=s} ;
mkCard : Str -> Card = \s -> lin Card {s=s} ;
mkConj : Str -> Conj = \s -> lin Conj {s=s} ;
mkPConj : Str -> PConj = \s -> lin PConj {s=s} ;
mkVoc : Str -> Voc = \s -> lin Voc {s=s} ;
+1 -15
View File
@@ -1,25 +1,11 @@
concrete PhraseFao of Phrase = CatFao ** open ResFao in {
concrete PhraseFao of Phrase = CatFao ** {
lin
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
UttS s = s ;
UttQS qs = qs ;
UttImpSg pol imp = {s = imp.s ! pol.p ! Sg} ;
UttImpPl pol imp = {s = imp.s ! pol.p ! Pl} ;
UttImpPol pol imp = {s = imp.s ! pol.p ! Pl} ;
UttIP ip = {s = ip.s} ;
UttIAdv iadv = iadv ;
UttNP np = {s = np.s ! Nom} ;
UttVP vp = {s = vp.Nonfinite} ;
UttCN cn = {s = cn.s ! Indef ! Sg ! Nom} ;
UttCard card = {s = card.s ! Neuter ! Nom} ;
UttAP ap = {s = ap.s ! Masc ! Sg ! Nom} ;
UttAdv adv = adv ;
UttInterj i = i ;
NoPConj = {s = []} ;
PConjConj conj = conj ;
NoVoc = {s = []} ;
VocNP np = {s = "," ++ np.s ! Nom} ;
}
-50
View File
@@ -1,50 +0,0 @@
concrete QuestionFao of Question = CatFao ** open ResFao in {
lincat QVP = {s : Tense => Polarity => Str} ;
lin
QuestCl cl = {s = cl.Indicative} ;
QuestVP ip vp = {
s = \\t,pol => ip.s ++ vp.Indicative ! t ! pol ! Masc ! persNum ip.n P3
} ;
QuestSlash ip cls = {
s = \\t,pol => ip.s ++ cls.s ! t ! pol
} ;
QuestIAdv iadv cl = {
s = \\t,pol => iadv.s ++ cl.Indicative ! t ! pol
} ;
QuestIComp icomp np = {
s = \\t,pol => icomp.s ++ copula ! t ! persNum np.n np.p ++ negStr pol ++ np.s ! Nom
} ;
IdetCN idet cn = {
s = idet.s ++ cn.s ! Indef ! idet.n ! Nom ;
n = idet.n
} ;
IdetIP idet = {
s = idet.s ;
n = idet.n
} ;
AdvIP ip adv = ip ** {s = ip.s ++ adv.s} ;
IdetQuant iquant num = {
s = iquant.s ++ num.s ! Masc ! Nom ;
n = num.n
} ;
PrepIP prep ip = {s = prep.s ++ ip.s} ;
AdvIAdv iadv adv = {s = iadv.s ++ adv.s} ;
CompIAdv iadv = iadv ;
CompIP ip = {s = ip.s} ;
ComplSlashIP vps ip = {
s = \\t,pol => vps.Indicative ! t ! PSg P3 ++ vps.particle ++ negStr pol ++ vps.c2.s ++ ip.s ++ vps.sc
} ;
AdvQVP vp iadv = {
s = \\t,pol => vp.Indicative ! t ! pol ! Masc ! PSg P3 ++ iadv.s
} ;
AddAdvQVP qvp iadv = {
s = \\t,pol => qvp.s ! t ! pol ++ iadv.s
} ;
QuestQVP ip qvp = {
s = \\t,pol => ip.s ++ qvp.s ! t ! pol
} ;
}

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