From c6f4edaea5f1074ba682fac5d711016f0136998f Mon Sep 17 00:00:00 2001
From: "John J. Camilleri"
Date: Wed, 4 Jul 2018 10:09:58 +0200
Subject: [PATCH] Remove examples directory; these now live in gf-contrib
All changes have been reflected in the gf-contrib repository:
https://github.com/GrammaticalFramework/gf-contrib
Now, for WebSetup to build the example grammars, one must have gf-contrib
cloned in the same top-level directory as GF. When this isn't the case,
WebSetup displays a notice without failing.
---
WebSetup.hs | 44 +-
examples/README.md | 16 -
examples/foods/CharactersGla.gf | 13 -
examples/foods/CharactersGle.gf | 13 -
examples/foods/Foods.gf | 15 -
examples/foods/FoodsAfr.gf | 77 ---
examples/foods/FoodsAmh.gf | 21 -
examples/foods/FoodsBul.gf | 43 --
examples/foods/FoodsCat.gf | 6 -
examples/foods/FoodsChi.gf | 35 -
examples/foods/FoodsCze.gf | 35 -
examples/foods/FoodsDut.gf | 58 --
examples/foods/FoodsEng.gf | 43 --
examples/foods/FoodsEpo.gf | 48 --
examples/foods/FoodsFin.gf | 6 -
examples/foods/FoodsFre.gf | 31 -
examples/foods/FoodsGer.gf | 6 -
examples/foods/FoodsGla.gf | 67 --
examples/foods/FoodsGle.gf | 60 --
examples/foods/FoodsHeb.gf | 107 ---
examples/foods/FoodsHin.gf | 75 ---
examples/foods/FoodsI.gf | 29 -
examples/foods/FoodsIce.gf | 83 ---
examples/foods/FoodsIta.gf | 7 -
examples/foods/FoodsJpn.gf | 71 --
examples/foods/FoodsLav.gf | 90 ---
examples/foods/FoodsMkd.gf | 120 ----
examples/foods/FoodsMlt.gf | 105 ---
examples/foods/FoodsMon.gf | 48 --
examples/foods/FoodsNep.gf | 60 --
examples/foods/FoodsOri.gf | 30 -
examples/foods/FoodsPes.gf | 65 --
examples/foods/FoodsPor.gf | 78 ---
examples/foods/FoodsRon.gf | 72 --
examples/foods/FoodsSpa.gf | 30 -
examples/foods/FoodsSwe.gf | 6 -
examples/foods/FoodsTha.gf | 32 -
examples/foods/FoodsTsn.gf | 177 -----
examples/foods/FoodsTur.gf | 140 ----
examples/foods/FoodsUrd.gf | 53 --
examples/foods/LexFoods.gf | 15 -
examples/foods/LexFoodsCat.gf | 18 -
examples/foods/LexFoodsFin.gf | 21 -
examples/foods/LexFoodsGer.gf | 17 -
examples/foods/LexFoodsIta.gf | 16 -
examples/foods/LexFoodsSwe.gf | 17 -
examples/foods/Makefile | 8 -
examples/foods/MutationsGla.gf | 53 --
examples/foods/MutationsGle.gf | 92 ---
examples/foods/README | 8 -
examples/foods/ResCze.gf | 46 --
examples/foods/transFoodsHin.gf | 75 ---
examples/letter/Letter.gf | 83 ---
examples/letter/LetterEng.gf | 158 -----
examples/letter/LetterFin.gf | 181 -----
examples/letter/LetterFre.gf | 171 -----
examples/letter/LetterHeb.gf | 216 ------
examples/letter/LetterRus.gf | 178 -----
examples/letter/LetterSwe.gf | 164 -----
examples/letter/README | 35 -
examples/letter/editor/editor.html | 17 -
examples/phrasebook/Clone.hs | 65 --
examples/phrasebook/Compile.hs | 47 --
examples/phrasebook/DisambPhrasebookEng.gf | 84 ---
examples/phrasebook/DisambPhrasebookRon.gf | 11 -
examples/phrasebook/Greetings.gf | 28 -
examples/phrasebook/GreetingsBul.gf | 31 -
examples/phrasebook/GreetingsCat.gf | 31 -
examples/phrasebook/GreetingsChi.gf | 33 -
examples/phrasebook/GreetingsDan.gf | 29 -
examples/phrasebook/GreetingsDut.gf | 30 -
examples/phrasebook/GreetingsEng.gf | 27 -
examples/phrasebook/GreetingsEst.gf | 26 -
examples/phrasebook/GreetingsFin.gf | 30 -
examples/phrasebook/GreetingsFre.gf | 31 -
examples/phrasebook/GreetingsGer.gf | 31 -
examples/phrasebook/GreetingsHin.gf | 31 -
examples/phrasebook/GreetingsIta.gf | 31 -
examples/phrasebook/GreetingsJpn.gf | 30 -
examples/phrasebook/GreetingsLav.gf | 33 -
examples/phrasebook/GreetingsNor.gf | 28 -
examples/phrasebook/GreetingsPes.gf | 29 -
examples/phrasebook/GreetingsPol.gf | 27 -
examples/phrasebook/GreetingsRon.gf | 31 -
examples/phrasebook/GreetingsRus.gf | 29 -
examples/phrasebook/GreetingsSnd.gf | 29 -
examples/phrasebook/GreetingsSpa.gf | 31 -
examples/phrasebook/GreetingsSwe.gf | 29 -
examples/phrasebook/GreetingsTha.gf | 35 -
examples/phrasebook/GreetingsUrd.gf | 29 -
examples/phrasebook/Implementation.html | 500 --------------
examples/phrasebook/Makefile | 59 --
examples/phrasebook/Makefile2 | 38 --
examples/phrasebook/Ontology.html | 372 -----------
examples/phrasebook/Phrasebook.gf | 8 -
examples/phrasebook/PhrasebookBul.gf | 9 -
examples/phrasebook/PhrasebookCat.gf | 11 -
examples/phrasebook/PhrasebookChi.gf | 11 -
examples/phrasebook/PhrasebookDan.gf | 9 -
examples/phrasebook/PhrasebookDut.gf | 10 -
examples/phrasebook/PhrasebookEng.gf | 12 -
examples/phrasebook/PhrasebookEst.gf | 7 -
examples/phrasebook/PhrasebookFin.gf | 9 -
examples/phrasebook/PhrasebookFre.gf | 11 -
examples/phrasebook/PhrasebookGer.gf | 10 -
examples/phrasebook/PhrasebookHin.gf | 10 -
examples/phrasebook/PhrasebookIta.gf | 13 -
examples/phrasebook/PhrasebookJpn.gf | 7 -
examples/phrasebook/PhrasebookLav.gf | 7 -
examples/phrasebook/PhrasebookNor.gf | 9 -
examples/phrasebook/PhrasebookPes.gf | 9 -
examples/phrasebook/PhrasebookPol.gf | 13 -
examples/phrasebook/PhrasebookRon.gf | 11 -
examples/phrasebook/PhrasebookRus.gf | 12 -
examples/phrasebook/PhrasebookSnd.gf | 9 -
examples/phrasebook/PhrasebookSpa.gf | 12 -
examples/phrasebook/PhrasebookSwe.gf | 11 -
examples/phrasebook/PhrasebookTha.gf | 11 -
examples/phrasebook/PhrasebookUrd.gf | 9 -
examples/phrasebook/Sentences.gf | 222 -------
examples/phrasebook/SentencesBul.gf | 54 --
examples/phrasebook/SentencesCat.gf | 93 ---
examples/phrasebook/SentencesChi.gf | 62 --
examples/phrasebook/SentencesDan.gf | 8 -
examples/phrasebook/SentencesDut.gf | 53 --
examples/phrasebook/SentencesEng.gf | 4 -
examples/phrasebook/SentencesEst.gf | 63 --
examples/phrasebook/SentencesFin.gf | 56 --
examples/phrasebook/SentencesFre.gf | 47 --
examples/phrasebook/SentencesGer.gf | 50 --
examples/phrasebook/SentencesHin.gf | 42 --
examples/phrasebook/SentencesI.gf | 302 ---------
examples/phrasebook/SentencesIta.gf | 78 ---
examples/phrasebook/SentencesJpn.gf | 62 --
examples/phrasebook/SentencesLav.gf | 50 --
examples/phrasebook/SentencesNor.gf | 10 -
examples/phrasebook/SentencesPes.gf | 8 -
examples/phrasebook/SentencesPol.gf | 52 --
examples/phrasebook/SentencesRon.gf | 71 --
examples/phrasebook/SentencesRus.gf | 25 -
examples/phrasebook/SentencesSnd.gf | 38 --
examples/phrasebook/SentencesSpa.gf | 104 ---
examples/phrasebook/SentencesSwe.gf | 14 -
examples/phrasebook/SentencesTha.gf | 26 -
examples/phrasebook/SentencesUrd.gf | 36 -
examples/phrasebook/Update.hs | 27 -
examples/phrasebook/Words.gf | 254 --------
examples/phrasebook/WordsBul.gf | 305 ---------
examples/phrasebook/WordsCat.gf | 302 ---------
examples/phrasebook/WordsChi.gf | 334 ----------
examples/phrasebook/WordsDan.gf | 260 --------
examples/phrasebook/WordsDut.gf | 294 ---------
examples/phrasebook/WordsEng.gf | 314 ---------
examples/phrasebook/WordsEst.gf | 372 -----------
examples/phrasebook/WordsFin.gf | 334 ----------
examples/phrasebook/WordsFre.gf | 277 --------
examples/phrasebook/WordsGer.gf | 262 --------
examples/phrasebook/WordsHin.gf | 280 --------
examples/phrasebook/WordsIta.gf | 269 --------
examples/phrasebook/WordsJpn.gf | 385 -----------
examples/phrasebook/WordsLav.gf | 319 ---------
examples/phrasebook/WordsNor.gf | 273 --------
examples/phrasebook/WordsPes.gf | 289 --------
examples/phrasebook/WordsPol.gf | 354 ----------
examples/phrasebook/WordsRon.gf | 277 --------
examples/phrasebook/WordsRus.gf | 275 --------
examples/phrasebook/WordsSnd.gf | 281 --------
examples/phrasebook/WordsSpa.gf | 301 ---------
examples/phrasebook/WordsSwe.gf | 302 ---------
examples/phrasebook/WordsTha.gf | 319 ---------
examples/phrasebook/WordsUrd.gf | 280 --------
examples/phrasebook/add_greetings.gfupdate | 35 -
examples/phrasebook/doc-phrasebook.html | 688 --------------------
examples/phrasebook/doc-phrasebook.txt | 410 ------------
examples/phrasebook/help-phrasebook.html | 43 --
examples/phrasebook/help-phrasebook.txt | 23 -
examples/phrasebook/missing.txt | 21 -
examples/phrasebook/pgraph.png | Bin 67863 -> 0 bytes
examples/phrasebook/picpic.jpg | Bin 214926 -> 0 bytes
examples/phrasebook/testScript.gfs | 109 ----
examples/phrasebook/thai.png | Bin 2221 -> 0 bytes
examples/phrasebook/www/old-phrasebook.html | 30 -
examples/phrasebook/www/phrasebook.css | 37 --
examples/phrasebook/www/phrasebook.js | 213 ------
examples/phrasebook/www/support.js | 205 ------
185 files changed, 34 insertions(+), 16828 deletions(-)
delete mode 100644 examples/README.md
delete mode 100644 examples/foods/CharactersGla.gf
delete mode 100644 examples/foods/CharactersGle.gf
delete mode 100644 examples/foods/Foods.gf
delete mode 100644 examples/foods/FoodsAfr.gf
delete mode 100644 examples/foods/FoodsAmh.gf
delete mode 100644 examples/foods/FoodsBul.gf
delete mode 100644 examples/foods/FoodsCat.gf
delete mode 100644 examples/foods/FoodsChi.gf
delete mode 100644 examples/foods/FoodsCze.gf
delete mode 100644 examples/foods/FoodsDut.gf
delete mode 100644 examples/foods/FoodsEng.gf
delete mode 100644 examples/foods/FoodsEpo.gf
delete mode 100644 examples/foods/FoodsFin.gf
delete mode 100644 examples/foods/FoodsFre.gf
delete mode 100644 examples/foods/FoodsGer.gf
delete mode 100644 examples/foods/FoodsGla.gf
delete mode 100644 examples/foods/FoodsGle.gf
delete mode 100644 examples/foods/FoodsHeb.gf
delete mode 100644 examples/foods/FoodsHin.gf
delete mode 100644 examples/foods/FoodsI.gf
delete mode 100644 examples/foods/FoodsIce.gf
delete mode 100644 examples/foods/FoodsIta.gf
delete mode 100644 examples/foods/FoodsJpn.gf
delete mode 100644 examples/foods/FoodsLav.gf
delete mode 100644 examples/foods/FoodsMkd.gf
delete mode 100644 examples/foods/FoodsMlt.gf
delete mode 100644 examples/foods/FoodsMon.gf
delete mode 100644 examples/foods/FoodsNep.gf
delete mode 100644 examples/foods/FoodsOri.gf
delete mode 100644 examples/foods/FoodsPes.gf
delete mode 100644 examples/foods/FoodsPor.gf
delete mode 100644 examples/foods/FoodsRon.gf
delete mode 100644 examples/foods/FoodsSpa.gf
delete mode 100644 examples/foods/FoodsSwe.gf
delete mode 100644 examples/foods/FoodsTha.gf
delete mode 100644 examples/foods/FoodsTsn.gf
delete mode 100644 examples/foods/FoodsTur.gf
delete mode 100644 examples/foods/FoodsUrd.gf
delete mode 100644 examples/foods/LexFoods.gf
delete mode 100644 examples/foods/LexFoodsCat.gf
delete mode 100644 examples/foods/LexFoodsFin.gf
delete mode 100644 examples/foods/LexFoodsGer.gf
delete mode 100644 examples/foods/LexFoodsIta.gf
delete mode 100644 examples/foods/LexFoodsSwe.gf
delete mode 100644 examples/foods/Makefile
delete mode 100644 examples/foods/MutationsGla.gf
delete mode 100644 examples/foods/MutationsGle.gf
delete mode 100644 examples/foods/README
delete mode 100644 examples/foods/ResCze.gf
delete mode 100644 examples/foods/transFoodsHin.gf
delete mode 100644 examples/letter/Letter.gf
delete mode 100644 examples/letter/LetterEng.gf
delete mode 100644 examples/letter/LetterFin.gf
delete mode 100644 examples/letter/LetterFre.gf
delete mode 100644 examples/letter/LetterHeb.gf
delete mode 100644 examples/letter/LetterRus.gf
delete mode 100644 examples/letter/LetterSwe.gf
delete mode 100644 examples/letter/README
delete mode 100644 examples/letter/editor/editor.html
delete mode 100644 examples/phrasebook/Clone.hs
delete mode 100644 examples/phrasebook/Compile.hs
delete mode 100644 examples/phrasebook/DisambPhrasebookEng.gf
delete mode 100644 examples/phrasebook/DisambPhrasebookRon.gf
delete mode 100644 examples/phrasebook/Greetings.gf
delete mode 100644 examples/phrasebook/GreetingsBul.gf
delete mode 100644 examples/phrasebook/GreetingsCat.gf
delete mode 100644 examples/phrasebook/GreetingsChi.gf
delete mode 100644 examples/phrasebook/GreetingsDan.gf
delete mode 100644 examples/phrasebook/GreetingsDut.gf
delete mode 100644 examples/phrasebook/GreetingsEng.gf
delete mode 100644 examples/phrasebook/GreetingsEst.gf
delete mode 100644 examples/phrasebook/GreetingsFin.gf
delete mode 100644 examples/phrasebook/GreetingsFre.gf
delete mode 100644 examples/phrasebook/GreetingsGer.gf
delete mode 100644 examples/phrasebook/GreetingsHin.gf
delete mode 100644 examples/phrasebook/GreetingsIta.gf
delete mode 100644 examples/phrasebook/GreetingsJpn.gf
delete mode 100644 examples/phrasebook/GreetingsLav.gf
delete mode 100644 examples/phrasebook/GreetingsNor.gf
delete mode 100644 examples/phrasebook/GreetingsPes.gf
delete mode 100644 examples/phrasebook/GreetingsPol.gf
delete mode 100644 examples/phrasebook/GreetingsRon.gf
delete mode 100644 examples/phrasebook/GreetingsRus.gf
delete mode 100644 examples/phrasebook/GreetingsSnd.gf
delete mode 100644 examples/phrasebook/GreetingsSpa.gf
delete mode 100644 examples/phrasebook/GreetingsSwe.gf
delete mode 100644 examples/phrasebook/GreetingsTha.gf
delete mode 100644 examples/phrasebook/GreetingsUrd.gf
delete mode 100644 examples/phrasebook/Implementation.html
delete mode 100644 examples/phrasebook/Makefile
delete mode 100644 examples/phrasebook/Makefile2
delete mode 100644 examples/phrasebook/Ontology.html
delete mode 100644 examples/phrasebook/Phrasebook.gf
delete mode 100644 examples/phrasebook/PhrasebookBul.gf
delete mode 100644 examples/phrasebook/PhrasebookCat.gf
delete mode 100644 examples/phrasebook/PhrasebookChi.gf
delete mode 100644 examples/phrasebook/PhrasebookDan.gf
delete mode 100644 examples/phrasebook/PhrasebookDut.gf
delete mode 100644 examples/phrasebook/PhrasebookEng.gf
delete mode 100644 examples/phrasebook/PhrasebookEst.gf
delete mode 100644 examples/phrasebook/PhrasebookFin.gf
delete mode 100644 examples/phrasebook/PhrasebookFre.gf
delete mode 100644 examples/phrasebook/PhrasebookGer.gf
delete mode 100644 examples/phrasebook/PhrasebookHin.gf
delete mode 100644 examples/phrasebook/PhrasebookIta.gf
delete mode 100644 examples/phrasebook/PhrasebookJpn.gf
delete mode 100644 examples/phrasebook/PhrasebookLav.gf
delete mode 100644 examples/phrasebook/PhrasebookNor.gf
delete mode 100644 examples/phrasebook/PhrasebookPes.gf
delete mode 100644 examples/phrasebook/PhrasebookPol.gf
delete mode 100644 examples/phrasebook/PhrasebookRon.gf
delete mode 100644 examples/phrasebook/PhrasebookRus.gf
delete mode 100644 examples/phrasebook/PhrasebookSnd.gf
delete mode 100644 examples/phrasebook/PhrasebookSpa.gf
delete mode 100644 examples/phrasebook/PhrasebookSwe.gf
delete mode 100644 examples/phrasebook/PhrasebookTha.gf
delete mode 100644 examples/phrasebook/PhrasebookUrd.gf
delete mode 100644 examples/phrasebook/Sentences.gf
delete mode 100644 examples/phrasebook/SentencesBul.gf
delete mode 100644 examples/phrasebook/SentencesCat.gf
delete mode 100644 examples/phrasebook/SentencesChi.gf
delete mode 100644 examples/phrasebook/SentencesDan.gf
delete mode 100644 examples/phrasebook/SentencesDut.gf
delete mode 100644 examples/phrasebook/SentencesEng.gf
delete mode 100644 examples/phrasebook/SentencesEst.gf
delete mode 100644 examples/phrasebook/SentencesFin.gf
delete mode 100644 examples/phrasebook/SentencesFre.gf
delete mode 100644 examples/phrasebook/SentencesGer.gf
delete mode 100644 examples/phrasebook/SentencesHin.gf
delete mode 100644 examples/phrasebook/SentencesI.gf
delete mode 100644 examples/phrasebook/SentencesIta.gf
delete mode 100644 examples/phrasebook/SentencesJpn.gf
delete mode 100644 examples/phrasebook/SentencesLav.gf
delete mode 100644 examples/phrasebook/SentencesNor.gf
delete mode 100644 examples/phrasebook/SentencesPes.gf
delete mode 100644 examples/phrasebook/SentencesPol.gf
delete mode 100644 examples/phrasebook/SentencesRon.gf
delete mode 100644 examples/phrasebook/SentencesRus.gf
delete mode 100644 examples/phrasebook/SentencesSnd.gf
delete mode 100644 examples/phrasebook/SentencesSpa.gf
delete mode 100644 examples/phrasebook/SentencesSwe.gf
delete mode 100644 examples/phrasebook/SentencesTha.gf
delete mode 100644 examples/phrasebook/SentencesUrd.gf
delete mode 100644 examples/phrasebook/Update.hs
delete mode 100644 examples/phrasebook/Words.gf
delete mode 100644 examples/phrasebook/WordsBul.gf
delete mode 100644 examples/phrasebook/WordsCat.gf
delete mode 100644 examples/phrasebook/WordsChi.gf
delete mode 100644 examples/phrasebook/WordsDan.gf
delete mode 100644 examples/phrasebook/WordsDut.gf
delete mode 100644 examples/phrasebook/WordsEng.gf
delete mode 100644 examples/phrasebook/WordsEst.gf
delete mode 100644 examples/phrasebook/WordsFin.gf
delete mode 100644 examples/phrasebook/WordsFre.gf
delete mode 100644 examples/phrasebook/WordsGer.gf
delete mode 100644 examples/phrasebook/WordsHin.gf
delete mode 100644 examples/phrasebook/WordsIta.gf
delete mode 100644 examples/phrasebook/WordsJpn.gf
delete mode 100644 examples/phrasebook/WordsLav.gf
delete mode 100644 examples/phrasebook/WordsNor.gf
delete mode 100644 examples/phrasebook/WordsPes.gf
delete mode 100644 examples/phrasebook/WordsPol.gf
delete mode 100644 examples/phrasebook/WordsRon.gf
delete mode 100644 examples/phrasebook/WordsRus.gf
delete mode 100644 examples/phrasebook/WordsSnd.gf
delete mode 100644 examples/phrasebook/WordsSpa.gf
delete mode 100644 examples/phrasebook/WordsSwe.gf
delete mode 100644 examples/phrasebook/WordsTha.gf
delete mode 100644 examples/phrasebook/WordsUrd.gf
delete mode 100644 examples/phrasebook/add_greetings.gfupdate
delete mode 100644 examples/phrasebook/doc-phrasebook.html
delete mode 100644 examples/phrasebook/doc-phrasebook.txt
delete mode 100644 examples/phrasebook/help-phrasebook.html
delete mode 100644 examples/phrasebook/help-phrasebook.txt
delete mode 100644 examples/phrasebook/missing.txt
delete mode 100644 examples/phrasebook/pgraph.png
delete mode 100644 examples/phrasebook/picpic.jpg
delete mode 100644 examples/phrasebook/testScript.gfs
delete mode 100644 examples/phrasebook/thai.png
delete mode 100644 examples/phrasebook/www/old-phrasebook.html
delete mode 100644 examples/phrasebook/www/phrasebook.css
delete mode 100644 examples/phrasebook/www/phrasebook.js
delete mode 100644 examples/phrasebook/www/support.js
diff --git a/WebSetup.hs b/WebSetup.hs
index ee9f741d6..e18847a6b 100644
--- a/WebSetup.hs
+++ b/WebSetup.hs
@@ -1,12 +1,13 @@
module WebSetup(buildWeb,installWeb,copyWeb,numJobs,execute) where
-import System.Directory(createDirectoryIfMissing,copyFile)
+import System.Directory(createDirectoryIfMissing,copyFile,doesDirectoryExist)
import System.FilePath((>),dropExtension)
import System.Process(rawSystem)
import System.Exit(ExitCode(..))
import Distribution.Simple.Setup(BuildFlags(..),Flag(..),CopyDest(..),copyDest)
import Distribution.Simple.LocalBuildInfo(datadir,buildDir,absoluteInstallDirs)
-import Distribution.Simple.Utils(die)
+import Distribution.Simple.Utils(die,noticeNoWrap)
+import qualified Distribution.Verbosity
{-
To test the GF web services, the minibar and the grammar editor, use
@@ -16,6 +17,16 @@ import Distribution.Simple.Utils(die)
Chrome). The example grammars listed below will be available in the minibar.
-}
+{-
+ Update 2018-07-04
+
+ The example grammars have now been removed from the GF repository.
+ This script will look for them in ../gf-contrib and build them from there if possible.
+ If not, the user will be given a message and nothing is build or copied.
+ (Unfortunately cabal install seems to hide all messages from stdout,
+ so users won't see this message unless they check the log.)
+-}
+
example_grammars = -- :: [(pgf, subdir, src)]
[("Letter.pgf","letter",letterSrc)
,("Foods.pgf","foods",foodsSrc)
@@ -34,10 +45,20 @@ example_grammars = -- :: [(pgf, subdir, src)]
letterSrc = ["Letter"++lang++".gf"|lang<-letterLangs]
letterLangs = words "Eng Fin Fre Heb Rus Swe"
+contrib_dir :: FilePath
+contrib_dir = "..">"gf-contrib"
-buildWeb gf (flags,pkg,lbi) =
- do --putStrLn "buildWeb"
- mapM_ build_pgf example_grammars
+buildWeb gf (flags,pkg,lbi) = do
+ contrib_exists <- doesDirectoryExist contrib_dir
+ if contrib_exists
+ then mapM_ build_pgf example_grammars
+ else noticeNoWrap Distribution.Verbosity.normal $ unlines
+ [ "---"
+ , "Example grammars are no longer included in the main GF repository, but have moved to gf-contrib."
+ , "If you want these example grammars to be built, clone this repository in the same top-level directory as GF:"
+ , "https://github.com/GrammaticalFramework/gf-contrib.git"
+ , "---"
+ ]
where
gfo_dir = buildDir lbi > "examples"
@@ -47,7 +68,7 @@ buildWeb gf (flags,pkg,lbi) =
execute gf args
where
tmp_dir = gfo_dir>subdir
- dir = "examples">subdir
+ dir = contrib_dir>subdir
args = numJobs flags++["-make","-s"] -- ,"-optimize-pgf"
++["--gfo-dir="++tmp_dir,
"--gf-lib-path="++buildDir lbi > "rgl",
@@ -63,10 +84,13 @@ copyWeb flags = setupWeb dest
NoFlag -> NoCopyDest
Flag d -> d
-setupWeb dest (pkg,lbi) =
- do mapM_ (createDirectoryIfMissing True) [grammars_dir,cloud_dir]
- mapM_ copy_pgf example_grammars
- copyGFLogo
+setupWeb dest (pkg,lbi) = do
+ mapM_ (createDirectoryIfMissing True) [grammars_dir,cloud_dir]
+ contrib_exists <- doesDirectoryExist contrib_dir
+ if contrib_exists
+ then mapM_ copy_pgf example_grammars
+ else return () -- message already displayed from buildWeb
+ copyGFLogo
where
grammars_dir = www_dir > "grammars"
cloud_dir = www_dir > "tmp" -- hmm
diff --git a/examples/README.md b/examples/README.md
deleted file mode 100644
index e073602ab..000000000
--- a/examples/README.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# `/examples`
-
-All contributions (`contrib` and `examples` folders) have now been
-moved to a separate git repository at:
-
-https://github.com/GrammaticalFramework/gf-contrib
-
-This `examples` folder remains because its contents are compiled by
-SetupWeb, so that when you run the GF cloud server locally you already
-have some toy grammars to play with.
-
-Any updates to these grammars should be made at the gf-contrib repository
-above; changes will be copied from there to here manually.
-
-John J. Camilleri,
-2013-09-16
diff --git a/examples/foods/CharactersGla.gf b/examples/foods/CharactersGla.gf
deleted file mode 100644
index 007ca7a24..000000000
--- a/examples/foods/CharactersGla.gf
+++ /dev/null
@@ -1,13 +0,0 @@
---# -coding=latin1
-resource CharactersGla = {
-
- --Character classes
- oper
- vowel : pattern Str = #("a"|"e"|"i"|"o"|"u"|""|""|""|""|"") ;
- vowelCap : pattern Str = #("A"|"E"|"I"|"O"|"U"|""|""|""|""|"") ;
- consonant : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"z") ;
- consonantCap : pattern Str = #("B"|"C"|"D"|"F"|"G"|"H"|"J"|"K"|"L"|"M"|"N"|"P"|"Q"|"R"|"S"|"T"|"V"|"W"|"X"|"Z") ;
- broadVowel : pattern Str = #("a"|"o"|"u"|""|""|"") ;
- slenderVowel : pattern Str = #("e"|"i"|""|"") ;
-
-}
\ No newline at end of file
diff --git a/examples/foods/CharactersGle.gf b/examples/foods/CharactersGle.gf
deleted file mode 100644
index 8315703a6..000000000
--- a/examples/foods/CharactersGle.gf
+++ /dev/null
@@ -1,13 +0,0 @@
---# -coding=latin1
-resource CharactersGle = {
-
- --Character classes
- oper
- vowel : pattern Str = #("a"|"e"|"i"|"o"|"u"|""|""|""|""|"") ;
- vowelCap : pattern Str = #("A"|"E"|"I"|"O"|"U"|""|""|""|""|"") ;
- consonant : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"z") ;
- consonantCap : pattern Str = #("B"|"C"|"D"|"F"|"G"|"H"|"J"|"K"|"L"|"M"|"N"|"P"|"Q"|"R"|"S"|"T"|"V"|"W"|"X"|"Z") ;
- broadVowel : pattern Str = #("a"|"o"|"u"|""|""|"") ;
- slenderVowel : pattern Str = #("e"|"i"|""|"") ;
-
-}
\ No newline at end of file
diff --git a/examples/foods/Foods.gf b/examples/foods/Foods.gf
deleted file mode 100644
index 8ea02f39d..000000000
--- a/examples/foods/Foods.gf
+++ /dev/null
@@ -1,15 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
-
-abstract Foods = {
- flags startcat = Comment ;
- cat
- Comment ; Item ; Kind ; Quality ;
- fun
- Pred : Item -> Quality -> Comment ;
- This, That, These, Those : Kind -> Item ;
- Mod : Quality -> Kind -> Kind ;
- Wine, Cheese, Fish, Pizza : Kind ;
- Very : Quality -> Quality ;
- Fresh, Warm, Italian,
- Expensive, Delicious, Boring : Quality ;
-}
diff --git a/examples/foods/FoodsAfr.gf b/examples/foods/FoodsAfr.gf
deleted file mode 100644
index a9c4eec77..000000000
--- a/examples/foods/FoodsAfr.gf
+++ /dev/null
@@ -1,77 +0,0 @@
--- (c) 2009 Laurette Pretorius Sr & Jr and Ansu Berg under LGPL
---# -coding=latin1
-
-concrete FoodsAfr of Foods = open Prelude, Predef in{
- lincat
- Comment = {s: Str} ;
- Kind = {s: Number => Str} ;
- Item = {s: Str ; n: Number} ;
- Quality = {s: AdjAP => Str} ;
-
- lin
- Pred item quality = {s = item.s ++ "is" ++ (quality.s ! Predic)};
- This kind = {s = "hierdie" ++ (kind.s ! Sg); n = Sg};
- That kind = {s = "daardie" ++ (kind.s ! Sg); n = Sg};
- These kind = {s = "hierdie" ++ (kind.s ! Pl); n = Pl};
- Those kind = {s = "daardie" ++ (kind.s ! Pl); n = Pl};
- Mod quality kind = {s = table{n => (quality.s ! Attr) ++ (kind.s!n)}};
-
- Wine = declNoun_e "wyn";
- Cheese = declNoun_aa "kaas";
- Fish = declNoun_ss "vis";
- Pizza = declNoun_s "pizza";
-
- Very quality = veryAdj quality;
-
- Fresh = regAdj "vars";
- Warm = regAdj "warm";
- Italian = smartAdj_e "Italiaans";
- Expensive = regAdj "duur";
- Delicious = smartAdj_e "heerlik";
- Boring = smartAdj_e "vervelig";
-
- param
- AdjAP = Attr | Predic ;
- Number = Sg | Pl ;
-
- oper
- --Noun operations (wyn, kaas, vis, pizza)
-
- declNoun_aa: Str -> {s: Number => Str} = \x ->
- let v = tk 2 x
- in
- {s = table{Sg => x ; Pl => v + (last x) +"e"}};
-
- declNoun_e: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + "e"}} ;
- declNoun_s: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + "s"}} ;
-
- declNoun_ss: Str -> {s: Number => Str} = \x -> {s = table{Sg => x ; Pl => x + (last x) + "e"}} ;
-
-
- --Adjective operations
-
- mkAdj : Str -> Str -> {s: AdjAP => Str} = \x,y -> {s = table{Attr => x; Predic => y}};
-
- declAdj_e : Str -> {s : AdjAP=> Str} = \x -> mkAdj (x + "e") x;
- declAdj_g : Str -> {s : AdjAP=> Str} = \w ->
- let v = init w
- in mkAdj (v + "") w ;
-
- declAdj_oog : Str -> {s : AdjAP=> Str} = \w ->
- let v = init w
- in
- let i = init v
- in mkAdj (i + "") w ;
-
- regAdj : Str -> {s : AdjAP=> Str} = \x -> mkAdj x x;
-
- veryAdj : {s: AdjAP => Str} -> {s : AdjAP=> Str} = \x -> {s = table{a => "baie" ++ (x.s!a)}};
-
-
- smartAdj_e : Str -> {s : AdjAP=> Str} = \a -> case a of
- {
- _ + "oog" => declAdj_oog a ;
- _ + ("e" | "ie" | "o" | "oe") + "g" => declAdj_g a ;
- _ => declAdj_e a
- };
-}
diff --git a/examples/foods/FoodsAmh.gf b/examples/foods/FoodsAmh.gf
deleted file mode 100644
index e8915d86f..000000000
--- a/examples/foods/FoodsAmh.gf
+++ /dev/null
@@ -1,21 +0,0 @@
-concrete FoodsAmh of Foods ={
- flags coding = utf8;
- lincat
- Comment,Item,Kind,Quality = Str;
- lin
- Pred item quality = item ++ quality++ "ነው::" ;
- This kind = "ይህ" ++ kind;
- That kind = "ያ" ++ kind;
- Mod quality kind = quality ++ kind;
- Wine = "ወይን";
- Cheese = "አይብ";
- Fish = "ዓሳ";
- Very quality = "በጣም" ++ quality;
- Fresh = "አዲስ";
- Warm = "ትኩስ";
- Italian = "የጥልያን";
- Expensive = "ውድ";
- Delicious = "ጣፋጭ";
- Boring = "አስቀያሚ";
-
-}
\ No newline at end of file
diff --git a/examples/foods/FoodsBul.gf b/examples/foods/FoodsBul.gf
deleted file mode 100644
index ac9127669..000000000
--- a/examples/foods/FoodsBul.gf
+++ /dev/null
@@ -1,43 +0,0 @@
--- (c) 2009 Krasimir Angelov under LGPL
-
-concrete FoodsBul of Foods = {
-
- flags
- coding = utf8;
-
- param
- Gender = Masc | Fem | Neutr;
- Number = Sg | Pl;
- Agr = ASg Gender | APl ;
-
- lincat
- Comment = Str ;
- Quality = {s : Agr => Str} ;
- Item = {s : Str; a : Agr} ;
- Kind = {s : Number => Str; g : Gender} ;
-
- lin
- Pred item qual = item.s ++ case item.a of {ASg _ => "е"; APl => "са"} ++ qual.s ! item.a ;
-
- This kind = {s=case kind.g of {Masc=>"този"; Fem=>"тази"; Neutr=>"това" } ++ kind.s ! Sg; a=ASg kind.g} ;
- That kind = {s=case kind.g of {Masc=>"онзи"; Fem=>"онази"; Neutr=>"онова"} ++ kind.s ! Sg; a=ASg kind.g} ;
- These kind = {s="тези" ++ kind.s ! Pl; a=APl} ;
- Those kind = {s="онези" ++ kind.s ! Pl; a=APl} ;
-
- Mod qual kind = {s=\\n => qual.s ! (case n of {Sg => ASg kind.g; Pl => APl}) ++ kind.s ! n; g=kind.g} ;
-
- Wine = {s = table {Sg => "вино"; Pl => "вина"}; g = Neutr};
- Cheese = {s = table {Sg => "сирене"; Pl => "сирена"}; g = Neutr};
- Fish = {s = table {Sg => "риба"; Pl => "риби"}; g = Fem};
- Pizza = {s = table {Sg => "пица"; Pl => "пици"}; g = Fem};
-
- Very qual = {s = \\g => "много" ++ qual.s ! g};
-
- Fresh = {s = table {ASg Masc => "свеж"; ASg Fem => "свежа"; ASg Neutr => "свежо"; APl => "свежи"}};
- Warm = {s = table {ASg Masc => "горещ"; ASg Fem => "гореща"; ASg Neutr => "горещо"; APl => "горещи"}};
- Italian = {s = table {ASg Masc => "италиански"; ASg Fem => "италианска"; ASg Neutr => "италианско"; APl => "италиански"}};
- Expensive = {s = table {ASg Masc => "скъп"; ASg Fem => "скъпа"; ASg Neutr => "скъпо"; APl => "скъпи"}};
- Delicious = {s = table {ASg Masc => "превъзходен"; ASg Fem => "превъзходна"; ASg Neutr => "превъзходно"; APl => "превъзходни"}};
- Boring = {s = table {ASg Masc => "еднообразен"; ASg Fem => "еднообразна"; ASg Neutr => "еднообразно"; APl => "еднообразни"}};
-
-}
diff --git a/examples/foods/FoodsCat.gf b/examples/foods/FoodsCat.gf
deleted file mode 100644
index 35e4efba6..000000000
--- a/examples/foods/FoodsCat.gf
+++ /dev/null
@@ -1,6 +0,0 @@
-
--- (c) 2009 Jordi Saludes under LGPL
-
-concrete FoodsCat of Foods = FoodsI with
- (Syntax = SyntaxCat),
- (LexFoods = LexFoodsCat) ;
diff --git a/examples/foods/FoodsChi.gf b/examples/foods/FoodsChi.gf
deleted file mode 100644
index 163aa0eb1..000000000
--- a/examples/foods/FoodsChi.gf
+++ /dev/null
@@ -1,35 +0,0 @@
-concrete FoodsChi of Foods = {
-flags coding = utf8 ;
-lincat
- Comment, Item = Str ;
- Kind = {s,c : Str} ;
- Quality = {s,p : Str} ;
-lin
- Pred item quality = item ++ "是" ++ quality.s ++ quality.p ;
- This kind = "这" ++ kind.c ++ kind.s ;
- That kind = "那" ++ kind.c ++ kind.s ;
- These kind = "这" ++ "些" ++ kind.s ;
- Those kind = "那" ++ "些" ++ kind.s ;
- Mod quality kind = {
- s = quality.s ++ quality.p ++ kind.s ;
- c = kind.c
- } ;
- Wine = geKind "酒" ;
- Pizza = geKind "比 萨 饼" ;
- Cheese = geKind "奶 酪" ;
- Fish = geKind "鱼" ;
- Very quality = longQuality ("非 常" ++ quality.s) ;
- Fresh = longQuality "新 鲜" ;
- Warm = longQuality "温 热" ;
- Italian = longQuality "意 大 利 式" ;
- Expensive = longQuality "昂 贵" ;
- Delicious = longQuality "美 味" ;
- Boring = longQuality "难 吃" ;
-oper
- mkKind : Str -> Str -> {s,c : Str} = \s,c ->
- {s = s ; c = c} ;
- geKind : Str -> {s,c : Str} = \s ->
- mkKind s "个" ;
- longQuality : Str -> {s,p : Str} = \s ->
- {s = s ; p = "的"} ;
-}
diff --git a/examples/foods/FoodsCze.gf b/examples/foods/FoodsCze.gf
deleted file mode 100644
index 3fec68141..000000000
--- a/examples/foods/FoodsCze.gf
+++ /dev/null
@@ -1,35 +0,0 @@
--- (c) 2011 Katerina Bohmova under LGPL
-
-concrete FoodsCze of Foods = open ResCze in {
- flags
- coding = utf8 ;
- lincat
- Comment = {s : Str} ;
- Quality = Adjective ;
- Kind = Noun ;
- Item = NounPhrase ;
- lin
- Pred item quality =
- {s = item.s ++ copula ! item.n ++
- quality.s ! item.g ! item.n} ;
- This = det Sg "tento" "tato" "toto" ;
- That = det Sg "tamten" "tamta" "tamto" ;
- These = det Pl "tyto" "tyto" "tato" ;
- Those = det Pl "tamty" "tamty" "tamta" ;
- Mod quality kind = {
- s = \\n => quality.s ! kind.g ! n ++ kind.s ! n ;
- g = kind.g
- } ;
- Wine = noun "víno" "vína" Neutr ;
- Cheese = noun "sýr" "sýry" Masc ;
- Fish = noun "ryba" "ryby" Fem ;
- Pizza = noun "pizza" "pizzy" Fem ;
- Very qual = {s = \\g,n => "velmi" ++ qual.s ! g ! n} ;
- Fresh = regAdj "čerstv" ;
- Warm = regAdj "tepl" ;
- Italian = regAdj "italsk" ;
- Expensive = regAdj "drah" ;
- Delicious = regnfAdj "vynikající" ;
- Boring = regAdj "nudn" ;
-}
-
diff --git a/examples/foods/FoodsDut.gf b/examples/foods/FoodsDut.gf
deleted file mode 100644
index d4855e5c6..000000000
--- a/examples/foods/FoodsDut.gf
+++ /dev/null
@@ -1,58 +0,0 @@
--- (c) 2009 Femke Johansson under LGPL
-
-concrete FoodsDut of Foods = {
-
- lincat
- Comment = {s : Str};
- Quality = {s : AForm => Str};
- Kind = { s : Number => Str};
- Item = {s : Str ; n : Number};
-
- lin
- Pred item quality =
- {s = item.s ++ copula ! item.n ++ quality.s ! APred};
- This = det Sg "deze";
- These = det Pl "deze";
- That = det Sg "die";
- Those = det Pl "die";
-
- Mod quality kind =
- {s = \\n => quality.s ! AAttr ++ kind.s ! n};
- Wine = regNoun "wijn";
- Cheese = noun "kaas" "kazen";
- Fish = noun "vis" "vissen";
- Pizza = noun "pizza" "pizza's";
-
- Very a = {s = \\f => "erg" ++ a.s ! f};
-
- Fresh = regadj "vers";
- Warm = regadj "warm";
- Italian = regadj "Italiaans";
- Expensive = adj "duur" "dure";
- Delicious = regadj "lekker";
- Boring = regadj "saai";
-
- param
- Number = Sg | Pl;
- AForm = APred | AAttr;
-
- oper
- det : Number -> Str ->
- {s : Number => Str} -> {s : Str ; n: Number} =
- \n,det,noun -> {s = det ++ noun.s ! n ; n=n};
-
- noun : Str -> Str -> {s : Number => Str} =
- \man,men -> {s = table {Sg => man; Pl => men}};
-
- regNoun : Str -> {s : Number => Str} =
- \wijn -> noun wijn (wijn + "en");
-
- regadj : Str -> {s : AForm => Str} =
- \koud -> adj koud (koud+"e");
-
- adj : Str -> Str -> {s : AForm => Str} =
- \duur, dure -> {s = table {APred => duur; AAttr => dure}};
-
- copula : Number => Str =
- table {Sg => "is" ; Pl => "zijn"};
-}
diff --git a/examples/foods/FoodsEng.gf b/examples/foods/FoodsEng.gf
deleted file mode 100644
index e7359a4ff..000000000
--- a/examples/foods/FoodsEng.gf
+++ /dev/null
@@ -1,43 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
-
-concrete FoodsEng of Foods = {
- flags language = en_US;
- lincat
- Comment, Quality = {s : Str} ;
- Kind = {s : Number => Str} ;
- Item = {s : Str ; n : Number} ;
- lin
- Pred item quality =
- {s = item.s ++ copula ! item.n ++ quality.s} ;
- This = det Sg "this" ;
- That = det Sg "that" ;
- These = det Pl "these" ;
- Those = det Pl "those" ;
- Mod quality kind =
- {s = \\n => quality.s ++ kind.s ! n} ;
- Wine = regNoun "wine" ;
- Cheese = regNoun "cheese" ;
- Fish = noun "fish" "fish" ;
- Pizza = regNoun "pizza" ;
- Very a = {s = "very" ++ a.s} ;
- Fresh = adj "fresh" ;
- Warm = adj "warm" ;
- Italian = adj "Italian" ;
- Expensive = adj "expensive" ;
- Delicious = adj "delicious" ;
- Boring = adj "boring" ;
- param
- Number = Sg | Pl ;
- oper
- det : Number -> Str ->
- {s : Number => Str} -> {s : Str ; n : Number} =
- \n,det,noun -> {s = det ++ noun.s ! n ; n = n} ;
- noun : Str -> Str -> {s : Number => Str} =
- \man,men -> {s = table {Sg => man ; Pl => men}} ;
- regNoun : Str -> {s : Number => Str} =
- \car -> noun car (car + "s") ;
- adj : Str -> {s : Str} =
- \cold -> {s = cold} ;
- copula : Number => Str =
- table {Sg => "is" ; Pl => "are"} ;
-}
diff --git a/examples/foods/FoodsEpo.gf b/examples/foods/FoodsEpo.gf
deleted file mode 100644
index dd2400fe7..000000000
--- a/examples/foods/FoodsEpo.gf
+++ /dev/null
@@ -1,48 +0,0 @@
--- (c) 2009 Julia Hammar under LGPL
-
-concrete FoodsEpo of Foods = open Prelude in {
-
- flags coding =utf8 ;
-
- lincat
- Comment = SS ;
- Kind, Quality = {s : Number => Str} ;
- Item = {s : Str ; n : Number} ;
-
- lin
- Pred item quality = ss (item.s ++ copula ! item.n ++ quality.s ! item.n) ;
- This = det Sg "ĉi tiu" ;
- That = det Sg "tiu" ;
- These = det Pl "ĉi tiuj" ;
- Those = det Pl "tiuj" ;
- Mod quality kind = {s = \\n => quality.s ! n ++ kind.s ! n} ;
- Wine = regNoun "vino" ;
- Cheese = regNoun "fromaĝo" ;
- Fish = regNoun "fiŝo" ;
- Pizza = regNoun "pico" ;
- Very quality = {s = \\n => "tre" ++ quality.s ! n} ;
- Fresh = regAdj "freŝa" ;
- Warm = regAdj "varma" ;
- Italian = regAdj "itala" ;
- Expensive = regAdj "altekosta" ;
- Delicious = regAdj "bongusta" ;
- Boring = regAdj "enuiga" ;
-
- param
- Number = Sg | Pl ;
-
- oper
- det : Number -> Str -> {s : Number => Str} -> {s : Str ; n : Number} =
- \n,d,cn -> {
- s = d ++ cn.s ! n ;
- n = n
- } ;
- regNoun : Str -> {s : Number => Str} =
- \vino -> {s = table {Sg => vino ; Pl => vino + "j"}
- } ;
- regAdj : Str -> {s : Number => Str} =
- \nova -> {s = table {Sg => nova ; Pl => nova + "j"}
- } ;
- copula : Number => Str = \\_ => "estas" ;
-}
-
diff --git a/examples/foods/FoodsFin.gf b/examples/foods/FoodsFin.gf
deleted file mode 100644
index 962199805..000000000
--- a/examples/foods/FoodsFin.gf
+++ /dev/null
@@ -1,6 +0,0 @@
-
--- (c) 2009 Aarne Ranta under LGPL
-
-concrete FoodsFin of Foods = FoodsI with
- (Syntax = SyntaxFin),
- (LexFoods = LexFoodsFin) ;
diff --git a/examples/foods/FoodsFre.gf b/examples/foods/FoodsFre.gf
deleted file mode 100644
index f95db827b..000000000
--- a/examples/foods/FoodsFre.gf
+++ /dev/null
@@ -1,31 +0,0 @@
-
-concrete FoodsFre of Foods = open SyntaxFre, ParadigmsFre in {
-
- flags coding = utf8 ;
-
- lincat
- Comment = Utt ;
- Item = NP ;
- Kind = CN ;
- Quality = AP ;
-
- lin
- Pred item quality = mkUtt (mkCl item quality) ;
- This kind = mkNP this_QuantSg kind ;
- That kind = mkNP that_QuantSg kind ;
- These kind = mkNP these_QuantPl kind ;
- Those kind = mkNP those_QuantPl kind ;
- Mod quality kind = mkCN quality kind ;
- Very quality = mkAP very_AdA quality ;
-
- Wine = mkCN (mkN "vin" masculine) ;
- Pizza = mkCN (mkN "pizza" feminine) ;
- Cheese = mkCN (mkN "fromage" masculine) ;
- Fish = mkCN (mkN "poisson" masculine) ;
- Fresh = mkAP (mkA "frais" "fraîche" "frais" "fraîchement") ;
- Warm = mkAP (mkA "chaud") ;
- Italian = mkAP (mkA "italien") ;
- Expensive = mkAP (mkA "cher") ;
- Delicious = mkAP (mkA "délicieux") ;
- Boring = mkAP (mkA "ennuyeux") ;
- }
diff --git a/examples/foods/FoodsGer.gf b/examples/foods/FoodsGer.gf
deleted file mode 100644
index df3a371de..000000000
--- a/examples/foods/FoodsGer.gf
+++ /dev/null
@@ -1,6 +0,0 @@
-
--- (c) 2009 Aarne Ranta under LGPL
-
-concrete FoodsGer of Foods = FoodsI with
- (Syntax = SyntaxGer),
- (LexFoods = LexFoodsGer) ;
diff --git a/examples/foods/FoodsGla.gf b/examples/foods/FoodsGla.gf
deleted file mode 100644
index 127ef22e9..000000000
--- a/examples/foods/FoodsGla.gf
+++ /dev/null
@@ -1,67 +0,0 @@
---# -coding=latin1
-concrete FoodsGla of Foods = open MutationsGla, CharactersGla, Prelude in {
- param Gender = Masc|Fem ;
- param Number = Sg|Pl ;
- param Breadth = Broad|Slender|NoBreadth ;
- param Beginning = Bcgmp|Other ;
-
- lincat Comment = Str;
- lin Pred item quality = "tha" ++ item ++ quality.s!Sg!Unmutated ;
-
- lincat Item = Str;
- lin
- This kind = (addArticleSg kind) ++ "seo" ;
- That kind = (addArticleSg kind) ++ "sin";
- These kind = (addArticlePl kind) ++ "seo" ;
- Those kind = (addArticlePl kind) ++ "sin" ;
- oper addArticleSg : {s : Number => Mutation => Str; g : Gender} -> Str =
- \kind -> case kind.g of { Masc => "an" ++ kind.s!Sg!PrefixT; Fem => "a'" ++ kind.s!Sg!Lenition1DNTLS } ;
- oper addArticlePl : {s : Number => Mutation => Str; g : Gender} -> Str =
- \kind -> "na" ++ kind.s!Pl!PrefixH ;
-
- oper Noun : Type = {s : Number => Mutation => Str; g : Gender; pe : Breadth; beginning: Beginning; };
- lincat Kind = Noun;
- lin
- Mod quality kind = {
- s = table{
- Sg => table{mutation => kind.s!Sg!mutation ++ case kind.g of {Masc => quality.s!Sg!Unmutated; Fem => quality.s!Sg!Lenition1} };
- Pl => table{mutation => kind.s!Pl!mutation ++ case kind.pe of {Slender => quality.s!Pl!Lenition1; _ => quality.s!Pl!Unmutated} }
- };
- g = kind.g;
- pe = kind.pe;
- beginning = kind.beginning
- } ;
- Wine = makeNoun "fon" "fontan" Masc ;
- Cheese = makeNoun "cise" "cisean" Masc ;
- Fish = makeNoun "iasg" "isg" Masc ;
- Pizza = makeNoun "pizza" "pizzathan" Masc ;
- oper makeNoun : Str -> Str -> Gender -> Noun = \sg,pl,g -> {
- s = table{Sg => (mutate sg); Pl => (mutate pl)};
- g = g;
- pe = pe;
- beginning = Bcgmp
- }
- where {
- pe : Breadth = case pl of {
- _ + v@(#broadVowel) + c@(#consonant*) + #consonant => Broad;
- _ + v@(#slenderVowel) + c@(#consonant*) + #consonant => Slender;
- _ => NoBreadth
- }
- };
-
- oper Adjective : Type = {s : Number => Mutation => Str; sVery : Number => Str};
- lincat Quality = Adjective;
- lin
- Very quality = {s=table{number => table{_ => quality.sVery!number}}; sVery=quality.sVery } ;
- Fresh = makeAdjective "r" "ra" ;
- Warm = makeAdjective "blth" "bltha" ;
- Italian = makeAdjective "Eadailteach" "Eadailteach" ;
- Expensive = makeAdjective "daor" "daora" ;
- Delicious = makeAdjective "blasta" "blasta" ;
- Boring = makeAdjective "leamh" "leamha" ;
- oper makeAdjective : Str -> Str -> Adjective =
- \sg,pl -> {
- s=table{Sg => (mutate sg); Pl => (mutate pl)};
- sVery=table{Sg => "gl"++(lenition1dntls sg); Pl => "gl"++(lenition1dntls pl)}
- } ;
-}
\ No newline at end of file
diff --git a/examples/foods/FoodsGle.gf b/examples/foods/FoodsGle.gf
deleted file mode 100644
index f137da6aa..000000000
--- a/examples/foods/FoodsGle.gf
+++ /dev/null
@@ -1,60 +0,0 @@
---# -coding=latin1
-concrete FoodsGle of Foods = open MutationsGle, CharactersGle in {
- param Gender = Masc|Fem ;
- param Number = Sg|Pl ;
- param Breadth = Broad|Slender|NoBreadth ;
-
- lincat Comment = Str;
- lin Pred item quality = "t" ++ item ++ quality.s!Sg!Unmutated ;
-
- lincat Item = Str;
- lin
- This kind = (addArticleSg kind) ++ "seo" ;
- That kind = (addArticleSg kind) ++ "sin";
- These kind = (addArticlePl kind) ++ "seo" ;
- Those kind = (addArticlePl kind) ++ "sin" ;
- oper addArticleSg : {s : Number => Mutation => Str; g : Gender} -> Str =
- \kind -> "an" ++ case kind.g of { Masc => kind.s!Sg!PrefixT; Fem => kind.s!Sg!Lenition1DNTLS } ;
- oper addArticlePl : {s : Number => Mutation => Str; g : Gender} -> Str =
- \kind -> "na" ++ kind.s!Pl!PrefixH ;
-
- lincat Kind = {s : Number => Mutation => Str; g : Gender; pe : Breadth} ;
- lin
- Mod quality kind = {
- s = table{
- Sg => table{mutation => kind.s!Sg!mutation ++ case kind.g of {Masc => quality.s!Sg!Unmutated; Fem => quality.s!Sg!Lenition1} };
- Pl => table{mutation => kind.s!Pl!mutation ++ case kind.pe of {Slender => quality.s!Pl!Lenition1; _ => quality.s!Pl!Unmutated} }
- };
- g = kind.g;
- pe = kind.pe
- } ;
- Wine = makeNoun "fon" "fonta" Masc ;
- Cheese = makeNoun "cis" "ciseanna" Fem ;
- Fish = makeNoun "iasc" "isc" Masc ;
- Pizza = makeNoun "potsa" "potsa" Masc ;
- oper makeNoun : Str -> Str -> Gender -> {s : Number => Mutation => Str; g : Gender; pe : Breadth} =
- \sg,pl,g -> {
- s = table{Sg => (mutate sg); Pl => (mutate pl)};
- g = g;
- pe = case pl of {
- _ + v@(#broadVowel) + c@(#consonant*) + #consonant => Broad;
- _ + v@(#slenderVowel) + c@(#consonant*) + #consonant => Slender;
- _ => NoBreadth
- }
- } ;
-
- lincat Quality = {s : Number => Mutation => Str; sVery : Number => Str} ;
- lin
- Very quality = {s=table{number => table{_ => quality.sVery!number}}; sVery=quality.sVery } ;
- Fresh = makeAdjective "r" "ra" ;
- Warm = makeAdjective "te" "te" ;
- Italian = makeAdjective "Iodlach" "Iodlacha" ;
- Expensive = makeAdjective "daor" "daora" ;
- Delicious = makeAdjective "blasta" "blasta" ;
- Boring = makeAdjective "leamh" "leamha" ;
- oper makeAdjective : Str -> Str -> {s : Number => Mutation => Str; sVery : Number => Str} =
- \sg,pl -> {
- s=table{Sg => (mutate sg); Pl => (mutate pl)};
- sVery=table{Sg => "an-"+(lenition1dntls sg); Pl => "an-"+(lenition1dntls pl)}
- } ;
-}
\ No newline at end of file
diff --git a/examples/foods/FoodsHeb.gf b/examples/foods/FoodsHeb.gf
deleted file mode 100644
index b68b383be..000000000
--- a/examples/foods/FoodsHeb.gf
+++ /dev/null
@@ -1,107 +0,0 @@
-
---(c) 2009 Dana Dannells
--- Licensed under LGPL
-
-concrete FoodsHeb of Foods = open Prelude in {
-
- flags coding=utf8 ;
-
- lincat
- Comment = SS ;
- Quality = {s: Number => Species => Gender => Str} ;
- Kind = {s : Number => Species => Str ; g : Gender ; mod : Modified} ;
- Item = {s : Str ; g : Gender ; n : Number ; sp : Species ; mod : Modified} ;
-
-
- lin
- Pred item quality = ss (item.s ++ quality.s ! item.n ! Indef ! item.g ) ;
- This = det Sg Def "הזה" "הזאת";
- That = det Sg Def "ההוא" "ההיא" ;
- These = det Pl Def "האלה" "האלה" ;
- Those = det Pl Def "ההם" "ההן" ;
- Mod quality kind = {
- s = \\n,sp => kind.s ! n ! sp ++ quality.s ! n ! sp ! kind.g;
- g = kind.g ;
- mod = T
- } ;
- Wine = regNoun "יין" "יינות" Masc ;
- Cheese = regNoun "גבינה" "גבינות" Fem ;
- Fish = regNoun "דג" "דגים" Masc ;
- Pizza = regNoun "פיצה" "פיצות" Fem ;
- Very qual = {s = \\g,n,sp => "מאוד" ++ qual.s ! g ! n ! sp} ;
- Fresh = regAdj "טרי" ;
- Warm = regAdj "חם" ;
- Italian = regAdj2 "איטלקי" ;
- Expensive = regAdj "יקר" ;
- Delicious = regAdj "טעים" ;
- Boring = regAdj2 "משעמם";
-
- param
- Number = Sg | Pl ;
- Gender = Masc | Fem ;
- Species = Def | Indef ;
- Modified = T | F ;
-
- oper
- Noun : Type = {s : Number => Species => Str ; g : Gender ; mod : Modified } ;
- Adj : Type = {s : Number => Species => Gender => Str} ;
-
- det : Number -> Species -> Str -> Str -> Noun ->
- {s : Str ; g :Gender ; n : Number ; sp : Species ; mod : Modified} =
- \n,sp,m,f,cn -> {
- s = case cn.mod of { _ => cn.s ! n ! sp ++ case cn.g of {Masc => m ; Fem => f} };
- g = cn.g ;
- n = n ;
- sp = sp ;
- mod = cn.mod
- } ;
-
- noun : (gvina,hagvina,gvinot,hagvinot : Str) -> Gender -> Noun =
- \gvina,hagvina,gvinot,hagvinot,g -> {
- s = table {
- Sg => table {
- Indef => gvina ;
- Def => hagvina
- } ;
- Pl => table {
- Indef => gvinot ;
- Def => hagvinot
- }
- } ;
- g = g ;
- mod = F
- } ;
-
- regNoun : Str -> Str -> Gender -> Noun =
- \gvina,gvinot, g ->
- noun gvina (defH gvina) gvinot (defH gvinot) g ;
-
- defH : Str -> Str = \cn ->
- case cn of {_ => "ה" + cn};
-
- replaceLastLetter : Str -> Str = \c ->
- case c of {"ף" => "פ" ; "ם" => "מ" ; "ן" => "נ" ; "ץ" => "צ" ; "ך" => "כ"; _ => c} ;
-
- adjective : (_,_,_,_ : Str) -> Adj =
- \tov,tova,tovim,tovot -> {
- s = table {
- Sg => table {
- Indef => table { Masc => tov ; Fem => tova } ;
- Def => table { Masc => defH tov ; Fem => defH tova }
- } ;
- Pl => table {
- Indef => table {Masc => tovim ; Fem => tovot } ;
- Def => table { Masc => defH tovim ; Fem => defH tovot }
- }
- }
- } ;
-
- regAdj : Str -> Adj = \tov ->
- case tov of { to + c@? =>
- adjective tov (to + replaceLastLetter (c) + "ה" ) (to + replaceLastLetter (c) +"ים" ) (to + replaceLastLetter (c) + "ות" )};
-
- regAdj2 : Str -> Adj = \italki ->
- case italki of { italk+ c@? =>
- adjective italki (italk + replaceLastLetter (c) +"ת" ) (italk + replaceLastLetter (c)+ "ים" ) (italk + replaceLastLetter (c) + "ות" )};
-
-} -- FoodsHeb
diff --git a/examples/foods/FoodsHin.gf b/examples/foods/FoodsHin.gf
deleted file mode 100644
index 67c29df8b..000000000
--- a/examples/foods/FoodsHin.gf
+++ /dev/null
@@ -1,75 +0,0 @@
--- (c) 2010 Vikash Rauniyar under LGPL
-
-concrete FoodsHin of Foods = {
-
- flags coding=utf8 ;
-
- param
- Gender = Masc | Fem ;
- Number = Sg | Pl ;
- lincat
- Comment = {s : Str} ;
- Item = {s : Str ; g : Gender ; n : Number} ;
- Kind = {s : Number => Str ; g : Gender} ;
- Quality = {s : Gender => Number => Str} ;
- lin
- Pred item quality = {
- s = item.s ++ quality.s ! item.g ! item.n ++ copula item.n
- } ;
- This kind = {s = "यह" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ;
- That kind = {s = "वह" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ;
- These kind = {s = "ये" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ;
- Those kind = {s = "वे" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ;
- Mod quality kind = {
- s = \\n => quality.s ! kind.g ! n ++ kind.s ! n ;
- g = kind.g
- } ;
- Wine = regN "मदिरा" ;
- Cheese = regN "पनीर" ;
- Fish = regN "मछली" ;
- Pizza = regN "पिज़्ज़ा" ;
- Very quality = {s = \\g,n => "अति" ++ quality.s ! g ! n} ;
- Fresh = regAdj "ताज़ा" ;
- Warm = regAdj "गरम" ;
- Italian = regAdj "इटली" ;
- Expensive = regAdj "बहुमूल्य" ;
- Delicious = regAdj "स्वादिष्ट" ;
- Boring = regAdj "अरुचिकर" ;
-
- oper
- mkN : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} =
- \s,p,g -> {
- s = table {
- Sg => s ;
- Pl => p
- } ;
- g = g
- } ;
-
- regN : Str -> {s : Number => Str ; g : Gender} = \s -> case s of {
- lark + "ा" => mkN s (lark + "े") Masc ;
- lark + "ी" => mkN s (lark + "ीयँा") Fem ;
- _ => mkN s s Masc
- } ;
-
- mkAdj : Str -> Str -> Str -> {s : Gender => Number => Str} = \ms,mp,f -> {
- s = table {
- Masc => table {
- Sg => ms ;
- Pl => mp
- } ;
- Fem => \\_ => f
- }
- } ;
-
- regAdj : Str -> {s : Gender => Number => Str} = \a -> case a of {
- acch + "ा" => mkAdj a (acch + "े") (acch + "ी") ;
- _ => mkAdj a a a
- } ;
-
- copula : Number -> Str = \n -> case n of {
- Sg => "है" ;
- Pl => "हैं"
- } ;
-
- }
diff --git a/examples/foods/FoodsI.gf b/examples/foods/FoodsI.gf
deleted file mode 100644
index f4113b724..000000000
--- a/examples/foods/FoodsI.gf
+++ /dev/null
@@ -1,29 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
-
-incomplete concrete FoodsI of Foods =
- open Syntax, LexFoods in {
- lincat
- Comment = Utt ;
- Item = NP ;
- Kind = CN ;
- Quality = AP ;
- lin
- Pred item quality = mkUtt (mkCl item quality) ;
- This kind = mkNP this_Det kind ;
- That kind = mkNP that_Det kind ;
- These kind = mkNP these_Det kind ;
- Those kind = mkNP those_Det kind ;
- Mod quality kind = mkCN quality kind ;
- Very quality = mkAP very_AdA quality ;
-
- Wine = mkCN wine_N ;
- Pizza = mkCN pizza_N ;
- Cheese = mkCN cheese_N ;
- Fish = mkCN fish_N ;
- Fresh = mkAP fresh_A ;
- Warm = mkAP warm_A ;
- Italian = mkAP italian_A ;
- Expensive = mkAP expensive_A ;
- Delicious = mkAP delicious_A ;
- Boring = mkAP boring_A ;
-}
diff --git a/examples/foods/FoodsIce.gf b/examples/foods/FoodsIce.gf
deleted file mode 100644
index 61b1a95b2..000000000
--- a/examples/foods/FoodsIce.gf
+++ /dev/null
@@ -1,83 +0,0 @@
-
--- (c) 2009 Martha Dis Brandt under LGPL
-
-concrete FoodsIce of Foods = open Prelude in {
-
- flags coding=utf8;
-
- lincat
- Comment = SS ;
- Quality = {s : Gender => Number => Defin => Str} ;
- Kind = {s : Number => Str ; g : Gender} ;
- Item = {s : Str ; g : Gender ; n : Number} ;
-
- lin
- Pred item quality = ss (item.s ++ copula item.n ++ quality.s ! item.g ! item.n ! Ind) ;
- This, That = det Sg "þessi" "þessi" "þetta" ;
- These, Those = det Pl "þessir" "þessar" "þessi" ;
- Mod quality kind = { s = \\n => quality.s ! kind.g ! n ! Def ++ kind.s ! n ; g = kind.g } ;
- Wine = noun "vín" "vín" Neutr ;
- Cheese = noun "ostur" "ostar" Masc ;
- Fish = noun "fiskur" "fiskar" Masc ;
- -- the word "pizza" is more commonly used in Iceland, but "flatbaka" is the Icelandic word for it
- Pizza = noun "flatbaka" "flatbökur" Fem ;
- Very qual = {s = \\g,n,defOrInd => "mjög" ++ qual.s ! g ! n ! defOrInd } ;
- Fresh = regAdj "ferskur" ;
- Warm = regAdj "heitur" ;
- Boring = regAdj "leiðinlegur" ;
- -- the order of the given adj forms is: mSg fSg nSg mPl fPl nPl mSgDef f/nSgDef _PlDef
- Italian = adjective "ítalskur" "ítölsk" "ítalskt" "ítalskir" "ítalskar" "ítölsk" "ítalski" "ítalska" "ítalsku" ;
- Expensive = adjective "dýr" "dýr" "dýrt" "dýrir" "dýrar" "dýr" "dýri" "dýra" "dýru" ;
- Delicious = adjective "ljúffengur" "ljúffeng" "ljúffengt" "ljúffengir" "ljúffengar" "ljúffeng" "ljúffengi" "ljúffenga" "ljúffengu" ;
-
- param
- Number = Sg | Pl ;
- Gender = Masc | Fem | Neutr ;
- Defin = Ind | Def ;
-
- oper
- det : Number -> Str -> Str -> Str -> {s : Number => Str ; g : Gender} ->
- {s : Str ; g : Gender ; n : Number} =
- \n,masc,fem,neutr,cn -> {
- s = case cn.g of {Masc => masc ; Fem => fem; Neutr => neutr } ++ cn.s ! n ;
- g = cn.g ;
- n = n
- } ;
-
- noun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} =
- \man,men,g -> {
- s = table {
- Sg => man ;
- Pl => men
- } ;
- g = g
- } ;
-
- adjective : (x1,_,_,_,_,_,_,_,x9 : Str) -> {s : Gender => Number => Defin => Str} =
- \ferskur,fersk,ferskt,ferskir,ferskar,fersk_pl,ferski,ferska,fersku -> {
- s = \\g,n,t => case of {
- < Masc, Sg, Ind > => ferskur ;
- < Masc, Pl, Ind > => ferskir ;
- < Fem, Sg, Ind > => fersk ;
- < Fem, Pl, Ind > => ferskar ;
- < Neutr, Sg, Ind > => ferskt ;
- < Neutr, Pl, Ind > => fersk_pl;
- < Masc, Sg, Def > => ferski ;
- < Fem, Sg, Def > | < Neutr, Sg, Def > => ferska ;
- < _ , Pl, Def > => fersku
- }
- } ;
-
- regAdj : Str -> {s : Gender => Number => Defin => Str} = \ferskur ->
- let fersk = Predef.tk 2 ferskur
- in adjective
- ferskur fersk (fersk + "t")
- (fersk + "ir") (fersk + "ar") fersk
- (fersk + "i") (fersk + "a") (fersk + "u") ;
-
- copula : Number -> Str =
- \n -> case n of {
- Sg => "er" ;
- Pl => "eru"
- } ;
-}
diff --git a/examples/foods/FoodsIta.gf b/examples/foods/FoodsIta.gf
deleted file mode 100644
index 0f959d2e5..000000000
--- a/examples/foods/FoodsIta.gf
+++ /dev/null
@@ -1,7 +0,0 @@
-
--- (c) 2009 Aarne Ranta under LGPL
-
-concrete FoodsIta of Foods = FoodsI with
- (Syntax = SyntaxIta),
- (LexFoods = LexFoodsIta) ;
-
diff --git a/examples/foods/FoodsJpn.gf b/examples/foods/FoodsJpn.gf
deleted file mode 100644
index 855a95175..000000000
--- a/examples/foods/FoodsJpn.gf
+++ /dev/null
@@ -1,71 +0,0 @@
-
--- (c) 2009 Zofia Stankiewicz under LGPL
-
-concrete FoodsJpn of Foods = open Prelude in {
-
-flags coding=utf8 ;
-
- lincat
- Comment = {s: Style => Str};
- Quality = {s: AdjUse => Str ; t: AdjType} ;
- Kind = {s : Number => Str} ;
- Item = {s : Str ; n : Number} ;
-
- lin
- Pred item quality = {s = case quality.t of {
- IAdj => table {Plain => item.s ++ quality.s ! APred ; Polite => item.s ++ quality.s ! APred ++ copula ! Polite ! item.n } ;
- NaAdj => \\p => item.s ++ quality.s ! APred ++ copula ! p ! item.n }
- } ;
- This = det Sg "この" ;
- That = det Sg "その" ;
- These = det Pl "この" ;
- Those = det Pl "その" ;
- Mod quality kind = {s = \\n => quality.s ! Attr ++ kind.s ! n} ;
- Wine = regNoun "ワインは" ;
- Cheese = regNoun "チーズは" ;
- Fish = regNoun "魚は" ;
- Pizza = regNoun "ピザは" ;
- Very quality = {s = \\a => "とても" ++ quality.s ! a ; t = quality.t } ;
- Fresh = adj "新鮮な" "新鮮";
- Warm = regAdj "あたたかい" ;
- Italian = adj "イタリアの" "イタリアのもの";
- Expensive = regAdj "たかい" ;
- Delicious = regAdj "おいしい" ;
- Boring = regAdj "つまらない" ;
-
- param
- Number = Sg | Pl ;
- AdjUse = Attr | APred ; -- na-adjectives have different forms as noun attributes and predicates
- Style = Plain | Polite ; -- for phrase types
- AdjType = IAdj | NaAdj ; -- IAdj can form predicates without the copula, NaAdj cannot
-
- oper
- det : Number -> Str -> {s : Number => Str} -> {s : Str ; n : Number} =
- \n,d,cn -> {
- s = d ++ cn.s ! n ;
- n = n
- } ;
- noun : Str -> Str -> {s : Number => Str} =
- \sakana,sakana -> {s = \\_ => sakana } ;
-
- regNoun : Str -> {s : Number => Str} =
- \sakana -> noun sakana sakana ;
-
- adj : Str -> Str -> {s : AdjUse => Str ; t : AdjType} =
- \chosenna, chosen -> {
- s = table {
- Attr => chosenna ;
- APred => chosen
- } ;
- t = NaAdj
- } ;
-
- regAdj : Str -> {s: AdjUse => Str ; t : AdjType} =\akai -> {
- s = \\_ => akai ; t = IAdj} ;
-
- copula : Style => Number => Str =
- table {
- Plain => \\_ => "だ" ;
- Polite => \\_ => "です" } ;
-
-}
diff --git a/examples/foods/FoodsLav.gf b/examples/foods/FoodsLav.gf
deleted file mode 100644
index 2d5357ff9..000000000
--- a/examples/foods/FoodsLav.gf
+++ /dev/null
@@ -1,90 +0,0 @@
-
--- (c) 2009 Inese Bernsone under LGPL
-
-concrete FoodsLav of Foods = open Prelude in {
-
- flags
- coding=utf8 ;
-
- lincat
- Comment = SS ;
- Quality = {s : Q => Gender => Number => Defin => Str } ;
- Kind = {s : Number => Str ; g : Gender} ;
- Item = {s : Str ; g : Gender ; n : Number } ;
-
- lin
- Pred item quality = ss (item.s ++ {- copula item.n -} "ir" ++ quality.s ! Q1 ! item.g ! item.n ! Ind ) ;
- This = det Sg "šis" "šī" ;
- That = det Sg "tas" "tā" ;
- These = det Pl "šie" "šīs" ;
- Those = det Pl "tie" "tās" ;
- Mod quality kind = {s = \\n => quality.s ! Q1 ! kind.g ! n ! Def ++ kind.s ! n ; g = kind.g } ;
- Wine = noun "vīns" "vīni" Masc ;
- Cheese = noun "siers" "sieri" Masc ;
- Fish = noun "zivs" "zivis" Fem ;
- Pizza = noun "pica" "picas" Fem ;
- Very qual = {s = \\q,g,n,spec => "ļoti" ++ qual.s ! Q2 ! g ! n ! spec };
-
- Fresh = adjective "svaigs" "svaiga" "svaigi" "svaigas" "svaigais" "svaigā" "svaigie" "svaigās" ;
- Warm = regAdj "silts" ;
- Italian = specAdj "itāļu" (regAdj "itālisks") ;
- Expensive = regAdj "dārgs" ;
- Delicious = regAdj "garšīgs" ;
- Boring = regAdj "garlaicīgs" ;
-
- param
- Number = Sg | Pl ;
- Gender = Masc | Fem ;
- Defin = Ind | Def ;
- Q = Q1 | Q2 ;
-
- oper
- det : Number -> Str -> Str -> {s : Number => Str ; g : Gender} ->
- {s : Str ; g : Gender ; n : Number} =
- \n,m,f,cn -> {
- s = case cn.g of {Masc => m ; Fem => f} ++ cn.s ! n ;
- g = cn.g ;
- n = n
- } ;
- noun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} =
- \man,men,g -> {
- s = table {
- Sg => man ;
- Pl => men
- } ;
- g = g
- } ;
- adjective : (_,_,_,_,_,_,_,_ : Str) -> {s : Q => Gender => Number => Defin => Str} =
- \skaists,skaista,skaisti,skaistas,skaistais,skaistaa,skaistie,skaistaas -> {
- s = table {
- _ => table {
- Masc => table {
- Sg => table {Ind => skaists ; Def => skaistais} ;
- Pl => table {Ind => skaisti ; Def => skaistie}
- } ;
- Fem => table {
- Sg => table {Ind => skaista ; Def => skaistaa} ;
- Pl => table {Ind => skaistas ; Def => skaistaas}
- }
- }
- }
- } ;
-
- {- irregAdj : Str -> {s : Gender => Number => Defin => Str} = \itaalju ->
- let itaalju = itaalju
- in adjective itaalju (itaalju) (itaalju) (itaalju) (itaalju) (itaalju) (itaalju) (itaalju) ; -}
-
- regAdj : Str -> {s : Q => Gender => Number => Defin => Str} = \skaists ->
- let skaist = init skaists
- in adjective skaists (skaist + "a") (skaist + "i") (skaist + "as") (skaist + "ais") (skaist + "ā") (skaist + "ie") (skaist + "ās");
-
- Adjective : Type = {s : Q => Gender => Number => Defin => Str} ;
-
- specAdj : Str -> Adjective -> Adjective = \s,a -> {
- s = table {
- Q2 => a.s ! Q1 ;
- Q1 => \\_,_,_ => s
- }
- } ;
-
- }
diff --git a/examples/foods/FoodsMkd.gf b/examples/foods/FoodsMkd.gf
deleted file mode 100644
index 7df235132..000000000
--- a/examples/foods/FoodsMkd.gf
+++ /dev/null
@@ -1,120 +0,0 @@
--- (c) 2009 Krasimir Angelov under LGPL
-
-concrete FoodsMkd of Foods = {
-
-flags coding = utf8 ;
-
-lincat
- Comment = Str;
- Quality = {s : Agr => Str};
- Item = {s : Str; a : Agr};
- Kind = {s : Number => Str; g : Gender};
-
-lin
- Pred item qual =
- item.s ++
- case item.a of {
- ASg _ => "е";
- APl => "се"
- } ++
- qual.s ! item.a;
- This kind = {
- s = case kind.g of {
- Masc => "овоj";
- Fem => "оваа";
- Neutr => "ова"
- } ++
- kind.s ! Sg;
- a = ASg kind.g};
- That kind = {
- s = case kind.g of {
- Masc => "оноj";
- Fem => "онаа";
- Neutr => "она"
- } ++
- kind.s ! Sg;
- a = ASg kind.g};
- These kind = {s = "овие" ++ kind.s ! Pl; a = APl};
- Those kind = {s = "оние" ++ kind.s ! Pl; a = APl};
- Mod qual kind = {
- s = \\n => qual.s ! case n of {
- Sg => ASg kind.g;
- Pl => APl
- } ++
- kind.s ! n;
- g = kind.g};
- Wine = {
- s = table {
- Sg => "вино";
- Pl => "вина"
- };
- g = Neutr};
- Cheese = {
- s = table {
- Sg => "сирење";
- Pl => "сирењa"
- };
- g = Neutr};
- Fish = {
- s = table {
- Sg => "риба";
- Pl => "риби"
- };
- g = Fem};
- Pizza = {
- s = table {
- Sg => "пица";
- Pl => "пици"
- };
- g = Fem
- };
- Very qual = {s = \\g => "многу" ++ qual.s ! g};
- Fresh = {
- s = table {
- ASg Masc => "свеж";
- ASg Fem => "свежа";
- ASg Neutr => "свежо";
- APl => "свежи"}
- };
- Warm = {
- s = table {
- ASg Masc => "топол";
- ASg Fem => "топла";
- ASg Neutr => "топло";
- APl => "топли"}
- };
- Italian = {
- s = table {
- ASg Masc => "италијански";
- ASg Fem => "италијанска";
- ASg Neutr => "италијанско";
- APl => "италијански"}
- };
- Expensive = {
- s = table {
- ASg Masc => "скап";
- ASg Fem => "скапа";
- ASg Neutr => "скапо";
- APl => "скапи"}
- };
- Delicious = {
- s = table {
- ASg Masc => "вкусен";
- ASg Fem => "вкусна";
- ASg Neutr => "вкусно";
- APl => "вкусни"}
- };
- Boring = {
- s = table {
- ASg Masc => "досаден";
- ASg Fem => "досадна";
- ASg Neutr => "досадно";
- APl => "досадни"}
- };
-
-param
- Gender = Masc | Fem | Neutr;
- Number = Sg | Pl;
- Agr = ASg Gender | APl;
-
-}
diff --git a/examples/foods/FoodsMlt.gf b/examples/foods/FoodsMlt.gf
deleted file mode 100644
index 5fcd4de78..000000000
--- a/examples/foods/FoodsMlt.gf
+++ /dev/null
@@ -1,105 +0,0 @@
--- (c) 2013 John J. Camilleri under LGPL
-
-concrete FoodsMlt of Foods = open Prelude in {
- flags coding=utf8 ;
-
- lincat
- Comment = SS ;
- Quality = {s : Gender => Number => Str} ;
- Kind = {s : Number => Str ; g : Gender} ;
- Item = {s : Str ; g : Gender ; n : Number} ;
-
- lin
- -- Pred item quality = ss (item.s ++ copula item.n item.g ++ quality.s ! item.g ! item.n) ;
- Pred item quality = ss (item.s ++ quality.s ! item.g ! item.n) ;
-
- This kind = det Sg "dan" "din" kind ;
- That kind = det Sg "dak" "dik" kind ;
- These kind = det Pl "dawn" "" kind ;
- Those kind = det Pl "dawk" "" kind ;
-
- Mod quality kind = {
- s = \\n => kind.s ! n ++ quality.s ! kind.g ! n ;
- g = kind.g
- } ;
-
- Wine = noun "inbid" "inbejjed" Masc ;
- Cheese = noun "ġobon" "ġobniet" Masc ;
- Fish = noun "ħuta" "ħut" Fem ;
- Pizza = noun "pizza" "pizzez" Fem ;
-
- Very qual = {s = \\g,n => qual.s ! g ! n ++ "ħafna"} ;
-
- Warm = adjective "sħun" "sħuna" "sħan" ;
- Expensive = adjective "għali" "għalja" "għaljin" ;
- Delicious = adjective "tajjeb" "tajba" "tajbin" ;
- Boring = uniAdj "tad-dwejjaq" ;
- Fresh = regAdj "frisk" ;
- Italian = regAdj "Taljan" ;
-
- param
- Number = Sg | Pl ;
- Gender = Masc | Fem ;
-
- oper
- --Create an adjective (full function)
- --Params: Sing Masc, Sing Fem, Plural
- adjective : (_,_,_ : Str) -> {s : Gender => Number => Str} = \iswed,sewda,suwed -> {
- s = table {
- Masc => table {
- Sg => iswed ;
- Pl => suwed
- } ;
- Fem => table {
- Sg => sewda ;
- Pl => suwed
- }
- }
- } ;
-
- --Create a regular adjective
- --Param: Sing Masc
- regAdj : Str -> {s : Gender => Number => Str} = \frisk ->
- adjective frisk (frisk + "a") (frisk + "i") ;
-
- --Create a "uni-adjective" eg tal-buzz
- --Param: Sing Masc
- uniAdj : Str -> {s : Gender => Number => Str} = \uni ->
- adjective uni uni uni ;
-
- --Create a noun
- --Params: Singular, Plural, Gender (inherent)
- noun : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} = \ktieb,kotba,g -> {
- s = table {
- Sg => ktieb ;
- Pl => kotba
- } ;
- g = g
- } ;
-
- --Copula is a linking verb
- --Params: Number, Gender
- -- copula : Number -> Gender -> Str = \n,g -> case n of {
- -- Sg => case g of { Masc => "huwa" ; Fem => "hija" } ;
- -- Pl => "huma"
- -- } ;
-
- --Create an article, taking into account first letter of next word
- article = pre {
- "a"|"e"|"i"|"o"|"u" => "l-" ;
- --cons@("ċ"|"d"|"n"|"r"|"s"|"t"|"x"|"ż") => "i" + cons + "-" ;
- _ => "il-"
- } ;
-
- --Create a determinant
- --Params: Sg/Pl, Masc, Fem
- det : Number -> Str -> Str -> {s : Number => Str ; g : Gender} -> {s : Str ; g : Gender ; n : Number} = \n,m,f,cn -> {
- s = case n of {
- Sg => case cn.g of {Masc => m ; Fem => f}; --string
- Pl => m --default to masc
- } ++ article ++ cn.s ! n ;
- g = cn.g ; --gender
- n = n --number
- } ;
-
-}
diff --git a/examples/foods/FoodsMon.gf b/examples/foods/FoodsMon.gf
deleted file mode 100644
index c0d58f722..000000000
--- a/examples/foods/FoodsMon.gf
+++ /dev/null
@@ -1,48 +0,0 @@
-
--- (c) 2009 Nyamsuren Erdenebadrakh under LGPL
-
-concrete FoodsMon of Foods = open Prelude in {
- flags coding=utf8;
-
- lincat
- Comment, Quality = SS ;
- Kind = {s : Number => Str} ;
- Item = {s : Str ; n : Number} ;
-
- lin
- Pred item quality = ss (item.s ++ "бол" ++ quality.s) ;
- This = det Sg "энэ" ;
- That = det Sg "тэр" ;
- These = det Pl "эдгээр" ;
- Those = det Pl "тэдгээр" ;
- Mod quality kind = {s = \\n => quality.s ++ kind.s ! n} ;
- Wine = regNoun "дарс" ;
- Cheese = regNoun "бяслаг" ;
- Fish = regNoun "загас" ;
- Pizza = regNoun "пицца" ;
- Very = prefixSS "маш" ;
- Fresh = ss "шинэ" ;
- Warm = ss "халуун" ;
- Italian = ss "итали" ;
- Expensive = ss "үнэтэй" ;
- Delicious = ss "амттай" ;
- Boring = ss "амтгүй" ;
-
- param
- Number = Sg | Pl ;
-
- oper
- det : Number -> Str -> {s : Number => Str} -> {s : Str ; n : Number} =
- \n,d,cn -> {
- s = d ++ cn.s ! n ;
- n = n
- } ;
-
- regNoun : Str -> {s : Number => Str} =
- \x -> {s = table {
- Sg => x ;
- Pl => x + "нууд"}
- } ;
- }
-
-
diff --git a/examples/foods/FoodsNep.gf b/examples/foods/FoodsNep.gf
deleted file mode 100644
index ea02e64a6..000000000
--- a/examples/foods/FoodsNep.gf
+++ /dev/null
@@ -1,60 +0,0 @@
--- (c) 2011 Dinesh Simkhada under LGPL
-
-concrete FoodsNep of Foods = {
-
- flags coding = utf8 ;
-
- lincat
- Comment, Quality = {s : Str} ;
- Kind = {s : Number => Str} ;
- Item = {s : Str ; n : Number} ;
-
- lin
- Pred item quality =
- {s = item.s ++ quality.s ++ copula ! item.n} ;
-
- This = det Sg "यो" ;
- That = det Sg "त्यो" ;
- These = det Pl "यी" ;
- Those = det Pl "ती" ;
- Mod quality kind =
- {s = \\n => quality.s ++ kind.s ! n} ;
-
- Wine = regNoun "रक्सी" ;
- Cheese = regNoun "चिज" ;
- Fish = regNoun "माछा" ;
- Pizza = regNoun "पिज्जा" ;
- Very a = {s = "धेरै" ++ a.s} ;
- Fresh = adj "ताजा" ;
- Warm = adj "तातो" ;
- Italian = adj "इटालियन" ;
- Expensive = adj "महँगो" | adj "बहुमूल्य" ;
- Delicious = adj "स्वादिष्ट" | adj "मीठो" ;
- Boring = adjPl "नमिठो" ;
-
- param
- Number = Sg | Pl ;
-
- oper
- det : Number -> Str ->
- {s : Number => Str} -> {s : Str ; n : Number} =
- \n,det,noun -> {s = det ++ noun.s ! n ; n = n} ;
-
- noun : Str -> Str -> {s : Number => Str} =
- \man,men -> {s = table {Sg => man ; Pl => men}} ;
-
- regNoun : Str -> {s : Number => Str} =
- \car -> noun car (car + "हरु") ;
-
- adjPl : Str -> {s : Str} = \a -> case a of {
- bor + "ठो" => adj (bor + "ठा") ;
- _ => adj a
- } ;
-
- adj : Str -> {s : Str} =
- \cold -> {s = cold} ;
-
- copula : Number => Str =
- table {Sg => "छ" ; Pl => "छन्"} ;
-}
-
diff --git a/examples/foods/FoodsOri.gf b/examples/foods/FoodsOri.gf
deleted file mode 100644
index ad4f492f6..000000000
--- a/examples/foods/FoodsOri.gf
+++ /dev/null
@@ -1,30 +0,0 @@
-concrete FoodsOri of Foods = {
-
-flags coding = utf8 ;
-
-lincat
- Comment = Str;
- Item = Str;
- Kind = Str;
- Quality = Str;
-
-lin
- Pred item quality = item ++ quality ++ "ଅଟେ";
- This kind = "ଏଇ" ++ kind;
- That kind = "ସେଇ" ++ kind;
- These kind = "ଏଇ" ++ kind ++ "ଗୁଡିକ" ;
- Those kind = "ସେଇ" ++ kind ++ "ଗୁଡିକ" ;
- Mod quality kind = quality ++ kind;
- Wine = "ମଦ";
- Cheese = "ଛେନା";
- Fish = "ମାଛ";
- Pizza = "ପିଜଜ଼ା" ;
- Very quality = "ଅତି" ++ quality;
- Fresh = "ତାଜା";
- Warm = "ଗରମ";
- Italian = "ଇଟାଲି";
- Expensive = "ମୁଲ୍ୟବାନ୍";
- Delicious = "ସ୍ଵାଦିସ୍ଟ ";
- Boring = "ଅରୁଚିକର";
-
-}
diff --git a/examples/foods/FoodsPes.gf b/examples/foods/FoodsPes.gf
deleted file mode 100644
index c2e631e81..000000000
--- a/examples/foods/FoodsPes.gf
+++ /dev/null
@@ -1,65 +0,0 @@
-concrete FoodsPes of Foods = {
-
- flags optimize=noexpand ; coding=utf8 ;
-
- lincat
- Comment = {s : Str} ;
- Quality = {s : Add => Str; prep : Str} ;
- Kind = {s : Add => Number => Str ; prep : Str};
- Item = {s : Str ; n : Number};
- lin
- Pred item quality = {s = item.s ++ quality.s ! Indep ++ copula ! item.n} ;
- This = det Sg "این" ;
- That = det Sg "آن" ;
- These = det Pl "این" ;
- Those = det Pl "آن" ;
-
- Mod quality kind = {s = \\a,n => kind.s ! Attr ! n ++ kind.prep ++ quality.s ! a ;
- prep = quality.prep
- };
- Wine = regN "شراب" ;
- Cheese = regN "پنیر" ;
- Fish = regN "ماهى" ;
- Pizza = regN "پیتزا" ;
- Very a = {s = \\at => "خیلی" ++ a.s ! at ; prep = a.prep} ;
- Fresh = adj "تازه" ;
- Warm = adj "گرم" ;
- Italian = adj "ایتالیایی" ;
- Expensive = adj "گران" ;
- Delicious = adj "لذىذ" ;
- Boring = adj "ملال آور" ; -- it must be written as ملال آور.
-
- param
- Number = Sg | Pl ;
- Add = Indep | Attr ;
- oper
- det : Number -> Str -> {s: Add => Number => Str ; prep : Str} -> {s : Str ; n: Number} =
- \n,det,noun -> {s = det ++ noun.s ! Indep ! n ; n = n };
-
- noun : (x1,_,_,x4 : Str) -> {s : Add => Number => Str ; prep : Str} = \pytzA, pytzAy, pytzAhA,pr ->
- {s = \\a,n => case of
- { => pytzA ; => pytzAhA ;
- =>pytzA ; => pytzAhA + "ى" };
- prep = pr
- };
-
- regN : Str -> {s: Add => Number => Str ; prep : Str} = \mrd ->
- case mrd of
- { _ + ("ا"|"ه"|"ى"|"و"|"") => noun mrd (mrd+"ى") (mrd + "ها") "";
- _ => noun mrd mrd (mrd + "ها") "e"
- };
-
- adj : Str -> {s : Add => Str; prep : Str} = \tAzh ->
- case tAzh of
- { _ + ("ا"|"ه"|"ى"|"و"|"") => mkAdj tAzh (tAzh ++ "ى") "" ;
- _ => mkAdj tAzh tAzh "ه"
- };
-
- mkAdj : Str -> Str -> Str -> {s : Add => Str; prep : Str} = \tAzh, tAzhy, pr ->
- {s = table {Indep => tAzh;
- Attr => tAzhy};
- prep = pr
- };
- copula : Number => Str = table {Sg => "است"; Pl => "هستند"};
-
-}
\ No newline at end of file
diff --git a/examples/foods/FoodsPor.gf b/examples/foods/FoodsPor.gf
deleted file mode 100644
index 76ffa3109..000000000
--- a/examples/foods/FoodsPor.gf
+++ /dev/null
@@ -1,78 +0,0 @@
--- (c) 2009 Rami Shashati under LGPL
---# -coding=latin1
-
-concrete FoodsPor of Foods = open Prelude in {
- lincat
- Comment = {s : Str} ;
- Quality = {s : Gender => Number => Str} ;
- Kind = {s : Number => Str ; g : Gender} ;
- Item = {s : Str ; n : Number ; g : Gender } ;
-
- lin
- Pred item quality =
- {s = item.s ++ copula ! item.n ++ quality.s ! item.g ! item.n } ;
- This = det Sg (table {Masc => "este" ; Fem => "esta"}) ;
- That = det Sg (table {Masc => "esse" ; Fem => "essa"}) ;
- These = det Pl (table {Masc => "estes" ; Fem => "estas"}) ;
- Those = det Pl (table {Masc => "esses" ; Fem => "essas"}) ;
-
- Mod quality kind = { s = \\n => kind.s ! n ++ quality.s ! kind.g ! n ; g = kind.g } ;
-
- Wine = regNoun "vinho" Masc ;
- Cheese = regNoun "queijo" Masc ;
- Fish = regNoun "peixe" Masc ;
- Pizza = regNoun "pizza" Fem ;
-
- Very a = { s = \\g,n => "muito" ++ a.s ! g ! n } ;
-
- Fresh = mkAdjReg "fresco" ;
- Warm = mkAdjReg "quente" ;
- Italian = mkAdjReg "Italiano" ;
- Expensive = mkAdjReg "caro" ;
- Delicious = mkAdjReg "delicioso" ;
- Boring = mkAdjReg "chato" ;
-
- param
- Number = Sg | Pl ;
- Gender = Masc | Fem ;
-
- oper
- QualityT : Type = {s : Gender => Number => Str} ;
-
- mkAdj : (_,_,_,_ : Str) -> QualityT = \bonito,bonita,bonitos,bonitas -> {
- s = table {
- Masc => table { Sg => bonito ; Pl => bonitos } ;
- Fem => table { Sg => bonita ; Pl => bonitas }
- } ;
- } ;
-
- -- regular pattern
- adjSozinho : Str -> QualityT = \sozinho ->
- let sozinh = Predef.tk 1 sozinho
- in mkAdj sozinho (sozinh + "a") (sozinh + "os") (sozinh + "as") ;
-
- -- for gender-independent adjectives
- adjUtil : Str -> Str -> QualityT = \util,uteis ->
- mkAdj util util uteis uteis ;
-
- -- smart paradigm for adjcetives
- mkAdjReg : Str -> QualityT = \a -> case last a of {
- "o" => adjSozinho a ;
- "e" => adjUtil a (a + "s")
- } ;
-
- ItemT : Type = {s : Str ; n : Number ; g : Gender } ;
-
- det : Number -> (Gender => Str) -> KindT -> ItemT =
- \num,det,noun -> {s = det ! noun.g ++ noun.s ! num ; n = num ; g = noun.g } ;
-
- KindT : Type = {s : Number => Str ; g : Gender} ;
-
- noun : Str -> Str -> Gender -> KindT =
- \animal,animais,gen -> {s = table {Sg => animal ; Pl => animais} ; g = gen } ;
-
- regNoun : Str -> Gender -> KindT =
- \carro,gen -> noun carro (carro + "s") gen ;
-
- copula : Number => Str = table {Sg => "" ; Pl => "so"} ;
-}
diff --git a/examples/foods/FoodsRon.gf b/examples/foods/FoodsRon.gf
deleted file mode 100644
index d7d917ffc..000000000
--- a/examples/foods/FoodsRon.gf
+++ /dev/null
@@ -1,72 +0,0 @@
--- (c) 2009 Ramona Enache under LGPL
-
-concrete FoodsRon of Foods =
-{
-flags coding=utf8 ;
-
-param Number = Sg | Pl ;
- Gender = Masc | Fem ;
- NGender = NMasc | NFem | NNeut ;
-lincat
-Comment = {s : Str};
-Quality = {s : Number => Gender => Str};
-Kind = {s : Number => Str; g : NGender};
-Item = {s : Str ; n : Number; g : Gender};
-
-lin
-
-This = det Sg (mkTab "acest" "această");
-That = det Sg (mkTab "acel" "acea");
-These = det Pl (mkTab "acești" "aceste");
-Those = det Pl (mkTab "acei" "acele");
-
-Wine = mkNoun "vin" "vinuri" NNeut ;
-Cheese = mkNoun "brânză" "brânzeturi" NFem ;
-Fish = mkNoun "peşte" "peşti" NMasc ;
-Pizza = mkNoun "pizza" "pizze" NFem;
-
-Very a = {s = \\n,g => "foarte" ++ a.s ! n ! g};
-
-Fresh = mkAdj "proaspăt" "proaspătă" "proaspeţi" "proaspete" ;
-Warm = mkAdj "cald" "caldă" "calzi" "calde" ;
-Italian = mkAdj "italian" "italiană" "italieni" "italiene" ;
-Expensive = mkAdj "scump" "scumpă" "scumpi" "scumpe" ;
-Delicious = mkAdj "delicios" "delcioasă" "delicioşi" "delicioase" ;
-Boring = mkAdj "plictisitor" "plictisitoare" "plictisitori" "plictisitoare" ;
-
-Pred item quality = {s = item.s ++ copula ! item.n ++ quality.s ! item.n ! item.g} ;
-
-Mod quality kind = {s = \\n => kind.s ! n ++ quality.s ! n ! (getAgrGender kind.g n) ; g = kind.g};
-
-oper
-
-mkTab : Str -> Str -> {s : Gender => Str} = \acesta, aceasta ->
-{s = table{Masc => acesta;
- Fem => aceasta}};
-
-det : Number -> {s : Gender => Str} -> {s : Number => Str ; g : NGender} -> {s : Str; n : Number; g : Gender} =
-\n,det,noun -> let gg = getAgrGender noun.g n
- in
- {s = det.s ! gg ++ noun.s ! n ; n = n ; g = gg};
-
-mkNoun : Str -> Str -> NGender -> {s : Number => Str; g : NGender} = \peste, pesti,g ->
-{s = table {Sg => peste;
- Pl => pesti};
- g = g
-};
-
-oper mkAdj : (x1,_,_,x4 : Str) -> {s : Number => Gender => Str} = \scump, scumpa, scumpi, scumpe ->
-{s = \\n,g => case of
-{ => scump ; => scumpa;
- => scumpi ; => scumpe
-}};
-
-copula : Number => Str = table {Sg => "este" ; Pl => "sunt"};
-
-getAgrGender : NGender -> Number -> Gender = \ng,n ->
-case of
-{ => Masc ; => Fem;
- => Masc ; => Fem
-};
-
-}
diff --git a/examples/foods/FoodsSpa.gf b/examples/foods/FoodsSpa.gf
deleted file mode 100644
index 693d77d06..000000000
--- a/examples/foods/FoodsSpa.gf
+++ /dev/null
@@ -1,30 +0,0 @@
-
-concrete FoodsSpa of Foods = open SyntaxSpa, StructuralSpa, ParadigmsSpa in {
-
- lincat
- Comment = Utt ;
- Item = NP ;
- Kind = CN ;
- Quality = AP ;
-
- lin
- Pred item quality = mkUtt (mkCl item quality) ;
- This kind = mkNP this_QuantSg kind ;
- That kind = mkNP that_QuantSg kind ;
- These kind = mkNP these_QuantPl kind ;
- Those kind = mkNP those_QuantPl kind ;
- Mod quality kind = mkCN quality kind ;
- Very quality = mkAP very_AdA quality ;
- Wine = mkCN (mkN "vino") ;
- Pizza = mkCN (mkN "pizza") ;
- Cheese = mkCN (mkN "queso") ;
- Fish = mkCN (mkN "pescado") ;
- Fresh = mkAP (mkA "fresco") ;
- Warm = mkAP (mkA "caliente") ;
- Italian = mkAP (mkA "italiano") ;
- Expensive = mkAP (mkA "caro") ;
- Delicious = mkAP (mkA "delicioso") ;
- Boring = mkAP (mkA "aburrido") ;
-
-}
-
diff --git a/examples/foods/FoodsSwe.gf b/examples/foods/FoodsSwe.gf
deleted file mode 100644
index c3ed38abb..000000000
--- a/examples/foods/FoodsSwe.gf
+++ /dev/null
@@ -1,6 +0,0 @@
-
--- (c) 2009 Aarne Ranta under LGPL
-
-concrete FoodsSwe of Foods = FoodsI with
- (Syntax = SyntaxSwe),
- (LexFoods = LexFoodsSwe) ** {flags language = sv_SE;} ;
diff --git a/examples/foods/FoodsTha.gf b/examples/foods/FoodsTha.gf
deleted file mode 100644
index 68245e1af..000000000
--- a/examples/foods/FoodsTha.gf
+++ /dev/null
@@ -1,32 +0,0 @@
-
-concrete FoodsTha of Foods = open SyntaxTha, LexiconTha,
- ParadigmsTha, (R=ResTha) in {
-
- flags coding = utf8 ;
-
- lincat
- Comment = Utt ;
- Item = NP ;
- Kind = CN ;
- Quality = AP ;
-
- lin
- Pred item quality = mkUtt (mkCl item quality) ;
- This kind = mkNP this_Det kind ;
- That kind = mkNP that_Det kind ;
- These kind = mkNP these_Det kind ;
- Those kind = mkNP those_Det kind ;
- Mod quality kind = mkCN quality kind ;
- Very quality = mkAP very_AdA quality ;
- Wine = mkCN (mkN (R.thword "เหล้าอ" "งุ่น") "ขวด") ;
- Pizza = mkCN (mkN (R.thword "พิซ" "ซา") "ถาด") ;
- Cheese = mkCN (mkN (R.thword "เนย" "แข็ง") "ก้อน") ;
- Fish = mkCN fish_N ;
- Fresh = mkAP (mkA "สด") ;
- Warm = mkAP warm_A ;
- Italian = mkAP (mkA " อิตาลี") ;
- Expensive = mkAP (mkA "แพง") ;
- Delicious = mkAP (mkA "อร่อย") ;
- Boring = mkAP (mkA (R.thword "น่า" "เบิ่อ")) ;
-
-}
diff --git a/examples/foods/FoodsTsn.gf b/examples/foods/FoodsTsn.gf
deleted file mode 100644
index dae2bdfba..000000000
--- a/examples/foods/FoodsTsn.gf
+++ /dev/null
@@ -1,177 +0,0 @@
-
--- (c) 2009 Laurette Pretorius Sr & Jr and Ansu Berg under LGPL
-
-concrete FoodsTsn of Foods = open Prelude, Predef in {
- flags coding = utf8;
- lincat
- Comment = {s:Str};
- Item = {s:Str; c:NounClass; n:Number};
- Kind = {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool};
- Quality = {s: NounClass => Number => Str; p_form: Str; t: TType};
- lin
- Pred item quality = {s = item.s ++ ((mkPredDescrCop quality.t) ! item.c ! item.n) ++ quality.p_form};
-
- This kind = {s = (kind.w ! Sg) ++ (mkDemPron1 ! kind.c ! Sg) ++ (kind.q ! Sg); c = kind.c; n = Sg};
- That kind = {s = (kind.w ! Sg) ++ (mkDemPron2 ! kind.c ! Sg) ++ (kind.q ! Sg); c = kind.c; n = Sg};
- These kind = {s = (kind.w ! Pl) ++ (mkDemPron1 ! kind.c ! Pl) ++ (kind.q ! Pl); c = kind.c; n = Pl};
- Those kind = {s = (kind.w ! Pl) ++ (mkDemPron2 ! kind.c ! Pl) ++ (kind.q ! Pl); c = kind.c; n = Pl};
-
- Mod quality kind = mkMod quality kind;
-
- -- Lexicon
- Wine = mkNounNC14_6 "jalwa";
- Cheese = mkNounNC9_10 "kase";
- Fish = mkNounNC9_10 "thlapi";
- Pizza = mkNounNC9_10 "pizza";
- Very quality = smartVery quality;
- Fresh = mkVarAdj "ntsha";
- Warm = mkOrdAdj "bothitho";
- Italian = mkPerAdj "Itali";
- Expensive = mkVerbRel "tura";
- Delicious = mkOrdAdj "monate";
- Boring = mkOrdAdj "bosula";
-
- param
- NounClass = NC9_10 | NC14_6;
- Number = Sg | Pl;
- TType = P | V | ModV | R ;
- oper
- mkMod : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool} -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str;
- b: Bool} = \x,y -> case y.b of
- {
- True => {w = y.w; r = y.r; c = y.c;
- q = table {
- Sg => ((y.q ! Sg) ++ "le" ++ ((smartQualRelPart (x.t)) ! y.c ! Sg) ++ ((smartDescrCop (x.t)) ! y.c ! Sg) ++ (x.s ! y.c ! Sg));
- Pl => ((y.q ! Pl) ++ "le" ++ ((smartQualRelPart (x.t))! y.c ! Pl) ++ ((smartDescrCop (x.t)) ! y.c ! Pl) ++(x.s ! y.c ! Pl))
- }; b = True
- };
- False => {w = y.w; r = y.r; c = y.c;
- q = table {
- Sg => ((y.q ! Sg) ++ ((smartQualRelPart (x.t)) ! y.c ! Sg) ++ ((smartDescrCop (x.t)) ! y.c ! Sg) ++ (x.s ! y.c ! Sg));
- Pl => ((y.q ! Pl) ++ ((smartQualRelPart (x.t)) ! y.c ! Pl) ++ ((smartDescrCop (x.t)) ! y.c ! Pl) ++(x.s ! y.c ! Pl))
- }; b = True
- }
- };
-
- mkNounNC14_6 : Str -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool} = \x -> {w = table {Sg => "bo" + x; Pl => "ma" + x}; r = x; c = NC14_6;
- q = table {Sg => ""; Pl => ""}; b = False};
-
- mkNounNC9_10 : Str -> {w: Number => Str; r: Str; c: NounClass; q: Number => Str; b: Bool} = \x -> {w = table {Sg => "" + x; Pl => "di" + x}; r = x; c = NC9_10;
- q = table {Sg => ""; Pl => ""}; b = False};
-
- mkVarAdj : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x ->
- {
- s = table {
- NC9_10 => table {Sg => "" + x; Pl => "di" + x};
- NC14_6 => table {Sg => "bo" + x; Pl => "ma" + x}
- };
- p_form = x;
- t = R;
- };
-
- mkOrdAdj : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x ->
- {
- s = table {
- NC9_10 => table {Sg => "" + x; Pl => "" + x};
- NC14_6 => table {Sg => "" + x; Pl => "" + x}
- };
- p_form = x;
- t = R;
- };
-
- mkVerbRel : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x ->
- {
- s = table {
- NC9_10 => table {Sg => x + "ng"; Pl => x + "ng"};
- NC14_6 => table {Sg => x + "ng"; Pl => x + "ng"}
- };
- p_form = x;
- t = V;
- };
-
- mkPerAdj : Str -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x ->
- {
- s = table {
- NC9_10 => table {Sg => "" + x; Pl => "" + x};
- NC14_6 => table {Sg => "" + x; Pl => "" + x}
- };
- p_form = "mo" ++ x;
- t = P;
- };
-
- mkVeryAdj : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x ->
- {
- s = table{c => table{n => (x.s!c!n) ++ "thata"}}; p_form = x.p_form ++ "thata"; t = x.t
- };
-
- mkVeryVerb : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {s: NounClass => Number => Str; p_form: Str; t: TType} = \x ->
- {
- s = table{c => table{n => (x.s!c!n) ++ "thata"}}; p_form = x.p_form ++ "thata"; t = ModV
- };
-
- smartVery : {s: NounClass => Number => Str; p_form: Str; t: TType} -> {s: NounClass => Number => Str; p_form: Str; t: TType} =
-\x -> case x.t of --(x.s!c!n)
- {
- (V | ModV) => mkVeryVerb x;
- --ModV => mkVeryVerb x;
- _ => mkVeryAdj x
- };
-
- mkDemPron1 : NounClass => Number => Str = table
- {
- NC9_10 => table {Sg => "e"; Pl => "tse"};
- NC14_6 => table {Sg => "bo"; Pl => "a"}
- };
-
- mkDemPron2 : NounClass => Number => Str = table
- {
- NC9_10 => table {Sg => "eo"; Pl => "tseo"};
- NC14_6 => table {Sg => "boo"; Pl => "ao"}
- };
-
- smartQualRelPart : TType -> (NounClass => Number => Str) = \x -> case x of
- {
- P => mkQualRelPart_PName;
- _ => mkQualRelPart
- };
-
- mkQualRelPart : NounClass => Number => Str = table
- {
- NC9_10 => table {Sg => "e"; Pl => "tse"};
- NC14_6 => table {Sg => "bo"; Pl => "a"}
- };
-
- mkQualRelPart_PName : NounClass => Number => Str = table
- {
- NC9_10 => table {Sg => "ya"; Pl => "tsa"};
- NC14_6 => table {Sg => "ba"; Pl => "a"}
- };
-
- smartDescrCop : TType -> (NounClass => Number => Str) = \x -> case x of
- {
- P => mkDescrCop_PName;
- _ => mkDescrCop
- };
-
- mkDescrCop : NounClass => Number => Str = table
- {
- NC9_10 => table {Sg => "e"; Pl => "di"};
- NC14_6 => table {Sg => "bo"; Pl => "a"}
- };
-
- mkDescrCop_PName : NounClass => Number => Str = table
- {
- NC9_10 => table {Sg => "ga"; Pl => "ga"};
- NC14_6 => table {Sg => "ga"; Pl => "ga"}
- };
-
- mkPredDescrCop : TType -> (NounClass => Number => Str) = \x -> case x of
- {
- V => table {NC9_10 => table {Sg => "e" ++ "a"; Pl => "di" ++ "a"};
- NC14_6 => table {Sg => "bo" ++ "a"; Pl => "a" ++ "a"}};
-
- _ => table {NC9_10 => table {Sg => "e"; Pl => "di"};
- NC14_6 => table {Sg => "bo"; Pl => "a"}}
- };
-
-}
diff --git a/examples/foods/FoodsTur.gf b/examples/foods/FoodsTur.gf
deleted file mode 100644
index 9347a6bf7..000000000
--- a/examples/foods/FoodsTur.gf
+++ /dev/null
@@ -1,140 +0,0 @@
-{-
- File : FoodsTur.gf
- Author : Server Çimen
- Version : 1.0
- Created on: August 26, 2009
-
- This file contains concrete grammar of Foods abstract grammar for Turkish Language.
- This grammar is to be used for Fridge demo and developed in the scope of GF Resource
- Grammar Summer School.
-
--}
-
-concrete FoodsTur of Foods = open Predef in {
- flags
- coding=utf8 ;
- lincat
- Comment = {s : Str} ;
- Quality = {s : Str ; c : Case; softness : Softness; h : Harmony} ;
- Kind = {s : Case => Number => Str} ;
- Item = {s : Str; n : Number} ;
- lin
- This = det Sg "bu" ;
- That = det Sg "şu" ;
- These = det Pl "bu" ;
- Those = det Pl "şu" ;
- -- Reason for excluding plural form of copula: In Turkish if subject is not a human being,
- -- then singular form of copula is used regardless of the number of subject. Since all
- -- possible subjects are non human, copula do not need to have plural form.
- Pred item quality = {s = item.s ++ quality.s ++ BIND ++ copula ! quality.softness ! quality.h} ;--! item.n} ;
- Mod quality kind = {s = case quality.c of {
- Nom => \\t,n => quality.s ++ kind.s ! t ! n ;
- Gen => \\t,n => quality.s ++ kind.s ! Gen ! n
- }
- } ;
- Wine = mkN "şarap" "şaraplar" "şarabı" "şarapları" ;
- Cheese = mkN "peynir" "peynirler" "peyniri" "peynirleri" ;
- Fish = mkN "balık" "balıklar" "balığı" "balıkları" ;
- Pizza = mkN "pizza" "pizzalar" "pizzası" "pizzaları" ;
- Very a = {s = "çok" ++ a.s ; c = a.c; softness = a.softness; h = a.h} ;
- Fresh = adj "taze" Nom;
- Warm = adj "ılık" Nom;
- Italian = adj "İtalyan" Gen ;
- Expensive = adj "pahalı" Nom;
- Delicious = adj "lezzetli" Nom;
- Boring = adj "sıkıcı" Nom;
- param
- Number = Sg | Pl ;
- Case = Nom | Gen ;
- Harmony = I_Har | Ih_Har | U_Har | Uh_Har ; --Ih = İ; Uh = Ü
- Softness = Soft | Hard ;
- oper
- det : Number -> Str -> {s : Case => Number => Str} -> {s : Str; n : Number} =
- \num,det,noun -> {s = det ++ noun.s ! Nom ! num; n = num} ;
- mkN = overload {
- mkN : Str -> Str -> {s : Case => Number => Str} = regNoun ;
- mkn : Str -> Str -> Str -> Str-> {s : Case => Number => Str} = noun ;
- } ;
- regNoun : Str -> Str -> {s : Case => Number => Str} =
- \peynir,peynirler -> noun peynir peynirler [] [] ;
- noun : Str -> Str -> Str -> Str-> {s : Case => Number => Str} =
- \sarap,saraplar,sarabi,saraplari -> {
- s = table {
- Nom => table {
- Sg => sarap ;
- Pl => saraplar
- } ;
- Gen => table {
- Sg => sarabi ;
- Pl => saraplari
- }
- }
- };
- {-
- Since there is a bug in overloading, this overload is useless.
-
- mkA = overload {
- mkA : Str -> {s : Str; c : Case; softness : Softness; h : Harmony} = \base -> adj base Nom ;
- mkA : Str -> Case -> {s : Str; c : Case; softness : Softness; h : Harmony} = adj ;
- } ;
- -}
- adj : Str -> Case -> {s : Str; c : Case; softness : Softness; h : Harmony} =
- \italyan,ca -> {s = italyan ; c = ca; softness = (getSoftness italyan); h = (getHarmony italyan)} ;
- -- See the comment at lines 26 and 27 for excluded plural form of copula.
- copula : Softness => Harmony {-=> Number-} => Str =
- table {
- Soft => table {
- I_Har => "dır" ;--table {
- -- Sg => "dır" ;
- -- Pl => "dırlar"
- --} ;
- Ih_Har => "dir" ;--table {
- --Sg => "dir" ;
- --Pl => "dirler"
- --} ;
- U_Har => "dur" ;--table {
- -- Sg => "dur" ;
- -- Pl => "durlar"
- --} ;
- Uh_Har => "dür" --table {
- --Sg => "dür" ;
- --Pl => "dürler"
- --}
- } ;
- Hard => table {
- I_Har => "tır" ;--table {
- --Sg => "tır" ;
- --Pl => "tırlar"
- --} ;
- Ih_Har => "tir" ;--table {
- --Sg => "tir" ;
- --Pl => "tirler"
- --} ;
- U_Har => "tur" ;--table {
- -- Sg => "tur" ;
- -- Pl => "turlar"
- --} ;
- Uh_Har => "tür"--table {
- --Sg => "tür" ;
- --Pl => "türler"
- --}
- }
- } ;
-
- getHarmony : Str -> Harmony
- = \base -> case base of {
- _+c@("ı"|"a"|"i"|"e"|"u"|"o"|"ü"|"ö")+
- ("b"|"v"|"d"|"z"|"j"|"c"|"g"|"ğ"|"l"|"r"|"m"|"n"|"y"|"p"|"f"|"t"|"s"|"ş"|"ç"|"k"|"h")* =>
- case c of {
- ("ı"|"a") => I_Har ;
- ("i"|"e") => Ih_Har ;
- ("u"|"o") => U_Har ;
- ("ü"|"ö") => Uh_Har
- }
- } ;
- getSoftness : Str -> Softness
- = \base -> case base of {
- _+("f"|"s"|"t"|"k"|"ç"|"ş"|"h"|"p") => Hard ;
- _ => Soft
- } ;
-}
\ No newline at end of file
diff --git a/examples/foods/FoodsUrd.gf b/examples/foods/FoodsUrd.gf
deleted file mode 100644
index 186b2f929..000000000
--- a/examples/foods/FoodsUrd.gf
+++ /dev/null
@@ -1,53 +0,0 @@
--- (c) 2009 Shafqat Virk under LGPL
-
-concrete FoodsUrd of Foods = {
-
- flags coding=utf8 ;
-
-
- param Number = Sg | Pl ;
- param Gender = Masc | Fem;
-
- oper coupla : Number -> Str =\n -> case n of {Sg => "ہے" ; Pl => "ہیں"};
-
-
- lincat
- Comment = {s : Str} ;
- Item = {s: Str ; n: Number ; g:Gender};
- Kind = {s: Number => Str ; g:Gender};
- Quality = {s: Gender => Number => Str};
-
- lin
- Pred item quality = {s = item.s ++ quality.s ! item.g ! item.n ++ coupla item.n} ;
- This kind = {s = "یھ" ++ kind.s ! Sg; n= Sg ; g = kind.g } ;
- These kind = {s = "یھ" ++ kind.s ! Pl; n = Pl ; g = kind.g} ;
- That kind = {s = "وہ" ++ kind.s ! Sg; n= Sg ; g = kind.g} ;
- Those kind = {s = "وہ" ++ kind.s ! Pl; n=Pl ; g = kind.g} ;
- Mod quality kind = {s = \\n => quality.s ! kind.g ! n ++ kind.s ! n ; g = kind.g};
- Wine = {s = table { Sg => "شراب" ; Pl => "شرابیں"} ; g = Fem};
- Cheese = {s = table { Sg => "پنیر" ; Pl => "پنیریں"} ; g = Fem};
- Fish = {s = table { Sg => "مچھلی" ; Pl => "مچھلیاں"} ; g = Fem};
- Pizza = {s = table { Sg => "پیزہ" ; Pl => "پیزے"} ; g = Masc};
- Very quality = {s = \\g,n => "بہت" ++ quality.s ! g ! n} ;
- Fresh = regAdj "تازہ" ;
- Warm = regAdj "گرم" ;
- Italian = regAdj "اٹا لوی" ;
- Expensive = regAdj "مہنگا" ;
- Delicious = regAdj "مزیدار" ;
- Boring = regAdj "فضول" ;
-
- oper
- regAdj : Str -> {s: Gender => Number => Str} = \a -> case a of {
- x + "ا" => mkAdj a (x+"ے") (x+"ی");
- _ => mkAdj a a a
- };
- mkAdj : Str -> Str -> Str -> {s: Gender => Number => Str} = \s,p,f -> {
- s = table {
- Masc => table {
- Sg => s;
- Pl => p
- };
- Fem => \\_ => f
- }
- };
- }
\ No newline at end of file
diff --git a/examples/foods/LexFoods.gf b/examples/foods/LexFoods.gf
deleted file mode 100644
index 12ace208c..000000000
--- a/examples/foods/LexFoods.gf
+++ /dev/null
@@ -1,15 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
-
-interface LexFoods = open Syntax in {
- oper
- wine_N : N ;
- pizza_N : N ;
- cheese_N : N ;
- fish_N : N ;
- fresh_A : A ;
- warm_A : A ;
- italian_A : A ;
- expensive_A : A ;
- delicious_A : A ;
- boring_A : A ;
-}
diff --git a/examples/foods/LexFoodsCat.gf b/examples/foods/LexFoodsCat.gf
deleted file mode 100644
index 624fc98c8..000000000
--- a/examples/foods/LexFoodsCat.gf
+++ /dev/null
@@ -1,18 +0,0 @@
--- (c) 2009 Jordi Saludes under LGPL
-
-instance LexFoodsCat of LexFoods =
- open SyntaxCat, ParadigmsCat, (M = MorphoCat) in {
- flags
- coding = utf8 ;
- oper
- wine_N = mkN "vi" "vins" M.Masc ;
- pizza_N = mkN "pizza" ;
- cheese_N = mkN "formatge" ;
- fish_N = mkN "peix" "peixos" M.Masc;
- fresh_A = mkA "fresc" "fresca" "frescos" "fresques" "frescament";
- warm_A = mkA "calent" ;
- italian_A = mkA "italià" "italiana" "italians" "italianes" "italianament" ;
- expensive_A = mkA "car" ;
- delicious_A = mkA "deliciós" "deliciosa" "deliciosos" "delicioses" "deliciosament";
- boring_A = mkA "aburrit" "aburrida" "aburrits" "aburrides" "aburridament" ;
-}
diff --git a/examples/foods/LexFoodsFin.gf b/examples/foods/LexFoodsFin.gf
deleted file mode 100644
index da6a26b8a..000000000
--- a/examples/foods/LexFoodsFin.gf
+++ /dev/null
@@ -1,21 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
---# -coding=latin1
-
-instance LexFoodsFin of LexFoods =
- open SyntaxFin, ParadigmsFin in {
- oper
- wine_N = mkN "viini" ;
- pizza_N = mkN "pizza" ;
- cheese_N = mkN "juusto" ;
- fish_N = mkN "kala" ;
- fresh_A = mkA "tuore" ;
- warm_A = mkA
- (mkN "lmmin" "lmpimn" "lmmint" "lmpimn" "lmpimn"
- "lmpimin" "lmpimi" "lmpimien" "lmpimiss" "lmpimiin"
- )
- "lmpimmpi" "lmpimin" ;
- italian_A = mkA "italialainen" ;
- expensive_A = mkA "kallis" ;
- delicious_A = mkA "herkullinen" ;
- boring_A = mkA "tyls" ;
-}
diff --git a/examples/foods/LexFoodsGer.gf b/examples/foods/LexFoodsGer.gf
deleted file mode 100644
index 5df504d8c..000000000
--- a/examples/foods/LexFoodsGer.gf
+++ /dev/null
@@ -1,17 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
---# -coding=latin1
-
-instance LexFoodsGer of LexFoods =
- open SyntaxGer, ParadigmsGer in {
- oper
- wine_N = mkN "Wein" ;
- pizza_N = mkN "Pizza" "Pizzen" feminine ;
- cheese_N = mkN "Kse" "Kse" masculine ;
- fish_N = mkN "Fisch" ;
- fresh_A = mkA "frisch" ;
- warm_A = mkA "warm" "wrmer" "wrmste" ;
- italian_A = mkA "italienisch" ;
- expensive_A = mkA "teuer" ;
- delicious_A = mkA "kstlich" ;
- boring_A = mkA "langweilig" ;
-}
diff --git a/examples/foods/LexFoodsIta.gf b/examples/foods/LexFoodsIta.gf
deleted file mode 100644
index 11de5fcda..000000000
--- a/examples/foods/LexFoodsIta.gf
+++ /dev/null
@@ -1,16 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
-
-instance LexFoodsIta of LexFoods =
- open SyntaxIta, ParadigmsIta in {
- oper
- wine_N = mkN "vino" ;
- pizza_N = mkN "pizza" ;
- cheese_N = mkN "formaggio" ;
- fish_N = mkN "pesce" ;
- fresh_A = mkA "fresco" ;
- warm_A = mkA "caldo" ;
- italian_A = mkA "italiano" ;
- expensive_A = mkA "caro" ;
- delicious_A = mkA "delizioso" ;
- boring_A = mkA "noioso" ;
-}
diff --git a/examples/foods/LexFoodsSwe.gf b/examples/foods/LexFoodsSwe.gf
deleted file mode 100644
index 6718e9fab..000000000
--- a/examples/foods/LexFoodsSwe.gf
+++ /dev/null
@@ -1,17 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
---# -coding=latin1
-
-instance LexFoodsSwe of LexFoods =
- open SyntaxSwe, ParadigmsSwe in {
- oper
- wine_N = mkN "vin" "vinet" "viner" "vinerna" ;
- pizza_N = mkN "pizza" ;
- cheese_N = mkN "ost" ;
- fish_N = mkN "fisk" ;
- fresh_A = mkA "frsk" ;
- warm_A = mkA "varm" ;
- italian_A = mkA "italiensk" ;
- expensive_A = mkA "dyr" ;
- delicious_A = mkA "lcker" ;
- boring_A = mkA "trkig" ;
-}
diff --git a/examples/foods/Makefile b/examples/foods/Makefile
deleted file mode 100644
index 5f42041ae..000000000
--- a/examples/foods/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-
-all:: Foods.pgf
-
-Foods.pgf: Foods???.gf
- gf -make -s Foods???.gf
-
-clean:
- rm -rf *.gfo Foods.pgf
diff --git a/examples/foods/MutationsGla.gf b/examples/foods/MutationsGla.gf
deleted file mode 100644
index 41eb11006..000000000
--- a/examples/foods/MutationsGla.gf
+++ /dev/null
@@ -1,53 +0,0 @@
-resource MutationsGla = open CharactersGla in {
- param Mutation = Unmutated|Lenition1|Lenition1DNTLS|Lenition2|PrefixT|PrefixH;
-
- --Turns a string into a mutation table
- oper mutate : (_ : Str) -> (Mutation => Str) = \str -> table {
- Unmutated => str ;
- Lenition1 => lenition1 str ;
- Lenition1DNTLS => lenition1dntls str ;
- Lenition2 => lenition2 str ;
- PrefixT => prefixT str ;
- PrefixH => prefixH str
- };
-
- --Performs lenition 1: inserts "h" if the word begins with a lenitable character
- oper lenition1 : Str -> Str = \str -> case str of {
- start@("p"|"b"|"m"|"f"|"t"|"d"|"c"|"g") + rest => start + "h" + rest ;
- start@("P"|"B"|"M"|"F"|"T"|"D"|"C"|"G") + rest => start + "h" + rest ;
- ("s"|"S") + ("p"|"t"|"c") + _ => str ; --the sequences "sp", "st", "sc" are never mutated
- start@("s"|"S") + rest => start + "h" + rest ;
- _ => str
- };
-
- --Performs lenition 1 with dentals: same as lenition 1 but leaves "d", "t" and "s" unmutated
- oper lenition1dntls : Str -> Str = \str -> case str of {
- start@("p"|"b"|"m"|"f"|"c"|"g") + rest => start + "h" + rest ;
- start@("P"|"B"|"M"|"F"|"C"|"G") + rest => start + "h" + rest ;
- _ => str
- };
-
- --Performs lenition 2: same as lenition 1 with dentals but also changes "s" into "ts"
- oper lenition2 : Str -> Str = \str -> case str of {
- start@("p"|"b"|"m"|"f"|"c"|"g") + rest => start + "h" + rest ;
- start@("P"|"B"|"M"|"F"|"C"|"G") + rest => start + "h" + rest ;
- ("s"|"S") + ("p"|"t"|"c") + _ => str ; --the sequences "sp", "st", "sc" are never mutated
- start@("s"|"S") + rest => "t-" + start + rest ;
- _ => str
- };
-
- --Prefixes a "t" to words beginning with a vowel
- oper prefixT : Str -> Str = \str -> case str of {
- start@(#vowel) + rest => "t-" + start + rest ;
- start@(#vowelCap) + rest => "t-" + start + rest ;
- _ => str
- };
-
- --Prefixes a "h" to words beginning with a vowel
- oper prefixH : Str -> Str = \str -> case str of {
- start@(#vowel) + rest => "h-" + start + rest ;
- start@(#vowelCap) + rest => "h-" + start + rest ;
- _ => str
- };
-
-}
\ No newline at end of file
diff --git a/examples/foods/MutationsGle.gf b/examples/foods/MutationsGle.gf
deleted file mode 100644
index 9ae734a90..000000000
--- a/examples/foods/MutationsGle.gf
+++ /dev/null
@@ -1,92 +0,0 @@
-resource MutationsGle = open CharactersGle in {
- param Mutation = Unmutated|Lenition1|Lenition1DNTLS|Lenition2|Eclipsis1|Eclipsis2|Eclipsis3|PrefixT|PrefixH;
-
- --Turns a string into a mutation table
- oper mutate : (_ : Str) -> (Mutation => Str) = \str -> table {
- Unmutated => str ;
- Lenition1 => lenition1 str ;
- Lenition1DNTLS => lenition1dntls str ;
- Lenition2 => lenition2 str ;
- Eclipsis1 => eclipsis1 str ;
- Eclipsis2 => eclipsis2 str ;
- Eclipsis3 => eclipsis3 str ;
- PrefixT => prefixT str ;
- PrefixH => prefixH str
- };
-
- --Performs lenition 1: inserts "h" if the word begins with a lenitable character
- oper lenition1 : Str -> Str = \str -> case str of {
- start@("p"|"b"|"m"|"f"|"t"|"d"|"c"|"g") + rest => start + "h" + rest ;
- start@("P"|"B"|"M"|"F"|"T"|"D"|"C"|"G") + rest => start + "h" + rest ;
- ("s"|"S") + ("p"|"t"|"c") + _ => str ; --the sequences "sp", "st", "sc" are never mutated
- start@("s"|"S") + rest => start + "h" + rest ;
- _ => str
- };
-
- --Performs lenition 1 with dentals: same as lenition 1 but leaves "d", "t" and "s" unmutated
- oper lenition1dntls : Str -> Str = \str -> case str of {
- start@("p"|"b"|"m"|"f"|"c"|"g") + rest => start + "h" + rest ;
- start@("P"|"B"|"M"|"F"|"C"|"G") + rest => start + "h" + rest ;
- _ => str
- };
-
- --Performs lenition 2: same as lenition 1 with dentals but also changes "s" into "ts"
- oper lenition2 : Str -> Str = \str -> case str of {
- start@("p"|"b"|"m"|"f"|"c"|"g") + rest => start + "h" + rest ;
- start@("P"|"B"|"M"|"F"|"C"|"G") + rest => start + "h" + rest ;
- ("s"|"S") + ("p"|"t"|"c") + _ => str ; --the sequences "sp", "st", "sc" are never mutated
- start@("s"|"S") + rest => "t" + start + rest ;
- _ => str
- };
-
- --Performs eclisis 1: prefixes something to every word that begins with an ecliptable character
- oper eclipsis1 : Str -> Str = \str -> case str of {
- start@("p"|"P") + rest => "b" + start + rest ;
- start@("b"|"B") + rest => "m" + start + rest ;
- start@("f"|"F") + rest => "bh" + start + rest ;
- start@("c"|"C") + rest => "g" + start + rest ;
- start@("g"|"G") + rest => "n" + start + rest ;
- start@("t"|"T") + rest => "d" + start + rest ;
- start@("d"|"D") + rest => "n" + start + rest ;
- start@(#vowel) + rest => "n-" + start + rest ;
- start@(#vowelCap) + rest => "n" + start + rest ;
- _ => str
- };
-
- --Performs eclipsis 2: same as eclipsis 1 but leaves "t", "d" and vowels unchanges
- oper eclipsis2 : Str -> Str = \str -> case str of {
- start@("p"|"P") + rest => "b" + start + rest ;
- start@("b"|"B") + rest => "m" + start + rest ;
- start@("f"|"F") + rest => "bh" + start + rest ;
- start@("c"|"C") + rest => "g" + start + rest ;
- start@("g"|"G") + rest => "n" + start + rest ;
- _ => str
- };
-
- --Performs eclipsis 3: same as eclipsis 2 but also changes "s" to "ts"
- eclipsis3 : Str -> Str = \str -> case str of {
- start@("p"|"P") + rest => "b" + start + rest ;
- start@("b"|"B") + rest => "m" + start + rest ;
- start@("f"|"F") + rest => "bh" + start + rest ;
- start@("c"|"C") + rest => "g" + start + rest ;
- start@("g"|"G") + rest => "n" + start + rest ;
- ("s"|"S") + ("p"|"t"|"c") + _ => str ; --the sequences "sp", "st", "sc" are never mutated
- start@("s"|"S") + rest => "t" + start + rest ;
- _ => str
- };
-
- --Prefixes a "t" to words beginning with a vowel
- oper prefixT : Str -> Str = \str -> case str of {
- start@(#vowel) + rest => "t-" + start + rest ;
- start@(#vowelCap) + rest => "t" + start + rest ;
- _ => str
- };
-
- --Prefixes a "h" to words beginning with a vowel
- oper prefixH : Str -> Str = \str -> case str of {
- start@(#vowel) + rest => "h" + start + rest ;
- start@(#vowelCap) + rest => "h" + start + rest ;
- _ => str
- };
-
-}
\ No newline at end of file
diff --git a/examples/foods/README b/examples/foods/README
deleted file mode 100644
index 64bc4ed5b..000000000
--- a/examples/foods/README
+++ /dev/null
@@ -1,8 +0,0 @@
-Foods grammars from GF Summer School 2009. To build:
-
- $ gf -make -s Foods???.gf -- to create Foods.pgf
-
- $ mv Foods.pgf ~/GF/src/server/gwt/www/grammars/ -- to use in web applications
-
-
-
diff --git a/examples/foods/ResCze.gf b/examples/foods/ResCze.gf
deleted file mode 100644
index 56b4aa6ee..000000000
--- a/examples/foods/ResCze.gf
+++ /dev/null
@@ -1,46 +0,0 @@
--- (c) 2011 Katerina Bohmova under LGPL
-
-resource ResCze = open Prelude in {
- flags
- coding = utf8 ;
- param
- Number = Sg | Pl ;
- Gender = Masc | Fem | Neutr;
- oper
- NounPhrase : Type =
- {s : Str ; g : Gender ; n : Number} ;
- Noun : Type = {s : Number => Str ; g : Gender} ;
- Adjective : Type = {s : Gender => Number => Str} ;
-
- det : Number -> Str -> Str -> Str -> Noun -> NounPhrase =
- \n,m,f,ne,cn -> {
- s = table {Masc => m ; Fem => f; Neutr => ne} ! cn.g ++
- cn.s ! n ;
- g = cn.g ;
- n = n
- } ;
- noun : Str -> Str -> Gender -> Noun =
- \muz,muzi,g -> {
- s = table {Sg => muz ; Pl => muzi} ;
- g = g
- } ;
- adjective : (msg,fsg,nsg,mpl,fpl,npl : Str) -> Adjective =
- \msg,fsg,nsg,mpl,fpl,npl -> {
- s = table {
- Masc => table {Sg => msg ; Pl => mpl} ;
- Fem => table {Sg => fsg ; Pl => fpl} ;
- Neutr => table {Sg => nsg ; Pl => npl}
- }
- } ;
- regAdj : Str -> Adjective =
- \mlad ->
- adjective (mlad+"ý") (mlad+"á") (mlad+"é")
- (mlad+"é") (mlad+"é") (mlad+"á") ;
- regnfAdj : Str -> Adjective =
- \vynikajici ->
- adjective vynikajici vynikajici vynikajici
- vynikajici vynikajici vynikajici;
- copula : Number => Str =
- table {Sg => "je" ; Pl => "jsou"} ;
-}
-
diff --git a/examples/foods/transFoodsHin.gf b/examples/foods/transFoodsHin.gf
deleted file mode 100644
index 21d1d2ac1..000000000
--- a/examples/foods/transFoodsHin.gf
+++ /dev/null
@@ -1,75 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
-
-concrete FoodsHin of Foods = {
-
- flags coding=utf8 ;
-
- param
- Gender = Masc | Fem ;
- Number = Sg | Pl ;
- lincat
- Comment = {s : Str} ;
- Item = {s : Str ; g : Gender ; n : Number} ;
- Kind = {s : Number => Str ; g : Gender} ;
- Quality = {s : Gender => Number => Str} ;
- lin
- Pred item quality = {
- s = item.s ++ quality.s ! item.g ! item.n ++ copula item.n
- } ;
- This kind = {s = "yah" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ;
- That kind = {s = "vah" ++ kind.s ! Sg ; g = kind.g ; n = Sg} ;
- These kind = {s = "ye" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ;
- Those kind = {s = "ve" ++ kind.s ! Pl ; g = kind.g ; n = Pl} ;
- Mod quality kind = {
- s = \\n => quality.s ! kind.g ! n ++ kind.s ! n ;
- g = kind.g
- } ;
- Wine = regN "madirA" ;
- Cheese = regN "panIr" ;
- Fish = regN "maClI" ;
- Pizza = regN "pijjA" ;
- Very quality = {s = \\g,n => "bahut" ++ quality.s ! g ! n} ;
- Fresh = regAdj "tAzA" ;
- Warm = regAdj "garam" ;
- Italian = regAdj "i-t.alI" ;
- Expensive = regAdj "mahaNgA" ;
- Delicious = regAdj "rucikar" ;
- Boring = regAdj "pEriyA" ;
-
- oper
- mkN : Str -> Str -> Gender -> {s : Number => Str ; g : Gender} =
- \s,p,g -> {
- s = table {
- Sg => s ;
- Pl => p
- } ;
- g = g
- } ;
-
- regN : Str -> {s : Number => Str ; g : Gender} = \s -> case s of {
- lark + "A" => mkN s (lark + "e") Masc ;
- lark + "I" => mkN s (lark + "iyaM") Fem ;
- _ => mkN s s Masc
- } ;
-
- mkAdj : Str -> Str -> Str -> {s : Gender => Number => Str} = \ms,mp,f -> {
- s = table {
- Masc => table {
- Sg => ms ;
- Pl => mp
- } ;
- Fem => \\_ => f
- }
- } ;
-
- regAdj : Str -> {s : Gender => Number => Str} = \a -> case a of {
- acch + "A" => mkAdj a (acch + "e") (acch + "I") ;
- _ => mkAdj a a a
- } ;
-
- copula : Number -> Str = \n -> case n of {
- Sg => "hE" ;
- Pl => "hEN"
- } ;
-
- }
diff --git a/examples/letter/Letter.gf b/examples/letter/Letter.gf
deleted file mode 100644
index 537750cb0..000000000
--- a/examples/letter/Letter.gf
+++ /dev/null
@@ -1,83 +0,0 @@
-abstract Letter = {
-
---1 An Abstract Syntax for Business and Love Letters
---
--- This file defines the abstract syntax of a grammar set whose concrete syntax
--- has so far been written to five languages: English, Finnish, French, Russian,
--- and Swedish.
---
--- The main category of the grammar is $Letter$. The other categories are
--- parts of the letter.
-
-flags startcat=Letter ;
-
-cat
- Letter ;
- Recipient ; Author ;
- Message ;
- Heading ; Ending ;
- Mode ; Sentence ; NounPhrase ; Position ;
-
--- There is just one top-level letter structure.
-
-fun
- MkLetter : Heading -> Message -> Ending -> Letter ;
-
--- The heading consists of a greeting of the recipient. The $JustHello$
--- function will actually suppress the name (and title) of the recipient,
--- but the $Recipient$ argument keeps track of the gender and number.
-
- DearRec : Recipient -> Heading ;
- PlainRec : Recipient -> Heading ;
- HelloRec : Recipient -> Heading ;
- JustHello : Recipient -> Heading ;
-
--- A message is a sentence with of without a *mode*, which is either
--- regret or honour.
-
- ModeSent : Mode -> Sentence -> Message ;
- PlainSent : Sentence -> Message ;
-
- Honour, Regret : Mode ;
-
--- The ending is either formal or informal. It does not currently depend on
--- the heading: making it so would eliminate formality mismatches between
--- the heading and the ending.
-
- FormalEnding : Author -> Ending ;
- InformalEnding : Author -> Ending ;
-
--- The recipient is either a colleague, colleagues, or darling.
--- It can also be a named person. The gender distinction is made
--- because there are things in the body of the letter that depend on it.
-
- ColleagueHe, ColleagueShe : Recipient ;
- ColleaguesHe, ColleaguesShe : Recipient ;
- DarlingHe, DarlingShe : Recipient ;
-
- NameHe, NameShe : String -> Recipient ;
-
--- For the author, there is likewise a fixed set of titles, plus the named author.
--- Gender distinctions could be useful even here, for the same reason as with
--- $Recipient$. Notice that the rendering of $Spouse$ will depend on the
--- gender of the recipient.
-
- President, Mother, Spouse, Dean : Author ;
- Name : String -> Author ;
-
--- As for the message body, no much choice is yet available: one can say that
--- the recipient is promoted to some position, that someone has gone bankrupt,
--- or that the author loves the recipient.
-
- BePromoted : Position -> Sentence ;
- GoBankrupt : NounPhrase -> Sentence ;
- ILoveYou : Sentence ;
-
- Competitor : NounPhrase ;
- Company : NounPhrase ;
- OurCustomers : NounPhrase ;
-
- Senior : Position ;
- ProjectManager : Position ;
-
-}
diff --git a/examples/letter/LetterEng.gf b/examples/letter/LetterEng.gf
deleted file mode 100644
index 6bc3fc884..000000000
--- a/examples/letter/LetterEng.gf
+++ /dev/null
@@ -1,158 +0,0 @@
-concrete LetterEng of Letter = {
-
---1 An English Concrete Syntax for Business and Love Letters
---
--- This file defines the English syntax of the grammar set
--- whose abstract syntax is $letter.Abs.gf$.
-
-flags lexer=textlit ; unlexer=textlit ;
-
-param Sex = masc | fem ;
-param Num = sg | pl ;
-param Kas = nom | acc ;
-param DepNum = depnum | cnum Num ;
-
-oper SS = {s : Str} ;
-oper SSDep = {s : Num => Sex => Str} ; -- needs Num and Sex
-oper SSSrc = {s : Str ; n : Num ; x : Sex} ; -- gives Num and Sex
-oper SSSrc2 = {s : Num => Sex => Str ; n : DepNum ; x : Sex} ; -- gives and needs
-oper SSDep2 = {s : DepNum => Sex => Num => Sex => Str} ; -- needs Auth's & Recp's
-oper SSSrcNum = {s : Str ; n : Num} ; -- gives Num only
-
-
-oper
- ss : Str -> SS = \s -> {s = s} ;
- constNX : Str -> Num -> Sex -> SSSrc2 = \str,num,sex ->
- {s = table {_ => table {_ => str}} ; n = cnum num ; x = sex} ;
-
- dep2num : DepNum -> Num -> Num = \dn,n -> case dn of {
- depnum => n ;
- cnum cn => cn
- } ;
-
- RET = "" ; -- &-
-
-lincat
-Letter = SS ;
-Recipient = SSSrc ;
-Author = SSSrc2 ;
-Message = SSDep2 ;
-Heading = SSSrc ;
-Ending = SSSrc2 ;
-Mode = SSDep2 ;
-Sentence = SSDep2 ;
-NounPhrase = SSSrcNum ;
-Position = SSDep ;
-
-lin
-MkLetter head mess end =
- ss (head.s ++ "," ++ RET ++
- mess.s ! end.n ! end.x ! head.n ! head.x ++ "." ++ RET ++
- end.s ! head.n ! head.x) ;
-
-DearRec rec = {s = "Dear" ++ rec.s ; n = rec.n ; x = rec.x} ;
-PlainRec rec = rec ;
-HelloRec rec = {s = "Hello" ++ rec.s ; n = rec.n ; x = rec.x} ;
-JustHello rec = {s = "Hello" ; n = rec.n ; x = rec.x} ;
-
-ModeSent mode sent =
- {s =
- table {dna => table {xa => table {nr => table {xr =>
- mode.s ! dna ! xa ! nr ! xr ++ sent.s ! dna ! xa ! nr ! xr}}}}
- } ;
-PlainSent sent = sent ;
-
-FormalEnding auth =
- {s = table {n => table {x =>
- ["Sincerely yours"] ++ RET ++ auth.s ! n ! x}} ; n = auth.n ; x = auth.x} ;
-InformalEnding auth =
- {s = table {n => table {x =>
- ["With best regards"] ++ RET ++ auth.s ! n ! x}} ; n = auth.n ; x = auth.x} ;
-
-ColleaguesHe = {s = kollega ! pl ; n = pl ; x = masc} ;
-ColleaguesShe = {s = kollega ! pl ; n = pl ; x = fem} ;
-ColleagueHe = {s = kollega ! sg ; n = sg ; x = masc} ;
-ColleagueShe = {s = kollega ! sg ; n = sg ; x = fem} ;
-DarlingHe = {s = "darling" ; n = sg ; x = masc} ;
-DarlingShe = {s = "darling" ; n = sg ; x = fem} ;
-NameHe s = {s = s.s ; n = sg ; x = masc} ;
-NameShe s = {s = s.s ; n = sg ; x = fem} ;
-
-
-Honour = {s =
- table {dna => table {xa => table {nr => table {xr =>
- let {na = dep2num dna nr} in
- ego ! na ! nom ++ ["have the honour to inform you that"]}}}}
- } ;
-
-Regret = {s =
- table {dna => table {xa => table {nr => table {xr =>
- let {na = dep2num dna nr} in
- ego ! na ! nom ++ am ! na ++ ["sorry to inform you that"]}}}}
- } ;
-
-
-President = constNX ["the President"] sg masc ;
-Mother = constNX "Mom" sg fem ;
-Spouse = {s = table {
- sg => table {fem => ["your husband"] ; masc => ["your wife"]} ;
- pl => table {fem => ["your husbands"] ; masc => ["your wives"]}
- } ; n = depnum ; x = masc} ; -- sex does not matter here
-Dean = constNX ["the Dean"] sg masc ;
-Name s = constNX s.s sg masc ; ---
-
-BePromoted pos = {s =
- table {na => table {xa => table {nr => table {xr =>
- ["you have been promoted to"] ++
- pos.s ! nr ! xr}}}}
- } ;
-GoBankrupt np = {s =
- table {na => table {xa => table {nr => table {xr =>
- np.s ++ have ! np.n ++ ["gone bankrupt"]}}}}
- } ;
-ILoveYou = {s =
- table {na => table {xa => table {nr => table {xr =>
- ego ! dep2num na nr ! nom ++ ["love you"]}}}}
- } ;
-
-Company = {s = ["our company"] ; n = sg} ;
-Competitor = {s = ["our worst competitor"] ; n = sg} ;
-OurCustomers = {s = ["our customers"] ; n = pl} ;
-
-Senior = {s =
- table {
- sg => table {x => ["a senior fellow"]} ;
- pl => table {x => ["senior fellows"]}
- }} ;
-ProjectManager = {s =
- table {
- sg => table {_ => ["a project manager"]} ;
- pl => table {_ => ["project managers"]}
- }} ;
-
-oper
-
-kollega :
- Num => Str =
- table {sg => "colleague" ; pl => "colleagues"} ;
-
-am :
- Num => Str =
- table {sg => "am" ; pl => "are"} ;
-
-have :
- Num => Str =
- table {sg => "has" ; pl => "have"} ;
-
-ego :
- Num => Kas => Str =
- table {
- sg => table {nom => "I" ; acc => "me"} ;
- pl => table {nom => "we" ; acc => "us"}
- } ;
-
- -- added by John 2013-01-11 for testing syntax editor
- printname cat Recipient = "Someone who receives a letter";
- printname fun HelloRec = "Saying hello to a recipient";
-
-}
diff --git a/examples/letter/LetterFin.gf b/examples/letter/LetterFin.gf
deleted file mode 100644
index 6892bfcd4..000000000
--- a/examples/letter/LetterFin.gf
+++ /dev/null
@@ -1,181 +0,0 @@
-concrete LetterFin of Letter = {
-
---1 A Finnish Concrete Syntax for Business and Love Letters
---
--- This file defines the Finnish syntax of the grammar set
--- whose abstract syntax is $letter.Abs.gf$.
-
-flags lexer=textlit ; unlexer=textlit ; coding=utf8;
-
--- modified from French in 20 min, 15/6/2002
-
-param Gen = masc | fem ;
-param Num = sg | pl ;
-param Kas = nom | acc ;
-param DepNum = depnum | cnum Num ;
-param DepGen = depgen | cgen Gen ;
-
-oper SS = {s : Str} ;
-oper SSDep = {s : Num => Gen => Str} ; -- needs Num and Gen
-oper SSSrc = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen
-oper SSSrc2 = {s : Num => Gen => Str ; n : DepNum ; g : DepGen} ; -- gives&needs
-oper SSDep2 = {s : DepNum => DepGen => Num => Gen => Str} ; -- needs Auth's&Rec's
-oper SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen
-
-oper
- ss : Str -> SS = \s -> {s = s} ;
-
- noDep : (P : Type) -> Str -> P => Str = \_,s -> table {_ => s} ;
-
- cher : Num => Gen => Tok =
- table {sg => noDep Gen "rakas" ; pl => noDep Gen "rakkaat"} ;
-
- egosum : Num => Str =
- table {sg => "olen" ; pl => "olemme"} ;
- egohabeo : Num => Str =
- table {sg => "minulla" ++ "on" ; pl => "meillä" ++ "on"} ;
- fuisti : Num => Str =
- table {sg => "sinut" ++ "on"; pl => "teidät" ++ "on"} ;
- quePrep = "että" ; ----
- tuinformare : Num => Str =
- table {sg => "ilmoittaa" ++ "sinulle" ; pl => "ilmoittaa" ++ "teille"} ;
-
- regNom : Str -> Num => Str = \pora -> table {sg => pora ; pl => pora + "t"} ;
-
- avoir : Num => Str =
- table {sg => "on"; pl => "ovat"} ;
-
- mes : Num => Str = table {sg => "minun" ; pl => "meidän"} ;
-
- teamo : Num => Num => Str = table {
- sg => table {sg => "rakastan" ++ "sinua" ;
- pl => "rakastan" ++ "teitä"} ;
- pl => table {sg => "rakastamme" ++ "sinua" ;
- pl => "rakastamme" ++ "teitä"}
- } ;
-
- constNG : Str -> Num -> Gen -> SSSrc2 = \str,num,gen ->
- {s = table {_ => table {_ => str}} ; n = cnum num ; g = cgen gen} ;
-
- dep2num : DepNum -> Num -> Num = \dn,n -> case dn of {
- depnum => n ;
- cnum cn => cn
- } ;
- dep2gen : DepGen -> Gen -> Gen = \dg,g -> case dg of {
- depgen => case g of {
- masc => fem ;
- fem => masc
- }; -- negative dependence: the author is of opposite sex
- cgen cg => cg
- } ;
-
- RET = "" ; -- &-
-
-lincat
-Letter = SS ;
-Recipient = SSSrc ;
-Author = SSSrc2 ;
-Message = SSDep2 ;
-Heading = SSSrc ;
-Ending = SSSrc2 ;
-Mode = SSDep2 ;
-Sentence = SSDep2 ;
-NounPhrase = SSSrcGen ;
-Position = SSDep ;
-
-lin
-MkLetter head mess end =
- ss (head.s ++ "," ++ RET ++
- mess.s ! end.n ! end.g ! head.n ! head.g ++ "." ++ RET ++
- end.s ! head.n ! head.g) ;
-
-DearRec rec = {s = cher ! rec.n ! rec.g ++ rec.s ; n = rec.n ; g = rec.g} ;
-PlainRec rec = rec ;
-HelloRec rec = {s = "Terve" ++ rec.s ; n = rec.n ; g = rec.g} ;
-JustHello rec = {s = "Terve" ; n = rec.n ; g = rec.g} ;
-
-ModeSent mode sent =
- {s =
- table {na => table {xa => table {nr => table {xr =>
- mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}}
- } ;
-PlainSent sent = sent ;
-
-FormalEnding auth =
- {s = table {n => table {g => ["parhain terveisin"] ++ RET ++ auth.s ! n ! g}} ;
- n = auth.n ; g = auth.g} ;
-InformalEnding auth =
- {s = table {n => table {g => ["terveisin"] ++ RET ++ auth.s ! n ! g}} ;
- n = auth.n ; g = auth.g} ;
-
-ColleaguesHe = {s = regNom "kollega" ! pl ; n = pl ; g = masc} ;
-ColleaguesShe = {s = regNom "kollega" ! pl ; n = pl ; g = fem} ;
-ColleagueHe = {s = regNom "kollega" ! sg ; n = sg ; g = masc} ;
-ColleagueShe = {s = regNom "kollega" ! sg ; n = sg ; g = fem} ;
-DarlingHe = {s = "kulta" ; n = sg ; g = masc} ;
-DarlingShe = {s = "kulta" ; n = sg ; g = fem} ;
-NameHe s = {s = s.s ; n = sg ; g = masc} ;
-NameShe s = {s = s.s ; n = sg ; g = fem} ;
-
-
-Honour = {s =
- table {na => table {xa => table {nr => table {xr =>
- egohabeo ! dep2num na nr ++
- ["kunnia"] ++ tuinformare ! nr ++ quePrep}}}}
- } ;
-
-Regret = {s =
- table {na => table {ga => table {nr => table {gr =>
- mes ! dep2num na nr ++
- ["on valitettavasti ilmoitettava"] ++ quePrep}}}}
- } ;
-
-
-President = constNG ["presidentti"] sg masc ;
-Mother = constNG ["äiti"] sg fem ;
-Spouse = {s = table {
- sg => table {fem => ["miehesi"] ; masc => ["vaimosi"]} ;
- pl => table {fem => ["miehenne"] ; masc => ["vaimonne"]}
- } ; n = depnum ; g = depgen} ;
-Dean = constNG ["dekaani"] sg masc ;
-Name s = constNG s.s sg masc ; ---
-
-BePromoted pos = {s =
- table {na => table {xa => table {nr => table {xr =>
- fuisti ! nr ++ "ylennetty" ++
- pos.s ! nr ! xr}}}}
- } ;
-GoBankrupt np = {s =
- table {na =>
- table {xa =>
- table {nr =>
- table {xr =>
- np.s ++ avoir ! np.n ++
- (case np.n of {sg => "mennyt" ; pl => "menneet"}) ++
- "konkurssiin"
- }
- }
- }
- }
- } ;
-
-ILoveYou = {s =
- table {na => table {xa => table {nr => table {xr =>
- teamo ! dep2num na nr ! nr}}}}} ;
-
-Company = {s = ["yrityksemme"] ; n = sg ; g = fem} ;
-Competitor = {s = ["pahin kilpailijamme"] ; n = sg ; g = masc} ;
-OurCustomers = {s = ["asiakkaamme"] ; n = pl ; g = masc} ;
-
-Senior = {s = table {sg => table {g => ["vanhemmaksi tutkijaksi"]} ;
- pl => table {g => ["vanhemmiksi tutkijoiksi"]}
- }
- } ;
-
-ProjectManager = {s =
- table {
- sg => table {_ => ["projektipäälliköksi"]} ;
- pl => table {_ => ["projektipäälliköiksi"]}
- }} ;
-
-}
diff --git a/examples/letter/LetterFre.gf b/examples/letter/LetterFre.gf
deleted file mode 100644
index 4eb40e6d0..000000000
--- a/examples/letter/LetterFre.gf
+++ /dev/null
@@ -1,171 +0,0 @@
-concrete LetterFre of Letter = {
-
---1 An French Concrete Syntax for Business and Love Letters
---
--- This file defines the French syntax of the grammar set
--- whose abstract syntax is $letter.Abs.gf$.
-
-
-flags lexer=textlit ; unlexer=textlit ; coding=utf8;
-
-param Gen = masc | fem ;
-param Num = sg | pl ;
-param Kas = nom | acc ;
-param DepNum = depnum | cnum Num ;
-param DepGen = depgen | cgen Gen ;
-
-oper SS = {s : Str} ;
-oper SSDep = {s : Num => Gen => Str} ; -- needs Num and Gen
-oper SSSrc = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen
-oper SSSrc2 = {s : Num => Gen => Str ; n : DepNum ; g : DepGen} ; -- gives&needs
-oper SSDep2 = {s : DepNum => DepGen => Num => Gen => Str} ; -- needs Auth's&Rec's
-oper SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen
-
-oper
- ss : Str -> SS = \s -> {s = s} ;
- cher : Num => Gen => Tok =
- table {n => table {masc => regNom "cher" ! n ; fem => regNom "chère" ! n}};
- regAdj : Str -> Gen => Num => Str = \s ->
- table {masc => regNom s ; fem => regNom (s + "e")} ;
- regNom : Str -> Num => Str = \s -> table {sg => s ; pl => s + "s"} ;
- egosum : Num => Str =
- table {sg => "je" ++ "suis" ; pl => "nous" ++ "sommes"} ;
- egohabeo : Num => Str =
- table {sg => "j'ai" ; pl => "nous" ++ "avons"} ;
- fuisti : Num => Str =
- table {sg => "tu" ++ "as" ++ "été"; pl => "vous" ++ "avez" ++ "été"} ;
- quePrep = "que" ; ----
- tuinformare : Num => Str =
- table {sg => "t'informer"; pl => "vous" ++ "informer"} ;
-
- avoir : Num => Str =
- table {sg => "a"; pl => "ont"} ;
-
- mes : Num => Str = table {sg => "mes" ; pl => "nos"} ;
-
- teamo : Num => Num => Str = table {
- sg => table {sg => "je" ++ "t'aime" ;
- pl => "je" ++ "vous" ++ "aime"} ;
- pl => table {sg => "nous" ++ "t'aimons" ;
- pl => "nous" ++ "vous" ++ "aimons"}
- } ;
-
- constNG : Str -> Num -> Gen -> SSSrc2 = \str,num,gen ->
- {s = table {_ => table {_ => str}} ; n = cnum num ; g = cgen gen} ;
-
- dep2num : DepNum -> Num -> Num = \dn,n -> case dn of {
- depnum => n ;
- cnum sg => sg ;
- cnum pl => pl
- } ;
- dep2gen : DepGen -> Gen -> Gen = \dg,g -> case dg of {
- depgen => case g of {
- masc => fem ;
- fem => masc
- }; -- negative dependence: the author is of opposite sex
- cgen cg => cg
- } ;
-
- RET = "" ; -- &-
-
-lincat
-Letter = SS ;
-Recipient = SSSrc ;
-Author = SSSrc2 ;
-Message = SSDep2 ;
-Heading = SSSrc ;
-Ending = SSSrc2 ;
-Mode = SSDep2 ;
-Sentence = SSDep2 ;
-NounPhrase = SSSrcGen ;
-Position = SSDep ;
-
-lin
-MkLetter head mess end =
- ss (head.s ++ "," ++ RET ++
- mess.s ! end.n ! end.g ! head.n ! head.g ++ "." ++ RET ++
- end.s ! head.n ! head.g) ;
-
-DearRec rec = {s = cher ! rec.n ! rec.g ++ rec.s ; n = rec.n ; g = rec.g} ;
-PlainRec rec = rec ;
-HelloRec rec = {s = "Bonjour" ++ rec.s ; n = rec.n ; g = rec.g} ;
-JustHello rec = {s = "Bonjour" ; n = rec.n ; g = rec.g} ;
-
-ModeSent mode sent =
- {s =
- table {na => table {xa => table {nr => table {xr =>
- mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}}
- } ;
-PlainSent sent = sent ;
-
-FormalEnding auth =
- {s =
- table {n => table {g =>
- "avec" ++ mes ! dep2num auth.n n ++
- ["salutations distinguées"] ++ RET ++ auth.s ! n ! g}} ;
- n = auth.n ; g = auth.g} ;
-InformalEnding auth =
- {s = table {n => table {g => ["Amicalement"] ++ RET ++ auth.s ! n ! g}} ;
- n = auth.n ; g = auth.g} ;
-
-ColleaguesHe = {s = regNom "collègue" ! pl ; n = pl ; g = masc} ;
-ColleaguesShe = {s = regNom "collègue" ! pl ; n = pl ; g = fem} ;
-ColleagueHe = {s = regNom "collègue" ! sg ; n = sg ; g = masc} ;
-ColleagueShe = {s = regNom "collègue" ! sg ; n = sg ; g = fem} ;
-DarlingHe = {s = "chéri" ; n = sg ; g = masc} ;
-DarlingShe = {s = "chérie" ; n = sg ; g = fem} ;
-NameHe s = {s = s.s ; n = sg ; g = masc} ;
-NameShe s = {s = s.s ; n = sg ; g = fem} ;
-
-Honour = {s =
- table {na => table {xa => table {nr => table {xr =>
- egohabeo ! dep2num na nr ++
- ["l'honneur de"] ++ tuinformare ! nr ++ quePrep}}}}
- } ;
-
-Regret = {s =
- table {na => table {ga => table {nr => table {gr =>
- let {dga = dep2gen ga gr ; dna = dep2num na nr} in
- egosum ! dna ++ regAdj "désolé" ! dga ! dna ++
- ["d'informer"] ++ quePrep}}}}
- } ;
-
-
-President = constNG ["le président"] sg masc ;
-Mother = constNG ["maman"] sg fem ;
-Spouse = {s = table {
- sg => table {fem => ["ton mari"] ; masc => ["ta femme"]} ;
- pl => table {fem => ["vos maris"] ; masc => ["vos femmes"]}
- } ; n = depnum ; g = depgen} ;
-Dean = constNG ["le doyen"] sg masc ;
-Name s = constNG s.s sg masc ; ---
-
-BePromoted pos = {s =
- table {na => table {xa => table {nr => table {xr =>
- fuisti ! nr ++ regAdj "promu" ! xr ! nr ++
- pos.s ! nr ! xr}}}}
- } ;
-GoBankrupt np = {s =
- table {na => table {xa => table {nr => table {xr =>
- np.s ++ avoir ! np.n ++ ["fait banqueroute"]}}}}
- } ;
-ILoveYou = {s =
- table {na => table {xa => table {nr => table {xr =>
- teamo ! dep2num na nr ! nr}}}}
- } ;
-
-Company = {s = ["notre entreprise"] ; n = sg ; g = fem} ;
-Competitor = {s = ["notre pire compétiteur"] ; n = sg ; g = masc} ;
-OurCustomers = {s = ["nos clients"] ; n = pl ; g = masc} ;
-
-Senior = {s = table {sg => table {g => ["responsable scientifique"]} ;
- pl => table {g => ["responsables scientifiques"]}
- }
- } ;
-
-ProjectManager = {s =
- table {
- sg => table {_ => ["chef de projet"]} ;
- pl => table {_ => ["chefs de projets"]}
- }} ;
-}
diff --git a/examples/letter/LetterHeb.gf b/examples/letter/LetterHeb.gf
deleted file mode 100644
index c50d6102c..000000000
--- a/examples/letter/LetterHeb.gf
+++ /dev/null
@@ -1,216 +0,0 @@
-concrete LetterHeb of Letter = {
-
--- (c) Alex Kutsela 2005
-
-flags lexer=textlit ; unlexer=textlit ; coding=utf8 ;
-
-param Gen = masc | fem ;
-param Num = sg | pl ;
-param Kas = nom | dat | acc ;
-param DepNum = depnum | cnum Num ;
-param DepGen = depgen | cgen Gen ;
-
-oper SS = {s : Str} ;
-oper SSDep = {s : Num => Gen => Str} ; -- needs Num and Gen
-oper SSSrc = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen
-oper SSSrc2 = {s : Num => Gen => Str ; n : DepNum ; g : DepGen} ; -- gives&needs
-oper SSDep2 = {s : DepNum => DepGen => Num => Gen => Str} ; -- needs Auth's&Rec's
-oper SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen
-
-oper
- ss : Str -> SS = \s -> {s = s} ;
- regAdj : Str -> Num => Gen => Tok =\s -> table {
- sg => table {masc => s; fem => s+"ה"};
- pl => table {masc => s+"ים"; fem => s+"ות"}
- };
-
-hello : Str -> Num => Str = \s -> table {sg => s ; pl => s} ;
-
-regVerPerf : Str -> Num => Gen => Str = \s ->
- table {sg => table {masc => s; fem => s+"ה"};
- pl => table {masc => s+"ו"; fem => s+"ו"}
- };
-
-ego : Num => Str = table {sg => "אןי" ; pl => "אןחןו" } ;
-
-tu : Num => Gen => Kas => Str =
- table {sg => table {fem => table {nom => "את"; dat => "לך"; acc => "אותך"} ;
- masc => table {nom => "אתה"; dat => "לך"; acc => "אותך"}
- } ;
- pl => table {fem => table {nom => "אתן"; dat => "לכן"; acc => "אתכן"} ;
- masc => table {nom => "אתם"; dat => "לכם"; acc => "אתכם"}
- }
- };
-
-hereIam : Num => Str =
- table {sg => "הןןי" ; pl => "הןןו" } ;
-
-haveBeen : Str -> Num => Gen => Str = \s ->
- table {sg => table {masc => s+"ת"; fem => s+"ת"};
- pl => table {masc => s+"תם"; fem => s+"תן"}
- };
-
-thatConj = ["ש"] ;
-
-regVer : Str -> Num => Gen => Str = \s ->
- table {sg => table {masc => s; fem => s+"ת"};
- pl => table {masc => s+"ים"; fem => s+"ות"}
- };
-
-constNG : Str -> Num -> Gen -> SSSrc2 = \str,num,gen ->
- {s = table {_ => table {_ => str}} ; n = cnum num ; g = cgen gen} ;
-
-dep2num : DepNum -> Num -> Num = \dn,n -> case dn of {
- depnum => n ;
- cnum cn => cn
- } ;
-dep2gen : DepGen -> Gen -> Gen = \dg,g -> case dg of {
- depgen => case g of {
- masc => fem ;
- fem => masc
- }; -- negative dependence: the author is of opposite sex
- cgen cg => cg
- } ;
-
- RET = "" ; -- &-
-
-
-lincat
-Letter = SS ;
-Recipient = SSSrc ;
-Author = SSSrc2 ;
-Message = SSDep2 ;
-Heading = SSSrc ;
-Ending = SSSrc2 ;
-Mode = SSDep2 ;
-Sentence = SSDep2 ;
-NounPhrase = SSSrcGen ;
-Position = SSDep ;
-
-lin
-MkLetter head mess end =
- ss ("," ++ head.s ++ RET ++
- mess.s ! end.n ! end.g ! head.n ! head.g ++ RET ++
- end.s ! head.n ! head.g) ;
-
-DearRec rec = {s = rec.s ++ regAdj "יקר" ! rec.n ! rec.g;
- n = rec.n;
- g = rec.g};
-PlainRec rec = rec ;
-HelloRec rec = {s = hello "שלום" ! rec.n ++ rec.s ; n = rec.n ; g = rec.g} ;
-JustHello rec = {s = hello "שלום" ! rec.n ; n = rec.n ; g = rec.g} ;
-
-ModeSent mode sent =
- {s =
- table {na => table {xa => table {nr => table {xr =>
- mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}}
- } ;
-PlainSent sent = sent ;
-
-FormalEnding auth =
- {s =
- table {n => table {g =>
- [", בכבוד רב"] ++ RET ++
- auth.s ! n ! g
- }} ;
- n = auth.n ; g = auth.g} ;
-
-InformalEnding auth =
- {s = table {n => table {g => [", בברכה"] ++ RET ++ auth.s ! n ! g}} ;
- n = auth.n ; g = auth.g} ;
-
-ColleagueHe = {s = "עמית" ; n = sg ; g = masc} ;
-ColleagueShe = {s = "עמיתה" ; n = sg ; g = fem} ;
-ColleaguesHe = {s = "עמיתים" ; n = pl ; g = masc} ;
-ColleaguesShe = {s = "עמיתות" ; n = pl ; g = fem} ;
-DarlingHe = {s = "אהובי" ; n = sg ; g = masc} ;
-DarlingShe = {s = "אהובתי" ; n = sg ; g = fem} ;
-
-NameHe s = {s = s.s ; n = sg ; g = masc} ;
-NameShe s = {s = s.s ; n = sg ; g = fem} ;
-
-Honour = {s = table {
- na => table {
- xa => table {
- nr => table {
- xr => hereIam ! dep2num na nr ++
- regVer "מתכבד" ! dep2num na nr ! dep2gen xa xr ++
- ["להודיע"] ++ tu ! nr ! xr ! dat ++ thatConj
- }
- }
- }
- }
- } ;
-
-Regret = {s = table {
- na => table {
- ga => table {
- nr => table {
- gr => let {dga = dep2gen ga gr ; dna = dep2num na nr} in
- ego ! dna ++ regVer "מצטער" ! dna ! dga ++
- ["להודיע"] ++ tu ! nr ! gr ! dat ++ thatConj
- }
- }
- }
- }
- } ;
-
-Dean = constNG ["דיקן"] sg masc ;
-President = constNG ["ןשיא"] sg masc ;
-Mother = constNG ["אמא"] sg fem ;
-Name s = constNG s.s sg masc ; ---
-Spouse = {s = table {
- sg => table {fem => ["בעלך"] ; masc => ["אישתך"]} ;
- pl => table {fem => ["בעליכן"] ; masc => ["ןשותיכם"]}
- } ; n = depnum ; g = depgen} ;
-
-BePromoted pos = {s = table {
- na => table {
- xa => table {
- nr => table {
- xr => haveBeen "קודמ" ! nr !xr ++ "לתפקיד" ++ "של" ++ pos.s ! nr ! xr
- }
- }
- }
- }
- } ;
-
-GoBankrupt np =
- {s = table
- {na => table
- {xa => table
- {nr => table
- {xr => np.s ++ regVerPerf "פשט" ! np.n ! np.g ++ "רגל"}
- }
- }
- }
- } ;
-
-ILoveYou = {s = table
- {na => table
- {ga => table
- {nr => table
- {gr => let {dga = dep2gen ga gr ; dna = dep2num na nr} in
- ego ! dna ++ regVer "אוהב" ! dna ! dga ++
- tu ! nr ! gr ! acc}
- }
- }
- }
- } ;
-
-Company = {s = ["חברתןו"] ; n = sg ; g = fem} ;
-Competitor = {s = ["המתחרה הגרוע ביותר שלןו"] ; n = sg ; g = masc} ;
-OurCustomers = {s = ["לקוחותיןו"] ; n = pl ; g = masc} ;
-
-Senior = {s = table
- {sg => table {g => ["חבר בכיר"]} ;
- pl => table {g => ["חברים בכירים"]}
- }
- } ;
-
-ProjectManager = {s = table {
- sg => table {fem => ["מןהלת פרוייקט"]; masc => ["מןהל פרוייקט"]} ;
- pl => table {fem => ["מןהלות פרוייקט"]; mask =>["מןהלי פרוייקט"]}
- }
- } ;
-}
diff --git a/examples/letter/LetterRus.gf b/examples/letter/LetterRus.gf
deleted file mode 100644
index cad177946..000000000
--- a/examples/letter/LetterRus.gf
+++ /dev/null
@@ -1,178 +0,0 @@
-concrete LetterRus of Letter = {
-
-flags lexer=textlit ; unlexer=textlit ; coding=utf8 ;
-
-param Gen = masc | fem ;
-param Num = sg | pl ;
-param Kas = nom | acc ;
-param DepNum = depnum | cnum Num ;
-param DepGen = depgen | cgen Gen ;
-
-oper SS = {s : Str} ;
-oper SSDep = {s : Num => Gen => Str} ; -- needs Num and Gen
-oper SSSrc = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen
-oper SSSrc2 = {s : Num => Gen => Str ; n : DepNum ; g : DepGen} ; -- gives&needs
-oper SSDep2 = {s : DepNum => DepGen => Num => Gen => Str} ; -- needs Auth's&Rec's
-oper SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen
-
-oper
- ss : Str -> SS = \s -> {s = s} ;
- regAdj : Str -> Num => Gen => Tok =\s -> table {
- sg => table {masc => s+"ой"; fem => s+"ая"};
- pl => table {masc => s+"ие"; fem => s+"ие"}
- };
- regVer : Str -> Num => Gen => Str = \s -> table {
- sg => table {masc => s; fem => s+"а"};
- pl => table {masc => s+"ы"; fem => s+"ы"}
- };
-
- hello : Str -> Num => Str = \s ->
- table {sg => s ; pl => s+"те" } ;
-
- regVerPerf : Str -> Num => Gen => Str = \s -> table {
- sg => table {masc => s+"ся"; fem => s+"ось"};
- pl => table {masc => s+"ись"; fem => s+"ись"}
- };
-
- ego : Num => Str =
- table {sg => "я" ; pl => "вы" } ;
- egoHave : Num => Str =
- table {sg => ["я имею"] ; pl => ["мы имеем"]} ;
-
- haveBeen : Num => Gen => Str = table {
- sg => table {masc => ["ты был"] ; fem => ["ты была"] };
- pl => table {masc => ["вы были"]; fem => ["вы были"]}
- };
-
- thatPrep = [", что"] ;
- informYou : Num => Str =
- table {sg => ["сообщить тебе"]; pl => ["сообщить вам"]} ;
-
- loveYou : Num => Num => Str = table {
- sg => table {sg => ["я тебя люблю"] ;
- pl => ["я вас люблю"]} ;
- pl => table {sg => ["мы тебя любим"] ;
- pl => ["мы вас любим"]}
- } ;
-
- constNG : Str -> Num -> Gen -> SSSrc2 = \str,num,gen ->
- {s = table {_ => table {_ => str}} ; n = cnum num ; g = cgen gen} ;
-
- dep2num : DepNum -> Num -> Num = \dn,n -> case dn of {
- depnum => n ;
- cnum cn => cn
- } ;
- dep2gen : DepGen -> Gen -> Gen = \dg,g -> case dg of {
- depgen => case g of {
- masc => fem ;
- fem => masc
- }; -- negative dependence: the author is of opposite sex
- cgen cg => cg
- } ;
-
- RET = "" ; -- &-
-
-lincat
-Letter = SS ;
-Recipient = SSSrc ;
-Author = SSSrc2 ;
-Message = SSDep2 ;
-Heading = SSSrc ;
-Ending = SSSrc2 ;
-Mode = SSDep2 ;
-Sentence = SSDep2 ;
-NounPhrase = SSSrcGen ;
-Position = SSDep ;
-
-lin
-MkLetter head mess end =
- ss (head.s ++ "," ++ RET ++
- mess.s ! end.n ! end.g ! head.n ! head.g ++ "." ++ RET ++
- end.s ! head.n ! head.g) ;
-
-DearRec rec = {s = regAdj "Дорог"
- ! rec.n ! rec.g ++ rec.s ; n = rec.n ; g = rec.g} ;
-PlainRec rec = rec ;
-HelloRec rec = {s = hello "Здравствуй" ! rec.n ++ rec.s ; n = rec.n ; g = rec.g} ;
-JustHello rec = {s = hello "Здравствуй" ! rec.n ; n = rec.n ; g = rec.g} ;
-
-ModeSent mode sent =
- {s =
- table {na => table {xa => table {nr => table {xr =>
- mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}}
- } ;
-PlainSent sent = sent ;
-
-FormalEnding auth =
- {s =
- table {n => table {g =>
- "С" ++
- ["наилучшими пожеланиями ,"] ++ RET ++ auth.s ! n ! g}} ;
- n = auth.n ; g = auth.g} ;
-InformalEnding auth =
- {s = table {n => table {g => ["С дружеским приветом , "] ++ RET ++ auth.s ! n ! g}} ;
- n = auth.n ; g = auth.g} ;
-
-ColleaguesHe = {s = "коллеги" ; n = pl ; g = masc} ;
-ColleaguesShe = {s = "коллеги" ; n = pl ; g = fem} ;
-ColleagueHe = {s = "коллега" ; n = sg ; g = masc} ;
-ColleagueShe = {s = "коллега" ; n = sg ; g = fem} ;
-DarlingHe = {s = "любимый" ; n = sg ; g = masc} ;
-DarlingShe = {s = "любимая" ; n = sg ; g = fem} ;
-NameHe s = {s = s.s ; n = sg ; g = masc} ;
-NameShe s = {s = s.s ; n = sg ; g = fem} ;
-
-
-Honour = {s =
- table {na => table {xa => table {nr => table {xr =>
- egoHave ! dep2num na nr ++
- ["честь"] ++ informYou ! nr ++ thatPrep}}}}
- } ;
-
-Regret = {s =
- table {na => table {ga => table {nr => table {gr =>
- let {dga = dep2gen ga gr ; dna = dep2num na nr} in
- ego ! dna ++ regVer "вынужден" ! dna ! dga ++
- ["сообщить"] ++ thatPrep}}}}
- } ;
-
-
-President = constNG ["президент"] sg masc ;
-Mother = constNG ["мама"] sg fem ;
-Spouse = {s = table {
- sg => table {fem => ["твой муж"] ; masc => ["твоя жена"]} ;
- pl => table {fem => ["ваши мужья"] ; masc => ["ваши жены"]}
- } ; n = depnum ; g = depgen} ;
-Dean = constNG ["декан"] sg masc ;
-Name s = constNG s.s sg masc ; ---
-
-BePromoted pos = {s =
- table {na => table {xa => table {nr => table {xr =>
- haveBeen ! nr ! xr ++ regVer "назначен" ! nr ! xr ++
- pos.s ! nr ! xr}}}}
- } ;
-GoBankrupt np = {s =
- table {na => table {xa => table {nr => table {xr =>
- np.s ++ regVerPerf "обанкротил" ! np.n ! np.g }}}}
- } ;
-ILoveYou = {s =
- table {na => table {xa => table {nr => table {xr =>
- loveYou ! dep2num na nr ! nr}}}}
- } ;
-
-Company = {s = ["наше предприятие"] ; n = sg ; g = fem} ;
-Competitor = {s = ["наш конкурент"] ; n = sg ; g = masc} ;
-OurCustomers = {s = ["наши клиенты"] ; n = pl ; g = masc} ;
-
-Senior = {s = table {sg => table {g => ["старшим научным сотрудником"]} ;
- pl => table {g =>[ "старшими научными сотрудниками"]}
- }
- } ;
-
-ProjectManager = {s =
- table {
- sg => table {_ => ["менеджером проекта"]} ;
- pl => table {_ => ["менеджерами проектов"]}
- }} ;
-
-}
diff --git a/examples/letter/LetterSwe.gf b/examples/letter/LetterSwe.gf
deleted file mode 100644
index a2ca59aa9..000000000
--- a/examples/letter/LetterSwe.gf
+++ /dev/null
@@ -1,164 +0,0 @@
-concrete LetterSwe of Letter = {
-
---1 An Swedish Concrete Syntax for Business and Love Letters
---
--- This file defines the Swedish syntax of the grammar set
--- whose abstract syntax is $letter.Abs.gf$.
-
-
-flags lexer=textlit ; unlexer=textlit ; coding=utf8;
-
-printname cat Letter = "Brev" ;
-printname fun MkLetter = "brevmall" ;
-
-param Sex = masc | fem ;
-param Gen = en | ett ;
-param Num = sg | pl ;
-param Kas = nom | acc ;
-param DepNum = depnum | cnum Num ;
-
-oper SS = {s : Str} ;
-oper SSDep = {s : Num => Sex => Str} ; -- needs Num and Sex
-oper SSSrc = {s : Str ; n : Num ; x : Sex} ; -- gives Num and Sex
-oper SSSrc2 = {s : Num => Sex => Str ; n : DepNum ; x : Sex} ; -- gives and needs
-oper SSDep2 = {s : DepNum => Sex => Num => Sex => Str} ; -- needs Auth's & Recp's
-oper SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen
-
-
-oper
- ss : Str -> SS = \s -> {s = s} ;
-
- constNX : Str -> Num -> Sex -> SSSrc2 = \str,num,sex ->
- {s = table {_ => table {_ => str}} ; n = cnum num ; x = sex} ;
-
- dep2num : DepNum -> Num -> Num = \dn,n -> case dn of {
- depnum => n ;
- cnum cn => cn
- } ;
-
- RET = "" ; -- &-
-
-lincat
-Letter = SS ;
-Recipient = SSSrc ;
-Author = SSSrc2 ;
-Message = SSDep2 ;
-Heading = SSSrc ;
-Ending = SSSrc2 ;
-Mode = SSDep2 ;
-Sentence = SSDep2 ;
-NounPhrase = SSSrcGen ;
-Position = SSDep ;
-
-lin
-MkLetter head mess end =
- ss (head.s ++ "," ++ RET ++
- mess.s ! end.n ! end.x ! head.n ! head.x ++ "." ++ RET ++
- end.s ! head.n ! head.x) ;
-
-DearRec rec = {s = kaer ! rec.n ! rec.x ++ rec.s ; n = rec.n ; x = rec.x} ;
-PlainRec rec = rec ;
-HelloRec rec = {s = "Hej" ++ rec.s ; n = rec.n ; x = rec.x} ;
-JustHello rec = {s = "Hej" ; n = rec.n ; x = rec.x} ;
-
-ModeSent mode sent =
- {s =
- table {na => table {xa => table {nr => table {xr =>
- mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}}
- } ;
-PlainSent sent = sent ;
-
-FormalEnding auth =
- {s = table {n => table {x =>
- ["Med vänlig hälsning"] ++ RET ++ auth.s ! n ! x}} ; n = auth.n ; x = auth.x} ;
-
-InformalEnding auth =
- {s = table {n => table {x =>
- ["Med hälsningar"] ++ RET ++ auth.s ! n ! x}} ; n = auth.n ; x = auth.x} ;
-
-ColleaguesHe = {s = kollega ! pl ; n = pl ; x = masc} ;
-ColleaguesShe = {s = kollega ! pl ; n = pl ; x = fem} ;
-ColleagueHe = {s = kollega ! sg ; n = sg ; x = masc} ;
-ColleagueShe = {s = kollega ! sg ; n = sg ; x = fem} ;
-DarlingHe = {s = "älskling" ; n = sg ; x = masc} ;
-DarlingShe = {s = "älskling" ; n = sg ; x = fem} ;
-NameHe s = {s = s.s ; n = sg ; x = masc} ;
-NameShe s = {s = s.s ; n = sg ; x = fem} ;
-
-Honour = {s =
- table {na => table {xa => table {nr => table {xr =>
- jag ! dep2num na nr ! nom ++ ["har äran att meddela"] ++
- du ! nr ! acc ++ "att"}}}}
- } ;
-
-Regret = {s =
- table {na => table {xa => table {nr => table {xr =>
- jag ! dep2num na nr ! nom ++ ["måste tyvärr meddela"] ++
- du ! nr ! acc ++ "att"}}}}
- } ;
-
-
-President = constNX ["Presidenten"] sg masc ;
-Mother = constNX ["Mamma"] sg fem ;
-Spouse = {s = table {
- sg => table {fem => ["din man"] ; masc => ["din hustru"]} ;
- pl => table {fem => ["era män"] ; masc => ["era hustrur"]}
- } ; n = depnum ; x = masc} ; -- sex does not matter here
-Dean = constNX ["Dekanus"] sg masc ;
-Name s = constNX s.s sg masc ; ---
-
-BePromoted pos = {s =
- table {na => table {xa => table {nr => table {xr =>
- du ! nr ! nom ++ ["har blivit"] ++ befordrad ! nr ++
- "till" ++ pos.s ! nr ! xr}}}}
- } ;
-GoBankrupt np = {s =
- table {na => table {xa => table {nr => table {xr =>
- np.s ++ ["har gått i konkurs"]}}}}
- } ;
-ILoveYou = {s =
- table {na => table {xa => table {nr => table {xr =>
- jag ! dep2num na nr ! nom ++ ["älskar"] ++ du ! nr ! acc}}}}
- } ;
-
-Company = {s = ["vårt företag"] ; n = sg ; g = ett} ;
-Competitor = {s = ["vår värsta konkurrent"] ; n = sg ; g = en} ;
-OurCustomers = {s = ["våra kunder"] ; n = pl ; g = en} ;
-
-Senior = {s = table {n => table {x => ["äldre forskare"]}}} ;
-ProjectManager = {s =
- table {
- sg => table {_ => "projektchef"} ;
- pl => table {_ => "projektchefer"}
- }} ;
-
-oper
-
-kaer :
- Num => Sex => Str =
- table {
- sg => table {masc => "Käre" ; fem => "Kära"} ;
- pl => table {_ => "Kära"}
- } ;
-
-kollega :
- Num => Str =
- table {sg => "kollega" ; pl => "kollegor"} ;
-
-befordrad :
- Num => Str =
- table {sg => "befordrad" ; pl => "befordrade"} ;
-
-jag :
- Num => Kas => Str =
- table {
- sg => table {nom => "jag" ; acc => "mig"} ;
- pl => table {nom => "vi" ; acc => "oss"}
- } ;
-du :
- Num => Kas => Str =
- table {
- sg => table {nom => "du" ; acc => "dig"} ;
- pl => table {nom => "ni" ; acc => "er"}
- } ;
-}
diff --git a/examples/letter/README b/examples/letter/README
deleted file mode 100644
index d1691f721..000000000
--- a/examples/letter/README
+++ /dev/null
@@ -1,35 +0,0 @@
-GF challenges Microsoft Works! Here you find templates for
-multilingual authoring of business and love letters!
-
-Another point of these grammars is to illustrate how
-local updates are propagated everywhere in the document.
-Form, in the editor
-
- Dear Colleague,
-
- I love you.
-
- With best regards,
-
- your wife
-
-and change between ColleagueHe, ColleagueShe, ColleaguesHe, ColleaguesShe.
-
-The grammars are somewhat ad hoc and messy, and could be improved
-with better abstractions.
-
-(AR 2001)
-
-To use the grammars in an editor, first compile them to javascript:
-
- gfc --make --output-format=js Letter???.gf
-
-Then open the file ./editor/editor.html in a web browser. You also need the javascript
-libraries from
-
- GF/lib/javascript/
-
-Copyright (c) 2001-2008 Janna Khegai, Alex Kutsela, Aarne Ranta
-under GNU General Public License (GPL).
-
-Document last updated December 4, 2008, by Aarne Ranta.
diff --git a/examples/letter/editor/editor.html b/examples/letter/editor/editor.html
deleted file mode 100644
index 5c9aa4fc5..000000000
--- a/examples/letter/editor/editor.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Web-based Syntax Editor
-
-
-
-
-
-
diff --git a/examples/phrasebook/Clone.hs b/examples/phrasebook/Clone.hs
deleted file mode 100644
index 4619c13ed..000000000
--- a/examples/phrasebook/Clone.hs
+++ /dev/null
@@ -1,65 +0,0 @@
-module Main where
-
-import Control.Monad
-import Data.Maybe
-import Data.Char
-import System.Cmd
-import System.Directory
-import System.Environment
-import System.Exit
-
-
--- To clone a project from one language to another:
---
--- 1. for each Module in 'modules', copy ModuleFROM to ModuleTO
--- 2. in each ModuleTO, replace substrings FROM by TO, if not prefixes of an Ident
--- 3. in each ModuleTO in 'specifics', comment out every line in the body, except
--- those whose first word is in 'commons'.
---
--- Syntax: runghc Clone FROM TO
--- Example: runhugs Clone Swe Nor
-
--- The following lines are for the phrasebook project, and can be changed
--- to fit other projects.
-
-modules = "Phrasebook":"Sentences":specifics
-specifics = ["Words","Greetings"]
-commons = ["Apple","Beer","Bread","Fish","Milk","Salt","Water","Wine",
- "Bad","Cold","Good","Warm","AHasChildren"]
-
-
-main = do
- from:to:_ <- getArgs
- mapM_ (clone from to) modules
-
-clone from to pref = do
- s <- readFile (pref ++ from ++ ".gf")
- writeFile (pref ++ to ++ ".gf") (commentIf (isSpecific pref) (replaceLang from to s))
-
-isSpecific = flip elem specifics
-
-replaceLang s1 s2 = repl where
- repl s = case s of
- c:cs -> case splitAt lgs s of
- (pre,c:rest) | pre == s1 && elem c " \n\t,:=(){}.-[];" -> s2 ++ [c] ++ repl rest
- _ -> c : repl cs
- _ -> s
- lgs = 3 -- length s1
-
--- the file name has the form p....pLLL.gf, i.e. 3-letter lang name, suffix .gf
-getLangName fi =
- let (nal,ferp) = splitAt 3 (drop 3 (reverse fi)) in
- (reverse ferp,reverse nal)
-
-commentIf c = if c then (unlines . commentBody . lines) else id
-
-commentBody ss = header ++ map comment body ++ ["}"] where
- (header,body) = break (isJment . words) ss
- isJment ws = case ws of
- k:_ | elem k ["flags","lin","lincat","oper","param"] -> True
- _ -> False
- comment l = case l of
- _ | take 2 l == "--" -> l -- already commented
- _ | all isSpace l -> l -- empty line
- _ | elem (head (words l)) commons -> l -- in 'commons'
- _ -> "--" ++ l
diff --git a/examples/phrasebook/Compile.hs b/examples/phrasebook/Compile.hs
deleted file mode 100644
index bc64a6f30..000000000
--- a/examples/phrasebook/Compile.hs
+++ /dev/null
@@ -1,47 +0,0 @@
-import Data.List(partition)
-import Control.Monad(when)
-import System.Cmd(system)
-import System.Environment(getArgs)
-
--- (c) Aarne Ranta 2010 under GNU LGPL
-
--- Compile files into pgf, in chosen combinations.
-
--- Usage: runghc Compile (-make | -link)? Eng Fre Fin ...
--- The -make option links all pgf files to one in the end
--- The -link option only links, without first compiling
--- Arguments whose length are 3 characters are prefixed with mainmodu.
--- Other arguments are passed literally.
-
--- Thus, for instance, to produce an English-Swedish-Romanian phrasebook with English
--- disambiguation, the command is
---
--- runghc Compile -link Eng Swe Ron DisambPhrasebookEng
-
-
--- change this to apply to another project; alternatively, just use full file names
-mainmodu = "Phrasebook"
-
-main = do
- (opts,langs) <- partition ((=='-') . head) `fmap` getArgs
- let modus = [mkFile la | la <- langs]
- let opt = elem "-opt" opts
- putStrLn $ unwords modus
- when (notElem "-link" opts) $ mapM_ (compileOne opt) modus
- case opts of
- _ | elem "-make" opts || elem "-link" opts -> do
- let comm = "gf -make -s " ++ unwords (map (++ ".pgf") modus)
- putStrLn comm
- system comm
- return ()
- _ -> return ()
-
-compileOne opt modu = do
- let optim = if opt then " -optimize-pgf" else ""
- comm = "gf -make -s" ++ optim ++ " -name=" ++
- modu ++ " " ++ modu ++ ".gf" ++
- " +RTS -K32M"
- putStrLn comm
- system comm
-
-mkFile la = if length la == 3 then mainmodu ++ la else la
diff --git a/examples/phrasebook/DisambPhrasebookEng.gf b/examples/phrasebook/DisambPhrasebookEng.gf
deleted file mode 100644
index af8753869..000000000
--- a/examples/phrasebook/DisambPhrasebookEng.gf
+++ /dev/null
@@ -1,84 +0,0 @@
---# -path=.:present
-
-concrete DisambPhrasebookEng of Phrasebook = PhrasebookEng -
- [
- PGreetingMale, PGreetingFemale,
- IMale, IFemale,
- YouFamMale, YouFamFemale,
- YouPolMale, YouPolFemale,
- LangNat, -- CitiNat,
- GExcuse, GExcusePol,
- GSorry, GSorryPol,
- GPleaseGive, GPleaseGivePol,
- GNiceToMeetYou, -- GNiceToMeetYouPol,
- PYes, PYesToNo, ObjMass,
- MKnow,
- WeMale, WeFemale,
- YouPlurFamMale, YouPlurFamFemale,
- YouPlurPolMale, YouPlurPolFemale,
- TheyMale, TheyFemale,
- PImperativeFamPos,
- PImperativeFamNeg,
- PImperativePolPos,
- PImperativePolNeg,
- PImperativePlurPos,
- PImperativePlurNeg
- ]
- ** open SyntaxEng, ParadigmsEng, IrregEng, Prelude in {
-lin
- PGreetingMale g = mkText (lin Text g) (lin Text (ss "(by male)")) ;
- PGreetingFemale g = mkText (lin Text g) (lin Text (ss "(by female)")) ;
- IMale = mkP i_Pron "(male)" ;
- IFemale = mkP i_Pron "(female)" ;
- WeMale = mkP we_Pron "(male)" ;
- WeFemale = mkP we_Pron "(female)" ;
- YouFamMale = mkP youSg_Pron "(singular,familiar,male)" ;
- YouFamFemale = mkP youSg_Pron "(singular,familiar,female)" ;
- YouPolMale = mkP youPol_Pron "(singular,polite,male)" ;
- YouPolFemale = mkP youPol_Pron "(singular,polite,female)" ;
- YouPlurFamMale = mkP youSg_Pron "(plural,familiar,male)" ;
- YouPlurFamFemale = mkP youSg_Pron "(plural,familiar,female)" ;
- YouPlurPolMale = mkP youPol_Pron "(plural,polite,male)" ;
- YouPlurPolFemale = mkP youPol_Pron "(plural,polite,female)" ;
- TheyMale = mkP they_Pron "(male)" ;
- TheyFemale = mkP they_Pron "(female)" ;
-
- MKnow = mkVV (partV know_V "how") ; ---
-
- LangNat nat = mkNP nat.lang (ParadigmsEng.mkAdv "(language)") ;
--- CitiNat nat = nat.prop ;
-
- GExcuse = fam "excuse me" ;
- GExcusePol = pol "excuse me" ;
- GSorry = fam "sorry" ;
- GSorryPol = pol "sorry" ;
- GPleaseGive = fam "please" ;
- GPleaseGivePol = pol "please" ;
- GNiceToMeetYou = fam "nice to meet you" ;
--- GNiceToMeetYouPol = pol "nice to meet you" ;
-
- PYes = mkPhrase (lin Utt (ss "yes (answer to positive question)")) ;
- PYesToNo = mkPhrase (lin Utt (ss "yes (answer to negative question)")) ;
-
- ObjMass x = mkNP (mkNP x) (ParadigmsEng.mkAdv "(a portion of)") ;
-
- PImperativeFamPos v = phrasePlease (mkUtt (mkImp (addAdv ("singular,familiar") v))) ;
- PImperativeFamNeg v = phrasePlease (mkUtt negativePol (mkImp (addAdv ("singular,familiar") v))) ;
- PImperativePolPos v = phrasePlease (mkUtt politeImpForm (mkImp (addAdv ("singular,polite") v))) ;
- PImperativePolNeg v = phrasePlease (mkUtt politeImpForm negativePol (mkImp (addAdv ("singular,polite") v))) ;
- PImperativePlurPos v = phrasePlease (mkUtt pluralImpForm (mkImp (addAdv ("plural,familiar") v))) ;
- PImperativePlurNeg v = phrasePlease (mkUtt pluralImpForm negativePol (mkImp (addAdv ("plural,familiar") v))) ;
-
-
-oper
- fam : Str -> SS = \s -> postfixSS "(familiar)" (ss s) ;
- pol : Str -> SS = \s -> postfixSS "(polite)" (ss s) ;
-
- mkP : Pron -> Str -> {name : NP ; isPron : Bool ; poss : Quant} = \p,s ->
- {name = mkNP (mkNP p) (ParadigmsEng.mkAdv s) ;
- isPron = False ; -- to show the disambiguation
- poss = SyntaxEng.mkQuant youSg_Pron
- } ;
-
- addAdv : Str -> VP -> VP = \s,vp -> mkVP vp (ParadigmsEng.mkAdv ("("+s+")")) ;
-}
diff --git a/examples/phrasebook/DisambPhrasebookRon.gf b/examples/phrasebook/DisambPhrasebookRon.gf
deleted file mode 100644
index c6cdf9aae..000000000
--- a/examples/phrasebook/DisambPhrasebookRon.gf
+++ /dev/null
@@ -1,11 +0,0 @@
---# -path=.:present
-
-concrete DisambPhrasebookRon of Phrasebook = PhrasebookRon -
- [PSentence, PQuestion, ObjIndef
- ]
- ** open SyntaxRon, Prelude in {
-lin
- PSentence s = mkText s ; -- punctuation not optional
- PQuestion s = mkText s ;
- ObjIndef k = mkNP someSg_Det k ;
-}
diff --git a/examples/phrasebook/Greetings.gf b/examples/phrasebook/Greetings.gf
deleted file mode 100644
index 580b1560b..000000000
--- a/examples/phrasebook/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/examples/phrasebook/GreetingsBul.gf b/examples/phrasebook/GreetingsBul.gf
deleted file mode 100644
index f271d7717..000000000
--- a/examples/phrasebook/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/examples/phrasebook/GreetingsCat.gf b/examples/phrasebook/GreetingsCat.gf
deleted file mode 100644
index db8992e22..000000000
--- a/examples/phrasebook/GreetingsCat.gf
+++ /dev/null
@@ -1,31 +0,0 @@
---# -coding=latin1
-concrete GreetingsCat of Greetings = SentencesCat [Greeting,mkGreeting] ** open Prelude in {
-
-lin
- GBye = mkGreeting "adu" ;
- GCheers = mkGreeting "salut" ;
- GDamn = mkGreeting "merda" ;
- GExcuse = mkGreeting "perdona" ;
- GExcusePol = mkGreeting ("perdoni" | "disculpi") ;
- GCongratulations = mkGreeting "felicitats" ;
- GHappyBirthday = mkGreeting "feli aniversari" ;
- GGoodLuck = mkGreeting "sort" ;
- GGoodDay = mkGreeting "bon dia" ;
- GGoodEvening = mkGreeting "bona tarda" ;
- GGoodMorning = mkGreeting "bon dia" ;
- GGoodNight = mkGreeting "bona nit" ;
- GGoodbye = mkGreeting "a reveure" ;
- GHello = mkGreeting "hola" ;
- GHelp = mkGreeting "socors" ;
- GHowAreYou = mkGreeting "qu tal" ;
- GLookOut = mkGreeting "compte" ;
- GNiceToMeetYou = mkGreeting "encantat de conixer-lo" ; -- make distinction Masc/Fem
- GPleaseGive = mkGreeting "si et plau" ;
- GPleaseGivePol = mkGreeting "si us plau" ;
- GSeeYouSoon = mkGreeting "fins aviat" ;
- GSorry = mkGreeting "perdoni" ;
- GSorryPol = mkGreeting "em sap greu" ;
- GThanks = mkGreeting "grcies" ;
- GTheCheck = mkGreeting "el compte" ;
-
-}
diff --git a/examples/phrasebook/GreetingsChi.gf b/examples/phrasebook/GreetingsChi.gf
deleted file mode 100644
index 40d532e0d..000000000
--- a/examples/phrasebook/GreetingsChi.gf
+++ /dev/null
@@ -1,33 +0,0 @@
-concrete GreetingsChi of Greetings =
-SentencesChi [Greeting,mkGreeting] **
-open ParadigmsChi, ResChi, Prelude in {
-
-flags coding = utf8 ;
-
-lin
-GBye = (mkInterj "再见" ) ;
-GCheers = (mkInterj "干杯" ) ;
-GDamn = (mkInterj "该死的" ) ;
-GExcuse, GExcusePol = (mkInterj "原谅我" ) ;
-GGoodDay = (mkInterj "你好" ) ;
-GGoodEvening = (mkInterj "下午好" ) ;
-GGoodMorning = (mkInterj "早上好" ) ;
-GGoodNight = (mkInterj "晚安" ) ;
-GGoodbye = (mkInterj "再见" ) ;
-GHello = (mkInterj "你好" ) ;
-GHelp = mkInterj "帮助" ;
-GHowAreYou = mkInterj "你好吗" ;
-GLookOut = mkInterj "留意" ;
-GNiceToMeetYou = mkInterj "很高兴见到你" ;
-GNiceToMeetYouPol = mkInterj "很高兴见到您" ;
-GPleaseGive, GPleaseGivePol = mkInterj "请" ;
-GSeeYouSoon = mkInterj "很快再见" ;
-GSorry, GSorryPol = mkInterj "对不起" ;
-GThanks = (mkInterj "谢谢" ) ;
-GTheCheck = mkInterj "检查" ;
-GCongratulations = mkInterj "祝贺您" ;
-GHappyBirthday = mkInterj "祝你生日快乐" ;
-GGoodLuck = (mkInterj "祝你好运" ) ;
-GWhatTime = mkInterj "现在是什么时候" ;
-
-}
diff --git a/examples/phrasebook/GreetingsDan.gf b/examples/phrasebook/GreetingsDan.gf
deleted file mode 100644
index 3aa8e8be9..000000000
--- a/examples/phrasebook/GreetingsDan.gf
+++ /dev/null
@@ -1,29 +0,0 @@
---# -coding=latin1
-concrete GreetingsDan of Greetings = SentencesDan [Greeting,mkGreeting] ** open Prelude in {
-
-lin
- GBye = mkGreeting "hej hej" ; -- not google translate
- GCheers = mkGreeting "skl" ;
- GDamn = mkGreeting "satans" ; -- X
- GExcuse, GExcusePol = mkGreeting "undskyld mig" ;
- GGoodDay = mkGreeting "god dag" ;
- GGoodEvening = mkGreeting "god aften" ;
- GGoodMorning = mkGreeting "god morgen" ;
- GGoodNight = mkGreeting "godnat" ;
- GGoodbye = mkGreeting "farvel" ;
- GHello = mkGreeting "hej" ;
- GHelp = mkGreeting "hjlp" ;
- GHowAreYou = mkGreeting "hvordan har du det" ;
- GLookOut = mkGreeting "pas p" ;
- GNiceToMeetYou, GNiceToMeetYouPol = mkGreeting "hyggeligt at mde dig" ; -- more common than rart (google translate)
- GPleaseGive = mkGreeting "vr s sd" ; -- can also have flink instead of sod
- GPleaseGivePol = mkGreeting "venligst" ; -- X not behage
- GSeeYouSoon = mkGreeting "vi ses snart" ; -- X se dig snart
- GSorry, GSorryPol = mkGreeting "undskyld" ;
- GThanks = mkGreeting "tak" ;
- GTheCheck = mkGreeting "regningen" ;
- GCongratulations = mkGreeting "tillykke";
- GHappyBirthday = mkGreeting "tillykke med fdselsdagen" ;
- GGoodLuck = mkGreeting "held og lykke" ;
-
-}
diff --git a/examples/phrasebook/GreetingsDut.gf b/examples/phrasebook/GreetingsDut.gf
deleted file mode 100644
index bb7e2745b..000000000
--- a/examples/phrasebook/GreetingsDut.gf
+++ /dev/null
@@ -1,30 +0,0 @@
-concrete GreetingsDut of Greetings = SentencesDut [Greeting,mkGreeting] ** open Prelude in {
-
-
-lin
- GBye = mkGreeting "doei" ;
- GCheers = mkGreeting "proost" ;
- GDamn = mkGreeting "verdomme" ;
- GExcuse, GExcusePol = mkGreeting "pardon" ;
- GGoodDay = mkGreeting "goedendag" ;
- GGoodEvening = mkGreeting "goedenavond" ;
- GGoodMorning = mkGreeting "goedemorgen" ;
- GGoodNight = mkGreeting "goedenacht" ;
- GGoodbye = mkGreeting "tot ziens" ;
- GHello = mkGreeting "hallo" ;
- GHelp = mkGreeting "help" ;
- GHowAreYou = mkGreeting "hoe gaat het" ;
- GLookOut = mkGreeting "kijk uit" ;
- GNiceToMeetYou = mkGreeting "leuk je te ontmoeten" ;
- GNiceToMeetYouPol = mkGreeting "leuk je u ontmoeten" ;
- GPleaseGive, GPleaseGivePol = mkGreeting "alstublieft" ;
- GSeeYouSoon = mkGreeting "tot ziens" ;
- GSorry = mkGreeting "sorry";
- GSorryPol = mkGreeting "mijn verontschuldiging" ;
- GThanks = mkGreeting "dank je wel" ;
- GTheCheck = mkGreeting "rekening" ;
- GCongratulations = mkGreeting "gefeliciteerd";
- GHappyBirthday = mkGreeting "gelukkige verjaardag" ;
- GGoodLuck = mkGreeting "veel geluk" ;
- GWhatTime = mkGreeting "hoe laat is het" ;
-}
diff --git a/examples/phrasebook/GreetingsEng.gf b/examples/phrasebook/GreetingsEng.gf
deleted file mode 100644
index 1bfb75287..000000000
--- a/examples/phrasebook/GreetingsEng.gf
+++ /dev/null
@@ -1,27 +0,0 @@
-concrete GreetingsEng of Greetings = SentencesEng [Greeting,mkGreeting] ** open Prelude in {
-
-lin
- GBye = mkGreeting "bye" ;
- GCheers = mkGreeting "cheers" ;
- GDamn = mkGreeting "damn" ;
- GExcuse, GExcusePol = mkGreeting "excuse me" ;
- GGoodDay = mkGreeting "good afternoon" ; ----
- GGoodEvening = mkGreeting "good evening" ;
- GGoodMorning = mkGreeting "good morning" ;
- GGoodNight = mkGreeting "good night" ;
- GGoodbye = mkGreeting "goodbye" ;
- GHello = mkGreeting "hello" ;
- GHelp = mkGreeting "help" ;
- GHowAreYou = mkGreeting "how are you" ;
- GLookOut = mkGreeting "look out" ;
- GNiceToMeetYou, GNiceToMeetYouPol = mkGreeting "nice to meet you" ;
- GPleaseGive, GPleaseGivePol = mkGreeting "please" ;
- GSeeYouSoon = mkGreeting "see you soon" ;
- GSorry, GSorryPol = mkGreeting "sorry" ;
- GThanks = mkGreeting "thank you" ;
- GTheCheck = mkGreeting "the bill" ;
- GCongratulations = mkGreeting "congratulations";
- GHappyBirthday = mkGreeting "happy birthday" ;
- GGoodLuck = mkGreeting "good luck" ;
- GWhatTime = mkGreeting "what time is it" | mkGreeting "what is the time" ;
-}
diff --git a/examples/phrasebook/GreetingsEst.gf b/examples/phrasebook/GreetingsEst.gf
deleted file mode 100644
index fc29f2c3f..000000000
--- a/examples/phrasebook/GreetingsEst.gf
+++ /dev/null
@@ -1,26 +0,0 @@
-concrete GreetingsEst of Greetings = SentencesEst [Greeting,mkGreeting] ** open Prelude in {
-
-lin
- GBye = mkGreeting "head aega" ;
- GCheers = mkGreeting "terviseks" ;
- GDamn = mkGreeting "neetud" ;
- GExcuse, GExcusePol = mkGreeting "vabandust" ;
- GGoodDay = mkGreeting "tere päevast" ;
- GGoodEvening = mkGreeting "tere õhtust" ;
- GGoodMorning = mkGreeting "tere hommikust" ;
- GGoodNight = mkGreeting "head ööd" ;
- GGoodbye = mkGreeting "head aega" ;
- GHello = mkGreeting "tere" ;
- GHelp = mkGreeting "appi" ;
- GHowAreYou = mkGreeting "kuidas käsi käib" ;
- GLookOut = mkGreeting "ettevaatust" ;
- GNiceToMeetYou = mkGreeting "meeldiv tutvuda" ;
- GPleaseGive, GPleaseGivePol = mkGreeting "palun" ;
- GSeeYouSoon = mkGreeting "kohtumiseni" ;
- GSorry, GSorryPol = mkGreeting "vabandust" ;
- GThanks = mkGreeting "suur tänu" ;
- GTheCheck = mkGreeting "arve" ;
- GCongratulations = mkGreeting "palju õnne";
- GHappyBirthday = mkGreeting "palju õnne sünnipäevaks" ;
- GGoodLuck = mkGreeting "palju edu" ;
-}
diff --git a/examples/phrasebook/GreetingsFin.gf b/examples/phrasebook/GreetingsFin.gf
deleted file mode 100644
index 4fc71c1aa..000000000
--- a/examples/phrasebook/GreetingsFin.gf
+++ /dev/null
@@ -1,30 +0,0 @@
---# -coding=latin1
-concrete GreetingsFin of Greetings = SentencesFin [Greeting,mkGreeting] ** open Prelude in {
-
-lin
- GBye = mkGreeting "hei hei" ;
- GCheers = mkGreeting "terveydeksi" ;
- GDamn = mkGreeting "hitto" ;
- GExcuse, GExcusePol = mkGreeting "anteeksi" ;
- GGoodDay = mkGreeting "hyv piv" ;
- GGoodEvening = mkGreeting "hyv iltaa" ;
- GGoodMorning = mkGreeting "hyv huomenta" ;
- GGoodNight = mkGreeting "hyv yt" ;
- GGoodbye = mkGreeting "nkemiin" ;
- GHello = mkGreeting "hei" ;
- GHelp = mkGreeting "apua" ;
- GHowAreYou = mkGreeting "mit kuuluu" ;
- GLookOut = mkGreeting "varo" ;
- GNiceToMeetYou = mkGreeting "hauska tutustua" ;
- GPleaseGive = mkGreeting "ole hyv" ;
- GPleaseGivePol = mkGreeting "olkaa hyv" ;
- GSeeYouSoon = mkGreeting "nhdn pian" ;
- GSorry, GSorryPol = mkGreeting "anteeksi" ;
- GThanks = mkGreeting "kiitos" ;
- GTheCheck = mkGreeting "lasku" ;
- GCongratulations = mkGreeting "onnittelut";
- GHappyBirthday = mkGreeting "hyv syntympiv" ;
- GGoodLuck = mkGreeting "onnea" ;
- GWhatTime = mkGreeting "paljonko kello on" | mkGreeting "mit kello on" ;
-
-}
diff --git a/examples/phrasebook/GreetingsFre.gf b/examples/phrasebook/GreetingsFre.gf
deleted file mode 100644
index 71faf5c66..000000000
--- a/examples/phrasebook/GreetingsFre.gf
+++ /dev/null
@@ -1,31 +0,0 @@
---# -coding=latin1
-concrete GreetingsFre of Greetings = SentencesFre [Greeting,mkGreeting] ** open Prelude in {
-
-lin
- GBye = mkGreeting "au revoir" ;
- GCheers = mkGreeting "sant" ;
- GDamn = mkGreeting "maudit" ;
- GExcuse = mkGreeting "excuse-moi" ;
- GExcusePol = mkGreeting "excusez-moi" ;
- GGoodDay = mkGreeting "bonjour" ;
- GGoodEvening = mkGreeting "bon soir" ;
- GGoodMorning = mkGreeting "bonjour" ;
- GGoodNight = mkGreeting "bonne nuit" ;
- GGoodbye = mkGreeting "au revoir" ;
- GHello = mkGreeting "salut" ;
- GHelp = mkGreeting "au secours" ;
- GHowAreYou = mkGreeting "comment a va" ;
- GLookOut = mkGreeting "attention" ;
- GNiceToMeetYou = mkGreeting "enchant" ;
- GPleaseGive = mkGreeting "s'il te plat" ;
- GPleaseGivePol = mkGreeting "s'il vous plat" ;
- GSeeYouSoon = mkGreeting " bientt" ;
- GSorry, GSorryPol = mkGreeting "pardon" ;
- GThanks = mkGreeting "merci" ;
- GTheCheck = mkGreeting "l'addition" ;
- GCongratulations = mkGreeting "flicitations";
- GHappyBirthday = mkGreeting "joyeux anniversaire" ;
- GGoodLuck = mkGreeting "bonne chance" ;
- GWhatTime = mkGreeting "quelle heure est-il" ;
-
-}
diff --git a/examples/phrasebook/GreetingsGer.gf b/examples/phrasebook/GreetingsGer.gf
deleted file mode 100644
index f027d70ac..000000000
--- a/examples/phrasebook/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/examples/phrasebook/GreetingsHin.gf b/examples/phrasebook/GreetingsHin.gf
deleted file mode 100644
index 06b641b33..000000000
--- a/examples/phrasebook/GreetingsHin.gf
+++ /dev/null
@@ -1,31 +0,0 @@
-concrete GreetingsHin of Greetings = SentencesHin [Greeting,mkGreeting] ** open (P=Prelude) in {
-
--- lincat
--- Greeting = {s : Str; lock_Text : {}} ;
-flags coding = utf8 ;
-lin
- GBye = P.ss "नमस्कार" ;
- GCheers = P.ss "चियर्ज़" ;
- GDamn = P.ss "ाफ़" ;
- GExcuse, GExcusePol = P.ss "क्षमा कीजिये" ;
- GGoodDay = P.ss "नमस्कार" ; ----
- GGoodEvening = P.ss "नमस्कार" ;
- GGoodMorning = P.ss "नमस्कार" ;
- GGoodNight = P.ss "नमस्कार" ;
- GGoodbye = P.ss "हम आपसे विदा लेते हैं" ;
- GHello = P.ss "नमस्कार" ;
- GHelp = P.ss "सहायता" ;
- GHowAreYou = P.ss "आप कैसे हैं" ;
- GLookOut = P.ss "सावधान" ;
- GNiceToMeetYou, GNiceToMeetYouPol = P.ss "आप से मिल कर च्छा लगा" ;
- GPleaseGive, GPleaseGivePol = P.ss "कृपया" ;
- GSeeYouSoon = P.ss "फिर मिलेंगे" ;
- GSorry, GSorryPol = P.ss "क्षमा कीजिये" ;
- GThanks = P.ss "धन्यवाद" ;
- GTheCheck = P.ss "बिल" ;
- GCongratulations = P.ss "बधाई हो";
- GHappyBirthday = P.ss "जन्मदिन की शुभकामनाएँ" ;
- GGoodLuck = P.ss "शुभकामनाएँ" ;
- GWhatTime = P.ss "कितने बजे हैं" ;
-
-}
diff --git a/examples/phrasebook/GreetingsIta.gf b/examples/phrasebook/GreetingsIta.gf
deleted file mode 100644
index 968c523eb..000000000
--- a/examples/phrasebook/GreetingsIta.gf
+++ /dev/null
@@ -1,31 +0,0 @@
-concrete GreetingsIta of Greetings = SentencesIta [Greeting,mkGreeting] ** open Prelude in {
-
-lin
- GBye = mkGreeting "ciao" ;
- GCheers = mkGreeting "cincin" ;
- GDamn = mkGreeting "maledizione" ;
- GExcuse = mkGreeting "scusa" ;
- GExcusePol = mkGreeting "scusi" ;
- GGoodDay = mkGreeting "buongiorno" ;
- GGoodEvening = mkGreeting "buona sera" ;
- GGoodMorning = mkGreeting "buongiorno" ;
- GGoodNight = mkGreeting "buona notte" ;
- GGoodbye = mkGreeting "arrivederci" ;
- GHello = mkGreeting "ciao" ;
- GHelp = mkGreeting "aiuto" ;
- GHowAreYou = mkGreeting "come sta" ;
- GLookOut = mkGreeting "attenzione" ;
- GNiceToMeetYou = mkGreeting "piacere di conoscerti" ;
- GNiceToMeetYouPol = mkGreeting "piacere di conoscerLa" ;
- GPleaseGive, GPleaseGivePol = mkGreeting "per favore" ;
- GSeeYouSoon = mkGreeting "a presto" ; ----
- GSorry = mkGreeting "scusami" ; ----
- GSorryPol = mkGreeting "scusimi" ; ----
- GThanks = mkGreeting "grazie" ;
- GTheCheck = mkGreeting "il conto" ;
- GCongratulations = mkGreeting "congratulazioni";
- GHappyBirthday = mkGreeting "buon compleanno" ;
- GGoodLuck = mkGreeting "buona fortuna" ;
- GWhatTime = mkGreeting "che ore sono" ;
-
-}
diff --git a/examples/phrasebook/GreetingsJpn.gf b/examples/phrasebook/GreetingsJpn.gf
deleted file mode 100644
index ca68697c5..000000000
--- a/examples/phrasebook/GreetingsJpn.gf
+++ /dev/null
@@ -1,30 +0,0 @@
-concrete GreetingsJpn of Greetings = SentencesJpn [Greeting,mkGreeting] ** open Prelude in {
-
-flags coding = utf8 ;
-
-lin
- GBye = mkGreeting "バイ" ;
- GCheers = mkGreeting "かんぱい" ;
- GDamn = mkGreeting "くそ" ;
- GExcuse, GExcusePol = mkGreeting "すみません" ;
- GGoodDay, GHello = mkGreeting "こんにちは" ; ----
- GGoodEvening = mkGreeting "こんばんは" ;
- GGoodMorning = mkGreeting "おはようございます" ;
- GGoodNight = mkGreeting "おやすみなさい" ;
- GGoodbye = mkGreeting "さようなら" ;
- GHelp = mkGreeting "助けて" ;
- GHowAreYou = mkGreeting "お元気ですか" ;
- GLookOut = mkGreeting "危ない" ;
- GNiceToMeetYou = mkGreeting "初めまして" ;
- GPleaseGive = mkGreeting "ください" ;
- GPleaseGivePol = mkGreeting "お願いします" ;
- GSeeYouSoon = mkGreeting "またね" ;
- GSorry = mkGreeting "ごめんなさい" ;
- GSorryPol = mkGreeting "申し訳ありません" ;
- GThanks = mkGreeting "ありがとう" ;
- GTheCheck = mkGreeting "会計" ;
- GCongratulations = mkGreeting "お目出度うご座います";
- GHappyBirthday = mkGreeting "お誕生日おめでとうございます" ;
- GGoodLuck = mkGreeting "がんばってください" ;
- GWhatTime = mkGreeting "今何時ですか" ;
-}
diff --git a/examples/phrasebook/GreetingsLav.gf b/examples/phrasebook/GreetingsLav.gf
deleted file mode 100644
index fa80f6730..000000000
--- a/examples/phrasebook/GreetingsLav.gf
+++ /dev/null
@@ -1,33 +0,0 @@
---# -path=.:present
-concrete GreetingsLav of Greetings = SentencesLav [Greeting, mkGreeting] **
-open Prelude
-in {
-
- flags
- coding = utf8 ;
-
- lin
- GBye = mkGreeting "atā" ;
- GCheers = mkGreeting "priekā" ;
- GDamn = mkGreeting "sasodīts" ;
- GExcuse, GExcusePol = mkGreeting "atvainojiet" ;
- GGoodDay = mkGreeting "labdien" ;
- GGoodEvening = mkGreeting "labvakar" ;
- GGoodMorning = mkGreeting "labrīt" ;
- GGoodNight = mkGreeting "ar labunakti" ;
- GGoodbye = mkGreeting "visu labu" ;
- GHello = mkGreeting "sveiki" ;
- GHelp = mkGreeting "palīdziet" ;
- GHowAreYou = mkGreeting "kā klājas" ;
- GLookOut = mkGreeting "uzmanīgi" ;
- GNiceToMeetYou, GNiceToMeetYouPol = mkGreeting "prieks iepazīties" ;
- GPleaseGive, GPleaseGivePol = mkGreeting "lūdzu" ;
- GSeeYouSoon = mkGreeting "uz drīzu tikšanos" ;
- GSorry, GSorryPol = mkGreeting "piedodiet" ;
- GThanks = mkGreeting "paldies" ;
- GTheCheck = mkGreeting "rēķins" ;
- GCongratulations = mkGreeting "apsveicu" ;
- GHappyBirthday = mkGreeting "daudz laimes dzimšanas dienā" ;
- GGoodLuck = mkGreeting "veiksmīgi" ;
-
-}
diff --git a/examples/phrasebook/GreetingsNor.gf b/examples/phrasebook/GreetingsNor.gf
deleted file mode 100644
index 38c215c60..000000000
--- a/examples/phrasebook/GreetingsNor.gf
+++ /dev/null
@@ -1,28 +0,0 @@
---# -coding=latin1
-concrete GreetingsNor of Greetings = SentencesNor [Greeting,mkGreeting] ** open Prelude in {
-
-lin
- GBye = mkGreeting "ha det" ;
- GCheers = mkGreeting "skl" ; -- google translate !
- GDamn = mkGreeting "faen" ;
- GExcuse, GExcusePol = mkGreeting "unnskyld" ;
- GGoodDay = mkGreeting "god dag" ;
- GGoodEvening = mkGreeting "god kveld" ;
- GGoodMorning = mkGreeting "god morgen" ;
- GGoodNight = mkGreeting "god natt" ;
- GGoodbye = mkGreeting "ha det bra" ;
- GHello = mkGreeting "hei" ;
- GHelp = mkGreeting "hjelp" ;
- GHowAreYou = mkGreeting "hvordan gr det" ;
- GLookOut = mkGreeting "se opp" ; -- google translate !
- GNiceToMeetYou, GNiceToMeetYouPol = mkGreeting "hyggelig treffe deg" ;
- GPleaseGive, GPleaseGivePol = mkGreeting "vr s snill" ;
- GSeeYouSoon = mkGreeting "se deg snart" ; -- google translate !
- GSorry, GSorryPol = mkGreeting "beklager" ;
- GThanks = mkGreeting "takk" ;
- GTheCheck = mkGreeting "regningen" ;
- GCongratulations = mkGreeting "gratulerer";
- GHappyBirthday = mkGreeting "gratulerer med dagen" ;
- GGoodLuck = mkGreeting "lykke til" ;
-
-}
diff --git a/examples/phrasebook/GreetingsPes.gf b/examples/phrasebook/GreetingsPes.gf
deleted file mode 100644
index ba968c9f8..000000000
--- a/examples/phrasebook/GreetingsPes.gf
+++ /dev/null
@@ -1,29 +0,0 @@
-concrete GreetingsPes of Greetings = SentencesPes [mkGreeting] ** open (P=Prelude) in {
-
--- lincat
--- Greeting = {s : Str; lock_Text : {}} ;
-flags coding = utf8 ;
-lin
- GBye = P.ss ["خداحافظ"] ;
- GCheers = P.ss ["به سلامتی"] ;
- GDamn = P.ss "لعنتی" ;
- GExcuse, GExcusePol = P.ss ["ببخشید"] ;
- GGoodDay = P.ss ["روز به خیر"] ; ----
- GGoodEvening = P.ss ["عصر به خیر"] ;
- GGoodMorning = P.ss ["صبح به خیر"] ;
- GGoodNight = P.ss ["شب به خیر"] ;
- GGoodbye = P.ss ["خداحافظ"] ;
- GHello = P.ss "سلام" ;
- GHelp = P.ss "کمک" ;
- GHowAreYou = P.ss ["حال شما چطور است"] ;
- GLookOut = P.ss ["مراقب باشید"] ;
- GNiceToMeetYou, GNiceToMeetYouPol = P.ss ["از ملاقات شما خوشوقتم"] ;
- GPleaseGive, GPleaseGivePol = P.ss ["لطفاً بدهید"] ;
- GSeeYouSoon = P.ss ["به امید دیدار"] ;
- GSorry, GSorryPol = P.ss "متأسفم" ;
- GThanks = P.ss "ممنونم" ;
- GTheCheck = P.ss "چک" ;
- GCongratulations = P.ss ["تبریک میگم"];
- GHappyBirthday = P.ss ["تولدت مبارک"] ;
- GGoodLuck = P.ss ["موفق باشید"] ;
-}
diff --git a/examples/phrasebook/GreetingsPol.gf b/examples/phrasebook/GreetingsPol.gf
deleted file mode 100644
index 9c561c500..000000000
--- a/examples/phrasebook/GreetingsPol.gf
+++ /dev/null
@@ -1,27 +0,0 @@
-concrete GreetingsPol of Greetings = SentencesPol [Greeting,mkGreeting] ** open Prelude in {
-
-flags
- optimize =values ; coding =utf8 ;
-
-lin
- GBye = mkGreeting "cześć" ;
- GCheers = mkGreeting "na zdrowie" ;
- GDamn = mkGreeting "cholera" ; -- not polite
- GExcuse, GExcusePol, GSorry, GSorryPol = mkGreeting "przepraszam" ;
- GGoodDay, GGoodMorning = mkGreeting "dzień dobry" ;
- GGoodEvening = mkGreeting "dobry wieczór" ;
- GGoodNight = mkGreeting "dobranoc" ;
- GGoodbye = mkGreeting "do widzenia" ;
- GHello = mkGreeting "cześć" ;
- GHelp = mkGreeting "pomocy" ;
- GHowAreYou = mkGreeting "jak się masz" ;
- GLookOut = mkGreeting "uwaga" ;
- GNiceToMeetYou = mkGreeting "miło mi" ;
- GPleaseGive, GPleaseGivePol = mkGreeting "poproszę" ;
- GSeeYouSoon = mkGreeting "do zobaczenia" ;
- GThanks = mkGreeting "dziękuję" ;
- GTheCheck = mkGreeting "rachunek" ;
- GCongratulations = mkGreeting "gratulacje";
- GHappyBirthday = mkGreeting "wszystkiego najlepszego z okazji urodzin" ;
- GGoodLuck = mkGreeting "powodzenia" ;
-}
diff --git a/examples/phrasebook/GreetingsRon.gf b/examples/phrasebook/GreetingsRon.gf
deleted file mode 100644
index 380e8dbc5..000000000
--- a/examples/phrasebook/GreetingsRon.gf
+++ /dev/null
@@ -1,31 +0,0 @@
-concrete GreetingsRon of Greetings = SentencesRon [Greeting,mkGreeting] ** open Prelude in {
-
-flags coding = utf8 ;
-
-lin
- GBye = mkGreeting "pa" ;
- GCheers = mkGreeting "noroc" ;
- GDamn = mkGreeting "ptiu" ;
- GExcuse = mkGreeting "pardon" ;
- GExcusePol = mkGreeting "mă scuzați" ;
- GGoodDay = mkGreeting "bună ziua" ;
- GGoodEvening = mkGreeting "bună seara" ;
- GGoodMorning = mkGreeting "bună dimineaţa" ;
- GGoodNight = mkGreeting "noapte bună" ;
- GGoodbye = mkGreeting "la revedere" ;
- GHello = mkGreeting "salut" ;
- GHelp = mkGreeting "ajutor" ;
- GHowAreYou = mkGreeting "ce faci" ;
- GLookOut = mkGreeting "atenţie" ;
- GNiceToMeetYou = mkGreeting "încântat" ;
- GPleaseGive = mkGreeting "te rog" ;
- GPleaseGivePol = mkGreeting "vă rog" ;
- GSeeYouSoon = mkGreeting "pe curând" ;
- GSorry, GSorryPol = mkGreeting "îmi pare rău" ;
- GThanks = mkGreeting "mulţumesc" ;
- GTheCheck = mkGreeting "nota de plată" ;
- GCongratulations = mkGreeting "felicitări";
- GHappyBirthday = mkGreeting "la mulți ani" ;
- GGoodLuck = mkGreeting "baftă" ;
-
-}
diff --git a/examples/phrasebook/GreetingsRus.gf b/examples/phrasebook/GreetingsRus.gf
deleted file mode 100644
index cb6f9a37a..000000000
--- a/examples/phrasebook/GreetingsRus.gf
+++ /dev/null
@@ -1,29 +0,0 @@
-concrete GreetingsRus of Greetings = open Prelude in {
-
-flags coding = utf8 ;
-
-lin
- GBye = ss "до свидания" ;
- GCheers = ss "ура" ;
- GDamn = ss "чёрт" ;
- GExcuse, GExcusePol = ss "извините" ;
- GGoodDay = ss "добрый день" ; ----
- GGoodEvening = ss "добрый вечер" ;
- GGoodMorning = ss "доброе утро" ;
- GGoodNight = ss "спокойной ночи" ;
- GGoodbye = ss "до свидания" ;
- GHello = ss "привет" ;
- GHelp = ss "помогите" ;
- GHowAreYou = ss "Как поживаете" ;
- GLookOut = ss "смотреть" ;
- GNiceToMeetYou, GNiceToMeetYouPol = ss "приятно познакомиться" ;
- GPleaseGive, GPleaseGivePol = ss "пожалуйста" ;
- GSeeYouSoon = ss "до скорой встречи" ;
- GSorry, GSorryPol = ss "Мне жаль" ;
- GThanks = ss "спасибо" ;
- GTheCheck = ss "проверить" ;
- GCongratulations = ss "поздравляю";
- GHappyBirthday = ss "с днем рождения" ;
- GGoodLuck = ss "желаю удачи" ;
-
-}
diff --git a/examples/phrasebook/GreetingsSnd.gf b/examples/phrasebook/GreetingsSnd.gf
deleted file mode 100644
index bc579d189..000000000
--- a/examples/phrasebook/GreetingsSnd.gf
+++ /dev/null
@@ -1,29 +0,0 @@
-concrete GreetingsSnd of Greetings = SentencesSnd [mkGreeting,Greeting] ** open (P=Prelude) in {
-
--- lincat
--- Greeting = {s : Str; lock_Text : {}} ;
-flags coding = utf8 ;
-lin
- GBye = P.ss "خدا حافظ" ;
- GCheers = P.ss "چيئرز" ;
- GDamn = P.ss "اف" ;
- GExcuse, GExcusePol = P.ss "معاف ڪجو" ;
- GGoodDay = P.ss "ڏينهن بخير" ; ----
- GGoodEvening = P.ss "شام بخير" ;
- GGoodMorning = P.ss "صبح بخير" ;
- GGoodNight = P.ss "رات بخير" ;
- GGoodbye = P.ss "خدا حافظ" ;
- GHello = P.ss "السلام عليڪم" ;
- GHelp = P.ss "مدد" ;
- GHowAreYou = P.ss "توهان ڪيئن آهيو" ;
- GLookOut = P.ss "سنڀالي" ;
- GNiceToMeetYou, GNiceToMeetYouPol = P.ss "توهان سان ملي ڪري سٺو لڳو" ;
- GPleaseGive, GPleaseGivePol = P.ss "مهرباني ڪريو" ;
- GSeeYouSoon = P.ss "موڪلاڻي ڪانهي" ;
- GSorry, GSorryPol = P.ss "معاف ڪجو" ;
- GThanks = P.ss "ٿورا" ;
- GTheCheck = P.ss "بل" ;
- GCongratulations = P.ss "مبارڪ هجي";
- GHappyBirthday = P.ss "جنم ڏينهن مبارڪ" ;
- GGoodLuck = P.ss "قسمت ڀلي هجي" ;
-}
diff --git a/examples/phrasebook/GreetingsSpa.gf b/examples/phrasebook/GreetingsSpa.gf
deleted file mode 100644
index d0b39abd9..000000000
--- a/examples/phrasebook/GreetingsSpa.gf
+++ /dev/null
@@ -1,31 +0,0 @@
-concrete GreetingsSpa of Greetings = SentencesSpa [Greeting,mkGreeting] ** open Prelude in {
-
-flags coding = utf8 ;
-
-lin
- GBye = mkGreeting "adiós" ;
- GCheers = mkGreeting "salud" ;
- GDamn = mkGreeting "joder" ;
- GExcuse = mkGreeting "perdón" ;
- GExcusePol = mkGreeting "perdone" ;
- GCongratulations = mkGreeting "felicitaciones" ;
- GGoodLuck = mkGreeting "buena suerte" ;
- GHappyBirthday = mkGreeting "feliz cumpleaños" ;
- GGoodMorning, GGoodDay = mkGreeting "buenos días" ;
- GGoodEvening = mkGreeting "buenas tardes" ;
- GGoodNight = mkGreeting "buenas noches" ;
- GGoodbye = mkGreeting "hasta luego" ;
- GHello = mkGreeting "hola" ;
- GHelp = mkGreeting "socorro" ;
- GHowAreYou = mkGreeting "cómo está¡" ; -- the polite singular "you"
- GLookOut = mkGreeting "atención" ;
- GNiceToMeetYou = mkGreeting "encantado de conocerle" ; -- the polite singular "you"
- GPleaseGive, GPleaseGivePol = mkGreeting "por favor" ;
- GSeeYouSoon = mkGreeting "nos vemos pronto" ;
- GSorry = mkGreeting "disculpa" ;
- GSorryPol = mkGreeting "disculpe" ;
- GThanks = mkGreeting "gracias" ;
- GTheCheck = mkGreeting "la cuenta" ;
- GWhatTime = mkGreeting "qué ora es" ;
-
-}
diff --git a/examples/phrasebook/GreetingsSwe.gf b/examples/phrasebook/GreetingsSwe.gf
deleted file mode 100644
index 63d576884..000000000
--- a/examples/phrasebook/GreetingsSwe.gf
+++ /dev/null
@@ -1,29 +0,0 @@
---# -coding=latin1
-concrete GreetingsSwe of Greetings = SentencesSwe [Greeting,mkGreeting] ** open Prelude in {
-
-lin
- GBye = mkGreeting "hej d" ;
- GCheers = mkGreeting "skl" ;
- GDamn = mkGreeting "fan" ;
- GExcuse, GExcusePol = mkGreeting "urskta" ;
- GGoodDay = mkGreeting "god dag" ;
- GGoodEvening = mkGreeting "god afton" ;
- GGoodMorning = mkGreeting "god morgon" ;
- GGoodNight = mkGreeting "god natt" ;
- GGoodbye = mkGreeting "hej d" ;
- GHello = mkGreeting "hej" ;
- GHelp = mkGreeting "hjlp" ;
- GHowAreYou = mkGreeting "hur str det till" ;
- GLookOut = mkGreeting "se upp" ;
- GNiceToMeetYou, GNiceToMeetYouPol = mkGreeting "trevligt att trffas" ;
- GPleaseGive, GPleaseGivePol = mkGreeting "var s god" ;
- GSeeYouSoon = mkGreeting "vi ses snart" ;
- GSorry, GSorryPol = mkGreeting "frlt" ;
- GThanks = mkGreeting "tack" ;
- GTheCheck = mkGreeting "notan" ;
- GCongratulations = mkGreeting "grattis";
- GHappyBirthday = mkGreeting "grattis p fdelsedagen" ;
- GGoodLuck = mkGreeting "lycka till" ;
- GWhatTime = mkGreeting "vad r klockan" | mkGreeting "hur mycket r klockan" ;
-
-}
diff --git a/examples/phrasebook/GreetingsTha.gf b/examples/phrasebook/GreetingsTha.gf
deleted file mode 100644
index 3463306d9..000000000
--- a/examples/phrasebook/GreetingsTha.gf
+++ /dev/null
@@ -1,35 +0,0 @@
-concrete GreetingsTha of Greetings =
- SentencesTha [Greeting,mkGreeting] **
- open ResTha, Prelude in {
-
--- สุขสันต์วันเกิด
-
-flags coding = utf8 ;
-
-lin
- GBye = mkGreeting (thword "ลา" "ก่อน") ;
- GCheers = mkGreeting (thword "ไช" "โย") ;
- GDamn = mkGreeting (thword "ชิบ" "หาย") ;
- GExcuse, GExcusePol = mkGreeting (thword "ขอ" "โทษ") ;
- GGoodDay = mkGreeting (thword "สวัส" "ดี") ;
- GGoodEvening = mkGreeting (thword "สวัส" "ดี") ;
- GGoodMorning = mkGreeting (thword "สวัส" "ดี") ;
- GGoodNight = mkGreeting (thword "รา" "ตรี" "สวัส" "ดิ์") ;
- GGoodbye = mkGreeting (thword "ลา" "ก่อน") ;
- GHello = mkGreeting (thword "สวัส" "ดี") ;
- GHelp = mkGreeting (thword "ช่วย" "ด้วย") ;
- GHowAreYou = mkGreeting (thword "สบาย" "ดี" "ไหม") ;
- GLookOut = mkGreeting (thword "ระ" "วัง") ; ---- google
- GNiceToMeetYou, GNiceToMeetYouPol =
- mkGreeting (thword "ยิน" "ดี" "ที่" "ได้" "รู้" "จัก") ;
- GPleaseGive, GPleaseGivePol = mkGreeting "นะ" ;
- GSeeYouSoon = mkGreeting (thword "เจอ" "กัน" "นะ") ;
- GSorry, GSorryPol = mkGreeting (thword "ขอ" "โทษ") ;
- GThanks = mkGreeting (thword "ขอบ" "คุณ") ;
- GTheCheck = mkGreeting (thword "เช็ค" "บิล") ;
- GCongratulations = mkGreeting (thword "ยิน" "ดี" "ด้วย") ;
- GHappyBirthday = mkGreeting (thword "สุข" "สันต์" "วัน" "เกิด") ;
- GGoodLuck = mkGreeting (thword "โชค" "ดี" "นะ") ;
-}
-
-
diff --git a/examples/phrasebook/GreetingsUrd.gf b/examples/phrasebook/GreetingsUrd.gf
deleted file mode 100644
index 1d004e2ca..000000000
--- a/examples/phrasebook/GreetingsUrd.gf
+++ /dev/null
@@ -1,29 +0,0 @@
-concrete GreetingsUrd of Greetings = SentencesUrd [mkGreeting,Greeting] ** open (P=Prelude) in {
-
--- lincat
--- Greeting = {s : Str; lock_Text : {}} ;
-flags coding = utf8 ;
-lin
- GBye = P.ss "خدا حافظ" ;
- GCheers = P.ss "چیرز" ;
- GDamn = P.ss "اف" ;
- GExcuse, GExcusePol = P.ss "معاف كیجیے گا" ;
- GGoodDay = P.ss "دن بخیر" ; ----
- GGoodEvening = P.ss "شام بخیر" ;
- GGoodMorning = P.ss "صبح بخیر" ;
- GGoodNight = P.ss "رات بخیر" ;
- GGoodbye = P.ss "خدا حافظ" ;
- GHello = P.ss "اسلام علیكم" ;
- GHelp = P.ss "مدد" ;
- GHowAreYou = P.ss "آپ كیسی ہو" ;
- GLookOut = P.ss "دیكھ كر" ;
- GNiceToMeetYou, GNiceToMeetYouPol = P.ss "آپ سے مل كر اچھا لگا" ;
- GPleaseGive, GPleaseGivePol = P.ss "مہربانی كر كے" ;
- GSeeYouSoon = P.ss "ملتے ہیں" ;
- GSorry, GSorryPol = P.ss "معاف كیجیے گا" ;
- GThanks = P.ss "شكریہ" ;
- GTheCheck = P.ss "بل" ;
- GCongratulations = P.ss "مبارك ہو";
- GHappyBirthday = P.ss "سالگرہ مبارك" ;
- GGoodLuck = P.ss "گڈ لك" ;
-}
diff --git a/examples/phrasebook/Implementation.html b/examples/phrasebook/Implementation.html
deleted file mode 100644
index ff2275979..000000000
--- a/examples/phrasebook/Implementation.html
+++ /dev/null
@@ -1,500 +0,0 @@
-
-
- Produced by
-gfdoc - a rudimentary GF document generator.
-(c) Aarne Ranta (aarne@cs.chalmers.se) 2002 under GNU GPL.
-
-
-
Implementation of MOLTO Phrasebook
-
- 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 ;
- Sentence = S ;
- Question = QS ;
- Proposition = Cl ;
- Item = NP ;
- Kind = CN ;
- MassKind = CN ;
- Quality = AP ;
- Property = A ;
- Object = NP ;
- PrimObject = NP ;
- Place = NPPlace ; -- {name : NP ; at : Adv ; to : 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 : Adv ; habitual : Adv} ;
- Date = Adv ;
- Name = NP ;
- Number = Card ;
- ByTransport = Adv ;
- Transport = {name : CN ; by : Adv} ;
- Superlative = Det ;
- lin
- PSentence s = mkText s | lin Text (mkUtt s) ; -- optional '.'
- PQuestion s = mkText s | lin Text (mkUtt s) ; -- optional '?'
-
- PObject x = mkPhrase (mkUtt x) ;
- PKind x = mkPhrase (mkUtt x) ;
- PMassKind x = mkPhrase (mkUtt x) ;
- PQuality x = mkPhrase (mkUtt x) ;
- PNumber x = mkPhrase (mkUtt x) ;
- PPlace x = mkPhrase (mkUtt x.name) ;
- PPlaceKind x = mkPhrase (mkUtt x.name) ;
- PCurrency x = mkPhrase (mkUtt x) ;
- PPrice 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 ;
-
- Is = mkCl ;
-
- 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 ;
- ObjMass k = mkNP k ;
- ObjAndObj = mkNP and_Conj ;
- OneObj o = o ;
-
- 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 ;
-
- 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 = if_then_else Det kind.isPl thePl_Det theSg_Det
- in placeNP dd kind ;
- APlace kind = let dd = if_then_else Det kind.isPl thePl_Det theSg_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
-
-
-
- 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 ;
-
- oper
-
-
-These operations are used internally in Sentences.
-
- mkPhrase : Utt -> Text = \u -> lin Text u ; -- no punctuation
-
- 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 : Adv ; habitual : Adv} ;
-
- mkNPDay : NP -> Adv -> Adv -> NPDay = \d,p,h ->
- {name = d ;
- point = p ;
- habitual = h
- } ;
-
- NPPlace : Type = {name : NP ; at : Adv ; to : 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 = mkAdv kind.at name ;
- to = 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 ;
-
- }
-
-
- Implementations of Words, with English as example
-
- concrete WordsEng of Words = SentencesEng **
- open
- SyntaxEng,
- ParadigmsEng,
- (L = LexiconEng),
- (P = ParadigmsEng),
- IrregEng,
- ExtraEng,
- Prelude in {
- 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 (mkN "cheese") ;
- Chicken = mkCN (mkN "chicken") ;
- Coffee = mkCN (mkN "coffee") ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "meat") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "pizza") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "tea") ;
- 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 = mkA "boring" ;
- Cheap = mkA "cheap" ;
- Cold = L.cold_A ;
- Delicious = mkA "delicious" ;
- Expensive = mkA "expensive" ;
- Fresh = mkA "fresh" ;
- Good = L.good_A ;
- Suspect = mkA "suspect" ;
- 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 "airport" "at" ;
- AmusementPark = mkCompoundPlace "amusement" "park" "at" ;
- Bank = mkPlace "bank" "at" ;
- Bar = mkPlace "bar" "in" ;
- Cafeteria = mkPlace "canteen" "in" ;
- Center = mkPlace "center" "in" ;
- Cinema = mkPlace "cinema" "at" ;
- Church = mkPlace "church" "in" ;
- Disco = mkPlace "disco" "at" ;
- Hospital = mkPlace "hospital" "in" ;
- Hotel = mkPlace "hotel" "in" ;
- Museum = mkPlace "museum" "at" ;
- Park = mkPlace "park" "in" ;
- Parking = mkCompoundPlace "car" "park" "in" ;
- Pharmacy = mkPlace "pharmacy" "at" ;
- PostOffice = mkCompoundPlace "post" "office" "at" ;
- Pub = mkPlace "pub" "at" ;
- Restaurant = mkPlace "restaurant" "in" ;
- School = mkPlace "school" "at" ;
- Shop = mkPlace "shop" "at" ;
- Station = mkPlace "station" "at" ;
- Supermarket = mkPlace "supermarket" "at" ;
- Theatre = mkPlace "theatre" "at" ;
- Toilet = mkPlace "toilet" "in" ;
- University = mkPlace "university" "at" ;
- Zoo = mkPlace "zoo" "at" ;
-
- CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurant")) in_Prep to_Prep ;
-
-
-Currencies; crown is ambiguous between Danish and Swedish crowns.
-
- DanishCrown = mkCN (mkA "Danish") (mkN "crown") | mkCN (mkN "crown") ;
- Dollar = mkCN (mkN "dollar") ;
- Euro = mkCN (mkN "euro" "euros") ; -- to prevent euroes
- Lei = mkCN (mkN "leu" "lei") ;
- Leva = mkCN (mkN "lev") ;
- NorwegianCrown = mkCN (mkA "Norwegian") (mkN "crown") | mkCN (mkN "crown") ;
- Pound = mkCN (mkN "pound") ;
- Rouble = mkCN (mkN "rouble") ;
- SwedishCrown = mkCN (mkA "Swedish") (mkN "crown") | mkCN (mkN "crown") ;
- Zloty = mkCN (mkN "zloty" "zloty") ;
-
-
-Nationalities
-
- Belgian = mkA "Belgian" ;
- Belgium = mkNP (mkPN "Belgium") ;
- Bulgarian = mkNat "Bulgarian" "Bulgaria" ;
- Catalan = mkNPNationality (mkNP (mkPN "Catalan")) (mkNP (mkPN "Catalonia")) (mkA "Catalonian") ;
- Danish = mkNat "Danish" "Denmark" ;
- Dutch = mkNPNationality (mkNP (mkPN "Dutch")) (mkNP the_Quant (mkN "Netherlands")) (mkA "Dutch") ;
- English = mkNat "English" "England" ;
- Finnish = mkNat "Finnish" "Finland" ;
- Flemish = mkNP (mkPN "Flemish") ;
- French = mkNat "French" "France" ;
- German = mkNat "German" "Germany" ;
- Italian = mkNat "Italian" "Italy" ;
- Norwegian = mkNat "Norwegian" "Norway" ;
- Polish = mkNat "Polish" "Poland" ;
- Romanian = mkNat "Romanian" "Romania" ;
- Russian = mkNat "Russian" "Russia" ;
- Spanish = mkNat "Spanish" "Spain" ;
- Swedish = mkNat "Swedish" "Sweden" ;
-
-
-Means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN "bus") ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "ferry") ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN "subway") ;
- Taxi = mkTransport (mkN "taxi") ;
- Train = mkTransport (mkN "train") ;
- Tram = mkTransport (mkN "tram") ;
-
- ByFoot = P.mkAdv "by foot" ;
-
-
-Actions: the predication patterns are very often language-dependent.
-
- AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsEng.mkAdv "old"));
- 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 (mkN "room")) (SyntaxEng.mkAdv for_Prep (mkNP num (mkN "person")))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "table")) (SyntaxEng.mkAdv for_Prep (mkNP num (mkN "person")))) ;
- AHasName p name = mkCl (nameOf p) name ;
- AHungry p = mkCl p.name (mkA "hungry") ;
- AIll p = mkCl p.name (mkA "ill") ;
- AKnow p = mkCl p.name IrregEng.know_V ;
- ALike p item = mkCl p.name (mkV2 (mkV "like")) item ;
- ALive p co = mkCl p.name (mkVP (mkVP (mkV "live")) (SyntaxEng.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name (mkV2 (mkV "love")) q.name ;
- AMarried p = mkCl p.name (mkA "married") ;
- AReady p = mkCl p.name (mkA "ready") ;
- AScared p = mkCl p.name (mkA "scared") ;
- ASpeak p lang = mkCl p.name (mkV2 IrregEng.speak_V) lang ;
- AThirsty p = mkCl p.name (mkA "thirsty") ;
- ATired p = mkCl p.name (mkA "tired") ;
- AUnderstand p = mkCl p.name IrregEng.understand_V ;
- AWant p obj = mkCl p.name (mkV2 (mkV "want")) obj ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP IrregEng.go_V) place.to) ;
-
-
-miscellaneous
-
- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
- QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item IrregEng.cost_V)) ;
- ItCost item price = mkCl item (mkV2 IrregEng.cost_V) price ;
-
- PropOpen p = mkCl p.name open_Adv ;
- PropClosed p = mkCl p.name closed_Adv ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ;
-
-
-Building phrases from strings is complicated: the solution is to use
-mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss ("see you"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss ("see you"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("see you")))
- (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 (mkN "wife") ;
- Husband = xOf sing (mkN "husband") ;
- Son = xOf sing (mkN "son") ;
- Daughter = xOf sing (mkN "daughter") ;
- Children = xOf plur L.child_N ;
-
-
-week days
-
- Monday = mkDay "Monday" ;
- Tuesday = mkDay "Tuesday" ;
- Wednesday = mkDay "Wednesday" ;
- Thursday = mkDay "Thursday" ;
- Friday = mkDay "Friday" ;
- Saturday = mkDay "Saturday" ;
- Sunday = mkDay "Sunday" ;
-
- Tomorrow = P.mkAdv "tomorrow" ;
-
-
-modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA "cheap") ;
- TheMostExpensive = mkSuperl (mkA "expensive") ;
- TheMostPopular = mkSuperl (mkA "popular") ;
- 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 (SyntaxEng.mkAdv from_Prep x.name))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxEng.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))) ;
-
-
-auxiliaries
-
- oper
-
- mkNat : Str -> Str -> NPNationality = \nat,co ->
- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day = mkNP (mkPN d) in
- mkNPDay day (SyntaxEng.mkAdv on_Prep day)
- (SyntaxEng.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
-
- mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i ->
- mkCNPlace (mkCN (P.mkN comp (mkN p))) (P.mkPrep i) to_Prep ;
-
- mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN (mkN p)) (P.mkPrep i) to_Prep ;
-
- open_Adv = P.mkAdv "open" ;
- closed_Adv = P.mkAdv "closed" ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
-
- nameOf : NPPerson -> NP = \p -> (xOf sing (mkN "name") p).name ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxEng.mkAdv by8means_Prep (mkNP n)
- } ;
-
- mkSuperl : A -> Det = \a -> SyntaxEng.mkDet the_Art (SyntaxEng.mkOrd a) ;
-
- far_IAdv = ExtraEng.IAdvAdv (ss "far") ;
-
- }
-
-
-
-
diff --git a/examples/phrasebook/Makefile b/examples/phrasebook/Makefile
deleted file mode 100644
index 01b14c748..000000000
--- a/examples/phrasebook/Makefile
+++ /dev/null
@@ -1,59 +0,0 @@
-compile = runghc Compile
-
-forApp:
- $(compile) -opt Bul Cat Chi Dut Eng Est Fin Fre Ger Hin Ita Jpn Rus Spa Swe Tha Urd
- make gfos
-
-.PHONY: gfos
-
-Chi:
- $(compile) Chi
-
-all: demo missing gfos
-
-gfos:
- mkdir -p gfos && cp -p *.gfo gfos
-
-thaidroid: #thaiscript
- cp -p Phrasebook.pgf FullPhrasebook.pgf
- $(compile) -opt Eng Swe Tha Thb DisambPhrasebookEng
- $(compile) -link Eng Fin Swe Tha Thb DisambPhrasebookEng
- mv Phrasebook.pgf Thaidroid.pgf
- mv FullPhrasebook.pgf Phrasebook.pgf
-
-thaiscript:
- runghc ../../lib/src/thai/ThaiScript.hs
-
-demo: compdemo fin linkdemo
-
-compdemo:
- $(compile) -opt Bul Cat Chi Dan Dut Eng Fre Ger Hin Ita Jpn Lav Nor Pes Pol Ron Rus Spa Swe Tha Urd DisambPhrasebookEng
-
-linkdemo:
- $(compile) -link Eng Bul Cat Chi Dan Dut Fin Fre Ger Hin Ita Jpn Lav Nor Pes Pol Ron Rus Spa Swe Tha Urd DisambPhrasebookEng
-
-linkdemothb:
- $(compile) -link Eng Bul Cat Chi Dan Dut Fin Fre Ger Ita Jpn Nor Pol Ron Rus Spa Swe Tha Thb Urd DisambPhrasebookEng
-
-#separate, because slow...
-fin:
- $(compile) -opt Fin
-
-missing:
- echo "pg -missing | wf -file=missing.txt" | gf -run Phrasebook.pgf
-
-doc:
- cat Sentences.gf Words.gf >Ontology.gf
- gfdoc Ontology.gf
- rm -f Ontology.gf
- cat SentencesI.gf WordsEng.gf >Implementation.gf
- gfdoc Implementation.gf
- txt2tags -thtml --toc doc-phrasebook.txt
- txt2tags -thtml help-phrasebook.txt
- rm -f Ontology.gf Implementation.gf
-
-clean:
- rm *.gfo *.pgf
-
-upload:: Phrasebook.pgf
- rsync -avb Phrasebook.pgf www.grammaticalframework.org:/usr/local/www/GF-demos/www/grammars
diff --git a/examples/phrasebook/Makefile2 b/examples/phrasebook/Makefile2
deleted file mode 100644
index 8d0eae4a9..000000000
--- a/examples/phrasebook/Makefile2
+++ /dev/null
@@ -1,38 +0,0 @@
-
-# Use 'make -j' to compile everything in parallel
-# Use e.g. 'make -j4' to compile at most 4 things in parallel
-
-S=-s
-GFOPT=gf -make $S -optimize-pgf
-
-all: Phrasebook.pgf
-
-Phrasebook.pgf: PhrasebookFre.pgf PhrasebookGer.pgf PhrasebookFin.pgf PhrasebookEng.pgf PhrasebookBul.pgf PhrasebookCat.pgf PhrasebookChi.pgf PhrasebookDan.pgf PhrasebookDut.pgf PhrasebookHin.pgf PhrasebookIta.pgf PhrasebookJpn.pgf PhrasebookLav.pgf PhrasebookNor.pgf PhrasebookPes.pgf PhrasebookPol.pgf PhrasebookRon.pgf PhrasebookRus.pgf PhrasebookSnd.pgf PhrasebookSpa.pgf PhrasebookSwe.pgf PhrasebookTha.pgf PhrasebookUrd.pgf DisambPhrasebookEng.pgf
- gf -make $^
-
-PhrasebookEng.pgf:: ; $(GFOPT) -name=PhrasebookEng PhrasebookEng.gf
-PhrasebookBul.pgf:: ; $(GFOPT) -name=PhrasebookBul PhrasebookBul.gf
-PhrasebookCat.pgf:: ; $(GFOPT) -name=PhrasebookCat PhrasebookCat.gf
-PhrasebookChi.pgf:: ; $(GFOPT) -name=PhrasebookChi PhrasebookChi.gf
-PhrasebookDan.pgf:: ; $(GFOPT) -name=PhrasebookDan PhrasebookDan.gf
-PhrasebookDut.pgf:: ; $(GFOPT) -name=PhrasebookDut PhrasebookDut.gf
-PhrasebookFin.pgf:: ; $(GFOPT) -name=PhrasebookFin PhrasebookFin.gf
-PhrasebookFre.pgf:: ; $(GFOPT) -name=PhrasebookFre PhrasebookFre.gf
-PhrasebookGer.pgf:: ; $(GFOPT) -name=PhrasebookGer PhrasebookGer.gf
-PhrasebookHin.pgf:: ; $(GFOPT) -name=PhrasebookHin PhrasebookHin.gf
-PhrasebookIta.pgf:: ; $(GFOPT) -name=PhrasebookIta PhrasebookIta.gf
-PhrasebookJpn.pgf:: ; $(GFOPT) -name=PhrasebookJpn PhrasebookJpn.gf
-PhrasebookLav.pgf:: ; $(GFOPT) -name=PhrasebookLav PhrasebookLav.gf
-PhrasebookNor.pgf:: ; $(GFOPT) -name=PhrasebookNor PhrasebookNor.gf
-PhrasebookPes.pgf:: ; $(GFOPT) -name=PhrasebookPes PhrasebookPes.gf
-PhrasebookPol.pgf:: ; $(GFOPT) -name=PhrasebookPol PhrasebookPol.gf
-PhrasebookRon.pgf:: ; $(GFOPT) -name=PhrasebookRon PhrasebookRon.gf
-PhrasebookRus.pgf:: ; $(GFOPT) -name=PhrasebookRus PhrasebookRus.gf
-PhrasebookSnd.pgf:: ; $(GFOPT) -name=PhrasebookSnd PhrasebookSnd.gf
-PhrasebookSpa.pgf:: ; $(GFOPT) -name=PhrasebookSpa PhrasebookSpa.gf
-PhrasebookSwe.pgf:: ; $(GFOPT) -name=PhrasebookSwe PhrasebookSwe.gf
-PhrasebookTha.pgf:: ; $(GFOPT) -name=PhrasebookTha PhrasebookTha.gf
-PhrasebookUrd.pgf:: ; $(GFOPT) -name=PhrasebookUrd PhrasebookUrd.gf
-
-DisambPhrasebookEng.pgf::
- $(GFOPT) -name=DisambPhrasebookEng DisambPhrasebookEng.gf
diff --git a/examples/phrasebook/Ontology.html b/examples/phrasebook/Ontology.html
deleted file mode 100644
index 48059049a..000000000
--- a/examples/phrasebook/Ontology.html
+++ /dev/null
@@ -1,372 +0,0 @@
-
-
- Produced by
-gfdoc - a rudimentary GF document generator.
-(c) Aarne Ranta (aarne@cs.chalmers.se) 2002 under GNU GPL.
-
-
-
The Ontology of the Phrasebook
-
- 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?"
- Sentence ; -- declarative sentence e.g. "I am in the bar"
- Question ; -- question, either yes/no or wh e.g. "where are you"
- -- Greeting ; -- idiomatic phrase, not inflected, e.g. "hello"
- 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"
- 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"
-
-
-Many of the categories are accessible as Phrases, i.e. as translation units.
-
- fun
- PSentence : Sentence -> Phrase ;
- PQuestion : Question -> Phrase ;
-
- PObject : Object -> Phrase ;
- PKind : Kind -> Phrase ;
- PMassKind : MassKind -> Phrase ;
- PQuality : Quality -> Phrase ;
- PNumber : Number -> Phrase ;
- PPlace : Place -> Phrase ;
- PPlaceKind : PlaceKind -> Phrase ;
- PCurrency : Currency -> Phrase ;
- PPrice : Price -> Phrase ;
- PLanguage : Language -> Phrase ;
- PCitizenship : Citizenship -> Phrase ;
- PCountry : Country -> Phrase ;
- PDay : Day -> Phrase ;
- PByTransport : ByTransport -> Phrase ;
- PTransport : Transport -> Phrase ;
-
- PYes, PNo, PYesToNo : Phrase ; -- yes, no, si/doch (pos. answer to neg. question)
-
-
-This is the way to build propositions about inanimate items.
-
- Is : Item -> Quality -> Proposition ; -- this pizza 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
- 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
-
-
-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
-
- 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"
-
-
-
- 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
-
- }
-
-
- Words and idiomatic phrases of the Phrasebook
-
- abstract Words = Sentences ** {
-
- fun
-
-
-kinds of items (so far mostly food stuff)
-
- Apple : Kind ;
- Beer : MassKind ;
- Bread : MassKind ;
- Cheese : MassKind ;
- Chicken : MassKind ;
- Coffee : MassKind ;
- Fish : MassKind ;
- Meat : MassKind ;
- Milk : MassKind ;
- Pizza : Kind ;
- Salt : MassKind ;
- Tea : MassKind ;
- Water : MassKind ;
- Wine : MassKind ;
-
-
-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
- SwedishCrown : Currency ;
- Zloty : Currency ; -- Poland
-
-
-nationalities, countries, languages, citizenships
-
- Belgian : Citizenship ;
- Belgium : Country ;
- Bulgarian : Nationality ;
- Catalan : Nationality ;
- Danish : Nationality ;
- Dutch : Nationality ;
- English : Nationality ;
- Finnish : Nationality ;
- Flemish : Language ;
- French : Nationality ;
- German : Nationality ;
- 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 -> Phrase ; -- see you in the bar on Monday
- PSeeYouPlace : Place -> Phrase ; -- see you in the bar
- PSeeYouDate : Date -> Phrase ; -- 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
-
- }
-
-
-
-
diff --git a/examples/phrasebook/Phrasebook.gf b/examples/phrasebook/Phrasebook.gf
deleted file mode 100644
index 9ebc13106..000000000
--- a/examples/phrasebook/Phrasebook.gf
+++ /dev/null
@@ -1,8 +0,0 @@
-abstract Phrasebook =
- Greetings,
- Words
- ** {
-
-flags startcat = Phrase ;
-
-}
diff --git a/examples/phrasebook/PhrasebookBul.gf b/examples/phrasebook/PhrasebookBul.gf
deleted file mode 100644
index bbc092963..000000000
--- a/examples/phrasebook/PhrasebookBul.gf
+++ /dev/null
@@ -1,9 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookBul of Phrasebook =
- GreetingsBul,
- WordsBul ** open
- SyntaxBul,
- Prelude in {
-
-}
diff --git a/examples/phrasebook/PhrasebookCat.gf b/examples/phrasebook/PhrasebookCat.gf
deleted file mode 100644
index 5021079d8..000000000
--- a/examples/phrasebook/PhrasebookCat.gf
+++ /dev/null
@@ -1,11 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookCat of Phrasebook =
- GreetingsCat,
- WordsCat
- ** open
- SyntaxCat,
- Prelude in {
-
-}
-
diff --git a/examples/phrasebook/PhrasebookChi.gf b/examples/phrasebook/PhrasebookChi.gf
deleted file mode 100644
index 35c890d98..000000000
--- a/examples/phrasebook/PhrasebookChi.gf
+++ /dev/null
@@ -1,11 +0,0 @@
---# -path=.:alltenses
-
-concrete PhrasebookChi of Phrasebook =
- GreetingsChi,
- WordsChi
- ** open
- SyntaxChi,
- Prelude in {
-
-
-}
diff --git a/examples/phrasebook/PhrasebookDan.gf b/examples/phrasebook/PhrasebookDan.gf
deleted file mode 100644
index d362d1b39..000000000
--- a/examples/phrasebook/PhrasebookDan.gf
+++ /dev/null
@@ -1,9 +0,0 @@
---# -path=.:present:alltenses
-
-concrete PhrasebookDan of Phrasebook =
- GreetingsDan,
- WordsDan ** open
- SyntaxDan,
- Prelude in {
-
-}
diff --git a/examples/phrasebook/PhrasebookDut.gf b/examples/phrasebook/PhrasebookDut.gf
deleted file mode 100644
index c8b4fd969..000000000
--- a/examples/phrasebook/PhrasebookDut.gf
+++ /dev/null
@@ -1,10 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookDut of Phrasebook =
- GreetingsDut,
- WordsDut ** open
- SyntaxDut,
- Prelude in {
-
-
-}
diff --git a/examples/phrasebook/PhrasebookEng.gf b/examples/phrasebook/PhrasebookEng.gf
deleted file mode 100644
index ab4f05d0d..000000000
--- a/examples/phrasebook/PhrasebookEng.gf
+++ /dev/null
@@ -1,12 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookEng of Phrasebook =
- GreetingsEng,
- WordsEng ** open
- SyntaxEng,
- Prelude in {
-
-flags
- language = en_US ;
-
-}
diff --git a/examples/phrasebook/PhrasebookEst.gf b/examples/phrasebook/PhrasebookEst.gf
deleted file mode 100644
index 4172ff99a..000000000
--- a/examples/phrasebook/PhrasebookEst.gf
+++ /dev/null
@@ -1,7 +0,0 @@
-concrete PhrasebookEst of Phrasebook =
- GreetingsEst,
- WordsEst ** open
- SyntaxEst,
- Prelude in {
-
-}
diff --git a/examples/phrasebook/PhrasebookFin.gf b/examples/phrasebook/PhrasebookFin.gf
deleted file mode 100644
index e0728ab10..000000000
--- a/examples/phrasebook/PhrasebookFin.gf
+++ /dev/null
@@ -1,9 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookFin of Phrasebook =
- GreetingsFin,
- WordsFin ** open
- SyntaxFin,
- Prelude in {
-
-}
diff --git a/examples/phrasebook/PhrasebookFre.gf b/examples/phrasebook/PhrasebookFre.gf
deleted file mode 100644
index ecbd74c9a..000000000
--- a/examples/phrasebook/PhrasebookFre.gf
+++ /dev/null
@@ -1,11 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookFre of Phrasebook =
- GreetingsFre,
- WordsFre
- ** open
- SyntaxFre,
- Prelude in {
-
-
-}
diff --git a/examples/phrasebook/PhrasebookGer.gf b/examples/phrasebook/PhrasebookGer.gf
deleted file mode 100644
index 69a61187c..000000000
--- a/examples/phrasebook/PhrasebookGer.gf
+++ /dev/null
@@ -1,10 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookGer of Phrasebook =
- GreetingsGer,
- WordsGer ** open
- SyntaxGer,
- Prelude in {
-
-
-}
diff --git a/examples/phrasebook/PhrasebookHin.gf b/examples/phrasebook/PhrasebookHin.gf
deleted file mode 100644
index 7cf2fa58a..000000000
--- a/examples/phrasebook/PhrasebookHin.gf
+++ /dev/null
@@ -1,10 +0,0 @@
---# -path=.:alltenses
-
-
-concrete PhrasebookHin of Phrasebook =
- GreetingsHin,
- WordsHin ** open
- SyntaxHin,
- Prelude in {
-
-}
diff --git a/examples/phrasebook/PhrasebookIta.gf b/examples/phrasebook/PhrasebookIta.gf
deleted file mode 100644
index 00d3f5488..000000000
--- a/examples/phrasebook/PhrasebookIta.gf
+++ /dev/null
@@ -1,13 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookIta of Phrasebook =
- GreetingsIta,
- WordsIta
- ** open
- SyntaxIta,
- Prelude in {
-
-flags language = it_IT ;
-
-}
-
diff --git a/examples/phrasebook/PhrasebookJpn.gf b/examples/phrasebook/PhrasebookJpn.gf
deleted file mode 100644
index b79d64379..000000000
--- a/examples/phrasebook/PhrasebookJpn.gf
+++ /dev/null
@@ -1,7 +0,0 @@
-concrete PhrasebookJpn of Phrasebook =
- GreetingsJpn,
- WordsJpn ** open
- SyntaxJpn,
- Prelude in {
-
-}
diff --git a/examples/phrasebook/PhrasebookLav.gf b/examples/phrasebook/PhrasebookLav.gf
deleted file mode 100644
index 93170159a..000000000
--- a/examples/phrasebook/PhrasebookLav.gf
+++ /dev/null
@@ -1,7 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookLav of Phrasebook = GreetingsLav, WordsLav **
-open
- SyntaxLav,
- Prelude
-in {} ;
diff --git a/examples/phrasebook/PhrasebookNor.gf b/examples/phrasebook/PhrasebookNor.gf
deleted file mode 100644
index eb4f76d8e..000000000
--- a/examples/phrasebook/PhrasebookNor.gf
+++ /dev/null
@@ -1,9 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookNor of Phrasebook =
- GreetingsNor,
- WordsNor ** open
- SyntaxNor,
- Prelude in {
-
-}
diff --git a/examples/phrasebook/PhrasebookPes.gf b/examples/phrasebook/PhrasebookPes.gf
deleted file mode 100644
index 16c21a94c..000000000
--- a/examples/phrasebook/PhrasebookPes.gf
+++ /dev/null
@@ -1,9 +0,0 @@
---# -path=.:alltenses
-
-concrete PhrasebookPes of Phrasebook =
- GreetingsPes,
- WordsPes ** open
- SyntaxPes,
- Prelude in {
-
-}
diff --git a/examples/phrasebook/PhrasebookPol.gf b/examples/phrasebook/PhrasebookPol.gf
deleted file mode 100644
index d933d6b55..000000000
--- a/examples/phrasebook/PhrasebookPol.gf
+++ /dev/null
@@ -1,13 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookPol of Phrasebook =
- GreetingsPol,
- WordsPol ** open
- SyntaxPol,
- Prelude in {
-
-flags
- language = pl_PL ; optimize =values ; coding =utf8 ;
-
-
-}
diff --git a/examples/phrasebook/PhrasebookRon.gf b/examples/phrasebook/PhrasebookRon.gf
deleted file mode 100644
index 810b09b0a..000000000
--- a/examples/phrasebook/PhrasebookRon.gf
+++ /dev/null
@@ -1,11 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookRon of Phrasebook =
- GreetingsRon,
- WordsRon
- ** open
- SyntaxRon,
- Prelude in {
-
-
-}
diff --git a/examples/phrasebook/PhrasebookRus.gf b/examples/phrasebook/PhrasebookRus.gf
deleted file mode 100644
index 7b2683240..000000000
--- a/examples/phrasebook/PhrasebookRus.gf
+++ /dev/null
@@ -1,12 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookRus of Phrasebook =
- GreetingsRus,
- WordsRus ** open
- SyntaxRus,
- Prelude in {
-
- -- lin
- -- PGreeting g = lin Text g ;
-
-}
diff --git a/examples/phrasebook/PhrasebookSnd.gf b/examples/phrasebook/PhrasebookSnd.gf
deleted file mode 100644
index 7f15d7ecf..000000000
--- a/examples/phrasebook/PhrasebookSnd.gf
+++ /dev/null
@@ -1,9 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookSnd of Phrasebook =
- GreetingsSnd,
- WordsSnd ** open
- SyntaxSnd,
- Prelude in {
-
-}
diff --git a/examples/phrasebook/PhrasebookSpa.gf b/examples/phrasebook/PhrasebookSpa.gf
deleted file mode 100644
index 75b7ae8bf..000000000
--- a/examples/phrasebook/PhrasebookSpa.gf
+++ /dev/null
@@ -1,12 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookSpa of Phrasebook =
- GreetingsSpa,
- WordsSpa
- ** open
- SyntaxSpa,
- Prelude in {
-
-
-}
-
diff --git a/examples/phrasebook/PhrasebookSwe.gf b/examples/phrasebook/PhrasebookSwe.gf
deleted file mode 100644
index 6b7c99194..000000000
--- a/examples/phrasebook/PhrasebookSwe.gf
+++ /dev/null
@@ -1,11 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookSwe of Phrasebook =
- GreetingsSwe,
- WordsSwe ** open
- SyntaxSwe,
- Prelude in {
-flags
- language = sv_SE ;
-
-}
diff --git a/examples/phrasebook/PhrasebookTha.gf b/examples/phrasebook/PhrasebookTha.gf
deleted file mode 100644
index 956599009..000000000
--- a/examples/phrasebook/PhrasebookTha.gf
+++ /dev/null
@@ -1,11 +0,0 @@
---# -path=.:alltenses
-
-concrete PhrasebookTha of Phrasebook =
- GreetingsTha,
- WordsTha
- ** open
--- SyntaxTha,
- Prelude in {
-
-
-}
diff --git a/examples/phrasebook/PhrasebookUrd.gf b/examples/phrasebook/PhrasebookUrd.gf
deleted file mode 100644
index e24ff4a01..000000000
--- a/examples/phrasebook/PhrasebookUrd.gf
+++ /dev/null
@@ -1,9 +0,0 @@
---# -path=.:present
-
-concrete PhrasebookUrd of Phrasebook =
- GreetingsUrd,
- WordsUrd ** open
- SyntaxUrd,
- Prelude in {
-
-}
diff --git a/examples/phrasebook/Sentences.gf b/examples/phrasebook/Sentences.gf
deleted file mode 100644
index 6798c2127..000000000
--- a/examples/phrasebook/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/examples/phrasebook/SentencesBul.gf b/examples/phrasebook/SentencesBul.gf
deleted file mode 100644
index 12638fba5..000000000
--- a/examples/phrasebook/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.a.gn of {
- R.GSg g => lin N {s = \\nf => cit.s1 ! g ! nf;
- rel = cit.s2.s; relPost = False;
- 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; relPost = False;
- 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/examples/phrasebook/SentencesCat.gf b/examples/phrasebook/SentencesCat.gf
deleted file mode 100644
index 752c6b9c7..000000000
--- a/examples/phrasebook/SentencesCat.gf
+++ /dev/null
@@ -1,93 +0,0 @@
---# -coding=latin1
-concrete SentencesCat of Sentences = NumeralCat ** SentencesI - [
- IsMass,
- IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale,
- WeMale, WeFemale, YouPlurFamMale, YouPlurFamFemale, YouPlurPolFemale, YouPlurPolMale, TheyMale, TheyFemale,
- PImperativeFamNeg, PImperativePolNeg, PImperativePlurNeg, --negative imperatives in subjunctive
- Superlative,
- AKnowPerson
- ]
- with
- (Syntax = SyntaxCat),
- (Symbolic = SymbolicCat),
- (Lexicon = LexiconCat) **
- open ParadigmsCat, BeschCat, SyntaxCat, ExtraCat, Prelude in {
-
---flags coding = utf8 ;
-
-lincat
- Superlative = OrdSuperlative ; -- {ord: Ord ; isPre: Bool}
-
-lin
- IsMass m q = mkCl (mkNP the_Det m) q ; -- le vin allemand est bon
-
- IFemale =
- {name = mkNP (ProDrop i8fem_Pron) ; isPron = True ; poss = mkQuant i_Pron} ;
- YouFamFemale =
- {name = mkNP (ProDrop youSg8fem_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ;
- YouPolFemale =
- {name = mkNP (ProDrop youPol8fem_Pron) ; isPron = True ; poss = mkQuant youPol_Pron};
- IMale =
- {name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = mkQuant i_Pron} ;
- YouFamMale =
- {name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ;
- YouPolMale =
- {name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = mkQuant youPol_Pron} ;
- He =
- {name = mkNP (ProDrop he_Pron) ; isPron = True ; poss = mkQuant he_Pron} ;
- She =
- {name = mkNP (ProDrop she_Pron) ; isPron = True ; poss = mkQuant she_Pron} ;
- WeMale =
- {name = mkNP (ProDrop we_Pron) ; isPron = True ; poss = mkQuant we_Pron} ;
- WeFemale =
- {name = mkNP (ProDrop we8fem_Pron) ; isPron = True ; poss = mkQuant we_Pron} ;
- YouPlurFamMale =
- {name = mkNP (ProDrop youPl_Pron) ; isPron = True ; poss = mkQuant youPl_Pron} ;
- YouPlurFamFemale =
- {name = mkNP (ProDrop youPl8fem_Pron) ; isPron = True ; poss = mkQuant youPl_Pron} ;
- YouPlurPolMale =
- {name = mkNP (ProDrop youPolPl_Pron) ; isPron = True ; poss = mkQuant youPolPl_Pron} ;
- YouPlurPolFemale =
- {name = mkNP (ProDrop youPolPl8fem_Pron) ; isPron = True ; poss = mkQuant youPolPl_Pron};
- TheyMale =
- {name = mkNP (ProDrop they_Pron) ; isPron = True ; poss = mkQuant they_Pron} ;
- TheyFemale =
- {name = mkNP (ProDrop they8fem_Pron) ; isPron = True ; poss = mkQuant they_Pron} ;
-
- PImperativeFamNeg v = phrasePlease (ImpNeg (mkNP (ProDrop youSg_Pron)) v) ;
- PImperativePolNeg v = phrasePlease (ImpNeg (mkNP (ProDrop youPol_Pron)) v) ;
- PImperativePlurNeg v = phrasePlease (ImpNeg (mkNP (ProDrop youPl_Pron)) v) ;
-
- AKnowPerson p q =
- let coneixer : V2 = mkV2 (mkV (conixer_27 "conixer"))
- in mkCl p.name coneixer q.name ;
-
-oper
-
- CNPlace : Type = {name : CN ; at : Prep ; to : Prep } ;
-
- mkCNPlace : CN -> Prep -> Prep -> CNPlace = \p,i,t ->
- { name = p ; at = i ; to = t ; } ;
-
- OrdSuperlative : Type = {ord: Ord ; isPre: Bool} ;
-
- placeNPSuperl : OrdSuperlative -> CNPlace -> NPPlace = \sup,kind -> case sup.isPre of {
- True => placeNPDet sup.ord kind ;
- False => placeNPAdj sup.ord kind
- } ;
-
- placeNPDet : Ord -> CNPlace -> NPPlace = \ord,kind ->
- let name : NP = mkNP (mkDet the_Art ord) kind.name in {
- name = name ;
- at = SyntaxCat.mkAdv kind.at name ;
- to = SyntaxCat.mkAdv kind.to name ;
- };
-
-
- placeNPAdj : Ord -> CNPlace -> NPPlace = \ord,kind ->
- let name : NP = mkNP the_Art (mkCN kind.name (mkAP ord)) in {
- name = name ;
- at = SyntaxCat.mkAdv kind.at name ;
- to = SyntaxCat.mkAdv kind.to name ;
- };
-}
diff --git a/examples/phrasebook/SentencesChi.gf b/examples/phrasebook/SentencesChi.gf
deleted file mode 100644
index 7ca72eb56..000000000
--- a/examples/phrasebook/SentencesChi.gf
+++ /dev/null
@@ -1,62 +0,0 @@
-concrete SentencesChi of Sentences = NumeralChi ** SentencesI - [QWhereModVerbPhrase, APlace,ThePlace, PropCit, CitiNat, ACitizen, Nationality, CitizenShip, ByTransp, GObjectPlease, AKnowPerson, QDoHave , QWhereDoVerbPhrase, SHaveNo, AHaveCurr]
- with
- (Syntax = SyntaxChi),
- (Symbolic = SymbolicChi),
- (Lexicon = LexiconChi) ** open SyntaxChi, (P = ParadigmsChi) in {
-
-flags coding=utf8 ;
-lincat
- Citizenship = N ;
- Nationality = {lang : NP ; country : NP; prop : A };
-lin
- ThePlace kind =
- let name : NP = lin NP (Syntax.mkNP theSg_Det kind.name) in {
- name = lin NP name ;
- at = mkAdv kind.at (lin NP name) ;
- to = mkAdv kind.to (lin NP name)
- } ;
- APlace kind =
- let name : NP = lin NP (Syntax.mkNP aSg_Det kind.name) in {
- name = lin NP name ;
- at = mkAdv kind.at (lin NP name) ;
- to = mkAdv kind.to (lin NP name)
- } ;
-
- ACitizen p n = mkCl p.name (lin N {s = n.s ++ "人" } ) ; -- to get 俄罗斯人, not 俄罗斯(人)的 ;
- CitiNat n = n.prop ; -- lin A { s = n.prop.s ++ "人" ; lock_A = <> ; monoSyl = False} ;
-
- PropCit c = lin A { s = c.s ; lock_A = <>; monoSyl = True } ;
-
- ByTransp t = t.by ;
-
- QWhereModVerbPhrase m p vp = mkQS (mkQCl zai_where_IAdv (mkCl p.name (mkVP m vp))) ;
-
- GObjectPlease o = lin Text (mkPhr noPConj (mkUtt o) please_shang_Voc) | lin Text (mkUtt o) ;
-
- AKnowPerson p q = mkCl p.name (P.mkV2 "认识") q.name ;
-
-
- QDoHave p obj = mkQS (mkQCl (mkCl p.name have_V2 obj)) ;
-
- QWhereDoVerbPhrase p vp = mkQS (mkQCl qu_where_IAdv (mkCl p.name vp)) ;
-
- SHaveNo p k = mkS negativePol (mkCl p.name have_V2 (mkNP k)) ;
-
- AHaveCurr p curr = mkCl p.name have_V2 (mkNP curr) ;
-
- MCan = can_VV ;
- MWant = want_VV ;
- MMust = must_VV ;
-
-
- oper
- qu_where_IAdv = mkIAdvL "去哪里" ;
- zai_where_IAdv = mkIAdvL "在哪里" ;
- where_m_IAdv : VV -> SS = \m -> mkIAdvL m.s ; -- ( "想在哪里" ) ;
-
- have_or_not_V2 = P.mkV2 (P.mkV "有没有" "了" "着" "在" "过" "没") ;
-
- please_shang_Voc : SS = ss "请上" ;
-
-
-}
diff --git a/examples/phrasebook/SentencesDan.gf b/examples/phrasebook/SentencesDan.gf
deleted file mode 100644
index 8b8804e09..000000000
--- a/examples/phrasebook/SentencesDan.gf
+++ /dev/null
@@ -1,8 +0,0 @@
-concrete SentencesDan of Sentences = NumeralDan ** SentencesI - [NameNN] with
- (Syntax = SyntaxDan),
- (Symbolic = SymbolicDan),
- (Lexicon = LexiconDan) ** open Prelude, SyntaxDan, (P = ParadigmsDan) in {
-
- lin NameNN = mkNP (P.mkPN "NN") ;
-
-}
diff --git a/examples/phrasebook/SentencesDut.gf b/examples/phrasebook/SentencesDut.gf
deleted file mode 100644
index 537bb8ae3..000000000
--- a/examples/phrasebook/SentencesDut.gf
+++ /dev/null
@@ -1,53 +0,0 @@
-concrete SentencesDut of Sentences = NumeralDut ** SentencesI -
- [SHaveNo,SHaveNoMass,
- Proposition,Action, Is, IsMass, SProp, SPropNot, QProp,
- AHaveCurr, ACitizen, ABePlace, AKnowSentence, AKnowPerson, AKnowQuestion,
----- QDoHave, QWhereDoVerbPhrase, QWhereModVerbPhrase, SHave,
- SHaveNo,
- QModVerbPhrase,
- ADoVerbPhrase, AModVerbPhrase, ADoVerbPhrasePlace, AModVerbPhrasePlace]
- with
- (Syntax = SyntaxDut),
- (Symbolic = SymbolicDut),
- (Lexicon = LexiconDut) ** open Prelude, SyntaxDut in {
-
- lincat
- Proposition, Action = Prop ;
- oper
- Prop = {pos : Cl ; neg : S} ; -- x F y ; x F niet/geen 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))) ;
-
--- the old things
- lin
- 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)) ;
-
-}
-
diff --git a/examples/phrasebook/SentencesEng.gf b/examples/phrasebook/SentencesEng.gf
deleted file mode 100644
index caaf9daca..000000000
--- a/examples/phrasebook/SentencesEng.gf
+++ /dev/null
@@ -1,4 +0,0 @@
-concrete SentencesEng of Sentences = NumeralEng ** SentencesI with
- (Syntax = SyntaxEng),
- (Symbolic = SymbolicEng),
- (Lexicon = LexiconEng) ;
diff --git a/examples/phrasebook/SentencesEst.gf b/examples/phrasebook/SentencesEst.gf
deleted file mode 100644
index 667880f33..000000000
--- a/examples/phrasebook/SentencesEst.gf
+++ /dev/null
@@ -1,63 +0,0 @@
-concrete SentencesEst of Sentences = NumeralEst ** SentencesI -
- [NameNN, ObjMass,
- NPPlace, CNPlace, placeNP, mkCNPlace, mkCNPlacePl, NPNationality, mkNPNationality,
- CitiNat, Citizenship, Nationality, ACitizen, PropCit, PCitizenship,
- GObjectPlease
- ] with
- (Syntax = SyntaxEst),
- (Symbolic = SymbolicEst),
- (Lexicon = LexiconEst) **
- open SyntaxEst, ExtraEst, (P = ParadigmsEst), (V = VerbEst), Prelude in {
-
- flags optimize = noexpand ;
-
- lincat
- Citizenship = ACitizenship ;
- Nationality = NPNationality ;
-
- oper
- NPPlace : Type = {name : NP ; at : Adv ; to : Adv ; from : Adv} ;
- CNPlace : Type = {name : CN ; at : Prep ; to : Prep ; from : Prep ; isPl : Bool} ;
- ACitizenship : Type = { prop : A ; nat : A } ;
- NPNationality : Type = ACitizenship ** {lang : NP ; country : NP} ;
-
- placeNP : Det -> CNPlace -> NPPlace = \det,kind ->
- let name : NP = mkNP det kind.name in {
- name = name ;
- at = mkAdv kind.at name ;
- to = mkAdv kind.to name ;
- from = mkAdv kind.from name
- } ;
-
- lin
- -- The Fin-grammar overloaded the Is and IsMass functions to be
- -- able to use the complement in partitive.
- -- This would be wrong in Est, where the complement is in nominative.
- -- Fin: tämä pizza on herkullista
- -- Is item prop = mkCl item (V.UseComp (CompPartAP prop)) ;
- --
- -- Fin: pizza on herkullista
- -- IsMass mass prop = mkCl (mkNP a_Det mass) (V.UseComp (CompPartAP prop)) ;
-
- NameNN = mkNP (P.mkPN (P.mkN "NN")) ;
-
- -- Estonian does not have possessive endings and does not make use of ProDrop
- -- that much, so we do not override SentencesI, like Finnish does.
-{--
- IMale, IFemale =
- {name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = ProDropPoss i_Pron} ;
- YouFamMale, YouFamFemale =
- {name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = ProDropPoss youSg_Pron} ;
- YouPolMale, YouPolFemale =
- {name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = ProDropPoss youPol_Pron} ;
---}
-
- ObjMass = PartCN ;
-
- GObjectPlease o = lin Text (mkPhr noPConj (mkUtt o) (lin Voc (ss "palun"))) ;
-
- CitiNat n = n ; -- keep just prop and nat fields
- PropCit c = c.prop ;
- PCitizenship c = mkPhrase (mkUtt (mkAP c.prop)) ;
- ACitizen p n = mkCl p.name n.nat ;
-}
diff --git a/examples/phrasebook/SentencesFin.gf b/examples/phrasebook/SentencesFin.gf
deleted file mode 100644
index ae9dff1eb..000000000
--- a/examples/phrasebook/SentencesFin.gf
+++ /dev/null
@@ -1,56 +0,0 @@
---# -coding=latin1
-concrete SentencesFin of Sentences = NumeralFin ** SentencesI -
- [Is, IsMass, NameNN, ObjMass,
- IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale,
- WeMale, WeFemale, YouPlurFamMale, YouPlurFamFemale, YouPlurPolFemale, YouPlurPolMale,
- NPPlace, CNPlace, placeNP, mkCNPlace, mkCNPlacePl,
- GObjectPlease,
- NPNationality, mkNPNationality,
- Country, PCountry
- ] with
- (Syntax = SyntaxFin),
- (Symbolic = SymbolicFin),
- (Lexicon = LexiconFin) **
- open SyntaxFin, ExtraFin, (P = ParadigmsFin), (V = VerbFin), Prelude in {
-
- flags optimize = noexpand ;
-
- lincat
- Country = {np : NP ; isExternal : Bool} ;
- lin
- PCountry x = mkPhrase (mkUtt x.np) ;
- oper
- NPNationality = {lang : NP ; prop : A ; country : {np : NP ; isExternal : Bool}} ;
- NPPlace = {name : NP ; at : Adv ; to : Adv ; from : Adv} ;
- CNPlace = {name : CN ; isExternal : Bool ; isPl : Bool} ;
-
- placeNP : Det -> CNPlace -> NPPlace = \det,kind ->
- let name : NP = mkNP det kind.name in {
- name = name ;
- at = mkAdv (P.casePrep (if_then_else P.Case kind.isExternal P.adessive P.inessive)) name ;
- to = mkAdv (P.casePrep (if_then_else P.Case kind.isExternal P.allative P.illative)) name ;
- from = mkAdv (P.casePrep (if_then_else P.Case kind.isExternal P.ablative P.elative)) name
- } ;
-
- lin
- Is item prop = mkCl item (V.UseComp (CompPartAP prop)) ; -- tm pizza on herkullista
- IsMass mass prop = mkCl (mkNP a_Det mass) (V.UseComp (CompPartAP prop)) ; -- pizza on herkullista
- NameNN = mkNP (P.mkPN (P.mkN "NN" "NN:i")) ;
-
- IMale, IFemale =
- {name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = ProDropPoss i_Pron} ;
- YouFamMale, YouFamFemale =
- {name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = ProDropPoss youSg_Pron} ;
- YouPolMale, YouPolFemale =
- {name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = ProDropPoss youPol_Pron} ;
- WeMale, WeFemale =
- {name = mkNP (ProDrop we_Pron) ; isPron = True ; poss = ProDropPoss we_Pron} ;
- YouPlurFamMale, YouPlurFamFemale, YouPlurPolMale, YouPlurPolFemale =
- {name = mkNP (ProDrop youPl_Pron) ; isPron = True ; poss = ProDropPoss youPl_Pron} ;
-
- ObjMass = PartCN ;
-
- GObjectPlease o = lin Text (mkPhr noPConj (mkUtt o) (lin Voc (ss "kiitos"))) ;
-
-
- }
diff --git a/examples/phrasebook/SentencesFre.gf b/examples/phrasebook/SentencesFre.gf
deleted file mode 100644
index f600a5d29..000000000
--- a/examples/phrasebook/SentencesFre.gf
+++ /dev/null
@@ -1,47 +0,0 @@
-concrete SentencesFre of Sentences = NumeralFre ** SentencesI - [
- IsMass,
- QProp,
- IFemale, YouFamFemale, YouPolFemale, WeFemale, YouPlurFamFemale, YouPlurPolFemale, YouPlurPolMale, TheyFemale,
- PYesToNo,
- SHaveNo,SHaveNoMass,
- Superlative
- ]
- with
- (Syntax = SyntaxFre),
- (Symbolic = SymbolicFre),
- (Lexicon = LexiconFre) **
- open SyntaxFre, ExtraFre, (P = ParadigmsFre), Prelude in {
-
- lincat
- Superlative = {s : Ord ; isPre : Bool} ;
- lin
- IsMass m q = mkCl (mkNP the_Det m) q ; -- le vin allemand est bon
- QProp a =
- lin QS {s = \\_ => (EstcequeS (mkS a)).s} ;
- IFemale =
- {name = mkNP i8fem_Pron ; isPron = True ; poss = mkQuant i_Pron} ;
- YouFamFemale =
- {name = mkNP youSg8fem_Pron ; isPron = True ; poss = mkQuant youSg_Pron} ;
- YouPolFemale =
- {name = mkNP youPol8fem_Pron ; isPron = True ; poss = mkQuant youPol_Pron} ;
- WeFemale =
- {name = mkNP we8fem_Pron ; isPron = True ; poss = mkQuant we_Pron} ;
- YouPlurFamFemale =
- {name = mkNP youPl8fem_Pron ; isPron = True ; poss = mkQuant youPl_Pron} ;
- YouPlurPolMale =
- {name = mkNP youPl_Pron ; isPron = True ; poss = mkQuant youPol_Pron};
- YouPlurPolFemale =
- {name = mkNP youPl8fem_Pron ; isPron = True ; poss = mkQuant youPol_Pron};
- TheyFemale =
- {name = mkNP they8fem_Pron ; isPron = True ; poss = mkQuant they_Pron} ;
-
-
- PYesToNo = mkPhrase (lin Utt (ss "si")) ;
-
- SHaveNo p k = mkS negativePol (mkCl p.name have_de (mkNP aPl_Det k)) ;
- SHaveNoMass p k = mkS negativePol (mkCl p.name (ComplCN have_de k)) ;
-
- oper
- have_de : V2 = P.mkV2 (P.mkV have_V2) P.genitive ;
-
-}
diff --git a/examples/phrasebook/SentencesGer.gf b/examples/phrasebook/SentencesGer.gf
deleted file mode 100644
index cc0922d5f..000000000
--- a/examples/phrasebook/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/examples/phrasebook/SentencesHin.gf b/examples/phrasebook/SentencesHin.gf
deleted file mode 100644
index da2719795..000000000
--- a/examples/phrasebook/SentencesHin.gf
+++ /dev/null
@@ -1,42 +0,0 @@
-concrete SentencesHin of Sentences = NumeralHin ** SentencesI -
- [sing,IFemale,YouFamFemale,YouPolFemale,MMust,YouPlurFamFemale,YouPlurPolFemale,YouFamMale,mkGreeting] with
- (Syntax = SyntaxHin),
- (Symbolic = SymbolicHin),
- (Lexicon = LexiconHin) **
- open
- (P=ParadigmsHin),
- ParamX,
- CommonHindustani in {
- lin IFemale = mkPerson (P.personalPN myN mjh "" myra myry myrE myry Sg Fem Pers1) ;
- YouFamMale = mkPerson (P.personalPN tum tum tum tumhara tumhary tumharay tumhary Pl Masc Pers2_Familiar) ;
- YouFamFemale = mkPerson (P.personalPN tw tw tw tyra tyry tyrE tyry Sg Fem Pers2_Casual) ;
- YouPolFemale = mkPerson (P.personalPN ap ap ap apka apky apkE apky Pl Fem Pers2_Respect);
- YouPlurFamFemale = mkPerson (P.personalPN tum tum tum tumhara tumhary tumharay tumhary Pl Fem Pers2_Familiar) ;
- YouPlurPolFemale = mkPerson (P.personalPN ap ap ap apka apky apkE apky Pl Fem Pers2_Respect) ;
-
-
-
-flags coding = utf8 ;
-
-oper
- mkGreeting = ss ;
-
-oper
- myN = "मैं" ;
- mjh = "मुझ" ;
- myra = "मेरा" ;
- myry = "मेरी" ;
- myrE = "मेरे" ;
- tw = "तू" ;
- tum = "तुम" ;
- tyra = "तेरा" ;
- tyry = "तेरी" ;
- tyrE = "तेरे" ;
- tumhara = "तुम्हारा" ;
- tumhary = "तुम्हारी" ;
- tumharay = "तुम्हारे" ;
- ap = "आप" ;
- apka = ["आप का"] ;
- apky = ["आप की"] ;
- apkE = ["आप के"] ;
- } ;
diff --git a/examples/phrasebook/SentencesI.gf b/examples/phrasebook/SentencesI.gf
deleted file mode 100644
index 913aa11ad..000000000
--- a/examples/phrasebook/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 ;
-
- 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 ;
- VEat = mkVP ;
- VRead = mkVP ;
- VWait = mkVP ;
- VWrite = mkVP ;
-
- 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/examples/phrasebook/SentencesIta.gf b/examples/phrasebook/SentencesIta.gf
deleted file mode 100644
index e845c1c54..000000000
--- a/examples/phrasebook/SentencesIta.gf
+++ /dev/null
@@ -1,78 +0,0 @@
-concrete SentencesIta of Sentences = NumeralIta ** SentencesI - [
- IsMass,
- IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale,
- WeMale, WeFemale, YouPlurFamMale, YouPlurFamFemale, YouPlurPolFemale, YouPlurPolMale, TheyMale, TheyFemale,
- mkPerson, Superlative, SHaveNoMass
- ]
- with
- (Syntax = SyntaxIta),
- (Symbolic = SymbolicIta),
- (Lexicon = LexiconIta) **
- open SyntaxIta, ExtraIta, Prelude in {
-
- lincat
- Place = NPPlace ; -- {name : NP ; at : Adv ; to : Adv ; } ;
- Superlative = {s : A ; isPre : Bool} ;
-
- lin
- IsMass m q = mkCl (mkNP the_Det m) q ; -- le vin allemand est bon
-
- IFemale =
- {name = mkNP (ProDrop i8fem_Pron) ; isPron = True ; poss = PossFamQuant i_Pron} ;
- IMale =
- {name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = PossFamQuant i_Pron} ;
- YouFamMale =
- {name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = PossFamQuant youSg_Pron} ;
- YouFamFemale =
- {name = mkNP (ProDrop youSg8fem_Pron) ; isPron = True ; poss = PossFamQuant youSg_Pron} ;
- YouPolMale =
- {name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = PossFamQuant youPol_Pron} ;
- YouPolFemale =
- {name = mkNP (ProDrop youPol8fem_Pron) ; isPron = True ; poss = PossFamQuant youPol_Pron};
- He =
- {name = mkNP (ProDrop he_Pron) ; isPron = True ; poss = PossFamQuant he_Pron} ;
- She =
- {name = mkNP (ProDrop she_Pron) ; isPron = True ; poss = PossFamQuant she_Pron} ;
- WeMale =
- {name = mkNP (ProDrop we_Pron) ; isPron = True ; poss = PossFamQuant we_Pron} ;
- WeFemale =
- {name = mkNP (ProDrop we8fem_Pron) ; isPron = True ; poss = PossFamQuant we_Pron} ;
- YouPlurFamMale =
- {name = mkNP (ProDrop youPl_Pron) ; isPron = True ; poss = PossFamQuant youPl_Pron} ;
- YouPlurFamFemale =
- {name = mkNP (ProDrop youPl8fem_Pron) ; isPron = True ; poss = PossFamQuant youPl_Pron} ;
- YouPlurPolMale =
- {name = mkNP (ProDrop youPolPl_Pron) ; isPron = True ; poss = PossFamQuant youPolPl_Pron} ;
- YouPlurPolFemale =
- {name = mkNP (ProDrop youPolPl8fem_Pron) ; isPron = True ; poss = PossFamQuant youPolPl_Pron};
- TheyMale =
- {name = mkNP (ProDrop they_Pron) ; isPron = True ; poss = PossFamQuant they_Pron} ;
- TheyFemale =
- {name = mkNP (ProDrop they8fem_Pron) ; isPron = True ; poss = PossFamQuant they_Pron} ;
-
- SHaveNoMass p k = mkS negativePol (mkCl p.name (ComplCN have_V2 k)) ;
-
- oper
-
- CNPlace : Type = {name : CN ; at : Prep ; to : Prep } ;
-
- mkCNPlace : CN -> Prep -> Prep -> CNPlace = \p,i,t -> {
- name = p ;
- at = i ;
- to = t ;
- } ;
-
- placeNP : Det -> CNPlace -> NPPlace = \det,kind ->
- let name : NP = mkNP det kind.name in {
- name = name ;
- at = mkAdv kind.at name ;
- to = mkAdv kind.to name
- } ;
-
- mkPerson : Pron -> {name : NP ; isPron : Bool ; poss : Quant} = \p ->
- {name = mkNP p ; isPron = True ; poss = PossFamQuant p} ;
-
-
-}
-
-
diff --git a/examples/phrasebook/SentencesJpn.gf b/examples/phrasebook/SentencesJpn.gf
deleted file mode 100644
index 4fdaf5fb5..000000000
--- a/examples/phrasebook/SentencesJpn.gf
+++ /dev/null
@@ -1,62 +0,0 @@
-concrete SentencesJpn of Sentences = NumeralJpn **
- SentencesI - [
- VDrink,VEat,VRead,VWait,VWrite,
- phrasePlease, mkSentence, mkPhrase,
- NameNN,
- PSentence, PQuestion, GObjectPlease,
- ACitizen, Citizenship, CitiNat, Nationality, NPNationality, mkNPNationality, PropCit, PCitizenship
- ]
-with
- (Syntax = SyntaxJpn),
--- (Symbolic = SymbolicJpn),
- (Lexicon = LexiconJpn) ** open SyntaxJpn, ParadigmsJpn in {
-
-flags coding = utf8 ;
-
-lincat
-
- Citizenship = NPCitizenship ;
- Nationality = NPNationality ;
-
-lin
- VDrink = v2toVP drink_V2 ;
- VEat = v2toVP eat_V2 ;
- VRead = v2toVP read_V2 ;
- VWait = v2toVP wait_V2 ;
- VWrite = v2toVP write_V2 ;
-
- NameNN = mkNP (mkPN "NN") ;
-
- PSentence s = mkText (mkPhr (mkUtt s)) | lin Text (mkPhr (mkUtt s)) ; -- optional '.'
- PQuestion s = mkText (mkPhr (mkUtt s)) | lin Text (mkPhr (mkUtt s)) ; -- optional '?'
-
- GObjectPlease o = lin Text (mkPhr noPConj (mkUtt o) please_Voc) | lin Text (mkPhr (mkUtt o)) ;
-
- ACitizen p n = mkCl p.name n.citizenship ;
-
- CitiNat n = {prop = n.prop ; citizenship = n.citizenship} ;
-
- PropCit c = c.prop ;
-
- PCitizenship x = mkPhrase (mkUtt x.citizenship) ;
-
-oper
- v2toVP : V2 -> VP = \v2 -> mkVP ;
-
- phrasePlease : Utt -> Text = \u -> lin Text (mkPhr u) | lin Text (mkPhr noPConj u please_Voc) ;
-
- mkPhrase : Utt -> Text = \u -> lin Text (mkPhr u) ; -- no punctuation
- mkSentence : Utt -> Text = \t -> lin Text (postfixSS "." (mkPhr t) | (mkPhr t)) ; -- optional .
-
- NPCitizenship : Type = {prop : A ; citizenship : NP} ;
-
- NPNationality : Type = NPCitizenship ** {lang : NP ; country : NP} ;
-
- mkNPNationality : NP -> NP -> A -> NP -> NPNationality = \la,co,pro,ci ->
- {lang = la ;
- country = co ;
- prop = pro ;
- citizenship = ci
- } ;
-
-}
diff --git a/examples/phrasebook/SentencesLav.gf b/examples/phrasebook/SentencesLav.gf
deleted file mode 100644
index 33d34b99d..000000000
--- a/examples/phrasebook/SentencesLav.gf
+++ /dev/null
@@ -1,50 +0,0 @@
-concrete SentencesLav of Sentences = NumeralLav ** SentencesI - [
- LAnguage,
- PLanguage,
- NPNationality,
- mkNPNationality,
- NameNN,
- IFemale,
- YouFamFemale,
- YouPolFemale,
- WeFemale,
- YouPlurFamFemale,
- YouPlurPolFemale,
- TheyFemale
-]
-with
- (Syntax = SyntaxLav),
- (Symbolic = SymbolicLav),
- (Lexicon = LexiconLav) **
-open
- Prelude,
- SyntaxLav,
- (P = ParadigmsLav),
- ExtraLav
-in {
-
- lincat
- LAnguage = NPLanguage ;
-
- lin
- PLanguage x = mkPhrase (mkUtt x.lang) ;
-
- NameNN = mkNP (P.mkN "NN") ;
-
- IFemale = mkPerson i8fem_Pron ;
- YouFamFemale = mkPerson youSg8fem_Pron ;
- YouPolFemale = mkPerson youPol8fem_Pron ;
- WeFemale = mkPerson we8fem_Pron ;
- YouPlurFamFemale, YouPlurPolFemale = mkPerson youPl8fem_Pron ;
- TheyFemale = mkPerson they8fem_Pron ;
-
- oper
- NPLanguage : Type = {lang : NP ; modif : Adv} ;
- NPNationality : Type = {lang : NPLanguage ; country : NP ; prop : A} ;
-
- mkNPNationality : NPLanguage -> NP -> A -> NPNationality = \la,co,pro -> {
- lang = la ;
- country = co ;
- prop = pro
- } ;
-}
diff --git a/examples/phrasebook/SentencesNor.gf b/examples/phrasebook/SentencesNor.gf
deleted file mode 100644
index cd8b068c1..000000000
--- a/examples/phrasebook/SentencesNor.gf
+++ /dev/null
@@ -1,10 +0,0 @@
-concrete SentencesNor of Sentences = NumeralNor ** SentencesI - [NameNN] with
- (Syntax = SyntaxNor),
- (Symbolic = SymbolicNor),
- (Lexicon = LexiconNor) ** open SyntaxNor, (P = ParadigmsNor) in
-
-{
-
-lin NameNN = mkNP (P.mkPN "NN") ;
-
-}
diff --git a/examples/phrasebook/SentencesPes.gf b/examples/phrasebook/SentencesPes.gf
deleted file mode 100644
index 32a181473..000000000
--- a/examples/phrasebook/SentencesPes.gf
+++ /dev/null
@@ -1,8 +0,0 @@
-concrete SentencesPes of Sentences = NumeralPes ** SentencesI - [sing,NNumeral,ObjPlural,MCan,MKnow,MMust,V2Wait,VWait] with
- (Syntax = SyntaxPes),
- (Symbolic = SymbolicPes),
- (Lexicon = LexiconPes) **
- {
- lin ObjPlural k = mkNP k ;
- };
-
diff --git a/examples/phrasebook/SentencesPol.gf b/examples/phrasebook/SentencesPol.gf
deleted file mode 100644
index 00815e6bc..000000000
--- a/examples/phrasebook/SentencesPol.gf
+++ /dev/null
@@ -1,52 +0,0 @@
-concrete SentencesPol of Sentences =
- NumeralPol ** SentencesI - [
- Day,PDay,OnDay,LAnguage,PLanguage,Citizenship,
- PCitizenship,CitiNat,PropCit,ACitizen,
- Nationality,Transport,PTransport,ByTransp,
- IFemale,YouFamFemale, YouPolFemale,YouPolMale,
- IMale, YouFamMale --- AR, for pro drop
- ]
- with
- (Syntax = SyntaxPol),
- (Symbolic = SymbolicPol),
- (Lexicon = LexiconPol) **
- open (N = NounPol),(R = ResPol), (Pron = PronounMorphoPol), (E = ExtraPol), Prelude in {
-
- flags
- optimize =values ; coding =utf8 ;
-
- lincat
- Day = { name,hab,adv:Str } ;
- LAnguage = A ;
- Citizenship = { prop:A; citizenMSg:Str; citizenMPl:Str; citizenF:Str} ;
- Nationality = { lang: A; prop: A; country: NP; citizenMSg:Str; citizenMPl:Str; citizenF:Str } ;
- Transport = { cn:CN; verb:Str} ;
-
- lin
- PDay d = (ss d.name) ** {lock_Text = <>};
- OnDay d = (ss d.adv) ** {lock_Adv = <>};
- PLanguage l = (ss l.pos.s1) ** {lock_Text = <>};
- PTransport t = mkPhrase (mkUtt t.cn) ;
- ByTransp t = { s=t.cn.s!R.Sg!R.Instr; lock_Adv = <>} ;
- PCitizenship c = mkPhrase (mkUtt (mkAP c.prop)) ;
- CitiNat n = {prop=n.prop; citizenMSg=n.citizenMSg; citizenMPl=n.citizenMPl; citizenF=n.citizenF};
- PropCit c = c.prop;
- ACitizen p n = mkCl p.name {s= case p.name.gn of {
- R.MascPersSg=>n.citizenMSg; R.FemSg=>n.citizenF; _=>n.citizenMPl
- };
- lock_Adv=<>};
-
---- AR 8/12/2010: using pro drop
- IMale = mkPerson (E.ProDrop Pron.pronJa);
- IFemale = mkPerson (E.ProDrop (Pron.pronJaFoo (R.PGen R.Fem)));
- YouFamMale = mkPerson (E.ProDrop (Pron.pronTy));
- YouFamFemale = mkPerson (E.ProDrop (Pron.pronTyFoo (R.PGen R.Fem)));
--- YouPolFemale = mkPerson (E.ProDrop (Pron.pronPani));
--- YouPolMale = mkPerson (E.ProDrop (Pron.pronPan));
-
---- original
---- IFemale = mkPerson (Pron.pronJaFoo (R.PGen R.Fem));
---- YouFamFemale = mkPerson (Pron.pronTyFoo (R.PGen R.Fem));
- YouPolFemale = mkPerson (Pron.pronPani);
- YouPolMale = mkPerson (Pron.pronPan);
-}
diff --git a/examples/phrasebook/SentencesRon.gf b/examples/phrasebook/SentencesRon.gf
deleted file mode 100644
index 70d3e34d0..000000000
--- a/examples/phrasebook/SentencesRon.gf
+++ /dev/null
@@ -1,71 +0,0 @@
-
-concrete SentencesRon of Sentences = NumeralRon ** SentencesI - [
- IsMass,
- IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale,
- ThePlace, Nationality, CitiNat, Citizenship, ACitizen, PCitizenship, PropCit
-]
- with
- (Syntax = SyntaxRon),
- (Symbolic = SymbolicRon),
- (Lexicon = LexiconRon) **
- open SyntaxRon, ExtraRon, (R = ResRon), (P = ParamX), (PR = ParadigmsRon) in {
-
-oper
- NPNationalityRon : Type = {lang : NP ;
- country : NP ;
- propObj : A;
- propPers : R.Gender => P.Number => Str};
- CitizenshipRon : Type = {pers : R.Gender => P.Number => Str;
- prop : A};
-
-
- mkNPNationalityRon : NP -> NP -> A -> Str -> Str -> Str -> Str -> NPNationalityRon = \la,co,pro, s1,s2,s3,s4 ->
- {lang = la ;
- country = co ;
- propObj = pro ;
- propPers = mkCitiPers s1 s2 s3 s4
- } ;
-
- mkCitizenshipRon : A -> Str -> Str -> Str -> Str -> CitizenshipRon = \aobj, ap1, ap2, ap3, ap4 -> {pers = mkCitiPers ap1 ap2 ap3 ap4; prop = aobj};
-
- mkCitiPers : Str -> Str -> Str -> Str -> (R.Gender => P.Number => Str) = \francez, franceza, francezi, franceze ->
-table {R.Masc => table {P.Sg => francez;
- P.Pl => francezi};
- R.Fem => table {P.Sg => franceza;
- P.Pl => franceze}};
-
-
-lincat
- Nationality = NPNationalityRon ;
- Citizenship = CitizenshipRon ;
-
-lin
- IsMass m q = mkCl (mkNP the_Det m) q ; -- le vin allemand est bon
-
- IFemale = {name = mkNP i8fem_Pron ; isPron = True ; poss = mkQuant i_Pron} ;
- YouFamFemale = {name = mkNP youSg8fem_Pron ; isPron = True ; poss = mkQuant youSg_Pron} ;
- YouPolFemale = {name = mkNP youPol8fem_Pron ; isPron = True ; poss = mkQuant youPol_Pron};
- IMale = {name = mkNP i_Pron ; isPron = True ; poss = mkQuant i_Pron} ;
- YouFamMale = {name = mkNP youSg_Pron ; isPron = True ; poss = mkQuant youSg_Pron} ;
- YouPolMale = {name = mkNP youPol_Pron ; isPron = True ; poss = mkQuant youPol_Pron} ;
- ThePlace kind = let name : NP = mkNP the_Quant kind.name ;
- condAt : Bool = needIndefPlace kind.name kind.at ;
- condTo : Bool = needIndefPlace kind.name kind.to in {
- name = name ;
- at = if_then_else Adv condAt (mkAdv kind.at (mkNP the_Art kind.name)) (mkAdv kind.at name);
- to = if_then_else Adv condTo (mkAdv kind.at (mkNP the_Art kind.name)) (mkAdv kind.to name)
- } ;
-CitiNat n = {pers = n.propPers; prop = n.propObj} ;
-ACitizen p n = mkCl p.name (PR.mkAdv (n.pers ! (p.name.a.g) ! (p.name.a.n))) ;
-PCitizenship x = mkPhrase (mkUtt (mkAP x.prop)) ;
-PropCit p = p.prop ;
-
-
-oper needIndefPlace : CN -> Prep -> Bool = \cn,prep ->
- case of
- { => True ;
- => False ;
- _ => True
- };
-}
-
diff --git a/examples/phrasebook/SentencesRus.gf b/examples/phrasebook/SentencesRus.gf
deleted file mode 100644
index cdde941e1..000000000
--- a/examples/phrasebook/SentencesRus.gf
+++ /dev/null
@@ -1,25 +0,0 @@
-concrete SentencesRus of Sentences = NumeralRus ** SentencesI - [
- NameNN, SHave, SHaveNo, SHaveNoMass, QDoHave, AHaveCurr,
- IMale, IFemale, YouFamMale, YouFamFemale, YouPolMale, YouPolFemale
- ] with
- (Syntax = SyntaxRus),
- (Symbolic = SymbolicRus),
- (Lexicon = LexiconRus), (Grammar = GrammarRus) ** open Prelude, SyntaxRus, ExtraRus, (P = ParadigmsRus), (R = ResRus), (M = MorphoRus) in {
- lin
- SHave p obj = mkS (mkCl (mkVP have_V3 obj p.name)) ;
- SHaveNo p obj = mkS (mkCl (mkVP have_not_V3 (mkNP obj) p.name)) ;
- SHaveNoMass p obj = mkS (mkCl (mkVP have_not_V3 (mkNP obj) p.name)) ;
- QDoHave p obj = mkQS (mkQCl (mkCl (mkVP have_V3 obj p.name))) ;
-
- AHaveCurr p curr = mkCl (mkVP have_V3 (mkNP aPl_Det curr) p.name) ;
-
- lin
- NameNN = mkNP (P.mkN "NN") ;
- IMale = mkPerson (M.pronYa R.Masc) ;
- IFemale = mkPerson (M.pronYa R.Fem) ;
- YouFamMale = mkPerson (M.pronTu R.Masc) ;
- YouFamFemale = mkPerson (M.pronTu R.Fem) ;
- YouPolMale = mkPerson (M.pronVu R.Masc) ;
- YouPolFemale = mkPerson (M.pronVu R.Fem) ;
-
-}
\ No newline at end of file
diff --git a/examples/phrasebook/SentencesSnd.gf b/examples/phrasebook/SentencesSnd.gf
deleted file mode 100644
index c8d1c8c88..000000000
--- a/examples/phrasebook/SentencesSnd.gf
+++ /dev/null
@@ -1,38 +0,0 @@
-concrete SentencesSnd of Sentences = NumeralSnd ** SentencesI - [sing,IFemale,YouFamFemale,YouPolFemale,MMust,YouPlurFamFemale,YouPlurPolFemale,YouFamMale,VRead,VWrite] with
- (Syntax = SyntaxSnd),
- (Symbolic = SymbolicSnd),
- (Lexicon = LexiconSnd) **
- open
- (P=ParadigmsSnd),
- ParamX,
- CommonHindustani in {
-{-
- lin IFemale = mkPerson (P.personalPN myN mjh "" myra myry myrE myry Sg Fem Pers1) ;
- YouFamMale = mkPerson (P.personalPN tum tum tum tumhara tumhary tumharay tumhary Pl Masc Pers2_Familiar) ;
- YouFamFemale = mkPerson (P.personalPN tum tum tum tyra tyry tyrE tyry Pl Fem Pers2_Familiar) ;
- YouPolFemale = mkPerson (P.personalPN ap ap ap apka apky apkE apky Pl Fem Pers2_Respect);
- YouPlurFamFemale = mkPerson (P.personalPN tum tum tum tumhara tumhary tumharay tumhary Pl Fem Pers2_Familiar) ;
- YouPlurPolFemale = mkPerson (P.personalPN ap ap ap apka apky apkE apky Pl Fem Pers2_Respect) ;
-
-flags coding = utf8 ;
-
-oper
- myN = "میں" ;
- mjh = "مجھ" ;
- myra = "میرا" ;
- myry = "میری" ;
- myrE = "میرے" ;
- tw = "تو" ;
- tum = "تم" ;
- tyra = "تیرا" ;
- tyry = "تیری" ;
- tyrE = "تیرے" ;
- tumhara = "تمھارا" ;
- tumhary = "تمھاری" ;
- tumharay = "تمھارے" ;
- ap = "آپ" ;
- apka = ["آپ كا"] ;
- apky = ["آپ كی"] ;
- apkE = ["آپ كے"] ;
- -}
- } ;
diff --git a/examples/phrasebook/SentencesSpa.gf b/examples/phrasebook/SentencesSpa.gf
deleted file mode 100644
index 162d5ab78..000000000
--- a/examples/phrasebook/SentencesSpa.gf
+++ /dev/null
@@ -1,104 +0,0 @@
-concrete SentencesSpa of Sentences = NumeralSpa ** SentencesI - [
- IsMass,
- IFemale, YouFamFemale, YouPolFemale, IMale, YouFamMale, YouPolMale,
- WeMale, WeFemale, YouPlurFamMale, YouPlurFamFemale, YouPlurPolFemale, YouPlurPolMale, TheyMale, TheyFemale,
- WherePlace, WherePerson, ABePlace,
- PImperativeFamNeg, PImperativePlurNeg, --negative imperatives in subjunctive
- Superlative
- ]
- with
- (Syntax = SyntaxSpa),
- (Symbolic = SymbolicSpa),
- (Lexicon = LexiconSpa) **
- open ParadigmsSpa, BeschSpa, SyntaxSpa, ExtraSpa, Prelude in {
-
-flags coding = utf8 ;
-
- lincat
- Superlative = OrdSuperlative ; -- {ord: Ord ; isPre: Bool}
-
- lin
-
- IsMass m q = mkCl (mkNP the_Det m) q ; -- le vin allemand est bon
-
- IFemale =
- {name = mkNP (ProDrop i8fem_Pron) ; isPron = True ; poss = mkQuant i_Pron} ;
- YouFamFemale =
- {name = mkNP (ProDrop youSg8fem_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ;
- YouPolFemale =
- {name = mkNP (ProDrop youPol8fem_Pron) ; isPron = True ; poss = mkQuant youPol_Pron};
- IMale =
- {name = mkNP (ProDrop i_Pron) ; isPron = True ; poss = mkQuant i_Pron} ;
- YouFamMale =
- {name = mkNP (ProDrop youSg_Pron) ; isPron = True ; poss = mkQuant youSg_Pron} ;
- YouPolMale =
- {name = mkNP (ProDrop youPol_Pron) ; isPron = True ; poss = mkQuant youPol_Pron} ;
- He =
- {name = mkNP (ProDrop he_Pron) ; isPron = True ; poss = mkQuant he_Pron} ;
- She =
- {name = mkNP (ProDrop she_Pron) ; isPron = True ; poss = mkQuant she_Pron} ;
- WeMale =
- {name = mkNP (ProDrop we_Pron) ; isPron = True ; poss = mkQuant we_Pron} ;
- WeFemale =
- {name = mkNP (ProDrop we8fem_Pron) ; isPron = True ; poss = mkQuant we_Pron} ;
- YouPlurFamMale =
- {name = mkNP (ProDrop youPl_Pron) ; isPron = True ; poss = mkQuant youPl_Pron} ;
- YouPlurFamFemale =
- {name = mkNP (ProDrop youPl8fem_Pron) ; isPron = True ; poss = mkQuant youPl_Pron} ;
- YouPlurPolMale =
- {name = mkNP (ProDrop youPolPl_Pron) ; isPron = True ; poss = mkQuant youPolPl_Pron} ;
- YouPlurPolFemale =
- {name = mkNP (ProDrop youPolPl8fem_Pron) ; isPron = True ; poss = mkQuant youPolPl_Pron};
- TheyMale =
- {name = mkNP (ProDrop they_Pron) ; isPron = True ; poss = mkQuant they_Pron} ;
- TheyFemale =
- {name = mkNP (ProDrop they8fem_Pron) ; isPron = True ; poss = mkQuant they_Pron} ;
-
- --IL 2012-10-12
- --Negative imperative is done with subjunctive.
- --PImperativePolNeg is fine in RGL, but fam and plur are wrong
- --A special ImpNeg in ExtraSpa is defined for that
- PImperativeFamNeg v = phrasePlease (ImpNeg (mkNP (ProDrop youSg_Pron)) v) ;
- PImperativePlurNeg v = phrasePlease (ImpNeg (mkNP (ProDrop youPl_Pron)) v) ;
-
- ABePlace p place = mkCl p.name (mkVP (mkVP estar) place.at) ;
-
- WherePlace place = mkQS (mkQCl where_IAdv (mkCl place.name estar) ) ;
-
- WherePerson person = mkQS (mkQCl where_IAdv (mkCl person.name estar) ) ;
-
-oper
-
- estar = mkV (estar_2 "estar") ;
-
- CNPlace : Type = {name : CN ; at : Prep ; to : Prep } ;
-
- mkCNPlace : CN -> Prep -> Prep -> CNPlace = \p,i,t -> {
- name = p ;
- at = i ;
- to = t ;
- } ;
-
- OrdSuperlative : Type = {ord: Ord ; isPre: Bool} ;
-
- placeNPSuperl : OrdSuperlative -> CNPlace -> NPPlace = \sup,kind -> case sup.isPre of {
- True => placeNPDet sup.ord kind ;
- False => placeNPAdj sup.ord kind
- } ;
-
- -- "el mejor aeropuerto"
- placeNPDet : Ord -> CNPlace -> NPPlace = \ord,kind ->
- let name : NP = mkNP (mkDet the_Art ord) kind.name in {
- name = name ;
- at = SyntaxSpa.mkAdv kind.at name ;
- to = SyntaxSpa.mkAdv kind.to name ;
- };
-
- -- "el aeropuerto más grande"
- placeNPAdj : Ord -> CNPlace -> NPPlace = \ord,kind ->
- let name : NP = mkNP the_Art (mkCN kind.name (mkAP ord)) in {
- name = name ;
- at = SyntaxSpa.mkAdv kind.at name ;
- to = SyntaxSpa.mkAdv kind.to name ;
- };
-}
diff --git a/examples/phrasebook/SentencesSwe.gf b/examples/phrasebook/SentencesSwe.gf
deleted file mode 100644
index 9e3ae577f..000000000
--- a/examples/phrasebook/SentencesSwe.gf
+++ /dev/null
@@ -1,14 +0,0 @@
-concrete SentencesSwe of Sentences = NumeralSwe ** SentencesI - [
- PYesToNo, NameNN,
- DrinkNumber -- should be utrum gender when countable
- ] with
- (Syntax = SyntaxSwe),
- (Symbolic = SymbolicSwe),
- (Lexicon = LexiconSwe) ** open Prelude, SyntaxSwe, (P = ParadigmsSwe) in {
-
- lin
- PYesToNo = mkPhrase (lin Utt (ss "jo")) ;
- NameNN = mkNP (P.mkPN "NN") ;
- DrinkNumber n d = mkNP n (mkCN (P.mkN [] [] [] [] P.utrum) (lin Adv (mkUtt d))) ; --- empty classifier - quite a hack...
-
-}
diff --git a/examples/phrasebook/SentencesTha.gf b/examples/phrasebook/SentencesTha.gf
deleted file mode 100644
index ea5d7fbe9..000000000
--- a/examples/phrasebook/SentencesTha.gf
+++ /dev/null
@@ -1,26 +0,0 @@
-concrete SentencesTha of Sentences = NumeralTha ** SentencesI - [
- PGreetingMale, PGreetingFemale,
- GObjectPlease,
- IMale, YouFamMale, YouFamFemale,
- ACitizen
- ] with
- (Syntax = SyntaxTha),
- (Symbolic = SymbolicTha),
- (Lexicon = LexiconTha) ** open SyntaxTha, (P = ParadigmsTha), (R = ResTha) in {
-
-flags coding=utf8 ;
-lin
- PGreetingMale g = mkText (lin Text g) (lin Text (ss "ครับ")) | g ;
- PGreetingFemale g = mkText (lin Text g) (lin Text (ss "ค่ะ")) | g ;
-
- GObjectPlease o =
- lin Text (mkPhr (lin PConj (ss "ขอ")) (mkUtt o) (lin Voc (ss "หน่อย"))) | lin Text (mkUtt o) ;
-
- ACitizen p n = mkCl p.name (mkVP (mkCN n (P.personN R.khon_s))) ;
-
- IMale = mkPerson (R.mkNP "ผม") ;
- YouFamMale, YouFamFemale = mkPerson (R.mkNP "เธอ") ;
-
-oper
- thpron = R.thpron ;
-}
diff --git a/examples/phrasebook/SentencesUrd.gf b/examples/phrasebook/SentencesUrd.gf
deleted file mode 100644
index f94c0cdc9..000000000
--- a/examples/phrasebook/SentencesUrd.gf
+++ /dev/null
@@ -1,36 +0,0 @@
-concrete SentencesUrd of Sentences = NumeralUrd ** SentencesI - [sing,IFemale,YouFamFemale,YouPolFemale,MMust,YouPlurFamFemale,YouPlurPolFemale,YouFamMale] with
- (Syntax = SyntaxUrd),
- (Symbolic = SymbolicUrd),
- (Lexicon = LexiconUrd) **
- open
- (P=ParadigmsUrd),
- ParamX,
- CommonHindustani in {
- lin IFemale = mkPerson (P.personalPN myN mjh "" myra myry myrE myry Sg Fem Pers1) ;
- YouFamMale = mkPerson (P.personalPN tum tum tum tumhara tumhary tumharay tumhary Pl Masc Pers2_Familiar) ;
- YouFamFemale = mkPerson (P.personalPN tum tum tum tyra tyry tyrE tyry Pl Fem Pers2_Familiar) ;
- YouPolFemale = mkPerson (P.personalPN ap ap ap apka apky apkE apky Pl Fem Pers2_Respect);
- YouPlurFamFemale = mkPerson (P.personalPN tum tum tum tumhara tumhary tumharay tumhary Pl Fem Pers2_Familiar) ;
- YouPlurPolFemale = mkPerson (P.personalPN ap ap ap apka apky apkE apky Pl Fem Pers2_Respect) ;
-
-flags coding = utf8 ;
-
-oper
- myN = "میں" ;
- mjh = "مجھ" ;
- myra = "میرا" ;
- myry = "میری" ;
- myrE = "میرے" ;
- tw = "تو" ;
- tum = "تم" ;
- tyra = "تیرا" ;
- tyry = "تیری" ;
- tyrE = "تیرے" ;
- tumhara = "تمھارا" ;
- tumhary = "تمھاری" ;
- tumharay = "تمھارے" ;
- ap = "آپ" ;
- apka = ["آپ كا"] ;
- apky = ["آپ كی"] ;
- apkE = ["آپ كے"] ;
- } ;
diff --git a/examples/phrasebook/Update.hs b/examples/phrasebook/Update.hs
deleted file mode 100644
index 3d9232d61..000000000
--- a/examples/phrasebook/Update.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-import System
-
-main = do
- file:_ <- getArgs
- updates <- readFile file >= return . readUpdates
- mapM_ (doUpdate file) updates
- return ()
-
-type Update = (FilePath, [String])
-
-readUpdates :: String -> [Update]
-readUpdates s = []
-
-doUpdate :: FilePath -> Update -> IO ()
-doUpdate src (target,ls) = do
- s <- readFile target
- let beg = dropLastBracket s
- let tmp = tmpFile target
- writeFile tmp beg
- appendFile tmp $ unlines [(line ++ "-- UPDATE FROM " ++ src) | line <- ls]
- appendFile tmp "\n}\n"
-
-tmpFile file = "tmp-update/"++ file
-
----- quick and dirty
-dropLastBracket = reverse . init . dropWhile (/='}') . reverse
-
diff --git a/examples/phrasebook/Words.gf b/examples/phrasebook/Words.gf
deleted file mode 100644
index 08704990a..000000000
--- a/examples/phrasebook/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/examples/phrasebook/WordsBul.gf b/examples/phrasebook/WordsBul.gf
deleted file mode 100644
index 18772fa7d..000000000
--- a/examples/phrasebook/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.a.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/examples/phrasebook/WordsCat.gf b/examples/phrasebook/WordsCat.gf
deleted file mode 100644
index 63383edaf..000000000
--- a/examples/phrasebook/WordsCat.gf
+++ /dev/null
@@ -1,302 +0,0 @@
--- (c) 2010 Aarne Ranta and Olga Caprotti under LGPL
---# -coding=latin1
-
-concrete WordsCat of Words = SentencesCat ** open
- SyntaxCat,
- BeschCat,
- (E = ExtraCat),
- (L = LexiconCat),
- (P = ParadigmsCat),
- (S = SyntaxCat),
- ParadigmsCat,
- Prelude in {
-
-lin
-
--- kinds
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN (mkN "formatge") ;
- Chicken = mkCN (mkN "pollastre") ;
- Coffee = mkCN (mkN "caf") ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "carn" feminine) ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "pizza") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "te") ;
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
--- properties
-
- Bad = L.bad_A ;
- Boring = mkA "avorrit" ;
- Cheap = cheap_A ;
- Cold = L.cold_A ;
- Delicious = mkA "delicis" ;
- Expensive = expensive_A ;
- Fresh = mkA "fresc" ;
- Good = L.good_A ;
- Suspect = mkA "sospits" ;
- Warm = mkA "calent" ;
-
--- places
-
-lin
- Airport = mkPlace (mkN "aeroport") ;
- AmusementPark = mkPlace (mkN "parc d' atraccions") ;
- Bank = mkPlace (mkN "banc") ;
- Bar = mkPlace (mkN "bar") ;
- Cafeteria = mkPlace (mkN "cafeteria") ;
- Center = mkPlace (mkN "centre") ;
- Cinema = mkPlace (mkN "cinema" masculine) ;
- Church = mkPlace (mkN "esglsia") ;
- Disco = mkPlace (mkN "discoteca") ;
- Hospital = mkPlace (mkN "hospital") ;
- Hotel = mkPlace (mkN "hotel") ;
- Museum = mkPlace (mkN "museu") ;
- Park = mkPlace (mkN "parc") ;
- Parking = mkPlace (mkN "aparcament" masculine) ;
- Pharmacy = mkPlace (mkN "farmcia") ;
- PostOffice = mkPlace (mkN "oficina de correus" feminine) ;
- Pub = mkPlace (mkN "pub" masculine) ;
- Restaurant = mkPlace (mkN "restaurant") ;
- School = mkPlace (mkN "escola") ;
- Shop = mkPlace (mkN "tenda") ;
- Station = mkPlace (mkN "estaci" feminine) ;
- Supermarket = mkPlace (mkN "supermercat" masculine) ;
- Theatre = mkPlace (mkN "teatre") ;
- Toilet = mkPlace (mkN "lavabo") ;
- University = mkPlace (mkN "universitat" feminine) ;
- Zoo = mkPlace (mkN "zoo" masculine) ;
-
- CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurant")) dative dative ;
-
--- currencies
-oper corona : A -> CN = \adj ->
- let corona_N = (mkN "corona")
- in mkCN adj corona_N | mkCN corona_N ;
-lin
- DanishCrown = corona (mkA "dans" "danesa" "danesos" "daneses" "a la danesa") ;
- Dollar = mkCN (mkN "dlar") ;
- Euro = mkCN (mkN "euro" masculine) ;
- Lei = mkCN (mkN "leu" "lei" masculine) ;
- Leva = mkCN (mkN "lev" "lev" masculine) ;
- NorwegianCrown = corona (mkA "noruec" "noruega" "noruecs" "noruegues" "a la noruega") ;
- Pound = mkCN (mkN "lliura") ;
- Rouble = mkCN (mkN "ruble") ;
- SwedishCrown = corona (mkA "suec" "sueca" "suecs" "sueques" "a la sueca") ;
- Zloty = mkCN (mkN "zloty" "zloty" masculine) ;
-
--- nationalities
-
- Belgian = mkA "belga" "belga" "belgues" "belgues" "a la Belga" ;
- Belgium = mkNP (mkPN "Blgica") ;
- Bulgarian = mkNat3 "blgar" "blgara" "blgars" "blgueres" "Bulgria" ;
- Catalan = mkNat5 "catal" "Catalunya" ;
- Danish = mkNat4 "dan" "Dinamarca" ;
- Dutch = mkNat4 "holand" "Holanda" ;
- English = mkNat4 "angl" "Anglaterra" ;
- Finnish = mkNat4 "fin" "Finlndia" ;
- Flemish = mkNP (mkPN "flamenc") ;
- French = mkNat4 "franc" "Frana" ;
- German = mkNat3 "alemany" "alemanya" "alemanys" "alemanyes" "Alemania" ;
- Italian = mkNat5 "itali" "Itlia" ;
- Norwegian = mkNat3 "noruec" "noruega" "noruecs" "noruegues" "Noruega" ;
- Polish = mkNat4 "polon" "Polnia" ;
- Romanian = mkNat4 "roman" "Romania" ;
- Russian = mkNat3 "rus" "russa" "russos" "russes" "Rssia" ;
- Spanish = mkNat3 "espanyol" "espanyola" "espanyols" "espanyoles" "Espanya" ;
- Swedish = mkNat3 "suec" "sueca" "suecs" "sueques" "Sucia" ;
-
-
--- means of transportation
-
- Bike = mkTransport (mkN "bici" feminine) ;
- Bus = mkTransport (mkN "autobs" "autobusos" masculine) ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "ferri" masculine) ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN "metro") ;
- Taxi = mkTransport (mkN "taxi" masculine) ;
- Train = mkTransport (mkN "tren" masculine) ;
- Tram = mkTransport (mkN "tramvia" masculine) ;
-
- ByFoot = P.mkAdv "a peu" ;
-
--- actions
-
- AHasAge p num = mkCl p.name have_V2 (mkNP num L.year_N) ;
- AHasChildren p num = mkCl p.name have_V2 (mkNP num (mkN "fill" masculine)) ;
- AHasName p name =
- let dir = mkV (dir_41 "dir")
- in mkCl p.name (mkV2 (reflV dir)) name ;
- AHasRoom p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "habitaci" feminine)) (SyntaxCat.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "taula")) (SyntaxCat.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
- AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "gana" feminine))) ;
- AIll p = mkCl p.name stateCopula (mkAP (mkA "malalt")) ;
- AKnow p =
- let saber = mkV (saber_99 "saber")
- in mkCl p.name saber ;
- ALike p item = mkCl item (mkV2 (mkV "agradar") dative) p.name ;
- ALive p co =
- let viure = mkV (viure_119 "viure")
- in mkCl p.name (mkVP (mkVP viure) (SyntaxCat.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name (mkV2 (mkV "estimar")) q.name ;
- AMarried p = mkCl p.name stateCopula (mkAP (mkA "casat")) ;
- AReady p = mkCl p.name stateCopula (mkAP (mkA "preparat")) ;
- AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "por" feminine))) ;
- ASpeak p lang = mkCl p.name (mkV2 (mkV "parlar")) lang ;
- AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "set" feminine))) ;
- ATired p = mkCl p.name stateCopula (mkAP (mkA "cansat")) ;
- AUnderstand p = mkCl p.name (mkV "entendre") ;
- AWant p obj =
- let voler = mkV (voler_120 "voler")
- in mkCl p.name (mkV2 voler) obj ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
-
-
--- miscellaneous
-
- QWhatAge p = mkQS (mkQCl (mkIP how8many_IDet L.year_N) p.name have_V2) ;
- QWhatName p =
- let dir = mkV (dir_41 "dir")
- in mkQS (mkQCl how_IAdv (mkCl p.name (reflV dir))) ;
- HowMuchCost item =
- let valer = mkV (valer_114 "valer")
- in mkQS (mkQCl how8much_IAdv (mkCl item valer)) ;
- ItCost item price =
- let valer = mkV (valer_114 "valer")
- in mkCl item (mkV2 valer) price ;
- PropOpen p = mkCl p.name stateCopula (mkAP open_A) ;
- PropClosed p = mkCl p.name stateCopula (mkAP closed_A) ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP stateCopula (mkAP open_A)) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP stateCopula (mkAP closed_A)) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("a reveure")))
- (mkText (mkPhrase (mkUtt d)) (mkPhrase (mkUtt p.at))) ;
- PSeeYouPlace p = mkText (lin Text (ss ("fins aviat"))) (mkPhrase (mkUtt p.at)) ;
--- PSeeYou d = mkText (lin Text (ss ("fins aviat"))) (mkPhrase (mkUtt d)) ;
- PSeeYouDate d = mkText (lin Text (ss ("a reveure"))) (mkPhrase (mkUtt d)) ;
-
--- family relations
-
- Wife = xOf sing (mkN "dona") ;
- Husband = xOf sing (mkN "marit") ;
- Son = xOf sing (mkN "fill") ;
- Daughter = xOf sing (mkN "filla") ;
- Children = xOf plur (mkN "fill") ;
-
--- week days
-
- Monday = mkDay "dilluns" ;
- Tuesday = mkDay "dimarts" ;
- Wednesday = mkDay "dimecres" ;
- Thursday = mkDay "dijous" ;
- Friday = mkDay "divendres" ;
- Saturday = mkDay "dissabte" ;
- Sunday = mkDay "diumenge" ;
-
- Tomorrow = P.mkAdv "dem" ;
-
-
--- transports
-
- --a quina distncia est PLACE
- HowFar place = mkQS (mkQCl what_distance_IAdv (mkCl place.name placeCopula) );
-
- HowFarFrom x y = mkQS (mkQCl what_distance_IAdv
- (mkCl y.name (mkVP (mkVP placeCopula)
- (S.mkAdv from_Prep x.name))));
-
- HowFarFromBy x y t = mkQS (mkQCl what_distance_IAdv
- (mkCl y.name (mkVP
- (mkVP (mkVP placeCopula)
- (S.mkAdv from_Prep x.name))
- t)));
-
- HowFarBy y t = mkQS (mkQCl what_distance_IAdv
- (mkCl y.name (mkVP (mkVP placeCopula) 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 (SyntaxCat.mkAdv to_Prep place.name)))) ;
-
--- modifiers of places
- TheBest = mkSuperl L.good_A True ;
- TheClosest = mkSuperl L.near_A False;
- TheCheapest = mkSuperl cheap_A False ;
- TheMostExpensive = mkSuperl expensive_A False ;
- TheMostPopular = mkSuperl (mkA "popular" "popular" "populars" "populars" "popularment") False ;
- TheWorst = mkSuperl L.bad_A True ;
- SuperlPlace sup p = placeNPSuperl sup p ;
-
--- auxiliaries
-
- oper
-
- mkSuperl : A -> Bool -> OrdSuperlative = \a,bool ->
- let ord : Ord = S.mkOrd a in {
- ord = ord ;
- isPre = bool ;
- } ;
-
- desde_Prep = mkPrep "des de" ;
- fins_Prep = mkPrep "fins a" ;
-
- what_distance_IAdv = ss "a quina distncia"**{lock_IAdv=<>};
-
- placeCopula = mkV (estar_54 "estar") ;
-
- mkNat : Str -> Str -> NPNationality = \nat,co ->
- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
-
- mkNat2 : A -> Str -> Str -> NPNationality = \adj,nat,co ->
- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) adj ;
-
- mkNat3 : (_,_,_,_:Str) -> Str -> NPNationality = \ms,fs,mp,fp,co ->
- mkNPNationality (mkNP (mkPN ms)) (mkNP (mkPN co)) (mkA ms fs mp fp ("a la" ++ fs)) ;
-
- mkNat4 : Str -> Str -> NPNationality = \angl,co ->
- mkNat3 (angl+"s") (angl+"esa") (angl+"esos") (angl+"eses") co ;
-
- mkNat5 : Str -> Str -> NPNationality = \catal,co ->
- mkNat3 (catal+"") (catal+"ana") (catal+"ans") (catal+"anes") co ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day = mkNP (mkPN d)
- in
- case last d of {
- "s" => mkNPDay day (P.mkAdv ("el" ++ d)) (P.mkAdv ("els" ++ d)) ;
- _ => mkNPDay day (P.mkAdv ("el" ++ d)) (P.mkAdv ("els" ++ d + "s"))
- } ;
-
- mkPlace : N -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p ->
- mkCNPlace (mkCN p) dative dative ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = S.mkAdv with_Prep (mkNP n)
- } ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
-
- stateCopula = mkVA (mkV (estar_54 "estar")) ;
- open_A = mkA "obert" ;
-
- closed_A = mkA "tancat" ;
-
- cheap_A = mkA "barat" "barata" ;
-
- expensive_A = mkA "car" ;
-}
-
-
diff --git a/examples/phrasebook/WordsChi.gf b/examples/phrasebook/WordsChi.gf
deleted file mode 100644
index 5b9baeb73..000000000
--- a/examples/phrasebook/WordsChi.gf
+++ /dev/null
@@ -1,334 +0,0 @@
-concrete WordsChi of Words = SentencesChi **
-open
-SyntaxChi,
-ParadigmsChi,
-(P = ParadigmsChi),
-(R = ResChi),
-(L = LexiconChi),
-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 L.cheese_N ;
-Chicken = mkCN (mkN "鸡" "只" ) ;
-Coffee = mkCN (mkN "咖啡" ) ;
-Fish = mkCN L.fish_N ;
-Meat = mkCN L.meat_N ;
-Milk = mkCN L.milk_N ;
-Pizza = mkCN (mkN "比萨饼") ;
-Salt = mkCN L.salt_N ;
-Tea = mkCN (mkN "茶" ) ;
-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 = mkA "难吃" ;
-Cheap = (mkA "廉价" ) ;
-Cold = L.cold_A ;
-Delicious = mkA "美味" ;
-Expensive = (mkA "昂贵" ) ;
-Fresh = (mkA "新鲜" ) ;
-Good = (mkA "好" ) ;
-Suspect = mkA "可疑" ;
-Warm = (mkA "热") ; -- 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 (( (mkN "机场" ) )) ;
-AmusementPark = mkPlace (mkN "游乐园") ;
-Bank = mkPlace (( (L.bank_N ) )) ;
-Bar = mkPlace (( (mkN "酒吧" ) )) ;
-Cafeteria = mkPlace (( (L.bank_N ) )) ;
-Center = mkPlace (mkN "中心") ;
-Cinema = mkPlace (mkN "电影院") ;
-Church = mkPlace (L.church_N ) ;
-Disco = mkPlace (mkN "迪斯科") ;
-Hospital = mkPlace (mkN "医院" ) ;
-Hotel = mkPlace (mkN "旅馆" ) ;
-Museum = mkPlace (mkN "博物馆" ) ;
-Park = mkPlace (mkN "公园" ) ;
-Parking = mkPlace (mkN "停车场") ;
-Pharmacy = mkPlace (mkN "药店") ;
-PostOffice = mkPlace (mkN "邮局") ;
-Pub = mkPlace (mkN "酒吧") ;
-Restaurant = mkPlace L.restaurant_N ;
-School = mkPlace L.school_N ;
-Shop = mkPlace L.shop_N ;
-Station = mkPlace (mkN "车站" ) ;
-Supermarket = mkPlace (mkN "超级市场" "家" ) ;
-Theatre = mkPlace (mkN "剧院") ;
-Toilet = mkPlace (mkN "厕所" ) ;
-University = mkPlace L.university_N ;
-Zoo = mkPlace (mkN "动物园") ;
-
-CitRestaurant cit = mkCNPlace (mkCN cit L.restaurant_N) at_Prep noPrep ;
-
-
--- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
-
-Dollar = mkCN (mkN "美元") ;
-DanishCrown = mkCN (mkN "丹麦克朗") ;
-Euro = mkCN (mkN "欧元") ;
-Lei = mkCN (mkN "列弗") ;
-Leva = mkCN (mkN "列伊") ;
-Pound = mkCN (mkN "英镑") ;
-Rouble = mkCN (mkN "卢布") ;
-SwedishCrown = mkCN (mkN "瑞典克朗") ;
-Zloty = mkCN (mkN "兹罗提") ;
-NorwegianCrown = mkCN (mkN "挪威克朗") ;
-
--- Nationalities
-Belgian = mkA ( "比利时") ;
-Belgium = mkNP (mkPN "比利时" ) ;
-Bulgarian = mkNat "保加利亚语" "保加利亚" ;
-Catalan = mkNat "加泰罗尼亚语" "加泰罗尼亚" ;
-Danish = mkNat "丹麦语" "丹麦" ;
-Dutch = mkNat "荷兰语" "荷兰" ;
-English = mkNat "英语" "英国" ;
-Finnish = mkNat "芬兰语" "芬兰" ;
-Flemish = mkNP (mkPN "佛兰德语") ;
-French = mkNat "法语" "法国" ;
-German = mkNat "德语" "德国" ;
-Italian = mkNat "意大利语" "意大利" ;
-Norwegian = mkNat "挪威语" "挪威";
-Polish = mkNat "波兰语" "波兰" ;
-Romanian = mkNat "罗马尼亚语" "罗马尼亚" ;
-Russian = mkNat "俄语" "俄罗斯" ;
-Spanish = mkNat "西班牙语" "西班牙" ;
-Swedish = mkNat "瑞典语" "瑞典" ;
-Chinese = mkNat "汉语" "中国" ;
-
--- Means of transportation
-
-Bike = mkTransport L.bike_N (mkV "骑") ;
-Bus = mkTransport (mkN "公共汽车" ) (mkV "乘") ;
-Car = mkTransport L.car_N (mkV "开") ;
-Ferry = mkTransport (mkN "渡船") (mkV "乘") ;
-Plane = mkTransport L.airplane_N (mkV "坐") ;
-Subway = mkTransport (mkN "地铁") (mkV "坐") ;
-Taxi = mkTransport (mkN "出租车") (mkV "乘") ;
-Train = mkTransport L.train_N (mkV "乘") ;
-Tram = mkTransport (mkN "电车") (mkV "乘") ;
-
-ByFoot = P.mkAdv ("步行") ;
-
--- Actions: the predication patterns are very often language-dependent.
-
-
-AHasAge p nu = mkCl (lin NP {s = p.name.s ++ nu.s}) (mkV "岁") ; ----
-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 (mkN "房间" ) ) (SyntaxChi.mkAdv for_gei_Prep (mkNP num (L.person_N ) ))) ;
-AHasTable p num = mkCl p.name have_V2
-(mkNP (mkNP a_Det L.table_N ) (SyntaxChi.mkAdv for_gei_Prep (mkNP num (L.person_N ) ))) ;
-AHasName p name = mkCl p.name (mkV2 "叫") name ;
--- AHungry p = mkCl p.name (mkA "饿") ;
-AHungry p = mkCl p.name (mkV "饿了") ;
--- AIll p = mkCl p.name (mkA "生病" ) ;
-AIll p = mkCl p.name (mkV "生病了") ;
-AKnow p = mkCl p.name ;
-ALike p item = mkCl p.name (L.like_V2 ) item ;
-ALive p co = mkCl p.name (mkV2 (mkV "住")) co ;
-ALove p q = mkCl p.name L.love_V2 q.name ;
-AMarried p = mkCl p.name (mkA "已婚") ;
-AReady p = mkCl p.name L.ready_A ;
--- AReady p = mkCl p.name (mkV "准备好了") ;
-AScared p = mkCl p.name (mkA "惊慌") ;
-ASpeak p lang = mkCl p.name L.speak_V2 lang ;
--- AThirsty p = mkCl p.name (mkA "渴") ;
-AThirsty p = mkCl p.name (mkV "渴了") ;
--- ATired p = mkCl p.name (mkA "累") ;
-ATired p = mkCl p.name (lin V (mkV "累了")) ;
-AUnderstand p = mkCl p.name (lin V (mkV "理解" ) ) ;
-AWant p obj = mkCl p.name (mkV2 "要") obj ;
-AWantGo p place = mkCl p.name want_VV (mkVP L.go_V place.name) ;
-
--- LangNat l = l.lang ; -- ++ "语" ;
--- miscellaneous
-
- QWhatName p = lin QS {s = \\_ => p.name.s ++ R.word "贵姓"} ; ---
- QWhatAge p = lin QS {s = \\_ => p.name.s ++ R.word "几岁"} | lin QS {s = \\_ => p.name.s ++ R.word "多大"} ; ---
- HowMuchCost item = lin QS {s = \\_ => item.s ++ R.word "是多少钱"} ;
-ItCost item price = mkCl item (mkV2 "是") price ;
-
-PropOpen p = mkCl p.name (mkA "开放" ) ;
-PropClosed p = mkCl p.name closed_A ;
-PropOpenDate p d = mkCl p.name (mkVP (mkVP (mkA "开放" ) ) d) ;
-PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
-PropOpenDay p d = mkCl p.name (mkVP (mkVP (mkA "开放" ) ) d.habitual) ;
-PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
-
-
-
--- PropCit c = lin A { s = c.s ; lock_A = <>; monoSyl = True } ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
-PSeeYouDate d = lin Text (ss (d.s ++ "见")) ;
-PSeeYouPlace p = lin Text (ss (p.at.s ++ "见")) ; ---
-PSeeYouPlaceDate p d = lin Text (ss (d.s ++ p.at.s ++ "见")) ; ----
-
--- Relations are expressed as "มย วิฝเ" or "มย สoณส วิฝเ", as defined by $xOf$
--- below. Languages without productive genitives must use an equivalent of
--- "ตหเ วิฝเ oฝ มย สoน" for non-pronouns.
-
-Wife = xOf (L.wife_N ) ;
-Husband = xOf (L.husband_N ) ;
-Wife = xOf (L.wife_N ) ;
-Son = xOf (mkN "儿子" ) ;
-Daughter = xOf (mkN "女儿" ) ;
-Children = xOf L.child_N ; ----
-
--- week days
-
-Monday = mkDay "星期一" ;
-Tuesday = mkDay "星期二" ;
-Wednesday = mkDay "星期三" ;
-Thursday = mkDay "星期四" ;
-Friday = mkDay "星期五" ;
-Saturday = mkDay "星期六" ;
-Sunday = mkDay "星期日" ;
-
-Tomorrow = ParadigmsChi.mkAdv "明天" ;
-
--- modifiers of places
-
-TheBest = mkSuperl L.good_A ;
-TheClosest = mkSuperl L.near_A ;
-TheCheapest = mkSuperl (mkA "廉价" ) ;
-TheMostExpensive = mkSuperl (mkA "昂贵" ) ;
-TheMostPopular = mkSuperl (mkA "流行" ) ;
-TheWorst = mkSuperl L.bad_A ;
-
-SuperlPlace sup p = placeNP sup p ;
-
-
--- transports
-
-HowFar place = lin QS {s = \\_ => place.name.s ++ R.word "有多远"} ;
-
-
-
-
-HowFarFrom x y = lin QS {s = \\_ => "从" ++ x.name.s ++ "到" ++ y.name.s ++ R.word "有多远"} ; ----
-
--- HowFarFromBy x y t =
--- mkQS (mkQCl howFar.how (mkCl (mkNP y.name howFar.far)
--- (lin AP (R.thbind from_Prep (mkNP x.name t))))) ;
--- mkQS (mkQCl howFar.how (mkCl (mkNP y.name howFar.far)
--- (SyntaxChi.mkAdv from_Prep (mkNP x.name t)))) ;
-
-
-
-HowFarBy y t = lin QS {s = \\_ => t.s ++ "到" ++ y.name.s ++ R.word "有多远" } ;
-
-
-WhichTranspPlace trans place =
- mkQS (mkQCl (mkIP which_IDet trans.name)(mkVP (mkV2 "去") place.name)) ;
-
-
-IsTranspPlace trans place =
- mkQS (mkQCl (mkCl (R.mkNP ( L.go_V.s ++ place.name.s ++ "的" ++ trans.name.s) ))) ;
-
-
-
--- auxiliaries
-
-oper
-
-mkNat : Str -> Str -> NPNationality = \lang, co -> mkNPNationality (mkNP (mkPN lang)) (mkNP (mkPN co)) (mkA co) ;
-
-mkDay : Str -> {name : NP ; point : SyntaxChi.Adv ; habitual : SyntaxChi.Adv} = \d ->
-let day = mkNP (mkPN d) in
-mkNPDay day (SyntaxChi.mkAdv noPrep day)
-(SyntaxChi.mkAdv noPrep (mkNP (mkCN (mkN d)))) ;
-
-mkPlace : N -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p ->
-mkCNPlace (mkCN p) at_Prep noPrep ;
-
-placeN : Str -> N = \s -> mkN s "间" ;
-
-closed_A = P.mkA "关闭" ;
-closed_or_not_A = P.mkA "不是关闭" ;
-
-xOf : N -> NPPerson -> NPPerson = \f,p ->
-{name = mkNP the_Det (mkCN f (SyntaxChi.mkAdv possess_Prep p.name)) ;
-isPron = False ; poss = the_Quant} ; ---- poss not used
-
-by_Prep = mkPrep "乘" [] mannerAdvType ;
-
-mkTransport : N -> V -> {name : CN ; by : SyntaxChi.Adv ; way : V } = \n,m -> {
-name = mkCN n ;
--- by = SyntaxChi.mkAdv by8means_Prep (mkNP n);
-by = SyntaxChi.mkAdv by_Prep (mkNP n) ;
-way = m;
-} ;
-
-mkSuperl : A -> Det = \a -> SyntaxChi.mkDet the_Art ({s = ResChi.superlative_s ++ a.s ++ R.word "的那"}) ; -- (SyntaxChi.mkOrd a) ;
-
--- mkCurrency : Str -> CN = \s -> mkCN (mkN [] s) ; ---- just a classifier
-
-
-at_Prep = (mkPrep "在" ) ;
-noPrep = mkPrep [] ;
-for_gei_Prep = mkPrep "给" ;
---------------------------------------------------
--- New 30/11/2011 AR
---------------------------------------------------
-
-lin
-Thai = mkNat "泰国" "泰语" ;
-Baht = mkCN (mkN "泰铢") ;
-
-Rice = mkCN (mkN ("米饭")) ;
-Pork = mkCN (mkN ("猪肉")) ;
-Beef = mkCN (mkN ("牛肉")) ;
-Egg = mkCN L.egg_N ;
-Noodles = mkCN (mkN "面条") ;
-Shrimps = mkCN (mkN "虾") ;
-Chili = mkCN (mkN "辣椒") ;
-Garlic = mkCN (mkN "大蒜") ;
-Durian = mkCN (mkN "榴莲") ;
-Mango = mkCN (mkN "芒果") ;
-Pineapple = mkCN (mkN "菠萝") ;
-Coke = mkCN (mkN ("可乐")) ;
-IceCream = mkCN (mkN "冰激凌") ;
-Salad = mkCN (mkN "色拉") ;
-OrangeJuice = mkCN (mkN "橙汁") ;
-Lemonade = mkCN (mkN "柠檬汁") ;
-Beach = mkPlace (placeN "海滩") ;
-
-ItsRaining = mkCl (mkVP L.rain_V0) ;
-ItsCold = mkCl (mkVP L.cold_A) ;
-ItsWarm = mkCl (mkVP L.warm_A) ;
-ItsWindy = mkCl (mkVP (P.mkA ("有风"))) ;
-SunShine = mkCl (mkNP the_Det L.sun_N) (mkA "很大") ;
-
-Smoke = mkVP (P.mkV ( "吸烟" )) ;
-
-ADoctor = mkProfession (mkN "医生") ;
-AProfessor = mkProfession (mkN "教授") ;
-ALawyer = mkProfession (mkN "律师") ;
-AEngineer = mkProfession (mkN "工程师") ;
-ATeacher = mkProfession (mkN "教师") ;
-ACook = mkProfession (mkN "厨师") ;
-AStudent = mkProfession (mkN "学生") ;
-ABusinessman = mkProfession (mkN "商人") ;
-
-oper
- mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
-
-
-}
diff --git a/examples/phrasebook/WordsDan.gf b/examples/phrasebook/WordsDan.gf
deleted file mode 100644
index dbacd8511..000000000
--- a/examples/phrasebook/WordsDan.gf
+++ /dev/null
@@ -1,260 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
---# -coding=latin1
-
-concrete WordsDan of Words = SentencesDan **
- open SyntaxDan, ParadigmsDan, IrregDan, (L = LexiconDan), ExtraDan, StructuralDan, Prelude in {
-
- lin
-
--- kinds of food
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN (mkN "ost" "osten" "oste" "ostene") ;
- Chicken = mkCN (mkN "kylling" "kyllingen" "kyllinger" "kyllingerne") ;
- Coffee = mkCN (mkN "kaffe" "kaffen" "kaffe" "kaffe") ; -- den kaffe
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "kd" "kdet" "kd" "kdet") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "pizza" "pizzaen" "pizzaer" "pizzaerne") ; -- den pizza
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "te" "teen" "teer" "teerne") ; -- den te
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
--- properties
-
- Bad = L.bad_A ;
- Cheap = mkA "billig" ;
- Boring = mkA "kedelig" ;
- Cold = L.cold_A ;
- Delicious = mkA "lkker" ;
- Expensive = mkA "dyr" ; -- or dyrt
- Fresh = mkA "frisk" ;
- Good = L.good_A ;
- Suspect = mkA "mistnkelig" ;
- Warm = L.warm_A ;
-
--- places
-
-
- Airport = mkPlace (mkN "lufthavnen" "lufthavnen" "lufthavne" "lufthavnene") "i" ;
- AmusementPark = mkPlace (mkN "forlystelsespark" "forlystelsesparken" "forlystelsesparker" "forlystelsesparker") "i" ;
- Bank = mkPlace (mkN "bank" "banken" "banke" "bankene") "i" ;
- Bar = mkPlace (mkN "bar" "baren" "barer" "barerne") "i" ;
- Cafeteria = mkPlace (mkN "cafeteria" "cafeteriet" "cafeterier" "cafeterierne") "i" ;
- Center = mkPlace (mkN "centrum" "centrum" "centrummer" "centrummerne") "i" ; -- all centrum ?
- Cinema = mkPlace (mkN "biograf" "biografen" "biografer" "biograferne") "i" ;
- Church = mkPlace (mkN "kirke" "kirken" "kirker" "kirkerne") "i" ;
- Disco = mkPlace (mkN "diskotek" "diskoteket" "diskoteker" "diskotekerne") "p" ;
- Hospital = mkPlace (mkN "hospital" "hospitalet" "hospitaler" "hospitalerne") "p" ;
-
- Hotel = mkPlace (mkN "hotel" "hotellet" "hoteller" "hotellerne") "p" ;
- Museum = mkPlace (mkN "museum" "museet" "museer" "museerne") "p" ;
- Park = mkPlace (mkN "park" "parken" "parker" "parkerne") "i" ;
- Parking = mkPlace (mkN "parkeringsplads" "parkeringspladsen" "parkeringspladser" "parkeringspladserne") "p" ;
- Pharmacy = mkPlace (mkN "apotek" "apoteket" "apoteker" "apotekerne") "p" ;
- PostOffice = mkPlace (mkN "posthus" "posthuset" "posthuse" "posthusene") "p" ;
- Pub = mkPlace (mkN "pub" "pubben" "pubber" "pubber") "p" ;
- Restaurant = mkPlace (mkN "restaurant" "restauranten" "restauranter" "restauranterne") "p" ;
- School = mkPlace (mkN "skole" "skolen" "skoler" "skolerne") "i" ;
- Shop = mkPlace (mkN "butik" "butikken" "butikker" "butikkerne") "i" ;
- Station = mkPlace (mkN "station" "stationen" "stationer" "stationerne") "p" ;
- Supermarket = mkPlace (mkN "supermarked" "supermarkedet" "supermarkeder" "supermarkederne") "i" ;
- Theatre = mkPlace (mkN "teater" "teatret" "teatre" "teatrene") "i" ;
- Toilet = mkPlace (mkN "toilet" "toilettet" "toiletter" "toiletterne") "p" ;
- University = mkPlace (mkN "universitet" "universitetet" "universiteter" "universiteterne") "p" ;
- Zoo = mkCNPlace (mkCN (mkA "zoologisk") (mkN "have")) in_Prep to_Prep ;
-
- CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurant")) (mkPrep "p") to_Prep ;
-
--- currencies
-
- DanishCrown = mkCN (mkA "dansk") (mkN "krone" "kronen" "kroner" "kronerne") | mkCN (mkN "krone" "kronen" "kroner" "kronerne") ;
- Dollar = mkCN (mkN "dollar" "dollaren" "dollar" "dollar") ; -- den dollar
- Euro = mkCN (mkN "euro" "euroen" "euro" "euroerne") ; -- den euro
- Lei = mkCN (mkN "leu" "leu" "lei" "lei") ; -- det leis ?
- Leva = mkCN (mkN "lev" "lev" "leva" "leva") ; -- det leva ?
- NorwegianCrown = mkCN (mkA "norsk") (mkN "krone" "kronen" "kroner" "kronerne") | mkCN (mkN "krone" "kronen" "kroner" "kronerne") ;
- Pound = mkCN (mkN "pund" "pundet" "pund" "pundene") ; -- det pund
- Rouble = mkCN (mkN "rubel" "rublen" "rubler" "rublerne") ; -- den rubel
- SwedishCrown = mkCN (mkA "svensk") (mkN "krone" "kronen" "kroner" "kronerne") | mkCN (mkN "krone" "kronen" "kroner" "kronerne") ;
- Zloty = mkCN (mkN "zloty" "zloty" "zloty" "zloty") ; -- det zloty ?
-
--- nationalities
-
-
- Belgian = mkA "belgisk" ;
- Belgium = mkNP (mkPN "Belgien") ;
- Bulgarian = mkNat "bulgarsk" "Bulgarien" ;
- Catalan = mkNPNationality (mkNP (mkPN "catalansk")) (mkNP (mkPN "Catalonien")) (mkA "catalonsk") ;
- Danish = mkNat "dansk" "Danmark" ;
- Dutch = mkNat "hollandsk" "Holland" ;
- English = mkNat "engelsk" "England" ;
- Finnish = mkNat "finsk" "Finland" ;
- Flemish = mkNP (mkPN "flamsk") ;
- French = mkNat "fransk" "Frankrig" ;
- German = mkNat "tysk" "Tyskland" ;
- Italian = mkNat "italiensk" "Italien" ;
- Norwegian = mkNat "norsk" "Norge" ;
- Polish = mkNat "polsk" "Polen" ;
- Romanian = mkNat "rumnsk" "Rumnien" ;
- Russian = mkNat "russisk" "Russland" ;
- Spanish = mkNat "spansk" "Spanien" ;
- Swedish = mkNat "svensk" "Sverige" ;
-
-
-
--- Means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN "bus" "bussen" "busser" "busserne") ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "frge" "frgen" "frger" "frgerne") ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN "undergrundsbane" "undergrundsbanen" "undergrundsbaner" "undergrundsbanerne") ;
- Taxi = mkTransport (mkN "taxa") ;
- Train = mkTransport (mkN "tog" "toget" "tog" "togene") ;
- Tram = mkTransport (mkN "sporvogn" "sporvognen" "sporvogne" "sporvognene") ;
-
- ByFoot = ParadigmsDan.mkAdv "til fods" ;
-
-
-
-
--- actions
-
- AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
- AHasName p name = mkCl p.name (mkV2 (mkV "hedde")) name ;
- 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 (mkN "vrelse" "vrelset" "vrelser" "vrelserne"))
- (SyntaxDan.mkAdv to_Prep (mkNP num (mkN "person" "personen" "personer" "personerne")))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "bord"))
- (SyntaxDan.mkAdv to_Prep (mkNP num (mkN "person" "personen" "personer" "personerne")))) ;
- AHungry p = mkCl p.name (mkA "sulten" "sultet" "sultne") ;
- AIll p = mkCl p.name (mkA "syg") ;
- AKnow p = mkCl p.name vide_V ;
- ALike p item = mkCl p.name (mkV2 holde_V (mkPrep "af")) item ;
- ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxDan.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name (dirV2 (regV "elske")) q.name ;
- AMarried p = mkCl p.name (mkA "gift") ;
- AReady p = mkCl p.name (mkA "frdig") ;
- AScared p = mkCl p.name (mkA "bange") ;
- ASpeak p lang = mkCl p.name (mkV2 (mkV "tale")) lang ;
- AThirsty p = mkCl p.name (mkA "trstig") ;
- ATired p = mkCl p.name (mkA "trt") ;
- AUnderstand p = mkCl p.name (irregV "forst" "forstod" "forstet") ;
- AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
--- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP tage_V) place.to) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl whatSg_IP p.name (mkV2 hede_V)) ;
- QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "koste"))) ;
- ItCost item price = mkCl item (mkV2 (mkV "koste")) price ;
-
- PropOpen p = mkCl p.name (mkVP (mkVP have_V) open_Adv) ;
- PropClosed p = mkCl p.name (mkVP (mkVP have_V) closed_Adv) ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP (mkVP have_V) open_Adv) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP (mkVP have_V) closed_Adv) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP (mkVP have_V) open_Adv) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP (mkVP have_V) closed_Adv) d.habitual) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("vi ses")))
- (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 (mkN "kone" "konen" "koner" "konerne") ;
- Husband = xOf sing L.man_N ;
- Son = xOf sing (mkN "sn" "snnen" "snner" "snnerne") ;
- Daughter = xOf sing (mkN "datter" "datteren" "dtre" "dtrene") ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDay "mandag" ;
- Tuesday = mkDay "tirsdag" ;
- Wednesday = mkDay "onsdag" ;
- Thursday = mkDay "torsdag" ;
- Friday = mkDay "fredag" ;
- Saturday = mkDay "lrdag" ;
- Sunday = mkDay "sndag" ;
-
- Tomorrow = ParadigmsDan.mkAdv "i morgen" ;
-
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA "billig") ;
- TheMostExpensive = mkSuperl (mkA "dyr") ;
- TheMostPopular = mkSuperl (mkA "populr") ;
- TheWorst = mkSuperl L.bad_A ;
-
- SuperlPlace sup p = placeNP sup p ;
-
-
-
-
--- transports
-
- HowFar place =
- mkQS (mkQCl long_IAdv (mkCl (mkVP (SyntaxDan.mkAdv to_Prep place.name)))) ;
- HowFarFrom place x =
- mkQS (mkQCl long_IAdv (mkCl place.name (SyntaxDan.mkAdv from_Prep x.name))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl long_IAdv (mkCl y.name (SyntaxDan.mkAdv from_Prep (mkNP x.name t)))) ;
- HowFarBy y t =
- mkQS (mkQCl long_IAdv (mkCl y.name t)) ;
- -- not sure !
- 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 -> NPNationality = \nat,co ->
- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
--- don't add the "a"
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day = mkNP (mkPN d) in
- mkNPDay day (SyntaxDan.mkAdv on_Prep day)
- (SyntaxDan.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
-
- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN p) (mkPrep i) to_Prep ;
-
- open_Adv = ParadigmsDan.mkAdv "bent" ;
- closed_Adv = ParadigmsDan.mkAdv "lukket" ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
-
- mkSuperl : A -> Det = \a -> mkDet the_Art (mkOrd a) ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxDan.mkAdv by8means_Prep (mkNP n)
- } ;
-
- far_IAdv = ExtraDan.IAdvAdv L.far_Adv ;
- long_IAdv : IAdv = ss "hvor langt" ** {lock_IAdv = <>};
- how8much_IAdv : IAdv = ss "hvad" ** {lock_IAdv = <>};
-}
diff --git a/examples/phrasebook/WordsDut.gf b/examples/phrasebook/WordsDut.gf
deleted file mode 100644
index 12cab7861..000000000
--- a/examples/phrasebook/WordsDut.gf
+++ /dev/null
@@ -1,294 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
---# -coding=latin1
-
-
-concrete WordsDut of Words = SentencesDut **
- open SyntaxDut, (P = ParadigmsDut), (I = IrregDut), (L = LexiconDut), (R=ResDut), (E=ExtendDut), Prelude in {
-
- lin
-
--- kinds of food
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN L.cheese_N ;
- Chicken = mkCN (P.mkN "kip" "kippen" P.de) ;
- Coffee = mkCN (P.mkN "koffie" "koffie" P.de) ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (P.mkN "vlees" "vleesen" P.het) ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (P.mkN "pizza" "pizza's" P.de) ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (P.mkN "thee" "thee" P.de) ;
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
--- properties
-
-
- Bad = P.mkA "slecht" ;
- Cheap = P.mkA "goedkoop" ;
- Boring = P.mkA "saai" ;
- Cold = L.cold_A ;
- Delicious = P.mkA "lekker" ;
- Expensive = P.mkA "duur" ;
- Fresh = P.mkA "vers" ;
- Good = L.good_A ;
- Suspect = P.mkA "verdacht" ;
- Warm = L.warm_A ;
-
-
-
--- places
-
- Airport = mkPlace (P.mkN "luchthaven" "luchthavens" P.de) "op" ;
- AmusementPark = mkPlace (P.mkN "pretpark" "pretparken" P.het) "in" ;
- Bank = mkPlace (P.mkN "bank" "banken" P.de) "op" ;
- Bar = mkPlace (P.mkN "bar" P.de) "in" ;
- Cafeteria = mkPlace (P.mkN "cafetaria" "cafetaria's" P.de) "in" ;
- Center = mkPlace (P.mkN "centrum" "centra" P.het) "in" ;
- Church = mkPlace (P.mkN "kerk" "kerken" P.de) "in" ;
- Cinema = mkPlace (P.mkN "bioscoop" "bioscopen" P.de) "in" ;
- Disco = mkPlace (P.mkN "disco" "disco's" P.de) "in" ;
- Hospital = mkPlace (P.mkN "ziekenhuis" "ziekenhuizen" P.het) "in" ;
- Hotel = mkPlace (P.mkN "hotel" "hotels" P.het) "in" ;
- Museum = mkPlace (P.mkN "museum" "musea" P.het) "in" ;
- Park = mkPlace (P.mkN "park" "parken" P.het) "in" ;
- Parking = mkPlace (P.mkN "parkeerplaats" "parkeerplaatsen" P.de) "op" ; --parkeren x parkeerplaats -- naar op
- Pharmacy = mkPlace (P.mkN "apotheek" "apotheken" P.de) "in" ;
- PostOffice = mkPlace (P.mkN "postkantoor" "postkantoren" P.het) "op" ;
- Pub = mkPlace (P.mkN "kroeg" "kroegen" P.de) "in" ;
- Restaurant = mkPlace (P.mkN "restaurant" "restaurants" P.het) "in" ;
- Shop = mkPlace (P.mkN "winkel" "winkels" P.de) "in" ; -- shop x winkel
- School = mkPlace (P.mkN "school" "scholen" P.de) "in" ;
- Station = mkPlace (P.mkN "station" "stations" P.het) "op" ;
- Supermarket = mkPlace (P.mkN "supermarkt" "supermarkten" P.de) "in" ;
- Theatre = mkPlace (P.mkN "theater" "theaters" P.het) "in" ;
- Toilet = mkPlace (P.mkN "toilet" "toiletten" P.het) "op" ;
- University = mkPlace (P.mkN "universiteit" "universiteiten" P.de) "in" ; --universitair x universiteit -- naar in
- Zoo = mkPlace (P.mkN "dierentuin" "dierentuinen" P.de) "op" ;
-
-
- CitRestaurant cit =
- mkCNPlace (mkCN cit (P.mkN "restaurant" "restaurants" P.het)) in_Prep to_Prep ;
-
-
--- currencies
-
- DanishCrown = mkCN (P.mkA "Deens") (P.mkN "kroon" "kronen" P.de) ;
- Dollar = mkCN (P.mkN "dollar" "dollars" P.de) ;
- Euro = mkCN (P.mkN "euro" "euro's" P.de) ;
- Lei = mkCN (P.mkA "Roemeens") (P.mkN "leu" "lei" P.de) ;
- Leva = mkCN (P.mkA "Bulgaars") (P.mkN "leva" "levs" P.de) ;
- NorwegianCrown = mkCN (P.mkA "Noors") (P.mkN "kroon" "kronen "P.de) ;
- Pound = mkCN (P.mkA "Brits") (P.mkN "pond" "pond" P.het);
- Rouble = mkCN (P.mkA "Russisch") (P.mkN "roebel" "roebel" P.de) ;
- SwedishCrown = mkCN (P.mkA "Zweeds") (P.mkN "kroon" "kronen" P.de) ;
- Zloty = mkCN (P.mkA "Pools") (P.mkN "zloty" "zloty" P.de) ;
-
-
--- Nationalities
-
- Belgian = P.mkA "Belgisch" ;
- Belgium = mkNP (P.mkPN "Belgi") ;
- Bulgarian = mkNat "Bulgaars" "Bulgarije" ;
- Catalan = mkNat "Catalaans" "Cataloni" ;
- Danish = mkNat "Deens" "Denemarken" ;
- Dutch = mkNat "Nederlands" "Nederland" ;
- English = mkNat "Engels" "Engeland" ;
- Finnish = mkNat "Fins" "Finland" ;
- Flemish = mkNP (P.mkPN "Vlaams") ;
- French = mkNat "Frans" "Frankrijk" ;
- German = mkNat "Duits" "Duitsland" ;
- Italian = mkNat "Italiaans" "Itali" ;
- Norwegian = mkNat "Noors" "Noorwegen" ;
- Polish = mkNat "Pools" "Polen" ;
- Romanian = mkNat "Roemeens" "Roemeni" ;
- Russian = mkNat "Russisch" "Rusland" ;
- Spanish = mkNat "Spaans" "Spanje" ;
- Swedish = mkNat "Zweeds" "Zweden" ;
-
-
--- Means of transportation
-
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (P.mkN "bus" "bussen" P.de) ;
- Car = mkTransport (P.mkN "auto" "auto's" P.de);
- Ferry = mkTransport (P.mkN "veerboot" "veerboten" P.de) ; -- ferry x veerboot
- Plane = mkTransport (P.mkN "vliegtuig" "vliegtuigen" P.het) ;
- Subway = mkTransport (P.mkN "metro" "metro" P.de) ;
- Taxi = mkTransport (P.mkN "taxi" "taxi's" P.de) ;
- Tram = mkTransport (P.mkN "tram" "trams" P.de) ;
- Train = mkTransport (P.mkN "trein" "treinen" P.de) ;
-
- ByFoot = P.mkAdv "te voet" ;
-{-
- ik ga met de/het ....
-ik ga te voet/ ik ga lopend
-
--}
-
-
-
--- actions
- AHasAge p num = prop (mkCl p.name (mkNP num L.year_N)) ; -- ik ben ... jaar
- AHasName p name = prop (mkCl p.name (P.mkV2 I.heten_V) name) ; -- ik heet ...
- AHasChildren p num = prop (mkCl p.name have_V2 (mkNP num L.child_N)) ; -- ik heb ... kinderen
- --todo geen
- AHasRoom p num =
- mkProp (mkCl p.name have_V2 -- ik heb een kamer voor ... personen
- (mkNP (mkNP a_Det (P.mkN "kamer"))
- (SyntaxDut.mkAdv for_Prep (mkNP num (P.mkN "persoon")))))
- (mkS (mkCl p.name have_V2 -- ik heb geen kamer voor ... personen
- (mkNP (mkNP no_Quant (P.mkN "kamer"))
- (SyntaxDut.mkAdv for_Prep (mkNP num (P.mkN "persoon"))))));
- AHasTable p num =
- mkProp (mkCl p.name have_V2
- (mkNP (mkNP a_Det (P.mkN "tafel"))
- (SyntaxDut.mkAdv for_Prep (mkNP num (P.mkN "persoon")))))
- (mkS (mkCl p.name have_V2
- (mkNP (mkNP no_Quant (P.mkN "tafel"))
- (SyntaxDut.mkAdv for_Prep (mkNP num (P.mkN "persoon")))))) ;
- AHungry p = mkProp (mkCl p.name have_V2 (mkNP (P.mkN "honger")))
- (mkS (mkCl p.name have_V2 (mkNP no_Quant (P.mkN "honger")))) ; -- to have
- AIll p = prop (mkCl p.name (P.mkA "ziek")) ; -- to be ?
- AKnow p = prop (mkCl p.name I.weten_V) ; -- ik weet het.
- ALike p item = prop (mkCl p.name L.like_V2 item) ; -- ik vind X leuk
- ALive p co = prop (mkCl p.name (mkVP (mkVP (P.mkV "wonen")) (SyntaxDut.mkAdv in_Prep co))) ; -- woon
- ALove p q = prop (mkCl p.name L.love_V2 q.name) ; -- houden van
- AMarried p = prop (mkCl p.name (P.mkA "getrouwd")) ; -- ik ben getrouwd
- AReady p = prop (mkCl p.name (P.mkA "klaar")) ; -- ik ben klaar
- AScared p = prop (mkCl p.name (P.mkA "bang")) ; -- ik ben bang
- ASpeak p lang = mkProp (mkCl p.name (P.mkV2 I.spreken_V) lang) -- ik spreek ...
- (mkS (mkCl p.name (P.mkV2 I.spreken_V) (mkNP no_Predet lang))); -- ik spreek geen ...
- AThirsty p = mkProp (mkCl p.name have_V2 (mkNP (P.mkN "dorst"))) --ik heb dorst
- (mkS (mkCl p.name have_V2 (mkNP no_Quant (P.mkN "dorst")))) ; --ik heb geen dorst
- ATired p = prop (mkCl p.name (P.mkA "moe")) ; -- ik ben moe
- AUnderstand p = prop (mkCl p.name (P.mkV "verstaan" "verstond" "verstonden" "verstaan")) ;
- AWant p obj = prop (mkCl p.name wants_V2 obj) ;
- AWantGo p place = prop (mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to)) ; -- ik wil naar ...
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name I.heten_V)) ; --hoe heet je
- QWhatAge p = mkQS (mkQCl (E.ICompAP (mkAP L.old_A)) p.name) ;
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (P.mkV "kosten"))) ; --hoeveel kost...
- ItCost item price = prop (mkCl item (P.mkV2 (P.mkV "kosten")) price) ; --..item.. kost ..price..
-
- PropOpen p = prop (mkCl p.name open_A) ;
- PropClosed p = prop (mkCl p.name closed_A) ;
- PropOpenDate p d = prop (mkCl p.name (mkVP (mkVP open_A) d)) ; --de winkel is geopend op vrijdag(s)
- --normaal gesproken ga ik op vrijdag ..action../vrijdags ga ik ..action..
- PropClosedDate p d = prop (mkCl p.name (mkVP (mkVP closed_A) d)) ; -- gesloten
- PropOpenDay p d = prop (mkCl p.name (mkVP (mkVP open_A) d.habitual)) ;
- PropClosedDay p d = prop (mkCl p.name (mkVP (mkVP closed_A) d.habitual)) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss ("ik zie je"))) (mkPhrase (mkUtt d)) ; -- zie je / tot
- PSeeYouPlace p =
- mkText (lin Text (ss ("ik zie je"))) (mkPhrase (mkUtt p.at)) ; -- tot ziens in p (AR)
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("ik zie je")))
- (mkText (mkPhrase (mkUtt d)) (mkPhrase (mkUtt p.at))) ; --tot ... op/in/bij
-
--- 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 (P.mkN "vrouw" "vrowen" P.de) ; -- x vrouw
- Husband = xOf sing L.man_N ;
- Son = xOf sing (P.mkN "zoon" "zonen" P.de) ;
- Daughter = xOf sing (P.mkN "dochter" "dochters" P.de) ;
- Children = xOf plur L.child_N ; -- kind
-
-
-
--- week days
-
- Monday = mkDay "maandag" ;
- Tuesday = mkDay "dinsdag" ;
- Wednesday = mkDay "woensdag" ;
- Thursday = mkDay "donderdag" ;
- Friday = mkDay "vrijdag" ;
- Saturday = mkDay "zaterdag" ;
- Sunday = mkDay "zondag" ;
-
- Tomorrow = P.mkAdv "morgen" ;
-
--- modifiers of places
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl (P.mkA
- "dichtbijzijnd" "dichtbijzijnde" "dichtbijzijndes"
- "dichterbijzijnd" "dichtestbijzijnd") ;
- TheCheapest = mkSuperl (P.mkA "goedkoop") ;
- TheMostExpensive = mkSuperl (P.mkA "duur") ;
- TheMostPopular = mkSuperl (P.mkA "populair") ;
- TheWorst = mkSuperl (P.mkA "slecht") ;
-
- SuperlPlace sup p = placeNP sup p ;
-
--- transports
-
- HowFar place = mkQS (mkQCl far_IAdv place.name) ; -- hoe ver is de dierentuin
- HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP y.name (SyntaxDut.mkAdv van_Prep x.name))) ;
--- how far is the center from the hotel ? hoever is het centrum van het hotel
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxDut.mkAdv van_Prep x.name)) t)) ;
---hoelang duurt het om van het vliegveld naar het hotel te gaan per taxi
- HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP y.name t)) ; --hoe ver is het museum per bus
-
- 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 -> NPNationality = \nat,co ->
- mkNPNationality (mkNP (P.mkPN nat)) (mkNP (P.mkPN co)) (P.mkA nat) ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- mkNPDay (mkNP (P.mkPN d)) (mkAdv (P.mkPrep []) (mkNP (P.mkPN d)))
- ---- (mkAdv on_Prep (mkNP (P.mkPN d)))
- (mkAdv on_Prep (mkNP a_Quant plNum (mkCN (P.mkN d (d + "en") P.utrum)))) ;
-
- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN p) (P.mkPrep i) to_Prep ;
-
- open_A = P.mkA "geopend" ;
- closed_A = P.mkA "gesloten" ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (mkNP the_Quant a c) (SyntaxDut.mkAdv possess_Prep b)) p ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxDut.mkAdv with_Prep (mkNP the_Det n)
- } ;
-
- far_IAdv = ss "hoe ver" ** {lock_IAdv = <>} ;
- long_IAdv = ss "hoe lang" ** {lock_IAdv = <>};
-
- mkSuperl : A -> Det = \a -> SyntaxDut.mkDet the_Art (SyntaxDut.mkOrd a) ;
-
- van_Prep : Prep = P.mkPrep "van" ;
- wants_V2 : V2 = P.mkV2 (P.mkV "wil" "wil" "willen" "wou" "wouden" "gewild") ;
-
- no_Predet = R.mkPredet "geen" "geen" ;
-{-
- HowFarFrom : how far is the center from the hotel ? hoe ver is het centrum van het hotel
- HowFarFromBy : how far is the airport from the hotel by taxi ? hoe lang duurt het om van het vliegveld naar het hotel te gaan per taxi
- HowFarBy : how far is the museum by bus ? hoe ver is het museum per bus/ hoelang doe je er over om met de bus naar het museum te gaan/hoelang doet de bus er over tot het museum
-
-
--}
-
-
-}
diff --git a/examples/phrasebook/WordsEng.gf b/examples/phrasebook/WordsEng.gf
deleted file mode 100644
index ca8a55172..000000000
--- a/examples/phrasebook/WordsEng.gf
+++ /dev/null
@@ -1,314 +0,0 @@
---2 Implementations of Words, with English as example
-
-concrete WordsEng of Words = SentencesEng **
- open
- SyntaxEng,
- ParadigmsEng,
- (L = LexiconEng),
- (P = ParadigmsEng),
- IrregEng,
- ExtraEng,
- Prelude in {
- 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 (mkN "cheese") ;
- Chicken = mkCN (mkN "chicken") ;
- Coffee = mkCN (mkN "coffee") ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "meat") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "pizza") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "tea") ;
- 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 = mkA "boring" ;
- Cheap = mkA "cheap" ;
- Cold = L.cold_A ;
- Delicious = mkA "delicious" ;
- Expensive = mkA "expensive" ;
- Fresh = mkA "fresh" ;
- Good = L.good_A ;
- Suspect = mkA "suspect" ;
- 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 "airport" "at" ;
- AmusementPark = mkCompoundPlace "amusement" "park" "at" ;
- Bank = mkPlace "bank" "at" ;
- Bar = mkPlace "bar" "in" ;
- Cafeteria = mkPlace "canteen" "in" ;
- Center = mkPlace "center" "in" ;
- Cinema = mkPlace "cinema" "at" ;
- Church = mkPlace "church" "in" ;
- Disco = mkPlace "disco" "at" ;
- Hospital = mkPlace "hospital" "in" ;
- Hotel = mkPlace "hotel" "in" ;
- Museum = mkPlace "museum" "at" ;
- Park = mkPlace "park" "in" ;
- Parking = mkCompoundPlace "car" "park" "in" ;
- Pharmacy = mkPlace "pharmacy" "at" ;
- PostOffice = mkCompoundPlace "post" "office" "at" ;
- Pub = mkPlace "pub" "at" ;
- Restaurant = mkPlace "restaurant" "in" ;
- School = mkPlace "school" "at" ;
- Shop = mkPlace "shop" "at" ;
- Station = mkPlace "station" "at" ;
- Supermarket = mkPlace "supermarket" "at" ;
- Theatre = mkPlace "theatre" "at" ;
- Toilet = mkPlace "toilet" "in" ;
- University = mkPlace "university" "at" ;
- Zoo = mkPlace "zoo" "at" ;
-
- CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurant")) in_Prep to_Prep ;
-
-
--- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
-
- DanishCrown = mkCN (mkA "Danish") (mkN "crown") | mkCN (mkN "crown") ;
- Dollar = mkCN (mkN "dollar") ;
- Euro = mkCN (mkN "euro" "euros") ; -- to prevent euroes
- Lei = mkCN (mkN "leu" "lei") ;
- Leva = mkCN (mkN "lev") ;
- NorwegianCrown = mkCN (mkA "Norwegian") (mkN "crown") | mkCN (mkN "crown") ;
- Pound = mkCN (mkN "pound") ;
- Rouble = mkCN (mkN "rouble") ;
- Rupee = mkCN (mkN "rupee") ;
- SwedishCrown = mkCN (mkA "Swedish") (mkN "crown") | mkCN (mkN "crown") ;
- Zloty = mkCN (mkN "zloty" "zloty") ;
- Yuan = mkCN (mkN "yuan" "yuan") ;
-
--- Nationalities
-
- Belgian = mkA "Belgian" ;
- Belgium = mkNP (mkPN "Belgium") ;
- Bulgarian = mkNat "Bulgarian" "Bulgaria" ;
- Catalan = mkNPNationality (mkNP (mkPN "Catalan")) (mkNP (mkPN "Catalonia")) (mkA "Catalonian") ;
- Chinese = mkNat "Chinese" "China" ;
- Danish = mkNat "Danish" "Denmark" ;
- Dutch = mkNPNationality (mkNP (mkPN "Dutch")) (mkNP the_Quant (mkN "Netherlands")) (mkA "Dutch") ;
- English = mkNat "English" "England" ;
- Finnish = mkNat "Finnish" "Finland" ;
- Flemish = mkNP (mkPN "Flemish") ;
- French = mkNat "French" "France" ;
- German = mkNat "German" "Germany" ;
- Hindi = mkNP (mkPN "Hindi") ;
- India = mkNP (mkPN "India") ;
- Indian = mkA "Indian" ;
- Italian = mkNat "Italian" "Italy" ;
- Norwegian = mkNat "Norwegian" "Norway" ;
- Polish = mkNat "Polish" "Poland" ;
- Romanian = mkNat "Romanian" "Romania" ;
- Russian = mkNat "Russian" "Russia" ;
- Spanish = mkNat "Spanish" "Spain" ;
- Swedish = mkNat "Swedish" "Sweden" ;
-
--- Means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN "bus") ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "ferry") ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN "subway") ;
- Taxi = mkTransport (mkN "taxi") ;
- Train = mkTransport (mkN "train") ;
- Tram = mkTransport (mkN "tram") ;
-
- ByFoot = P.mkAdv "by foot" ;
-
--- Actions: the predication patterns are very often language-dependent.
-
- AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsEng.mkAdv "old"));
- 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 (mkN "room")) (SyntaxEng.mkAdv for_Prep (mkNP num (mkN "person")))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "table")) (SyntaxEng.mkAdv for_Prep (mkNP num (mkN "person")))) ;
- AHasName p name = mkCl (nameOf p) name ;
- AHungry p = mkCl p.name (mkA "hungry") ;
- AIll p = mkCl p.name (mkA "ill") ;
- AKnow p = mkCl p.name IrregEng.know_V ;
- ALike p item = mkCl p.name (mkV2 (mkV "like")) item ;
- ALive p co = mkCl p.name (mkVP (mkVP (mkV "live")) (SyntaxEng.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name (mkV2 (mkV "love")) q.name ;
- AMarried p = mkCl p.name (mkA "married") ;
- AReady p = mkCl p.name (mkA "ready") ;
- AScared p = mkCl p.name (mkA "scared") ;
- ASpeak p lang = mkCl p.name (mkV2 IrregEng.speak_V) lang ;
- AThirsty p = mkCl p.name (mkA "thirsty") ;
- ATired p = mkCl p.name (mkA "tired") ;
- AUnderstand p = mkCl p.name IrregEng.understand_V ;
- AWant p obj = mkCl p.name (mkV2 (mkV "want")) obj ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP IrregEng.go_V) place.to) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl (mkIComp whatSg_IP) (nameOf p)) ;
--- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
- QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item IrregEng.cost_V)) ;
- ItCost item price = mkCl item (mkV2 IrregEng.cost_V) price ;
-
- PropOpen p = mkCl p.name open_Adv ;
- PropClosed p = mkCl p.name closed_Adv ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss ("see you"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss ("see you"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("see you")))
- (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 (mkN "wife") ;
- Husband = xOf sing (mkN "husband") ;
- Son = xOf sing (mkN "son") ;
- Daughter = xOf sing (mkN "daughter") ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDay "Monday" ;
- Tuesday = mkDay "Tuesday" ;
- Wednesday = mkDay "Wednesday" ;
- Thursday = mkDay "Thursday" ;
- Friday = mkDay "Friday" ;
- Saturday = mkDay "Saturday" ;
- Sunday = mkDay "Sunday" ;
-
- Tomorrow = P.mkAdv "tomorrow" ;
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA "cheap") ;
- TheMostExpensive = mkSuperl (mkA "expensive") ;
- TheMostPopular = mkSuperl (mkA "popular") ;
- 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 (mkCl y.name (SyntaxEng.mkAdv from_Prep x.name))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkCl y.name (SyntaxEng.mkAdv from_Prep (mkNP x.name t)))) ;
- HowFarBy y t = mkQS (mkQCl far_IAdv (mkCl 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))) ;
-
-
-
--- auxiliaries
-
- oper
-
- mkNat : Str -> Str -> NPNationality = \nat,co ->
- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day = mkNP (mkPN d) in
- mkNPDay day (SyntaxEng.mkAdv on_Prep day)
- (SyntaxEng.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
-
- mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i ->
- mkCNPlace (mkCN (P.mkN comp (mkN p))) (P.mkPrep i) to_Prep ;
-
- mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN (mkN p)) (P.mkPrep i) to_Prep ;
-
- open_Adv = P.mkAdv "open" ;
- closed_Adv = P.mkAdv "closed" ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
-
- nameOf : NPPerson -> NP = \p -> (xOf sing (mkN "name") p).name ;
-
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxEng.mkAdv by8means_Prep (mkNP n)
- } ;
-
- mkSuperl : A -> Det = \a -> SyntaxEng.mkDet the_Art (SyntaxEng.mkOrd a) ;
-
- far_IAdv = ExtraEng.IAdvAdv (ss "far") ;
-
---------------------------------------------------
--- New 30/11/2011 AR
---------------------------------------------------
-
- lin
- Thai = mkNat "Thai" "Thailand" ;
- Baht = mkCN (mkN "baht" "baht") ;
-
- Rice = mkCN (mkN "rice") ;
- Pork = mkCN (mkN "pork") ;
- Beef = mkCN (mkN "beef") ;
- Egg = mkCN L.egg_N ;
- Noodles = mkCN (mkN "noodle") ;
- Shrimps = mkCN (mkN "shrimp") ;
- Chili = mkCN (mkN "chili") ;
- Garlic = mkCN (mkN "garlic") ;
- Durian = mkCN (mkN "durian") ;
- Mango = mkCN (mkN "mango") ;
- Pineapple = mkCN (mkN "pineapple") ;
- Coke = mkCN (mkN "coke") ;
- IceCream = mkCN (mkN "ice cream") ;
- Salad = mkCN (mkN "salad") ;
- OrangeJuice = mkCN (mkN "orange juice") ;
- Lemonade = mkCN (mkN "lemonade") ;
-
- Beach = mkPlace "beach" "on" ;
-
- ItsRaining = mkCl (progressiveVP (mkVP L.rain_V0)) ;
- ItsCold = mkCl (mkVP L.cold_A) ;
- ItsWarm = mkCl (mkVP L.warm_A) ;
- ItsWindy = mkCl (mkVP (P.mkA "windy")) ;
- SunShine = mkCl (mkNP the_Det L.sun_N) (progressiveVP (mkVP shine_V)) ;
-
- Smoke = mkVP (P.mkV "smoke") ;
-
- ADoctor = mkProfession (mkN "doctor") ;
- AProfessor = mkProfession (mkN "professor") ;
- ALawyer = mkProfession (mkN "lawyer") ;
- AEngineer = mkProfession (mkN "engineer") ;
- ATeacher = mkProfession (mkN "teacher") ;
- ACook = mkProfession (mkN "cook") ;
- AStudent = mkProfession (mkN "student") ;
- ABusinessman = mkProfession (mkN "businessman" "businessmen") ;
-
- oper
- mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
-}
diff --git a/examples/phrasebook/WordsEst.gf b/examples/phrasebook/WordsEst.gf
deleted file mode 100644
index 442c79341..000000000
--- a/examples/phrasebook/WordsEst.gf
+++ /dev/null
@@ -1,372 +0,0 @@
--- (c) 2010 Aarne Ranta under LGPL
--- Estonian port by Kaarel Kaljurand
-
-concrete WordsEst of Words = SentencesEst **
- open
- SyntaxEst, ParadigmsEst, (L = LexiconEst), (R = ResEst),
- Prelude, (E = ExtraEst) in {
-
- flags optimize = noexpand ;
-
- lin
-
--- kinds
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN (mkN "juust" "juustu" "juustu" "juustu" "juustude" "juuste") ;
- Chicken = mkCN (mkN "kana") ;
- Coffee = mkCN (mkN "kohv" "kohvi" "kohvi" "kohvi" "kohvide" "kohve") ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "liha") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "pitsa" "pitsa" "pitsat" "pitsasse" "pitsade" "pitsasid") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "tee") ;
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
--- qualities
-
- Bad = L.bad_A ;
- Boring = mkA "igav" ;
- Cheap = mkA "odav" ;
- Cold = L.cold_A ;
- Delicious = mkA "maitsev" ;
- Expensive = mkA (mkN "kallis" "kalli" "kallist" "kallisse" "kallite" "kalleid");
- Fresh = mkA "toores" ;
- Good = L.good_A ;
- Suspect = mkA "kahtlane" ;
- Warm = L.warm_A ;
-
--- places
-
- Restaurant = mkPlace (mkN "restoran") ssa ;
- Bank = mkPlace (mkN "pank") ssa ;
- PostOffice = mkPlace (mkN "post" (mkN "kontor")) ssa ;
- Bar = mkPlace (mkN "baar") ssa ;
- Toilet = mkPlace (mkN "tualett") ssa ;
- Museum = mkPlace (mkN "muuseum") ssa ;
- Airport = mkPlace (mkN "lennu" (mkN "jaam" "jaama" "jaama" "jaama" "jaamade" "jaamu")) ssa ; -- different in Fin
- Station = mkPlace (mkN "jaam" "jaama" "jaama" "jaama" "jaamade" "jaamu") ssa ; -- different in Fin
- Hospital = mkPlace (mkN "haigla") ssa ;
- Church = mkPlace (mkN "kirik") ssa ;
- Cinema = mkPlace (mkN "kino") ssa ;
- Theatre = mkPlace (mkN "teater") ssa ;
- Shop = mkPlace (mkN "pood" "poe" "poodi" "poodi" "poodide" "poode") ssa ;
- Park = mkPlace (mkN "park") ssa ;
- Hotel = mkPlace (mkN "hotell" "hotelli" "hotelli" "hotelli" "hotellide" "hotelle") ssa ;
- University = mkPlace (mkN "üli" (mkN "kool")) ssa ; -- different in Fin
- School = mkPlace (mkN "kool") ssa ; -- different in Fin
-
- CitRestaurant cit = {
- name = mkCN cit.prop (mkN "restoran") ;
- at = casePrep inessive ;
- to = casePrep illative;
- from = casePrep elative ;
- isPl = False
- } ;
-
- Parking = mkPlace (mkN "parkla") ssa ; -- different in Fin
- Supermarket = mkPlace (mkN "super" (mkN "market")) ssa ;
- Pharmacy = mkPlace (mkN "apteek") ssa ;
- Center = mkPlace (mkN "keskus") ssa ;
- Cafeteria = mkPlace (mkN "kohvik") ssa ;
- Disco = mkPlace (mkN "diskoteek") ssa ;
- Pub = mkPlace (mkN "kõrts") ssa ;
- AmusementPark = mkPlace (mkN "lõbustus" (mkN "park")) ssa ;
- Zoo = mkPlace (mkN "looma" (mkN "aed" "aia" "aeda" "aeda" "aedade" "aedu")) ssa ;
-
--- currencies
-
- DanishCrown = mkCN (kroon2 "taani") ;
- Dollar = mkCN (mkN "dollar") ;
- Euro = mkCN (mkN "euro") ;
- Lei = mkCN (mkN "leu") ;
- Leva = mkCN (mkN "leev") ;
- NorwegianCrown = mkCN (kroon2 "norra") ;
- Pound = mkCN (mkN "nael" "naela") ;
- Rouble = mkCN (mkN "rubla") ;
- Rupee = mkCN (mkN "ruupia") ;
- SwedishCrown = mkCN (kroon2 "rootsi") ;
- Zloty = mkCN (mkN "zlott") ;
- Yuan = mkCN (mkN "jüään") ;
-
--- Citizenship
- Belgian = { prop = invA "belgia" ; nat = mkA "belglane" } ;
- Indian = { prop = invA "india" ; nat = mkA "indialane" } ;
-
--- Country
- Belgium = mkNP (mkPN "Belgia") ;
- India = mkNP (mkPN "India") ;
-
--- Nationality
- Bulgarian = mkNat "bulgaaria" "bulgaarlane" (mkPN "Bulgaaria") ;
- Catalan = mkNat "katalaani" "kataloonlane" (mkPN "Kataloonia") ;
- Chinese = mkNat "hiina" "hiinlane" (mkPN "Hiina") ;
- Danish = mkNat "taani" "taanlane" (mkPN "Taani") ;
- Dutch = mkNat "hollandi" "hollandlane" (mkPN "Holland") ;
- English = mkNat "inglise" "inglane" (mkPN "Inglismaa") ;
- Finnish = mkNat "soome" "soomlane" (mkPN "Soome") ;
- Flemish = mkNP (mkPN "flaami keel") ; -- Language
- Hindi = mkNP (mkPN "hindi keel") ; -- Language
- French = mkNat "prantsuse" "prantslane" (mkPN "Prantsusmaa") ;
- German = mkNat "saksa" "sakslane" (mkPN "Saksamaa") ;
- Italian = mkNat "itaalia" "itaallane" (mkPN "Itaalia") ;
- Norwegian = mkNat "norra" "norralane" (mkPN "Norra") ;
- Polish = mkNat "poola" "poolakas" (mkPN "Poola") ;
- Romanian = mkNat "rumeenia" "rumeenlane" (mkPN "Rumeenia") ;
- Russian = mkNat "vene" "venelane" (mkPN "Venemaa") ;
- Spanish = mkNat "hispaania" "hispaanlane" (mkPN "Hispaania") ;
- Swedish = mkNat "rootsi" "rootslane" (mkPN "Rootsi") ;
-
- ---- it would be nice to have a capitalization Predef function
-
--- means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN "buss" "bussi" "bussi" "bussi" "busside" "busse") ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "praam") ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN "metroo") ;
- Taxi = mkTransport (mkN "takso") ;
- Train = mkTransport L.train_N ;
- Tram = mkTransport (mkN "tramm") ;
-
- ByFoot = ParadigmsEst.mkAdv "jalgsi" ;
-
-
--- actions
-
- AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
- AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
- AHasName p name = mkCl (nameOf p) name ;
- AHasRoom p = haveForPerson p.name (mkCN (mkN "tuba")) ;
- AHasTable p = haveForPerson p.name (mkCN (mkN "laud")) ;
- AHungry p = E.AdvExistNP (SyntaxEst.mkAdv on_Prep p.name) (mkNP (mkN "nälg")) ;
- AIll p = mkCl p.name (mkA "haige") ;
- --AKnow p = mkCl p.name (mkV "teadma") ;
- AKnow p = mkCl p.name L.know_VS ;
- ALike p item = mkCl p.name L.like_V2 item ;
- ALive p co = mkCl p.name (mkVP (mkVP L.live_V) (SyntaxEst.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name L.love_V2 q.name ;
- AMarried p = mkCl p.name (ParadigmsEst.mkAdv "abielus") ;
- AReady p = mkCl p.name (ParadigmsEst.invA "valmis" ) ;
- -- Eng: I am scared
- -- Fin: Minua pelottaa (partitive)
- -- Est: Mina kardan (nominative)
- -- Est: Mul on hirm (nominative)
- -- AScared p = mkCl p.name (caseV nominative (mkV "kartma")) ;
- AScared p = E.AdvExistNP (SyntaxEst.mkAdv on_Prep p.name) (mkNP (mkN "hirm")) ;
- -- Fin: puhua: Puhun hollantia (partitive)
- -- Est: Mina räägin hollandi keelt (partitive)
- ASpeak p lang = mkCl p.name L.speak_V2 lang ;
- AThirsty p = E.AdvExistNP (SyntaxEst.mkAdv on_Prep p.name) (mkNP (mkN "janu")) ;
- -- Eng: I am tired
- -- Fin: Minua väsyttää. (partitive)
- -- Ger: Ich bin müde.
- -- Est: Mina olen väsinud.
- -- ATired p = mkCl p.name (caseV partitive (mkV "väsitada")) ;
- ATired p = mkCl p.name (ParadigmsEst.mkA "väsinud") ;
- AUnderstand p = mkCl p.name (mkV "aru" (mkV "saama")) ;
- AWant p obj = mkCl p.name (mkV2 "tahtma") obj ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
- QWhatAge p = mkQS (mkQCl (E.ICompAP (mkAP L.old_A)) p.name) ;
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item maksma_V)) ;
- ItCost item price = mkCl item (mkV2 maksma_V) price ;
-
- PropOpen p = mkCl p.name open_Adv ;
- PropClosed p = mkCl p.name closed_Adv ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ;
-
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss ("kohtumiseni"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss ("kohtumiseni"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("kohtumiseni")))
- (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 (mkN "naine") ;
- Husband = xOf sing L.man_N ;
- Son = xOf sing (mkN "poeg" "poja" "poega" "poegadesse" "poegade" "poegi") ;
- Daughter = xOf sing (mkN "tütar" "tütre" "tütart" "tütresse" "tütarde" "tütreid") ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDayPaev "esmas" ;
- Tuesday = mkDayPaev "teisi" ;
- Wednesday = mkDayPaev "kolma" ;
- Thursday = mkDayPaev "nelja" ;
- Friday = mkDay (mkPN (mkN "reede" "reede")) ("reedeti") ;
- Saturday = mkDayPaev "lau" ;
- Sunday = mkDayPaev "püha" ;
-
- Tomorrow = ParadigmsEst.mkAdv "homme" ;
-
--- transports
-
- HowFar place = mkQS (mkQCl far_IAdv place.name) ;
- HowFarFrom x y =
- mkQS (mkQCl far_IAdv (mkCl y.name x.from)) ;
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkCl y.name
- (mkVP (mkVP x.from) t))) ;
- HowFarBy place t =
- mkQS (mkQCl far_IAdv (mkCl place.name t)) ;
- -- mkQS (mkQCl (mkIAdv far_IAdv t) y.name) ;
-
- WhichTranspPlace trans place =
- mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
-
- IsTranspPlace trans place =
- mkQS (mkQCl (mkCl (mkVP (mkVP (mkVP (mkV "saama")) trans.by) place.to))) ;
- -- pääseekö keskustaan bussilla
- -- mkQS (mkQCl (E.AdvPredNP place.to L.go_V (E.PartCN (trans.name)))) ;
- -- meneekö keskustaan bussia
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl (mkA (mkN "lähedal asuv") "lähem" "lähim") ;
- TheCheapest = mkSuperl (mkA "odav") ;
- TheMostExpensive = mkSuperl (mkA (mkN "kallis" "kalli" "kallist" "kallisse" "kallite" "kalleid")) ;
- TheMostPopular = mkSuperl (mkA "populaarne") ;
- TheWorst = mkSuperl (L.bad_A) ;
-
- SuperlPlace sup p = placeNP sup p ;
-
- oper
- kroon : N = mkN "kroon" "krooni" "krooni" "krooni" "kroonide" "kroone" ;
- kroon2 : Str -> N = \taani -> mkN (taani + " ") kroon ;
- maksma_V : V = mkV "maksma" "maksta" "maksab" ;
-
- mkNat : Str -> Str -> PN -> NPNationality
- = \attr,pred,co ->
- {lang = mkNP (mkCN (mkN (attr + " ") (mkN "keel" "keele" "keelt" "keelde" "keelte" "keeli")));
- prop = invA attr ;
- nat = mkA pred ;
- country = mkNP co
- } ;
-
- ---- using overloaded paradigms slows down compilation dramatically
- -- Eng: See you on Monday!
- -- Est: Kohtumiseni esmaspäeval! (adessive)
- -- Fin: Nähdään maanantaina! (essive)
- -- TODO: use StructuralEst.gf: on_Prep = casePrep adessive
- mkDay : PN -> Str -> {name : NP ; point : Adv ; habitual : Adv} = \d,s ->
- let day = mkNP d in
- {name = day ;
- point = SyntaxEst.mkAdv (casePrep adessive) day ;
- habitual = ParadigmsEst.mkAdv s
- } ;
-
- mkDayPaev : Str -> {name : NP ; point : Adv ; habitual : Adv} = \s ->
- mkDay (mkPN (mkN (s + "päev") (s + "päeva"))) (s + "päeviti") ;
-
- mkPlace : N -> Bool -> {name : CN ; at : Prep ; to : Prep; from : Prep ; isPl : Bool} = \p,e -> {
- name = mkCN p ;
- at = casePrep (if_then_else Case e adessive inessive) ; -- True: external
- to = casePrep (if_then_else Case e allative illative) ;
- from = casePrep (if_then_else Case e ablative elative) ;
- isPl = False
- } ;
-
- ssa = False ;
- lla = True ;
-
- -- Ger-grammar uses this xOf (mis on nimi minu naise)
- -- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
-
- -- (mis on minu naise nimi)
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (E.GenNP b) a c) p ;
-
- nameOf : NPPerson -> NP = \p -> (xOf sing L.name_N p).name ;
-
- oper
- -- do you have a table for five persons
- haveForPerson : NP -> CN -> Card -> Cl = \p,a,n ->
- mkCl p have_V2
----- (mkNP (E.PartCN a) ---- partitive works in questions )
- (mkNP (mkNP a_Det a)
- (SyntaxEst.mkAdv for_Prep (mkNP n L.person_N))) ;
----- (SyntaxEst.mkAdv for_Prep (mkNP (mkDet n)))) ; -- 60s faster compile 25/10/2010
-
- open_Adv = ParadigmsEst.mkAdv "avatud" ;
- closed_Adv = ParadigmsEst.mkAdv "suletud" ;
-
- -- Fin: casePrep adessive
- -- Est: casePrep comitative
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxEst.mkAdv (casePrep comitative) (mkNP n)
- } ;
-
- mkSuperl : A -> Det = \a -> mkDet the_Quant (mkOrd a) ;
-
- far_IAdv = E.IAdvAdv L.far_Adv ;
-
---------------------------------------------------
--- New 30/11/2011 AR
---------------------------------------------------
-
- lin
- Thai = mkNat ("tai") "tailane" (mkPN "Tai") ;
- Baht = mkCN (mkN "baht") ;
-
- Rice = mkCN (mkN "riis") ;
- Pork = mkCN (mkN "siga") ;
- Beef = mkCN (mkN "veis") ;
- Egg = mkCN L.egg_N ;
- Noodles = mkCN (mkN "nuudel") ;
- Shrimps = mkCN (mkN "krevet") ;
- Chili = mkCN (mkN "tšilli") ;
- Garlic = mkCN (mkN "küüs" (mkN "lauk")) ;
- Durian = mkCN (mkN "duurian") ;
- Mango = mkCN (mkN "mango") ;
- Pineapple = mkCN (mkN "ananass") ;
- Coke = mkCN (mkN "coca-cola") ;
- IceCream = mkCN (mkN "jäätis") ;
- Salad = mkCN (mkN "salat") ;
- OrangeJuice = mkCN (mkN "apelsiini" (mkN "mahl")) ;
- Lemonade = mkCN (mkN "limonaad") ;
-
- Beach = mkPlace (mkN "supel" (mkN "rand")) ssa ;
-
- ItsRaining = mkCl (mkVP L.rain_V0) ;
- ItsCold = mkCl (mkVP L.cold_A) ;
- ItsWarm = mkCl (mkVP L.warm_A) ;
- ItsWindy = mkCl (mkNP the_Det L.wind_N) (mkVP (mkV "puhuma")) ;
- SunShine = mkCl (mkNP the_Det L.sun_N) (mkVP (mkV "paistma")) ;
-
- Smoke = mkVP (mkV "suitsetama") ;
-
- ADoctor = mkProfession (mkN "arst") ;
- AProfessor = mkProfession (mkN "professor") ;
- ALawyer = mkProfession (mkN "jurist") ;
- AEngineer = mkProfession (mkN "insener") ;
- ATeacher = mkProfession (mkN "õpetaja") ;
- ACook = mkProfession (mkN "kokk") ;
- AStudent = mkProfession (mkN "õpilane") ;
- ABusinessman = mkProfession (mkN "äri" L.man_N) ;
-
- oper
- mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
-}
diff --git a/examples/phrasebook/WordsFin.gf b/examples/phrasebook/WordsFin.gf
deleted file mode 100644
index e59eeccf6..000000000
--- a/examples/phrasebook/WordsFin.gf
+++ /dev/null
@@ -1,334 +0,0 @@
--- (c) 2010 Aarne Ranta under LGPL
---# -coding=latin1
-
-concrete WordsFin of Words = SentencesFin **
- open
- SyntaxFin, ParadigmsFin, (L = LexiconFin),
- Prelude, (E = ExtraFin) in {
-
- flags optimize = noexpand ;
-
- lin
-
--- kinds
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN (mkN "juusto") ;
- Chicken = mkCN (mkN "kana") ;
- Coffee = mkCN (mkN "kahvi") ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "liha") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "pizza") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "tee") ;
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
--- qualities
-
- Bad = L.bad_A ;
- Boring = mkA "tyls" ;
- Cheap = mkA "halpa" ;
- Cold = L.cold_A ;
- Delicious = mkA "herkullinen" ;
- Expensive = mkA "kallis" ;
- Fresh = mkA "tuore" ;
- Good = L.good_A ;
- Suspect = mkA "epilyttv" ;
- Warm = L.warm_A ;
-
--- places
-
- Restaurant = mkPlace (mkN "ravintola") ssa ;
- Bank = mkPlace (mkN "pankki") ssa ;
- PostOffice = mkPlace (mkN "posti") ssa ;
- Bar = mkPlace (mkN "baari") ssa ;
- Toilet = mkPlace (mkN "vessa") ssa ;
- Museum = mkPlace (mkN "museo") ssa ;
- Airport = mkPlace (mkN "lento" (mkN "kentt")) lla ;
- Station = mkPlace (mkN "asema") lla ;
- Hospital = mkPlace (mkN "sairaala") ssa ;
- Church = mkPlace (mkN "kirkko") ssa ;
- Cinema = mkPlace (mkN "elokuva" (mkN "teatteri")) ssa ;
- Theatre = mkPlace (mkN "teatteri") ssa ;
- Shop = mkPlace (mkN "kauppa") ssa ;
- Park = mkPlace (mkN "puisto") ssa ;
- Hotel = mkPlace (mkN "hotelli") ssa ;
- University = mkPlace (mkN "yliopisto") lla ;
- School = mkPlace (mkN "koulu") lla ;
-
- CitRestaurant cit = {
- name = mkCN cit (mkN "ravintola") ; isExternal = False ; isPl = False
- } ;
- Parking = mkPlace (mkN "pyskinti" (mkN "alue")) lla ;
- Supermarket = mkPlace (mkN "supermarket") ssa ;
- Pharmacy = mkPlace (mkN "apteekki") ssa ;
- Center = mkPlace (mkN "keskusta") ssa ;
- Cafeteria = mkPlace (mkN "kahvila") ssa ;
- Disco = mkPlace (mkN "disko") ssa ;
- Pub = mkPlace (mkN "pub") ssa ;
- AmusementPark = mkPlace (mkN "huvi" (mkN "puisto")) ssa ;
- Zoo = mkPlace (mkN "elin" (mkN "tarha")) ssa ;
-
--- currencies
-
- DanishCrown = mkCN (mkN "Tanskan kruunu") | mkCN (mkN "kruunu") ;
- Dollar = mkCN (mkN "dollari") ;
- Euro = mkCN (mkN "euro") ;
- Lei = mkCN (mkN "lei") ;
- Leva = mkCN (mkN "leva") ;
- NorwegianCrown = mkCN (mkN "Norjan kruunu") | mkCN (mkN "kruunu") ;
- Pound = mkCN (mkN "punta") ;
- Rouble = mkCN (mkN "rupla") ;
- SwedishCrown = mkCN (mkN "Ruotsin kruunu") | mkCN (mkN "kruunu") ;
- Zloty = mkCN (mkN "zloty" "zlotyja") ;
-
--- nationalities
-
- Belgian = mkA "belgialainen" ;
- Belgium = {np = mkNP (mkPN "Belgia") ; isExternal = False} ;
- Bulgarian = mkNat (mkPN "bulgaria") (mkPN "Bulgaria") (mkA "bulgarialainen") ;
- Catalan = mkNat (mkPN "katalaani") (mkPN "Katalonia") (mkA "katalonialainen") ;
- Danish = mkNat (mkPN "tanska") (mkPN "Tanska") (mkA "tanskalainen") ;
- Dutch = mkNat (mkPN "hollanti") (mkPN "Hollanti") (mkA "hollantilainen") ;
- English = mkNat (mkPN "englanti") (mkPN "Englanti") (mkA "englantilainen") ;
- Finnish =
- mkNat (mkPN (mkN "suomi" "suomia")) (mkPN (mkN "Suomi" "Suomia"))
- (mkA "suomalainen") ;
- Flemish = mkNP (mkPN "flaami") ;
- French = mkNat (mkPN "ranska") (mkPN "Ranska") (mkA "ranskalainen") ;
- German = mkNat (mkPN "saksa") (mkPN "Saksa") (mkA "saksalainen") ;
- Italian = mkNat (mkPN "italia") (mkPN "Italia") (mkA "italialainen") ;
- Norwegian = mkNat (mkPN "norja") (mkPN "Norja") (mkA "norjalainen") ;
- Polish = mkNat (mkPN "puola") (mkPN "Puola") (mkA "puolalainen") ;
- Romanian = mkNat (mkPN "romania") (mkPN "Romania") (mkA "romanialainen") ;
- Russian = mkNatExternal (mkPN "venj") (mkPN "Venj") (mkA "venlinen") ;
- Spanish = mkNat (mkPN "espanja") (mkPN "Espanja") (mkA "espanjalainen") ;
- Swedish = mkNat (mkPN "ruotsi") (mkPN "Ruotsi") (mkA "ruotsalainen") ;
-
- ---- it would be nice to have a capitalization Predef function
-
--- means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN "bussi") ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "lautta") ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN "metro") ;
- Taxi = mkTransport (mkN "taksi") ;
- Train = mkTransport L.train_N ;
- Tram = mkTransport (mkN "raitiovaunu") ;
-
- ByFoot = ParadigmsFin.mkAdv "jalkaisin" ;
-
-
--- actions
-
- AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
- AHasChildren p num = mkCl p.name have_V2 (mkNP num L.child_N) ;
- AHasName p name = mkCl (nameOf p) name ;
- AHasRoom p = haveForPerson p.name (mkCN (mkN "huone")) ;
- AHasTable p = haveForPerson p.name (mkCN (mkN "pyt")) ;
- AHungry p = E.AdvExistNP (SyntaxFin.mkAdv on_Prep p.name) (mkNP (mkN "nlk")) ;
- AIll p = mkCl p.name (mkA "sairas") ;
- AKnow p = mkCl p.name (mkV "tiet") ;
- ALike p item = mkCl p.name L.like_V2 item ;
- ALive p co = mkCl p.name (mkVP (mkVP (mkV "asua")) (SyntaxFin.mkAdv (casePrep (if_then_else Case co.isExternal adessive inessive)) co.np)) ;
- ALove p q = mkCl p.name (mkV2 (mkV "rakastaa") partitive) q.name ;
- AMarried p = mkCl p.name (ParadigmsFin.mkAdv "naimisissa") ;
- AReady p = mkCl p.name (ParadigmsFin.mkA "valmis") ;
- AScared p = mkCl p.name (caseV partitive (mkV "pelottaa")) ;
- ASpeak p lang = mkCl p.name (mkV2 (mkV "puhua") partitive) lang ;
- AThirsty p = E.AdvExistNP (SyntaxFin.mkAdv on_Prep p.name) (mkNP (mkN "jano")) ;
- ATired p = mkCl p.name (caseV partitive (mkV "vsytt")) ;
- AUnderstand p = mkCl p.name (mkV "ymmrt") ;
- AWant p obj = mkCl p.name (mkV2 "haluta") obj ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
- QWhatAge p = mkQS (mkQCl (E.ICompAP (mkAP L.old_A)) p.name) ;
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "maksaa"))) ;
- ItCost item price = mkCl item (mkV2 (mkV "maksaa")) price ;
-
- PropOpen p = mkCl p.name open_Adv ;
- PropClosed p = mkCl p.name closed_Adv ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_Adv) d.habitual) ;
-
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss ("nhdn"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss ("nhdn"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("nhdn")))
- (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 (mkN "vaimo") ;
- Husband = xOf sing L.man_N ;
- Son = xOf sing L.boy_N ;
- Daughter = xOf sing (mkN "tytr") ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = let d = "maanantai" in mkDay (mkPN d) (d + "sin") ;
- Tuesday = let d = "tiistai" in mkDay (mkPN d) (d + "sin") ;
- Wednesday = let d = "keskiviikko" in mkDay (mkPN d) (d + "isin") ;
- Thursday = let d = "torstai" in mkDay (mkPN d) (d + "sin") ;
- Friday = let d = "perjantai" in mkDay (mkPN d) (d + "sin") ;
- Saturday = let d = "lauantai" in mkDay (mkPN d) (d + "sin") ;
- Sunday = let d = "sunnuntai" in mkDay (mkPN d) (d + "sin") ;
-
- Tomorrow = ParadigmsFin.mkAdv "huomenna" ;
-
--- transports
-
- HowFar place = mkQS (mkQCl far_IAdv place.name) ;
- HowFarFrom x y =
- mkQS (mkQCl far_IAdv (mkCl y.name x.from)) ;
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkCl y.name
- (mkVP (mkVP x.from) t))) ;
- HowFarBy place t =
- mkQS (mkQCl far_IAdv (mkCl place.name t)) ;
- -- mkQS (mkQCl (mkIAdv far_IAdv t) y.name) ;
-
- WhichTranspPlace trans place =
- mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
-
- IsTranspPlace trans place =
- mkQS (mkQCl (mkCl (mkVP (mkVP (mkVP (mkV "pst")) place.to) trans.by))) ;
- -- pseek keskustaan bussilla
- -- mkQS (mkQCl (E.AdvPredNP place.to L.go_V (E.PartCN (trans.name)))) ;
- -- meneek keskustaan bussia
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl (mkA (mkN "lheinen") "lhempi" "lhin") ;
- TheCheapest = mkSuperl (mkA (mkN "halpa") "halvempi" "halvin") ;
- TheMostExpensive = mkSuperl (mkA (mkN "kallis") "kalliimpi" "kallein") ;
- TheMostPopular = mkSuperl (mkA "suosittu") ;
- TheWorst = mkSuperl (mkA "huono") ;
-
- SuperlPlace sup p = placeNP sup p ;
-
- oper
- mkNat : PN -> PN -> A ->
- {lang : NP ; prop : A ; country : {np : NP ; isExternal : Bool}} = \nat,co,pro ->
- {lang = mkNP nat ;
- prop = pro ;
- country = {np = mkNP co ; isExternal = False}
- } ;
-
- mkNatExternal : PN -> PN -> A ->
- {lang : NP ; prop : A ; country : {np : NP ; isExternal : Bool}} = \nat,co,pro ->
- {lang = mkNP nat ;
- prop = pro ;
- country = {np = mkNP co ; isExternal = True}
- } ;
-
- ---- using overloaded paradigms slows down compilation dramatically
- mkDay : PN -> Str -> {name : NP ; point : Adv ; habitual : Adv} = \d,s ->
- let day = mkNP d in
- {name = day ;
- point = SyntaxFin.mkAdv (casePrep essive) day ;
- habitual = ParadigmsFin.mkAdv s
- } ;
-
- mkPlace : N -> Bool -> {name : CN ; isExternal : Bool ; isPl : Bool} = \p,e -> {
- name = mkCN p ;
- isExternal = e ;
- isPl = False
- } ;
- ssa = False ;
- lla = True ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (E.GenNP b) a c) p ;
-
- nameOf : NPPerson -> NP = \p -> (xOf sing L.name_N p).name ;
-
- oper
- -- do you have a table for five persons
- haveForPerson : NP -> CN -> Card -> Cl = \p,a,n ->
- mkCl p have_V2
----- (mkNP (E.PartCN a) ---- partitive works in questions )
- (mkNP (mkNP a_Det a)
- (SyntaxFin.mkAdv for_Prep (mkNP n (mkN "henki" "henki")))) ;
----- (SyntaxFin.mkAdv for_Prep (mkNP (mkDet n)))) ; -- 60s faster compile 25/10/2010
-
- open_Adv = ParadigmsFin.mkAdv "avoinna" ;
- closed_Adv = ParadigmsFin.mkAdv "kiinni" ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxFin.mkAdv (casePrep adessive) (mkNP n)
- } ;
-
- mkSuperl : A -> Det = \a -> SyntaxFin.mkDet the_Quant (mkOrd a) ;
-
- far_IAdv = E.IAdvAdv L.far_Adv ;
-
---------------------------------------------------
--- New 30/11/2011 AR
---------------------------------------------------
-
- lin
- Thai = mkNat (mkPN "thai") (mkPN "Thaimaa") (mkA "thaimaalainen") ;
- Baht = mkCN (mkN "baht" "bahteja") ;
-
- Rice = mkCN (mkN "riisi") ;
- Pork = mkCN (mkN "sika") ;
- Beef = mkCN (mkN "nauta") ;
- Egg = mkCN L.egg_N ;
- Noodles = mkCN (mkN "nuudeli" "nuudeleita") ;
- Shrimps = mkCN (mkN "katka" (mkN "rapu")) ;
- Chili = mkCN (mkN "chili") ;
- Garlic = mkCN (mkN "valko" (mkN "sipuli")) ;
- Durian = mkCN (mkN "durian" "durianeja") ;
- Mango = mkCN (mkN "mango" "mangoja") ;
- Pineapple = mkCN (mkN "ananas" "ananaksia") ;
- Coke = mkCN (mkN "coca-cola") ;
- IceCream = mkCN (mkN "jtel" "jtelit") ;
- Salad = mkCN (mkN "salaatti") ;
- OrangeJuice = mkCN (mkN "appelsiini" (mkN "mehu")) ;
- Lemonade = mkCN (mkN "limsa") ;
-
- Beach = mkPlace (mkN "uima" (mkN "ranta")) lla ;
-
- ItsRaining = mkCl (mkVP L.rain_V0) ;
- ItsCold = mkCl (mkVP L.cold_A) ;
- ItsWarm = mkCl (mkVP L.warm_A) ;
- ItsWindy = mkCl (mkVP (mkV "tuulla")) ;
- SunShine = mkCl (mkNP the_Det L.sun_N) (mkVP (mkV "paistaa")) ;
-
- Smoke = mkVP (mkV "tupakoida") ;
-
- ADoctor = mkProfession (mkN "lkri" "lkreit") ;
- AProfessor = mkProfession (mkN "professori" "professoreita") ;
- ALawyer = mkProfession (mkN "laki" L.man_N) ;
- AEngineer = mkProfession (mkN "insinri" "insinrej") ;
- ATeacher = mkProfession (mkN "opettaja" "opettajia") ;
- ACook = mkProfession (mkN "kokki") ;
- AStudent = mkProfession (mkN "opiskelija" "opiskelijoita") ;
- ABusinessman = mkProfession (mkN "liike" L.man_N) ;
-
- oper
- mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
-
-}
diff --git a/examples/phrasebook/WordsFre.gf b/examples/phrasebook/WordsFre.gf
deleted file mode 100644
index 46d02defa..000000000
--- a/examples/phrasebook/WordsFre.gf
+++ /dev/null
@@ -1,277 +0,0 @@
--- (c) 2009 Ramona Enache and Aarne Ranta under LGPL
---# -coding=latin1
-
-concrete WordsFre of Words = SentencesFre ** open
- SyntaxFre,
- IrregFre,
- (E = ExtraFre),
- (L = LexiconFre),
- ParadigmsFre,
- (M = MorphoFre),
- (P = ParadigmsFre),
- Prelude in {
-
-
-lin
-
--- kinds
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN (mkN "fromage" masculine) ;
- Chicken = mkCN (mkN "poulet") ;
- Coffee = mkCN (mkN "caf") ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "viande") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "pizza" feminine) ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "th") ;
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
--- properties
-
- Bad = L.bad_A ;
- Boring = mkA "ennuyeux" ;
- Cheap = let bm = "bon march" in mkA bm bm bm bm ;
- Cold = L.cold_A ;
- Delicious = mkA "dlicieux" ;
- Expensive = mkA "cher" ;
- Fresh = mkA "frais" "frache" "frais" "frachement" ;
- Good = L.good_A ;
- Suspect = mkA "suspect" ;
- Warm = L.warm_A ;
-
--- places
-
- Airport = mkPlace (mkN "aroport") dative ;
- AmusementPark = mkPlace (compN (mkN "parc") ["d'attractions"]) dative ;
- Bank = mkPlace (mkN "banque") dative ;
- Bar = mkPlace (mkN "bar") dative ;
- Cafeteria = mkPlace (mkN "caftria") dative ;
- Center = mkPlace (mkN "centre" "centres" ParadigmsFre.masculine) dative ;
- Church = mkPlace (mkN "glise") dative ;
- Cinema = mkPlace (mkN "cinma" masculine) dative ;
- Disco = mkPlace (mkN "discothque" feminine) dative ;
- Hospital = mkPlace (mkN "hpital") dative ;
- Hotel = mkPlace (mkN "htel") dative ;
- Museum = mkPlace (mkN "muse" masculine) dative ;
- Park = mkPlace (mkN "parc") dative ;
- Parking = mkPlace (mkN "parking" masculine) dative ;
- Pharmacy = mkPlace (mkN "pharmacie" feminine) dative ;
- PostOffice = mkPlace (mkN "poste" feminine) dative ;
- Pub = mkPlace (mkN "pub" masculine) dative ;
- Restaurant = mkPlace (mkN "restaurant") dative ;
- School = mkPlace (mkN "cole") dative ;
- Shop = mkPlace (mkN "magasin") dative ;
- Station = mkPlace (mkN "gare") dative ;
- Supermarket = mkPlace (mkN "supermarch" masculine) dative ;
- Theatre = mkPlace (mkN "thtre" masculine) dative ;
- Toilet = mkCNPlacePl (mkCN (mkN "toilette")) dative dative;
- University = mkPlace (mkN "universit" feminine) dative ;
- Zoo = mkPlace (mkN "zoo" masculine) dative ;
-
- CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurant")) dative to_Prep ;
-
--- currencies
-
- DanishCrown = mkCN (mkA "danois") (mkN "couronne") | mkCN (mkN "couronne") ;
- Dollar = mkCN (mkN "dollar") ;
- Euro = mkCN (mkN "euro") ;
- Lei = mkCN (mkN "leu" "lei" masculine) ;
- Leva = mkCN (mkN "lev" "leva" masculine);
- NorwegianCrown = mkCN (mkA "norvgien") (mkN "couronne") | mkCN (mkN "couronne") ;
- Pound = mkCN (compN (mkN "livre") ["sterling"]);
- Rouble = mkCN (mkN "rouble" "rouble" masculine) ;
- SwedishCrown = mkCN (mkA "sudois") (mkN "couronne") | mkCN (mkN "couronne") ;
- Zloty = mkCN (mkN "zloty" "zlotych" masculine) ;
-
--- nationalities
-
- Belgian = mkA "belge" ;
- Belgium = mkNP (mkPN "Belgique") ;
- Bulgarian = mkNat "bulgare" "Bulgarie" ;
- Catalan = mkNat "catalan" "Catalogne" ;
- Danish = mkNat "danois" "Danemark" ;
- Dutch = mkNat "hollandais" "Holland" ;
- English = mkNat "anglais" "Angleterre" ;
- Finnish = mkNat "finlandais" "Finlande" ;
- Flemish = mkNP (mkPN "flamand") ;
- French = mkNat "franais" "France" ;
- German = mkNat "allemand" "Allemagne" ;
- Italian = mkNat "italien" "Italie" ;
- Norwegian = mkNat "norvgien" "Norvge" ;
- Polish = mkNat "polonais" "Pologne" ;
- Romanian = mkNat "roumain" "Roumanie" ;
- Russian = mkNat "russe" "Russie" ;
- Spanish = mkNat "espagnol" "Espagne" ;
- Swedish = mkNat "sudois" "Sude" ;
-
--- means of transportation
-
- Bike = mkTransport en_Prep L.bike_N ;
- Bus = mkTransport par_Prep (mkN "bus") ;
- Car = mkTransport en_Prep L.car_N ;
- Ferry = mkTransport en_Prep (mkN "ferry") ;
- Plane = mkTransport par_Prep L.airplane_N ;
- Subway = mkTransport par_Prep (mkN "mtro") ;
- Taxi = mkTransport en_Prep (mkN "taxi") ;
- Train = mkTransport par_Prep (mkN "train") ;
- Tram = mkTransport par_Prep (mkN "tram") ;
-
- ByFoot = P.mkAdv " pied" ;
-
-
--- actions
-
- AHasAge p num = mkCl p.name have_V2 (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 (mkN "chambre"))
- (SyntaxFre.mkAdv for_Prep (mkNP num (mkN "personne")))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "table"))
- (SyntaxFre.mkAdv for_Prep (mkNP num (mkN "personne")))) ;
- AMarried p = mkCl p.name (mkA "mari") ;
- AWant p obj = mkCl p.name vouloir_V2 obj ;
- ALike p item = mkCl item plaire_V2 p.name ;
- ASpeak p lang = mkCl p.name (mkV2 (mkV "parler")) lang ;
- ALove p q = mkCl p.name (mkV2 (mkV "aimer")) q.name ;
- AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "faim" feminine))) ;
- AReady p = mkCl p.name (mkA "prt") ;
- AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "soif" feminine))) ;
- ATired p = mkCl p.name (mkA "fatigu") ;
- AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "peur" feminine))) ;
- AIll p = mkCl p.name (mkA "malade") ;
- AUnderstand p = mkCl p.name (mkV IrregFre.comprendre_V2) ;
- AKnow p = mkCl p.name (mkV IrregFre.savoir_V2) ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
- AHasName p name = mkCl p.name (mkV2 (reflV (mkV "appeler"))) name ;
- ALive p co = mkCl p.name (mkVP (mkVP (mkV "habiter")) (SyntaxFre.mkAdv (mkPrep "en") co)) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "appeler")))) ;
- QWhatAge p = mkQS (mkQCl (mkIP whichSg_IDet (mkN "ge" masculine)) p.name have_V2) ;
-
- PropOpen p = mkCl p.name open_A ;
- PropClosed p = mkCl p.name closed_A ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
-
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "coter"))) ;
- ItCost item price = mkCl item (mkV2 (mkV "coter")) price ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
-
- PSeeYouPlace d = mkText (lin Text (ss ("on se voit"))) (mkPhrase (mkUtt d.at)) ;
- PSeeYouDate d = mkText (lin Text (ss ("on se voit"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("on se voit")))
- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
-
--- Relations are expressed as "my wife" or "the wife of my son", as defined by $xOf$
--- below. Languages with productive genitives can use an equivalent of
--- "my son's wife" for non-pronouns, as e.g. in English.
-
-
- Wife = xOf sing (mkN "femme") ;
- Husband = xOf sing (mkN "mari") ;
- Son = xOf sing (mkN "fils") ;
- Daughter = xOf sing (mkN "fille") ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDay "lundi" ;
- Tuesday = mkDay "mardi" ;
- Wednesday = mkDay "mercredi" ;
- Thursday = mkDay "jeudi" ;
- Friday = mkDay "vendredi" ;
- Saturday = mkDay "samedi" ;
- Sunday = mkDay "dimanche" ;
-
- Tomorrow = ParadigmsFre.mkAdv "demain" ;
-
--- modifiers of places
- TheBest = mkSuperl True L.good_A ;
- TheClosest = mkSuperl True L.near_A ;
- TheCheapest = mkSuperl False
- (compADeg {s = \\_ => (M.mkAdj "bon march" "bon march" "bon march" "bon march").s ;
- isPre = False ; lock_A = <>}) ;
- TheMostExpensive = mkSuperl True (mkA "cher") ;
- TheMostPopular = mkSuperl True (mkA "populaire") ;
- TheWorst = mkSuperl True L.bad_A ;
-
- SuperlPlace sup kind =
- let
- det : Det = mkDet the_Art sup.s ;
- name : NP = case sup.isPre of {
- True => mkNP det kind.name ; -- le meilleur bar
- False => mkNP the_Art (mkCN kind.name (mkNP det)) -- le bar le plus cher
- }
- in {
- name = name ;
- at = SyntaxFre.mkAdv kind.at name ;
- to = SyntaxFre.mkAdv kind.to name
- } ;
-
--- transports
-
- HowFar place = mkQS (mkQCl what_distance_IAdv place.name) ;
- HowFarFrom x y =
- mkQS (mkQCl (E.CompIQuant which_IQuant)
- (mkNP (mkNP distance_NP (SyntaxFre.mkAdv from_Prep x.name)) y.to)) ;
- HowFarFromBy x y t =
- mkQS (mkQCl (E.CompIQuant which_IQuant)
- (mkNP (mkNP (mkNP distance_NP (SyntaxFre.mkAdv from_Prep x.name)) y.to) t)) ;
- HowFarBy place t =
- mkQS (mkQCl what_distance_IAdv (mkNP place.name t)) ;
-
- WhichTranspPlace trans place =
- mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
-
- IsTranspPlace trans place =
- lin QS {s = \\_ => (E.EstcequeS (mkS (mkCl (mkCN trans.name (SyntaxFre.mkAdv for_Prep place.name))))).s} ;
- -- mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ;
-
- oper
- mkNat : Str -> Str -> NPNationality = \nat,co ->
- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day = mkNP (mkPN d) in
- mkNPDay day (P.mkAdv d) (P.mkAdv ("le" ++ d)) ;
-
- mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN p) i dative ;
-
- open_A = P.mkA "ouvert" ;
- closed_A = P.mkA "ferm" ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
-
- mkTransport : Prep -> N -> {name : CN ; by : Adv} = \p,n -> {
- name = mkCN n ;
- by = E.PrepCN p n -- par train, en vlo
- } ;
-
- en_Prep = mkPrep "en" ;
- par_Prep = mkPrep "par" ;
-
- mkSuperl : Bool -> A -> {s : Ord ; isPre : Bool} = \b,a ->
- {s = SyntaxFre.mkOrd a ; isPre = b} ;
-
-
- what_distance_IAdv = ss " quelle distance"**{lock_IAdv=<>};
-
- distance_NP : NP = mkNP the_Det (mkN "distance" feminine) ;
-
-
-}
diff --git a/examples/phrasebook/WordsGer.gf b/examples/phrasebook/WordsGer.gf
deleted file mode 100644
index 4984eb080..000000000
--- a/examples/phrasebook/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/examples/phrasebook/WordsHin.gf b/examples/phrasebook/WordsHin.gf
deleted file mode 100644
index 6c640a104..000000000
--- a/examples/phrasebook/WordsHin.gf
+++ /dev/null
@@ -1,280 +0,0 @@
---2 Implementations of Words, with English as example
-
-concrete WordsHin of Words = SentencesHin **
- open
- SyntaxHin,
- CommonHindustani,
- ParadigmsHin,
- (L = LexiconHin),
- (P = ParadigmsHin),
--- IrregHin,
- ExtraHin,
- Prelude in {
-flags coding = utf8 ;
-
--- param Gender = Masc | Fem ;
- 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 (mkN "पनीर" Fem) ;
- Chicken = mkCN (mkN "मुरग़ी") ;
- Coffee = mkCN (mkN "काफ़ी") ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "गोश्त") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "पिज़्ज़ा") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "चाय" Fem) ;
- 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 = mkA "उबाऊ" ;
- Cheap = mkA "सस्ता" ;
- Cold = L.cold_A ;
- Delicious = mkA "मज़ेदार" ;
- Expensive = mkA "महंगा" ;
- Fresh = mkA "ताज़ा" ;
- Good = L.good_A ;
- Suspect = mkA "बुरा" ;
- 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 "हवाई अड्डा" "पर" ;
- AmusementPark = mkCompoundPlace "मनोरंजन" "उद्यान" "में" ;
- Bank = mkPlace "बैंक" "में" ;
- Bar = mkPlace "बार" "में" ;
- Cafeteria = mkPlace "जलपान घर" "में" ;
- Center = mkPlace "केन्द्र" "पर" ;
- Cinema = mkPlace "सिनेमा" "में" ;
- Church = mkPlace "गिरजा" "में" ;
- Disco = mkPlace "डिस्को" "में" ;
- Hospital = mkPlace "अस्पताल" "में" ;
- Hotel = mkPlace "होटेल" "में" ;
- Museum = mkPlace "संग्रहालय" "पर" ;
- Park = mkPlace "उद्यान" "में" ;
- Parking = mkCompoundPlace "कार" "पार्क" "में" ;
- Pharmacy = mkPlace "दवासाजी" "पर" ;
- PostOffice = mkCompoundPlace "डाक" "घर" "पर" ;
- Pub = mkPlace "पब" "में" ;
- Restaurant = mkPlace "रेस्तोरां" "में" ;
- School = mkPlace "स्कूल" "में" ;
- Shop = mkPlaceFem "दुकान" "में" Fem;
- Station = mkPlace "स्टेशन" "पर" ;
- Supermarket = mkPlace "सुपर बाज़ार" "में" ;
- Theatre = mkPlace "रंगशाला" "पर" ;
- Toilet = mkPlace "शौचालय" "में" ;
- University = mkPlaceFem "विश्वविद्यालय" "में" Fem;
- Zoo = mkPlace "चिड़ियाघर" "में" ;
-
- CitRestaurant cit = mkCNPlace (mkCN cit (mkN "रेस्तोरां")) in_Prep to_Prep ;
-
-
--- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
-
- DanishCrown = mkCN (mkA "डेनिश") (mkN "क्राउन") | mkCN (mkN "क्राउन") ;
- Dollar = mkCN (mkN "डालर") ;
- Euro = mkCN (mkN "यूरो") ; -- to prevent euroes
- Lei = mkCN (mkN "लेई") ;
- Leva = mkCN (mkN "लेवा") ;
- NorwegianCrown = mkCN (mkA "नारवीजियन") (mkN "क्राउन") | mkCN (mkN "क्राउन") ;
- Pound = mkCN (mkN "पाउंड") ;
- Rouble = mkCN (mkN "रूबल") ;
- SwedishCrown = mkCN (mkA "स्वीडिश") (mkN "क्राउन") | mkCN (mkN "क्राउन") ;
- Zloty = mkCN (mkN "ज़्लोटी" Fem) ;
-
--- Nationalities
-
- Belgian = mkA "बेल्जियन" ;
- Belgium = mkNP (mkPN "बेल्जियम") ;
- Bulgarian = mkNat "बुलगेरियाई" "बुलगेरिया" ;
- Catalan = mkNPNationality (mkNP (mkPN "केटलान")) (mkNP (mkPN "केटलान")) (mkA "केटलान") ;
- Danish = mkNat "डेनिश" "डेनमार्क" ;
- Dutch = mkNPNationality (mkNP (mkPN "डच")) (mkNP the_Quant (mkN "नीदरलैंड्स")) (mkA "डच") ;
- English = mkNat "अंग्रेज़" "इंगलैंड" ;
- Finnish = mkNat "फ़िनिश" "फ़िनलैंड" ;
- Flemish = mkNP (mkPN "फ़्लेमिश") ;
- French = mkNat "फ़्रान्सीसी" "फ़्रान्स" ;
- German = mkNat "जर्मन" "जर्मनी" ;
- Italian = mkNat "इतालवी" "इटली" ;
- Norwegian = mkNat "नार्वीजियन" "नार्वे" ;
- Polish = mkNat "पोलिश" "पोलैंड" ;
- Romanian = mkNat "रोमानियन" "रोमानिया" ;
- Russian = mkNat "रूसी" "रूस" ;
- Spanish = mkNat "स्पेनी" "स्पेन" ;
- Swedish = mkNat "स्वीडिश" "स्वीडन" ;
-
--- Means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN "बस" Fem) ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "फ़ेरी") ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN "सबवे") ;
- Taxi = mkTransport (mkN "टैक्सी") ;
- Train = mkTransport (mkN "रेल गाड़ी") ;
- Tram = mkTransport (mkN "ट्राम" Fem) ;
-
- ByFoot = P.mkAdv "पैदल चलकर" ;
-
--- Actions: the predication patterns are very often language-dependent.
-
--- AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsHin.mkAdv "का"));
- AHasAge p num = mkCl p.name (mkNP num (mkCN (modN 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 (mkN "कमरा")) (SyntaxHin.mkAdv for_Prep (mkNP num (P.mkN "व्यक्ति" "व्यक्ति" "व्यक्ति" "लोग" "लोगों" "लोगो" masculine)))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "मेज़")) (SyntaxHin.mkAdv for_Prep (mkNP num (P.mkN "व्यक्ति" "व्यक्ति" "व्यक्ति" "लोग" "लोगों" "लोगो" masculine)))) ;
- AHasName p name = mkCl (nameOf p) name ;
- AHungry p = mkCl p.name (mkA "भूखा") ;
- AIll p = mkCl p.name (mkA "बीमार") ;
- AKnow p = mkCl p.name (mkV "जानना") ;
- ALike p item = mkCl p.name (L.like_V2) item ;
- ALive p co = mkCl p.name (mkVP (mkVP (L.live_V)) (SyntaxHin.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name (L.love_V2) q.name ;
- AMarried p = mkCl p.name (P.mkIrregA "शादी शुदा") ;
- AReady p = mkCl p.name (mkA "तैयार") ;
--- AScared p = mkCl p.name (P.mkCompoundA "डरा" "हुआ") ;
- ASpeak p lang = mkCl p.name L.speak_V2 lang ;
- AThirsty p = mkCl p.name (mkA "प्यासा") ;
--- ATired p = mkCl p.name (P.mkCompoundA "थका" "हुआ") ;
- AUnderstand p = mkCl p.name (mkV "समझना") ;
- AWant p obj = mkCl p.name (mkV2 (mkV "चाहना")) obj ;
--- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.name) ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
-
--- miscellaneous
-
--- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
- QWhatName p = mkQS (mkQCl what_IAdv (mkNP p.poss (P.mkN "नाम" "नाम" "नाम" "नाम" "नाम" "नाम" masculine))) ;
--- QWhatAge p = mkQS (mkQCl (mkCl (mkNP (modQuant p.poss)) (mkAdv "उम्र"))) ;
- QWhatAge p = mkQS (mkQCl howMuch_IAdv (mkNP (modQuant p.poss) (P.mkN "उम्र" "उम्र" "उम्र" "उम्र" "उम्र" "उम्र" feminine))) ;
- HowMuchCost item = mkQS (mkQCl (mkCl (modNP item) (mkAdv ["की क़ीमत"]))) ;
- ItCost item price = mkCl item (mkV2 (mkV "क़ीमत")) price ;
-
- PropOpen p = mkCl p.name open_Adv ;
- PropClosed p = mkCl p.name closed_Adv ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP d) open_Adv) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP d) closed_Adv) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP d.habitual) open_Adv);
- PropClosedDay p d = mkCl p.name (mkVP (mkVP d.habitual) closed_Adv) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (mkPhrase (mkUtt d)) (lin Text (Prelude.ss ("मिलते हैं"))) ;
- PSeeYouPlace p = mkText (mkPhrase (mkUtt p.at)) (lin Text (Prelude.ss ("मिलते हैं"))) ;
- PSeeYouPlaceDate p d =
- mkText (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d)))
- (lin Text (Prelude.ss ("मिलते हैं"))) ;
-
--- Relations are expressed as "मय wिफ़e" or "मय सon'स wिफ़e", as defined by $xOf$
--- below. Languages without productive genitives must use an equivalent of
--- "तहe wिफ़e oफ़ मय सoन" for non-pronouns.
-
- Wife = xOf ssing (mkN "पत्नी") ;
- Husband = xOf ssing (mkN "पति") ;
- Son = xOf ssing (mkN "बेटा") ;
- Daughter = xOf ssing (mkN "बेटी") ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDay "सोमवार" ;
- Tuesday = mkDay "मंगलवार" ;
- Wednesday = mkDay "बुधवार" ;
- Thursday = mkDay "गुरुवार" ;
- Friday = mkDay "शुक्रवार" ;
- Saturday = mkDay "शनिवार" ;
- Sunday = mkDay "रविवार" ;
-
- Tomorrow = P.mkAdv "कल" ;
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA "सस्ता") ;
- TheMostExpensive = mkSuperl (mkA "महंगा") ;
- TheMostPopular = mkSuperl (mkA "मशहूर") ;
- 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 (SyntaxHin.mkAdv from_Prep x.name))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxHin.mkAdv from_Prep x.name)) t)) ;
- HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP y.name t)) ;
-
- WhichTranspPlace trans place =
- mkQS (mkQCl (SyntaxHin.mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
-
- IsTranspPlace trans place =
- mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ;
-
-
-
--- auxiliaries
-
- oper
-
- mkNat : Str -> Str -> NPNationality = \nat,co ->
- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
--- let day = mkNP (mkPN d) in
- mkNPDay (mkNP (mkCN (mkN d))) (SyntaxHin.mkAdv to_Prep (mkNP (mkCN (mkN d))))
- (SyntaxHin.mkAdv to_Prep (mkNP (mkCN (mkN d)))) ; --changed from plNum to sgNum
-
- mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i ->
--- mkCNPlace (mkCN (P.mkN comp (mkN p))) (P.mkPrep i) to_Prep ;
- mkCNPlace (mkCN (mkN (comp++p))) (P.mkPrep i i) to_Prep ;
-
- mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN (mkN p)) (P.mkPrep i i) to_Prep ;
- mkPlaceFem : Str -> Str -> Gender -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i,g ->
- mkCNPlace (mkCN (P.mkN p g)) (P.mkPrep i i) to_Prep ;
-
- open_Adv = P.mkAdv "खुला";
- closed_Adv = P.mkAdv "बंद" ;
-
- xOf : SentencesHin.GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
-
- nameOf : NPPerson -> NP = \p -> (xOf ssing (mkN "नाम") p).name ;
- ssing = False ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxHin.mkAdv by8means_Prep (mkNP n)
- } ;
-
--- mkSuperl : A -> Det = \a -> SyntaxHin.mkDet the_Art (SyntaxHin.mkOrd a) ;
- mkSuperl : A -> Det = \a -> lin Det { s = \\n,g,c => a.s ! n ! g ! c ! Superl ; n = Sg } ;
-
- far_IAdv = ExtraHin.IAdvAdv (P.mkAdv "दूर") ;
- what_IAdv = lin IAdv {s = "क्या"} ;
- howMuch_IAdv = lin IAdv {s = "कितनी"} ;
--- cost_Predet = lin Predet {s = ["की क़ीमत"]} ;
--------------------
-modN : N -> N = \noun -> lin N {s = \\n,c =>noun.s!n!c++"का" ; g =noun.g} ;
-modQuant : Quant -> Quant = \q -> lin Quant {s = \\n,g,c => q.s ! n ! Fem ! c ; a = q.a};
-modNP : NP -> NP = \np -> lin NP {s = \\_ => np.s ! NPC Obl ; a = np.a};
-
-}
diff --git a/examples/phrasebook/WordsIta.gf b/examples/phrasebook/WordsIta.gf
deleted file mode 100644
index cd8b6d5f8..000000000
--- a/examples/phrasebook/WordsIta.gf
+++ /dev/null
@@ -1,269 +0,0 @@
--- (c) 2010 Aarne Ranta and Olga Caprotti under LGPL
---# -coding=latin1
-
-concrete WordsIta of Words = SentencesIta ** open
- SyntaxIta,
- BeschIta,
- (E = ExtraIta),
- (L = LexiconIta),
- (P = ParadigmsIta),
- ParadigmsIta,
- Prelude in {
-
-lin
-
--- kinds
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN (mkN "formaggio") ;
- Chicken = mkCN (mkN "pollo") ;
- Coffee = mkCN (mkN "caff") ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "carne" feminine) ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "pizza") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "t") ;
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
--- properties
-
- Bad = L.bad_A ;
- Boring = mkA "noioso" ;
- Cheap = mkA "conveniente";
- Cold = L.cold_A ;
- Delicious = mkA "delizioso" ;
- Expensive = mkA "costoso" ;
- Fresh = mkA "fresco" ;
- Good = L.good_A ;
- Warm = L.warm_A ;
- Suspect = mkA "sospetto" ;
-
--- places
-
- Airport = mkPlace (mkN "aeroporto") dative ;
- AmusementPark = mkPlace (mkN "parco divertimenti") dative ;
- Bank = mkPlace (mkN "banca") P.in_Prep ;
- Bar = mkPlace (mkN "bar") dative ;
- Cafeteria = mkPlace (mkN "mensa") P.in_Prep;
- Center = mkPlace (mkN "centro") P.in_Prep;
- Church = mkPlace (mkN "chiesa") P.in_Prep ;
- Cinema = mkPlace (mkN "cinema" masculine) dative ;
- Disco = mkPlace (mkN "discoteca") P.in_Prep;
- Hospital = mkPlace (mkN "ospedale") P.in_Prep ;
- Hotel = mkPlace (mkN "albergo") P.in_Prep ;
- Museum = mkPlace (mkN "museo") dative ;
- Park = mkPlace (mkN "parco") dative ;
- Parking = mkPlace (mkN "parcheggio") dative ;
- Pharmacy = mkPlace (mkN "farmacia") P.in_Prep ;
- PostOffice = mkPlace (mkN "ufficio postale") dative ;
- Pub = mkPlace (mkN "birreria") P.in_Prep ;
- Restaurant = mkPlace (mkN "ristorante") dative ;
- School = mkPlace (mkN "scuola") dative ;
- Shop = mkPlace (mkN "negozio") P.in_Prep ;
- Station = mkPlace (mkN "stazione" feminine) dative ;
- Supermarket = mkPlace (mkN "supermercato") dative ;
- Theatre = mkPlace (mkN "teatro") dative ;
- Toilet = mkPlace (mkN "bagno") P.in_Prep ;
- University = mkPlace (mkN "universit") dative ;
- Zoo = mkPlace (mkN "zoo") dative ;
-
- CitRestaurant cit = mkCNPlace (mkCN cit (mkN "ristorante")) P.in_Prep dative ;
-
-
-
--- transports
-
- HowFar place = mkQS (mkQCl how8much_IAdv (mkCl place.name (mkV "distare")));
-
--- -- how far is place from x
- HowFarFrom x place = mkQS (mkQCl how8much_IAdv (mkCl place.name (mkVP (mkV2 (mkV "distare") from_Prep) x.name ))) ;
-
--- -- how far is place by t
- HowFarBy place t = mkQS (mkQCl how8much_IAdv (mkCl place.name (mkVP (mkVP (mkV "distare")) t)) );
-
--- -- how far is place from x by t
- HowFarFromBy x place t = mkQS (mkQCl how8much_IAdv (mkCl place.name (mkVP (mkVP (mkV2 (mkV "distare") from_Prep)x.name) t) ));
-
--- HowFarFromBy x y t = mkQS (mkQCl (mkIAdv (mkIAdv L.far_Adv (SyntaxIta.mkAdv from_Prep x.name)) t) y.name) ;
-
--- currencies
-
- DanishCrown = mkCN (mkA "danese") (mkN "corona") | mkCN (mkN "corona") ;
- Dollar = mkCN (mkN "dollar") ;
- Euro = mkCN (mkN "Euro" "Euro" masculine) ;
- Lei = mkCN (mkN "leu") ;
- Leva = mkCN (mkN "lev" "lev" masculine) ;
- NorwegianCrown = mkCN (mkA "norvegese") (mkN "corona") | mkCN (mkN "corona") ;
- Pound = mkCN (mkN "sterlina") ;
- Rouble = mkCN (mkN "rublo") ;
- SwedishCrown = mkCN (mkA "svedese") (mkN "corona") | mkCN (mkN "corona") ;
- Zloty = mkCN (mkN "zloty" "zlotych" masculine) ;
-
--- nationalities
-
- Belgian = mkA "belga" ;
- Belgium = mkNP (mkPN "Belgio") ;
- Bulgarian = mkNat "bulgaro" "Bulgaria" ;
- Catalan = mkNat "catalano" "Catalonia" ;
- Danish = mkNat "danese" "Danimarca" ;
- Dutch = mkNat "olandese" "Olanda" ;
- English = mkNat "inglese" "Inghilterra" ;
- Finnish = mkNat "finlandese" "Finlandia" ;
- Flemish = mkNP (mkPN "fiammingo") ;
- French = mkNat "francese" "Francia" ;
- German = mkNat "tedesco" "Germania" ;
- Italian = mkNat "italiano" "Italia" ;
- Norwegian = mkNat "norvegese" "Norvegia" ;
- Polish = mkNat "polacco" "Polonia" ;
- Romanian = mkNat "rumeno" "Romania" ;
- Russian = mkNat "russo" "Russia" ;
- Spanish = mkNat "spagnolo" "Spagna" ;
- Swedish = mkNat "svedese" "Svezia" ;
-
--- means of transportation
-
- Bike = mkTransport (mkN "bicicletta") ;
- Bus = mkTransport (mkN "autobus" "autobus" masculine) ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "traghetto") ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN "metro" feminine) ;
- Taxi = mkTransport (mkN "taxi" masculine) ;
- Train = mkTransport (mkN "treno") ;
- Tram = mkTransport (mkN "tram") ;
-
- ByFoot = ParadigmsIta.mkAdv "a piedi" ;
-
--- actions
-
- AHasAge p num = mkCl p.name have_V2 (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 (mkN "camera")) (SyntaxIta.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "tavolo")) (SyntaxIta.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
- AHasName p name = mkCl p.name (mkV2 (reflV (mkV "chiamare"))) name ;
- AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "fame" feminine))) ;
- AIll p = mkCl p.name (mkA "malato") ;
- AKnow p = mkCl p.name (mkV (sapere_78 "sapere")) ;
- ALike p item = mkCl item (mkV2 (mkV (piacere_64 "piacere")) dative) p.name ;
- ALive p co =
- mkCl p.name (mkVP (mkVP (mkV "abitare")) (SyntaxIta.mkAdv P.in_Prep co)) ;
- ALove p q = mkCl p.name (mkV2 (mkV "amare")) q.name ;
- AMarried p = mkCl p.name (mkA "sposato") ;
- AReady p = mkCl p.name (mkA "pronto") ;
- AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ;
- ASpeak p lang = mkCl p.name (mkV2 (mkV "parlare")) lang ;
- AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ;
- ATired p = mkCl p.name (mkA "stanco") ;
- AUnderstand p = mkCl p.name (mkV "capire") ;
- AWant p obj = mkCl p.name (mkV2 (mkV (volere_96 "volere"))) obj ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
-
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "chiamare")))) ;
- QWhatAge p = mkQS (mkQCl (mkIP how8many_IDet L.year_N) p.name have_V2) ;
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "costare"))) ;
- ItCost item price = mkCl item (mkV2 (mkV "costare")) price ;
-
- PropOpen p = mkCl p.name open_A ;
- PropClosed p = mkCl p.name closed_A ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
-
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss ("ci vediamo"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss ("ci vediamo"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("ci vediamo")))
- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
-
--- Relations are expressed as "my wife" or "the wife of my son", as defined by $xOf$
--- below. Languages with productive genitives can use an equivalent of
--- "my son's wife" for non-pronouns, as e.g. in English.
-
- Wife = xOf sing (mkN "moglie" feminine) ;
- Husband = xOf sing (mkN "marito" masculine) ;
- Son = xOf sing (mkN "figlio" masculine) ;
- Daughter = xOf sing (mkN "figlia" feminine) ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDay "luned" ;
- Tuesday = mkDay "marted" ;
- Wednesday = mkDay "mercoled" ;
- Thursday = mkDay "gioved" ;
- Friday = mkDay "venerd" ;
- Saturday = mkDay "sabato" ;
- Sunday = mkDay "domenica" ;
-
- Tomorrow = P.mkAdv "domani" ;
-
-lin
- 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 (SyntaxIta.mkAdv for_Prep place.name)))) ;
-
--- modifiers of places
-
- TheBest = mkSuperl True L.good_A ;
- TheClosest = mkSuperl False L.near_A ;
- TheCheapest = mkSuperl False (mkA (mkA "economico") (mkA "meno caro")) ;
- TheMostExpensive = mkSuperl False (mkA "costoso") ;
- TheMostPopular = mkSuperl False (mkA "alla moda") ;
- TheWorst = mkSuperl True L.bad_A ;
-
- SuperlPlace sup kind =
- let
- det : Det = mkDet the_Art (mkOrd sup.s) ;
- name : NP = case sup.isPre of {
- True => mkNP det kind.name ; -- il migliore bar
- False => mkNP the_Art (mkCN (mkAP (mkOrd sup.s)) kind.name) -- il bar pi caro
- }
- in {
- name = name ;
- at = SyntaxIta.mkAdv kind.at name ;
- to = SyntaxIta.mkAdv kind.to name
- } ;
-
--- auxiliaries
-
- oper
- mkNat : Str -> Str -> NPNationality = \nat,co ->
- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day = mkNP (mkPN d) in
- mkNPDay day (P.mkAdv d) (P.mkAdv ("di" ++ d)) ; ---- ?
-
- mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN p) i dative ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = E.PrepCN P.in_Prep n
- } ;
-
- mkSuperl : Bool -> A -> {s : A ; isPre : Bool} = \b,a ->
- {s = a ; isPre = b} ;
-
- open_A = mkA "aperto" ;
- closed_A = mkA "chiuso" ;
-
-}
diff --git a/examples/phrasebook/WordsJpn.gf b/examples/phrasebook/WordsJpn.gf
deleted file mode 100644
index 6cc406a45..000000000
--- a/examples/phrasebook/WordsJpn.gf
+++ /dev/null
@@ -1,385 +0,0 @@
---2 Implementations of Words, with Jpnlish as example
-
-concrete WordsJpn of Words = SentencesJpn **
- open
- SyntaxJpn,
- ParadigmsJpn,
- (L = LexiconJpn),
- (P = ParadigmsJpn),
- (R = ResJpn),
--- IrregJpn,
- ExtraJpn,
- 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 (mkN "チーズ" R.Inanim) ; -- "chiizu"
- Chicken = mkCN (mkN "鶏" R.Inanim "切れ" False) ; -- "tori" "kire"
- Coffee = mkCN (mkN "コーヒー" R.Inanim "杯" False) ; -- "koohi" "hai" (cups of)
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "肉" R.Inanim "切れ" False) ; -- "niku" "kire"
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "ピザ" R.Inanim "枚" False) ; -- "piza" "mai" (smth flat)
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "お茶" R.Inanim "杯" False) ; -- "ocha" "hai" (cups of)
- 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 = mkA "つまらない" ;
- Cheap = mkA "安い" ; -- "yasui"
- Cold = L.cold_A ;
- Delicious = mkA "美味しい" ; -- "oishii"
- Expensive = mkA "高い" ; -- "takai"
- Fresh = mkA "新鮮な" ; -- "shinsenna"
- Good = L.good_A ;
- Suspect = mkA "怪しい" ; -- "ayashii"
- 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 "空港" "で" ; -- "kuukou" "de"
- AmusementPark = mkPlace "遊園地" "で" ; -- "yuuenchi" "de"
- Bank = mkPlace "銀行" "で" ; -- "ginkou" "de"
- Bar = mkPlace "バー" "で" ; -- "baa" "de"
- Cafeteria = mkPlace "食堂" "で" ; -- "shokudou" "de"
- Center = mkPlace "センター" "で" ; -- "sentaa" "de"
- Cinema = mkPlace "映画館" "で" ; -- "eigakan" "de"
- Church = mkPlace "教会" "で" ; -- "kyoukai" "de"
- Disco = mkPlace "ディスコ" "で" ; -- "disuko" "de"
- Hospital = mkPlace "病院" "で" ; -- "byouin" "de"
- Hotel = mkPlace "ホテル" "で" ; -- "hoteru" "de"
- Museum = mkPlace "博物館" "で" ; -- "hakubutsukan" "de"
- Park = mkPlace "公園" "で" ; -- "kouen" "de"
- Parking = mkPlace "駐車場" "で" ; -- "chuushajou" "de"
- Pharmacy = mkPlace "薬局" "で" ; -- "kyoukai" "de"
- PostOffice = mkPlace "郵便局" "で" ; -- "yuubinkyoku" "de"
- Pub = mkPlace "パブ" "で" ; -- "pabu" "de"
- Restaurant = mkPlace "レストラン" "で" ; -- "resutoran" "de"
- School = mkPlace "学校" "で" ; -- "gakkou" "de"
- Shop = mkPlace "商店" "で" ; -- "mise" "de"
- Station = mkPlace "駅" "で" ; -- "eki" "de"
- Supermarket = mkPlace "スーパー" "で" ; -- "suupaa" "de"
- Theatre = mkPlace "劇場" "で" ; -- "gekijou" "de"
- Toilet = mkPlace "お手洗い" "で" ; -- "otearai" "de"
- University = mkPlace "大学" "で" ; -- "daigaku" "de"
- Zoo = mkPlace "動物園" "で" ; -- "doubutsuen" "de"
-
- CitRestaurant cit = mkCNPlace (mkCN cit.prop (mkN "レストラン")) in_Prep to_Prep ; -- "resutoran"
-
-
--- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
-
- DanishCrown = mkCur "デンマーク・クローネ" | mkCur "クローナ" ; -- "denmaaku kuroune"
- Dollar = mkCur "ドル" ; -- "doru"
- Euro = mkCur "ユーロ" ; -- "yuuro"
- Lei = mkCur "レウ" ; -- "reu"
- Leva = mkCur "レフ" ; -- "refu"
- NorwegianCrown = mkCur "ノルウェー・クローネ" | mkCur "クローナ" ; -- "noruwee kuroune"
- Pound = mkCur "ポンド" ; -- "pondo"
- Rouble = mkCur "ルーブル" ; -- "ruuburu"
- Rupee = mkCur "ルピ" ; -- "rupii"
- SwedishCrown = mkCur "スウェーデン・クローナ" | mkCur "クローナ" ; -- "Suu~eeden kurouna"
- Zloty = mkCur "ズロティ" ; -- "zuroti"
- Yuan = mkCur "元" ; -- "gen"
-
--- Nationalities
-
- Belgian = {prop = mkA "ベルギー の" ; citizenship = mkNP (mkN "ベルギー 人")} ; -- "berugii no"
- Belgium = mkNP (mkPN "ベルギー") ; -- "berugii"
- Bulgarian = mkNat "ブルガリア" ; -- "burugaria"
- Catalan = mkNat "カタロニア" ; -- "kataronia"
- Chinese = mkNat"中国" ; -- "chuugoku"
- Danish = mkNat "デンマーク" ; -- "denmaaku"
- Dutch = mkNat "オランダ" ; -- "oranda"
- English = mkNPNationality (mkNP (mkPN "英語")) (mkNP (mkPN "イギリス")) -- "eigo"
- (mkA "イギリスの") (mkNP (mkPN "イギリス人")) ;
- Finnish = mkNat "フィンランド" ; -- "finrando"
- Flemish = mkNP (mkPN "フラマン 語") ; -- "furaman go"
- French = mkNat "フランス" ; -- "furansu"
- German = mkNat "ドイツ" ; -- "doitsu"
- Hindi = mkNP (mkPN "ヒンディー語") ; -- "hindii"
- India = mkNP (mkPN "インド") ; -- "indo"
- Indian = {prop = mkA "インドの" ; citizenship = mkNP (mkN "インド人")} ; -- "indo no"
- Italian = mkNat "イタリア" ; -- "itaria"
- Norwegian = mkNat "ノルウェー" ; -- "noruwee"
- Polish = mkNat "ポーランド" ; -- "porando"
- Romanian = mkNat "ルーマニア" ; -- "ruumania"
- Russian = mkNat "ロシア" ; -- "roshia"
- Spanish = mkNat "スペイン" ; -- "supein"
- Swedish = mkNat "スウェーデン" ; -- "suweeden"
-
--- Means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN "バス") ; -- "basu"
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "フェリー") ; -- "ferii"
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN "地下鉄") ; -- "chikatetsu"
- Taxi = mkTransport (mkN "タクシー") ; -- "takushii"
- Train = mkTransport (mkN "電車") ; -- "densha"
- Tram = mkTransport (mkN "市電") ; -- "shiden"
-
- ByFoot = P.mkAdv "徒歩で" ; -- "toho de"
-
--- Actions: the predication patterns are very often language-dependent.
-
- AHasAge p num = mkCl p.name (mkNP num (mkNounWOCounter "歳")) ;
- AHasChildren p num = mkCl p.name (mkV2 "いる" "が" R.Gr2) (mkNP num L.child_N) ;
- AHasName p name = mkCl (nameOf p) name ;
- AHasRoom p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "部屋")) (SyntaxJpn.mkAdv for_Prep (mkNP num (mkNounWOCounter "人")))) ; -- "heya"
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "テーブル")) (SyntaxJpn.mkAdv for_Prep (mkNP num (mkNounWOCounter "人")))) ;
- AHungry p = mkCl p.name (P.mkV "お腹が空いている" R.Gr1) ; -- "onaka ga suite iru"
- AIll p = mkCl p.name (mkA "病気の") ;
- AKnow p = mkCl p.name mkKnow ;
- ALike p item = mkCl p.name (mkA2 "好きな" "が") item ;
- ALive p co = mkCl p.name (mkVP (mkVP (mkV "住んでいる" R.Gr2)) (SyntaxJpn.mkAdv in_Prep co)) ; -- "sundeiru"
- ALove p q = mkCl p.name (mkV2 "愛している" "を" R.Gr2) q.name ; -- "aishiteiru"
- AMarried p = mkCl p.name (mkA "結婚している" "既婚の") ; -- "kekkonshiteiru" "kikonno"
- AReady p = mkCl p.name L.ready_A ;
- AScared p = mkCl p.name (mkA "怖い") ;
- ASpeak p lang = mkCl p.name L.speak_V2 lang ;
- AThirsty p = mkCl p.name (mkA "喉が乾いている" "渇した") ;
- -- "nodo ga kawaiteiru" "kasshita"
- ATired p = mkCl p.name (mkA "疲れている" "疲れた") ;
- -- "tsukareteiru" "tsukareta"
- AUnderstand p = case p.name.meaning of {
- R.SomeoneElse => mkCl p.name (v2toVP L.understand_V2) ;
- R.Me => mkCl p.name (mkV "分かる" R.Gr1) -- "wakaru"
- } ;
- AWant p obj = case (p.name).meaning of {
- R.Me => mkCl p.name (mkA2 "欲しい" "が") obj ;
- R.SomeoneElse => mkCl p.name (mkA2 "欲しがっている" "欲しい" "が") obj
- } ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl (mkIComp whatSg_IP) (nameOf p)) ;
- QWhatAge p = mkQS (mkQCl howOld_IAdv (mkCl p.name R.mkCopula)) ;
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "かかる"))) ;
- ItCost item price = mkCl item (mkV2 "かかる" "" R.Gr1) price ;
-
- PropOpen p = mkCl p.name mkOpen ;
- PropClosed p = mkCl p.name mkClosed ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP mkOpen) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP mkClosed) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP mkOpen) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP mkClosed) d.habitual) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (mkPhrase (mkUtt d)) (lin Text (ss ("会いましょう"))) ; -- "aimashou"
- PSeeYouPlace p = mkText (mkPhrase (mkUtt p.at)) (lin Text (ss ("会いましょう"))) ; -- "aimashou"
- PSeeYouPlaceDate p d =
- mkText (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d)))
- (lin Text (ss ("会いましょう"))) ; -- "aimashou"
-
--- 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 (mkN "妻" "奥さん" R.Anim "人" False "妻たち") ; -- "tsuma" "okusan"
- Husband = xOf (mkN "夫" "ご主人" R.Anim "人" False "夫たち") ; -- "otto" "goshujin"
- Son = xOf (mkN "息子" "息子さん" R.Anim "人" False "息子たち") ; -- "musuko"
- Daughter = xOf (mkN "娘" "お嬢さん" R.Anim "人" False "娘たち") ; -- "musume" "ojousan"
- Children = xOf L.child_N ;
-
--- week days
-
- Monday = mkDay "月曜日" ; -- "getsuyoubi"
- Tuesday = mkDay "火曜日" ; -- "kayoubi"
- Wednesday = mkDay "水曜日" ; -- "suiyoubi"
- Thursday = mkDay "木曜日" ; -- "mokuyoubi"
- Friday = mkDay "金曜日" ; -- "kin'youbi"
- Saturday = mkDay "土曜日" ; -- "doyoubi"
- Sunday = mkDay "日曜日" ; -- "nichiyoubi"
-
- Tomorrow = P.mkAdv "明日" ; -- "ashita"
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA "安い") ; -- "yasui"
- TheMostExpensive = mkSuperl (mkA "高い") ; -- "takai"
- TheMostPopular = mkSuperl (mkA "盛んな") ; -- "sakanna"
- TheWorst = mkSuperl L.bad_A ;
-
- SuperlPlace sup p = placeNP sup p ;
-
-
--- transports
-
- HowFar place = mkQS (mkQCl howFar_IAdv (mkCl place.name (mkA "遠い"))) ;
- HowFarFrom x y =
- mkQS (mkQCl howFar_IAdv (mkCl (mkNP y.name (SyntaxJpn.mkAdv from_Prep x.name)) (mkA "遠い"))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl howFar_IAdv (mkCl
- (mkNP y.name (SyntaxJpn.mkAdv from_Prep (mkNP x.name t))) (mkA "遠い"))) ;
- HowFarBy y t = mkQS (mkQCl howFar_IAdv (mkCl (mkNP y.name t) (mkA "遠い"))) ;
-
- 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))) ;
-
-
-
--- auxiliaries
-
- oper
-
- mkNat : Str -> NPNationality = \co ->
- mkNPNationality (mkNP (mkPN (co + "語"))) (mkNP (mkPN co))
- (mkA (co + "の")) (mkNP (mkPN (co + "人"))) ; ---- mkA ...
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day : NP = mkNP (mkPN d) in
- mkNPDay day (SyntaxJpn.mkAdv in_Prep day)
- (SyntaxJpn.mkAdv in_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
-
- mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i ->
- mkCNPlace (mkCN (P.mkN (comp + p))) (P.mkPrep i) to_Prep ;
-
- mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN (mkN p)) (P.mkPrep i) to_Prep ;
-
- xOf : N -> NPPerson -> NPPerson = \f,p ->
- {name = mkNP the_Det (mkCN f (SyntaxJpn.mkAdv possess_Prep p.name)) ;
- isPron = False ; poss = the_Quant} ; ---- poss not used
-
- mkOpen : A = mkA "開いている" "開いた" ; -- "aiteiru"
- mkClosed : A = mkA "閉まっている" "閉まった" ; -- "shimatteiru"
-
- nameOf : NPPerson -> NP = \p -> (xOf (mkN "名前") p).name ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxJpn.mkAdv by8means_Prep (mkNP n)
- } ;
-
- mkSuperl : A -> Det = \a -> SyntaxJpn.mkDet the_Art (SyntaxJpn.mkOrd a) ;
-
- howFar_IAdv : IAdv = lin IAdv {s = \\st => "どのくらい" ; particle = "" ; wh8re = False} ;
-
- howOld_IAdv : IAdv = lin IAdv {s = \\st => "何歳" ; particle = "" ; wh8re = False} ;
-
- mkCur : Str -> Currency = \c -> lin Currency (lin CN {
- s = \\n,st => c ;
- anim = R.Inanim ;
- counter = c ;
- counterReplace = True ;
- counterTsu, hasAttr = False ;
- object, prepositive = \\st => ""
- } ) ;
-
- mkNounWOCounter : Str -> CN = \noun -> lin CN {
- s = \\n,st => noun ;
- anim = R.Inanim ;
- counter = noun ;
- counterReplace = True ;
- counterTsu, hasAttr = False ;
- object, prepositive = \\st => ""
- } ;
-
- mkKnow : V = lin V {
- s = table {
- R.Resp => table {
- (R.TPres|R.TFut) => table {
- R.Pos => "知っています" ;
- R.Neg => "知りません"
- } ;
- R.TPast => table {
- R.Pos => "知っていました" ;
- R.Neg => "知りませんでした"
- }
- } ;
- R.Plain => table {
- (R.TPres|R.TFut) => table {
- R.Pos => "知っている" ;
- R.Neg => "知らない"
- } ;
- R.TPast => table {
- R.Pos => "知っていた" ;
- R.Neg => "知らなかった"
- }
- }
- } ;
- te = table {
- R.Pos => "知って" ;
- R.Neg => "知らないで"
- } ;
- a_stem = "知ら" ;
- i_stem = "知り" ;
- ba = table {
- R.Pos => "知れば" ;
- R.Neg => "知らなければ"
- } ;
- needSubject = True
- } ;
-
---------------------------------------------------
--- New 30/11/2011 AR
---------------------------------------------------
-
- lin
- Thai = mkNat "タイ" ; -- "tai"
- Baht = mkCur "バーツ" ; -- "baatsu"
-
- Rice = mkCN (mkN "ご飯") ; -- "gohan"
- Pork = mkCN (mkN "豚肉") ; -- "butaniku"
- Beef = mkCN (mkN "牛肉") ; -- "gyuuniku"
- Egg = mkCN L.egg_N ;
- Noodles = mkCN (mkN "ヌードル") ; -- "nuudoru"
- Shrimps = mkCN (mkN "海老") ; -- "ebi"
- Chili = mkCN (mkN "チリ") ; -- "chiri"
- Garlic = mkCN (mkN "大蒜") ; -- "ninniku"
- Durian = mkCN (mkN "ドリアン") ; -- "dorian"
- Mango = mkCN (mkN "マンゴ") ; -- "mango"
- Pineapple = mkCN (mkN "パイナップル") ; -- "painappuru"
- Coke = mkCN (mkN "コーク") ; -- "kooku"
- IceCream = mkCN (mkN "アイスクリーム") ; -- "aisukuriimu"
- Salad = mkCN (mkN "サラダ") ; -- "sarada"
- OrangeJuice = mkCN (mkN "オレンジジュース") ; -- "orenjijuusu"
- Lemonade = mkCN (mkN "レモネード") ; -- "remoneedo"
-
- Beach = mkPlace "beach" "on" ;
-
- ItsRaining = mkCl (mkVP R.mkRain) ;
- ItsCold = mkCl (mkVP L.cold_A) ;
- ItsWarm = mkCl (mkVP L.warm_A) ;
- ItsWindy = mkCl (mkVP (P.mkA "風が強い")) ;
- SunShine = mkCl (mkNP L.sun_N) (mkVP (mkV "輝いている" R.Gr2)) ;
- -- "taiyou wa kagayaite iru"
-
- Smoke = mkVP (P.mkV "煙草を吸う" R.Gr1) ; -- "tabako o suu"
-
- ADoctor = mkProfession (mkN "医者") ; -- "isha"
- AProfessor = mkProfession (mkN "教授") ; -- "kyouju"
- ALawyer = mkProfession (mkN "弁護士") ; -- "bengoshi"
- AEngineer = mkProfession (mkN "技術者") ; -- "gijutsusha"
- ATeacher = mkProfession (mkN "先生") ; -- "sensei"
- ACook = mkProfession (mkN "料理人") ; -- "ryourinin"
- AStudent = mkProfession (mkN "学生") ; -- "gakusei"
- ABusinessman = mkProfession (mkN "実業家") ; -- "jitsugyouka"
-
- oper
- mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
-}
diff --git a/examples/phrasebook/WordsLav.gf b/examples/phrasebook/WordsLav.gf
deleted file mode 100644
index bcc13a091..000000000
--- a/examples/phrasebook/WordsLav.gf
+++ /dev/null
@@ -1,319 +0,0 @@
---# -path=.:present
-
-concrete WordsLav of Words = SentencesLav **
-open
- SyntaxLav,
- ParadigmsLav,
- (P = ParadigmsLav),
- (L = LexiconLav),
- ExtraLav,
- ResLav,
- Prelude,
- Predef
-in {
-
- flags
- coding = utf8 ;
-
- lin
- -- Kinds
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN L.cheese_N ;
- Chicken = mkCN (mkN "vista") ;
- Coffee = mkCN (mkN "kafija") ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN L.meat_N ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "pica") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "tēja") ;
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
- -- Properties
-
- Bad = L.bad_A ;
- Boring = mkA "garlaicīgs" ;
- Cheap = mkA "lēts" ;
- Cold = L.cold_A ;
- Delicious = mkA "garšīgs" ;
- Expensive = mkA "dārgs" ;
- Fresh = mkA "svaigs" ;
- Good = L.good_A ;
- Suspect = mkA "aizdomīgs" ;
- Warm = L.warm_A ;
-
- -- Places
-
- Airport = mkPlace "lidosta" in_Prep ;
- AmusementPark = mkPlace "atrakciju parks" in_Prep ;
- Bank = mkPlace "banka" in_Prep ;
- Bar = mkPlace "bārs" in_Prep ;
- Cafeteria = mkPlace "kafejnīca" in_Prep ;
- Center = mkPlace "centrs" in_Prep ;
- Cinema = mkPlace "kino" in_Prep ;
- Church = mkPlace "baznīca" in_Prep ;
- Disco = mkPlace "diskotēka" in_Prep ;
- Hospital = mkPlace "slimnīca" in_Prep ;
- Hotel = mkPlace "viesnīca" in_Prep ;
- Museum = mkPlace "muzejs" in_Prep ;
- Park = mkPlace "parks" in_Prep ;
- Parking = mkPlace "autostāvvieta" in_Prep ;
- Pharmacy = mkPlace "aptieka" in_Prep ;
- PostOffice = mkPlace "pasts" in_Prep ;
- Pub = mkPlace "krogs" in_Prep ;
- Restaurant = mkPlace "restorāns" in_Prep ;
- School = mkPlace "skola" in_Prep ;
- Shop = mkPlace "veikals" in_Prep ;
- Station = mkPlace "stacija" in_Prep ;
- Supermarket = mkPlace "lielveikals" in_Prep ;
- Theatre = mkPlace "teātris" in_Prep ;
- Toilet = mkPlace "tualete" in_Prep ;
- University = mkPlace "universitāte" in_Prep ;
- Zoo = mkPlace "zoodārzs" in_Prep ;
-
- CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restorāns")) in_Prep to_Prep ;
-
- -- Currencies
-
- DanishCrown = mkCN (mkA "dāņu") (mkN "krona") | mkCN (mkN "krona") ;
- Dollar = mkCN (mkN "dolārs") ;
- Euro = mkCN (mkN "eiro") ;
- Lei = mkCN (mkN "leja") ;
- Leva = mkCN (mkN "leva") ;
- NorwegianCrown = mkCN (mkA "norvēģu") (mkN "krona") | mkCN (mkN "krona") ;
- Pound = mkCN (mkN "mārciņa") ;
- Rouble = mkCN (mkN "rublis") ;
- SwedishCrown = mkCN (mkA "zviedru") (mkN "krona") | mkCN (mkN "krona") ;
- Zloty = mkCN (mkN "zlots") ;
-
- -- Nationalities
-
- Belgian = mkA "beļģu" ;
- Belgium = mkNP (mkPN "Beļģija") ;
- Bulgarian = mkNat (mkA "bulgāru") (P.mkAdv "bulgāriski") (mkPN "Bulgārija") ;
- Catalan = mkNat (mkA "kataloniešu") (P.mkAdv "kataloniski") (mkPN "Katalonija") ;
- Danish = mkNat (mkA "dāņu") (P.mkAdv "dāniski") (mkPN "Dānija") ;
- Dutch = mkNat (mkA "holandiešu") (P.mkAdv "holandiski") (mkPN "Nīderlande") ;
- English = mkNat (mkA "angļu") (P.mkAdv "angliski") (mkPN "Anglija") ;
- Finnish = mkNat (mkA "somu") (P.mkAdv "somiski") (mkPN "Somija") ;
- Flemish = mkLang (mkA "flāmu") (P.mkAdv "flāmiski") ;
- French = mkNat (mkA "franču") (P.mkAdv "franciski") (mkPN "Francija") ;
- German = mkNat (mkA "vācu") (P.mkAdv "vāciski") (mkPN "Vācija") ;
- Italian = mkNat (mkA "itāļu") (P.mkAdv "itāliski") (mkPN "Itālija") ;
- Norwegian = mkNat (mkA "norvēģu") (P.mkAdv "norvēģiski") (mkPN "Norvēģija") ;
- Polish = mkNat (mkA "poļu") (P.mkAdv "poliski") (mkPN "Polija") ;
- Romanian = mkNat (mkA "rumāņu") (P.mkAdv "rumāniski") (mkPN "Rumānija") ;
- Russian = mkNat (mkA "krievu") (P.mkAdv "krieviski") (mkPN "Krievija") ;
- Spanish = mkNat (mkA "spāņu") (P.mkAdv "spāniski") (mkPN "Spānija") ;
- Swedish = mkNat (mkA "zviedru") (P.mkAdv "zviedriski") (mkPN "Zviedrija") ;
-
- -- Means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN "autobuss") ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "prāmis") ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN "metro") ;
- Taxi = mkTransport (mkN "taksometrs") ;
- Train = mkTransport (mkN "vilciens") ;
- Tram = mkTransport (mkN "tramvajs") ;
- ByFoot = P.mkAdv "kājām" ;
-
- -- Actions
-
- AHasAge p num = mkCl p.name have_V2 (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_V3 (mkNP a_Det (mkN "istaba")) (mkNP num (mkN "persona")) ;
- AHasTable p num = mkCl p.name have_V3 (mkNP a_Det (mkN "galdiņš")) (mkNP num (mkN "persona")) ;
-
- AHasName p name =
- mkCl p.name (mkV2 (mkV "saukt" "saucu" "saucu" Acc) nom_Prep) name |
- mkCl (nameOf p) name ;
-
- AHungry p = mkCl p.name (mkA (mkV "izsalkt" "izsalkstu" "izsalku") active_voice) ;
- AIll p = mkCl p.name (mkA "slims") ;
- AKnow p = mkCl p.name (mkV "zināt" third_conjugation) ;
- ALike p item = mkCl p.name (mkV2 (mkV "garšot" second_conjugation Dat) nom_Prep) item ;
- ALive p co = mkCl p.name (mkVP (mkVP (mkV "dzīvot" second_conjugation)) (SyntaxLav.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name L.love_V2 q.name ;
- AMarried p = mkCl p.name (mkA (mkV "precēties" third_conjugation) active_voice) ;
- AReady p = mkCl p.name (mkA "gatavs") ;
-
- AScared p =
- mkCl p.name (mkV "baidīties" third_conjugation) |
- mkCl p.name (mkA (mkV "nobīties" "nobīstos" "nobijos") active_voice) ;
-
- ASpeak p lang =
- mkCl p.name (mkVP (mkVP (mkV "runāt" second_conjugation)) lang.modif) |
- mkCl p.name (mkV2 (mkV "runāt" second_conjugation) loc_Prep) lang.lang ;
-
- AThirsty p = mkCl p.name (mkA (mkV "izslāpt" "izslāpstu" "izslāpu") active_voice) ;
- ATired p = mkCl p.name (mkA (mkV "nogurt" "nogurstu" "noguru") active_voice) ;
- AUnderstand p = mkCl p.name (mkV "saprast" "saprotu" "sapratu") ;
- AWant p obj = mkCl p.name (mkV2 (mkV "vēlēties" third_conjugation)) obj ;
-
- -- TODO: IrregLav.doties_V
- AWantGo p place = mkCl p.name (mkVV (mkV "vēlēties" third_conjugation)) (mkVP (mkVP (mkV "doties" "dodos" "devos")) place.to) ;
- ---- mkVV by AR 28/8/2012
-
- -- Quick & dirty, or ok?
- QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (mkV2 (mkV "saukt" "saucu" "saucu" Acc) nom_Prep) (mkNP (mkN [])))) ;
-
- -- Quick & dirty
- -- TODO: how8much_IAdv >>> how8many_IDet (but the word order!) or how8many_IAdv
- -- mkNP a_Quant pluralNum L.year_N >>> mkNP pluralNum L.year_N
- -- Cannot use have_V2 because of a different valence
- QWhatAge p = mkQS (mkQCl how8much_IAdv (mkCl p.name (mkV2 (mkV "būt" Dat) gen_Prep) (mkNP the_Quant pluralNum L.year_N))) ;
-
- -- Quick & dirty
- -- TODO: item is the subject >>> use NP -> V -> Cl (changing the default word order)
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl (mkVP (mkV2 (mkV "maksāt" second_conjugation) nom_Prep) item))) ;
-
- ItCost item price = mkCl item (mkV2 (mkV "maksāt" second_conjugation) acc_Prep) price ;
-
- PropOpen p = mkCl p.name open_A ;
- PropClosed p = mkCl p.name closed_A ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
-
- -- Building phrases from strings is complicated: the solution is to use
- -- mkText : Text -> Text -> Text ;
- PSeeYouDate d = mkText (lin Text (ss ("tiksimies"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss ("tiksimies"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d = mkText (lin Text (ss ("tiksimies"))) (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 "sieva") ;
- Husband = xOf sing (mkN "vīrs") ;
- Son = xOf sing (mkN "dēls") ;
- Daughter = xOf sing (mkN "meita") ;
- Children = xOf plur L.child_N ;
-
- -- week days
-
- Monday = mkDay "pirmdiena" ;
- Tuesday = mkDay "otrdiena" ;
- Wednesday = mkDay "trešdiena" ;
- Thursday = mkDay "ceturtdiena" ;
- Friday = mkDay "piektdiena" ;
- Saturday = mkDay "sestdiena" ;
- Sunday = mkDay "svētdiena" ;
-
- Tomorrow = P.mkAdv "rīt" ;
-
- -- modifiers of places
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA "lēts") ;
- TheMostExpensive = mkSuperl (mkA "dārgs") ;
- TheMostPopular = mkSuperl (mkA "populārs") ;
- 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 (mkCl y.name (SyntaxLav.mkAdv from_Prep x.name))) ;
- HowFarFromBy x y t = mkQS (mkQCl far_IAdv (mkCl y.name (SyntaxLav.mkAdv from_Prep (mkNP x.name t)))) ;
- HowFarBy y t = mkQS (mkQCl far_IAdv (mkCl 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
- mkLang : A -> Adv -> NPLanguage = \la,mo -> {
- lang = mkNP (mkCN la (mkN "valoda")) ;
- modif = mo
- } ;
-
- mkNat : A -> Adv -> PN -> NPNationality = \la,mo,co ->
- mkNPNationality (mkLang la mo) (mkNP co) la ;
-
- mkDay : Str -> NPDay = \d ->
- mkNPDay (mkNP (mkPN d))
- (P.mkAdv (Predef.tk 1 d))
- (SyntaxLav.mkAdv in_Prep (mkNP the_Quant plNum (mkCN (mkN d)))) ;
-
- --mkCompoundPlace : Str -> Str -> Prep -> {
- -- name : CN ;
- -- at : Prep ;
- -- to : Prep ;
- -- isPl : Bool
- --} = \comp,p,i -> mkCNPlace (mkCN (P.mkN comp (mkN p))) i to_Prep ;
-
- mkPlace : Str -> Prep -> {name : CN ; at : SyntaxLav.Prep ; to : SyntaxLav.Prep ; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN (mkN p)) i to_Prep ; ---- SyntaxLav.Prep by AR 28/8/2012
-
- open_A = P.mkA "atvērts" ;
-
- closed_A = P.mkA "slēgts" ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
-
- nameOf : NPPerson -> NP = \p ->
- (xOf sing (mkN "vārds") p).name ;
-
- mkTransport : N -> {
- name : CN ;
- by : Adv
- } = \n -> {
- name = mkCN n ;
- by = SyntaxLav.mkAdv by8means_Prep (mkNP n)
- } ;
-
- mkSuperl : A -> Det = \a ->
- SyntaxLav.mkDet the_Art (SyntaxLav.mkOrd a) ;
-
- far_IAdv = ExtraLav.IAdvAdv (mkAdv "tālu") ;
-
---------------------------------------------------
--- New 30/11/2011 AR
---------------------------------------------------
-
- lin
- Thai = mkNat (mkA "taizemiešu") (mkPN "Taizeme") ;
- Baht = mkCN (mkN "bats") ;
- Rice = mkCN (mkN "rīss") ;
- Pork = mkCN (mkN "cūkgaļa") ;
- Beef = mkCN (mkN "liellops") ;
- Egg = mkCN L.egg_N ;
- Noodles = mkCN (mkN "nūdele") ;
- Shrimps = mkCN (mkN "garnele") ;
- Chili = mkCN (mkN "čili") ;
- Garlic = mkCN (mkN "ķiploks") ;
- Durian = mkCN (mkN "durians") ;
- Mango = mkCN (mkN "mango") ;
- Pineapple = mkCN (mkN "ananass") ;
- Coke = mkCN (mkN "kola") ;
- IceCream = mkCN (mkN "saldējums") ;
- Salad = mkCN (mkN "salāts") ;
- OrangeJuice = mkCN (mkA "apelsīnu") (mkN "sula") ;
- Lemonade = mkCN (mkN "limonāde") ;
- Beach = mkPlace "pludmale" in_Prep ;
- ItsRaining = mkCl (progressiveVP (mkVP L.rain_V0)) ;
- ItsCold = mkCl (mkVP L.cold_A) ;
- ItsWarm = mkCl (mkVP L.warm_A) ;
- ItsWindy = mkCl (mkVP (P.mkA "vējains")) ;
- SunShine = mkCl (mkNP the_Det L.sun_N) (progressiveVP (mkVP (mkV "spīdēt" third_conjugation))) ;
- Smoke = mkVP (P.mkV "smēķēt" second_conjugation) ;
- ADoctor = mkProfession (mkN "ārsts") ;
- AProfessor = mkProfession (mkN "profesors") ;
- ALawyer = mkProfession (mkN "jurists") ;
- AEngineer = mkProfession (mkN "inženieris") ;
- ATeacher = mkProfession (mkN "skolotājs") ;
- ACook = mkProfession (mkN "pavārs") ;
- AStudent = mkProfession (mkN "students") ;
- ABusinessman = mkProfession (mkN "uzņēmējs") ;
-
- oper
- mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
-
-}
diff --git a/examples/phrasebook/WordsNor.gf b/examples/phrasebook/WordsNor.gf
deleted file mode 100644
index 861ad9c79..000000000
--- a/examples/phrasebook/WordsNor.gf
+++ /dev/null
@@ -1,273 +0,0 @@
--- (c) 2009 Aarne Ranta under LGPL
---# -coding=latin1
-
-concrete WordsNor of Words = SentencesNor **
- open SyntaxNor, ParadigmsNor, IrregNor, (L = LexiconNor), ExtraNor, StructuralNor, Prelude in {
-
- lin
-
--- kinds of food
-
- Apple = mkCN (mkN "eple" "eplet" "epler" "eplene") ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN (mkN "ost" "osten" "oster" "ostene") ;
- Chicken = mkCN (mkN "kylling" "kyllingen" "kyllinger" "kyllingene") ;
- Coffee = mkCN (mkN "kaffe" "kaffet" "kaffen" "kaffene") ; -- av kaffe ?
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "kjtt" "kjttet" "kjtt" "kjtta") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "pizza" "pizzaen" "pizzaer" "pizzaene") ; -- av pizza ?
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "te" "teen" "teer" "teene") ; -- av te ?
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
--- properties
-
- Bad = L.bad_A ;
- Cheap = mkA "billig" ;
- Boring = mkA "kjedelig" ;
- Cold = L.cold_A ;
- Delicious = mkA "deilig" ;
- Expensive = mkA "dyr" ;
- Fresh = mkA "fersk" ;
- Good = L.good_A ;
- Suspect = mkA "suspekt" "suspekt" ;
- Warm = L.warm_A ;
-
--- places
-
-
- Airport = mkPlace (mkN "flyplass" "flyplassen" "flyplasser" "flyplassene") "p" "til";
- AmusementPark = mkPlace (mkN "fornyelsespark" "fornyelsesparken" "fornyelsesparker" "fornyelsesparkene") "i" "til";
- Bank = mkPlace (mkN "bank" "banken" "banker" "bankene") "i" "til";
- Bar = mkPlace (mkN "bar" "baren" "barer" "barene") "i" "til"; -- ?? check forms
- Cafeteria = mkPlace (mkN "kafeteria" "kafeterian" "kafeterier" "kafeteriene") "i" "til";
- Center = mkPlace (mkN "sentrum" "sentrum" "sentre" "sentrene") "i" "til";
- Cinema = mkPlace (mkN "kino" "kino" "kinoer" "kinoene") "p" "p";
- Church = mkPlace (mkN "kirke" "kirka" "kirker" "kirkene") "i" "til";
- Disco = mkPlace (mkN "diskotek" "diskoteket" "diskoteker" "diskotekene") "p" "p";
- Hospital = mkPlace (mkN "sykehus" "sykehuset" "sykehus" "sykehusa") "p" "til";
-
- Hotel = mkPlace (mkN "hotel" "hotellet" "hoteller" "hotellene") "p" "til";
- Museum = mkPlace (mkN "museum" "museet" "museer" "museene") "i" "til";
- Park = mkPlace (mkN "park" "parken" "parker" "parkene") "i" "til";
- Parking = mkPlace (mkN "parkeringsplass" "parkeringsplassen" "parkeringsplasser" "parkeringplassene") "p" "til";
- Pharmacy = mkPlace (mkN "apotek" "apoteket" "apoteker" "apotekene") "p" "til";
- PostOffice = mkPlace (mkN "postkontor" "postkontoret" "postkontorer" "postkontorene") "p" "til";
- Pub = mkPlace (mkN "pub" "puben" "puber" "pubene") "p" "til";
- Restaurant = mkPlace (mkN "restaurant" "restauranten" "restauranter" "restaurantene") "p" "til";
- School = mkPlace (mkN "skole" "skola" "skoler" "skolene") "i" "til";
- Shop = mkPlace (mkN "butikk" "butikken" "butikker" "butikkene") "i" "til";
- Station = mkPlace (mkN "stasjon" "stasjonen" "stasjoner" "stasjonene") "p" "til";
- Supermarket = mkPlace (mkN "supermarked" "supermarkedet" "supermarkeder" "supermarkedene") "p" "til";
- Theatre = mkPlace (mkN "teater" "teatret" "teatre" "teatrene") "p" "til";
- Toilet = mkPlace (mkN "toalett" "toalettet" "toaletter" "toalettene") "p" "p";
- University = mkPlace (mkN "universitet" "universitetet" "universitet" "universiteta") "i" "til";
- Zoo = mkPlace (mkN "dyrepark" "dyreparken" "dyreparker" "dyreparkene") "p" "til";
-
- CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurant" "restauranten" "restauranter" "restaurantene")) on_Prep to_Prep ;
-
--- currencies
-
- DanishCrown = mkCN (mkA "dansk") (mkN "krone" "krona" "kroner" "kronene") | mkCN (mkN "krone" "krona" "kroner" "kronene") ;
- Dollar = mkCN (mkN "dollar" "dollaren" "dollar" "dollar") ; -- i dollar ?
- Euro = mkCN (mkN "euro" "euroen" "euro" "euro") ; -- i euro
- Lei = mkCN (mkN "leu" "leu" "leis" "leis") ; -- den leis ?
- Leva = mkCN (mkN "lev" "lev" "leva" "leva") ; -- det leva ?
- NorwegianCrown = mkCN (mkA "norsk") (mkN "krone" "krona" "kroner" "kronene") | mkCN (mkN "krone" "krona" "kroner" "kronene") ;
- Pound = mkCN (mkN "pund" "pundet" "pund" "punda") ; -- i pounds ?
- Rouble = mkCN (mkN "rubel" "rubelen" "rubler" "rublene") ; -- av rubler ?
- SwedishCrown = mkCN (mkA "svensk") (mkN "krone" "krona" "kroner" "kronene") | mkCN (mkN "krone" "krona" "kroner" "kronene") ;
- Zloty = mkCN (mkN "zloty" "zloty" "zloty" "zloty") ; -- i/den zloty ?
-
--- nationalities
-
-
- Belgian = mkA "belgisk" ;
- Belgium = mkNP (mkPN "Belgia") ;
- Bulgarian = mkNat "bulgarsk" "Bulgaria" ;
- Catalan = mkNat "katalansk" "Katalonia" ;
- Danish = mkNat "dansk" "Danmark" ;
- Dutch = mkNat "nederlandsk" "Nederland" ;
- English = mkNat "engelsk" "England" ;
- Finnish = mkNat "finsk" "Finland" ;
- Flemish = mkNP (mkPN "flamsk") ;
- French = mkNat "fransk" "Frankrike" ;
- German = mkNat "tysk" "Tyskland" ;
- Italian = mkNat "italiensk" "Italia" ;
- Norwegian = mkNat "norsk" "Norge" ;
- Polish = mkNat "polsk" "Polen" ;
- Romanian = mkNat "rumensk" "Romania" ;
- Russian = mkNat "russisk" "Russland" ;
- Spanish = mkNat "spansk" "Spania" ;
- Swedish = mkNat "svensk" "Sverige" ;
-
-
-
--- Means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN "buss" "bussen" "busser" "bussene") ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "ferge" "fergen" "ferger" "fergene") ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN "undergrunnsbane" "undergrunnsbanen" "undergrunnsbaner" "undergrunnsbanene") ; -- check ?
- Taxi = mkTransport (mkN "drosje" "drosja" "drosjer" "drosjene") ;
- Train = mkTransport (mkN "tog" "toget" "tog" "toga") ;
- Tram = mkTransport (mkN "trikk" "trikken" "trikker" "trikkene") ;
-
- ByFoot = ParadigmsNor.mkAdv "til fots" ;
-
-
-
-
--- actions
-
- AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
- AHasName p name = mkCl p.name (mkV2 hete_V) name ;
- 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 (mkN "rom" "rommet" "rommene" "romma"))
- (SyntaxNor.mkAdv for_Prep (mkNP num (mkN "person" "personen" "personer" "personene")))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "bord" "bordet" "bord" "borda"))
- (SyntaxNor.mkAdv for_Prep (mkNP num (mkN "person" "personen" "personer" "personene")))) ;
- AHungry p = mkCl p.name (mkA "sulten" "sultet" "sultne") ;
- AIll p = mkCl p.name (mkA "syk") ;
- AKnow p = mkCl p.name vite_V ;
- ALike p item = mkCl p.name (dirV2 (mk2V "like" "likte")) item ;
- ALive p co = mkCl p.name (mkVP (mkVP (mkV "bor")) (SyntaxNor.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name (dirV2 (regV "elske")) q.name ;
- AMarried p = mkCl p.name (mkA "gift") ;
- AReady p = mkCl p.name (mkA "klar") ;
- AScared p = mkCl p.name (mkA "redd") ;
- ASpeak p lang = mkCl p.name (dirV2 (regV "snakke")) lang ;
- AThirsty p = mkCl p.name (mkA "trstig") ;
- ATired p = mkCl p.name (mkA "sliten") ;
- AUnderstand p = mkCl p.name (irregV "forst" "forstod" "forsttt") ;
- AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl whatSg_IP p.name (mkV2 hete_V)) ;
- QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "koste"))) ;
- ItCost item price = mkCl item (mkV2 (mkV "koste")) price ;
-
- PropOpen p = mkCl p.name open_A ;
- PropClosed p = mkCl p.name closed_A ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("vi ses")))
- (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 (mkN "kone" "kona" "koner" "konene") ;
- Husband = xOf sing L.man_N ;
- Son = xOf sing (mkN "snn" "snnen" "snner" "snnene") ;
- Daughter = xOf sing (mkN "datter" "datteren" "dtre" "dtrene") ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDay "mandag" ;
- Tuesday = mkDay "tirsdag" ;
- Wednesday = mkDay "onsdag" ;
- Thursday = mkDay "torsdag" ;
- Friday = mkDay "fredag" ;
- Saturday = mkDay "lrdag" ;
- Sunday = mkDay "sndag" ;
-
- Tomorrow = ParadigmsNor.mkAdv "i morgen" ;
-
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA "billig") ;
- TheMostExpensive = mkSuperl (mkA "dyr") ;
- TheMostPopular = mkSuperl (mkA "populr") ;
- TheWorst = mkSuperl L.bad_A ;
-
- SuperlPlace sup p = placeNP sup p ;
-
-
-
-
--- transports
-
- HowFar place =
- mkQS (mkQCl far_IAdv (mkCl (mkVP place.to))) ;
- HowFarFrom x y =
- mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP y.to)
- (SyntaxNor.mkAdv from_Prep x.name)))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP (mkVP y.to)
- (SyntaxNor.mkAdv from_Prep x.name)) t))) ;
- HowFarBy place t =
- mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP place.to) 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 -> NPNationality = \nat,co ->
- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day = mkNP (mkPN d) in
- mkNPDay day (SyntaxNor.mkAdv on_Prep day)
- (SyntaxNor.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
-
- mkPlace : N -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i,t ->
- mkCNPlace (mkCN p) (mkPrep i) (mkPrep t) ;
-
- open_A = mkA "pen" "pent";
- closed_A = mkA "stengt" "stengt";
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePersonNor n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
-
- mkSuperl : A -> Det = \a -> mkDet the_Art (mkOrd a) ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxNor.mkAdv by8means_Prep (mkNP the_Det n)
- } ;
-
- far_IAdv = ExtraNor.IAdvAdv (ParadigmsNor.mkAdv "langt") ;
-
- how8much_IAdv : IAdv = ss "hvor mye" ** {lock_IAdv = <>};
-
- relativePersonNor : 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 => PossNPPron (mkNP the_Quant num x) p.name ;
- _ => f num p.name x
- } ;
- isPron = False ;
- poss = mkQuant he_Pron -- not used because not pron
- } ;
-
-}
diff --git a/examples/phrasebook/WordsPes.gf b/examples/phrasebook/WordsPes.gf
deleted file mode 100644
index 69ff86802..000000000
--- a/examples/phrasebook/WordsPes.gf
+++ /dev/null
@@ -1,289 +0,0 @@
---2 Implementations of Words, with English as example
-
-concrete WordsPes of Words = SentencesPes **
- open
- SyntaxPes,
- ResPes,
- ParadigmsPes,
- (L = LexiconPes),
- (P = ParadigmsPes),
--- IrregPes,
- ExtraPes,
- Prelude in {
-flags coding = utf8 ;
-
--- param Gender = Masc | Fem ;
- lin
-
--- Kinds; many of them are in the resource lexicon, others can be built by $mkN01$.
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN (mkN01 "پنیر" Inanimate) ;
- Chicken = mkCN (mkN01 "مرغ" Animate) ;
- Coffee = mkCN (mkN01 "قهوه" Inanimate) ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN01 "گوشت" Inanimate) ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN01 "پیتزا" Inanimate) ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN01 "چای" Inanimate) ;
- 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 = mkA ["خسته کننده"] ;
- Cheap = mkA "ارزان" ;
- Cold = L.cold_A ;
- Delicious = mkA "خوشمزه" ;
- Expensive = mkA "گران" ;
- Fresh = mkA "تازه" ;
- Good = L.good_A ;
- Suspect = mkA "مشکوک" ;
- 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 "فرودگاه" "در" ;
- AmusementPark = mkPlace "شهربازی" "در" ;
- Bank = mkPlace "بانک" "در" ;
- Bar = mkPlace "بار" "در" ;
- Cafeteria = mkPlace ["کافه تریا"] "در" ;
- Center = mkPlace "مرکز" "در" ;
- Cinema = mkPlace "سینما" "در" ;
- Church = mkPlace "کلیسا" "در" ;
- Disco = mkPlace "دیسکو" "در" ;
- Hospital = mkPlace "بیمارستان" "در" ;
- Hotel = mkPlace "هتل" "در" ;
- Museum = mkPlace "موزه" "در" ;
- Park = mkPlace "پارک" "در" ;
- Parking = mkPlace "پارکینگ" "در" ;
- Pharmacy = mkPlace "داروخانه" "در" ;
- PostOffice = mkCompoundPlace "اداره" "پست" "در" ;
- Pub = mkPlace "میخانه" "در" ;
- Restaurant = mkPlace "رستوران" "در" ;
- School = mkPlace "مدرسه" "در" ;
- Shop = mkPlace "مغازه" "در";
- Station = mkPlace "ایستگاه" "در" ;
- Supermarket = mkPlace "فروشگاه" "در" ;
- Theatre = mkPlace "تئاتر" "در" ;
- Toilet = mkPlace "دستشویی" "در" ;
- University = mkPlace "دانشگاه" "در";
- Zoo = mkPlace ["باغ وحش"] "در" ;
-
- CitRestaurant cit = mkCNPlace (mkCN cit (mkCN (mkN01 "رستوران" Inanimate))) in_Prep to_Prep ;
-
-
--- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
-
- DanishCrown = mkCN (mkA "دانمارک") (mkCN (mkN01 "کرون" Inanimate)) | mkCN (mkN01 "کرون" Inanimate) ;
- Dollar = mkCN (mkN01 "دلار" Inanimate) ;
- Euro = mkCN (mkN01 "یورو" Inanimate) ; -- to prevent euroes
- Lei = mkCN (mkN01 "لی" Inanimate) ; -- check this
- Leva = mkCN (mkN01 "لوا" Inanimate) ;
- NorwegianCrown = mkCN (mkA "نروژ") (mkCN (mkN01 "کرون" Inanimate)) | mkCN (mkN01 "کرون" Inanimate) ;
- Pound = mkCN (mkN01 "پوند" Inanimate) ;
- Rouble = mkCN (mkN01 "روبل" Inanimate) ;
- SwedishCrown = mkCN (mkA "سوئد") (mkCN (mkN01 "کرون" Inanimate)) | mkCN (mkN01 "کرون" Inanimate) ;
- Zloty = mkCN (mkN01 "زلوتی" Inanimate) ; check this
-
--- Nationalities
-
- Belgian = mkA "بلژیکی" ;
- Belgium = mkNP (mkPN "بلژیک" Inanimate) ;
- Bulgarian = mkNat "بلغاری" "بلغارستان" ;
- Catalan = mkNPNationality (mkNP (mkPN "کاتالان" Inanimate)) (mkNP (mkPN "کاتالان" Inanimate)) (mkA "کاتالان") ;
- Danish = mkNat "دانمارکی" "دانمارک" ;
- Dutch = mkNPNationality (mkNP (mkPN "هلندی" Inanimate)) (mkNP the_Quant (mkCN (mkN01 "هلندی" Inanimate))) (mkA "هلندی") ;
- English = mkNat "انگلیسی" "انگلستان" ;
- Finnish = mkNat "فنلاندی" "فنلاند" ;
- Flemish = mkNP (mkPN "فلاندرز" Inanimate) ;
- French = mkNat "فرانسوی" "فرانسه" ;
- German = mkNat "آلمانی" "آلمان" ;
- Italian = mkNat "ایتالیایی" "ایتالیا" ;
- Norwegian = mkNat "نروژی" "نروژ" ;
- Polish = mkNat "لهستانی" "لهستان" ;
- Romanian = mkNat "رومانیایی" "رومانی" ;
- Russian = mkNat "روسی" "روسیه" ;
- Spanish = mkNat "اسپانیایی" "اسپانیا" ;
- Swedish = mkNat "سوئدی" "سوئد" ;
-
--- Means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN01 "اتوبوس" Inanimate) ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN01 "قایق" Inanimate) ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN01 "مترو" Inanimate) ;
- Taxi = mkTransport (mkN01 "تاکسی" Inanimate) ;
- Train = mkTransport (mkN01 "قطار" Inanimate) ; -- check this
- Tram = mkTransport (mkN01 "تراموا" Inanimate) ;
-
- ByFoot = P.mkAdv "پیاده" ;
-
--- Actions: the predication patterns are very often language-dependent.
-
--- AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsPes.mkAdv "ک"));
- AHasAge p num = mkCl p.name (mkNP num (mkCN 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 (mkCN (mkN01 "اتاق" Inanimate))) (SyntaxPes.mkAdv for_Prep (mkNP num (mkCN (P.mkN01 "شخص" Animate))))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkCN (mkN01 "میز" Inanimate))) (SyntaxPes.mkAdv for_Prep (mkNP num (mkCN (P.mkN01 "شخص" Animate))))) ;
- AHasName p name = mkCl (nameOf p) name ;
- AHungry p = mkCl p.name (mkA "گرسنه") ;
- AIll p = mkCl p.name (mkA "بیمار") ;
- AKnow p = mkCl p.name (mkV "داستن" "دان") ;
- ALike p item = mkCl p.name (L.like_V2) item ;
- ALive p co = mkCl p.name (mkVP (mkVP (L.live_V)) (SyntaxPes.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name (L.love_V2) q.name ;
- AMarried p = mkCl p.name (mkA "متأهل") ;
- AReady p = mkCl p.name (mkA "آماده") ;
- AScared p = mkCl p.name (P.mkA "ترسیده") ;
- ASpeak p lang = mkCl p.name L.speak_V2 lang ;
- AThirsty p = mkCl p.name (mkA "تشنه") ;
- ATired p = mkCl p.name (P.mkA "خسته") ;
- AUnderstand p = mkCl p.name (mkV "فهمیدن" "فهم") ; -- "فهمید" is the past root and "فهمیدن" is the infinitive
- AWant p obj = mkCl p.name (mkV2 (mkV "خواستن" "خواه")) obj ;
--- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.name) ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) (SyntaxPes.mkAdv (P.mkPrep "به") place.name)) ;
-
--- miscellaneous
-
--- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
- QWhatName p = mkQS (mkQCl what_IAdv (mkNP p.poss (lin N (mkN01 "نام" Inanimate)))) ;
--- QWhatAge p = mkQS (mkQCl (mkCl (mkNP p.poss) (P.mkAdv "سال"))) ;
- QWhatAge p = mkQS (mkQCl howMuchAge_IAdv (mkNP (mkNP p.poss) (P.mkAdv "سال"))) ;
--- HowMuchCost item = mkQS (mkQCl (mkCl item (P.mkAdv ["قیمت داشتن"]))) ;
- HowMuchCost item = mkQS (mkQCl howMuchCost_IAdv (mkNP (lin Predet {s = "قیمت"}) item)) ;
- ItCost item price = mkCl item (mkV2 (mkV "قیمت" "")) price ;
-
- PropOpen p = mkCl p.name open_Adv ;
- PropClosed p = mkCl p.name closed_Adv ;
- -- PropOpenDate p d = mkCl p.name (mkVP (mkVP d) open_Adv) ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_Adv) d) ;
--- PropClosedDate p d = mkCl p.name (mkVP (mkVP d) closed_Adv) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_Adv) d) ;
--- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_Adv) d.habitual);
- PropOpenDay p d = mkCl p.name (mkVP (mkNP d.name open_Adv));
--- PropClosedDay p d = mkCl p.name (mkVP (mkVP d.habitual) closed_Adv) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkNP d.name closed_Adv)) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (Prelude.ss ("شما را"))) (mkText (mkPhrase (mkUtt d)) (lin Text (Prelude.ss ("می بینم")))) ;
- PSeeYouPlace p = mkText (lin Text (Prelude.ss ("شما را"))) (mkText (mkPhrase (mkUtt p.at)) (lin Text (Prelude.ss ("می بینم")))) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (Prelude.ss ("شما را")))
- (mkText (mkPhrase (mkUtt p.at)) (mkText (mkPhrase (mkUtt d)) (lin Text (Prelude.ss ("می بینم"))))) ;
-
--- Relations are expressed as "می wفe" or "می سْn'س wفe", as defined by $xOf$
--- below. Languages without productive genitives must use an equivalent of
--- "تهe wفe ْف می سْن" for non-pronouns.
-
- Wife = xOf ssing (mkN01 "زن" Animate) ;
- Husband = xOf ssing (mkN01 "شوهر" Animate) ;
- Son = xOf ssing (mkN01 "پسر" Animate) ;
- Daughter = xOf ssing (mkN01 "دختر" Animate) ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDay "دوشنبه" ;
- Tuesday = mkDay "سه شنبه" ;
- Wednesday = mkDay "چهارشنبه" ;
- Thursday = mkDay "پنج شنبه" ;
- Friday = mkDay "جمعه" ;
- Saturday = mkDay "شنبه" ;
- Sunday = mkDay "یکشنبه" ;
-
- Tomorrow = P.mkAdv "فردا" ;
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA "ارزان") ;
- TheMostExpensive = mkSuperl (mkA "گران") ;
- TheMostPopular = mkSuperl (mkA "پرطرفدار") ;
- TheWorst = mkSuperl L.bad_A ;
-
- SuperlPlace sup p = placeNP sup p ;
-
-
--- transports
-
-
- HowFar place = mkQS (mkQCl far_IAdv (mkNP tA_Prep place.name)) ;
- HowFarFrom x y = mkQS (mkQCl far_IAdv (mkNP (mkNP from_Prep x.name) (SyntaxPes.mkAdv tA_Prep y.name ))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkNP (mkNP (mkNP from_Prep x.name) (SyntaxPes.mkAdv tA_Prep y.name)) t)) ;
- HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP (mkNP tA_Prep y.name) t)) ;
-
- WhichTranspPlace trans place =
- mkQS (mkQCl (SyntaxPes.mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
-
- IsTranspPlace trans place =
- mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ;
-
-
-
--- auxiliaries
-
- oper
-
- mkNat : Str -> Str -> NPNationality = \nat,co ->
- mkNPNationality (mkNP (mkPN nat Inanimate)) (mkNP (mkPN co Inanimate)) (mkA nat) ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day = mkNP (mkPN d Inanimate) in
- mkNPDay day (SyntaxPes.mkAdv no_Prep day)
- (SyntaxPes.mkAdv to_Prep (mkNP a_Quant sgNum (mkCN (mkN01 d Inanimate)))) ; --changed from plNum to sgNum
-
- mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i ->
--- mkCNPlace (mkCN (P.mkN01 comp (mkN01 p))) (P.mkPrep i) to_Prep ;
- mkCNPlace (mkCN (mkN01 (comp++p) Inanimate)) (P.mkPrep i) to_Prep ;
-
- mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN (mkN01 p Inanimate)) (P.mkPrep i) to_Prep ;
--- mkPlaceFem : Str -> Str -> Gender -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i,g ->
--- mkCNPlace (mkCN (P.mkN01 p Inanimate)) (P.mkPrep i) to_Prep ;
-
- open_Adv = P.mkAdv "باز";
- open_Predet = lin Predet {s = "باز"};
- closed_Adv = P.mkAdv "بسته" ;
-
- xOf : SentencesPes.GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
-
- nameOf : NPPerson -> NP = \p -> (xOf ssing (mkN01 "نام" Inanimate) p).name ;
- ssing = False ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxPes.mkAdv by8means_Prep (mkNP n)
- } ;
-
--- mkSuperl : A -> Det = \a -> SyntaxPes.mkDet the_Art (SyntaxPes.mkOrd a) ;
- mkSuperl : A -> Det = \a -> lin Det { s = a.s ! bEzafa ++ "ترین" ; n = Sg ; isNum = False ; fromPron = False} ;
-
--- far_IAdv = ExtraPes.IAdvAdv (P.mkAdv "دور") ;
- far_IAdv = lin IAdv {s = "چقدر راه"} ;
- howMuchAge_IAdv = lin IAdv {s = "چند"} ;
- howMuchCost_IAdv = lin IAdv {s = "چقدر"} ;
- what_IAdv = lin IAdv {s = ["چه چیزی"]} ;
- no_Prep = lin Prep {s = ""} ;
- tA_Prep = lin Prep {s = "تا"} ;
--------------------
---modN : N -> N = \noun -> lin N {s = \\n,c =>noun.s!n!c++"ک" ; g =noun.g} ;
---modQuant : Quant -> Quant = \q -> lin Quant {s = \\n,g,c => q.s ! n ! Fem ! c ; a = q.a};
---modNP : NP -> NP = \np -> lin NP {s = \\_ => np.s ! NPC Obl ; a = np.a};
-
-}
diff --git a/examples/phrasebook/WordsPol.gf b/examples/phrasebook/WordsPol.gf
deleted file mode 100644
index 2b7fe292f..000000000
--- a/examples/phrasebook/WordsPol.gf
+++ /dev/null
@@ -1,354 +0,0 @@
---2 Implementations of Words, with Polish as example
-
-concrete WordsPol of Words = SentencesPol **
- open
- ResPol,
- SyntaxPol,
- (L = LexiconPol),
- (Q = QuestionPol),
- (N = NounPol),
- MorphoPol,
- Prelude in {
-
- flags
- optimize =values ; 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 L.cheese_N ;
- Chicken = mkCN kurczak ;
- Coffee = mkCN kawa;
- Fish = mkCN L.fish_N ;
- Meat = mkCN L.meat_N ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN pizza;
- Salt = mkCN L.salt_N ;
- Tea = mkCN herbata ;
- 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 = mkA (mkRegAdj "nudny" "nudniejszy" "nudno" "nudniej" );
- Cheap = mkA (mkRegAdj "tani" "tańszy" "tanio" "taniej" );
- Cold = L.cold_A ;
- Delicious = mkA (mkRegAdj "pyszny" "pyszniejszy" "pysznie" "pyszniej") ;
- Expensive = mkA (mkRegAdj "drogi" "droższy" "drogo" "drożej" );
- Fresh = mkA (mkRegAdj "świeży" "świeższy" "świeżo" "świeżej" );
- Good = L.good_A ;
- Suspect = mkA (mkCompAdj "podejrzany" "podejrzanie" );
- 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 = mkPlaceNa lotnisko ;
- AmusementPark = mkPlaceDo ["wesołe miasteczko"] ["wesołego miasteczka"] ["wesołym miasteczku"] Neut;
- Bank = mkPlaceDo "bank" "banku" "banku" (Masc Inanimate);
- Bar = mkPlaceDo "bar" "baru" "barze" (Masc Inanimate);
- Cafeteria = mkPlaceDo "stołówka" "stołówki" "stołówce" Fem;
- Center = mkPlaceDo "centrum" "centrum" "centrum" Neut;
- Cinema = mkPlaceDo "kino" "kina" "kinie" Neut ;
- Church = mkPlaceDo "kościół" "kościoła" "kościele" (Masc Inanimate);
- Disco = mkPlaceNa "dyskoteka" "dyskotekę" "dyskotece" Fem ;
- Hospital = mkPlaceDo "szpital" "szpitala" "szpitalu" (Masc Inanimate);
- Hotel = mkPlaceDo "hotel" "hotelu" "hotelu" (Masc Inanimate) ;
- Museum = mkPlaceDo "muzeum" "muzeum" "muzeum" Neut ;
- Park = mkPlaceDo "park" "parku" "parku" (Masc Inanimate) ;
- Parking = mkPlaceNa "parking" "parking" "parkingu" (Masc Inanimate) ;
- Pharmacy = mkPlaceDo "apteka" "apteki" "aptece" Fem ;
- PostOffice = mkPlaceNa "poczta" "pocztę" "poczcie" Fem ;
- Pub = mkPlaceDo "pub" "pubu" "pubie" (Masc Inanimate) ;
- Restaurant = mkPlaceDo L.restaurant_N;
- School = mkPlaceDo L.school_N;
- Shop = mkPlaceDo "sklep" "sklepu" "sklepie" (Masc Inanimate) ;
- Station = mkPlaceNa "stacja" "stację" "stacji" Fem ;
- Supermarket = mkPlaceDo "supermarket" "supermarketu" "supermarkecie" (Masc Inanimate) ;
- Theatre = mkPlaceDo "teatr" "teatru" "teatrze" (Masc Inanimate) ;
- Toilet = mkPlaceDo "toaleta" "toalety" "toalecie" Fem ;
- University = mkPlaceNa L.university_N;
- Zoo = mkPlaceDo "zoo" "zoo" "zoo" Neut ;
-
- CitRestaurant cit = { name=(mkCN cit.prop (mkCN L.restaurant_N));
- at = { s="w"; c=LocPrep; lock_Prep = <> }; to = {s="do"; c=GenPrep; lock_Prep = <>}; isPl = False };
-
-
--- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
-
- DanishCrown = mkCN (mkCurrency "korona duńska" "korony duńskie" "koron duńskich" Fem);
- Dollar = mkCN dolar ;
- Euro = mkCN (mkCurrency "euro" "euro" "euro" Neut);
- Lei = mkCN (mkCurrency "leja" "leje" "lei" Fem);
- Leva = mkCN (mkCurrency "lew" "lewy" "lewów" (Masc Animate));
- NorwegianCrown = mkCN (mkCurrency "korona norweska" "korony norweskie" "koron norweskich" Fem);
- Pound = mkCN (mkCurrency "funt" "funty" "funtów" (Masc Animate));
- Rouble = mkCN (mkCurrency "rubel" "ruble" "rubli" (Masc Animate));
- SwedishCrown = mkCN (mkCurrency "korona szwedzka" "korony szwedzkie" "koron szwedzkich" Fem);
- Zloty = mkCN (mkCurrency "złoty" "złote" "złotych" (Masc Animate));
-
--- Nationalities
--- język, po języku, obywatelstwo, kraj, obywatelem, obywatelami, obywatelką
- Belgian = {prop=mkA (mkCompAdj "belgijski"); citizenMSg="Belgiem"; citizenMPl="Belgami"; citizenF="Belgijką"};
- Belgium = mkNP belgia ;
- Bulgarian = mkNat "bułgarski" ["po bułgarsku"] "bułgarski" bulgaria "Bułgarem" "Bułgarami" "Bułgarką";
- Catalan = mkNat "kataloński" ["po katalońsku"] "kataloński" katalonia "Katalończykiem" "Katalończykami" "Katalonką";
- Danish = mkNat "duński" ["po duńsku"] "duński" katalonia "Duńczykiem" "Duńczykami" "Dunką";
- Dutch = mkNat "holenderski" ["po holendersku"] "holenderski" holandia "Holendrem" "Holendrami" "Holenderką";
- English = mkNat "angielski" ["po angielsku"] "angielski" anglia "Anglikiem" "Anglikami" "Angielką";
- Finnish = mkNat "fiński" ["po fińsku"] "finladzki" finlandia "Finem" "Finami" "Finką";
- Flemish = mkA (mkCompAdj "flamandzki" ["po flamandzku"]);
- French = mkNat "francuski" ["po francusku"] "francuski" francja "Framcuzem" "Francuzami" "Francuzką";
- German = mkNat "niemiecki" ["po niemiecku"] "niemiecki" niemcy "Niemcem" "Niemcami" "Niemką";
- Italian = mkNat "włoski" ["po włosku"] "włoski" wlochy "Włochem" "Włochami" "Włoszką";
- Norwegian = mkNat "norweski" ["po norwesku"] "norweski" norwegia "Norwegiem" "Norwegami" "Norweszką";
- Polish = mkNat "polski" ["po polsku"] "polski" polska "Polakiem" "Polakami" "Polką";
- Romanian = mkNat "rumuński" ["po rumuńsku"] "rumuński" rumunia "Rumunem" "Rumunami" "Rumunką";
- Russian = mkNat "rosyjski" ["po rosyjsku"] "rosyjski" rosja "Rosjaninem" "Rosjanami" "Rosjanką";
- Spanish = mkNat "hiszpański" ["po hiszpańsku"] "hiszpański" hiszpania "Hiszpanem" "Hiszpanami" "Hiszpanką";
- Swedish = mkNat "szwedzki" ["po szwedzku"] "szwedzki" szwecja "Szwedem" "Szwedami" "Szwedką";
-
--- Means of transportation
-
- Bike = {cn = mkCN L.bike_N ; verb="jedzie" };
- Bus = mkTransport "autobus" "autobusem" (Masc Inanimate) "jedzie";
- Car = {cn = mkCN L.car_N ; verb="jedzie" };
- Ferry = mkTransport "prom" "promem" (Masc Inanimate) "płynie";
- Plane = {cn = mkCN L.airplane_N ; verb="leci" };
- Subway = mkTransport "metro" "metrem" Neut "jedzie";
- Taxi = mkTransport "taksówka" "taksówką" Fem "jedzie";
- Train = mkTransport "pociąg" "pociągiem" (Masc Inanimate) "jedzie";
- Tram = mkTransport "tramwaj" "tramwajem" (Masc Inanimate) "jedzie";
-
- ByFoot = ss "pieszo" ** {lock_Adv = <>};
-
--- Actions: the predication patterns are very often language-dependent.
-
- AHasAge p num = mkCl p.name have_V2 (mkNP (mkDet num) (mkCN 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 (mkN (mkNTable0950 "pokój") (Masc Inanimate))) (SyntaxPol.mkAdv for_Prep (mkNP num (L.person_N)))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (L.table_N)) (SyntaxPol.mkAdv for_Prep (mkNP num (L.person_N)))) ;
-
-
-
- AHasName p name = mkCl p.name (mkVP (mkComplicatedVerb (mkMonoVerb "być" conj1 Imperfective) name.nom));
- AHungry p = mkCl p.name (mkA (mkRegAdj "głodny" "głodniejszy" "głodno" "głodniej" )) ;
- AIll p = mkCl p.name (mkA (mkCompAdj "chory")) ;
- AKnow p = mkCl p.name (mkVP (mkMonoVerb "wiedzieć" conj103 Imperfective)) ;
- ALike p item = mkCl p.name (L.like_V2) item ;
- ALive p co = mkCl p.name (mkVP (mkComplicatedVerb (mkMonoVerb "mieszkam" conj98 Imperfective) ("w" ++ co.dep!LocPrep)));
- ALove p q = mkCl p.name (L.love_V2) q.name ;
- AMarried p = mkCl p.name (case p.name.gn of {
- MascPersSg|MascAniSg|MascInaniSg|MascPersPl=> mkCompAdj "żonaty";
- _=>mkCompAdj "zamężny"}) ;
- AReady p = mkCl p.name (L.ready_A) ;
- AScared p = mkCl p.name (mkReflVerb (mkMonoVerb "bać" conjbac Imperfective)) ;
- ASpeak p lang = mkCl p.name (mkVP (mkComplicatedVerb (mkMonoVerb "mówić" conj72 Imperfective) lang.advpos)) ;
- AThirsty p = mkCl p.name (mkVP (mkComplicatedVerb (mkMonoVerb "chcieć" conj45 Imperfective) ["pić"]));
- ATired p = mkCl p.name (mkA (mkCompAdj "zmęczony")) ;
- AUnderstand p = mkCl p.name (mkVP (mkV "rozumieć" conj101 "zrozumieć" conj101)) ;
- AWant p obj = mkCl p.name (dirV2 (mkMonoVerb "chcieć" conj45 Imperfective)) obj ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkComplicatedVerb (mkV1 "iść" conj41a "pójść" conj42) place.to.s)) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name
- (mkVP (mkComplicatedVerb (mkMonoVerb "mieć" conj100 Imperfective) ["na imię"]))));
- QWhatAge p = mkQS (mkQCl howmany_IAdv (mkCl p.name
- (mkVP (mkComplicatedVerb (mkMonoVerb "mieć" conj100 Imperfective) ["lat"]))));
- HowMuchCost item = { s="ile" ++
- (mkMonoVerb "kosztować" conj53 Imperfective).si!(VFinM (extract_num!item.gn) P3) ++ item.nom;
- lock_QS=<> } ;
- ItCost item price = mkCl item (dirV2 (mkMonoVerb "kosztować" conj53 Imperfective) ) price ;
-
- PropOpen p = mkCl p.name open_A ;
- PropClosed p = mkCl p.name closed_A ;
- PropOpenDate p d = mkCl p.name (mkAP d open_A) ;
- PropClosedDate p d = mkCl p.name (mkAP d closed_A) ;
- PropOpenDay p d = mkCl p.name (mkAP (ss d.hab) open_A) ;
- PropClosedDay p d = mkCl p.name (mkAP (ss d.hab) closed_A) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss ("do zobaczenia"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss ("do zobaczenia"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("do zobaczenia")))
- (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 p = xOf p N.NumSg L.wife_N ;
- Husband p = xOf p N.NumSg L.husband_N ;
- Son p = xOf p N.NumSg (mkPer "syn" "syna" "syna" (Masc Personal)) ;
- Daughter p = xOf p N.NumSg (mkPer "córka" "córki" "córkę" Fem );
- Children p = xOf p N.NumPl L.child_N ;
-
--- week days
-
- Monday = { name="poniedziałek"; hab=["w poniedziałki"]; adv=["w poniedziałek"] } ;
- Tuesday = { name="wtorek"; hab=["we wtorki"]; adv=["we wtorek"] } ;
- Wednesday = { name="środa"; hab=["we środy"]; adv=["we środę"] } ;
- Thursday = { name="czwartek"; hab=["w czwartki"]; adv=["w czwartek"] } ;
- Friday = { name="piątek"; hab=["w piątki"]; adv=["w piątek"] } ;
- Saturday = { name="sobota"; hab=["w soboty"]; adv=["w sobotę"] } ;
- Sunday = { name="niedziela"; hab=["w niedziele"]; adv=["w niedzielę"] } ;
-
- Tomorrow = (ss "jutro") ** {lock_Adv = <>} ;
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA (mkRegAdj "tani" "tańszy" "tanio" "taniej") );
- TheMostExpensive = mkSuperl (mkA (mkRegAdj "drogi" "droższy" "drogo" "drożej" ) );
- TheMostPopular = mkSuperl (mkA (mkRegAdj "popularny" "popularniejszy" "popularnie" "popularniej" ) ) ;
- TheWorst = mkSuperl L.bad_A ;
-
- SuperlPlace sup p = placeNP sup p ;
-
-
--- transports
- HowFar place = mkQS (Q.QuestIComp (Q.CompIAdv far_IAdv) place.name) ;
-
- --jak daleko jest z cenrum do hotelu
- HowFarFrom x y = { s=["jak daleko jest z"] ++ x.name.dep!GenPrep ++ y.to.s; lock_QS=<> };
-
- --jak daleko jest pieszo z centrum do hotelu
- HowFarFromBy x y t =
- { s=["jak daleko jest"] ++ t.s ++ "z" ++ x.name.dep!GenPrep ++ y.to.s; lock_QS=<> };
-
- HowFarBy y t =
- { s=["jak daleko jest"] ++ t.s ++ y.to.s; lock_QS=<> };
-
- WhichTranspPlace trans place =
- { s= ktory ! AF (cast_gennum!) Nom ++ trans.cn.s!Sg!Nom ++ trans.verb ++ place.to.s; lock_QS=<> };
-
- IsTranspPlace trans place =
- { s= ["czy jest stąd"] ++ trans.cn.s!Sg!Nom ++ place.to.s; lock_QS=<> };
-
-
--- auxiliaries
-
- oper kurczak = mkN (mkNTable0173 "kurczak") (Masc Animate) ;
- oper kawa = mkN (mkNTable0021 "kawa") (Fem) ;
- oper pizza = mkN (mkNTable0175 "pizza") (Fem) ;
- oper herbata = mkN (mkNTable0026 "herbata") (Fem) ;
- oper lotnisko = mkN (mkNTable0265 "lotnisko") (Neut) ;
- oper lilja = mkN (mkNTable0060 "lilia") (Fem) ;
- oper niemcy = mkN (mkNTable0387 "Niemcy") (Plur) ;
- oper wlochy = mkN (mkNTable0482 "Włochy") (Plur) ;
- oper belgia = mkN (mkNTable0005 "Belgia") (Fem) ;
- oper bulgaria = mkN (mkNTable0005 "Bułgaria") (Fem) ;
- oper katalonia = mkN (mkNTable0005 "Katalonia") (Fem) ;
- oper dania = mkN (mkNTable0055 "Dania") (Fem) ;
- oper anglia = mkN (mkNTable0005 "Anglia") (Fem) ;
- oper holandia = mkN (mkNTable0005 "Holandia") (Fem) ;
- oper finlandia = mkN (mkNTable0005 "Finlandia") (Fem) ;
- oper francja = mkN (mkNTable0005 "Francja") (Fem) ;
- oper norwegia = mkN (mkNTable0005 "Norwegia") (Fem) ;
- oper polska = mkN (mkNTable0041 "Polska") (Fem) ;
- oper rumunia = mkN (mkNTable0032 "Rumunia") (Fem) ;
- oper rosja = mkN (mkNTable0005 "Rosja") (Fem) ;
- oper hiszpania = mkN (mkNTable0032 "Hiszpania") (Fem) ;
- oper szwecja = mkN (mkNTable0005 "Szwecja") (Fem) ;
- oper pokoj = mkN (mkNTable0526 "pokój") (Masc Inanimate) ;
- oper dolar = mkN (mkNTable0064 "dolar") (Masc Animate) ;
-
- oper
-
- mkA : Adj -> A = \adj -> adj ** { lock_A = <> };
-
- mkPlaceDo = overload {
- mkPlaceDo : N -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \n -> {
- name = mkCN n; at = { s="w"; c=LocPrep; lock_Prep = <> }; to = {s="do"; c=GenPrep; lock_Prep = <>}; isPl = False };
- mkPlaceDo : Str -> Str -> Str -> Gender -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \nom,gen,loc,g -> {
- name = mkCN {
- s = table {SF Sg Nom => nom; SF Sg Gen => gen; SF Sg Loc => loc; _ => ["not implemented"]};
- g = g;
- lock_N=<>
- };
- at = { s="w"; c=LocPrep; lock_Prep = <> }; to = {s="do"; c=GenPrep; lock_Prep = <>}; isPl = False };
- };
-
- mkPlaceNa = overload {
- mkPlaceNa : N -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \n -> {
- name = mkCN n; at = { s="na"; c=LocPrep; lock_Prep = <> }; to = {s="na"; c=AccPrep; lock_Prep = <>}; isPl = False };
- mkPlaceNa : Str -> Str -> Str -> Gender -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \nom,acc,loc,g -> {
- name = mkCN {
- s = table {SF Sg Nom => nom; SF Sg Acc => acc; SF Sg Loc => loc; _ => ["not implemented"]};
- g = g;
- lock_N=<>
- };
- at = { s="na"; c=LocPrep; lock_Prep = <> }; to = {s="na"; c=AccPrep; lock_Prep = <>}; isPl = False };
- };
-
- mkTransport : Str -> Str -> Gender -> Str -> {cn:CN; verb:Str} = \nom,instr,g,verb -> {
- cn = {
- s = \\n,c => case of { => nom; => instr; _ => ["not implemented"]};
- g = g;
- lock_CN=<>
- };
- verb=verb
- };
-
- mkCitizen = overload {
- mkCitizen : Str -> N = \s -> {
- s = table {SF Sg Instr => s; _ => ["not implemented"]};
- g = Fem;
- lock_N=<>
- };
- mkCitizen : Str -> Str -> N = \inst, instpl -> {
- s = table {SF Sg Instr => inst; SF Pl Instr => instpl; _ => ["not implemented"]};
- g = Masc Personal;
- lock_N=<>
- };
- };
-
- mkPer : Str -> Str -> Str -> Gender -> N = \nom,gen,acc,g -> {
- s = table {SF Sg Nom => nom; SF Sg Gen => gen; SF Sg Acc => acc; _ => ["not implemented"]};
- g = g;
- lock_N=<>
- };
-
-
- mkCurrency : Str -> Str -> Str -> Gender -> N = \nom,nompl,genpl,g -> {
- s = table {SF Sg Nom => nom; SF Pl (Nom|Acc) => nompl; SF Pl Gen => genpl; _ => ["not implemented"]};
- g = g;
- lock_N=<>
- };
-
- mkNat : Str -> Str -> Str -> N -> Str -> Str -> Str ->
- { lang: A; prop: A; country: NP; citizenMSg:Str; citizenMPl: Str; citizenF:Str } =
- \lang,ladv,prop,country,citiMsg, citiMpl, citiF -> {
- lang = mkA (mkCompAdj lang ladv); prop = mkA (mkCompAdj prop);
- country=mkNP country; citizenMSg=citiMsg; citizenMPl=citiMpl; citizenF=citiF };
-
- open_A : A = (mkA (mkCompAdj "otwarty"));
- closed_A : A = (mkA (mkCompAdj "zamknięty"));
-
- xOf : NPPerson -> Num -> N -> NPPerson = \p,num,n ->
- { name = case p.isPron of {
- True => mkNP (mkDet p.poss num) n;
- False => mkNP (mkNP (mkDet a_Quant num) n) ({s=p.name.dep!GenNoPrep; lock_Adv=<>})
- };
- isPron = False;
- poss = p.poss }; --it is not used, because it is not a pron
-
- mkSuperl : A -> Det = \a -> SyntaxPol.mkDet the_Art (SyntaxPol.mkOrd a) ;
-
- far_IAdv : IAdv = (ss ["jak daleko"]) ** {lock_IAdv = <>};
- howmany_IAdv : IAdv = (ss ["ile"]) ** {lock_IAdv = <>};
-
-}
diff --git a/examples/phrasebook/WordsRon.gf b/examples/phrasebook/WordsRon.gf
deleted file mode 100644
index 4563ff735..000000000
--- a/examples/phrasebook/WordsRon.gf
+++ /dev/null
@@ -1,277 +0,0 @@
---# -path=.:../../dist/build/rgl/alltenses
-
-
--- (c) 2010 Ramona Enache under LGPL
-
-concrete WordsRon of Words = SentencesRon ** open
- SyntaxRon, ResRon, Prelude,
- (P = ParadigmsRon),
- (L = LexiconRon),
- BeschRon,
- ExtraRon in {
-
- flags coding=utf8 ;
-
- lin
-
--- kinds
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN L.cheese_N ;
- Chicken = mkCN (P.mkN "pui" "pui" P.masculine) ;
- Coffee = mkCN (P.mkN "cafea") ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (P.mkN "carne" "cărnuri" "cărni") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (P.mkN "pizză") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (P.mkNR "ceai") ;
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
--- qualities
-
- Bad = L.bad_A ;
- Boring = P.mkA "plictisitor" "plictisitoare" "plictisitori" "plictisitoare" ;
- Cheap = P.mkA "ieftin" ;
- Cold = L.cold_A ;
- Delicious = P.mkA "delicios" "delcioasă" "delicioşi" "delicioase" ;
- Expensive = P.mkA "scump" "scumpă" "scumpi" "scumpe" ;
- Fresh = P.mkA "proaspăt" "proaspătă" "proaspeţi" "proaspete" ;
- Good = L.good_A ;
- Suspect = P.mkA "suspect" ;
- Warm = L.warm_A ;
-
--- places
-
- Airport = mkPlace (P.mkNR "aeroport") at_Prep ;
- AmusementPark = mkCNPlace (mkCN (mkCN (P.mkNR "parc")) (mkAdv by8means_Prep (mkNP (P.mkPN "distracții")))) in_Prep to_Prep;
- Bank = mkPlace (P.mkN "bancă" "bănci") at_Prep ;
- Bar = mkPlace (P.mkNR "bar") at_Prep ;
- Cafeteria = mkPlace (P.mkN "cantină" "cantine") in_Prep ;
- Center = mkCNPlace (mkCN (P.mkN "centru" "centre" )) in_Prep in_Prep;
- Church = mkPlace (P.mkN "biserică" "biserici") at_Prep ;
- Cinema = mkPlace (P.mkNR "cinematograf") at_Prep ;
- Disco = mkPlace (P.mkN "discotecă" "discoteci" ) at_Prep ;
- Hospital = mkPlace (P.mkN "spital") at_Prep ;
- Hotel = mkPlace (P.mkNR "hotel") at_Prep ;
- Museum = mkPlace (P.mkN "muzeu" "muzee") at_Prep ;
- Park = mkPlace (P.mkNR "parc") in_Prep ;
- Parking = mkPlace (P.mkN "parcare" "parcări") in_Prep ;
- Pharmacy = mkPlace (P.mkN "farmacie" "farmacii" P.feminine) at_Prep;
- PostOffice = mkPlace (P.mkN "poștă" "poște") at_Prep ;
- Pub = mkPlace (P.mkNR "pub") in_Prep ;
- Restaurant = mkPlace (P.mkN "restaurant") at_Prep ;
- School = mkPlace (P.mkN "şcoală" "şcoli") at_Prep ;
- Shop = mkPlace (P.mkN "magazin") at_Prep ;
- Station = mkPlace (P.mkN "gară" "gări") at_Prep ;
- Supermarket = mkPlace (P.mkNR "supermarket") at_Prep ;
- Theatre = mkPlace (P.mkN "teatru" "teatre") at_Prep ;
- Toilet = mkPlace (P.mkN "toaletă") at_Prep ;
- University = mkPlace (P.mkN "universitate") at_Prep ;
- Zoo = {name = mkCN (P.mkA "zoologic") (P.mkN "grădină" "grădini");
- to = to_Prep; at = at_Prep; isPl = False };
-
- CitRestaurant cit = mkCNPlace (mkCN cit.prop (P.mkN "restaurant" "restaurante")) in_Prep to_Prep;
-
--- currencies
-
- DanishCrown = mkCN (P.mkA "danez") (P.mkN "coroană") ;
- Dollar = mkCN (P.mkN "dolar" P.masculine) ;
- Euro = mkCN (P.mkN "euro" "euro" P.masculine) ;
- Lei = mkCN (P.mkN "leu" "lei") ;
- Leva = mkCN (P.mkN "levă" "leve") ;
- NorwegianCrown = mkCN (P.mkA "norvegian") (P.mkN "coroană") ;
- Pound = mkCN (P.mkA "sterlin") (P.mkN "liră") ;
- Rouble = mkCN (P.mkN "rublă" "ruble") ;
- SwedishCrown = mkCN (P.mkA "suedez") (P.mkN "coroană") ;
- Zloty = mkCN (P.mkN "zlot" P.masculine) ;
-
--- nationalities
-
- Belgian = mkCitizenshipRon (P.mkA "belgian" "belgiană" "belgieni" "belgiene") "belgian" "belgiancă" "belgieni" "belgience" ;
- Belgium = mkNP (P.mkPN "Belgia") ;
- Bulgarian = mkCompNat "bulgar" "Bulgaria" "bulgăresc" "bulgar" "bulgăroaică" "bulgari" "bulgăroaice";
- Catalan = mkSimpSimpNat "catalan" "Catalonia" ;
- Danish = mkSimpSimpNat "danez" "Danemarca" ;
- Dutch = mkSimpSimpNat "olandez" "Olanda" ;
- English = mkNat "englez" "Anglia" "englez" "englezoaică" "englezi" "englezoaice" ;
- Finnish = mkSimpSimpNat "finlandez" "Finlanda" ;
- Flemish = mkNP (P.mkPN "flamandă") ;
- French = mkCompNat "francez" "Franţa" "franțuzesc" "francez" "franțuzoaică" "francezi" "franțuzoaice";
- German = mkCompNat "german" "Germania" "nemțesc" "neamț" "nemțoaică" "nemți" "nemțoaice";
- Italian = mkSimpNat "italian" "Italia" "italian" "italiancă" "italieni" "italience" ;
- Norwegian = mkSimpSimpNat "norvegian" "Norvegia";
- Polish = mkSimpSimpNat "polonez" "Polonia" ;
- Romanian = mkNat "român" "România" "român" "româncă" "români" "românce" ;
- Russian = mkNat "rus" "Rusia" "rus" "rusoaică" "ruși" "rusoaice";
- Spanish = mkSimpSimpNat "spaniol" "Spania" ;
- Swedish = mkSimpSimpNat "suedez" "Suedia" ;
-
--- means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (P.mkN "autobuz" "autobuze") ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (P.mkNR "feribot") ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (P.mkNR "metrou") ;
- Taxi = mkTransport (P.mkNR "taxi") ;
- Train = mkTransport (P.mkNR "tren") ;
- Tram = mkTransport (P.mkN "tramvai" "tramvaie") ;
-
- ByFoot = P.mkAdv "pe jos" ;
-
- HowFar place = mkQS (mkQCl how8much_IAdv (mkDestination place.name)) ;
- HowFarFrom x y = mkQS (mkQCl how8much_IAdv (mkNP (mkDestination y.name) (SyntaxRon.mkAdv from_Prep x.name))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl how8much_IAdv (mkNP (mkNP (mkDestination y.name) (SyntaxRon.mkAdv from_Prep x.name)) t)) ;
- HowFarBy y t = mkQS (mkQCl how8much_IAdv (mkNP (mkDestination 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 (mkDestination place.name)))) ;
-
-
--- actions
-
- AHasAge p num = mkCl p.name have_V2 (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 (P.mkN "cameră")) (SyntaxRon.mkAdv for_Prep (mkNP num (P.mkN "persoană")))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (P.mkN "masa" "mese")) (SyntaxRon.mkAdv for_Prep (mkNP num (P.mkN "persoană")))) ;
- AHasName p name = mkCl p.name (P.mmkV2 (mkRVAcc (v_besch119 "numi")) (P.noPrep P.Nom)) name ;
- AHungry p = DatSubjCl p.name (mkVP (mkNP (P.mkN "foame"))) ;
- AIll p = mkCl p.name (P.mkA "bolnav") ;
- AKnow p = mkCl p.name (v_besch122 "şti") ;
- ALike p item = DatSubjCompCl p.name (mkVP (v_besch71 "plăcea")) item ;
- ALive p co =
- mkCl p.name (mkVP (mkVP (v_besch121 "locui")) (SyntaxRon.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name (P.dirV2 (P.mkV "iubi")) q.name ;
- AMarried p = mkCl p.name (P.mkA "căsătorit") ;
- AReady p = mkCl p.name (P.mkA "gata" "gata" "gata" "gata") ;
- AScared p = mkCl p.name (P.mkA "speriat") ;
- ASpeak p lang = mkCl p.name (P.mmkV2 (P.mkV "vorbi") (P.noPrep P.Nom)) lang ;
- AThirsty p = DatSubjCl p.name (mkVP (mkNP (P.mkN "sete"))) ;
- ATired p = mkCl p.name (P.mkA "obosit") ;
- AUnderstand p = mkCl p.name (v_besch83 "înţelege") ;
- AWant p obj = mkCl p.name (P.mmkV2 (v_besch74 "vrea") (P.noPrep P.Nom)) obj ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl how_IAdv (AccSubjCl p.name (mkVP (v_besch29 "chema")))) ;
- QWhatAge p = mkQS (mkQCl (mkIP how8many_IDet L.year_N) p.name have_V2) ;
-
- PropOpen p = mkCl p.name open_A ;
- PropClosed p = mkCl p.name closed_A ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
-
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (v_besch18 "costa"))) ;
- ItCost item price = mkCl item (P.mmkV2 (v_besch18 "costa") (P.noPrep P.Nom)) price ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text {s = ("ne" ++ "vedem")}) (mkPhrase (mkUtt d)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text { s = ("ne" ++ "vedem")})
- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
- PSeeYouPlace p = mkText (lin Text {s = ("ne" ++ "vedem")}) (mkPhrase (mkUtt p.at)) ;
-
--- Relations are expressed as "my wife" or "the wife of my son", as defined by $xOf$
--- below. Languages with productive genitives can use an equivalent of
--- "my son's wife" for non-pronouns, as e.g. in English.
-
- Wife = xOf sing (P.mkN "soţie") ;
- Husband = xOf sing (P.mkN "soţ" "soţi") ;
- Son = xOf sing (P.mkN "fiu" "fii") ;
- Daughter = xOf sing (P.mkN "fiică" "fiice") ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDay "luni" ;
- Tuesday = mkDay "marţi" ;
- Wednesday = mkDay "miercuri" ;
- Thursday = mkDay "joi" ;
- Friday = mkDay "vineri" ;
- Saturday = mkDay "sâmbătă" ;
- Sunday = mkDay "duminică" ;
-
- Tomorrow = P.mkAdv "mâine" ;
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (P.mkA "ieftin") ;
- TheMostExpensive = mkSuperl (P.mkA "scump") ;
- TheMostPopular = mkSuperl (P.mkA "popular") ;
- TheWorst = mkSuperl L.bad_A ;
-
- SuperlPlace sup p = placeNP sup p ;
-
-
-
-
-
-oper
-
-closed_A : A = P.mkA "închis" ;
-open_A : A = P.mkA "deschis" ;
-
--- auxiliaries
-
- mkSimpSimpNat : Str -> Str -> NPNationalityRon = \nat, co ->
- mkSimpNat nat co nat (nat + "a") (nat + "i") (nat+"e");
-
- mkSimpNat : Str -> Str -> Str -> Str -> Str -> Str -> NPNationalityRon = \nat,co, citMS, citFS, citMP, citFP -> let adj = P.mkA nat in
- mkNPNationalityRon (mkNP (P.mkPN (nat+"a"))) (mkNP (P.mkPN co)) adj citMS citFS citMP citFP ;
-
- mkNat : Str -> Str -> Str -> Str -> Str -> Str -> NPNationalityRon = \nat,co, citMS, citFS, citMP, citFP -> let adj = P.mkA (nat+"esc") in
- mkNPNationalityRon (mkNP (P.mkPN (nat+"a"))) (mkNP (P.mkPN co)) adj citMS citFS citMP citFP ;
-
- mkCompNat : Str -> Str -> Str -> Str -> Str -> Str -> Str -> NPNationalityRon = \nat,co, adj, citMS, citFS, citMP, citFP -> let a = P.mkA adj in
- mkNPNationalityRon (mkNP (P.mkPN (nat+"a"))) (mkNP (P.mkPN co)) a citMS citFS citMP citFP ;
-
-
-
-mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day = mkNP (P.mkPN d P.Feminine) ;
- ad = {s = d; lock_Adv=<>} in
- mkNPDay day ad ad; ---- difference is enforced by additional constructions
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (refCN x) p ;
-
-
-
--- auxiliaries
-
-oper
- mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i -> {
- name = mkCN p ;
- at = i ; isPl = False ;
- to = to_Prep -- in Romanian, most of the time they would be the same
- } ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxRon.mkAdv with_Prep (mkNP the_Det n)
- } ;
-
- mkSuperl : A -> Det = \a -> mkDet the_Art (SyntaxRon.mkOrd a) ;
-
- mkDestination : NP -> NP = \np -> heavyNP {s = \\c => "pâna la"++np.indForm ;
- a = np.a; hasClit = HasRef False;
- ss = "pâna la"++np.indForm} ** {lock_NP =<>};
-
-}
diff --git a/examples/phrasebook/WordsRus.gf b/examples/phrasebook/WordsRus.gf
deleted file mode 100644
index 71459f848..000000000
--- a/examples/phrasebook/WordsRus.gf
+++ /dev/null
@@ -1,275 +0,0 @@
--- (C) 2009 Aarne Ranta under LGPL
-
-concrete WordsRus of Words = SentencesRus **
- open SyntaxRus, (P = ParadigmsRus), (L = LexiconRus), ExtraRus, (R = ResRus), Prelude in {
-
-flags coding = utf8 ;
-
- lin
-
--- kinds of food
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN L.cheese_N ;
- Chicken = mkCN (P.mkN "курица") ;
- Coffee = mkCN (P.mkIndeclinableNoun "кофе" P.masculine P.inanimate) ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (P.mkN "мясо") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (P.mkN "пицца") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (P.mkN "чай") ;
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
--- properties
-
-
- Bad = P.mkA "плохой" ;
- Cheap = P.mkA "дешевый" ;
- Boring = P.mkA "скучный" ;
- Cold = L.cold_A ;
- Delicious = P.mkA "вкусный" ;
- Expensive = P.mkA "дорогой" ;
- Fresh = P.mkA "свежий" ;
- Good = L.good_A ;
- Suspect = P.mkA "подозрительный" ;
- Warm = L.warm_A ;
-
-
-
--- places
-
- Airport = mkPlace "аэропорт" in_Prep ;
- AmusementPark = mkPlace2 "развлечения" "парк" in_Prep;
- Bank = mkPlace "банк" in_Prep ;
- Bar = mkPlace "бар" in_Prep ;
- Cafeteria = mkPlace "кафетерий" in_Prep ;
- Center = mkPlace "центр" in_Prep ;
- Church = mkPlace "церковь" in_Prep ;
- Cinema = mkPlace "кино" in_Prep ;
- Disco = mkPlace "дискотека" on_Prep ;
- Hospital = mkPlace "больница" in_Prep ;
- Hotel = mkPlace "отель" in_Prep ;
- Museum = mkPlace "музей" in_Prep ;
- Park = mkPlace "парк" in_Prep ;
- Parking = mkPlace "автостоянка" on_Prep ;
- Pharmacy = mkPlace "аптека" in_Prep ;
- PostOffice = mkPlace "почта" on_Prep ;
- Pub = mkPlace "паб" in_Prep ;
- Restaurant = mkPlace "ресторан" in_Prep ;
- Shop = mkPlace "магазин" in_Prep ;
- School = mkPlace "школа" in_Prep ;
- Station = mkPlace "станция" on_Prep ;
- Supermarket = mkPlace "супермаркет" in_Prep ;
- Theatre = mkPlace "театр" in_Prep ;
- Toilet = mkPlace "туалет" in_Prep ;
- University = mkPlace "университет" in_Prep ;
- Zoo = mkPlace "зоопарк" in_Prep ;
-
-
- CitRestaurant cit =
- mkCNPlace (mkCN cit (P.mkN "ресторан")) in_Prep to2_Prep ;
-
-
--- currencies
-
- DanishCrown = mkCN (P.mkA "датский") (P.mkN "крона" P.inanimate) ;
- Dollar = mkCN (P.mkN "доллар" P.inanimate) ;
- Euro = mkCN (P.mkIndeclinableNoun "евро" P.neuter P.inanimate) ;
- Lei = mkCN (P.mkN "лей" P.inanimate) ;
- Leva = mkCN (P.mkN "лев" P.inanimate) ;
- NorwegianCrown = mkCN (P.mkA "норвежский") (P.mkN "крона" P.inanimate) ;
- Pound = mkCN (P.mkN "фунт" P.inanimate);
- Rouble = mkCN (P.mkN "рубль" P.inanimate) ;
- SwedishCrown = mkCN (P.mkA "шведский") (P.mkN "крона" P.inanimate) ;
- Zloty = mkCN (P.mkN "злотый" P.inanimate) ;
-
-
--- Nationalities
-
--- Belgian = mkNat "бельгийский" (P.mkPN "Бельгия" P.feminine P.singular P.inanimate) ;
- Bulgarian = mkNat "болгарский" (P.mkPN "Болгария" P.feminine P.singular P.animate) ;
- Catalan = mkNat "каталонский" (P.mkPN "Каталония" P.feminine P.singular P.animate) ;
- Danish = mkNat "датский" (P.mkPN "Дания" P.feminine P.singular P.animate) ;
- Dutch = mkNat "нидерландский" (P.mkPN "Нидерланды" P.neuter P.plural P.inanimate) ;
- English = mkNat "английский" (P.mkPN "Англия" P.feminine P.singular P.animate) ;
- Finnish = mkNat "финский" (P.mkPN "Финляндия" P.feminine P.singular P.animate) ;
--- Flemish = mkNat "фландрийский" (P.mkPN "Фландрия" P.feminine P.singular P.animate) ;
- French = mkNat "французский" (P.mkPN "Франция" P.feminine P.singular P.animate) ;
- German = mkNat "немецкий" (P.mkPN "Германия" P.feminine P.singular P.animate) ;
- Italian = mkNat "итальянский" (P.mkPN "Италия" P.feminine P.singular P.animate) ;
- Norwegian = mkNat "норвежский" (P.mkPN "Норвегия" P.feminine P.singular P.animate) ;
- Polish = mkNat "польский" (P.mkPN "Польша" P.feminine P.singular P.animate) ;
- Romanian = mkNat "румынский" (P.mkPN "Румыния" P.feminine P.singular P.animate) ;
- Russian = mkNat "русский" (P.mkPN "Россия" P.feminine P.singular P.animate) ;
- Spanish = mkNat "испанский" (P.mkPN "Испания" P.feminine P.singular P.inanimate) ;
- Swedish = mkNat "шведский" (P.mkPN "Швеция" P.feminine P.singular P.animate) ;
-
-
--- Means of transportation
-
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (P.mkN "автобус") ;
- Car = mkTransport (P.mkN "автомобиль");
- Ferry = mkTransport (P.mkN "паром") ;
- Plane = mkTransport (P.mkN "самолет") ;
- Subway = mkTransport (P.mkIndeclinableNoun "метро" P.neuter P.inanimate) ;
- Taxi = mkTransport (P.mkIndeclinableNoun "такси" P.neuter P.inanimate) ;
- Tram = mkTransport (P.mkN "трамвай") ;
- Train = mkTransport (P.mkN "поезд") ;
-
- ByFoot = P.mkAdv "пешком" ;
-
-
-
--- actions
--- AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
- AHasAge p num = mkCl (mkVP be_V3 (mkNP num L.year_N) p.name) ;
- AHasName p name = mkCl (mkVP (P.mkV3 name_is_V "" "" P.nominative P.accusative) name p.name) ;
- AHasChildren p num = mkCl (mkVP have_V3 (mkNP num L.child_N) p.name) ;
- AHasRoom p num = mkCl (mkVP have2_V3
- (mkNP (mkNP a_Det (P.mkN "номер"))
- (SyntaxRus.mkAdv for_Prep (mkNP num (L.man_N)))) p.name) ;
- AHasTable p num = mkCl (mkVP have2_V3
- (mkNP (mkNP a_Det (P.mkN "стол"))
- (SyntaxRus.mkAdv for_Prep (mkNP num (L.man_N)))) p.name) ;
- AHungry p = mkCl p.name (P.mkA "голодный") ;
- AIll p = mkCl p.name (P.mkA "больной") ;
- AKnow p = mkCl p.name (P.regV P.imperfective P.first "зна" "ю" "знал" "знай" "знать" ) ;
- ALike p item = mkCl item (P.mkV2 (P.mkV P.imperfective "нравлюсь" "нравишься" "нравится" "нравимся" "нравитесь" "нравятся" "нравился" "нравься" "нравиться") [] P.dative) p.name ;
- ALive p co = mkCl p.name (mkVP (mkVP (P.regV P.imperfective P.firstE "жив" "у" "жил" "живи" "жить")) (SyntaxRus.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name (P.dirV2 (P.regV P.imperfective P.second "люб" "лю" "любил" "люби" "любить" )) q.name ;
--- AMarried p = mkCl p.name (P.mkA "женатый") ;
- AMarried p = let status = case p.name.g of {
- R.PGen R.Masc => P.mkAdv "женат" ;
- _ => P.mkAdv "замужем"
- } in mkCl p.name status ;
- AReady p = mkCl p.name (P.mkA "готовый") ;
- AScared p = mkCl p.name (P.mkV P.imperfective "боюсь" "боишься" "боится" "боимся" "бойтесь" "боятся" "боялся" "бойся" "бояться") ;
- ASpeak p lang = mkCl p.name (P.mkV2 (P.regV P.imperfective P.secondA "говор" "ю" "говорил" "говори" "говорить") "на" P.prepositional) lang ;
- AThirsty p = mkCl p.name want_VV (mkVP (P.regV P.imperfective P.firstE "пь" "ю" "пил" "пей" "пить" )) ;
- ATired p = mkCl p.name (P.mkA "уставший" R.Rel) ;
- AUnderstand p = mkCl p.name (P.regV P.imperfective P.first "понима" "ю" "понимал" "понимай" "понимать") ;
- AWant p obj = mkCl p.name (P.dirV2 (P.regV P.imperfective P.mixed "хо" "чу" "хотел" "хоти" "хотеть")) obj ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP (P.mkV P.perfective "пошёл" "пошёл" "пошёл" "пошли" "пошли" "пошли" "пошёл" "пойди" "пойти")) place.to) ;
- --AWantGo p place = mkCl p.name want_VV (mkVP (mkVP (P.mkV P.imperfective "иду" "идёшь" "идёт" "идём" "идёте" "идут" "шёл" "иди" "идти")) place.to) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl how_IAdv (mkCl (mkVP (P.mkV2 name_is_V "" P.accusative) p.name))) ;
- QWhatAge p = mkQS (mkQCl (mkIP how8many_IDet L.year_N) p.name);
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item cost_V)) ;
- ItCost item price = mkCl item (P.mkV2 cost_V "" P.accusative) price ;
-
- PropOpen p = mkCl p.name open_A ;
- PropClosed p = mkCl p.name closed_A ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) 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 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 (P.mkN "жена" P.animate) ;
- Husband = xOf sing (P.mkN "муж" P.animate) ;
- Son = xOf sing (P.mkN "сын" P.animate) ;
- Daughter = xOf sing (P.mkN "дочь" "дочери" "дочери" "дочь" "дочерью" "дочери" "дочь" "дочери" "дочерей" "дочерям" "дочерей" "дочерьми" "дочерях" P.feminine P.animate) ;
--- Daughter = xOf sing E.daughter_N ;
- Children = xOf plur L.child_N ;
-
-
-
--- week days
-
- Monday = mkDay "понедельник" P.masculine ;
- Tuesday = mkDay "вторник" P.masculine ;
- Wednesday = mkDay "среда" P.feminine ;
- Thursday = mkDay "четверг" P.masculine ;
- Friday = mkDay "пятница" P.feminine ;
- Saturday = mkDay "суббота" P.feminine ;
- Sunday = mkDay "воскресенье" P.neuter ;
-
- Tomorrow = P.mkAdv "завтра" ;
-
--- modifiers of places
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (P.mkA "дешевый") ;
- TheMostExpensive = mkSuperl (P.mkA "дорогой") ;
- TheMostPopular = mkSuperl (P.mkA "популярный") ;
- 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 (SyntaxRus.mkAdv from_Prep x.name))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxRus.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))) ;
-
-
-
-
- oper
- mkNat : Str -> PN -> NPNationality = \la,co ->
- mkNPNationality (mkNP (mkCN (P.mkA la) (P.mkN "язык"))) (mkNP co) (P.mkA la) ;
-
- mkDay : Str -> P.Gender -> {name : NP ; point : Adv ; habitual : Adv} =
- \d,g -> mkNPDay (mkNP (P.mkPN d g P.singular P.inanimate)) (mkAdv (P.mkPrep "в" P.accusative) (mkNP (P.mkPN d g P.singular P.inanimate)))
- ---- (mkAdv on_Prep (mkNP (P.mkPN d)))
- (mkAdv (P.mkPrep "по" P.dative) (mkNP a_Quant plNum (mkCN (P.mkN d)))) ;
-
--- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i ->
--- mkCNPlace (mkCN p) (P.mkPrep i P.prepositional) to_Prep ;
- mkPlace : Str -> Prep -> {name : CN ; at : Prep ; to : Prep ; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN (P.mkN p)) i to_Prep;
-
- mkPlace2 : Str -> Str -> Prep -> {name : CN ; at : Prep ; to : Prep ; isPl : Bool} = \p,p2,i ->
- mkCNPlace (mkCN (P.mkN2 (P.mkN p2)) (mkNP (P.mkN p))) i to_Prep;
-
- open_A = P.mkA "открытый";
- closed_A = P.mkA "закрытый";
-
- cost_V = P.regV P.imperfective P.secondA "сто" "ю" "стоил" "стой" "стоить" ;
-
- name_is_V = P.mkV P.imperfective "зову" "зовëшь" "зовут" "зовëм" "зовëте" "зовут" "звал" "зови" "звать" ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (mkNP the_Quant a c) (SyntaxRus.mkAdv possess_Prep b)) p ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxRus.mkAdv on_Prep (mkNP the_Det n)
- } ;
-
- far_IAdv = ss "как далеко" ** {lock_IAdv = <>} ;
- long_IAdv = ss "как долго" ** {lock_IAdv = <>};
-
- mkSuperl : A -> Det = \a -> SyntaxRus.mkDet the_Art (SyntaxRus.mkOrd a) ;
-
-}
diff --git a/examples/phrasebook/WordsSnd.gf b/examples/phrasebook/WordsSnd.gf
deleted file mode 100644
index 99f37dcf8..000000000
--- a/examples/phrasebook/WordsSnd.gf
+++ /dev/null
@@ -1,281 +0,0 @@
---2 Implementations of Words, with English as example
-
-concrete WordsSnd of Words = SentencesSnd **
- open
- SyntaxSnd,
--- CommonHindustani,
- ParadigmsSnd,
- (L = LexiconSnd),
- (P = ParadigmsSnd),
- MorphoSnd,
--- IrregSnd,
- ExtraSnd,
- 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 (mkN03 "پنير") ;
- Chicken = mkCN (mkN04 "ڪڪڙ") ;
- Coffee = mkCN (mkN03 "ڪافي") ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN03 "گوشت") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN12 "پيزا") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN09 "چانھ") ;
- 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 = mkA "فضول" ;
- Cheap = mkA "سستو" ;
- Cold = L.cold_A ;
- Delicious = mkA "ذائقيدار" ;
- Expensive = mkA "مهانگو" ;
- Fresh = mkA "تازو" ;
- Good = L.good_A ;
- Suspect = mkA "برو" ;
- 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 "هوائي اڏو" "تي" ;
--- AmusementPark = mkCompoundPlace "اميوزيم" "پارڪ" "۾" ;
- Bank = mkPlace "بئنڪ" "۾" ;
- Bar = mkPlace "بار" "۾" ;
- Cafeteria = mkPlace "ڪينٽين" "۾" ;
- Center = mkPlace "سينٽر" "تي" ;
- Cinema = mkPlace "سينيما" "۾" ;
- Church = mkPlace "چرچ" "۾" ;
- Disco = mkPlace "ڊسڪو" "۾" ;
- Hospital = mkPlace "اسپتال" "۾" ;
- Hotel = mkPlace "هوٽل" "۾" ;
- Museum = mkPlace "ميوزيم" "۾" ;
- Park = mkPlace "پارڪ" "۾" ;
- Parking = mkCompoundPlace "ڪار" "پارڪ" "۾" ;
- Pharmacy = mkPlace "ميڊيڪل اسٽور" "تي" ;
- PostOffice = mkCompoundPlace "پوسٽ" "آفيس" "۾" ;
- Pub = mkPlace "پب" "۾" ;
- Restaurant = mkPlace "هوٽل" "۾" ;
- School = mkPlace "اسڪول" "۾" ;
- Shop = mkPlaceFem "دڪان" "۾" Fem;
- Station = mkPlace "اسٽيشن" "تي" ;
- Supermarket = mkPlace "سپر مارڪيٽ" "۾" ;
- Theatre = mkPlace "ٿيٽر" "۾" ;
- Toilet = mkPlace "ڪاڪوس" "۾" ;
- University = mkPlaceFem "يونيورسٽي" "۾" Fem;
- Zoo = mkPlace "راڻي باغ" "۾" ;
-
--- CitRestaurant cit = mkCNPlace (mkCN cit (mkN09 "هوٽل")) in_Prep to_Prep ;
-
-
--- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
-
- DanishCrown = mkCN (mkA "ڊينش") (mkCN (mkN03 "ڪراؤن")) | mkCN (mkN03 "ڪراؤن") ;
- Dollar = mkCN (mkN03 "ڊالر") ;
- Euro = mkCN (mkN12 "يورو") ; -- to prevent euroes
- Lei = mkCN (mkN03 "لي") ;
- Leva = mkCN (mkN12 "ليوا") ;
- NorwegianCrown = mkCN (mkA "نارويجين") (mkCN (mkN03 "ڪراؤن")) | mkCN (mkN03 "ڪراؤن") ;
- Pound = mkCN (mkN03 "پاؤنڊ") ;
- Rouble = mkCN (mkN03 "روبل") ;
- SwedishCrown = mkCN (mkA "سويڊش") (mkCN (mkN03 "ڪراؤن")) | mkCN (mkN03 "ڪراؤن") ;
- Zloty = mkCN (mkN03 "زلوٽي") ;
-
--- Nationalities
-
- Belgian = mkA "بيلجين" ;
- Belgium = mkNP (mkPN "بيلجيم") ;
- Bulgarian = mkNat "بلغارين" "بلغاريا" ;
--- Catalan = mkNPNationality (mkNP (mkPN "كیٹالان")) (mkNP (mkPN "كاٹالان")) (mkA "كاٹالانین") ;
- Danish = mkNat "ڊينش" "ڊينمارڪ" ;
--- Dutch = mkNPNationality (mkNP (mkPN "ڊچ")) (mkNP the_Quant (mkN14 "نيدرلئنڊ")) (mkA "ڊچ") ;
- English = mkNat "انگلش" "انگلئنڊ" ;
- Finnish = mkNat "فنش" "فنلئنڊ" ;
- Flemish = mkNP (mkPN "فليمش") ;
- French = mkNat "فرانسيسي" "فرانس" ;
- German = mkNat "جرمن" "جرمني" ;
- Italian = mkNat "اٽالوي" "اٽلي" ;
- Norwegian = mkNat "نارويجين" "ناروي" ;
- Polish = mkNat "پولش" "پولئنڊ" ;
- Romanian = mkNat "رومانين" "رومانيا" ;
- Russian = mkNat "روسي" "روس" ;
- Spanish = mkNat "سپيني" "سپين" ;
- Swedish = mkNat "سويڊش" "سويڊن" ;
-
--- Means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN09 "بس" ) ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN09 "فيري") ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN12 "سب وي") ;
- Taxi = mkTransport (mkN09 "ٽئڪسي") ;
- Train = mkTransport (mkN09 "ريل گاڏي") ;
- Tram = mkTransport (mkN09 "ٽرام") ;
-
- ByFoot = P.mkAdv "پيادو" ;
-
--- Actions: the predication patterns are very often language-dependent.
-
--- AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsSnd.mkAdv "جو"));
- AHasAge p num = mkCl p.name (mkNP num (mkCN 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 (mkN01 "ڪمرو")) (SyntaxSnd.mkAdv for_Prep (mkNP num (mkN03 "شخص")))) ;
--- AHasTable p num = mkCl p.name have_V2
- -- (mkNP (mkNP a_Det (mkN04 "ميز")) (SyntaxSnd.mkAdv for_Prep (mkNP num (mkN03 "شخص")))) ;
- AHasName p name = mkCl (nameOf p) name ;
- AHungry p = mkCl p.name (mkA "بکيو") ;
- AIll p = mkCl p.name (mkA "بيمار") ;
- AKnow p = mkCl p.name (mkV "ڄاڻڻ") ;
- ALike p item = mkCl p.name (L.like_V2) item ;
- ALive p co = mkCl p.name (mkVP (mkVP (L.live_V)) (SyntaxSnd.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name (L.love_V2) q.name ;
- AMarried p = mkCl p.name (mkA "پرڻيل") ;
- AReady p = mkCl p.name (mkA "تيار") ;
- AScared p = mkCl p.name (P.mkA "ڊنل") ;
- ASpeak p lang = mkCl p.name L.speak_V2 lang ;
- AThirsty p = mkCl p.name (mkA "اُڃيو") ;
- ATired p = mkCl p.name (P.mkA "ٿڪل") ;
- AUnderstand p = mkCl p.name (mkV "سمجھڻ") ;
- AWant p obj = mkCl p.name (mkV2 (mkV "چاهڻ")) obj ;
--- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.name) ;
--- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
-
--- miscellaneous
-
--- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
- QWhatName p = mkQS (mkQCl what_IAdv (SyntaxSnd.mkNP p.poss (mkCN (mkN01 "نالو")))) ;
--- QWhatAge p = mkQS (mkQCl (mkCl (mkNP (modQuant p.poss)) (mkAdv "ڄمار"))) ;
- QWhatAge p = mkQS (mkQCl howMuch_IAdv (mkNP (modQuant p.poss) (mkCN (mkN09 "ڄمار")))) ;
- HowMuchCost item = mkQS (mkQCl (mkCl (modNP item) (mkAdv ["جو ملھ"]))) ;
--- HowMuchCost item = mkQS (mkQCl howMuch_IAdv (mkNP cost_Predet (modNP item))) ;
- ItCost item price = mkCl item (mkV2 (mkV "ملھ")) price ;
-
- PropOpen p = mkCl p.name open_Adv ;
- PropClosed p = mkCl p.name closed_Adv ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP d) open_Adv) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP d) closed_Adv) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP d.habitual) open_Adv);
- PropClosedDay p d = mkCl p.name (mkVP (mkVP d.habitual) closed_Adv) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (mkPhrase (mkUtt d)) (lin Text (Prelude.ss ("ملون ٿا"))) ;
- PSeeYouPlace p = mkText (mkPhrase (mkUtt p.at)) (lin Text (Prelude.ss ("ملون ٿا"))) ;
- PSeeYouPlaceDate p d =
- mkText (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d)))
- (lin Text (Prelude.ss ("ملون ٿا"))) ;
-
--- Relations are expressed as "می وiفع" or "می سon'س وiفع", as defined by $xOf$
--- below. Languages without productive genitives must use an equivalent of
--- "تہع وiفع oف می سoن" for non-pronouns.
-
- Wife = xOf ssing (mkN04 "زال") ;
- Husband = xOf ssing (mkN03 "مڙس") ;
- Son = xOf ssing (mkN03 "پٽ") ;
- Daughter = xOf ssing (mkN07 "ڌي") ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDay "سومر" ;
- Tuesday = mkDay "اڱارو" ;
- Wednesday = mkDay "اربع" ;
- Thursday = mkDay "خميس" ;
- Friday = mkDay "جمعو" ;
- Saturday = mkDay "ڇنڇر" ;
- Sunday = mkDay "آچر" ;
-
- Tomorrow = P.mkAdv "سڀاڻي" ;
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA "سستو") ;
- TheMostExpensive = mkSuperl (mkA "مهانگو") ;
- TheMostPopular = mkSuperl (mkA "مشهور") ;
- 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 (SyntaxSnd.mkAdv from_Prep x.name))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxSnd.mkAdv from_Prep x.name)) t)) ;
- HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP y.name t)) ;
-
--- WhichTranspPlace trans place =
--- mkQS (mkQCl (SyntaxSnd.mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
-
- IsTranspPlace trans place =
- mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ;
-
-
-
--- auxiliaries
-
- oper
-
- mkNat : Str -> Str -> NPNationality = \nat,co ->
- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
--- let day = mkNP (mkPN d) in
--- let day = (mkNP (mkCN (mkN14 d))) in
- mkNPDay (mkNP (mkCN (mkN14 d))) (SyntaxSnd.mkAdv to_Prep (mkNP (mkCN (mkN14 d))))
- (SyntaxSnd.mkAdv to_Prep (mkNP (mkCN (mkN14 d)))) ; --changed from plNum to sgNum
-
- mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i ->
--- mkCNPlace (mkCN (mkN14 comp (mkN14 p))) (P.mkPrep i) to_Prep ;
- mkCNPlace (mkCN (mkN14 (comp++p))) (P.mkPrep i) to_Prep ;
-
- mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN (mkN14 p)) (P.mkPrep i) to_Prep ;
- mkPlaceFem : Str -> Str -> Gender -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i,g ->
- mkCNPlace (mkCN (mkN14 p)) (P.mkPrep i) to_Prep ;
-
- open_Adv = mkAdv "کلي";
- closed_Adv = mkAdv "بند" ;
-
- xOf : SentencesSnd.GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
-
- nameOf : NPPerson -> NP = \p -> (xOf ssing (mkN01 "نالو") p).name ;
- ssing = False ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxSnd.mkAdv by8means_Prep (mkNP n)
- } ;
-
--- mkSuperl : A -> Det = \a -> SyntaxSnd.mkDet the_Art (SyntaxSnd.mkOrd a) ;
- mkSuperl : A -> Det = \a -> lin Det { s = \\n,g => a.s ! n ! g ! Dir ; n = Sg } ;
-
- far_IAdv = ExtraSnd.IAdvAdv (mkAdv "پري") ;
- what_IAdv = lin IAdv {s = "ڇا"} ;
- howMuch_IAdv = lin IAdv {s = "ڪيترو"} ;
--- cost_Predet = lin Predet {s = ["جو ملھ"]} ;
--------------------
-modN : N -> N = \noun -> lin N {s = \\n,c =>noun.s!n!c++"جو" ; g =noun.g} ;
-modQuant : Quant -> Quant = \q -> lin Quant {s = \\n,g,c => q.s ! n ! Fem ! c ; a = q.a};
-modNP : NP -> NP = \np -> lin NP {s = \\_ => np.s ! NPC Obl ; a = np.a ; isPron = np.isPron};
-
-}
diff --git a/examples/phrasebook/WordsSpa.gf b/examples/phrasebook/WordsSpa.gf
deleted file mode 100644
index fd54e6282..000000000
--- a/examples/phrasebook/WordsSpa.gf
+++ /dev/null
@@ -1,301 +0,0 @@
--- (c) 2010 Aarne Ranta and Olga Caprotti under LGPL
-
-concrete WordsSpa of Words = SentencesSpa ** open
- SyntaxSpa,
- BeschSpa,
- (E = ExtraSpa),
- (L = LexiconSpa),
- (P = ParadigmsSpa),
- (S = SyntaxSpa),
- ParadigmsSpa,
- StructuralSpa,
- Prelude in {
-
-flags coding = utf8 ;
-
-lin
-
--- kinds
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN (mkN "queso") ;
- Chicken = mkCN (mkN "pollo") ;
- Coffee = mkCN (mkN "café" "cafés" masculine) ;
- Fish = mkCN (mkN "pescado") ;
- Meat = mkCN (mkN "carne" feminine) ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "pizza") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "té" "tés" masculine) ;
- Water = mkCN (mkN "agua") ;
- Wine = mkCN L.wine_N ;
-
--- properties
-
- Bad = L.bad_A ;
- Boring = mkA "aburrido" ;
- Cheap = cheap_A ;
- Cold = L.cold_A ;
- Delicious = mkA "delicioso" ;
- Expensive = expensive_A ;
- Fresh = mkA "fresco" ;
- Good = L.good_A ;
- Warm = mkA "caliente" ;
- Suspect = mkA "sospechoso" ;
-
--- places
-
- Airport = mkPlace (mkN "aeropuerto") in_Prep ;
- AmusementPark = mkPlace (compN (mkN "parque") ["de atracciones"]) in_Prep ;
- Bank = mkPlace (mkN "banco") in_Prep ;
- Bar = mkPlace (mkN "bar") in_Prep ;
- Cafeteria = mkPlace (mkN "cafetería") in_Prep;
- Center = mkPlace (mkN "centro") in_Prep;
- Church = mkPlace (mkN "iglesia") in_Prep ;
- Cinema = mkPlace (mkN "cine") in_Prep ;
- Disco = mkPlace (mkN "discoteca") in_Prep;
- Hospital = mkPlace (mkN "hospital") in_Prep ;
- Hotel = mkPlace (mkN "hotel") in_Prep ;
- Museum = mkPlace (mkN "museo") in_Prep ;
- Park = mkPlace (mkN "parque") in_Prep ;
- Parking = mkPlace (mkN "aparcamiento") in_Prep ;
- Pharmacy = mkPlace (mkN "farmacia") in_Prep ;
- PostOffice = mkPlace (compN (mkN "oficina") ["de correos"]) in_Prep ;
- Pub = mkPlace (mkN "pub" "pubs" masculine) in_Prep ;
- Restaurant = mkPlace (mkN "restaurante") in_Prep ;
- School = mkPlace (mkN "escuela") in_Prep ;
- Shop = mkPlace (mkN "tienda") in_Prep ;
- Station = mkPlace (mkN "estación" feminine) in_Prep ;
- Supermarket = mkPlace (mkN "supermercado") in_Prep ;
- Theatre = mkPlace (mkN "teatro") in_Prep ;
- Toilet = mkPlace (mkN "baño") in_Prep ;
- University = mkPlace (mkN "universidad" feminine) in_Prep ;
- Zoo = mkPlace (mkN "zoo") in_Prep ;
-
- CitRestaurant cit = mkCNPlace (mkCN cit (mkN "restaurante")) in_Prep to_Prep ;
-
--- currencies
- DanishCrown = mkCN (mkA "daneso") (mkN "corona") | mkCN (mkN "corona") ;
- Dollar = mkCN (mkN "dólar") ;
- Euro = mkCN (mkN "euro") ;
- Lei = mkCN (mkN "leu") ;
- Leva = mkCN (mkN "lev" "lev" masculine) ;
- NorwegianCrown = mkCN (mkA "noruego") (mkN "corona") | mkCN (mkN "corona") ;
- Pound = mkCN (mkN "libra") | mkCN (mkA "esterlino") (mkN "libra") ;
- Rouble = mkCN (mkN "rublo") ;
- SwedishCrown = mkCN (mkA "sueco") (mkN "corona") | mkCN (mkN "corona") ;
- Zloty = mkCN (mkN "zloty" "zlotys" masculine) ;
-
--- nationalities
-
- Belgian = mkA "belga" ;
- Belgium = mkNP (mkPN "Bélgica") ;
- Bulgarian = mkNat (mkA "búlgaro") "búlgaro" "Bulgaria" ;
- Catalan = mkNat (mkA "catalán") "catalán" "Cataluña" ;
- Danish = mkNat (mkA "danés") "danés" "Dinamarca" ;
- Dutch = mkNat (mkA "neerlandés") "neerlandés" "Holanda" ;
- English = mkNat (mkA "inglés") "inglés" "Inglaterra" ;
- Finnish = mkNat (mkA "finlandés") "finés" "Finlandia" ;
- Flemish = mkNP (mkPN "flamenco") ;
- French = mkNat (mkA "francés") "francés" "Francia" ;
- German = mkNat (mkA "alemán") "alemán" "Alemania" ;
- Italian = mkNat (mkA "italiano") "italiano" "Italia" ;
- Norwegian = mkNat (mkA "noruego") "noruego" "Noruega" ;
- Polish = mkNat (mkA "polaco") "polaco" "Polonia" ;
- Romanian = mkNat (mkA "rumano") "rumano" "Rumanía" ;
- Russian = mkNat (mkA "ruso") "ruso" "Rusia" ;
- Spanish = mkNat (mkA "español" "española") "español" "España" ;
- Swedish = mkNat (mkA "sueco") "sueco" "Suecia" ;
-
--- means of transportation
-
- Bike = mkTransport (mkN "bicicleta") ;
- Bus = mkTransport (mkN "autobús" "autobuses" masculine) ;
- Car = mkTransport L.car_N | mkTransport (mkN "coche") ;
- Ferry = mkTransport (mkN "ferry") | mkTransport (mkN "transbordador") ;
- Plane = mkTransport (mkN "avión" "aviones" masculine) ;
- Subway = mkTransport (mkN "metro") ;
- Taxi = mkTransport (mkN "taxi" masculine) ;
- Train = mkTransport (mkN "tren") ;
- Tram = mkTransport (mkN "tranvía") ;
-
- ByFoot = P.mkAdv "a pie" ;
-
--- actions
-
- AHasAge p num = mkCl p.name have_V2 (mkNP num L.year_N) ;
- AHasChildren p num = mkCl p.name have_V2 (mkNP num (mkN "hijo")) ;
- AHasRoom p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "habitación" feminine)) (S.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "mesa")) (S.mkAdv for_Prep (mkNP num (mkN "persona")))) ;
- AHasName p name = mkCl p.name (mkV2 (reflV (mkV "llamar"))) name ;
- AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "hambre" feminine))) ;
- AIll p = mkCl p.name stateCopula (mkAP (mkA "enfermo")) ;
- AKnow p = mkCl p.name (mkV (saber_71 "saber")) ;
- ALike p item = mkCl item (mkV2 (mkV ("gustar")) dative) p.name ;
- ALive p co = mkCl p.name (mkVP (mkVP (mkV "vivir")) (S.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name (mkV2 (mkV "amar")) q.name ;
- AMarried p = mkCl p.name stateCopula (mkAP (mkA "casado")) ;
- AReady p = mkCl p.name stateCopula (mkAP (mkA "listo")) ;
- AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "miedo"))) ;
- ASpeak p lang = mkCl p.name (mkV2 (mkV "hablar")) lang ;
- AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "sed" feminine))) ;
- ATired p = mkCl p.name stateCopula (mkAP (mkA "cansado")) ;
- AUnderstand p = mkCl p.name (mkV (defender_29 "entender")) ;
- AWant p obj = mkCl p.name (mkV2 (mkV (querer_64 "querer"))) obj ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
-
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "llamar")))) ;
- QWhatAge p = mkQS (mkQCl (mkIP how8many_IDet L.year_N) p.name have_V2) ;
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "costar" "cuesto"))) ;
- ItCost item price = mkCl item (mkV2 (mkV "costar" "cuesto")) price ;
-
- PropOpen p = mkCl p.name stateCopula (mkAP open_A) ;
- PropClosed p = mkCl p.name stateCopula (mkAP closed_A) ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP stateCopula (mkAP open_A)) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP stateCopula (mkAP closed_A)) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP stateCopula (mkAP open_A)) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP stateCopula (mkAP closed_A)) d.habitual) ;
-
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss ("nos vemos"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss ("nos vemos"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("nos vemos")))
- (mkText (mkPhrase (mkUtt d)) (mkPhrase (mkUtt p.at))) ;
-
--- Relations are expressed as "my wife" or "the wife of my son", as defined by $xOf$
--- below. Languages with productive genitives can use an equivalent of
--- "my son's wife" for non-pronouns, as e.g. in English.
-
- Wife = xOf sing (mkN "esposa" feminine) ;
- Husband = xOf sing (mkN "marido" masculine) ;
- Son = xOf sing (mkN "hijo" masculine) ;
- Daughter = xOf sing (mkN "hija" feminine) ;
- Children = xOf plur (mkN "hijo") ;
-
--- week days
-
- Monday = mkDay "lunes" ;
- Tuesday = mkDay "martes" ;
- Wednesday = mkDay "miércoles" ;
- Thursday = mkDay "jueves" ;
- Friday = mkDay "viernes" ;
- Saturday = mkDay "sábado" ;
- Sunday = mkDay "domingo" ;
-
- Tomorrow = P.mkAdv "mañana" ;
-
-
--- transports
-
- --a qué distancia está PLACE
- HowFar place = mkQS (mkQCl what_distance_IAdv (mkCl place.name placeCopula) );
-
- --a qué distancia está X de Y
- HowFarFrom x y = mkQS (mkQCl what_distance_IAdv
- (mkCl y.name (mkVP (mkVP placeCopula)
- (S.mkAdv from_Prep x.name))));
-
- -- "a qué distancia está X de Y con T"
- -- x,y: Place ; t: ByTransport
- HowFarFromBy x y t = mkQS (mkQCl what_distance_IAdv
- (mkCl y.name (mkVP
- (mkVP (mkVP placeCopula)
- (S.mkAdv from_Prep x.name))
- t)));
-
- -- "a qué distancia está Y con T"
- -- y: Place ; t: ByTransport
- HowFarBy y t = mkQS (mkQCl what_distance_IAdv
- (mkCl y.name (mkVP (mkVP placeCopula) t)));
-
-oper
- what_distance_IAdv = ss "a qué distancia"**{lock_IAdv=<>};
- placeCopula = mkV (estar_2 "estar") ;
-
-lin
- 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 (SyntaxSpa.mkAdv for_Prep place.name)))) ;
-
--- modifiers of places
-
- ------------------------------------------------------------------
- -- Common adjectives like "good" or "bad" come before the noun,
- -- but most of them come after. So, when making a superlative
- -- place, we have to know in which place it belongs.
- --
- -- The lincat of Superlative is defined in SentencesSpa as a type
- -- OrdSuperlative, consisting of {ord: Ord ; isPre: Bool}.
- --
- -- The function mkSuperl returns an OrdSuperlative. SuperlPlace
- -- takes two parameters, OrdSuperlative and PlaceKind, and gives
- -- them to placeNPSuperl (defined in SentencesSpa).
- -- In placeNPSuperl the value of isPre determines whether the
- -- superlative is placed before or after the noun.
- ------------------------------------------------------------------
-
- TheBest = mkSuperl L.good_A True;
- TheClosest = mkSuperl L.near_A False;
- TheCheapest = mkSuperl cheap_A False ;
- TheMostExpensive = mkSuperl expensive_A False ;
- TheMostPopular =
- let popular = mkA "popular"
- in mkSuperl popular False ;
- TheWorst = mkSuperl L.bad_A True ;
-
- SuperlPlace sup p = placeNPSuperl sup p ;
-
-
--- auxiliaries
-
- oper
- mkNat : A -> Str -> Str -> NPNationality = \nat,lang,co ->
- mkNPNationality (mkNP (mkPN lang)) (mkNP (mkPN co)) nat ;
-
-
- -- not the most elegant solution, but it works
- mkDay : Str -> NPDay = \d ->
- case last d of {
- "s" => mkNPDay (mkNP (mkN d)) (P.mkAdv d) (P.mkAdv ("los" ++ d)) ;
- _ => mkNPDay (mkNP (mkN d)) (P.mkAdv d) (P.mkAdv ("los" ++ d + "s"))
- } ;
-
- mkPlace : N -> Prep -> CNPlace = \p,i ->
- mkCNPlace (mkCN p) i dative ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p -> mkRelative n (mkCN x) p ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = S.mkAdv with_Prep (mkNP n)
- } ;
-
- mkSuperl : A -> Bool -> OrdSuperlative = \a,bool ->
- let ord : Ord = S.mkOrd a in {
- ord = ord ;
- isPre = bool ;
- } ;
-
-
- -- for adjectives that express temporary state
- stateCopula = mkVA (mkV (estar_2 "estar")) ;
-
- cheap_A = mkA "barato" ;
- expensive_A = mkA "caro" ;
- open_A = mkA "abierto" ;
- closed_A = mkA "cerrado" ;
-
-}
diff --git a/examples/phrasebook/WordsSwe.gf b/examples/phrasebook/WordsSwe.gf
deleted file mode 100644
index ce22964c7..000000000
--- a/examples/phrasebook/WordsSwe.gf
+++ /dev/null
@@ -1,302 +0,0 @@
--- (c) 2010 Aarne Ranta under LGPL
---# -coding=latin1
-
-concrete WordsSwe of Words = SentencesSwe **
- open SyntaxSwe, ParadigmsSwe, IrregSwe, (L = LexiconSwe), ExtraSwe, Prelude in {
-
- lin
-
--- kinds of food
-
- Apple = mkCN L.apple_N ;
- Beer = mkCN L.beer_N ;
- Bread = mkCN L.bread_N ;
- Cheese = mkCN (mkN "ost") ;
- Chicken = mkCN (mkN "kyckling") ;
- Coffee = mkCN (mkN "kaffe" neutrum) ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "ktt" "ktt") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "pizza") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "te" neutrum) ;
- Water = mkCN L.water_N ;
- Wine = mkCN L.wine_N ;
-
--- properties
-
- Bad = L.bad_A ;
- Cheap = mkA "billig" ;
- Boring = mkA "trkig" ;
- Cold = L.cold_A ;
- Delicious = mkA "lcker" ;
- Expensive = mkA "dyr" ;
- Fresh = mkA "frsk" ;
- Good = L.good_A ;
- Suspect = mkA "suspekt" "suspekt" ;
- Warm = L.warm_A ;
-
--- places
-
- Airport = mkPlace (mkN "flygplats" "flygplatser") "p" ;
- AmusementPark = mkPlace (mkN "njespark" "njesparker") "i" ;
- Bank = mkPlace (mkN "bank" "banker") "i" ;
- Bar = mkPlace (mkN "bar" "barer") "i" ;
- Cafeteria = mkPlace (mkN "caf" "caf") "p" ;
- Center = mkPlace (mkN "innerstad" "innerstder") "p" ; ----
- Church = mkPlace (mkN "kyrka") "i" ;
- Cinema = mkPlace (mkN "bio" "bion" "biografer" "biograferna") "p" ; ---- ?
- Disco = mkPlace (mkN "diskotek" "diskotek") "p" ;
- Hospital = mkPlace (mkN "sjukhus" "sjukhus") "p" ;
- Hotel = mkPlace (mkN "hotell" "hotell") "p" ;
- Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "p" ;
- Park = mkPlace (mkN "park" "parker") "i" ;
- Parking = mkPlace (mkN "parkering") "p" ;
- Pharmacy = mkPlace (mkN "apotek" "apotek") "i" ;
- PostOffice = mkPlace (mkN "post" "poster") "p" ;
- Pub = mkPlace (mkN "pub") "p" ;
- Restaurant = mkPlace (mkN "restaurang" "restauranger") "p" ;
- Shop = mkPlace (mkN "affr" "affrer") "i" ;
- School = mkPlace (mkN "skola") "p" ;
- Station = mkPlace (mkN "station" "stationer") "p" ;
- Supermarket = mkPlace (mkN "snabbkp" "snabbkp") "p" ;
- Theatre = mkPlace (mkN "teater" "teatrar") "p" ;
- Toilet = mkPlace2 (mkN "toalett" "toaletter") "p" "p" ;
- University = mkPlace (mkN "universitet" "universitet") "p" ;
- Zoo = mkPlace (mkN "djurpark" "djurparker") "i" ;
-
- CitRestaurant cit =
- mkCNPlace (mkCN cit (mkN "restaurang" "restauranger")) on_Prep to_Prep ;
-
--- currencies
-
- DanishCrown = mkCN (mkA "dansk") (mkN "krona") | mkCN (mkN "krona") ;
- Dollar = mkCN (mkN "dollar" "dollar") ;
- Euro = mkCN (mkN "euro" "euro") ;
- Lei = mkCN (mkN "lei" "lei") ;
- Leva = mkCN (mkN "leva" "leva") ;
- NorwegianCrown = mkCN (mkA "norsk") (mkN "krona") | mkCN (mkN "krona") ;
- Pound = mkCN (mkN "pund" "pund") ; ---- ett pund ?
- Rouble = mkCN (mkN "rubel" "rubeln" "rubel" "rubeln") ; ---- ?
- Rupee = mkCN (mkN "rupee" "rupee") ; ----
- SwedishCrown = mkCN (mkA "svensk") (mkN "krona") | mkCN (mkN "krona") ;
- Zloty = mkCN (mkN "zloty" "zloty") ;
- Yuan = mkCN (mkN "yuan" "yuan") ;
-
--- nationalities
-
- Belgian = mkA "belgisk" ;
- Belgium = mkNP (mkPN "Belgien") ;
- Bulgarian = mkNat "bulgarisk" "Bulgarien" ;
- Catalan = mkNat "katalansk" "Katalonien" ;
- China = mkNat "kinesisk" "Kina" ;
- Danish = mkNat "dansk" "Danmark" ;
- Dutch = mkNat "nederlndsk" "Nederlnderna" ;
- English = mkNat "engelsk" "England" ;
- Finnish = mkNat "finsk" "Finland" ;
- Flemish = mkNP (mkPN "flamlndska") ;
- French = mkNat "fransk" "Frankrike" ;
- German = mkNat "tysk" "Tyskland" ;
- Hindi = mkNP (mkPN "hindi") ;
- Indian = mkA "indisk" ;
- India = mkNP (mkPN "Indien") ;
- Italian = mkNat "italiensk" "Italien" ;
- Norwegian = mkNat "norsk" "Norge" ;
- Polish = mkNat "polsk" "Polen" ;
- Romanian = mkNat "rumnsk" "Rumnien" ;
- Russian = mkNat "rysk" "Ryssland" ;
- Spanish = mkNat "spansk" "Spanien" ;
- Swedish = mkNat "svensk" "Sverige" ;
-
--- means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN "buss") ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "frja") ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN "tunnelbana") ;
- Taxi = mkTransport (mkN "taxi" "taxin" "taxibilar" "taxibilarna") ; ----
- Train = mkTransport L.train_N ;
- Tram = mkTransport (mkN "sprvagn") ;
-
- ByFoot = ParadigmsSwe.mkAdv "till fots" ;
-
--- actions
-
- AHasAge p num = mkCl p.name (mkNP num L.year_N) ;
- AHasName p name = mkCl p.name (mkV2 (mkV "heter")) name ;
- 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 (mkN "rum" "rum"))
- (SyntaxSwe.mkAdv for_Prep (mkNP num (mkN "person" "personer")))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "bord" "bord"))
- (SyntaxSwe.mkAdv for_Prep (mkNP num (mkN "person" "personer")))) ;
- AHungry p = mkCl p.name (mkA "hungrig") ;
- AIll p = mkCl p.name (mkA "sjuk") ;
- AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
- ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
- ALive p co = mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxSwe.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name (mkV2 (mkV "lska")) q.name ;
- AMarried p = mkCl p.name (mkA "gift") ;
- AReady p = mkCl p.name (mkA "frdig") ;
- AScared p = mkCl p.name (mkA "rdd") ;
- ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
- AThirsty p = mkCl p.name (mkA "trstig") ;
- ATired p = mkCl p.name (mkA "trtt") ;
- AUnderstand p = mkCl p.name (mkV "frst" "frstod" "frsttt") ;
- AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl whatSg_IP p.name (mkV2 (mkV "heter"))) ;
- QWhatAge p = mkQS (mkQCl (ICompAP (mkAP L.old_A)) p.name) ;
- HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item (mkV "kosta"))) ;
- ItCost item price = mkCl item (mkV2 (mkV "kosta")) price ;
-
- PropOpen p = mkCl p.name open_A ;
- PropClosed p = mkCl p.name closed_A ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss ("vi ses"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss ("vi ses")))
- (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 (mkN "fru" "fruar") ;
- Husband = xOf sing L.man_N ;
- Son = xOf sing (mkN "son" "sner") ;
- Daughter = xOf sing (mkN "dotter" "dttrar") ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDay "mndag" ;
- Tuesday = mkDay "tisdag" ;
- Wednesday = mkDay "onsdag" ;
- Thursday = mkDay "torsdag" ;
- Friday = mkDay "fredag" ;
- Saturday = mkDay "lrdag" ;
- Sunday = mkDay "sndag" ;
-
- Tomorrow = ParadigmsSwe.mkAdv "imorgon" ;
-
--- transports
-
- HowFar place =
- mkQS (mkQCl far_IAdv (mkCl (mkVP place.to))) ;
- HowFarFrom x y =
- mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP y.to)
- (SyntaxSwe.mkAdv from_Prep x.name)))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP (mkVP y.to)
- (SyntaxSwe.mkAdv from_Prep x.name)) t))) ;
- HowFarBy place t =
- mkQS (mkQCl far_IAdv (mkCl (mkVP (mkVP place.to) 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))) ;
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA "billig") ;
- TheMostExpensive = mkSuperl (mkA "dyr") ;
- TheMostPopular = mkSuperl (mkA "populr") ;
- TheWorst = mkSuperl L.bad_A ;
-
- SuperlPlace sup p = placeNP sup p ;
-
- oper
- mkNat : Str -> Str -> NPNationality = \nat,co ->
- mkNPNationality (mkNP (mkPN (nat + "a"))) (mkNP (mkPN co)) (mkA nat) ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day = mkNP (mkPN d) in
- mkNPDay day (SyntaxSwe.mkAdv on_Prep day)
- (SyntaxSwe.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
-
- mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep ; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN p) (mkPrep i) to_Prep ;
- mkPlace2 : N -> Str -> Str -> {name : CN ; at : Prep ; to : Prep ; isPl : Bool} =
- \p,i,t -> mkCNPlace (mkCN p) (mkPrep i) (mkPrep t) ;
-
- open_A = mkA "ppen" "ppet" ;
- closed_A = mkA "stngd" "stngt" ;
-
- xOf : GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxSwe.mkAdv with_Prep (mkNP n)
- } ;
-
- mkSuperl : A -> Det = \a -> mkDet the_Art (mkOrd a) ;
-
- far_IAdv = ExtraSwe.IAdvAdv L.far_Adv ;
-
---------------------------------------------------
--- New 30/11/2011 AR
---------------------------------------------------
-
- lin
- Thai = mkNPNationality (mkNP (mkPN "thai")) (mkNP (mkPN "Thailand")) (mkA "thailndsk") ;
- Baht = mkCN (mkN "baht" "baht") ;
-
- Rice = mkCN (mkN "ris" "ris") ;
- Pork = mkCN (mkN "flsk" "flsk") ;
- Beef = mkCN (mkN "ntktt" "ntktt") ;
- Egg = mkCN L.egg_N ;
- Noodles = mkCN (mkN "nudel" "nudlar") ;
- Shrimps = mkCN (mkN "rka") ;
- Chili = mkCN (mkN "chili" "chilier") ;
- Garlic = mkCN (mkN "vitlk") ;
- Durian = mkCN (mkN "durian" "durianer") ;
- Mango = mkCN (mkN "mango" "mangoer") ;
- Pineapple = mkCN (mkN "ananas" "ananaser") ;
- Coke = mkCN (mkN "kola") ;
- IceCream = mkCN (mkN "glass") ;
- Salad = mkCN (mkN "sallad" "sallader") ;
- OrangeJuice = mkCN (mkN "apelsinjuice" "apelsinjuicer") ;
- Lemonade = mkCN (mkN "lsk") ;
- Beach = mkPlace (mkN "badstrand" "badstrnder") "p" ;
-
- ItsRaining = mkCl (mkVP L.rain_V0) ;
- ItsCold = mkCl (mkVP L.cold_A) ;
- ItsWarm = mkCl (mkVP L.warm_A) ;
- ItsWindy = mkCl (mkVP (mkV "blser")) ;
- SunShine = mkCl (mkNP the_Det L.sun_N) (skina_V) ;
-
- Smoke = mkVP (mkV "rker") ;
-
- ADoctor = mkProfession (mkN "lkare" "lkare") ;
- AProfessor = mkProfession (mkN "professor" "professorer") ;
- ALawyer = mkProfession (mkN "jurist" "jurister") ;
- AEngineer = mkProfession (mkN "ingenjr" "ingenjrer") ;
- ATeacher = mkProfession (mkN "lrare" "lrare") ;
- ACook = mkProfession (mkN "kock") ;
- AStudent = mkProfession (mkN "student" "srudenter") ;
- ABusinessman = mkProfession (mkN "affrsman" "affrsmannen" "affrsmn" "affrsmnnen") ;
-
- oper
- mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name (mkVP (CompBareCN (mkCN n))) ;
-
-}
diff --git a/examples/phrasebook/WordsTha.gf b/examples/phrasebook/WordsTha.gf
deleted file mode 100644
index 0fe8398a8..000000000
--- a/examples/phrasebook/WordsTha.gf
+++ /dev/null
@@ -1,319 +0,0 @@
-concrete WordsTha of Words = SentencesTha **
- open
- SyntaxTha,
- ParadigmsTha,
- (P = ParadigmsTha),
- (R = ResTha),
- (L = LexiconTha),
- 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 L.cheese_N ;
- Chicken = mkCN (mkN "ไก่") ;
- Coffee = mkCN (mkN (R.thword "กา" "แฟ")) ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN L.meat_N ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN (R.thword "พิซ" "ซา") "ถาด") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "ชา") ;
- 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 = mkA (R.thword "น่า" "เบื่อ") ;
- Cheap = mkA (R.thword "รา" "คา" "ถูก") ;
- Cold = L.cold_A ;
- Delicious = mkA "อร่อย" ;
- Expensive = mkA "แพง" ;
- Fresh = mkA "สด" ;
- Good = mkA "ดี" ;
- Suspect = mkA (R.thword "สง" "สัย") ;
- 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 (placeN (R.thword "สนาม" "บิน")) ;
- AmusementPark = mkPlace (placeN (R.thword "สวน" "สนุก")) ;
- Bank = mkPlace (placeN (R.thword "ธนา" "คาร")) ;
- Bar = mkPlace (placeN (R.thword "บาร์")) ;
- Cafeteria = mkPlace (placeN (R.thword "โรง" "อา" "หาร")) ;
- Center = mkPlace (placeN (R.thword "ศูนย์" "กลาง")) ;
- Cinema = mkPlace (placeN (R.thword "โรง" "หนัง")) ;
- Church = mkPlace (placeN (R.thword "โบส" "ถ์")) ;
- Disco = mkPlace (placeN (R.thword "ดิส" "โก้")) ;
- Hospital = mkPlace (placeN (R.thword "โรง" "พยา" "บาล")) ;
- Hotel = mkPlace (placeN (R.thword "โรง" "แรม")) ;
- Museum = mkPlace (placeN (R.thword "พิ" " พิธ" "ภัณ" "ฑ์")) ;
- Park = mkPlace (placeN (R.thword "สวน")) ;
- Parking = mkPlace (placeN (R.thword "ที่" "จอด" "รถ")) ;
- Pharmacy = mkPlace (placeN (R.thword "ร้าน" "ขาย" "ยา")) ;
- PostOffice = mkPlace (placeN (R.thword "ไปร" "ษณี" "ย์")) ;
- Pub = mkPlace (placeN (R.thword "ร้าน" "เหล้า")) ;
- Restaurant = mkPlace L.restaurant_N ;
- School = mkPlace L.school_N ;
- Shop = mkPlace L.shop_N ;
- Station = mkPlace (placeN (R.thword "สถา" "นี")) ;
- Supermarket = mkPlace (placeN (R.thword "ซุป" "เปอ" "ร์" "มา" "เก็ต")) ;
- Theatre = mkPlace (placeN (R.thword "โรง" "ละ" "คร")) ;
- Toilet = mkPlace (placeN (R.thword "ห้อง" "น้ำ")) ;
- University = mkPlace L.university_N ;
- Zoo = mkPlace (placeN (R.thword "สวน" "สัต" "ว์")) ;
-
- CitRestaurant cit = mkCNPlace (mkCN cit L.restaurant_N) at_Prep noPrep ;
-
-
--- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
-
- DanishCrown = mkCN (mkA (R.thword "เดน" "มาร์ค")) (mkN "โครน") | mkCurrency "โครน" ; ---#
- Dollar = mkCurrency (R.thword "ดอล" "ล่า" "ห์") ;
- Euro = mkCurrency (R.thword "ยู" "โร") ;
- Lei = mkCurrency "ลี" ;
- Leva = mkCurrency (R.thword "ลี" "วา") ;
- NorwegianCrown = mkCN (mkA (R.thword "นอร" "เว" "ย์")) (mkN "โครน") | mkCurrency "โครน" ;
- Pound = mkCurrency (R.thword "ปอน" "ด์") ;
- Rouble = mkCurrency (R.thword "รู" "เบิล") ;
- SwedishCrown = mkCN (mkA (R.thword "สวี" "ดิช")) (mkN "โครน") | mkCurrency "โครน" ;
- Zloty = mkCurrency (R.thword "สะ" "ลอ" "ตี้") ;
-
--- Nationalities
-
- Belgian = mkA (R.thword "เบล" "เยี่ยน") ;
- Belgium = mkNP (mkPN (R.thword "เบล" "เยี่ยม")) ;
- Bulgarian = mkNat (R.thword "บัล" "แก" "เรียน") ;
- Catalan = mkNat (R.thword "คะ" "ตะ" "ลัน") ;
- Danish = mkNat (R.thword "เดน" "นิช") ;
- Dutch = mkNat (R.thword "ดัทช์") ;
- English = mkNat (R.thword "อัง" "กฤษ") ;
- Finnish = mkNat (R.thword "ฟิน" "นิช") ;
- Flemish = mkNP (mkPN (R.thword "เฟลม" "มิช")) ;
- French = mkNat (R.thword "ฝรั่ง" "เศส") ;
- German = mkNat (R.thword "เยอร" "มัน") ;
- Italian = mkNat (R.thword "อิ" "ตา" "เลียน") ;
- Norwegian = mkNat (R.thword "นอร" "เวย์" "เจี้ยน") ;
- Polish = mkNat (R.thword "โป" "ลิช") ;
- Romanian = mkNat (R.thword "โร" "มา" "เนียน") ;
- Russian = mkNat (R.thword "รัส" "เซียน") ;
- Spanish = mkNat (R.thword "สแปน" "นิช") ;
- Swedish = mkNat (R.thword "สวี" "ดิช") ;
-
--- Means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN (R.thword "รถ" "เม" "ล์")) ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN (R.thword "เรือ" "เฟอ" "รี่")) ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN (R.thword "รถ" "ไฟ" "ใต้" "ดิน")) ;
- Taxi = mkTransport (mkN (R.thword "รถ" "แท็ก" "ซี่")) ;
- Train = mkTransport L.train_N ;
- Tram = mkTransport (mkN (R.thword "รถ" "ราง")) ;
-
- ByFoot = P.mkAdv (R.thword "ด้วย" "การ" "เดิน") ;
-
--- Actions: the predication patterns are very often language-dependent.
-
- AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsTha.mkAdv (R.thword "อา" "ยุ"))) ;
- 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 (mkN "ห้อง")) (SyntaxTha.mkAdv for_Prep (mkNP num (mkN "หมาย" "เลข")))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "โต๊ะ")) (SyntaxTha.mkAdv for_Prep (mkNP num (mkN "ตัว" "ที่")))) ;
- AHasName p name = mkCl p.name (mkV2 "ชื่อ") name ; ---
- AHungry p = mkCl p.name (mkA (R.thword "หิว" "ข้าว")) ;
- AIll p = mkCl p.name (mkA (R.thword "เจ็บ" "ปวย")) ;
- AKnow p = mkCl p.name ;
- ALike p item = mkCl p.name (mkV2 (mkV "ชอบ")) item ;
- ALive p co = mkCl p.name (mkVP (mkVP (mkV (R.thword "อา" "ศัย" "อยู่"))) (SyntaxTha.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name L.love_V2 q.name ;
- AMarried p = mkCl p.name (mkAP L.married_A2) ;
- AReady p = mkCl p.name L.ready_A ;
- AScared p = mkCl p.name (mkA "กลัว") ;
- ASpeak p lang = mkCl p.name L.speak_V2 lang ;
- AThirsty p = mkCl p.name (mkA (R.thword "กระ" "หาย" "น้ำ")) ;
- ATired p = mkCl p.name (mkA "เหนื่อย") ;
- AUnderstand p = mkCl p.name (mkV (R.thword "เข้า" "ใจ")) ;
- AWant p obj = mkCl p.name (mkV2 (mkV (R.thword "ต้อง" "การ"))) obj ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
-
--- miscellaneous
-
- QWhatName p = mkQS (mkQCl whatSg_IP p.name (mkV2 "ชื่อ")) ; ---
- QWhatAge p = mkQS (mkQCl (mkIComp how8much_IAdv) (mkNP p.name (ParadigmsTha.mkAdv (R.thword "อา" "ยุ")))) ; --- Adv
- HowMuchCost item = mkQS (mkQCl (mkIComp how8much_IAdv) item) ;
- ItCost item price = mkCl item (mkV2 (R.thword "เป็น" "รา" "คา")) price ;
-
- PropOpen p = mkCl p.name open_A ;
- PropClosed p = mkCl p.name closed_A ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP open_A) d) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP closed_A) d) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP open_A) d.habitual) ;
- PropClosedDay p d = mkCl p.name (mkVP (mkVP closed_A) d.habitual) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (lin Text (ss (R.thword "เจอ" "กัน"))) (mkPhrase (mkUtt d)) ;
- PSeeYouPlace p = mkText (lin Text (ss (R.thword "เจอ" "กัน" "ที่"))) (mkPhrase (mkUtt p.at)) ;
- PSeeYouPlaceDate p d =
- mkText (lin Text (ss (R.thword "เจอ" "กัน" "ที่")))
- (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d))) ;
-
--- Relations are expressed as "มย วิฝเ" or "มย สoณส วิฝเ", as defined by $xOf$
--- below. Languages without productive genitives must use an equivalent of
--- "ตหเ วิฝเ oฝ มย สoน" for non-pronouns.
-
- Wife = xOf (R.thword "ภร" "รยา") ; -- polite
- Husband = xOf (R.thword "สา" "มี") ; -- polite
---- Wife = xOf "เมีย" ; ---- familiar
---- Husband = xOf "ผัว" ; ---- familiar
- Son = xOf (R.thword "ลูก" "ชาย") ;
- Daughter = xOf (R.thword "ลูก" "สาว") ;
- Children = xOf L.child_N.s ; ----
-
--- week days
-
- Monday = mkDay (R.thword "วัน" "จั" "นท" "ร์") ;
- Tuesday = mkDay (R.thword "วัน" "อัง" "คาร") ;
- Wednesday = mkDay (R.thword "วัน" "พุธ") ;
- Thursday = mkDay (R.thword "วัน" "พฤ" "หัส" "บดี") ;
- Friday = mkDay (R.thword "วัน" "ศุกร์") ;
- Saturday = mkDay (R.thword "วัน" "เสาร์") ;
- Sunday = mkDay (R.thword "วัน" "อา" "ทิตย์") ;
-
- Tomorrow = P.mkAdv (R.thword "วัน" "พรุ่ง" "นี้") ;
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA (R.thword "รา" "คา" "ถูก")) ;
- TheMostExpensive = mkSuperl (mkA "แพง") ;
- TheMostPopular = mkSuperl (mkA (R.thword "โด่ง" "ดัง")) ;
- TheWorst = mkSuperl L.bad_A ;
-
- SuperlPlace sup p = placeNP sup p ;
-
-
--- transports
-
- HowFar place = mkQS (mkQCl howFar.howfar place.name) ; ---- (mkNP place.name howFar.far)) ;
-
- HowFarFrom x y =
- mkQS (mkQCl howFar.how (mkCl (mkNP y.name howFar.far) (lin AP (R.thbind from_Prep x.name)))) ; --- no yuu
-
- HowFarFromBy x y t =
- mkQS (mkQCl howFar.how (mkCl (mkNP y.name howFar.far)
- (lin AP (R.thbind from_Prep (mkNP x.name t))))) ;
--- mkQS (mkQCl howFar.how (mkCl (mkNP y.name howFar.far)
--- (SyntaxTha.mkAdv from_Prep (mkNP x.name t)))) ;
-
- HowFarBy y t = mkQS (mkQCl howFar.how (mkCl (mkNP y.name howFar.far) )) ;
-
- WhichTranspPlace trans place =
- mkQS (mkQCl (mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
-
- IsTranspPlace trans place =
- mkQS (mkQCl (mkCl (mkCN (mkCN trans.name (mkSC (mkVP L.go_V))) place.to))) ;
-
-
-
--- auxiliaries
-
- oper
--- thpron = R.thpron ;
-
- mkNat : Str -> NPNationality = \nat ->
- mkNPNationality (mkNP (mkCN (mkA nat) L.language_N)) (mkNP (mkCN (mkA nat) L.country_N)) (mkA nat) ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
- let day = lin NP (ss d) in
- mkNPDay day (SyntaxTha.mkAdv noPrep day)
- (SyntaxTha.mkAdv noPrep (mkNP a_Quant plNum (mkCN (mkN d)))) ;
-
- mkPlace : N -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p ->
- mkCNPlace (mkCN p) at_Prep noPrep ;
-
- open_A = P.mkA "เปิด" ;
- closed_A = P.mkA "ปิด" ;
-
- xOf : Str -> NPPerson -> NPPerson = \f,p ->
- {name = mkNP the_Det (mkCN (personN f) (SyntaxTha.mkAdv possess_Prep p.name)) ;
- isPron = False ; poss = the_Quant} ; ---- poss not used
-
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxTha.mkAdv (mkPrep "โดย") (mkNP n)
- } ;
-
- mkSuperl : A -> Det = \a -> SyntaxTha.mkDet the_Art (SyntaxTha.mkOrd a) ;
-
- mkCurrency : Str -> CN = \s -> mkCN (mkN [] s) ; ---- just a classifier
-
- howFar : {howfar : IComp ; far : Adv ; how : IAdv} = { --- to avoid yuu
- howfar = lin IComp (ss ("ไกล" + "เท่า" + "ไร")) ; far = lin Adv (ss ("ไกล" + "เท่า" + "ไร")) ; how = lin IAdv (ss [])
- } ;
-
- at_Prep = mkPrep "ที่" ;
- noPrep = mkPrep [] ;
-
---------------------------------------------------
--- New 30/11/2011 AR
---------------------------------------------------
-
- lin
- Thai = mkNat "ไทย" ;
- Baht = mkCurrency "บาท" ;
-
- Rice = mkCN (mkN ("ข้าว")) ;
- Pork = mkCN (mkN ("หมู")) ;
- Beef = mkCN (mkN ("เนื้อ")) ;
- Egg = mkCN L.egg_N ;
- Noodles = mkCN (mkN (R.thword "ก๋วย" "เตี๋ยว")) ;
- Shrimps = mkCN (mkN ("กุ้ง")) ;
- Chili = mkCN (mkN "พริก") ;
- Garlic = mkCN (mkN (R.thword "กะ" "เทียม")) ;
- Durian = mkCN (mkN (R.thword "ทุ" "เรียน")) ;
- Mango = mkCN (mkN (R.thword "มะ" "ม่วง")) ;
- Pineapple = mkCN (mkN (R.thword "สับ" "ปะ" "รด")) ;
- Coke = mkCN (mkN ("โค้ก")) ;
- IceCream = mkCN (mkN (R.thword "ไอ" "ศ" "กรีม")) ;
- Salad = mkCN (mkN "สลัด") ;
- OrangeJuice = mkCN (mkN (R.thword "น้ำ" "ส้ม" "คั้น")) ;
- Lemonade = mkCN (mkN (R.thword "น้ำ" "มะ" "นาว")) ;
- Beach = mkPlace (placeN (R.thword "หาด")) ;
-
- ItsRaining = mkCl (mkVP L.rain_V0) ;
- ItsCold = mkCl (mkVP L.cold_A) ;
- ItsWarm = mkCl (mkVP L.warm_A) ;
- ItsWindy = mkCl (mkVP (P.mkA (R.thword "ลม" "จัด"))) ;
- SunShine = mkCl (mkNP the_Det L.sun_N) (mkVP (R.regV (R.thword "ฉาย" "แสง"))) ;
-
- Smoke = mkVP (P.mkV (R.thword "สูบ" "บุ" "รี")) ;
-
- ADoctor = mkProfession (P.personN "หมอ") ;
- AProfessor = mkProfession (P.personN (R.thword "อา" "จารย์")) ;
- ALawyer = mkProfession (P.personN (R.thword "มัก" "กฎ" "หมาย")) ;
- AEngineer = mkProfession (P.personN (R.thword "วิ" "ศวกร")) ;
- ATeacher = mkProfession (P.personN "ครู") ;
- ACook = mkProfession (P.personN (R.thword "ภัก" "ษกาน")) ;
- AStudent = mkProfession (P.personN (R.thword "นัก" "ศึก" "ษา")) ;
- ABusinessman = mkProfession (P.personN (R.thword "ฝู้" "ประ" "กอบ" "การ")) ;
-
- oper
- mkProfession : N -> NPPerson -> Cl = \n,p -> mkCl p.name n ;
-}
-
diff --git a/examples/phrasebook/WordsUrd.gf b/examples/phrasebook/WordsUrd.gf
deleted file mode 100644
index e336968a4..000000000
--- a/examples/phrasebook/WordsUrd.gf
+++ /dev/null
@@ -1,280 +0,0 @@
---2 Implementations of Words, with English as example
-
-concrete WordsUrd of Words = SentencesUrd **
- open
- SyntaxUrd,
- CommonHindustani,
- ParadigmsUrd,
- (L = LexiconUrd),
- (P = ParadigmsUrd),
--- IrregUrd,
- ExtraUrd,
- 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 (mkN "پنیر" Fem) ;
- Chicken = mkCN (mkN "مرغی") ;
- Coffee = mkCN (mkN "كافی") ;
- Fish = mkCN L.fish_N ;
- Meat = mkCN (mkN "گوشت") ;
- Milk = mkCN L.milk_N ;
- Pizza = mkCN (mkN "پیزہ") ;
- Salt = mkCN L.salt_N ;
- Tea = mkCN (mkN "چاے" Fem) ;
- 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 = mkA "فضول" ;
- Cheap = mkA "سستا" ;
- Cold = L.cold_A ;
- Delicious = mkA "مزیدار" ;
- Expensive = mkA "مہنگا" ;
- Fresh = mkA "تازہ" ;
- Good = L.good_A ;
- Suspect = mkA "برا" ;
- 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 "ہوای اڈہ" "پر" ;
- AmusementPark = mkCompoundPlace "ایمیوزیم" "پارك" "میں" ;
- Bank = mkPlace "بینك" "میں" ;
- Bar = mkPlace "بار" "میں" ;
- Cafeteria = mkPlace "كنتین" "میں" ;
- Center = mkPlace "سنٹر" "پر" ;
- Cinema = mkPlace "سینما" "میں" ;
- Church = mkPlace "چرچ" "میں" ;
- Disco = mkPlace "ڈسكو" "میں" ;
- Hospital = mkPlace "ہسپتال" "میں" ;
- Hotel = mkPlace "ہوٹل" "میں" ;
- Museum = mkPlace "میوزیم" "پر" ;
- Park = mkPlace "پارك" "میں" ;
- Parking = mkCompoundPlace "كار" "پارك" "میں" ;
- Pharmacy = mkPlace "فارمیسی" "پر" ;
- PostOffice = mkCompoundPlace "ڈاك" "خانہ" "پر" ;
- Pub = mkPlace "پب" "میں" ;
- Restaurant = mkPlace "ہوٹل" "میں" ;
- School = mkPlace "سكول" "میں" ;
- Shop = mkPlaceFem "دوكان" "میں" Fem;
- Station = mkPlace "سٹیشن" "پر" ;
- Supermarket = mkPlace "سپر ماركیٹ" "میں" ;
- Theatre = mkPlace "تھیٹر" "پر" ;
- Toilet = mkPlace "غسل خانہ" "میں" ;
- University = mkPlaceFem "یونیورسٹی" "میں" Fem;
- Zoo = mkPlace "چڑیا گھر" "میں" ;
-
- CitRestaurant cit = mkCNPlace (mkCN cit (mkN "ہوٹل")) in_Prep to_Prep ;
-
-
--- Currencies; $crown$ is ambiguous between Danish and Swedish crowns.
-
- DanishCrown = mkCN (mkA "ڈینش") (mkN "كراون") | mkCN (mkN "كراون") ;
- Dollar = mkCN (mkN "ڈالر") ;
- Euro = mkCN (mkN "یورو") ; -- to prevent euroes
- Lei = mkCN (mkN "لی") ;
- Leva = mkCN (mkN "لیوا") ;
- NorwegianCrown = mkCN (mkA "نارویجن") (mkN "كراون") | mkCN (mkN "كراون") ;
- Pound = mkCN (mkN "پاونڈ") ;
- Rouble = mkCN (mkN "روبل") ;
- SwedishCrown = mkCN (mkA "سویڈش") (mkN "كراون") | mkCN (mkN "كراون") ;
- Zloty = mkCN (mkN "زلوٹی" Fem) ;
-
--- Nationalities
-
- Belgian = mkA "بلجیم" ;
- Belgium = mkNP (mkPN "بلجیم") ;
- Bulgarian = mkNat "بلغارین" "بلغاریہ" ;
- Catalan = mkNPNationality (mkNP (mkPN "كیٹالان")) (mkNP (mkPN "كاٹالان")) (mkA "كاٹالانین") ;
- Danish = mkNat "ڈینش" "ڈنمارك" ;
- Dutch = mkNPNationality (mkNP (mkPN "ڈچ")) (mkNP the_Quant (mkN "نیدرلینڈ")) (mkA "ڈچ") ;
- English = mkNat "انگلش" "انگلینڈ" ;
- Finnish = mkNat "فنش" "فنلینڈ" ;
- Flemish = mkNP (mkPN "فلیمش") ;
- French = mkNat "فرانسیسی" "فرانس" ;
- German = mkNat "جرمن" "جرمنی" ;
- Italian = mkNat "اطالوی" "اٹلی" ;
- Norwegian = mkNat "نارویجن" "ناروے" ;
- Polish = mkNat "پولش" "پولینڈ" ;
- Romanian = mkNat "رومانین" "رومانیہ" ;
- Russian = mkNat "روسی" "روس" ;
- Spanish = mkNat "سپینی" "سپین" ;
- Swedish = mkNat "سویڈش" "سویڈن" ;
-
--- Means of transportation
-
- Bike = mkTransport L.bike_N ;
- Bus = mkTransport (mkN "بس" Fem) ;
- Car = mkTransport L.car_N ;
- Ferry = mkTransport (mkN "فیری") ;
- Plane = mkTransport L.airplane_N ;
- Subway = mkTransport (mkN "سب وے") ;
- Taxi = mkTransport (mkN "ٹیكسی") ;
- Train = mkTransport (mkN "ریل گاڑی") ;
- Tram = mkTransport (mkN "ٹرام" Fem) ;
-
- ByFoot = P.mkAdv "پیدل" ;
-
--- Actions: the predication patterns are very often language-dependent.
-
--- AHasAge p num = mkCl p.name (mkNP (mkNP num L.year_N) (ParadigmsUrd.mkAdv "كا"));
- AHasAge p num = mkCl p.name (mkNP num (mkCN (modN 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 (mkN "كمرہ")) (SyntaxUrd.mkAdv for_Prep (mkNP num (P.mkN "شخص" "شخص" "شخص" "اشخاص" "اشخاص" "شخصو" masculine)))) ;
- AHasTable p num = mkCl p.name have_V2
- (mkNP (mkNP a_Det (mkN "میز")) (SyntaxUrd.mkAdv for_Prep (mkNP num (P.mkN "شخص" "شخص" "شخص" "اشخاص" "اشخاص" "شخصو" masculine)))) ;
- AHasName p name = mkCl (nameOf p) name ;
- AHungry p = mkCl p.name (mkA "بھوكا") ;
- AIll p = mkCl p.name (mkA "بیمار") ;
- AKnow p = mkCl p.name (mkV "جاننا") ;
- ALike p item = mkCl p.name (L.like_V2) item ;
- ALive p co = mkCl p.name (mkVP (mkVP (L.live_V)) (SyntaxUrd.mkAdv in_Prep co)) ;
- ALove p q = mkCl p.name (L.love_V2) q.name ;
- AMarried p = mkCl p.name (mkA "شادی شدہ") ;
- AReady p = mkCl p.name (mkA "تیار") ;
- AScared p = mkCl p.name (P.mkCompoundA "ڈرا" "ہوا") ;
- ASpeak p lang = mkCl p.name L.speak_V2 lang ;
- AThirsty p = mkCl p.name (mkA "پیاسا") ;
- ATired p = mkCl p.name (P.mkCompoundA "تھكا" "ہوا") ;
- AUnderstand p = mkCl p.name (mkV "سمجھنا") ;
- AWant p obj = mkCl p.name (mkV2 (mkV "چاہنا")) obj ;
--- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.name) ;
- AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
-
--- miscellaneous
-
--- QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
- QWhatName p = mkQS (mkQCl what_IAdv (mkNP p.poss (P.mkN "نام" "نام" "نام" "نام" "نام" "نام" masculine))) ;
--- QWhatAge p = mkQS (mkQCl (mkCl (mkNP (modQuant p.poss)) (mkAdv "عمر"))) ;
- QWhatAge p = mkQS (mkQCl howMuch_IAdv (mkNP (modQuant p.poss) (P.mkN "عمر" feminine))) ;
- HowMuchCost item = mkQS (mkQCl (mkCl (modNP item) (mkAdv ["كی قیمت"]))) ;
--- HowMuchCost item = mkQS (mkQCl howMuch_IAdv (mkNP cost_Predet (modNP item))) ;
- ItCost item price = mkCl item (mkV2 (mkV "قیمت")) price ;
-
- PropOpen p = mkCl p.name open_Adv ;
- PropClosed p = mkCl p.name closed_Adv ;
- PropOpenDate p d = mkCl p.name (mkVP (mkVP d) open_Adv) ;
- PropClosedDate p d = mkCl p.name (mkVP (mkVP d) closed_Adv) ;
- PropOpenDay p d = mkCl p.name (mkVP (mkVP d.habitual) open_Adv);
- PropClosedDay p d = mkCl p.name (mkVP (mkVP d.habitual) closed_Adv) ;
-
--- Building phrases from strings is complicated: the solution is to use
--- mkText : Text -> Text -> Text ;
-
- PSeeYouDate d = mkText (mkPhrase (mkUtt d)) (lin Text (Prelude.ss ("ملتے ہیں"))) ;
- PSeeYouPlace p = mkText (mkPhrase (mkUtt p.at)) (lin Text (Prelude.ss ("ملتے ہیں"))) ;
- PSeeYouPlaceDate p d =
- mkText (mkText (mkPhrase (mkUtt p.at)) (mkPhrase (mkUtt d)))
- (lin Text (Prelude.ss ("ملتے ہیں"))) ;
-
--- Relations are expressed as "می وiفع" or "می سon'س وiفع", as defined by $xOf$
--- below. Languages without productive genitives must use an equivalent of
--- "تہع وiفع oف می سoن" for non-pronouns.
-
- Wife = xOf ssing (mkN "بیوی") ;
- Husband = xOf ssing (mkN "شوہر") ;
- Son = xOf ssing (mkN "بیٹا") ;
- Daughter = xOf ssing (mkN "بیٹی") ;
- Children = xOf plur L.child_N ;
-
--- week days
-
- Monday = mkDay "سوموار" ;
- Tuesday = mkDay "منگل" ;
- Wednesday = mkDay "بدھ" ;
- Thursday = mkDay "جمعرات" ;
- Friday = mkDay "جمعہ" ;
- Saturday = mkDay "ہفتہ" ;
- Sunday = mkDay "اتوار" ;
-
- Tomorrow = P.mkAdv "كل" ;
-
--- modifiers of places
-
- TheBest = mkSuperl L.good_A ;
- TheClosest = mkSuperl L.near_A ;
- TheCheapest = mkSuperl (mkA "سستا") ;
- TheMostExpensive = mkSuperl (mkA "مہنگا") ;
- TheMostPopular = mkSuperl (mkA "مشہور") ;
- 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 (SyntaxUrd.mkAdv from_Prep x.name))) ;
- HowFarFromBy x y t =
- mkQS (mkQCl far_IAdv (mkNP (mkNP y.name (SyntaxUrd.mkAdv from_Prep x.name)) t)) ;
- HowFarBy y t = mkQS (mkQCl far_IAdv (mkNP y.name t)) ;
-
- WhichTranspPlace trans place =
- mkQS (mkQCl (SyntaxUrd.mkIP which_IDet trans.name) (mkVP (mkVP L.go_V) place.to)) ;
-
- IsTranspPlace trans place =
- mkQS (mkQCl (mkCl (mkCN trans.name place.to))) ;
-
-
-
--- auxiliaries
-
- oper
-
- mkNat : Str -> Str -> NPNationality = \nat,co ->
- mkNPNationality (mkNP (mkPN nat)) (mkNP (mkPN co)) (mkA nat) ;
-
- mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
--- let day = mkNP (mkPN d) in
--- let day = (mkNP (mkCN (mkN d))) in
- mkNPDay (mkNP (mkCN (mkN d))) (SyntaxUrd.mkAdv to_Prep (mkNP (mkCN (mkN d))))
- (SyntaxUrd.mkAdv to_Prep (mkNP (mkCN (mkN d)))) ; --changed from plNum to sgNum
-
- mkCompoundPlace : Str -> Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \comp, p, i ->
--- mkCNPlace (mkCN (P.mkN comp (mkN p))) (P.mkPrep i) to_Prep ;
- mkCNPlace (mkCN (mkN (comp++p))) (P.mkPrep i i) to_Prep ;
-
- mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i ->
- mkCNPlace (mkCN (mkN p)) (P.mkPrep i i) to_Prep ;
- mkPlaceFem : Str -> Str -> Gender -> {name : CN ; at : Prep ; to : Prep; isPl : Bool} = \p,i,g ->
- mkCNPlace (mkCN (P.mkN p g)) (P.mkPrep i i) to_Prep ;
-
- open_Adv = P.mkAdv "كھلا" "كھلی";
- closed_Adv = P.mkAdv "بند" ;
-
- xOf : SentencesUrd.GNumber -> N -> NPPerson -> NPPerson = \n,x,p ->
- relativePerson n (mkCN x) (\a,b,c -> mkNP (GenNP b) a c) p ;
-
- nameOf : NPPerson -> NP = \p -> (xOf ssing (mkN "نام") p).name ;
- ssing = False ;
-
- mkTransport : N -> {name : CN ; by : Adv} = \n -> {
- name = mkCN n ;
- by = SyntaxUrd.mkAdv by8means_Prep (mkNP n)
- } ;
-
--- mkSuperl : A -> Det = \a -> SyntaxUrd.mkDet the_Art (SyntaxUrd.mkOrd a) ;
- mkSuperl : A -> Det = \a -> lin Det { s = \\n,g,c => a.s ! n ! g ! c ! Superl ; n = Sg } ;
-
- far_IAdv = ExtraUrd.IAdvAdv (P.mkAdv "دور") ;
- what_IAdv = lin IAdv {s = "كیا"} ;
- howMuch_IAdv = lin IAdv {s = "كتنی"} ;
--- cost_Predet = lin Predet {s = ["كی قیمت"]} ;
--------------------
-modN : N -> N = \noun -> lin N {s = \\n,c =>noun.s!n!c++"كا" ; g =noun.g} ;
-modQuant : Quant -> Quant = \q -> lin Quant {s = \\n,g,c => q.s ! n ! Fem ! c ; a = q.a};
-modNP : NP -> NP = \np -> lin NP {s = \\_ => np.s ! NPC Obl ; a = np.a};
-
-}
diff --git a/examples/phrasebook/add_greetings.gfupdate b/examples/phrasebook/add_greetings.gfupdate
deleted file mode 100644
index a1b2059c7..000000000
--- a/examples/phrasebook/add_greetings.gfupdate
+++ /dev/null
@@ -1,35 +0,0 @@
-+ Greetings
-fun GCongratulations : Greeting ;
-fun GLeaveMeAlone : Greeting ;
-+ GreetingsEng
-lin GCongratulations = ss "congratulations" ;
-+ GreetingsFin
-lin GCongratulations = ss "onneksi olkoon" ;
-lin GLeaveMeAlone = ss "jt minut rauhaan" ;
-
-Fre = ss "flicitations" ;
-Ita = ss "auguri" ;
-
-Swe = ss "grattis" ;
-
-
-lin
-Eng = ss "leave me alone" ;
-Swe = ss "lt mig vara i fred" ;
-
-
-abstract Words
-
-fun Library : PlaceKind ;
-
-lin
-Eng = mkPlace "library" "in" ;
-Fin = mkPlace (mkN "kirjasto") ssa ;
-Fre = mkPlace (mkN "bibliothque") dative ;
-Swe = mkPlace (mkN "bibliotek" "bibliotek") "p" ;
-
-concrete WordsGer
-
-lin Delicious = mkA "kstlich" ;
-lin Expensive = mkA "teuer" ;
-
diff --git a/examples/phrasebook/doc-phrasebook.html b/examples/phrasebook/doc-phrasebook.html
deleted file mode 100644
index a6b42a255..000000000
--- a/examples/phrasebook/doc-phrasebook.html
+++ /dev/null
@@ -1,688 +0,0 @@
-
-
-
-
-
-MOLTO Multilingual Phrasebook
-
-
MOLTO Multilingual Phrasebook
-
-Krasimir Angelov, Olga Caprotti, Ramona Enache, Thomas Hallgren, Inari Listenmaa, Aarne Ranta, Jordi Saludes, Adam Slaski
-Showcase for project FP7-ICT-247914, Deliverable D10.2.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-History
-
-
-1 September. Version 1.1: bug fixes, some new constructions.
- 2 June. Version 1.0 released!
- 29 May. Link to Google translate with the current language pair and phrase.
- 27 May. Polish added.
- 26 May. Version 0.9:
- Catalan added, mass/count noun distinction to reduce overgeneration,
- improved web interface.
- 20 May. Version 0.8:
- Spanish added, Bulgarian complete.
- 9 May. Version 0.7:
- Danish and Norwegian added (preliminary versions induced from statistical models
- and resource grammars).
- 3 May. Version 0.6:
- Extended API (now final for release), Dutch added; new user interface with text
- input enabled.
- 10 April. Some additions in API, comments in implementation; regenerated clones.
- 8 April. Added German.
- 7 April. Added the Clone script, applied to initiate the rest of MOLTO languages.
- 6 April. Version 0.4: weekdays, nationalities
- 30 March. Version 0.3: disambiguation grammar for English
- 28 March. Version 0.2: Swe, Ita; cat Action; small phrases.
- 26 March 2010. Version 0.1: Eng, Fin, Fre, Ron; dedicated minibar UI.
-
-
-
-Missing constructs
-
-
-Back to the phrasebook
-
-
-
-
-
-
-Purpose
-
-This phrasebook is a program for translating touristic phrases
-between 14 European languages included in the
-MOLTO project
-(Multilingual On-Line Translation):
-
-
-Bulgarian, Catalan, Danish, Dutch, English,
- Finnish, French, German, Italian, Norwegian,
- Polish, Romanian, Spanish, Swedish
-
-
-
-A Russian version is not yet finished but is projected later. Also other languages may be added.
-
-
-The phrasebook is implemented by using the GF programming language
-(Grammatical Framework ).
-It is the first demo for the MOLTO project, released in the third month (by June 2010).
-The first version is a very small system, but it will extended in the course of the project.
-
-
-The phrasebook has the following requirement specification:
-
-
-high quality: reliable translations to express yourself in any of the languages
- translation between all pairs of languages
- runnable in web browsers
- runnable on mobile phones (via web browser; Android stand-alone forthcoming)
- easily extensible by new words (forthcoming: semi-automatic extensions by users)
-
-
-
-The phrasebook is available as open-source software, licensed under GNU LGPL.
-The source code resides in
-www.grammaticalframework.org/examples/phrasebook/
-
-
-Points illustrated
-
-From the user perspective
-
-Interlingua-based translation
-
-
-we translate meanings, rather than words
-
-
-
-Incremental parsing
-
-
-the user is at every point guided by the list of possible next words
-
-
-
-Mixed modalities
-
-
-selection of words ("fridge magnets") combined with text input
-
-
-
-Quasi-incremental translation: many basic types are also used as phrases
-
-
-one can translate both words and complete sentences, and get intermediate results
-
-
-
-Disambiguation, esp. of politeness distinctions
-
-
-if a phrase has many translations, each of them is shown and given an explanation
- (currently just in English, later in any source language)
-
-
-
-Fall-back to statistical translation
-
-
-currently just a link to Google translate (forthcoming: tailor-made statistical models)
-
-
-
-Feed-back from users
-
-
-users are welcomed to send comments, bug reports, and better translation suggestions
-
-
-
-From the programmer's perspective
-
-The use of resource grammars and functors
-
-
-
-
-Example-based grammar writing and grammar induction from statistical models
-(Google translate )
-
-
-many of the grammars were created semi-automatically by generalization from
- examples
-
-
-
-Compile-time transfer: especially, in Action in Words
-
-
-the structural differences between languages are treated at compile time,
- for maximal run-time efficiency
-
-
-
-The level of skills involved in grammar development
-
-
-testing different configurations (see table below)
-
-
-
-Grammar testing
-
-
-use of treebanks with guided random generation for initial evaluation and regression testing
-
-
-
-Files
-
-Grammars
-
-Sentences: general syntactic structures implementable in a uniform way.
-Concrete syntax via the functor SencencesI.
-
-
-Words: words and predicates, typically language-dependent.
-Separate concrete syntaxes.
-
-
-Greetings: idiomatic phrases, string-based.
-Separate concrete syntaxes.
-
-
-Phrasebook: the top module putting everything together.
-Separate concrete syntaxes.
-
-
-DisambPhrasebook: disambiguation grammars generating feedback phrases if
-the input language is ambiguous.
-
-
-Numeral: resource grammar module directly inherited from the library.
-
-
-Here is the module structure as produced in GF by
-
-
- > i -retain DisambPhrasebookEng.gf
- > dg -only=Phrasebook*,Sentences*,Words*,Greetings*,Numeral,NumeralEng,DisambPhrasebookEng
- > ! dot -Tpng _gfdepgraph.dot >pgraph.png
-
-
-
-
-
-
-Ontology
-
-The abstract syntax defines the ontology behind the phrasebook.
-Some explanations can be found in the
-ontology document , which is produced from the
-abstract syntax files
-Sentences.gf
-and
-Words.gf
-by make doc.
-
-
-Run-time system and user interface
-
-The phrasebook uses
-the
-PGF server
-written in Haskell and the
-minibar library
-written in JavaScript. Since the sources of these systems are available, anyone can build the phrasebook
-locally on her own computer.
-
-
-Effort and cost
-
-
-Language
-Grammarian's language skills
-Grammarian's GF skills
-Informant used for development
-Informant used for testing
-Use of external tools
-Impact of external tools
-Changes on the resource grammar
-Development time
-
-
-Bulgarian
-###
-###
--
--
--
-?
-#
-##
-
-
-Catalan
-###
-###
--
--
--
-?
-#
-#
-
-
-Danish
--
-###
-+
-+
-+
-##
-#
-##
-
-
-Dutch
--
-###
-+
-+
-+
-##
-#
-##
-
-
-English
-##
-###
--
-+
--
--
-_
-#
-
-
-Finnish
-###
-###
--
--
--
-?
-#
-##
-
-
-French
-##
-###
--
-+
--
-?
-#
-#
-
-
-German
-#
-###
-+
-+
-+
-##
-##
-###
-
-
-Italian
-###
-#
--
--
--
-?
-##
-##
-
-
-Norwegian
-#
-###
-+
--
-+
-##
-#
-##
-
-
-Polish
-###
-###
-+
-+
-+
-#
-#
-##
-
-
-Romanian
-###
-###
--
--
-+
-#
-###
-###
-
-
-Spanish
-##
-#
--
--
--
-?
-_
-##
-
-
-Swedish
-##
-###
--
-+
--
-?
--
-##
-
-
-
-
-Explanation on scores
-
-
-Grammarian's language skills
-
- - : no skills
- # : passive knowledge
- ## : fluent non-native
- ### : native speaker
-
-
-
-
-Grammarian's GF skills
-
- - : no skills
- # : basic skills (2-day GF tutorial)
- ## : medium skills (previous experience of similar task)
- ### : advanced skills (resource grammar writer/substantial contributor)
-
-
-
-
-Informant used for development/Informant needed for testing/Use of external tools
-
-
-
-
-Impact of external tools
-
- ? : not investigated
- - : no effect on the Phrasebook
- # : small impact (literal translation, simple idioms)
- ## : medium effect (translation of more forms of words, contextual preposition)
- ### : great effect (no extra work needed, translations are correct)
-
-
-
-
-Changes on the resource grammars
-
- - : no changes
- # : 1-3 minor changes
- ## : 4-10 minor changes, 1-3 medium changes
- ### : >10 changes of any kind
-
-
-
-
-Overall effort (including extra work on resource grammars)
-
- # : less than 8 person hours
- ## : 8-24 person hours
- ### : >24 person hours
-
-
-
-
-Example-based grammar writing prototype
-
-The figure presents the process of creating a Phrasebook using an example-based
-approach for the language X, where X = {Danish, Dutch, German, Norwegian}.
-
-
-
-
-
-the first step assumes an analysis of the resource grammar and extracts the necessary
- information that functions that build new lexical entries would need.
- A model is built so that the proper forms of the word can be rendered,
- and additional information, such as gender, can be inferred. The script applies
- these rules to each entry that we want to translate into the target language, and
- one obtains a set of constructions.
- they are furthermore given to an external translator tool (Google translate)
- or a native speaker for translation. One needs the configuration file even if the
- translator is human, because formal knowledge of grammar is not assumed.
- the translations into the target language are further more processed in order to
- build the linearizations of the categories first, decoding the information received.
- Furthermore, having the words in the lexicon, one can parse the translations of
- functions with the GF parser and generalize from that.
- the resulting grammar is tested with the aid of a script that generates
- constructions covering all the functions and categories from the grammar, along
- with some other constructions that proved to be problematic in some language.
- The result of the script contains for each construction in the target language
- its English correspondent and the abstract syntax tree. A native speaker
- evaluates the results and if corrections are needed, the algorithm runs again
- with the new examples. Depending on the language skills of the grammar writer,
- the changes can be made directly into the GF files, and the correct examples
- given by the native informant are just kept for validating the results.
- The algorithm is repeated as long as corrections are needed.
-
-
-
-The time needed for preparing the configuration files for a grammar will not be needed
-in the future, since the files are reusable for other applications.
-The time for the second step can be saved if automatic tools, like Google translate
-are used. This is only possible in languages with a simpler morphology and syntax
-and large corpora available.
-Good results were obtained for German and Dutch with Google translate, but for
-languages like Romanian or Polish, which are both complex and lack enough resources,
-the results are discouraging.
-
-
-If the statistical oracle works well, the only step where the presence of a human
-translator is needed is the evaluation and feedback step. An average of 4 hours per
-round and 2 rounds were needed in average for the languages for which we performed
-the experiment. It is possible that more effort is needed for more complex languages.
-
-
-To Do
-
-Disambiguation grammars for other languages than English
-
-
-Extend the abstract lexicon in Words by hand or (semi)automatically for
-
-
-food stuff
- places
- actions
-
-
-
-Customizable phone distribution: make your own selection of the 2^15 language subsets
-when downloading the phrasebook to a phone
-
-
-How to contribute
-
-The basic things "everyone" can do is
-
-
-complete missing words in concrete syntaxes
- add new abstract words in Words and greetings in Greetings
-
-
-
-The missing concrete syntax entries are added to the WordsL .gf
-files for each language L . The
-morphological paradigms
-of the GF resource library should be used. Actions (prefixed with A, as AWant) are
-a little more demanding, since they also require syntax constructors. Greetings (prefixed
-with G) are pure strings.
-
-
-Some explanations can be found in the
-implementation document , which is produced from the
-concrete syntax files
-SentencesI.gf
-and
-WordsEng.gf
-by make doc.
-
-
-Here are the steps to follow for contributors:
-
-
-Make sure you have the latest sources
- from GF Darcs ,
- using darcs pull.
- Also make sure that you have compiled the library by make present in gf/lib/src/.
- Work in the directory
- gf/examples/phrasebook/ .
- After you've finished your contribution, recompile the phrasebook by make pgf.
- Save your changes in darcs record . (in the phrasebook subdirectory).
- Make a patch file with darcs send -o my_phrasebook_patch, which you can
- send to GF maintainers.
- (Recommended:) Test the phrasebook on your local server:
-
- Go to gf/src/server/ and follow the instructions in the
- project Wiki .
- Make sure that Phrasebook.pgf is available to you GF server (see project wiki).
- Launch lighttpd (see project wiki).
- How you can open gf/examples/phrasebook/www/phrasebook.html and use your phrasebook!
-
-
-
-
-Don't delete anything! But you are free to correct incorrect forms.
- Don't change the module structure!
- Don't compromise quality to gain coverage: non multa sed multum!
-
-
-
-Conclusions (tentative)
-
-The grammarian need not be a native speaker of the language.
-
-
-For many languages, the grammarian need not even know the language - native informants are
-enough.
-
-
-However, evaluation by native speakers is necessary.
-
-
-Correct and idiomatic translations are possible.
-
-
-A typical development time was 2-3 person working days per language.
-
-
-Google translate helps in bootstrapping grammars, but must be checked.
-
-
-in particular, unreliable for morphologically rich languages
-
-
-
-Resource grammars should give some more support
-
-
-higher-level access to constructions like negative expressions
- large-scale morphological lexica
-
-
-
-Acknowledgements
-
-The Phrasebook has been built in the MOLTO project funded by the European Commission.
-
-
-The authors are grateful to their native speaker informants helping to bootstrap and evaluate
-the grammars:
-Richard Bubel,
-Grégoire Détrez,
-Rise Eilert,
-Karin Keijzer,
-Michał Pałka,
-Willard Rafnsson,
-Nick Smallbone.
-
-
-
-
-
diff --git a/examples/phrasebook/doc-phrasebook.txt b/examples/phrasebook/doc-phrasebook.txt
deleted file mode 100644
index 15a2e862d..000000000
--- a/examples/phrasebook/doc-phrasebook.txt
+++ /dev/null
@@ -1,410 +0,0 @@
-MOLTO Multilingual Phrasebook
-Krasimir Angelov, Olga Caprotti, Ramona Enache, Thomas Hallgren, Inari Listenmaa, Aarne Ranta, Jordi Saludes, Adam Slaski
-Showcase for project FP7-ICT-247914, Deliverable D10.2.
-
-
-%!Encoding:utf-8
-
-%!postproc(html): #HR
-%!postproc(html): #BSMALL
-%!postproc(html): #ESMALL
-
-
-
-
-#HR
-#BSMALL
-
-History
-- 1 September. Version 1.1: bug fixes, some new constructions.
-- 2 June. Version 1.0 released!
-- 29 May. Link to Google translate with the current language pair and phrase.
-- 27 May. Polish added.
-- 26 May. Version 0.9:
- Catalan added, mass/count noun distinction to reduce overgeneration,
- improved web interface.
-- 20 May. Version 0.8:
- Spanish added, Bulgarian complete.
-- 9 May. Version 0.7:
- Danish and Norwegian added (preliminary versions induced from statistical models
- and resource grammars).
-- 3 May. Version 0.6:
- Extended API (now final for release), Dutch added; new user interface with text
- input enabled.
-- 10 April. Some additions in API, comments in implementation; regenerated clones.
-- 8 April. Added German.
-- 7 April. Added the Clone script, applied to initiate the rest of MOLTO languages.
-- 6 April. Version 0.4: weekdays, nationalities
-- 30 March. Version 0.3: disambiguation grammar for English
-- 28 March. Version 0.2: Swe, Ita; cat Action; small phrases.
-- 26 March 2010. Version 0.1: Eng, Fin, Fre, Ron; dedicated minibar UI.
-
-
-[Missing constructs missing.txt]
-
-[Back to the phrasebook http://www.grammaticalframework.org/demos/phrasebook/]
-
-#ESMALL
-#HR
-
-
-=Purpose=
-
-This phrasebook is a program for translating touristic phrases
-between 14 European languages included in the
-[MOLTO http://www.molto-project.eu] project
-(Multilingual On-Line Translation):
-- Bulgarian, Catalan, Danish, Dutch, English,
- Finnish, French, German, Italian, Norwegian,
- Polish, Romanian, Spanish, Swedish
-
-
-A Russian version is not yet finished but is projected later. Also other languages may be added.
-
-The phrasebook is implemented by using the GF programming language
-([Grammatical Framework http://grammaticalframework.org]).
-It is the first demo for the MOLTO project, released in the third month (by June 2010).
-The first version is a very small system, but it will extended in the course of the project.
-
-The phrasebook has the following requirement specification:
-- high quality: reliable translations to express yourself in any of the languages
-- translation between all pairs of languages
-- runnable in web browsers
-- runnable on mobile phones (via web browser; Android stand-alone forthcoming)
-- easily extensible by new words (forthcoming: semi-automatic extensions by users)
-
-
-The phrasebook is available as open-source software, licensed under GNU LGPL.
-The source code resides in
-[``www.grammaticalframework.org/examples/phrasebook/`` http://www.grammaticalframework.org/examples/phrasebook/]
-
-
-
-=Points illustrated=
-
-
-==From the user perspective==
-
-Interlingua-based translation
-- we translate meanings, rather than words
-
-
-Incremental parsing
-- the user is at every point guided by the list of possible next words
-
-
-Mixed modalities
-- selection of words ("fridge magnets") combined with text input
-
-
-Quasi-incremental translation: many basic types are also used as phrases
-- one can translate both words and complete sentences, and get intermediate results
-
-
-Disambiguation, esp. of politeness distinctions
-- if a phrase has many translations, each of them is shown and given an explanation
- (currently just in English, later in any source language)
-
-
-Fall-back to statistical translation
-- currently just a link to Google translate (forthcoming: tailor-made statistical models)
-
-
-Feed-back from users
-- users are welcomed to send comments, bug reports, and better translation suggestions
-
-
-
-==From the programmer's perspective==
-
-The use of resource grammars and functors
-- the translator was implemented on top of an earlier linguistic knowledge base,
- the [GF Resource Grammar Library http://www.grammaticalframework.org/lib]
-
-
-Example-based grammar writing and grammar induction from statistical models
-([Google translate http://translate.google.com])
-- many of the grammars were created semi-automatically by generalization from
- examples
-
-
-Compile-time transfer: especially, in Action in Words
-- the structural differences between languages are treated at compile time,
- for maximal run-time efficiency
-
-
-The level of skills involved in grammar development
-- testing different configurations (see table below)
-
-
-Grammar testing
-- use of treebanks with guided random generation for initial evaluation and regression testing
-
-
-
-
-=Files=
-
-==Grammars==
-
-``Sentences``: general syntactic structures implementable in a uniform way.
-Concrete syntax via the functor ``SencencesI``.
-
-``Words``: words and predicates, typically language-dependent.
-Separate concrete syntaxes.
-
-``Greetings``: idiomatic phrases, string-based.
-Separate concrete syntaxes.
-
-``Phrasebook``: the top module putting everything together.
-Separate concrete syntaxes.
-
-``DisambPhrasebook``: disambiguation grammars generating feedback phrases if
-the input language is ambiguous.
-
-``Numeral``: resource grammar module directly inherited from the library.
-
-Here is the module structure as produced in GF by
-```
- > i -retain DisambPhrasebookEng.gf
- > dg -only=Phrasebook*,Sentences*,Words*,Greetings*,Numeral,NumeralEng,DisambPhrasebookEng
- > ! dot -Tpng _gfdepgraph.dot >pgraph.png
-```
-
-[pgraph.png]
-
-
-==Ontology==
-
-The abstract syntax defines the **ontology** behind the phrasebook.
-Some explanations can be found in the
-[ontology document Ontology.html], which is produced from the
-abstract syntax files
-[``Sentences.gf`` http://www.grammaticalframework.org/examples/phrasebook/Sentences.gf]
-and
-[``Words.gf`` http://www.grammaticalframework.org/examples/phrasebook/Words.gf]
-by ``make doc``.
-
-
-
-==Run-time system and user interface==
-
-The phrasebook uses
-the
-[PGF server http://code.google.com/p/grammatical-framework/wiki/LaunchWebDemos]
-written in Haskell and the
-[minibar library http://www.grammaticalframework.org/demos/minibar/about.html]
-written in JavaScript. Since the sources of these systems are available, anyone can build the phrasebook
-locally on her own computer.
-
-
-=Effort and cost=
-
-|| Language | Grammarian's language skills | Grammarian's GF skills | Informant used for development | Informant used for testing | Use of external tools | Impact of external tools | Changes on the resource grammar | Development time ||
-| Bulgarian | ### | ### | - | - | - | ? | # | ## |
-| Catalan | ### | ### | - | - | - | ? | # | # |
-| Danish | - | ### | + | + | + | ## | # | ## |
-| Dutch | - | ### | + | + | + | ## | # | ## |
-| English | ## | ### | - | + | - | - | _ | # |
-| Finnish | ### | ### | - | - | - | ? | # | ## |
-| French | ## | ### | - | + | - | ? | # | # |
-| German | # | ### | + | + | + | ## | ## | ### |
-| Italian | ### | # | - | - | - | ? | ## | ## |
-| Norwegian | # | ### | + | - | + | ## | # | ## |
-| Polish | ### | ### | + | + | + | # | # | ## |
-| Romanian | ### | ### | - | - | + | # | ### | ### |
-| Spanish | ## | # | - | - | - | ? | _ | ## |
-| Swedish | ## | ### | - | + | - | ? | - | ## |
-
-
-Explanation on scores
-
-- Grammarian's language skills
- - - : no skills
- - # : passive knowledge
- - ## : fluent non-native
- - ### : native speaker
-
-
-- Grammarian's GF skills
- - - : no skills
- - # : basic skills (2-day GF tutorial)
- - ## : medium skills (previous experience of similar task)
- - ### : advanced skills (resource grammar writer/substantial contributor)
-
-
-- Informant used for development/Informant needed for testing/Use of external tools
- - - : no
- - + : yes
-
-
-- Impact of external tools
- - ? : not investigated
- - - : no effect on the Phrasebook
- - # : small impact (literal translation, simple idioms)
- - ## : medium effect (translation of more forms of words, contextual preposition)
- - ### : great effect (no extra work needed, translations are correct)
-
-
-- Changes on the resource grammars
- - - : no changes
- - # : 1-3 minor changes
- - ## : 4-10 minor changes, 1-3 medium changes
- - ### : >10 changes of any kind
-
-
-- Overall effort (including extra work on resource grammars)
- - # : less than 8 person hours
- - ## : 8-24 person hours
- - ### : >24 person hours
-
-
-=Example-based grammar writing prototype=
-
-The figure presents the process of creating a Phrasebook using an example-based
-approach for the language X, where X = {Danish, Dutch, German, Norwegian}.
-
-[picpic.jpg]
-
-- the first step assumes an analysis of the resource grammar and extracts the necessary
- information that functions that build new lexical entries would need.
- A model is built so that the proper forms of the word can be rendered,
- and additional information, such as gender, can be inferred. The script applies
- these rules to each entry that we want to translate into the target language, and
- one obtains a set of constructions.
-- they are furthermore given to an external translator tool (Google translate)
- or a native speaker for translation. One needs the configuration file even if the
- translator is human, because formal knowledge of grammar is not assumed.
-- the translations into the target language are further more processed in order to
- build the linearizations of the categories first, decoding the information received.
- Furthermore, having the words in the lexicon, one can parse the translations of
- functions with the GF parser and generalize from that.
-- the resulting grammar is tested with the aid of a script that generates
- constructions covering all the functions and categories from the grammar, along
- with some other constructions that proved to be problematic in some language.
- The result of the script contains for each construction in the target language
- its English correspondent and the abstract syntax tree. A native speaker
- evaluates the results and if corrections are needed, the algorithm runs again
- with the new examples. Depending on the language skills of the grammar writer,
- the changes can be made directly into the GF files, and the correct examples
- given by the native informant are just kept for validating the results.
- The algorithm is repeated as long as corrections are needed.
-
-
-The time needed for preparing the configuration files for a grammar will not be needed
-in the future, since the files are reusable for other applications.
-The time for the second step can be saved if automatic tools, like Google translate
-are used. This is only possible in languages with a simpler morphology and syntax
-and large corpora available.
-Good results were obtained for German and Dutch with Google translate, but for
-languages like Romanian or Polish, which are both complex and lack enough resources,
-the results are discouraging.
-
-If the statistical oracle works well, the only step where the presence of a human
-translator is needed is the evaluation and feedback step. An average of 4 hours per
-round and 2 rounds were needed in average for the languages for which we performed
-the experiment. It is possible that more effort is needed for more complex languages.
-
-
-=To Do=
-
-Disambiguation grammars for other languages than English
-
-Extend the abstract lexicon in ``Words`` by hand or (semi)automatically for
-- food stuff
-- places
-- actions
-
-
-Customizable phone distribution: make your own selection of the 2^15 language subsets
-when downloading the phrasebook to a phone
-
-
-=How to contribute=
-
-The basic things "everyone" can do is
-- complete [missing words missing.txt] in concrete syntaxes
-- add new abstract words in ``Words`` and greetings in ``Greetings``
-
-
-The missing concrete syntax entries are added to the ``Words``//L//``.gf``
-files for each language //L//. The
-[morphological paradigms http://www.grammaticalframework.org/lib/doc/synopsis.html#toc78]
-of the GF resource library should be used. Actions (prefixed with ``A``, as ``AWant``) are
-a little more demanding, since they also require syntax constructors. Greetings (prefixed
-with ``G``) are pure strings.
-
-Some explanations can be found in the
-[implementation document Implementation.html], which is produced from the
-concrete syntax files
-[``SentencesI.gf`` http://www.grammaticalframework.org/examples/phrasebook/SentencesI.gf]
-and
-[``WordsEng.gf`` http://www.grammaticalframework.org/examples/phrasebook/WordsEng.gf]
-by ``make doc``.
-
-Here are the steps to follow for contributors:
-+ Make sure you have the latest sources
- from [GF Darcs http://www.grammaticalframework.org/doc/gf-developers.html],
- using ``darcs pull``.
-+ Also make sure that you have compiled the library by ``make present`` in ``gf/lib/src/``.
-+ Work in the directory
- [``gf/examples/phrasebook/`` http://www.grammaticalframework.org/examples/phrasebook/].
-+ After you've finished your contribution, recompile the phrasebook by ``make pgf``.
-+ Save your changes in ``darcs record .`` (in the ``phrasebook`` subdirectory).
-+ Make a patch file with ``darcs send -o my_phrasebook_patch``, which you can
- send to GF maintainers.
-+ (Recommended:) Test the phrasebook on your local server:
- + Go to ``gf/src/server/`` and follow the instructions in the
- [project Wiki http://code.google.com/p/grammatical-framework/wiki/LaunchWebDemos].
- + Make sure that ``Phrasebook.pgf`` is available to you GF server (see project wiki).
- + Launch ``lighttpd`` (see project wiki).
- + How you can open ``gf/examples/phrasebook/www/phrasebook.html`` and use your phrasebook!
-
-
-- Don't delete anything! But you are free to correct incorrect forms.
-- Don't change the module structure!
-- Don't compromise quality to gain coverage: //non multa sed multum!//
-
-
-
-
-=Conclusions (tentative)=
-
-The grammarian need not be a native speaker of the language.
-
-For many languages, the grammarian need not even know the language - native informants are
-enough.
-
-However, evaluation by native speakers is necessary.
-
-Correct and idiomatic translations are possible.
-
-A typical development time was 2-3 person working days per language.
-
-Google translate helps in bootstrapping grammars, but must be checked.
-- in particular, unreliable for morphologically rich languages
-
-
-Resource grammars should give some more support
-- higher-level access to constructions like negative expressions
-- large-scale morphological lexica
-
-
-
-
-
-
-=Acknowledgements=
-
-The Phrasebook has been built in the MOLTO project funded by the European Commission.
-
-The authors are grateful to their native speaker informants helping to bootstrap and evaluate
-the grammars:
-Richard Bubel,
-Grégoire Détrez,
-Rise Eilert,
-Karin Keijzer,
-Michał Pałka,
-Willard Rafnsson,
-Nick Smallbone.
-
diff --git a/examples/phrasebook/help-phrasebook.html b/examples/phrasebook/help-phrasebook.html
deleted file mode 100644
index 538ddf211..000000000
--- a/examples/phrasebook/help-phrasebook.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-MOLTO Phrasebook Help
-
-
MOLTO Phrasebook Help
-
-
-
-
-To start: klick at a word or start typing.
-
-
-From : source language
-
-
-To : target language (either a single one or "All" simultaneously)
-
-
-Del : delete last word
-
-
-Clear : start over
-
-
-Random : generate a random phrase
-
-
-Google translate: the current input and language choice; opens in a new window or tab.
-
-
-The symbol &+ means binding of two words. It will disappear in the complete translation.
-
-
-The translator is slightly overgenerating , which means you can build some semantically strange phrases.
-Before reporting them as bugs, ask yourself: could this be correct in some situation? is the translation
-valid in that situation?
-
-
-
-
-
diff --git a/examples/phrasebook/help-phrasebook.txt b/examples/phrasebook/help-phrasebook.txt
deleted file mode 100644
index 99ff5f84b..000000000
--- a/examples/phrasebook/help-phrasebook.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-MOLTO Phrasebook Help
-
-
-
-To start: klick at a word or start typing.
-
-**From**: source language
-
-**To**: target language (either a single one or "All" simultaneously)
-
-**Del**: delete last word
-
-**Clear**: start over
-
-**Random**: generate a random phrase
-
-Google translate: the current input and language choice; opens in a new window or tab.
-
-The symbol ``&+`` means binding of two words. It will disappear in the complete translation.
-
-The translator is slightly //overgenerating//, which means you can build some semantically strange phrases.
-Before reporting them as bugs, ask yourself: could this be correct in some situation? is the translation
-valid in that situation?
diff --git a/examples/phrasebook/missing.txt b/examples/phrasebook/missing.txt
deleted file mode 100644
index bd2bdb8a7..000000000
--- a/examples/phrasebook/missing.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-DisambPhrasebookEng : ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookBul : ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookCat : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookDan : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookDut : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookEng : ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookFin : ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookFre : ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookGer : ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookHin : AScared ATired MMust ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookIta : ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookLav : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookNor : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookPes : AHasAge AHasChildren AHasRoom AHasTable AmountCurrency Belgian DrinkNumber GWhatTime ItCost MCan MKnow MMust NNumeral ObjNumber ObjPlur PNumber PPrice ThesPlur ThesePlur ThosePlur V2Wait VWait
-PhrasebookPol : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookRon : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookRus : Belgian Belgium Flemish GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookSpa : ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookSwe : ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookTha : GWhatTime ObjPlur ThesPlur ThesePlur ThosePlur
-PhrasebookUrd : GWhatTime MMust ObjPlur ThesPlur ThesePlur ThosePlur
diff --git a/examples/phrasebook/pgraph.png b/examples/phrasebook/pgraph.png
deleted file mode 100644
index 2027ade0c1c9461191aaf62d4532a788a33373fa..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 67863
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