mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 19:42:50 -06:00
relatives, except Finnish
This commit is contained in:
@@ -56,6 +56,7 @@ lincat
|
||||
-- = {s : VF => Str} ;
|
||||
VP = {s : Bool => Gender => VPForm => Str} ;
|
||||
VPI = {s : VIForm => Gender => Number => Person => Str} ;
|
||||
VCl = {s : Bool => Anteriority => VIForm => Gender => Number => Person => Str} ;
|
||||
V2 = TransVerb ;
|
||||
-- = Verb ** {s2 : Preposition ; c : CaseA} ;
|
||||
V3 = TransVerb ** {s3 : Preposition ; c3 : CaseA} ;
|
||||
@@ -73,6 +74,7 @@ lincat
|
||||
TP = {s : Str ; b : Bool ; t : Tense ; a : Anteriority} ; --- s-field is dummy
|
||||
Tense = {s : Str ; t : Tense} ;
|
||||
Ant = {s : Str ; a : Anteriority} ;
|
||||
Pol = {s : Str ; p : Bool} ;
|
||||
|
||||
Adv = {s : Str} ;
|
||||
AdV = {s : Str} ;
|
||||
|
||||
@@ -143,8 +143,6 @@ incomplete concrete ClauseRomance of Clause = CategoriesRomance **
|
||||
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! subj.g ! subj.n ! P3)
|
||||
) ;
|
||||
|
||||
-- QPredProgVP
|
||||
|
||||
QPredAP subj adj =
|
||||
sats2quest (mkSatsCopula (intNounPhrase subj) (adj.s ! AF subj.g subj.n)) ;
|
||||
QPredCN subj cn =
|
||||
@@ -156,81 +154,159 @@ incomplete concrete ClauseRomance of Clause = CategoriesRomance **
|
||||
|
||||
QPredProgVP np vp = sats2quest (progressiveSats (intNounPhrase np) vp) ;
|
||||
|
||||
-----------
|
||||
|
||||
RPredV np v =
|
||||
sats2rel (mkSats (relNounPhrase np) v) ;
|
||||
RPredPassV subj v =
|
||||
sats2rel (mkSatsCopula (relNounPhrase subj) (v.s ! VPart
|
||||
(pgen2gen subj.g) Sg)) ; ---- subj.n
|
||||
RPredV2 np v y =
|
||||
sats2rel (mkSatsObject (relNounPhrase np) v y) ;
|
||||
RPredV3 subj verb obj1 obj2 =
|
||||
sats2rel (
|
||||
insertObject (mkSatsObject (relNounPhrase subj) verb obj1) verb.c3 verb.s3 obj2
|
||||
) ;
|
||||
RPredReflV2 subj verb =
|
||||
sats2rel (
|
||||
mkSatsObject (relNounPhrase subj)
|
||||
{s = verb.s ; s2 = [] ; c = accusative ; aux = AEsse}
|
||||
(reflPronNounPhrase (pgen2gen subj.g) Sg P3)) ;
|
||||
RPredVS subj verb sent =
|
||||
sats2rel (
|
||||
insertExtrapos (mkSats (relNounPhrase subj) verb)
|
||||
(\\b => embedConj ++ sent.s ! subordMode verb b)) ; ---- mn
|
||||
RPredVQ subj verb quest =
|
||||
sats2rel (
|
||||
insertExtrapos (mkSats (relNounPhrase subj) verb) (\\_ => quest.s ! IndirQ)) ;
|
||||
RPredV2S subj verb obj sent =
|
||||
sats2rel (
|
||||
insertExtrapos
|
||||
(mkSatsObject (relNounPhrase subj) verb obj)
|
||||
(\\b => embedConj ++ sent.s ! subordMode verb b)
|
||||
) ; ---- mn ;
|
||||
RPredV2Q subj verb obj quest =
|
||||
sats2rel (
|
||||
insertExtrapos
|
||||
(mkSatsObject (relNounPhrase subj) 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
|
||||
RPredV2A subj verb obj adj =
|
||||
sats2rel (
|
||||
insertExtrapos
|
||||
(mkSatsObject (relNounPhrase subj) verb obj)
|
||||
(\\_ => adj.s ! AF (pgen2gen obj.g) obj.n)) ;
|
||||
RPredVV subj verb vp =
|
||||
sats2rel (
|
||||
insertExtrapos
|
||||
(mkSats (relNounPhrase subj) verb)
|
||||
(\\_ => prepCase verb.c ++
|
||||
vp.s ! VIInfinit ! (pgen2gen subj.g) ! (relNounPhrase subj).n ! P3)
|
||||
) ;
|
||||
RPredObjV2V subj verb obj vp =
|
||||
sats2rel (
|
||||
insertExtrapos
|
||||
(mkSatsObject (relNounPhrase subj) verb obj)
|
||||
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! pgen2gen obj.g ! obj.n ! obj.p)
|
||||
) ;
|
||||
RPredSubjV2V subj verb obj vp =
|
||||
sats2rel (
|
||||
insertExtrapos
|
||||
(mkSatsObject (relNounPhrase subj) verb obj)
|
||||
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! (pgen2gen subj.g) ! Sg ! P3)
|
||||
) ;
|
||||
|
||||
RPredAP subj adj =
|
||||
sats2rel (mkSatsCopula (relNounPhrase subj) (adj.s ! AF (pgen2gen subj.g) Sg)) ;
|
||||
RPredCN subj cn =
|
||||
sats2rel (mkSatsCopula (relNounPhrase subj) (indefNoun Sg cn)) ;
|
||||
RPredNP subj np =
|
||||
sats2rel (mkSatsCopula (relNounPhrase subj) (np.s ! stressed nominative)) ;
|
||||
RPredAdv subj adv =
|
||||
sats2rel (mkSatsCopula (relNounPhrase subj) adv.s) ;
|
||||
|
||||
RPredProgVP np vp = sats2rel (progressiveSats (relNounPhrase np) vp) ;
|
||||
|
||||
|
||||
|
||||
|
||||
----- gender and number of Adj
|
||||
|
||||
IPredV a v =
|
||||
sats2verbPhrase a (mkSats pronImpers v) ;
|
||||
IPredV2 a v y =
|
||||
sats2verbPhrase a (mkSatsObject pronImpers v y) ;
|
||||
IPredAP a adj =
|
||||
sats2verbPhrase a (mkSatsCopula pronImpers (adj.s ! AF Masc Sg)) ;
|
||||
IPredPassV a v =
|
||||
sats2verbPhrase a (mkSatsCopula pronImpers (v.s ! VPart (pgen2gen pronImpers.g) pronImpers.n)) ;
|
||||
IPredV3 a verb obj1 obj2 =
|
||||
sats2verbPhrase a (insertObject (mkSatsObject pronImpers verb obj1) verb.c3 verb.s3 obj2) ;
|
||||
IPredReflV2 a verb =
|
||||
sats2verbPhrase a (
|
||||
IPredV v =
|
||||
sats2verbPhrase (mkSats pronImpers v) ;
|
||||
IPredV2 v y =
|
||||
sats2verbPhrase (mkSatsObject pronImpers v y) ;
|
||||
IPredAP adj =
|
||||
sats2verbPhrase (mkSatsCopula pronImpers (adj.s ! AF Masc Sg)) ;
|
||||
IPredPassV v =
|
||||
sats2verbPhrase (mkSatsCopula pronImpers (v.s ! VPart (pgen2gen pronImpers.g) pronImpers.n)) ;
|
||||
IPredV3 verb obj1 obj2 =
|
||||
sats2verbPhrase (insertObject (mkSatsObject pronImpers verb obj1) verb.c3 verb.s3 obj2) ;
|
||||
IPredReflV2 verb =
|
||||
sats2verbPhrase (
|
||||
mkSatsObject pronImpers
|
||||
{s = verb.s ; s2 = [] ; c = accusative ; aux = AEsse}
|
||||
---- {s = verb.s ; s2 = verb.s2 ; c = verb.c ; aux = AEsse}
|
||||
---- this produces huge cf - find out why! AR 16/3/2005
|
||||
(reflPronNounPhrase (pgen2gen pronImpers.g) pronImpers.n pronImpers.p)) ;
|
||||
IPredVS a verb sent =
|
||||
sats2verbPhrase a (
|
||||
IPredVS verb sent =
|
||||
sats2verbPhrase (
|
||||
insertExtrapos (mkSats pronImpers verb)
|
||||
(\\b => embedConj ++ sent.s ! subordMode verb b)) ; ---- mn
|
||||
IPredVQ a verb quest =
|
||||
sats2verbPhrase a (
|
||||
IPredVQ verb quest =
|
||||
sats2verbPhrase (
|
||||
insertExtrapos (mkSats pronImpers verb) (\\_ => quest.s ! IndirQ)) ;
|
||||
IPredV2S a verb obj sent =
|
||||
sats2verbPhrase a (
|
||||
IPredV2S verb obj sent =
|
||||
sats2verbPhrase (
|
||||
insertExtrapos
|
||||
(mkSatsObject pronImpers verb obj)
|
||||
(\\b => embedConj ++ sent.s ! subordMode verb b)
|
||||
) ; ---- mn ;
|
||||
IPredV2Q a verb obj quest =
|
||||
sats2verbPhrase a (
|
||||
IPredV2Q verb obj quest =
|
||||
sats2verbPhrase (
|
||||
insertExtrapos
|
||||
(mkSatsObject pronImpers verb obj)
|
||||
(\\_ => quest.s ! IndirQ)) ;
|
||||
IPredVA a verb adj =
|
||||
sats2verbPhrase a (
|
||||
IPredVA verb adj =
|
||||
sats2verbPhrase (
|
||||
insertExtrapos (mkSats pronImpers verb) (\\_ => adj.s ! AF (pgen2gen pronImpers.g) pronImpers.n)) ;
|
||||
IPredV2A a verb obj adj =
|
||||
sats2verbPhrase a (
|
||||
IPredV2A verb obj adj =
|
||||
sats2verbPhrase (
|
||||
insertExtrapos
|
||||
(mkSatsObject pronImpers verb obj)
|
||||
(\\_ => adj.s ! AF (pgen2gen obj.g) obj.n)) ;
|
||||
IPredVV a verb vp =
|
||||
sats2verbPhrase a (
|
||||
IPredVV verb vp =
|
||||
sats2verbPhrase (
|
||||
insertExtrapos
|
||||
(mkSats pronImpers verb)
|
||||
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! pgen2gen pronImpers.g ! pronImpers.n ! pronImpers.p)
|
||||
) ;
|
||||
|
||||
IPredObjV2V a verb obj vp =
|
||||
sats2verbPhrase a (
|
||||
IPredObjV2V verb obj vp =
|
||||
sats2verbPhrase (
|
||||
insertExtrapos
|
||||
(mkSatsObject pronImpers verb obj)
|
||||
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! pgen2gen obj.g ! obj.n ! obj.p)
|
||||
) ;
|
||||
IPredSubjV2V a verb obj vp =
|
||||
sats2verbPhrase a (
|
||||
IPredSubjV2V verb obj vp =
|
||||
sats2verbPhrase (
|
||||
insertExtrapos
|
||||
(mkSatsObject pronImpers verb obj)
|
||||
(\\_ => prepCase verb.c ++ vp.s ! VIInfinit ! pgen2gen pronImpers.g ! pronImpers.n ! pronImpers.p)
|
||||
) ;
|
||||
|
||||
|
||||
IPredCN a cn =
|
||||
sats2verbPhrase a (mkSatsCopula pronImpers (indefNoun pronImpers.n cn)) ;
|
||||
IPredNP a np =
|
||||
sats2verbPhrase a (mkSatsCopula pronImpers (np.s ! stressed nominative)) ;
|
||||
IPredAdv a adv =
|
||||
sats2verbPhrase a (mkSatsCopula pronImpers adv.s) ;
|
||||
IPredCN cn =
|
||||
sats2verbPhrase (mkSatsCopula pronImpers (indefNoun pronImpers.n cn)) ;
|
||||
IPredNP np =
|
||||
sats2verbPhrase (mkSatsCopula pronImpers (np.s ! stressed nominative)) ;
|
||||
IPredAdv adv =
|
||||
sats2verbPhrase (mkSatsCopula pronImpers adv.s) ;
|
||||
|
||||
IPredProgVP a vp = sats2verbPhrase a (progressiveSats pronImpers vp) ;
|
||||
IPredProgVP vp = sats2verbPhrase (progressiveSats pronImpers vp) ;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -84,6 +84,9 @@ lin
|
||||
ASimul = {s = [] ; a = Simul} ;
|
||||
AAnter = {s = [] ; a = Anter} ;
|
||||
|
||||
PPos = {s = [] ; p = True} ;
|
||||
PNeg = {s = [] ; p = False} ;
|
||||
|
||||
-- Adverbs.
|
||||
|
||||
AdjAdv a = {s = a.s ! AA} ;
|
||||
|
||||
@@ -434,6 +434,7 @@ param
|
||||
|
||||
oper
|
||||
VerbPhrase = {s : VIForm => Gender => Number => Person => Str} ;
|
||||
VerbClause = {s : Bool => Anteriority => VIForm => Gender => Number => Person => Str} ;
|
||||
|
||||
vpf2vf : VPForm -> VF = \vpf -> case vpf of {
|
||||
VPF _ vf => vf
|
||||
@@ -737,7 +738,7 @@ oper
|
||||
RelSentence : Type = {s : Mode => Gender => Number => Person => Str} ;
|
||||
|
||||
mkGenRel : RelGen -> Gender -> Gender = \rg,g -> case rg of {
|
||||
RG gen => gen ;
|
||||
PGen gen => gen ;
|
||||
_ => g
|
||||
} ;
|
||||
|
||||
@@ -1312,12 +1313,32 @@ oper
|
||||
in
|
||||
{s = \\b,f,_ => cl.s ! b ! f} ;
|
||||
|
||||
sats2verbPhrase : {s : Str ; a : Anteriority} -> Sats -> VerbPhrase =
|
||||
\ant,sats -> {s = \\vi,g,n,p => ---- b,cf =>
|
||||
|
||||
{- ---- 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 -> {
|
||||
s = \\np => r.s ! npRelForm np ;
|
||||
g = r.g ;
|
||||
n = Sg ; ----
|
||||
p = P3 ; ----
|
||||
c = Clit0 ;
|
||||
} ;
|
||||
|
||||
sats2verbPhrase : Sats -> VerbClause =
|
||||
\sats -> {s = \\b,ant,vi,g,n,p =>
|
||||
let
|
||||
b = True ; ----
|
||||
lui = sats.s3 ;
|
||||
dire = verbVIForm {s = sats.s4 ; aux = sats.aux} ant.a
|
||||
dire = verbVIForm {s = sats.s4 ; aux = sats.aux} ant
|
||||
vi g n p sats.g2 sats.n2 ;
|
||||
ai = dire.p1 ;
|
||||
dit = dire.p2 ;
|
||||
@@ -1328,7 +1349,6 @@ oper
|
||||
oui = sats.s7 ! b
|
||||
in
|
||||
ne ++ lui ++ ai ++ toujours ++ pas ++ dit ++ directement ++ oui
|
||||
++ ant.s --- always [] ; hack to avoid ? in parsing
|
||||
} ;
|
||||
|
||||
---- What happens to polarity and anteriority ?
|
||||
|
||||
@@ -25,8 +25,10 @@ param
|
||||
-- language. The same concerns those parameter types that depend on case.
|
||||
-- Certain cases can however be defined.
|
||||
|
||||
param
|
||||
RelGen = RNoGen | RG Gender ;
|
||||
oper
|
||||
RelGen = PronGen ;
|
||||
RNoGen = PNoGen ;
|
||||
RG = PGen ;
|
||||
|
||||
oper
|
||||
CaseA : PType ;
|
||||
@@ -43,6 +45,8 @@ oper
|
||||
|
||||
RelFormA : PType ;
|
||||
|
||||
npRelForm : NPFormA -> RelFormA ;
|
||||
|
||||
-- The genitive and dative cases are expressed by prepositions, except for
|
||||
-- clitic pronouns. The accusative case only makes a difference for pronouns.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user