added nominative determiner for numerals

This commit is contained in:
krasimir
2008-02-19 18:04:48 +00:00
parent f90ba44620
commit 07eab287ed
2 changed files with 50 additions and 28 deletions

View File

@@ -20,14 +20,16 @@ lin n9 = mkDigit "
lin pot01 = lin pot01 =
{s = table { {s = table {
unit => table { unit => table {
NCard DMasc Indef => "åäèí" ; NCard DMascIndef => "åäèí" ;
NCard DMascPersonal Indef => "åäèí" ; NCard DMascDef => "åäèíèÿ" ;
NCard DFem Indef => "åäíà" ; NCard DMascNomDef => "åäèíèÿò" ;
NCard DNeut Indef => "åäíî" ; NCard DMascPersonalIndef => "åäèí" ;
NCard DMasc Def => "åäèíèÿ" ; NCard DMascPersonalDef => "åäèíèÿ" ;
NCard DMascPersonal Def => "åäèíèÿ" ; NCard DMascPersonalNomDef => "åäèíèÿò" ;
NCard DFem Def => "åäíàòà" ; NCard DFemIndef => "åäíà" ;
NCard DNeut Def => "åäíîòî" ; NCard DFemDef => "åäíàòà" ;
NCard DNeutIndef => "åäíî" ;
NCard DNeutDef => "åäíîòî" ;
NOrd aform => (mkAdjective "ïúðâè" NOrd aform => (mkAdjective "ïúðâè"
"ïúðâèÿ" "ïúðâèÿ"
"ïúðâèÿò" "ïúðâèÿò"
@@ -52,12 +54,12 @@ lin pot1to19 d = {s = d.s ! teen; n = Pl; i = True} ;
lin pot0as1 n = {s = n.s ! unit; n = n.n; i = True} ; lin pot0as1 n = {s = n.s ! unit; n = n.n; i = True} ;
lin pot1 d = {s = d.s ! ten; n = Pl; i = True} ; lin pot1 d = {s = d.s ! ten; n = Pl; i = True} ;
lin pot1plus d e = { lin pot1plus d e = {
s = \\c => d.s ! ten ! NCard DMasc Indef ++ "è" ++ e.s ! unit ! c ; n = Pl; i = False} ; s = \\c => d.s ! ten ! NCard DMascIndef ++ "è" ++ e.s ! unit ! c ; n = Pl; i = False} ;
lin pot1as2 n = n ; lin pot1as2 n = n ;
lin pot2 n = {s = \\c => n.s ! hundred ! c; n = Pl; i = True} ; lin pot2 n = {s = \\c => n.s ! hundred ! c; n = Pl; i = True} ;
lin pot2plus d e = { lin pot2plus d e = {
s = \\c => d.s ! hundred ! NCard DMasc Indef ++ case e.i of {False => []; True => "è"} ++ e.s ! c ; s = \\c => d.s ! hundred ! NCard DMascIndef ++ case e.i of {False => []; True => "è"} ++ e.s ! c ;
n = Pl ; n = Pl ;
i = False i = False
} ; } ;
@@ -66,12 +68,12 @@ lin pot2as3 n = n ;
lin pot3 n = { lin pot3 n = {
s = \\c => case n.n of { s = \\c => case n.n of {
Sg => mkCardOrd "õèëÿäà" "õèëÿäà" "õèëÿäà" "õèëÿäåí" ! c ; Sg => mkCardOrd "õèëÿäà" "õèëÿäà" "õèëÿäà" "õèëÿäåí" ! c ;
Pl => n.s ! NCard DFem Indef ++ mkCardOrd "õèëÿäè" "õèëÿäè" "õèëÿäè" "õèëÿäåí" ! c Pl => n.s ! NCard DFemIndef ++ mkCardOrd "õèëÿäè" "õèëÿäè" "õèëÿäè" "õèëÿäåí" ! c
} ; } ;
n = Pl n = Pl
} ; } ;
lin pot3plus n m = { lin pot3plus n m = {
s = \\c => (pot3 n).s ! NCard DMasc Indef ++ case m.i of {False => []; True => "è"} ++ m.s ! c ; s = \\c => (pot3 n).s ! NCard DMascIndef ++ case m.i of {False => []; True => "è"} ++ m.s ! c ;
n = Pl n = Pl
} ; } ;
@@ -85,7 +87,7 @@ lin pot3plus n m = {
IDig d = d ** {tail = T1} ; IDig d = d ** {tail = T1} ;
IIDig d i = { IIDig d i = {
s = \\o => d.s ! NCard DMasc Indef ++ commaIf i.tail ++ i.s ! o ; s = \\o => d.s ! NCard DMascIndef ++ commaIf i.tail ++ i.s ! o ;
n = Pl ; n = Pl ;
tail = inc i.tail tail = inc i.tail
} ; } ;
@@ -117,7 +119,7 @@ lin pot3plus n m = {
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "òè") ; mkDig : Str -> TDigit = \c -> mk2Dig c (c + "òè") ;
mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> { mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> {
s = table {NCard _ _ => c ; NOrd aform => (regAdjective o).s ! aform} ; s = table {NCard _ => c ; NOrd aform => (regAdjective o).s ! aform} ;
n = n n = n
} ; } ;

View File

@@ -62,8 +62,20 @@ resource ResBul = ParamX ** open Prelude in {
--2 For $Numeral$ --2 For $Numeral$
DGender = DMasc | DMascPersonal | DFem | DNeut ; DGenderSpecies =
CardOrd = NCard DGender Species | NOrd AForm ; DMascIndef
| DMascDef
| DMascNomDef
| DMascPersonalIndef
| DMascPersonalDef
| DMascPersonalNomDef
| DFemIndef
| DFemDef
| DNeutIndef
| DNeutDef
;
CardOrd = NCard DGenderSpecies | NOrd AForm ;
DForm = unit | teen | ten | hundred ; DForm = unit | teen | ten | hundred ;
--2 Transformations between parameter types --2 Transformations between parameter types
@@ -320,12 +332,7 @@ resource ResBul = ParamX ** open Prelude in {
mkCardOrd : Str -> Str -> Str -> Str -> CardOrd => Str = mkCardOrd : Str -> Str -> Str -> Str -> CardOrd => Str =
\dva, dvama, dve, vtori -> \dva, dvama, dve, vtori ->
table { table {
NCard dg Indef => digitGender dva dvama dve ! dg ; NCard dg => digitGender dva dvama dve ! dg ;
NCard dg Def => case digitGender dva dvama dve ! dg of {
dves+"òà" => dves+"òàòå" ;
dv+"à" => dv+"àòà" ;
x => x+"òå"
} ;
NOrd aform => let vtora = init vtori + "à" ; NOrd aform => let vtora = init vtori + "à" ;
vtoro = init vtori + "î" vtoro = init vtori + "î"
in (mkAdjective vtori in (mkAdjective vtori
@@ -339,13 +346,26 @@ resource ResBul = ParamX ** open Prelude in {
(vtori+"òå")).s ! aform (vtori+"òå")).s ! aform
} ; } ;
digitGender : Str -> Str -> Str -> DGender => Str = digitGender : Str -> Str -> Str -> DGenderSpecies => Str =
\dva, dvama, dve \dva, dvama, dve
-> table { -> let addDef : Str -> Str =
DMasc => dva ; \s -> case s of {
DMascPersonal => dvama ; dves+"òà" => dves+"òàòå" ;
_ => dve dv+"à" => dv+"àòà" ;
} ; x => x+"òå"
}
in table {
DMascIndef => dva ;
DMascDef => addDef dva ;
DMascNomDef => addDef dva ;
DMascPersonalIndef => dvama ;
DMascPersonalDef => addDef dvama ;
DMascPersonalNomDef => addDef dvama ;
DFemIndef => dve ;
DFemDef => addDef dve ;
DNeutIndef => dve ;
DNeutDef => addDef dve
} ;
mkIP : Str -> GenNum -> {s : Str ; gn : GenNum} = mkIP : Str -> GenNum -> {s : Str ; gn : GenNum} =
\s,gn -> { \s,gn -> {