forked from GitHub/gf-rgl
are edited to allow for glued Prep+DefArt, using new categories NP',Det',Quant',
Predet',DAP'.
The previous NP.s : Case => Str*Str allows parsing
"in dem Meer" = in_Prep ++ (np.s ! Case).p1
"im Meer" = in_Prep ++ (np.s ! Case).p2,
but since only one of the strings of (np.s!Case) is used, the tree
contains a metavariable like ?2 (the grammar is "erasing"). (Similarly, if we used
NP.s : Case => Str and NP.s2 : Case => Str.)
To get rid of the metavariables, we have to choose BY A PARAMETER, say
NP.s : droppedDefArt? => Case => Str
Using np.a = Ag g n p, the preposition can select between preposition
alone or preposition with definite article (glued or not), via
Prep = {s : GenNum => Str ; s2 :Str ; c : Case ; isPrep : PrepType }
The combination is done in appPrepNP' and appPrep'. This is
independent of the number of glued Prep+DefArt. But LangGer compiles
now in 200s using 30% memory (without SlashV2VNP). Can AppPrepNP' (and
insertObjNP') be simplified?
23 lines
408 B
Plaintext
23 lines
408 B
Plaintext
--# -path=.:../abstract:../common:prelude
|
|
|
|
concrete GrammarGer of Grammar' =
|
|
NounGer,
|
|
VerbGer,
|
|
AdjectiveGer,
|
|
AdverbGer,
|
|
NumeralGer,
|
|
SentenceGer,
|
|
QuestionGer,
|
|
RelativeGer,
|
|
ConjunctionGer,
|
|
PhraseGer,
|
|
TextX - [Tense,Temp],
|
|
IdiomGer,
|
|
StructuralGer - [part_Prep,possess_Prep], -- use PartNP, PossNP instead
|
|
TenseGer
|
|
** {
|
|
|
|
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
|
|
|
} ;
|