summaryrefslogtreecommitdiff
path: root/examples/mp3/mp3.gfcm
blob: 83ea7451f117b7eeff75c32c13b3381b35f232ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
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;
}