Steps of building the German implementation.

4/1/2006

ParamGer: Case, Gender, Adjf
CatGer: N, CN
ResGer: mkNoun, mkN2, mkN4
> cc mkN2 "Stube" "Stuben" Fem

ResGer: mkA, mkV, regA, regV
> cc regV "machen"

CatGer: V*, A*
LexGer: N*, A*, V*
> l -table walk_V

NounGer: determiner rules, UseN
ParamGer: gennum, adjAgr
ResGer: pronForms
> p -cat=NP "der Hund" | l -table


5/1

LexGer: Pron, Det
> p "mein Hund"

AdjectiveGer: PositA, ComparA, AdAP
> p -cat=NP "ein warmer Hund" | l -table
> p -cat=NP -lexer=literals "alle meine 3 sehr warmen HÃ¼nde"

ResGer: predV, mkClause, aux verbs
VerbGer: UseV
SentenceGer: PredVP
> l -table PredVP (UsePron i_Pron) (UseV walk_V)
("ich nicht gegangen hatte" etc)

ParamGer: VAux
ResGer: added aux : VAux to Verb and mkV
LexGer: mkV updates
> l -table PredVP (UsePron i_Pron) (UseV walk_V)
("ich nicht gegangen war" etc, now correct)


ResGer: appPrep, insertObj, insertAdv
VerbGer: ComplV2, ComplV3
SentenceGer: PosCl, NegCl
> p -cat=S -mcfg "ich zeige ihn meinem warmen Hund"

wc *.gfc
122385 total
 70667 CatGer.gfc (largest)
add flags optimize=all_subs  to this module:
  5781 CatGer.gfc
 57499 total

VerbGer: UseComp, Comp*
> p -cat=Cl -mcfg "ich bin ein Hund" | l -table

> vg
(see complex figure)
> i english/TestEng.gf
> vg
(see complex symmetric figure)

ResGer: wollen_V, auxVV, insertExtrapos
VerbGer: ComplVS
> p -cat=Cl -mcfg "ich behaupte daÃ wir gehen" | l -table
(gets OK with proper extrapos)
VerbGer: ComplVV
  = insertObj (\\a => v.part ++ (vp.s ! a ! VPInfinit Simul).inf) (predV v) ;
> p -cat=Cl "ich will gehen" | l -table
  Pres  Anter  Pos  Main  : ich habe gehen gewollen
  Pres  Anter  Pos  Inv  : habe ich gehen gewollen
  Pres  Anter  Pos  Sub  : ich gehen gewollen habe
(Thus "double infinitives" don't get right.)


Added routine stuff to AdverbGer and AdjectiveGer. Noticed failure with
comparison ("schneller als ein Zug" pro "mehr schnell als ein Zug")

SentenceGer: ImpVP
PhraseGer: almost all (actually copied from PhraseScand)
> p -cat=Imp -mcfg "geh hier"
ImpVP (AdvVP (UseV walk_V) here_Adv)

QuestionGer: almost all (copied from Scand)
UntensedGer: PosQCl, NegQCl
> p -cat=QS -mcfg "gehen wir nicht" | l -table
  QDir  : gehen wir nicht
  QIndir  : ob wir nicht gehen

VerbGer: ComplVQ
> p -cat=S -mcfg "ich frage ob wir warm sind"

LexGer: *IDet, *IP, *Prep
QuestionGer: IDetCN (using NounGer.MkDet)
> p -cat=QS -mcfg "welcher Hund geht"
> p -cat=QS -mcfg "in welchem Hund geht er"

wc german/*.gfc
69407 total

NounGer: ComplN2, ComplN3, SentCN, QuestCN
LexGer: N2, N3
> p -cat=NP "der Sohn von dem Hund"
> p -cat=CN -mcfg "Hund ob er geht"

SentenceGer: Slash rules
> p -cat=QS -mcfg "wem hilft er"

CatGer: RP, RS, RCl
ParamGer: RAgr
RelativeGer: all (copied from Scand; tweaking betw GenNum, Agr also in CatGer)
UntensedGer: PosRCl, NegRCl
NounGer: RelCN
> p -cat=RCl -mcfg "der geht" | l -table
> p -cat=NP -mcfg "der Hund dem wir helfen wollen" | l -table

NounGer: Num and Ord related rules
CatGer: Ord has parametric AForm; Num has no params
ParamGer: CardOrd
LexGer: Numeral
> p -cat=NP "meine vierzig warmen Hünde"
> p -cat=NP "mein vierzigter Hund"

CatGer: Conj, DConj
ConjunctionGer: all (mostly from Scand)
LexGer: Conj, DConj
> p -cat=NP "ich und der Hund" | l -table
> p -cat=S -mcfg "ich und der Hund sind entweder warm oder warm"

> pm -printer=missing
TestGer
  AdVVP  AdvSC  ComplV2A  ComplVA  EmbedQS  EmbedS  EmbedVP  PassV2  ReflA2  ReflV2  UttVP
  one_Numeral

wc german/*.gfc
   1231    4116   98878 total

Now we have finished most of TestGer in two days, 4 + 8 hours. But we had the
old morphology and other files, and the Scandinavian v 1.0 as help.

--------------------

13/1

CatGer: add prefix to V*, isAux to VV - the latter mostly to deal with double infinitives
ResGer: generalize predV to predVGen
LexGer: experiment with gehen --> ausgehen
> l -table PredVP (UsePron he_Pron) (ComplVV want_VV (UseV walk_V))
--- the auxiliary is still in wrong place in subordinate double infinitives

ResGer: reflPron
VerbGer: ReflV2
AdjectiveGer: ReflA2 --- with missing person agreement 
> p -cat=Cl -mcfg "ich helfe mir"
  PredVP (UsePron i_Pron) (ComplV2 help_V2 (UsePron i_Pron))
  PredVP (UsePron i_Pron) (ReflV2 help_V2)
> p -cat=Cl -mcfg "er hilft sich"
  PredVP (UsePron he_Pron) (ReflV2 help_V2)

> pm -printer=missing
  AdVVP AdvSC OrdInt UttVP
A round of filling these completes the implementation of TestGer.
ResGer: insertAdV
> p -cat=Cl -mcfg "er hilft immer seinem Hund"
  PredVP (UsePron he_Pron) (AdVVP always_AdV (ComplV2 help_V2 
    (DetCN (DetSg (PossSg he_Pron) NoOrd) (UseN dog_N))))
wc german/*.gfc
     63     203    4768 german/AdjectiveGer.gfc
     63     198    1649 german/AdverbGer.gfc
     55     184    7490 german/CatGer.gfc
     76     260    4489 german/ConjunctionGer.gfc
     94     315   13968 german/LexGer.gfc
    121     445    2736 german/MorphoGer.gfc
     86     306    6637 german/NounGer.gfc
     41     160    1419 german/ParamGer.gfc
     81     245    2256 german/PhraseGer.gfc
     63     219    3333 german/QuestionGer.gfc
     63     219    3800 german/RelativeGer.gfc
     87     343    2081 german/ResGer.gfc
    112     393   20890 german/SentenceGer.gfc
    230     696    4752 german/TestGer.gfc
     61     185    1483 german/UntensedGer.gfc
    110     366   41629 german/VerbGer.gfc
   1406    4737  123380 total

Ca. 4h more work was needed, so we have spent 16h now.

--------------------

15/1 (3h)

TensedGer: just uncomment, except S
StructuralGer: almost complete with some determiner forms to revisit
ParadigmsGer: almost complete with verb form variations to revisit
MorphoGer: very few functions in this module

16/1 (4h)

ParamGer: removed Strong/Weak from AForm to save lexicon storage. Done in agrAdj instead. 
  Only affects NounGer and QuestionGer. Notice that making case analysis on <a,gn,c> is
  much less storage-efficient.

ParadigmsGer: completed

ParamGer: VType
ResGer, ParadigmsGer: the consequences of this

BasicGer; started. Strategy: fill all you know without consulting dictionary;
mark ---- before what you dont know, and after what you are uncertain about.

Insight: to write a *resource* grammar you need not be a fluent speaker, but
just to understand what grammar books say. It is when writing application
grammars that you need to make stylistic judgements to do the right choices
from the resource.

17/1 (4h)

MorphoGer: for numerals
NumeralGer: all
> make stat
  66123 german/NumeralGer.gfc
added flags optimize=all_subs ;
  17046 german/NumeralGer.gfc

BasicGer: completed. Idea: work in pairs, one consulting the dictionary (or
giving native speaker advice)
ParadigmsGer: remove second arg from mkA ; add heuristics for el/er/en masculines in regN

wc german/*.gfc
     63     203    3360 german/AdjectiveGer.gfc
     63     198    1649 german/AdverbGer.gfc
    276    1159   89069 german/BasicGer.gfc
     55     182    7704 german/CatGer.gfc
     76     260    4489 german/ConjunctionGer.gfc
    523    1575   11728 german/LangGer.gfc
     94     315   10783 german/LexGer.gfc
    128     469    2892 german/MorphoGer.gfc
     99     375   12394 german/NounGer.gfc
    100     321   17046 german/NumeralGer.gfc
      0       5      83 german/ParadigmsGer.gfc
     42     162    1446 german/ParamGer.gfc
     81     245    2256 german/PhraseGer.gfc
     68     244    4372 german/QuestionGer.gfc
     63     219    3800 german/RelativeGer.gfc
     90     355    2155 german/ResGer.gfc
    123     423   22590 german/SentenceGer.gfc
    151     451   14559 german/StructuralGer.gfc
     69     224    1715 german/TensedGer.gfc
    230     696    4752 german/TestGer.gfc
     61     185    1483 german/UntensedGer.gfc
    121     406   45746 german/VerbGer.gfc
   2576    8672  266071 total

Known bugs: double infinitives in subordinate clauses.
Known uncertainties: marked with ----, mostly in Structural and Basic.

Work: ca 27h for whole German (but with support in 0.6 esp. morphology, Swedish).


22/1

Fixed double infinitives with a new field (isAux : Bool) in VP. Used in
mkClause.

31/1

Fine-tuned the place of negation by changing in ResGerman.mkClause and 
VerbGerman.UseCompl. Want to say "ich bin nicht alt" and "ich liebe sie nicht".

31/5

Added inherent Case to RS, RCl and Gender to Agr in order to handle it clefts
properly. (In the meantime, the module IdiomGer had required some incremental
work.)
