From b492666c0e2b59e2d5a7c7434bafdbbdac388f49 Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 15 Sep 2014 07:17:11 +0000 Subject: [PATCH] Finnish NPSep form, to avoid empty Nominative forms in wrong places in case of pro drop. --- lib/src/finnish/ExtraFin.gf | 4 ++-- lib/src/finnish/MorphoFin.gf | 2 +- lib/src/finnish/PhraseFin.gf | 4 ++-- lib/src/finnish/ResFin.gf | 10 +++++----- lib/src/finnish/VerbFin.gf | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/src/finnish/ExtraFin.gf b/lib/src/finnish/ExtraFin.gf index d9d5cc464..b581eaeea 100644 --- a/lib/src/finnish/ExtraFin.gf +++ b/lib/src/finnish/ExtraFin.gf @@ -159,7 +159,7 @@ concrete ExtraFin of ExtraFinAbs = CatFin ** IAdvAdv adv = {s = "kuinka" ++ adv.s} ; ProDrop p = { - s = table {NPCase (Nom) => [] ; c => p.s ! c} ; + s = table {NPCase Nom => [] ; c => p.s ! c} ; poss = [] ; -- drop Gen only works in adjectival position: "autoni", but not in "ø täytyy mennä" a = p.a ; @@ -167,7 +167,7 @@ concrete ExtraFin of ExtraFinAbs = CatFin ** } ; ProDropPoss p = { - s1 = \\_,_ => case p.a of {Ag _ P3 => p.s ! NPCase Gen ; _ => []} ; -- hänen nimensä ; minun nimeni + s1 = \\_,_ => case p.a of {Ag _ P3 => p.s ! NPCase Gen ; _ => []} ; -- hänen nimensä ; (minun) nimeni sp = \\_,_ => p.s ! NPCase Gen ; s2 = case p.hasPoss of { True => table {Front => BIND ++ possSuffixFront p.a ; diff --git a/lib/src/finnish/MorphoFin.gf b/lib/src/finnish/MorphoFin.gf index 67f79ffed..d3be14bc9 100644 --- a/lib/src/finnish/MorphoFin.gf +++ b/lib/src/finnish/MorphoFin.gf @@ -943,7 +943,7 @@ caseTable : Number -> CommonNoun -> Case => Str = \n,cn -> a = Predef.dp 1 minuna } in {s = table { - NPCase Nom => mina ; ----- NPSep + NPCase Nom | NPSep => mina ; NPCase Gen => minun ; NPCase Part => minua ; NPCase Transl => minu + "ksi" ; diff --git a/lib/src/finnish/PhraseFin.gf b/lib/src/finnish/PhraseFin.gf index 557ef1a73..274dc7129 100644 --- a/lib/src/finnish/PhraseFin.gf +++ b/lib/src/finnish/PhraseFin.gf @@ -11,7 +11,7 @@ concrete PhraseFin of Phrase = CatFin ** open ResFin, StemFin, (P = Prelude) in UttIP ip = {s = ip.s ! NPCase Nom} ; UttIAdv iadv = iadv ; - UttNP np = {s = np.s ! NPAcc} ; ----NPSep} ; + UttNP np = {s = np.s ! NPSep} ; UttVP vp = {s = infVP SCNom Pos (agrP3 Sg) vp Inf1} ; UttAdv adv = adv ; UttCN np = {s = np.s ! NCase Sg Nom} ; @@ -23,6 +23,6 @@ concrete PhraseFin of Phrase = CatFin ** open ResFin, StemFin, (P = Prelude) in PConjConj conj = {s = conj.s2} ; NoVoc = {s = []} ; - VocNP np = {s = "," ++ np.s ! NPCase Nom} ; + VocNP np = {s = "," ++ np.s ! NPSep} ; } diff --git a/lib/src/finnish/ResFin.gf b/lib/src/finnish/ResFin.gf index 39d5cb120..3f9296470 100644 --- a/lib/src/finnish/ResFin.gf +++ b/lib/src/finnish/ResFin.gf @@ -97,7 +97,7 @@ oper -- have a uniform, special accusative form ("minut", etc). param - NPForm = NPCase Case | NPAcc ; -- | NPSep ; -- NPSep is NP used alone, e.g. in an Utt. Equals NPCase Nom except for pro-drop + NPForm = NPCase Case | NPAcc | NPSep ; -- NPSep is NP used alone, e.g. in an Utt and as complement to copula. Equals NPCase Nom except for pro-drop oper npform2case : Number -> NPForm -> Case = \n,f -> @@ -105,9 +105,9 @@ oper -- type signature: workaround for gfc bug 9/11/2007 case < : NPForm * Number> of { => c ; - => Gen ;-- appCompl does the job - => Nom ----- => Nom + => Gen ; -- appCompl does the job + => Nom ; + => Nom } ; n2nform : NForm -> NForm = \nf -> case nf of { @@ -559,7 +559,7 @@ oper nsa = possSuffixFront agr in { s = table { - NPCase Nom => itse ! NPossNom Sg ; + NPCase Nom | NPSep => itse ! NPossNom Sg ; NPCase Gen | NPAcc => itse ! NPossNom Sg + nsa ; NPCase Transl => itse ! NPossTransl Sg + nsa ; NPCase Illat => itse ! NPossIllat Sg + nsa ; diff --git a/lib/src/finnish/VerbFin.gf b/lib/src/finnish/VerbFin.gf index 593f959e2..bad8752ec 100644 --- a/lib/src/finnish/VerbFin.gf +++ b/lib/src/finnish/VerbFin.gf @@ -123,7 +123,7 @@ concrete VerbFin of Verb = CatFin ** open Prelude, ResFin, StemFin in { } --- definiteness of NP ? in cn.s ! (NCase n c) } ; - CompNP np = {s = \\_ => np.s ! NPCase Nom} ; + CompNP np = {s = \\_ => np.s ! NPSep} ; CompAdv a = {s = \\_ => a.s} ; VPSlashPrep vp prep = vp ** {c2 = prep} ;