forked from GitHub/gf-core
Chi constructions (part of them), topicalized time adverbs
This commit is contained in:
@@ -36,9 +36,9 @@ concrete ExtraChi of ExtraChiAbs = CatChi **
|
|||||||
lincat
|
lincat
|
||||||
Aspect = {s : Str ; a : ResChi.Aspect} ;
|
Aspect = {s : Str ; a : ResChi.Aspect} ;
|
||||||
lin
|
lin
|
||||||
PredBareAP np ap = case ap.hasAdA of {
|
CompBareAP ap = case ap.hasAdA of {
|
||||||
True => mkClause np.s (insertObj (mkNP ap.s) (predV nocopula [])) ;
|
True => insertObj (mkNP ap.s) (predV nocopula []) ;
|
||||||
False => mkClause np.s (insertObj (mkNP ap.s) (predV hen_copula []))
|
False => insertObj (mkNP ap.s) (predV hen_copula [])
|
||||||
} ;
|
} ;
|
||||||
QuestRepV cl = {
|
QuestRepV cl = {
|
||||||
s = \\p,a =>
|
s = \\p,a =>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ abstract ExtraChiAbs = Cat,
|
|||||||
Aspect ;
|
Aspect ;
|
||||||
|
|
||||||
fun
|
fun
|
||||||
PredBareAP : NP -> AP -> Cl ; -- adjectival predication without copula
|
CompBareAP : AP -> Comp ; -- adjectival predication without copula
|
||||||
|
|
||||||
QuestRepV : Cl -> QCl ; -- V neg V question
|
QuestRepV : Cl -> QCl ; -- V neg V question
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ concrete IdiomChi of Idiom = CatChi ** open Prelude, ResChi in {
|
|||||||
ProgrVP vp = {
|
ProgrVP vp = {
|
||||||
verb = regVerb zai_s ;
|
verb = regVerb zai_s ;
|
||||||
compl = vp.prePart ++ vp.verb.s ++ vp.compl ;
|
compl = vp.prePart ++ vp.verb.s ++ vp.compl ;
|
||||||
prePart = []
|
prePart, topic = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,13 +7,14 @@ concrete ParseChi of ParseEngAbs =
|
|||||||
NumeralChi,
|
NumeralChi,
|
||||||
SymbolChi [PN, Symb, String, CN, Card, NP, MkSymb, SymbPN, CNNumNP],
|
SymbolChi [PN, Symb, String, CN, Card, NP, MkSymb, SymbPN, CNNumNP],
|
||||||
ConjunctionChi,
|
ConjunctionChi,
|
||||||
VerbChi - [SlashV2V, PassV2, UseCopula, ComplVV],
|
VerbChi - [SlashV2V, PassV2, UseCopula, ComplVV, CompAP],
|
||||||
AdverbChi,
|
AdverbChi,
|
||||||
PhraseChi,
|
PhraseChi,
|
||||||
SentenceChi,
|
SentenceChi,
|
||||||
QuestionChi,
|
QuestionChi,
|
||||||
RelativeChi,
|
RelativeChi,
|
||||||
IdiomChi [NP, VP, Tense, Cl, ProgrVP, ExistNP, SelfAdvVP, SelfAdVVP, SelfNP],
|
IdiomChi [NP, VP, Tense, Cl, ProgrVP, ExistNP, SelfAdvVP, SelfAdVVP, SelfNP],
|
||||||
|
ConstructionChi,
|
||||||
ExtraChi [NP, Quant, VPSlash, VP, Tense, GenNP, PassVPSlash, PassAgentVPSlash,
|
ExtraChi [NP, Quant, VPSlash, VP, Tense, GenNP, PassVPSlash, PassAgentVPSlash,
|
||||||
Temp, Pol, Conj, VPS, ListVPS, S, Num, CN, RP, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS, GenRP,
|
Temp, Pol, Conj, VPS, ListVPS, S, Num, CN, RP, MkVPS, BaseVPS, ConsVPS, ConjVPS, PredVPS, GenRP,
|
||||||
VPI, VPIForm, VPIInf, VPIPresPart, ListVPI, VV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV,
|
VPI, VPIForm, VPIInf, VPIPresPart, ListVPI, VV, MkVPI, BaseVPI, ConsVPI, ConjVPI, ComplVPIVV,
|
||||||
@@ -22,13 +23,18 @@ concrete ParseChi of ParseEngAbs =
|
|||||||
DictEngChi
|
DictEngChi
|
||||||
|
|
||||||
**
|
**
|
||||||
open ResChi, ParadigmsChi, SyntaxChi, Prelude in {
|
open ResChi, ParadigmsChi, SyntaxChi, Prelude, (G = GrammarChi), (E = ExtraChi) in {
|
||||||
|
|
||||||
flags
|
flags
|
||||||
literal=Symb ;
|
literal=Symb ;
|
||||||
coding = utf8 ;
|
coding = utf8 ;
|
||||||
|
|
||||||
|
|
||||||
|
-- Chinese-specific overrides
|
||||||
|
|
||||||
|
lin
|
||||||
|
CompAP = G.CompAP | E.CompBareAP ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
EmptyRelSlash slash = mkRCl <which_RP : RP> <lin ClSlash slash : ClSlash> ;
|
EmptyRelSlash slash = mkRCl <which_RP : RP> <lin ClSlash slash : ClSlash> ;
|
||||||
@@ -135,8 +141,8 @@ DashCN noun cn = {s = noun.s ++ cn.s ; c = cn.c} ; ----
|
|||||||
|
|
||||||
ComplVV v a p vp = {
|
ComplVV v a p vp = {
|
||||||
verb = v ;
|
verb = v ;
|
||||||
compl = a.s ++ p.s ++ useVerb vp.verb ! p.p ! APlain ++ vp.compl ; ---- aspect
|
compl = a.s ++ p.s ++ vp.topic ++ vp.prePart ++ useVerb vp.verb ! p.p ! APlain ++ vp.compl ; ---- aspect
|
||||||
prePart = vp.prePart
|
prePart, topic = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ApposNP np1 np2 = {
|
ApposNP np1 np2 = {
|
||||||
|
|||||||
@@ -100,7 +100,13 @@ param
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
VP = {verb : Verb ; compl : Str ; prePart : Str} ;
|
VP = {
|
||||||
|
topic : Str ; -- topicalized item, before subject
|
||||||
|
prePart : Str ; -- between subject and verb
|
||||||
|
verb : Verb ;
|
||||||
|
compl : Str -- after verb
|
||||||
|
} ;
|
||||||
|
|
||||||
NP = {s : Str} ;
|
NP = {s : Str} ;
|
||||||
|
|
||||||
-- for morphology
|
-- for morphology
|
||||||
@@ -155,41 +161,53 @@ oper
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
infVP : VP -> Str = \vp -> vp.prePart ++ vp.verb.s ++ vp.compl ;
|
infVP : VP -> Str = \vp -> vp.topic ++ vp.prePart ++ vp.verb.s ++ vp.compl ;
|
||||||
|
|
||||||
predV : Verb -> Str -> VP = \v,part -> {
|
predV : Verb -> Str -> VP = \v,part -> {
|
||||||
verb = v ;
|
verb = v ;
|
||||||
compl = part ;
|
compl = part ;
|
||||||
prePart = [] ;
|
prePart, topic = [] ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertObj : NP -> VP -> VP = \np,vp -> {
|
insertObj : NP -> VP -> VP = \np,vp -> {
|
||||||
verb = vp.verb ;
|
verb = vp.verb ;
|
||||||
compl = np.s ++ vp.compl ;
|
compl = np.s ++ vp.compl ;
|
||||||
prePart = vp.prePart
|
prePart = vp.prePart ;
|
||||||
|
topic = vp.topic
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertObjPost : NP -> VP -> VP = \np,vp -> {
|
insertObjPost : NP -> VP -> VP = \np,vp -> {
|
||||||
verb = vp.verb ;
|
verb = vp.verb ;
|
||||||
compl = vp.compl ++ np.s ;
|
compl = vp.compl ++ np.s ;
|
||||||
prePart = vp.prePart
|
prePart = vp.prePart ;
|
||||||
|
topic = vp.topic
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertAdv : SS -> VP -> VP = \adv,vp -> {
|
insertAdv : SS -> VP -> VP = \adv,vp -> {
|
||||||
verb = vp.verb ;
|
verb = vp.verb ;
|
||||||
compl = vp.compl ;
|
compl = vp.compl ;
|
||||||
prePart = adv.s ++ vp.prePart
|
prePart = adv.s ++ vp.prePart ;
|
||||||
|
topic = vp.topic
|
||||||
|
} ;
|
||||||
|
|
||||||
|
insertTopic : SS -> VP -> VP = \adv,vp -> {
|
||||||
|
verb = vp.verb ;
|
||||||
|
compl = vp.compl ;
|
||||||
|
prePart = vp.prePart ;
|
||||||
|
topic = adv.s ++ vp.topic
|
||||||
} ;
|
} ;
|
||||||
insertAdvPost : SS -> VP -> VP = \adv,vp -> {
|
insertAdvPost : SS -> VP -> VP = \adv,vp -> {
|
||||||
verb = vp.verb ;
|
verb = vp.verb ;
|
||||||
compl = vp.compl ;
|
compl = vp.compl ;
|
||||||
prePart = vp.prePart ++ adv.s
|
prePart = vp.prePart ++ adv.s ;
|
||||||
|
topic = vp.topic
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertPP : SS -> VP -> VP = \pp,vp -> {
|
insertPP : SS -> VP -> VP = \pp,vp -> {
|
||||||
verb = vp.verb ;
|
verb = vp.verb ;
|
||||||
compl = vp.compl ;
|
compl = vp.compl ;
|
||||||
prePart = vp.prePart ++ pp.s
|
prePart = vp.prePart ++ pp.s ;
|
||||||
|
topic = vp.topic
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertExtra : SS -> VP -> VP = \ext,vp ->
|
insertExtra : SS -> VP -> VP = \ext,vp ->
|
||||||
@@ -216,8 +234,8 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkClauseCompl : Str -> VP -> Str -> Clause = \np,vp,compl -> {
|
mkClauseCompl : Str -> VP -> Str -> Clause = \np,vp,compl -> {
|
||||||
s = \\p,a => np ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ;
|
s = \\p,a => vp.topic ++ np ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ;
|
||||||
np = np ;
|
np = vp.topic ++ np ;
|
||||||
vp = insertObj (ss compl) vp ;
|
vp = insertObj (ss compl) vp ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in {
|
|||||||
ComplVV v vp = {
|
ComplVV v vp = {
|
||||||
verb = v ;
|
verb = v ;
|
||||||
compl = vp.prePart ++ vp.verb.s ++ vp.compl ;
|
compl = vp.prePart ++ vp.verb.s ++ vp.compl ;
|
||||||
prePart = []
|
prePart, topic = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
ComplVS v s = insertObj s (predV v []) ;
|
ComplVS v s = insertObj s (predV v []) ;
|
||||||
@@ -46,7 +46,7 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in {
|
|||||||
ATManner => insertObj (ss (deVAdv_s ++ adv.s)) vp ; -- he sleeps *well*
|
ATManner => insertObj (ss (deVAdv_s ++ adv.s)) vp ; -- he sleeps *well*
|
||||||
ATPlace True => insertAdvPost adv vp ; -- he today *in the house* sleeps
|
ATPlace True => insertAdvPost adv vp ; -- he today *in the house* sleeps
|
||||||
ATPlace False => insertAdvPost (ss (zai_V.s ++ adv.s)) vp ; -- he today *here* sleeps
|
ATPlace False => insertAdvPost (ss (zai_V.s ++ adv.s)) vp ; -- he today *here* sleeps
|
||||||
_ => insertAdv adv vp -- he *today* here sleeps
|
ATTime => insertTopic adv vp -- *today* he here sleeps
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdVVP adv vp = insertAdv adv vp ;
|
AdVVP adv vp = insertAdv adv vp ;
|
||||||
|
|||||||
Reference in New Issue
Block a user