1
0
forked from GitHub/gf-rgl

make it possible to extend numberals beyound 1000000

This commit is contained in:
Krasimir Angelov
2018-07-27 19:17:53 +02:00
parent e7b1c47300
commit 1b4762c436
5 changed files with 36 additions and 30 deletions

View File

@@ -11,14 +11,14 @@ lincat
Sub1000000 = {s : CardOrd => NumF => Str; n : Number} ; Sub1000000 = {s : CardOrd => NumF => Str; n : Number} ;
lin num x = {s = \\c => x.s ! c ! Formal; n=x.n} ; lin num x = {s = \\c => x.s ! c ! Formal; n=x.n} ;
lin n2 = mkDigit "äâà" "äâàìà" "äâå" "âòîðè" "äâàéñåò" "äâåñòà" ; lin n2 = mkDigit "äâà" "äâàìà" "äâå" "âòîðè" "äâàéñåò" "äâåñòà" "äâåñòàòà" ;
lin n3 = mkDigit "òðè" "òðèìà" "òðè" "òðåòè" "òðèéñåò" "òðèñòà" ; lin n3 = mkDigit "òðè" "òðèìà" "òðè" "òðåòè" "òðèéñåò" "òðèñòà" "òðèñòàòà" ;
lin n4 = mkDigit "÷åòèðè" "÷åòèðèìà" "÷åòèðè" "÷åòâúðòè" "÷åòèðèéñåò" "÷åòèðèñòîòèí" ; lin n4 = mkDigit "÷åòèðè" "÷åòèðèìà" "÷åòèðè" "÷åòâúðòè" "÷åòèðèéñåò" "÷åòèðèñòîòèí" "÷åòèðèñòîòèíòå" ;
lin n5 = mkDigit "ïåò" "ïåòèìà" "ïåò" "ïåòè" "ïåòäåñåò" "ïåòñòîòèí" ; lin n5 = mkDigit "ïåò" "ïåòèìà" "ïåò" "ïåòè" "ïåòäåñåò" "ïåòñòîòèí" "ïåòñòîòèíòå" ;
lin n6 = mkDigit "øåñò" "øåñòèìà" "øåñò" "øåñòè" "øåéñåò" "øåñòñòîòèí" ; lin n6 = mkDigit "øåñò" "øåñòèìà" "øåñò" "øåñòè" "øåéñåò" "øåñòñòîòèí" "øåñòñòîòèíòå" ;
lin n7 = mkDigit "ñåäåì" "ñåäìèíà" "ñåäåì" "ñåäìè" "ñåäåìäåñåò" "ñåäåìñòîòèí" ; lin n7 = mkDigit "ñåäåì" "ñåäìèíà" "ñåäåì" "ñåäìè" "ñåäåìäåñåò" "ñåäåìñòîòèí" "ñåäåìñòîòèíòå" ;
lin n8 = mkDigit "îñåì" "îñìèíà" "îñåì" "îñìè" "îñåìäåñåò" "îñåìñòîòèí" ; lin n8 = mkDigit "îñåì" "îñìèíà" "îñåì" "îñìè" "îñåìäåñåò" "îñåìñòîòèí" "îñåìñòîòèíòå" ;
lin n9 = mkDigit "äåâåò" "äåâåòèìà" "äåâåò" "äåâåòè" "äåâåòäåñåò" "äåâåòñòîòèí" ; lin n9 = mkDigit "äåâåò" "äåâåòèìà" "äåâåò" "äåâåòè" "äåâåòäåñåò" "äåâåòñòîòèí" "äåâåòñòîòèíòå" ;
lin pot01 = lin pot01 =
{s = table { {s = table {
@@ -47,7 +47,7 @@ lin pot01 =
Informal => mkCardOrd "åäèíàéñåò" "åäèíàéñåò" "åäèíàéñåò" "åäèíàéñòè" Informal => mkCardOrd "åäèíàéñåò" "åäèíàéñåò" "åäèíàéñåò" "åäèíàéñòè"
} ; } ;
ten nf => mkCardOrd "äåñåò" "äåñåòèìà" "äåñåò" "äåñåòè" ; ten nf => mkCardOrd "äåñåò" "äåñåòèìà" "äåñåò" "äåñåòè" ;
hundred => mkCardOrd100 "ñòî" "ñòîòåí" hundred => mkCardOrd100 "ñòî" "ñòîòå" "ñòîòåí"
} }
;n = Sg ;n = Sg
} ; } ;
@@ -72,15 +72,15 @@ lin pot2plus d e = {
lin pot2as3 n = n ; lin pot2as3 n = n ;
lin pot3 n = { lin pot3 n = {
s = \\c,nf => case n.n of { s = \\c,nf => case n.n of {
Sg => mkCardOrd100 "õèëÿäà" "õèëÿäåí" ! c ; Sg => mkCardOrd100 "õèëÿäà" "õèëÿäàòà" "õèëÿäåí" ! c ;
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "õèëÿäè" "õèëÿäåí" ! c Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "õèëÿäè" "õèëÿäèòå" "õèëÿäåí" ! c
} ; } ;
n = Pl n = Pl
} ; } ;
lin pot3plus n m = { lin pot3plus n m = {
s = \\c,nf => case n.n of { s = \\c,nf => case n.n of {
Sg => mkCardOrd100 "õèëÿäà" "õèëÿäåí" ! NCard (CFMasc Indef NonHuman) ; Sg => mkCardOrd100 "õèëÿäà" "õèëÿäàòà" "õèëÿäåí" ! NCard (CFMasc Indef NonHuman) ;
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "õèëÿäè" "õèëÿäåí" ! NCard (CFMasc Indef NonHuman) Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "õèëÿäè" "õèëÿäèòå" "õèëÿäåí" ! NCard (CFMasc Indef NonHuman)
} }
++ case m.i of {False => []; True => "è"} ++ m.s ! c ! nf ; ++ case m.i of {False => []; True => "è"} ++ m.s ! c ! nf ;
n = Pl n = Pl

View File

@@ -644,8 +644,8 @@ resource ResBul = ParamX ** open Prelude, Predef in {
-- For $Numeral$. -- For $Numeral$.
mkDigit : Str -> Str -> Str -> Str -> Str -> Str -> {s : DForm => CardOrd => Str} = mkDigit : Str -> Str -> Str -> Str -> Str -> Str -> Str -> {s : DForm => CardOrd => Str} =
\dva, dvama, dve, vtori, dvaiset, dvesta -> \dva, dvama, dve, vtori, dvaiset, dvesta, dvestata ->
{s = table { {s = table {
unit => mkCardOrd dva dvama dve vtori ; unit => mkCardOrd dva dvama dve vtori ;
teen nf => case nf of { teen nf => case nf of {
@@ -661,7 +661,7 @@ resource ResBul = ParamX ** open Prelude, Predef in {
dvest+"à" => dvest+"åí" ; dvest+"à" => dvest+"åí" ;
chetiristot+"èí" => chetiristot+"åí" chetiristot+"èí" => chetiristot+"åí"
} }
in mkCardOrd100 dvesta dvesten in mkCardOrd100 dvesta dvestata dvesten
} }
} ; } ;
@@ -685,10 +685,16 @@ resource ResBul = ParamX ** open Prelude, Predef in {
} }
} ; } ;
mkCardOrd100 : Str -> Str -> CardOrd => Str = mkCardOrd100 : Str -> Str -> Str -> CardOrd => Str =
\sto, stoten -> \sto, stote, stoten ->
table { table {
NCard dg => sto ; NCard (CFMasc Indef _) => sto ;
NCard (CFMasc Def _) => stote ;
NCard (CFMascDefNom _) => stote ;
NCard (CFFem Indef) => sto ;
NCard (CFFem Def) => stote ;
NCard (CFNeut Indef) => sto ;
NCard (CFNeut Def) => stote ;
NOrd aform => let stotn = init (init stoten) + last stoten ; NOrd aform => let stotn = init (init stoten) + last stoten ;
in case aform of { in case aform of {
ASg Masc Indef => stoten ; ASg Masc Indef => stoten ;

View File

@@ -80,7 +80,7 @@ concrete CatEng of Cat = CommonX - [Pol,SC,CAdv] ** open ResEng, Prelude in {
-- Numeral -- Numeral
Numeral = {s : CardOrd => Case => Str ; n : Number} ; Numeral = {s : Bool => CardOrd => Case => Str ; n : Number} ;
Digits = {s : CardOrd => Case => Str ; n : Number ; tail : DTail} ; Digits = {s : CardOrd => Case => Str ; n : Number ; tail : DTail} ;
-- Structural -- Structural

View File

@@ -77,8 +77,8 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
NumDigits n = {s,sp = \\_ => n.s ! NCard ; n = n.n} ; NumDigits n = {s,sp = \\_ => n.s ! NCard ; n = n.n} ;
OrdDigits n = {s = n.s ! NOrd} ; OrdDigits n = {s = n.s ! NOrd} ;
NumNumeral numeral = {s,sp = \\_ => numeral.s ! NCard; n = numeral.n} ; NumNumeral numeral = {s,sp = \\d => numeral.s ! d ! NCard; n = numeral.n} ;
OrdNumeral numeral = {s = numeral.s ! NOrd} ; OrdNumeral numeral = {s = numeral.s ! True ! NOrd} ;
AdNum adn num = {s = \\_,c => adn.s ++ num.s !False!c ; AdNum adn num = {s = \\_,c => adn.s ++ num.s !False!c ;
sp = \\_,c => adn.s ++ num.sp!False!c ; sp = \\_,c => adn.s ++ num.sp!False!c ;
@@ -86,7 +86,7 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
OrdSuperl a = {s = \\c => a.s ! AAdj Superl c } ; OrdSuperl a = {s = \\c => a.s ! AAdj Superl c } ;
OrdNumeralSuperl n a = {s = \\c => n.s ! NOrd ! Nom ++ a.s ! AAdj Superl c } ; OrdNumeralSuperl n a = {s = \\c => n.s ! True ! NOrd ! Nom ++ a.s ! AAdj Superl c } ;
DefArt = { DefArt = {
s = \\hasCard,n => artDef ; s = \\hasCard,n => artDef ;

View File

@@ -4,8 +4,8 @@ lincat
Digit = {s : DForm => CardOrd => Case => Str} ; Digit = {s : DForm => CardOrd => Case => Str} ;
Sub10 = {s : DForm => CardOrd => Case => Str ; n : Number} ; Sub10 = {s : DForm => CardOrd => Case => Str ; n : Number} ;
Sub100 = {s : CardOrd => Case => Str ; n : Number} ; Sub100 = {s : CardOrd => Case => Str ; n : Number} ;
Sub1000 = {s : CardOrd => Case => Str ; n : Number} ; Sub1000 = {s : Bool => CardOrd => Case => Str ; n : Number} ;
Sub1000000 = {s : CardOrd => Case => Str ; n : Number} ; Sub1000000 = {s : Bool => CardOrd => Case => Str ; n : Number} ;
lin num x = x ; lin num x = x ;
lin n2 = let two = mkNum "two" "twelve" "twenty" "second" in lin n2 = let two = mkNum "two" "twelve" "twenty" "second" in
@@ -32,15 +32,15 @@ lin pot0as1 n = {s = n.s ! unit} ** {n = n.n} ;
lin pot1 d = {s = d.s ! ten} ** {n = Pl} ; lin pot1 d = {s = d.s ! ten} ** {n = Pl} ;
lin pot1plus d e = { lin pot1plus d e = {
s = \\o,c => d.s ! ten ! NCard ! Nom ++ BIND ++ "-" ++ BIND ++ e.s ! unit ! o ! c ; n = Pl} ; s = \\o,c => d.s ! ten ! NCard ! Nom ++ BIND ++ "-" ++ BIND ++ e.s ! unit ! o ! c ; n = Pl} ;
lin pot1as2 n = n ; lin pot1as2 n = {s = \\_ => n.s; n=n.n} ;
lin pot2 d = {s = \\o,c => d.s ! unit ! NCard ! Nom ++ mkCard o "hundred" ! c} ** {n = Pl} ; lin pot2 d = {s = \\_,o,c => d.s ! unit ! NCard ! Nom ++ mkCard o "hundred" ! c} ** {n = Pl} ;
lin pot2plus d e = { lin pot2plus d e = {
s = \\o,c => d.s ! unit ! NCard ! Nom ++ "hundred" ++ "and" ++ e.s ! o ! c ; n = Pl} ; s = \\_,o,c => d.s ! unit ! NCard ! Nom ++ "hundred" ++ "and" ++ e.s ! o ! c ; n = Pl} ;
lin pot2as3 n = n ; lin pot2as3 n = n ;
lin pot3 n = { lin pot3 n = {
s = \\o,c => n.s ! NCard ! Nom ++ mkCard o "thousand" ! c ; n = Pl} ; s = \\d,o,c => n.s ! d ! NCard ! Nom ++ mkCard o "thousand" ! c ; n = Pl} ;
lin pot3plus n m = { lin pot3plus n m = {
s = \\o,c => n.s ! NCard ! Nom ++ "thousand" ++ m.s ! o ! c; n = Pl} ; s = \\d,o,c => n.s ! d ! NCard ! Nom ++ "thousand" ++ m.s ! False ! o ! c; n = Pl} ;
-- numerals as sequences of digits -- numerals as sequences of digits