summaryrefslogtreecommitdiff
path: root/grammars
diff options
context:
space:
mode:
authoraarne <unknown>2004-01-29 12:57:32 +0000
committeraarne <unknown>2004-01-29 12:57:32 +0000
commitd09777a9aaeb580d8e793ad5e572296eb4c351d9 (patch)
tree8e6d54d1687bdc772cd67d91d643f246ce023776 /grammars
parentfdddeca0d08ba68b564b14359ef9b4a697cdb636 (diff)
New order among numerals.
Diffstat (limited to 'grammars')
-rw-r--r--grammars/numerals/old/hungarian.gf20
-rw-r--r--grammars/numerals/old/italian.gf43
-rw-r--r--grammars/numerals/old/polish.gf46
-rw-r--r--grammars/numerals/old/slovak.gf112
-rw-r--r--grammars/numerals/old/spanish.gf86
5 files changed, 145 insertions, 162 deletions
diff --git a/grammars/numerals/old/hungarian.gf b/grammars/numerals/old/hungarian.gf
index db5b88b6e..2489fb6ef 100644
--- a/grammars/numerals/old/hungarian.gf
+++ b/grammars/numerals/old/hungarian.gf
@@ -1,8 +1,6 @@
include numerals.Abs.gf ;
-- by Patrik Jansson, Chalmers
--- Small change by HH i.e
--- ö in kettö should be ö with tilted long Hungarian dots ad-hoc written o%
param DForm = ental | tiotal ;
param Place = attr | indep ;
@@ -13,9 +11,9 @@ lincat Sub100 = {s : Place => Str} ;
lincat Sub1000 = {s : Place => Str} ;
lincat Sub1000000 = {s : Str} ;
lin num x0 =
- {s = "/L" ++ x0.s ++ "L/"} ; -- the Latin-A-Supplement environment} ;
+ {s = x0.s} ;
lin n2 =
- {s = table {<ental,indep> => "ketto%" ;
+ {s = table {<ental,indep> => "kettö" ;
<tiotal,indep> => "húsz" ;
<ental,attr> => "két" ;
<tiotal, attr> => "huszon"}} ;
@@ -40,24 +38,24 @@ lin pot0 d =
lin pot110 =
{s = table {p => "tíz"}} ;
lin pot111 =
- {s = table {p => "tizen" + "egy"}} ;
+ {s = table {p => "tizen" ++ "egy"}} ;
lin pot1to19 d =
- {s = table {p => "tizen" ++ d.s ! <ental,indep>}} ; -- Glue!
+ {s = table {p => "tizen" ++ d.s ! <ental,indep>}} ;
lin pot0as1 n =
{s = table {p => n.s ! <ental,p>}} ;
lin pot1 d =
{s = table {p => d.s ! <tiotal,indep>}} ;
lin pot1plus d e =
- {s = table {p => (d.s ! <tiotal,attr>) ++ e.s ! <ental,indep>}} ; -- Glue!
+ {s = table {p => (d.s ! <tiotal,attr>) ++ e.s ! <ental,indep>}} ;
lin pot1as2 n =
{s = table {p => n.s ! p}} ;
lin pot2 d =
- {s = table {p => (d.s ! <ental,attr>) ++ "száz"}} ; -- Glue!
+ {s = table {p => (d.s ! <ental,attr>) ++ "száz"}} ;
lin pot2plus d e =
- {s = table {p => (d.s ! <ental,attr>) ++ "száz" ++ e.s ! indep}} ; -- Glue!
+ {s = table {p => (d.s ! <ental,attr>) ++ "száz" ++ e.s ! indep}} ;
lin pot2as3 n =
{s = n.s ! indep} ;
lin pot3 n =
- {s = n.s ! attr ++ "ezer"} ; -- Glue!
+ {s = n.s ! attr ++ "ezer"} ;
lin pot3plus n m =
- {s = n.s ! attr ++ "ezer" ++ m.s ! indep} ; -- Glue!
+ {s = n.s ! attr ++ "ezer" ++ m.s ! indep} ;
diff --git a/grammars/numerals/old/italian.gf b/grammars/numerals/old/italian.gf
index 4a453a6f6..29e15cd7b 100644
--- a/grammars/numerals/old/italian.gf
+++ b/grammars/numerals/old/italian.gf
@@ -1,39 +1,32 @@
include numerals.Abs.gf ;
--- unit + hundreds | mille are written together more often that not.
--- ten + unit are written together!
-
-param DForm = ental Pred | ton | tiotal | spctre;
+param DForm = ental Pred | ton | tiotal ;
param Num = sg | pl ;
param Pred = pred | indip ;
-oper LinDigit = {s : DForm => Str} ;
-
-lincat Digit = LinDigit ;
+lincat Digit = {s : DForm => Str} ;
lincat Sub10 = {s : DForm => Str ; n : Num} ;
lincat Sub100 = {s : Str ; n : Num} ;
lincat Sub1000 = {s : Str ; n : Num} ;
lincat Sub1000000 = {s : Str} ;
-oper vowel : Strs = strs {"u" ; "o"} ; -- uno e otto
-
-oper mkTal : Str -> Str -> Str -> LinDigit =
+oper mkTal : Str -> Str -> Str -> Lin Digit =
\tvĺ -> \tolv -> \tjugo ->
- {s = table {ental _ => tvĺ ; ton => tolv ; tiotal => tjugo ; spctre => tvĺ}} ;
+ {s = table {ental _ => tvĺ ; ton => tolv ; tiotal => tjugo}} ;
oper ss : Str -> {s : Str} = \s -> {s = s} ;
oper spl : Str -> {s : Str ; n : Num} = \s -> {s = s ; n = pl} ;
-oper mille : Str -> Num => Str = \s -> table {sg => "mille" ; pl => s ++ "mila"} ; -- Glue s + "mila"!
+oper mille : Num => Str = table {sg => "mille" ; pl => "mila"} ;
lin num x = x ;
-lin n2 = mkTal "due" "dodici" ("vent" + pre {"i" ; [] / vowel}) ;
-lin n3 = {s = table {ental _ => "tre" ; ton => "tredici" ; tiotal => ("trent" + pre {"a" ; [] / vowel}) ; spctre => "tré" } };
-lin n4 = mkTal "quattro" "quattordici" ("quarant" + pre {"a" ; [] / vowel}) ;
-lin n5 = mkTal "cinque" "quindici" ("cinquant" + pre {"a" ; [] / vowel}) ;
-lin n6 = mkTal "sei" "sedici" ("sessant" + pre {"a" ; [] / vowel}) ;
-lin n7 = mkTal "sette" "diciassette" ("settant" + pre {"a" ; [] / vowel}) ;
-lin n8 = mkTal "otto" "diciotto" ("ottant" + pre {"a" ; [] / vowel}) ;
-lin n9 = mkTal "nove" "diciannove" ("novant" + pre {"a" ; [] / vowel});
+lin n2 = mkTal "due" "dodici" "venti" ;
+lin n3 = mkTal "tre" "tredici" "trenta" ;
+lin n4 = mkTal "quattro" "quattordici" "quaranta" ;
+lin n5 = mkTal "cinque" "quindici" "cinquanta" ;
+lin n6 = mkTal "sei" "sedici" "sessanta" ;
+lin n7 = mkTal "sette" "diciassette" "settanta" ;
+lin n8 = mkTal "otto" "diciotto" "ottanta" ;
+lin n9 = mkTal "nove" "diciannove" "novanta" ;
lin pot01 = {s = table {ental pred => [] ; _ => "uno"} ; n = sg} ;
lin pot0 d = {s = table {f => d.s ! f} ; n = pl} ;
@@ -42,11 +35,11 @@ lin pot111 = spl "undici" ;
lin pot1to19 d = spl (d.s ! ton) ;
lin pot0as1 n = {s = n.s ! ental indip ; n = n.n} ;
lin pot1 d = spl (d.s ! tiotal) ;
-lin pot1plus d e = spl (d.s ! tiotal ++ e.s ! spctre) ; -- Glue!
+lin pot1plus d e = spl (d.s ! tiotal ++ e.s ! ental indip) ;
lin pot1as2 n = {s = n.s ; n = n.n} ;
-lin pot2 d = spl (d.s ! ental pred ++ "cento") ; -- Glue!
-lin pot2plus d e = spl (d.s ! ental pred ++ "cento" ++ e.s) ; -- Glue!
+lin pot2 d = spl (d.s ! ental pred ++ "cento") ;
+lin pot2plus d e = spl (d.s ! ental pred ++ "cento" ++ e.s) ;
lin pot2as3 n = {s = n.s ; n = n.n} ;
-lin pot3 n = ss ((mille n.s) ! n.n) ;
-lin pot3plus n m = ss ((mille n.s) ! n.n ++ m.s) ;
+lin pot3 n = ss (n.s ++ mille ! n.n) ;
+lin pot3plus n m = ss (n.s ++ mille ! n.n ++ m.s) ;
diff --git a/grammars/numerals/old/polish.gf b/grammars/numerals/old/polish.gf
index 379a4c36f..8ecc3839a 100644
--- a/grammars/numerals/old/polish.gf
+++ b/grammars/numerals/old/polish.gf
@@ -1,15 +1,5 @@
-- numerals in Polish, author Wojciech Mostowski, 20/9/2002
--- Did special Polish characters Harald Hammarstrom October 2003
--- e, for e,
--- c' for c'
--- s' for s'
--- a, for a,
--- l/ for l/
--- n' for n'
--- z. for z.
-
-
include numerals.Abs.gf ;
-- all different for unit digits, teens, tens and hundreds
@@ -47,47 +37,47 @@ dwiescie };
oper mkRegNum1 : Str -> LinDigit =
\siedem ->
- { s = table { unit => siedem ; teen => siedem + "nas'cie" ;
- ten => siedem + "dziesia,t" ; hund => siedem + "set"
+ { s = table { unit => siedem ; teen => siedem + "nascie" ;
+ ten => siedem + "dziesiat" ; hund => siedem + "set"
};
o = fiveup ; t = fiveup
};
oper mkRegNum2 : Str -> LinDigit =
\pie ->
- { s = table { unit => pie + "c'" ; teen => pie + "tnas'cie" ;
- ten => pie + "c'dziesia,t" ; hund => pie + "c'set"
+ { s = table { unit => pie + "c" ; teen => pie + "tnascie" ;
+ ten => pie + "cdziesiat" ; hund => pie + "cset"
};
o = fiveup ; t = fiveup
};
-oper mkTh : Str -> ThForm => Str = \s ->
- table { onlyone => "tysia,c" ; lastone => s ++ "tysie,cy" ;
- twoorthreeorfour => s ++ "tysia,ce" ; fiveup => s ++ "tysie,cy"
+oper mkTh : ThForm => Str =
+ table { onlyone => "tysiac" ; lastone => "tysiecy" ;
+ twoorthreeorfour => "tysiace" ; fiveup => "tysiecy"
};
oper ss : Str -> ThForm -> {s : Str ; t : ThForm} = \str -> \th -> {s = str; t = th}
;
-lin num x = {s = "/L" ++ x.s ++ "L/"} ; -- the Polish in Latin A supplement ;
+lin num x = x ;
-lin n2 = mkNum "dwa" "dwanas'cie" "dwadzies'cia" "dwies'cie"
+lin n2 = mkNum "dwa" "dwanascie" "dwadziescia" "dwiescie"
twoorthreeorfour ;
-lin n3 = mkNum "trzy" "trzynas'cie" "trzydzies'ci" "trzysta"
+lin n3 = mkNum "trzy" "trzynascie" "trzydziesci" "trzysta"
twoorthreeorfour ;
-lin n4 = mkNum "cztery" "czternas'cie" (variants {"czterydzies'ci" ; "czterdzies'ci"}) "czterysta"
+lin n4 = mkNum "cztery" "czternascie" "czterdziesci" "czterysta"
twoorthreeorfour ;
-lin n5 = mkRegNum2 "pie," ;
-lin n6 = mkNum "szes'c'" "szesnas'cie" "szes'c'dziesia,t" "szes'c'set" fiveup;
+lin n5 = mkRegNum2 "pie" ;
+lin n6 = mkNum "szesc" "szesnascie" "szescdziesiat" "szescset" fiveup;
lin n7 = mkRegNum1 "siedem" ;
lin n8 = mkRegNum1 "osiem" ;
-lin n9 = mkRegNum2 "dziewie," ;
+lin n9 = mkRegNum2 "dziewie" ;
lin pot01 = { s = table {hund => "sto"; f => "jeden" };
o = onlyone ; t = lastone
};
lin pot0 d = {s = table {f => d.s ! f} ; o = d.o ; t = d.t} ;
-lin pot110 = ss "dziesie,c'" fiveup ;
-lin pot111 = ss "jedenas'cie" fiveup ;
+lin pot110 = ss "dziesiec" fiveup ;
+lin pot111 = ss "jedenascie" fiveup ;
lin pot1to19 d = {s = d.s ! teen ; t = fiveup} ;
lin pot0as1 n = {s = n.s ! unit ; t = n.o} ;
lin pot1 d = {s = d.s ! ten ; t = fiveup} ;
@@ -99,6 +89,6 @@ lin pot2plus d e = { s = d.s ! hund ++ e.s ;
} ;
lin pot2as3 n = n ;
-lin pot3 n = {s = (mkTh n.s) ! n.t} ;
-lin pot3plus n m = {s = (mkTh n.s) ! n.t ++ m.s} ;
+lin pot3 n = {s = n.s ++ mkTh ! n.t} ;
+lin pot3plus n m = {s = n.s ++ mkTh ! n.t ++ m.s} ;
diff --git a/grammars/numerals/old/slovak.gf b/grammars/numerals/old/slovak.gf
index 964f37689..9e781429e 100644
--- a/grammars/numerals/old/slovak.gf
+++ b/grammars/numerals/old/slovak.gf
@@ -1,56 +1,60 @@
include numerals.Abs.gf ;
--- [c^], [s^], [c']
-
-param Size = sg | twothreefour | fiveup ;
-param DForm = unit | teen | ten | hundred ;
-
-lincat Digit = {s : DForm => Str ; size : Size} ;
-lincat Sub10 = {s : DForm => Str ; size : Size} ;
-lincat Sub100 = {s : Str; size : Size } ;
-lincat Sub1000 = {s : Str; size : Size } ;
-
-oper mkNum : Str -> Str -> Str -> Size -> Lin Digit =
- \dva -> \dvanast -> \dvadsat -> \sz ->
- { s = table {unit => dva ; teen => dvanast ; ten => dvadsat ; hund =>
-dva + "sto" };
- size = sz
- };
-
-oper mkRegNum : Str -> Lin Digit = \unit ->
- mkNum unit (unit + "nást'") (unit + "desiat") fiveup ;
-
-lin num x = {s = "/L" ++ x.s ++ "L/" } ; -- Latin A supplement encoding
-
-lin n2 = mkNum "dva" "dvanást'" "dvadsat'" twothreefour ;
-lin n3 = mkNum "tri" "trinást'" "tridsat'" twothreefour ;
-lin n4 = mkNum "s^tyri" "s^trnást'" "s^tyridsat'" twothreefour ;
-lin n5 = mkNum "pät'" "pätnást'" "pädesiat" fiveup ;
-lin n6 = mkNum "s^est'" "s^estnást'" "s^estdesiat" fiveup ;
-lin n7 = mkRegNum "sedem" ;
-lin n8 = mkRegNum "osem" ;
-lin n9 = mkNum "devät'" "devätnást'" "devätdesiat" fiveup ;
-
-lin pot01 = {s = table {unit => "jeden" ; hundred => "sto" ; _ => "dummy" } ;
- size = sg } ;
-lin pot0 d = d ;
-lin pot110 = {s = "desät'" ; size = fiveup } ;
-lin pot111 = {s = "jedenást'" ; size = fiveup };
-lin pot1to19 d = {s = d.s ! teen ; size = fiveup} ;
-lin pot0as1 n = {s = n.s ! unit ; size = n.size} ;
-lin pot1 d = {s = d.s ! ten ; size = fiveup} ;
-lin pot1plus d e = {s = variants { d.s ! ten ++ e.s ! unit ; e.s ! unit ++ "a" ++ d.s ! ten} ; size = tfSize e.size} ;
-lin pot1as2 n = n ;
-lin pot2 d = {s = d.s ! hundred ; size = fiveup} ;
-lin pot2plus d e = {s = d.s ! hundred ++ e.s ; size = tfSize e.size} ;
-lin pot2as3 n = {s = n.s } ;
-lin pot3 n = {s = (mkTh n.s) ! n.size} ;
-lin pot3plus n m = {s = (mkTh n.s) ! n.size ++ m.s} ;
-
-oper tfSize : Size -> Size = \sz ->
- table {sg => fiveup ; other => other} ! sz ;
-
-oper mkTh : Str -> Size => Str = \attr ->
- table {sg => "tisíc" ;
- twothreefour => attr ++ "tisíce" ;
- fiveup => attr ++ "tisíc" } ;
+-- by Karol Ostrovsky, Chalmers
+-- mechanically translated to new GF notation by AR
+
+param DForm = unit | teen | ten ;
+param Place = indep | prae ;
+
+lincat Numeral = {s : Str} ;
+lincat Digit = {s : {p1 : DForm ; p2 : Place} => Str} ;
+lincat Sub10 = {s : {p1 : DForm ; p2 : Place} => Str} ;
+lincat Sub100 = {s : Place => Str} ;
+lincat Sub1000 = {s : Place => Str} ;
+lincat Sub1000000 = {s : Str} ;
+lin num x0 =
+ {s = x0.s} ;
+lin n2 =
+ {s = table {{p1 = unit ; p2 = indep} => "dva" ; {p1 = unit ; p2 = prae} => "dve" ; {p1 = teen ; p2 = indep} => "dvanast" ; {p1 = teen ; p2 = prae} => "dvanast" ; {p1 = ten ; p2 = indep} => "dvadsat" ; {p1 = ten ; p2 = prae} => "dvadsat"}} ;
+lin n3 =
+ {s = table {{p1 = unit ; p2 = indep} => "tri" ; {p1 = unit ; p2 = prae} => "tri" ; {p1 = teen ; p2 = indep} => "trinast" ; {p1 = teen ; p2 = prae} => "trinast" ; {p1 = ten ; p2 = indep} => "tridsat" ; {p1 = ten ; p2 = prae} => "tridsat"}} ;
+lin n4 =
+ {s = table {{p1 = unit ; p2 = indep} => "styri" ; {p1 = unit ; p2 = prae} => "styri" ; {p1 = teen ; p2 = indep} => "strnast" ; {p1 = teen ; p2 = prae} => "strnast" ; {p1 = ten ; p2 = indep} => "styridsat" ; {p1 = ten ; p2 = prae} => "styridsat"}} ;
+lin n5 =
+ {s = table {{p1 = unit ; p2 = indep} => "pat" ; {p1 = unit ; p2 = prae} => "pat" ; {p1 = teen ; p2 = indep} => "patnast" ; {p1 = teen ; p2 = prae} => "patnast" ; {p1 = ten ; p2 = indep} => "patdesiat" ; {p1 = ten ; p2 = prae} => "patdesiat"}} ;
+lin n6 =
+ {s = table {{p1 = unit ; p2 = indep} => "sest" ; {p1 = unit ; p2 = prae} => "sest" ; {p1 = teen ; p2 = indep} => "sestnast" ; {p1 = teen ; p2 = prae} => "sestnast" ; {p1 = ten ; p2 = indep} => "sestdesiat" ; {p1 = ten ; p2 = prae} => "sestdesiat"}} ;
+lin n7 =
+ {s = table {{p1 = unit ; p2 = indep} => "sedem" ; {p1 = unit ; p2 = prae} => "sedem" ; {p1 = teen ; p2 = indep} => "sedemnast" ; {p1 = teen ; p2 = prae} => "sedemnast" ; {p1 = ten ; p2 = indep} => "sedemdesiat" ; {p1 = ten ; p2 = prae} => "sedemdesiat"}} ;
+lin n8 =
+ {s = table {{p1 = unit ; p2 = indep} => "osem" ; {p1 = unit ; p2 = prae} => "osem" ; {p1 = teen ; p2 = indep} => "osemnast" ; {p1 = teen ; p2 = prae} => "osemnast" ; {p1 = ten ; p2 = indep} => "osemdesiat" ; {p1 = ten ; p2 = prae} => "osemdesiat"}} ;
+lin n9 =
+ {s = table {{p1 = unit ; p2 = indep} => "devat" ; {p1 = unit ; p2 = prae} => "devat" ; {p1 = teen ; p2 = indep} => "devatnast" ; {p1 = teen ; p2 = prae} => "devatnast" ; {p1 = ten ; p2 = indep} => "devatdesiat" ; {p1 = ten ; p2 = prae} => "devatdesiat"}} ;
+lin pot01 =
+ {s = table {{p1 = unit ; p2 = indep} => "jedna" ; {p1 = unit ; p2 = prae} => [] ; {p1 = teen ; p2 = indep} => "jedna" ; {p1 = teen ; p2 = prae} => [] ; {p1 = ten ; p2 = indep} => "jedna" ; {p1 = ten ; p2 = prae} => []}} ;
+lin pot0 d =
+ {s = table {{p1 = unit ; p2 = indep} => d.s ! {p1 = unit ; p2 = indep} ; {p1 = unit ; p2 = prae} => d.s ! {p1 = unit ; p2 = prae} ; {p1 = teen ; p2 = indep} => d.s ! {p1 = teen ; p2 = indep} ; {p1 = teen ; p2 = prae} => d.s ! {p1 = teen ; p2 = prae} ; {p1 = ten ; p2 = indep} => d.s ! {p1 = ten ; p2 = indep} ; {p1 = ten ; p2 = prae} => d.s ! {p1 = ten ; p2 = prae}}} ;
+lin pot110 =
+ {s = table {indep => "desat" ; prae => "desat"}} ;
+lin pot111 =
+ {s = table {indep => "jedenast" ; prae => "jedenast"}} ;
+lin pot1to19 d =
+ {s = table {indep => d.s ! {p1 = teen ; p2 = indep} ; prae => d.s ! {p1 = teen ; p2 = prae}}} ;
+lin pot0as1 n =
+ {s = table {indep => n.s ! {p1 = unit ; p2 = indep} ; prae => n.s ! {p1 = unit ; p2 = indep}}} ;
+lin pot1 d =
+ {s = table {indep => d.s ! {p1 = ten ; p2 = indep} ; prae => d.s ! {p1 = ten ; p2 = prae}}} ;
+lin pot1plus d e =
+ {s = table {indep => (d.s ! {p1 = ten ; p2 = indep}) ++ e.s ! {p1 = unit ; p2 = indep} ; prae => (d.s ! {p1 = ten ; p2 = prae}) ++ e.s ! {p1 = unit ; p2 = indep}}} ;
+lin pot1as2 n =
+ {s = table {indep => n.s ! indep ; prae => n.s ! indep}} ;
+lin pot2 d =
+ {s = table {indep => (d.s ! {p1 = unit ; p2 = prae}) ++ "sto" ; prae => (d.s ! {p1 = unit ; p2 = prae}) ++ "sto"}} ;
+lin pot2plus d e =
+ {s = table {indep => (d.s ! {p1 = unit ; p2 = prae}) ++ "sto" ++ e.s ! indep ; prae => (d.s ! {p1 = unit ; p2 = prae}) ++ "sto" ++ e.s ! indep}} ;
+lin pot2as3 n =
+ {s = n.s ! indep} ;
+lin pot3 n =
+ {s = (n.s ! prae) ++ "tisic"} ;
+lin pot3plus n m =
+ {s = (n.s ! prae) ++ "tisic" ++ m.s ! indep} ;
diff --git a/grammars/numerals/old/spanish.gf b/grammars/numerals/old/spanish.gf
index 5cd4857c8..30d7e46a4 100644
--- a/grammars/numerals/old/spanish.gf
+++ b/grammars/numerals/old/spanish.gf
@@ -1,63 +1,61 @@
include numerals.Abs.gf ;
-param DForm = unit | teen | ten | hundred | veinti ;
-param Size = sg | two | pl ;
-param Uso = indep | attr ;
+-- by Carlos Gonzalia, Chalmers, 1999
+-- original source automatically translated to new GF by AR
+
+param DForm = unit | teen | ten | hundred ;
+param Modif = mod | unmod | conj ;
lincat Numeral = {s : Str} ;
-lincat Digit = {s : DForm => Str ; size : Size } ;
-lincat Sub10 = {s : DForm => Str ; size : Size } ;
-lincat Sub100 = {s : Uso => Str ; size : Size} ;
-lincat Sub1000 = {s : Uso => Str ; size : Size} ;
+lincat Digit = {inh : Modif ; s : {p1 : DForm ; p2 : Modif} => Str} ;
+lincat Sub10 = {s : {p1 : DForm ; p2 : Modif} => Str} ;
+lincat Sub100 = {s : Str} ;
+lincat Sub1000 = {s : Str} ;
lincat Sub1000000 = {s : Str} ;
-oper mkNum : Str -> Str -> Str -> Str -> Lin Digit =
- \dois -> \doze -> \vinte -> \duzentos ->
- {s = table {unit => dois ; teen => doze ; ten => vinte ; hundred => duzentos ;veinti => "veinti" + dois } ; size = pl} ;
-
-
lin num x0 =
{s = x0.s} ;
-
-lin n2 = {s = table {unit => "dos" ; teen => "doce" ; ten => "veinte" ; hundred => "doscientos" ; veinti => "veinti" + "dos" } ; size = two } ;
-lin n3 = mkNum "tres" "trece" "treinta" "trescientos" ;
-lin n4 = mkNum "cuatro" "catorce" "cuarenta" "cuatrocientos" ;
-lin n5 = mkNum "cinco" "quince" "cincuenta" "quinientos" ;
-lin n6 = {s = table {unit => "seis" ; teen => "dieciseís" ; ten => "sesenta" ; hundred => "seiscientos" ; veinti => "veinti" + "seís" } ; size = pl } ;
-lin n7 = mkNum "siete" "diecisiete" "setenta" "setecientos" ;
-lin n8 = mkNum "ocho" "dieciocho" "ochenta" "ochocientos" ;
-lin n9 = mkNum "nueve" "diecinueve" "noventa" "novecientos" ;
-
-lin pot01 = {s = table {unit => "uno" ; hundred => "cien" ; veinti => "veinti" + "uno" ; _ => "dummy"} ; size = sg} ;
-lin pot0 d = d ;
-lin pot110 =
- {s = table {_ => "diez" } ; size = pl} ;
+lin n2 =
+ {inh = mod ; s = table {{p1 = unit ; p2 = mod} => "dos" ; {p1 = unit ; p2 = unmod} => "dos" ; {p1 = unit ; p2 = conj} => "y" ++ "dos" ; {p1 = teen ; p2 = mod} => "doce" ; {p1 = teen ; p2 = unmod} => "doce" ; {p1 = teen ; p2 = conj} => "doce" ; {p1 = ten ; p2 = mod} => "veinti" ; {p1 = ten ; p2 = unmod} => "veinte" ; {p1 = ten ; p2 = conj} => "veinte" ; {p1 = hundred ; p2 = mod} => "doscientos" ; {p1 = hundred ; p2 = unmod} => "doscientos" ; {p1 = hundred ; p2 = conj} => "doscientos"}} ;
+lin n3 =
+ {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "tres" ; {p1 = unit ; p2 = unmod} => "tres" ; {p1 = unit ; p2 = conj} => "y" ++ "tres" ; {p1 = teen ; p2 = mod} => "trece" ; {p1 = teen ; p2 = unmod} => "trece" ; {p1 = teen ; p2 = conj} => "trece" ; {p1 = ten ; p2 = mod} => "treinta" ; {p1 = ten ; p2 = unmod} => "treinta" ; {p1 = ten ; p2 = conj} => "treinta" ; {p1 = hundred ; p2 = mod} => "trescientos" ; {p1 = hundred ; p2 = unmod} => "trescientos" ; {p1 = hundred ; p2 = conj} => "trescientos"}} ;
+lin n4 =
+ {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "cuatro" ; {p1 = unit ; p2 = unmod} => "cuatro" ; {p1 = unit ; p2 = conj} => "y" ++ "cuatro" ; {p1 = teen ; p2 = mod} => "catorce" ; {p1 = teen ; p2 = unmod} => "catorce" ; {p1 = teen ; p2 = conj} => "catorce" ; {p1 = ten ; p2 = mod} => "cuarenta" ; {p1 = ten ; p2 = unmod} => "cuarenta" ; {p1 = ten ; p2 = conj} => "cuarenta" ; {p1 = hundred ; p2 = mod} => "cuatrocientos" ; {p1 = hundred ; p2 = unmod} => "cuatrocientos" ; {p1 = hundred ; p2 = conj} => "cuatrocientos"}} ;
+lin n5 =
+ {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "cinco" ; {p1 = unit ; p2 = unmod} => "cinco" ; {p1 = unit ; p2 = conj} => "y" ++ "cinco" ; {p1 = teen ; p2 = mod} => "quince" ; {p1 = teen ; p2 = unmod} => "quince" ; {p1 = teen ; p2 = conj} => "quince" ; {p1 = ten ; p2 = mod} => "cincuenta" ; {p1 = ten ; p2 = unmod} => "cincuenta" ; {p1 = ten ; p2 = conj} => "cincuenta" ; {p1 = hundred ; p2 = mod} => "quinientos" ; {p1 = hundred ; p2 = unmod} => "quinientos" ; {p1 = hundred ; p2 = conj} => "quinientos"}} ;
+lin n6 =
+ {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "seis" ; {p1 = unit ; p2 = unmod} => "seis" ; {p1 = unit ; p2 = conj} => "y" ++ "seis" ; {p1 = teen ; p2 = mod} => "dieciseis" ; {p1 = teen ; p2 = unmod} => "dieciseis" ; {p1 = teen ; p2 = conj} => "dieciseis" ; {p1 = ten ; p2 = mod} => "sesenta" ; {p1 = ten ; p2 = unmod} => "sesenta" ; {p1 = ten ; p2 = conj} => "sesenta" ; {p1 = hundred ; p2 = mod} => "seiscientos" ; {p1 = hundred ; p2 = unmod} => "seiscientos" ; {p1 = hundred ; p2 = conj} => "seiscientos"}} ;
+lin n7 =
+ {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "siete" ; {p1 = unit ; p2 = unmod} => "siete" ; {p1 = unit ; p2 = conj} => "y" ++ "siete" ; {p1 = teen ; p2 = mod} => "diecisiete" ; {p1 = teen ; p2 = unmod} => "diecisiete" ; {p1 = teen ; p2 = conj} => "diecisiete" ; {p1 = ten ; p2 = mod} => "setenta" ; {p1 = ten ; p2 = unmod} => "setenta" ; {p1 = ten ; p2 = conj} => "setenta" ; {p1 = hundred ; p2 = mod} => "setecientos" ; {p1 = hundred ; p2 = unmod} => "setecientos" ; {p1 = hundred ; p2 = conj} => "setecientos"}} ;
+lin n8 =
+ {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "ocho" ; {p1 = unit ; p2 = unmod} => "ocho" ; {p1 = unit ; p2 = conj} => "y" ++ "ocho" ; {p1 = teen ; p2 = mod} => "dieciocho" ; {p1 = teen ; p2 = unmod} => "dieciocho" ; {p1 = teen ; p2 = conj} => "dieciocho" ; {p1 = ten ; p2 = mod} => "ochenta" ; {p1 = ten ; p2 = unmod} => "ochenta" ; {p1 = ten ; p2 = conj} => "ochenta" ; {p1 = hundred ; p2 = mod} => "ochocientos" ; {p1 = hundred ; p2 = unmod} => "ochocientos" ; {p1 = hundred ; p2 = conj} => "ochocientos"}} ;
+lin n9 =
+ {inh = conj ; s = table {{p1 = unit ; p2 = mod} => "nueve" ; {p1 = unit ; p2 = unmod} => "nueve" ; {p1 = unit ; p2 = conj} => "y" ++ "nueve" ; {p1 = teen ; p2 = mod} => "diecinueve" ; {p1 = teen ; p2 = unmod} => "diecinueve" ; {p1 = teen ; p2 = conj} => "diecinueve" ; {p1 = ten ; p2 = mod} => "noventa" ; {p1 = ten ; p2 = unmod} => "noventa" ; {p1 = ten ; p2 = conj} => "noventa" ; {p1 = hundred ; p2 = mod} => "novecientos" ; {p1 = hundred ; p2 = unmod} => "novecientos" ; {p1 = hundred ; p2 = conj} => "novecientos"}} ;
+lin pot01 =
+ {s = table {{p1 = unit ; p2 = mod} => "uno" ; {p1 = unit ; p2 = unmod} => "uno" ; {p1 = unit ; p2 = conj} => "y" ++ "uno" ; {p1 = teen ; p2 = mod} => "uno" ; {p1 = teen ; p2 = unmod} => "uno" ; {p1 = teen ; p2 = conj} => "y" ++ "uno" ; {p1 = ten ; p2 = mod} => "uno" ; {p1 = ten ; p2 = unmod} => "uno" ; {p1 = ten ; p2 = conj} => "y" ++ "uno" ; {p1 = hundred ; p2 = mod} => "ciento" ; {p1 = hundred ; p2 = unmod} => "cien" ; {p1 = hundred ; p2 = conj} => "y" ++ "uno"}} ;
+lin pot0 d =
+ {s = table {{p1 = unit ; p2 = mod} => d.s ! {p1 = unit ; p2 = mod} ; {p1 = unit ; p2 = unmod} => d.s ! {p1 = unit ; p2 = unmod} ; {p1 = unit ; p2 = conj} => d.s ! {p1 = unit ; p2 = conj} ; {p1 = teen ; p2 = mod} => d.s ! {p1 = teen ; p2 = mod} ; {p1 = teen ; p2 = unmod} => d.s ! {p1 = teen ; p2 = unmod} ; {p1 = teen ; p2 = conj} => d.s ! {p1 = teen ; p2 = conj} ; {p1 = ten ; p2 = mod} => d.s ! {p1 = ten ; p2 = mod} ; {p1 = ten ; p2 = unmod} => d.s ! {p1 = ten ; p2 = unmod} ; {p1 = ten ; p2 = conj} => d.s ! {p1 = ten ; p2 = conj} ; {p1 = hundred ; p2 = mod} => d.s ! {p1 = hundred ; p2 = mod} ; {p1 = hundred ; p2 = unmod} => d.s ! {p1 = hundred ; p2 = unmod} ; {p1 = hundred ; p2 = conj} => d.s ! {p1 = hundred ; p2 = conj}}} ;
+lin pot110 =
+ {s = "diez"} ;
lin pot111 =
- {s = table {_ => "once" } ; size = pl} ;
+ {s = "once"} ;
lin pot1to19 d =
- {s = table {_ => d.s ! teen } ; size = pl} ;
+ {s = d.s ! {p1 = teen ; p2 = unmod}} ;
lin pot0as1 n =
- {s = table {indep => n.s ! unit ; attr => shorten (n.s ! unit) n.size }; size = n.size } ;
+ {s = n.s ! {p1 = unit ; p2 = unmod}} ;
lin pot1 d =
- {s = table {_ => d.s ! ten } ; size = pl} ;
+ {s = d.s ! {p1 = ten ; p2 = unmod}} ;
lin pot1plus d e =
- {s = table {indep => table {two => e.s ! veinti ; _ => d.s ! ten ++ "y" ++ e.s ! unit} ! d.size ; attr => table {two => accent (e.s ! veinti) e.size ; _ => d.s ! ten ++ "y" ++ (shorten (e.s ! unit) e.size)} ! d.size } ; size = pl} ;
+ {s = (d.s ! {p1 = ten ; p2 = mod}) ++ e.s ! {p1 = unit ; p2 = d.inh}} ;
lin pot1as2 n =
- {s = table {f => n.s ! f } ; size = n.size} ;
+ {s = n.s} ;
lin pot2 d =
- {s = table {_ => d.s ! hundred } ; size = pl} ;
+ {s = d.s ! {p1 = hundred ; p2 = unmod}} ;
lin pot2plus d e =
- {s = table {f => table {sg => "ciento" ;
- _ => d.s ! hundred } ! d.size ++ e.s ! f} ; size = pl} ;
+ {s = (d.s ! {p1 = hundred ; p2 = mod}) ++ e.s} ;
lin pot2as3 n =
- {s = n.s ! indep } ;
+ {s = n.s} ;
lin pot3 n =
- {s = table {sg => "mil" ; _ => n.s ! attr ++ "mil"} ! n.size} ;
+ {s = n.s ++ "mil"} ;
lin pot3plus n m =
- {s = table {sg => "mil" ; _ => n.s ! attr ++ "mil"} ! n.size ++ m.s ! indep} ;
-
-oper accent : Str -> Size -> Str = \s -> \sz ->
- table {sg => "veintiún" ; _ => s} ! sz ;
-
-oper shorten : Str -> Size -> Str = \s -> \sz ->
- table {sg => "un" ; _ => s} ! sz ; \ No newline at end of file
+ {s = n.s ++ "mil" ++ m.s} ;