mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-06-23 02:06:20 -06:00
NP.s : Bool => Case => Str and NP.w = WDefArt
np.s ! False : Case => Str is the ordinary paradigm; if the np has a
definite article, np.w = WDefArt, and np.s ! True : Case => Str is the
paradigm with definite article omitted, if np.a = Ag g Sg p.
Prepositions now have type
Prep = {s : GenNum => Str ; s2 :Str ; c : Case ; isPrep : PrepType},
and |Prep| = |Case|*|isPrep| = 4 * 3 = 12, independent of |PCase| >= 18.
A preposition p with p.isPrep = isPrepDefArt has in p.s ! (GSg g) : Str
the preposition glued with definite article of a following np in singular.
The modified linearization categories for Prep, NP, Det, DAP, Quant,
Predet are no longer Prep', NP' etc., but Prep, NP etc. in CatGer.
They are now also used in gf-rgl/tests/german/TestLangGer.gf.
The previous auxiliary files abstract/Adjective'.gf etc. are removed.
BUT: for complexitiy reasons,
- the glueing is omitted in SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash,
- SlashVP : NP -> SlashVP -> ClSlash (in SentenceGer and TestLanGer)
are commented out.
SlashVP causes grammar compilation to crash due to memory limits, probably
because mkClause and its modification mkClSlash are too detailed.
76 lines
2.2 KiB
Plaintext
76 lines
2.2 KiB
Plaintext
concrete IdiomGer of Idiom = CatGer **
|
|
open MorphoGer, ParadigmsGer, Prelude in {
|
|
|
|
flags optimize=all_subs ;
|
|
coding=utf8 ;
|
|
|
|
lin
|
|
ImpersCl vp = mkClause "es" (agrP3 Sg) vp ;
|
|
GenericCl vp = mkClause "man" (agrP3 Sg) vp ;
|
|
|
|
CleftNP np rs = mkClause "es" (agrP3 Sg)
|
|
(insertExtrapos (rs.s ! RGenNum (gennum (genderAgr np.a) (numberAgr np.a))) ----
|
|
(insertObj (\\_ => (np.s ! False ! rs.c ++ bigNP np)) (predV MorphoGer.sein_V))) ; --HL
|
|
|
|
CleftAdv ad s = mkClause "es" (agrP3 Sg)
|
|
(insertExtrapos (conjThat ++ s.s ! Sub)
|
|
(insertObj (\\_ => ad.s) (predV MorphoGer.sein_V))) ;
|
|
|
|
|
|
ExistNP np =
|
|
mkClause "es" (agrP3 Sg)
|
|
(insertObj (\\_ => appPrep geben.c2 (np.s ! False) ++ bigNP np)
|
|
(predV geben)) ;
|
|
|
|
ExistIP ip = {
|
|
s = \\m,t,a,p =>
|
|
let
|
|
cls = (mkClause "es" (agrP3 Sg) (predV geben)).s ! m ! t ! a ! p ;
|
|
who = ip.s ! Acc
|
|
in table {
|
|
QDir => who ++ cls ! Inv ;
|
|
QIndir => who ++ cls ! Sub
|
|
}
|
|
} ;
|
|
|
|
ExistNPAdv np adv=
|
|
mkClause "es" (agrP3 Sg)
|
|
(insertAdv adv.s (insertObj (\\_ => appPrep geben.c2 (np.s ! False) ++ bigNP np)
|
|
(predV geben))) ;
|
|
|
|
ExistIPAdv ip adv = {
|
|
s = \\m,t,a,p =>
|
|
let
|
|
cls =
|
|
(mkClause "es" (agrP3 Sg) (insertAdv adv.s (predV geben))).s ! m ! t ! a ! p ;
|
|
who = ip.s ! Acc
|
|
in table {
|
|
QDir => who ++ cls ! Inv ;
|
|
QIndir => who ++ cls ! Sub
|
|
}
|
|
} ;
|
|
|
|
ProgrVP = insertAdv "eben" ; ----
|
|
|
|
ImpPl1 vp = {s =
|
|
(mkClause "wir" (Ag Fem Pl P1) vp).s !
|
|
MConjunct ! Pres ! Simul ! Pos ! Inv
|
|
} ;
|
|
|
|
ImpP3 np vp = {
|
|
s = (mkClause ((mkSubj np vp.c1).p1) np.a vp).s !
|
|
MConjunct ! Pres ! Simul ! Pos ! Inv
|
|
} ;
|
|
|
|
SelfAdvVP vp = insertAdv "selbst" vp ;
|
|
SelfAdVVP vp = insertAdv "selbst" vp ;
|
|
SelfNP np = np ** {
|
|
s = \\_,c => np.s ! False ! c ++ "selbst" ++ bigNP np ;
|
|
isPron = False ;
|
|
} ;
|
|
|
|
oper
|
|
geben = dirV2 (mk6V "geben" "gibt" "gib" "gab" "gäbe" "gegeben") ;
|
|
}
|
|
|