mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
relatives (but expensive)
This commit is contained in:
@@ -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 ;
|
||||
-}
|
||||
|
||||
@@ -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) ;
|
||||
|
||||
@@ -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 [] ;
|
||||
|
||||
@@ -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) ;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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 ;
|
||||
} ;
|
||||
|
||||
|
||||
@@ -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") ;
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user