From 51f622a5cd93dd5c048fad797c9b63f7fcebabff Mon Sep 17 00:00:00 2001 From: aarne Date: Wed, 14 Dec 2005 16:51:25 +0000 Subject: [PATCH] mp3.gfcm --- examples/mp3/mp3.gfcm | 840 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 840 insertions(+) create mode 100644 examples/mp3/mp3.gfcm diff --git a/examples/mp3/mp3.gfcm b/examples/mp3/mp3.gfcm new file mode 100644 index 000000000..83ea7451f --- /dev/null +++ b/examples/mp3/mp3.gfcm @@ -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!))++"?";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!++"!";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=;p=;lock_NP={}};"Song"; +lin This:MP3.Song=\->{s=table TypesEng.NPForm{(TypesEng.NomP)(TypesEng.AccP)(TypesEng.GenSP)=>"this";(TypesEng.GenP)=>"this's"};n=;p=;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=;p=;lock_NP={}};"this song"; +lin WantPlay:MP3.Move=\Song@0->{s="I"++("want"++("to"++("play"++Song@0.s!)))++".";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=;p=;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!))++"?";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!++"!";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=;n=;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=;n=;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=;n=;lock_NP={}};"(den här)låten"; +lin WantPlay:MP3.Move=\Song@0->{s="jag"++("vill"++("spela"++Song@0.s!))++".";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=;n=;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!>++"jouer";(Prelude.False)=>"jouer"++Song@0.s!>}!(table Prelude.Bool{(Prelude.False)=>;(Prelude.True)=>}!(table TypesFre.ClitType{(TypesFre.Clit0)=>;(TypesFre.Clit1)(TypesFre.Clit2)(TypesFre.Clit3)=>}!(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!>++"joue";(Prelude.False)=>"joue"++Song@0.s!>}!(table Prelude.Bool{(Prelude.False)=>;(Prelude.True)=>}!(table TypesFre.ClitType{(TypesFre.Clit0)=>;(TypesFre.Clit1)(TypesFre.Clit2)(TypesFre.Clit3)=>}!(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=>;n=;p=;c=;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=>;n=;p=;c=;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=>;n=;p=;c=;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!>++"jouer";(Prelude.False)=>"jouer"++Song@0.s!>}!(table Prelude.Bool{(Prelude.False)=>;(Prelude.True)=>}!(table TypesFre.ClitType{(TypesFre.Clit0)=>;(TypesFre.Clit1)(TypesFre.Clit2)(TypesFre.Clit3)=>}!(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=>;n=;p=;c=;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!>++"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!>++"!";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=;p=;pro=;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=;p=;pro=;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=;p=;pro=;lock_NP={}};"dieses lied"; +lin WantPlay:MP3.Move=\Song@0->{s="ich"++("will"++(Song@0.s!>++"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=;p=;pro=;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; +}