changed names of resource-1.3; added a note on homepage on release

This commit is contained in:
aarne
2008-06-25 16:54:35 +00:00
parent 7d721eb16e
commit c5c6d13546
1729 changed files with 113 additions and 32 deletions

View File

@@ -0,0 +1,6 @@
interface Lexicon = open Structural in {
oper
play : TV ;
song : N ;
}

View File

@@ -0,0 +1,9 @@
instance LexiconEng of Lexicon = open StructuralEng, ParadigmsEng in {
oper
play = tvDir (vReg "play") ;
song = nReg "song" nonhuman ;
yesterday = npReg "Yesterday" ;
}

View File

@@ -0,0 +1,9 @@
instance LexiconFin of Lexicon = open StructuralFin, ParadigmsFin in {
oper
play = tvDir (vKattaa "soittaa" "soitan") ;
song = nRae "kappale" "kappaleena" ;
yesterday = UsePN (mkPN (nPuu "Yesterday")) ;
}

View File

@@ -0,0 +1,9 @@
instance LexiconFre of Lexicon = open StructuralFre, ParadigmsFre in {
oper
play = tvDir (vAimer "jouer") ;
song = nReg "chanson" feminine ;
yesterday = mkNP "Yesterday" masculine ;
}

View File

@@ -0,0 +1,8 @@
instance LexiconGer of Lexicon = open StructuralGer, ParadigmsGer in {
oper
play = tvDir (vWeak "spielen") ;
song = nBuch "lied" "lieder" ;
yesterday = npReg "Yesterday" ;
}

View File

@@ -0,0 +1,9 @@
instance LexiconSwe of Lexicon = open StructuralSwe, ParadigmsSwe in {
oper
play = tvDir (vKoka "spela") ;
song = nBil "låt" ;
yesterday = npReg "Yesterday" neutrum ;
}

19
old-examples/mp3/MP3.gf Normal file
View File

@@ -0,0 +1,19 @@
abstract MP3 = {
cat
Move ;
Song ;
fun
Play : Song -> Move ;
CanPlay : Song -> Move ;
WantPlay : Song -> Move ;
WhichPlay : Move ;
ThisSong : Song ;
This : Song ;
Yesterday : Song ;
---- MkSong : String -> Song ;
}

View File

@@ -0,0 +1,5 @@
--# -path=.:resource-0.6/english:resource-0.6/abstract:prelude
concrete MP3Eng of MP3 = MP3I with
(Structural = StructuralEng),
(Lexicon = LexiconEng) ;

View File

@@ -0,0 +1,5 @@
--# -path=.:resource-0.6/finnish:resource-0.6/abstract:prelude
concrete MP3Fin of MP3 = MP3I with
(Structural = StructuralFin),
(Lexicon = LexiconFin) ;

View File

@@ -0,0 +1,5 @@
--# -path=.:resource-0.6/french:resource-0.6/romance:resource-0.6/abstract:prelude
concrete MP3Fre of MP3 = MP3I with
(Structural = StructuralFre),
(Lexicon = LexiconFre) ;

View File

@@ -0,0 +1,5 @@
--# -path=.:resource-0.6/german:resource-0.6/abstract:prelude
concrete MP3Ger of MP3 = MP3I with
(Structural = StructuralGer),
(Lexicon = LexiconGer) ;

24
old-examples/mp3/MP3I.gf Normal file
View File

@@ -0,0 +1,24 @@
--# -path=.:resource-0.6/english:resource-0.6/abstract:prelude
incomplete concrete MP3I of MP3 = open Structural, Lexicon in {
flags startcat=Move ;
lincat
Move = Phr ;
Song = NP ;
lin
Play song = ImperOne (ImperVP (PosVG (PredTV play song))) ;
CanPlay song = QuestPhrase (QuestVP ThouNP (PosVG (PredVV CanVV (PredTV play song)))) ;
WantPlay song = IndicPhrase (PredVP INP (PosVG (PredVV WantVV (PredTV play song)))) ;
WhichPlay = QuestPhrase (IntVP (NounIPOne (UseN song)) (PosVG (PredPassV (VTrans play)))) ;
ThisSong = DetNP ThisDet (UseN song) ;
This = ThisNP ;
Yesterday = yesterday ;
---- MkSong : String -> Song ;
}

View File

@@ -0,0 +1,5 @@
--# -path=.:resource-0.6/swedish:resource-0.6/abstract:prelude
concrete MP3Swe of MP3 = MP3I with
(Structural = StructuralSwe),
(Lexicon = LexiconSwe) ;

View File

@@ -0,0 +1,117 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META NAME="generator" CONTENT="http://txt2tags.sf.net">
<TITLE>Using the GF resource grammar library in multilingual grammars: an example</TITLE>
</HEAD><BODY BGCOLOR="white" TEXT="black">
<P ALIGN="center"><CENTER><H1>Using the GF resource grammar library in multilingual grammars: an example</H1>
<FONT SIZE="4">
<I>Author: Aarne Ranta &lt;aarne (at) cs.chalmers.se&gt;</I><BR>
Last update: Fri Dec 16 14:30:57 2005
</FONT></CENTER>
<P></P>
<HR NOSHADE SIZE=1>
<P></P>
<UL>
<LI><A HREF="#toc1">Quick try</A>
<LI><A HREF="#toc2">Structure</A>
<LI><A HREF="#toc3">Resource library version</A>
</UL>
<P></P>
<HR NOSHADE SIZE=1>
<P></P>
<P>
This document describes the contents of the directory
<A HREF="http://www.cs.chalmers.se/~aarne/GF/examples/mp3/"><CODE>GF/examples/mp3</CODE></A>.
</P>
<P>
This directory contains a small example of a dialogue system
grammar built by using the GF resource grammar library. Its sole
purpose is to demonstrate this usage, i.e.
</P>
<UL>
<LI>how the resource API is used to define concrete syntax
<P></P>
<LI>how to divide the grammar into modules
</UL>
<P>
Thus it is not intended to be (even a part of) a really useful
system.
</P>
<A NAME="toc1"></A>
<H2>Quick try</H2>
<P>
To try out the grammar, do for example
</P>
<PRE>
gf mk3.gfcm -- start GF
&gt; gr | l -multi -- random generate
&gt; p -tr "which song is played ?" | l -multi -- parse and translate
&gt; gt -tr | l -lang=MP3Swe -- generate Swedish "treebank"
&gt; si -tr | p | l -multi -- translate speech input
[say:] I want to play Yesterday
</PRE>
<P>
The last command only works if you have installed
<A HREF="http://mi.eng.cam.ac.uk/~sjy/software.htm">ATK</A> and compiled
<A HREF="http://www.cs.chalmers.se/Cs/Research/Language-technology/darcs/GF/doc/darcs.html">GF version 14/12/2005</A>
or later.
</P>
<A NAME="toc2"></A>
<H2>Structure</H2>
<P>
The directory consists of the following grammars:
</P>
<UL>
<LI><A HREF="MP3.gf"><CODE>MP3.gf</CODE></A> the main abstract syntax
<LI><A HREF="MP3I.gf"><CODE>MP3I.gf</CODE></A> functor implementation of the main abstract
<LI><A HREF="MP3Eng.gf"><CODE>MP3Eng.gf</CODE></A> English instantiation of the functor
<LI><A HREF="MP3Fin.gf"><CODE>MP3Fin.gf</CODE></A> Finnish instantiation of the functor (buggy)
<LI><A HREF="MP3Fre.gf"><CODE>MP3Fre.gf</CODE></A> French instantiation of the functor
<LI><A HREF="MP3Ger.gf"><CODE>MP3Ger.gf</CODE></A> German instantiation of the functor
<LI><A HREF="MP3Swe.gf"><CODE>MP3Swe.gf</CODE></A> Swedish instantiation of the functor
<LI><A HREF="Lexicon.gf"><CODE>Lexicon.gf</CODE></A> the interface on which <CODE>MP3I.gf</CODE> depends
<LI><A HREF="LexiconEng.gf"><CODE>LexiconEng.gf</CODE></A> English instance of the interface
<LI><A HREF="LexiconFin.gf"><CODE>LexiconFin.gf</CODE></A> Finnish instance of the interface
<LI><A HREF="LexiconFre.gf"><CODE>LexiconFre.gf</CODE></A> French instance of the interface
<LI><A HREF="LexiconGer.gf"><CODE>LexiconGer.gf</CODE></A> German instance of the interface
<LI><A HREF="LexiconSwe.gf"><CODE>LexiconSwe.gf</CODE></A> Swedish instance of the interface
</UL>
<P>
The main linguistic content is in the functor <CODE>MP3I</CODE> and the
instances of the <CODE>Lexicon</CODE> interface.
</P>
<P>
The way in which the implementation is divided to a functor
and an interface depending on it should work as a model for
building resource grammar applications in general.
</P>
<P>
In order to compile the grammars from source, you must set the
environment variable <CODE>GF_LIB_PATH</CODE> to point at the root
of your GF library, e.g. in the bash shell,
</P>
<PRE>
export GF_LIB_PATH=/usr/local/lib/GF/
</PRE>
<P></P>
<A NAME="toc3"></A>
<H2>Resource library version</H2>
<P>
The example builds on resource v. 0.6. The reason for not building
on a later version is that German is not yet implemented for them.
The example will probably be migrated to v. 1.0 soon. The new resource
version will fix the bugs in the Finnish implementation.
</P>
<!-- html code generated by txt2tags 2.0 (http://txt2tags.sf.net) -->
<!-- cmdline: txt2tags -\-toc mp3-resource.txt -->
</BODY></HTML>

View File

@@ -0,0 +1,90 @@
Using the GF resource grammar library in multilingual grammars: an example
Author: Aarne Ranta <aarne (at) cs.chalmers.se>
Last update: %%date(%c)
% NOTE: this is a txt2tags file.
% Create an html file from this file using:
% txt2tags --toc mp3-resource.txt
%!target:html
This document describes the contents of the directory
[``GF/examples/mp3`` http://www.cs.chalmers.se/~aarne/GF/examples/mp3/].
This directory contains a small example of a dialogue system
grammar built by using the GF resource grammar library. Its sole
purpose is to demonstrate this usage, i.e.
- how the resource API is used to define concrete syntax
- how to divide the grammar into modules
Thus it is not intended to be (even a part of) a really useful
system.
==Quick try==
To try out the grammar, do for example
```
gf mk3.gfcm -- start GF
> gr | l -multi -- random generate
> p -tr "which song is played ?" | l -multi -- parse and translate
> gt -tr | l -lang=MP3Swe -- generate Swedish "treebank"
> si -tr | p | l -multi -- translate speech input
[say:] I want to play Yesterday
```
The last command only works if you have installed the
[ATK http://mi.eng.cam.ac.uk/~sjy/software.htm] speech recognition library
and compiled
[GF version 14/12/2005 http://www.cs.chalmers.se/Cs/Research/Language-technology/darcs/GF/doc/darcs.html]
or later, with support for ATK enabled.
==Structure==
The directory consists of the following grammars:
- [``MP3.gf`` MP3.gf] the main abstract syntax
- [``MP3I.gf`` MP3I.gf] functor implementation of the main abstract
- [``MP3Eng.gf`` MP3Eng.gf] English instantiation of the functor
- [``MP3Fin.gf`` MP3Fin.gf] Finnish instantiation of the functor (buggy)
- [``MP3Fre.gf`` MP3Fre.gf] French instantiation of the functor
- [``MP3Ger.gf`` MP3Ger.gf] German instantiation of the functor
- [``MP3Swe.gf`` MP3Swe.gf] Swedish instantiation of the functor
- [``Lexicon.gf`` Lexicon.gf] the interface on which ``MP3I.gf`` depends
- [``LexiconEng.gf`` LexiconEng.gf] English instance of the interface
- [``LexiconFin.gf`` LexiconFin.gf] Finnish instance of the interface
- [``LexiconFre.gf`` LexiconFre.gf] French instance of the interface
- [``LexiconGer.gf`` LexiconGer.gf] German instance of the interface
- [``LexiconSwe.gf`` LexiconSwe.gf] Swedish instance of the interface
The main linguistic content is in the functor ``MP3I`` and the
instances of the ``Lexicon`` interface.
The way in which the implementation is divided to a functor
and an interface depending on it should work as a model for
building resource grammar applications in general.
In order to compile the grammars from source, you must set the
environment variable ``GF_LIB_PATH`` to point at the root
of your GF library, e.g. in the bash shell,
``` export GF_LIB_PATH=/usr/local/lib/GF/
==Resource library version==
The example builds on resource v. 0.6. The reason for not building
on a later version is that German is not yet implemented for them.
The example will probably be migrated to v. 1.0 soon. The new resource
version will fix the bugs in the Finnish implementation.

840
old-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;
}