mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-09-18 00:06:03 -06:00
auto generated Albanian
This commit is contained in:
@@ -1,11 +1,26 @@
|
|||||||
concrete AdjectiveSqi of Adjective = CatSqi ** open ResSqi, Prelude in {
|
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
|
lin
|
||||||
PositA a = {
|
PositA a = {
|
||||||
s = \\spec,c,g,n => case a.clit of {
|
s = adjForm a
|
||||||
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} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
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,4 +1,5 @@
|
|||||||
concrete AllSqi of AllSqiAbs =
|
concrete AllSqi of AllSqiAbs =
|
||||||
LangSqi
|
LangSqi,
|
||||||
|
IrregSqi
|
||||||
**
|
**
|
||||||
{} ;
|
{} ;
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
abstract AllSqiAbs =
|
abstract AllSqiAbs =
|
||||||
Lang
|
Lang,
|
||||||
|
IrregSqiAbs
|
||||||
** {}
|
** {}
|
||||||
|
|||||||
+40
-24
@@ -4,60 +4,76 @@ concrete CatSqi of Cat = CommonX ** open ParamX,Prelude,ResSqi in {
|
|||||||
lincat A2 = Adj ** {c2 : Compl} ;
|
lincat A2 = Adj ** {c2 : Compl} ;
|
||||||
linref A2 = \a -> case a.clit of {True=>"i"; False=>[]} ++ a.s ! Nom ! Masc ! Sg ++ a.c2.s ;
|
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 V, VA, VV, VS, VQ = Verb ;
|
||||||
lincat V2, V2S, V2Q = Verb ** {c2 : Compl} ;
|
lincat V2 = Verb ** {c2 : Compl} ;
|
||||||
lincat V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
lincat V2S, V2Q, V3, V2A, V2V = Verb ** {c2,c3 : Compl} ;
|
||||||
lincat Prep = Compl ;
|
lincat Prep = Compl ;
|
||||||
lincat ACard = {s : Str} ;
|
lincat ACard = {s : Str} ;
|
||||||
lincat AP = {s : Species => Case => Gender => Number => Str} ;
|
lincat AP = {s : Species => Case => Gender => Number => Str} ;
|
||||||
lincat CN = Noun ;
|
lincat CN = Noun ;
|
||||||
lincat Card = {s : Str} ;
|
lincat Card = {s : Str} ;
|
||||||
lincat Cl = {s : Str} ;
|
lincat Cl = {s : ParamX.Tense => Anteriority => Polarity => Str} ;
|
||||||
lincat ClSlash = {s : Str} ;
|
lincat ClSlash = {s : ParamX.Tense => Anteriority => Polarity => Str; c2 : Compl} ;
|
||||||
lincat Comp = {s : Str} ;
|
lincat Comp = {s : Agr => Str} ;
|
||||||
lincat Conj = {s : Str} ;
|
lincat Conj = {s : Str} ;
|
||||||
lincat DAP = {s : Str} ;
|
lincat DAP = {s : Str; n : Number} ;
|
||||||
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
|
lincat Decimal = {s : Str; n : Number; hasDot : Bool} ;
|
||||||
lincat Det = {s : Case => Gender => Str; sp : Species; n : Number} ;
|
lincat Det = {
|
||||||
|
s : Case => Gender => Str;
|
||||||
|
post : Species => Case => Gender => Str;
|
||||||
|
sp : Species;
|
||||||
|
n : Number
|
||||||
|
} ;
|
||||||
lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
lincat Digits = {s : Str; n : Number; tail : DTail} ;
|
||||||
lincat GN = {s : Str} ;
|
lincat GN = {s : Str} ;
|
||||||
lincat IComp = {s : Str} ;
|
lincat IComp = {s : Str} ;
|
||||||
lincat IDet = {s : Str} ;
|
lincat IDet = {s : Gender => Str; n : Number} ;
|
||||||
lincat IP = {s : Str} ;
|
lincat IP = {s : Str; a : Agr} ;
|
||||||
lincat IQuant = {s : Str} ;
|
lincat IQuant = {s : Gender => Str} ;
|
||||||
lincat Imp = {s : Str} ;
|
lincat Imp = {s : Polarity => Number => Str} ;
|
||||||
lincat LN = {s : Str} ;
|
lincat LN = {s : Str} ;
|
||||||
lincat N = Noun ;
|
lincat N = Noun ;
|
||||||
lincat N2 = {s : Species => Case => Number => Str; g : Gender;
|
lincat N2 = {s : Species => Case => Number => Str; g : Gender;
|
||||||
c2 : {s : Str}} ;
|
c2 : Compl} ;
|
||||||
lincat N3 = {s : Species => Case => Number => Str; g : Gender;
|
lincat N3 = {s : Species => Case => Number => Str; g : Gender;
|
||||||
c2 : {s : Str}; c3 : {s : Str}} ;
|
c2 : Compl; c3 : Compl} ;
|
||||||
lincat NP = {s : Case => Str; a : Agr} ;
|
lincat NP = {s : Case => Str; a : Agr} ;
|
||||||
lincat Num = {s : Str; n : Number} ;
|
lincat Num = {s : Str; n : Number} ;
|
||||||
lincat Numeral = {s : Str} ;
|
lincat Numeral = {s : Str} ;
|
||||||
lincat Ord = {s : Str} ;
|
lincat Ord = {s : Case => Gender => Number => Str} ;
|
||||||
lincat PN = {s : Str} ;
|
lincat PN = {s : Str} ;
|
||||||
lincat Predet = {s : Str} ;
|
lincat Predet = {s : Str} ;
|
||||||
lincat Pron = {s: Case => Str; acc_clit, dat_clit : Str; a : Agr} ;
|
lincat Pron = {s: Case => Str; acc_clit, dat_clit : Str; a : Agr} ;
|
||||||
lincat QCl = {s : Str} ;
|
lincat QCl = {s : ParamX.Tense => Anteriority => Polarity => Str} ;
|
||||||
lincat QS = {s : Str} ;
|
lincat QS = {s : Str} ;
|
||||||
lincat Quant = {s : Case => Gender => Number => Str; sp : Species} ;
|
lincat Quant = {
|
||||||
lincat RCl = {s : Str} ;
|
s : Case => Gender => Number => Str;
|
||||||
lincat RP = {s : Str} ;
|
sp : Species;
|
||||||
lincat RS = {s : Str} ;
|
isPoss : Bool
|
||||||
|
} ;
|
||||||
|
lincat RCl = {s : Agr => ParamX.Tense => Anteriority => Polarity => Str} ;
|
||||||
|
lincat RP = {s : Case => GenNum => Str} ;
|
||||||
|
lincat RS = {s : Agr => Str} ;
|
||||||
lincat S = {s : Str} ;
|
lincat S = {s : Str} ;
|
||||||
lincat SN = {s : Str} ;
|
lincat SN = {s : Str} ;
|
||||||
lincat SSlash = {s : Str} ;
|
lincat SSlash = {s : Str; c2 : Compl} ;
|
||||||
lincat Subj = {s : Str} ;
|
lincat Subj = {s : Str} ;
|
||||||
lincat VP = {indicative : Tense => Number => Person => Case => Str;
|
lincat VP = {indicative : Tense => Number => Person => Gender => Case => Str;
|
||||||
participle : Case => Str;
|
subjunctive : Number => Person => Gender => Case => Str;
|
||||||
|
imperative : Number => Case => Str;
|
||||||
|
participle : Agr => Case => Str;
|
||||||
pres_optative : Number => Person => Case => Str;
|
pres_optative : Number => Person => Case => Str;
|
||||||
perf_optative : Number => Person => Case => Str;
|
perf_optative : Number => Person => Case => Str;
|
||||||
pres_admirative : Number => Person => Case => Str;
|
pres_admirative : Number => Person => Case => Str;
|
||||||
imperf_admirative : Number => Person => Case => Str} ;
|
imperf_admirative : Number => Person => Case => Str;
|
||||||
|
vtype : VType} ;
|
||||||
|
|
||||||
lincat VPSlash = {indicative : Tense => Number => Person => Str;
|
lincat VPSlash = {indicative : Tense => Number => Person => Str;
|
||||||
|
subjunctive : Number => Person => Str;
|
||||||
imperative : Number => Str; participle : Str;
|
imperative : Number => Str; participle : Str;
|
||||||
pres_optative : Number => Person => Str;
|
pres_optative : Number => Person => Str;
|
||||||
perf_optative : Number => Person => Str;
|
perf_optative : Number => Person => Str;
|
||||||
pres_admirative : Number => Person => Str;
|
pres_admirative : Number => Person => Str;
|
||||||
imperf_admirative : Number => Person => Str} ;
|
imperf_admirative : Number => Person => Str;
|
||||||
|
vtype : VType;
|
||||||
|
c2 : Compl} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
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};
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
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";
|
||||||
|
}
|
||||||
@@ -0,0 +1,135 @@
|
|||||||
|
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} ;
|
||||||
|
}
|
||||||
@@ -1,8 +1,16 @@
|
|||||||
concrete GrammarSqi of Grammar =
|
concrete GrammarSqi of Grammar =
|
||||||
NounSqi,
|
NounSqi,
|
||||||
|
VerbSqi,
|
||||||
AdjectiveSqi,
|
AdjectiveSqi,
|
||||||
|
AdverbSqi,
|
||||||
|
SentenceSqi,
|
||||||
|
QuestionSqi,
|
||||||
|
RelativeSqi,
|
||||||
|
ConjunctionSqi,
|
||||||
NumeralSqi,
|
NumeralSqi,
|
||||||
PhraseSqi,
|
PhraseSqi,
|
||||||
|
IdiomSqi,
|
||||||
|
NamesSqi,
|
||||||
StructuralSqi
|
StructuralSqi
|
||||||
** {
|
** {
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
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ë"} ;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
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" ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
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 ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
concrete LangSqi of Lang =
|
concrete LangSqi of Lang =
|
||||||
GrammarSqi,
|
GrammarSqi,
|
||||||
LexiconSqi
|
LexiconSqi
|
||||||
|
,ConstructionSqi
|
||||||
,DocumentationSqi --# notpresent
|
,DocumentationSqi --# notpresent
|
||||||
** {
|
** {
|
||||||
|
|
||||||
|
|||||||
+7884
-7884
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,12 @@
|
|||||||
|
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} ;
|
||||||
|
}
|
||||||
+100
-9
@@ -1,38 +1,129 @@
|
|||||||
concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi in {
|
concrete NounSqi of Noun = CatSqi ** open MorphoSqi, ResSqi, Prelude in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
|
||||||
|
|
||||||
lin
|
lin
|
||||||
DetCN det cn = {
|
DetCN det cn = {
|
||||||
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.sp ! c ! det.n ;
|
s = \\c => det.s ! c ! cn.g ++ cn.s ! det.sp ! c ! det.n ++
|
||||||
|
det.post ! det.sp ! c ! cn.g ;
|
||||||
a = agrgP3 cn.g det.n
|
a = agrgP3 cn.g det.n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- UsePron p = p ;
|
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} ;
|
||||||
|
|
||||||
DetQuant quant num = {
|
DetQuant quant num = {
|
||||||
s = \\c,g => quant.s ! c ! g ! num.n ++ num.s ;
|
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 => []
|
||||||
|
} ;
|
||||||
n = num.n ;
|
n = num.n ;
|
||||||
sp = quant.sp
|
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
|
||||||
|
} ;
|
||||||
|
|
||||||
NumSg = {s = []; n = Sg} ;
|
NumSg = {s = []; n = Sg} ;
|
||||||
NumPl = {s = []; n = Pl} ;
|
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 = {
|
DefArt = {
|
||||||
s = \\c,g,n => [] ;
|
s = \\c,g,n => [] ;
|
||||||
sp = Def
|
sp = Def;
|
||||||
|
isPoss = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
IndefArt = {
|
IndefArt = {
|
||||||
s = \\c,g => table Number ["një"; []] ;
|
s = \\c,g => table Number ["një"; []] ;
|
||||||
sp = Indef
|
sp = Indef;
|
||||||
|
isPoss = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseN n = n ;
|
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 = {
|
AdjCN ap cn = {
|
||||||
s = \\spec,c,n => cn.s ! spec ! c ! n ++ ap.s ! spec ! c ! cn.g ! n ;
|
s = \\sp,c,n => cn.s ! sp ! c ! n ++ ap.s ! sp ! c ! cn.g ! n ;
|
||||||
g = cn.g
|
g = cn.g
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,8 @@ lincat Sub10 = LinDigit ;
|
|||||||
lincat Sub100 = LinSub100 ;
|
lincat Sub100 = LinSub100 ;
|
||||||
lincat Sub1000 = LinSub100 ;
|
lincat Sub1000 = LinSub100 ;
|
||||||
lincat Sub1000000 = { s : Str } ;
|
lincat Sub1000000 = { s : Str } ;
|
||||||
|
lincat Sub1000000000 = {s : Str} ;
|
||||||
|
lincat Sub1000000000000 = {s : Str} ;
|
||||||
|
|
||||||
oper mkNum : Str -> LinDigit = \tri ->
|
oper mkNum : Str -> LinDigit = \tri ->
|
||||||
{ s = table {unit => tri ; teen => tri + "mbë" + "dhjetë" ; ten => tri + "dhjetë" }};
|
{ s = table {unit => tri ; teen => tri + "mbë" + "dhjetë" ; ten => tri + "dhjetë" }};
|
||||||
@@ -39,10 +41,23 @@ lin pot1 d = mkR (d.s ! ten) ;
|
|||||||
lin pot1plus d e = mkR ((d.s ! ten) ++ "e" ++ (e.s ! unit)) ;
|
lin pot1plus d e = mkR ((d.s ! ten) ++ "e" ++ (e.s ! unit)) ;
|
||||||
lin pot1as2 n = n ;
|
lin pot1as2 n = n ;
|
||||||
lin pot2 d = mkR (bind (d.s ! unit) "qind") ;
|
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 pot2plus d e = mkR ((bind (d.s ! unit) "qind") ++ "e" ++ e.s) ;
|
||||||
lin pot2as3 n = {s = n.s };
|
lin pot2as3 n = {s = n.s };
|
||||||
lin pot3 n = {s = n.s ++ "mijë" } ;
|
lin pot3 n = {s = n.s ++ "mijë" } ;
|
||||||
lin pot3plus n m = {s = n.s ++ "mijë" ++ m.s} ;
|
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} ;
|
lincat Dig = {s : Str; n : Number} ;
|
||||||
|
|||||||
@@ -1199,6 +1199,39 @@ oper
|
|||||||
_ => regV form1
|
_ => 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 = overload {
|
||||||
mkN : Str -> N = regN; -- s;Indef;Nom;Sg
|
mkN : Str -> N = regN; -- s;Indef;Nom;Sg
|
||||||
mkN : Str -> Str -> N = reg2N -- s;Indef;Nom;Sg s;Indef;Nom;Pl
|
mkN : Str -> Str -> N = reg2N -- s;Indef;Nom;Sg s;Indef;Nom;Pl
|
||||||
@@ -1286,9 +1319,9 @@ mkAdN : Str -> AdN = \s -> lin AdN {s=s} ;
|
|||||||
mkCAdv : Str -> CAdv = \s -> lin CAdv {s=s; p=""} ;
|
mkCAdv : Str -> CAdv = \s -> lin CAdv {s=s; p=""} ;
|
||||||
|
|
||||||
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
mkIAdv : Str -> IAdv = \s -> lin IAdv {s=s} ;
|
||||||
mkIP : Str -> IP = \s -> lin IP {s=s} ;
|
mkIP : Str -> IP = \s -> lin IP {s=s; a={gn=GSg Masc; p=P3}} ;
|
||||||
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=\\_=>s} ;
|
||||||
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
|
mkIDet : Str -> IDet = \s -> lin IDet {s=\\_=>s; n=Sg} ;
|
||||||
|
|
||||||
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
mkInterj : Str -> Interj = \s -> lin Interj {s=s} ;
|
||||||
|
|
||||||
@@ -1299,7 +1332,8 @@ mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
|||||||
mkQuant = overload {
|
mkQuant = overload {
|
||||||
mkQuant : Str -> Quant = \s -> lin Quant {
|
mkQuant : Str -> Quant = \s -> lin Quant {
|
||||||
s = \\_,_,_ => s ;
|
s = \\_,_,_ => s ;
|
||||||
sp = Indef
|
sp = Indef ;
|
||||||
|
isPoss = False
|
||||||
} ;
|
} ;
|
||||||
mkQuant : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Quant =
|
mkQuant : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Quant =
|
||||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16 -> lin Quant
|
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16 -> lin Quant
|
||||||
@@ -1345,13 +1379,15 @@ mkQuant = overload {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
sp = Indef
|
sp = Indef ;
|
||||||
|
isPoss = False
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkDet = overload {
|
mkDet = overload {
|
||||||
mkDet : Str -> Number -> Det = \s,n -> lin Det {
|
mkDet : Str -> Number -> Det = \s,n -> lin Det {
|
||||||
s = \\_,_ => s ;
|
s = \\_,_ => s ;
|
||||||
|
post = \\_,_,_ => [] ;
|
||||||
sp = Indef ;
|
sp = Indef ;
|
||||||
n = n
|
n = n
|
||||||
} ;
|
} ;
|
||||||
@@ -1375,6 +1411,7 @@ mkDet = overload {
|
|||||||
Fem => f8
|
Fem => f8
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
post = \\_,_,_ => [] ;
|
||||||
sp = Indef ;
|
sp = Indef ;
|
||||||
n = n
|
n = n
|
||||||
}
|
}
|
||||||
@@ -1395,7 +1432,23 @@ mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
|||||||
mkACard : Str -> ACard = \s -> lin ACard {s=s} ;
|
mkACard : Str -> ACard = \s -> lin ACard {s=s} ;
|
||||||
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
||||||
|
|
||||||
mkPrep : Str -> Prep = \s -> lin Prep {s=s} ;
|
mkPrep : Str -> Prep = \s -> lin Prep {
|
||||||
noPrep : Prep = lin Prep {s=""} ;
|
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} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,24 @@ concrete PhraseSqi of Phrase = CatSqi ** open Prelude, ResSqi in {
|
|||||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||||
|
|
||||||
UttS s = s ;
|
UttS s = s ;
|
||||||
|
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} ;
|
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 ;
|
UttInterj i = i ;
|
||||||
|
|
||||||
NoPConj = {s = []} ;
|
NoPConj = {s = []} ;
|
||||||
|
PConjConj c = c ;
|
||||||
|
|
||||||
NoVoc = {s = []} ;
|
NoVoc = {s = []} ;
|
||||||
|
VocNP np = {s=SOFT_BIND ++ "," ++ np.s ! Nom} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
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} ;
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
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} ;
|
||||||
|
}
|
||||||
+59
-2
@@ -1,6 +1,6 @@
|
|||||||
resource ResSqi = ParamX-[Tense,Past,Pres] ** open Prelude in {
|
resource ResSqi = ParamX-[Tense,Past,Pres] ** open Prelude in {
|
||||||
|
|
||||||
oper Compl = {s : Str} ;
|
oper Compl = {s : Str; c : Case} ;
|
||||||
|
|
||||||
param Species = Indef | Def ;
|
param Species = Indef | Def ;
|
||||||
param Case = Nom | Acc | Dat | Ablat ;
|
param Case = Nom | Acc | Dat | Ablat ;
|
||||||
@@ -9,6 +9,16 @@ param Gender = Masc | Fem ;
|
|||||||
param GenNum = GSg Gender | GPl ;
|
param GenNum = GSg Gender | GPl ;
|
||||||
oper Agr = {gn : GenNum; p : Person} ;
|
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 Noun = {s: Species => Case => Number => Str; g: Gender} ; -- 3978
|
||||||
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Noun =
|
||||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,g ->
|
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,g ->
|
||||||
@@ -104,7 +114,7 @@ oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Bool -> Adj =
|
|||||||
|
|
||||||
|
|
||||||
param Tense = Pres | Past | Imperfect | Aorist ;
|
param Tense = Pres | Past | Imperfect | Aorist ;
|
||||||
param VType = VNormal | VRefl ;
|
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; vtype : VType} ; -- 758
|
||||||
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||||
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43,f44,f45,f46,f47,f48,f49,f50,f51 ->
|
\f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43,f44,f45,f46,f47,f48,f49,f50,f51 ->
|
||||||
@@ -260,4 +270,51 @@ oper genNum : Gender -> Number -> GenNum = \g,n ->
|
|||||||
agrgP3 : Gender -> Number -> Agr =
|
agrgP3 : Gender -> Number -> Agr =
|
||||||
\g,n -> {gn=genNum g n; p=P3} ;
|
\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"}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
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}} ;
|
||||||
|
}
|
||||||
@@ -16,4 +16,107 @@ lin that_Quant = mkQuant "ai" "ata" "ajo" "ato"
|
|||||||
"atë" "ata" "atë" "ato"
|
"atë" "ata" "atë" "ato"
|
||||||
"atij" "atyre" "asaj" "atyre"
|
"atij" "atyre" "asaj" "atyre"
|
||||||
"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"} ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,150 @@
|
|||||||
|
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} ;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user