From 4ef98f44d2ebccb70f7935a3ffabd31e66f1fefe Mon Sep 17 00:00:00 2001 From: krasimir Date: Mon, 14 Sep 2009 07:49:08 +0000 Subject: [PATCH] remove some more independent keywords from Romanian and import the right version of NumeralRon.gf --- lib/src/romanian/AdjectiveRon.gf | 6 +- lib/src/romanian/AdverbRon.gf | 2 +- lib/src/romanian/ConjunctionRon.gf | 2 +- lib/src/romanian/GrammarRon.gf | 4 +- lib/src/romanian/LangRon.gf | 2 +- lib/src/romanian/NumeralRon.gf | 238 ++++++++++++++--------------- 6 files changed, 126 insertions(+), 128 deletions(-) diff --git a/lib/src/romanian/AdjectiveRon.gf b/lib/src/romanian/AdjectiveRon.gf index e1d4f99f8..15123b406 100644 --- a/lib/src/romanian/AdjectiveRon.gf +++ b/lib/src/romanian/AdjectiveRon.gf @@ -1,4 +1,4 @@ -incomplete concrete AdjectiveRon of Adjective = +concrete AdjectiveRon of Adjective = CatRon ** open ResRon, Prelude in { lin @@ -8,7 +8,7 @@ incomplete concrete AdjectiveRon of Adjective = isPre = a.isPre } ; ComparA a np = { - s = \\af => more_CAdv.s ++ a.s ! af ++ conjThan ++ (np.s ! Ac).comp ; + s = \\af => "mai" ++ a.s ! af ++ conjThan ++ (np.s ! Ac).comp ; isPre = False } ; @@ -21,7 +21,7 @@ incomplete concrete AdjectiveRon of Adjective = } ; UseComparA a = { - s = \\af => more_CAdv.s ++ a.s ! af ; + s = \\af => "mai" ++ a.s ! af ; isPre = False } ; diff --git a/lib/src/romanian/AdverbRon.gf b/lib/src/romanian/AdverbRon.gf index 25f9d86d8..bbcc0c2ae 100644 --- a/lib/src/romanian/AdverbRon.gf +++ b/lib/src/romanian/AdverbRon.gf @@ -1,4 +1,4 @@ -incomplete concrete AdverbRon of Adverb = +concrete AdverbRon of Adverb = CatRon ** open ResRon, Prelude in { lin diff --git a/lib/src/romanian/ConjunctionRon.gf b/lib/src/romanian/ConjunctionRon.gf index bb41e9560..4f5d71047 100644 --- a/lib/src/romanian/ConjunctionRon.gf +++ b/lib/src/romanian/ConjunctionRon.gf @@ -1,4 +1,4 @@ -incomplete concrete ConjunctionRon of Conjunction = +concrete ConjunctionRon of Conjunction = CatRon ** open ResRon, Coordination, Prelude in { flags optimize=all_subs ; diff --git a/lib/src/romanian/GrammarRon.gf b/lib/src/romanian/GrammarRon.gf index 030326415..427dc167d 100644 --- a/lib/src/romanian/GrammarRon.gf +++ b/lib/src/romanian/GrammarRon.gf @@ -1,11 +1,11 @@ ---# -path=.:../romance:../abstract:../common:prelude +--# -path=.:../abstract:../common:../prelude concrete GrammarRon of Grammar = NounRon, VerbRon, AdjectiveRon, AdverbRon, - NumeralRonn, + NumeralRon, SentenceRon, IdiomRon, QuestionRon, diff --git a/lib/src/romanian/LangRon.gf b/lib/src/romanian/LangRon.gf index 9663cb5d1..304b0c87d 100644 --- a/lib/src/romanian/LangRon.gf +++ b/lib/src/romanian/LangRon.gf @@ -1,4 +1,4 @@ ---# -path=.:../romance:../abstract:../common +--# -path=.:../abstract:../common:../prelude concrete LangRon of Lang = GrammarRon, diff --git a/lib/src/romanian/NumeralRon.gf b/lib/src/romanian/NumeralRon.gf index 65250a3c1..2f30b45da 100644 --- a/lib/src/romanian/NumeralRon.gf +++ b/lib/src/romanian/NumeralRon.gf @@ -1,14 +1,14 @@ concrete NumeralRon of Numeral = CatRon ** open MorphoRon, CatRon, Prelude in { -param DForm = unit | teen | ten | attr ; +param DForm = unit | teen | ten | teen_inf ; +param Place = indep | attr ; - -lincat Digit = {s : NumF => CardOrd => DForm => Str ; size : Size} ; -lincat Sub10 = {s : NumF => CardOrd => DForm => Str ; size : Size} ; -lincat Sub100 = {s : NumF => CardOrd => Str ; size : Size} ; -lincat Sub1000 = {s : NumF => CardOrd => Str ; size : Size} ; -lincat Sub1000000 = { s : NumF => CardOrd => Str; size : Size } ; +lincat Digit = {s : CardOrd => DForm => Str ; size : Size} ; +lincat Sub10 = {s : CardOrd => DForm => Place => Str ; size : Size} ; +lincat Sub100 = {s : CardOrd => NumF => Place => Str ; size : Size} ; +lincat Sub1000 = {s : CardOrd => NumF => Place => Str ; size : Size} ; +lincat Sub1000000 = { s : CardOrd => NumF => Place => Str; size : Size } ; @@ -21,9 +21,9 @@ oper mkOrdinalForm : Str -> Gender -> Str = }; Fem => case two of { x + ("ă"|"u") => x +"a"; - x + "ie" => x +"ia"; - x + ("ii"|"îi") => x + "a" ; - x + "i" => two + "a"; + x + "ei" => two + "a"; + x + "ii" => x + "ia" ; + x + "i" => x + "ea"; x + "ie" => x +"a" ; _ => two +"a" } @@ -34,9 +34,8 @@ oper mkOrdinal : Str -> Gender -> ACase -> Str = \two, g, fl -> mkOrd (mkOrdinalForm two g) g fl; oper mkOrd : Str -> Gender -> ACase -> Str = -\two, g, fl -> let cc = variants{(artPos g Sg ANomAcc)++ two ; - (artDem g Sg ANomAcc) ++ "de-"+(artPos g Sg ANomAcc) ++ two - } in +\two, g, fl -> let cc = (artPos g Sg ANomAcc) ++ two + in case fl of { ANomAcc => cc ; AGenDat => (artDem g Sg AGenDat)++"de-"+(artPos g Sg ANomAcc)++ two ; @@ -45,49 +44,29 @@ oper mkOrd : Str -> Gender -> ACase -> Str = oper mkNum : Str -> Str -> Str -> Str -> Digit = - \two -> \twelve -> \twenty -> \doispe -> mkNumVSpc two twelve twelve twenty two doispe doispe two (mkOrdinalForm two Fem); + \two -> \twelve -> \twenty -> \doispe -> mkNumVSpc two twelve twelve twenty two doispe doispe (mkOrdinalForm two Masc) (mkOrdinalForm two Fem); oper mkNumVSpc : Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Str -> Digit = - \two -> \twelve -> \douasprezece -> \twenty -> \doua -> \doispe -> \douaspe -> \o -> \una-> - {s = table { Formal => table { - NCard Masc => table {unit => two ; teen => twelve ; - ten => twenty ; attr => two - } ; - NCard Fem => table {unit => doua ; teen => douasprezece ; - ten => twenty ; attr => o - } ; - NOrd Masc => table {unit => mkOrdinalForm two Masc ; - teen => mkOrdinalForm twelve Masc ; - ten => mkOrdinalForm twenty Masc ; - attr => mkOrdinalForm two Masc - } ; - NOrd Fem => table {unit => mkOrdinalForm doua Fem ; - teen => mkOrdinalForm douasprezece Fem ; - ten => mkOrdinalForm twenty Fem ; - attr => una - } - } ; - Informal => table { - NCard Masc => table {unit => two ; teen => doispe ; - ten => twenty ; attr => two - } ; - NCard Fem => table {unit => doua ; teen => douaspe ; - ten => twenty ; attr => o - } ; - NOrd Masc => table {unit => mkOrdinalForm two Masc ; - teen => mkOrdinalForm doispe Masc ; - ten => mkOrdinalForm twenty Masc ; - attr => mkOrdinalForm two Masc - } ; - NOrd Fem => table {unit => mkOrdinalForm doua Fem ; - teen => mkOrdinalForm douaspe Fem ; - ten => mkOrdinalForm twenty Fem ; - attr => una - } - } - - }; + \two -> \twelve -> \douasprezece -> \twenty -> \dou -> \doispe -> \douaspe -> \doilea -> \doua -> + {s = table { + NCard Masc => table {unit => two ; teen => twelve ; + ten => twenty ; teen_inf => doispe + } ; + NCard Fem => table {unit => dou ; teen => douasprezece ; + ten => twenty ; teen_inf => douaspe + } ; + NOrd Masc => table {unit => doilea ; + teen => mkOrdinalForm twelve Masc ; + ten => mkOrdinalForm twenty Masc ; + teen_inf => mkOrdinalForm doispe Masc + } ; + NOrd Fem => table {unit => doua ; + teen => mkOrdinalForm douasprezece Fem ; + ten => mkOrdinalForm twenty Fem ; + teen_inf => mkOrdinalForm douaspe Fem + } + } ; size = less20 ; lock_Digit = <> } ; @@ -98,35 +77,41 @@ oper regNum : Str -> Digit = oper mkMidF : Str -> Str -> Sub100 = \unsprezece, unspe -> -{ s = table { Formal =>table { - NCard g => unsprezece ; - NOrd g => mkOrdinalForm unsprezece g - }; - Informal => table{ - NCard g => unspe; - NOrd g => mkOrdinalForm unspe g - } - } ; -size = less20 ; -lock_Sub100 = <> -}; +{ s = table {NCard g => table { Formal => \\_ => unsprezece ; + Informal => \\_ => unspe + }; + NOrd g => table {Formal => \\_ => mkOrdinalForm unsprezece g; + Informal => \\_ => mkOrdinalForm unspe g + } + }; + + size = less20 ; + lock_Sub100 = <> + }; - lin num = \d -> - { s = \\o => \\c => table { NCard g => d.s ! o ! (NCard g) ; - NOrd g => let ss = d.s ! o ! (NOrd g) - in - case d.size of - { sg => (artDem g Sg c) ++ ss ; - _ => mkOrd ss g c - } - }; + { s = \\cse => table { NCard g => \\f => d.s ! (NCard g) ! f ! indep ; + NOrd g => \\f => let ss = d.s ! (NOrd g) ! f ! indep + in + case d.size of + { sg => (artDem g Sg cse) ++ ss ; + _ => mkOrd ss g cse + } + }; + sp = \\cse => table { NCard g => \\f => d.s ! (NCard g) ! f ! attr ; + NOrd g => \\f => let ss = d.s ! (NOrd g) ! f ! indep + in + case d.size of + { sg => (artDem g Sg cse) ++ ss ; + _ => mkOrd ss g cse + } + }; size = d.size } ; -- Latin A Supplement chars -lin n2 = mkNumVSpc "doi" "doispreze" "douăsprezece" "douăzeci" "două" "doișpe" "douășpe" "două" "doua"; +lin n2 = mkNumVSpc "doi" "doispreze" "douăsprezece" "douăzeci" "două" "doișpe" "douășpe" "doilea" "doua"; lin n3 = regNum "trei"; lin n4 = mkNum "patru" "paisprezece" "patruzeci" "paișpe"; lin n5 = mkNum "cinci" "cinsprezece" "cincizeci" "cinșpe"; @@ -135,70 +120,78 @@ lin n7 = mkNum " lin n8 = mkNum "opt" "optsprezece" "optzeci" "optișpe"; lin n9 = regNum "nouă"; -lin pot01 = let num = mkNumVSpc "unu" "unsprezece" "unsprezece" "zece" "o" "unșpe" "unșpe" "una" "una" +lin pot01 = let num = mkNumVSpc "un" "unsprezece" "unsprezece" "zece" "o" "unșpe" "unșpe" "dintâi" "dintâi" ; + dep = mkNumVSpc "unu" "unsprezece" "unsprezece" "zece" "una" "unșpe" "unșpe" "unulea" "una" + in - { s = num.s ; + { s = \\o,c => table {indep => num.s ! o ! c ; + attr => dep.s ! o ! c + } ; size = sg }; -lin pot0 d = d ; +lin pot0 d = { s = \\o, c => \\_ => d.s ! o ! c ; + size = less20 + }; lin pot110 = mkMidF "zece" "zece" ; -lin pot111 = mkMidF "unsprezece" "unșpe" ; +lin pot111 = mkMidF "unsprezece" "unșpe" ; - lin pot1to19 = \d -> - {s = \\o,c => d.s ! o ! c ! teen ; - size = less20} ; + {s = \\c => table { Formal => \\_ => d.s ! c ! teen ; + Informal => \\_ => d.s ! c ! teen_inf + }; + size = less20 + }; lin pot0as1 = \d -> - {s = \\o,c => d.s ! o ! c ! unit; - size = d.size} ; + {s = \\c,_,p => d.s ! c ! unit ! p ; + size = d.size + }; lin pot1 = \d -> - {s = \\o,c => d.s ! o ! c ! ten ; - size = pl} ; + {s = \\c => \\_,_ => d.s ! c ! ten ; + size = pl + }; + lin pot1plus d e = - {s = \\o => table { - NCard g => d.s ! o ! (NCard g) ! ten ++ "și" ++ e.s ! o ! (NCard g) ! attr ; - NOrd g => d.s ! o ! (NCard g) ! ten ++ "și" ++e.s ! o ! (NOrd g) ! attr - }; - - size = pl} ; + {s = table { + NCard g => \\_,_ => d.s ! (NCard g) ! ten ++ "și" ++ e.s ! (NCard g) ! unit ! attr ; + NOrd g => \\_,_ => d.s ! (NCard g) ! ten ++ "și" ++ e.s ! (NOrd g) ! unit ! attr + }; + size = pl + }; lin pot1as2 n = n ; lin pot2 d = - {s = \\o => table { - NCard g => d.s ! o ! (NCard Fem) ! unit ++ (mksute d.size) ; - NOrd g => d.s ! o ! (NCard Fem)! unit ++ (mkSute d.size g) - }; + {s = table { + NCard g => \\_,_ => d.s ! (NCard Fem) ! unit ! indep ++ (mksute d.size) ; + NOrd g => \\_,_ => d.s ! (NCard Fem) ! unit ! indep ++ (mkSute d.size g) + }; size = pl} ; - + lin pot2plus d e = - {s = \\o, c => d.s ! o ! (NCard Fem) ! unit ++ (mksute d.size) ++ e.s ! o ! c ; + {s = \\c,f,_ => d.s ! (NCard Fem) ! unit ! indep ++ (mksute d.size) ++ e.s ! c ! f ! attr ; size = pl} ; -lin pot2as3 n = - {s = \\o, c => n.s ! o ! c ; - size = n.size - }; - +lin pot2as3 n = n ; + lin pot3 n = - {s = \\o => table { - NCard g => mkmie n.size (n.s ! o ! (NCard Fem)) (n.s ! o ! (NCard Fem)) ; - NOrd g => mkMie n.size g (n.s ! o ! (NCard Fem)) (n.s ! o ! (NCard Fem)) - }; - size = n.size + {s = table { + NCard g => \\f,p => mkmie n.size (n.s ! (NCard Fem) ! f ! indep) ; + NOrd g => \\f,p => mkMie n.size g (n.s ! (NCard Fem) ! f ! indep) + }; + size = pl } ; lin pot3plus n m = - {s = \\o, c => (mkmie n.size (n.s ! o ! (NCard Fem)) (n.s ! o ! (NCard Fem))) ++ m.s ! Formal ! c; + {s = \\c, f, p => mkmie n.size (n.s ! (NCard Fem) ! f ! indep) ++ m.s ! c ! f ! attr; size = pl }; @@ -207,34 +200,38 @@ oper mkSute : Size -> Gender -> Str = \sz, g -> table {sg => mkOrdinalForm "sută" g ; _ => mkOrdinalForm "sute" g } ! sz ; -oper mkmie : Size -> Str -> Str -> Str = \sz, attr, indep -> - table {sg => "o" ++ "mie" ; +oper mkmie : Size -> Str -> Str = \sz, attr -> + table {sg => "o" ++ "mie" ; less20 => attr ++ "mii" ; - pl => indep ++ "de" ++ "mii"} ! sz ; + pl => attr ++ "de" ++ "mii"} ! sz ; -oper mkMie : Size -> Gender -> Str -> Str -> Str = \sz, g, attr, indep -> +oper mkMie : Size -> Gender -> Str -> Str = \sz, g, attr -> table { sg => "o" ++ mkOrdinalForm "mie" g ; less20 => attr ++ mkOrdinalForm "mii" g ; - pl => indep ++ "de" ++ mkOrdinalForm "mii" g } ! sz ; + pl => attr ++ "de" ++ mkOrdinalForm "mii" g } ! sz ; --numerals as sequences of digits : lincat - Dig = {s : CardOrd => Str; n : Number} ; + Dig = {s : CardOrd => Str; n : Size ; isDig : Bool} ; lin IDig d = d ; IIDig d i = { s = \\o => d.s ! NCard Masc ++ i.s ! o ; - n = Pl + n = case d.n of + { sg => if_then_else Size (i.isDig) less20 pl ; + _ => pl + }; + isDig = False } ; lin D_0 = mkDig "0" ; - D_1 = mk3Dig "1" "1ul" "1a" Sg ; ---- gender + D_1 = mk3Dig "1" "1ul" "1a" sg ; ---- gender D_2 = mkDig "2"; D_3 = mkDig "3" ; D_4 = mkDig "4" ; @@ -245,15 +242,16 @@ lin D_9 = mkDig "9" ; -oper mkDig : Str -> Dig = \c -> mk3Dig c (c + "lea") (c + "a") Pl ; +oper mkDig : Str -> Dig = \c -> mk3Dig c (c + "lea") (c + "a") less20 ; -oper mk3Dig : Str -> Str -> Str-> Number -> Dig = \c,u,o,n -> { +oper mk3Dig : Str -> Str -> Str-> Size -> Dig = \c,u,o,n -> { s = table {NCard g => c ; NOrd Masc => u ; NOrd Fem => o } ; n = n; + isDig = True ; lock_Dig = <> } ; - TDigit = {s : CardOrd => Str; n : Number} ; + TDigit = {s : CardOrd => Str; n : Size ; isDig : Bool} ; }