summaryrefslogtreecommitdiff
path: root/examples/numerals/greek_classical.gf
diff options
context:
space:
mode:
authoraarne <unknown>2004-01-29 12:57:32 +0000
committeraarne <unknown>2004-01-29 12:57:32 +0000
commitd09777a9aaeb580d8e793ad5e572296eb4c351d9 (patch)
tree8e6d54d1687bdc772cd67d91d643f246ce023776 /examples/numerals/greek_classical.gf
parentfdddeca0d08ba68b564b14359ef9b4a697cdb636 (diff)
New order among numerals.
Diffstat (limited to 'examples/numerals/greek_classical.gf')
-rw-r--r--examples/numerals/greek_classical.gf197
1 files changed, 197 insertions, 0 deletions
diff --git a/examples/numerals/greek_classical.gf b/examples/numerals/greek_classical.gf
new file mode 100644
index 000000000..44ce57fe7
--- /dev/null
+++ b/examples/numerals/greek_classical.gf
@@ -0,0 +1,197 @@
+include numerals.Abs.gf ;
+-- Classical Greek (of Athens)
+-- Aarne's transliteration
+-- There are attested variant forms. kai:s between the elements in bigger ->
+-- smaller order is also possible but not common.
+
+param DForm = unit | tkismyr | teen | ten | hund | kisxil | kismyr |
+ tenkismyr | tenkis ;
+param InterData = indep Order | xiliad | myriad Order ;
+param Tenpart = kis1 | tkis1 ;
+param Size = sg | pl | tenoverpl ;
+param Order = des | asc;
+lincat Numeral = {s : Str} ;
+
+oper LinDigit = {s : DForm => Str} ;
+oper LinSub1000 = {s : InterData => Str ; size : Size} ;
+
+lincat Digit = LinDigit ;
+lincat Sub10 = {s : DForm => Str ;
+ size : Size} ;
+lincat Sub100 = {s : InterData => Str ;
+ s1 : Tenpart => Str ;
+ s2 : Str ;
+ size : Size} ;
+lincat Sub1000 = LinSub1000 ;
+lincat Sub1000000 = {s : Str} ;
+lin num x0 =
+ {s = "//" ++ x0.s ++ "//"} ; -- Greek environment
+
+oper mkNum : Str -> Str -> Str -> Str -> Str -> Str -> Str -> LinDigit =
+ \dyo -> \dis -> \dwdekakis -> \dwdeka -> \eikosi -> \diakosioi ->
+ \eikosakis ->
+ {s = table {unit => dyo ;
+ tkismyr => dwdekakis + "m'yrioi" ;
+ teen => dwdeka ;
+ ten => eikosi ;
+ hund => diakosioi ;
+ kisxil => dis + "c'ilioi" ;
+ kismyr => dis + "m'yrioi" ;
+ tenkis => eikosakis ;
+ tenkismyr => eikosakis + "m'yrioi"} };
+
+lin n2 = mkNum
+ "d'yo"
+ "dis"
+ "dwdekakis"
+ "d'wdeka"
+ "e)'ikosi"
+ "diak'osioi"
+ "e)ikos'akis" ;
+
+lin n3 = mkNum
+ "tre~ij"
+ "tris"
+ "treiskaidekakis"
+ (variants {"tre~ij" ++ "ka`i" ++ "d'eka" ; "treiska'ideka"} )
+ "tri'akonta"
+ "triak'osioi"
+ "triakont'akis" ;
+
+lin n4 = mkNum
+ "t'ettarej"
+ "tetrakis"
+ "tettareskaidekakis"
+ (variants {"t'ettarej" ++ "ka`i" ++ "d'eka" ; "tettareska'ideka"})
+ "tettar'akonta"
+ "tetrak'osioi"
+ "tettarakont'akis" ;
+
+lin n5 = mkNum
+ "p'ente"
+ "pentakis"
+ "pentekaidekakis"
+ "penteka'ideka"
+ "pent'hkonta"
+ "pentak'osioi"
+ "penthkont'akis" ;
+
+lin n6 = mkNum
+ "('ex"
+ "(exakis"
+ "(ekkaidekakis"
+ "(ekka'ideka"
+ "(ex'hkonta"
+ "(exak'osioi"
+ "(exhkont'akis" ;
+
+lin n7 = mkNum
+ "(ept'a"
+ "(eptakis"
+ "(eptakaidekakis"
+ "(eptaka'ideka"
+ "(ebdom'hkonta"
+ "(eptak'osioi"
+ "(ebdomhkont'akis" ;
+
+lin n8 = mkNum
+ ")okt'w"
+ ")oktakis"
+ ")oktwkaidekakis"
+ ")oktwka'ideka"
+ ")ogdo'hkonta"
+ ")oktak'osioi"
+ ")ogdohkont'akis" ;
+
+lin n9 = mkNum
+ ")enn'ea"
+ ")enakis"
+ ")enneakaidekakis"
+ ")enneaka'ideka"
+ ")enen'hkonta"
+ ")enak'osioi"
+ ")enenhkont'akis" ;
+
+lin pot01 =
+ {s = table {hund => "(ekat'on" ;
+ kisxil => "c'ilioi" ;
+ kismyr => "('apax" + "m'yrioi" ;
+ _ => "e('ij" } ;
+ size = sg} ;
+lin pot0 d =
+ {s = d.s ; size = pl} ;
+lin pot110 =
+ {s = table {xiliad => "dummy" ;
+ (myriad _) => "m'yrioi" ;
+ (indep _) => "d'eka" };
+ s1 = table {kis1 => "('apax" + "m'yrioi" ; tkis1 => "(endek'akis" + "m'yrioi"} ;
+ s2 = [] ;
+ size = tenoverpl} ;
+lin pot111 =
+ {s = table {xiliad => "dummy" ;
+ (myriad des) => "m'yrioi" ++ "c'ilioi" ;
+ (myriad asc) => "c'ilioi" ++ "ka`i" ++ "m'yrioi" ;
+ (indep _) => "('endeka" } ;
+ s1 = table {kis1 => "('apax" + "m'yrioi" ; tkis1 => "(endek'akis" + "m'yrioi"} ;
+ s2 = "c'ilioi" ;
+ size = tenoverpl} ;
+lin pot1to19 d =
+ {s = table {xiliad => "dummy" ;
+ (myriad des) => "m'yrioi" ++ d.s ! kisxil ;
+ (myriad asc) => d.s ! kisxil ++ "ka`i" ++ "m'yrioi" ;
+ (indep _) => d.s ! teen } ;
+ s1 = table {kis1 => "('apax" + "m'yrioi" ; tkis1 => "(endek'akis" + "m'yrioi" } ;
+ s2 = d.s ! kisxil ;
+ size = tenoverpl} ;
+lin pot0as1 n =
+ {s = table {xiliad => n.s ! kisxil ;
+ (indep _) => n.s ! unit ;
+ (myriad _) => "dummy" } ;
+ s1 = table {_ => []} ;
+ s2 = n.s ! kisxil ;
+ size = n.size} ;
+lin pot1 d =
+ {s = table {xiliad => "dummy" ;
+ (myriad _) => d.s ! kismyr ;
+ (indep _) => d.s ! ten} ;
+ s1 = table {kis1 => d.s ! kismyr ; tkis1 => d.s ! tkismyr } ;
+ s2 = [];
+ size = tenoverpl} ;
+lin pot1plus d e =
+ {s = table {xiliad => "dummy" ;
+ (myriad des) => d.s ! kismyr ++ e.s ! kisxil ;
+ (myriad asc) => e.s ! kisxil ++ "ka`i" ++ d.s ! kismyr ;
+ (indep des) => d.s ! ten ++ e.s ! unit ;
+ (indep asc) => e.s ! unit ++ "ka`i" ++ d.s ! ten } ;
+ s1 = table {kis1 => d.s ! kismyr ; tkis1 => d.s ! tkismyr } ;
+ s2 = e.s ! kisxil ;
+ size = tenoverpl} ;
+lin pot1as2 n =
+ {s = n.s ; size = n.size} ;
+lin pot2 d =
+ {s = table {(indep _) => d.s ! hund ;
+ (myriad _) => d.s ! tenkismyr;
+ xiliad => "dummy"} ;
+ size = tenoverpl} ;
+lin pot2plus d e =
+ {s = table {(myriad _) => table {sg => e.s1 ! tkis1 ;
+ pl => d.s ! tenkis ++ e.s1 ! kis1 ;
+ tenoverpl => "dummy" } ! d.size ++ e.s2 ;
+ (indep des) => d.s ! hund ++ e.s ! indep des ;
+ (indep asc) => (e.s ! indep asc) ++ "ka`i" ++ d.s ! hund ;
+ xiliad => "dummy" } ;
+ size = tenoverpl} ;
+
+lin pot2as3 n =
+ {s = variants { n.s ! indep des ; n.s ! indep asc}} ;
+lin pot3 n =
+ {s = variants {(Myr n des) ! n.size ; (Myr n asc) ! n.size} } ;
+lin pot3plus n m =
+ {s = variants {(Myr n des) ! n.size ++ m.s ! indep des;
+ m.s ! indep asc ++ "ka`i" ++ (Myr n asc) ! n.size }} ;
+
+oper Myr : LinSub1000 -> Order -> Size => Str = \n -> \order ->
+ table {sg => "c'ilioi" ;
+ pl => n.s ! xiliad ;
+ tenoverpl => n.s ! myriad order} ;
+