summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn J. Camilleri <john@digitalgrammars.com>2021-07-01 09:22:57 +0200
committerJohn J. Camilleri <john@digitalgrammars.com>2021-07-01 09:22:57 +0200
commit32be75ca7dbba046005b9ba06bdaa5e8b5f38ab4 (patch)
tree66a63f97f6d4eb91518be4e22d41720d20eee632
parent587004f985b9a0172b531abd76253a224b8cf77d (diff)
Reduce Phrasebook grammars in testsuite/canonical to bare minimum
-rw-r--r--testsuite/canonical/gold/PhrasebookGer.gf251
-rw-r--r--testsuite/canonical/grammars/Greetings.gf28
-rw-r--r--testsuite/canonical/grammars/GreetingsBul.gf31
-rw-r--r--testsuite/canonical/grammars/GreetingsGer.gf31
-rw-r--r--testsuite/canonical/grammars/Phrasebook.gf11
-rw-r--r--testsuite/canonical/grammars/PhrasebookBul.gf28
-rw-r--r--testsuite/canonical/grammars/PhrasebookGer.gf12
-rw-r--r--testsuite/canonical/grammars/Sentences.gf222
-rw-r--r--testsuite/canonical/grammars/SentencesBul.gf54
-rw-r--r--testsuite/canonical/grammars/SentencesGer.gf50
-rw-r--r--testsuite/canonical/grammars/SentencesI.gf302
-rw-r--r--testsuite/canonical/grammars/Words.gf254
-rw-r--r--testsuite/canonical/grammars/WordsBul.gf305
-rw-r--r--testsuite/canonical/grammars/WordsGer.gf262
-rwxr-xr-xtestsuite/canonical/run.sh32
15 files changed, 313 insertions, 1560 deletions
diff --git a/testsuite/canonical/gold/PhrasebookGer.gf b/testsuite/canonical/gold/PhrasebookGer.gf
new file mode 100644
index 000000000..22d750b78
--- /dev/null
+++ b/testsuite/canonical/gold/PhrasebookGer.gf
@@ -0,0 +1,251 @@
+concrete PhrasebookGer of Phrasebook = {
+param Prelude_Bool = Prelude_False | Prelude_True;
+param ResGer_Agr = ResGer_Ag ResGer_Gender ParamX_Number ParamX_Person;
+param ParamX_Number = ParamX_Sg | ParamX_Pl;
+param ParamX_Person = ParamX_P1 | ParamX_P2 | ParamX_P3;
+param ResGer_Gender = ResGer_Masc | ResGer_Fem | ResGer_Neutr;
+param ResGer_Control = ResGer_SubjC | ResGer_ObjC | ResGer_NoC;
+param ResGer_PCase = ResGer_NPC ResGer_Case | ResGer_NPP ResGer_CPrep;
+param ResGer_CPrep =
+ ResGer_CAnDat | ResGer_CInAcc | ResGer_CInDat | ResGer_CZuDat |
+ ResGer_CVonDat;
+param ResGer_Case = ResGer_Nom | ResGer_Acc | ResGer_Dat | ResGer_Gen;
+param ResGer_VAux = ResGer_VHaben | ResGer_VSein;
+param ResGer_VForm =
+ ResGer_VInf Prelude_Bool | ResGer_VFin Prelude_Bool ResGer_VFormFin |
+ ResGer_VImper ParamX_Number | ResGer_VPresPart ResGer_AForm |
+ ResGer_VPastPart ResGer_AForm;
+param ResGer_AForm = ResGer_APred | ResGer_AMod ResGer_GenNum ResGer_Case;
+param ResGer_GenNum = ResGer_GSg ResGer_Gender | ResGer_GPl;
+param ResGer_VFormFin =
+ ResGer_VPresInd ParamX_Number ParamX_Person |
+ ResGer_VPresSubj ParamX_Number ParamX_Person;
+param ResGer_VType = ResGer_VAct | ResGer_VRefl ResGer_Case;
+lincat PlaceKind = {s : Str};
+ VerbPhrase =
+ {s :
+ {s : ResGer_VForm => Str; aux : ResGer_VAux; particle : Str;
+ prefix : Str; vtype : ResGer_VType};
+ a1 : Str; a2 : Str; adj : Str; ext : Str;
+ inf : {s : Str; ctrl : ResGer_Control; isAux : Prelude_Bool};
+ infExt : Str; isAux : Prelude_Bool;
+ nn :
+ ResGer_Agr =>
+ {p1 : Str; p2 : Str; p3 : Str; p4 : Str; p5 : Str; p6 : Str};
+ subjc :
+ {s : Str; c : ResGer_PCase; isPrep : Prelude_Bool; s2 : Str}};
+lin VRead =
+ {s =
+ {s =
+ table {ResGer_VInf Prelude_False => "lesen";
+ ResGer_VInf Prelude_True => "zu" ++ "lesen";
+ ResGer_VFin Prelude_False
+ (ResGer_VPresInd ParamX_Sg ParamX_P1) =>
+ "lese";
+ ResGer_VFin Prelude_False
+ (ResGer_VPresInd ParamX_Sg ParamX_P2) =>
+ "liest";
+ ResGer_VFin Prelude_False
+ (ResGer_VPresInd ParamX_Sg ParamX_P3) =>
+ "liest";
+ ResGer_VFin Prelude_False
+ (ResGer_VPresInd ParamX_Pl ParamX_P1) =>
+ "lesen";
+ ResGer_VFin Prelude_False
+ (ResGer_VPresInd ParamX_Pl ParamX_P2) =>
+ "lest";
+ ResGer_VFin Prelude_False
+ (ResGer_VPresInd ParamX_Pl ParamX_P3) =>
+ "lesen";
+ ResGer_VFin Prelude_False
+ (ResGer_VPresSubj ParamX_Sg ParamX_P1) =>
+ "lese";
+ ResGer_VFin Prelude_False
+ (ResGer_VPresSubj ParamX_Sg ParamX_P2) =>
+ "lesest";
+ ResGer_VFin Prelude_False
+ (ResGer_VPresSubj ParamX_Sg ParamX_P3) =>
+ "lese";
+ ResGer_VFin Prelude_False
+ (ResGer_VPresSubj ParamX_Pl ParamX_P1) =>
+ "lesen";
+ ResGer_VFin Prelude_False
+ (ResGer_VPresSubj ParamX_Pl ParamX_P2) =>
+ "leset";
+ ResGer_VFin Prelude_False
+ (ResGer_VPresSubj ParamX_Pl ParamX_P3) =>
+ "lesen";
+ ResGer_VFin Prelude_True
+ (ResGer_VPresInd ParamX_Sg ParamX_P1) =>
+ "lese";
+ ResGer_VFin Prelude_True
+ (ResGer_VPresInd ParamX_Sg ParamX_P2) =>
+ "liest";
+ ResGer_VFin Prelude_True
+ (ResGer_VPresInd ParamX_Sg ParamX_P3) =>
+ "liest";
+ ResGer_VFin Prelude_True
+ (ResGer_VPresInd ParamX_Pl ParamX_P1) =>
+ "lesen";
+ ResGer_VFin Prelude_True
+ (ResGer_VPresInd ParamX_Pl ParamX_P2) =>
+ "lest";
+ ResGer_VFin Prelude_True
+ (ResGer_VPresInd ParamX_Pl ParamX_P3) =>
+ "lesen";
+ ResGer_VFin Prelude_True
+ (ResGer_VPresSubj ParamX_Sg ParamX_P1) =>
+ "lese";
+ ResGer_VFin Prelude_True
+ (ResGer_VPresSubj ParamX_Sg ParamX_P2) =>
+ "lesest";
+ ResGer_VFin Prelude_True
+ (ResGer_VPresSubj ParamX_Sg ParamX_P3) =>
+ "lese";
+ ResGer_VFin Prelude_True
+ (ResGer_VPresSubj ParamX_Pl ParamX_P1) =>
+ "lesen";
+ ResGer_VFin Prelude_True
+ (ResGer_VPresSubj ParamX_Pl ParamX_P2) =>
+ "leset";
+ ResGer_VFin Prelude_True
+ (ResGer_VPresSubj ParamX_Pl ParamX_P3) =>
+ "lesen";
+ ResGer_VImper ParamX_Sg => "les";
+ ResGer_VImper ParamX_Pl => "lest";
+ ResGer_VPresPart ResGer_APred => "lesend";
+ ResGer_VPresPart (ResGer_AMod (ResGer_GSg ResGer_Masc)
+ ResGer_Nom) =>
+ "lesender";
+ ResGer_VPresPart (ResGer_AMod (ResGer_GSg ResGer_Masc)
+ ResGer_Acc) =>
+ "lesenden";
+ ResGer_VPresPart (ResGer_AMod (ResGer_GSg ResGer_Masc)
+ ResGer_Dat) =>
+ "lesendem";
+ ResGer_VPresPart (ResGer_AMod (ResGer_GSg ResGer_Masc)
+ ResGer_Gen) =>
+ "lesenden";
+ ResGer_VPresPart (ResGer_AMod (ResGer_GSg ResGer_Fem)
+ ResGer_Nom) =>
+ "lesende";
+ ResGer_VPresPart (ResGer_AMod (ResGer_GSg ResGer_Fem)
+ ResGer_Acc) =>
+ "lesende";
+ ResGer_VPresPart (ResGer_AMod (ResGer_GSg ResGer_Fem)
+ ResGer_Dat) =>
+ "lesender";
+ ResGer_VPresPart (ResGer_AMod (ResGer_GSg ResGer_Fem)
+ ResGer_Gen) =>
+ "lesender";
+ ResGer_VPresPart (ResGer_AMod (ResGer_GSg ResGer_Neutr)
+ ResGer_Nom) =>
+ "lesendes";
+ ResGer_VPresPart (ResGer_AMod (ResGer_GSg ResGer_Neutr)
+ ResGer_Acc) =>
+ "lesendes";
+ ResGer_VPresPart (ResGer_AMod (ResGer_GSg ResGer_Neutr)
+ ResGer_Dat) =>
+ "lesendem";
+ ResGer_VPresPart (ResGer_AMod (ResGer_GSg ResGer_Neutr)
+ ResGer_Gen) =>
+ "lesenden";
+ ResGer_VPresPart (ResGer_AMod ResGer_GPl ResGer_Nom) =>
+ "lesende";
+ ResGer_VPresPart (ResGer_AMod ResGer_GPl ResGer_Acc) =>
+ "lesende";
+ ResGer_VPresPart (ResGer_AMod ResGer_GPl ResGer_Dat) =>
+ "lesenden";
+ ResGer_VPresPart (ResGer_AMod ResGer_GPl ResGer_Gen) =>
+ "lesender";
+ ResGer_VPastPart ResGer_APred => "gelesen";
+ ResGer_VPastPart (ResGer_AMod (ResGer_GSg ResGer_Masc)
+ ResGer_Nom) =>
+ "gelesener";
+ ResGer_VPastPart (ResGer_AMod (ResGer_GSg ResGer_Masc)
+ ResGer_Acc) =>
+ "gelesenen";
+ ResGer_VPastPart (ResGer_AMod (ResGer_GSg ResGer_Masc)
+ ResGer_Dat) =>
+ "gelesenem";
+ ResGer_VPastPart (ResGer_AMod (ResGer_GSg ResGer_Masc)
+ ResGer_Gen) =>
+ "gelesenen";
+ ResGer_VPastPart (ResGer_AMod (ResGer_GSg ResGer_Fem)
+ ResGer_Nom) =>
+ "gelesene";
+ ResGer_VPastPart (ResGer_AMod (ResGer_GSg ResGer_Fem)
+ ResGer_Acc) =>
+ "gelesene";
+ ResGer_VPastPart (ResGer_AMod (ResGer_GSg ResGer_Fem)
+ ResGer_Dat) =>
+ "gelesener";
+ ResGer_VPastPart (ResGer_AMod (ResGer_GSg ResGer_Fem)
+ ResGer_Gen) =>
+ "gelesener";
+ ResGer_VPastPart (ResGer_AMod (ResGer_GSg ResGer_Neutr)
+ ResGer_Nom) =>
+ "gelesenes";
+ ResGer_VPastPart (ResGer_AMod (ResGer_GSg ResGer_Neutr)
+ ResGer_Acc) =>
+ "gelesenes";
+ ResGer_VPastPart (ResGer_AMod (ResGer_GSg ResGer_Neutr)
+ ResGer_Dat) =>
+ "gelesenem";
+ ResGer_VPastPart (ResGer_AMod (ResGer_GSg ResGer_Neutr)
+ ResGer_Gen) =>
+ "gelesenen";
+ ResGer_VPastPart (ResGer_AMod ResGer_GPl ResGer_Nom) =>
+ "gelesene";
+ ResGer_VPastPart (ResGer_AMod ResGer_GPl ResGer_Acc) =>
+ "gelesene";
+ ResGer_VPastPart (ResGer_AMod ResGer_GPl ResGer_Dat) =>
+ "gelesenen";
+ ResGer_VPastPart (ResGer_AMod ResGer_GPl ResGer_Gen) =>
+ "gelesener"};
+ aux = ResGer_VHaben; particle = ""; prefix = "";
+ vtype = ResGer_VAct};
+ a1 = ""; a2 = ""; adj = "";
+ ext = ""; inf = {s = ""; ctrl = ResGer_NoC; isAux = Prelude_True};
+ infExt = ""; isAux = Prelude_False;
+ nn =
+ table {ResGer_Ag ResGer_Masc ParamX_Sg ParamX_P1 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Masc ParamX_Sg ParamX_P2 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Masc ParamX_Sg ParamX_P3 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Masc ParamX_Pl ParamX_P1 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Masc ParamX_Pl ParamX_P2 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Masc ParamX_Pl ParamX_P3 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Fem ParamX_Sg ParamX_P1 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Fem ParamX_Sg ParamX_P2 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Fem ParamX_Sg ParamX_P3 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Fem ParamX_Pl ParamX_P1 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Fem ParamX_Pl ParamX_P2 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Fem ParamX_Pl ParamX_P3 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Neutr ParamX_Sg ParamX_P1 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Neutr ParamX_Sg ParamX_P2 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Neutr ParamX_Sg ParamX_P3 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Neutr ParamX_Pl ParamX_P1 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Neutr ParamX_Pl ParamX_P2 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""};
+ ResGer_Ag ResGer_Neutr ParamX_Pl ParamX_P3 =>
+ {p1 = ""; p2 = ""; p3 = ""; p4 = ""; p5 = ""; p6 = ""}};
+ subjc =
+ {s = ""; c = ResGer_NPC ResGer_Nom; isPrep = Prelude_False;
+ s2 = ""}};
+} \ No newline at end of file
diff --git a/testsuite/canonical/grammars/Greetings.gf b/testsuite/canonical/grammars/Greetings.gf
deleted file mode 100644
index 580b1560b..000000000
--- a/testsuite/canonical/grammars/Greetings.gf
+++ /dev/null
@@ -1,28 +0,0 @@
-abstract Greetings = Sentences [Greeting] ** {
-
-fun
- GBye : Greeting ;
- GCheers : Greeting ;
- GDamn : Greeting ;
- GExcuse, GExcusePol : Greeting ;
- GGoodDay : Greeting ;
- GGoodEvening : Greeting ;
- GGoodMorning : Greeting ;
- GGoodNight : Greeting ;
- GGoodbye : Greeting ;
- GHello : Greeting ;
- GHelp : Greeting ;
- GHowAreYou : Greeting ;
- GLookOut : Greeting ;
- GNiceToMeetYou : Greeting ;
- GPleaseGive, GPleaseGivePol : Greeting ;
- GSeeYouSoon : Greeting ;
- GSorry, GSorryPol : Greeting ;
- GThanks : Greeting ;
- GTheCheck : Greeting ;
- GCongratulations : Greeting ;
- GHappyBirthday : Greeting ;
- GGoodLuck : Greeting ;
- GWhatTime : Greeting ;
-
-}
diff --git a/testsuite/canonical/grammars/GreetingsBul.gf b/testsuite/canonical/grammars/GreetingsBul.gf
deleted file mode 100644
index f271d7717..000000000
--- a/testsuite/canonical/grammars/GreetingsBul.gf
+++ /dev/null
@@ -1,31 +0,0 @@
-concrete GreetingsBul of Greetings = SentencesBul [Greeting,mkGreeting] ** open Prelude in {
-
-flags
- coding=utf8;
-
-lin
- GBye = mkGreeting "чао" ;
- GCheers = mkGreeting "наздраве" ;
- GDamn = mkGreeting "по дяволите" ;
- GExcuse, GExcusePol = mkGreeting "извинете" ;
- GGoodDay = mkGreeting "добър ден" ;
- GGoodEvening = mkGreeting "добра вечер" ;
- GGoodMorning = mkGreeting "добро утро" ;
- GGoodNight = mkGreeting "лека нощ" ;
- GGoodbye = mkGreeting "довиждане" ;
- GHello = mkGreeting "здравей" ;
- GHelp = mkGreeting "помощ" ;
- GHowAreYou = mkGreeting "как си" ;
- GLookOut = mkGreeting "погледни" ;
- GNiceToMeetYou = mkGreeting "радвам се да се видим" ;
- GPleaseGive, GPleaseGivePol = mkGreeting "моля" ;
- GSeeYouSoon = mkGreeting "до скоро" ;
- GSorry, GSorryPol = mkGreeting "извинете" ;
- GThanks = mkGreeting "благодаря ти" ;
- GTheCheck = mkGreeting "сметката" ;
- GCongratulations = mkGreeting "поздравления";
- GHappyBirthday = mkGreeting "честит рожден ден" ;
- GGoodLuck = mkGreeting "успех" ;
- GWhatTime = mkGreeting "колко е часът" ;
-
-}
diff --git a/testsuite/canonical/grammars/GreetingsGer.gf b/testsuite/canonical/grammars/GreetingsGer.gf
deleted file mode 100644
index f027d70ac..000000000
--- a/testsuite/canonical/grammars/GreetingsGer.gf
+++ /dev/null
@@ -1,31 +0,0 @@
---# -path=.:abstract:prelude:german:api:common
---# -coding=latin1
-concrete GreetingsGer of Greetings = SentencesGer [Greeting,mkGreeting] ** open Prelude in {
-
-lin
- GBye = mkGreeting "tsch" ;
- GCheers = mkGreeting "zum Wohl" ;
- GDamn = mkGreeting "verdammt" ;
- GExcuse, GExcusePol = mkGreeting "Entschuldigung" ;
- GGoodDay = mkGreeting "guten Tag" ;
- GGoodEvening = mkGreeting "guten Abend" ;
- GGoodMorning = mkGreeting "guten Morgen" ;
- GGoodNight = mkGreeting "gute Nacht" ;
- GGoodbye = mkGreeting "auf Wiedersehen" ;
- GHello = mkGreeting "Hallo" ;
- GHelp = mkGreeting "Hilfe" ;
- GHowAreYou = mkGreeting "wie geht's" ;
- GLookOut = mkGreeting "Achtung" ;
- GNiceToMeetYou = mkGreeting "nett, Sie zu treffen" ;
- GPleaseGive, GPleaseGivePol = mkGreeting "bitte" ;
- GSeeYouSoon = mkGreeting "bis bald" ;
- GSorry, GSorryPol = mkGreeting "Entschuldigung" ;
- GThanks = mkGreeting "Danke" ;
- GTheCheck = mkGreeting "die Rechnung" ;
- GCongratulations = mkGreeting "herzlichen Glckwunsch";
- GHappyBirthday = mkGreeting "alles Gute zum Geburtstag" ;
- GGoodLuck = mkGreeting "viel Glck" ;
- GWhatTime = mkGreeting "wieviel Uhr ist es" | mkGreeting "wie spt ist es" ;
-
-}
-
diff --git a/testsuite/canonical/grammars/Phrasebook.gf b/testsuite/canonical/grammars/Phrasebook.gf
index 9ebc13106..eff538f62 100644
--- a/testsuite/canonical/grammars/Phrasebook.gf
+++ b/testsuite/canonical/grammars/Phrasebook.gf
@@ -1,8 +1,9 @@
-abstract Phrasebook =
- Greetings,
- Words
- ** {
+abstract Phrasebook = {
-flags startcat = Phrase ;
+cat PlaceKind ;
+fun Airport : PlaceKind ;
+
+cat VerbPhrase ;
+fun VRead : VerbPhrase ;
}
diff --git a/testsuite/canonical/grammars/PhrasebookBul.gf b/testsuite/canonical/grammars/PhrasebookBul.gf
index bbc092963..347d69297 100644
--- a/testsuite/canonical/grammars/PhrasebookBul.gf
+++ b/testsuite/canonical/grammars/PhrasebookBul.gf
@@ -1,9 +1,31 @@
--# -path=.:present
-concrete PhrasebookBul of Phrasebook =
- GreetingsBul,
- WordsBul ** open
+concrete PhrasebookBul of Phrasebook =
+ open
SyntaxBul,
+ (R = ResBul),
+ ParadigmsBul,
Prelude in {
+ lincat
+ PlaceKind = CNPlace ;
+
+ oper
+ CNPlace : Type = {name : CN ; at : Prep ; to : Prep; isPl : Bool} ;
+
+ mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \n,p ->
+ mkCNPlace (mkCN n) p to_Prep ;
+
+ mkCNPlace : CN -> Prep -> Prep -> CNPlace = \p,i,t -> {
+ name = p ;
+ at = i ;
+ to = t ;
+ isPl = False
+ } ;
+
+ na_Prep = mkPrep "на" R.Acc ;
+
+ lin
+ Airport = mkPlace (mkN066 "летище") na_Prep ;
+
}
diff --git a/testsuite/canonical/grammars/PhrasebookGer.gf b/testsuite/canonical/grammars/PhrasebookGer.gf
index 69a61187c..c6402297c 100644
--- a/testsuite/canonical/grammars/PhrasebookGer.gf
+++ b/testsuite/canonical/grammars/PhrasebookGer.gf
@@ -1,10 +1,14 @@
--# -path=.:present
-concrete PhrasebookGer of Phrasebook =
- GreetingsGer,
- WordsGer ** open
+concrete PhrasebookGer of Phrasebook =
+ open
SyntaxGer,
- Prelude in {
+ LexiconGer in {
+ lincat
+ VerbPhrase = VP ;
+
+ lin
+ VRead = mkVP <lin V read_V2 : V> ;
}
diff --git a/testsuite/canonical/grammars/Sentences.gf b/testsuite/canonical/grammars/Sentences.gf
deleted file mode 100644
index 6798c2127..000000000
--- a/testsuite/canonical/grammars/Sentences.gf
+++ /dev/null
@@ -1,222 +0,0 @@
---1 The Ontology of the Phrasebook
-
---2 Syntactic Structures of the Phrasebook
-
--- This module contains phrases that can be defined by a functor over the
--- resource grammar API. The phrases that are likely to have different implementations
--- are in the module Words. But the distinction is not quite sharp; thus it may happen
--- that the functor instantiations make exceptions.
-
-abstract Sentences = Numeral ** {
-
--- The ontology of the phrasebook is defined by the following types. The commented ones
--- are defined in other modules.
-
- cat
- Phrase ; -- complete phrase, the unit of translation e.g. "Where are you?"
- Word ; -- word that could be used as phrase e.g. "Monday"
- Message ; -- sequence of phrases, longest unit e.g. "Hello! Where are you?"
- Greeting ; -- idiomatic greeting e.g. "hello"
- Sentence ; -- declarative sentence e.g. "I am in the bar"
- Question ; -- question, either yes/no or wh e.g. "where are you"
- Proposition ; -- can be turned into sentence or question e.g. "this pizza is good"
- Object ; -- the object of wanting, ordering, etc e.g. "three pizzas and a beer"
- PrimObject ; -- single object of wanting, ordering, etc e.g. "three pizzas"
- Item ; -- a single entity e.g. "this pizza"
- Kind ; -- a type of an item e.g. "pizza"
- MassKind ; -- a type mass (uncountable) e.g. "water"
- PlurKind ; -- a type usually only in plural e.g. "noodles"
- DrinkKind ; -- a drinkable, countable type e.g. "beer"
- Quality ; -- qualification of an item, can be complex e.g. "very good"
- Property ; -- basic property of an item, one word e.g. "good"
- Place ; -- location e.g. "the bar"
- PlaceKind ; -- type of location e.g. "bar"
- Currency ; -- currency unit e.g. "leu"
- Price ; -- number of currency units e.g. "eleven leu"
- Person ; -- agent wanting or doing something e.g. "you"
- Action ; -- proposition about a Person e.g. "you are here"
- Nationality ; -- complex of language, property, country e.g. "Swedish, Sweden"
- LAnguage ; -- language (can be without nationality) e.g. "Flemish"
- Citizenship ; -- property (can be without language) e.g. "Belgian"
- Country ; -- country (can be without language) e.g. "Belgium"
- Day ; -- weekday type e.g. "Friday"
- Date ; -- definite date e.g. "on Friday"
- Name ; -- name of person e.g. "NN"
- Number ; -- number expression 1 .. 999,999 e.g. "twenty"
- Transport ; -- transportation device e.g. "car"
- ByTransport ; -- mean of transportation e.g. "by tram"
- Superlative ; -- superlative modifiers of places e.g. "the best restaurant"
-
-
- fun
-
--- To build a whole message
-
- MPhrase : Phrase -> Message ;
- MContinue : Phrase -> Message -> Message ;
-
--- Many of the categories are accessible as Phrases, i.e. as translation units.
--- To regulate whether words appear on the top level, change their status between
--- Word and Phrase, or uncomment PWord,
-
- -- PWord : Word -> Phrase ;
-
- PGreetingMale : Greeting -> Phrase ; -- depends on speaker e.g. in Thai
- PGreetingFemale : Greeting -> Phrase ;
- PSentence : Sentence -> Phrase ;
- PQuestion : Question -> Phrase ;
-
- PNumber : Number -> Phrase ;
- PPrice : Price -> Phrase ;
- PObject : Object -> Word ;
- PKind : Kind -> Word ;
- PMassKind : MassKind -> Word ;
- PQuality : Quality -> Word ;
- PPlace : Place -> Word ;
- PPlaceKind : PlaceKind -> Word ;
- PCurrency : Currency -> Word ;
- PLanguage : LAnguage -> Word ;
- PCitizenship : Citizenship -> Word ;
- PCountry : Country -> Word ;
- PDay : Day -> Word ;
- PByTransport : ByTransport -> Word ;
- PTransport : Transport -> Word ;
-
- PYes, PNo, PYesToNo : Greeting ; -- yes, no, si/doch (pos. answer to neg. question)
-
--- To order something.
-
- GObjectPlease : Object -> Greeting ; -- a pizza and beer, please!
-
--- This is the way to build propositions about inanimate items.
-
- Is : Item -> Quality -> Proposition ; -- this pizza is good
- IsMass : MassKind -> Quality -> Proposition ; -- Belgian beer is good
-
--- To use propositions on higher levels.
-
- SProp : Proposition -> Sentence ; -- this pizza is good
- SPropNot : Proposition -> Sentence ; -- this pizza isn't good
- QProp : Proposition -> Question ; -- is this pizza good
-
- WherePlace : Place -> Question ; -- where is the bar
- WherePerson : Person -> Question ; -- where are you
-
--- This is the way to build propositions about persons.
-
- PropAction : Action -> Proposition ; -- (you (are|aren't) | are you) Swedish
-
--- Here are some general syntactic constructions.
-
- ObjItem : Item -> PrimObject ; -- this pizza
- ObjNumber : Number -> Kind -> PrimObject ; -- five pizzas
- ObjIndef : Kind -> PrimObject ; -- a pizza
- ObjPlural : Kind -> PrimObject ; -- pizzas
- ObjPlur : PlurKind -> PrimObject ; -- noodles
- ObjMass : MassKind -> PrimObject ; -- water
- ObjAndObj : PrimObject -> Object -> Object ; -- this pizza and a beer
- OneObj : PrimObject -> Object ; -- this pizza
-
- SuchKind : Quality -> Kind -> Kind ; -- Italian pizza
- SuchMassKind : Quality -> MassKind -> MassKind ; -- Italian water
- Very : Property -> Quality ; -- very Italian
- Too : Property -> Quality ; -- too Italian
- PropQuality : Property -> Quality ; -- Italian
-
- MassDrink : DrinkKind -> MassKind ; -- beer
- DrinkNumber : Number -> DrinkKind -> PrimObject ; -- five beers
-
--- Determiners.
-
- This, That, These, Those : Kind -> Item ; -- this pizza,...,those pizzas
- The, Thes : Kind -> Item ; -- the pizza, the pizzas
- ThisMass, ThatMass, TheMass : MassKind -> Item ; -- this/that/the water
- ThesePlur, ThosePlur, ThesPlur : PlurKind -> Item ; -- these/those/the potatoes
-
- AmountCurrency : Number -> Currency -> Price ; -- five euros
-
- ThePlace : PlaceKind -> Place ; -- the bar
- APlace : PlaceKind -> Place ; -- a bar
-
- IMale, IFemale, -- I, said by man/woman (affects agreement)
- YouFamMale, YouFamFemale, -- familiar you, said to man/woman (affects agreement)
- YouPolMale, YouPolFemale : Person ; -- polite you, said to man/woman (affects agreement)
-
- LangNat : Nationality -> LAnguage ; -- Swedish
- CitiNat : Nationality -> Citizenship ; -- Swedish
- CountryNat : Nationality -> Country ; -- Sweden
- PropCit : Citizenship -> Property ; -- Swedish
-
- OnDay : Day -> Date ; -- on Friday
- Today : Date ; -- today
-
- PersonName : Name -> Person ; -- person referred by name
- NameNN : Name ; -- the name "NN"
-
----- NameString : String -> Name ; ---- creates ambiguities with all words --%
-
- NNumeral : Numeral -> Number ; -- numeral in words, e.g. "twenty"
-
--- Actions are typically language-dependent, not only lexically but also
--- structurally. However, these ones are mostly functorial.
-
- SHave : Person -> Object -> Sentence ; -- you have beer
- SHaveNo : Person -> Kind -> Sentence ; -- you have no apples
- SHaveNoMass : Person -> MassKind -> Sentence ; -- you have no beer
- QDoHave : Person -> Object -> Question ; -- do you have beer
-
- AHaveCurr : Person -> Currency -> Action ; -- you have dollars
- ACitizen : Person -> Citizenship -> Action ; -- you are Swedish
- ABePlace : Person -> Place -> Action ; -- you are in the bar
-
- ByTransp : Transport -> ByTransport ; -- by bus
-
- AKnowSentence : Person -> Sentence -> Action ; -- you know that I am in the bar
- AKnowPerson : Person -> Person -> Action ; -- you know me
- AKnowQuestion : Person -> Question -> Action ; -- you know how far the bar is
-
-------------------------------------------------------------------------------------------
--- New things added 30/11/2011 by AR
-------------------------------------------------------------------------------------------
-
- cat
- VerbPhrase ; -- things one does, can do, must do, wants to do, e.g. swim
- Modality ; -- can, want, must
- fun
- ADoVerbPhrase : Person -> VerbPhrase -> Action ; -- I swim
- AModVerbPhrase : Modality -> Person -> VerbPhrase -> Action ; -- I can swim
- ADoVerbPhrasePlace : Person -> VerbPhrase -> Place -> Action ; -- I swim in the hotel
- AModVerbPhrasePlace : Modality -> Person -> VerbPhrase -> Place -> Action ; -- I can swim in the hotel
-
- QWhereDoVerbPhrase : Person -> VerbPhrase -> Question ; -- where do you swim
- QWhereModVerbPhrase : Modality -> Person -> VerbPhrase -> Question ; -- where can I swim
-
- MCan, MKnow, MMust, MWant : Modality ;
-
--- lexical items given in the resource Lexicon
-
- VPlay, VRun, VSit, VSleep, VSwim, VWalk : VerbPhrase ;
- VDrink, VEat, VRead, VWait, VWrite, VSit, VStop : VerbPhrase ;
- V2Buy, V2Drink, V2Eat : Object -> VerbPhrase ;
- V2Wait : Person -> VerbPhrase ;
-
- PImperativeFamPos, -- eat
- PImperativeFamNeg, -- don't eat
- PImperativePolPos, -- essen Sie
- PImperativePolNeg, -- essen Sie nicht
- PImperativePlurPos, -- esst
- PImperativePlurNeg : -- esst nicht
- VerbPhrase -> Phrase ;
-
--- other new things allowed by the resource
-
---- PBecause : Sentence -> Sentence -> Phrase ; -- I want to swim because it is hot
-
- He, She, -- he, she
- WeMale, WeFemale, -- we, said by men/women (affects agreement)
- YouPlurFamMale, YouPlurFamFemale, -- plural familiar you, said to men/women (affects agreement)
- YouPlurPolMale, YouPlurPolFemale, -- plural polite you, said to men/women (affects agreement)
- TheyMale, TheyFemale : Person ; -- they, said of men/women (affects agreement)
-
-}
-
diff --git a/testsuite/canonical/grammars/SentencesBul.gf b/testsuite/canonical/grammars/SentencesBul.gf
deleted file mode 100644
index b2968bc85..000000000
--- a/testsuite/canonical/grammars/SentencesBul.gf
+++ /dev/null
@@ -1,54 +0,0 @@
-concrete SentencesBul of Sentences =
- NumeralBul ** SentencesI - [IMale, IFemale, YouFamMale, YouFamFemale, YouPolMale,
- YouPolFemale, ACitizen, Citizenship, PCitizenship,
- LangNat, CitiNat, CountryNat, PropCit,
- Nationality, Country, LAnguage, PLanguage, PCountry
- ] with
- (Syntax = SyntaxBul),
- (Symbolic = SymbolicBul),
- (Lexicon = LexiconBul) ** open ExtraBul, (R = ResBul) in {
-
-lincat
- Citizenship = {s1 : R.Gender => R.NForm => Str; -- there are two nouns for every citizenship - one for males and one for females
- s2 : A -- furthermore, adjective for Property
- } ;
- Nationality = {s1 : R.Gender => R.NForm => Str; -- there are two nouns for every citizenship - one for males and one for females
- s2 : A; -- furthermore, adjective for Property
- s3 : PN -- country name
- } ;
- LAnguage = A ;
- Country = PN ;
-
-lin IMale = mkPerson i_Pron ;
- IFemale = mkPerson i8fem_Pron ;
-
-lin YouFamMale = mkPerson youSg_Pron ;
- YouFamFemale = mkPerson youSg8fem_Pron ;
- YouPolMale, YouPolFemale = mkPerson youPol_Pron ;
-
-lin ACitizen p cit =
- let noun : N
- = case p.name.gn of {
- R.GSg g => lin N {s = \\nf => cit.s1 ! g ! nf;
- rel = cit.s2.s; relType = R.AdjMod;
- g = case g of {R.Masc=>R.AMasc R.Human; R.Fem=>R.AFem; R.Neut=>R.ANeut}
- } ;
- R.GPl => lin N {s = \\nf => cit.s1 ! R.Masc ! nf;
- rel = cit.s2.s; relType = R.AdjMod;
- g = R.AMasc R.Human
- }
- } ;
- in mkCl p.name noun ;
-
- PCitizenship cit =
- mkPhrase (mkUtt (mkAP cit.s2)) ;
-
- LangNat n = n.s2 ;
- CitiNat n = n ;
- CountryNat n = n.s3 ;
- PropCit cit = cit.s2 ;
-
- PLanguage x = mkPhrase (mkUtt (mkAP x)) ;
- PCountry x = mkPhrase (mkUtt (mkNP x)) ;
-
-}
diff --git a/testsuite/canonical/grammars/SentencesGer.gf b/testsuite/canonical/grammars/SentencesGer.gf
deleted file mode 100644
index cc0922d5f..000000000
--- a/testsuite/canonical/grammars/SentencesGer.gf
+++ /dev/null
@@ -1,50 +0,0 @@
-concrete SentencesGer of Sentences = NumeralGer ** SentencesI -
- [PYesToNo,SHaveNo,SHaveNoMass,
- Proposition, Action, Is, IsMass, SProp, SPropNot, QProp,
- AHaveCurr, ACitizen, ABePlace, AKnowSentence, AKnowPerson, AKnowQuestion,
- Nationality, LAnguage,
- ADoVerbPhrase, AModVerbPhrase, ADoVerbPhrasePlace, AModVerbPhrasePlace,
- YouPlurPolMale, YouPlurPolFemale
- ] with
- (Syntax = SyntaxGer),
- (Symbolic = SymbolicGer),
- (Lexicon = LexiconGer) ** open Prelude, SyntaxGer in {
-
- lin
- PYesToNo = mkPhrase (lin Utt (ss "doch")) ;
- SHaveNo p k = mkS (mkCl p.name have_V2 (mkNP no_Quant plNum k)) ;
- SHaveNoMass p k = mkS (mkCl p.name have_V2 (mkNP no_Quant k)) ;
-
- lincat
- Proposition, Action = Prop ;
- oper
- Prop = {pos : Cl ; neg : S} ; -- x F y ; x F nicht/kein y
- mkProp : Cl -> S -> Prop = \pos,neg -> {pos = pos ; neg = neg} ;
- prop : Cl -> Prop = \cl -> mkProp cl (mkS negativePol cl) ;
- lin
- Is i q = prop (mkCl i q) ;
- IsMass m q = prop (mkCl (mkNP m) q) ;
- SProp p = mkS p.pos ;
- SPropNot p = p.neg ;
- QProp p = mkQS (mkQCl p.pos) ;
-
- AHaveCurr p curr = prop (mkCl p.name have_V2 (mkNP aPl_Det curr)) ;
- ACitizen p n = prop (mkCl p.name n) ;
- ABePlace p place = prop (mkCl p.name place.at) ;
-
- AKnowSentence p s = prop (mkCl p.name Lexicon.know_VS s) ;
- AKnowQuestion p s = prop (mkCl p.name Lexicon.know_VQ s) ;
- AKnowPerson p q = prop (mkCl p.name Lexicon.know_V2 q.name) ;
-
- lincat
- Nationality = {lang : CN ; country : NP ; prop : A} ;
- LAnguage = CN ; -- kein Deutsch
-
--- the new things
- lin
- ADoVerbPhrase p vp = prop (mkCl p.name vp) ;
- AModVerbPhrase m p vp = prop (mkCl p.name (mkVP m vp)) ;
- ADoVerbPhrasePlace p vp x = prop (mkCl p.name (mkVP vp x.at)) ;
- AModVerbPhrasePlace m p vp x = prop (mkCl p.name (mkVP m (mkVP vp x.at))) ;
- YouPlurPolMale, YouPlurPolFemale = mkPerson youPol_Pron ;
-}
diff --git a/testsuite/canonical/grammars/SentencesI.gf b/testsuite/canonical/grammars/SentencesI.gf
deleted file mode 100644
index 913aa11ad..000000000
--- a/testsuite/canonical/grammars/SentencesI.gf
+++ /dev/null
@@ -1,302 +0,0 @@
---1 Implementation of MOLTO Phrasebook
-
---2 The functor for (mostly) common structures
-
-incomplete concrete SentencesI of Sentences = Numeral **
- open
- Syntax,
- Lexicon,
- Symbolic, -- for names as strings
- Prelude
- in {
- lincat
- Phrase = Text ;
- Word = Text ;
- Message = Text ;
- Greeting = Text ;
- Sentence = S ;
- Question = QS ;
- Proposition = Cl ;
- Item = NP ;
- Kind = CN ;
- MassKind = CN ;
- MassKind = CN ;
- PlurKind = CN ;
- DrinkKind = CN ;
- Quality = AP ;
- Property = A ;
- Object = NP ;
- PrimObject = NP ;
- Place = NPPlace ; -- {name : NP ; at : Syntax.Adv ; to : Syntax.Adv} ;
- PlaceKind = CNPlace ; -- {name : CN ; at : Prep ; to : Prep} ;
- Currency = CN ;
- Price = NP ;
- Action = Cl ;
- Person = NPPerson ; -- {name : NP ; isPron : Bool ; poss : Quant} ;
- Nationality = NPNationality ; -- {lang : NP ; country : NP ; prop : A} ;
- LAnguage = NP ;
- Citizenship = A ;
- Country = NP ;
- Day = NPDay ; -- {name : NP ; point : Syntax.Adv ; habitual : Syntax.Adv} ;
- Date = Syntax.Adv ;
- Name = NP ;
- Number = Card ;
- ByTransport = Syntax.Adv ;
- Transport = {name : CN ; by : Syntax.Adv} ;
- Superlative = Det ;
- lin
- MPhrase p = p ;
- MContinue p m = mkText p m ;
-
- PSentence s = mkText s | lin Text (mkUtt s) ; -- optional '.'
- PQuestion s = mkText s | lin Text (mkUtt s) ; -- optional '?'
-
- PGreetingMale, PGreetingFemale = \g -> mkText (lin Phr (ss g.s)) exclMarkPunct | g ;
-
- -- PWord w = w ;
-
- PNumber x = mkSentence (mkUtt x) ;
- PPrice x = mkSentence (mkUtt x) ;
-
- PObject x = mkPhrase (mkUtt x) ;
- PKind x = mkPhrase (mkUtt x) ;
- PMassKind x = mkPhrase (mkUtt x) ;
- PQuality x = mkPhrase (mkUtt x) ;
- PPlace x = mkPhrase (mkUtt x.name) ;
- PPlaceKind x = mkPhrase (mkUtt x.name) ;
- PCurrency x = mkPhrase (mkUtt x) ;
- PLanguage x = mkPhrase (mkUtt x) ;
- PCountry x = mkPhrase (mkUtt x) ;
- PCitizenship x = mkPhrase (mkUtt (mkAP x)) ;
- PDay d = mkPhrase (mkUtt d.name) ;
- PTransport t = mkPhrase (mkUtt t.name) ;
- PByTransport t = mkPhrase (mkUtt t) ;
-
- PYes = mkPhrase yes_Utt ;
- PNo = mkPhrase no_Utt ;
- PYesToNo = mkPhrase yes_Utt ;
-
- GObjectPlease o = lin Text (mkPhr noPConj (mkUtt o) please_Voc) | lin Text (mkUtt o) ;
-
- Is = mkCl ;
- IsMass m q = mkCl (mkNP m) q ;
-
- SProp = mkS ;
- SPropNot = mkS negativePol ;
- QProp p = mkQS (mkQCl p) ;
-
- WherePlace place = mkQS (mkQCl where_IAdv place.name) ;
- WherePerson person = mkQS (mkQCl where_IAdv person.name) ;
-
- PropAction a = a ;
-
- AmountCurrency num curr = mkNP num curr ;
-
- ObjItem i = i ;
- ObjNumber n k = mkNP n k ;
- ObjIndef k = mkNP a_Quant k ;
- ObjPlural k = mkNP aPl_Det k ;
- ObjPlur k = mkNP aPl_Det k ;
- ObjMass k = mkNP k ;
- ObjAndObj = mkNP and_Conj ;
- OneObj o = o ;
-
- MassDrink d = d ;
- DrinkNumber n k = mkNP n k ;
-
- This kind = mkNP this_Quant kind ;
- That kind = mkNP that_Quant kind ;
- These kind = mkNP this_Quant plNum kind ;
- Those kind = mkNP that_Quant plNum kind ;
- The kind = mkNP the_Quant kind ;
- Thes kind = mkNP the_Quant plNum kind ;
- ThisMass kind = mkNP this_Quant kind ;
- ThatMass kind = mkNP that_Quant kind ;
- TheMass kind = mkNP the_Quant kind ;
- ThesePlur kind = mkNP this_Quant plNum kind ;
- ThosePlur kind = mkNP that_Quant plNum kind ;
- ThesPlur kind = mkNP the_Quant plNum kind ;
-
- SuchKind quality kind = mkCN quality kind ;
- SuchMassKind quality kind = mkCN quality kind ;
- Very property = mkAP very_AdA (mkAP property) ;
- Too property = mkAP too_AdA (mkAP property) ;
- PropQuality property = mkAP property ;
-
- ThePlace kind = let dd : Det = if_then_else Det kind.isPl thePl_Det theSg_Det
- in placeNP dd kind ;
- APlace kind = let dd : Det = if_then_else Det kind.isPl aPl_Det aSg_Det
- in placeNP dd kind ;
-
- IMale, IFemale = mkPerson i_Pron ;
- YouFamMale, YouFamFemale = mkPerson youSg_Pron ;
- YouPolMale, YouPolFemale = mkPerson youPol_Pron ;
-
- LangNat n = n.lang ;
- CitiNat n = n.prop ;
- CountryNat n = n.country ;
- PropCit c = c ;
-
- OnDay d = d.point ;
- Today = today_Adv ;
-
- PersonName n =
- {name = n ; isPron = False ; poss = mkQuant he_Pron} ; -- poss not used
----- NameString s = symb s ; --%
- NameNN = symb "NN" ;
-
- NNumeral n = mkCard <lin Numeral n : Numeral> ;
-
- SHave p obj = mkS (mkCl p.name have_V2 obj) ;
- SHaveNo p k = mkS negativePol (mkCl p.name have_V2 (mkNP aPl_Det k)) ;
- SHaveNoMass p m = mkS negativePol (mkCl p.name have_V2 (mkNP m)) ;
- QDoHave p obj = mkQS (mkQCl (mkCl p.name have_V2 obj)) ;
-
- AHaveCurr p curr = mkCl p.name have_V2 (mkNP aPl_Det curr) ;
- ACitizen p n = mkCl p.name n ;
- ABePlace p place = mkCl p.name place.at ;
- ByTransp t = t.by ;
-
- AKnowSentence p s = mkCl p.name Lexicon.know_VS s ;
- AKnowQuestion p s = mkCl p.name Lexicon.know_VQ s ;
- AKnowPerson p q = mkCl p.name Lexicon.know_V2 q.name ;
-
-oper
-
--- These operations are used internally in Sentences.
-
- mkPhrase : Utt -> Text = \u -> lin Text u ; -- no punctuation
- mkGreeting : Str -> Text = \s -> lin Text (ss s) ; -- no punctuation
- mkSentence : Utt -> Text = \t -> lin Text (postfixSS "." t | t) ; -- optional .
-
- mkPerson : Pron -> {name : NP ; isPron : Bool ; poss : Quant} = \p ->
- {name = mkNP p ; isPron = True ; poss = mkQuant p} ;
-
--- These are used in Words for each language.
-
- NPNationality : Type = {lang : NP ; country : NP ; prop : A} ;
-
- mkNPNationality : NP -> NP -> A -> NPNationality = \la,co,pro ->
- {lang = la ;
- country = co ;
- prop = pro
- } ;
-
- NPDay : Type = {name : NP ; point : Syntax.Adv ; habitual : Syntax.Adv} ;
-
- mkNPDay : NP -> Syntax.Adv -> Syntax.Adv -> NPDay = \d,p,h ->
- {name = d ;
- point = p ;
- habitual = h
- } ;
-
- NPPlace : Type = {name : NP ; at : Syntax.Adv ; to : Syntax.Adv} ;
- CNPlace : Type = {name : CN ; at : Prep ; to : Prep; isPl : Bool} ;
-
- mkCNPlace : CN -> Prep -> Prep -> CNPlace = \p,i,t -> {
- name = p ;
- at = i ;
- to = t ;
- isPl = False
- } ;
-
- mkCNPlacePl : CN -> Prep -> Prep -> CNPlace = \p,i,t -> {
- name = p ;
- at = i ;
- to = t ;
- isPl = True
- } ;
-
- placeNP : Det -> CNPlace -> NPPlace = \det,kind ->
- let name : NP = mkNP det kind.name in {
- name = name ;
- at = Syntax.mkAdv kind.at name ;
- to = Syntax.mkAdv kind.to name
- } ;
-
- NPPerson : Type = {name : NP ; isPron : Bool ; poss : Quant} ;
-
- relativePerson : GNumber -> CN -> (Num -> NP -> CN -> NP) -> NPPerson -> NPPerson =
- \n,x,f,p ->
- let num = if_then_else Num n plNum sgNum in {
- name = case p.isPron of {
- True => mkNP p.poss num x ;
- _ => f num p.name x
- } ;
- isPron = False ;
- poss = mkQuant he_Pron -- not used because not pron
- } ;
-
- GNumber : PType = Bool ;
- sing = False ; plur = True ;
-
--- for languages without GenNP, use "the wife of p"
- mkRelative : Bool -> CN -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n x
- (\a,b,c -> mkNP (mkNP the_Quant a c) (Syntax.mkAdv possess_Prep b)) p ;
-
--- for languages with GenNP, use "p's wife"
--- relativePerson n x (\a,b,c -> mkNP (GenNP b) a c) p ;
-
- phrasePlease : Utt -> Text = \u -> --- lin Text (mkPhr noPConj u please_Voc) |
- lin Text u ;
-
-------------------------------------------------------------------------------------------
--- New things added 30/11/2011 by AR
-------------------------------------------------------------------------------------------
-
- lincat
- VerbPhrase = VP ;
- Modality = VV ;
- lin
- ADoVerbPhrase p vp = mkCl p.name vp ;
- AModVerbPhrase m p vp = mkCl p.name (mkVP m vp) ;
- ADoVerbPhrasePlace p vp x = mkCl p.name (mkVP vp x.at) ;
- AModVerbPhrasePlace m p vp x = mkCl p.name (mkVP m (mkVP vp x.at)) ;
-
- QWhereDoVerbPhrase p vp = mkQS (mkQCl where_IAdv (mkCl p.name vp)) ;
- QWhereModVerbPhrase m p vp = mkQS (mkQCl where_IAdv (mkCl p.name (mkVP m vp))) ;
-
- MWant = want_VV ;
- MCan = can_VV ;
- MKnow = can8know_VV ;
- MMust = must_VV ;
-
- VPlay = mkVP play_V ;
- VRun = mkVP run_V ;
- VSit = mkVP sit_V ;
- VSleep = mkVP sleep_V ;
- VSwim = mkVP swim_V ;
- VWalk = mkVP walk_V ;
- VSit = mkVP sit_V ;
- VStop = mkVP stop_V ;
- VDrink = mkVP <lin V drink_V2 : V> ;
- VEat = mkVP <lin V eat_V2 : V> ;
- VRead = mkVP <lin V read_V2 : V> ;
- VWait = mkVP <lin V wait_V2 : V> ;
- VWrite = mkVP <lin V write_V2 : V> ;
-
- V2Buy o = mkVP buy_V2 o ;
- V2Drink o = mkVP drink_V2 o ;
- V2Eat o = mkVP eat_V2 o ;
- V2Wait o = mkVP wait_V2 o.name ;
-
- PImperativeFamPos v = phrasePlease (mkUtt (mkImp v)) ;
- PImperativeFamNeg v = phrasePlease (mkUtt negativePol (mkImp v)) ;
- PImperativePolPos v = phrasePlease (mkUtt politeImpForm (mkImp v)) ;
- PImperativePolNeg v = phrasePlease (mkUtt politeImpForm negativePol (mkImp v)) ;
- PImperativePlurPos v = phrasePlease (mkUtt pluralImpForm (mkImp v)) ;
- PImperativePlurNeg v = phrasePlease (mkUtt pluralImpForm negativePol (mkImp v)) ;
-
--- other new things allowed by the resource
-
---- PBecause a b = SSubjS a because_Subj b ;
-
- He = mkPerson he_Pron ;
- She = mkPerson she_Pron ;
- WeMale, WeFemale = mkPerson we_Pron ;
- YouPlurFamMale, YouPlurFamFemale = mkPerson youPl_Pron ;
- YouPlurPolMale, YouPlurPolFemale = mkPerson youPl_Pron ;
- TheyMale, TheyFemale = mkPerson they_Pron ;
-
-}
diff --git a/testsuite/canonical/grammars/Words.gf b/testsuite/canonical/grammars/Words.gf
deleted file mode 100644
index 08704990a..000000000
--- a/testsuite/canonical/grammars/Words.gf
+++ /dev/null
@@ -1,254 +0,0 @@
---2 Words and idiomatic phrases of the Phrasebook
-
-
--- (c) 2010 Aarne Ranta under LGPL --%
-
-abstract Words = Sentences ** {
-
- fun
-
--- kinds of items (so far mostly food stuff)
-
- Apple : Kind ;
- Beer : DrinkKind ;
- Bread : MassKind ;
- Cheese : MassKind ;
- Chicken : MassKind ;
- Coffee : DrinkKind ;
- Fish : MassKind ;
- Meat : MassKind ;
- Milk : MassKind ;
- Pizza : Kind ;
- Salt : MassKind ;
- Tea : DrinkKind ;
- Water : DrinkKind ;
- Wine : DrinkKind ;
-
--- properties of kinds (so far mostly of food)
-
- Bad : Property ;
- Boring : Property ;
- Cheap : Property ;
- Cold : Property ;
- Delicious : Property ;
- Expensive : Property ;
- Fresh : Property ;
- Good : Property ;
- Suspect : Property ;
- Warm : Property ;
-
--- kinds of places
-
- Airport : PlaceKind ;
- AmusementPark : PlaceKind ;
- Bank : PlaceKind ;
- Bar : PlaceKind ;
- Cafeteria : PlaceKind ;
- Center : PlaceKind ;
- Cinema : PlaceKind ;
- Church : PlaceKind ;
- Disco : PlaceKind ;
- Hospital : PlaceKind ;
- Hotel : PlaceKind ;
- Museum : PlaceKind ;
- Park : PlaceKind ;
- Parking : PlaceKind ;
- Pharmacy : PlaceKind ;
- PostOffice : PlaceKind ;
- Pub : PlaceKind ;
- Restaurant : PlaceKind ;
- School : PlaceKind ;
- Shop : PlaceKind ;
- Station : PlaceKind ;
- Supermarket : PlaceKind ;
- Theatre : PlaceKind ;
- Toilet : PlaceKind ;
- University : PlaceKind ;
- Zoo : PlaceKind ;
-
- CitRestaurant : Citizenship -> PlaceKind ;
-
--- currency units
-
- DanishCrown : Currency ;
- Dollar : Currency ;
- Euro : Currency ; -- Germany, France, Italy, Finland, Spain, The Netherlands
- Lei : Currency ; -- Romania
- Leva : Currency ; -- Bulgaria
- NorwegianCrown : Currency ;
- Pound : Currency ; -- UK
- Rouble : Currency ; -- Russia
- Rupee : Currency ; -- India
- SwedishCrown : Currency ;
- Zloty : Currency ; -- Poland
- Yuan : Currency ; -- China
-
-
--- nationalities, countries, languages, citizenships
-
- Belgian : Citizenship ;
- Belgium : Country ;
- Bulgarian : Nationality ;
- Catalan : Nationality ;
- Chinese : Nationality ;
- Danish : Nationality ;
- Dutch : Nationality ;
- English : Nationality ;
- Finnish : Nationality ;
- Flemish : LAnguage ;
- French : Nationality ;
- German : Nationality ;
- Hindi : LAnguage ;
- India : Country ;
- Indian : Citizenship ;
- Italian : Nationality ;
- Norwegian : Nationality ;
- Polish : Nationality ;
- Romanian : Nationality ;
- Russian : Nationality ;
- Spanish : Nationality ;
- Swedish : Nationality ;
-
--- means of transportation
-
- Bike : Transport ;
- Bus : Transport ;
- Car : Transport ;
- Ferry : Transport ;
- Plane : Transport ;
- Subway : Transport ;
- Taxi : Transport ;
- Train : Transport ;
- Tram : Transport ;
-
- ByFoot : ByTransport ;
-
-
--- Actions (which can be expressed by different structures in different languages).
--- Notice that also negations and questions can be formed from these.
-
- AHasAge : Person -> Number -> Action ; -- I am seventy years
- AHasChildren: Person -> Number -> Action ; -- I have six children
- AHasName : Person -> Name -> Action ; -- my name is Bond
- AHasRoom : Person -> Number -> Action ; -- you have a room for five persons
- AHasTable : Person -> Number -> Action ; -- you have a table for five persons
- AHungry : Person -> Action ; -- I am hungry
- AIll : Person -> Action ; -- I am ill
- AKnow : Person -> Action ; -- I (don't) know
- ALike : Person -> Item -> Action ; -- I like this pizza
- ALive : Person -> Country -> Action ; -- I live in Sweden
- ALove : Person -> Person -> Action ; -- I love you
- AMarried : Person -> Action ; -- I am married
- AReady : Person -> Action ; -- I am ready
- AScared : Person -> Action ; -- I am scared
- ASpeak : Person -> LAnguage -> Action ; -- I speak Finnish
- AThirsty : Person -> Action ; -- I am thirsty
- ATired : Person -> Action ; -- I am tired
- AUnderstand : Person -> Action ; -- I (don't) understand
- AWant : Person -> Object -> Action ; -- I want two apples
- AWantGo : Person -> Place -> Action ; -- I want to go to the hospital
-
--- Miscellaneous phrases. Notice that also negations and questions can be formed from
--- propositions.
-
- QWhatAge : Person -> Question ; -- how old are you
- QWhatName : Person -> Question ; -- what is your name
- HowMuchCost : Item -> Question ; -- how much does the pizza cost
- ItCost : Item -> Price -> Proposition ; -- the pizza costs five euros
-
- PropOpen : Place -> Proposition ; -- the museum is open
- PropClosed : Place -> Proposition ; -- the museum is closed
- PropOpenDate : Place -> Date -> Proposition ; -- the museum is open today
- PropClosedDate : Place -> Date -> Proposition ; -- the museum is closed today
- PropOpenDay : Place -> Day -> Proposition ; -- the museum is open on Mondays
- PropClosedDay : Place -> Day -> Proposition ; -- the museum is closed on Mondays
-
- PSeeYouPlaceDate : Place -> Date -> Greeting ; -- see you in the bar on Monday
- PSeeYouPlace : Place -> Greeting ; -- see you in the bar
- PSeeYouDate : Date -> Greeting ; -- see you on Monday
-
--- family relations
-
- Wife, Husband : Person -> Person ; -- my wife, your husband
- Son, Daughter : Person -> Person ; -- my son, your husband
- Children : Person -> Person ; -- my children
-
--- week days
-
- Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday : Day ;
-
- Tomorrow : Date ;
-
--- transports
-
- HowFar : Place -> Question ; -- how far is the zoo ?
- HowFarFrom : Place -> Place -> Question ; -- how far is the center from the hotel ?
- HowFarFromBy : Place -> Place -> ByTransport -> Question ;
- -- how far is the airport from the hotel by taxi ?
- HowFarBy : Place -> ByTransport -> Question ; -- how far is the museum by bus ?
-
- WhichTranspPlace : Transport -> Place -> Question ; -- which bus goes to the hotel
- IsTranspPlace : Transport -> Place -> Question ; -- is there a metro to the airport ?
-
--- modifiers of places
-
- TheBest : Superlative ;
- TheClosest : Superlative ;
- TheCheapest : Superlative ;
- TheMostExpensive : Superlative ;
- TheMostPopular : Superlative ;
- TheWorst : Superlative ;
-
- SuperlPlace : Superlative -> PlaceKind -> Place ; -- the best bar
-
-
---------------------------------------------------
--- New 30/11/2011 AR
---------------------------------------------------
-{- 28/8/2012 still only available in Bul Eng Fin Swe Tha
-
- fun
- Thai : Nationality ;
- Baht : Currency ; -- Thailand
-
- Rice : MassKind ;
- Pork : MassKind ;
- Beef : MassKind ;
- Noodles : PlurKind ;
- Shrimps : PlurKind ;
-
- Chili : MassKind ;
- Garlic : MassKind ;
-
- Durian : Kind ;
- Mango : Kind ;
- Pineapple : Kind ;
- Egg : Kind ;
-
- Coke : DrinkKind ;
- IceCream : DrinkKind ; --- both mass and plural
- OrangeJuice : DrinkKind ;
- Lemonade : DrinkKind ;
- Salad : DrinkKind ;
-
- Beach : PlaceKind ;
-
- ItsRaining : Proposition ;
- ItsWindy : Proposition ;
- ItsWarm : Proposition ;
- ItsCold : Proposition ;
- SunShine : Proposition ;
-
- Smoke : VerbPhrase ;
-
- ADoctor : Person -> Action ;
- AProfessor : Person -> Action ;
- ALawyer : Person -> Action ;
- AEngineer : Person -> Action ;
- ATeacher : Person -> Action ;
- ACook : Person -> Action ;
- AStudent : Person -> Action ;
- ABusinessman : Person -> Action ;
--}
-
-}
diff --git a/testsuite/canonical/grammars/WordsBul.gf b/testsuite/canonical/grammars/WordsBul.gf
deleted file mode 100644
index 527b3604a..000000000
--- a/testsuite/canonical/grammars/WordsBul.gf
+++ /dev/null
@@ -1,305 +0,0 @@
---2 Implementations of Words, with English as example
-
-concrete WordsBul of Words = SentencesBul **
- open
- SyntaxBul,
- (R = ResBul),
- ParadigmsBul,
- (L = LexiconBul),
- (P = ParadigmsBul),
- ExtraBul,
- MorphoFunsBul,
- Prelude in {
-
- flags
- coding=utf8;
-
- lin
-
--- Kinds; many of them are in the resource lexicon, others can be built by $mkN$.
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN (mkN066 "сирене") ;
- Chicken = mkCN (mkN065 "пиле") ;
- Coffee = mkCN (mkN065 "кафе") ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN054 "месо") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN041 "пица") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN028 "чай") ;
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
--- Properties; many of them are in the resource lexicon, others can be built by $mkA$.
-
- Bad = L.bad_A ;
- Boring = mkA079 "еднообразен" ;
- Cheap = mkA076 "евтин" ;
- Cold = L.cold_A ;
- Delicious = mkA079 "превъзходен" ;
- Expensive = mkA076 "скъп" ;
- Fresh = mkA076 "свеж" ;
- Good = L.good_A ;
- Suspect = mkA079 "подозрителен" ;
- Warm = L.warm_A ;
-
--- Places require different prepositions to express location; in some languages
--- also the directional preposition varies, but in English we use $to$, as
--- defined by $mkPlace$.
-
- Airport = mkPlace (mkN066 "летище") na_Prep ;
- AmusementPark = mkCompoundPlace (mkA079 "увеселителен") (mkN001 "парк") in_Prep ;
- Bank = mkPlace (mkN041 "банка") in_Prep ;
- Bar = mkPlace (mkN001 "бар") in_Prep ;
- Cafeteria = mkPlace (mkN065 "кафе") in_Prep ;
- Center = mkPlace (mkN009a "център") in_Prep ;
- Cinema = mkPlace (mkN054 "кино") na_Prep ;
- Church = mkPlace (mkN041 "църква") in_Prep ;
- Disco = mkPlace (mkN041 "дискотека") in_Prep ;
- Hospital = mkPlace (mkN041 "болница") in_Prep ;
- Hotel = mkPlace (mkN007 "хотел") in_Prep ;
- Museum = mkPlace (mkN032 "музей") in_Prep ;
- Park = mkPlace (mkN001 "парк") in_Prep ;
- Parking = mkPlace (mkN007 "паркинг") na_Prep ;
- Pharmacy = mkPlace (mkN041 "аптека") in_Prep ;
- PostOffice = mkPlace (mkN041 "поща") in_Prep ;
- Pub = mkPlace (mkN001 "бар") in_Prep ;
- Restaurant = mkPlace (mkN007 "ресторант") in_Prep ;
- School = mkPlace (mkN007 "училище") in_Prep ;
- Shop = mkPlace (mkN007 "магазин") in_Prep ;
- Station = mkPlace (mkN041 "гара") na_Prep ;
- Supermarket = mkPlace (mkN007 "супермаркет") in_Prep ;
- Theatre = mkPlace (mkN009 "театър") na_Prep ;
- Toilet = mkPlace (mkN041 "тоалетна") in_Prep ;
- University = mkPlace (mkN007 "университет") in_Prep ;
- Zoo = mkPlace (mkN001 "зоопарк") in_Prep ;
-
- CitRestaurant cit = mkCNPlace (mkCN cit.s2 (mkN007 "ресторант")) in_Prep to_Prep ;
-
--- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
-
- DanishCrown = mkCN (mkA078 "датски") (mkN041 "крона") | mkCN (mkN041 "крона") ;
- Dollar = mkCN (mkN007 "долар") ;
- Euro = mkCN (mkN054 "евро") ;
- Lei = mkCN (mkN047 "лея") ;
- Leva = mkCN (mkN001 "лев") ;
- NorwegianCrown = mkCN (mkA078 "норвежки") (mkN041 "крона") | mkCN (mkN041 "крона") ;
- Pound = mkCN (mkN007 "паунд") ;
- Rouble = mkCN (mkN041 "рубла") ;
- SwedishCrown = mkCN (mkA078 "шведски") (mkN041 "крона") | mkCN (mkN041 "крона") ;
- Zloty = mkCN (mkN041 "злота") ;
- Baht = mkCN (mkN007a "бат") ;
-
--- Nationalities
-
- Belgian = mkCitizenship (mkN013 "белгиец") (mkN041 "белгийка") (mkA078 "белгийски") ;
- Belgium = mkPN "Белгия" R.Fem ;
- Bulgarian = mkNat (mkN018 "българин") (mkN041 "българка") (mkA078 "български") (mkPN "България" R.Fem) ;
- Catalan = mkNat (mkN008a "каталонец") (mkN041 "каталонка") (mkA078 "каталонски") (mkPN "Каталуния" R.Fem) ;
- Danish = mkNat (mkN018 "датчанин") (mkN041 "датчанка") (mkA078 "датски") (mkPN "Дания" R.Fem) ;
- Dutch = mkNat (mkN008a "холандец") (mkN041 "холандка") (mkA078 "холандски") (mkPN "Холандия" R.Fem) ;
- English = mkNat (mkN018 "англичанин") (mkN041 "англичанка") (mkA078 "английски") (mkPN "Англия" R.Fem) ;
- Finnish = mkNat (mkN008a "финландец") (mkN041 "финландка") (mkA078 "финландски") (mkPN "Финландия" R.Fem) ;
- Flemish = mkA078 "фламандски" ;
- French = mkNat (mkN018 "французин") (mkN041 "французойка") (mkA078 "френски") (mkPN "Франция" R.Fem) ;
- German = mkNat (mkN008a "германец") (mkN041 "германка") (mkA078 "немски") (mkPN "Германия" R.Fem) ;
- Italian = mkNat (mkN008a "италианец") (mkN041 "италианка") (mkA078 "италиански") (mkPN "Италия" R.Fem) ;
- Norwegian = mkNat (mkN008a "норвежец") (mkN041 "норвежка") (mkA078 "норвежки") (mkPN "Норвегия" R.Fem) ;
- Polish = mkNat (mkN014 "поляк") (mkN047 "полякиня") (mkA078 "полски") (mkPN "Полша" R.Fem) ;
- Romanian = mkNat (mkN008a "румънец") (mkN041 "румънка") (mkA078 "румънски") (mkPN "Румъния" R.Fem) ;
- Russian = mkNat (mkN014 "руснак") (mkN047 "рускиня") (mkA078 "руски") (mkPN "Русия" R.Fem) ;
- Swedish = mkNat (mkN007 "швед") (mkN041 "шведка") (mkA078 "шведски") (mkPN "Швеция" R.Fem) ;
- Spanish = mkNat (mkN008a "испанец") (mkN041 "испанка") (mkA078 "испански") (mkPN "Испания" R.Fem) ;
- Thai = mkNat (mkN008a "тайландец") (mkN041 "тайландка") (mkA078 "тайландски") (mkPN "Тайланд" R.Masc) ;
-
--- Means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN007 "автобус") ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN007 "ферибот") ;
- Plane = mkTransport (mkN007 "самолет") ;
- Subway = mkTransport (mkN054 "метро") ;
- Taxi = mkTransport (mkN073 "такси") ;
- Train = mkTransport (mkN001 "влак") ;
- Tram = mkTransport (mkN032 "трамвай") ;
-
- ByFoot = P.mkAdv "пеша" ;
-
--- Actions: the predication patterns are very often language-dependent.
-
- AHasAge p num = mkCl p.name (SyntaxBul.mkAdv na_Prep (mkNP num L.year_N)) ;
- AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
- AHasRoom p num = mkCl p.name have_V2 (mkNP (mkNP a_Det (mkN047 "стая")) (SyntaxBul.mkAdv (mkPrep "за" R.Acc) (mkNP num (mkN014 "човек")))) ;
- AHasTable p num = mkCl p.name have_V2 (mkNP (mkNP a_Det (mkN041 "маса")) (SyntaxBul.mkAdv (mkPrep "за" R.Acc) (mkNP num (mkN014 "човек")))) ;
- AHasName p name = mkCl p.name (dirV2 (medialV (actionV (mkV186 "казвам") (mkV156 "кажа")) R.Acc)) name ;
- AHungry p = mkCl p.name (mkA079 "гладен") ;
- AIll p = mkCl p.name (mkA079 "болен") ;
- AKnow p = mkCl p.name (actionV (mkV186 "знам") (mkV162 "зная")) ;
- ALike p item = mkCl p.name (dirV2 (actionV (mkV186 "харесвам") (mkV186 "харесам"))) item ;
- ALive p co = mkCl p.name (mkVP (mkVP (stateV (mkV160 "живея"))) (SyntaxBul.mkAdv in_Prep (mkNP co))) ;
- ALove p q = mkCl p.name (dirV2 (actionV (mkV186 "обичам") (mkV152 "обикна"))) q.name ;
- AMarried p = mkCl p.name (mkA076 (case p.name.gn of {
- R.GSg R.Fem => "омъжен" ;
- _ => "женен"
- })) ;
- AReady p = mkCl p.name (mkA076 "готов") ;
- AScared p = mkCl p.name (mkA076 "уплашен") ;
- ASpeak p lang = mkCl p.name (dirV2 (stateV (mkV173 "говоря"))) (mkNP (substantiveN lang (R.AMasc R.NonHuman))) ;
- AThirsty p = mkCl p.name (mkA079 "жаден") ;
- ATired p = mkCl p.name (mkA076 "уморен") ;
- AUnderstand p = mkCl p.name (actionV (mkV186 "разбирам") (mkV170 "разбера")) ;
- AWant p obj = mkCl p.name (dirV2 (stateV (mkV186 "искам"))) obj ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP (actionV (mkV186 "отивам") (mkV146 "отида"))) place.to) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (medialV (actionV (mkV186 "казвам") (mkV156 "кажа")) R.Acc))) ;
- QWhatAge p = mkQS (mkQCl (MorphoFunsBul.mkIAdv "на колко") (mkCl p.name (mkNP a_Quant plNum L.year_N))) ;
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (stateV (mkV186 "струвам")))) ;
- ItCost item price = mkCl item (dirV2 (stateV (mkV186 "струвам"))) price ;
-
- PropOpen p = mkCl p.name open_AP ;
- PropClosed p = mkCl p.name closed_AP ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_AP) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_AP) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_AP) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_AP) d.habitual) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss ("ще се видим"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss ("ще се видим"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("ще се видим")))
- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
-
--- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
--- below. Languages without productive genitives must use an equivalent of
--- "the wife of my son" for non-pronouns.
-
- Wife = xOf sing (mkN041 "съпруга") ;
- Husband = xOf sing (mkN015 "съпруг") ;
- Son = xOf sing (mkN018 "син") ;
- Daughter = xOf sing (mkN047 "дъщеря") ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDay (mkN014 "понеделник") ;
- Tuesday = mkDay (mkN014 "вторник") ;
- Wednesday = mkDay (mkN043 "сряда") ;
- Thursday = mkDay (mkN014 "четвъртък") ;
- Friday = mkDay (mkN014 "петък") ;
- Saturday = mkDay (mkN041 "събота") ;
- Sunday = mkDay (mkN047 "неделя") ;
-
- Tomorrow = P.mkAdv "утре" ;
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA076 "евтин") ;
- TheMostExpensive = mkSuperl (mkA076 "скъп") ;
- TheMostPopular = mkSuperl (mkA079 "известен") ;
- TheWorst = mkSuperl L.bad_A ;
-
- SuperlPlace sup p = placeNP sup p ;
-
-
--- transports
-
- HowFar place = mkQS (mkQCl far_IAdv place.name) ;
- HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP y.name (SyntaxBul.mkAdv from_Prep x.name))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxBul.mkAdv from_Prep x.name)) t)) ;
- HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP y.name t)) ;
-
- WhichTranspPlace trans place =
- mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
-
- IsTranspPlace trans place =
- mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ;
-
- Rice = mkCN (mkN040a "ориз") ;
- Pork = mkCN (mkN054 "свинско") ;
- Beef = mkCN (mkN054 "телешко") ;
- Egg = mkCN (mkN066 "яйце") ;
- Noodles = mkCN (mkN075 "спагети") ;
- Shrimps = mkCN (mkN041 "скарида") ;
- Chili = mkCN (mkN065 "чили") ;
- Garlic = mkCN (mkN007 "чесън") ;
- Durian = mkCN (mkN007 "дуриан") ;
- Mango = mkCN (mkN065 "манго") ;
- Pineapple = mkCN (mkN007 "ананас") ;
- Coke = mkCN (mkN041 "кола") ;
- IceCream = mkCN (mkN007 "сладолед") ;
- Salad = mkCN (mkN041 "салата") ;
- OrangeJuice = mkCN (mkA076 "портокалов") (mkN001 "сок") ;
- Lemonade = mkCN (mkN041 "лимонада") ;
-
- Beach = mkPlace (mkN001 "плаж") na_Prep ;
-
- ItsRaining = mkCl (mkVP (stateV (mkV174 "валя"))) ;
- ItsCold = mkCl (mkVP (mkA076 "студен")) ;
- ItsWarm = mkCl (mkVP (mkA080 "топъл")) ;
- ItsWindy = mkCl (mkVP (mkA076 "ветровит")) ;
- SunShine = mkCl (progressiveVP (mkVP (actionV (mkV186 "пеквам") (mkV148 "пека")))) ;
-
- Smoke = mkVP (stateV (mkV176 "пуша")) ;
-
- ADoctor = mkProfession (mkN007a "доктор") ;
- AProfessor = mkProfession (mkN007a "професор") ;
- ALawyer = mkProfession (mkN007a "адвокат") ;
- AEngineer = mkProfession (mkN007a "инженер") ;
- ATeacher = mkProfession (mkN031a "учител") ;
- ACook = mkProfession (mkN007b "готвач") ;
- AStudent = mkProfession (mkN007a "студент") ;
- ABusinessman = mkProfession (mkN007a "бизнесмен") ;
-
--- auxiliaries
-
- oper
- mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
-
- mkCitizenship : N -> N -> A -> Citizenship
- = \male, female, adj -> lin Citizenship {s1 = table {R.Fem => female.s; _ => male.s}; s2 = adj} ;
-
- mkNat : N -> N -> A -> PN -> Nationality
- = \male, female, adj, country -> lin Nationality {s1 = table {R.Fem => female.s; _ => male.s}; s2 = adj; s3 = country} ;
-
- mkDay : N -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day : NP = mkNP d ;
- in mkNPDay day
- (SyntaxBul.mkAdv in_Prep day)
- (SyntaxBul.mkAdv in_Prep (mkNP the_Quant plNum (mkCN d))) ;
-
- mkCompoundPlace : A -> N -> Prep -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \a, n, p ->
- mkCNPlace (mkCN a n) p to_Prep ;
-
- mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \n,p ->
- mkCNPlace (mkCN n) p to_Prep ;
-
- open_AP = mkAP (mkA076 "отворен") ;
- closed_AP = mkAP (mkA076 "затворен") ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (mkNP the_Quant a c) (SyntaxBul.mkAdv (mkPrep "" R.Dat) b)) p ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxBul.mkAdv with_Prep (mkNP n)
- } ;
-
- mkSuperl : A -> Det = \a -> SyntaxBul.mkDet the_Art (SyntaxBul.mkOrd a) ;
-
- far_IAdv = ExtraBul.IAdvAdv (ss "далече") ;
-
- na_Prep = mkPrep "на" R.Acc ;
-
-}
diff --git a/testsuite/canonical/grammars/WordsGer.gf b/testsuite/canonical/grammars/WordsGer.gf
deleted file mode 100644
index 4984eb080..000000000
--- a/testsuite/canonical/grammars/WordsGer.gf
+++ /dev/null
@@ -1,262 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
---# -coding=latin1
-
-concrete WordsGer of Words = SentencesGer **
- open SyntaxGer, ParadigmsGer, IrregGer, (L = LexiconGer), ExtraGer, Prelude in {
-
- lin
-
--- kinds of food
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN (mkN "Kse" "Kse" "Kse" "Kse" "Kse" "Kse" masculine) ;
- Chicken = mkCN (mkN "Huhn" "Huhn" "Huhn" "Huhn" "Hhner" "Hhner" neuter) ;
- Coffee = mkCN (mkN "Kaffee" "Kaffee" "Kaffee" "Kaffee" "Kaffees" "Kaffee" masculine) ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "Fleisch" "Fleisch" "Fleisch" "Fleisch" "Fleisch" "Fleisch" neuter) ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "Pizza" "Pizzen" feminine) ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "Tee" "Tee" "Tee" "Tee" "Tees" "Tees" masculine) ;
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
--- properties
-
- Bad = L.bad_A ;
- Cheap = mkA "billig" ;
- Boring = mkA "langweilig" ;
- Cold = L.cold_A ;
- Delicious = mkA "lecker" ;
- Expensive = mkA "teuer" ;
- Fresh = mkA "frisch" ;
- Good = L.good_A ;
- Warm = L.warm_A ;
- Suspect = mkA "verdchtig" ;
-
--- places
-
- Airport = mkPlace (mkN "Flughafen" "Flughfen" masculine) on_Prep zu_Prep ;
- Church = mkPlace (mkN "Kirche") in_Prep inAcc_Prep ;
- Hospital = mkPlace (mkN "Krankenhaus" "Krankenhuser" neuter) in_Prep inAcc_Prep ;
- Restaurant = mkPlace (mkN "Restaurant" "Restaurants" neuter) in_Prep inAcc_Prep ;
- Station = mkPlace (mkN "Bahnhof" "Bahnhfe" masculine) on_Prep zu_Prep ;
- University = mkPlace (mkN "Universitt" "Universitten" feminine) in_Prep zu_Prep ;
-
- AmusementPark = mkPlace (mkN "Vergngungspark" "Vergngungspark" "Vergngungspark" "Vergngungspark" "Vergngungsparks" "Vergngungsparks" masculine) in_Prep inAcc_Prep ;
- Bank = mkPlace (mkN "Bank" "Bank" "Bank" "Bank" "Banken" "Banken" feminine) in_Prep zu_Prep ;
- Bar = mkPlace (mkN "Bar" "Bar" "Bar" "Bar" "Bars" "Bars" feminine) in_Prep inAcc_Prep ;
- Cafeteria = mkPlace (mkN "Cafeteria" "Cafeteria" "Cafeteria" "Cafeteria" "Cafeterien" "Cafeterien" feminine) in_Prep inAcc_Prep ;
- Center = mkPlace (mkN "Zentrum" "Zentrum" "Zentrum" "Zentrum" "Zentren" "Zentren" neuter) in_Prep zu_Prep ;
- Cinema = mkPlace (mkN "Kino" "Kino" "Kino" "Kino" "Kinos" "Kinos" neuter) in_Prep inAcc_Prep ;
- Disco = mkPlace (mkN "Disco" "Disco" "Disco" "Disco" "Discos" "Discos" feminine) in_Prep inAcc_Prep ;
- Hotel = mkPlace (mkN "Hotel" "Hotel" "Hotel" "Hotel" "Hotels" "Hotels" neuter) in_Prep inAcc_Prep ;
- Museum = mkPlace (mkN "Museum" "Museum" "Museum" "Museum" "Museen" "Museen" neuter) in_Prep inAcc_Prep ;
- Park = mkPlace (mkN "Park" "Park" "Park" "Park" "Parks" "Parks" masculine) in_Prep inAcc_Prep ;
- Parking = mkPlace (mkN "Parkplatz" "Parkplatz" "Parkplatz" "Parkplatz" "Parkplatzen" "Parkplatzen" masculine) on_Prep zu_Prep ;
- Pharmacy = mkPlace (mkN "Apotheke" "Apotheke" "Apotheke" "Apotheke" "Apotheken" "Apotheken" feminine) in_Prep zu_Prep ;
- PostOffice = mkPlace (mkN "Post" "Post" "Post" "Post" "Posten" "Posten" feminine) in_Prep inAcc_Prep ;
- Pub = mkPlace (mkN "Kneipe" "Kneipe" "Kneipe" "Kneipe" "Kneipen" "Kneipen" feminine) in_Prep inAcc_Prep;
- School = mkPlace (mkN "Schule" "Schule" "Schule" "Schule" "Schulen" "Schule" feminine) in_Prep inAcc_Prep ;
- Shop = mkPlace (mkN "Geschft" "Geschft" "Geschft" "Geschft" "Geschfte" "Geschfte" neuter) in_Prep inAcc_Prep ;
- Supermarket = mkPlace (mkN "Supermarkt" "Supermarkt" "Supermarkt" "Supermarkt" "Supermrkten" "Supermrkte" masculine) in_Prep inAcc_Prep ;
- Theatre = mkPlace (mkN "Theater" "Theater" "Theater" "Theaters" "Theatern" "Thaters" neuter) in_Prep inAcc_Prep ;
- Toilet = mkPlace (mkN "Toilette" "Toilette" "Toilette" "Toilette" "Toiletten" "Toiletten" feminine) in_Prep (mkPrep "auf" accusative) ;
- Zoo = mkPlace (mkN "Zoo" "Zoo" "Zoo" "Zoo" "Zoos" "Zoos" masculine) in_Prep inAcc_Prep ;
-
-
-CitRestaurant cit = mkCNPlace (mkCN cit (mkN "Restaurant" "Restaurants" neuter)) in_Prep inAcc_Prep ;
-
-
--- currencies
-
- DanishCrown = mkCN (mkA "Dnisch") (mkN "Krone" "Kronen" feminine) | mkCN (mkN "Krone" "Kronen" feminine) ;
- Dollar = mkCN (mkN "Dollar" "Dollar" "Dollar" "Dollar" "Dollar" "Dollar" masculine) ;
- Euro = mkCN (mkN "Euro" "Euro" "Euro" "Euro" "Euro" "Euro" neuter) ;
- Lei = mkCN (mkN "Leu" "Leu" "Leu" "Leu" "Lei" "Lei" masculine) ;
- SwedishCrown = mkCN (mkA "Schwedisch") (mkN "Krone" "Kronen" feminine) | mkCN (mkN "Krone" "Kronen" feminine) ;
- Leva = mkCN (mkN "Lewa" "Lewa" "Lewa" "Lewa" "Lewa" "Lewa" feminine);
- NorwegianCrown = mkCN (mkA "Norwegisch") (mkN "Krone" "Kronen" feminine) | mkCN (mkN "Krone" "Kronen" feminine) ;
- Pound = mkCN (mkN "Pfund" "Pfund" "Pfund" "Pfund" "Pfund" "Pfund" neuter) ;
- Rouble = mkCN (mkN "Rubel" "Rubel" "Rubel" "Rubel" "Rubels" "Rubels" masculine);
- Zloty = mkCN (mkN "Zloty" "Zloty" "Zloty" "Zloty" "Zloty" "Zloty" masculine);
-
-
-
--- nationalities
-
- Belgian = mkA "belgisch" ;
- Belgium = mkNP (mkPN "Belgien") ;
- Bulgarian = mkNat "Bulgarien" "Bulgarisch" "bulgarisch" ;
- Catalan = mkNat "Katalonien" "Katalanisch" "katalanisch" ;
- Danish = mkNat "Dnemark" "Dnisch" "dnisch" ;
- Dutch = mkNat "den Niederlanden" "Niederlndisch" "niederlndisch" ;
- English = mkNat "England" "Englisch" "englisch" ;
- Finnish = mkNat "Finnland" "Finnisch" "finnisch" ;
- Flemish = mkCN (mkN "Flmisch" "Flmisch" neuter) ;
- French = mkNat "Frankreich" "Franzsisch" "franzsisch" ;
- German = mkNat "Deutschland" "Deutsch" "deutsche" ;
- Italian = mkNat "Italien" "Italienisch" "italienisch" ;
- Norwegian = mkNat "Norwegen" "Norwegisch" "norwegisch" ;
- Polish = mkNat "Polen" "Polnisch" "polnisch" ;
- Romanian = mkNat "Rumnien" "Rumnisch" "rumnisch" ;
- Russian = mkNat "Russland" "Russisch" "russisch" ;
- Spanish = mkNat "Spanien" "Spanisch" "spanisch" ;
- Swedish = mkNat "Schweden" "Schwedisch" "schwedisch" ;
-
-
-
--- actions
-
- AHasAge p num = prop (mkCl p.name (mkNP num L.year_N)) ;
- AHasName p name = prop (mkCl p.name (mkV2 heien_V) name) ;
- AHungry p = prop (mkCl p.name (mkA "hungrig")) ;
- AHasChildren p num = prop (mkCl p.name have_V2 (mkNP num L.child_N)) ;
- AHasRoom p num = prop (mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "Zimmer" "Zimmer" neuter))
- (SyntaxGer.mkAdv for_Prep (mkNP num (mkN "Persone"))))) ;
- AHasTable p num = prop (mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "Tisch"))
- (SyntaxGer.mkAdv for_Prep (mkNP num (mkN "Persone"))))) ;
- AIll p = prop (mkCl p.name (mkA "krank")) ;
- AKnow p = prop (mkCl p.name wissen_V) ;
- ALike p item = prop (mkCl p.name (mkV2 mgen_V) item) ;
- ALive p co = prop (mkCl p.name (mkVP (mkVP (mkV "wohnen")) (SyntaxGer.mkAdv in_Prep co))) ;
- ALove p q = prop (mkCl p.name (mkV2 (mkV "lieben")) q.name) ;
- AMarried p = prop (mkCl p.name (mkA "verheiratet")) ;
- AReady p = prop (mkCl p.name (mkA "bereit")) ;
- AScared p = prop (mkCl p.name have_V2 (mkNP (mkN "Angst" "Angsten" feminine))) ;
- ASpeak p lang = mkProp (mkCl p.name (mkV2 sprechen_V) (mkNP lang))
- (mkS (mkCl p.name (mkV2 sprechen_V) (mkNP no_Quant lang))) ;
- AThirsty p = prop (mkCl p.name (mkA "durstig")) ;
- ATired p = prop (mkCl p.name (mkA "mde")) ;
- AUnderstand p = prop (mkCl p.name (fixprefixV "ver" stehen_V)) ;
- AWant p obj = prop (mkCl p.name want_VV (mkVP have_V2 obj)) ;
- AWantGo p place = prop (mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to)) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name heien_V)) ;
- QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
-
- PropOpen p = prop (mkCl p.name open_Adv) ;
- PropClosed p = prop (mkCl p.name closed_Adv) ;
- PropOpenDate p d = prop (mkCl p.name (mkVP (mkVP d) open_Adv)) ;
- PropClosedDate p d = prop (mkCl p.name (mkVP (mkVP d) closed_Adv)) ;
- PropOpenDay p d = prop (mkCl p.name (mkVP (mkVP d.habitual) open_Adv)) ;
- PropClosedDay p d = prop (mkCl p.name (mkVP (mkVP d.habitual) closed_Adv)) ;
-
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosten"))) ;
- ItCost item price = prop (mkCl item (mkV2 (mkV "kosten")) price) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss ("wir sehen uns"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss ("wir sehen uns"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("wir sehen uns")))
- (mkText (mkPhrase (mkUtt d)) (mkPhrase (mkUtt p.at))) ;
-
-
--- Relations are expressed as "my wife" or "my son's wife", as defined by $xOf$
--- below. Languages without productive genitives must use an equivalent of
--- "the wife of my son" for non-pronouns.
-
- Wife = xOf sing (mkN "Frau" "Frauen" feminine) ;
- Husband = xOf sing L.man_N ;
- Son = xOf sing (mkN "Sohn" "Shne" masculine) ;
- Daughter = xOf sing (mkN "Tochter" "Tchter" feminine) ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDay "Montag" ;
- Tuesday = mkDay "Dienstag" ;
- Wednesday = mkDay "Mittwoch" ;
- Thursday = mkDay "Donnerstag" ;
- Friday = mkDay "Freitag" ;
- Saturday = mkDay "Samstag" ;
- Sunday = mkDay "Sonntag" ;
-
- Tomorrow = ParadigmsGer.mkAdv "morgen" ;
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA "billig") ;
- TheMostExpensive = mkSuperl (mkA "teuer") ;
- TheMostPopular = mkSuperl (mkA "beliebt") ;
- TheWorst = mkSuperl (mkA "schlimm") ;
-
- SuperlPlace sup p = placeNP sup p ;
-
-
--- means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN "Bus" "Bus" "Bus" "Bus" "Buss" "Buss" masculine) ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "Fhre" "Fhre" "Fhre" "Fhre" "Fhren" "Fhren" feminine) ;
- Plane = mkTransport (mkN "Flugzeug" "Flugzeug" "Flugzeug" "Flugzeug" "Flugzeuge" "Flugzeuge" neuter) ;
- Subway = mkTransport (mkN "U-Bahn" "U-Bahn" "U-Bahn" "U-Bahn" "U-Bahnen" "U-Bahnen" feminine) ;
- Taxi = mkTransport (mkN "Taxi" "Taxi" "Taxi" "Taxi" "Taxis" "Taxis" neuter) ;
- Train = mkTransport (mkN "Zug" "Zug" "Zug" "Zug" "Zge" "Zge" masculine) ;
- Tram = mkTransport (mkN "Straenbahn" "Straenbahn" "Straenbahn" "Straenbahn" "Straenbahnen" "Straenbahnen" feminine) ;
-
- ByFoot = ParadigmsGer.mkAdv "zu Fu" ;
-
-
- HowFar place = mkQS (mkQCl far_IAdv place.name) ;
- HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxGer.mkAdv von_Prep x.name)) (ParadigmsGer.mkAdv "entfernt"))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkCl (mkVP (SyntaxGer.mkAdv zu_Prep (mkNP (mkNP y.name (SyntaxGer.mkAdv von_Prep x.name)) t))))) ;
- HowFarBy y t = mkQS (mkQCl far_IAdv (mkCl (mkVP (SyntaxGer.mkAdv zu_Prep (mkNP y.name t))))) ;
-
- WhichTranspPlace trans place =
- mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
-
- IsTranspPlace trans place =
- mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ;
-
-
-
-
- oper
-
- mkNat : Str -> Str -> Str -> {lang : CN ; prop : A ; country : NP} = \co, la, adj ->
- {lang = mkCN (mkN la la neuter) ;
- prop = mkA adj ; country = mkNP (mkPN co)} ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day = mkNP (mkPN d masculine) in
- {name = day ;
- point = SyntaxGer.mkAdv (mkPrep "am" dative) day ; ---- am
- habitual = ParadigmsGer.mkAdv (d + "s") ----
- } ;
-
- mkPlace : N -> Prep -> Prep -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,at,to -> {
- name = mkCN p ;
- at = at ;
- to = to ;
- isPl = False
- } ;
-
- open_Adv = ParadigmsGer.mkAdv "geffnet" ; ---- Adv to get right word order easily
- closed_Adv = ParadigmsGer.mkAdv "geschlossen" ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
-
-
- mkSuperl : A -> Det = \a -> SyntaxGer.mkDet the_Art (SyntaxGer.mkOrd a) ;
-
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxGer.mkAdv by8means_Prep (mkNP the_Det n)
- } ;
-
- far_IAdv = ss "wie weit" ** {lock_IAdv = <>} ;
-
-}
diff --git a/testsuite/canonical/run.sh b/testsuite/canonical/run.sh
index 7e5a90f12..be7d1ff6c 100755
--- a/testsuite/canonical/run.sh
+++ b/testsuite/canonical/run.sh
@@ -12,17 +12,28 @@ else
echo "Canonical grammar compiles: OK"
fi
+echo ""
+
# https://github.com/GrammaticalFramework/gf-core/issues/101
stack run -- --batch --output-format=canonical_gf grammars/PhrasebookGer.gf
-for s in c2 objCtrl; do
- grep VRead --after-context=216 canonical/PhrasebookGer.gf | grep "$s" > /dev/null
- if [ $? -ne 1 ]; then
- echo "Canonical grammar contains `$s`: FAIL"
- FAILURES=$((FAILURES+1))
- else
- echo "Canonical grammar does not contain `$s`: OK"
- fi
-done
+# for s in c2 objCtrl; do
+# grep VRead --after-context=216 canonical/PhrasebookGer.gf | grep "$s" > /dev/null
+# if [ $? -ne 1 ]; then
+# echo "Canonical grammar contains \`$s\`: FAIL"
+# FAILURES=$((FAILURES+1))
+# else
+# echo "Canonical grammar does not contain \`$s\`: OK"
+# fi
+# done
+diff canonical/PhrasebookGer.gf gold/PhrasebookGer.gf
+if [ $? -ne 0 ]; then
+ echo "Canonical grammar doesn't match gold version: FAIL"
+ FAILURES=$((FAILURES+1))
+else
+ echo "Canonical grammar matches gold version: OK"
+fi
+
+echo ""
# https://github.com/GrammaticalFramework/gf-core/issues/102
stack run -- --batch --output-format=canonical_gf grammars/FoodsFin.gf
@@ -34,6 +45,9 @@ else
echo "Canonical grammar matches gold version: OK"
fi
+echo ""
+
+# Summary
if [ $FAILURES -ne 0 ]; then
echo "Failures: $FAILURES"
exit 1