mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-23 09:52:55 -06:00
added nominative determiner for numerals
This commit is contained in:
@@ -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
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -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,12 +346,25 @@ 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} =
|
||||||
|
|||||||
Reference in New Issue
Block a user