summaryrefslogtreecommitdiff
path: root/next-lib/src/bulgarian/ResBul.gf
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2009-02-05 21:34:55 +0000
committerkrasimir <krasimir@chalmers.se>2009-02-05 21:34:55 +0000
commite158ed0f1c480e8d7a4cfe8cf277ec3f105fb2c4 (patch)
tree97f4be5ffdb79df5e13c395ce30ece4548f6b2dd /next-lib/src/bulgarian/ResBul.gf
parent11f9f5169796c721ec2ea527adfe8163b9271180 (diff)
Bulgarian: formal and informal numerals + small bugfix
Diffstat (limited to 'next-lib/src/bulgarian/ResBul.gf')
-rw-r--r--next-lib/src/bulgarian/ResBul.gf37
1 files changed, 31 insertions, 6 deletions
diff --git a/next-lib/src/bulgarian/ResBul.gf b/next-lib/src/bulgarian/ResBul.gf
index 09072eda0..c26a92824 100644
--- a/next-lib/src/bulgarian/ResBul.gf
+++ b/next-lib/src/bulgarian/ResBul.gf
@@ -101,7 +101,8 @@ resource ResBul = ParamX ** open Prelude in {
;
CardOrd = NCard DGenderSpecies | NOrd AForm ;
- DForm = unit | teen | ten | hundred ;
+ NumF = Formal | Informal ;
+ DForm = unit | teen NumF | ten NumF | hundred ;
--2 Transformations between parameter types
@@ -475,18 +476,24 @@ resource ResBul = ParamX ** open Prelude in {
-- For $Numeral$.
- mkDigit : Str -> Str -> Str -> Str -> Str -> {s : DForm => CardOrd => Str} =
- \dva, dvama, dve, vtori, dvesta ->
+ mkDigit : Str -> Str -> Str -> Str -> Str -> Str -> {s : DForm => CardOrd => Str} =
+ \dva, dvama, dve, vtori, dvaiset, dvesta ->
{s = table {
unit => mkCardOrd dva dvama dve vtori ;
- teen => mkCardOrd (dva+"надесет") (dva+"надесетима") (dva+"надесет") (dva+"надесети") ;
- ten => mkCardOrd (dva+"десет") (dva+"десетима") (dva+"десет") (dva+"десети") ;
+ teen nf => case nf of {
+ Formal => mkCardOrd (dva+"надесет") (dva+"надесетима") (dva+"надесет") (dva+"надесети") ;
+ Informal => mkCardOrd (dva+"найсет") (dva+"найсет") (dva+"найсет") (dva+"найсти")
+ } ;
+ ten nf => case nf of {
+ Formal => mkCardOrd (dva+"десет") (dva+"десетима") (dva+"десет") (dva+"десети") ;
+ Informal => mkCardOrd dvaiset dvaiset dvaiset (dvaiset+"и")
+ } ;
hundred => let dvesten : Str
= case dvesta of {
dvest+"а" => dvest+"ен" ;
chetiristot+"ин" => chetiristot+"ен"
}
- in mkCardOrd dvesta dvesta dvesta dvesten
+ in mkCardOrd100 dvesta dvesten
}
} ;
@@ -509,6 +516,24 @@ resource ResBul = ParamX ** open Prelude in {
}
} ;
+ mkCardOrd100 : Str -> Str -> CardOrd => Str =
+ \sto, stoten ->
+ table {
+ NCard dg => sto ;
+ NOrd aform => let stotn = init (init stoten) + last stoten ;
+ in case aform of {
+ ASg Masc Indef => stoten ;
+ ASg Masc Def => stotn+"ия" ;
+ ASgMascDefNom => stotn+"ият" ;
+ ASg Fem Indef => stotn+"а" ;
+ ASg Fem Def => stotn+"ата" ;
+ ASg Neut Indef => stotn+"о" ;
+ ASg Neut Def => stotn+"ото" ;
+ APl Indef => stotn+"и" ;
+ APl Def => stotn+"ите"
+ }
+ } ;
+
digitGenderSpecies : Str -> Str -> Str -> DGenderSpecies => Str =
\dva, dvama, dve
-> let addDef : Str -> Str =