diff --git a/lib/src/chinese/ExtraChi.gf b/lib/src/chinese/ExtraChi.gf index aa7f43a19..7fc22872d 100644 --- a/lib/src/chinese/ExtraChi.gf +++ b/lib/src/chinese/ExtraChi.gf @@ -1,8 +1,9 @@ concrete ExtraChi of ExtraChiAbs = CatChi ** open ResChi, Coordination, Prelude in { + flags coding = utf8 ; + lincat - Aspect = {s : Str ; a : ResChi.Aspect} ; VPS = {s : Str} ; [VPS] = {s1,s2 : Str} ; VPI = {s : Str} ; --- ??? @@ -27,4 +28,28 @@ concrete ExtraChi of ExtraChiAbs = CatChi ** GenRP nu cn = {s = cn.s ++ relative_s} ; ---- ?? +----------------------- +-- Chinese-only extras + + lincat + Aspect = {s : Str ; a : ResChi.Aspect} ; + lin + PredBareAP np ap = case ap.hasAdA of { + True => mkClause np.s (insertObj (mkNP ap.s) (predV nocopula [])) ; + False => mkClause np.s (insertObj (mkNP ap.s) (predV hen_copula [])) + } ; + QuestRepV cl = { + s = \\p,a => + let + v = cl.vp.verb ; + verb = case a of { + APlain => v.s ++ v.neg ++ v.sn ; + APerf => v.s ++ "不" ++ v.sn ++ v.pp ; + ADurStat => v.s ++ "不" ++ v.sn ; + ADurProg => v.dp ++ v.neg ++ v.dp ++ v.sn ; -- mei or bu + AExper => v.s ++ v.neg ++ v.sn ++ v.ep + } + in + cl.np ++ cl.vp.prePart ++ verb ++ cl.vp.compl + } ; } diff --git a/lib/src/chinese/ExtraChiAbs.gf b/lib/src/chinese/ExtraChiAbs.gf index f304785bf..c50c87e3a 100644 --- a/lib/src/chinese/ExtraChiAbs.gf +++ b/lib/src/chinese/ExtraChiAbs.gf @@ -8,4 +8,10 @@ abstract ExtraChiAbs = Cat, ** { cat Aspect ; + + fun + PredBareAP : NP -> AP -> Cl ; -- adjectival predication without copula + + QuestRepV : Cl -> QCl ; -- V neg V question + } ; diff --git a/lib/src/chinese/QuestionChi.gf b/lib/src/chinese/QuestionChi.gf index 842af5230..0e5683f71 100644 --- a/lib/src/chinese/QuestionChi.gf +++ b/lib/src/chinese/QuestionChi.gf @@ -11,12 +11,9 @@ concrete QuestionChi of Question = CatChi ** s = \\p,a => ip.s ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl } ; - QuestSlash ip cls = { - s =\\p,a => appPrep cls.c2 cls.np ++ cls.vp ! p ! a ++ - possessive_s ++ di_s ++ ip.s - } ; + QuestSlash ip cls = mkClauseCompl cls.np (insertObj (ss (appPrep cls.c2 ip.s)) cls.vp) [] ; - QuestIAdv iadv cl = {s = \\p,a => cl.np ++ iadv.s ++ cl.vp ! p ! a} ; + QuestIAdv iadv cl = mkClauseCompl cl.np (insertAdv iadv cl.vp) [] ; QuestIComp icomp np = {s = \\p,a => np.s ++ icomp.s} ; ---- order diff --git a/lib/src/chinese/ResChi.gf b/lib/src/chinese/ResChi.gf index a415e71c7..a55eeacfe 100644 --- a/lib/src/chinese/ResChi.gf +++ b/lib/src/chinese/ResChi.gf @@ -119,12 +119,12 @@ oper hen_copula : Verb = {s = hen_s ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- nocopula : Verb = - {s = [] ; sn = "是" ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- + {s = [] ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- adjcopula : Verb = {s = "是" ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; --- regVerb : (walk : Str) -> Verb = \v -> - mkVerb v "了" "着" "在" "过" "没" ; + mkVerb v "了" "着" "在" "过" "不" ; -- 没" ; noVerb : Verb = regVerb [] ; ---?? -- used as copula for verbal adverbs @@ -189,23 +189,25 @@ oper Clause : Type = { s : Polarity => Aspect => Str ; np : Str; - vp : Polarity => Aspect => Str + vp : VP } ; mkClause = overload { - mkClause : Str -> Verb -> Clause = \np,v -> mkClauseCompl np (useVerb v) [] ; - mkClause : Str -> (Polarity => Aspect => Str) -> Str -> Clause = mkClauseCompl ; + mkClause : Str -> Verb -> Clause = \np,v -> + mkClauseCompl np (predV v []) [] ; mkClause : Str -> Verb -> Str -> Clause = \subj,verb,obj -> - mkClauseCompl subj (useVerb verb) obj ; + mkClauseCompl subj (predV verb []) obj ; mkClause : Str -> VP -> Clause = \np,vp -> - mkClauseCompl np (\\p,a => vp.prePart ++ useVerb vp.verb ! p ! a) vp.compl ; + mkClauseCompl np vp [] ; + mkClause : Str -> VP -> Str -> Clause = + mkClauseCompl ; } ; - mkClauseCompl : Str -> (Polarity => Aspect => Str) -> Str -> Clause = \np,vp,compl -> { - s = \\p,a => np ++ vp ! p ! a ++ compl ; + mkClauseCompl : Str -> VP -> Str -> Clause = \np,vp,compl -> { + s = \\p,a => np ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ; np = np ; - vp = \\p,a => vp ! p ! a ++ compl + vp = vp ; } ; diff --git a/lib/src/chinese/SentenceChi.gf b/lib/src/chinese/SentenceChi.gf index 853a0d5ab..efa40ba00 100644 --- a/lib/src/chinese/SentenceChi.gf +++ b/lib/src/chinese/SentenceChi.gf @@ -17,7 +17,7 @@ concrete SentenceChi of Sentence = CatChi ** } ; SlashVP np vp = - mkClauseCompl np.s (\\p,a => vp.prePart ++ useVerb vp.verb ! p ! a) vp.compl + mkClauseCompl np.s vp [] ** {c2 = vp.c2} ; SlashVS np vs sslash = ** {c2 = sslash.c2} ; @@ -25,7 +25,7 @@ concrete SentenceChi of Sentence = CatChi ** -- yet another reason for discontinuity of clauses AdvSlash slash adv = - mkClause slash.np (<\\p,a => adv.s ++ slash.vp ! p ! a : Polarity => Aspect => Str>) [] + mkClauseCompl slash.np [] ** {c2 = slash.c2} ; SlashPrep cl prep = cl ** {c2 = prep} ; diff --git a/lib/src/chinese/StructuralChi.gf b/lib/src/chinese/StructuralChi.gf index 980b2fd56..ed260bc2c 100644 --- a/lib/src/chinese/StructuralChi.gf +++ b/lib/src/chinese/StructuralChi.gf @@ -94,7 +94,7 @@ not_Predet = ssword "不" ; otherwise_PConj = mkPConjL "还是" ; to_Prep = mkPrep "往" ; -have_V2 = mkV2 "有" ; +have_V2 = mkV2 (mkV "有" "了" "着" "在" "过" "没") ; yes_Utt = ss "对" ; no_Utt = ss neg_s ; diff --git a/lib/src/chinese/VerbChi.gf b/lib/src/chinese/VerbChi.gf index 8eb961c56..9b079de68 100644 --- a/lib/src/chinese/VerbChi.gf +++ b/lib/src/chinese/VerbChi.gf @@ -54,10 +54,14 @@ 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 = case ap.hasAdA of { True => insertObj (mkNP ap.s) (predV nocopula []) ; False => insertObj (mkNP (ap.s ++ de_s)) (predV copula []) } ; +-} CompNP np = insertObj np (predV copula []) ; ----