From 1b002dec90ce2b080301f54a8f84a91ca6669879 Mon Sep 17 00:00:00 2001 From: aarne Date: Wed, 28 Jan 2004 12:27:59 +0000 Subject: [PATCH] Some new languges by Harald, plus translation scripts --- grammars/numerals/old/af_tunni.gf | 50 ++++++++++++++ grammars/numerals/old/albanian.gf | 45 +++++++++++++ grammars/numerals/old/bearlake_slave.gf | 44 +++++++++++++ grammars/numerals/old/dagur.gf | 59 +++++++++++++++++ grammars/numerals/old/demo.gfs | 49 ++++++++++++++ grammars/numerals/old/fulfulde.gf | 50 ++++++++++++++ grammars/numerals/old/guahibo.gf | 45 +++++++++++++ grammars/numerals/old/guarani.gf | 48 ++++++++++++++ grammars/numerals/old/kabardian.gf | 79 +++++++++++++++++++++++ grammars/numerals/old/kambera.gf | 47 ++++++++++++++ grammars/numerals/old/kawaiisu.gf | 41 ++++++++++++ grammars/numerals/old/kolyma_yukaghir.gf | 45 +++++++++++++ grammars/numerals/old/kwaza.gf | 37 +++++++++++ grammars/numerals/old/lithuanian.gf | 56 ++++++++++++++++ grammars/numerals/old/lotuxo.gf | 61 +++++++++++++++++ grammars/numerals/old/maale.gf | 55 ++++++++++++++++ grammars/numerals/old/maltese.gf | 59 +++++++++++++++++ grammars/numerals/old/mapuche.gf | 43 ++++++++++++ grammars/numerals/old/maybrat.gf | 71 ++++++++++++++++++++ grammars/numerals/old/miya.gf | 53 +++++++++++++++ grammars/numerals/old/mkAll.gfs | 51 +++++++++++++++ grammars/numerals/old/nenets.gf | 67 +++++++++++++++++++ grammars/numerals/old/sango.gf | 63 ++++++++++++++++++ grammars/numerals/old/tukang_besi.gf | 41 ++++++++++++ grammars/numerals/old/welsh.gf | 71 ++++++++++++++++++++ grammars/numerals/old/yasin_burushaski.gf | 62 ++++++++++++++++++ 26 files changed, 1392 insertions(+) create mode 100644 grammars/numerals/old/af_tunni.gf create mode 100644 grammars/numerals/old/albanian.gf create mode 100644 grammars/numerals/old/bearlake_slave.gf create mode 100644 grammars/numerals/old/dagur.gf create mode 100644 grammars/numerals/old/demo.gfs create mode 100644 grammars/numerals/old/fulfulde.gf create mode 100644 grammars/numerals/old/guahibo.gf create mode 100644 grammars/numerals/old/guarani.gf create mode 100644 grammars/numerals/old/kabardian.gf create mode 100644 grammars/numerals/old/kambera.gf create mode 100644 grammars/numerals/old/kawaiisu.gf create mode 100644 grammars/numerals/old/kolyma_yukaghir.gf create mode 100644 grammars/numerals/old/kwaza.gf create mode 100644 grammars/numerals/old/lithuanian.gf create mode 100644 grammars/numerals/old/lotuxo.gf create mode 100644 grammars/numerals/old/maale.gf create mode 100644 grammars/numerals/old/maltese.gf create mode 100644 grammars/numerals/old/mapuche.gf create mode 100644 grammars/numerals/old/maybrat.gf create mode 100644 grammars/numerals/old/miya.gf create mode 100644 grammars/numerals/old/mkAll.gfs create mode 100644 grammars/numerals/old/nenets.gf create mode 100644 grammars/numerals/old/sango.gf create mode 100644 grammars/numerals/old/tukang_besi.gf create mode 100644 grammars/numerals/old/welsh.gf create mode 100644 grammars/numerals/old/yasin_burushaski.gf diff --git a/grammars/numerals/old/af_tunni.gf b/grammars/numerals/old/af_tunni.gf new file mode 100644 index 000000000..600397690 --- /dev/null +++ b/grammars/numerals/old/af_tunni.gf @@ -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 ; diff --git a/grammars/numerals/old/albanian.gf b/grammars/numerals/old/albanian.gf new file mode 100644 index 000000000..dfe0e9f82 --- /dev/null +++ b/grammars/numerals/old/albanian.gf @@ -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} ; + diff --git a/grammars/numerals/old/bearlake_slave.gf b/grammars/numerals/old/bearlake_slave.gf new file mode 100644 index 000000000..32329bcf8 --- /dev/null +++ b/grammars/numerals/old/bearlake_slave.gf @@ -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 } ; + diff --git a/grammars/numerals/old/dagur.gf b/grammars/numerals/old/dagur.gf new file mode 100644 index 000000000..80cfdf45b --- /dev/null +++ b/grammars/numerals/old/dagur.gf @@ -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 ; \ No newline at end of file diff --git a/grammars/numerals/old/demo.gfs b/grammars/numerals/old/demo.gfs new file mode 100644 index 000000000..34e2e657c --- /dev/null +++ b/grammars/numerals/old/demo.gfs @@ -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 diff --git a/grammars/numerals/old/fulfulde.gf b/grammars/numerals/old/fulfulde.gf new file mode 100644 index 000000000..0531d35de --- /dev/null +++ b/grammars/numerals/old/fulfulde.gf @@ -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 ; diff --git a/grammars/numerals/old/guahibo.gf b/grammars/numerals/old/guahibo.gf new file mode 100644 index 000000000..d9cb69ebc --- /dev/null +++ b/grammars/numerals/old/guahibo.gf @@ -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 } ; \ No newline at end of file diff --git a/grammars/numerals/old/guarani.gf b/grammars/numerals/old/guarani.gf new file mode 100644 index 000000000..7fbfa5d9b --- /dev/null +++ b/grammars/numerals/old/guarani.gf @@ -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 } ; \ No newline at end of file diff --git a/grammars/numerals/old/kabardian.gf b/grammars/numerals/old/kabardian.gf new file mode 100644 index 000000000..e6716ca93 --- /dev/null +++ b/grammars/numerals/old/kabardian.gf @@ -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} ; diff --git a/grammars/numerals/old/kambera.gf b/grammars/numerals/old/kambera.gf new file mode 100644 index 000000000..c42921b19 --- /dev/null +++ b/grammars/numerals/old/kambera.gf @@ -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 ; + diff --git a/grammars/numerals/old/kawaiisu.gf b/grammars/numerals/old/kawaiisu.gf new file mode 100644 index 000000000..5e45a4eb6 --- /dev/null +++ b/grammars/numerals/old/kawaiisu.gf @@ -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 ; diff --git a/grammars/numerals/old/kolyma_yukaghir.gf b/grammars/numerals/old/kolyma_yukaghir.gf new file mode 100644 index 000000000..b7cade9af --- /dev/null +++ b/grammars/numerals/old/kolyma_yukaghir.gf @@ -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 ; diff --git a/grammars/numerals/old/kwaza.gf b/grammars/numerals/old/kwaza.gf new file mode 100644 index 000000000..e8ed82487 --- /dev/null +++ b/grammars/numerals/old/kwaza.gf @@ -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 ; diff --git a/grammars/numerals/old/lithuanian.gf b/grammars/numerals/old/lithuanian.gf new file mode 100644 index 000000000..703d8ca0d --- /dev/null +++ b/grammars/numerals/old/lithuanian.gf @@ -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 ; + diff --git a/grammars/numerals/old/lotuxo.gf b/grammars/numerals/old/lotuxo.gf new file mode 100644 index 000000000..02ddf52ff --- /dev/null +++ b/grammars/numerals/old/lotuxo.gf @@ -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 ; diff --git a/grammars/numerals/old/maale.gf b/grammars/numerals/old/maale.gf new file mode 100644 index 000000000..5b8d309a0 --- /dev/null +++ b/grammars/numerals/old/maale.gf @@ -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 ; diff --git a/grammars/numerals/old/maltese.gf b/grammars/numerals/old/maltese.gf new file mode 100644 index 000000000..153f6a9c9 --- /dev/null +++ b/grammars/numerals/old/maltese.gf @@ -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"} ; + diff --git a/grammars/numerals/old/mapuche.gf b/grammars/numerals/old/mapuche.gf new file mode 100644 index 000000000..390f87c73 --- /dev/null +++ b/grammars/numerals/old/mapuche.gf @@ -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 } ; \ No newline at end of file diff --git a/grammars/numerals/old/maybrat.gf b/grammars/numerals/old/maybrat.gf new file mode 100644 index 000000000..604addcdd --- /dev/null +++ b/grammars/numerals/old/maybrat.gf @@ -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 ; diff --git a/grammars/numerals/old/miya.gf b/grammars/numerals/old/miya.gf new file mode 100644 index 000000000..ae2ad4a62 --- /dev/null +++ b/grammars/numerals/old/miya.gf @@ -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 ; + diff --git a/grammars/numerals/old/mkAll.gfs b/grammars/numerals/old/mkAll.gfs new file mode 100644 index 000000000..d14a0676c --- /dev/null +++ b/grammars/numerals/old/mkAll.gfs @@ -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 diff --git a/grammars/numerals/old/nenets.gf b/grammars/numerals/old/nenets.gf new file mode 100644 index 000000000..6ab6cb44b --- /dev/null +++ b/grammars/numerals/old/nenets.gf @@ -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 ; \ No newline at end of file diff --git a/grammars/numerals/old/sango.gf b/grammars/numerals/old/sango.gf new file mode 100644 index 000000000..f96874ede --- /dev/null +++ b/grammars/numerals/old/sango.gf @@ -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 ; + + + + diff --git a/grammars/numerals/old/tukang_besi.gf b/grammars/numerals/old/tukang_besi.gf new file mode 100644 index 000000000..f07bdce33 --- /dev/null +++ b/grammars/numerals/old/tukang_besi.gf @@ -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 } ; diff --git a/grammars/numerals/old/welsh.gf b/grammars/numerals/old/welsh.gf new file mode 100644 index 000000000..54a2ca640 --- /dev/null +++ b/grammars/numerals/old/welsh.gf @@ -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" } ; + diff --git a/grammars/numerals/old/yasin_burushaski.gf b/grammars/numerals/old/yasin_burushaski.gf new file mode 100644 index 000000000..53ec8967f --- /dev/null +++ b/grammars/numerals/old/yasin_burushaski.gf @@ -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 ; \ No newline at end of file