1
0
forked from GitHub/gf-core

Some new languges by Harald, plus translation scripts

This commit is contained in:
aarne
2004-01-28 12:27:59 +00:00
parent 8dff8b0e3f
commit 1b002dec90
26 changed files with 1392 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
include numerals.Abs.gf ;
param Size = sg | pl ;
param DForm = unit | ten ;
oper LinDigit = {s : DForm => Str ; size : Size } ;
oper Form = {s : Str ; size : Size } ;
lincat Numeral = {s : Str} ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = Form ;
lincat Sub1000 = Form ;
lincat Sub1000000 = {s : Str} ;
lin num x0 =
{s = x0.s} ; -- TODO: Encoding
oper mkNum : Str -> Str -> LinDigit = \mbili -> \lama ->
{s = table {unit => mbili ; ten => lama }; size = pl };
-- lin n1 = mkNum "ków" ;
lin n2 = mkNum "lámma" "labaatón";
lin n3 = mkNum "síddi?" "soddón" ;
lin n4 = mkNum "áfar" "afartón";
lin n5 = mkNum "s^án" "kontón";
lin n6 = mkNum "lí?" "lihdón";
lin n7 = mkNum "toddóbo" "toddobátan";
lin n8 = mkNum "siyéed" "siyyeétan" ;
lin n9 = mkNum "sagáal" "sagaás^an";
oper ss : Str -> Form = \s1 -> {s = s1 ; size = pl} ;
lin pot01 =
{s = table {f => "ków" }; size = sg };
lin pot0 d = d ;
lin pot110 = ss "tómon" ;
lin pot111 = ss ("tómon" ++ "i" ++ "ków") ;
lin pot1to19 d = ss ("tómon" ++ "i" ++ (d.s ! unit)) ;
lin pot0as1 n = {s = n.s ! unit ; size = n.size } ;
lin pot1 d = ss (d.s ! ten) ;
lin pot1plus d e = ss (d.s ! ten ++ "i" ++ e.s ! unit) ;
lin pot1as2 n = n ;
lin pot2 d = ss (selsg d.size (d.s ! unit) ++ "boqól" );
lin pot2plus d e = ss ((selsg d.size (d.s ! unit)) ++ "boqól" ++ e.s) ;
lin pot2as3 n = {s = n.s } ;
lin pot3 n = {s = (selsg n.size n.s) ++ "kún"} ;
lin pot3plus n m = {s = (selsg n.size n.s) ++ "kún" ++ m.s} ;
oper selsg : Size -> Str -> Str = \sz -> \attr ->
table {pl => attr ; sg => [] } ! sz ;

View File

@@ -0,0 +1,45 @@
include numerals.Abs.gf ;
oper bind : Str -> Str -> Str = \a -> \b -> a ++ b ;
param DForm = unit | teen | ten ;
oper LinDigit = {s : DForm => Str };
oper LinSub100 = {s : Str } ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = LinSub100 ;
lincat Sub1000 = LinSub100 ;
oper mkNum : Str -> LinDigit = \tri ->
{ s = table {unit => tri ; teen => tri + "mbë" + "dhjetë" ; ten => tri + "dhjetë" }};
lin num x = {s = x.s } ;
lin n2 = {s = table {unit => "dy" ; teen => "dy" + "mbë" + "dhjetë" ; ten => "njëzet" }};
lin n3 = mkNum "tre" ;
lin n4 = {s = table {unit => "katër" ; teen => "katër" + "mbë" + "dhjetë" ; ten => "dyzet" } };
lin n5 = mkNum "pesë" ;
lin n6 = mkNum "gjashtë";
lin n7 = mkNum "shtatë";
lin n8 = mkNum "tetë";
lin n9 = mkNum "nëntë";
oper mkR : Str -> LinSub100 = \n -> {s = n } ;
lin pot01 = { s = table {_ => "një" }};
lin pot0 d = d ;
lin pot110 = mkR "dhjetë" ;
lin pot111 = mkR ("një" + "mbë" + "dhjetë") ;
lin pot1to19 d = mkR (d.s ! teen) ;
lin pot0as1 n = mkR (n.s ! unit) ;
lin pot1 d = mkR (d.s ! ten) ;
lin pot1plus d e = mkR ((d.s ! ten) ++ "e" ++ (e.s ! unit)) ;
lin pot1as2 n = n ;
lin pot2 d = mkR (bind (d.s ! unit) "qind") ;
lin pot2plus d e = mkR ((bind (d.s ! unit) "qind") ++ "e" ++ e.s) ;
lin pot2as3 n = {s = n.s };
lin pot3 n = {s = n.s ++ "mijë" } ;
lin pot3plus n m = {s = n.s ++ "mijë" ++ m.s} ;

View File

@@ -0,0 +1,44 @@
include numerals.Abs.gf ;
param DForm = unit | hundred ;
oper LinDigit = {s : Str } ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = {s : Str } ;
lincat Sub1000 = {s : Str } ;
oper mkNum : Str -> LinDigit = \two ->
{s = two } ;
-- TODO: Transl.
lin num x = x ;
-- lin n1 mkNum "l-ée" ;
lin n2 = mkNum "nákee" ;
lin n3 = mkNum "tai" ;
lin n4 = mkNum "di,i," ;
lin n5 = mkNum "so,lái" ;
lin n6 = mkNum "?ehts'é,tai" ;
lin n7 = mkNum "l-á,hdi,i," ;
lin n8 = mkNum "?ehts'é,di,i," ;
lin n9 = mkNum "l-óto," ;
oper o : Str = "?ó," ;
lin pot01 = {s = "l-ée" } ;
lin pot0 d = d ;
lin pot110 = {s = variants {"honéno," ; "hóno" }} ;
lin pot111 = {s = variants {"honéno," ; "hóno" } ++ o ++ "l-ée" } ;
lin pot1to19 d = {s = (variants {"honéno," ; "hóno" }) ++ o ++ d.s } ;
lin pot0as1 n = n ;
lin pot1 d = {s = d.s ++ (variants {"honéno," ; "óno,"})} ;
lin pot1plus d e = {s = d.s ++ (variants {"honéno," ; "óno,"}) ++ o ++ e.s } ;
lin pot1as2 n = n ;
lin pot2 d = {s = d.s ++ "lak'o, óno,"} ;
lin pot2plus d e = {s = d.s ++ "lak'o, óno," ++ e.s} ;
lin pot2as3 n = n ;
lin pot3 n = {s = n.s ++ "lamíl"} ;
lin pot3plus n m = {s = n.s ++ "lamíl" ++ m.s } ;

View File

@@ -0,0 +1,59 @@
include numerals.Abs.gf ;
param DForm = unit | ten ;
param Size = sg | pl | tenplus ;
param S100 = indep | tenpart | tenelfu | sihpart ;
lincat Numeral = {s : Str} ;
oper LinDigit = {s : DForm => Str ; size : Size} ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
oper LinSub100 = {s : S100 => Str ; size : Size} ;
lincat Sub100 = LinSub100 ;
lincat Sub1000 = {s : Str ; s2 : Str ; size : Size } ;
lincat Sub1000000 = {s : Str} ;
oper mkNum : Str -> Str -> LinDigit = \hulatt -> \haya ->
{s = table {unit => hulatt ; ten => haya} ; size = pl} ;
lin num x0 =
{s = x0.s } ;
lin n2 = mkNum "hoire" "hori" ;
lin n3 = mkNum "guarebe" "goci" ;
lin n4 = mkNum "durube" "duci" ;
lin n5 = mkNum "taau" "tabi" ;
lin n6 = mkNum "jireuoo" "jari" ;
lin n7 = mkNum "doloo" "dale" ;
lin n8 = mkNum "naime" "nai" ;
lin n9 = mkNum "ise" "ire" ;
oper ss1 : Str -> Str -> Str -> LinSub100 = \assir -> \ten -> \unitpart ->
{s = table {indep => assir ; tenpart => ten ; tenelfu => [] ; sihpart => unitpart} ; size = tenplus } ;
oper ss : Str -> Str -> Str -> LinSub100 = \assir -> \ten -> \unitpart ->
{s = table {indep => assir ; tenpart => ten ; tenelfu => ten ; sihpart => unitpart} ; size = tenplus } ;
lin pot01 =
{s = table {unit => "neke" ; ten => "harebe" }; size = sg};
lin pot0 d = d ;
lin pot110 = ss1 "harebe" "neke" [] ;
lin pot111 = ss1 ("hareben" ++ "neke") "neke" "miange" ;
lin pot1to19 d = ss1 ("hareben" ++ d.s ! unit) "neke" (mkmiange d.size (d.s ! unit)) ;
lin pot0as1 n = {s = table {indep => n.s ! unit ; sihpart => mkmiange n.size (n.s ! unit) ; _ => [] } ; size = n.size} ;
lin pot1 d = ss (d.s ! ten) (d.s ! unit) [] ;
lin pot1plus d e = ss ((d.s ! ten) ++ (e.s ! unit))
(d.s ! unit)
(mkmiange e.size (e.s ! unit));
lin pot1as2 n = {s = n.s ! indep ; s2 = n.s ! tenelfu ++ "tume" ++ n.s ! sihpart ; size = n.size} ;
lin pot2 d = {s = (sel d.size [] (d.s ! unit)) ++ "jau" ;
s2 = sel d.size "harebe" (d.s ! ten) ; size = tenplus} ;
lin pot2plus d e = {s = (sel d.size [] (d.s ! unit)) ++ "jau" ++ e.s ! indep ; s2 = d.s ! ten ++ e.s ! tenpart ++ "tume" ++ e.s ! sihpart ; size = tenplus} ;
lin pot2as3 n = {s = n.s} ;
lin pot3 n = {s = table {pl => n.s ++ "miange" ; sg => "miange" ; tenplus => n.s2 } ! n.size} ;
lin pot3plus n m = {s = table {pl => n.s ++ "miange" ; sg => "miange" ; tenplus => n.s2 } ! n.size ++ m.s} ;
oper mkmiange : Size -> Str -> Str = \sz -> \attr -> (sel sz [] attr) ++ "miange" ;
oper sel : Size -> Str -> Str -> Str = \sz -> \a -> \b -> table {sg => a ; _ => b} ! sz ;

View File

@@ -0,0 +1,49 @@
i -old -abs=Nums -cnc=Decimal numerals.Dec.gf
i -old -abs=Nums -cnc=Amharic amharic.gf
i -old -abs=Nums -cnc=Basque basque.gf
--i -old -abs=Nums biblical_hebrew.gf
--i -old -abs=Nums classical_arabic.gf
i -old -abs=Nums -cnc=Greek classical_greek.gf
--i -old -abs=Nums croatian.gf
i -old -abs=Nums -cnc=Geez geez.gf
i -old -abs=Nums -cnc=Hindi hindi.gf
i -old -abs=Nums -cnc=Hungarian hungarian.gf
i -old -abs=Nums -cnc=Icelandic icelandic.gf
i -old -abs=Nums -cnc=Irish irish.gf
--i -old -abs=Nums italian.gf
--i -old -abs=Nums japanese.gf
--i -old -abs=Nums khowar.gf
--i -old -abs=Nums korean.gf
--i -old -abs=Nums kulung.gf
--i -old -abs=Nums modern_greek.gf
--i -old -abs=Nums mongolian.gf
i -old -abs=Nums -cnc=Arabic numerals.Ara.gf
i -old -abs=Nums -cnc=Hebrew numerals.Heb.gf
--i -old -abs=Nums numerals.ChiU.gf
--i -old -abs=Nums numerals.Dan.gf
i -old -abs=Nums -cnc=German numerals.Deu.gf
i -old -abs=Nums -cnc=English numerals.Eng.gf
i -old -abs=Nums -cnc=French numerals.Fra.gf
i -old -abs=Nums -cnc=Malay numerals.Malay.gf
i -old -abs=Nums -cnc=Dutch numerals.Ned.gf
--i -old -abs=Nums numerals.NorB.gf
i -old -abs=Nums -cnc=Russian numerals.Rus.gf
i -old -abs=Nums -cnc=Finnish numerals.Suo.gf
i -old -abs=Nums -cnc=Swedish numerals.Swe.gf
--i -old -abs=Nums numerals.Tam.gf
i -old -abs=Nums -cnc=OldChurchSlavonic old_church_slavonic.gf
i -old -abs=Nums -cnc=Pashto pashto.gf
--i -old -abs=Nums polish.gf
--i -old -abs=Nums portuguese.gf
i -old -abs=Nums -cnc=Quechua quechua.gf
--i -old -abs=Nums romanian.gf
i -old -abs=Nums -cnc=Sanskrit sanskrit.gf
--i -old -abs=Nums slovak.gf
--i -old -abs=Nums sorani.gf
--i -old -abs=Nums spanish.gf
--i -old -abs=Nums swiss_french.gf
--i -old -abs=Nums tamil.gf
--i -old -abs=Nums tibetan.gf
--i -old -abs=Nums totonac.gf
i -old -abs=Nums -cnc=Turkish turkish.gf
--ts -lang -f

View File

@@ -0,0 +1,50 @@
include numerals.Abs.gf ;
param Size = sg | pl | two;
oper Form = {s : Str ; size : Size } ;
lincat Numeral = {s : Str} ;
lincat Digit = Form ;
lincat Sub10 = Form ;
lincat Sub100 = Form ;
lincat Sub1000 = Form ;
lincat Sub1000000 = {s : Str} ;
lin num x0 =
{s = x0.s} ; -- TODO: Encoding
oper mkNum = ss ;
oper ss : Str -> Form = \f -> {s = f ; size = pl } ;
-- lin n1 = mkNum "go'o" ;
lin n2 = {s = "d.id.i" ; size = two } ;
lin n3 = mkNum "tati" ;
lin n4 = mkNum "nai" ;
lin n5 = mkNum "jowi" ;
lin n6 = mkNum "jowe:go" ;
lin n7 = mkNum "jowe:d.id.i" ;
lin n8 = mkNum "jowe:tati" ;
lin n9 = mkNum "jowe:nai" ;
lin pot01 = {s = "go'o" ; size = sg };
lin pot0 d = d ;
lin pot110 = ss "sappo" ;
lin pot111 = ss ("sappo" ++ "e" ++ "go'o") ;
lin pot1to19 d = ss ("sappo" ++ "e" ++ d.s) ;
lin pot0as1 n = n ;
lin pot1 d = ss (mkten d.size d.s) ;
lin pot1plus d e = ss ((mkten d.size d.s) ++ "e" ++ e.s) ;
lin pot1as2 n = n ;
lin pot2 d = ss (mkhund d.size d.s) ;
lin pot2plus d e = ss ((mkhund d.size d.s) ++ "e" ++ e.s) ;
lin pot2as3 n = n ;
lin pot3 n = ss (mkthou n.size n.s) ;
lin pot3plus n m = ss ((mkthou n.size n.s) ++ m.s) ;
oper mkten : Size -> Str -> Str = \sz -> \attr ->
table {two => "no:gas" ; _ => "chappand.e" ++ attr } ! sz ;
oper mkhund : Size -> Str -> Str = \sz -> \attr ->
table {sg => "temerre" ; _ => "temed.d.e" ++ attr} ! sz ;
oper mkthou : Size -> Str -> Str = \sz -> \attr ->
table {sg => "ujine:re"; _ => variants {"ujine" ++ attr ; "ujine:je" ++ attr}} ! sz ;

View File

@@ -0,0 +1,45 @@
include numerals.Abs.gf ;
oper bind : Str -> Str -> Str = \a -> \b -> a ++ b ;
param Size = sg | pl ;
oper All = {s : Str ; size : Size};
lincat Digit = All ;
lincat Sub10 = All ;
lincat Sub100 = All ;
lincat Sub1000 = All ;
oper mkNum : Str -> All = \tri ->
{ s = tri ; size = pl};
lin num x = {s = x.s } ;
lin n2 = mkNum "aniha" ;
lin n3 = mkNum "akueya" ;
lin n4 = mkNum "yana" ;
lin n5 = mkNum "kobe" ;
lin n6 = mkNum "ku" ;
lin n7 = mkNum "iwi" ;
lin n8 = mkNum "yu" ;
lin n9 = mkNum "ho" ;
oper ss : Str -> All = \s1 -> {s = s1 ; size = pl } ;
lin pot01 = { s = "kae" ; size = sg};
lin pot0 d = d ;
lin pot110 = ss "xu" ;
lin pot111 = ss ("xu" + "kae") ;
lin pot1to19 d = ss (bind "xu" d.s) ;
lin pot0as1 n = n ;
lin pot1 d = ss (bind d.s "bae" );
lin pot1plus d e = ss ((bind d.s "bae") ++ e.s ) ;
lin pot1as2 n = n ;
lin pot2 d = ss (bind ((selsg d.s) ! d.size) "sia" ) ;
lin pot2plus d e = ss ((bind ((selsg d.s) ! d.size) "sia") ++ e.s) ;
lin pot2as3 n = {s = n.s };
lin pot3 n = {s = bind ((selsg n.s) ! n.size) "sunu" } ;
lin pot3plus n m = {s = (bind ((selsg n.s) ! n.size) "sunu") ++ m.s} ;
oper selsg : Str -> Size => Str = \s -> table {sg => [] ; pl => s } ;

View File

@@ -0,0 +1,48 @@
include numerals.Abs.gf ;
oper bind : Str -> Str -> Str = \a -> \b -> a ++ b ;
param Size = sg | pl ;
oper All = {s : Str ; s2 : Str ; size : Size};
lincat Digit = All ;
lincat Sub10 = All ;
lincat Sub100 = {s : Str ; size : Size} ;
lincat Sub1000 = {s : Str ; size : Size} ;
oper mkNum : Str -> All = \tri ->
{ s = tri ; s2 = "kua" + tri ; size = pl};
oper mkNum2 : Str -> Str -> All = \tri -> \teen ->
{ s = tri ; s2 = "kua" + teen ; size = pl};
lin num x = {s = x.s } ; -- TODO
lin n2 = mkNum2 "moko~i" "ko~i";
lin n3 = mkNum2 "mpohapy" "py";
lin n4 = mkNum2 "irundy" "rundy";
lin n5 = mkNum "po" ;
lin n6 = mkNum "potei~" ;
lin n7 = mkNum "poko~i" ;
lin n8 = mkNum "poapy" ;
lin n9 = mkNum "porundy" ;
oper ss : Str -> {s : Str ; size : Size} = \s1 -> {s = s1 ; size = pl } ;
lin pot01 = { s = "petei~" ; s2 = "dummy" ; size = sg};
lin pot0 d = d ;
lin pot110 = ss "kua~" ;
lin pot111 = ss ("kua" + "tei~") ;
lin pot1to19 d = ss d.s2 ;
lin pot0as1 n = {s = n.s ; size = n.size} ;
lin pot1 d = ss (bind d.s "kua~" );
lin pot1plus d e = ss ((bind d.s "kua~") ++ e.s ) ;
lin pot1as2 n = n ;
lin pot2 d = ss (((selsg d.s) ! d.size) ++ "sa~" ) ;
lin pot2plus d e = ss ((((selsg d.s) ! d.size) ++ "sa~") ++ e.s) ;
lin pot2as3 n = {s = n.s };
lin pot3 n = {s = bind ((selsg n.s) ! n.size) "ma" } ;
lin pot3plus n m = {s = (bind ((selsg n.s) ! n.size) "ma") ++ m.s} ;
oper selsg : Str -> Size => Str = \s -> table {sg => variants {[]; "petei~"}; pl => s } ;

View File

@@ -0,0 +1,79 @@
-- Kabardian
-- W is superscript w (= IPA labialisation)
-- & is schwa upside down e
-- s'
-- L is lambda
-- L is lambda with dash across
-- x^ is x with ^ ontop
-- G is gamma
include numerals.Abs.gf ;
param DForm = unit | unite | unitra | teen | ten | tenra | hund | thou;
oper LinDigit = {s : DForm => Str };
oper LinS100 = {s : Str; s2 : Str } ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = LinS100 ;
lincat Sub1000 = LinS100 ;
oper mkNum : Str -> LinDigit = \dwa ->
{s = table {unit => dwa ; unite => dwa + "&" ; unitra => dwa + "&ra" ;
ten => dwa + "&s'" ; tenra => dwa + "&s'ra" ;
teen => "p's''&" + "k'W&" + dwa ;
hund => "s'a" + "&y" + dwa ;
thou => variants {"m&yn"+"&y"+dwa ; dwa+"a"+"s''a"++"m&yn"}}};
oper mkNum2 : Str -> LinDigit = \dwa ->
{s = table {unit => dwa ; unite => dwa + "&" ; unitra => dwa + "&ra" ;
ten => dwa + "as'" ; tenra => dwa + "as'ra" ;
teen => "p's''&"+"k'W&"+"t'" ;
hund => "s'a" + "&y" + "t'" ;
thou => variants {"m&yn"+"&y"+"t'" ; dwa+"a"+"s''a"++"m&yn"}}};
oper mkNum3 : Str -> LinDigit = \dwa ->
{s = table {unit => dwa ; unite => dwa + "&" ; unitra => dwa + "&ra" ;
ten => dwa + "as'" ; tenra => dwa + "as'ra" ;
teen => "p's''&"+"k'W&"+dwa ;
hund => "s'a" + "&y" + dwa ;
thou => variants {"m&yn"+"&y"+dwa ; dwa+"a"+"s''a"++"m&yn"}}};
lin num x = {s = x.s } ; -- TODO ;
lin n2 = mkNum2 "t'?W" ;
lin n3 = mkNum3 "s'" ;
lin n4 = mkNum "p'L-'" ;
lin n5 = mkNum "tx^W" ;
lin n6 = mkNum "x^";
lin n7 = mkNum "bL" ;
lin n8 = mkNum "y" ;
lin n9 = mkNum "bGW" ;
oper bind : Str -> Str -> Str = \s1 -> \s2 -> s1 ++ s2 ;
lin pot01 =
{s = table {unit => "z" ; unite => "z&" ; unitra => "z&" + "ra" ;
teen => "p's''&"+"k'W&"+"z" ; ten => "dummy" ; tenra => "dummy" ;
hund => "s'a" ; thou => "m&yn"}};
oper ss : Str -> LinS100 = \f ->
{s = f ; s2 = variants {("m&yn"+"&y") ++ f ; (bind f "as'a") ++ "m&yn"}};
lin pot0 d = d ;
lin pot110 =
{s = "p's''&" ;
s2 = variants {"m&yn"+"&y"+"p's''" ; "p's''"+"a"+"s''a"++"m&yn"}};
lin pot111 = ss ("p's''&"+"k'W&"+"z") ;
lin pot1to19 d = ss (d.s ! teen) ;
lin pot0as1 n = {s = n.s ! unite ; s2 = n.s ! thou } ;
lin pot1 d = ss (variants {(d.s ! ten) ; (d.s ! unite) ++ "p's''&wa"}) ;
-- extra variant p's''ay = 80
lin pot1plus d e = ss ((d.s ! tenra) ++ (e.s ! unitra)) ;
lin pot1as2 n = n ;
lin pot2 d = ss (d.s ! hund) ;
lin pot2plus d e = ss ((d.s ! hund) ++ e.s) ;
lin pot2as3 n = {s = n.s } ;
lin pot3 n = {s = n.s2} ;
lin pot3plus n m = {s = n.s2 ++ m.s} ;

View File

@@ -0,0 +1,47 @@
include numerals.Abs.gf ;
param Size = sg | two | pl ;
oper Form = {s : Str ; size : Size} ;
lincat Digit = Form ;
lincat Sub10 = Form ;
lincat Sub100 = Form ;
lincat Sub1000 = Form ;
oper mkNum : Str -> Form = \two ->
{s = two ; size = pl} ;
lin num x = x ;
-- lin n1 mkNum "diha" ;
lin n2 = {s = "dua" ; size = two} ;
lin n3 = mkNum "tailu" ;
lin n4 = mkNum "patu" ;
lin n5 = mkNum "lima" ;
lin n6 = mkNum "nomu" ;
lin n7 = mkNum "pitu" ;
lin n8 = mkNum "walu" ;
lin n9 = mkNum "hiwa" ;
oper ss : Str -> {s : Str ; size : Size} = \s1 -> {s = s1 ; size = pl} ;
lin pot01 = {s = "diha" ; size = sg} ;
lin pot0 d = d ;
lin pot110 = ss "hakambulu" ;
lin pot111 = ss ("hakambulu" ++ "hau") ;
lin pot1to19 d = ss ("hakambulu" ++ (if12 d.size d.s)) ;
lin pot0as1 n = n ;
lin pot1 d = ss (d.s ++ "kambulu" ) ;
lin pot1plus d e = ss (d.s ++ "kambulu" ++ (if12 e.size e.s)) ;
lin pot1as2 n = n ;
lin pot2 d = ss (selsg d.size "hangahu" (d.s ++ "ngahu")) ;
lin pot2plus d e = ss (selsg d.size "hangahu" (d.s ++ "ngahu") ++ e.s) ;
lin pot2as3 n = {s = n.s };
lin pot3 n = {s = (selsg n.size "hariu" (n.s ++ "riu"))} ;
lin pot3plus n m = {s = (selsg n.size "hariu" (n.s ++ "riu")) ++ m.s } ;
oper if12 : Size -> Str -> Str = \sz -> \a ->
table {sg => "hau" ; two => "dambu" ; _ => a} ! sz ;
oper selsg : Size -> Str -> Str -> Str = \sz -> \a -> \b ->
table {sg => a ; _ => b} ! sz ;

View File

@@ -0,0 +1,41 @@
include numerals.Abs.gf ;
oper bind : Str -> Str -> Str = \a -> \b -> a ++ b ;
oper na : {s : Str } = {s = "N/A" } ;
oper LinDigit = {s : Str ; s2 : Str ; s3 : Str} ;
lincat Numeral = {s : Str} ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = {s : Str } ;
lincat Sub1000 = {s : Str } ;
lincat Sub1000000 = {s : Str} ;
lin num x0 =
{s = x0.s} ; -- TODO
oper mkNum : Str -> LinDigit = \s1 -> {s = s1 ; s2 = s1 + "yu" ; s3 = s1 + "suu"} ;
oper mkNum2 : Str -> LinDigit = \s1 -> {s = s1 ; s2 = s1 + "yu" ; s3 = s1 + "cuu"} ;
lin n2 = mkNum "waha" ;
lin n3 = mkNum "pehe" ;
lin n4 = mkNum "wacuu" ;
lin n5 = mkNum2 "mani-gi" ;
lin n6 = mkNum2 "navaha" ;
lin n7 = {s = "no?mi-zi" ; s2 = "no?mi-zi" ; s3 = "no?mi-zicuu" };
lin n8 = {s = "nanawacuu" ; s2 = "nanawacuu"; s3 = "nanawacuucuu" };
lin n9 = mkNum2 "sukumi-su" ;
lin pot01 = mkNum "suu" ;
lin pot0 d = d ;
lin pot110 = {s = "mi-mi-suuyu" } ;
lin pot111 = {s = "mi-mi-susuuyu" } ;
lin pot1to19 d = {s = bind "mi-mi-susuu" d.s2 } ;
lin pot0as1 n = {s = n.s } ;
lin pot1 d = {s = bind d.s3 "yu"} ;
lin pot1plus d e = {s = bind d.s3 e.s2 } ;
lin pot1as2 n = n ;
lin pot2 d = na ;
lin pot2plus d e = na ;
lin pot2as3 n = n ;
lin pot3 n = na ;
lin pot3plus n m = na ;

View File

@@ -0,0 +1,45 @@
include numerals.Abs.gf ;
oper na = {s = "N/A" };
param DForm = u | teen ;
oper LinDigit = {s : DForm => Str } ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = {s : Str } ;
lincat Sub1000 = {s : Str } ;
oper bind : Str -> Str -> Str = \a -> \b -> a ++ b ;
oper mkNum : Str -> LinDigit = \a ->
{s = table {u => a ; teen => "kun'il" ++ a ++ "budie"}} ;
oper mkNum2 : Str -> Str -> LinDigit = \a -> \b ->
{s = table {u => a ; teen => b ++ "budie"}} ;
lin num x = x ;
-- lin n1 mkNum "irkin" ;
lin n2 = mkNum2 "ataqun" ("kun" ++ "ataqun") ;
lin n3 = mkNum2 "ja:n" ("kun'il" ++ "ja:l");
lin n4 = mkNum "ilekun" ;
lin n5 = mkNum "n'ahanbo:d'e" ;
lin n6 = mkNum "malha:n" ;
lin n7 = mkNum "purki:n" ;
lin n8 = mkNum "malhi:lek" ;
lin n9 = mkNum "kunirkil'd'o:j" ;
lin pot01 = mkNum2 "irkin" ("kun" ++ "irku");
lin pot0 d = d ;
lin pot110 = {s = "kun'in"};
lin pot111 = {s = ("kun" ++ "irkubudie")} ;
lin pot1to19 d = {s = d.s ! teen} ;
lin pot0as1 n = {s = n.s ! u} ;
lin pot1 d = {s = d.s ! u ++ "kun'el"} ;
lin pot1plus d e = {s = d.s ! u ++ "kun'el" ++ e.s ! u};
lin pot1as2 n = n ;
lin pot2 d = {s = "kun'in" ++ "kun'in" ++ d.s ! u ++ "budie"} ;
lin pot2plus d e = {s = "kun'in" ++ "kun'in" ++ d.s ! u ++ "budie" ++ e.s } ;
lin pot2as3 n = n ;
lin pot3 n = na ;
lin pot3plus n m = na ;

View File

@@ -0,0 +1,37 @@
include numerals.Abs.gf ;
lincat Numeral = {s : Str} ;
lincat Digit = {s : Str } ;
lincat Sub10 = {s : Str } ;
lincat Sub100 = {s : Str } ;
lincat Sub1000 = {s : Str } ;
lincat Sub1000000 = {s : Str} ;
lin num x0 =
{s = x0.s} ; -- TODO
oper na = {s = "N/A" } ;
lin n2 = {s = "aky'hy~" };
lin n3 = {s = "e'ma~" };
lin n4 = {s = "ElE'lE" };
lin n5 = {s = "bwako'je" };
lin n6 = na ;
lin n7 = na ;
lin n8 = na ;
lin n9 = na ;
lin pot01 =
{s = "tei'hy~"};
lin pot0 d = d ;
lin pot110 = na ;
lin pot111 = na ;
lin pot1to19 d = na ;
lin pot0as1 n = n ;
lin pot1 d = na ;
lin pot1plus d e = na ;
lin pot1as2 n = n ;
lin pot2 d = na ;
lin pot2plus d e = na ;
lin pot2as3 n = n ;
lin pot3 n = na ;
lin pot3plus n m = na ;

View File

@@ -0,0 +1,56 @@
include numerals.Abs.gf ;
-- y:
-- e:
-- i~
-- s^
-- m~
-- n~
-- ú:
-- u,
param Size = sg | pl ;
param DForm = unit | teen | ten ;
oper LinDigit = {s : DForm => Str ; size : Size };
oper LinSub100 = {s : Str ; size : Size } ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = LinSub100 ;
lincat Sub1000 = LinSub100 ;
oper mkNum : Str -> Str -> Str -> LinDigit = \tri -> \dvylika -> \tribase ->
{ s = table {unit => tri ; teen => dvylika ; ten => tribase + "des^imt" } ; size = pl};
lin num x = {s = x.s} ; -- TODO ;
lin n2 = mkNum "dù" "dvýlika" "dvì" ;
lin n3 = mkNum "try:s" "trýlika" "trìs" ;
lin n4 = mkNum "keturì" "keturiólika" "ke:turias" ;
lin n5 = mkNum "penkì" "penkiólika" "pen~kias" ;
lin n6 = mkNum "s^es^ì" "s^es^iólika" "s^e:s^ias" ;
lin n7 = mkNum "septynì" "septyniólika" "septýnias" ;
lin n8 = mkNum "as^tuonì" "as^tuoniólika" "as^túonias" ;
lin n9 = mkNum "devynì" "devyniólika" "devýnias" ;
oper mkR : Str -> LinSub100 = \n -> {s = n ; size = pl } ;
lin pot01 = { s = table {_ => "víenas" } ; size = sg };
lin pot0 d = d ;
lin pot110 = mkR (variants {"de:s^imt"; "des^imtìs" });
lin pot111 = mkR "vienúolika" ;
lin pot1to19 d = mkR (d.s ! teen) ;
lin pot0as1 n = mkR (n.s ! unit) ;
lin pot1 d = mkR (d.s ! ten) ;
lin pot1plus d e = mkR ((d.s ! ten) ++ (e.s ! unit)) ;
lin pot1as2 n = n ;
lin pot2 d = mkR (selsg d.size "s^im~tas" ((d.s ! unit) ++ "s^imtai~")) ;
lin pot2plus d e = mkR ((selsg d.size "s^im~tas" ((d.s ! unit) ++ "s^imtai~")) ++ e.s) ;
lin pot2as3 n = {s = n.s };
lin pot3 n = {s = selsg n.size "tú:kstantis" (n.s ++ "tú:kstanc^iu,") } ;
lin pot3plus n m = {s = (selsg n.size "tú:kstantis" (n.s ++ "tú:kstanc^iu,")) ++ m.s} ;
oper selsg : Size -> Str -> Str -> Str = \sz -> \s1 -> \s2 ->
table {sg => s1 ; pl => s2} ! sz ;

View File

@@ -0,0 +1,61 @@
include numerals.Abs.gf ;
param Size = sg | pl ;
oper Form = {s : Str ; size : Size } ;
lincat Numeral = {s : Str} ;
lincat Digit = Form ;
lincat Sub10 = Form ;
lincat Sub100 = Form ;
lincat Sub1000 = Form ;
lincat Sub1000000 = {s : Str} ;
lin num x0 =
{s = x0.s} ; -- TODO: Encoding
oper mkNum : Str -> Form = \mbili ->
{s = mbili; size = pl };
-- N [ng]
-- E epsilon
-- I i without dot
-- O IPA for o in cod
-- lin n1 = mkNum "âbotye" ;
lin n2 = mkNum "ârrexai" ;
lin n3 = mkNum "xunixoi" ;
lin n4 = mkNum "aNwan" ;
lin n5 = mkNum "miet" ;
lin n6 = mkNum "IllE" ;
lin n7 = mkNum "xattarIk" ;
lin n8 = mkNum "xottoxunik" ;
lin n9 = mkNum "xOttONwan" ;
oper xo : Str = pre {"xO" ;
"xo" / strs {"m" ; "xu" ; "xo"} ;
"x'" / strs {"â" ; "a"}} ;
oper ss : Str -> Form = \s1 -> {s = s1 ; size = pl} ;
lin pot01 =
{s = "âbotye" ; size = sg };
lin pot0 d = d ;
lin pot110 = ss "'tOmOn" ;
lin pot111 = ss ("'tOmOn" ++ xo ++ "âbotye") ;
lin pot1to19 d = ss ("'tOmOn" ++ xo ++ d.s ) ;
lin pot0as1 n = n ;
lin pot1 d = ss ("atOmwana" ++ d.s ) ;
lin pot1plus d e = ss ("atOmwana" ++ d.s ++ xo ++ e.s ) ;
lin pot1as2 n = n ;
lin pot2 d = ss (mkessixa d.size d.s) ;
lin pot2plus d e = ss ((mkessixa d.size d.s) ++ "ikO" ++ e.s) ;
lin pot2as3 n = {s = n.s } ;
lin pot3 n = {s = mktau n.size n.s } ;
lin pot3plus n m = {s = (mktau n.size n.s) ++ "ikO" ++ m.s} ;
oper mkessixa : Size -> Str -> Str = \sz -> \attr ->
table {pl => "EssIxa" ++ attr ;
sg => variants {"EssIxa" ++ "âbotye"; "atOmwana" ++ "'tOmOn"}} ! sz ;
oper mktau : Size -> Str -> Str = \sz -> \attr ->
table {pl => "tausand" ++ attr ;
sg => variants {"tausand" ++ "âbotye"; "EssIxa" ++ "'tOmOn"}} ! sz ;

View File

@@ -0,0 +1,55 @@
include numerals.Abs.gf ;
param Size = sg | pl ;
param DForm = unit | ten ;
oper LinDigit = {s : DForm => Str ; size : Size } ;
oper Form = {s : Str ; size : Size } ;
lincat Numeral = {s : Str} ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = Form ;
lincat Sub1000 = {s : Str} ;
lincat Sub1000000 = {s : Str} ;
lin num x0 =
{s = x0.s} ; -- TODO: Encoding
oper mkNum : Str -> Str -> LinDigit = \mbili -> \lama ->
{s = table {unit => mbili ; ten => lama + "-támmi" }; size = pl };
-- b> is b with right bend
-- ? without dot
-- $ IPA [sh]
-- lin n1 = mkNum "pétte" ;
lin n2 = mkNum "lam?ó" "lamá";
lin n3 = mkNum "haitsó" "haytsí" ;
lin n4 = mkNum "?oidó" "?oydí";
lin n5 = mkNum "dóngo" "dóngi";
lin n6 = mkNum "láhhó" "láhhi";
lin n7 = mkNum "lánkayi" "lánkayi";
lin n8 = mkNum "sálli" "sálli" ;
lin n9 = mkNum "tásub>a" "tázub>i";
oper ss : Str -> Form = \s1 -> {s = s1 ; size = pl} ;
lin pot01 =
{s = table {f => "pétte" }; size = sg };
lin pot0 d = d ;
lin pot110 = ss "táb>b>ó" ;
lin pot111 = ss ("táb>b>ó" ++ "pétte") ;
lin pot1to19 d = ss ("táb>b>ó" ++ (d.s ! unit)) ;
lin pot0as1 n = {s = n.s ! unit ; size = n.size } ;
lin pot1 d = ss (d.s ! ten) ;
lin pot1plus d e = ss (d.s ! ten ++ e.s ! unit) ;
lin pot1as2 n = n ;
lin pot2 d = {s = mkseeta d.size (d.s ! unit) };
lin pot2plus d e = {s = (mkseeta d.size (d.s ! unit)) ++ e.s} ;
lin pot2as3 n = {s = n.s } ;
lin pot3 n = {s = n.s ++ "$íya"} ;
lin pot3plus n m = {s = n.s ++ "$íya" ++ m.s} ;
oper mkseeta : Size -> Str -> Str = \sz -> \attr ->
table {pl => attr ++ "s'ééta" ;
sg => "s'ééta" } ! sz ;

View File

@@ -0,0 +1,59 @@
include numerals.Abs.gf ;
param DForm = unit | teen | teenil | ten | hund ;
param Size = sg | pl | dual ;
oper LinDigit = {s: DForm => Str ; s2 : Str ; size : Size } ;
oper Form = {s : Str ; s2 : Str ; size : Size } ;
lincat Numeral = {s : Str} ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = Form ;
lincat Sub1000 = Form ;
lincat Sub1000000 = {s : Str} ;
lin num x = x ; -- TODO
oper mkN : Str -> Str -> Str -> Str -> Str -> LinDigit = \u -> \tn -> \t -> \h -> \e ->
{s = table {unit => u ; teen => tn + "ax" ; teenil => tn + "ax" + "il" ;
ten => t ; hund => h ++ "mija"} ; s2 = e ; size = pl };
lin n2 =
{s = table {unit => "tnejn" ;
teen => "tnax" ; teenil => "tnax-il" ;
ten => "gh-oxrin" ;
hund => "mitejn"} ; s2 = "tnejn" ; size = dual} ;
lin n3 = mkN "tlieta" "tlett" "tletin" "tliet" "tlitt";
lin n4 = mkN "erbgh-a" "erbat" "erbgh-in" "erba'" "erbat";
lin n5 = mkN "h-amsa" "h-mist" "h-amsin" "h-ames" "h-amest" ;
lin n6 = mkN "sitta" "sitt" "sitt" "sitt" "sitt";
lin n7 = mkN "sebgh-a" "sbat" "sbebgh-in" "seba'" "sebat" ;
lin n8 = mkN "tmienja" "tmint" "tmenin" "tmien" "tmint" ;
lin n9 = mkN "disgh-a" "dsat" "disgh-in" "disa'" "disat";
oper ss : Str -> Form = \s1 -> {s = s1 ; s2 = s1 ; size = pl };
oper ss2 : Str -> Str -> Form = \a -> \b -> {s = a ; s2 = b ; size = pl };
lin pot01 =
{s = table {unit => "wieh-ed" ; teen => "h-dax" ; _ => "mija" } ;
s2 = "wieh-ed" ;
size = sg};
lin pot0 d = d;
lin pot110 = ss "gh-axra" ;
lin pot111 = ss2 "h-dax" "h-dax-il";
lin pot1to19 d = ss2 (d.s ! teen) (d.s ! teenil);
lin pot0as1 n = {s = n.s ! unit ; s2 = n.s2 ; size = n.size} ;
lin pot1 d = ss (d.s ! ten) ;
lin pot1plus d e = ss ((e.s ! unit) ++ "u" ++ (d.s ! ten)) ;
lin pot1as2 n = n ;
lin pot2 d = ss (d.s ! hund) ;
lin pot2plus d e = ss2 ((d.s ! hund) ++ "u" ++ e.s)
((d.s ! hund) ++ "u" ++ e.s2) ;
lin pot2as3 n = {s = n.s } ;
lin pot3 n = { s = (elf n.s2) ! n.size } ;
lin pot3plus n m = { s = (elf n.s2) ! n.size ++ m.s} ;
oper elf : Str -> Size => Str = \attr ->
table {pl => attr ++ "elef" ; dual => "elfejn" ; sg => "elf"} ;

View File

@@ -0,0 +1,43 @@
include numerals.Abs.gf ;
param Size = sg | pl ;
oper All = {s : Str ; size : Size};
lincat Digit = All ;
lincat Sub10 = All ;
lincat Sub100 = All ;
lincat Sub1000 = All ;
oper mkNum : Str -> All = \tri ->
{ s = tri ; size = pl};
lin num x = {s = x.s } ;
lin n2 = mkNum "epu" ;
lin n3 = mkNum "külá" ;
lin n4 = mkNum "meli" ;
lin n5 = mkNum "kechu" ;
lin n6 = mkNum "kayu" ;
lin n7 = mkNum "reqle" ;
lin n8 = mkNum "pura" ;
lin n9 = mkNum "aylla" ;
oper ss : Str -> All = \s1 -> {s = s1 ; size = pl } ;
lin pot01 = { s = "kiñe" ; size = sg};
lin pot0 d = d ;
lin pot110 = ss "mari" ;
lin pot111 = ss ("mari" ++ "kiñe") ;
lin pot1to19 d = ss ("mari" ++ d.s );
lin pot0as1 n = n ;
lin pot1 d = ss (d.s ++ "mari" );
lin pot1plus d e = ss (d.s ++ "mari" ++ e.s ) ;
lin pot1as2 n = n ;
lin pot2 d = ss (((selsg d.s) ! d.size) ++ "pataka" ) ;
lin pot2plus d e = ss (((selsg d.s) ! d.size) ++ "pataka" ++ e.s) ;
lin pot2as3 n = {s = n.s };
lin pot3 n = {s = (selsg n.s) ! n.size ++ "warangka" } ;
lin pot3plus n m = {s = (selsg n.s) ! n.size ++ "warangka" ++ m.s} ;
oper selsg : Str -> Size => Str = \s -> table {sg => [] ; pl => s } ;

View File

@@ -0,0 +1,71 @@
include numerals.Abs.gf ;
oper LinDigit = {s : DForm => Str ; even20 : Even20 } ;
oper mk20Ten : Str -> Str -> Str -> LinDigit = \tri -> \t -> \h ->
{ s = table {unit => tri ; unit2 => t ; twenty => "rae" ++ h } ;
even20 = ten};
oper mkEven20 : Str -> Str -> Str -> LinDigit = \se -> \t -> \h ->
{ s = table {unit => se ; unit2 => t ; twenty => "rae" ++ h } ;
even20 = even};
oper na = {s = "N/A"} ;
param Even20 = ten | even ;
param DForm = unit | unit2 | twenty ;
lincat Numeral = {s : Str} ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = {s : Str } ;
lincat Sub1000 = {s : Str } ;
lincat Sub1000000 = {s : Str} ;
lin num x0 =
{s = x0.s} ;
lin n2 = mkEven20 (variants{"ewok"; "eok"})
("krem" ++ "ewok")
("sait" ++ "yhai") ;
lin n3 = mk20Ten "tuf"
("krem" ++ "tuf")
("sait" ++ "yhai") ;
lin n4 = mkEven20 "tiet"
("krem" ++ "tiet")
("ewok" ++ "mhai") ;
lin n5 = mk20Ten (variants {"mat" ; "temsau"})
("sau" ++ "muf")
("ewok" ++ "mhai") ;
lin n6 = mkEven20 ("krem" ++ "sau")
("sau" ++ "krem" ++ "sau")
("tuf" ++ "mhai") ;
lin n7 = mk20Ten ("krem" ++ "ewok")
("sau" ++ "krem" ++ "ewok")
("tuf" ++ "mhai") ;
lin n8 = mkEven20 ("krem" ++ "tuf")
("sau" ++ "krem" ++ "tuf")
("tiet" ++ "mhai") ;
lin n9 = mk20Ten ("krem" ++ "tiet")
("sau" ++ "krem" ++ "tiet")
("tiet" ++ "mhai") ;
lin pot01 =
{s = table {unit => "sau" ; unit2 => "krem" ++ "sau" ; twenty => "dummy" } ;
even20 = ten };
lin pot0 d = d ;
lin pot110 = {s = "statem" } ;
lin pot111 = {s = "oo" ++ "krem" ++ "sau" } ;
lin pot1to19 d = {s = "oo" ++ d.s ! unit2 } ;
lin pot0as1 n = {s = n.s ! unit} ;
lin pot1 d =
{s = table {even => d.s ! twenty ;
ten => (d.s ! twenty) ++ "statem"} ! d.even20} ;
lin pot1plus d e =
{s = table {even => d.s ! twenty ++ e.s ! unit ;
ten => (d.s ! twenty) ++ (e.s ! unit2)} ! d.even20} ;
lin pot1as2 n = n ;
lin pot2 d = na;
lin pot2plus d e = na;
lin pot2as3 n = n ;
lin pot3 n = na ;
lin pot3plus n m = na ;

View File

@@ -0,0 +1,53 @@
include numerals.Abs.gf ;
param Size = sg | pl ;
param DForm = unit | acc ;
oper LinDigit = {s : DForm => Str ; size : Size } ;
oper Form = {s : Str ; size : Size } ;
lincat Numeral = {s : Str} ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = Form ;
lincat Sub1000 = Form ;
lincat Sub1000000 = {s : Str} ;
lin num x0 =
{s = x0.s} ; -- TODO: Encoding
oper mkNum : Str -> Str -> LinDigit = \mbili -> \lama ->
{s = table {unit => mbili ; acc => lama }; size = pl };
-- lin n1 = mkNum "wút`&" ;
lin n2 = mkNum "ts`&r" "ts'&r";
lin n3 = mkNum "kìdi" "kídì" ;
lin n4 = mkNum "f`&d>&" "f'&d>&";
lin n5 = mkNum "vàatl&" "vaatl&";
lin n6 = mkNum "màaha" "máahà";
lin n7 = mkNum "màats&r" "máats`&r";
lin n8 = mkNum "f´&rf´&d>&" "f`&rf´&d>&" ;
lin n9 = mkNum "kùciya" "kúcìya";
oper ss : Str -> Form = \s1 -> {s = s1 ; size = pl} ;
oper behan = "bèh&n" ;
oper enaa = "'`&náa" ;
lin pot01 =
{s = table {unit => "wút`&" ; acc => "wut'&"}; size = sg };
lin pot0 d = d ;
lin pot110 = ss "d'&rb>itim" ;
lin pot111 = ss (variants {behan ++ "wut'&";"d'&rb>itim" ++ behan ++ "wut'&"});
lin pot1to19 d = ss (variants {behan ++ (d.s ! acc); "d'&rb>itim" ++ behan ++ d.s ! acc}) ;
lin pot0as1 n = {s = n.s ! unit ; size = n.size } ;
lin pot1 d = ss ("díb>i" ++ d.s ! unit) ;
lin pot1plus d e = ss ("díb>i" ++ d.s ! unit ++ behan ++ e.s ! acc) ;
lin pot1as2 n = n ;
lin pot2 d = ss ("d>àriy" ++ selsg d.size (d.s ! unit));
lin pot2plus d e = ss ("d>àriy" ++ (selsg d.size (d.s ! unit)) ++ enaa ++ e.s);
lin pot2as3 n = {s = n.s } ;
lin pot3 n = {s = "d'&bu" ++ (selsg n.size n.s)} ;
lin pot3plus n m = {s = "d'&bu" ++ (selsg n.size n.s) ++ enaa ++ m.s} ;
oper selsg : Size -> Str -> Str = \sz -> \attr ->
table {pl => attr ; sg => variants {[] ; attr} } ! sz ;

View File

@@ -0,0 +1,51 @@
i -old -abs=Nums -cnc=Decimal numerals.Dec.gf
i -old -abs=Nums -cnc=Amharic amharic.gf
i -old -abs=Nums -cnc=Basque basque.gf
--i -old -abs=Nums biblical_hebrew.gf
i -old -abs=Nums -cnc=ArabicClassical classical_arabic.gf
i -old -abs=Nums -cnc=Greek classical_greek.gf
i -old -abs=Nums -cnc=Croatian croatian.gf
i -old -abs=Nums -cnc=Geez geez.gf
i -old -abs=Nums -cnc=Hindi hindi.gf
i -old -abs=Nums -cnc=Hungarian hungarian.gf
i -old -abs=Nums -cnc=Icelandic icelandic.gf
i -old -abs=Nums -cnc=Irish irish.gf
i -old -abs=Nums -cnc=Italian italian.gf
i -old -abs=Nums -cnc=Japanese japanese.gf
i -old -abs=Nums -cnc=Khowar khowar.gf
i -old -abs=Nums -cnc=Korean korean.gf
i -old -abs=Nums -cnc=Kulung kulung.gf
i -old -abs=Nums -cnc=GreekModern modern_greek.gf
i -old -abs=Nums -cnc=Mongolian mongolian.gf
i -old -abs=Nums -cnc=ArabicModern numerals.Ara.gf
i -old -abs=Nums -cnc=Hebrew numerals.Heb.gf
--i -old -abs=Nums -cnc=Chinese numerals.ChiU.gf
i -old -abs=Nums -cnc=Danish numerals.Dan.gf
i -old -abs=Nums -cnc=German numerals.Deu.gf
i -old -abs=Nums -cnc=English numerals.Eng.gf
i -old -abs=Nums -cnc=French numerals.Fra.gf
i -old -abs=Nums -cnc=Malay numerals.Malay.gf
i -old -abs=Nums -cnc=Dutch numerals.Ned.gf
i -old -abs=Nums -cnc=NorwegianBok numerals.NorB.gf
i -old -abs=Nums -cnc=Russian numerals.Rus.gf
i -old -abs=Nums -cnc=Finnish numerals.Suo.gf
i -old -abs=Nums -cnc=Swedish numerals.Swe.gf
i -old -abs=Nums -cnc=Tampere numerals.Tam.gf
i -old -abs=Nums -cnc=OldChurchSlavonic old_church_slavonic.gf
i -old -abs=Nums -cnc=Pashto pashto.gf
i -old -abs=Nums -cnc=Polish polish.gf
i -old -abs=Nums -cnc=Portuguese portuguese.gf
i -old -abs=Nums -cnc=Quechua quechua.gf
i -old -abs=Nums -cnc=Romanian romanian.gf
i -old -abs=Nums -cnc=Sanskrit sanskrit.gf
i -old -abs=Nums -cnc=Slovak slovak.gf
i -old -abs=Nums -cnc=Sorani sorani.gf
i -old -abs=Nums -cnc=Spanish spanish.gf
i -old -abs=Nums -cnc=FrenchSwiss swiss_french.gf
i -old -abs=Nums -cnc=Tamil tamil.gf
i -old -abs=Nums -cnc=Tibetan tibetan.gf
i -old -abs=Nums -cnc=Totonac totonac.gf
i -old -abs=Nums -cnc=Turkish turkish.gf
s
--ts -lang -f
pm | wf numerals.gfcm

View File

@@ -0,0 +1,67 @@
include numerals.Abs.gf ;
-- #n-
-- #t-
-- #l-
-- #s' with , ontop of s
-- #N for n with a thing on the right leg i.e IPA [ng]
-- #|~ a vertical tilde in thge top right corner
param DForm = unit | teen ;
param Size = sg | nine | pl ;
oper LinDigit = {s : DForm => Str ; size : Size } ;
oper LinS100 = {s : Str ; size : Size} ;
lincat Numeral = {s : Str} ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = LinS100 ;
lincat Sub1000 = LinS100 ;
lincat Sub1000000 = {s : Str} ;
lin num x0 =
{s = x0.s } ; -- TODO Encoding
oper mkNum : Str -> Str -> LinDigit =
\u -> \t -> {s = table {unit => u ; teen => t } ; size = pl} ;
lin n2 = mkNum (variants {"side"; "sidea"}) "sidejaNan-â|~" ;
lin n3 = mkNum (variants {"n-ahar" ; "nâr"}) "n-aharaNan-â|~" ;
lin n4 = mkNum (variants {"t-êt" ; "t-iet" ; "tiet"}) "t-êtaNan-â|~" ;
lin n5 = mkNum (variants {"saml-aN" ; "sambl-aN" ; "sambel-ank" })
"saml-an-aNan-â|~";
lin n6 = mkNum "mat'" "mat-aNan-â|~";
lin n7 = mkNum (variants {"siu" ; "s'eu"}) "siujaNan-â|~" ;
lin n8 = mkNum "sidend-êt" "sidend-êtaNan-â|~" ;
lin n9 = {s = table {unit => variants {"hâsawaju'" ; "habeiju'"} ;
teen => "hâsawajujaNan-â|~" } ;
size = nine} ;
oper ss : Str -> LinS100 = \s1 -> {s = s1 ; size = pl} ;
lin pot01 =
{s = table {unit => variants {"~ob" ; "~opoi" } ; _ => "dummy" }; size = sg};
lin pot0 d = d ;
lin pot110 = ss (variants {"ju'" ; "lûcaju'" ; "lûsaju'" }) ;
lin pot111 = ss (variants {"~objaNan-â|~"; "~objaNn-â" ; "~objaNa"}) ;
lin pot1to19 d = ss (d.s ! teen) ;
lin pot0as1 n = {s = n.s ! unit ; size = n.size} ;
lin pot1 d = ss (ifnine d.size (d.s ! unit)) ;
lin pot1plus d e = ss ((ifnine d.size (d.s ! unit)) ++ (e.s ! unit)) ;
lin pot1as2 n = n ;
lin pot2 d = ss (mkjur d.size (d.s ! unit)) ;
lin pot2plus d e = ss ((mkjur d.size (d.s ! unit)) ++ e.s) ;
lin pot2as3 n = {s = n.s } ;
lin pot3 n = {s = mkjuonar n.size n.s } ;
lin pot3plus n m = {s = (mkjuonar n.size n.s) ++ m.s } ;
oper mkjuonar : Size -> Str -> Str = \sz -> \attr ->
table {nine => attr ++ "juonar" ;
sg => variants {"juonar" ; "jônar" ; "ju" ++ "jur"} ;
pl => attr ++ "juonar" } ! sz ;
oper mkjur : Size -> Str -> Str = \sz -> \attr ->
table {sg => "jur" ; _ => attr ++ "jur" } ! sz ;
oper ifnine : Size -> Str -> Str = \sz -> \attr ->
table {nine => "hâsawajur" ; _ => attr ++ "ju'" } ! sz ;

View File

@@ -0,0 +1,63 @@
include numerals.Abs.gf ;
param Size = sg | pl | over10;
oper Form = {s : Str ; size : Size } ;
lincat Numeral = {s : Str} ;
lincat Digit = Form ;
lincat Sub10 = Form ;
lincat Sub100 = Form ;
lincat Sub1000 = Form ;
lincat Sub1000000 = {s : Str} ;
lin num x0 =
{s = x0.s} ; -- TODO: Encoding
oper mkNum : Str -> Form = \mbili ->
{s = mbili ; size = pl };
-- O IPA for o in cod
-- Ó
-- lin n1 = mkNum "ÓkO" ;
lin n2 = mkNum "óse" ;
lin n3 = mkNum "otá" ;
lin n4 = mkNum "osió" ;
lin n5 = mkNum "ukú" ;
lin n6 = mkNum "omaná" ;
lin n7 = mkNum "mbásámbárá" ;
lin n8 = mkNum "miombe" ;
lin n9 = mkNum "ngombáyá" ;
oper nandoni : Str = ("na" ++ variants {"ndó" ++ "ní" ; []}) ;
oper ss : Str -> Form = \s1 -> {s = s1 ; size = over10} ;
lin pot01 = {s = "ÓkO" ; size = sg };
lin pot0 d = d ;
lin pot110 = ss ("bale" ++ "ÓkO");
lin pot111 = ss ("bale" ++ "ÓkO" ++ nandoni ++ "ÓkO");
lin pot1to19 d = ss ("bale" ++ "ÓkO" ++ nandoni ++ d.s);
lin pot0as1 n = n ;
lin pot1 d = ss ("bale" ++ d.s ) ;
lin pot1plus d e = ss ("bale" ++ d.s ++ nandoni ++ e.s ) ;
lin pot1as2 n = n ;
lin pot2 d = ss (mkng d.size d.s) ;
lin pot2plus d e = ss ((mkng d.size d.s) ++ nandoni ++ e.s) ;
lin pot2as3 n = {s = n.s } ;
lin pot3 n = {s = mktau n.size n.s } ;
lin pot3plus n m = {s = mktau n.size (n.s ++ nandoni ++ m.s) } ;
oper mkng : Size -> Str -> Str = \sz -> \attr ->
table {pl => "ngbangbu" ++ attr ;
over10 => "dummy" ;
sg => variants {"ngbangbu" ++ "ÓkO"; "ngbangbu" }} ! sz ;
oper mktau : Size -> Str -> Str = \sz -> \attr ->
table {pl => "ngbangbu" ++ "bale" ++ attr ;
over10 => "N/A" ;
sg => variants {"ngbangbu" ++ "bale"; "kutu"} ++ attr} ! sz ;

View File

@@ -0,0 +1,41 @@
include numerals.Abs.gf ;
param DForm = u | v ;
oper LinDigit = {s : DForm => Str } ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = LinDigit ;
lincat Sub1000 = LinDigit ;
oper bind : Str -> Str -> Str = \a -> \b -> a ++ b ;
oper mkNum : Str -> LinDigit = \a -> {s = table {_ => a}} ;
oper mkNum2 : Str -> Str -> LinDigit = \a -> \b -> {s = table {u => a ; v => b}} ;
lin num x = x ;
-- lin n1 mkNum "sa'asa" ;
lin n2 = mkNum "dua" ;
lin n3 = mkNum "tolu" ;
lin n4 = mkNum2 "gana" "hato";
lin n5 = mkNum "lima" ;
lin n6 = mkNum2 "no'o" "nomo" ;
lin n7 = mkNum2 "pitu" "hitu" ;
lin n8 = mkNum "alu" ;
lin n9 = mkNum "sia" ;
lin pot01 = mkNum2 "sa'asa" "sa" ;
lin pot0 d = d ;
lin pot110 = {s = table {_ => "ompulu" }};
lin pot111 = {s = table {u => "ompulu" ++ "sa'asa" ; v => "ompulu" ++ "sa"}} ;
lin pot1to19 d = {s = table {f => "ompulu" ++ d.s ! f}} ;
lin pot0as1 n = n ;
lin pot1 d = {s = table {_ => bind (d.s ! v) "hulu" }} ;
lin pot1plus d e = {s = table {f => (bind (d.s ! v) "hulu") ++ e.s ! f}} ;
lin pot1as2 n = n ;
lin pot2 d = {s = table {_ => bind (d.s ! v) "hatu" }} ;
lin pot2plus d e = {s = table {f => (bind (d.s ! v) "hatu") ++ e.s ! f}} ;
lin pot2as3 n = {s = n.s ! u};
lin pot3 n = {s = bind (n.s ! v) "riwu" } ;
lin pot3plus n m = {s = (bind (n.s ! v) "riwu") ++ m.s ! u } ;

View File

@@ -0,0 +1,71 @@
include numerals.Abs.gf ;
-- The neo-base-10 system dauddeg, trideg, pedwardeg, pumdeg/hanner cant, chwedeg, saithdeg, wythdeg, nawdeg is
-- implemented as the second variant as it should be
oper LinDigit = {s : DForm => Str ; even20 : Even20 ; size : Size} ;
oper LinSub100 = {s : Str ; size : Size} ;
oper mk20Ten : Str -> Str -> Str -> Str -> Size -> LinDigit =
\tri -> \trideg -> \fiche -> \triarddeg -> \sz ->
{ s = table {unit => tri ; twenty => fiche ; teen => triarddeg ; ten => trideg} ; even20 = odd ; size = sz} ;
oper mkEven20 : Str -> Str -> Str -> Str -> Size -> LinDigit =
\tri -> \trideg -> \fiche -> \triarddeg -> \sz ->
{ s = table {unit => tri ; twenty => fiche ; teen => triarddeg ; ten => trideg} ; even20 = even ; size = sz} ;
param Even20 = odd | even ;
param DForm = unit | ten | twenty | teen ;
param Size = sg | mutation | am | pl | five | overten;
lincat Numeral = {s : Str} ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = LinSub100 ;
lincat Sub1000 = LinSub100 ;
lincat Sub1000000 = {s : Str} ;
lin num x0 =
{s = x0.s} ;
lin n2 = mkEven20 "dau" "dauddeg" "hugain" "deuddeg" mutation ;
lin n3 = mk20Ten "tri" "trideg" "hugain" ("tri" ++ "ar" ++ "deg") am ;
lin n4 = mkEven20 "pedwar" "pedwardeg" "deugain" ("pedwar" ++ "ar" ++ "ddeg") pl ;
lin n5 = mk20Ten ("pum" + p) "pumdeg" "deugain" "pymtheg" five ;
lin n6 = mkEven20 ("chwe" + ch) "chwedeg" "trigain" ("un" ++ "ar" ++ "bymtheg") am ;
lin n7 = mk20Ten "saith" "saithdeg" "trigain" ("dau" ++ "ar" ++ "bymtheg") pl ;
lin n8 = mkEven20 "wyth" "wythdeg" ("pedwar" ++ "ugain") "deunaw" pl ;
lin n9 = mk20Ten "naw" "nawdeg" ("pedwar" ++ "ugain") ("pedwar" ++ "ar" ++ "bymtheg") pl ;
oper AR : Str = pre {"ar" ; "a" / strs {"d"} } ;
oper AG : Str = pre {"a" ; "ag" / strs {"a" ; "u" ; "i" ; "e" ; "o" ; "w"} } ; -- before vowel
oper ng : Str = pre {"g" ; "ng" / strs {"m"} } ;
oper t : Str = pre {[] ; "t" / strs {[]}} ;
oper ch : Str = pre {[] ; "ch" / strs{[]}} ;
oper p : Str = pre {[] ; "p" / strs{[]}} ;
oper mkR : Str -> LinSub100 = \s1 -> {s = s1 ; size = overten } ;
oper mkR2 : Str -> Size -> LinSub100 = \s1 -> \sz -> {s = s1 ; size = table {mutation => mutation ; am => am ; _ => overten} ! sz } ;
lin pot01 =
{s = table {unit => "un" ; _ => "dummy"} ; even20 = odd ; size = sg};
lin pot0 d = d ;
lin pot110 = {s = "de" + ng ; size = pl} ;
lin pot111 = mkR (variants {"un" ++ "ar" ++ "ddeg" ; "undeg" ++ "un"}) ;
lin pot1to19 d = mkR (variants {d.s ! teen ; "undeg" ++ d.s ! unit}) ;
lin pot0as1 n = {s = n.s ! unit ; size = n.size} ;
lin pot1 d = table {mutation => mkR (variants {"ugain" ; "dauddeg" }) ;
five => mkR (variants {"hanner" ++ "cant" ; "deg" ++ "a" + "deugain" ; "pumdeg"}) ;
_ => mkR (variants { table {even => d.s ! twenty ; odd => "deg" ++ AR ++ d.s ! twenty} ! d.even20 ; d.s ! ten}) } ! d.size ;
lin pot1plus d e = mkR2 (variants { table {even => e.s ! unit ++ AR ++ d.s ! twenty ; odd => e.s ! teen ++ AR ++ d.s ! twenty} ! d.even20 ; d.s ! ten}) e.size ; -- hugain
lin pot1as2 n = n ;
lin pot2 d = mkR ((CANT (d.s ! unit)) ! d.size) ;
lin pot2plus d e = mkR2 (((CANT (d.s ! unit)) ! d.size) ++ (maybeAG ! e.size) ++ e.s) e.size;
lin pot2as3 n =
{s = n.s } ;
lin pot3 n =
{s = (MIL n.s) ! n.size } ;
lin pot3plus n m =
{s = (MIL n.s) ! n.size ++ m.s } ;
oper maybeAG : Size => Str = (table {overten => [] ; _ => AG} );
oper CANT : Str -> Size => Str = \s1 -> table {sg => "can" + t ; mutation => s1 ++ "gan" + t; am => s1 ++ "chan" + t ; _ => s1 ++ "can" + t} ;
oper MIL : Str -> Size => Str = \s1 -> table {sg => "mil" ; mutation => s1 ++ "fil" ; _ => s1 ++ "mil" } ;

View File

@@ -0,0 +1,62 @@
include numerals.Abs.gf ;
oper LinDigit = {s : DForm => Str ; even20 : Even20 ; size : Size} ;
oper mk20Ten : Str -> Str -> LinDigit = \tri -> \tw ->
{s = table {unit => tri ; teen => "turma-" + tri ; twenty => tw+"-áltar"} ;
even20 = ten ; size = pl} ;
oper mkEven20 : Str -> Str -> LinDigit = \tri -> \tw ->
{s = table {unit => tri ; teen => "turma-" + tri ; twenty => tw+"-áltar"} ;
even20 = even ; size = pl} ;
param Even20 = ten | even ;
param DForm = unit | teen | twenty ;
param Size = sg | pl ;
lincat Numeral = {s : Str} ;
lincat Digit = LinDigit ;
lincat Sub10 = LinDigit ;
lincat Sub100 = {s : Str ; size : Size} ;
lincat Sub1000 = {s : Str ; size : Size } ;
lincat Sub1000000 = {s : Str} ;
lin num x0 =
{s = x0.s} ;
lin n2 = {s = table {unit => "altó" ; teen => "turma-" + "altó" ; twenty => "áltar" } ; even20 = even ; size = pl} ;
lin n3 = {s = table {unit => "iskí" ; teen => "turma-" + "iskí" ; twenty => "áltar" } ; even20 = ten ; size = pl} ;
lin n4 = mkEven20 "wálte" "altó";
lin n5 = mk20Ten "cendí" "altó";
lin n6 = mkEven20 "bis'índe" "iskí" ;
lin n7 = mk20Ten "thalé" "iskí";
lin n8 = mkEven20 "altámbe" "wálte";
lin n9 = mk20Ten "hutí" "wálte";
lin pot01 =
{s = table {unit => "hek" ; teen => "turma-" + "hék" ; twenty => []} ; even20 = ten ; size = sg};
lin pot0 d = d ;
lin pot110 = {s = "tórum" ; size = pl} ;
lin pot111 = {s = "turma-" + "hék" ; size = pl} ;
lin pot1to19 d = {s = d.s ! teen ; size = pl} ;
lin pot0as1 n = {s = n.s ! unit ; size = n.size} ;
lin pot1 d =
{s = table {even => d.s ! twenty ;
ten => d.s ! twenty ++ "tórum"} ! d.even20 ;
size = pl} ;
lin pot1plus d e =
{s = table {even => d.s ! twenty ++ e.s ! unit;
ten => d.s ! twenty ++ e.s ! teen} ! (d.even20) ;
size = pl} ;
lin pot1as2 n = n ;
lin pot2 d = {s = (selsg d.size (d.s ! unit)) ++ "tha" ; size = pl} ;
lin pot2plus d e =
{s = (selsg d.size (d.s ! unit)) ++ "tha" ++ e.s ; size = pl} ;
lin pot2as3 n =
{s = n.s } ;
lin pot3 n =
{s = selsg n.size n.s ++ "hazár"} ;
lin pot3plus n m =
{s = selsg n.size n.s ++ "hazár" ++ m.s } ;
oper selsg : Size -> Str -> Str = \sz -> \attr ->
table {sg => [] ; _ => attr} ! sz ;