diff --git a/lib/src/romanian/CatRon.gf b/lib/src/romanian/CatRon.gf index 91b4199cf..c0e97abbc 100644 --- a/lib/src/romanian/CatRon.gf +++ b/lib/src/romanian/CatRon.gf @@ -54,7 +54,7 @@ concrete CatRon of Cat = c1, c2 : Clitics => Str ; a : Agr ; isPol : Bool ; - poss : Number => Gender => Str } ; + poss : Number => Gender => ACase => Str } ; NP = NounPhrase ; diff --git a/lib/src/romanian/ExtraRon.gf b/lib/src/romanian/ExtraRon.gf index 84ed1d62a..e0c58268f 100644 --- a/lib/src/romanian/ExtraRon.gf +++ b/lib/src/romanian/ExtraRon.gf @@ -8,7 +8,11 @@ concrete ExtraRon of ExtraRonAbs = CatRon ** in mkClause ss np.isPol np2.a (insertDatClit (insertSimpObj (\\_ => (np2.s ! Nom).comp) vp) np); - AccSubjCl np vp = let ss = if_then_Str np.isPronoun "" (np.s ! Ac).comp + AccSubjCl np vp = let s1 = case np.nForm of + {HasRef False => ""; + _ => "pe"}; + ss = if_then_Str np.isPronoun "" (s1 ++ (np.s ! Ac).comp) + in mkClause ss np.isPol (agrP3 Masc Sg) (insertAccClit vp np) ; diff --git a/lib/src/romanian/LexiconRon.gf b/lib/src/romanian/LexiconRon.gf index e74086a94..0c5c791a3 100644 --- a/lib/src/romanian/LexiconRon.gf +++ b/lib/src/romanian/LexiconRon.gf @@ -75,7 +75,7 @@ lin fear_VS = mkVS (v_besch100 "teme") ; fear_V2 = mmkV2 (mkRVAcc (mkV100 "teme")) (mkPrep "de" Ac) ; find_V2 = dirV2 (mkV "găsi") ; - fish_N = mkN "peşte" masculine ; + fish_N = mkN "peşte" "peşti" masculine ; floor_N = mkN "podea" ; forget_V2 = dirV2 (v_besch18 "uita") ; fridge_N = mkN "frigider" ; @@ -303,7 +303,7 @@ wide_A = mkA "adânc" ; wind_N = mkNR "vânt" ; wing_N = mkN "aripă" ; worm_N = mkN "vierme" masculine; - year_N = mkN "an" masculine; + year_N = mkN "an" "ani" masculine; bite_V2 = dirV2 (v_besch22 "muşca") ; blow_V = v_besch55 "sufla" ; breathe_V = v_besch17 "respira" ; diff --git a/lib/src/romanian/MorphoRon.gf b/lib/src/romanian/MorphoRon.gf index 333abe209..78f247269 100644 --- a/lib/src/romanian/MorphoRon.gf +++ b/lib/src/romanian/MorphoRon.gf @@ -294,7 +294,11 @@ oper adjDimin : Str -> Adj = \s -> in mkAdjSpec s f pl plf; - +oper adjNat : Str -> Adj = \s -> + let f = Predef.tk 2 s + "en" + in + mkAdjSpec s (s+"ă") (f+"i") (f+"e"); + -- the phonetical mutations that occur in Romanian (Singular Masculine -> Singular Feminine) are -- o -> oa (Ex : frumos -> frumoasă) -- e -> ea / ie -> ia (Ex : des -> deasă) @@ -434,6 +438,7 @@ mkAdjReg : Str -> Adj = \s -> x + "e" => adjMare s; x + "iu" => adjAuriu s; x + "el" => adjDimin s; + x + "an" => adjNat s; _ => mkAdjSpec s (mkFemSg radF) (mkStemPlReg rad) (mkFemAdj rad) }; diff --git a/lib/src/romanian/NounRon.gf b/lib/src/romanian/NounRon.gf index 60eaf2383..c812610da 100644 --- a/lib/src/romanian/NounRon.gf +++ b/lib/src/romanian/NounRon.gf @@ -9,7 +9,7 @@ concrete NounRon of Noun = n = det.n; gg = agrGender cn.g n ; ag = agrP3 gg n ; - hr = orB cn.needsRefForm (orB (andB (getClit cn.a) det.hasRef) (andB det.isDef cn.isComp)); + hr = orB cn.needsRefForm (andB (getClit cn.a) (orB det.hasRef (andB det.isDef cn.isComp))); nf = if_then_else NForm hr HasClit (HasRef False); st= if_then_else Species det.isDef Def Indef; rs = if_then_else Species det.hasRef Def Indef @@ -147,8 +147,8 @@ in { -- assume that it refers to people PossPron p = { - s = \\_,n,g,c => p.poss ! n ! g ; - sp = \\ n,g,c => artPos g n c ++ p.poss ! n ! g ; + s = \\_,n,g,c => p.poss ! n ! g ! c; + sp = \\ n,g,c => artPos g n c ++ p.poss ! n ! g ! c ; isDef = True ; isPost = True ; hasRef = True @@ -244,7 +244,7 @@ in { g = f.g ; a = f.a ; needsRefForm = False ; - isComp = getClit f.a + isComp = False } ; ComplN3 f x = { @@ -253,7 +253,7 @@ in { c2 = f.c3; a = f.a ; needsRefForm = False ; - isComp = getClit f.a + isComp = False } ; AdjCN ap cn = @@ -269,7 +269,7 @@ in { g = g ; a = cn.a ; needsRefForm = cn.needsRefForm ; - isComp = getClit cn.a + isComp = True } ; @@ -278,7 +278,7 @@ in { g = cn.g ; a = cn.a ; needsRefForm = cn.needsRefForm; - isComp = False + isComp = True } ; SentCN cn sc = let g = cn.g in { @@ -286,7 +286,7 @@ in { g = g ; a = cn.a ; needsRefForm = cn.needsRefForm; - isComp = False + isComp = True } ; AdvCN cn sc = let g = cn.g in { @@ -294,7 +294,7 @@ in { g = g; a = cn.a ; needsRefForm = cn.needsRefForm; - isComp = False + isComp = True } ; ApposCN cn np = let g = cn.g in { @@ -302,7 +302,7 @@ in { g = g; a = cn.a ; needsRefForm = cn.needsRefForm; - isComp = False + isComp = True } ; diff --git a/lib/src/romanian/NumeralRon.gf b/lib/src/romanian/NumeralRon.gf index ed58918a0..e99d38d3b 100644 --- a/lib/src/romanian/NumeralRon.gf +++ b/lib/src/romanian/NumeralRon.gf @@ -9,7 +9,7 @@ param Placement = indep | attr ; lincat Digit = {s : CardOrd => DForm => Str ; size : Size} ; lincat Sub10 = {s : CardOrd => DForm => Placement => Str ; size : Size} ; lincat Sub100 = {s : CardOrd => NumF => Placement => Str ; size : Size} ; -lincat Sub1000 = {s : CardOrd => NumF => Placement => Str ; size : Size} ; +lincat Sub1000 = {s : CardOrd => NumF => Placement => Str ; size : Size } ; lincat Sub1000000 = { s : CardOrd => NumF => Placement => Str; size : Size } ; @@ -174,12 +174,11 @@ lin pot2 d = 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 = \\c,f,_ => d.s ! (NCard Fem) ! unit ! indep ++ (mksute d.size) ++ e.s ! c ! f ! attr ; - size = pl} ; + size = e.size} ; lin pot2as3 n = n ; @@ -193,8 +192,8 @@ lin pot3 n = lin pot3plus n m = - {s = \\c, f, p => mkmie n.size (n.s ! (NCard Fem) ! f ! indep) ++ m.s ! c ! f ! attr; - size = pl + {s = \\c, f, p => mkmie n.size (n.s ! (NCard Fem) ! f ! indep) ++ m.s ! c ! f ! attr; + size = m.size }; oper mksute : Size -> Str = \sz -> table {sg => "sută" ; _ => "sute" } ! sz ; diff --git a/lib/src/romanian/ParadigmsRon.gf b/lib/src/romanian/ParadigmsRon.gf index 1b02d086d..528f36fcb 100644 --- a/lib/src/romanian/ParadigmsRon.gf +++ b/lib/src/romanian/ParadigmsRon.gf @@ -516,9 +516,14 @@ mkPronoun :(_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Number -> Person -> Pron =\eu, } ; c1 = \\c => (cliticsAc g n p).s ! c ; c2 = \\c => (cliticsDa g n p).s ! c ; a = {g = g ; n = n ; p = p} ; - poss = table {Sg => table {Masc => meuP ; Fem => mea}; - Pl => table {Masc => mei ; Fem => mele} - }; + poss = \\n,g,c => case of + { => meuP ; + => meuP ; + => mele ; + => mea; + => mei; + => mele + } ; isPol = False; lock_Pron = <>};