Reorganize the ParadigmsBul & co modules. Now ParadigmsBul is auto-generated and contains all BG paradigms. The Lexicon is also largely extended

This commit is contained in:
krasimir
2008-03-13 08:28:30 +00:00
parent 418f841625
commit f056583f37
8 changed files with 1965 additions and 1110 deletions

View File

@@ -8,7 +8,11 @@
-- syntax. To build a lexicon, it is better to use $ParadigmsEng$, which
-- gives a higher-level access to this module.
resource MorphoBul = ResBul ** open Prelude, (Predef=Predef) in {
resource MorphoBul = ResBul ** open
Predef,
Prelude,
CatBul
in {
flags optimize=all ;
@@ -31,4 +35,145 @@ oper
spec = Indef
} ;
--2 Verbs
mkVerb : (_,_,_,_,_,_,_,_,_:Str) -> V =
\cheta,chete,chetoh,chetqh,chel,chetql,cheten,chetqst,cheti -> {
s = table {
VPres Sg P1 => cheta;
VPres Sg P2 => chete + "ø";
VPres Sg P3 => chete;
VPres Pl P1 => case chete of {
_ + ("à"|"ÿ") => chete + "ìå";
_ => chete + "ì"
};
VPres Pl P2 => chete + "òå";
VPres Pl P3 => case cheta of {
vika + "ì" => case chete of {
dad + "å" => dad + "àò";
vika => vika + "ò"
};
_ => cheta + "ò"
};
VAorist Sg P1 => chetoh;
VAorist Sg _ => case chetoh of {
chet+"îõ" => chete;
zova+ "õ" => zova
};
VAorist Pl P1 => chetoh + "ìå";
VAorist Pl P2 => chetoh + "òå";
VAorist Pl P3 => chetoh + "à";
VImperfect Sg P1 => chetqh;
VImperfect Sg _ => case chete of {
rabot + "è" => rabot + "eøå";
_ => chete + "øå"
};
VImperfect Pl P1 => chetqh + "ìå";
VImperfect Pl P2 => chetqh + "òå";
VImperfect Pl P3 => chetqh + "à";
VPerfect aform =>let chel1 : Str =
case chel of {
pas+"úë" => pas+"ë";
_ => chel
}
in (mkAdjective chel
(chel+"èÿ")
(chel+"èÿò")
(chel1+"a")
(chel1+"àòà")
(chel1+"î")
(chel1+"îòî")
(ia2e chel1+"è")
(ia2e chel1+"èòå")).s ! aform ;
VPluPerfect aform => regAdjective chetql ! aform ;
VPassive aform => regAdjective cheten ! aform ;
VPresPart aform => regAdjective chetqst ! aform ;
VImperative Sg => cheti;
VImperative Pl => case cheti of {
chet + "è" => chet + "åòå";
ela => ela + "òå"
};
VGerund => case chete of {
rabot + "è" => rabot + "åéêè";
_ => chete + "éêè"
}
} ;
vtype = VNormal ;
lock_V = <>
} ;
--2 Nouns
mkNoun : Str -> Str -> Str -> Str -> DGender -> N = \sg,pl,count,voc,g -> {
s = table {
NF Sg Indef => sg ;
NF Sg Def => case sg of {
_+"à"=>sg+"òà" ;
_+"ÿ"=>sg+"òà" ;
_+"î"=>sg+"òî" ;
_+"å"=>sg+"òî" ;
_+"è"=>sg+"òî" ;
s+"é"=>s +"ÿ" ;
_+("òåë"|"àð"|"ÿð"|"äåí"
|"ïúò"|"îãúí"|"ñúí"
|"êîí"|"êðàë"|"öàð"
|"çåò"|"ëàêúò"|"íîêúò")
=>sg +"ÿ" ;
_ =>case g of {
DFem => sg+"òà" ;
_ => sg+"à"
}
} ;
NF Pl Indef => pl ;
NF Pl Def => case pl of {
_+"à"=>pl+"òà" ;
_+"å"=>pl+"òå" ;
_+"è"=>pl+"òå" ;
s+"ÿ"=>s +"òà" ;
s =>s +"òå"
} ;
NFSgDefNom => case sg of {
_+"à"=>sg+"òà" ;
_+"ÿ"=>sg+"òà" ;
_+"î"=>sg+"òî" ;
_+"å"=>sg+"òî" ;
_+"è"=>sg+"òî" ;
s+"é"=>s +"ÿò" ;
_+("òåë"|"àð"|"ÿð"|"äåí"
|"ïúò"|"îãúí"|"ñúí"
|"êîí"|"êðàë"|"öàð"
|"çåò"|"ëàêúò"|"íîêúò")
=>sg+"ÿò" ;
_ =>case g of {
DFem => sg+"òà" ;
_ => sg+"úò"
}
} ;
NFPlCount => count ;
NFVocative => voc
} ;
g = g ;
lock_N = <>
} ;
--2 Adjectives
mkAdjective : (_,_,_,_,_,_,_,_,_ : Str) -> A =
\dobyr,dobria,dobriat,dobra,dobrata,dobro,dobroto,dobri,dobrite -> {
s = table {
ASg Masc Indef => dobyr ;
ASg Masc Def => dobria ;
ASgMascDefNom => dobriat ;
ASg Fem Indef => dobra ;
ASg Fem Def => dobrata ;
ASg Neut Indef => dobro ;
ASg Neut Def => dobroto ;
APl Indef => dobri ;
APl Def => dobrite
} ;
lock_A = <>
} ;
}