forked from GitHub/gf-rgl
58 lines
2.3 KiB
Plaintext
58 lines
2.3 KiB
Plaintext
--# -path=.:../../src/abstract:../../src/common:../../src/api:../../src/prelude:../../src/english
|
|
-- --# -path=.:../abstract:../common:../api:../prelude
|
|
|
|
concrete TestLangEng of TestLang =
|
|
GrammarEng
|
|
, TestLexiconEng
|
|
, ConstructionEng
|
|
, ExtendEng[PastPartAP,PassVPSlash,
|
|
RNP,ReflRNP,ReflPron,ReflPoss,PredetRNP,AdvRNP,ReflA2RNP,PossPronRNP,ReflPossPron]
|
|
** open (R=ResEng), (P=ParadigmsEng), Prelude --, (E=ExtendEng)
|
|
in {
|
|
|
|
flags
|
|
startcat = Phr ; unlexer = text ; lexer = text ;
|
|
|
|
lin
|
|
SlashV2Vneg v vp =
|
|
R.insertObjc (\\a => v.c3 ++ R.infVP v.typ vp False R.Simul (R.CNeg True) a) (R.predVc v) ;
|
|
|
|
lincat
|
|
VPSlashSlash = VPSlash ** {c3 : Str} ;
|
|
lin
|
|
ReflVPSlash v3 = (R.predVc ((P.reflV (lin V v3)) ** {c2 = v3.c3 ; missingAdv = True}));
|
|
|
|
ComplSlashSlash vpss np = R.insertObjc
|
|
(appPrep vpss.c2 (lin NP np)) (vpss ** {c2 = vpss.c3 ; missingAdv = True }) ;
|
|
|
|
Slash2V4 v np = (lin VPSlash (R.insertObjc (appPrep v.c2 (lin NP np)) (R.predVc v)
|
|
** {c2 = v.c3 ; missingAdv = True})) ** { c3 = v.c4 } ;
|
|
Slash3V4 v np = (lin VPSlash (R.insertObjc (appPrep v.c3 (lin NP np)) (R.predVc v)
|
|
** {c2 = v.c2 ; missingAdv = True})) ** { c3 = v.c4 } ;
|
|
Slash4V4 v np = (lin VPSlash (R.insertObjc (appPrep v.c4 (lin NP np)) (R.predVc v)
|
|
** {c2 = v.c2 ; missingAdv = True})) ** { c3 = v.c3 } ;
|
|
|
|
oper
|
|
appPrep : Str -> NP -> (R.Agr => Str) = \p,np -> \\_ => p ++ np.s ! R.NPAcc ;
|
|
|
|
-- Passive
|
|
lin
|
|
Pass2V3 v np =
|
|
let vps = R.insertObj (\\_ => v.s ! R.VPPart ++ v.p) (R.predAux R.auxBe) ** {c2 = v.c3}
|
|
in R.insertObj (\\_ => vps.c2 ++ np.s ! R.NPAcc) vps ;
|
|
|
|
Pass3V3 v np =
|
|
let vps = R.insertObj (\\_ => v.s ! R.VPPart ++ v.p) (R.predAux R.auxBe) ** {c2 = v.c2}
|
|
in R.insertObj (\\_ => vps.c2 ++ np.s ! R.NPAcc) vps ;
|
|
|
|
-- PastPartAP = E.PastPartAP ;
|
|
-- PassVPSlash = E.PassVPSlash ;
|
|
|
|
Pass2V4 v np =
|
|
let vpss = R.insertObj (\\_ => v.s ! R.VPPart ++ v.p) (R.predAux R.auxBe) ** {c2 = v.c3 ; c3 = v.c4}
|
|
in R.insertObj (\\_ => vpss.c3 ++ np.s ! R.NPAcc) vpss ** {c2 = vpss.c2 ;
|
|
missingAdv = True ;
|
|
gapInMiddle = False } ;
|
|
|
|
} ;
|