Files
gf-rgl/src/latin/RelativeLat.gf
2019-11-12 15:27:53 +01:00

79 lines
2.5 KiB
Plaintext

concrete RelativeLat of Relative = CatLat ** open ResLat in {
--
-- flags optimize=all_subs ;
--
lin
--
-- RelCl cl = {
-- s = \\t,a,p,_ => "such" ++ "that" ++ cl.s ! t ! a ! p ! ODir ;
-- c = Nom
-- } ;
--
RelVP rp vp = { s = \\g,n => mkClause (emptyNP ** { s = \\_,c => rp.s ! (Ag g n c) ; g = g ; n = n } ) vp };
-- s = \\t,ant,b,ag =>
-- let
-- agr = case rp.a of {
-- RNoAg => ag ;
-- RAg a => a
-- } ;
-- cl = mkClause (rp.s ! RC (fromAgr agr).g Nom) agr vp
-- in
-- cl.s ! t ! ant ! b ! ODir ;
-- c = Nom
-- } ;
--
---- Pied piping: "at which we are looking". Stranding and empty
---- relative are defined in $ExtraLat.gf$ ("that we are looking at",
---- "we are looking at").
--
-- RelSlash : RP -> ClSlash -> RCl ;
RelSlash rp slash = { s = \\g,n => slash ** { adv = rp.s ! Ag g n Gen } } ; -- abuse adverbs again
-- s = \\t,a,p,agr =>
-- slash.c2 ++ rp.s ! RPrep (fromAgr agr).g ++ slash.s ! t ! a ! p ! ODir ;
-- c = Acc
--
FunRP p np rp = {
s = \\a => case a of { Ag g n c => rp.s ! a ++ p.s ++ (combineNounPhrase np) ! PronNonDrop ! APostN ! DPreN ! Acc };
-- s = \\c => (combineNounPhrase np) ! PronNonDrop ! Acc ++ p.s ++ rp.s ! RPrep (fromAgr np.a).g ;
-- a = RAg np.a
} ;
--
IdRP = {
s = table {
Ag Masc Sg (Nom | Voc) => "qui" ;
Ag Fem Sg (Nom | Voc) => "quae" ;
Ag Neutr Sg (Nom | Voc) => "quod" ;
Ag _ Sg Gen => "cuius" ;
Ag _ Sg Dat => "cui" ;
Ag Masc Sg Acc => "quem" ;
Ag Fem Sg Acc => "quam" ;
Ag Neutr Sg Acc => "quod" ;
Ag (Masc | Neutr) Sg Abl => "quo" ;
Ag Fem Sg Abl => "qua" ;
Ag Masc Pl (Nom | Voc) => "qui" ;
Ag (Fem | Neutr) Pl (Nom | Voc) => "quae" ;
Ag (Masc | Neutr) Pl Gen => "quorum" ;
Ag Fem Pl Gen => "quarum" ;
Ag _ Pl Dat => "quibus" ;
Ag Masc Pl Acc => "quos" ;
Ag Fem Pl Acc => "quas" ;
Ag Neutr Pl Acc => "quae" ;
Ag _ Pl Abl => "cui"
}
}
;
-- let varr : Str -> Str = \x -> variants {x ; "that"} --- for bwc
-- in {
-- s = table {
-- RC _ Gen => "whose" ;
-- RC Neutr _ => varr "which" ;
-- RC _ Acc => varr "whom" ;
-- RC _ Nom => varr "who" ;
-- RPrep Neutr => "which" ;
-- RPrep _ => "whom"
-- } ;
-- a = RNoAg
-- } ;
--
}