diff --git a/examples/numerals/arabic_classical.gf b/examples/numerals/arabic_classical.gf index 3420895bd..d65bb7fbf 100644 --- a/examples/numerals/arabic_classical.gf +++ b/examples/numerals/arabic_classical.gf @@ -1,101 +1,100 @@ concrete arabic_classical of Numerals = { flags coding = utf8 ; --- include numerals.Abs.gf ; --- flags coding=arabic0600 ; - --- There is uncertainty as to wthere forms like 102 000 should be --- hundred and thousand or hundred and two thousands or --- as implemented hundred and two thousand - -param DForm = unit Place | teen | ten | hund ; -param Size = sg | pl | dual | eleventonineteen ; -param Place = attr | indep ; -lincat Numeral = {s : Str} ; -lincat Digit = {s : DForm => Str ; size : Size} ; -lincat Sub10 = {s : DForm => Str ; size : Size} ; -lincat Sub100 = {s : Place => Str ; size : Size} ; -lincat Sub1000 = {s : Place => Str ; size : Size} ; -lincat Sub1000000 = {s : Str} ; -lin num x0 = - {s = [] ++ x0.s ++ []} ; -- the Arabic0x0600 environment - -lin n2 = - {s = table {(unit attr) => [] ; - (unit indep) => "اثنان" ; - teen => "اثنا" ; - ten => "عشرون" ; - hund => "مائتان"} ; size = dual} ; -lin n3 = - {s = table {(unit _) => "ثلاثة" ; - teen => "ثلاثة" ; - ten => "ثلاثون" ; - hund => variants {"ثلاث" ++ "مائة" ; "ثلاثمائة"}} ; - size = pl} ; -lin n4 = - {s = table {(unit _) => "أربعة" ; - teen => "أربعة" ; - ten => "أربعون" ; - hund => variants {"أربع" ++ "مائة" ; "أربعمائة"}} ; - size = pl} ; -lin n5 = - {s = table {(unit _) => "خمسة" ; - teen => "خمسة" ; - ten => "خمسون" ; - hund => variants {"خمس" ++ "مائة" ; "خمسمائة"}} ; size = pl} ; -lin n6 = - {s = table {(unit _) => "ستة" ; - teen => "ستة" ; - ten => "ستون" ; - hund => variants {"ست" ++ "مائة" ; "ستمائة"}} ; size = pl} ; -lin n7 = - {s = table {(unit _) => "سبعة" ; - teen => "سبعة" ; - ten => "سبعون" ; - hund => variants {"سبع" ++ "مائة" ; "سبعمائة"}} ; size = pl} ; -lin n8 = - {s = table {(unit _) => "ثمانية" ; - teen => "ثمانية" ; - ten => "ثمانون" ; - hund => variants {"ثمان" ++ "مائة" ; "ثمانمائة"}} ; - size = pl} ; -lin n9 = - {s = table {(unit _) => "تسعة" ; - teen => "تسعة" ; - ten => "تسعون" ; - hund => variants {"تسع" ++ "مائة" ; "تسعمائة"}} ; - size = pl} ; - -lin pot01 = - {s = table {hund => (variants {"مائة" ; "م0ة"} ) ; (unit attr) => [] ; f => "واحد"} ; size = sg} ; -lin pot0 d = - {s = d.s ; size = d.size} ; -lin pot110 = - {s = table {_ => "عشرة"} ; size = pl} ; -lin pot111 = - {s = table {_ => "احد" ++ "عشر"} ; size = eleventonineteen} ; -lin pot1to19 d = - {s = table {_ => d.s ! teen ++ "عشر"} ; size = eleventonineteen} ; -lin pot0as1 n = - {s = table {p => n.s ! unit p} ; size = n.size} ; -lin pot1 d = - {s = table {_ => d.s ! ten} ; size = eleventonineteen} ; -lin pot1plus d e = - {s = table {_ => e.s ! unit indep ++ "و" ++ d.s ! ten} ; size = e.size} ; -lin pot1as2 n = - {s = n.s ; size = n.size} ; -lin pot2 d = - {s = table {_ => d.s ! hund} ; size = pl} ; -lin pot2plus d e = - {s = table {_ => d.s ! hund ++ "و" ++ e.s ! indep} ; size = e.size} ; -lin pot2as3 n = - {s = n.s ! indep} ; -lin pot3 n = - {s = n.s ! attr ++ Alf ! n.size} ; -lin pot3plus n m = - {s = n.s ! attr ++ Alf ! n.size ++ "و" ++ m.s ! indep} ; - -oper Alf : Size => Str = - table {{pl} => "آلاف" ; {dual} => "الفان" ; {eleventonineteen} => "الفا" ; sg => "الف"} ; - +-- include numerals.Abs.gf ; +-- flags coding=arabic0600 ; +-- There is uncertainty as to wthere forms like 102 000 should be +-- hundred and thousand or hundred and two thousands or +-- as implemented hundred and two thousand + +param DForm = unit Place | teen | ten | hund ; +param Size = sg | pl | dual | eleventonineteen ; +param Place = attr | indep ; +lincat Numeral = {s : Str} ; +lincat Digit = {s : DForm => Str ; size : Size} ; +lincat Sub10 = {s : DForm => Str ; size : Size} ; +lincat Sub100 = {s : Place => Str ; size : Size} ; +lincat Sub1000 = {s : Place => Str ; size : Size} ; +lincat Sub1000000 = {s : Str} ; +lin num x0 = + {s = [] ++ x0.s ++ []} ; -- the Arabic0x0600 environment + +lin n2 = + {s = table {(unit attr) => [] ; + (unit indep) => "اثنان" ; + teen => "اثنا" ; + ten => "عشرون" ; + hund => "مائتان"} ; size = dual} ; +lin n3 = + {s = table {(unit _) => "ثلاثة" ; + teen => "ثلاثة" ; + ten => "ثلاثون" ; + hund => variants {"ثلاث" ++ "مائة" ; "ثلاثمائة"}} ; + size = pl} ; +lin n4 = + {s = table {(unit _) => "أربعة" ; + teen => "أربعة" ; + ten => "أربعون" ; + hund => variants {"أربع" ++ "مائة" ; "أربعمائة"}} ; + size = pl} ; +lin n5 = + {s = table {(unit _) => "خمسة" ; + teen => "خمسة" ; + ten => "خمسون" ; + hund => variants {"خمس" ++ "مائة" ; "خمسمائة"}} ; size = pl} ; +lin n6 = + {s = table {(unit _) => "ستة" ; + teen => "ستة" ; + ten => "ستون" ; + hund => variants {"ست" ++ "مائة" ; "ستمائة"}} ; size = pl} ; +lin n7 = + {s = table {(unit _) => "سبعة" ; + teen => "سبعة" ; + ten => "سبعون" ; + hund => variants {"سبع" ++ "مائة" ; "سبعمائة"}} ; size = pl} ; +lin n8 = + {s = table {(unit _) => "ثمانية" ; + teen => "ثمانية" ; + ten => "ثمانون" ; + hund => variants {"ثمان" ++ "مائة" ; "ثمانمائة"}} ; + size = pl} ; +lin n9 = + {s = table {(unit _) => "تسعة" ; + teen => "تسعة" ; + ten => "تسعون" ; + hund => variants {"تسع" ++ "مائة" ; "تسعمائة"}} ; + size = pl} ; + +lin pot01 = + {s = table {hund => (variants {"مائة" ; "م0ة"} ) ; (unit attr) => [] ; f => "واحد"} ; size = sg} ; +lin pot0 d = + {s = d.s ; size = d.size} ; +lin pot110 = + {s = table {_ => "عشرة"} ; size = pl} ; +lin pot111 = + {s = table {_ => "احد" ++ "عشر"} ; size = eleventonineteen} ; +lin pot1to19 d = + {s = table {_ => d.s ! teen ++ "عشر"} ; size = eleventonineteen} ; +lin pot0as1 n = + {s = table {p => n.s ! unit p} ; size = n.size} ; +lin pot1 d = + {s = table {_ => d.s ! ten} ; size = eleventonineteen} ; +lin pot1plus d e = + {s = table {_ => e.s ! unit indep ++ "و" ++ d.s ! ten} ; size = e.size} ; +lin pot1as2 n = + {s = n.s ; size = n.size} ; +lin pot2 d = + {s = table {_ => d.s ! hund} ; size = pl} ; +lin pot2plus d e = + {s = table {_ => d.s ! hund ++ "و" ++ e.s ! indep} ; size = e.size} ; +lin pot2as3 n = + {s = n.s ! indep} ; +lin pot3 n = + {s = n.s ! attr ++ Alf ! n.size} ; +lin pot3plus n m = + {s = n.s ! attr ++ Alf ! n.size ++ "و" ++ m.s ! indep} ; + +oper Alf : Size => Str = + table {pl => "آلاف" ; dual => "الفان" ; eleventonineteen => "الفا" ; sg => "الف"} ; + } diff --git a/examples/numerals/arabic_modern.gf b/examples/numerals/arabic_modern.gf index 658b6776b..2d888daeb 100644 --- a/examples/numerals/arabic_modern.gf +++ b/examples/numerals/arabic_modern.gf @@ -88,7 +88,7 @@ lin pot3plus n m = {s = n.s ! attr ++ Alf ! n.size ++ "ﻭ" ++ m.s ! indep} ; oper Alf : Size => Str = - table {{small} => "ﺁﻻﻑ" ; {dual} => "ﺍﻟﻔﻴﻦ" ; _ => "ﺍﻟﻒ"} ; + table {small => "ﺁﻻﻑ" ; dual => "ﺍﻟﻔﻴﻦ" ; _ => "ﺍﻟﻒ"} ; } diff --git a/examples/numerals/chinese.gf b/examples/numerals/chinese.gf index 72cf910ce..375c260b4 100644 --- a/examples/numerals/chinese.gf +++ b/examples/numerals/chinese.gf @@ -7,12 +7,12 @@ param Qform = bai | bai0 | shiwan | shiwan0 ; param Bform = shi | shi0 | wan | wan0 ; param Zero = zero | nozero ; oper ling : Zero * Zero => Str = - table {<{zero},z> => "零" ; - => "零" ; - <{nozero},{nozero}> => []} ; + table { => "零" ; + => "零" ; + => []} ; oper Wan : Zero => Str = - table {{zero} => "万" ; - {nozero} => []} ; + table {zero => "万" ; + nozero => []} ; lincat Numeral = {s : Str} ; lincat Digit = {s : Str} ; lincat Sub10 = {s : Str} ; @@ -44,66 +44,66 @@ lin pot0 d = lin pot110 = {inh = nozero ; s = table { - {shi} => "壹拾" ; - {shi0} => "壹拾" ; - {wan} => "壹万" ; - {wan0} => "壹万"}} ; + shi => "壹拾" ; + shi0 => "壹拾" ; + wan => "壹万" ; + wan0 => "壹万"}} ; lin pot111 = {inh = nozero ; s = table { - {shi} => "拾壹" ; - {shi0} => "壹拾壹" ; - {wan} => "拾壹万" ; - {wan0} => "拾壹万"}} ; + shi => "拾壹" ; + shi0 => "壹拾壹" ; + wan => "拾壹万" ; + wan0 => "拾壹万"}} ; lin pot1to19 d = {inh = nozero ; s = table { - {shi} => "壹拾" ++ d.s ; - {shi0} => "壹拾" ; - {wan} => "壹万" ++ d.s ++ "仟" ; - {wan0} => "壹万" ++ d.s ++ "仟"}} ; + shi => "壹拾" ++ d.s ; + shi0 => "壹拾" ; + wan => "壹万" ++ d.s ++ "仟" ; + wan0 => "壹万" ++ d.s ++ "仟"}} ; lin pot0as1 n = {inh = zero ; s = table { - {shi} => n.s ; - {shi0} => n.s ; - {wan} => n.s ++ "仟" ; - {wan0} => n.s ++ "仟"}} ; + shi => n.s ; + shi0 => n.s ; + wan => n.s ++ "仟" ; + wan0 => n.s ++ "仟"}} ; lin pot1 d = {inh = zero ; s = table { - {shi} => d.s ++ "拾" ; - {shi0} => d.s ++ "拾" ; - {wan0} => d.s ++ "万" ; - {wan} => d.s ++ "万"}} ; + shi => d.s ++ "拾" ; + shi0 => d.s ++ "拾" ; + wan0 => d.s ++ "万" ; + wan => d.s ++ "万"}} ; lin pot1plus d e = {inh = nozero ; s = table { - {shi} => d.s ++ "拾" ++ e.s ; - {shi0} => d.s ++ "拾" ++ e.s ; - {wan} => d.s ++ "万" ++ e.s ++ "仟" ; - {wan0} => d.s ++ "万" ++ e.s ++ "仟"}} ; + shi => d.s ++ "拾" ++ e.s ; + shi0 => d.s ++ "拾" ++ e.s ; + wan => d.s ++ "万" ++ e.s ++ "仟" ; + wan0 => d.s ++ "万" ++ e.s ++ "仟"}} ; lin pot1as2 n = {inh = zero ; s = table { - {bai} => n.s ! shi ; - {bai0} => n.s ! shi ; - {shiwan} => n.s ! wan ; - {shiwan0} => n.s ! wan0}} ; + bai => n.s ! shi ; + bai0 => n.s ! shi ; + shiwan => n.s ! wan ; + shiwan0 => n.s ! wan0}} ; lin pot2 d = {inh = zero ; s = table { - {bai} => d.s ++ "佰" ; - {bai0} => d.s ++ "佰" ; - {shiwan0} => d.s ++ "拾万" ; - {shiwan} => d.s ++ "拾万"}} ; + bai => d.s ++ "佰" ; + bai0 => d.s ++ "佰" ; + shiwan0 => d.s ++ "拾万" ; + shiwan => d.s ++ "拾万"}} ; lin pot2plus d e = {inh = nozero ; s = table { - {bai} => d.s ++ "佰" ++ (ling ! ) ++ e.s ! shi0 ; - {bai0} => d.s ++ "佰" ++ (ling ! ) ++ e.s ! shi0 ; - {shiwan} => d.s ++ "拾" ++ (Wan ! (e.inh)) ++ e.s ! wan ; - {shiwan0} => d.s ++ "拾" ++ (Wan ! (e.inh)) ++ e.s ! wan0}} ; + bai => d.s ++ "佰" ++ (ling ! ) ++ e.s ! shi0 ; + bai0 => d.s ++ "佰" ++ (ling ! ) ++ e.s ! shi0 ; + shiwan => d.s ++ "拾" ++ (Wan ! (e.inh)) ++ e.s ! wan ; + shiwan0 => d.s ++ "拾" ++ (Wan ! (e.inh)) ++ e.s ! wan0}} ; lin pot2as3 n = {s = n.s ! bai} ; lin pot3 n = diff --git a/examples/numerals/finnish.gf b/examples/numerals/finnish.gf index a2be74d2c..069bb0484 100644 --- a/examples/numerals/finnish.gf +++ b/examples/numerals/finnish.gf @@ -4,9 +4,9 @@ concrete finnish of Numerals = { param Place = indep | attr ; param Nm = sg | pl ; oper sata : Nm => Str = - table {{sg} => "sata" ; {pl} => "sataa"} ; + table {sg => "sata" ; pl => "sataa"} ; oper tuhat : Nm => Str = - table {{sg} => "tuhat" ; {pl} => "tuhatta"} ; + table {sg => "tuhat" ; pl => "tuhatta"} ; lincat Numeral = {s : Str} ; lincat Digit = {s : Str} ; lincat Sub10 = {inh : Nm ; s : Place => Str} ; @@ -32,7 +32,7 @@ lin n8 = lin n9 = {s = "yhdeksn"} ; lin pot01 = - {inh = sg ; s = table {{attr} => [] ; {indep} => "yksi"}} ; + {inh = sg ; s = table {attr => [] ; indep => "yksi"}} ; lin pot0 d = {inh = pl ; s = table {p => d.s}} ; lin pot110 = diff --git a/examples/numerals/greek_modern.gf b/examples/numerals/greek_modern.gf index e7f4a9bfa..7a0339cc7 100644 --- a/examples/numerals/greek_modern.gf +++ b/examples/numerals/greek_modern.gf @@ -43,7 +43,7 @@ lin n7 = mkIndeclNum (variants {"επτά" ; "εφτά" }) "δεκαεφτά" " lin n8 = mkIndeclNum "οχτώ" "δεκαοχτώ" "ογδόντα" "οχτακόσι" ; lin n9 = mkIndeclNum (variants {"εννέα" ; "εννία" }) "δεκαεννέα" "ενενήντα" "εννιακόσι" ; lin pot01 = - {s = table {unit => "ένα" ; fem => "μία" ; _ => "εκατό" + pre {[] ; "ν" / vowel}} ; size = sg} ; + {s = table {unit => "ένα" ; fem => "μία" ; _ => "εκατό" + pre { "" ; "ν" / vowel}} ; size = sg} ; lin pot0 d = {s = d.s ; size = pl} ; lin pot110 = diff --git a/examples/numerals/hebrew_biblical.gf b/examples/numerals/hebrew_biblical.gf index 2510a21d1..a1e2c408b 100644 --- a/examples/numerals/hebrew_biblical.gf +++ b/examples/numerals/hebrew_biblical.gf @@ -87,7 +87,7 @@ lin pot3plus n m = {s = n.s ! attr ++ Alf ! n.size ++ "ו" ++ m.s ! indep} ; oper Alf : Size => Str = - table {{small} => "אלפים" ; {dual} => "אלפים" ; _ => "אלף"} ; + table {small => "אלפים" ; dual => "אלפים" ; _ => "אלף"} ; } diff --git a/examples/numerals/malay.gf b/examples/numerals/malay.gf index 1044fc87d..2fd8018bc 100644 --- a/examples/numerals/malay.gf +++ b/examples/numerals/malay.gf @@ -20,10 +20,10 @@ lincat oper ratus : Nm => Str = -- 100 - table {{sg} => "seratus" ; {pl} => "ratus"} ; + table {sg => "seratus" ; pl => "ratus"} ; ribu : Nm => Str = -- 1000 - table {{sg} => "seribu" ; {pl} => "ribu"} ; + table {sg => "seribu" ; pl => "ribu"} ; mkTab : Str -> Place => Str = \s -> table { _ => s } ; @@ -43,7 +43,7 @@ lin n8 = ss "delapan" ; n9 = ss "sembilan" ; - pot01 = {inh = sg ; s = table {{attr} => [] ; {indep} => "satu"}} ; + pot01 = {inh = sg ; s = table {attr => [] ; indep => "satu"}} ; pot0 d = mkNum d.s ; diff --git a/examples/numerals/russian.gf b/examples/numerals/russian.gf index 6e3a6b8e0..4b1584114 100644 --- a/examples/numerals/russian.gf +++ b/examples/numerals/russian.gf @@ -17,8 +17,8 @@ lincat Sub1000 = {s : Place => Gen => Str ; size : Size} ; lincat Sub1000000 = {s : Gen => Str} ; oper mille : Size => Str = table { - {nom} => "тысяча" ; - {sgg} => "тысячи" ; + nom => "тысяча" ; + sgg => "тысячи" ; _ => "тысяч"} ; oper gg : Str -> Gen => Str = \s -> table {_ => s} ; @@ -27,59 +27,59 @@ lin num x0 = {s = [] ++ x0.s ! masc ++ []} ; -- Russian environment lin n2 = - {s = table {{unit} => table {{fem} => "две" ; _ => "два"} ; - {teen} => gg "двенадцать" ; - {ten} => gg "двадцать" ; - {hund} => gg "двести"} ; + {s = table {unit => table {fem => "две" ; _ => "два"} ; + teen => gg "двенадцать" ; + ten => gg "двадцать" ; + hund => gg "двести"} ; size = sgg} ; lin n3 = - {s = table {{unit} => gg "три" ; - {teen} => gg "тринадцать" ; - {ten} => gg "тридцать" ; - {hund} => gg "триста"} ; + {s = table {unit => gg "три" ; + teen => gg "тринадцать" ; + ten => gg "тридцать" ; + hund => gg "триста"} ; size = sgg} ; lin n4 = - {s = table {{unit} => gg "четыре" ; - {teen} => gg "четырнадцать" ; - {ten} => gg "сорок" ; - {hund} => gg "четыреста"} ; + {s = table {unit => gg "четыре" ; + teen => gg "четырнадцать" ; + ten => gg "сорок" ; + hund => gg "четыреста"} ; size = sgg} ; lin n5 = - {s = table {{unit} => gg "пять" ; - {teen} => gg "пятнадцать" ; - {ten} => gg "пятьдесят" ; - {hund} => gg "пятьсот"} ; + {s = table {unit => gg "пять" ; + teen => gg "пятнадцать" ; + ten => gg "пятьдесят" ; + hund => gg "пятьсот"} ; size = plg} ; lin n6 = - {s = table {{unit} => gg "шесть" ; - {teen} => gg "шестнадцать" ; - {ten} => gg "шестьдесят" ; - {hund} => gg "шестьсот"} ; + {s = table {unit => gg "шесть" ; + teen => gg "шестнадцать" ; + ten => gg "шестьдесят" ; + hund => gg "шестьсот"} ; size = plg} ; lin n7 = - {s = table {{unit} => gg "семь" ; - {teen} => gg "семнадцать" ; - {ten} => gg "семьдесят" ; - {hund} => gg "семьсот"} ; + {s = table {unit => gg "семь" ; + teen => gg "семнадцать" ; + ten => gg "семьдесят" ; + hund => gg "семьсот"} ; size = plg} ; lin n8 = - {s = table {{unit} => gg "восемь" ; - {teen} => gg "восемнадцать" ; - {ten} => gg "восемьдесят" ; - {hund} => gg "восемьсот"} ; + {s = table {unit => gg "восемь" ; + teen => gg "восемнадцать" ; + ten => gg "восемьдесят" ; + hund => gg "восемьсот"} ; size = plg} ; lin n9 = - {s = table {{unit} => gg "девять" ; - {teen} => gg "девятнадцать" ; - {ten} => gg "девяносто" ; - {hund} => gg "девятьсот"} ; + {s = table {unit => gg "девять" ; + teen => gg "девятнадцать" ; + ten => gg "девяносто" ; + hund => gg "девятьсот"} ; size = plg} ; lin pot01 = - {s = table {{attr} => table {{hund} => gg "сто" ; _ => gg []} ; - _ => table {{hund} => gg "сто" ; - _ => table {{masc} => "один" ; {fem} => "одна" ; _ => "одно"}}} ; + {s = table {attr => table {hund => gg "сто" ; _ => gg []} ; + _ => table {hund => gg "сто" ; + _ => table {masc => "один" ; fem => "одна" ; _ => "одно"}}} ; size = nom} ; lin pot0 d = {s = table {_ => d.s} ; size = d.size} ; diff --git a/examples/numerals/tampere.gf b/examples/numerals/tampere.gf index bdd8f431b..554ecdfa5 100644 --- a/examples/numerals/tampere.gf +++ b/examples/numerals/tampere.gf @@ -4,9 +4,9 @@ concrete tampere of Numerals = { param Place = attr | indep ; param Nm = sg | pl ; oper sata : Nm => Str = - table {{sg} => "sata" ; {pl} => "sataa"} ; + table {sg => "sata" ; pl => "sataa"} ; oper tuhat : Nm => Str = - table {{sg} => "tuhat" ; {pl} => "tuhatta"} ; + table {sg => "tuhat" ; pl => "tuhatta"} ; lincat Numeral = {s : Str} ; lincat Digit = {s : Place => Str} ; lincat Sub10 = {inh : Nm ; s : Place => Str} ; @@ -18,21 +18,21 @@ lin num x0 = lin n2 = {s = table {p => "kaks"}} ; lin n3 = - {s = table {{attr} => "kol" ; {indep} => "kolme"}} ; + {s = table {attr => "kol" ; indep => "kolme"}} ; lin n4 = - {s = table {{attr} => "nel" ; {indep} => "neli"}} ; + {s = table {attr => "nel" ; indep => "neli"}} ; lin n5 = {s = table {p => "viis"}} ; lin n6 = {s = table {p => "kuus"}} ; lin n7 = - {s = table {{attr} => "seit" ; {indep} => "seittmn"}} ; + {s = table {attr => "seit" ; indep => "seittmn"}} ; lin n8 = {s = table {p => "kahreksan"}} ; lin n9 = {s = table {p => "yhreksn"}} ; lin pot01 = - {inh = sg ; s = table {{attr} => [] ; {indep} => "yks"}} ; + {inh = sg ; s = table {attr => [] ; indep => "yks"}} ; lin pot0 d = {inh = pl ; s = table {p => d.s ! indep}} ; lin pot110 =