forked from GitHub/gf-core
395 lines
14 KiB
Plaintext
395 lines
14 KiB
Plaintext
--# -path=.:../abstract:../common
|
||
concrete DocumentationBul of Documentation = CatBul ** open
|
||
ResBul,
|
||
HTML in {
|
||
|
||
lincat
|
||
Inflection = {t : Str; s1,s2,s3 : Str} ;
|
||
Document = {s : Str} ;
|
||
Tag = {s : Str} ;
|
||
|
||
lin
|
||
InflectionN n = {
|
||
t = "същ" ;
|
||
s1= heading1 ("Съществително"++
|
||
case n.g of {
|
||
AMasc Human => "(м.р.л.)" ;
|
||
AMasc NonHuman => "(м.р.)" ;
|
||
AFem => "(ж.р.)" ;
|
||
ANeut => "(ср.р.)"
|
||
}) ;
|
||
s2= frameTable (
|
||
tr (intagAttr "th" "rowspan=\"3\"" "ед.ч." ++
|
||
th "нечленувано" ++ td (n.s ! (NF Sg Indef))) ++
|
||
tr (th "членувано" ++ td (n.s ! (NF Sg Def))) ++
|
||
tr (th "пълен член" ++ td (n.s ! NFSgDefNom)) ++
|
||
tr (intagAttr "th" "rowspan=\"2\"" "мн.ч." ++
|
||
th "нечленувано" ++ td (n.s ! (NF Pl Indef))) ++
|
||
tr (th "членувано" ++ td (n.s ! (NF Pl Def))) ++
|
||
tr (intagAttr "th" "colspan=\"2\"" "звателна форма" ++ td (n.s ! NFVocative)) ++
|
||
tr (intagAttr "th" "colspan=\"2\"" "бройна форма" ++ td (n.s ! NFPlCount))
|
||
) ;
|
||
s3= heading1 ("Прилагателно") ++
|
||
frameTable (
|
||
tr (intagAttr "th" "rowspan=\"7\"" "ед.ч." ++
|
||
intagAttr "th" "rowspan=\"3\"" "мн.ч." ++
|
||
th "нечленувано" ++
|
||
td (n.rel ! (ASg Masc Indef))) ++
|
||
tr (th "непълен член" ++ td (n.rel ! (ASg Masc Def))) ++
|
||
tr (th "пълен член" ++ td (n.rel ! ASgMascDefNom)) ++
|
||
tr (intagAttr "th" "rowspan=\"2\"" "ж.р." ++
|
||
th "нечленувано" ++ td (n.rel ! (ASg Fem Indef))) ++
|
||
tr (th "членувано" ++ td (n.rel ! (ASg Fem Def))) ++
|
||
tr (intagAttr "th" "rowspan=\"2\"" "ср.р." ++
|
||
th "нечленувано" ++ td (n.rel ! (ASg Neut Indef))) ++
|
||
tr (th "членувано" ++ td (n.rel ! (ASg Neut Def))) ++
|
||
tr (intagAttr "th" "colspan=\"2\" rowspan=\"2\"" "мн.ч." ++
|
||
th "нечленувано" ++ td (n.rel ! (APl Indef))) ++
|
||
tr (th "членувано" ++ td (n.rel ! (APl Def)))
|
||
)
|
||
} ;
|
||
|
||
InflectionN2,InflectionN3 = \n -> {
|
||
t = "същ" ;
|
||
s1= heading1 ("Съществително "++
|
||
case n.g of {
|
||
AMasc Human => "(м.р.л.)" ;
|
||
AMasc NonHuman => "(м.р.)" ;
|
||
AFem => "(ж.р.)" ;
|
||
ANeut => "(ср.р.)"
|
||
}) ;
|
||
s2= frameTable (
|
||
tr (intagAttr "th" "rowspan=\"3\"" "ед.ч." ++
|
||
th "нечленувано" ++ td (n.s ! (NF Sg Indef))) ++
|
||
tr (th "членувано" ++ td (n.s ! (NF Sg Def))) ++
|
||
tr (th "пълен член" ++ td (n.s ! NFSgDefNom)) ++
|
||
tr (intagAttr "th" "rowspan=\"2\"" "мн.ч." ++
|
||
th "нечленувано" ++ td (n.s ! (NF Pl Indef))) ++
|
||
tr (th "членувано" ++ td (n.s ! (NF Pl Def))) ++
|
||
tr (intagAttr "th" "colspan=\"2\"" "звателна форма" ++ td (n.s ! NFVocative)) ++
|
||
tr (intagAttr "th" "colspan=\"2\"" "бройна форма" ++ td (n.s ! NFPlCount))
|
||
) ;
|
||
s3 = ""
|
||
} ;
|
||
|
||
InflectionA, InflectionA2 = \a -> {
|
||
t = "пр" ;
|
||
s1= heading1 ("Прилагателно") ;
|
||
s2= frameTable (
|
||
tr (intagAttr "th" "rowspan=\"7\"" "ед.ч." ++
|
||
intagAttr "th" "rowspan=\"3\"" "мн.ч." ++
|
||
th "нечленувано" ++
|
||
td (a.s ! (ASg Masc Indef))) ++
|
||
tr (th "непълен член" ++ td (a.s ! (ASg Masc Def))) ++
|
||
tr (th "пълен член" ++ td (a.s ! ASgMascDefNom)) ++
|
||
tr (intagAttr "th" "rowspan=\"2\"" "ж.р." ++
|
||
th "нечленувано" ++ td (a.s ! (ASg Fem Indef))) ++
|
||
tr (th "членувано" ++ td (a.s ! (ASg Fem Def))) ++
|
||
tr (intagAttr "th" "rowspan=\"2\"" "ср.р." ++
|
||
th "нечленувано" ++ td (a.s ! (ASg Neut Indef))) ++
|
||
tr (th "членувано" ++ td (a.s ! (ASg Neut Def))) ++
|
||
tr (intagAttr "th" "colspan=\"2\" rowspan=\"2\"" "мн.ч." ++
|
||
th "нечленувано" ++ td (a.s ! (APl Indef))) ++
|
||
tr (th "членувано" ++ td (a.s ! (APl Def)))
|
||
) ;
|
||
s3= ""
|
||
} ;
|
||
|
||
InflectionAdv = \adv -> {
|
||
t = "нар" ;
|
||
s1= heading1 ("Наречие") ;
|
||
s2= paragraph (adv.s) ;
|
||
s3= ""
|
||
} ;
|
||
|
||
InflectionPrep = \prep -> {
|
||
t = "пр" ;
|
||
s1= heading1 ("Предлог") ;
|
||
s2= paragraph (prep.s) ;
|
||
s3= ""
|
||
} ;
|
||
|
||
InflectionV v = {
|
||
t = "гл" ;
|
||
s1= heading1 ("Глагол") ++
|
||
pp "подлог" ++
|
||
case v.vtype of {
|
||
VNormal => "" ;
|
||
VMedial c => reflClitics ! c ;
|
||
VPhrasal c => personalClitics ! c ! GSg Masc ! P3
|
||
} ++ v.s ! Imperf ! VPres Sg P3 ;
|
||
s2= inflVerb v ;
|
||
s3= ""
|
||
} ;
|
||
|
||
InflectionV2 v = {
|
||
t = "гл" ;
|
||
s1= heading1 ("Глагол") ++
|
||
pp "подлог" ++
|
||
case v.vtype of {
|
||
VNormal => "" ;
|
||
VMedial c => reflClitics ! c ;
|
||
VPhrasal c => personalClitics ! c ! GSg Masc ! P3
|
||
} ++
|
||
v.s ! Imperf ! VPres Sg P3 ++
|
||
v.c2.s ++
|
||
pp "допълнение";
|
||
s2= inflVerb v ;
|
||
s3= ""
|
||
} ;
|
||
|
||
InflectionV3 v = {
|
||
t = "гл" ;
|
||
s1= heading1 ("Глагол") ++
|
||
pp "подлог" ++
|
||
case v.vtype of {
|
||
VNormal => "" ;
|
||
VMedial c => reflClitics ! c ;
|
||
VPhrasal c => personalClitics ! c ! GSg Masc ! P3
|
||
} ++
|
||
v.s ! Imperf ! VPres Sg P3 ++
|
||
v.c2.s ++
|
||
pp "арг1"++
|
||
v.c3.s ++
|
||
pp "арг2";
|
||
s2= inflVerb v ;
|
||
s3= ""
|
||
} ;
|
||
|
||
InflectionV2V v = {
|
||
t = "гл" ;
|
||
s1= pp "подлог" ++
|
||
case v.vtype of {
|
||
VNormal => "" ;
|
||
VMedial c => reflClitics ! c ;
|
||
VPhrasal c => personalClitics ! c ! GSg Masc ! P3
|
||
} ++
|
||
v.s ! Imperf ! VPres Sg P3 ++
|
||
v.c2.s ++
|
||
pp "допълнение"++
|
||
v.c3.s ++
|
||
"да" ++ pp "глагол";
|
||
s2= inflVerb v ;
|
||
s3= ""
|
||
} ;
|
||
|
||
InflectionV2S v = {
|
||
t = "гл" ;
|
||
s1= pp "подлог" ++
|
||
case v.vtype of {
|
||
VNormal => "" ;
|
||
VMedial c => reflClitics ! c ;
|
||
VPhrasal c => personalClitics ! c ! GSg Masc ! P3
|
||
} ++
|
||
v.s ! Imperf ! VPres Sg P3 ++
|
||
v.c2.s ++
|
||
pp "допълнение"++
|
||
v.c3.s ++
|
||
"че" ++ pp "изречение";
|
||
s2= inflVerb v ;
|
||
s3= ""
|
||
} ;
|
||
|
||
InflectionV2Q v = {
|
||
t = "гл" ;
|
||
s1= pp "подлог" ++
|
||
case v.vtype of {
|
||
VNormal => "" ;
|
||
VMedial c => reflClitics ! c ;
|
||
VPhrasal c => personalClitics ! c ! GSg Masc ! P3
|
||
} ++
|
||
v.s ! Imperf ! VPres Sg P3 ++
|
||
v.c2.s ++
|
||
pp "допълнение"++
|
||
v.c3.s ++
|
||
pp "въпрос";
|
||
s2= inflVerb v ;
|
||
s3= ""
|
||
} ;
|
||
|
||
InflectionV2A v = {
|
||
t = "гл" ;
|
||
s1= pp "подлог" ++
|
||
case v.vtype of {
|
||
VNormal => "" ;
|
||
VMedial c => reflClitics ! c ;
|
||
VPhrasal c => personalClitics ! c ! GSg Masc ! P3
|
||
} ++
|
||
v.s ! Imperf ! VPres Sg P3 ++
|
||
v.c2.s ++
|
||
pp "допълнение"++
|
||
pp "прилагателно";
|
||
s2= inflVerb v ;
|
||
s3= ""
|
||
} ;
|
||
|
||
InflectionVV = \v -> {
|
||
t = "гл" ;
|
||
s1= pp "подлог" ++
|
||
case v.vtype of {
|
||
VNormal => "" ;
|
||
VMedial c => reflClitics ! c ;
|
||
VPhrasal c => personalClitics ! c ! GSg Masc ! P3
|
||
} ++
|
||
v.s ! Imperf ! VPres Sg P3 ++
|
||
case v.typ of {
|
||
VVInf => "да" ++ pp "глагол";
|
||
VVGerund => pp "деепричастие"
|
||
};
|
||
s2= inflVerb v ;
|
||
s3= ""
|
||
} ;
|
||
|
||
InflectionVS = \v -> {
|
||
t = "гл" ;
|
||
s1= pp "подлог" ++
|
||
case v.vtype of {
|
||
VNormal => "" ;
|
||
VMedial c => reflClitics ! c ;
|
||
VPhrasal c => personalClitics ! c ! GSg Masc ! P3
|
||
} ++
|
||
v.s ! Imperf ! VPres Sg P3 ++
|
||
"че" ++ pp "изречение";
|
||
s2= inflVerb v ;
|
||
s3= ""
|
||
} ;
|
||
|
||
InflectionVQ = \v -> {
|
||
t = "гл" ;
|
||
s1= pp "подлог" ++
|
||
case v.vtype of {
|
||
VNormal => "" ;
|
||
VMedial c => reflClitics ! c ;
|
||
VPhrasal c => personalClitics ! c ! GSg Masc ! P3
|
||
} ++
|
||
v.s ! Imperf ! VPres Sg P3 ++
|
||
pp "въпрос";
|
||
s2= inflVerb v ;
|
||
s3= ""
|
||
} ;
|
||
|
||
InflectionVA = \v -> {
|
||
t = "гл" ;
|
||
s1= pp "подлог" ++
|
||
case v.vtype of {
|
||
VNormal => "" ;
|
||
VMedial c => reflClitics ! c ;
|
||
VPhrasal c => personalClitics ! c ! GSg Masc ! P3
|
||
} ++
|
||
v.s ! Imperf ! VPres Sg P3 ++
|
||
pp "прилагателно";
|
||
s2= inflVerb v ;
|
||
s3= ""
|
||
} ;
|
||
|
||
oper
|
||
inflVerb : Verb -> Str = \v ->
|
||
(heading2 ("Несвършен вид") ++
|
||
heading3 ("Изявително наклонение") ++
|
||
heading4 ("Сегашно време") ++
|
||
finite Imperf VPres ++
|
||
heading4 ("Минало свършено време (аорист)") ++
|
||
finite Imperf VAorist ++
|
||
heading4 ("Минало несвършено време (имперфект)") ++
|
||
finite Imperf VImperfect ++
|
||
heading3 ("Повелително наклонение") ++
|
||
imperative Imperf ++
|
||
heading3 ("Причастия (отглаголни прилагателни)") ++
|
||
heading4 ("Минало страдателно причастие") ++
|
||
participle Imperf VPassive ++
|
||
heading4 ("Минало свършено деятелно причастие") ++
|
||
participle Imperf VPerfect ++
|
||
heading4 ("Минало несвършено деятелно причастие") ++
|
||
participle Imperf VPluPerfect ++
|
||
heading4 ("Сегашно деятелно причастие") ++
|
||
participle Imperf VPresPart ++
|
||
heading2 ("Свършен вид") ++
|
||
heading3 ("Изявително наклонение") ++
|
||
heading4 ("Сегашно време") ++
|
||
finite Perf VPres ++
|
||
heading4 ("Минало свършено време (аорист)") ++
|
||
finite Perf VAorist ++
|
||
heading4 ("Минало несвършено време (имперфект)") ++
|
||
finite Perf VImperfect ++
|
||
heading3 ("Повелително наклонение") ++
|
||
imperative Perf ++
|
||
heading3 ("Причастия (отглаголни прилагателни)") ++
|
||
heading4 ("Минало страдателно причастие") ++
|
||
participle Perf VPassive ++
|
||
heading4 ("Минало свършено деятелно причастие") ++
|
||
participle Perf VPerfect ++
|
||
heading4 ("Минало несвършено деятелно причастие") ++
|
||
participle Perf VPluPerfect ++
|
||
heading1 ("Отглаголно съществително") ++
|
||
frameTable (
|
||
tr (intagAttr "th" "rowspan=\"2\"" "ед.ч." ++
|
||
th "нечленувано" ++ td (v.s ! Imperf ! VNoun (NF Sg Indef))) ++
|
||
tr (th "членувано" ++ td (v.s ! Imperf ! VNoun (NF Sg Def))) ++
|
||
tr (intagAttr "th" "rowspan=\"2\"" "мн.ч." ++
|
||
th "нечленувано" ++ td (v.s ! Imperf ! VNoun (NF Pl Indef))) ++
|
||
tr (th "членувано" ++ td (v.s ! Imperf ! VNoun (NF Pl Def)))
|
||
) ++
|
||
heading1 ("Деепричастие (отглаголно наречие)") ++
|
||
paragraph (v.s ! Imperf ! VGerund))
|
||
where {
|
||
finite : Aspect -> (Number -> Person -> VForm) -> Str = \aspect,f ->
|
||
frameTable (
|
||
tr (th "" ++
|
||
th "ед.ч." ++
|
||
th "мн.ч.") ++
|
||
tr (th "1 л." ++
|
||
td (v.s ! aspect ! f Sg P1) ++
|
||
td (v.s ! aspect ! f Pl P1)) ++
|
||
tr (th "2 л." ++
|
||
td (v.s ! aspect ! f Sg P2) ++
|
||
td (v.s ! aspect ! f Pl P2)) ++
|
||
tr (th "3 л." ++
|
||
td (v.s ! aspect ! f Sg P3) ++
|
||
td (v.s ! aspect ! f Pl P3))
|
||
) ;
|
||
|
||
imperative : Aspect -> Str = \aspect ->
|
||
frameTable (
|
||
tr (th "ед.ч." ++
|
||
th "мн.ч.") ++
|
||
tr (td (v.s ! aspect ! VImperative Sg) ++
|
||
td (v.s ! aspect ! VImperative Pl))
|
||
) ;
|
||
|
||
participle : Aspect -> (AForm -> VForm) -> Str = \aspect,f ->
|
||
frameTable (
|
||
tr (intagAttr "th" "rowspan=\"7\"" "ед.ч." ++
|
||
intagAttr "th" "rowspan=\"3\"" "м.р." ++
|
||
th "нечленувано" ++
|
||
td (v.s ! aspect ! f (ASg Masc Indef))) ++
|
||
tr (th "непълен член" ++
|
||
td (v.s ! aspect ! f (ASg Masc Def))) ++
|
||
tr (th "пълен член" ++
|
||
td (v.s ! aspect ! f ASgMascDefNom)) ++
|
||
tr (intagAttr "th" "rowspan=\"2\"" "ж.р." ++
|
||
th "нечленувано" ++
|
||
td (v.s ! aspect ! f (ASg Fem Indef))) ++
|
||
tr (th "членувано" ++
|
||
td (v.s ! aspect ! f (ASg Fem Def))) ++
|
||
tr (intagAttr "th" "rowspan=\"2\"" "ср.р." ++
|
||
th "нечленувано" ++
|
||
td (v.s ! aspect ! f (ASg Neut Indef))) ++
|
||
tr (th "членувано" ++
|
||
td (v.s ! aspect ! f (ASg Neut Def))) ++
|
||
tr (intagAttr "th" "rowspan=\"2\" colspan=\"2\"" "мн.ч." ++
|
||
th "нечленувано" ++
|
||
td (v.s ! aspect ! f (APl Indef))) ++
|
||
tr (th "членувано" ++
|
||
td (v.s ! aspect ! f (APl Def)))
|
||
) ;
|
||
} ;
|
||
|
||
pp : Str -> Str = \s -> "<"+s+">";
|
||
|
||
lin
|
||
MkDocument b i e = {s = i.s1 ++ b.s ++ i.s2 ++ i.s3 ++ e.s} ;
|
||
MkTag i = {s = i.t} ;
|
||
|
||
}
|
||
|