mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-01 11:18:55 -06:00
added ordinal numbers
This commit is contained in:
@@ -38,7 +38,10 @@ lincat ACard = {s : Str} ;
|
|||||||
lincat Ord = {s : Gender => Number => Case => Str} ;
|
lincat Ord = {s : Gender => Number => Case => Str} ;
|
||||||
lincat DAP = {s : Gender => Case => Str ; n : Number ; sp : Species} ;
|
lincat DAP = {s : Gender => Case => Str ; n : Number ; sp : Species} ;
|
||||||
lincat S = {s : Str} ;
|
lincat S = {s : Str} ;
|
||||||
lincat Numeral = {s : Gender => Case => Str ; n : Number} ;
|
lincat Numeral = {
|
||||||
|
s : CardOrd => Gender => Case => Str ;
|
||||||
|
n : Number
|
||||||
|
} ;
|
||||||
lincat Digits = {s : Str ; n : Number} ;
|
lincat Digits = {s : Str ; n : Number} ;
|
||||||
lincat Decimal = {s : Str ; n : Number ; hasDot : Bool} ;
|
lincat Decimal = {s : Str ; n : Number ; hasDot : Bool} ;
|
||||||
lincat Conj = {s : Str} ;
|
lincat Conj = {s : Str} ;
|
||||||
|
|||||||
@@ -88,13 +88,13 @@ lin
|
|||||||
NumCard card = card ** {hasCard = True} ;
|
NumCard card = card ** {hasCard = True} ;
|
||||||
NumDigits digits = {s = \\_,_ => digits.s ; n = Pl} ;
|
NumDigits digits = {s = \\_,_ => digits.s ; n = Pl} ;
|
||||||
NumDecimal dec = {s = \\_,_ => dec.s ; n = Pl} ;
|
NumDecimal dec = {s = \\_,_ => dec.s ; n = Pl} ;
|
||||||
NumNumeral numeral = numeral ;
|
NumNumeral numeral = {s=numeral.s ! NCard; n=numeral.n} ;
|
||||||
AdNum adn card = {s = \\g,c => adn.s ++ card.s ! g ! c ; n = card.n} ;
|
AdNum adn card = {s = \\g,c => adn.s ++ card.s ! g ! c ; n = card.n} ;
|
||||||
OrdDigits digits = {s = \\_,_,_ => digits.s} ;
|
OrdDigits digits = {s = \\_,_,_ => digits.s ++ BIND ++ "."} ;
|
||||||
OrdNumeral numeral = {s = \\g,_,c => numeral.s ! g ! c} ;
|
OrdNumeral numeral = {s = \\g,n,c => numeral.s ! NOrd n ! g ! c} ;
|
||||||
OrdSuperl a = {s = a.s} ;
|
OrdSuperl a = {s = a.s} ;
|
||||||
OrdNumeralSuperl numeral a = {
|
OrdNumeralSuperl numeral a = {
|
||||||
s = \\g,n,c => numeral.s ! g ! c ++ a.s ! g ! n ! c
|
s = \\g,n,c => numeral.s ! NOrd n ! g ! c ++ a.s ! g ! n ! c
|
||||||
} ;
|
} ;
|
||||||
MassNP cn = {
|
MassNP cn = {
|
||||||
s = \\c => cn.s ! Indef ! Sg ! c ;
|
s = \\c => cn.s ! Indef ! Sg ! c ;
|
||||||
|
|||||||
@@ -1,80 +1,241 @@
|
|||||||
concrete NumeralFao of Numeral = CatFao [Numeral, Digits, Decimal] ** open Prelude, ResFao in {
|
concrete NumeralFao of Numeral = CatFao [Numeral, Digits, Decimal] ** open Prelude, ResFao in {
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
Digit = {s : Gender => Case => Str ; n : Number ; teen : Str ; ten : Str} ;
|
Digit = {
|
||||||
Sub10, Sub100, Sub1000, Sub1000000, Sub1000000000, Sub1000000000000 =
|
s,teen,ten : CardOrd => Gender => Case => Str ;
|
||||||
{s : Gender => Case => Str ; n : Number} ;
|
n : Number ;
|
||||||
|
} ;
|
||||||
|
Sub10 = {
|
||||||
|
s : CardOrd => Gender => Case => Str ;
|
||||||
|
hundredth, thousandth, millionth, milliardth : Gender => Case => Str ;
|
||||||
|
n : Number
|
||||||
|
} ;
|
||||||
|
Sub100, Sub1000 = {
|
||||||
|
s : CardOrd => Gender => Case => Str ;
|
||||||
|
thousandth, millionth, milliardth : Gender => Case => Str ;
|
||||||
|
n : Number
|
||||||
|
} ;
|
||||||
|
Sub1000000, Sub1000000000, Sub1000000000000 =
|
||||||
|
{s : CardOrd => Gender => Case => Str ; n : Number} ;
|
||||||
Dig = {s : Str; n : Number} ;
|
Dig = {s : Str; n : Number} ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
num n = n ;
|
num n = n ;
|
||||||
|
|
||||||
n2 = {s = table {
|
n2 = {
|
||||||
Masc => caseList "tveir" "tveir" "tveimum" "tveggja" ;
|
s = table {
|
||||||
Fem => caseList "tvær" "tvær" "tveimum" "tveggja" ;
|
NCard => table {
|
||||||
Neuter => caseList "tvey" "tvey" "tveimum" "tveggja"
|
Masc => caseList "tveir" "tveir" "tveimum" "tveggja" ;
|
||||||
} ;
|
Fem => caseList "tvær" "tvær" "tveimum" "tveggja" ;
|
||||||
teen = "tólv" ;
|
Neuter => caseList "tvey" "tvey" "tveimum" "tveggja"
|
||||||
ten = "tjúgu" ;
|
} ;
|
||||||
n = Pl
|
NOrd n => table {
|
||||||
} ;
|
Masc => case n of {
|
||||||
n3 = {s = table {
|
Sg => caseList "annar" "annan" "øðrum" "annars" ;
|
||||||
Masc => caseList "tríggir" "tríggjar" "trimum" "tríggja" ;
|
Pl => caseList "aðrir" "aðrar" "øðrum" "annara"
|
||||||
Fem => caseList "tríggjar" "tríggjar" "trimum" "tríggja" ;
|
} ;
|
||||||
Neuter => caseList "trý" "trý" "trimum" "tríggja"
|
Fem => case n of {
|
||||||
} ;
|
Sg => caseList "onnur" "aðra" "aðrari" "annarar" ;
|
||||||
teen = "trettan" ;
|
Pl => caseList "aðrar" "aðrar" "øðrum" "annara"
|
||||||
ten = "tríati" ;
|
} ;
|
||||||
n = Pl
|
Neuter => case n of {
|
||||||
} ;
|
Sg => caseList "annað" "annað" "øðrum" "annars" ;
|
||||||
n4 = mkDigit "fýra" "fjúrtan" "fýrati" ;
|
Pl => caseList "onnur" "onnur" "øðrum" "annara"
|
||||||
n5 = mkDigit "fimm" "fimtan" "fimmti" ;
|
}
|
||||||
n6 = mkDigit "seks" "sekstan" "seksti" ;
|
}
|
||||||
n7 = mkDigit "sjey" "seytjan" "sjeyti" ;
|
} ;
|
||||||
n8 = mkDigit "átta" "átjan" "áttati" ;
|
teen = table {
|
||||||
n9 = mkDigit "níggju" "nítjan" "níti" ;
|
NCard => \\_,_ => "tólv" ;
|
||||||
|
NOrd n => mkWeakOrd "tólvti" ! n
|
||||||
|
} ;
|
||||||
|
ten = table {
|
||||||
|
NCard => \\_,_ => "tjúgu" ;
|
||||||
|
NOrd n => mkWeakOrd "tjúgundi" ! n
|
||||||
|
} ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
n3 = {
|
||||||
|
s = table {
|
||||||
|
NCard => table {
|
||||||
|
Masc => caseList "tríggir" "tríggjar" "trimum" "tríggja" ;
|
||||||
|
Fem => caseList "tríggjar" "tríggjar" "trimum" "tríggja" ;
|
||||||
|
Neuter => caseList "trý" "trý" "trimum" "tríggja"
|
||||||
|
} ;
|
||||||
|
NOrd n => mkOrdForms "triði" "triðja" "triðju" ! n
|
||||||
|
} ;
|
||||||
|
teen = table {
|
||||||
|
NCard => \\_,_ => "trettan" ;
|
||||||
|
NOrd n => mkWeakOrd "trettandi" ! n
|
||||||
|
} ;
|
||||||
|
ten = table {
|
||||||
|
NCard => \\_,_ => "tríati" ;
|
||||||
|
NOrd n => mkWeakOrd "tretivundi" ! n
|
||||||
|
} ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
n4 = mkDigit "fýra" "fjúrtan" "fýrati" "fjórði" "fjúrtandi" "fjørutandi" ;
|
||||||
|
n5 = mkDigit "fimm" "fimtan" "fimmti" "fimti" "fimtandi" "fimtandi" ;
|
||||||
|
n6 = mkDigit "seks" "sekstan" "seksti" "sætti" "sekstandi" "sekstandi" ;
|
||||||
|
n7 = mkDigit "sjey" "seytjan" "sjeyti" "sjeyndi" "seytjandi" "sjútandi" ;
|
||||||
|
n8 = mkDigit "átta" "átjan" "áttati" "áttandi" "átjandi" "áttandi" ;
|
||||||
|
n9 = mkDigit "níggju" "nítjan" "níti" "níggjundi" "nítjandi" "nítandi" ;
|
||||||
|
|
||||||
pot01 = {
|
pot01 = {
|
||||||
s = table {
|
s = table {
|
||||||
Masc => caseList "ein" "ein" "einum" "eins" ;
|
NCard => table {
|
||||||
Fem => caseList "einar" "eina" "einari" "einar" ;
|
Masc => caseList "ein" "ein" "einum" "eins" ;
|
||||||
Neuter => caseList "eitt" "eitt" "einum" "eins"
|
Fem => caseList "einar" "eina" "einari" "einar" ;
|
||||||
|
Neuter => caseList "eitt" "eitt" "einum" "eins"
|
||||||
|
} ;
|
||||||
|
NOrd n => mkWeakOrd "fyrsti" ! n
|
||||||
} ;
|
} ;
|
||||||
|
hundredth = mkWeakOrd "hundraðandi" ! Sg ;
|
||||||
|
thousandth = mkWeakOrd "túsundandi" ! Sg ;
|
||||||
|
millionth = mkWeakOrd "milliónandi" ! Sg ;
|
||||||
|
milliardth = mkWeakOrd "milliardandi" ! Sg ;
|
||||||
n = Sg
|
n = Sg
|
||||||
} ;
|
} ;
|
||||||
pot0 d = {s = d.s ; n = d.n} ;
|
pot0 d = d ** {
|
||||||
|
hundredth = mkCompoundOrd (numBase d) "hundraðandi" ! Pl ;
|
||||||
|
thousandth = mkCompoundOrd (numBase d) "túsundandi" ! Pl ;
|
||||||
|
millionth = mkCompoundOrd (numBase d) "milliónandi" ! Pl ;
|
||||||
|
milliardth = mkCompoundOrd (numBase d) "milliardandi" ! Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
pot0as1 n = n ;
|
pot0as1 n = n ;
|
||||||
pot110 = {
|
|
||||||
|
pot110 =
|
||||||
|
let ten =
|
||||||
|
table {
|
||||||
|
Neuter => \\_ => "ti" ;
|
||||||
|
_ => \\_ => "tíggju"
|
||||||
|
} ;
|
||||||
|
in mkCardOrd ten
|
||||||
|
(mkWeakOrd "tíggjundi") ** {
|
||||||
|
thousandth = \\g,c => ten ! g ! Nom ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => ten ! g ! Nom ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => ten ! g ! Nom ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
|
||||||
|
};
|
||||||
|
|
||||||
|
pot111 =
|
||||||
|
mkCardOrd (\\_,_ => "ellivu")
|
||||||
|
(mkWeakOrd "ellivti") ** {
|
||||||
|
thousandth = \\g,c => "ellivu" ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => "ellivu" ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => "ellivu" ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
|
||||||
|
};
|
||||||
|
|
||||||
|
pot1to19 d =
|
||||||
|
mkCardOrd (d.teen ! NCard)
|
||||||
|
(\\n => d.teen ! NOrd n) ** {
|
||||||
|
thousandth = \\g,c => d.teen ! NCard ! g ! Nom ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => d.teen ! NCard ! g ! Nom ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => d.teen ! NCard ! g ! Nom ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
|
||||||
|
};
|
||||||
|
|
||||||
|
pot1 d =
|
||||||
|
mkCardOrd (d.ten ! NCard)
|
||||||
|
(\\n => d.ten ! NOrd n) ** {
|
||||||
|
thousandth = \\g,c => d.ten ! NCard ! g ! Nom ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => d.ten ! NCard ! g ! Nom ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => d.ten ! NCard ! g ! Nom ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
|
||||||
|
} ;
|
||||||
|
pot1plus d e = {
|
||||||
s = table {
|
s = table {
|
||||||
Masc => \\_ => "tíggju" ;
|
NCard => \\g,c => e.s ! NCard ! g ! c ++ "og" ++ d.ten ! NCard ! g ! Nom ;
|
||||||
Fem => \\_ => "tíggju" ;
|
NOrd n => \\g,c => d.ten ! NCard ! g ! c ++ "og" ++ e.s ! NOrd n ! g ! Nom
|
||||||
Neuter => \\_ => "ti"
|
} ;
|
||||||
|
thousandth = \\g,c => d.ten ! NCard ! g ! Nom ++ "og" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => d.ten ! NCard ! g ! Nom ++ "og" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => d.ten ! NCard ! g ! Nom ++ "og" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pot1as2 n = n ;
|
||||||
|
|
||||||
|
pot21 =
|
||||||
|
mkCardOrd (\\_,_ => "hundrað")
|
||||||
|
(mkWeakOrd "hundraðandi") ** {
|
||||||
|
thousandth = \\g,c => "hundrað" ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => "hundrað" ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => "hundrað" ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pot2 d =
|
||||||
|
mkCardOrd (\\_,_ => numBase d ++ "hundrað")
|
||||||
|
(\\_ => d.hundredth) ** {
|
||||||
|
thousandth = \\g,c => numBase d ++ "hundrað" ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => numBase d ++ "hundrað" ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => numBase d ++ "hundrað" ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pot2plus d e = {
|
||||||
|
s = table {
|
||||||
|
NCard => \\g,c => numBase d ++ "hundrað" ++ e.s ! NCard ! g ! c ;
|
||||||
|
NOrd n => \\g,c => numBase d ++ "hundrað" ++ "og" ++ e.s ! NOrd n ! g ! c
|
||||||
|
} ;
|
||||||
|
thousandth = \\g,c => numBase d ++ "hundrað" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "túsundandi" ! Pl ! g ! Nom ;
|
||||||
|
millionth = \\g,c => numBase d ++ "hundrað" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "milliónandi" ! Pl ! g ! Nom ;
|
||||||
|
milliardth = \\g,c => numBase d ++ "hundrað" ++ e.s ! NCard ! g ! c ++ mkWeakOrd "milliardandi" ! Pl ! g ! Nom ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pot2as3 n = n ;
|
||||||
|
|
||||||
|
pot31 = mkCardOrd (\\_,_ => "túsund")
|
||||||
|
(mkWeakOrd "túsundandi") ;
|
||||||
|
|
||||||
|
pot3 n = mkCardOrd (\\_,_ => numBase n ++ "túsund")
|
||||||
|
(\\_ => n.thousandth) ;
|
||||||
|
|
||||||
|
pot3plus n m = {
|
||||||
|
s = table {
|
||||||
|
NCard => \\g,c => numBase n ++ "túsund" ++ m.s ! NCard ! g ! c ;
|
||||||
|
NOrd num => \\g,c => numBase n ++ "túsund" ++ "og" ++ m.s ! NOrd num ! g ! c
|
||||||
} ;
|
} ;
|
||||||
n = Pl
|
n = Pl
|
||||||
} ;
|
} ;
|
||||||
pot111 = mkNum "ellivu" Pl ;
|
|
||||||
pot1to19 d = mkNum d.teen Pl ;
|
|
||||||
pot1 d = mkNum d.ten Pl ;
|
|
||||||
pot1plus d e = {s = \\g,c => e.s ! g ! c ++ "og" ++ d.ten ; n = Pl} ;
|
|
||||||
pot1as2 n = n ;
|
|
||||||
pot21 = mkNum "hundrað" Pl ;
|
|
||||||
pot2 d = mkNum (numBase d ++ "hundrað") Pl ;
|
|
||||||
pot2plus d e = {s = \\g,c => numBase d ++ "hundrað" ++ e.s ! g ! c ; n = Pl} ;
|
|
||||||
pot2as3 n = n ;
|
|
||||||
pot31 = mkNum "túsund" Pl ;
|
|
||||||
pot3 n = mkNum (numBase n ++ "túsund") Pl ;
|
|
||||||
pot3plus n m = {s = \\g,c => numBase n ++ "túsund" ++ m.s ! g ! c ; n = Pl} ;
|
|
||||||
pot3as4 n = n ;
|
pot3as4 n = n ;
|
||||||
pot3decimal d = mkNum (d.s ++ "túsund") Pl ;
|
|
||||||
pot41 = mkNum "millión" Pl ;
|
pot3decimal d = mkCardOrd (\\_,_ => d.s ++ "túsund")
|
||||||
pot4 n = mkNum (numBase n ++ "millión") Pl ;
|
(\\_,_,_ => d.s ++ "túsundandi") ;
|
||||||
pot4plus n m = {s = \\g,c => numBase n ++ "millión" ++ m.s ! g ! c ; n = Pl} ;
|
|
||||||
|
pot41 = mkCardOrd (\\_,_ => "millión")
|
||||||
|
(mkWeakOrd "milliónandi") ;
|
||||||
|
|
||||||
|
pot4 n = mkCardOrd (\\_,_ => numBase n ++ "millión")
|
||||||
|
(\\_ => n.millionth) ;
|
||||||
|
|
||||||
|
pot4plus n m = {
|
||||||
|
s = table {
|
||||||
|
NCard => \\g,c => numBase n ++ "millión" ++ m.s ! NCard ! g ! c ;
|
||||||
|
NOrd num => \\g,c => numBase n ++ "millión" ++ "og" ++ m.s ! NOrd num ! g ! c
|
||||||
|
} ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
pot4as5 n = n ;
|
pot4as5 n = n ;
|
||||||
pot4decimal d = mkNum (d.s ++ "millión") Pl ;
|
|
||||||
pot51 = mkNum "milliard" Pl ;
|
pot4decimal d = mkCardOrd (\\_,_ => d.s ++ "millión")
|
||||||
pot5 n = mkNum (numBase n ++ "milliard") Pl ;
|
(\\_,_,_ => d.s ++ "milliónandi") ;
|
||||||
pot5plus n m = {s = \\g,c => numBase n ++ "milliard" ++ m.s ! g ! c ; n = Pl} ;
|
|
||||||
pot5decimal d = mkNum (d.s ++ "milliard") Pl ;
|
pot51 = mkCardOrd (\\_,_ => "milliard")
|
||||||
|
(mkWeakOrd "milliardandi") ;
|
||||||
|
|
||||||
|
pot5 n = mkCardOrd (\\_,_ => numBase n ++ "milliard")
|
||||||
|
(\\_ => n.milliardth) ;
|
||||||
|
|
||||||
|
pot5plus n m = {
|
||||||
|
s = table {
|
||||||
|
NCard => \\g,c => numBase n ++ "milliard" ++ m.s ! NCard ! g ! c ;
|
||||||
|
NOrd num => \\g,c => numBase n ++ "milliard" ++ "og" ++ m.s ! NOrd num ! g ! c
|
||||||
|
} ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
pot5decimal d = mkCardOrd (\\_,_ => d.s ++ "milliard")
|
||||||
|
(\\_,_,_ => d.s ++ "milliardandi") ;
|
||||||
|
|
||||||
IDig d = d ;
|
IDig d = d ;
|
||||||
IIDig d ds = {s = d.s ++ BIND ++ ds.s; n = Pl} ;
|
IIDig d ds = {s = d.s ++ BIND ++ ds.s; n = Pl} ;
|
||||||
@@ -98,18 +259,58 @@ oper
|
|||||||
caseList : Str -> Str -> Str -> Str -> Case => Str = \nom,acc,dat,gen ->
|
caseList : Str -> Str -> Str -> Str -> Case => Str = \nom,acc,dat,gen ->
|
||||||
table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ;
|
table {Nom => nom ; Acc => acc ; Dat => dat ; Gen => gen} ;
|
||||||
|
|
||||||
mkNum : Str -> Number -> {s : Gender => Case => Str ; n : Number} = \str,n -> {
|
mkCardOrd :
|
||||||
s = \\_,_ => str ;
|
(Gender => Case => Str) ->
|
||||||
n = n
|
(Number => Gender => Case => Str) ->
|
||||||
} ;
|
{s : CardOrd => Gender => Case => Str ; n : Number} =
|
||||||
|
\card,ord -> {
|
||||||
|
s = table {
|
||||||
|
NCard => card ;
|
||||||
|
NOrd n => ord ! n
|
||||||
|
} ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
mkDigit : Str -> Str -> Str -> {s : Gender => Case => Str ; n : Number ; teen : Str ; ten : Str} = \str,teen,ten -> {
|
mkDigit :
|
||||||
s = \\_,_ => str ;
|
Str -> Str -> Str -> Str -> Str -> Str -> Digit =
|
||||||
teen = teen ;
|
\str,teen,ten,unitOrd,teenOrd,tenOrd -> lin Digit {
|
||||||
ten = ten ;
|
s = table {
|
||||||
n = Pl
|
NCard => \\_,_ => str ;
|
||||||
} ;
|
NOrd n => mkWeakOrd unitOrd ! n
|
||||||
|
} ;
|
||||||
|
teen = table {
|
||||||
|
NCard => \\_,_ => teen ;
|
||||||
|
NOrd n => mkWeakOrd teenOrd ! n
|
||||||
|
} ;
|
||||||
|
ten = table {
|
||||||
|
NCard => \\_,_ => ten ;
|
||||||
|
NOrd n => mkWeakOrd tenOrd ! n
|
||||||
|
} ;
|
||||||
|
n = Pl
|
||||||
|
} ;
|
||||||
|
|
||||||
numBase : {s : Gender => Case => Str ; n : Number} -> Str = \n ->
|
mkOrdForms : Str -> Str -> Str -> Number => Gender => Case => Str = \masc,obl,pl ->
|
||||||
n.s ! Neuter ! Nom ;
|
table {
|
||||||
|
Sg =>
|
||||||
|
table {
|
||||||
|
Masc => caseList masc obl obl obl ;
|
||||||
|
Fem => caseList obl pl pl pl ;
|
||||||
|
Neuter => \\_ => obl
|
||||||
|
} ;
|
||||||
|
Pl => \\_,_ => pl
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkWeakOrd : Str -> Number => Gender => Case => Str = \lemma ->
|
||||||
|
let stem : Str = init lemma in
|
||||||
|
mkOrdForms lemma (stem + "a") (stem + "u") ;
|
||||||
|
|
||||||
|
mkCompoundOrd : Str -> Str -> Number => Gender => Case => Str = \prefix,lemma ->
|
||||||
|
let stem : Str = init lemma in
|
||||||
|
mkOrdForms
|
||||||
|
(prefix ++ BIND ++ lemma)
|
||||||
|
(prefix ++ BIND ++ (stem + "a"))
|
||||||
|
(prefix ++ BIND ++ (stem + "u")) ;
|
||||||
|
|
||||||
|
numBase : {s : CardOrd => Gender => Case => Str} -> Str = \n ->
|
||||||
|
n.s ! NCard ! Neuter ! Nom ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
resource ResFao = ParamX - [Tense,Pres,Past] ** {
|
resource ResFao = ParamX - [Tense,Pres,Past] ** {
|
||||||
|
|
||||||
|
param
|
||||||
|
CardOrd = NCard | NOrd Number ;
|
||||||
|
|
||||||
param Species = Indef | Def ;
|
param Species = Indef | Def ;
|
||||||
param Case = Nom | Acc | Dat | Gen ;
|
param Case = Nom | Acc | Dat | Gen ;
|
||||||
param Gender = Masc | Fem | Neuter ;
|
param Gender = Masc | Fem | Neuter ;
|
||||||
|
|||||||
Reference in New Issue
Block a user