diff --git a/src/chinese/CatChi.gf b/src/chinese/CatChi.gf index b4570b4e..b65edceb 100644 --- a/src/chinese/CatChi.gf +++ b/src/chinese/CatChi.gf @@ -28,7 +28,7 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu -- Relative RCl = {s : Polarity => Aspect => Str} ; - RP = {s : Str} ; + RP = {s : Bool => Str} ; -- True = applied to adjectival VP's hence "de" is not repeated -- Verb diff --git a/src/chinese/ExtraChi.gf b/src/chinese/ExtraChi.gf index 2693b596..cba1a092 100644 --- a/src/chinese/ExtraChi.gf +++ b/src/chinese/ExtraChi.gf @@ -27,7 +27,7 @@ concrete ExtraChi of ExtraChiAbs = CatChi ** GenNP np = {s,pl = np.s ++ possessive_s ; detType = DTPoss} ; - GenRP nu cn = {s = cn.s ++ relative_s} ; ---- ?? + GenRP nu cn = {s = \\_ => cn.s ++ relative_s} ; ---- ?? ----------------------- diff --git a/src/chinese/IdiomChi.gf b/src/chinese/IdiomChi.gf index cbb34949..9a9d4d10 100644 --- a/src/chinese/IdiomChi.gf +++ b/src/chinese/IdiomChi.gf @@ -21,7 +21,8 @@ concrete IdiomChi of Idiom = CatChi ** open Prelude, ResChi in { ProgrVP vp = { verb = regVerb zai_s ; compl = vp.prePart ++ vp.verb.s ++ vp.compl ; - prePart, topic = [] + prePart, topic = [] ; + isAdj = False ; } ; diff --git a/src/chinese/ParadigmsChi.gf b/src/chinese/ParadigmsChi.gf index 79f5e1ab..269bfbc4 100644 --- a/src/chinese/ParadigmsChi.gf +++ b/src/chinese/ParadigmsChi.gf @@ -209,7 +209,7 @@ oper mkPConj : Str -> PConj = \s -> lin PConj {s = word s} ; mkRP : Str -> RP - = \s -> lin RP {s = word s} ; + = \s -> lin RP {s = table {True => [] ; False => word s}} ; --. auxiliary diff --git a/src/chinese/RelativeChi.gf b/src/chinese/RelativeChi.gf index f1803957..222c187c 100644 --- a/src/chinese/RelativeChi.gf +++ b/src/chinese/RelativeChi.gf @@ -3,10 +3,13 @@ concrete RelativeChi of Relative = CatChi ** open ResChi, Prelude in { lin RelCl cl = {s = \\p,a => cl.s ! p ! a ++ relative_s} ; ---- ?? RelVP rp vp = { - s = \\p,a => vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ rp.s + s = \\p,a => case vp.isAdj of { + True => vp.prePart ++ vp.compl ++ rp.s ! True ; ---- FunRP also ? + _ => vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ rp.s ! False + } ; } ; ---- ?? - RelSlash rp slash = {s = \\p,a => slash.s ! p ! a ++ appPrep slash.c2 rp.s} ; - FunRP p np rp = ss (appPrep p np.s ++ rp.s) ; ---- ?? - IdRP = ss relative_s ; + RelSlash rp slash = {s = \\p,a => slash.s ! p ! a ++ appPrep slash.c2 (rp.s ! False)} ; + FunRP p np rp = {s = \\a => appPrep p np.s ++ rp.s ! a} ; ---- ?? + IdRP = {s = table {True => [] ; False => relative_s}} ; } diff --git a/src/chinese/ResChi.gf b/src/chinese/ResChi.gf index f2a33661..ba96bcee 100644 --- a/src/chinese/ResChi.gf +++ b/src/chinese/ResChi.gf @@ -104,7 +104,8 @@ oper topic : Str ; -- topicalized item, before subject prePart : Str ; -- between subject and verb verb : Verb ; - compl : Str -- after verb + compl : Str ; -- after verb + isAdj : Bool ; -- whether it is an adjectival predication and behaves differently in relative } ; NP = {s : Str} ; @@ -167,47 +168,30 @@ oper verb = v ; compl = part ; prePart, topic = [] ; + isAdj = False ; } ; - insertObj : NP -> VP -> VP = \np,vp -> { - verb = vp.verb ; + insertObj : NP -> VP -> VP = \np,vp -> vp ** { compl = np.s ++ vp.compl ; - prePart = vp.prePart ; - topic = vp.topic } ; - insertObjPost : NP -> VP -> VP = \np,vp -> { - verb = vp.verb ; + insertObjPost : NP -> VP -> VP = \np,vp -> vp ** { compl = vp.compl ++ np.s ; - prePart = vp.prePart ; - topic = vp.topic } ; - insertAdv : SS -> VP -> VP = \adv,vp -> { - verb = vp.verb ; - compl = vp.compl ; + insertAdv : SS -> VP -> VP = \adv,vp -> vp ** { prePart = adv.s ++ vp.prePart ; - topic = vp.topic } ; - insertTopic : SS -> VP -> VP = \adv,vp -> { - verb = vp.verb ; - compl = vp.compl ; - prePart = vp.prePart ; + insertTopic : SS -> VP -> VP = \adv,vp -> vp ** { topic = adv.s ++ vp.topic } ; - insertAdvPost : SS -> VP -> VP = \adv,vp -> { - verb = vp.verb ; - compl = vp.compl ; + insertAdvPost : SS -> VP -> VP = \adv,vp -> vp ** { prePart = vp.prePart ++ adv.s ; - topic = vp.topic } ; - insertPP : SS -> VP -> VP = \pp,vp -> { - verb = vp.verb ; - compl = vp.compl ; + insertPP : SS -> VP -> VP = \pp,vp -> vp ** { prePart = vp.prePart ++ pp.s ; - topic = vp.topic } ; insertExtra : SS -> VP -> VP = \ext,vp -> diff --git a/src/chinese/VerbChi.gf b/src/chinese/VerbChi.gf index 2cefa303..013ee199 100644 --- a/src/chinese/VerbChi.gf +++ b/src/chinese/VerbChi.gf @@ -19,7 +19,8 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in { ComplVV v vp = { verb = v ; compl = vp.prePart ++ vp.verb.s ++ vp.compl ; - prePart, topic = [] + prePart, topic = [] ; + isAdj = False ; } ; ComplVS v s = insertObj s (predV v []) ; @@ -61,7 +62,7 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in { PassV2 v = insertAdv (mkNP passive_s) (predV v v.part) ; ---- - CompAP ap = insertObj (mkNP (ap.s ++ de_s)) (predV copula []) ; + CompAP ap = insertObj (mkNP (ap.s ++ de_s)) (predV copula []) ** {isAdj = True} ; {- CompAP ap = case ap.hasAdA of {