mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-09-28 05:03:42 -06:00
more updates from Codex
This commit is contained in:
@@ -7,6 +7,7 @@ concrete CatHye of Cat = CommonX ** open Prelude,ResHye in {
|
||||
lincat Card = {s : Str} ;
|
||||
lincat Cl = {s : Str;
|
||||
negative : Tense => Str;
|
||||
anterior : Tense => Polarity => Str;
|
||||
conditional : Aspect => Number => Str;
|
||||
converb : {imperfective : Str; futCon1 : Str;
|
||||
futCon2 : Str; negative : Str;
|
||||
@@ -26,22 +27,22 @@ concrete CatHye of Cat = CommonX ** open Prelude,ResHye in {
|
||||
lincat IDet = {s : Str} ;
|
||||
lincat IP = {s : Str} ;
|
||||
lincat IQuant = {s : Str} ;
|
||||
lincat Imp = {s : Str} ;
|
||||
lincat Imp = {s : Number => Str} ;
|
||||
lincat LN = {s : Str} ;
|
||||
lincat N = Noun ;
|
||||
lincat N2 = Noun ** {c2 : Compl} ;
|
||||
lincat N3 = Noun ** {c2,c3 : Compl} ;
|
||||
lincat NP = {s : Case => Str; a : Agr} ;
|
||||
lincat Num = {s : Str; n : Number} ;
|
||||
lincat Num = {s : Str; n : Number; isCard : Bool} ;
|
||||
lincat Numeral = {s : CardOrd => Str; n : Number} ;
|
||||
lincat Ord = {s : Str} ;
|
||||
lincat PN = {s : Str} ;
|
||||
lincat Predet = {s : Str} ;
|
||||
lincat Prep = Compl ;
|
||||
lincat Pron = {s : Case => Str; empty : Str; a : Agr} ;
|
||||
lincat QCl = {s : Str} ;
|
||||
lincat QCl = {s : Tense => Anteriority => Polarity => Str} ;
|
||||
lincat QS = {s : Str} ;
|
||||
lincat Quant = {s : Str; sp : Species} ;
|
||||
lincat Quant = {s : Number => Str; sp : Species; isArt : Bool} ;
|
||||
lincat RCl = {s : Str} ;
|
||||
lincat RP = {s : Str} ;
|
||||
lincat RS = {s : Str} ;
|
||||
|
||||
@@ -1,20 +1,37 @@
|
||||
concrete ConstructionHye of Construction = CatHye ** open ResHye, ParadigmsHye, Prelude in {
|
||||
lincat Timeunit, Hour, Weekday, Month, Monthday, Year, Language = {s:Str} ;
|
||||
oper
|
||||
stateVP : Str -> VP = \s -> lin VP (invarVerb s) ;
|
||||
stateVP : Str -> VP = \s -> lin VP {
|
||||
s=s++copulaVerb.s;
|
||||
conditional=\\a,p,n=>s++copulaVerb.conditional!a!p!n;
|
||||
converb={imperfective=s++copulaVerb.converb.imperfective;
|
||||
futCon1=s++copulaVerb.converb.futCon1;
|
||||
futCon2=s++copulaVerb.converb.futCon2;
|
||||
negative=s++copulaVerb.converb.negative;
|
||||
perfective=s++copulaVerb.converb.perfective;
|
||||
simultaneous=s++copulaVerb.converb.simultaneous};
|
||||
imperative=\\n=>s++copulaVerb.imperative!n;
|
||||
passive=s++copulaVerb.passive;
|
||||
past=\\p,n=>s++copulaVerb.past!p!n;
|
||||
participle=\\p=>s++copulaVerb.participle!p;
|
||||
subjunctive=\\a,p,n=>s++copulaVerb.subjunctive!a!p!n
|
||||
} ;
|
||||
constCN : Str -> CN = \s -> lin CN {s=\\_,_,_=>s} ;
|
||||
lin
|
||||
hungry_VP=stateVP "սոված";thirsty_VP=stateVP "ծարավ";tired_VP=stateVP "հոգնած";
|
||||
scared_VP=stateVP "վախեցած";ill_VP=stateVP "հիվանդ";ready_VP=stateVP "պատրաստ";
|
||||
has_age_VP c=stateVP (c.s++"տարեկան");
|
||||
have_name_Cl np name=lin Cl {s=np.s!Nom++name.s!Nom;negative=table {_=>np.s!Nom++"չի"++name.s!Nom};conditional=\\_,_=>np.s!Nom++name.s!Nom;
|
||||
have_name_Cl np name=lin Cl {s=np.s!Nom++name.s!Nom;negative=table {_=>np.s!Nom++"չի"++name.s!Nom};
|
||||
anterior=\\_=>table {_=>np.s!Nom++name.s!Nom};conditional=\\_,_=>np.s!Nom++name.s!Nom;
|
||||
converb={imperfective=np.s!Nom++name.s!Nom;futCon1=np.s!Nom++name.s!Nom;futCon2=np.s!Nom++name.s!Nom;
|
||||
negative=np.s!Nom++name.s!Nom;perfective=np.s!Nom++name.s!Nom;simultaneous=np.s!Nom++name.s!Nom};
|
||||
passive=np.s!Nom++name.s!Nom;past=\\_,_=>np.s!Nom++name.s!Nom;participle=\\_=>np.s!Nom++name.s!Nom;
|
||||
subjunctive=\\_,_=>np.s!Nom++name.s!Nom};
|
||||
married_Cl x y=have_name_Cl x y;
|
||||
what_name_QCl np={s="ինչ է"++np.s!Nom++"անունը"};how_old_QCl np={s=np.s!Nom++"քանի տարեկան է"};
|
||||
how_far_QCl np={s=np.s!Nom++"որքան հեռու է"};weather_adjCl ap=have_name_Cl {s=\\_=>[];a={n=Sg;p=P3}} {s=\\_=>ap.s!Indef!Nom!Sg;a={n=Sg;p=P3}};
|
||||
what_name_QCl np={s=\\_,_,_=>"ի՞նչ է"++np.s!Nom++"անունը"};
|
||||
how_old_QCl np={s=\\_,_,_=>np.s!Nom++"քանի՞ տարեկան է"};
|
||||
how_far_QCl np={s=\\_,_,_=>np.s!Nom++"որքա՞ն հեռու է"};
|
||||
weather_adjCl ap=have_name_Cl {s=\\_=>[];a={n=Sg;p=P3}} {s=\\_=>ap.s!Indef!Nom!Sg;a={n=Sg;p=P3}};
|
||||
is_right_VP=stateVP "ճիշտ";is_wrong_VP=stateVP "սխալ";
|
||||
n_units_AP card cn a={s=\\sp,c,n=>card.s++cn.s!Indef!Nom!Pl++a.s!c!n;isPre=True};
|
||||
n_units_of_NP card cn np={s=\\c=>card.s++cn.s!Indef!Nom!Pl++np.s!c;a=np.a};
|
||||
|
||||
+60
-15
@@ -23,9 +23,9 @@ concrete ExtendHye of Extend =
|
||||
open Prelude, ResHye, ParadigmsHye, (R = ParamX) in {
|
||||
|
||||
lincat
|
||||
VPS = {s : Str} ; [VPS] = {s1,s2 : Str} ;
|
||||
VPS = {s : Agr => Str} ; [VPS] = {s1,s2 : Agr => Str} ;
|
||||
VPI = {s : Str} ; [VPI] = {s1,s2 : Str} ;
|
||||
[Comp] = {s1,s2 : Str} ; [Imp] = {s1,s2 : Str} ;
|
||||
[Comp] = {s1,s2 : Str} ; [Imp] = {s1,s2 : Number => Str} ;
|
||||
RNP = {s : Case => Str} ; RNPList = {s : Case => Str} ;
|
||||
|
||||
oper
|
||||
@@ -40,20 +40,51 @@ oper
|
||||
imperative=\\n=>v.imperative!n++x;passive=v.passive++x;
|
||||
past=\\p,n=>v.past!p!n++x;participle=\\p=>v.participle!p++x;
|
||||
subjunctive=\\a,p,n=>v.subjunctive!a!p!n++x} ;
|
||||
extPrependVP : Str -> VP -> VP = \x,v -> lin VP {s=x++v.s;
|
||||
conditional=\\a,p,n=>x++v.conditional!a!p!n;
|
||||
converb={imperfective=x++v.converb.imperfective;futCon1=x++v.converb.futCon1;
|
||||
futCon2=x++v.converb.futCon2;negative=x++v.converb.negative;
|
||||
perfective=x++v.converb.perfective;simultaneous=x++v.converb.simultaneous};
|
||||
imperative=\\n=>x++v.imperative!n;passive=x++v.passive;
|
||||
past=\\p,n=>x++v.past!p!n;participle=\\p=>x++v.participle!p;
|
||||
subjunctive=\\a,p,n=>x++v.subjunctive!a!p!n} ;
|
||||
passivePart : Verb -> Str = \v -> v.passivePart ;
|
||||
agentAdv : NP -> Str = \np -> np.s ! Dat ++ "կողմից" ;
|
||||
refl : RNP = lin RNP {s=\\_=>"իրեն"} ;
|
||||
|
||||
lin
|
||||
GenModNP num np cn = {s=\\c=>np.s!Dat ++ cn.s!Indef!c!num.n;a={n=num.n;p=P3}} ;
|
||||
EmptyRelSlash slash = {s="որը" ++ slash.s} ;
|
||||
|
||||
MkVPS temp pol vp = {s=pol.s ++ vp.s} ;
|
||||
MkVPS temp pol vp = {s=\\agr=>case temp.a of {
|
||||
Anter => case <temp.t,pol.p> of {
|
||||
<R.Pres,Pos> => vp.converb.perfective++presentAux agr.p agr.n;
|
||||
<R.Pres,Neg> => negativePresentAux agr.p agr.n++vp.converb.perfective;
|
||||
<R.Past,Pos> => vp.converb.perfective++pastAux agr.p agr.n;
|
||||
<R.Past,Neg> => negativePastAux agr.p agr.n++vp.converb.perfective;
|
||||
<R.Fut,Pos> => vp.converb.perfective++copulaVerb.conditional!Non_Past!agr.p!agr.n;
|
||||
<R.Fut,Neg> => negativePresentAux agr.p agr.n++vp.converb.perfective++copulaVerb.converb.futCon1;
|
||||
<R.Cond,Pos> => vp.converb.perfective++copulaVerb.conditional!Perfect!agr.p!agr.n;
|
||||
<R.Cond,Neg> => negativePastAux agr.p agr.n++vp.converb.perfective
|
||||
};
|
||||
Simul => case <temp.t,pol.p> of {
|
||||
<R.Pres,Pos> => vp.converb.imperfective++presentAux agr.p agr.n;
|
||||
<R.Pres,Neg> => negativePresentAux agr.p agr.n++vp.converb.imperfective;
|
||||
<R.Past,Pos> => vp.past!agr.p!agr.n;
|
||||
<R.Past,Neg> => "չ"++BIND++vp.past!agr.p!agr.n;
|
||||
<R.Fut,Pos> => vp.conditional!Non_Past!agr.p!agr.n;
|
||||
<R.Fut,Neg> => negativePresentAux agr.p agr.n++vp.converb.futCon1;
|
||||
<R.Cond,Pos> => vp.conditional!Perfect!agr.p!agr.n;
|
||||
<R.Cond,Neg> => "չ"++BIND++vp.conditional!Perfect!agr.p!agr.n
|
||||
}
|
||||
}} ;
|
||||
BaseVPS x y = {s1=x.s;s2=y.s} ;
|
||||
ConsVPS x xs = {s1=x.s;s2=xs.s1++","++xs.s2} ;
|
||||
ConjVPS c xs = {s=xs.s1++c.s++xs.s2} ;
|
||||
PredVPS np vps = {s=np.s!Nom++vps.s} ;
|
||||
SQuestVPS np vps = {s=np.s!Nom++vps.s++"՞"} ;
|
||||
QuestVPS ip vps = {s=ip.s++vps.s++"՞"} ;
|
||||
RelVPS rp vps = {s=rp.s++vps.s} ;
|
||||
ConsVPS x xs = {s1=x.s;s2=\\a=>xs.s1!a++","++xs.s2!a} ;
|
||||
ConjVPS c xs = {s=\\a=>xs.s1!a++c.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++BIND++"՞"} ;
|
||||
QuestVPS ip vps = {s=ip.s++vps.s!{n=Sg;p=P3}++BIND++"՞"} ;
|
||||
RelVPS rp vps = {s=rp.s++vps.s!{n=Sg;p=P3}} ;
|
||||
ExistS t p np = {s=np.s!Nom++"կա"} ;
|
||||
ExistNPQS t p np = {s=np.s!Nom++"կա՞"} ;
|
||||
ExistIPQS t p ip = {s=ip.s++"կա՞"} ;
|
||||
@@ -66,10 +97,24 @@ lin
|
||||
|
||||
PresPartAP vp = {s=\\_,_,_=>vp.participle!Subject;isPre=True} ;
|
||||
EmbedPresPart vp = {s=vp.participle!Subject} ;
|
||||
PastPartAP slash = {s=\\_,_,_=>slash.participle!Resultative;isPre=True} ;
|
||||
PastPartAgentAP slash np = {s=\\_,_,_=>slash.participle!Resultative++np.s!Instr;isPre=True} ;
|
||||
PassVPSlash slash = extAddVP (extToVP (mkV "լինել")) (slash.participle!Resultative) ;
|
||||
PassAgentVPSlash slash np = extAddVP (extToVP (mkV "լինել")) (slash.participle!Resultative++np.s!Instr) ;
|
||||
PastPartAP slash = {s=\\_,_,_=>passivePart slash;isPre=True} ;
|
||||
PastPartAgentAP slash np = {s=\\_,_,_=>agentAdv np++passivePart slash;isPre=True} ;
|
||||
PassVPSlash slash = lin VP {
|
||||
s=passivePart slash++copulaVerb.s;
|
||||
conditional=\\a,p,n=>passivePart slash++copulaVerb.conditional!a!p!n;
|
||||
converb={imperfective=passivePart slash++copulaVerb.converb.imperfective;
|
||||
futCon1=passivePart slash++copulaVerb.converb.futCon1;
|
||||
futCon2=passivePart slash++copulaVerb.converb.futCon2;
|
||||
negative=passivePart slash++copulaVerb.converb.negative;
|
||||
perfective=passivePart slash++copulaVerb.converb.perfective;
|
||||
simultaneous=passivePart slash++copulaVerb.converb.simultaneous};
|
||||
imperative=\\n=>passivePart slash++copulaVerb.imperative!n;
|
||||
passive=passivePart slash++copulaVerb.passive;
|
||||
past=\\p,n=>passivePart slash++copulaVerb.past!p!n;
|
||||
participle=\\p=>passivePart slash++copulaVerb.participle!p;
|
||||
subjunctive=\\a,p,n=>passivePart slash++copulaVerb.subjunctive!a!p!n
|
||||
} ;
|
||||
PassAgentVPSlash slash np = extPrependVP (agentAdv np) (PassVPSlash slash) ;
|
||||
ProgrVPSlash slash = slash ;
|
||||
ComplBareVS vs s = extAddVP (extToVP vs) s.s ;
|
||||
|
||||
@@ -110,7 +155,7 @@ lin
|
||||
ConsComp x xs = {s1=x.s;s2=xs.s1++","++xs.s2} ;
|
||||
ConjComp c xs = {s=xs.s1++c.s++xs.s2} ;
|
||||
BaseImp x y = {s1=x.s;s2=y.s} ;
|
||||
ConsImp x xs = {s1=x.s;s2=xs.s1++","++xs.s2} ;
|
||||
ConjImp c xs = {s=xs.s1++c.s++xs.s2} ;
|
||||
ConsImp x xs = {s1=x.s;s2=\\n=>xs.s1!n++","++xs.s2!n} ;
|
||||
ConjImp c xs = {s=\\n=>xs.s1!n++c.s++xs.s2!n} ;
|
||||
TPastSimple = {s=[];t=R.Past} ;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
concrete IdiomHye of Idiom = CatHye ** open ResHye in {
|
||||
concrete IdiomHye of Idiom = CatHye ** open Prelude, ResHye in {
|
||||
oper
|
||||
bareCl : Str -> Cl = \s -> lin Cl {
|
||||
s=s; negative=table {_ => "չ" ++ s}; conditional=\\_,_ => s;
|
||||
s=s; negative=table {_ => "չ" ++ s}; anterior=\\_=>table {_=>s}; conditional=\\_,_ => s;
|
||||
converb={imperfective=s;futCon1=s;futCon2=s;negative=s;perfective=s;simultaneous=s};
|
||||
passive=s;past=\\_,_ => s;participle=\\_ => s;subjunctive=\\_,_ => s
|
||||
} ;
|
||||
@@ -11,9 +11,9 @@ concrete IdiomHye of Idiom = CatHye ** open ResHye in {
|
||||
CleftNP np rs = bareCl (np.s ! Nom ++ rs.s) ;
|
||||
CleftAdv adv s = bareCl (adv.s ++ s.s) ;
|
||||
ExistNP np = bareCl (np.s ! Nom ++ "կա") ;
|
||||
ExistIP ip = {s=ip.s ++ "կա՞"} ;
|
||||
ExistIP ip = {s=\\_,_,_=>ip.s ++ BIND ++ "՞" ++ "կա"} ;
|
||||
ExistNPAdv np adv = bareCl (adv.s ++ np.s ! Nom ++ "կա") ;
|
||||
ExistIPAdv ip adv = {s=adv.s ++ ip.s ++ "կա՞"} ;
|
||||
ExistIPAdv ip adv = {s=\\_,_,_=>adv.s ++ ip.s ++ BIND ++ "՞" ++ "կա"} ;
|
||||
ProgrVP vp = vp ;
|
||||
ImpPl1 vp = {s="եկեք" ++ vp.s} ;
|
||||
ImpP3 np vp = {s="թող" ++ np.s ! Nom ++ vp.s} ;
|
||||
|
||||
@@ -50,6 +50,7 @@ mkV001 base =
|
||||
Pl => base_1+"ե՛ք"
|
||||
} ;
|
||||
passive = base_1+"վել" ;
|
||||
passivePart = base_1+"ված" ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"եցի" ;
|
||||
@@ -150,6 +151,7 @@ mkV002 base =
|
||||
Pl => base_1+"ացե՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"ացի" ;
|
||||
@@ -250,6 +252,7 @@ mkV003 base =
|
||||
Pl => base_1+"րե՛ք"
|
||||
} ;
|
||||
passive = base_1+"վել" ;
|
||||
passivePart = base_1+"ված" ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"րի" ;
|
||||
@@ -350,6 +353,7 @@ mkV004 base =
|
||||
Pl => base_1+"ցե՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"ցա" ;
|
||||
@@ -450,6 +454,7 @@ mkV005 base =
|
||||
Pl => base_1+"րձե՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"րձեցի" ;
|
||||
@@ -550,6 +555,7 @@ mkV006 base =
|
||||
Pl => "գնացե՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => "գնացի" ;
|
||||
@@ -650,6 +656,7 @@ mkV007 base =
|
||||
Pl => "գնացե՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => "գնացի" ;
|
||||
@@ -750,6 +757,7 @@ mkV008 base =
|
||||
Pl => base_1+"ե՛ք"
|
||||
} ;
|
||||
passive = base_1+"նվել" ;
|
||||
passivePart = base_1+"նված" ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"ա" ;
|
||||
@@ -850,6 +858,7 @@ mkV009 base =
|
||||
Pl => "էղե՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => "էղա" ;
|
||||
@@ -950,6 +959,7 @@ mkV010 base =
|
||||
Pl => base_1+"ցե՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"ցի" ;
|
||||
@@ -1050,6 +1060,7 @@ mkV011 base =
|
||||
Pl => base_1+"ացէ՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"ացի" ;
|
||||
@@ -1150,6 +1161,7 @@ mkV012 base =
|
||||
Pl => base_1+"է՛ք"
|
||||
} ;
|
||||
passive = base_1+"ուել" ;
|
||||
passivePart = base_1+"ուած" ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"եցի" ;
|
||||
@@ -1250,6 +1262,7 @@ mkV013 base =
|
||||
Pl => base_1+base_2+"ե՛ք"
|
||||
} ;
|
||||
passive = base_1+base_2+"վել" ;
|
||||
passivePart = base_1+base_2+"ված" ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+base_2+"եցի" ;
|
||||
@@ -1350,6 +1363,7 @@ mkV014 base =
|
||||
Pl => base_1+base_2+"ե՛ք"
|
||||
} ;
|
||||
passive = base_1+base_2+"նվել" ;
|
||||
passivePart = base_1+base_2+"նված" ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+base_2+"ա" ;
|
||||
@@ -1450,6 +1464,7 @@ mkV015 base =
|
||||
Pl => base_1+base_2+"ցե՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+base_2+"ցա" ;
|
||||
@@ -1550,6 +1565,7 @@ mkV016 base =
|
||||
Pl => base_1+base_2+"է՛ք"
|
||||
} ;
|
||||
passive = base_1+base_2+"ուել" ;
|
||||
passivePart = base_1+base_2+"ուած" ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+base_2+"եցի" ;
|
||||
@@ -1650,6 +1666,7 @@ mkV017 base =
|
||||
Pl => base_1+base_2+"րե՛ք"
|
||||
} ;
|
||||
passive = base_1+base_2+"վել" ;
|
||||
passivePart = base_1+base_2+"ված" ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+base_2+"րի" ;
|
||||
@@ -1750,6 +1767,7 @@ mkV018 base =
|
||||
Pl => base_1+"ե՛ք"
|
||||
} ;
|
||||
passive = base_1+"վել" ;
|
||||
passivePart = base_1+"ված" ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"եցի" ;
|
||||
@@ -1850,6 +1868,7 @@ mkV019 base =
|
||||
Pl => base_1+base_2+"ացե՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+base_2+"ացի" ;
|
||||
@@ -1950,6 +1969,7 @@ mkV020 base =
|
||||
Pl => base_1+"ցէ՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"ցայ" ;
|
||||
@@ -2050,6 +2070,7 @@ mkV021 base =
|
||||
Pl => base_1+base_2+"է՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+base_2+"եցի" ;
|
||||
@@ -2150,6 +2171,7 @@ mkV022 base =
|
||||
Pl => base_1+"րձե՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"րձա" ;
|
||||
@@ -2250,6 +2272,7 @@ mkV023 base =
|
||||
Pl => base_1+"սե՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"սա" ;
|
||||
@@ -2350,6 +2373,7 @@ mkV024 base =
|
||||
Pl => base_1+"ե՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+"ա" ;
|
||||
@@ -2450,6 +2474,7 @@ mkV025 base =
|
||||
Pl => base_1+base_2+"ե՛ք"
|
||||
} ;
|
||||
passive = base ; --guessed
|
||||
passivePart = base ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => base_1+base_2+"եցի" ;
|
||||
|
||||
+19
-9
@@ -13,17 +13,27 @@ concrete NounHye of Noun = CatHye ** open Prelude, ResHye in {
|
||||
lin ExtAdvNP np adv = {s = \\c => np.s ! c ++ "," ++ adv.s; a = np.a} ;
|
||||
lin PredetNP pred np = {s = \\c => pred.s ++ np.s ! c; a = np.a} ;
|
||||
lin UsePN pn = {s = \\_ => pn.s; a = {n = Sg; p = P3}} ;
|
||||
lin DefArt = {s = []; sp = Def} ;
|
||||
lin DefArt = {s = \\_ => []; sp = Def; isArt = True} ;
|
||||
lin DetCN det cn = {s = \\c => det.s ++ cn.s ! det.sp ! c ! det.n;
|
||||
a = {n=det.n; p=P3}} ;
|
||||
lin DetQuant quant num = {s = quant.s ++ num.s; n = num.n; sp=quant.sp} ;
|
||||
lin DetQuantOrd quant num ord = {
|
||||
s = quant.s ++ num.s ++ ord.s; n = num.n; sp = quant.sp
|
||||
lin DetQuant quant num = {
|
||||
s = case <quant.isArt,num.isCard> of {
|
||||
<True,True> => num.s;
|
||||
_ => quant.s ! num.n ++ num.s
|
||||
};
|
||||
n = num.n; sp=quant.sp
|
||||
} ;
|
||||
lin IndefArt = {s = []; sp = Indef} ;
|
||||
lin NumPl = {s = []; n = Pl} ;
|
||||
lin NumSg = {s = []; n = Sg} ;
|
||||
lin NumCard card = {s = card.s; n = Pl} ;
|
||||
lin DetQuantOrd quant num ord = {
|
||||
s = case <quant.isArt,num.isCard> of {
|
||||
<True,True> => num.s ++ ord.s;
|
||||
_ => quant.s ! num.n ++ num.s ++ ord.s
|
||||
};
|
||||
n = num.n; sp = quant.sp
|
||||
} ;
|
||||
lin IndefArt = {s = table {Sg => "մի"; Pl => []}; sp = Indef; isArt = True} ;
|
||||
lin NumPl = {s = []; n = Pl; isCard = False} ;
|
||||
lin NumSg = {s = []; n = Sg; isCard = False} ;
|
||||
lin NumCard card = {s = card.s; n = Sg; isCard = True} ;
|
||||
lin NumDigits digits = {s = digits.s ! NCard} ;
|
||||
lin NumDecimal decimal = {s = decimal.s ! NCard} ;
|
||||
lin NumNumeral numeral = {s = numeral.s ! NCard} ;
|
||||
@@ -73,7 +83,7 @@ concrete NounHye of Noun = CatHye ** open Prelude, ResHye in {
|
||||
};
|
||||
a = {n=Pl;p=P3}
|
||||
} ;
|
||||
lin PossPron pron = {s = pron.empty; sp = Poss pron.a.p} ;
|
||||
lin PossPron pron = {s = \\_ => pron.empty; sp = Def; isArt = False} ;
|
||||
lin UseN n = {
|
||||
s = \\sp,c,num =>
|
||||
case <sp,c> of {
|
||||
|
||||
@@ -486,7 +486,7 @@ oper
|
||||
mkIQuant : Str -> IQuant = \s -> lin IQuant {s=s} ;
|
||||
mkIDet : Str -> IDet = \s -> lin IDet {s=s} ;
|
||||
mkSubj : Str -> Subj = \s -> lin Subj {s=s} ;
|
||||
mkQuant : Str -> Quant = \s -> lin Quant {s=s; sp=Indef} ;
|
||||
mkQuant : Str -> Quant = \s -> lin Quant {s=\\_=>s; sp=Indef; isArt=False} ;
|
||||
mkDet : Str -> Number -> Det = \s,n -> lin Det {s=s; n=n; sp=Indef} ;
|
||||
mkPredet : Str -> Predet = \s -> lin Predet {s=s} ;
|
||||
mkCard : Str -> Card = \s -> lin Card {s=s} ;
|
||||
|
||||
@@ -11,9 +11,9 @@ lin
|
||||
UttIAdv adv = adv ;
|
||||
UttIP ip = ip ;
|
||||
UttQS qs = qs ;
|
||||
UttImpSg pol imp = {s = case pol.p of {Pos => imp.s; Neg => "մի" ++ imp.s}} ;
|
||||
UttImpPl pol imp = {s = case pol.p of {Pos => imp.s; Neg => "մի" ++ imp.s}} ;
|
||||
UttImpPol pol imp = {s = case pol.p of {Pos => imp.s; Neg => "մի" ++ imp.s}} ;
|
||||
UttImpSg pol imp = {s = case pol.p of {Pos => imp.s ! Sg; Neg => "մի" ++ imp.s ! Sg}} ;
|
||||
UttImpPl pol imp = {s = case pol.p of {Pos => imp.s ! Pl; Neg => "մի" ++ imp.s ! Pl}} ;
|
||||
UttImpPol pol imp = {s = case pol.p of {Pos => imp.s ! Pl; Neg => "մի" ++ imp.s ! Pl}} ;
|
||||
VocNP np = {s = np.s ! Nom} ;
|
||||
PConjConj conj = conj ;
|
||||
|
||||
|
||||
@@ -1,11 +1,49 @@
|
||||
concrete QuestionHye of Question = CatHye ** open ResHye in {
|
||||
concrete QuestionHye of Question = CatHye ** open Prelude, ResHye in {
|
||||
lincat QVP = {s : Str} ;
|
||||
oper
|
||||
markFinal : Str -> Str = \s -> s ++ BIND ++ "՞" ;
|
||||
clForm : Cl -> Tense -> Anteriority -> Polarity -> Str = \cl,t,a,p ->
|
||||
case a of {
|
||||
Anter => cl.anterior ! t ! p;
|
||||
Simul => case p of {
|
||||
Neg => cl.negative ! t;
|
||||
Pos => case t of {
|
||||
Pres => cl.s;
|
||||
Past => cl.past ! P3 ! Sg;
|
||||
Fut => cl.conditional ! Non_Past ! Sg;
|
||||
Cond => cl.conditional ! Perfect ! Sg
|
||||
}
|
||||
}
|
||||
} ;
|
||||
vpForm : VP -> Tense -> Anteriority -> Polarity -> Str = \vp,t,a,p ->
|
||||
case a of {
|
||||
Anter => case <t,p> of {
|
||||
<Pres,Pos> => vp.converb.perfective ++ presentAux P3 Sg;
|
||||
<Pres,Neg> => negativePresentAux P3 Sg ++ vp.converb.perfective;
|
||||
<Past,Pos> => vp.converb.perfective ++ pastAux P3 Sg;
|
||||
<Past,Neg> => negativePastAux P3 Sg ++ vp.converb.perfective;
|
||||
<Fut,Pos> => vp.converb.perfective ++ copulaVerb.conditional ! Non_Past ! P3 ! Sg;
|
||||
<Fut,Neg> => negativePresentAux P3 Sg ++ vp.converb.perfective ++ copulaVerb.converb.futCon1;
|
||||
<Cond,Pos> => vp.converb.perfective ++ copulaVerb.conditional ! Perfect ! P3 ! Sg;
|
||||
<Cond,Neg> => negativePastAux P3 Sg ++ vp.converb.perfective
|
||||
};
|
||||
Simul => case <t,p> of {
|
||||
<Pres,Pos> => vp.converb.imperfective ++ presentAux P3 Sg;
|
||||
<Pres,Neg> => negativePresentAux P3 Sg ++ vp.converb.imperfective;
|
||||
<Past,Pos> => vp.past ! P3 ! Sg;
|
||||
<Past,Neg> => "չ" ++ BIND ++ vp.past ! P3 ! Sg;
|
||||
<Fut,Pos> => vp.conditional ! Non_Past ! P3 ! Sg;
|
||||
<Fut,Neg> => negativePresentAux P3 Sg ++ vp.converb.futCon1;
|
||||
<Cond,Pos> => vp.conditional ! Perfect ! P3 ! Sg;
|
||||
<Cond,Neg> => "չ" ++ BIND ++ vp.conditional ! Perfect ! P3 ! Sg
|
||||
}
|
||||
} ;
|
||||
lin
|
||||
QuestCl cl = {s = cl.s ++ "՞"} ;
|
||||
QuestVP ip vp = {s = ip.s ++ vp.s ++ "՞"} ;
|
||||
QuestSlash ip slash = {s = ip.s ++ slash.s ++ "՞"} ;
|
||||
QuestIAdv adv cl = {s = adv.s ++ cl.s ++ "՞"} ;
|
||||
QuestIComp comp np = {s = comp.s ++ np.s ! Nom ++ "՞"} ;
|
||||
QuestCl cl = {s = \\t,a,p => markFinal (clForm cl t a p)} ;
|
||||
QuestVP ip vp = {s = \\t,a,p => ip.s ++ vpForm vp t a p} ;
|
||||
QuestSlash ip slash = {s = \\_,_,_ => ip.s ++ slash.s} ;
|
||||
QuestIAdv adv cl = {s = \\t,a,p => adv.s ++ clForm cl t a p} ;
|
||||
QuestIComp comp np = {s = \\_,_,_ => comp.s ++ np.s ! Nom} ;
|
||||
IdetCN det cn = {s = det.s ++ cn.s ! Indef ! Nom ! Sg} ;
|
||||
IdetIP det = {s = det.s} ;
|
||||
AdvIP ip adv = {s = ip.s ++ adv.s} ;
|
||||
@@ -17,5 +55,5 @@ concrete QuestionHye of Question = CatHye ** open ResHye in {
|
||||
ComplSlashIP slash ip = {s = slash.s ++ ip.s} ;
|
||||
AdvQVP vp adv = {s = vp.s ++ adv.s} ;
|
||||
AddAdvQVP qvp adv = {s = qvp.s ++ adv.s} ;
|
||||
QuestQVP ip qvp = {s = ip.s ++ qvp.s ++ "՞"} ;
|
||||
QuestQVP ip qvp = {s = \\_,_,_ => ip.s ++ qvp.s} ;
|
||||
}
|
||||
|
||||
+68
-2
@@ -4,12 +4,73 @@ param CardOrd = NCard | NOrd ;
|
||||
param Aspect = Non_Past | Perfect ;
|
||||
param Case = Nom | Dat | Ablat | Instr | Loc ;
|
||||
param PartType = Resultative | Subject ;
|
||||
oper Verb = {s: Str; causative: Str; conditional: Aspect => Person => Number => Str; converb: {imperfective: Str; futCon1: Str; futCon2: Str; negative: Str; perfective: Str; simultaneous: Str}; imperative: Number => Str; passive: Str; past: Person => Number => Str; participle: PartType => Str; subjunctive: Aspect => Person => Number => Str} ; -- 898
|
||||
oper Verb = {s: Str; causative: Str; conditional: Aspect => Person => Number => Str; converb: {imperfective: Str; futCon1: Str; futCon2: Str; negative: Str; perfective: Str; simultaneous: Str}; imperative: Number => Str; passive: Str; passivePart: Str; past: Person => Number => Str; participle: PartType => Str; subjunctive: Aspect => Person => Number => Str} ; -- 898
|
||||
oper presentAux : Person -> Number -> Str = \p,n -> case <p,n> of {
|
||||
<P1,Sg> => "եմ"; <P2,Sg> => "ես"; <P3,Sg> => "է";
|
||||
<P1,Pl> => "ենք"; <P2,Pl> => "եք"; <P3,Pl> => "են"
|
||||
} ;
|
||||
oper negativePresentAux : Person -> Number -> Str = \p,n -> case <p,n> of {
|
||||
<P1,Sg> => "չեմ"; <P2,Sg> => "չես"; <P3,Sg> => "չի";
|
||||
<P1,Pl> => "չենք"; <P2,Pl> => "չեք"; <P3,Pl> => "չեն"
|
||||
} ;
|
||||
oper pastAux : Person -> Number -> Str = \p,n -> case <p,n> of {
|
||||
<P1,Sg> => "էի"; <P2,Sg> => "էիր"; <P3,Sg> => "էր";
|
||||
<P1,Pl> => "էինք"; <P2,Pl> => "էիք"; <P3,Pl> => "էին"
|
||||
} ;
|
||||
oper negativePastAux : Person -> Number -> Str = \p,n -> case <p,n> of {
|
||||
<P1,Sg> => "չէի"; <P2,Sg> => "չէիր"; <P3,Sg> => "չէր";
|
||||
<P1,Pl> => "չէինք"; <P2,Pl> => "չէիք"; <P3,Pl> => "չէին"
|
||||
} ;
|
||||
oper copulaVerb : Verb = {
|
||||
s = "լինել";
|
||||
causative = "լինել";
|
||||
conditional = table {
|
||||
Perfect => table {
|
||||
P1 => table {Sg => "կլինեի"; Pl => "կլինեինք"};
|
||||
P2 => table {Sg => "կլինեիր"; Pl => "կլինեիք"};
|
||||
P3 => table {Sg => "կլիներ"; Pl => "կլինեին"}
|
||||
};
|
||||
Non_Past => table {
|
||||
P1 => table {Sg => "կլինեմ"; Pl => "կլինենք"};
|
||||
P2 => table {Sg => "կլինես"; Pl => "կլինեք"};
|
||||
P3 => table {Sg => "կլինի"; Pl => "կլինեն"}
|
||||
}
|
||||
};
|
||||
converb = {
|
||||
imperfective = [];
|
||||
futCon1 = "լինելու";
|
||||
futCon2 = "լինելիք";
|
||||
negative = "լինի";
|
||||
perfective = "եղել";
|
||||
simultaneous = "լինելիս"
|
||||
};
|
||||
imperative = table {Sg => "եղի՛ր"; Pl => "եղե՛ք"};
|
||||
passive = "լինել";
|
||||
passivePart = "եղած";
|
||||
past = table {
|
||||
P1 => table {Sg => "էի"; Pl => "էինք"};
|
||||
P2 => table {Sg => "էիր"; Pl => "էիք"};
|
||||
P3 => table {Sg => "էր"; Pl => "էին"}
|
||||
};
|
||||
participle = table {Resultative => "եղած"; Subject => "լինող"};
|
||||
subjunctive = table {
|
||||
Perfect => table {
|
||||
P1 => table {Sg => "լինեի"; Pl => "լինեինք"};
|
||||
P2 => table {Sg => "լինեիր"; Pl => "լինեիք"};
|
||||
P3 => table {Sg => "լիներ"; Pl => "լինեին"}
|
||||
};
|
||||
Non_Past => table {
|
||||
P1 => table {Sg => "լինեմ"; Pl => "լինենք"};
|
||||
P2 => table {Sg => "լինես"; Pl => "լինեք"};
|
||||
P3 => table {Sg => "լինի"; Pl => "լինեն"}
|
||||
}
|
||||
}
|
||||
} ;
|
||||
oper invarVerb : Str -> Verb = \s -> {
|
||||
s=s; causative=s;
|
||||
conditional=table {_ => table {_ => table {_ => s}}};
|
||||
converb={imperfective=s;futCon1=s;futCon2=s;negative=s;perfective=s;simultaneous=s};
|
||||
imperative=table {_ => s}; passive=s;
|
||||
imperative=table {_ => s}; passive=s; passivePart=s;
|
||||
past=table {_ => table {_ => s}};
|
||||
participle=table {_ => s};
|
||||
subjunctive=table {_ => table {_ => table {_ => s}}}
|
||||
@@ -60,6 +121,11 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_
|
||||
Pl => f22
|
||||
} ;
|
||||
passive = f23 ;
|
||||
passivePart = case f23 of {
|
||||
stem + "ել" => stem + "ած";
|
||||
stem + "ալ" => stem + "ացած";
|
||||
_ => f23
|
||||
} ;
|
||||
past = table {
|
||||
P1 => table {
|
||||
Sg => f24 ;
|
||||
|
||||
+54
-29
@@ -1,19 +1,30 @@
|
||||
concrete SentenceHye of Sentence = CatHye ** open Prelude,ResHye in {
|
||||
oper negAux : Agr -> Str = \a -> case <a.p,a.n> of {
|
||||
<P1,Sg> => "չեմ"; <P2,Sg> => "չես"; <P3,Sg> => "չի";
|
||||
<P1,Pl> => "չենք"; <P2,Pl> => "չեք"; <P3,Pl> => "չեն"
|
||||
} ;
|
||||
lin PredVP np vp = {s = np.s ! Nom ++ vp.converb.imperfective ++
|
||||
case <np.a.p,np.a.n> of {
|
||||
<P1,Sg> => "եմ"; <P2,Sg> => "ես"; <P3,Sg> => "է";
|
||||
<P1,Pl> => "ենք"; <P2,Pl> => "եք"; <P3,Pl> => "են"
|
||||
};
|
||||
presentAux np.a.p np.a.n;
|
||||
negative = table {
|
||||
Pres => np.s ! Nom ++ negAux np.a ++ vp.converb.imperfective;
|
||||
Pres => np.s ! Nom ++ negativePresentAux np.a.p np.a.n ++ vp.converb.imperfective;
|
||||
Past => np.s ! Nom ++ "չ" ++ BIND ++ vp.past ! np.a.p ! np.a.n;
|
||||
Fut => np.s ! Nom ++ negAux np.a ++ vp.converb.futCon1;
|
||||
Fut => np.s ! Nom ++ negativePresentAux np.a.p np.a.n ++ vp.converb.futCon1;
|
||||
Cond => np.s ! Nom ++ "չ" ++ BIND ++ vp.conditional ! Non_Past ! np.a.p ! np.a.n
|
||||
};
|
||||
anterior = table {
|
||||
Pres => table {
|
||||
Pos => np.s ! Nom ++ vp.converb.perfective ++ presentAux np.a.p np.a.n;
|
||||
Neg => np.s ! Nom ++ negativePresentAux np.a.p np.a.n ++ vp.converb.perfective
|
||||
};
|
||||
Past => table {
|
||||
Pos => np.s ! Nom ++ vp.converb.perfective ++ pastAux np.a.p np.a.n;
|
||||
Neg => np.s ! Nom ++ negativePastAux np.a.p np.a.n ++ vp.converb.perfective
|
||||
};
|
||||
Fut => table {
|
||||
Pos => np.s ! Nom ++ vp.converb.perfective ++ copulaVerb.conditional ! Non_Past ! np.a.p ! np.a.n;
|
||||
Neg => np.s ! Nom ++ negativePresentAux np.a.p np.a.n ++ vp.converb.perfective ++ copulaVerb.converb.futCon1
|
||||
};
|
||||
Cond => table {
|
||||
Pos => np.s ! Nom ++ vp.converb.perfective ++ copulaVerb.conditional ! Perfect ! np.a.p ! np.a.n;
|
||||
Neg => np.s ! Nom ++ negativePastAux np.a.p np.a.n ++ vp.converb.perfective
|
||||
}
|
||||
};
|
||||
conditional = \\a,_ => np.s ! Nom ++ vp.conditional ! a ! np.a.p ! np.a.n;
|
||||
converb = {imperfective = np.s ! Nom ++ vp.converb.imperfective;
|
||||
futCon1 = np.s ! Nom ++ vp.converb.futCon1;
|
||||
@@ -25,37 +36,51 @@ concrete SentenceHye of Sentence = CatHye ** open Prelude,ResHye in {
|
||||
past = \\_,_ => np.s ! Nom ++ vp.past ! np.a.p ! np.a.n;
|
||||
participle = \\p => np.s ! Nom ++ vp.participle ! p;
|
||||
subjunctive = \\a,_ => np.s ! Nom ++ vp.subjunctive ! a ! np.a.p ! np.a.n} ;
|
||||
lin PredSCVP sc vp = {s = sc.s ++ vp.s;
|
||||
negative=table {_ => sc.s ++ "չ" ++ BIND ++ vp.s};
|
||||
conditional=\\a,n => sc.s ++ vp.conditional ! a ! P3 ! n;
|
||||
lin PredSCVP sc vp = {s = sc.s ++ vp.converb.imperfective ++ presentAux P3 Sg;
|
||||
negative=table {
|
||||
Pres => sc.s ++ negativePresentAux P3 Sg ++ vp.converb.imperfective;
|
||||
Past => sc.s ++ "չ" ++ BIND ++ vp.past ! P3 ! Sg;
|
||||
Fut => sc.s ++ negativePresentAux P3 Sg ++ vp.converb.futCon1;
|
||||
Cond => sc.s ++ "չ" ++ BIND ++ vp.conditional ! Non_Past ! P3 ! Sg
|
||||
};
|
||||
anterior=table {
|
||||
Pres=>table {Pos=>sc.s++vp.converb.perfective++presentAux P3 Sg;
|
||||
Neg=>sc.s++negativePresentAux P3 Sg++vp.converb.perfective};
|
||||
Past=>table {Pos=>sc.s++vp.converb.perfective++pastAux P3 Sg;
|
||||
Neg=>sc.s++negativePastAux P3 Sg++vp.converb.perfective};
|
||||
Fut=>table {Pos=>sc.s++vp.converb.perfective++copulaVerb.conditional!Non_Past!P3!Sg;
|
||||
Neg=>sc.s++negativePresentAux P3 Sg++vp.converb.perfective++copulaVerb.converb.futCon1};
|
||||
Cond=>table {Pos=>sc.s++vp.converb.perfective++copulaVerb.conditional!Perfect!P3!Sg;
|
||||
Neg=>sc.s++negativePastAux P3 Sg++vp.converb.perfective}
|
||||
};
|
||||
conditional=\\a,_ => sc.s ++ vp.conditional ! a ! P3 ! Sg;
|
||||
converb={imperfective=sc.s ++ vp.converb.imperfective; futCon1=sc.s ++ vp.converb.futCon1;
|
||||
futCon2=sc.s ++ vp.converb.futCon2; negative=sc.s ++ vp.converb.negative;
|
||||
perfective=sc.s ++ vp.converb.perfective; simultaneous=sc.s ++ vp.converb.simultaneous};
|
||||
passive=sc.s ++ vp.passive; past=\\p,n => sc.s ++ vp.past ! p ! n;
|
||||
passive=sc.s ++ vp.passive; past=\\_,_ => sc.s ++ vp.past ! P3 ! Sg;
|
||||
participle=\\p => sc.s ++ vp.participle ! p;
|
||||
subjunctive=\\a,n => sc.s ++ vp.subjunctive ! a ! P3 ! n} ;
|
||||
lin UseCl temp pol cl = {s = case pol.p of {
|
||||
Neg => cl.negative ! temp.t;
|
||||
Pos => case <temp.t,temp.a> of {
|
||||
<Pres,Simul> => cl.s;
|
||||
<Pres,Anter> => cl.converb.perfective;
|
||||
<Past,Simul> => cl.past ! P3 ! Sg;
|
||||
<Past,Anter> => cl.converb.perfective;
|
||||
<Fut,Simul> => cl.conditional ! Non_Past ! Sg;
|
||||
<Fut,Anter> => cl.conditional ! Perfect ! Sg;
|
||||
<Cond,Simul> => cl.conditional ! Non_Past ! Sg;
|
||||
<Cond,Anter> => cl.conditional ! Perfect ! Sg
|
||||
subjunctive=\\a,_ => sc.s ++ vp.subjunctive ! a ! P3 ! Sg} ;
|
||||
lin UseCl temp pol cl = {s = case temp.a of {
|
||||
Anter => cl.anterior ! temp.t ! pol.p;
|
||||
Simul => case pol.p of {
|
||||
Neg => cl.negative ! temp.t;
|
||||
Pos => case temp.t of {
|
||||
Pres => cl.s;
|
||||
Past => cl.past ! P3 ! Sg;
|
||||
Fut => cl.conditional ! Non_Past ! Sg;
|
||||
Cond => cl.conditional ! Perfect ! Sg
|
||||
}
|
||||
}
|
||||
}} ;
|
||||
lin UseQCl temp pol qcl = {s = case pol.p of {Pos => qcl.s; Neg => "չ" ++ qcl.s}} ;
|
||||
lin UseQCl temp pol qcl = {s = qcl.s ! temp.t ! temp.a ! pol.p} ;
|
||||
lin UseRCl temp pol rcl = {s = case pol.p of {Pos => rcl.s; Neg => "չ" ++ rcl.s}} ;
|
||||
lin UseSlash temp pol slash = {s = case pol.p of {Pos => slash.s; Neg => "չ" ++ slash.s}} ;
|
||||
lin AdvS adv s = {s = adv.s ++ s.s} ;
|
||||
lin ExtAdvS adv s = {s = adv.s ++ "," ++ s.s} ;
|
||||
lin SSubjS s1 subj s2 = {s = s1.s ++ subj.s ++ s2.s} ;
|
||||
lin RelS s rs = {s = s.s ++ "," ++ rs.s} ;
|
||||
lin ImpVP vp = {s = vp.imperative ! Sg} ;
|
||||
lin AdvImp adv imp = {s = adv.s ++ imp.s} ;
|
||||
lin ImpVP vp = {s = vp.imperative} ;
|
||||
lin AdvImp adv imp = {s = \\n => adv.s ++ imp.s ! n} ;
|
||||
lin EmbedS s = s ;
|
||||
lin EmbedQS qs = qs ;
|
||||
lin SlashVP np vp = {s = np.s ! Nom ++ vp.s} ;
|
||||
|
||||
@@ -72,17 +72,17 @@ lin if_Subj = mkSubj "եթե" ;
|
||||
lin because_Subj = mkSubj "որովհետև" ;
|
||||
lin although_Subj = mkSubj "թեև" ;
|
||||
lin that_Subj = mkSubj "որ" ;
|
||||
lin whatSg_IP = mkIP "ինչ" ;
|
||||
lin whatPl_IP = mkIP "ինչեր" ;
|
||||
lin whoSg_IP = mkIP "ով" ;
|
||||
lin whoPl_IP = mkIP "ովքեր" ;
|
||||
lin which_IQuant = mkIQuant "որ" ;
|
||||
lin how_IAdv = mkIAdv "ինչպես" ;
|
||||
lin when_IAdv = mkIAdv "երբ" ;
|
||||
lin where_IAdv = mkIAdv "որտեղ" ;
|
||||
lin why_IAdv = mkIAdv "ինչու" ;
|
||||
lin how8many_IDet = mkIDet "քանի" ;
|
||||
lin how8much_IAdv = mkIAdv "որքան" ;
|
||||
lin whatSg_IP = mkIP "ի՞նչ" ;
|
||||
lin whatPl_IP = mkIP "ինչե՞ր" ;
|
||||
lin whoSg_IP = mkIP "ո՞վ" ;
|
||||
lin whoPl_IP = mkIP "ովքե՞ր" ;
|
||||
lin which_IQuant = mkIQuant "ո՞ր" ;
|
||||
lin how_IAdv = mkIAdv "ինչպե՞ս" ;
|
||||
lin when_IAdv = mkIAdv "ե՞րբ" ;
|
||||
lin where_IAdv = mkIAdv "որտե՞ղ" ;
|
||||
lin why_IAdv = mkIAdv "ինչո՞ւ" ;
|
||||
lin how8many_IDet = mkIDet "քանի՞" ;
|
||||
lin how8much_IAdv = mkIAdv "որքա՞ն" ;
|
||||
lin as_CAdv = mkCAdv "այնքան" ;
|
||||
lin more_CAdv = mkCAdv "ավելի" ;
|
||||
lin less_CAdv = mkCAdv "պակաս" ;
|
||||
|
||||
+40
-13
@@ -8,6 +8,32 @@ concrete VerbHye of Verb = CatHye ** open Prelude, ResHye, ParadigmsHye in {
|
||||
s=v.s; conditional=v.conditional; converb=v.converb; imperative=v.imperative;
|
||||
passive=v.passive; past=v.past; participle=v.participle; subjunctive=v.subjunctive
|
||||
} ;
|
||||
appendVerb : Verb -> Str -> Verb = \v,x -> {
|
||||
s=v.s ++ x; causative=v.causative ++ x;
|
||||
conditional=\\a,p,n => v.conditional ! a ! p ! n ++ x;
|
||||
converb={imperfective=v.converb.imperfective ++ x;
|
||||
futCon1=v.converb.futCon1 ++ x; futCon2=v.converb.futCon2 ++ x;
|
||||
negative=v.converb.negative ++ x; perfective=v.converb.perfective ++ x;
|
||||
simultaneous=v.converb.simultaneous ++ x};
|
||||
imperative=\\n => v.imperative ! n ++ x; passive=v.passive ++ x;
|
||||
passivePart=v.passivePart ++ x;
|
||||
past=\\p,n => v.past ! p ! n ++ x;
|
||||
participle=\\p => v.participle ! p ++ x;
|
||||
subjunctive=\\a,p,n => v.subjunctive ! a ! p ! n ++ x
|
||||
} ;
|
||||
prependVerb : Str -> Verb -> Verb = \x,v -> {
|
||||
s=x ++ v.s; causative=x ++ v.causative;
|
||||
conditional=\\a,p,n => x ++ v.conditional ! a ! p ! n;
|
||||
converb={imperfective=x ++ v.converb.imperfective;
|
||||
futCon1=x ++ v.converb.futCon1; futCon2=x ++ v.converb.futCon2;
|
||||
negative=x ++ v.converb.negative; perfective=x ++ v.converb.perfective;
|
||||
simultaneous=x ++ v.converb.simultaneous};
|
||||
imperative=\\n => x ++ v.imperative ! n; passive=x ++ v.passive;
|
||||
passivePart=x ++ v.passivePart;
|
||||
past=\\p,n => x ++ v.past ! p ! n;
|
||||
participle=\\p => x ++ v.participle ! p;
|
||||
subjunctive=\\a,p,n => x ++ v.subjunctive ! a ! p ! n
|
||||
} ;
|
||||
appendVP : VP -> Str -> VP = \v,x -> lin VP {
|
||||
s=v.s ++ x;
|
||||
conditional=\\a,p,n => v.conditional ! a ! p ! n ++ x;
|
||||
@@ -66,24 +92,25 @@ concrete VerbHye of Verb = CatHye ** open Prelude, ResHye, ParadigmsHye in {
|
||||
lin ComplVS v s = appendVP (toVP v) s.s ;
|
||||
lin ComplVQ v qs = appendVP (toVP v) qs.s ;
|
||||
lin ComplVA v ap = appendVP (toVP v) (ap.s ! Indef ! Nom ! Sg) ;
|
||||
lin Slash2V3 v np = lin VPSlash (v ** {
|
||||
s = compl v.c2 np ++ v.s; c2 = v.c3
|
||||
lin Slash2V3 v np = lin VPSlash ((prependVerb (compl v.c2 np) v) ** {
|
||||
c2 = v.c3
|
||||
}) ;
|
||||
lin Slash3V3 v np = lin VPSlash (v ** {
|
||||
s = compl v.c3 np ++ v.s; c2 = v.c2
|
||||
lin Slash3V3 v np = lin VPSlash ((prependVerb (compl v.c3 np) v) ** {
|
||||
c2 = v.c2
|
||||
}) ;
|
||||
lin SlashV2S v s = lin VPSlash (v ** {s = v.s ++ s.s; c2=v.c2}) ;
|
||||
lin SlashV2Q v qs = lin VPSlash (v ** {s = v.s ++ qs.s; c2=v.c2}) ;
|
||||
lin SlashV2A v ap = lin VPSlash (v ** {
|
||||
s = v.s ++ ap.s ! Indef ! Nom ! Sg; c2=v.c2
|
||||
lin SlashV2S v s = lin VPSlash ((appendVerb v s.s) ** {c2=v.c2}) ;
|
||||
lin SlashV2Q v qs = lin VPSlash ((appendVerb v qs.s) ** {c2=v.c2}) ;
|
||||
lin SlashV2A v ap = lin VPSlash ((appendVerb v (ap.s ! Indef ! Nom ! Sg)) ** {
|
||||
c2=v.c2
|
||||
}) ;
|
||||
lin UseComp comp = prependVP comp.s (toVP (mkV "լինել")) ;
|
||||
lin UseCopula = toVP (mkV "լինել") ;
|
||||
lin UseComp comp = prependVP comp.s (toVP copulaVerb) ;
|
||||
lin UseCopula = toVP copulaVerb ;
|
||||
lin ExtAdvVP vp adv = appendVP vp ("," ++ adv.s) ;
|
||||
lin AdVVP adv vp = prependVP adv.s vp ;
|
||||
lin AdvVPSlash vp adv = lin VPSlash (vp ** {s = vp.s ++ adv.s}) ;
|
||||
lin AdVVPSlash adv vp = lin VPSlash (vp ** {s = adv.s ++ vp.s}) ;
|
||||
lin VPSlashPrep vp prep = lin VPSlash (vp ** {causative=vp.s;c2=prep}) ;
|
||||
lin AdvVPSlash vp adv = lin VPSlash ((appendVerb vp adv.s) ** {c2=vp.c2}) ;
|
||||
lin AdVVPSlash adv vp = lin VPSlash ((prependVerb adv.s vp) ** {c2=vp.c2}) ;
|
||||
lin VPSlashPrep vp prep = lin VPSlash
|
||||
(vp ** {causative=vp.s;passivePart=vp.participle!Resultative;c2=prep}) ;
|
||||
lin CompAP ap = {s = ap.s ! Indef ! Nom ! Sg} ;
|
||||
lin CompNP np = {s = np.s ! Nom} ;
|
||||
lin CompAdv adv = adv ;
|
||||
|
||||
Reference in New Issue
Block a user