From d268ebf84ba54120b258e9fbbccb4a7b7fe29f0d Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 2 Sep 2005 20:40:18 +0000 Subject: [PATCH] relatives (but expensive) --- lib/resource/abstract/Predic.gf | 31 ++++------ lib/resource/english/ClauseEng.gf | 1 - lib/resource/english/PredicEng.gf | 1 - lib/resource/romance/ClauseRomance.gf | 85 +++++++++++++++------------ lib/resource/romance/SyntaxRomance.gf | 25 +++----- lib/resource/spanish/BasicSpa.gf | 2 +- lib/resource/spanish/TypesSpa.gf | 7 +-- 7 files changed, 75 insertions(+), 77 deletions(-) diff --git a/lib/resource/abstract/Predic.gf b/lib/resource/abstract/Predic.gf index 7ec09b743..afd015d84 100644 --- a/lib/resource/abstract/Predic.gf +++ b/lib/resource/abstract/Predic.gf @@ -11,11 +11,7 @@ abstract Predic = Categories ** { Vt : CType -> VType ; VtN : CType -> VType ; - CtN, - CtS, - CtV, - CtQ, - CtA : CType ; + CtN, CtS, CtV, CtQ, CtA : CType ; SPredVerb : (v : VType) -> NP -> Verb v -> Compl v -> Cl ; @@ -23,22 +19,14 @@ abstract Predic = Categories ** { RPredVerb : (v : VType) -> RP -> Verb v -> Compl v -> RCl ; IPredVerb : (v : VType) -> Verb v -> Compl v -> VCl ; - ComplNil : Compl Vt_ ; - ComplNP : NP -> Compl (Vt CtN) ; - ComplS : S -> Compl (Vt CtS) ; - ComplQ : QS -> Compl (Vt CtQ) ; - ComplA : AP -> Compl (Vt CtQ) ; + Compl_ : Compl Vt_ ; + ComplN : NP -> Compl (Vt CtN) ; + ComplS : S -> Compl (Vt CtS) ; + ComplQ : QS -> Compl (Vt CtQ) ; + ComplA : AP -> Compl (Vt CtQ) ; ComplAdd : (c : CType) -> NP -> Compl (Vt c) -> Compl (VtN c) ; -{- - MkSlash3 : NG NtS -> VG (VtN CtN) -> CG (Vt CtN) -> Slash ; - MkSlash2 : (c : CType) -> NG NtS -> VG (VtN c) -> CG (Vt c) -> Slash ; - MkSlash1 : NG NtS -> VG (Vt CtN) -> Slash ; - SlashQ : NG NtQ -> Slash -> SG NtQ ; --} - - VeV1 : V -> Verb Vt_ ; VeV2 : V2 -> Verb (Vt CtN) ; VeVS : VS -> Verb (Vt CtS) ; @@ -47,3 +35,10 @@ abstract Predic = Categories ** { VeV2Q : V2Q -> Verb (VtN CtQ) ; ---- etc } + +{- + MkSlash3 : NG NtS -> VG (VtN CtN) -> CG (Vt CtN) -> Slash ; + MkSlash2 : (c : CType) -> NG NtS -> VG (VtN c) -> CG (Vt c) -> Slash ; + MkSlash1 : NG NtS -> VG (Vt CtN) -> Slash ; + SlashQ : NG NtQ -> Slash -> SG NtQ ; +-} diff --git a/lib/resource/english/ClauseEng.gf b/lib/resource/english/ClauseEng.gf index 9694b2d23..d7b7b545f 100644 --- a/lib/resource/english/ClauseEng.gf +++ b/lib/resource/english/ClauseEng.gf @@ -53,7 +53,6 @@ concrete ClauseEng of Clause = CategoriesEng ** QPredProgVP np vp = predBeGroupQ np (vp.s ! VIPresPart) ; - RPredV np v = relVerbClause np v (complVerb v) ; RPredPassV np v = predBeGroupR np (passVerb v) ; RPredV2 np v x = relVerbClause np v (complTransVerb v x) ; diff --git a/lib/resource/english/PredicEng.gf b/lib/resource/english/PredicEng.gf index 510176c3c..652fc2dd6 100644 --- a/lib/resource/english/PredicEng.gf +++ b/lib/resource/english/PredicEng.gf @@ -12,7 +12,6 @@ concrete PredicEng of Predic = CategoriesEng ** Compl = {s1, s2 : Agr => Str} ; lin - CtN, CtV, CtS, CtQ, CtA = ss [] ; Vt, VtN = \x -> x ; Vt_ = ss [] ; diff --git a/lib/resource/romance/ClauseRomance.gf b/lib/resource/romance/ClauseRomance.gf index f60574e18..a0d141f92 100644 --- a/lib/resource/romance/ClauseRomance.gf +++ b/lib/resource/romance/ClauseRomance.gf @@ -157,78 +157,91 @@ incomplete concrete ClauseRomance of Clause = CategoriesRomance ** ----------- RPredV np v = - sats2rel (mkSats (relNounPhrase np) v) ; + sats2rel + (\g,n,p -> mkSats (relNounPhrase np g n p) v) ; RPredPassV subj v = - sats2rel (mkSatsCopula (relNounPhrase subj) (v.s ! VPart - (pgen2gen subj.g) Sg)) ; ---- subj.n + sats2rel + (\g,n,p -> mkSatsCopula (relNounPhrase subj g n p) + (v.s ! VPart g n)) ; RPredV2 np v y = - sats2rel (mkSatsObject (relNounPhrase np) v y) ; + sats2rel + (\g,n,p -> mkSatsObject (relNounPhrase np g n p) v y) ; + RPredV3 subj verb obj1 obj2 = - sats2rel ( - insertObject (mkSatsObject (relNounPhrase subj) verb obj1) verb.c3 verb.s3 obj2 + sats2rel + (\g,n,p -> + insertObject (mkSatsObject (relNounPhrase subj g n p) verb + obj1) verb.c3 verb.s3 obj2 ) ; RPredReflV2 subj verb = - sats2rel ( - mkSatsObject (relNounPhrase subj) + sats2rel (\g,n,p -> + mkSatsObject (relNounPhrase subj g n p) {s = verb.s ; s2 = [] ; c = accusative ; aux = AEsse} - (reflPronNounPhrase (pgen2gen subj.g) Sg P3)) ; + (reflPronNounPhrase g n p)) ; RPredVS subj verb sent = - sats2rel ( - insertExtrapos (mkSats (relNounPhrase subj) verb) + sats2rel (\g,n,p -> + insertExtrapos (mkSats (relNounPhrase subj g n p) verb) (\\b => embedConj ++ sent.s ! subordMode verb b)) ; ---- mn RPredVQ subj verb quest = - sats2rel ( - insertExtrapos (mkSats (relNounPhrase subj) verb) (\\_ => quest.s ! IndirQ)) ; + sats2rel (\g,n,p -> + insertExtrapos (mkSats (relNounPhrase subj g n p) verb) (\\_ => quest.s ! IndirQ)) ; RPredV2S subj verb obj sent = - sats2rel ( + sats2rel (\g,n,p -> insertExtrapos - (mkSatsObject (relNounPhrase subj) verb obj) + (mkSatsObject (relNounPhrase subj g n p) verb obj) (\\b => embedConj ++ sent.s ! subordMode verb b) ) ; ---- mn ; RPredV2Q subj verb obj quest = - sats2rel ( + sats2rel (\g,n,p -> insertExtrapos - (mkSatsObject (relNounPhrase subj) verb obj) + (mkSatsObject (relNounPhrase subj g n p) verb obj) (\\_ => quest.s ! IndirQ)) ; RPredVA subj verb adj = - sats2rel ( - insertExtrapos (mkSats (relNounPhrase subj) verb) - (\\_ => adj.s ! AF (pgen2gen subj.g) Sg)) ; ---- subj.n, etc + sats2rel (\g,n,p -> + insertExtrapos (mkSats (relNounPhrase subj g n p) verb) + (\\_ => adj.s ! AF g n)) ; RPredV2A subj verb obj adj = - sats2rel ( + sats2rel (\g,n,p -> insertExtrapos - (mkSatsObject (relNounPhrase subj) verb obj) + (mkSatsObject (relNounPhrase subj g n p) verb obj) (\\_ => adj.s ! AF (pgen2gen obj.g) obj.n)) ; RPredVV subj verb vp = - sats2rel ( + sats2rel (\g,n,p -> insertExtrapos - (mkSats (relNounPhrase subj) verb) + (mkSats (relNounPhrase subj g n p) verb) (\\_ => prepCase verb.c ++ - vp.s ! VIInfinit ! (pgen2gen subj.g) ! (relNounPhrase subj).n ! P3) + vp.s ! VIInfinit ! g ! n ! p) ) ; RPredObjV2V subj verb obj vp = - sats2rel ( + sats2rel (\g,n,p -> insertExtrapos - (mkSatsObject (relNounPhrase subj) verb obj) + (mkSatsObject (relNounPhrase subj g n p) verb obj) (\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! pgen2gen obj.g ! obj.n ! obj.p) ) ; +{- ---- RPredSubjV2V subj verb obj vp = - sats2rel ( + sats2rel (\g,n,p -> insertExtrapos - (mkSatsObject (relNounPhrase subj) verb obj) - (\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! (pgen2gen subj.g) ! Sg ! P3) + (mkSatsObject (relNounPhrase subj g n p) verb obj) + (\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! g ! n ! p) ) ; - +-} RPredAP subj adj = - sats2rel (mkSatsCopula (relNounPhrase subj) (adj.s ! AF (pgen2gen subj.g) Sg)) ; + sats2rel + (\g,n,p -> mkSatsCopula (relNounPhrase subj g n p) (adj.s ! AF g n)) ; RPredCN subj cn = - sats2rel (mkSatsCopula (relNounPhrase subj) (indefNoun Sg cn)) ; + sats2rel + (\g,n,p -> mkSatsCopula (relNounPhrase subj g n p) (indefNoun n cn)) ; RPredNP subj np = - sats2rel (mkSatsCopula (relNounPhrase subj) (np.s ! stressed nominative)) ; + sats2rel + (\g,n,p -> mkSatsCopula (relNounPhrase subj g n p) (np.s ! stressed nominative)) ; RPredAdv subj adv = - sats2rel (mkSatsCopula (relNounPhrase subj) adv.s) ; + sats2rel + (\g,n,p -> mkSatsCopula (relNounPhrase subj g n p) adv.s) ; - RPredProgVP np vp = sats2rel (progressiveSats (relNounPhrase np) vp) ; + RPredProgVP np vp = + sats2rel + (\g,n,p -> progressiveSats (relNounPhrase np g n p) vp) ; diff --git a/lib/resource/romance/SyntaxRomance.gf b/lib/resource/romance/SyntaxRomance.gf index be61617b9..5e621b871 100644 --- a/lib/resource/romance/SyntaxRomance.gf +++ b/lib/resource/romance/SyntaxRomance.gf @@ -1313,24 +1313,17 @@ oper in {s = \\b,f,_ => cl.s ! b ! f} ; + sats2rel : (Gender -> Number -> Person -> Sats) -> RelClause = \sats -> + {s = \\b,f,g,n,p => + (sats2clause (sats g n p)).s ! b ! f + } ; -{- ---- this does not yet get agrement right; have to integrate these two - RP = {s : RelForm => Str ; g : RelGen} ; - NP = {s : NPFormA => Str ; g : PronGen ; - n : Number ; p : Person ; c : ClitType} ; - RCl = {s : Bool => ClForm => Gender => Number => Person => Str} ; - RelGen = RNoGen | RG Gender ; - --} - sats2rel : Sats -> RelClause = \x -> - let cl = sats2clause x - in - {s = \\b,f,_,_,_ => cl.s ! b ! f} ; - relNounPhrase : RelPron -> NounPhrase = \r -> { + relNounPhrase : RelPron -> Gender -> Number -> Person -> NounPhrase = + \r,g,n,p -> { s = \\np => r.s ! npRelForm np ; - g = r.g ; - n = Sg ; ---- - p = P3 ; ---- + g = PGen g ; --- r.g + n = n ; + p = p ; c = Clit0 ; } ; diff --git a/lib/resource/spanish/BasicSpa.gf b/lib/resource/spanish/BasicSpa.gf index 1bee7d8bc..4635a6514 100644 --- a/lib/resource/spanish/BasicSpa.gf +++ b/lib/resource/spanish/BasicSpa.gf @@ -208,7 +208,7 @@ lin window_N = regN "ventana" ; wine_N = regN "vino" ; win_V2 = dirV2 (regV "ganar") ; - woman_N = regN "mujer" ; -- fem + woman_N = femN (regN "mujer") ; wonder_VQ = mkVQ (regV "preguntar") ; ---- preguntarse wood_N = regN "madera" ; write_V2 = dirV2 (special_ppV (regV "escribir") "escrito") ; diff --git a/lib/resource/spanish/TypesSpa.gf b/lib/resource/spanish/TypesSpa.gf index 03f5ae179..abe548f6b 100644 --- a/lib/resource/spanish/TypesSpa.gf +++ b/lib/resource/spanish/TypesSpa.gf @@ -105,10 +105,9 @@ oper -- cases. relPronForms = table { - Nom => "che" ; - Acc => "che" ; - CPrep P_a => "cui" ; --- variant a cui - CPrep p => strPrep p ++ "cui" + Nom | Acc => "que" ; + CPrep P_a => "cuyo" ; + CPrep p => strPrep p ++ "cuyo" } ; -- Verbs: conversion from full verbs to present-tense verbs.