From 9e2a83040a676538267624964618bc54b34649f9 Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Mon, 21 Sep 2026 18:13:07 +0200 Subject: [PATCH] extensions from Codex --- src/armenian/AdjectiveHye.gf | 16 + src/armenian/AdverbHye.gf | 4 + src/armenian/AllHye.gf | 3 +- src/armenian/AllHyeAbs.gf | 5 +- src/armenian/CatHye.gf | 11 +- src/armenian/ConjunctionHye.gf | 22 + src/armenian/ConstructionHye.gf | 59 + src/armenian/ExtendHye.gf | 116 ++ src/armenian/GrammarHye.gf | 12 +- src/armenian/IdiomHye.gf | 21 + src/armenian/LangHye.gf | 3 +- src/armenian/MorphoHye.gf | 2082 +++++++++++++++---------------- src/armenian/NamesHye.gf | 12 + src/armenian/NounHye.gf | 59 +- src/armenian/NumeralHye.gf | 181 +++ src/armenian/ParadigmsHye.gf | 18 +- src/armenian/PhraseHye.gf | 14 +- src/armenian/QuestionHye.gf | 21 + src/armenian/RelativeHye.gf | 11 + src/armenian/ResHye.gf | 21 +- src/armenian/SentenceHye.gf | 59 +- src/armenian/StructuralHye.gf | 108 +- src/armenian/VerbHye.gf | 94 +- 23 files changed, 1837 insertions(+), 1115 deletions(-) create mode 100644 src/armenian/ConjunctionHye.gf create mode 100644 src/armenian/ConstructionHye.gf create mode 100644 src/armenian/ExtendHye.gf create mode 100644 src/armenian/IdiomHye.gf create mode 100644 src/armenian/NamesHye.gf create mode 100644 src/armenian/NumeralHye.gf create mode 100644 src/armenian/QuestionHye.gf create mode 100644 src/armenian/RelativeHye.gf diff --git a/src/armenian/AdjectiveHye.gf b/src/armenian/AdjectiveHye.gf index 09800923..9df3647c 100644 --- a/src/armenian/AdjectiveHye.gf +++ b/src/armenian/AdjectiveHye.gf @@ -15,5 +15,21 @@ lin } ; isPre = True } ; + UseA2 a = PositA a ; + ComplA2 a np = { + s = \\sp,c,n => (case a.c2.isPre of { + True => a.c2.s ++ np.s ! a.c2.c; + False => np.s ! a.c2.c ++ a.c2.s + }) ++ a.s ! c ! n; + isPre = False + } ; + AdvAP ap adv = {s = \\sp,c,n => ap.s ! sp ! c ! n ++ adv.s; isPre = ap.isPre} ; + SentAP ap sc = {s = \\sp,c,n => ap.s ! sp ! c ! n ++ sc.s; isPre = ap.isPre} ; + ComparA a np = { + s = \\sp,c,n => a.s ! c ! n ++ "քան" ++ np.s ! Nom; isPre = False + } ; + UseComparA a = { + s = \\sp,c,n => "ավելի" ++ (a.s ! c ! n); isPre = True + } ; } diff --git a/src/armenian/AdverbHye.gf b/src/armenian/AdverbHye.gf index 15f39b74..07d40749 100644 --- a/src/armenian/AdverbHye.gf +++ b/src/armenian/AdverbHye.gf @@ -3,4 +3,8 @@ concrete AdverbHye of Adverb = CatHye ** open Prelude,ResHye in { False => np.s ! p.c ++ p.s; True => p.s ++ np.s ! p.c }} ; + lin PositAdvAdj a = {s = a.s ! Instr ! Sg} ; + lin PositAdAAdj a = {s = a.s ! Instr ! Sg} ; + lin AdAdv ada adv = {s = ada.s ++ adv.s} ; + lin SubjS subj s = {s = subj.s ++ s.s} ; } diff --git a/src/armenian/AllHye.gf b/src/armenian/AllHye.gf index b11b445a..c4274ad5 100644 --- a/src/armenian/AllHye.gf +++ b/src/armenian/AllHye.gf @@ -1,4 +1,5 @@ concrete AllHye of AllHyeAbs = - LangHye + LangHye, + ExtendHye ** {} ; diff --git a/src/armenian/AllHyeAbs.gf b/src/armenian/AllHyeAbs.gf index 354987b7..cc7f93b7 100644 --- a/src/armenian/AllHyeAbs.gf +++ b/src/armenian/AllHyeAbs.gf @@ -1,3 +1,4 @@ abstract AllHyeAbs = - Lang - ** {} \ No newline at end of file + Lang, + Extend + ** {} diff --git a/src/armenian/CatHye.gf b/src/armenian/CatHye.gf index 3b1f7362..123e96f6 100644 --- a/src/armenian/CatHye.gf +++ b/src/armenian/CatHye.gf @@ -6,6 +6,7 @@ concrete CatHye of Cat = CommonX ** open Prelude,ResHye in { lincat CN = {s : Species => Case => Number => Str} ; lincat Card = {s : Str} ; lincat Cl = {s : Str; + negative : Tense => Str; conditional : Aspect => Number => Str; converb : {imperfective : Str; futCon1 : Str; futCon2 : Str; negative : Str; @@ -17,9 +18,9 @@ concrete CatHye of Cat = CommonX ** open Prelude,ResHye in { lincat Comp = {s : Str} ; lincat Conj = {s : Str} ; lincat DAP = {s : Str} ; - lincat Decimal = {s : Str} ; + lincat Decimal = {s : CardOrd => Str; n : Number; hasDot : Bool} ; lincat Det = {s : Str; n : Number; sp : Species} ; - lincat Digits = {s : Str} ; + lincat Digits = {s : CardOrd => Str; n : Number; tail : DTail} ; lincat GN = {s : Str} ; lincat IComp = {s : Str} ; lincat IDet = {s : Str} ; @@ -32,12 +33,12 @@ concrete CatHye of Cat = CommonX ** open Prelude,ResHye in { lincat N3 = Noun ** {c2,c3 : Compl} ; lincat NP = {s : Case => Str; a : Agr} ; lincat Num = {s : Str; n : Number} ; - lincat Numeral = {s : Str} ; + lincat Numeral = {s : CardOrd => Str; n : Number} ; lincat Ord = {s : Str} ; lincat PN = {s : Str} ; lincat Predet = {s : Str} ; - lincat Prep = Compl ** {isPre : Bool} ; - lincat Pron = {s : Str; empty : Str; a : Agr} ; + lincat Prep = Compl ; + lincat Pron = {s : Case => Str; empty : Str; a : Agr} ; lincat QCl = {s : Str} ; lincat QS = {s : Str} ; lincat Quant = {s : Str; sp : Species} ; diff --git a/src/armenian/ConjunctionHye.gf b/src/armenian/ConjunctionHye.gf new file mode 100644 index 00000000..faf31e95 --- /dev/null +++ b/src/armenian/ConjunctionHye.gf @@ -0,0 +1,22 @@ +concrete ConjunctionHye of Conjunction = CatHye ** open Prelude, ResHye in { + lincat + [S] = {s1,s2 : Str} ; [RS] = {s1,s2 : Str} ; [Adv] = {s1,s2 : Str} ; + [AdV] = {s1,s2 : Str} ; [NP] = {s1,s2 : Str} ; [AP] = {s1,s2 : Str} ; + [IAdv] = {s1,s2 : Str} ; [CN] = {s1,s2 : Str} ; [DAP] = {s1,s2 : Str} ; + lin + BaseS x y = {s1=x.s;s2=y.s}; ConsS x xs = {s1=x.s;s2=xs.s1 ++ "," ++ xs.s2}; ConjS c xs = {s=xs.s1 ++ c.s ++ xs.s2}; + BaseRS x y = {s1=x.s;s2=y.s}; ConsRS x xs = {s1=x.s;s2=xs.s1 ++ "," ++ xs.s2}; ConjRS c xs = {s=xs.s1 ++ c.s ++ xs.s2}; + BaseAdv x y = {s1=x.s;s2=y.s}; ConsAdv x xs = {s1=x.s;s2=xs.s1 ++ "," ++ xs.s2}; ConjAdv c xs = {s=xs.s1 ++ c.s ++ xs.s2}; + BaseAdV x y = {s1=x.s;s2=y.s}; ConsAdV x xs = {s1=x.s;s2=xs.s1 ++ "," ++ xs.s2}; ConjAdV c xs = {s=xs.s1 ++ c.s ++ xs.s2}; + BaseIAdv x y = {s1=x.s;s2=y.s}; ConsIAdv x xs = {s1=x.s;s2=xs.s1 ++ "," ++ xs.s2}; ConjIAdv c xs = {s=xs.s1 ++ c.s ++ xs.s2}; + BaseNP x y = {s1=x.s ! Nom;s2=y.s ! Nom}; ConsNP x xs = {s1=x.s ! Nom;s2=xs.s1 ++ "," ++ xs.s2}; + ConjNP c xs = {s=\\_ => xs.s1 ++ c.s ++ xs.s2; a={n=Pl;p=P3}}; + BaseAP x y = {s1=x.s ! Indef ! Nom ! Sg;s2=y.s ! Indef ! Nom ! Sg}; + ConsAP x xs = {s1=x.s ! Indef ! Nom ! Sg;s2=xs.s1 ++ "," ++ xs.s2}; + ConjAP c xs = {s=\\_,_,_ => xs.s1 ++ c.s ++ xs.s2;isPre=True}; + BaseCN x y = {s1=x.s ! Indef ! Nom ! Sg;s2=y.s ! Indef ! Nom ! Sg}; + ConsCN x xs = {s1=x.s ! Indef ! Nom ! Sg;s2=xs.s1 ++ "," ++ xs.s2}; + ConjCN c xs = {s=\\_,_,_ => xs.s1 ++ c.s ++ xs.s2}; + BaseDAP x y = {s1=x.s;s2=y.s}; ConsDAP x xs = {s1=x.s;s2=xs.s1 ++ "," ++ xs.s2}; + ConjDet c xs = {s=xs.s1 ++ c.s ++ xs.s2;n=Pl;sp=Indef}; +} diff --git a/src/armenian/ConstructionHye.gf b/src/armenian/ConstructionHye.gf new file mode 100644 index 00000000..55b22ddf --- /dev/null +++ b/src/armenian/ConstructionHye.gf @@ -0,0 +1,59 @@ +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) ; + 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; + 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}}; + 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}; + n_unit_CN card unit cn={s=\\sp,c,n=>card.s++unit.s!Indef!Nom!Sg++cn.s!sp!c!n}; + bottle_of_CN np=constCN ("շիշ"++np.s!Dat);cup_of_CN np=constCN ("բաժակ"++np.s!Dat); + glass_of_CN np=constCN ("բաժակ"++np.s!Dat); + few_X_short_of_Y np x y={s=np.s!Dat++x.s!Indef!Nom!Pl++y.s!Indef!Nom!Sg++"չի բավականացնում"}; + timeunitAdv c u={s=c.s++u.s};timeunitRange a b u={s=a.s++b.s++u.s}; + timeHour h={s="ժամը"++h.s};timeHourMinute h m={s="ժամը"++h.s++m.s}; + weekdayPunctualAdv d={s=d.s};weekdayHabitualAdv d={s="ամեն"++d.s};weekdayLastAdv d={s="անցյալ"++d.s}; + weekdayNextAdv d={s="հաջորդ"++d.s};monthAdv m={s=m.s};yearAdv y={s=y.s++"թվականին"}; + dayMonthAdv d m={s=d.s++m.s};monthYearAdv m y={s=m.s++y.s};dayMonthYearAdv d m y={s=d.s++m.s++y.s}; + intYear i={s=i.s};intMonthday i={s=i.s};InLanguage l={s=l.s++"երեն"}; + weekdayN d=lin N (invarNoun d.s);monthN m=lin N (invarNoun m.s);weekdayPN d={s=d.s};monthPN m={s=m.s}; + languageNP l={s=\\_=>l.s;a={n=Sg;p=P3}};languageCN l=constCN l.s; + oneHour={s="մեկ"};twoHour={s="երկու"};threeHour={s="երեք"};fourHour={s="չորս"};fiveHour={s="հինգ"}; + sixHour={s="վեց"};sevenHour={s="յոթ"};eightHour={s="ութ"};nineHour={s="ինը"};tenHour={s="տասը"}; + elevenHour={s="տասնմեկ"};twelveHour={s="տասներկու"}; + thirteenHour={s="տասներեք"};fourteenHour={s="տասնչորս"};fifteenHour={s="տասնհինգ"}; + sixteenHour={s="տասնվեց"};seventeenHour={s="տասնյոթ"};eighteenHour={s="տասնութ"}; + nineteenHour={s="տասնինը"};twentyHour={s="քսան"};twentyOneHour={s="քսանմեկ"}; + twentyTwoHour={s="քսաներկու"};twentyThreeHour={s="քսաներեք"};twentyFourHour={s="քսանչորս"}; + second_Timeunit={s="վայրկյան"};minute_Timeunit={s="րոպե"};hour_Timeunit={s="ժամ"};day_Timeunit={s="օր"}; + week_Timeunit={s="շաբաթ"};month_Timeunit={s="ամիս"};year_Timeunit={s="տարի"}; + monday_Weekday={s="երկուշաբթի"};tuesday_Weekday={s="երեքշաբթի"};wednesday_Weekday={s="չորեքշաբթի"}; + thursday_Weekday={s="հինգշաբթի"};friday_Weekday={s="ուրբաթ"};saturday_Weekday={s="շաբաթ"};sunday_Weekday={s="կիրակի"}; + january_Month={s="հունվար"};february_Month={s="փետրվար"};march_Month={s="մարտ"};april_Month={s="ապրիլ"}; + may_Month={s="մայիս"};june_Month={s="հունիս"};july_Month={s="հուլիս"};august_Month={s="օգոստոս"}; + september_Month={s="սեպտեմբեր"};october_Month={s="հոկտեմբեր"};november_Month={s="նոյեմբեր"};december_Month={s="դեկտեմբեր"}; + afrikaans_Language={s="աֆրիկաանս"};amharic_Language={s="ամհարերեն"};arabic_Language={s="արաբերեն"}; + bulgarian_Language={s="բուլղարերեն"};catalan_Language={s="կատալաներեն"};chinese_Language={s="չինարեն"}; + danish_Language={s="դանիերեն"};dutch_Language={s="հոլանդերեն"};english_Language={s="անգլերեն"}; + estonian_Language={s="էստոներեն"};finnish_Language={s="ֆիններեն"};french_Language={s="ֆրանսերեն"}; + german_Language={s="գերմաներեն"};greek_Language={s="հունարեն"};hebrew_Language={s="եբրայերեն"}; + hindi_Language={s="հինդի"};italian_Language={s="իտալերեն"};japanese_Language={s="ճապոներեն"}; + latin_Language={s="լատիներեն"};latvian_Language={s="լատվիերեն"};maltese_Language={s="մալթերեն"}; + nepali_Language={s="նեպալերեն"};norwegian_Language={s="նորվեգերեն"};persian_Language={s="պարսկերեն"}; + polish_Language={s="լեհերեն"};punjabi_Language={s="փենջաբերեն"};romanian_Language={s="ռումիներեն"}; + russian_Language={s="ռուսերեն"};sindhi_Language={s="սինդհի"};spanish_Language={s="իսպաներեն"}; + swahili_Language={s="սուահիլի"};swedish_Language={s="շվեդերեն"};thai_Language={s="թայերեն"}; + turkish_Language={s="թուրքերեն"};urdu_Language={s="ուրդու"}; +} diff --git a/src/armenian/ExtendHye.gf b/src/armenian/ExtendHye.gf new file mode 100644 index 00000000..51ed340e --- /dev/null +++ b/src/armenian/ExtendHye.gf @@ -0,0 +1,116 @@ +--# -path=.:../abstract:../common:prelude + +concrete ExtendHye of Extend = + CatHye ** ExtendFunctor - [ + VPS, ListVPS, VPI, ListVPI, + ListComp, ListImp, + RNP, RNPList, + GenModNP, EmptyRelSlash, + MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS, SQuestVPS, QuestVPS, RelVPS, + ExistS, ExistNPQS, ExistIPQS, + MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV, + PresPartAP, EmbedPresPart, PastPartAP, PastPartAgentAP, + PassVPSlash, PassAgentVPSlash, ProgrVPSlash, ComplBareVS, + ReflPron, ReflPoss, PredetRNP, AdvRNP, AdvRVP, AdvRAP, PossPronRNP, + Base_rr_RNP, Base_nr_RNP, Base_rn_RNP, Cons_rr_RNP, Cons_nr_RNP, ConjRNP, + CompoundN, CompoundAP, GerundCN, GerundNP, GerundAdv, ByVP, ApposNP, + PositAdVAdj, UttVPShort, ComplSlashPartLast, + UseDAPMasc, UseDAPFem, UseDAP, + DetNPMasc, DetNPFem, PredAPVP, SubjRelNP, + BaseComp, ConsComp, ConjComp, BaseImp, ConsImp, ConjImp, + TPastSimple + ] with (Grammar = GrammarHye) ** + open Prelude, ResHye, ParadigmsHye, (R = ParamX) in { + +lincat + VPS = {s : Str} ; [VPS] = {s1,s2 : Str} ; + VPI = {s : Str} ; [VPI] = {s1,s2 : Str} ; + [Comp] = {s1,s2 : Str} ; [Imp] = {s1,s2 : Str} ; + RNP = {s : Case => Str} ; RNPList = {s : Case => Str} ; + +oper + extToVP : Verb -> VP = \v -> lin VP {s=v.s;conditional=v.conditional;converb=v.converb; + imperative=v.imperative;passive=v.passive;past=v.past;participle=v.participle; + subjunctive=v.subjunctive} ; + extAddVP : VP -> Str -> VP = \v,x -> lin VP {s=v.s ++ 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; + past=\\p,n=>v.past!p!n++x;participle=\\p=>v.participle!p++x; + subjunctive=\\a,p,n=>v.subjunctive!a!p!n++x} ; + 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} ; + 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} ; + ExistS t p np = {s=np.s!Nom++"կա"} ; + ExistNPQS t p np = {s=np.s!Nom++"կա՞"} ; + ExistIPQS t p ip = {s=ip.s++"կա՞"} ; + + MkVPI vp = {s=vp.s} ; + BaseVPI x y = {s1=x.s;s2=y.s} ; + ConsVPI x xs = {s1=x.s;s2=xs.s1++","++xs.s2} ; + ConjVPI c xs = {s=xs.s1++c.s++xs.s2} ; + ComplVPIVV vv vpi = extAddVP (extToVP vv) vpi.s ; + + 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) ; + ProgrVPSlash slash = slash ; + ComplBareVS vs s = extAddVP (extToVP vs) s.s ; + + ReflPron = refl ; + ReflPoss num cn = {s=\\c=>"իր"++cn.s!Indef!c!num.n} ; + PredetRNP pred r = {s=\\c=>pred.s++r.s!c} ; + AdvRNP np prep r = {s=\\c=>np.s!c++prep.s++r.s!prep.c} ; + AdvRVP vp prep r = extAddVP vp (prep.s++r.s!prep.c) ; + AdvRAP ap prep r = {s=\\sp,c,n=>ap.s!sp!c!n++prep.s++r.s!prep.c;isPre=ap.isPre} ; + PossPronRNP pron num cn r = {s=\\c=>pron.empty++cn.s!Indef!c!num.n++r.s!Dat;a={n=num.n;p=P3}} ; + Base_rr_RNP x y = {s=\\c=>x.s!c++y.s!c} ; + Base_nr_RNP x y = {s=\\c=>x.s!c++y.s!c} ; + Base_rn_RNP x y = {s=\\c=>x.s!c++y.s!c} ; + Cons_rr_RNP x xs = {s=\\c=>x.s!c++xs.s!c} ; + Cons_nr_RNP x xs = {s=\\c=>x.s!c++xs.s!c} ; + ConjRNP conj xs = {s=\\c=>conj.s++xs.s!c} ; + + CompoundN n1 n2 = lin N {s=\\c,n=>n1.s!Nom!Sg++n2.s!c!n;def_dat=\\n=>n1.s!Nom!Sg++n2.def_dat!n; + def_nom=\\n=>n1.s!Nom!Sg++n2.def_nom!n;poss1=\\c,n=>n1.s!Nom!Sg++n2.poss1!c!n;poss2=\\c,n=>n1.s!Nom!Sg++n2.poss2!c!n} ; + CompoundAP n a = {s=\\sp,c,num=>n.s!Nom!Sg++a.s!c!num;isPre=True} ; + GerundCN vp = {s=\\_,_,_=>vp.s} ; + GerundNP vp = {s=\\_=>vp.s;a={n=Sg;p=P3}} ; + GerundAdv vp = {s=vp.s} ; + ByVP vp = {s=vp.s} ; + ApposNP np app = {s=\\c=>np.s!c++","++app.s!Nom;a=np.a} ; + PositAdVAdj a = {s=a.s!Instr!Sg} ; + UttVPShort vp = {s=vp.s} ; + ComplSlashPartLast slash np = extAddVP (extToVP slash) (slash.c2.s++np.s!slash.c2.c) ; + UseDAPMasc dap = {s=\\_=>dap.s;a={n=Sg;p=P3}} ; + UseDAPFem dap = {s=\\_=>dap.s;a={n=Sg;p=P3}} ; + UseDAP dap = {s=\\_=>dap.s;a={n=Sg;p=P3}} ; + DetNPMasc = variants {} ; + DetNPFem = variants {} ; + PredAPVP = variants {} ; + SubjRelNP = variants {} ; + + BaseComp x y = {s1=x.s;s2=y.s} ; + 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} ; + TPastSimple = {s=[];t=R.Past} ; +} diff --git a/src/armenian/GrammarHye.gf b/src/armenian/GrammarHye.gf index 2a7211a2..bfeb3900 100644 --- a/src/armenian/GrammarHye.gf +++ b/src/armenian/GrammarHye.gf @@ -1,10 +1,16 @@ concrete GrammarHye of Grammar = - TenseX, - PhraseHye, NounHye, VerbHye, AdjectiveHye, AdverbHye, + NumeralHye, SentenceHye, - StructuralHye ** { + QuestionHye, + RelativeHye, + ConjunctionHye, + PhraseHye, + StructuralHye, + IdiomHye, + TenseX, + NamesHye ** { } diff --git a/src/armenian/IdiomHye.gf b/src/armenian/IdiomHye.gf new file mode 100644 index 00000000..bdcac3b1 --- /dev/null +++ b/src/armenian/IdiomHye.gf @@ -0,0 +1,21 @@ +concrete IdiomHye of Idiom = CatHye ** open ResHye in { + oper + bareCl : Str -> Cl = \s -> lin Cl { + s=s; negative=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 + } ; + lin + ImpersCl vp = bareCl vp.s ; + GenericCl vp = bareCl ("մարդ" ++ vp.s) ; + 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 ++ "կա՞"} ; + ExistNPAdv np adv = bareCl (adv.s ++ np.s ! Nom ++ "կա") ; + ExistIPAdv ip adv = {s=adv.s ++ ip.s ++ "կա՞"} ; + ProgrVP vp = vp ; + ImpPl1 vp = {s="եկեք" ++ vp.s} ; + ImpP3 np vp = {s="թող" ++ np.s ! Nom ++ vp.s} ; + SelfAdvVP vp = vp ; SelfAdVVP vp = vp ; SelfNP np = np ; +} diff --git a/src/armenian/LangHye.gf b/src/armenian/LangHye.gf index 34f07bae..086d8b9a 100644 --- a/src/armenian/LangHye.gf +++ b/src/armenian/LangHye.gf @@ -2,9 +2,10 @@ concrete LangHye of Lang = GrammarHye, LexiconHye + ,ConstructionHye ,DocumentationHye --# notpresent ** { flags startcat = Phr ; -} \ No newline at end of file +} diff --git a/src/armenian/MorphoHye.gf b/src/armenian/MorphoHye.gf index c5679a23..92e8f8a4 100644 --- a/src/armenian/MorphoHye.gf +++ b/src/armenian/MorphoHye.gf @@ -149,7 +149,7 @@ mkV002 base = Sg => base_1+"ա՛" ; Pl => base_1+"ացե՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => base_1+"ացի" ; @@ -207,7 +207,7 @@ mkV003 base = case base of { base_1+"նել" => lin V { s = base_1+"նել" ; - causative = nonExist ; + causative = base ; --guessed conditional = table { Perfect => table { P1 => table { @@ -349,7 +349,7 @@ mkV004 base = Sg => base_1+"ցի՛ր" ; Pl => base_1+"ցե՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => base_1+"ցա" ; @@ -449,7 +449,7 @@ mkV005 base = Sg => base_1+"րձի՛ր" ; Pl => base_1+"րձե՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => base_1+"րձեցի" ; @@ -549,7 +549,7 @@ mkV006 base = Sg => "երթա՛" ; Pl => "գնացե՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => "գնացի" ; @@ -649,7 +649,7 @@ mkV007 base = Sg => "էթա՛" ; Pl => "գնացե՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => "գնացի" ; @@ -807,7 +807,7 @@ mkV009 base = case base of { "ըլնել" => lin V { s = "ըլնել" ; - causative = nonExist ; + causative = base ; --guessed conditional = table { Perfect => table { P1 => table { @@ -849,7 +849,7 @@ mkV009 base = Sg => "էղի՛ր" ; Pl => "էղե՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => "էղա" ; @@ -949,7 +949,7 @@ mkV010 base = Sg => base_1+"՛" ; Pl => base_1+"ցե՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => base_1+"ցի" ; @@ -1049,7 +1049,7 @@ mkV011 base = Sg => base_1+"ա՛" ; Pl => base_1+"ացէ՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => base_1+"ացի" ; @@ -1307,7 +1307,7 @@ mkV014 base = case base of { base_1+base_2@(?+?)+"նել" => lin V { s = base_1+base_2+"նել" ; - causative = nonExist ; + causative = base ; --guessed conditional = table { Perfect => table { P1 => table { @@ -1449,7 +1449,7 @@ mkV015 base = Sg => base_1+base_2+"ցի՛ր" ; Pl => base_1+base_2+"ցե՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => base_1+base_2+"ցա" ; @@ -1507,7 +1507,7 @@ mkV016 base = case base of { base_1+base_2@(?+?+?+?)+"ել" => lin V { s = base_1+base_2+"ել" ; - causative = nonExist ; + causative = base ; --guessed conditional = table { Perfect => table { P1 => table { @@ -1607,7 +1607,7 @@ mkV017 base = case base of { base_1+base_2@(?+?+?)+"նել" => lin V { s = base_1+base_2+"նել" ; - causative = nonExist ; + causative = base ; --guessed conditional = table { Perfect => table { P1 => table { @@ -1707,7 +1707,7 @@ mkV018 base = case base of { base_1+"ել" => lin V { s = base_1+"ել" ; - causative = nonExist ; + causative = base ; conditional = table { Perfect => table { P1 => table { @@ -1849,7 +1849,7 @@ mkV019 base = Sg => base_1+base_2+"ա՛" ; Pl => base_1+base_2+"ացե՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => base_1+base_2+"ացի" ; @@ -1949,7 +1949,7 @@ mkV020 base = Sg => base_1+"ցի՛ր" ; Pl => base_1+"ցէ՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => base_1+"ցայ" ; @@ -2007,7 +2007,7 @@ mkV021 base = case base of { base_1+base_2@(?+?)+"ել" => lin V { s = base_1+base_2+"ել" ; - causative = nonExist ; + causative = base ; conditional = table { Perfect => table { P1 => table { @@ -2049,7 +2049,7 @@ mkV021 base = Sg => base_1+base_2+"ի՛ր" ; Pl => base_1+base_2+"է՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => base_1+base_2+"եցի" ; @@ -2149,7 +2149,7 @@ mkV022 base = Sg => base_1+"րձի՛ր" ; Pl => base_1+"րձե՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => base_1+"րձա" ; @@ -2246,10 +2246,10 @@ mkV023 base = simultaneous = base_1+"նալիս" } ; imperative = table { - Sg => nonExist ; + Sg => base ; Pl => base_1+"սե՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => base_1+"սա" ; @@ -2346,10 +2346,10 @@ mkV024 base = simultaneous = base_1+"նալիս" } ; imperative = table { - Sg => nonExist ; + Sg => base ; Pl => base_1+"ե՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => base_1+"ա" ; @@ -2407,7 +2407,7 @@ mkV025 base = case base of { base_1+base_2@?+"ել" => lin V { s = base_1+base_2+"ել" ; - causative = nonExist ; + causative = base ; --guessed conditional = table { Perfect => table { P1 => table { @@ -2449,7 +2449,7 @@ mkV025 base = Sg => base_1+"՛"+base_2 ; Pl => base_1+base_2+"ե՛ք" } ; - passive = nonExist ; + passive = base ; --guessed past = table { P1 => table { Sg => base_1+base_2+"եցի" ; @@ -2503,167 +2503,159 @@ mkV025 base = } ; mkN001 : Str -> N ; -mkN001 base = - case base of { - base_1 => lin N - { s = table { - Nom => table { - Sg => base_1 ; - Pl => base_1+"ներ" - } ; - Dat => table { - Sg => base_1+"ի" ; - Pl => base_1+"ների" - } ; - Ablat => table { - Sg => base_1+"ից" ; - Pl => base_1+"ներից" - } ; - Instr => table { - Sg => base_1+"ով" ; - Pl => base_1+"ներով" - } ; - Loc => table { - Sg => base_1+"ում" ; - Pl => base_1+"ներում" - } +mkN001 base = lin N { + s = table { + Nom => table { + Sg => base ; + Pl => base+"ներ" + } ; + Dat => table { + Sg => base+"ի" ; + Pl => base+"ների" + } ; + Ablat => table { + Sg => base+"ից" ; + Pl => base+"ներից" + } ; + Instr => table { + Sg => base+"ով" ; + Pl => base+"ներով" + } ; + Loc => table { + Sg => base+"ում" ; + Pl => base+"ներում" + } + } ; + def_dat = table { + Sg => base+"ին" ; + Pl => base+"ներին" } ; - def_dat = table { - Sg => base_1+"ին" ; - Pl => base_1+"ներին" - } ; - def_nom = table { - Sg => base_1+"ը" ; - Pl => base_1+"ները" - } ; - poss1 = table { - Nom => table { - Sg => base_1+"ս" ; - Pl => base_1+"ներս" - } ; - Dat => table { - Sg => base_1+"իս" ; - Pl => base_1+"ներիս" - } ; - Ablat => table { - Sg => base_1+"իցս" ; - Pl => base_1+"ներիցս" - } ; - Instr => table { - Sg => base_1+"ովս" ; - Pl => base_1+"ներովս" - } ; - Loc => table { - Sg => base_1+"ումս" ; - Pl => base_1+"ներումս" - } - } ; - poss2 = table { - Nom => table { - Sg => base_1+"դ" ; - Pl => base_1+"ներդ" - } ; - Dat => table { - Sg => base_1+"իդ" ; - Pl => base_1+"ներիդ" - } ; - Ablat => table { - Sg => base_1+"իցդ" ; - Pl => base_1+"ներիցդ" - } ; - Instr => table { - Sg => base_1+"ովդ" ; - Pl => base_1+"ներովդ" - } ; - Loc => table { - Sg => base_1+"ումդ" ; - Pl => base_1+"ներումդ" - } - } - }; - _ => error "Can't apply paradigm mkN001" - } ; + def_nom = table { + Sg => base+"ը" ; + Pl => base+"ները" + } ; + poss1 = table { + Nom => table { + Sg => base+"ս" ; + Pl => base+"ներս" + } ; + Dat => table { + Sg => base+"իս" ; + Pl => base+"ներիս" + } ; + Ablat => table { + Sg => base+"իցս" ; + Pl => base+"ներիցս" + } ; + Instr => table { + Sg => base+"ովս" ; + Pl => base+"ներովս" + } ; + Loc => table { + Sg => base+"ումս" ; + Pl => base+"ներումս" + } + } ; + poss2 = table { + Nom => table { + Sg => base+"դ" ; + Pl => base+"ներդ" + } ; + Dat => table { + Sg => base+"իդ" ; + Pl => base+"ներիդ" + } ; + Ablat => table { + Sg => base+"իցդ" ; + Pl => base+"ներիցդ" + } ; + Instr => table { + Sg => base+"ովդ" ; + Pl => base+"ներովդ" + } ; + Loc => table { + Sg => base+"ումդ" ; + Pl => base+"ներումդ" + } + } + }; mkN002 : Str -> N ; -mkN002 base = - case base of { - base_1 => lin N - { s = table { - Nom => table { - Sg => base_1 ; - Pl => base_1+"ներ" - } ; - Dat => table { - Sg => base_1+"յի" ; - Pl => base_1+"ների" - } ; - Ablat => table { - Sg => base_1+"յից" ; - Pl => base_1+"ներից" - } ; - Instr => table { - Sg => base_1+"յով" ; - Pl => base_1+"ներով" - } ; - Loc => table { - Sg => base_1+"յում" ; - Pl => base_1+"ներում" - } +mkN002 base = lin N { + s = table { + Nom => table { + Sg => base ; + Pl => base+"ներ" + } ; + Dat => table { + Sg => base+"յի" ; + Pl => base+"ների" + } ; + Ablat => table { + Sg => base+"յից" ; + Pl => base+"ներից" + } ; + Instr => table { + Sg => base+"յով" ; + Pl => base+"ներով" + } ; + Loc => table { + Sg => base+"յում" ; + Pl => base+"ներում" + } + } ; + def_dat = table { + Sg => base+"յին" ; + Pl => base+"ներին" } ; - def_dat = table { - Sg => base_1+"յին" ; - Pl => base_1+"ներին" - } ; - def_nom = table { - Sg => base_1+"ն" ; - Pl => base_1+"ները" - } ; - poss1 = table { - Nom => table { - Sg => base_1+"ս" ; - Pl => base_1+"ներս" - } ; - Dat => table { - Sg => base_1+"յիս" ; - Pl => base_1+"ներիս" - } ; - Ablat => table { - Sg => base_1+"յիցս" ; - Pl => base_1+"ներիցս" - } ; - Instr => table { - Sg => base_1+"յովս" ; - Pl => base_1+"ներովս" - } ; - Loc => table { - Sg => base_1+"յումս" ; - Pl => base_1+"ներումս" - } - } ; - poss2 = table { - Nom => table { - Sg => base_1+"դ" ; - Pl => base_1+"ներդ" - } ; - Dat => table { - Sg => base_1+"յիդ" ; - Pl => base_1+"ներիդ" - } ; - Ablat => table { - Sg => base_1+"յիցդ" ; - Pl => base_1+"ներիցդ" - } ; - Instr => table { - Sg => base_1+"յովդ" ; - Pl => base_1+"ներովդ" - } ; - Loc => table { - Sg => base_1+"յումդ" ; - Pl => base_1+"ներումդ" - } - } - }; - _ => error "Can't apply paradigm mkN002" + def_nom = table { + Sg => base+"ն" ; + Pl => base+"ները" + } ; + poss1 = table { + Nom => table { + Sg => base+"ս" ; + Pl => base+"ներս" + } ; + Dat => table { + Sg => base+"յիս" ; + Pl => base+"ներիս" + } ; + Ablat => table { + Sg => base+"յիցս" ; + Pl => base+"ներիցս" + } ; + Instr => table { + Sg => base+"յովս" ; + Pl => base+"ներովս" + } ; + Loc => table { + Sg => base+"յումս" ; + Pl => base+"ներումս" + } + } ; + poss2 = table { + Nom => table { + Sg => base+"դ" ; + Pl => base+"ներդ" + } ; + Dat => table { + Sg => base+"յիդ" ; + Pl => base+"ներիդ" + } ; + Ablat => table { + Sg => base+"յիցդ" ; + Pl => base+"ներիցդ" + } ; + Instr => table { + Sg => base+"յովդ" ; + Pl => base+"ներովդ" + } ; + Loc => table { + Sg => base+"յումդ" ; + Pl => base+"ներումդ" + } + } } ; mkN003 : Str -> N ; @@ -2995,85 +2987,81 @@ mkN006 base = } ; mkN007 : Str -> N ; -mkN007 base = - case base of { - base_1 => lin N - { s = table { +mkN007 base = lin N { + s = table { + Nom => table { + Sg => base ; + Pl => base+"եր" + } ; + Dat => table { + Sg => base+"ի" ; + Pl => base+"երի" + } ; + Ablat => table { + Sg => base+"ից" ; + Pl => base+"երից" + } ; + Instr => table { + Sg => base+"ով" ; + Pl => base+"երով" + } ; + Loc => table { + Sg => base+"ում" ; + Pl => base+"երում" + } + } ; + def_dat = table { + Sg => base+"ին" ; + Pl => base+"երին" + } ; + def_nom = table { + Sg => base+"ը" ; + Pl => base+"երը" + } ; + poss1 = table { + Nom => table { + Sg => base+"ս" ; + Pl => base+"երս" + } ; + Dat => table { + Sg => base+"իս" ; + Pl => base+"երիս" + } ; + Ablat => table { + Sg => base+"իցս" ; + Pl => base+"երիցս" + } ; + Instr => table { + Sg => base+"ովս" ; + Pl => base+"երովս" + } ; + Loc => table { + Sg => base+"ումս" ; + Pl => base+"երումս" + } + } ; + poss2 = table { Nom => table { - Sg => base_1 ; - Pl => base_1+"եր" + Sg => base+"դ" ; + Pl => base+"երդ" } ; Dat => table { - Sg => base_1+"ի" ; - Pl => base_1+"երի" + Sg => base+"իդ" ; + Pl => base+"երիդ" } ; Ablat => table { - Sg => base_1+"ից" ; - Pl => base_1+"երից" + Sg => base+"իցդ" ; + Pl => base+"երիցդ" } ; Instr => table { - Sg => base_1+"ով" ; - Pl => base_1+"երով" + Sg => base+"ովդ" ; + Pl => base+"երովդ" } ; Loc => table { - Sg => base_1+"ում" ; - Pl => base_1+"երում" + Sg => base+"ումդ" ; + Pl => base+"երումդ" } - } ; - def_dat = table { - Sg => base_1+"ին" ; - Pl => base_1+"երին" - } ; - def_nom = table { - Sg => base_1+"ը" ; - Pl => base_1+"երը" - } ; - poss1 = table { - Nom => table { - Sg => base_1+"ս" ; - Pl => base_1+"երս" - } ; - Dat => table { - Sg => base_1+"իս" ; - Pl => base_1+"երիս" - } ; - Ablat => table { - Sg => base_1+"իցս" ; - Pl => base_1+"երիցս" - } ; - Instr => table { - Sg => base_1+"ովս" ; - Pl => base_1+"երովս" - } ; - Loc => table { - Sg => base_1+"ումս" ; - Pl => base_1+"երումս" - } - } ; - poss2 = table { - Nom => table { - Sg => base_1+"դ" ; - Pl => base_1+"երդ" - } ; - Dat => table { - Sg => base_1+"իդ" ; - Pl => base_1+"երիդ" - } ; - Ablat => table { - Sg => base_1+"իցդ" ; - Pl => base_1+"երիցդ" - } ; - Instr => table { - Sg => base_1+"ովդ" ; - Pl => base_1+"երովդ" - } ; - Loc => table { - Sg => base_1+"ումդ" ; - Pl => base_1+"երումդ" - } - } - }; - _ => error "Can't apply paradigm mkN007" + } } ; mkN008 : Str -> N ; @@ -3344,8 +3332,8 @@ mkN011 base = Pl => base_1+"ե"+base_2+"ներով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -3374,8 +3362,8 @@ mkN011 base = Pl => base_1+"ե"+base_2+"ներովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -3396,8 +3384,8 @@ mkN011 base = Pl => base_1+"ե"+base_2+"ներովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -3575,75 +3563,75 @@ mkN014 base = { s = table { Nom => table { Sg => base_1+"ի"+base_2 ; - Pl => nonExist + Pl => base --guessed } ; Dat => table { Sg => base_1+base_2+"վա" ; - Pl => nonExist + Pl => base --guessed } ; Ablat => table { Sg => base_1+base_2+"վանից" ; - Pl => nonExist + Pl => base --guessed } ; Instr => table { Sg => base_1+base_2+"ով" ; - Pl => nonExist + Pl => base --guessed } ; Loc => table { Sg => base_1+base_2+"ում" ; - Pl => nonExist + Pl => base --guessed } } ; def_dat = table { Sg => base_1+base_2+"վան" ; - Pl => nonExist + Pl => base --guessed } ; def_nom = table { Sg => base_1+"ի"+base_2+"ը" ; - Pl => nonExist + Pl => base --guessed } ; poss1 = table { Nom => table { Sg => base_1+"ի"+base_2+"ս" ; - Pl => nonExist + Pl => base --guessed } ; Dat => table { Sg => base_1+base_2+"վաս" ; - Pl => nonExist + Pl => base --guessed } ; Ablat => table { Sg => base_1+base_2+"վանիցս" ; - Pl => nonExist + Pl => base --guessed } ; Instr => table { Sg => base_1+base_2+"ովս" ; - Pl => nonExist + Pl => base --guessed } ; Loc => table { Sg => base_1+base_2+"ումս" ; - Pl => nonExist + Pl => base --guessed } } ; poss2 = table { Nom => table { Sg => base_1+"ի"+base_2+"դ" ; - Pl => nonExist + Pl => base --guessed } ; Dat => table { Sg => base_1+base_2+"վադ" ; - Pl => nonExist + Pl => base --guessed } ; Ablat => table { Sg => base_1+base_2+"վանիցդ" ; - Pl => nonExist + Pl => base --guessed } ; Instr => table { Sg => base_1+base_2+"ովդ" ; - Pl => nonExist + Pl => base --guessed } ; Loc => table { Sg => base_1+base_2+"ումդ" ; - Pl => nonExist + Pl => base --guessed } } }; @@ -3733,249 +3721,237 @@ mkN015 base = } ; mkN016 : Str -> N ; -mkN016 base = - case base of { - base_1 => lin N - { s = table { - Nom => table { - Sg => base_1 ; - Pl => nonExist - } ; - Dat => table { - Sg => base_1+"վա" ; - Pl => nonExist - } ; - Ablat => table { - Sg => base_1+"վանից" ; - Pl => base_1+"ներից" --guessed - } ; - Instr => table { - Sg => base_1+"ով" ; - Pl => nonExist - } ; - Loc => table { - Sg => base_1+"ում" ; - Pl => nonExist - } +mkN016 base = lin N { + s = table { + Nom => table { + Sg => base ; + Pl => base + } ; + Dat => table { + Sg => base+"վա" ; + Pl => base + } ; + Ablat => table { + Sg => base+"վանից" ; + Pl => base+"ներից" --guessed + } ; + Instr => table { + Sg => base+"ով" ; + Pl => base + } ; + Loc => table { + Sg => base+"ում" ; + Pl => base + } + } ; + def_dat = table { + Sg => base+"վան" ; + Pl => base } ; - def_dat = table { - Sg => base_1+"վան" ; - Pl => nonExist - } ; - def_nom = table { - Sg => base_1+"ը" ; - Pl => nonExist - } ; - poss1 = table { - Nom => table { - Sg => base_1+"ս" ; - Pl => nonExist - } ; - Dat => table { - Sg => base_1+"վաս" ; - Pl => nonExist - } ; - Ablat => table { - Sg => base_1+"վանիցս" ; - Pl => base_1+"ներիցս" --guessed - } ; - Instr => table { - Sg => base_1+"ովս" ; - Pl => nonExist - } ; - Loc => table { - Sg => base_1+"ումս" ; - Pl => nonExist - } - } ; - poss2 = table { - Nom => table { - Sg => base_1+"դ" ; - Pl => base_1+"ներդ" --guessed - } ; - Dat => table { - Sg => base_1+"վադ" ; - Pl => nonExist - } ; - Ablat => table { - Sg => base_1+"վանիցդ" ; - Pl => nonExist - } ; - Instr => table { - Sg => base_1+"ովդ" ; - Pl => nonExist - } ; - Loc => table { - Sg => base_1+"ումդ" ; - Pl => nonExist - } - } - }; - _ => error "Can't apply paradigm mkN016" + def_nom = table { + Sg => base+"ը" ; + Pl => base + } ; + poss1 = table { + Nom => table { + Sg => base+"ս" ; + Pl => base + } ; + Dat => table { + Sg => base+"վաս" ; + Pl => base + } ; + Ablat => table { + Sg => base+"վանիցս" ; + Pl => base+"ներիցս" --guessed + } ; + Instr => table { + Sg => base+"ովս" ; + Pl => base + } ; + Loc => table { + Sg => base+"ումս" ; + Pl => base + } + } ; + poss2 = table { + Nom => table { + Sg => base+"դ" ; + Pl => base+"ներդ" --guessed + } ; + Dat => table { + Sg => base+"վադ" ; + Pl => base + } ; + Ablat => table { + Sg => base+"վանիցդ" ; + Pl => base + } ; + Instr => table { + Sg => base+"ովդ" ; + Pl => base + } ; + Loc => table { + Sg => base+"ումդ" ; + Pl => base + } + } } ; mkN017 : Str -> N ; -mkN017 base = - case base of { - base_1 => lin N - { s = table { - Nom => table { - Sg => base_1 ; - Pl => base_1+"եր" - } ; - Dat => table { - Sg => base_1+"ի" ; - Pl => base_1+"երի" - } ; - Ablat => table { - Sg => base_1+"ից" ; - Pl => base_1+"երից" - } ; - Instr => table { - Sg => base_1+"ով" ; - Pl => base_1+"երով" - } ; - Loc => table { - Sg => base_1+"ում" ; - Pl => base_1+"երում" - } +mkN017 base = lin N { + s = table { + Nom => table { + Sg => base ; + Pl => base+"եր" + } ; + Dat => table { + Sg => base+"ի" ; + Pl => base+"երի" + } ; + Ablat => table { + Sg => base+"ից" ; + Pl => base+"երից" + } ; + Instr => table { + Sg => base+"ով" ; + Pl => base+"երով" + } ; + Loc => table { + Sg => base+"ում" ; + Pl => base+"երում" + } + } ; + def_dat = table { + Sg => base+"ին" ; + Pl => base+"երին" } ; - def_dat = table { - Sg => base_1+"ին" ; - Pl => base_1+"երին" - } ; - def_nom = table { - Sg => base_1+"ն" ; - Pl => base_1+"երը" - } ; - poss1 = table { - Nom => table { - Sg => base_1+"ս" ; - Pl => base_1+"երս" - } ; - Dat => table { - Sg => base_1+"իս" ; - Pl => base_1+"երիս" - } ; - Ablat => table { - Sg => base_1+"իցս" ; - Pl => base_1+"երիցս" - } ; - Instr => table { - Sg => base_1+"ովս" ; - Pl => base_1+"երովս" - } ; - Loc => table { - Sg => base_1+"ումս" ; - Pl => base_1+"երումս" - } - } ; - poss2 = table { - Nom => table { - Sg => base_1+"դ" ; - Pl => base_1+"երդ" - } ; - Dat => table { - Sg => base_1+"իդ" ; - Pl => base_1+"երիդ" - } ; - Ablat => table { - Sg => base_1+"իցդ" ; - Pl => base_1+"երիցդ" - } ; - Instr => table { - Sg => base_1+"ովդ" ; - Pl => base_1+"երովդ" - } ; - Loc => table { - Sg => base_1+"ումդ" ; - Pl => base_1+"երումդ" - } - } - }; - _ => error "Can't apply paradigm mkN017" + def_nom = table { + Sg => base+"ն" ; + Pl => base+"երը" + } ; + poss1 = table { + Nom => table { + Sg => base+"ս" ; + Pl => base+"երս" + } ; + Dat => table { + Sg => base+"իս" ; + Pl => base+"երիս" + } ; + Ablat => table { + Sg => base+"իցս" ; + Pl => base+"երիցս" + } ; + Instr => table { + Sg => base+"ովս" ; + Pl => base+"երովս" + } ; + Loc => table { + Sg => base+"ումս" ; + Pl => base+"երումս" + } + } ; + poss2 = table { + Nom => table { + Sg => base+"դ" ; + Pl => base+"երդ" + } ; + Dat => table { + Sg => base+"իդ" ; + Pl => base+"երիդ" + } ; + Ablat => table { + Sg => base+"իցդ" ; + Pl => base+"երիցդ" + } ; + Instr => table { + Sg => base+"ովդ" ; + Pl => base+"երովդ" + } ; + Loc => table { + Sg => base+"ումդ" ; + Pl => base+"երումդ" + } + } } ; mkN018 : Str -> N ; -mkN018 base = - case base of { - base_1 => lin N - { s = table { - Nom => table { - Sg => base_1 ; - Pl => base_1+"ներ" - } ; - Dat => table { - Sg => base_1+"ոջ" ; - Pl => base_1+"ների" - } ; - Ablat => table { - Sg => base_1+"ոջից" ; - Pl => base_1+"ներից" - } ; - Instr => table { - Sg => base_1+"ոջով" ; - Pl => base_1+"ներով" - } ; - Loc => table { - Sg => nonExist ; - Pl => nonExist - } +mkN018 base = lin N { + s = table { + Nom => table { + Sg => base ; + Pl => base+"ներ" + } ; + Dat => table { + Sg => base+"ոջ" ; + Pl => base+"ների" + } ; + Ablat => table { + Sg => base+"ոջից" ; + Pl => base+"ներից" + } ; + Instr => table { + Sg => base+"ոջով" ; + Pl => base+"ներով" + } ; + Loc => table { + Sg => base ; --guessed + Pl => base --guessed + } + } ; + def_dat = table { + Sg => base+"ոջը" ; + Pl => base+"ներին" } ; - def_dat = table { - Sg => base_1+"ոջը" ; - Pl => base_1+"ներին" - } ; - def_nom = table { - Sg => base_1+"ը" ; - Pl => base_1+"ները" - } ; - poss1 = table { - Nom => table { - Sg => base_1+"ս" ; - Pl => base_1+"ներս" - } ; - Dat => table { - Sg => base_1+"ոջս" ; - Pl => base_1+"ներիս" - } ; - Ablat => table { - Sg => base_1+"ոջիցս" ; - Pl => base_1+"ներիցս" - } ; - Instr => table { - Sg => base_1+"ոջովս" ; - Pl => base_1+"ներովս" - } ; - Loc => table { - Sg => nonExist ; - Pl => nonExist - } - } ; - poss2 = table { - Nom => table { - Sg => base_1+"դ" ; - Pl => base_1+"ներդ" - } ; - Dat => table { - Sg => base_1+"ոջդ" ; - Pl => base_1+"ներիդ" - } ; - Ablat => table { - Sg => base_1+"ոջիցդ" ; - Pl => base_1+"ներիցդ" - } ; - Instr => table { - Sg => base_1+"ոջովդ" ; - Pl => base_1+"ներովդ" - } ; - Loc => table { - Sg => nonExist ; - Pl => nonExist - } - } - }; - _ => error "Can't apply paradigm mkN018" + def_nom = table { + Sg => base+"ը" ; + Pl => base+"ները" + } ; + poss1 = table { + Nom => table { + Sg => base+"ս" ; + Pl => base+"ներս" + } ; + Dat => table { + Sg => base+"ոջս" ; + Pl => base+"ներիս" + } ; + Ablat => table { + Sg => base+"ոջիցս" ; + Pl => base+"ներիցս" + } ; + Instr => table { + Sg => base+"ոջովս" ; + Pl => base+"ներովս" + } ; + Loc => table { + Sg => base ; --guessed + Pl => base --guessed + } + } ; + poss2 = table { + Nom => table { + Sg => base+"դ" ; + Pl => base+"ներդ" + } ; + Dat => table { + Sg => base+"ոջդ" ; + Pl => base+"ներիդ" + } ; + Ablat => table { + Sg => base+"ոջիցդ" ; + Pl => base+"ներիցդ" + } ; + Instr => table { + Sg => base+"ոջովդ" ; + Pl => base+"ներովդ" + } ; + Loc => table { + Sg => base ; --guessed + Pl => base --guessed + } + } } ; mkN019 : Str -> N ; @@ -4164,8 +4140,8 @@ mkN021 base = Pl => base_1+"վա"+base_2+"ներով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -4178,46 +4154,46 @@ mkN021 base = } ; poss1 = table { Nom => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } ; Dat => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } ; Ablat => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } ; Instr => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { Nom => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } ; Dat => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } ; Ablat => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } ; Instr => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -4328,8 +4304,8 @@ mkN023 base = Pl => base_1+base_2+"ներով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -4358,8 +4334,8 @@ mkN023 base = Pl => base_1+base_2+"ներովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -4380,8 +4356,8 @@ mkN023 base = Pl => base_1+base_2+"ներովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -4410,8 +4386,8 @@ mkN024 base = Pl => base_1+base_2+base_3+"երով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -4424,46 +4400,46 @@ mkN024 base = } ; poss1 = table { Nom => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } ; Dat => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } ; Ablat => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } ; Instr => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } } ; poss2 = table { Nom => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } ; Dat => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } ; Ablat => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } ; Instr => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -4492,8 +4468,8 @@ mkN025 base = Pl => base_1+base_2+"ւյրերով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } } ; def_dat = table { @@ -4522,8 +4498,8 @@ mkN025 base = Pl => base_1+base_2+"ւյրերովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -4544,8 +4520,8 @@ mkN025 base = Pl => base_1+base_2+"ւյրերովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -4559,11 +4535,11 @@ mkN026 base = { s = table { Nom => table { Sg => base_1 ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+"ան" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+"նից" ; @@ -4571,29 +4547,29 @@ mkN026 base = } ; Instr => table { Sg => base_1+"նով" ; - Pl => nonExist + Pl => base } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { Sg => base_1+"անը" ; - Pl => nonExist + Pl => base } ; def_nom = table { Sg => base_1+"ը" ; - Pl => nonExist + Pl => base } ; poss1 = table { Nom => table { Sg => base_1+"ս" ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+"անս" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+"նիցս" ; @@ -4601,11 +4577,11 @@ mkN026 base = } ; Instr => table { Sg => base_1+"նովս" ; - Pl => nonExist + Pl => base } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -4615,19 +4591,19 @@ mkN026 base = } ; Dat => table { Sg => base_1+"անդ" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+"նիցդ" ; - Pl => nonExist + Pl => base } ; Instr => table { Sg => base_1+"նովդ" ; - Pl => nonExist + Pl => base } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -4656,8 +4632,8 @@ mkN027 base = Pl => base_1+"երով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -4708,8 +4684,8 @@ mkN027 base = Pl => base_1+"երովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -5066,7 +5042,7 @@ mkN032 base = Pl => base_1+"ուններով" } ; Loc => table { - Sg => nonExist ; + Sg => base ; Pl => base_1+"ուններում" } } ; @@ -5096,7 +5072,7 @@ mkN032 base = Pl => base_1+"ուններովս" } ; Loc => table { - Sg => nonExist ; + Sg => base ; Pl => base_1+"ուններումս" } } ; @@ -5118,7 +5094,7 @@ mkN032 base = Pl => base_1+"ուններովդ" } ; Loc => table { - Sg => nonExist ; + Sg => base ; Pl => base_1+"ուններումդ" } } @@ -5148,8 +5124,8 @@ mkN033 base = Pl => base_1+"վերով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -5178,8 +5154,8 @@ mkN033 base = Pl => base_1+"վերովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -5200,8 +5176,8 @@ mkN033 base = Pl => base_1+"վերովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -5230,17 +5206,17 @@ mkN034 base = Pl => base_1+"ա"+base_2+"անցով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { Sg => base_1+base_2+"ոջը" ; - Pl => nonExist + Pl => base } ; def_nom = table { Sg => base_1+"ի"+base_2+"ը" ; - Pl => nonExist + Pl => base } ; poss1 = table { Nom => table { @@ -5260,8 +5236,8 @@ mkN034 base = Pl => base_1+"ա"+base_2+"անցովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -5282,8 +5258,8 @@ mkN034 base = Pl => base_1+"ա"+base_2+"անցովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -5312,8 +5288,8 @@ mkN035 base = Pl => base_1+"ի"+base_2+"ներով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -5342,8 +5318,8 @@ mkN035 base = Pl => base_1+"ի"+base_2+"ներովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -5364,8 +5340,8 @@ mkN035 base = Pl => base_1+"ի"+base_2+"ներովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -5394,8 +5370,8 @@ mkN036 base = Pl => base_1+"այ"+base_2+"երով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -5424,8 +5400,8 @@ mkN036 base = Pl => base_1+"այ"+base_2+"երովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -5446,8 +5422,8 @@ mkN036 base = Pl => base_1+"այ"+base_2+"երովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -5476,8 +5452,8 @@ mkN037 base = Pl => base_1+"ե"+base_2+"երով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -5506,8 +5482,8 @@ mkN037 base = Pl => base_1+"ե"+base_2+"երովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -5528,8 +5504,8 @@ mkN037 base = Pl => base_1+"ե"+base_2+"երովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -5543,75 +5519,75 @@ mkN038 base = { s = table { Nom => table { Sg => base_1+"ու" ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+"վա" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+"վանից" ; - Pl => nonExist + Pl => base } ; Instr => table { Sg => base_1+"ով" ; - Pl => nonExist + Pl => base } ; Loc => table { Sg => base_1+"ում" ; - Pl => nonExist + Pl => base } } ; def_dat = table { Sg => base_1+"վան" ; - Pl => nonExist + Pl => base } ; def_nom = table { Sg => base_1+"ուն" ; - Pl => nonExist + Pl => base } ; poss1 = table { Nom => table { Sg => base_1+"ուս" ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+"վաս" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+"վանիցս" ; - Pl => nonExist + Pl => base } ; Instr => table { Sg => base_1+"ովս" ; - Pl => nonExist + Pl => base } ; Loc => table { Sg => base_1+"ումս" ; - Pl => nonExist + Pl => base } } ; poss2 = table { Nom => table { Sg => base_1+"ուդ" ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+"վադ" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+"վանիցդ" ; - Pl => nonExist + Pl => base } ; Instr => table { Sg => base_1+"ովդ" ; - Pl => nonExist + Pl => base } ; Loc => table { Sg => base_1+"ումդ" ; - Pl => nonExist + Pl => base } } }; @@ -5640,8 +5616,8 @@ mkN039 base = Pl => base_1+base_2+"ւյրներով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -5670,8 +5646,8 @@ mkN039 base = Pl => base_1+base_2+"ւյրներովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -5692,8 +5668,8 @@ mkN039 base = Pl => base_1+base_2+"ւյրներովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -5722,8 +5698,8 @@ mkN040 base = Pl => base_1+"այ"+base_2+"ներով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -5752,8 +5728,8 @@ mkN040 base = Pl => base_1+"այ"+base_2+"ներովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -5774,8 +5750,8 @@ mkN040 base = Pl => base_1+"այ"+base_2+"ներովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -5789,75 +5765,75 @@ mkN041 base = { s = table { Nom => table { Sg => base_1+"ե"+base_2 ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+"ի"+base_2+"ի" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+"ի"+base_2+"ից" ; - Pl => nonExist + Pl => base } ; Instr => table { Sg => base_1+"ի"+base_2+"ով" ; - Pl => nonExist + Pl => base } ; Loc => table { Sg => base_1+"ի"+base_2+"ում" ; - Pl => nonExist + Pl => base } } ; def_dat = table { Sg => base_1+"ի"+base_2+"ին" ; - Pl => nonExist + Pl => base } ; def_nom = table { Sg => base_1+"ե"+base_2+"ը" ; - Pl => nonExist + Pl => base } ; poss1 = table { Nom => table { Sg => base_1+"ե"+base_2+"ս" ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+"ի"+base_2+"իս" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+"ի"+base_2+"իցս" ; - Pl => nonExist + Pl => base } ; Instr => table { Sg => base_1+"ի"+base_2+"ովս" ; - Pl => nonExist + Pl => base } ; Loc => table { Sg => base_1+"ի"+base_2+"ումս" ; - Pl => nonExist + Pl => base } } ; poss2 = table { Nom => table { Sg => base_1+"ե"+base_2+"դ" ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+"ի"+base_2+"իդ" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+"ի"+base_2+"իցդ" ; - Pl => nonExist + Pl => base } ; Instr => table { Sg => base_1+"ի"+base_2+"ովդ" ; - Pl => nonExist + Pl => base } ; Loc => table { Sg => base_1+"ի"+base_2+"ումդ" ; - Pl => nonExist + Pl => base } } }; @@ -5886,8 +5862,8 @@ mkN042 base = Pl => base_1+"իներով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -5916,8 +5892,8 @@ mkN042 base = Pl => base_1+"իներովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -5938,8 +5914,8 @@ mkN042 base = Pl => base_1+"իներովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -5968,8 +5944,8 @@ mkN043 base = Pl => base_1+"ե"+base_2+"երով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -5998,8 +5974,8 @@ mkN043 base = Pl => base_1+"ե"+base_2+"երովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -6020,8 +5996,8 @@ mkN043 base = Pl => base_1+"ե"+base_2+"երովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -6035,75 +6011,75 @@ mkN044 base = { s = table { Nom => table { Sg => base_1+"ու"+base_2 ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+base_2+"ոջ" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+base_2+"ոջից" ; - Pl => nonExist + Pl => base } ; Instr => table { Sg => base_1+base_2+"ոջով" ; - Pl => nonExist + Pl => base } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { Sg => base_1+base_2+"ոջը" ; - Pl => nonExist + Pl => base } ; def_nom = table { Sg => base_1+"ու"+base_2+"ը" ; - Pl => nonExist + Pl => base } ; poss1 = table { Nom => table { Sg => base_1+"ու"+base_2+"ս" ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+base_2+"ոջս" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+base_2+"ոջիցս" ; - Pl => nonExist + Pl => base } ; Instr => table { Sg => base_1+base_2+"ոջովս" ; - Pl => nonExist + Pl => base } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { Nom => table { Sg => base_1+"ու"+base_2+"դ" ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+base_2+"ոջդ" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+base_2+"ոջիցդ" ; - Pl => nonExist + Pl => base } ; Instr => table { Sg => base_1+base_2+"ոջովդ" ; - Pl => nonExist + Pl => base } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -6117,75 +6093,75 @@ mkN045 base = { s = table { Nom => table { Sg => base_1+"ը" ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+"վա" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+"վանից" ; - Pl => nonExist + Pl => base } ; Instr => table { Sg => base_1+"ով" ; - Pl => nonExist + Pl => base } ; Loc => table { Sg => base_1+"ում" ; - Pl => nonExist + Pl => base } } ; def_dat = table { Sg => base_1+"վան" ; - Pl => nonExist + Pl => base } ; def_nom = table { Sg => base_1+"ը" ; - Pl => nonExist + Pl => base } ; poss1 = table { Nom => table { Sg => base_1+"ըս" ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+"վաս" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+"վանիցս" ; - Pl => nonExist + Pl => base } ; Instr => table { Sg => base_1+"ովս" ; - Pl => nonExist + Pl => base } ; Loc => table { Sg => base_1+"ումս" ; - Pl => nonExist + Pl => base } } ; poss2 = table { Nom => table { Sg => base_1+"ըդ" ; - Pl => nonExist + Pl => base } ; Dat => table { Sg => base_1+"վադ" ; - Pl => nonExist + Pl => base } ; Ablat => table { Sg => base_1+"վանիցդ" ; - Pl => nonExist + Pl => base } ; Instr => table { Sg => base_1+"ովդ" ; - Pl => nonExist + Pl => base } ; Loc => table { Sg => base_1+"ումդ" ; - Pl => nonExist + Pl => base } } }; @@ -6214,8 +6190,8 @@ mkN046 base = Pl => base_1+"ա"+base_2+"անցով" --guessed } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -6244,8 +6220,8 @@ mkN046 base = Pl => base_1+"ա"+base_2+"անցովս" --guessed } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -6266,8 +6242,8 @@ mkN046 base = Pl => base_1+"ա"+base_2+"անցովդ" --guessed } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -6296,17 +6272,17 @@ mkN047 base = Pl => base_1+"կանցով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { Sg => base_1+"ուն" ; - Pl => nonExist + Pl => base } ; def_nom = table { Sg => base_1+"ը" ; - Pl => nonExist + Pl => base } ; poss1 = table { Nom => table { @@ -6326,8 +6302,8 @@ mkN047 base = Pl => base_1+"կանցովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -6348,8 +6324,8 @@ mkN047 base = Pl => base_1+"կանցովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -6460,8 +6436,8 @@ mkN049 base = Pl => base_1+"ի"+base_2+"ներով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; def_dat = table { @@ -6490,8 +6466,8 @@ mkN049 base = Pl => base_1+"ի"+base_2+"ներովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } ; poss2 = table { @@ -6512,8 +6488,8 @@ mkN049 base = Pl => base_1+"ի"+base_2+"ներովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; --guessed + Pl => base --guessed } } }; @@ -6521,167 +6497,159 @@ mkN049 base = } ; mkA001 : Str -> A ; -mkA001 base = - case base of { - base_1 => lin A - { s = table { - Nom => table { - Sg => base_1 ; - Pl => base_1+"ներ" - } ; - Dat => table { - Sg => base_1+"ի" ; - Pl => base_1+"ների" - } ; - Ablat => table { - Sg => base_1+"ից" ; - Pl => base_1+"ներից" - } ; - Instr => table { - Sg => base_1+"ով" ; - Pl => base_1+"ներով" - } ; - Loc => table { - Sg => base_1+"ում" ; - Pl => base_1+"ներում" - } +mkA001 base = lin A { + s = table { + Nom => table { + Sg => base ; + Pl => base+"ներ" + } ; + Dat => table { + Sg => base+"ի" ; + Pl => base+"ների" + } ; + Ablat => table { + Sg => base+"ից" ; + Pl => base+"ներից" + } ; + Instr => table { + Sg => base+"ով" ; + Pl => base+"ներով" + } ; + Loc => table { + Sg => base+"ում" ; + Pl => base+"ներում" + } + } ; + def_dat = table { + Sg => base+"ին" ; + Pl => base+"ներին" } ; - def_dat = table { - Sg => base_1+"ին" ; - Pl => base_1+"ներին" - } ; - def_nom = table { - Sg => base_1+"ը" ; - Pl => base_1+"ները" - } ; - poss1 = table { - Nom => table { - Sg => base_1+"ս" ; - Pl => base_1+"ներս" - } ; - Dat => table { - Sg => base_1+"իս" ; - Pl => base_1+"ներիս" - } ; - Ablat => table { - Sg => base_1+"իցս" ; - Pl => base_1+"ներիցս" - } ; - Instr => table { - Sg => base_1+"ովս" ; - Pl => base_1+"ներովս" - } ; - Loc => table { - Sg => base_1+"ումս" ; - Pl => base_1+"ներումս" - } - } ; - poss2 = table { - Nom => table { - Sg => base_1+"դ" ; - Pl => base_1+"ներդ" - } ; - Dat => table { - Sg => base_1+"իդ" ; - Pl => base_1+"ներիդ" - } ; - Ablat => table { - Sg => base_1+"իցդ" ; - Pl => base_1+"ներիցդ" - } ; - Instr => table { - Sg => base_1+"ովդ" ; - Pl => base_1+"ներովդ" - } ; - Loc => table { - Sg => base_1+"ումդ" ; - Pl => base_1+"ներումդ" - } - } - }; - _ => error "Can't apply paradigm mkA001" + def_nom = table { + Sg => base+"ը" ; + Pl => base+"ները" + } ; + poss1 = table { + Nom => table { + Sg => base+"ս" ; + Pl => base+"ներս" + } ; + Dat => table { + Sg => base+"իս" ; + Pl => base+"ներիս" + } ; + Ablat => table { + Sg => base+"իցս" ; + Pl => base+"ներիցս" + } ; + Instr => table { + Sg => base+"ովս" ; + Pl => base+"ներովս" + } ; + Loc => table { + Sg => base+"ումս" ; + Pl => base+"ներումս" + } + } ; + poss2 = table { + Nom => table { + Sg => base+"դ" ; + Pl => base+"ներդ" + } ; + Dat => table { + Sg => base+"իդ" ; + Pl => base+"ներիդ" + } ; + Ablat => table { + Sg => base+"իցդ" ; + Pl => base+"ներիցդ" + } ; + Instr => table { + Sg => base+"ովդ" ; + Pl => base+"ներովդ" + } ; + Loc => table { + Sg => base+"ումդ" ; + Pl => base+"ներումդ" + } + } } ; mkA002 : Str -> A ; -mkA002 base = - case base of { - base_1 => lin A - { s = table { - Nom => table { - Sg => base_1 ; - Pl => base_1+"ներ" - } ; - Dat => table { - Sg => base_1+"ի" ; - Pl => base_1+"ների" - } ; - Ablat => table { - Sg => base_1+"ից" ; - Pl => base_1+"ներից" - } ; - Instr => table { - Sg => base_1+"ով" ; - Pl => base_1+"ներով" - } ; - Loc => table { - Sg => base_1+"ում" ; - Pl => base_1+"ներում" - } +mkA002 base = lin A { + s = table { + Nom => table { + Sg => base ; + Pl => base+"ներ" + } ; + Dat => table { + Sg => base+"ի" ; + Pl => base+"ների" + } ; + Ablat => table { + Sg => base+"ից" ; + Pl => base+"ներից" + } ; + Instr => table { + Sg => base+"ով" ; + Pl => base+"ներով" + } ; + Loc => table { + Sg => base+"ում" ; + Pl => base+"ներում" + } + } ; + def_dat = table { + Sg => base+"ին" ; + Pl => base+"ներին" } ; - def_dat = table { - Sg => base_1+"ին" ; - Pl => base_1+"ներին" - } ; - def_nom = table { - Sg => base_1+"ն" ; - Pl => base_1+"ները" - } ; - poss1 = table { - Nom => table { - Sg => base_1+"ս" ; - Pl => base_1+"ներս" - } ; - Dat => table { - Sg => base_1+"իս" ; - Pl => base_1+"ներիս" - } ; - Ablat => table { - Sg => base_1+"իցս" ; - Pl => base_1+"ներիցս" - } ; - Instr => table { - Sg => base_1+"ովս" ; - Pl => base_1+"ներովս" - } ; - Loc => table { - Sg => base_1+"ումս" ; - Pl => base_1+"ներումս" - } - } ; - poss2 = table { - Nom => table { - Sg => base_1+"դ" ; - Pl => base_1+"ներդ" - } ; - Dat => table { - Sg => base_1+"իդ" ; - Pl => base_1+"ներիդ" - } ; - Ablat => table { - Sg => base_1+"իցդ" ; - Pl => base_1+"ներիցդ" - } ; - Instr => table { - Sg => base_1+"ովդ" ; - Pl => base_1+"ներովդ" - } ; - Loc => table { - Sg => base_1+"ումդ" ; - Pl => base_1+"ներումդ" - } - } - }; - _ => error "Can't apply paradigm mkA002" + def_nom = table { + Sg => base+"ն" ; + Pl => base+"ները" + } ; + poss1 = table { + Nom => table { + Sg => base+"ս" ; + Pl => base+"ներս" + } ; + Dat => table { + Sg => base+"իս" ; + Pl => base+"ներիս" + } ; + Ablat => table { + Sg => base+"իցս" ; + Pl => base+"ներիցս" + } ; + Instr => table { + Sg => base+"ովս" ; + Pl => base+"ներովս" + } ; + Loc => table { + Sg => base+"ումս" ; + Pl => base+"ներումս" + } + } ; + poss2 = table { + Nom => table { + Sg => base+"դ" ; + Pl => base+"ներդ" + } ; + Dat => table { + Sg => base+"իդ" ; + Pl => base+"ներիդ" + } ; + Ablat => table { + Sg => base+"իցդ" ; + Pl => base+"ներիցդ" + } ; + Instr => table { + Sg => base+"ովդ" ; + Pl => base+"ներովդ" + } ; + Loc => table { + Sg => base+"ումդ" ; + Pl => base+"ներումդ" + } + } } ; mkA003 : Str -> A ; @@ -6767,167 +6735,159 @@ mkA003 base = } ; mkA004 : Str -> A ; -mkA004 base = - case base of { - base_1 => lin A - { s = table { - Nom => table { - Sg => base_1 ; - Pl => base_1+"ներ" - } ; - Dat => table { - Sg => base_1+"յի" ; - Pl => base_1+"ների" - } ; - Ablat => table { - Sg => base_1+"յից" ; - Pl => base_1+"ներից" - } ; - Instr => table { - Sg => base_1+"յով" ; - Pl => base_1+"ներով" - } ; - Loc => table { - Sg => base_1+"յում" ; - Pl => base_1+"ներում" - } +mkA004 base = lin A { + s = table { + Nom => table { + Sg => base ; + Pl => base+"ներ" + } ; + Dat => table { + Sg => base+"յի" ; + Pl => base+"ների" + } ; + Ablat => table { + Sg => base+"յից" ; + Pl => base+"ներից" + } ; + Instr => table { + Sg => base+"յով" ; + Pl => base+"ներով" + } ; + Loc => table { + Sg => base+"յում" ; + Pl => base+"ներում" + } + } ; + def_dat = table { + Sg => base+"յին" ; + Pl => base+"ներին" } ; - def_dat = table { - Sg => base_1+"յին" ; - Pl => base_1+"ներին" - } ; - def_nom = table { - Sg => base_1+"ն" ; - Pl => base_1+"ները" - } ; - poss1 = table { - Nom => table { - Sg => base_1+"ս" ; - Pl => base_1+"ներս" - } ; - Dat => table { - Sg => base_1+"յիս" ; - Pl => base_1+"ներիս" - } ; - Ablat => table { - Sg => base_1+"յիցս" ; - Pl => base_1+"ներիցս" - } ; - Instr => table { - Sg => base_1+"յովս" ; - Pl => base_1+"ներովս" - } ; - Loc => table { - Sg => base_1+"յումս" ; - Pl => base_1+"ներումս" - } - } ; - poss2 = table { - Nom => table { - Sg => base_1+"դ" ; - Pl => base_1+"ներդ" - } ; - Dat => table { - Sg => base_1+"յիդ" ; - Pl => base_1+"ներիդ" - } ; - Ablat => table { - Sg => base_1+"յիցդ" ; - Pl => base_1+"ներիցդ" - } ; - Instr => table { - Sg => base_1+"յովդ" ; - Pl => base_1+"ներովդ" - } ; - Loc => table { - Sg => base_1+"յումդ" ; - Pl => base_1+"ներումդ" - } - } - }; - _ => error "Can't apply paradigm mkA004" + def_nom = table { + Sg => base+"ն" ; + Pl => base+"ները" + } ; + poss1 = table { + Nom => table { + Sg => base+"ս" ; + Pl => base+"ներս" + } ; + Dat => table { + Sg => base+"յիս" ; + Pl => base+"ներիս" + } ; + Ablat => table { + Sg => base+"յիցս" ; + Pl => base+"ներիցս" + } ; + Instr => table { + Sg => base+"յովս" ; + Pl => base+"ներովս" + } ; + Loc => table { + Sg => base+"յումս" ; + Pl => base+"ներումս" + } + } ; + poss2 = table { + Nom => table { + Sg => base+"դ" ; + Pl => base+"ներդ" + } ; + Dat => table { + Sg => base+"յիդ" ; + Pl => base+"ներիդ" + } ; + Ablat => table { + Sg => base+"յիցդ" ; + Pl => base+"ներիցդ" + } ; + Instr => table { + Sg => base+"յովդ" ; + Pl => base+"ներովդ" + } ; + Loc => table { + Sg => base+"յումդ" ; + Pl => base+"ներումդ" + } + } } ; mkA005 : Str -> A ; -mkA005 base = - case base of { - base_1 => lin A - { s = table { - Nom => table { - Sg => base_1 ; - Pl => base_1+"եր" - } ; - Dat => table { - Sg => base_1+"ի" ; - Pl => base_1+"երի" - } ; - Ablat => table { - Sg => base_1+"ից" ; - Pl => base_1+"երից" - } ; - Instr => table { - Sg => base_1+"ով" ; - Pl => base_1+"երով" - } ; - Loc => table { - Sg => base_1+"ում" ; - Pl => base_1+"երում" - } +mkA005 base = lin A { + s = table { + Nom => table { + Sg => base ; + Pl => base+"եր" + } ; + Dat => table { + Sg => base+"ի" ; + Pl => base+"երի" + } ; + Ablat => table { + Sg => base+"ից" ; + Pl => base+"երից" + } ; + Instr => table { + Sg => base+"ով" ; + Pl => base+"երով" + } ; + Loc => table { + Sg => base+"ում" ; + Pl => base+"երում" + } + } ; + def_dat = table { + Sg => base+"ին" ; + Pl => base+"երին" } ; - def_dat = table { - Sg => base_1+"ին" ; - Pl => base_1+"երին" - } ; - def_nom = table { - Sg => base_1+"ը" ; - Pl => base_1+"երը" - } ; - poss1 = table { - Nom => table { - Sg => base_1+"ս" ; - Pl => base_1+"երս" - } ; - Dat => table { - Sg => base_1+"իս" ; - Pl => base_1+"երիս" - } ; - Ablat => table { - Sg => base_1+"իցս" ; - Pl => base_1+"երիցս" - } ; - Instr => table { - Sg => base_1+"ովս" ; - Pl => base_1+"երովս" - } ; - Loc => table { - Sg => base_1+"ումս" ; - Pl => base_1+"երումս" - } - } ; - poss2 = table { - Nom => table { - Sg => base_1+"դ" ; - Pl => base_1+"երդ" - } ; - Dat => table { - Sg => base_1+"իդ" ; - Pl => base_1+"երիդ" - } ; - Ablat => table { - Sg => base_1+"իցդ" ; - Pl => base_1+"երիցդ" - } ; - Instr => table { - Sg => base_1+"ովդ" ; - Pl => base_1+"երովդ" - } ; - Loc => table { - Sg => base_1+"ումդ" ; - Pl => base_1+"երումդ" - } - } - }; - _ => error "Can't apply paradigm mkA005" + def_nom = table { + Sg => base+"ը" ; + Pl => base+"երը" + } ; + poss1 = table { + Nom => table { + Sg => base+"ս" ; + Pl => base+"երս" + } ; + Dat => table { + Sg => base+"իս" ; + Pl => base+"երիս" + } ; + Ablat => table { + Sg => base+"իցս" ; + Pl => base+"երիցս" + } ; + Instr => table { + Sg => base+"ովս" ; + Pl => base+"երովս" + } ; + Loc => table { + Sg => base+"ումս" ; + Pl => base+"երումս" + } + } ; + poss2 = table { + Nom => table { + Sg => base+"դ" ; + Pl => base+"երդ" + } ; + Dat => table { + Sg => base+"իդ" ; + Pl => base+"երիդ" + } ; + Ablat => table { + Sg => base+"իցդ" ; + Pl => base+"երիցդ" + } ; + Instr => table { + Sg => base+"ովդ" ; + Pl => base+"երովդ" + } ; + Loc => table { + Sg => base+"ումդ" ; + Pl => base+"երումդ" + } + } } ; mkA006 : Str -> A ; @@ -7034,8 +6994,8 @@ mkA007 base = Pl => base_1+base_2+"ներով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } } ; def_dat = table { @@ -7064,8 +7024,8 @@ mkA007 base = Pl => base_1+base_2+"ներովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } } ; poss2 = table { @@ -7086,8 +7046,8 @@ mkA007 base = Pl => base_1+base_2+"ներովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } } }; @@ -7444,8 +7404,8 @@ mkA012 base = Pl => base_1+"իներով" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } } ; def_dat = table { @@ -7474,8 +7434,8 @@ mkA012 base = Pl => base_1+"իներովս" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } } ; poss2 = table { @@ -7496,11 +7456,11 @@ mkA012 base = Pl => base_1+"իներովդ" } ; Loc => table { - Sg => nonExist ; - Pl => nonExist + Sg => base ; + Pl => base } } }; _ => error "Can't apply paradigm mkA012" } ; -} \ No newline at end of file +} diff --git a/src/armenian/NamesHye.gf b/src/armenian/NamesHye.gf new file mode 100644 index 00000000..74e4779f --- /dev/null +++ b/src/armenian/NamesHye.gf @@ -0,0 +1,12 @@ +concrete NamesHye of Names = CatHye ** open Prelude, ResHye in { +lin + GivenName n = {s=\\_=>n.s;a={n=Sg;p=P3}} ; + MaleSurname n = {s=\\_=>n.s;a={n=Sg;p=P3}} ; + FemaleSurname n = {s=\\_=>n.s;a={n=Sg;p=P3}} ; + PlSurname n = {s=\\_=>n.s;a={n=Pl;p=P3}} ; + FullName n s = {s=\\_=>n.s++s.s;a={n=Sg;p=P3}} ; + UseLN n = {s=\\_=>n.s;a={n=Sg;p=P3}} ; + PlainLN n = {s=\\_=>n.s;a={n=Sg;p=P3}} ; + InLN n = {s=n.s++BIND++"-ում"} ; + AdjLN a n = {s=a.s!Indef!Nom!Sg++n.s} ; +} diff --git a/src/armenian/NounHye.gf b/src/armenian/NounHye.gf index 3d6c639a..1bdc3706 100644 --- a/src/armenian/NounHye.gf +++ b/src/armenian/NounHye.gf @@ -1,4 +1,4 @@ -concrete NounHye of Noun = CatHye ** open ResHye in { +concrete NounHye of Noun = CatHye ** open Prelude, ResHye in { lin AdjCN ap cn = { s = \\sp,c,n => case ap.isPre of { @@ -9,17 +9,70 @@ concrete NounHye of Noun = CatHye ** open ResHye in { lin AdvCN cn adv = { s = \\sp,c,num => adv.s ++ cn.s ! sp ! c ! num } ; + lin AdvNP np adv = {s = \\c => np.s ! c ++ adv.s; a = np.a} ; + 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 DetCN det cn = {s = \\c => det.s ++ cn.s ! det.sp ! c ! det.n; a = {n=det.n; p=P3}} ; lin DetQuant quant num = {s = quant.s ++ num.s; n = num.n; sp=quant.sp} ; - lin IndefArt = {s = "մի"; sp = Indef} ; + lin DetQuantOrd quant num ord = { + s = quant.s ++ num.s ++ ord.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 NumDigits digits = {s = digits.s ! NCard} ; + lin NumDecimal decimal = {s = decimal.s ! NCard} ; + lin NumNumeral numeral = {s = numeral.s ! NCard} ; + lin AdNum adn card = {s = adn.s ++ card.s} ; + lin OrdDigits digits = {s = digits.s ! NOrd} ; + lin OrdNumeral numeral = {s = numeral.s ! NOrd} ; + lin OrdSuperl a = {s = "ամենա" ++ a.s ! Nom ! Sg} ; + lin OrdNumeralSuperl numeral a = {s = numeral.s ! NOrd ++ "ամենա" ++ a.s ! Nom ! Sg} ; lin MassNP cn = { s = \\c => cn.s ! Indef ! c ! Sg; a = {n=Sg; p=P3} } ; + lin ComplN2 n np = { + s = \\sp,c,num => (case n.c2.isPre of { + True => n.c2.s ++ np.s ! n.c2.c; + False => np.s ! n.c2.c ++ n.c2.s + }) ++ + case of { + => n.def_nom ! num; + => n.def_dat ! num; + => n.poss1 ! c ! num; + => n.poss2 ! c ! num; + _ => n.s ! c ! num + } + } ; + lin ComplN3 n np = n ** {c2 = n.c3} ; + lin Use2N3 n = lin N2 {s=n.s;def_dat=n.def_dat;def_nom=n.def_nom; + poss1=n.poss1;poss2=n.poss2;c2=n.c2} ; + lin Use3N3 n = lin N2 {s=n.s;def_dat=n.def_dat;def_nom=n.def_nom; + poss1=n.poss1;poss2=n.poss2;c2=n.c3} ; + lin PossNP cn np = { + s = \\sp,c,num => np.s ! Dat ++ cn.s ! sp ! c ! num + } ; + lin PartNP cn np = { + s = \\sp,c,num => cn.s ! sp ! c ! num ++ np.s ! Ablat + } ; + lin SentCN cn sc = {s = \\sp,c,n => cn.s ! sp ! c ! n ++ sc.s} ; + lin ApposCN cn np = {s = \\sp,c,n => cn.s ! sp ! c ! n ++ np.s ! Nom} ; + lin RelCN cn rs = {s = \\sp,c,n => cn.s ! sp ! c ! n ++ rs.s} ; + lin CountNP det np = {s = \\c => det.s ++ np.s ! c; a = {n=det.n;p=P3}} ; + lin DetDAP det = {s = det.s} ; + lin AdjDAP dap ap = {s = dap.s ++ ap.s ! Indef ! Nom ! Sg} ; + lin QuantityNP decimal mu = { + s = \\_ => case mu.isPre of { + True => mu.s ++ decimal.s ! NCard; + False => decimal.s ! NCard ++ mu.s + }; + a = {n=Pl;p=P3} + } ; lin PossPron pron = {s = pron.empty; sp = Poss pron.a.p} ; lin UseN n = { s = \\sp,c,num => @@ -31,5 +84,5 @@ concrete NounHye of Noun = CatHye ** open ResHye in { _ => n.s ! c ! num } } ; - lin UsePron pron = {s = \\c => pron.s; a=pron.a} ; + lin UsePron pron = {s = pron.s; a=pron.a} ; } diff --git a/src/armenian/NumeralHye.gf b/src/armenian/NumeralHye.gf new file mode 100644 index 00000000..a3b09a1c --- /dev/null +++ b/src/armenian/NumeralHye.gf @@ -0,0 +1,181 @@ +--# -path=.:../abstract:../common:../prelude + +concrete NumeralHye of Numeral = CatHye [Numeral,Digits,Decimal] ** + open Prelude, ResHye in { + + flags coding = utf8 ; + + param DForm = Unit | Teen | Ten ; + + lincat + Digit = {s : DForm => CardOrd => Str; compoundOrd : DForm => Str} ; + Sub10 = {s : DForm => CardOrd => Str; compoundOrd : DForm => Str; n : Number} ; + Sub100, Sub1000, Sub1000000, Sub1000000000, Sub1000000000000 = LinNum ; + + lin + num n = {s = n.s; n = n.n} ; + + n2 = mkDigit "երկու" "տասներկու" "քսան" "երկրորդ" ; + n3 = mkDigit "երեք" "տասներեք" "երեսուն" "երրորդ" ; + n4 = mkDigit "չորս" "տասնչորս" "քառասուն" "չորրորդ" ; + n5 = mkDigit "հինգ" "տասնհինգ" "հիսուն" "հինգերորդ" ; + n6 = mkDigit "վեց" "տասնվեց" "վաթսուն" "վեցերորդ" ; + n7 = mkDigit "յոթ" "տասնյոթ" "յոթանասուն" "յոթերորդ" ; + n8 = mkDigit "ութ" "տասնութ" "ութսուն" "ութերորդ" ; + n9 = mkDigit "ինը" "տասնինը" "իննսուն" "իններորդ" ; + + pot01 = mkDigit "մեկ" "տասնմեկ" "տասը" "առաջին" ** { + compoundOrd = table { + Unit => "մեկերորդ" ; + Teen => "տասնմեկերորդ" ; + Ten => "տասներորդ" + } ; + n = Sg + } ; + pot0 d = d ** {n = Pl} ; + + pot110 = mkNum "տասը" "տասներորդ" Pl ** {attr = "տաս"} ; + pot111 = regNum "տասնմեկ" Pl ; + pot1to19 d = { + s = d.s ! Teen ; + compoundOrd = d.compoundOrd ! Teen ; + attr = d.s ! Teen ! NCard ; + n = Pl + } ; + pot0as1 n = { + s = n.s ! Unit ; + compoundOrd = n.compoundOrd ! Unit ; + attr = n.s ! Unit ! NCard ; + n = n.n + } ; + pot1 d = { + s = d.s ! Ten ; + compoundOrd = d.compoundOrd ! Ten ; + attr = d.s ! Ten ! NCard ; + n = Pl + } ; + pot1plus d e = regNum + (d.s ! Ten ! NCard ++ BIND ++ e.s ! Unit ! NCard) Pl ; + pot1as2 n = n ; + + pot21 = mkNum "հարյուր" "հարյուրերորդ" Pl ; + pot2 d = scaleNum (d.s ! Unit ! NCard) "հարյուր" Pl ; + pot2plus d e = plusNum + (d.s ! Unit ! NCard ++ "հարյուր") e Pl ; + pot2as3 n = n ; + + pot31 = mkNum "հազար" "հազարերորդ" Pl ; + pot3 n = scaleNum n.attr "հազար" Pl ; + pot3plus n m = plusNum (n.attr ++ "հազար") m Pl ; + pot3as4 n = n ; + pot3decimal n = decimalScale n "հազար" ; + + pot41 = mkNum "միլիոն" "միլիոներորդ" Pl ; + pot4 n = scaleNum n.attr "միլիոն" Pl ; + pot4plus n m = plusNum (n.attr ++ "միլիոն") m Pl ; + pot4as5 n = n ; + pot4decimal n = decimalScale n "միլիոն" ; + + pot51 = mkNum "միլիարդ" "միլիարդերորդ" Pl ; + pot5 n = scaleNum n.attr "միլիարդ" Pl ; + pot5plus n m = plusNum (n.attr ++ "միլիարդ") m Pl ; + pot5decimal n = decimalScale n "միլիարդ" ; + + lincat Dig = {s : CardOrd => Str; n : Number} ; + + lin + IDig d = d ** {tail = T1} ; + IIDig d ds = { + s = table { + NCard => glue (d.s ! NCard) (ds.s ! NCard) ; + NOrd => glue (glue (d.s ! NCard) (ds.s ! NCard)) "-րդ" + } ; + n = Pl ; + tail = inc ds.tail + } ; + + D_0 = mkDig "0" ; + D_1 = mkDig1 ; + D_2 = mkDig "2" ; + D_3 = mkDig "3" ; + D_4 = mkDig "4" ; + D_5 = mkDig "5" ; + D_6 = mkDig "6" ; + D_7 = mkDig "7" ; + D_8 = mkDig "8" ; + D_9 = mkDig "9" ; + + PosDecimal d = d ** {hasDot = False} ; + NegDecimal d = { + s = \\o => "-" ++ BIND ++ d.s ! o ; + n = Pl ; + hasDot = False + } ; + IFrac d i = { + s = \\o => d.s ! NCard ++ + if_then_Str d.hasDot BIND (BIND ++ "." ++ BIND) ++ + i.s ! o ; + n = Pl ; + hasDot = True + } ; + + oper + LinNum : Type = { + s : CardOrd => Str ; + compoundOrd : Str ; + attr : Str ; + n : Number + } ; + + mkNum : Str -> Str -> Number -> LinNum = \card,ord,n -> { + s = table {NCard => card; NOrd => ord} ; + compoundOrd = ord ; + attr = card ; + n = n + } ; + + regNum : Str -> Number -> LinNum = \card,n -> + mkNum card (glue card "երորդ") n ; + + mkDigit : Str -> Str -> Str -> Str -> + {s : DForm => CardOrd => Str; compoundOrd : DForm => Str} = + \unit,teen,ten,unitOrd -> { + s = table { + Unit => table {NCard => unit; NOrd => unitOrd} ; + Teen => table {NCard => teen; NOrd => glue teen "երորդ"} ; + Ten => table {NCard => ten; NOrd => glue ten "երորդ"} + } ; + compoundOrd = table { + Unit => unitOrd ; + Teen => glue teen "երորդ" ; + Ten => glue ten "երորդ" + } + } ; + + scaleNum : Str -> Str -> Number -> LinNum = \prefix,scale,n -> + mkNum (prefix ++ scale) (prefix ++ glue scale "երորդ") n ; + + plusNum : Str -> LinNum -> Number -> LinNum = \prefix,last,n -> { + s = table { + NCard => prefix ++ last.s ! NCard ; + NOrd => prefix ++ last.compoundOrd + } ; + compoundOrd = prefix ++ last.compoundOrd ; + attr = prefix ++ last.s ! NCard ; + n = n + } ; + + decimalScale : Decimal -> Str -> LinNum = \decimal,scale -> + mkNum (decimal.s ! NCard ++ scale) + (decimal.s ! NCard ++ glue scale "երորդ") Pl ; + + mkDig : Str -> {s : CardOrd => Str; n : Number} = \d -> { + s = table {NCard => d; NOrd => glue d "-րդ"} ; + n = Pl + } ; + + mkDig1 : {s : CardOrd => Str; n : Number} = { + s = table {NCard => "1"; NOrd => "1-ին"} ; + n = Sg + } ; +} diff --git a/src/armenian/ParadigmsHye.gf b/src/armenian/ParadigmsHye.gf index 6f5e81bd..48d6c801 100644 --- a/src/armenian/ParadigmsHye.gf +++ b/src/armenian/ParadigmsHye.gf @@ -23,7 +23,7 @@ oper _ + "չալ" => mkV002 form; _ + "նալ" => mkV004 form; _ + "ել" => mkV001 form; - _ => error "Cannot find an inflection rule" + _ => lin V (invarVerb form) } ; reg2V : Str -> Str -> V -- s Imperative_Jussive;Pl @@ -212,7 +212,7 @@ oper _ + "ի" => mkN003 form; _ + "ե" => mkN006 form; _ + "է" => mkN006 form; - _ => error "Cannot find an inflection rule" + _ => mkN007 form } ; reg2N : Str -> Str -> N -- s;Nom;Sg s;Dat;Sg @@ -313,7 +313,7 @@ oper _ + "ղմ" => mkA005 form; _ + "տք" => mkA005 form; _ + "իղ" => mkA006 form; - _ + "նչ" => mkA008 form; + _ + "ունչ"=>mkA008 form; _ + "ոխ" => mkA005 form; _ + "ղխ" => mkA005 form; _ + "ղթ" => mkA005 form; @@ -368,7 +368,7 @@ oper _ + "ի" => mkA002 form; _ + "ա" => mkA004 form; _ + "ո" => mkA004 form; - _ => error "Cannot find an inflection rule" + _ => mkA001 form } ; reg2A : Str -> Str -> A -- s;Nom;Sg s;Nom;Pl @@ -440,6 +440,14 @@ oper mkN : Str -> Str -> N = reg2N -- s;Nom;Sg s;Dat;Sg } ; + compoundN : A -> N -> N = \a,n -> lin N { + s = \\c,num => a.s ! Nom ! Sg ++ n.s ! c ! num ; + def_dat = \\num => a.s ! Dat ! num ++ n.def_dat ! num ; + def_nom = \\num => a.s ! Nom ! Sg ++ n.def_nom ! num ; + poss1 = \\c,num => a.s ! Nom ! Sg ++ n.poss1 ! c ! num ; + poss2 = \\c,num => a.s ! Nom ! Sg ++ n.poss2 ! c ! num + } ; + mkN2 = overload { mkN2 : N -> N2 = \n -> lin N2 (n ** {c2 = noPrep}) ; mkN2 : N -> Prep -> N2 = \n,p -> lin N2 (n ** {c2 = p}) ; @@ -493,7 +501,7 @@ oper mkPron : Str -> Number -> Person -> Pron = \s,n,p -> lin Pron { - s = s ; + s = \\_ => s ; empty = [] ; a = {n = n; p = p} } ; diff --git a/src/armenian/PhraseHye.gf b/src/armenian/PhraseHye.gf index 3a1de8aa..09a2a856 100644 --- a/src/armenian/PhraseHye.gf +++ b/src/armenian/PhraseHye.gf @@ -1,9 +1,21 @@ -concrete PhraseHye of Phrase = CatHye ** { +concrete PhraseHye of Phrase = CatHye ** open ResHye in { lin PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ; UttS s = s ; UttInterj i = i ; + UttNP np = {s = np.s ! Nom} ; + UttAdv adv = adv ; + UttCN cn = {s = cn.s ! Indef ! Nom ! Sg} ; + UttCard card = card ; + 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}} ; + VocNP np = {s = np.s ! Nom} ; + PConjConj conj = conj ; NoPConj = {s = []} ; diff --git a/src/armenian/QuestionHye.gf b/src/armenian/QuestionHye.gf new file mode 100644 index 00000000..84d1cef0 --- /dev/null +++ b/src/armenian/QuestionHye.gf @@ -0,0 +1,21 @@ +concrete QuestionHye of Question = CatHye ** open ResHye in { + lincat QVP = {s : Str} ; + 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 ++ "՞"} ; + IdetCN det cn = {s = det.s ++ cn.s ! Indef ! Nom ! Sg} ; + IdetIP det = {s = det.s} ; + AdvIP ip adv = {s = ip.s ++ adv.s} ; + IdetQuant quant num = {s = quant.s ++ num.s} ; + PrepIP prep ip = {s = case prep.isPre of {True=>prep.s++ip.s;False=>ip.s++prep.s}} ; + AdvIAdv iadv adv = {s = iadv.s ++ adv.s} ; + CompIAdv adv = adv ; + CompIP ip = ip ; + 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 ++ "՞"} ; +} diff --git a/src/armenian/RelativeHye.gf b/src/armenian/RelativeHye.gf new file mode 100644 index 00000000..8749fda5 --- /dev/null +++ b/src/armenian/RelativeHye.gf @@ -0,0 +1,11 @@ +concrete RelativeHye of Relative = CatHye ** open ResHye in { + lin + RelCl cl = {s = "որը" ++ cl.s} ; + RelVP rp vp = {s = rp.s ++ vp.s} ; + RelSlash rp slash = {s = rp.s ++ slash.s} ; + IdRP = {s = "որը"} ; + FunRP prep np rp = {s = case prep.isPre of { + True=>prep.s++np.s!prep.c++rp.s; + False=>np.s!prep.c++prep.s++rp.s + }} ; +} diff --git a/src/armenian/ResHye.gf b/src/armenian/ResHye.gf index 90164740..b97abbd0 100644 --- a/src/armenian/ResHye.gf +++ b/src/armenian/ResHye.gf @@ -1,9 +1,19 @@ -resource ResHye = ParamX ** { +resource ResHye = ParamX ** open Prelude in { +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 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; + past=table {_ => table {_ => s}}; + participle=table {_ => s}; + subjunctive=table {_ => table {_ => table {_ => s}}} +} ; oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb = \f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34,f35,f36,f37,f38,f39,f40,f41,f42,f43 -> { s = f1 ; @@ -103,6 +113,11 @@ oper mkVerb : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ param Species = Indef | Def | Poss Person ; oper Agr = {n : Number; p : Person} ; oper Noun = {s: Case => Number => Str; def_dat: Number => Str; def_nom: Number => Str; poss1: Case => Number => Str; poss2: Case => Number => Str} ; -- 4880 +oper invarNoun : Str -> Noun = \s -> { + s=table {_ => table {_ => s}}; + def_dat=table {_ => s}; def_nom=table {_ => s}; + poss1=table {_ => table {_ => s}}; poss2=table {_ => table {_ => s}} +} ; oper mkNoun : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> Noun = \f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,f25,f26,f27,f28,f29,f30,f31,f32,f33,f34 -> { s = table { @@ -262,7 +277,7 @@ oper mkAdj : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, } ; -oper Compl = {s : Str; c : Case} ; -oper noPrep : Compl = {s=""; c=Dat} ; +oper Compl = {s : Str; c : Case; isPre : Bool} ; +oper noPrep : Compl = {s=""; c=Nom; isPre=False} ; } diff --git a/src/armenian/SentenceHye.gf b/src/armenian/SentenceHye.gf index 9deae436..332dea81 100644 --- a/src/armenian/SentenceHye.gf +++ b/src/armenian/SentenceHye.gf @@ -1,6 +1,20 @@ concrete SentenceHye of Sentence = CatHye ** open Prelude,ResHye in { - lin PredVP np vp = {s = np.s ! Nom ++ vp.s; - conditional = \\a,n => np.s ! Nom ++ vp.conditional ! a ! P3 ! n; + oper negAux : Agr -> Str = \a -> case of { + => "չեմ"; => "չես"; => "չի"; + => "չենք"; => "չեք"; => "չեն" + } ; + lin PredVP np vp = {s = np.s ! Nom ++ vp.converb.imperfective ++ + case of { + => "եմ"; => "ես"; => "է"; + => "ենք"; => "եք"; => "են" + }; + negative = table { + Pres => np.s ! Nom ++ negAux np.a ++ 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; + Cond => np.s ! Nom ++ "չ" ++ BIND ++ vp.conditional ! Non_Past ! np.a.p ! np.a.n + }; + 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; futCon2 = np.s ! Nom ++ vp.converb.futCon2; @@ -8,7 +22,44 @@ concrete SentenceHye of Sentence = CatHye ** open Prelude,ResHye in { perfective = np.s ! Nom ++ vp.converb.perfective; simultaneous = np.s ! Nom ++ vp.converb.simultaneous}; passive = np.s ! Nom ++ vp.passive; - past = \\_,n => np.s ! Nom ++ vp.past ! P3 ! n; + past = \\_,_ => np.s ! Nom ++ vp.past ! np.a.p ! np.a.n; participle = \\p => np.s ! Nom ++ vp.participle ! p; - subjunctive = \\a,n => np.s ! Nom ++ vp.subjunctive ! a ! P3 ! n} ; + 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; + 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; + 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 of { + => cl.s; + => cl.converb.perfective; + => cl.past ! P3 ! Sg; + => cl.converb.perfective; + => cl.conditional ! Non_Past ! Sg; + => cl.conditional ! Perfect ! Sg; + => cl.conditional ! Non_Past ! Sg; + => cl.conditional ! Perfect ! Sg + } + }} ; + lin UseQCl temp pol qcl = {s = case pol.p of {Pos => qcl.s; Neg => "չ" ++ qcl.s}} ; + 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 EmbedS s = s ; + lin EmbedQS qs = qs ; + lin SlashVP np vp = {s = np.s ! Nom ++ vp.s} ; + lin AdvSlash slash adv = {s = slash.s ++ adv.s} ; + lin SlashPrep cl prep = {s = cl.s ++ prep.s} ; + lin SlashVS np vs slash = {s = np.s ! Nom ++ vs.s ++ slash.s} ; } diff --git a/src/armenian/StructuralHye.gf b/src/armenian/StructuralHye.gf index a25516dd..6c957264 100644 --- a/src/armenian/StructuralHye.gf +++ b/src/armenian/StructuralHye.gf @@ -1,8 +1,102 @@ -concrete StructuralHye of Structural = CatHye ** open ResHye, ParadigmsHye in { -lin i_Pron = mkPron "ես" Sg P1 ; -lin youSg_Pron = mkPron "դու" Sg P2 ; -lin he_Pron, she_Pron, it_Pron = mkPron "նա" Sg P3 ; -lin we_Pron = mkPron "մեք" Pl P1 ; -lin youPl_Pron = mkPron "դուք" Pl P2 ; -lin they_Pron = mkPron "նոքա" Pl P3 ; +concrete StructuralHye of Structural = CatHye ** open Prelude, ResHye, ParadigmsHye in { +oper + postPrep : Str -> Case -> Prep = \s,c -> lin Prep {s=s;c=c;isPre=False} ; + simpleNP : Str -> Number -> Person -> NP = \s,n,p -> lin NP {s=\\_ => s;a={n=n;p=p}} ; + casePron : (nom,dat,ablat,instr,loc,poss : Str) -> Number -> Person -> Pron = + \nom,dat,ablat,instr,loc,poss,n,p -> lin Pron { + s=table {Nom=>nom;Dat=>dat;Ablat=>ablat;Instr=>instr;Loc=>loc}; + empty=poss;a={n=n;p=p} + } ; +lin i_Pron = casePron "ես" "ինձ" "ինձնից" "ինձնով" "ինձ մոտ" "իմ" Sg P1 ; +lin youSg_Pron = casePron "դու" "քեզ" "քեզնից" "քեզնով" "քեզ մոտ" "քո" Sg P2 ; +lin he_Pron, she_Pron, it_Pron = casePron "նա" "նրան" "նրանից" "նրանով" "նրա մոտ" "նրա" Sg P3 ; +lin we_Pron = casePron "մենք" "մեզ" "մեզնից" "մեզնով" "մեզ մոտ" "մեր" Pl P1 ; +lin youPl_Pron = casePron "դուք" "ձեզ" "ձեզնից" "ձեզնով" "ձեզ մոտ" "ձեր" Pl P2 ; +lin youPol_Pron = casePron "Դուք" "Ձեզ" "Ձեզնից" "Ձեզնով" "Ձեզ մոտ" "Ձեր" Pl P2 ; +lin they_Pron = casePron "նրանք" "նրանց" "նրանցից" "նրանցով" "նրանց մոտ" "նրանց" Pl P3 ; +lin and_Conj = mkConj "և" ; +lin or_Conj = mkConj "կամ" ; +lin both7and_DConj = mkConj "և՛" ; +lin either7or_DConj = mkConj "կամ" ; +lin if_then_Conj = mkConj "ապա" ; +lin but_PConj = mkPConj "բայց" ; +lin therefore_PConj = mkPConj "հետևաբար" ; +lin otherwise_PConj = mkPConj "այլապես" ; +lin in_Prep = postPrep [] Loc ; +lin on_Prep = postPrep "վրա" Dat ; +lin to_Prep = postPrep [] Dat ; +lin from_Prep = postPrep [] Ablat ; +lin with_Prep = postPrep [] Instr ; +lin without_Prep = postPrep "առանց" Dat ; +lin for_Prep = postPrep "համար" Dat ; +lin during_Prep = postPrep "ընթացքում" Dat ; +lin after_Prep = postPrep "հետո" Ablat ; +lin before_Prep = postPrep "առաջ" Ablat ; +lin under_Prep = postPrep "տակ" Dat ; +lin above_Prep = postPrep "վերևում" Dat ; +lin behind_Prep = postPrep "հետևում" Dat ; +lin between_Prep = postPrep "միջև" Dat ; +lin through_Prep = postPrep "միջով" Dat ; +lin by8agent_Prep = postPrep "կողմից" Dat ; +lin by8means_Prep = postPrep [] Instr ; +lin possess_Prep = postPrep [] Dat ; +lin part_Prep = postPrep [] Ablat ; +lin except_Prep = postPrep "բացի" Ablat ; +lin this_Quant = mkQuant "այս" ; +lin that_Quant = mkQuant "այդ" ; +lin no_Quant = mkQuant "ոչ մի" ; +lin every_Det = mkDet "ամեն" Sg ; +lin few_Det = mkDet "քիչ" Pl ; +lin many_Det = mkDet "շատ" Pl ; +lin much_Det = mkDet "շատ" Sg ; +lin someSg_Det = mkDet "որոշ" Sg ; +lin somePl_Det = mkDet "որոշ" Pl ; +lin all_Predet = mkPredet "բոլոր" ; +lin only_Predet = mkPredet "միայն" ; +lin most_Predet = mkPredet "մեծ մասը" ; +lin not_Predet = mkPredet "ոչ" ; +lin very_AdA = mkAdA "շատ" ; +lin too_AdA = mkAdA "չափազանց" ; +lin almost_AdA = mkAdA "գրեթե" ; +lin almost_AdN = mkAdN "գրեթե" ; +lin at_least_AdN = mkAdN "առնվազն" ; +lin at_most_AdN = mkAdN "առավելագույնը" ; +lin here_Adv = mkAdv "այստեղ" ; +lin there_Adv = mkAdv "այնտեղ" ; +lin everywhere_Adv = mkAdv "ամենուր" ; +lin somewhere_Adv = mkAdv "ինչ-որ տեղ" ; +lin always_AdV = mkAdV "միշտ" ; +lin quite_Adv = mkAdv "բավականին" ; +lin when_Subj = mkSubj "երբ" ; +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 as_CAdv = mkCAdv "այնքան" ; +lin more_CAdv = mkCAdv "ավելի" ; +lin less_CAdv = mkCAdv "պակաս" ; +lin can_VV, can8know_VV = mkVV (mkV "կարողանալ") ; +lin must_VV = mkVV (mkV "պարտավորվել") ; +lin want_VV = mkVV (mkV "ցանկանալ") ; +lin have_V2 = mkV2 (mkV "ունենալ") ; +lin everybody_NP = simpleNP "բոլորը" Pl P3 ; +lin everything_NP = simpleNP "ամեն ինչ" Sg P3 ; +lin somebody_NP = simpleNP "ինչ-որ մեկը" Sg P3 ; +lin something_NP = simpleNP "ինչ-որ բան" Sg P3 ; +lin nobody_NP = simpleNP "ոչ ոք" Sg P3 ; +lin nothing_NP = simpleNP "ոչինչ" Sg P3 ; +lin please_Voc = mkVoc "խնդրում եմ" ; +lin yes_Utt = {s="այո"} ; +lin no_Utt = {s="ոչ"} ; } diff --git a/src/armenian/VerbHye.gf b/src/armenian/VerbHye.gf index 5b0466b1..21692b1e 100644 --- a/src/armenian/VerbHye.gf +++ b/src/armenian/VerbHye.gf @@ -1,4 +1,35 @@ -concrete VerbHye of Verb = CatHye ** open Prelude,ResHye in { +concrete VerbHye of Verb = CatHye ** open Prelude, ResHye, ParadigmsHye in { + oper + compl : Compl -> NP -> Str = \c,np -> case c.isPre of { + True => c.s ++ np.s ! c.c; + False => np.s ! c.c ++ c.s + } ; + toVP : Verb -> VP = \v -> lin VP { + s=v.s; conditional=v.conditional; converb=v.converb; imperative=v.imperative; + passive=v.passive; past=v.past; participle=v.participle; subjunctive=v.subjunctive + } ; + appendVP : VP -> Str -> VP = \v,x -> lin VP { + s=v.s ++ 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; + past=\\p,n => v.past ! p ! n ++ x; + participle=\\p => v.participle ! p ++ x; + subjunctive=\\a,p,n => v.subjunctive ! a ! p ! n ++ x + } ; + prependVP : 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 + } ; lin AdvVP vp adv = {s = adv.s ++ vp.s; conditional = \\a,p,n => adv.s ++ vp.conditional ! a ! p ! n; converb = {imperfective = adv.s ++ vp.converb.imperfective; @@ -12,24 +43,49 @@ concrete VerbHye of Verb = CatHye ** open Prelude,ResHye in { past = \\p,n => adv.s ++ vp.past ! p ! n; participle = \\p => adv.s ++ vp.participle ! p; subjunctive = \\a,p,n => adv.s ++ vp.subjunctive ! a ! p ! n} ; - lin ComplSlash vp np = {s = vp.s ++ vp.c2.s ++ np.s ! vp.c2.c; - conditional = \\a,p,n => vp.conditional ! a ! p ! n - ++ vp.c2.s ++ np.s ! vp.c2.c; - converb = {imperfective = vp.converb.imperfective - ++ vp.c2.s ++ np.s ! vp.c2.c; - futCon1 = vp.converb.futCon1 ++ vp.c2.s ++ np.s ! vp.c2.c; - futCon2 = vp.converb.futCon2 ++ vp.c2.s ++ np.s ! vp.c2.c; - negative = vp.converb.negative ++ vp.c2.s ++ np.s ! vp.c2.c; - perfective = vp.converb.perfective - ++ vp.c2.s ++ np.s ! vp.c2.c; - simultaneous = vp.converb.simultaneous - ++ vp.c2.s ++ np.s ! vp.c2.c}; - imperative = \\n => vp.imperative ! n ++ vp.c2.s ++ np.s ! Nom; - passive = vp.passive ++ vp.c2.s ++ np.s ! vp.c2.c; - past = \\p,n => vp.past ! p ! n ++ vp.c2.s ++ np.s ! vp.c2.c; - participle = \\p => vp.participle ! p ++ vp.c2.s ++ np.s ! vp.c2.c; - subjunctive = \\a,p,n => vp.subjunctive ! a ! p ! n - ++ vp.c2.s ++ np.s ! vp.c2.c} ; + lin ComplSlash vp np = {s = compl vp.c2 np ++ vp.s; + conditional = \\a,p,n => compl vp.c2 np + ++ vp.conditional ! a ! p ! n; + converb = {imperfective = compl vp.c2 np + ++ vp.converb.imperfective; + futCon1 = compl vp.c2 np ++ vp.converb.futCon1; + futCon2 = compl vp.c2 np ++ vp.converb.futCon2; + negative = compl vp.c2 np ++ vp.converb.negative; + perfective = compl vp.c2 np + ++ vp.converb.perfective; + simultaneous = compl vp.c2 np + ++ vp.converb.simultaneous}; + imperative = \\n => compl vp.c2 np ++ vp.imperative ! n; + passive = compl vp.c2 np ++ vp.passive; + past = \\p,n => compl vp.c2 np ++ vp.past ! p ! n; + participle = \\p => compl vp.c2 np ++ vp.participle ! p; + subjunctive = \\a,p,n => compl vp.c2 np + ++ vp.subjunctive ! a ! p ! n} ; lin SlashV2a v = v ; lin UseV v = v ; + 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 Slash3V3 v np = lin VPSlash (v ** { + s = compl v.c3 np ++ v.s; 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 UseComp comp = prependVP comp.s (toVP (mkV "լինել")) ; + lin UseCopula = toVP (mkV "լինել") ; + 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 CompAP ap = {s = ap.s ! Indef ! Nom ! Sg} ; + lin CompNP np = {s = np.s ! Nom} ; + lin CompAdv adv = adv ; + lin CompCN cn = {s = cn.s ! Indef ! Nom ! Sg} ; }