mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-13 23:09:31 -06:00
Chinese verbal adjective predication and repeated verb questions
This commit is contained in:
@@ -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
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
} ;
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
@@ -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 = <mkClause np.s vs sslash.s : Clause> ** {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 <insertAdv adv slash.vp : VP> []
|
||||
** {c2 = slash.c2} ;
|
||||
|
||||
SlashPrep cl prep = cl ** {c2 = prep} ;
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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 []) ; ----
|
||||
|
||||
|
||||
Reference in New Issue
Block a user