extensions by Codex

This commit is contained in:
Krasimir Angelov committed 2026-10-15 08:08:11 +02:00
1 parent 1cef16870e
commit 0c2471ad68
20 files changed
+658 -177

No files matched your search

+6 -1
View File
@@ -21,7 +21,12 @@ lin
PositAdAAdj a = a ;
SubjS subj s = {s = subj.s ++ s.s ! Sub Condl} ;
SubjS subj s = {
s = case subj.isPre of {
True => subj.s ++ s.s ! Sub Condl ;
False => s.s ! Sub Condl ++ subj.s
}
} ;
AdnCAdv cadv = {
s = cadv.s ++ cadv.c2.s
+5 -6
View File
@@ -61,8 +61,7 @@ lincat
Det = {
s : Str ;
sp : RCase => Str ; -- substantival form
isNum : Bool ; -- true, if a numeral is present
isPoss : Bool ; -- true, if a possessive is present
n : Number ;
isDef : Bool ; -- when definite, is true
isPre : Bool
} ;
@@ -75,17 +74,17 @@ lincat
Quant = {
s : Number => Str ;
sp : Number => NCase => Str ;
isPoss : Bool ;
isDef : Bool
} ;
-- Numeral
Num = {s : Str ; sp : RCase => Str ; n : Number ; isNum : Bool} ;
Card = {s : Str ; sp : RCase => Str ; n : Number} ;
Num, Card = {s : Str ; sp : RCase => Str ; n : Number} ;
Numeral = {s : CardOrd => Str; n : Number} ;
Digits = {s : CardOrd => Str ; n : Number} ;
Decimal = {s : CardOrd => Str ; n : Number; hasDot : Bool} ;
ACard = {s : Str} ;
DAP = {s : RCase => Str ; n : Number} ;
-- Structural
@@ -107,7 +106,7 @@ lincat
N2 = Noun ** {c2 : Complement} ;
N3 = Noun ** {c2,c3 : Complement} ;
PN = {s : RCase => Str} ;
LN,GN,SN = {s : Str} ;
LN,GN,SN = {s : RCase => Str} ;
Temp = {s : Str ; t : ClTense ; a : Anteriority} ;
Tense = {s : Str ; t : ClTense} ;
+1 -2
View File
@@ -37,7 +37,6 @@ lin
n = conjNumber x.n y.n ;
p = conjPerson x.p y.p ;
isPron = andB x.isPron y.isPron ;
isDef = andB x.isDef y.isDef
} ;
BaseAP = twoSS ;
ConsAP = consrSS comma ;
@@ -56,7 +55,7 @@ lincat
[Adv],[AP],[IAdv] = {s1,s2 : Str} ;
[S] = {s1,s2 : SType => Str} ;
[RS] = {s1,s2 : ComplType => Str ; existSubject : Bool} ;
[NP] = {s1,s2 : RCase => Str ; n : Number ; p : Person ; isPron : Bool ; isDef : Bool} ;
[NP] = {s1,s2 : RCase => Str ; n : Number ; p : Person ; isPron : Bool} ;
[CN] = {s1,s2 : Number => NCase => Str} ;
}
+45
View File
@@ -0,0 +1,45 @@
concrete ConstructionMon of Construction = CatMon **
open Prelude, ResMon, ParadigmsMon in {
lincat Timeunit, Hour, Weekday, Month, Monthday, Year = {s : Str} ;
oper
fixedN : Str -> N = \s -> lin N {s = \\_ => s} ;
lin
ready_VP = insertObj (\\_ => "бэлэн") (predV (auxToVerb auxBe)) ;
has_age_VP card = insertObj (\\_ => card.s ++ "настай") (predV (auxToVerb auxBe)) ;
n_units_AP card cn ap = {s = card.s ++ cn.s ! Sg ! NNom ++ ap.s} ;
n_units_of_NP card cn np = np ** {
s = \\rc => card.s ++ cn.s ! Sg ! NNom ++ np.s ! rc
} ;
cup_of_CN np = {s = \\_,nc => "нэг аяга" ++ np.s ! toRCase nc Definite} ;
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 = "арван хоёрдугаар сар"} ;
weekdayPunctualAdv weekday = {s = weekday.s ++ "гарагт"} ;
weekdayHabitualAdv weekday = {s = "долоо бүрийн" ++ weekday.s ++ "гарагт"} ;
weekdayN weekday = fixedN (weekday.s ++ "гараг") ;
monthN month = fixedN month.s ;
intYear i = {s = i.s} ;
yearAdv year = {s = year.s ++ "онд"} ;
}
+36 -36
View File
@@ -963,7 +963,7 @@ lin
-- arangalah_V = mkV "арангалах" ;
-- arangatah_V = mkV "арангатах" ;
-- aranshin_N = mkN "араншин" ;
-- arav_Num = {s = "арван" ; sp = \\rc => (regN "арав") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- arav_Num = {s = "арван" ; sp = \\rc => (regN "арав") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; n = Pl} ;
-- aravganah_V = mkV "аравганах" ;
-- aravgar_A = mkA "аравгар" ;
-- aravnailah_V2 = mkV2 (mkV "аравнайлах") ;
@@ -3389,7 +3389,7 @@ lin
-- bulzaarah_V2 = mkV2 (mkV "булзаарах") ;
-- bulzah_V = mkV "булзах" ;
-- bulzamhai_A = mkA "булзамхай" ;
-- bum_Num = {s = "буман" ; sp = \\rc => (regN "бум") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- bum_Num = {s = "буман" ; sp = \\rc => (regN "бум") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; n = Pl} ;
-- bumba_N = mkN "бумба" ;
-- bumbadah_V2 = mkV2 (mkV "бумбадах") ;
-- bumbaganah_V = mkV "бумбаганах" ;
@@ -3679,7 +3679,7 @@ lin
-- cadaarah_V = mkV "цадаарах" ;
-- cadaarhah_V = mkV "цадаархах" ;
-- cadah_V = mkV "цадах" ;
-- cadchin_Num = {s = "цадчин" ; sp = \\rc => (regN "цадчин") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- cadchin_Num = {s = "цадчин" ; sp = \\rc => (regN "цадчин") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- cadig_N = mkN "цадиг" ;
-- cadigguei_A = mkA "цадиггүй" ;
-- cadiggueirheh_V = mkV "цадиггүйрхэх" ;
@@ -3721,7 +3721,7 @@ lin
-- cagch_N = mkN "цагч" ;
-- cagchai_N = mkN "цагцхай" ;
-- cagchait_A = mkA "цагцхайт" ;
-- cagchig_Num = {s = "цагчиган" ; sp = \\rc => (regN "цагчиг") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- cagchig_Num = {s = "цагчиган" ; sp = \\rc => (regN "цагчиг") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- cagchin_N = mkN "цагчин" ;
-- cagdaa_N = mkN "цагдаа" ;
-- cagdaagiin_gazar_N = mk2N "цагдаагийн" (mkN "газар") ;
@@ -5935,7 +5935,7 @@ lin
-- dodiih_V = mkV "додийх" ;
-- dodomdlogo_N = mkN "додомдлого" ;
-- dodomdoh_V = mkV "додомдох" ;
-- doech_Num = {s = "дөчин" ; sp = \\rc => (regN "дөч") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- doech_Num = {s = "дөчин" ; sp = \\rc => (regN "дөч") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- doehoeh_V2 = mkV2 (mkV "дөхөх") ;
-- doehoem_A = mkA "дөхөм" ;
-- doehoemguei_A = mkA "дөхөмгүй" ;
@@ -6000,9 +6000,9 @@ lin
-- doeroeoeloeh_V = mkV "дөрөөлөх" ;
-- doeroeoevch_N = mkN "дөрөөвч" ;
-- doeroeoevchloeh_V = mkV "дөрөөвчлөх" ;
-- doeroev_Num = {s = "дөрвөн" ; sp = \\rc => (regN "дөрөв") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- doeroev_Num = {s = "дөрвөн" ; sp = \\rc => (regN "дөрөв") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- doeroevch_N = mkN "дөрөвч" ;
-- doeroevloeoes_Num = {s = "дөрөвлөөсөн" ; sp = \\rc => (regN "дөрөвлөөс") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- doeroevloeoes_Num = {s = "дөрөвлөөсөн" ; sp = \\rc => (regN "дөрөвлөөс") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- doersgoenoeh_V = mkV "дөрсгөнөх" ;
-- doersgoer_A = mkA "дөрсгөр" ;
-- doersiih_V = mkV "дөрсийх" ;
@@ -6117,7 +6117,7 @@ lin
-- dollogo_N = mkN "доллого" ;
-- dololgoh_V = mkV "дололгох" ;
-- dolono_N = mkN "долоно" ;
-- doloo_Num = {s = "долоон" ; sp = \\rc => (regN "долоо") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- doloo_Num = {s = "долоон" ; sp = \\rc => (regN "долоо") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- doloo_honog_N = mk2N "хан" (mkN "боргоцой") ;
-- doloodos_N = mkN "долоодос" ;
-- doloogono_N = mkN "долоогоно" ;
@@ -6351,7 +6351,7 @@ lin
-- duen_N = mkN "дүн" ;
-- duenbe_N = mkN "дүнбэ" ;
-- duenbeteh_V = mkV "дүнбэтэх" ;
-- duenchueuer_Num = {s = "дүнчүүрэн" ; sp = \\rc => (regN "дүнчүүр") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- duenchueuer_Num = {s = "дүнчүүрэн" ; sp = \\rc => (regN "дүнчүүр") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- duengeneh_V = mkV "дүнгэнэх" ;
-- duenger_N = mkN "дүнгэр" ;
-- duenguei_A = mkA "дүнгүй" ;
@@ -6360,7 +6360,7 @@ lin
-- duensger_A = mkA "дүнсгэр" ;
-- duensgerdueue_A = mkA "дүнсгэрдүү" ;
-- duensgerhen_A = mkA "дүнсгэрхэн" ;
-- duenshueuer_Num = {s = "дүншүүрэн" ; sp = \\rc => (regN "дүншүүр") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- duenshueuer_Num = {s = "дүншүүрэн" ; sp = \\rc => (regN "дүншүүр") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- duensiih_V = mkV "дүнсийх" ;
-- duentei_A = mkA "дүнтэй" ;
-- duenz_N = mkN "дүнз" ;
@@ -8099,7 +8099,7 @@ lin
-- gol_N = mkN "гол" ;
-- golch_A = mkA "голч" ;
-- golchloh_V = mkV "голчлох" ;
-- gold'_Num = {s = "голдин" ; sp = \\rc => (regN "голдь") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- gold'_Num = {s = "голдин" ; sp = \\rc => (regN "голдь") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- goldoh_V = mkV "голдох" ;
-- gol'f_N = mkLN "гольф" ;
-- goligonoh_V = mkV "голигонох" ;
@@ -8262,7 +8262,7 @@ lin
-- guash_N = mkLN "гуаш" ;
-- gucah_V = mkV "гуцах" ;
-- guch_N = mkN "гуч" ;
-- guch_Num = {s = "гучин" ; sp = \\rc => (regN "гуч") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- guch_Num = {s = "гучин" ; sp = \\rc => (regN "гуч") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- guchincar_N = mkN "гучинцар" ;
-- gucuu_A = mkA "гуцуу" ;
-- gudaih_V2 = mkV2 (mkV "гудайх") ;
@@ -8528,7 +8528,7 @@ lin
-- guranhtah_V = mkV "гуранхтах" ;
-- guranz_N = mkN "гуранз" ;
-- guranzdah_V = mkV "гуранздах" ;
-- gurav_Num = {s = "гурван" ; sp = \\rc => (regN "гурав") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- gurav_Num = {s = "гурван" ; sp = \\rc => (regN "гурав") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- guravch_N = mkN "гуравч" ;
-- gurgaldai_N = mkN "гургалдай" ;
-- gurgar_A = mkA "гургар" ;
@@ -10913,7 +10913,7 @@ lin
-- hoovolzoh_V = mkV "хооволзох" ;
-- hoovon_N = mkN "хоовон" ;
-- hor_N = mkN "хор" ;
-- hor'_Num = {s = "хорин" ; sp = \\rc => (regN "хорь") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- hor'_Num = {s = "хорин" ; sp = \\rc => (regN "хорь") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- horchgir_A = mkA "хорчгир" ;
-- horchgonoh_V = mkV "хорчгонох" ;
-- horchgor_A = mkA "хорчгор" ;
@@ -11112,7 +11112,7 @@ lin
-- hovsorgon_A = mkA "ховсоргон" ;
-- hovsroh_V = mkV "ховсрох" ;
-- hovsrooch_N = mkN "ховсрооч" ;
-- hoyor_Num = {s = "хоёр" ; sp = \\rc => (regN "хоёр") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- hoyor_Num = {s = "хоёр" ; sp = \\rc => (regN "хоёр") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- hoyordmol_A = mkA "хоёрдмол" ;
-- hoyorloh_V = mkV "хоёрлох" ;
-- hoyorlohguei_A = mkA "хоёрлохгүй" ;
@@ -12246,7 +12246,7 @@ lin
-- ingeehen_A = mkA "ингээхэн" ;
-- ingeen_A = mkA "ингээн" ;
-- ingeh_V = mkV "ингэх" ;
-- ingemel_Num = {s = "ингэмэлэн" ; sp = \\rc => (regN "ингэмэл") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- ingemel_Num = {s = "ингэмэлэн" ; sp = \\rc => (regN "ингэмэл") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- ingueuehen_N = mkN "ингүүхэн" ;
-- ingueuemel_N = mkN "ингүүмэл" ;
-- inj_N = mkN "инж" ;
@@ -12299,7 +12299,7 @@ lin
-- irmegleh_V = mkV "ирмэглэх" ;
-- irmegueuen_A = mkA "ирмэгүүн" ;
-- irmeh_V = mkV "ирмэх" ;
-- irmel_Num = {s = "ирмэлэн" ; sp = \\rc => (regN "ирмэл") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- irmel_Num = {s = "ирмэлэн" ; sp = \\rc => (regN "ирмэл") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- irmelhiileh_V = mkV "ирмэлхийлэх" ;
-- irmueuedeh_V = mkV "ирмүүдэх" ;
-- irmueueleh_V = mkV "ирмүүлэх" ;
@@ -12445,7 +12445,7 @@ lin
-- Janraisig_PN = mkPN "Жанрайсиг" ;
-- janz_N = mkN "жанз" ;
-- janzii_N = mkN "жанзий" ;
-- jar_Num = {s = "жаран" ; sp = \\rc => (regN "жар") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- jar_Num = {s = "жаран" ; sp = \\rc => (regN "жар") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- jaraahai_N = mkN "жараахай" ;
-- jaran_N = mkN "жаран" ;
-- jaravganah_V = mkV "жаравганах" ;
@@ -13000,7 +13000,7 @@ lin
-- laglagar_A = mkA "лаглагар" ;
-- laglaih_V = mkV "лаглайх" ;
-- lags_A = mkA "лагс" ;
-- lagshaa_Num = {s = "лагшаан" ; sp = \\rc => (regN "лагшаа") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- lagshaa_Num = {s = "лагшаан" ; sp = \\rc => (regN "лагшаа") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- lagshih_V = mkV "лагших" ;
-- lagshim_A = mkA "лагшим" ;
-- lagshin_N = mkN "лагшин" ;
@@ -14023,7 +14023,7 @@ lin
-- movgo_N = mkN "мовго" ;
-- movor_N = mkN "мовор" ;
-- mueglen_N = mkN "мүглэн" ;
-- mueue_Num = {s = "мүүн" ; sp = \\rc => (regN "мүү") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- mueue_Num = {s = "мүүн" ; sp = \\rc => (regN "мүү") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- mugjgar_A = mkA "мугжгар" ;
-- mugjiih_V = mkV "мугжийх" ;
-- muguid_A = mkA "мугуйд" ;
@@ -14162,7 +14162,7 @@ lin
-- myandag_N = mkN "мяндаг" ;
-- myandas_N = mkN "мяндас" ;
-- myandsan_A = mkA "мяндсан" ;
-- myanga_Num = {s = "мянган" ; sp = \\rc => (regN "мянга") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- myanga_Num = {s = "мянган" ; sp = \\rc => (regN "мянга") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- myangad_N = mkN "мянгад" ;
-- myangat_A = mkA "мянгат" ;
-- M'yanmar_PN = mkPN "Мьянмар" ;
@@ -14295,7 +14295,7 @@ lin
-- nailanhaitah_V = mkV "найланхайтах" ;
-- nailzuur_N = mkN "найлзуур" ;
-- nailzuurhai_N = mkN "найлзуурхай" ;
-- naim_Num = {s = "найман" ; sp = \\rc => (regN "найм") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- naim_Num = {s = "найман" ; sp = \\rc => (regN "найм") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- naimaa_N = mkN "наймаа" ;
-- naimaachin_N = mkN "наймаачин" ;
-- naimaalah_V3 = mkV3 (mkV "наймаалах") ;
@@ -14561,7 +14561,7 @@ lin
-- navtgardah_V = mkV "навтгардах" ;
-- navtrag_N = mkN "навтраг" ;
-- navtrah_V = mkV "навтрах" ;
-- naya_Num = {s = "наян" ; sp = \\rc => (regN "ная") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- naya_Num = {s = "наян" ; sp = \\rc => (regN "ная") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- nayad_N = mkN "наяд" ;
-- nazgai_A = mkA "назгай" ;
-- nazgaidah_V = mkV "назгайдах" ;
@@ -14573,7 +14573,7 @@ lin
-- neelgii_N = mkN "нээлгий" ;
-- neelhii_N = mkN "нээлхий" ;
-- neelt_N = mkN "нээлт" ;
-- neg_Num = {s = "ганц" ; sp = \\rc => (regN "нэг") .s ! SF Sg (toNCase rc Definite) ; n = Sg ; isNum = True} ;
-- neg_Num = {s = "ганц" ; sp = \\rc => (regN "нэг") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- negdeh_V = mkV "нэгдэх" ;
-- negdel_N = mkN "нэгдэл" ;
-- negdeljih_V = mkV "нэгдэлжих" ;
@@ -16153,7 +16153,7 @@ lin
-- onol_N = mkN "онол" ;
-- onolch_N = mkN "онолч" ;
-- onoldoh_V = mkV "онолдох" ;
-- onon_Num = {s = "оннон" ; sp = \\rc => (regN "онон") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- onon_Num = {s = "оннон" ; sp = \\rc => (regN "онон") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- onondoi_N = mkN "онондой" ;
-- onoo_N = mkN "оноо" ;
-- onooch_N = mkN "онооч" ;
@@ -16653,7 +16653,7 @@ lin
-- rashaan_N = mkN "рашаан" ;
-- Rashaant_PN = mkPN "Рашаант" ;
-- rashaantah_V = mkV "рашаантах" ;
-- ravjim_Num = {s = "равжиман" ; sp = \\rc => (regN "равжим") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- ravjim_Num = {s = "равжиман" ; sp = \\rc => (regN "равжим") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- rialgan_A = mkA "риалган" ;
-- rid_N = mkN "рид" ;
-- Rivaadi_PN = mkPN "Риваади" ;
@@ -17175,7 +17175,7 @@ lin
-- savslagalah_V = mkV "савслагалах" ;
-- savslah_V = mkV "савслах" ;
-- savtarhai_A = mkA "савтархай" ;
-- saya_Num = {s = "сая" ; sp = \\rc => (regN "сая") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- saya_Num = {s = "сая" ; sp = \\rc => (regN "сая") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- sayatan_N = mkN "саятан" ;
-- saz_N = mkN "саз" ;
-- sazdah_V = mkV "саздах" ;
@@ -19696,8 +19696,8 @@ lin
-- tatvalzuur_A = mkA "татвалзуур" ;
-- tatvar_N = mkN "татвар" ;
-- tatvarlah_V2 = mkV2 (mkV "татварлах") ;
-- tav_Num = {s = "таван" ; sp = \\rc => (regN "тав") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- tav'_Num = {s = "тавин" ; sp = \\rc => (regN "тавь") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- tav_Num = {s = "таван" ; sp = \\rc => (regN "тав") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- tav'_Num = {s = "тавин" ; sp = \\rc => (regN "тавь") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- tavaar_N = mkN "таваар" ;
-- tavag_N = mkN "таваг" ;
-- tavaglah_V = mkV "таваглах" ;
@@ -19780,7 +19780,7 @@ lin
-- teeverlegch_N = mkN "тээвэрлэгч" ;
-- teeverleh_V2 = mkV2 (mkV "тээвэрлэх") ;
-- teeverlelt_N = mkN "тээвэрлэлт" ;
-- teg_Num = {s = "тэг" ; sp = \\rc => (regN "тэг") .s ! SF Sg (toNCase rc Definite) ; n = Sg ; isNum = True} ;
-- teg_Num = {s = "тэг" ; sp = \\rc => (regN "тэг") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- tegdegneh_V = mkV "тэгдэгнэх" ;
-- tegdelzeh_V = mkV "тэгдэлзэх" ;
-- tegdger_A = mkA "тэгдгэр" ;
@@ -19928,7 +19928,7 @@ lin
-- tenueuelchin_N = mkN "тэнүүлчин" ;
-- tenueuen_A = mkA "тэнүүн" ;
-- ter_Pron = mkPron "тэр" "түүний" "түүнд" "түүнийг" "түүнээс" "түүгээр" "түүнтэй" "түүн рүү" Sg P3 ;
-- terbum_Num = {s = "тэрбуман" ; sp = \\rc => (regN "тэрбум") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
-- terbum_Num = {s = "тэрбуман" ; sp = \\rc => (regN "тэрбум") .s ! SF Sg (toNCase rc Definite) ; n = Pl} ;
-- terbumtan_N = mkN "тэрбумтан" ;
-- tereg_N = mkN "тэрэг" ;
-- teregch_N = mkN "тэрэгч" ;
@@ -20735,7 +20735,7 @@ tuelhleh_V = mkV "түлхлэх" ;
tuelhueue_A = mkA "түлхүү" ;
tuelhueuer_N = mkN "түлхүүр" ;
tuelsh_N = mkN "түлш" ;
tuem_Num = {s = "түмэн" ; sp = \\rc => (regN "түм") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
tuem_Num = {s = "түмэн" ; sp = \\rc => (regN "түм") .s ! SF Sg (toNCase rc Definite) ; n = Sg} ;
tuembeger_A = mkA "түмбэгэр" ;
tuembegneh_V = mkV "түмбэгнэх" ;
tuembelzeh_V = mkV "түмбэлзэх" ;
@@ -22776,7 +22776,7 @@ yenhiih_V = mkV "енхийх" ;
yenhoegnoeh_V = mkV "енхөгнөх" ;
yenhoelzoeh_V = mkV "енхөлзөх" ;
yenhoer_A = mkA "енхөр" ;
yer_Num = {s = "ерэн" ; sp = \\rc => (regN "ер") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
yer_Num = {s = "ерэн" ; sp = \\rc => (regN "ер") .s ! SF Sg (toNCase rc Definite) ; n = Sg} ;
yer_busyn_A = mkA "ер бусын" ;
yerdiin_A = mkA "ердийн" ;
yergoeh_V = mkV "ергөх" ;
@@ -22795,7 +22795,7 @@ yeroeoelch_N = mkN "ерөөлч" ;
yeroeoelt_A = mkA "ерөөлт" ;
yeroeoer_N = mkN "ерөөр" ;
yertoenc_N = mkN "ертөнц" ;
yes_Num = {s = "есөн" ; sp = \\rc => (regN "ес") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
yes_Num = {s = "есөн" ; sp = \\rc => (regN "ес") .s ! SF Sg (toNCase rc Definite) ; n = Sg} ;
yesloeh_V = mkV "еслөх" ;
yesoegchin_N = mkN "есөгчин" ;
yest_A = mkA "ест" ;
@@ -24071,7 +24071,7 @@ zutah_V = mkV "зутах" ;
zutan_N = mkN "зутан" ;
zutrah_V = mkV "зутрах" ;
zutruu_A = mkA "зутруу" ;
zuu_Num = {s = "зуун" ; sp = \\rc => (regN "зуу") .s ! SF Sg (toNCase rc Definite) ; n = Pl ; isNum = True} ;
zuu_Num = {s = "зуун" ; sp = \\rc => (regN "зуу") .s ! SF Sg (toNCase rc Definite) ; n = Sg} ;
zuuch_N = mkN "зууч" ;
zuuchlagch_N = mkN "зуучлагч" ;
zuuchlah_V3 = mkV3 (mkV "зуучлах") ;
@@ -24136,4 +24136,4 @@ zuzaatgah_V = mkV "зузаатгах" ;
zuzaih_V = mkV "зузайх" ;
zuzgar_A = mkA "зузгар" ;
zyenit_N = mkLN "зенит" ;
} ;
} ;
+254 -11
View File
@@ -4,6 +4,8 @@ concrete DocumentationMon of Documentation = CatMon ** open
Prelude,
HTML in {
flags optimize=noexpand ; coding=utf8 ;
lincat
Inflection = {t : Str; s1,s2,s3 : Str} ;
Definition = {s : Str} ;
@@ -30,18 +32,14 @@ lin InflectionN, InflectionN2, InflectionN3 = \x -> {
lin InflectionPN = \pn -> {
t="pn" ;
s1=heading1 "Proper Name" ;
s2=frameTable (
tr (th "Nom" ++ td (pn.s ! Nom)) ++
tr (th "Acc" ++ td (pn.s ! Acc)) ++
tr (th "Dat" ++ td (pn.s ! Dat)) ++
tr (th "Gen" ++ td (pn.s ! Gen)) ++
tr (th "Abl" ++ td (pn.s ! Abl)) ++
tr (th "Inst" ++td (pn.s ! Inst)) ++
tr (th "Com" ++ td (pn.s ! Com)) ++
tr (th "Dir" ++ td (pn.s ! Dir))) ;
s2=nameTable pn.s ;
s3=[]
} ;
lin InflectionLN = \name -> nameInflection "ln" "Location Name" name ;
lin InflectionGN = \name -> nameInflection "gn" "Given Name" name ;
lin InflectionSN = \name -> nameInflection "sn" "Family Name" name ;
lin InflectionA, InflectionA2 = \adj -> {
t="a" ;
s1=heading1 "Adjective" ;
@@ -58,7 +56,7 @@ lin InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
lin InflectionPrep = \prep -> {
t = "prep" ;
s1= heading1 "Preposition" ;
s1= heading1 "Postposition" ;
s2= paragraph (prep.s ++
case prep.rc of {
Nom => "nominative" ;
@@ -67,12 +65,51 @@ lin InflectionPrep = \prep -> {
Gen => "genitive" ;
Abl => "ablative" ;
Inst=> "instrumental" ;
Com => "commitative" ;
Com => "comitative" ;
Dir => "directional"
}) ;
s3= ""
} ;
lin InflectionV = \verb -> {
t="v" ; s1=heading1 "Verb" ;
s2=verbTable verb.s ; s3=[]
} ;
lin InflectionV2 = \verb -> verbInflection verb.s ;
lin InflectionV3 = \verb -> verbInflection verb.s ;
lin InflectionV2V = \verb -> verbInflection verb.s ;
lin InflectionV2S = \verb -> verbInflection verb.s ;
lin InflectionV2Q = \verb -> verbInflection verb.s ;
lin InflectionV2A = \verb -> verbInflection verb.s ;
lin InflectionVS = \verb -> verbInflection verb.s ;
lin InflectionVQ = \verb -> verbInflection verb.s ;
lin InflectionVA = \verb -> verbInflection verb.s ;
lin InflectionVV = \verb -> {
t="v" ;
s1=heading1 "Verb" ;
s2=auxTable verb.s ;
s3=[]
} ;
lin InflectionCl = \cl -> {
t="cl" ;
s1=heading1 "Clause" ;
s2=frameTable (
tr (th "Tense" ++ th "Anteriority" ++ th "Positive" ++ th "Negative") ++
clauseRow "Present" ClPres Simul cl ++
clauseRow "Present" ClPres Anter cl ++
clauseRow "Past perfect" (ClPast Perf) Simul cl ++
clauseRow "Past perfect" (ClPast Perf) Anter cl ++
clauseRow "Present perfect" (ClPast PresPerf) Simul cl ++
clauseRow "Present perfect" (ClPast PresPerf) Anter cl ++
clauseRow "Indefinite past" (ClPast IndefPast) Simul cl ++
clauseRow "Indefinite past" (ClPast IndefPast) Anter cl ++
clauseRow "Future" ClFut Simul cl ++
clauseRow "Future" ClFut Anter cl) ;
s3=[]
} ;
lin
NoDefinition t = {s=t.s};
MkDefinition t d = {s="<p><b>Definition:</b>"++t.s++d.s++"</p>"};
@@ -82,4 +119,210 @@ lin
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ paragraph e.s} ;
MkTag i = {s = i.t} ;
oper
nameInflection : Str -> Str -> {s : RCase => Str} ->
{t : Str; s1,s2,s3 : Str} = \tag,title,name -> {
t=tag ;
s1=heading1 title ;
s2=nameTable name.s ;
s3=[]
} ;
nameTable : (RCase => Str) -> Str = \forms ->
frameTable (
tr (th "Case" ++ th "Form") ++
caseRow "Nominative" Nom forms ++
caseRow "Accusative" Acc forms ++
caseRow "Dative-locative" Dat forms ++
caseRow "Genitive" Gen forms ++
caseRow "Ablative" Abl forms ++
caseRow "Instrumental" Inst forms ++
caseRow "Comitative" Com forms ++
caseRow "Directional" Dir forms) ;
caseRow : Str -> RCase -> (RCase => Str) -> Str = \label,c,forms ->
tr (th label ++ td (forms ! c)) ;
clauseRow : Str -> ClTense -> Anteriority ->
{s : ClTense => Anteriority => Polarity => SType => Str} -> Str =
\label,t,a,cl ->
tr (th label ++ th (anteriorityName a) ++
td (cl.s ! t ! a ! Pos ! Main) ++
td (cl.s ! t ! a ! Neg ! Main)) ;
anteriorityName : Anteriority -> Str = \a -> case a of {
Simul => "simultaneous" ;
Anter => "anterior"
} ;
verbInflection : (VerbForm => Str) -> {t : Str; s1,s2,s3 : Str} = \forms -> {
t="v" ;
s1=heading1 "Verb" ;
s2=verbTable forms ;
s3=[]
} ;
verbTable : (VerbForm => Str) -> Str = \forms ->
heading2 "Indicative" ++
frameTable (
tr (th "Voice" ++ th "Aspect" ++ th "Present perfect" ++
th "Completed past" ++ th "Indefinite past" ++ th "Future") ++
finiteRows "Active" Act forms ++
finiteRows "Causative" Caus forms ++
finiteRows "Passive" Pass forms ++
finiteRows "Cooperative" Comm forms ++
finiteRows "Adversative" Advs forms) ++
verbImperativeTable forms ++
heading2 "Subordinate forms" ++
frameTable (
tr (th "Function" ++ th "Active" ++ th "Causative" ++ th "Passive") ++
subordinateRow "Conditional" Condl forms ++
subordinateRow "Concessive" Conc forms ++
subordinateRow "Immediate succession" ISucc forms ++
subordinateRow "Logical succession" LSucc forms ++
subordinateRow "Intention" Intend forms ++
subordinateRow "Limit" Limit forms ++
subordinateRow "Progressive" Progr forms ++
subordinateRow "Succession" Succ forms) ++
verbCoordinationTable forms ++
verbParticipleTables forms ;
finiteRows : Str -> Voice -> (VerbForm => Str) -> Str = \voice,v,forms ->
finiteRow voice "Simple" v Simpl forms ++
finiteRow "" "Quick" v Quick forms ++
finiteRow "" "Collective" v Coll forms ++
finiteRow "" "Complete" v Compl forms ;
finiteRow : Str -> Str -> Voice -> Aspect -> (VerbForm => Str) -> Str =
\voice,aspect,v,a,forms ->
tr (th voice ++ th aspect ++
td (forms ! VFORM v a VPresPerf) ++
td (forms ! VFORM v a VPastComp) ++
td (forms ! VFORM v a VPastIndef) ++
td (forms ! VFORM v a VFut)) ;
subordinateRow : Str -> Subordination -> (VerbForm => Str) -> Str = \label,sub,forms ->
tr (th label ++
td (forms ! SVDS ActSub sub) ++
td (forms ! SVDS CausSub sub) ++
td (forms ! SVDS PassSub sub)) ;
auxTable : (VVVerbForm => Str) -> Str = \forms ->
heading2 "Indicative" ++
frameTable (
tr (th "Present perfect" ++ td (forms ! VVTense VPresPerf)) ++
tr (th "Completed past" ++ td (forms ! VVTense VPastComp)) ++
tr (th "Indefinite past" ++ td (forms ! VVTense VPastIndef)) ++
tr (th "Future" ++ td (forms ! VVTense VFut))) ++
auxImperativeTable forms ++
heading2 "Subordinate forms" ++
frameTable (
auxSubordinateRow "Conditional" Condl forms ++
auxSubordinateRow "Concessive" Conc forms ++
auxSubordinateRow "Immediate succession" ISucc forms ++
auxSubordinateRow "Logical succession" LSucc forms ++
auxSubordinateRow "Intention" Intend forms ++
auxSubordinateRow "Limit" Limit forms ++
auxSubordinateRow "Progressive" Progr forms ++
auxSubordinateRow "Succession" Succ forms) ++
auxCoordinationTable forms ++
auxParticipleTables forms ;
auxSubordinateRow : Str -> Subordination -> (VVVerbForm => Str) -> Str = \label,sub,forms ->
tr (th label ++ td (forms ! VVSubordination sub)) ;
verbImperativeTable : (VerbForm => Str) -> Str = \forms ->
heading2 "Imperative" ++
frameTable (
tr (th "Function" ++ th "Direct" ++ th "Indirect") ++
verbImperativeRow "Decision" Dec forms ++
verbImperativeRow "Command" Command forms ++
verbImperativeRow "Request" Req forms ++
verbImperativeRow "Demand" Demand forms ++
verbImperativeRow "Admonition" Admon forms ++
verbImperativeRow "Appeal" Appeal forms ++
verbImperativeRow "Permission" Perm forms ++
verbImperativeRow "Hope" Hope forms ++
verbImperativeRow "Blessing" Bless forms) ;
verbImperativeRow : Str -> Imperative -> (VerbForm => Str) -> Str = \label,i,forms ->
tr (th label ++ td (forms ! VIMP Direct i) ++
td (forms ! VIMP Indirect i)) ;
auxImperativeTable : (VVVerbForm => Str) -> Str = \forms ->
heading2 "Imperative" ++
frameTable (
tr (th "Function" ++ th "Direct" ++ th "Indirect") ++
auxImperativeRow "Decision" Dec forms ++
auxImperativeRow "Command" Command forms ++
auxImperativeRow "Request" Req forms ++
auxImperativeRow "Demand" Demand forms ++
auxImperativeRow "Admonition" Admon forms ++
auxImperativeRow "Appeal" Appeal forms ++
auxImperativeRow "Permission" Perm forms ++
auxImperativeRow "Hope" Hope forms ++
auxImperativeRow "Blessing" Bless forms) ;
auxImperativeRow : Str -> Imperative -> (VVVerbForm => Str) -> Str = \label,i,forms ->
tr (th label ++ td (forms ! VVImp Direct i) ++
td (forms ! VVImp Indirect i)) ;
verbCoordinationTable : (VerbForm => Str) -> Str = \forms ->
heading2 "Coordinating forms" ++
frameTable (
tr (th "Simultaneous" ++ td (forms ! CVDS Simul)) ++
tr (th "Anterior" ++ td (forms ! CVDS Anter))) ;
auxCoordinationTable : (VVVerbForm => Str) -> Str = \forms ->
heading2 "Coordinating forms" ++
frameTable (
tr (th "Simultaneous" ++ td (forms ! VVCoordination Simul)) ++
tr (th "Anterior" ++ td (forms ! VVCoordination Anter))) ;
verbParticipleTables : (VerbForm => Str) -> Str = \forms ->
verbParticipleTable "Indefinite present" PPresIndef forms ++
verbParticipleTable "Progressive present" PPresProgr forms ++
verbParticipleTable "Past" PPast forms ++
verbParticipleTable "Future" PFut forms ++
verbParticipleTable "Agent" PDoer forms ;
verbParticipleTable : Str -> Participle -> (VerbForm => Str) -> Str = \title,p,forms ->
heading2 (title ++ " participle") ++
frameTable (
tr (th "Case" ++ th "Form") ++
verbParticipleRow "Nominative" Nom p forms ++
verbParticipleRow "Accusative" Acc p forms ++
verbParticipleRow "Dative-locative" Dat p forms ++
verbParticipleRow "Genitive" Gen p forms ++
verbParticipleRow "Ablative" Abl p forms ++
verbParticipleRow "Instrumental" Inst p forms ++
verbParticipleRow "Comitative" Com p forms ++
verbParticipleRow "Directional" Dir p forms) ;
verbParticipleRow : Str -> RCase -> Participle -> (VerbForm => Str) -> Str =
\label,c,p,forms -> tr (th label ++ td (forms ! VPART p c)) ;
auxParticipleTables : (VVVerbForm => Str) -> Str = \forms ->
auxParticipleTable "Indefinite present" PPresIndef forms ++
auxParticipleTable "Progressive present" PPresProgr forms ++
auxParticipleTable "Past" PPast forms ++
auxParticipleTable "Future" PFut forms ++
auxParticipleTable "Agent" PDoer forms ;
auxParticipleTable : Str -> Participle -> (VVVerbForm => Str) -> Str = \title,p,forms ->
heading2 (title ++ " participle") ++
frameTable (
tr (th "Case" ++ th "Form") ++
auxParticipleRow "Nominative" Nom p forms ++
auxParticipleRow "Accusative" Acc p forms ++
auxParticipleRow "Dative-locative" Dat p forms ++
auxParticipleRow "Genitive" Gen p forms ++
auxParticipleRow "Ablative" Abl p forms ++
auxParticipleRow "Instrumental" Inst p forms ++
auxParticipleRow "Comitative" Com p forms ++
auxParticipleRow "Directional" Dir p forms) ;
auxParticipleRow : Str -> RCase -> Participle -> (VVVerbForm => Str) -> Str =
\label,c,p,forms -> tr (th label ++ td (forms ! VVParticiple p c)) ;
}
+119 -2
View File
@@ -1,8 +1,125 @@
--# -path=.:../common:../abstract
concrete ExtendMon of Extend =
CatMon ** ExtendFunctor
CatMon ** ExtendFunctor - [
VPS, ListVPS, VPI, ListVPI,
ListComp, ListImp,
CompoundN, CompoundAP,
PresPartAP, PastPartAP, PastPartAgentAP,
PassVPSlash, PassAgentVPSlash, ProgrVPSlash,
GerundCN, GerundNP, GerundAdv, WithoutVP, ByVP, InOrderToVP,
ApposNP, PositAdVAdj,
MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS,
MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV,
BaseComp, ConsComp, ConjComp,
BaseImp, ConsImp, ConjImp,
ReflPron, ReflPoss, AdvRNP, AdvRVP, AdvRAP, ReflRNP, ReflA2RNP, PossPronRNP,
UseDAP, UseDAPMasc, UseDAPFem
]
with
(Grammar = GrammarMon) ** {
(Grammar = GrammarMon) **
open Prelude, ResMon, ParadigmsMon in {
lincat
VPS, VPI = {s : Str} ;
[VPS], [VPI] = {s1, s2 : Str} ;
[Comp] = {s1, s2 : RCase => Str} ;
[Imp] = {s1, s2 : Polarity => ImpForm => Str} ;
lin
CompoundN n1 n2 = {
s = \\sf => n1.s ! SF Sg NNom ++ n2.s ! sf
} ;
CompoundAP n a = {s = n.s ! SF Sg NNom ++ a.s} ;
PresPartAP vp = {
s = vp.compl ! Nom ++ vp.embedCompl ! Nom ++ vp.adv ++
(vp.s ! VPPart ClPres Pos Nom).fin
} ;
PastPartAP vp = {
s = vp.compl ! Nom ++ vp.embedCompl ! Nom ++ vp.adv ++
(vp.s ! VPPass Passive (ClPast Perf)).fin
} ;
PastPartAgentAP vp np = {
s = np.s ! Inst ++ vp.compl ! Nom ++ vp.embedCompl ! Nom ++ vp.adv ++
(vp.s ! VPPass Passive (ClPast Perf)).fin
} ;
PassVPSlash vp = {
s = \\_ => vp.s ! VPPass Passive ClPres ;
compl = vp.compl ; adv = vp.adv ; embedCompl = vp.embedCompl ; vt = vp.vt
} ;
PassAgentVPSlash vp np = insertObj (\\_ => np.s ! Inst) (PassVPSlash vp) ;
ProgrVPSlash vp = vp ;
GerundCN vp = {s = \\_,_ => infVP vp Nom} ;
GerundNP vp = {
s = \\rc => infVP vp rc ; n = Sg ; p = P3 ; isPron = False ; isDef = True
} ;
GerundAdv vp = {s = infVP vp Inst} ;
WithoutVP vp = {s = infVP vp Nom ++ BIND ++ "гүйгээр"} ;
ByVP vp = {s = infVP vp Inst} ;
InOrderToVP vp = {s = infVP vp Dat ++ "тулд"} ;
ApposNP np app = np ** {s = \\rc => np.s ! rc ++ "," ++ app.s ! Nom} ;
PositAdVAdj a = a ;
MkVPS temp pol vp = {
s = vp.compl ! Nom ++ vp.embedCompl ! Nom ++ vp.adv ++
(vp.s ! VPFin temp.t temp.a pol.p).fin ++
(vp.s ! VPFin temp.t temp.a pol.p).aux
} ;
BaseVPS x y = {s1 = x.s ; s2 = y.s} ;
ConsVPS x xs = {s1 = x.s ++ "," ++ xs.s1 ; s2 = xs.s2} ;
ConjVPS conj xs = {s = xs.s1 ++ conj.s2 ++ xs.s2} ;
PredVPS np vps = {s = \\_ => np.s ! Nom ++ vps.s} ;
MkVPI vp = {s = infVP vp Nom} ;
BaseVPI x y = {s1 = x.s ; s2 = y.s} ;
ConsVPI x xs = {s1 = x.s ++ "," ++ xs.s1 ; s2 = xs.s2} ;
ConjVPI conj xs = {s = xs.s1 ++ conj.s2 ++ xs.s2} ;
ComplVPIVV vv vpi = insertObj (\\_ => vpi.s) (predV (auxToVerb vv)) ;
BaseComp x y = {s1 = x.s ; s2 = y.s} ;
ConsComp x xs = {
s1 = \\rc => x.s ! rc ++ "," ++ xs.s1 ! rc ; s2 = xs.s2
} ;
ConjComp conj xs = {s = \\rc => xs.s1 ! rc ++ conj.s2 ++ xs.s2 ! rc} ;
BaseImp x y = {s1 = x.s ; s2 = y.s} ;
ConsImp x xs = {
s1 = \\p,f => x.s ! p ! f ++ "," ++ xs.s1 ! p ! f ; s2 = xs.s2
} ;
ConjImp conj xs = {s = \\p,f => xs.s1 ! p ! f ++ conj.s2 ++ xs.s2 ! p ! f} ;
ReflPron = lin RNP {
s = reflPron ! Sg ; n = Sg ; p = P3 ; isPron = True ; isDef = True ; lock_NP = <>
} ;
ReflPoss num cn = lin RNP {
s = \\rc => reflPron ! Sg ! Gen ++ cn.s ! num.n ! toNCase rc Definite ;
n = num.n ; p = P3 ; isPron = False ; isDef = True ; lock_NP = <>
} ;
AdvRNP np prep rnp = lin RNP {
s = \\rc => np.s ! rc ++ rnp.s ! prep.rc ++ prep.s ;
n = np.n ; p = np.p ; isPron = False ; isDef = np.isDef ; lock_NP = <>
} ;
AdvRVP vp prep rnp = insertAdv (rnp.s ! prep.rc ++ prep.s) vp ;
AdvRAP ap prep rnp = {s = rnp.s ! prep.rc ++ prep.s ++ ap.s} ;
ReflRNP slash rnp = insertObj (\\_ => rnp.s ! slash.c2.rc ++ slash.c2.s) slash ;
ReflA2RNP ap rnp = {s = rnp.s ! ap.c2.rc ++ ap.c2.s ++ ap.s} ;
PossPronRNP pron num cn rnp = lin NP {
s = \\rc => pron.s ! PronCase Gen ++ cn.s ! num.n ! NNom ++ rnp.s ! rc ;
n = num.n ; p = P3 ; isPron = False ; isDef = True
} ;
UseDAP dap = {
s = dap.s ; n = dap.n ; p = P3 ; isPron = False ; isDef = dap.isDef
} ;
UseDAPMasc = UseDAP ;
UseDAPFem = UseDAP ;
}
+55 -55
View File
@@ -736,12 +736,12 @@ ugz_AdV = ss "угз" ;
yalz_AdV = ss "ялз" ;
yaz_AdV = ss "яз" ;
zad_AdV = ss "зад" ;
garui_CAdv = lin CAdv {s = " гаруй" ; c2 = noPrep Nom} ;
lugaa_CAdv = lin CAdv {s = " лугаа" ; c2 = noPrep Nom} ;
met_CAdv = lin CAdv {s = " мэт" ; c2 = noPrep Nom} ;
meterhueue_CAdv = lin CAdv {s = " мэтэрхүү" ; c2 = noPrep Nom} ;
net_CAdv = lin CAdv {s = " нэт" ; c2 = noPrep Nom} ;
shig_CAdv = lin CAdv {s = " шиг" ; c2 = noPrep Nom} ;
garui_CAdv = {s = " гаруй" ; c2 = noPrep Nom} ;
lugaa_CAdv = {s = " лугаа" ; c2 = noPrep Nom} ;
met_CAdv = {s = " мэт" ; c2 = noPrep Nom} ;
meterhueue_CAdv = {s = " мэтэрхүү" ; c2 = noPrep Nom} ;
net_CAdv = {s = " нэт" ; c2 = noPrep Nom} ;
shig_CAdv = {s = " шиг" ; c2 = noPrep Nom} ;
atlaa_Conj = mkConj "атлаа" ;
ba_Conj = mkConj "ба" ;
bas_Conj = mkConj "бас" ;
@@ -755,48 +755,48 @@ esvel_Conj = mkConj "эсвэл" ;
moertloeoe_Conj = mkConj "мөртлөө" ;
selt_Conj = mkConj "сэлт" ;
moertoeoe_Conj = mkConj "мөртөө" ;
ahu_Det = {s = "аху" ; sp = \\rc => (regN "аху").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPre,isPoss = False ; isDef = True} ;
alivaa_Det = {s = "аливаа" ; sp = \\rc => (regN "аливаа").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
anu_Det = {s = "ану" ; sp = \\rc => (regN "ану").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPre,isPoss = False ; isDef = True} ;
bishid_Det = {s = "бишид" ; sp = \\rc => (regN "бишид").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
bolgon_Det = {s = "болгон" ; sp = \\rc => (regN "болгон").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPre,isPoss = False ; isDef = True} ;
buehen_Det = {s = "бүхэн" ; sp = \\rc => (regN "бүхэн").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPre,isPoss = False ; isDef = True} ;
buehii_Det = {s = "бүхий" ; sp = \\rc => (regN "бүхий").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPre,isPoss = False ; isDef = True} ;
busad_Det = {s = "бусад" ; sp = \\rc => (regN "бусад").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
caad_Det = {s = "цаад" ; sp = \\rc => (regN "цаад").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
caadah'_Det = {s = "цаадахь" ; sp = \\rc => (regN "цаадахь").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
coem_Det = {s = "цөм" ; sp = \\rc => (regN "цөм").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
coryn_ganc_Det = {s = "цорын ганц" ; sp = \\rc => (regN "цорын ганц").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
diilenh_Det = {s = "дийлэнх" ; sp = \\rc => (regN "дийлэнх").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
enehueue_Det = {s = "энэхүү" ; sp = \\rc => (regN "энэхүү").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
ganc_Det = {s = "ганц" ; sp = \\rc => (regN "ганц").s ! (SF Sg (toNCase rc Definite)) ; isPoss = False ; isNum,isPre,isDef = True} ;
ganchan_Det = {s = "ганцхан" ; sp = \\rc => (regN "ганцхан").s ! (SF Sg (toNCase rc Definite)) ; isPoss = False ; isNum,isPre,isDef = True} ;
heseghen_Det = {s = "хэсэгхэн" ; sp = \\rc => (regN "хэсэгхэн").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
ihenh_Det = {s = "ихэнх" ; sp = \\rc => (regN "ихэнх").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
iim_Det = {s = "ийм" ; sp = \\rc => (regN "ийм").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
iimhen_Det = {s = "иймхэн" ; sp = \\rc => (regN "иймхэн").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
moenoeoehoen_Det = {s = "мөнөөхөн" ; sp = \\rc => (regN "мөнөөхөн").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
nejeed_Det = {s = "нэжээд" ; sp = \\rc => (regN "нэжээд").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss,isDef = False ; isPre = True} ;
nejgeed_Det = {s = "нэжгээд" ; sp = \\rc => (regN "нэжгээд").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss,isDef = False ; isPre = True} ;
nijeed_Det = {s = "нижээд" ; sp = \\rc => (regN "нижээд").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss,isDef = False ; isPre = True} ;
nijgeed_Det = {s = "нижгээд" ; sp = \\rc => (regN "нижгээд").s ! (SF Sg (toNCase rc Definite)) ; isNum, isPoss,isDef = False ; isPre = True} ;
noegoeoe_Det = {s = "нөгөө" ; sp = \\rc => (regN "нөгөө").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
olhon_Det = {s = "олхон" ; sp = \\rc => (regN "олхон").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
olon_Det = {s = "олон" ; sp = \\rc => (regN "олон").s ! (SF Sg (toNCase rc Definite)) ; isNum, isPoss,isDef = False ; isPre = True} ;
shaham_Det = {s = "шахам" ; sp = \\rc => (regN "шахам").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPre,isPoss = False ; isDef = True} ;
shahuu_Det = {s = "шахуу" ; sp = \\rc => (regN "шахуу").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss,isDef = False ; isPre = True} ;
tereehen_Det = {s = "тэрээхэн" ; sp = \\rc => (regN "тэрээхэн").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
terhen_Det = {s = "тэрхэн" ; sp = \\rc => (regN "тэрхэн").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
terhueue_Det = {s = "тэрхүү" ; sp = \\rc => (regN "тэрхүү").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
tiimerhueue_Det = {s = "тиймэрхүү" ; sp = \\rc => (regN "тиймэрхүү").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
tiimshig_Det = {s = "тиймшиг" ; sp = \\rc => (regN "тиймшиг").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
toechnoeoen_Det = {s = "төчнөөн" ; sp = \\rc => (regN "төчнөөн").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
tutam_Det = {s = "тутам" ; sp = \\rc => (regN "тутам").s ! (SF Sg (toNCase rc Definite)) ; isNum, isPoss,isPre = False ; isDef = True} ;
yamarvaa_Det = {s = "ямарваа" ; sp = \\rc => (regN "ямарваа").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
zarim_Det = {s = "зарим" ; sp = \\rc => (regN "зарим").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss,isDef = False ; isPre = True} ;
bueh_Det = {s = "бүх" ; sp = \\rc => (regN "бүх").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss = False ; isPre,isDef = True} ;
buer_Det = {s = "бүр" ; sp = \\rc => (regN "бүр").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss,isDef = False ; isPre = True} ;
zarim_neg_Det = {s = "зарим нэг" ; sp = \\rc => (regN "зарим нэг").s ! (SF Sg (toNCase rc Definite)) ; isNum,isPoss,isDef = False ; isPre = True} ;
ahu_Det = {s = "аху" ; sp = \\rc => (regN "аху").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre = False ; isDef = True} ;
alivaa_Det = {s = "аливаа" ; sp = \\rc => (regN "аливаа").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
anu_Det = {s = "ану" ; sp = \\rc => (regN "ану").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre = False ; isDef = True} ;
bishid_Det = {s = "бишид" ; sp = \\rc => (regN "бишид").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
bolgon_Det = {s = "болгон" ; sp = \\rc => (regN "болгон").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre = False ; isDef = True} ;
buehen_Det = {s = "бүхэн" ; sp = \\rc => (regN "бүхэн").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre = False ; isDef = True} ;
buehii_Det = {s = "бүхий" ; sp = \\rc => (regN "бүхий").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre = False ; isDef = True} ;
busad_Det = {s = "бусад" ; sp = \\rc => (regN "бусад").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
caad_Det = {s = "цаад" ; sp = \\rc => (regN "цаад").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
caadah'_Det = {s = "цаадахь" ; sp = \\rc => (regN "цаадахь").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
coem_Det = {s = "цөм" ; sp = \\rc => (regN "цөм").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
coryn_ganc_Det = {s = "цорын ганц" ; sp = \\rc => (regN "цорын ганц").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
diilenh_Det = {s = "дийлэнх" ; sp = \\rc => (regN "дийлэнх").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
enehueue_Det = {s = "энэхүү" ; sp = \\rc => (regN "энэхүү").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
ganc_Det = {s = "ганц" ; sp = \\rc => (regN "ганц").s ! (SF Sg (toNCase rc Definite)) ; n = Pl ; isPre,isDef = True} ;
ganchan_Det = {s = "ганцхан" ; sp = \\rc => (regN "ганцхан").s ! (SF Sg (toNCase rc Definite)) ; n = Pl ; isPre,isDef = True} ;
heseghen_Det = {s = "хэсэгхэн" ; sp = \\rc => (regN "хэсэгхэн").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
ihenh_Det = {s = "ихэнх" ; sp = \\rc => (regN "ихэнх").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
iim_Det = {s = "ийм" ; sp = \\rc => (regN "ийм").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
iimhen_Det = {s = "иймхэн" ; sp = \\rc => (regN "иймхэн").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
moenoeoehoen_Det = {s = "мөнөөхөн" ; sp = \\rc => (regN "мөнөөхөн").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
nejeed_Det = {s = "нэжээд" ; sp = \\rc => (regN "нэжээд").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isDef = False ; isPre = True} ;
nejgeed_Det = {s = "нэжгээд" ; sp = \\rc => (regN "нэжгээд").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isDef = False ; isPre = True} ;
nijeed_Det = {s = "нижээд" ; sp = \\rc => (regN "нижээд").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isDef = False ; isPre = True} ;
nijgeed_Det = {s = "нижгээд" ; sp = \\rc => (regN "нижгээд").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isDef = False ; isPre = True} ;
noegoeoe_Det = {s = "нөгөө" ; sp = \\rc => (regN "нөгөө").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
olhon_Det = {s = "олхон" ; sp = \\rc => (regN "олхон").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
olon_Det = {s = "олон" ; sp = \\rc => (regN "олон").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isDef = False ; isPre = True} ;
shaham_Det = {s = "шахам" ; sp = \\rc => (regN "шахам").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre = False ; isDef = True} ;
shahuu_Det = {s = "шахуу" ; sp = \\rc => (regN "шахуу").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isDef = False ; isPre = True} ;
tereehen_Det = {s = "тэрээхэн" ; sp = \\rc => (regN "тэрээхэн").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
terhen_Det = {s = "тэрхэн" ; sp = \\rc => (regN "тэрхэн").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
terhueue_Det = {s = "тэрхүү" ; sp = \\rc => (regN "тэрхүү").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
tiimerhueue_Det = {s = "тиймэрхүү" ; sp = \\rc => (regN "тиймэрхүү").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
tiimshig_Det = {s = "тиймшиг" ; sp = \\rc => (regN "тиймшиг").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
toechnoeoen_Det = {s = "төчнөөн" ; sp = \\rc => (regN "төчнөөн").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
tutam_Det = {s = "тутам" ; sp = \\rc => (regN "тутам").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre = False ; isDef = True} ;
yamarvaa_Det = {s = "ямарваа" ; sp = \\rc => (regN "ямарваа").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
zarim_Det = {s = "зарим" ; sp = \\rc => (regN "зарим").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isDef = False ; isPre = True} ;
bueh_Det = {s = "бүх" ; sp = \\rc => (regN "бүх").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isPre,isDef = True} ;
buer_Det = {s = "бүр" ; sp = \\rc => (regN "бүр").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isDef = False ; isPre = True} ;
zarim_neg_Det = {s = "зарим нэг" ; sp = \\rc => (regN "зарим нэг").s ! (SF Sg (toNCase rc Definite)) ; n = Sg ; isDef = False ; isPre = True} ;
haa_IAdv = ss "хаа" ;
haana_IAdv = ss "хаана" ;
haanaas_IAdv = ss "хаанаас" ;
@@ -1031,13 +1031,13 @@ zuurd_Prep = mkPrep Gen "зуурд" ;
deerh_Prep = mkPrep Gen "дээрх" ;
huertel_Prep = mkPrep Nom "хүртэл" ;
tusam_Prep = mkPrep Nom "тусам" ;
edgeer_Quant = {s = \\_ => "эдгээр" ; sp = \\_,nc => (regN "эдгээр").s ! SF Sg nc ; isPoss =False ; isDef = True} ;
el_Quant = {s = \\_ => "эл" ; sp = \\_,nc => (regN "эл").s ! SF Sg nc ; isPoss =False ; isDef = True} ;
ene_Quant = {s = \\_ => "энэ" ; sp = \\_,nc => (regN "энэ").s ! SF Sg nc ; isPoss =False ; isDef = True} ;
eneehen_Quant = {s = \\_ => "энээхэн" ; sp = \\_,nc => (regN "энээхэн").s ! SF Sg nc ; isPoss =False ; isDef = True} ;
enehen_Quant = {s = \\_ => "энэхэн" ; sp = \\_,nc => (regN "энэхэн").s ! SF Sg nc ; isPoss =False ; isDef = True} ;
naadah'_Quant = {s = \\_ => "наадахь" ; sp = \\_,nc => (regN "наадахь").s ! SF Sg nc ; isPoss =False ; isDef = True} ;
tedgeer_Quant = {s = \\_ => "тэдгээр" ; sp = \\_,nc => (regN "тэдгээр").s ! SF Sg nc ; isPoss =False ; isDef = True} ;
edgeer_Quant = {s = \\_ => "эдгээр" ; sp = \\_,nc => (regN "эдгээр").s ! SF Sg nc ; isDef = True} ;
el_Quant = {s = \\_ => "эл" ; sp = \\_,nc => (regN "эл").s ! SF Sg nc ; isDef = True} ;
ene_Quant = {s = \\_ => "энэ" ; sp = \\_,nc => (regN "энэ").s ! SF Sg nc ; isDef = True} ;
eneehen_Quant = {s = \\_ => "энээхэн" ; sp = \\_,nc => (regN "энээхэн").s ! SF Sg nc ; isDef = True} ;
enehen_Quant = {s = \\_ => "энэхэн" ; sp = \\_,nc => (regN "энэхэн").s ! SF Sg nc ; isDef = True} ;
naadah'_Quant = {s = \\_ => "наадахь" ; sp = \\_,nc => (regN "наадахь").s ! SF Sg nc ; isDef = True} ;
tedgeer_Quant = {s = \\_ => "тэдгээр" ; sp = \\_,nc => (regN "тэдгээр").s ! SF Sg nc ; isDef = True} ;
getel_PConj = ss "гэтэл" ;
gevch_PConj = ss "гэвч" ;
hedii_Subj = {s = "хэдий" ; isPre = True} ;
+1 -1
View File
@@ -15,5 +15,5 @@ concrete GrammarMon of Grammar =
StructuralMon,
IdiomMon,
TenseMon,
NumeralTransferMon
NamesMon
** { flags startcat = Phr ; unlexer = text ; lexer = text ; coding=utf8 ; } ;
-3
View File
@@ -35,9 +35,6 @@ lin
vps = vp.s ! VPImper Pos False
in {
s = vps.fin ;
compl = vp.compl ;
adv = vp.adv ;
ext = vp.ext
} ;
ImpP3 np vp =
+1
View File
@@ -3,6 +3,7 @@
concrete LangMon of Lang =
GrammarMon,
LexiconMon -- to compile faster, use TestLexiconMon (see LangExtraMon.gf)
,ConstructionMon
,DocumentationMon --# notpresent
** {
+15
View File
@@ -0,0 +1,15 @@
concrete NamesMon of Names = CatMon ** open Prelude, ResMon in {
oper
nameNP : (RCase => Str) -> NP = \s -> lin NP {
s = s ;
n = Sg ; p = P3 ; isPron = False ; isDef = True
} ;
lin
UseLN ln = nameNP ln.s ;
InLN ln = {s = ln.s ! Dat} ;
AdjLN ap ln = {s = \\rc => ap.s ++ ln.s ! rc} ;
GivenName gn = nameNP gn.s ;
MaleSurname sn = nameNP sn.s ;
}
+57 -34
View File
@@ -6,14 +6,14 @@ lin
DetCN det cn = {
s = \\rc => case <det.isPre,det.isDef> of {
<True,True> => case rc of {
Acc => det.s ++ cn.s ! Sg ! NAcc Definite ;
_ => det.s ++ cn.s ! Sg ! toNCase rc Definite } ;
Acc => det.s ++ cn.s ! det.n ! NAcc Definite ;
_ => det.s ++ cn.s ! det.n ! toNCase rc Definite } ;
<True,False> => case rc of {
Acc => det.s ++ cn.s ! Sg ! NAcc Indefinite ;
_ => det.s ++ cn.s ! Sg ! toNCase rc Indefinite } ;
_ => cn.s ! Sg ! NNom ++ det.sp ! rc
Acc => det.s ++ cn.s ! det.n ! NAcc Indefinite ;
_ => det.s ++ cn.s ! det.n ! toNCase rc Indefinite } ;
_ => cn.s ! det.n ! NNom ++ det.sp ! rc
} ;
n = Sg ;
n = det.n ;
p = P3 ;
isPron = False ;
isDef = det.isDef
@@ -51,12 +51,8 @@ lin
isDef = np.isDef
} ;
RelNP np rs = {
s = \\rc => rs.s ! Attributive ++ np.s ! rc ;
n = np.n ;
p = np.p ;
isPron = False ;
isDef = np.isDef
RelNP np rs = np ** {
s = \\rc => np.s ! rc ++ "," ++ rs.s ! ComplSubj
} ;
AdvNP np adv = {
@@ -66,33 +62,50 @@ lin
isPron = False ;
isDef = np.isDef
} ;
ExtAdvNP np adv = np ** {
s = \\rc => np.s ! rc ++ "," ++ adv.s
} ;
DetQuant quant num = {
s = quant.s ! Sg ++ num.s ;
s = quant.s ! num.n ++ num.s ;
sp = \\rc => quant.sp ! num.n ! NNom ++ num.sp ! rc ;
isNum = num.isNum ;
isPoss = quant.isPoss ;
isDef = True ;
n = num.n ;
isDef = quant.isDef ;
isPre = True
} ;
DetQuantOrd quant num ord = {
s = quant.s ! Sg ++ num.s ++ ord.s ;
s = quant.s ! num.n ++ num.s ++ ord.s ;
sp = \\_ => quant.sp ! num.n ! NNom ++ num.s ++ ord.s ;
isNum = num.isNum ;
isPoss = quant.isPoss ;
isDef = True ;
n = num.n ;
isDef = quant.isDef ;
isPre = True
} ;
DetNP det = {
s = \\rc => det.sp ! rc ;
n = Sg ;
n = det.n ;
p = P3 ;
isPron = False ;
isDef = True
isDef = det.isDef
} ;
DetDAP det = {
s = det.sp ;
n = det.n ;
isDef = det.isDef
} ;
AdjDAP dap ap = dap ** {
s = \\rc => ap.s ++ dap.s ! rc
} ;
CountNP det np = {
s = \\rc => det.s ++ np.s ! Abl ;
n = np.n ; p = np.p ; isPron = False ; isDef = det.isDef
} ;
UseN,UseN2 = \noun -> {
s = \\n,nc => noun.s ! SF n nc
} ;
@@ -100,15 +113,14 @@ lin
PossPron p = {
s = \\_ => p.s ! PronCase Gen ;
sp = \\_,nc => p.s ! PronPoss (toRCase nc Definite) ;
isPoss = True ;
isDef = True
} ;
NumSg = {s = [] ; sp = \\_ => [] ; n = Sg ; isNum = False} ;
NumPl = {s = [] ; sp = \\_ => [] ; n = Pl ; isNum = False} ;
NumCard n = n ** {isNum = True} ;
NumSg = {s = [] ; sp = \\_ => [] ; n = Sg} ;
NumPl = {s = [] ; sp = \\_ => [] ; n = Pl} ;
NumCard n = n ** {n = Sg} ;
NumDigits,NumNumeral,NumDecimal = \numeral -> {
s = numeral.s ! NCard ;
sp = \\_ => numeral.s ! NCard ;
@@ -143,20 +155,15 @@ lin
} ;
Pl => (regN "эдгээр").s ! SF Sg nc
} ;
isPoss = False ;
isDef = True
} ;
-- the numeral neg for ‘one’ in the function as an indefinite article (Givon 1981)
IndefArt = {
s = \\n => case n of {
Sg => "нэг" ;
Pl => "нэжгээд"
} ;
s = \\_ => [] ;
sp = \\n,nc => case n of {
Sg => (regN "аль нэг").s ! SF Sg nc ;
Pl => (regN "нэжгээд").s ! SF Sg nc
} ;
isPoss = False ;
isDef = False
} ;
@@ -168,6 +175,22 @@ lin
isDef = True
} ;
PossNP cn np = {
s = \\n,nc => np.s ! Gen ++ cn.s ! n ! nc
} ;
PartNP cn np = {
s = \\n,nc => np.s ! Gen ++ cn.s ! n ! nc
} ;
QuantityNP dec mu = {
s = \\rc => case mu.isPre of {
True => mu.s ++ dec.s ! NCard ;
False => dec.s ! NCard ++ mu.s
} ;
n = dec.n ; p = P3 ; isPron = False ; isDef = False
} ;
Use2N3 n3 = {
s = n3.s ;
c2 = n3.c2
+19 -1
View File
@@ -8,7 +8,7 @@ lincat
Digit = {s : Place => DForm => CardOrd => Str} ;
Sub10 = {s : Place => DForm => CardOrd => Str ; n : Number} ;
Sub100, Sub1000 = {s : Place => CardOrd => Str ; n : Number} ;
Sub1000000 = {s : CardOrd => Str; n : Number} ;
Sub1000000, Sub1000000000, Sub1000000000000 = {s : CardOrd => Str; n : Number} ;
oper
mkCardOrd : Str -> CardOrd => Str = \unit ->
@@ -116,6 +116,7 @@ lin
} ;
pot1as2 n = n ;
pot21 = {s = \\_,co => mkCardOrd "нэг зуу" ! co ; n = Pl} ;
pot2 d = {
s = \\p => d.s ! p ! Hundred ; n = Pl
} ;
@@ -136,6 +137,23 @@ lin
s = \\co => n.s ! Attr ! NCard ++ "мянга" ++ m.s ! Indep ! co ; n = Pl
} ;
pot31 = {s = mkCardOrd "нэг мянга" ; n = Pl} ;
pot3as4 n = n ;
pot3decimal d = {s = \\co => d.s ! NCard ++ mkCardOrd "мянга" ! co ; n = Pl} ;
pot41 = {s = mkCardOrd "нэг сая" ; n = Pl} ;
pot4 n = {s = \\co => n.s ! Attr ! NCard ++ mkCardOrd "сая" ! co ; n = Pl} ;
pot4plus n m = {
s = \\co => n.s ! Attr ! NCard ++ "сая" ++ m.s ! NCard ; n = Pl
} ;
pot4as5 n = n ;
pot4decimal d = {s = \\co => d.s ! NCard ++ mkCardOrd "сая" ! co ; n = Pl} ;
pot51 = {s = mkCardOrd "нэг тэрбум" ; n = Pl} ;
pot5 n = {s = \\co => n.s ! Attr ! NCard ++ mkCardOrd "тэрбум" ! co ; n = Pl} ;
pot5plus n m = {
s = \\co => n.s ! Attr ! NCard ++ "тэрбум" ++ m.s ! NCard ; n = Pl
} ;
pot5decimal d = {s = \\co => d.s ! NCard ++ mkCardOrd "тэрбум" ! co ; n = Pl} ;
lincat
Dig = TDigit ;
+17 -3
View File
@@ -35,9 +35,23 @@ oper
s = \\rc => (loanN pn).s ! (SF Sg (toNCase rc Definite))
} ;
mkLN : Str -> LN = \s -> lin LN {s=s} ;
mkSN : Str -> SN = \s -> lin SN {s=s} ;
mkGN : Str -> GN = \s -> lin GN {s=s} ;
nameForms : Str -> RCase => Str = \s -> case s of {
["АЯУЮ"] + _ | (_ + ["аяую"] + _) |
["ЁО"] + _ | (_ + ["ёо"] + _) |
"Ө" + _ | (_ + "ө" + _) |
["ЭҮЕИ"] + _ | (_ + ["эүеи"] + _) =>
\\rc => (loanN s).s ! SF Sg (toNCase rc Definite) ;
_ => table {
Nom => s ; Gen => s ++ BIND ++ "ийн" ; Dat => s ++ BIND ++ "д" ;
Acc => s ++ BIND ++ "ийг" ; Abl => s ++ BIND ++ "ээс" ;
Inst => s ++ BIND ++ "ээр" ; Com => s ++ BIND ++ "тэй" ;
Dir => s ++ "рүү"
}
} ;
mkLN : Str -> LN = \s -> lin LN {s = nameForms s} ;
mkSN : Str -> SN = \s -> lin SN {s = nameForms s} ;
mkGN : Str -> GN = \s -> lin GN {s = nameForms s} ;
modDecl : (Dcl -> Dcl) -> Str -> Noun =
\mod,nomSg -> mkDeclDrop (mod (chooseDcl nomSg)) nomSg ;
+2 -2
View File
@@ -339,7 +339,7 @@ oper
-- Implementation of Adjectives
mkA : (positive : Str) -> Adjective = \a -> lin A (ss a) ;
mkA : (positive : Str) -> A = \a -> lin A (ss a) ;
mkA2 : Adjective -> Prep -> A2 = \a,p -> lin A2 a ** {c2 = p} ;
@@ -374,7 +374,7 @@ oper
-- Other verbs
mkV0 : Verb -> V0 = \v -> lin V0 v ;
mkV0 : Verb -> V0 = \v -> v ;
mkVA : Verb -> VA = \v -> lin VA v ;
mkVS : Verb -> VS = \v -> lin VS v ;
mkVV : Aux -> VV = \v -> lin VV v ;
+1 -1
View File
@@ -126,7 +126,7 @@ param
oper
Noun : Type = {s : SubstForm => Str} ;
NounPhrase : Type = {s : RCase => Str; n : Number ; p : Person ; isPron : Bool ; isDef : Bool} ;
NounPhrase : Type = {s : RCase => Str; n : Number ; p : Person ; isPron : Bool} ;
param
PronForm = PronCase RCase | PronPoss RCase ;
+5 -1
View File
@@ -28,6 +28,10 @@ lin
ImpF _ True => "та" ++ neg ++ (vp.s ! VPImper pol True).fin
}
} ;
AdvImp adv imp = {
s = \\pol,f => adv.s ++ imp.s ! pol ! f
} ;
-- Clauses missing object noun phrases
@@ -62,7 +66,7 @@ lin
} ;
UseCl t p cl = {
s = \\_ => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! Part Subject
s = \\_ => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! Main
} ;
UseQCl t p cl = {
+17 -18
View File
@@ -32,7 +32,8 @@ lin
every_Det = {
s = "бүр" ;
sp = \\rc => (regN "бүр").s ! (SF Sg (toNCase rc Definite)) ;
isNum, isPoss, isPre = False ;
n = Sg ;
isPre = False ;
isDef = True
} ;
everybody_NP = mkNP "хүн бүр" Definite ;
@@ -41,7 +42,8 @@ lin
few_Det = {
s = "багагүй" ;
sp = \\rc => (regN "багагүй").s ! (SF Sg (toNCase rc Indefinite)) ;
isNum, isPoss, isDef = False ;
n = Pl ;
isDef = False ;
isPre = True
} ;
for_Prep = noPrep Dat ;
@@ -61,14 +63,15 @@ lin
in8front_Prep = mkPrep Gen "урд" ;
in_Prep = noPrep Dat ;
it_Pron = mkPron "тэр" "түүний" "түүнд" "түүнийг" "түүнээс" "түүнээр" "түүнтэй" "түүн рүү" Sg P3 ;
less_CAdv = lin CAdv {s = "бага" ; c2 = noPrep Abl} ;
less_CAdv = {s = "бага" ; c2 = noPrep Abl} ;
many_Det = {
s = "олон" ;
sp = \\rc => (regN "олон").s ! (SF Sg (toNCase rc Indefinite)) ;
isNum, isPoss, isDef = False ;
n = Pl ;
isDef = False ;
isPre = True
} ;
more_CAdv = lin CAdv {s = "илүү" ; c2 = noPrep Abl};
more_CAdv = {s = "илүү" ; c2 = noPrep Abl};
most_Predet = {
s = "ихэнх" ;
isPre = True ;
@@ -77,7 +80,8 @@ lin
much_Det = {
s = "нилээд" ;
sp = \\rc => (regN "нилээд").s ! (SF Sg (toNCase rc Indefinite)) ;
isNum, isPoss, isDef = False ;
n = Sg ;
isDef = False ;
isPre = True
} ;
must_VV = verbToAux (regV ("хэрэгтэй байх")) ;
@@ -100,13 +104,15 @@ lin
someSg_Det = {
s = "зарим нэг" ;
sp = \\rc => (regN "зарим нэг").s ! (SF Sg (toNCase rc Indefinite)) ;
isNum, isPoss, isDef = False ;
n = Sg ;
isDef = False ;
isPre = True
} ;
somePl_Det = {
s = "зарим" ;
sp = \\rc => (regN "зарим").s ! (SF Sg (toNCase rc Indefinite)) ;
isNum, isPoss, isDef = False ;
n = Pl ;
isDef = False ;
isPre = True
} ;
something_NP = mkNP "ямар нэгэн юм" Indefinite ;
@@ -124,7 +130,6 @@ lin
} ;
Pl => (regN "тэдгээр").s ! SF Sg nc
};
isPoss = False ;
isDef = True
} ;
that_Subj = {s = [] ; isPre = True} ;
@@ -146,7 +151,6 @@ lin
} ;
Pl => (regN "эдгээр").s ! SF Sg nc
} ;
isPoss = False ;
isDef = True
} ;
through_Prep = noPrep Inst ;
@@ -158,11 +162,9 @@ lin
we_Pron = mkPron "бид" "бидний" "бидэнд" "биднийг" "биднээс" "биднээр" "бидэнтэй" "бидэн рүү" Pl P1 ;
whatPl_IP = {
s = \\rc => (regN "юу").s ! SF Sg (toNCase rc Definite) ;
n = Pl
} ;
whatSg_IP = {
s = \\rc => (regN "юу").s ! SF Sg (toNCase rc Definite) ;
n = Sg
} ;
when_IAdv = ss "хэзээ" ;
when_Subj = {s = "хэрэв" ; isPre = True} ;
@@ -171,12 +173,10 @@ lin
s = \\rc => (regN "ямар").s ! SF Sg (toNCase rc Definite)
} ;
whoPl_IP = {
s = \\rc => (regN "хэн").s ! SF Sg (toNCase rc Definite) ;
n = Pl
s = \\rc => (regN "хэн").s ! SF Sg (toNCase rc Definite)
} ;
whoSg_IP = {
s = \\rc => (regN "хэн").s ! SF Sg (toNCase rc Definite) ;
n = Sg
s = \\rc => (regN "хэн").s ! SF Sg (toNCase rc Definite)
} ;
why_IAdv = ss "яагаад" ;
with_Prep = noPrep Com ;
@@ -188,7 +188,6 @@ lin
no_Quant = {
s = \\_ => "ямар ч" ;
sp = \\_,nc => (regN "ямар ч").s ! SF Sg nc ;
isPoss = False ;
isDef = False
} ;
not_Predet = {
@@ -202,7 +201,7 @@ lin
nobody_NP = mkNP "хэн ч" Definite ;
nothing_NP = mkNP "юу ч" Definite ;
except_Prep = mkPrep Abl "гадна" ;
as_CAdv = lin CAdv {s = "шиг" ; c2 = noPrep Nom} ;
as_CAdv = {s = "шиг" ; c2 = noPrep Nom} ;
have_V2 = mkV2 (mkV "байх") ;
lin language_title_Utt = ss "Монгол" ;
+2
View File
@@ -9,6 +9,8 @@ lin
ComplVV v vp = insertObj (\\_ => infVP vp Nom) (predV (auxToVerb v)) ;
ExtAdvVP vp adv = insertAdv ("," ++ adv.s) vp ;
ComplVS v s = insertEmbedCompl (s.s ! Main ++ "гэж") (predV v) ;
ComplVQ v qs = insertEmbedCompl (qs.s ! QIndir) (predV v) ;