mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 21:19:31 -06:00
105 lines
2.4 KiB
Plaintext
105 lines
2.4 KiB
Plaintext
--# -path=.:alltenses
|
|
|
|
concrete AdditionsEng of Additions = CatEng **
|
|
open ResEng, Coordination, Prelude, MorphoEng, ParadigmsEng,
|
|
(E=ExtraEng),
|
|
(R=ResEng),
|
|
(G=GrammarEng),
|
|
(P=ParadigmsEng),
|
|
(X=ParamX),
|
|
(C=Coordination)
|
|
in {
|
|
|
|
-- First we start with the contents of the RGL's ExtraEng.gf, as it looked like in October 2011.
|
|
|
|
lin
|
|
GenNP = E.GenNP ;
|
|
ComplBareVS = E.ComplBareVS ;
|
|
StrandRelSlash = E.StrandRelSlash ;
|
|
EmptyRelSlash = E.EmptyRelSlash ;
|
|
|
|
lincat
|
|
VPI = E.VPI ;
|
|
[VPI] = E.ListVPI ;
|
|
|
|
lin
|
|
BaseVPI = E.BaseVPI ;
|
|
ConsVPI = E.ConsVPI ;
|
|
MkVPI = E.MkVPI ;
|
|
ConjVPI = E.ConjVPI ;
|
|
ComplVPIVV = E.ComplVPIVV ;
|
|
|
|
lincat
|
|
VPS = E.VPS ;
|
|
[VPS] = E.ListVPS ;
|
|
|
|
lin
|
|
BaseVPS = E.BaseVPS ;
|
|
ConsVPS = E.ConsVPS ;
|
|
PredVPS = E.PredVPS ;
|
|
MkVPS = E.MkVPS ;
|
|
ConjVPS = E.ConjVPS ;
|
|
|
|
lin
|
|
PassVPSlash = E.PassVPSlash ;
|
|
PartVP = E.PartVP ;
|
|
EmbedPresPart = E.EmbedPresPart ;
|
|
|
|
-- And then we give some FraCaS-specific additions to the original ExtraEng.gf.
|
|
|
|
lincat
|
|
[QS] = {s1,s2 : X.QForm => Str} ;
|
|
[Det] = {s1,s2 : Str ; sp1,sp2 : R.NPCase => Str ; n : X.Number ; hasNum : Bool} ;
|
|
|
|
lin
|
|
RelNPa np rs = {
|
|
s = \\c => np.s ! c ++ rs.s ! np.a ;
|
|
a = np.a
|
|
} ;
|
|
|
|
UseComparA_prefix = G.UseComparA ;
|
|
|
|
PassV2s = G.PassV2 ;
|
|
|
|
SoDoI subj = {
|
|
s = \\t,a,b,o =>
|
|
let
|
|
so = case b of {
|
|
R.CPos => "so" ;
|
|
R.CNeg c => "neither"
|
|
} ;
|
|
did = case <t,a> of {
|
|
<X.Pres,X.Simul> => R.agrVerb "does" "do" subj.a ;
|
|
<X.Pres,X.Anter> => R.agrVerb "has" "have" subj.a ;
|
|
<X.Past,X.Simul> => "did" ;
|
|
<X.Past,X.Anter> => "had" ;
|
|
<X.Fut ,_ > => "will" ;
|
|
<X.Cond,_ > => "would"
|
|
}
|
|
in
|
|
case o of {
|
|
R.ODir => so ++ did ++ (subj.s ! R.npNom) ;
|
|
R.OQuest => did ++ (subj.s ! R.npNom) ++ so
|
|
}
|
|
} ;
|
|
|
|
ExtAdvQS a s = {s = \\q => a.s ++ "," ++ s.s ! q} ;
|
|
|
|
ConjQS conj ss = C.conjunctDistrTable X.QForm conj ss ;
|
|
BaseQS x y = C.twoTable X.QForm x y ;
|
|
ConsQS x xs = C.consrTable X.QForm C.comma x xs ;
|
|
|
|
ConjDet conj ss = C.conjunctDistrSS conj ss ** {
|
|
sp = \\c => conj.s1 ++ ss.sp1 ! c ++ conj.s2 ++ ss.sp2 ! c;
|
|
n = X.conjNumber conj.n ss.n; hasNum = ss.hasNum
|
|
} ;
|
|
BaseDet x y = C.twoSS x y ** {
|
|
sp1 = x.sp; sp2 = y.sp; n = X.conjNumber x.n y.n; hasNum = orB x.hasNum y.hasNum
|
|
} ;
|
|
ConsDet x xs = C.consrSS C.comma x xs ** {
|
|
sp1 = \\c => x.sp ! c ++ C.comma ++ xs.sp1 ! c;
|
|
sp2 = xs.sp2; n = X.conjNumber xs.n x.n; hasNum = orB xs.hasNum x.hasNum
|
|
} ;
|
|
|
|
}
|