This commit is contained in:
aarne
2005-12-14 16:51:25 +00:00
parent f4cd764f2a
commit 1acf3636d3

840
examples/mp3/mp3.gfcm Normal file
View File

@@ -0,0 +1,840 @@
concrete MP3Eng of MP3=open StructuralEng,LexiconEng in{flags modulesize=n9;flags startcat=Move;lin CanPlay:MP3.Move=\Song@0->{s="can"++("you"++("play"++Song@0.s!<TypesEng.AccP>))++"?";lock_Phr={}};"(can you play Song_0)?";
lincat Move={s:Str;lock_Phr:{}}={s=str@0;lock_Phr={}};"Move";
lin Play:MP3.Move=\Song@0->{s="play"++Song@0.s!<TypesEng.AccP>++"!";lock_Phr={}};"(play Song_0)!";
lincat Song={s:(TypesEng.NPForm=>Str);n:TypesEng.Number;p:TypesEng.Person;lock_NP:{}}={s=table TypesEng.NPForm{(TypesEng.NomP)(TypesEng.AccP)(TypesEng.GenP)(TypesEng.GenSP)=>str@0};n=<TypesEng.Sg>;p=<TypesEng.P1>;lock_NP={}};"Song";
lin This:MP3.Song=\->{s=table TypesEng.NPForm{(TypesEng.NomP)(TypesEng.AccP)(TypesEng.GenSP)=>"this";(TypesEng.GenP)=>"this's"};n=<TypesEng.Sg>;p=<TypesEng.P3>;lock_NP={}};"this";
lin ThisSong:MP3.Song=\->{s=table TypesEng.NPForm{(TypesEng.NomP)(TypesEng.AccP)(TypesEng.GenSP)=>"this"++"song";(TypesEng.GenP)=>"this"++"song's"};n=<TypesEng.Sg>;p=<TypesEng.P3>;lock_NP={}};"this song";
lin WantPlay:MP3.Move=\Song@0->{s="I"++("want"++("to"++("play"++Song@0.s!<TypesEng.AccP>)))++".";lock_Phr={}};"(I want to play Song_0).";
lin WhichPlay:MP3.Move=\->{s="which"++"song"++("is"++"played")++"?";lock_Phr={}};"((which song)is played)?";
lin Yesterday:MP3.Song=\->{s=table TypesEng.NPForm{(TypesEng.NomP)(TypesEng.AccP)(TypesEng.GenSP)=>"Yesterday";(TypesEng.GenP)=>"Yesterday's"};n=<TypesEng.Sg>;p=<TypesEng.P3>;lock_NP={}};"Yesterday";
}
resource LexiconEng=open StructuralEng,ParadigmsEng in{flags modulesize=n0;}
resource ParadigmsEng=open Predef,Prelude,SyntaxEng,ResourceEng in{flags modulesize=n0;}
resource ResourceEng=open Prelude,SyntaxEng in{flags modulesize=n0;}
resource SyntaxEng=MorphoEng**open Prelude,Coordination in{flags modulesize=n85;AAdj data in TypesEng;
AAdv data in TypesEng;
AForm data in TypesEng;
AccP data in TypesEng;
AdjDegr in TypesEng;
Adjective in TypesEng;
param Anteriority=Simul|Anter;
Case data in TypesEng;
CommonNoun in TypesEng;
Comp data in TypesEng;
Degree data in TypesEng;
Gen data in TypesEng;
GenP data in TypesEng;
GenSP data in TypesEng;
Gender data in TypesEng;
Hum data in TypesEng;
Indic data in TypesEng;
InfImp data in TypesEng;
NPForm data in TypesEng;
NoHum data in TypesEng;
Nom data in TypesEng;
NomP data in TypesEng;
Number data in TypesEng;
P1 data in TypesEng;
P2 data in TypesEng;
P3 data in TypesEng;
PPart data in TypesEng;
Particle in TypesEng;
Past data in TypesEng;
Person data in TypesEng;
Pl data in TypesEng;
Pos data in TypesEng;
Pronoun in TypesEng;
ProperName in TypesEng;
param QuestForm=DirQ|IndirQ;
RelPron in TypesEng;
Sg data in TypesEng;
Sup data in TypesEng;
param Tense=Pres|Pas|Fut;
VForm data in TypesEng;
Verb in TypesEng;
param VerbForm=VInd SyntaxEng.Tense SyntaxEng.Anteriority TypesEng.Number TypesEng.Person|VCond SyntaxEng.Anteriority|VInf SyntaxEng.Anteriority|VImp;
VerbP3 in TypesEng;
adjDegrIrreg in MorphoEng;
adjDegrLong in MorphoEng;
adjDegrReg in MorphoEng;
artDef in MorphoEng;
artIndef in MorphoEng;
contractNot in MorphoEng;
dont in MorphoEng;
mkAdjDegrWorst in MorphoEng;
mkAdjective in MorphoEng;
mkNoun in MorphoEng;
mkPronoun in MorphoEng;
mkVerb in MorphoEng;
mkVerbP3 in MorphoEng;
nameReg in MorphoEng;
nounGen in MorphoEng;
nounReg in MorphoEng;
nounS in MorphoEng;
nounY in MorphoEng;
plural in TypesEng;
pronHe in MorphoEng;
pronI in MorphoEng;
pronIt in MorphoEng;
pronShe in MorphoEng;
pronThey in MorphoEng;
pronWe in MorphoEng;
pronYouPl in MorphoEng;
pronYouSg in MorphoEng;
regAdjective in MorphoEng;
regVerbP3 in MorphoEng;
relPron in MorphoEng;
singular in TypesEng;
toCase in TypesEng;
toNPForm in TypesEng;
verbBe in MorphoEng;
verbGen in MorphoEng;
verbNoPart in MorphoEng;
verbP3Do in MorphoEng;
verbP3Have in MorphoEng;
verbP3e in MorphoEng;
verbP3s in MorphoEng;
verbP3y in MorphoEng;
verbPart in MorphoEng;
}
resource MorphoEng=TypesEng**open Prelude,Predef in{flags modulesize=n43;AAdj data in TypesEng;
AAdv data in TypesEng;
AForm data in TypesEng;
AccP data in TypesEng;
AdjDegr in TypesEng;
Adjective in TypesEng;
Case data in TypesEng;
CommonNoun in TypesEng;
Comp data in TypesEng;
Degree data in TypesEng;
Gen data in TypesEng;
GenP data in TypesEng;
GenSP data in TypesEng;
Gender data in TypesEng;
Hum data in TypesEng;
Indic data in TypesEng;
InfImp data in TypesEng;
NPForm data in TypesEng;
NoHum data in TypesEng;
Nom data in TypesEng;
NomP data in TypesEng;
Number data in TypesEng;
P1 data in TypesEng;
P2 data in TypesEng;
P3 data in TypesEng;
PPart data in TypesEng;
Particle in TypesEng;
Past data in TypesEng;
Person data in TypesEng;
Pl data in TypesEng;
Pos data in TypesEng;
Pronoun in TypesEng;
ProperName in TypesEng;
RelPron in TypesEng;
Sg data in TypesEng;
Sup data in TypesEng;
VForm data in TypesEng;
Verb in TypesEng;
VerbP3 in TypesEng;
plural in TypesEng;
singular in TypesEng;
toCase in TypesEng;
toNPForm in TypesEng;
}
resource TypesEng=open Prelude in{flags modulesize=n8;param AForm=AAdj|AAdv;
param Case=Nom|Gen;
param Degree=Pos|Comp|Sup;
param Gender=NoHum|Hum;
param NPForm=NomP|AccP|GenP|GenSP;
param Number=Sg|Pl;
param Person=P1|P2|P3;
param VForm=InfImp|Indic TypesEng.Person|Past TypesEng.Number|PPart;
}
concrete MP3Swe of MP3=open StructuralSwe,LexiconSwe in{flags modulesize=n9;flags startcat=Move;lin CanPlay:MP3.Move=\Song@0->{s="kan"++("du"++("spela"++Song@0.s!<TypesSwe.PAcc>))++"?";lock_Phr={}};"(kan du spela Song_0)?";
lincat Move={s:Str;lock_Phr:{}}={s=str@0;lock_Phr={}};"Move";
lin Play:MP3.Move=\Song@0->{s="spela"++Song@0.s!<TypesSwe.PAcc>++"!";lock_Phr={}};"(spela Song_0)!";
lincat Song={s:(TypesSwe.NPForm=>Str);g:TypesSwe.Gender;n:TypesSwe.Number;lock_NP:{}}={s=table TypesSwe.NPForm{(TypesSwe.PNom)(TypesSwe.PAcc)(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Utr)))(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Neutr)))(TypesSwe.PGen(TypesSwe.APl))=>str@0};g=<TypesSwe.Utr>;n=<TypesSwe.Sg>;lock_NP={}};"Song";
lin This:MP3.Song=\->{s=table TypesSwe.NPForm{(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Utr)))(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Neutr)))(TypesSwe.PGen(TypesSwe.APl))=>"det"++"här"++"s";(TypesSwe.PNom)(TypesSwe.PAcc)=>"det"++"här"};g=<TypesSwe.Neutr>;n=<TypesSwe.Sg>;lock_NP={}};"det här";
lin ThisSong:MP3.Song=\->{s=table TypesSwe.NPForm{(TypesSwe.PNom)(TypesSwe.PAcc)=>"den"++"här"++"låten";(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Utr)))(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Neutr)))(TypesSwe.PGen(TypesSwe.APl))=>"den"++"här"++"låtens"};g=<TypesSwe.Utr>;n=<TypesSwe.Sg>;lock_NP={}};"(den här)låten";
lin WantPlay:MP3.Move=\Song@0->{s="jag"++("vill"++("spela"++Song@0.s!<TypesSwe.PAcc>))++".";lock_Phr={}};"(jag vill spela Song_0).";
lin WhichPlay:MP3.Move=\->{s="vilken"++"låt"++"spelas"++"?";lock_Phr={}};"((vilken låt)spelas)?";
lin Yesterday:MP3.Song=\->{s=table TypesSwe.NPForm{(TypesSwe.PNom)(TypesSwe.PAcc)=>"Yesterday";(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Utr)))(TypesSwe.PGen(TypesSwe.ASg(TypesSwe.Neutr)))(TypesSwe.PGen(TypesSwe.APl))=>"Yesterdays"};g=<TypesSwe.Neutr>;n=<TypesSwe.Sg>;lock_NP={}};"Yesterday";
}
resource LexiconSwe=open StructuralSwe,ParadigmsSwe in{flags modulesize=n0;}
resource ParadigmsSwe=open Predef,Prelude,SyntaxSwe,ResourceSwe in{flags modulesize=n0;}
resource ResourceSwe=open Prelude,SyntaxSwe in{flags modulesize=n0;}
resource SyntaxSwe=MorphoSwe**open Prelude,Coordination in{flags modulesize=n172;AF data in TypesSwe;
APl data in TypesSwe;
APron data in TypesSwe;
ASg data in TypesSwe;
Act data in TypesSwe;
Adj in TypesSwe;
AdjForm data in TypesSwe;
AdjFormGrad data in TypesSwe;
AdjFormPos data in TypesSwe;
AdjFormSup data in TypesSwe;
AdjPronForm data in TypesSwe;
Adv in TypesSwe;
AdvInv in TypesSwe;
Art in TypesSwe;
AuxInf data in TypesSwe;
AuxPres data in TypesSwe;
AuxPret data in TypesSwe;
AuxSup data in TypesSwe;
AuxVerbForm data in TypesSwe;
AxPl data in TypesSwe;
AxSg data in TypesSwe;
Case data in TypesSwe;
Cnj data in TypesSwe;
Comp data in TypesSwe;
Compar data in TypesSwe;
Conjunct in TypesSwe;
Def data in TypesSwe;
Degree data in TypesSwe;
Gen data in TypesSwe;
GenNum data in TypesSwe;
Gender data in TypesSwe;
Imper data in TypesSwe;
Imperat data in TypesSwe;
Ind data in TypesSwe;
Indef data in TypesSwe;
Indicat data in TypesSwe;
Inf data in TypesSwe;
Infin in TypesSwe;
Infinit data in TypesSwe;
Interj in TypesSwe;
Masc data in TypesSwe;
Mode data in TypesSwe;
NPForm data in TypesSwe;
Neutr data in TypesSwe;
NoMasc data in TypesSwe;
Nom data in TypesSwe;
Number data in TypesSwe;
param Order=Main|Inv|Sub;
P1 data in TypesSwe;
P2 data in TypesSwe;
P3 data in TypesSwe;
PAcc data in TypesSwe;
PGen data in TypesSwe;
PNm in TypesSwe;
PNom data in TypesSwe;
Part in TypesSwe;
Pass data in TypesSwe;
Person data in TypesSwe;
Pl data in TypesSwe;
Pos data in TypesSwe;
Posit data in TypesSwe;
Prep in TypesSwe;
Preposition in MorphoSwe;
Pres data in TypesSwe;
Pret data in TypesSwe;
ProAdj in TypesSwe;
ProPN in TypesSwe;
PtPres data in TypesSwe;
PtPret data in TypesSwe;
param QuestForm=DirQ|IndirQ;
RAcc data in MorphoSwe;
RGen data in MorphoSwe;
RNom data in MorphoSwe;
RPrep data in MorphoSwe;
RelCase data in MorphoSwe;
param RelGender=RNoGen|RG TypesSwe.Gender;
SF data in TypesSwe;
Sex data in TypesSwe;
SexNum data in TypesSwe;
Sg data in TypesSwe;
Species data in TypesSwe;
param SpeciesP=IndefP|DefP TypesSwe.Species;
Strong data in TypesSwe;
Subjunct in TypesSwe;
Subst in TypesSwe;
SubstForm data in TypesSwe;
Sup data in TypesSwe;
SupStrong data in TypesSwe;
SupWeak data in TypesSwe;
Super data in TypesSwe;
Supin data in TypesSwe;
Utr data in TypesSwe;
VAux in TypesSwe;
VF data in TypesSwe;
VFin data in TypesSwe;
VForm data in TypesSwe;
VI data in TypesSwe;
VInf data in TypesSwe;
VMode data in TypesSwe;
VPres data in TypesSwe;
Verb in TypesSwe;
VerbForm data in TypesSwe;
Verbum in TypesSwe;
Voice data in TypesSwe;
Weak data in TypesSwe;
aAbstrakt in MorphoSwe;
aFager in MorphoSwe;
aFin in MorphoSwe;
aGrund in MorphoSwe;
aKorkad in MorphoSwe;
aVaken in MorphoSwe;
aVid in MorphoSwe;
adverbForm in TypesSwe;
artDef in MorphoSwe;
artIndef in MorphoSwe;
de_38 in MorphoSwe;
den_39 in MorphoSwe;
det_40 in MorphoSwe;
du_33 in MorphoSwe;
extVerb in TypesSwe;
extVerbPart in TypesSwe;
farbror_8 in MorphoSwe;
gammal_16 in MorphoSwe;
giva_1147 in MorphoSwe;
gå_1174 in MorphoSwe;
han_34 in MorphoSwe;
hava_1198 in MorphoSwe;
hon_35 in MorphoSwe;
jag_32 in MorphoSwe;
liten_1146 in MorphoSwe;
man_1144 in MorphoSwe;
mkVerb in MorphoSwe;
mkVerbPart in MorphoSwe;
mor_1 in MorphoSwe;
ni_37 in MorphoSwe;
pronSådan in MorphoSwe;
pronVilken in MorphoSwe;
relPronForms in MorphoSwe;
sApa in MorphoSwe;
sBil in MorphoSwe;
sHus in MorphoSwe;
sKam in MorphoSwe;
sKikare in MorphoSwe;
sLik in MorphoSwe;
sMuseum in MorphoSwe;
sNivå in MorphoSwe;
sNummer in MorphoSwe;
sNyckel in MorphoSwe;
sPapper in MorphoSwe;
sParti in MorphoSwe;
sPojke in MorphoSwe;
sProgram in MorphoSwe;
sRike in MorphoSwe;
sRum in MorphoSwe;
sSak in MorphoSwe;
sVarelse in MorphoSwe;
stor_25 in MorphoSwe;
ung_29 in MorphoSwe;
vByta in MorphoSwe;
vFinna in MorphoSwe;
vGömma in MorphoSwe;
vHyra in MorphoSwe;
vLeka in MorphoSwe;
vTala in MorphoSwe;
vTyda in MorphoSwe;
vTåla in MorphoSwe;
vVända in MorphoSwe;
vara_1200 in MorphoSwe;
verbFinnas in MorphoSwe;
verbHava in MorphoSwe;
verbVara in MorphoSwe;
vi_36 in MorphoSwe;
}
resource MorphoSwe=TypesSwe**open Prelude in{flags modulesize=n99;AF data in TypesSwe;
APl data in TypesSwe;
APron data in TypesSwe;
ASg data in TypesSwe;
Act data in TypesSwe;
Adj in TypesSwe;
AdjForm data in TypesSwe;
AdjFormGrad data in TypesSwe;
AdjFormPos data in TypesSwe;
AdjFormSup data in TypesSwe;
AdjPronForm data in TypesSwe;
Adv in TypesSwe;
AdvInv in TypesSwe;
Art in TypesSwe;
AuxInf data in TypesSwe;
AuxPres data in TypesSwe;
AuxPret data in TypesSwe;
AuxSup data in TypesSwe;
AuxVerbForm data in TypesSwe;
AxPl data in TypesSwe;
AxSg data in TypesSwe;
Case data in TypesSwe;
Cnj data in TypesSwe;
Comp data in TypesSwe;
Compar data in TypesSwe;
Conjunct in TypesSwe;
Def data in TypesSwe;
Degree data in TypesSwe;
Gen data in TypesSwe;
GenNum data in TypesSwe;
Gender data in TypesSwe;
Imper data in TypesSwe;
Imperat data in TypesSwe;
Ind data in TypesSwe;
Indef data in TypesSwe;
Indicat data in TypesSwe;
Inf data in TypesSwe;
Infin in TypesSwe;
Infinit data in TypesSwe;
Interj in TypesSwe;
Masc data in TypesSwe;
Mode data in TypesSwe;
NPForm data in TypesSwe;
Neutr data in TypesSwe;
NoMasc data in TypesSwe;
Nom data in TypesSwe;
Number data in TypesSwe;
P1 data in TypesSwe;
P2 data in TypesSwe;
P3 data in TypesSwe;
PAcc data in TypesSwe;
PGen data in TypesSwe;
PNm in TypesSwe;
PNom data in TypesSwe;
Part in TypesSwe;
Pass data in TypesSwe;
Person data in TypesSwe;
Pl data in TypesSwe;
Pos data in TypesSwe;
Posit data in TypesSwe;
Prep in TypesSwe;
Pres data in TypesSwe;
Pret data in TypesSwe;
ProAdj in TypesSwe;
ProPN in TypesSwe;
PtPres data in TypesSwe;
PtPret data in TypesSwe;
param RelCase=RNom|RAcc|RGen|RPrep;
SF data in TypesSwe;
Sex data in TypesSwe;
SexNum data in TypesSwe;
Sg data in TypesSwe;
Species data in TypesSwe;
Strong data in TypesSwe;
Subjunct in TypesSwe;
Subst in TypesSwe;
SubstForm data in TypesSwe;
Sup data in TypesSwe;
SupStrong data in TypesSwe;
SupWeak data in TypesSwe;
Super data in TypesSwe;
Supin data in TypesSwe;
Utr data in TypesSwe;
VAux in TypesSwe;
VF data in TypesSwe;
VFin data in TypesSwe;
VForm data in TypesSwe;
VI data in TypesSwe;
VInf data in TypesSwe;
VMode data in TypesSwe;
VPres data in TypesSwe;
Verb in TypesSwe;
VerbForm data in TypesSwe;
Verbum in TypesSwe;
Voice data in TypesSwe;
Weak data in TypesSwe;
adverbForm in TypesSwe;
extVerb in TypesSwe;
extVerbPart in TypesSwe;
}
resource TypesSwe=open Prelude in{flags modulesize=n24;param AdjForm=AF TypesSwe.AdjFormGrad TypesSwe.Case;
param AdjFormGrad=Posit TypesSwe.AdjFormPos|Compar|Super TypesSwe.AdjFormSup;
param AdjFormPos=Strong TypesSwe.GenNum|Weak TypesSwe.SexNum;
param AdjFormSup=SupStrong|SupWeak;
param AdjPronForm=APron TypesSwe.GenNum TypesSwe.Case;
param AuxVerbForm=AuxInf|AuxPres|AuxPret|AuxSup;
param Case=Nom|Gen;
param Degree=Pos|Comp|Sup;
param GenNum=ASg TypesSwe.Gender|APl;
param Gender=Utr|Neutr;
param Mode=Ind|Cnj;
param NPForm=PNom|PAcc|PGen TypesSwe.GenNum;
param Number=Sg|Pl;
param Person=P1|P2|P3;
param Sex=NoMasc|Masc;
param SexNum=AxSg TypesSwe.Sex|AxPl;
param Species=Indef|Def;
param SubstForm=SF TypesSwe.Number TypesSwe.Species TypesSwe.Case;
param VFin=Pres TypesSwe.Mode TypesSwe.Voice|Pret TypesSwe.Mode TypesSwe.Voice|Imper;
param VForm=VPres TypesSwe.VMode TypesSwe.Voice;
param VInf=Inf TypesSwe.Voice|Supin TypesSwe.Voice|PtPres TypesSwe.Case|PtPret TypesSwe.AdjFormPos TypesSwe.Case;
param VMode=Infinit|Indicat|Imperat;
param VerbForm=VF TypesSwe.VFin|VI TypesSwe.VInf;
param Voice=Act|Pass;
}
concrete MP3Fre of MP3=open StructuralFre,LexiconFre in{flags modulesize=n9;flags startcat=Move;lin CanPlay:MP3.Move=\Song@0->{s=variants{("est-ce"++[pre"que"{"qu'"/"a""â""à""e""ê""é""è""h""i""î""o""ô""u""û""y"}])[]}++("tu"++("peux"++table Prelude.Bool{(Prelude.True)=>Song@0.s!<TypesFre.Aton<TypesFre.Acc>>++"jouer";(Prelude.False)=>"jouer"++Song@0.s!<TypesFre.Aton<TypesFre.Acc>>}!(table Prelude.Bool{(Prelude.False)=><Prelude.False>;(Prelude.True)=><Prelude.True>}!(table TypesFre.ClitType{(TypesFre.Clit0)=><Prelude.False>;(TypesFre.Clit1)(TypesFre.Clit2)(TypesFre.Clit3)=><Prelude.True>}!(Song@0.c)))))++"?";lock_Phr={}};"((est-ce que)tu peux Song_0 jouer)?";
lincat Move={s:Str;lock_Phr:{}}={s=str@0;lock_Phr={}};"Move";
lin Play:MP3.Move=\Song@0->{s=table Prelude.Bool{(Prelude.True)=>Song@0.s!<TypesFre.Aton<TypesFre.Acc>>++"joue";(Prelude.False)=>"joue"++Song@0.s!<TypesFre.Aton<TypesFre.Acc>>}!(table Prelude.Bool{(Prelude.False)=><Prelude.False>;(Prelude.True)=><Prelude.True>}!(table TypesFre.ClitType{(TypesFre.Clit0)=><Prelude.False>;(TypesFre.Clit1)(TypesFre.Clit2)(TypesFre.Clit3)=><Prelude.True>}!(Song@0.c)))++"!";lock_Phr={}};"(Song_0 joue)!";
lincat Song={s:(TypesFre.NPForm=>Str);g:TypesFre.PronGen;n:TypesFre.Number;p:TypesFre.Person;c:TypesFre.ClitType;lock_NP:{}}={s=table TypesFre.NPForm{(TypesFre.Ton(TypesFre.Nom))(TypesFre.Ton(TypesFre.Acc))(TypesFre.Ton(TypesFre.Gen))(TypesFre.Ton(TypesFre.Dat))(TypesFre.Aton(TypesFre.Nom))(TypesFre.Aton(TypesFre.Acc))(TypesFre.Aton(TypesFre.Gen))(TypesFre.Aton(TypesFre.Dat))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Fem))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Fem))=>str@0};g=<TypesFre.PGen<TypesFre.Masc>>;n=<TypesFre.Sg>;p=<TypesFre.P1>;c=<TypesFre.Clit0>;lock_NP={}};"Song";
lin This:MP3.Song=\->{s=table TypesFre.NPForm{(TypesFre.Ton(TypesFre.Gen))(TypesFre.Aton(TypesFre.Gen))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Fem))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Fem))=>"de"++"ceci";(TypesFre.Ton(TypesFre.Dat))(TypesFre.Aton(TypesFre.Dat))=>"à"++"ceci";(TypesFre.Ton(TypesFre.Nom))(TypesFre.Ton(TypesFre.Acc))(TypesFre.Aton(TypesFre.Nom))(TypesFre.Aton(TypesFre.Acc))=>"ceci"};g=<TypesFre.PGen<TypesFre.Masc>>;n=<TypesFre.Sg>;p=<TypesFre.P3>;c=<TypesFre.Clit0>;lock_NP={}};"ceci";
lin ThisSong:MP3.Song=\->{s=table TypesFre.NPForm{(TypesFre.Ton(TypesFre.Nom))(TypesFre.Ton(TypesFre.Acc))(TypesFre.Aton(TypesFre.Nom))(TypesFre.Aton(TypesFre.Acc))=>"cette"++"chanson";(TypesFre.Ton(TypesFre.Dat))(TypesFre.Aton(TypesFre.Dat))=>"à"++("cette"++"chanson");(TypesFre.Ton(TypesFre.Gen))(TypesFre.Aton(TypesFre.Gen))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Fem))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Fem))=>[pre"de"{"d'"/"a""â""à""e""ê""é""è""h""i""î""o""ô""u""û""y"}]++("cette"++"chanson")};g=<TypesFre.PGen<TypesFre.Fem>>;n=<TypesFre.Sg>;p=<TypesFre.P3>;c=<TypesFre.Clit0>;lock_NP={}};"cette chanson";
lin WantPlay:MP3.Move=\Song@0->{s=[pre"je"{"j'"/"a""â""à""e""ê""é""è""h""i""î""o""ô""u""û""y"}]++("veux"++table Prelude.Bool{(Prelude.True)=>Song@0.s!<TypesFre.Aton<TypesFre.Acc>>++"jouer";(Prelude.False)=>"jouer"++Song@0.s!<TypesFre.Aton<TypesFre.Acc>>}!(table Prelude.Bool{(Prelude.False)=><Prelude.False>;(Prelude.True)=><Prelude.True>}!(table TypesFre.ClitType{(TypesFre.Clit0)=><Prelude.False>;(TypesFre.Clit1)(TypesFre.Clit2)(TypesFre.Clit3)=><Prelude.True>}!(Song@0.c))))++".";lock_Phr={}};"(je veux Song_0 jouer).";
lin WhichPlay:MP3.Move=\->{s="quelle"++"chanson"++(variants{("est-ce"++"qui")[]}++("est"++"jouée"))++"?";lock_Phr={}};"((quelle chanson)(est-ce qui)est jouée)?";
lin Yesterday:MP3.Song=\->{s=table TypesFre.NPForm{(TypesFre.Ton(TypesFre.Gen))(TypesFre.Aton(TypesFre.Gen))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Sg)(TypesFre.Fem))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Masc))(TypesFre.Poss(TypesFre.Pl)(TypesFre.Fem))=>"de"++"Yesterday";(TypesFre.Ton(TypesFre.Dat))(TypesFre.Aton(TypesFre.Dat))=>"à"++"Yesterday";(TypesFre.Ton(TypesFre.Nom))(TypesFre.Ton(TypesFre.Acc))(TypesFre.Aton(TypesFre.Nom))(TypesFre.Aton(TypesFre.Acc))=>"Yesterday"};g=<TypesFre.PGen<TypesFre.Masc>>;n=<TypesFre.Sg>;p=<TypesFre.P3>;c=<TypesFre.Clit0>;lock_NP={}};"Yesterday";
}
concrete MP3I of MP3={flags modulesize=n0;flags startcat=Move;}
resource LexiconFre=open StructuralFre,ParadigmsFre in{flags modulesize=n0;}
resource Lexicon={flags modulesize=n0;}
resource ParadigmsFre=open Prelude,TypesFre,SyntaxFre,MorphoFre,ResourceFre in{flags modulesize=n0;}
resource ResourceFre=open SyntaxFre,MorphoFre,Prelude in{flags modulesize=n0;}
resource SyntaxFre=TypesFre**open Prelude,Coordination,MorphoFre in{flags modulesize=n108;AA data in TypesFre;
AF data in TypesFre;
AForm data in TypesFre;
Acc data in TypesFre;
Adj in TypesFre;
AdjComp in TypesFre;
Aton data in TypesFre;
CNom in TypesFre;
Case data in TypesFre;
CaseA in TypesFre;
Clit0 data in TypesFre;
Clit1 data in TypesFre;
Clit2 data in TypesFre;
Clit3 data in TypesFre;
ClitType data in TypesFre;
Comp data in TypesFre;
Con data in TypesFre;
Cond data in TypesFre;
Dat data in TypesFre;
Degree data in TypesFre;
Fem data in TypesFre;
Futur data in TypesFre;
Gen data in TypesFre;
Gender data in TypesFre;
Imparf data in TypesFre;
Imper data in TypesFre;
Ind data in TypesFre;
Indic data in TypesFre;
Inf data in TypesFre;
Masc data in TypesFre;
Mode data in TypesFre;
NPForm data in TypesFre;
NPFormA in TypesFre;
Nom data in TypesFre;
NumPersI data in TypesFre;
Number data in TypesFre;
P1 data in TypesFre;
P2 data in TypesFre;
P3 data in TypesFre;
PGen data in TypesFre;
PNoGen data in TypesFre;
PPasse data in TypesFre;
PPres data in TypesFre;
Part data in TypesFre;
Passe data in TypesFre;
Person data in TypesFre;
Pl data in TypesFre;
PlP1 data in TypesFre;
PlP2 data in TypesFre;
Pos data in TypesFre;
Poss data in TypesFre;
Pres data in TypesFre;
PronGen data in TypesFre;
Pronoun in TypesFre;
param QuestForm=DirQ|IndirQ;
RComplex data in TypesFre;
RG data in TypesFre;
RNoGen data in TypesFre;
RSimple data in TypesFre;
RelForm data in TypesFre;
RelFormA in TypesFre;
RelGen data in TypesFre;
SImparf data in TypesFre;
SPres data in TypesFre;
Sg data in TypesFre;
SgP2 data in TypesFre;
Subjo data in TypesFre;
Sup data in TypesFre;
TPart data in TypesFre;
TSubj data in TypesFre;
Temps data in TypesFre;
Ton data in TypesFre;
VF data in TypesFre;
VFin data in TypesFre;
VForm data in TypesFre;
VImper data in TypesFre;
VInfin data in TypesFre;
VPart data in TypesFre;
VerbPres in TypesFre;
Verbum in TypesFre;
accusative in TypesFre;
adjCompLong in TypesFre;
case2pform in TypesFre;
case2pformClit in TypesFre;
dative in TypesFre;
elisDe in TypesFre;
elisLa in TypesFre;
elisLe in TypesFre;
elisNe in TypesFre;
elisQue in TypesFre;
elisSi in TypesFre;
elision in TypesFre;
genitive in TypesFre;
mkAdjComp in TypesFre;
nombreVerb in TypesFre;
nominative in TypesFre;
pform2case in TypesFre;
pgen2gen in TypesFre;
plural in TypesFre;
prepCase in TypesFre;
prepositional in TypesFre;
relPronForms in TypesFre;
singular in TypesFre;
stressed in TypesFre;
unstressed in TypesFre;
vImper in TypesFre;
verbPres in TypesFre;
voyelle in TypesFre;
}
resource SyntaxRomance={flags modulesize=n0;}
resource Coordination=open Prelude in{flags modulesize=n1;param ListSize=TwoElem|ManyElem;
}
resource MorphoFre=open Predef,Prelude,TypesFre in{flags modulesize=n0;}
resource Prelude=open Predef in{flags modulesize=n2;param Bool=True|False;
param ENumber=E0|E1|E2|Emore;
}
resource Predef={flags modulesize=n1;param PBool=PTrue|PFalse;
}
resource TypesFre={flags modulesize=n18;param AForm=AF TypesFre.Gender TypesFre.Number|AA;
param Case=Nom|Acc|Gen|Dat;
param ClitType=Clit0|Clit1|Clit2|Clit3;
param Degree=Pos|Comp|Sup;
param Gender=Masc|Fem;
param Mode=Ind|Con;
param NPForm=Ton TypesFre.Case|Aton TypesFre.Case|Poss TypesFre.Number TypesFre.Gender;
param NumPersI=SgP2|PlP1|PlP2;
param Number=Sg|Pl;
param Person=P1|P2|P3;
param PronGen=PGen TypesFre.Gender|PNoGen;
param RelForm=RSimple TypesFre.Case|RComplex TypesFre.Gender TypesFre.Number TypesFre.Case;
param RelGen=RNoGen|RG TypesFre.Gender;
param TPart=PPres|PPasse TypesFre.Gender TypesFre.Number;
param TSubj=SPres|SImparf;
param Temps=Pres|Imparf|Passe|Futur;
param VF=VFin TypesFre.Mode TypesFre.Number TypesFre.Person|VImper TypesFre.NumPersI|VPart TypesFre.Gender TypesFre.Number|VInfin;
param VForm=Inf|Indic TypesFre.Temps TypesFre.Number TypesFre.Person|Cond TypesFre.Number TypesFre.Person|Subjo TypesFre.TSubj TypesFre.Number TypesFre.Person|Imper TypesFre.NumPersI|Part TypesFre.TPart;
}
resource TypesRomance={flags modulesize=n0;}
resource Resource={flags modulesize=n0;}
concrete MP3Ger of MP3=open StructuralGer,LexiconGer in{flags modulesize=n9;flags startcat=Move;lin CanPlay:MP3.Move=\Song@0->{s="kannst"++("du"++(Song@0.s!<TypesGer.NPCase<TypesGer.Acc>>++"spielen"))++"?";lock_Phr={}};"(kannst du Song_0 spielen)?";
lincat Move={s:Str;lock_Phr:{}}={s=str@0;lock_Phr={}};"Move";
lin Play:MP3.Move=\Song@0->{s="spiel"++Song@0.s!<TypesGer.NPCase<TypesGer.Acc>>++"!";lock_Phr={}};"(spiel Song_0)!";
lincat Song={s:(TypesGer.NPForm=>Str);n:TypesGer.Number;p:TypesGer.Person;pro:Prelude.Bool;lock_NP:{}}={s=table TypesGer.NPForm{(TypesGer.NPCase(TypesGer.Nom))(TypesGer.NPCase(TypesGer.Acc))(TypesGer.NPCase(TypesGer.Dat))(TypesGer.NPCase(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Gen))=>str@0};n=<TypesGer.Sg>;p=<TypesGer.P1>;pro=<Prelude.True>;lock_NP={}};"Song";
lin This:MP3.Song=\->{s=table TypesGer.NPForm{(TypesGer.NPCase(TypesGer.Dat))=>"diesem";(TypesGer.NPCase(TypesGer.Nom))(TypesGer.NPCase(TypesGer.Acc))(TypesGer.NPCase(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Gen))=>"dieses"};n=<TypesGer.Sg>;p=<TypesGer.P3>;pro=<Prelude.False>;lock_NP={}};"dieses";
lin ThisSong:MP3.Song=\->{s=table TypesGer.NPForm{(TypesGer.NPCase(TypesGer.Dat))=>"diesem"++"lied";(TypesGer.NPCase(TypesGer.Nom))(TypesGer.NPCase(TypesGer.Acc))=>"dieses"++"lied";(TypesGer.NPCase(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Gen))=>"dieses"++"liedes"};n=<TypesGer.Sg>;p=<TypesGer.P3>;pro=<Prelude.False>;lock_NP={}};"dieses lied";
lin WantPlay:MP3.Move=\Song@0->{s="ich"++("will"++(Song@0.s!<TypesGer.NPCase<TypesGer.Acc>>++"spielen"))++".";lock_Phr={}};"(ich will Song_0 spielen).";
lin WhichPlay:MP3.Move=\->{s="welches"++"lied"++("wird"++"gespielt")++"?";lock_Phr={}};"((welches lied)wird gespielt)?";
lin Yesterday:MP3.Song=\->{s=table TypesGer.NPForm{(TypesGer.NPCase(TypesGer.Nom))(TypesGer.NPCase(TypesGer.Acc))(TypesGer.NPCase(TypesGer.Dat))=>"Yesterday";(TypesGer.NPCase(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Masc))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Fem))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GSg(TypesGer.Neut))(TypesGer.Gen))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Nom))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Acc))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Dat))(TypesGer.NPPoss(TypesGer.GPl)(TypesGer.Gen))=>"Yesterdays"};n=<TypesGer.Sg>;p=<TypesGer.P3>;pro=<Prelude.False>;lock_NP={}};"Yesterday";
}
abstract MP3={flags modulesize=n9;fun CanPlay:(h_:MP3.Song)->MP3.Move={};
cat Move[]=;
fun Play:(h_:MP3.Song)->MP3.Move={};
cat Song[]=;
fun This:MP3.Song={};
fun ThisSong:MP3.Song={};
fun WantPlay:(h_:MP3.Song)->MP3.Move={};
fun WhichPlay:MP3.Move={};
fun Yesterday:MP3.Song={};
}
resource LexiconGer=open StructuralGer,ParadigmsGer in{flags modulesize=n0;}
resource ParadigmsGer=open Prelude,MorphoGer,SyntaxGer,ResourceGer in{flags modulesize=n0;}
resource ResourceGer=open Prelude,SyntaxGer in{flags modulesize=n0;}
resource SyntaxGer=MorphoGer**open Prelude,Coordination in{flags modulesize=n132;AForm data in TypesGer;
AMod data in TypesGer;
APred data in TypesGer;
Acc data in TypesGer;
AdjComp in TypesGer;
Adjective in TypesGer;
Adjf data in TypesGer;
Case data in TypesGer;
CommNoun in TypesGer;
Comp data in TypesGer;
Dat data in TypesGer;
Degree data in TypesGer;
Fem data in TypesGer;
GPl data in TypesGer;
GSg data in TypesGer;
Gen data in TypesGer;
GenNum data in TypesGer;
Gender data in TypesGer;
Inv data in TypesGer;
Main data in TypesGer;
Masc data in TypesGer;
NPCase data in TypesGer;
NPForm data in TypesGer;
NPPoss data in TypesGer;
Neut data in TypesGer;
Nom data in TypesGer;
Number data in TypesGer;
Order data in TypesGer;
P1 data in TypesGer;
P2 data in TypesGer;
P3 data in TypesGer;
Particle in TypesGer;
Person data in TypesGer;
Pl data in TypesGer;
Pos data in TypesGer;
Preposition in TypesGer;
ProPN in MorphoGer;
param QuestForm=DirQ|IndirQ;
RelPron in MorphoGer;
Sg data in TypesGer;
Strong data in TypesGer;
Sub data in TypesGer;
Sup data in TypesGer;
VForm data in TypesGer;
VImp data in TypesGer;
VImpfInd data in TypesGer;
VImpfSubj data in TypesGer;
VInd data in TypesGer;
VInf data in TypesGer;
VPart data in TypesGer;
VPresPart data in TypesGer;
VSubj data in TypesGer;
Verb in TypesGer;
Verbum in TypesGer;
Weak data in TypesGer;
aMod in MorphoGer;
adde in MorphoGer;
adjCompReg in MorphoGer;
adjCompReg3 in MorphoGer;
adjE in MorphoGer;
adjEr in MorphoGer;
adjGen in MorphoGer;
adjInvar in MorphoGer;
adjReg in MorphoGer;
artDef in MorphoGer;
artIndef in MorphoGer;
caselist in MorphoGer;
declN1 in MorphoGer;
declN1M in MorphoGer;
declN1e in MorphoGer;
declN1eM in MorphoGer;
declN1in in MorphoGer;
declN2 in MorphoGer;
declN2i in MorphoGer;
declN2in in MorphoGer;
declN2n in MorphoGer;
declN2u in MorphoGer;
declN2uF in MorphoGer;
declN3 in MorphoGer;
declN3u in MorphoGer;
declN3uS in MorphoGer;
declNs in MorphoGer;
gNumber in MorphoGer;
impe in MorphoGer;
mkAdjComp in MorphoGer;
mkAdjective in MorphoGer;
mkNoun in MorphoGer;
mkNoun2es in MorphoGer;
mkNoun2n in MorphoGer;
mkNoun2s in MorphoGer;
mkNoun2ses in MorphoGer;
mkNoun3 in MorphoGer;
mkNoun4 in MorphoGer;
mkPronPers in MorphoGer;
mkVerb in MorphoGer;
mkVerbSimple in MorphoGer;
mkVerbum in MorphoGer;
numGenNum in MorphoGer;
plural in TypesGer;
pronDu in MorphoGer;
pronEnding in MorphoGer;
pronEr in MorphoGer;
pronEs in MorphoGer;
pronIch in MorphoGer;
pronIhr in MorphoGer;
pronSSie in MorphoGer;
pronSie in MorphoGer;
pronSiePl in MorphoGer;
pronWir in MorphoGer;
regVerb in MorphoGer;
relPron in MorphoGer;
singular in TypesGer;
verbGeben in MorphoGer;
verbHaben in MorphoGer;
verbSein in MorphoGer;
verbWerden in MorphoGer;
verbumAux in MorphoGer;
verbumDürfen in MorphoGer;
verbumGratulieren in MorphoGer;
verbumHaben in MorphoGer;
verbumKönnen in MorphoGer;
verbumMögen in MorphoGer;
verbumMüssen in MorphoGer;
verbumSein in MorphoGer;
verbumSollen in MorphoGer;
verbumStrongLaufen in MorphoGer;
verbumStrongSehen in MorphoGer;
verbumStrongSingen in MorphoGer;
verbumWeak in MorphoGer;
verbumWerden in MorphoGer;
verbumWissen in MorphoGer;
verbumWollen in MorphoGer;
}
resource MorphoGer=TypesGer**open Predef,Prelude in{flags modulesize=n54;AForm data in TypesGer;
AMod data in TypesGer;
APred data in TypesGer;
Acc data in TypesGer;
AdjComp in TypesGer;
Adjective in TypesGer;
Adjf data in TypesGer;
Case data in TypesGer;
CommNoun in TypesGer;
Comp data in TypesGer;
Dat data in TypesGer;
Degree data in TypesGer;
Fem data in TypesGer;
GPl data in TypesGer;
GSg data in TypesGer;
Gen data in TypesGer;
GenNum data in TypesGer;
Gender data in TypesGer;
Inv data in TypesGer;
Main data in TypesGer;
Masc data in TypesGer;
NPCase data in TypesGer;
NPForm data in TypesGer;
NPPoss data in TypesGer;
Neut data in TypesGer;
Nom data in TypesGer;
Number data in TypesGer;
Order data in TypesGer;
P1 data in TypesGer;
P2 data in TypesGer;
P3 data in TypesGer;
Particle in TypesGer;
Person data in TypesGer;
Pl data in TypesGer;
Pos data in TypesGer;
Preposition in TypesGer;
Sg data in TypesGer;
Strong data in TypesGer;
Sub data in TypesGer;
Sup data in TypesGer;
VForm data in TypesGer;
VImp data in TypesGer;
VImpfInd data in TypesGer;
VImpfSubj data in TypesGer;
VInd data in TypesGer;
VInf data in TypesGer;
VPart data in TypesGer;
VPresPart data in TypesGer;
VSubj data in TypesGer;
Verb in TypesGer;
Verbum in TypesGer;
Weak data in TypesGer;
plural in TypesGer;
singular in TypesGer;
}
resource TypesGer=open Prelude in{flags modulesize=n11;param AForm=APred|AMod TypesGer.Adjf TypesGer.GenNum TypesGer.Case;
param Adjf=Strong|Weak;
param Case=Nom|Acc|Dat|Gen;
param Degree=Pos|Comp|Sup;
param GenNum=GSg TypesGer.Gender|GPl;
param Gender=Masc|Fem|Neut;
param NPForm=NPCase TypesGer.Case|NPPoss TypesGer.GenNum TypesGer.Case;
param Number=Sg|Pl;
param Order=Main|Inv|Sub;
param Person=P1|P2|P3;
param VForm=VInf|VInd TypesGer.Number TypesGer.Person|VImp TypesGer.Number|VSubj TypesGer.Number TypesGer.Person|VImpfInd TypesGer.Number TypesGer.Person|VImpfSubj TypesGer.Number TypesGer.Person|VPresPart TypesGer.AForm|VPart TypesGer.AForm;
}