summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2010-04-05 16:36:38 +0000
committeraarne <aarne@chalmers.se>2010-04-05 16:36:38 +0000
commit2ced613d81b1fb93e3e60c974eee73a8872d7093 (patch)
tree1cf145a675fc1e69210b41810cf50688493236a1
parentc87fe6f0f6e95b5e9c1eddc7b83de4ce36b6958e (diff)
generalized and extended Phrasebook in many ways
-rw-r--r--examples/phrasebook/DisambPhrasebookEng.gf23
-rw-r--r--examples/phrasebook/Greetings.gf2
-rw-r--r--examples/phrasebook/GreetingsEng.gf4
-rw-r--r--examples/phrasebook/GreetingsFin.gf3
-rw-r--r--examples/phrasebook/GreetingsFre.gf5
-rw-r--r--examples/phrasebook/GreetingsIta.gf3
-rw-r--r--examples/phrasebook/GreetingsRon.gf2
-rw-r--r--examples/phrasebook/GreetingsSwe.gf13
-rw-r--r--examples/phrasebook/Makefile3
-rw-r--r--examples/phrasebook/Sentences.gf45
-rw-r--r--examples/phrasebook/SentencesEng.gf4
-rw-r--r--examples/phrasebook/SentencesFin.gf4
-rw-r--r--examples/phrasebook/SentencesFre.gf20
-rw-r--r--examples/phrasebook/SentencesI.gf67
-rw-r--r--examples/phrasebook/SentencesIta.gf20
-rw-r--r--examples/phrasebook/SentencesRon.gf4
-rw-r--r--examples/phrasebook/SentencesSwe.gf4
-rw-r--r--examples/phrasebook/Words.gf39
-rw-r--r--examples/phrasebook/WordsEng.gf106
-rw-r--r--examples/phrasebook/WordsFin.gf110
-rw-r--r--examples/phrasebook/WordsFre.gf107
-rw-r--r--examples/phrasebook/WordsIta.gf105
-rw-r--r--examples/phrasebook/WordsRon.gf35
-rw-r--r--examples/phrasebook/WordsSwe.gf101
-rw-r--r--examples/phrasebook/missing.txt8
25 files changed, 629 insertions, 208 deletions
diff --git a/examples/phrasebook/DisambPhrasebookEng.gf b/examples/phrasebook/DisambPhrasebookEng.gf
index 2292e41d9..7b94ad69b 100644
--- a/examples/phrasebook/DisambPhrasebookEng.gf
+++ b/examples/phrasebook/DisambPhrasebookEng.gf
@@ -1,16 +1,22 @@
--# -path=.:present
concrete DisambPhrasebookEng of Phrasebook = PhrasebookEng -
- [YouFam, YouPol,
+ [
+ IMale, IFemale,
+ YouFamMale, YouFamFemale,
+ YouPolMale, YouPolFemale,
GExcuse, GExcusePol,
GSorry, GSorryPol,
- GPleaseGive, GPleaseGivePol,
- GWhatsYourName, GWhatsYourNamePol
+ GPleaseGive, GPleaseGivePol
]
** open SyntaxEng, ParadigmsEng, Prelude in {
lin
- YouFam = mkNP (mkNP youSg_Pron) (ParadigmsEng.mkAdv "(familiar)") ;
- YouPol = mkNP (mkNP youPol_Pron) (ParadigmsEng.mkAdv "(polite)") ;
+ IMale = mkP i_Pron "(male)" ;
+ IFemale = mkP i_Pron "(female)" ;
+ YouFamMale = mkP youSg_Pron "(familiar,male)" ;
+ YouFamFemale = mkP youSg_Pron "(familiar,female)" ;
+ YouPolMale = mkP youPol_Pron "(polite,male)" ;
+ YouPolFemale = mkP youPol_Pron "(polite,female)" ;
GExcuse = fam "excuse me" ;
GExcusePol = pol "excuse me" ;
@@ -18,11 +24,14 @@ lin
GSorryPol = pol "sorry" ;
GPleaseGive = fam "please" ;
GPleaseGivePol = pol "please" ;
- GWhatsYourName = ss "what's your name (familiar)" ;
- GWhatsYourNamePol = ss "what's your name (polite)" ;
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 : Det} = \p,s ->
+ {name = mkNP (mkNP p) (ParadigmsEng.mkAdv s) ;
+ isPron = False ; -- to show the disambiguation
+ poss = mkDet youSg_Pron
+ } ;
}
diff --git a/examples/phrasebook/Greetings.gf b/examples/phrasebook/Greetings.gf
index c366f3b38..5dc4c4d04 100644
--- a/examples/phrasebook/Greetings.gf
+++ b/examples/phrasebook/Greetings.gf
@@ -12,7 +12,6 @@ fun
GSorry, GSorryPol : Greeting ;
GGoodbye : Greeting ;
GBye : Greeting ;
- GWhatsYourName, GWhatsYourNamePol : Greeting ;
GNiceToMeetYou : Greeting ;
GSeeYouSoon : Greeting ;
GHelp : Greeting ;
@@ -22,6 +21,7 @@ fun
GGoodEvening : Greeting ;
GGoodNight : Greeting ;
GTheCheck : Greeting ;
+ GCheers : Greeting ;
GYes : Greeting ;
GNo : Greeting ;
diff --git a/examples/phrasebook/GreetingsEng.gf b/examples/phrasebook/GreetingsEng.gf
index b4e9de896..304e34c3b 100644
--- a/examples/phrasebook/GreetingsEng.gf
+++ b/examples/phrasebook/GreetingsEng.gf
@@ -1,4 +1,4 @@
-concrete GreetingsEng of Greetings = open Roles, Prelude in {
+concrete GreetingsEng of Greetings = open Prelude in {
lincat
Greeting = SS ;
@@ -12,7 +12,6 @@ lin
GSorry, GSorryPol = ss "sorry" ;
GGoodbye = ss "goodbye" ;
GBye = ss "bye" ;
- GWhatsYourName, GWhatsYourNamePol = ss "what's your name" ;
GNiceToMeetYou = ss "nice to meet you" ;
GSeeYouSoon = ss "see you soon" ;
GHelp = ss "help" ;
@@ -22,6 +21,7 @@ lin
GGoodEvening = ss "good evening" ;
GGoodNight = ss "good night" ;
GTheCheck = ss "the bill" ;
+ GCheers = ss "cheers" ;
GYes = ss "yes" ;
GNo = ss "no" ;
diff --git a/examples/phrasebook/GreetingsFin.gf b/examples/phrasebook/GreetingsFin.gf
index e44b02c8e..ff8cfd474 100644
--- a/examples/phrasebook/GreetingsFin.gf
+++ b/examples/phrasebook/GreetingsFin.gf
@@ -15,8 +15,6 @@ lin
GSorry, GSorryPol = ss "anteeksi" ;
GGoodbye = ss "näkemiin" ;
GBye = ss "hei hei" ;
- GWhatsYourName = ss "mikä sinun nimesi on" ;
- GWhatsYourNamePol = ss "mikä teidän nimenne on" ;
GNiceToMeetYou = ss "hauska tutustua" ;
GSeeYouSoon = ss "nähdään pian" ;
GHelp = ss "apua" ;
@@ -26,6 +24,7 @@ lin
GGoodEvening = ss "hyvää iltaa" ;
GGoodNight = ss "hyvää yötä" ;
GTheCheck = ss "lasku" ;
+ GCheers = ss "terveydeksi" ;
GYes = ss "kyllä" ;
GNo = ss "ei" ;
diff --git a/examples/phrasebook/GreetingsFre.gf b/examples/phrasebook/GreetingsFre.gf
index 567e256da..81e11cdc6 100644
--- a/examples/phrasebook/GreetingsFre.gf
+++ b/examples/phrasebook/GreetingsFre.gf
@@ -1,4 +1,4 @@
-concrete GreetingsFre of Greetings = open Roles,Prelude in {
+concrete GreetingsFre of Greetings = open Prelude in {
flags coding = utf8 ;
@@ -16,8 +16,6 @@ lin
GSorry, GSorryPol = ss "pardon" ;
GGoodbye = ss "au revoir" ;
GBye = ss "au revoir" ;
- GWhatsYourName = ss "comment t'appelles-tu" ;
- GWhatsYourNamePol = ss "comment vous appelez-vous" ;
GNiceToMeetYou = ss "enchanté" ;
GSeeYouSoon = ss "à bientôt" ;
GHelp = ss "au secours" ;
@@ -27,6 +25,7 @@ lin
GGoodEvening = ss "bon soir" ;
GGoodNight = ss "bonne nuit" ;
GTheCheck = ss "l'addition" ;
+ GCheers = ss "santé" ;
GYes = ss "oui" ; ---- si
GNo = ss "non" ;
diff --git a/examples/phrasebook/GreetingsIta.gf b/examples/phrasebook/GreetingsIta.gf
index 33ceb958d..77b840ad7 100644
--- a/examples/phrasebook/GreetingsIta.gf
+++ b/examples/phrasebook/GreetingsIta.gf
@@ -14,8 +14,6 @@ lin
GSorryPol = ss "scusimi" ; ----
GGoodbye = ss "arrivederci" ;
GBye = ss "ciao" ;
- GWhatsYourName = ss "come ti chiami" ;
- GWhatsYourNamePol = ss "come si chiama" ;
-- GNiceToMeetYou = ss "piacevole" ; ----
-- GSeeYouSoon = ss "a poco tempo" ; ----
GHelp = ss "aiuto" ;
@@ -24,6 +22,7 @@ lin
GGoodDay = ss "buongiorno" ;
GGoodEvening = ss "buona sera" ;
GGoodNight = ss "buona notte" ;
+ GCheers = ss "cincin" ;
GTheCheck = ss "il conto" ;
GYes = ss "sì" ;
diff --git a/examples/phrasebook/GreetingsRon.gf b/examples/phrasebook/GreetingsRon.gf
index 8e303a56a..e49974b5d 100644
--- a/examples/phrasebook/GreetingsRon.gf
+++ b/examples/phrasebook/GreetingsRon.gf
@@ -14,7 +14,6 @@ lin
GSorry = ss "îmi pare rău" ;
GGoodbye = ss "la revedere" ;
GBye = ss "pa" ;
- GWhatsYourName = ss "cum te cheamă" ;
GNiceToMeetYou = ss "încântat" ;
GSeeYouSoon = ss "pe curând" ;
GHelp = ss "ajutor" ;
@@ -23,6 +22,7 @@ lin
GGoodDay = ss "bună ziua" ;
GGoodEvening = ss "bună seara" ;
GGoodNight = ss "noapte bună" ;
+ GCheers = ss "noroc" ;
GTheCheck = ss "nota de plată" ;
GYes = ss "da" ;
diff --git a/examples/phrasebook/GreetingsSwe.gf b/examples/phrasebook/GreetingsSwe.gf
index 9384c3955..4636fa65a 100644
--- a/examples/phrasebook/GreetingsSwe.gf
+++ b/examples/phrasebook/GreetingsSwe.gf
@@ -1,4 +1,4 @@
-concrete GreetingsSwe of Greetings = open Roles, Prelude in {
+concrete GreetingsSwe of Greetings = open Prelude in {
lincat
Greeting = SS ;
@@ -7,9 +7,9 @@ lin
GHello = ss "hej" ;
GThanks = ss "tack" ;
GHowAreYou = ss "hur står det till" ;
- GPleaseGive = ss "var så god" ;
- GExcuse = ss "ursäkta" ;
- GSorry = ss "förlåt" ;
+ GPleaseGive, GPleaseGivePol = ss "var så god" ;
+ GExcuse, GExcusePol = ss "ursäkta" ;
+ GSorry, GSorryPol = ss "förlåt" ;
GGoodbye = ss "hej då" ;
GBye = ss "hej då" ;
GNiceToMeetYou = ss "trevligt att träffas" ;
@@ -20,10 +20,7 @@ lin
GGoodDay = ss "god dag" ;
GGoodEvening = ss "god afton" ;
GGoodNight = ss "god natt" ;
-
- GWhatsYourName = ss "vad heter du" ;
- GWhatsYourNamePol = ss "vad heter ni" ;
-
+ GCheers = ss "skål" ;
GTheCheck = ss "notan" ;
GYes = ss "ja" ;
diff --git a/examples/phrasebook/Makefile b/examples/phrasebook/Makefile
index 030b42fbe..bbdb47c40 100644
--- a/examples/phrasebook/Makefile
+++ b/examples/phrasebook/Makefile
@@ -3,6 +3,9 @@ all: pgf missing
pgf:
gf -make PhrasebookEng.gf PhrasebookFin.gf PhrasebookFre.gf PhrasebookIta.gf PhrasebookRon.gf PhrasebookSwe.gf DisambPhrasebookEng.gf DisambPhrasebookRon.gf
+koe:
+ gf -make PhrasebookEng.gf PhrasebookFre.gf DisambPhrasebookEng.gf
+
missing:
echo "pg -missing | wf -file=missing.txt" | gf Phrasebook.pgf
diff --git a/examples/phrasebook/Sentences.gf b/examples/phrasebook/Sentences.gf
index 73fb8a109..694028183 100644
--- a/examples/phrasebook/Sentences.gf
+++ b/examples/phrasebook/Sentences.gf
@@ -2,11 +2,14 @@ abstract Sentences = Numeral ** {
cat
Phrase ;
- Sentence ; Question ;
+ Sentence ; Question ; Proposition ;
Object ; Item ; Kind ; Quality ; Property ;
- Place ; PlaceKind ; Currency ; Price ; Language ;
- Person ; Action ;
-
+ Place ; PlaceKind ; Currency ; Price ;
+ Person ; Action ;
+ Nationality ; Language ; Citizenship ; Country ;
+ Day ; -- weekday type
+ Date ; -- definite date
+ Name ;
fun
-- these phrases are formed here, not in Phrasebook, as they are functorial
PSentence : Sentence -> Phrase ;
@@ -21,19 +24,22 @@ abstract Sentences = Numeral ** {
PCurrency : Currency -> Phrase ;
PPrice : Price -> Phrase ;
PLanguage : Language -> Phrase ;
+ PCitizenship : Citizenship -> Phrase ;
+ PCountry : Country -> Phrase ;
+ PDay : Day -> Phrase ;
+
+ Is : Item -> Quality -> Proposition ;
- Is : Item -> Quality -> Sentence ;
- IsNot : Item -> Quality -> Sentence ;
+ SProp : Proposition -> Sentence ;
+ SPropNot : Proposition -> Sentence ;
+ QProp : Proposition -> Question ;
- WhetherIs : Item -> Quality -> Question ;
- WhereIs : Place -> Question ;
+ WhereIs : Place -> Question ;
- SAction : Action -> Sentence ;
- SNotAction : Action -> Sentence ;
- QAction : Action -> Question ;
+ PropAction : Action -> Proposition ;
HowMuchCost : Item -> Question ;
- ItCost : Item -> Price -> Sentence ;
+ ItCost : Item -> Price -> Proposition ;
AmountCurrency : Numeral -> Currency -> Price ;
ObjItem : Item -> Object ;
@@ -48,6 +54,19 @@ abstract Sentences = Numeral ** {
ThePlace : PlaceKind -> Place ;
- I, YouFam, YouPol : Person ;
+ IMale, IFemale,
+ YouFamMale, YouFamFemale,
+ YouPolMale, YouPolFemale : Person ;
+
+ LangNat : Nationality -> Language ;
+ CitiNat : Nationality -> Citizenship ;
+ CountryNat : Nationality -> Country ;
+ PropCit : Citizenship -> Property ;
+
+ OnDay : Day -> Date ;
+ Today : Date ;
+ PersonName : Name -> Person ;
+---- NameString : String -> Name ; ---- creates ambiguities with all words
+ NameNN : Name ; -- the name "NN"
}
diff --git a/examples/phrasebook/SentencesEng.gf b/examples/phrasebook/SentencesEng.gf
index 9c39e2e00..f71b14c6f 100644
--- a/examples/phrasebook/SentencesEng.gf
+++ b/examples/phrasebook/SentencesEng.gf
@@ -1,3 +1,5 @@
concrete SentencesEng of Sentences = NumeralEng ** SentencesI with
(DiffPhrasebook = DiffPhrasebookEng),
- (Syntax = SyntaxEng) ;
+ (Syntax = SyntaxEng),
+ (Symbolic = SymbolicEng),
+ (Lexicon = LexiconEng) ;
diff --git a/examples/phrasebook/SentencesFin.gf b/examples/phrasebook/SentencesFin.gf
index 3e55038ca..6e7e5c9de 100644
--- a/examples/phrasebook/SentencesFin.gf
+++ b/examples/phrasebook/SentencesFin.gf
@@ -1,3 +1,5 @@
concrete SentencesFin of Sentences = NumeralFin ** SentencesI with
(DiffPhrasebook = DiffPhrasebookFin),
- (Syntax = SyntaxFin) ;
+ (Syntax = SyntaxFin),
+ (Symbolic = SymbolicFin),
+ (Lexicon = LexiconFin) ;
diff --git a/examples/phrasebook/SentencesFre.gf b/examples/phrasebook/SentencesFre.gf
index c4bbc842f..201db3323 100644
--- a/examples/phrasebook/SentencesFre.gf
+++ b/examples/phrasebook/SentencesFre.gf
@@ -1,10 +1,22 @@
-concrete SentencesFre of Sentences = NumeralFre ** SentencesI - [WhetherIs, QAction]
+concrete SentencesFre of Sentences = NumeralFre ** SentencesI - [
+ QProp,
+ IFemale, YouFamFemale, YouPolFemale
+ ]
with
(DiffPhrasebook = DiffPhrasebookFre),
- (Syntax = SyntaxFre) ** open SyntaxFre, ExtraFre in {
+ (Syntax = SyntaxFre),
+ (Symbolic = SymbolicFre),
+ (Lexicon = LexiconFre) **
+ open SyntaxFre, ExtraFre, Prelude in {
lin
- WhetherIs item quality = lin QS {s = \\_ => (EstcequeS (mkS (mkCl item quality))).s} ;
- QAction a = lin QS {s = \\_ => (EstcequeS (mkS a)).s} ;
+ QProp a =
+ lin QS {s = \\_ => (EstcequeS (mkS a)).s} ;
+ IFemale =
+ {name = mkNP i8fem_Pron ; isPron = True ; poss = mkDet i_Pron} ;
+ YouFamFemale =
+ {name = mkNP youSg8fem_Pron ; isPron = True ; poss = mkDet youSg_Pron} ;
+ YouPolFemale =
+ {name = mkNP youPol8fem_Pron ; isPron = True ; poss = mkDet youPol_Pron};
}
diff --git a/examples/phrasebook/SentencesI.gf b/examples/phrasebook/SentencesI.gf
index f830e6366..31e3a6885 100644
--- a/examples/phrasebook/SentencesI.gf
+++ b/examples/phrasebook/SentencesI.gf
@@ -2,24 +2,33 @@ incomplete concrete SentencesI of Sentences = Numeral **
open
DiffPhrasebook,
Syntax,
+ Lexicon,
+ Symbolic, -- for names as strings
Prelude
in {
lincat
Phrase = Text ;
Sentence = S ;
Question = QS ;
+ Proposition = Cl ;
Item = NP ;
Kind = CN ;
Quality = AP ;
Property = A ;
Object = NP ;
- Place = NP ;
- PlaceKind = CN ;
+ Place = {name : NP ; at : Adv ; to : Adv} ;
+ PlaceKind = {name : CN ; at : Prep ; to : Prep} ;
Currency = CN ;
Price = NP ;
Action = Cl ;
- Person = NP ;
+ Person = {name : NP ; isPron : Bool ; poss : Det} ;
+ Nationality = {lang : NP ; prop : A ; country : NP} ;
Language = NP ;
+ Citizenship = A ;
+ Country = NP ;
+ Day = {name : NP ; point : Adv ; habitual : Adv} ;
+ Date = Adv ;
+ Name = NP ;
lin
PSentence s = mkText s | lin Text (mkUtt s) ; -- optional '.'
PQuestion s = mkText s | lin Text (mkUtt s) ; -- optional '?'
@@ -28,23 +37,27 @@ incomplete concrete SentencesI of Sentences = Numeral **
PKind x = mkPhrase (mkUtt x) ;
PQuality x = mkPhrase (mkUtt x) ;
PNumeral x = mkPhrase (mkUtt (mkCard (x ** {lock_Numeral = <>}))) ;
- PPlace x = mkPhrase (mkUtt x) ;
- PPlaceKind 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) ;
+
+ Is = mkCl ;
- Is item quality = mkS (mkCl item quality) ;
- IsNot item quality = mkS negativePol (mkCl item quality) ;
- WhetherIs item quality = mkQS (mkQCl (mkCl item quality)) ;
- WhereIs place = mkQS (mkQCl where_IAdv place) ;
+ SProp = mkS ;
+ SPropNot = mkS negativePol ;
+ QProp p = mkQS (mkQCl p) ;
- SAction = mkS ;
- SNotAction = mkS negativePol ;
- QAction a = mkQS (mkQCl a) ;
+ WhereIs place = mkQS (mkQCl where_IAdv place.name) ;
+
+ PropAction a = a ;
HowMuchCost item = mkQS (mkQCl how8much_IAdv (mkCl item cost_V)) ;
- ItCost item price = mkS (mkCl item cost_V2 price) ;
+ ItCost item price = mkCl item cost_V2 price ;
AmountCurrency num curr = mkNP <lin Numeral num : Numeral> curr ;
@@ -63,14 +76,34 @@ incomplete concrete SentencesI of Sentences = Numeral **
Very property = mkAP very_AdA (mkAP property) ;
Too property = mkAP too_AdA (mkAP property) ;
PropQuality property = mkAP property ;
- ThePlace kind = mkNP the_Quant kind ;
+ ThePlace kind =
+ let name : NP = mkNP the_Quant kind.name in {
+ name = name ;
+ at = mkAdv kind.at name ;
+ to = mkAdv kind.to name
+ } ;
+
+ 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 ;
- I = mkNP i_Pron ;
- YouFam = mkNP youSg_Pron ;
- YouPol = mkNP youPol_Pron ;
+ PersonName n =
+ {name = n ; isPron = False ; poss = mkDet he_Pron} ; -- poss not used
+---- NameString s = symb s ;
+ NameNN = symb "NN" ;
oper
mkPhrase : Utt -> Text = \u -> lin Text u ; -- no punctuation
+ mkPerson : Pron -> {name : NP ; isPron : Bool ; poss : Det} = \p ->
+ {name = mkNP p ; isPron = True ; poss = mkDet p} ;
}
diff --git a/examples/phrasebook/SentencesIta.gf b/examples/phrasebook/SentencesIta.gf
index 5d1dc24a1..1646d8819 100644
--- a/examples/phrasebook/SentencesIta.gf
+++ b/examples/phrasebook/SentencesIta.gf
@@ -1,5 +1,21 @@
-concrete SentencesIta of Sentences = NumeralIta ** SentencesI
+concrete SentencesIta of Sentences = NumeralIta ** SentencesI - [
+ IFemale, YouFamFemale, YouPolFemale
+ ]
with
(DiffPhrasebook = DiffPhrasebookIta),
- (Syntax = SyntaxIta) ;
+ (Syntax = SyntaxIta),
+ (Symbolic = SymbolicIta),
+ (Lexicon = LexiconIta) **
+ open SyntaxIta, ExtraIta, Prelude in {
+
+ lin
+ IFemale =
+ {name = mkNP i8fem_Pron ; isPron = True ; poss = mkDet i_Pron} ;
+ YouFamFemale =
+ {name = mkNP youSg8fem_Pron ; isPron = True ; poss = mkDet youSg_Pron} ;
+ YouPolFemale =
+ {name = mkNP youPol8fem_Pron ; isPron = True ; poss = mkDet youPol_Pron};
+
+}
+
diff --git a/examples/phrasebook/SentencesRon.gf b/examples/phrasebook/SentencesRon.gf
index eec9ea756..5103d2d59 100644
--- a/examples/phrasebook/SentencesRon.gf
+++ b/examples/phrasebook/SentencesRon.gf
@@ -1,3 +1,5 @@
concrete SentencesRon of Sentences = NumeralRon ** SentencesI with
(DiffPhrasebook = DiffPhrasebookRon),
- (Syntax = SyntaxRon) ;
+ (Syntax = SyntaxRon),
+ (Symbolic = SymbolicRon),
+ (Lexicon = LexiconRon) ;
diff --git a/examples/phrasebook/SentencesSwe.gf b/examples/phrasebook/SentencesSwe.gf
index f2e90ddf3..a57749668 100644
--- a/examples/phrasebook/SentencesSwe.gf
+++ b/examples/phrasebook/SentencesSwe.gf
@@ -1,3 +1,5 @@
concrete SentencesSwe of Sentences = NumeralSwe ** SentencesI with
(DiffPhrasebook = DiffPhrasebookSwe),
- (Syntax = SyntaxSwe) ;
+ (Syntax = SyntaxSwe),
+ (Symbolic = SymbolicSwe),
+ (Lexicon = LexiconSwe) ;
diff --git a/examples/phrasebook/Words.gf b/examples/phrasebook/Words.gf
index 0d364be20..594589569 100644
--- a/examples/phrasebook/Words.gf
+++ b/examples/phrasebook/Words.gf
@@ -4,27 +4,48 @@ abstract Words = Sentences ** {
fun
Wine, Beer, Water, Coffee, Tea : Kind ;
Cheese, Fish, Pizza : Kind ;
- Fresh, Warm, Italian,
+ Fresh, Warm,
Expensive, Delicious, Boring, Good : Property ;
- Bar, Restaurant, Toilet : PlaceKind ;
+ Bar, Restaurant, Toilet,
+ Museum, Airport, Station, Hospital, Church : PlaceKind ;
Euro, Dollar, Lei : Currency ;
- English, Finnish, French, Romanian, Swedish : Language ;
+ English, Finnish, French, Italian, Romanian, Swedish : Nationality ;
+ Belgian : Citizenship ;
+ Flemish : Language ;
+ Belgium : Country ;
--- actions can be expressed by different structures in different languages
+ Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday : Day ;
- AWant : Person -> Object -> Action ;
- ALike : Person -> Item -> Action ;
- AHave : Person -> Kind -> Action ;
- ASpeak : Person -> Language -> Action ;
- ALove : Person -> Person -> Action ;
+-- actions can be expressed by different structures in different languages
+ AWant : Person -> Object -> Action ;
+ ALike : Person -> Item -> Action ;
+ AHave : Person -> Kind -> Action ;
+ ASpeak : Person -> Language -> Action ;
+ ALove : Person -> Person -> Action ;
+ ACitizen : Person -> Citizenship -> Action ;
AHungry : Person -> Action ;
AThirsty : Person -> Action ;
ATired : Person -> Action ;
+ AIll : Person -> Action ;
AScared : Person -> Action ;
AUnderstand : Person -> Action ;
+ AKnow : Person -> Action ;
+ AWantGo : Person -> Place -> Action ;
+ ABePlace : Person -> Place -> Action ;
+ AHasName : Person -> Name -> Action ;
+ ALive : Person -> Country -> Action ;
+
+ QWhatName : Person -> Question ;
+
+ PropOpen : Place -> Proposition ;
+ PropClosed : Place -> Proposition ;
+ PropOpenDate : Place -> Date -> Proposition ;
+ PropClosedDate : Place -> Date -> Proposition ;
+ PropOpenDay : Place -> Day -> Proposition ;
+ PropClosedDay : Place -> Day -> Proposition ;
}
diff --git a/examples/phrasebook/WordsEng.gf b/examples/phrasebook/WordsEng.gf
index 3c7e0b038..b2385662d 100644
--- a/examples/phrasebook/WordsEng.gf
+++ b/examples/phrasebook/WordsEng.gf
@@ -1,7 +1,9 @@
-- (c) 2009 Aarne Ranta under LGPL
concrete WordsEng of Words = SentencesEng **
- open SyntaxEng, ParadigmsEng, IrregEng in {
+ open
+ SyntaxEng, ParadigmsEng, (P = ParadigmsEng),
+ IrregEng, Prelude in {
lin
Wine = mkCN (mkN "wine") ;
Beer = mkCN (mkN "beer") ;
@@ -14,36 +16,96 @@ concrete WordsEng of Words = SentencesEng **
Fish = mkCN (mkN "fish" "fish") ;
Fresh = mkA "fresh" ;
Warm = mkA "warm" ;
- Italian = mkA "Italian" ;
Expensive = mkA "expensive" ;
Delicious = mkA "delicious" ;
Boring = mkA "boring" ;
Good = mkA "good" "better" "best" "well" ;
- Restaurant = mkCN (mkN "restaurant") ;
- Bar = mkCN (mkN "bar") ;
- Toilet = mkCN (mkN "toilet") ;
+ Restaurant = mkPlace "restaurant" "in" ;
+ Bar = mkPlace "bar" "in" ;
+ Toilet = mkPlace "toilet" "in" ;
+ Museum = mkPlace "museum" "in" ;
+ Airport = mkPlace "airport" "at" ;
+ Station = mkPlace "station" "at" ;
+ Hospital = mkPlace "hospital" "in" ;
+ Church = mkPlace "church" "in" ;
Euro = mkCN (mkN "euro" "euros") ; -- to prevent euroes
Dollar = mkCN (mkN "dollar") ;
Lei = mkCN (mkN "leu" "lei") ;
- English = mkNP (mkPN "English") ;
- Finnish = mkNP (mkPN "Finnish") ;
- French = mkNP (mkPN "French") ;
- Romanian = mkNP (mkPN "Romanian") ;
- Swedish = mkNP (mkPN "Swedish") ;
-
- AWant p obj = mkCl p (mkV2 (mkV "want")) obj ;
- ALike p item = mkCl p (mkV2 (mkV "like")) item ;
- AHave p kind = mkCl p have_V2 (mkNP kind) ;
- ASpeak p lang = mkCl p (mkV2 IrregEng.speak_V) lang ;
- ALove p q = mkCl p (mkV2 (mkV "love")) q ;
-
- AHungry p = mkCl p (mkA "hungry") ;
- AThirsty p = mkCl p (mkA "thirsty") ;
- ATired p = mkCl p (mkA "tired") ;
- AScared p = mkCl p (mkA "scared") ;
- AUnderstand p = mkCl p IrregEng.understand_V ;
+ English = mkNat "English" "England" ;
+ Finnish = mkNat "Finnish" "Finland" ;
+ French = mkNat "French" "France" ;
+ Italian = mkNat "Italian" "Italy" ;
+ Romanian = mkNat "Romanian" "Romania" ;
+ Swedish = mkNat "Swedish" "Sweden" ;
+
+ Belgian = mkA "Belgian" ;
+ Flemish = mkNP (mkPN "Flemish") ;
+ Belgium = mkNP (mkPN "Belgium") ;
+
+ Monday = mkDay "Monday" ;
+ Tuesday = mkDay "Tuesday" ;
+ Wednesday = mkDay "Wednesday" ;
+ Thursday = mkDay "Thursday" ;
+ Friday = mkDay "Friday" ;
+ Saturday = mkDay "Saturday" ;
+ Sunday = mkDay "Sunday" ;
+
+ AWant p obj = mkCl p.name (mkV2 (mkV "want")) obj ;
+ ALike p item = mkCl p.name (mkV2 (mkV "like")) item ;
+ AHave p kind = mkCl p.name have_V2 (mkNP kind) ;
+ ASpeak p lang = mkCl p.name (mkV2 IrregEng.speak_V) lang ;
+ ALove p q = mkCl p.name (mkV2 (mkV "love")) q.name ;
+ ACitizen p n = mkCl p.name n ;
+ AHungry p = mkCl p.name (mkA "hungry") ;
+ AThirsty p = mkCl p.name (mkA "thirsty") ;
+ ATired p = mkCl p.name (mkA "tired") ;
+ AScared p = mkCl p.name (mkA "scared") ;
+ AIll p = mkCl p.name (mkA "ill") ;
+ AUnderstand p = mkCl p.name IrregEng.understand_V ;
+ AKnow p = mkCl p.name IrregEng.know_V ;
+ AWantGo p place = mkCl p.name want_VV (mkVP (mkVP IrregEng.go_V) place.to) ;
+ ABePlace p place = mkCl p.name place.at ;
+ AHasName p name = mkCl (nameOf p) name ;
+ ALive p co =
+ mkCl p.name (mkVP (mkVP (mkV "live")) (SyntaxEng.mkAdv in_Prep co)) ;
+
+ QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
+
+ 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) ;
+
+ oper
+ mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
+ {lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ;
+
+ mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
+ let day = mkNP (mkPN d) in
+ {name = day ;
+ point = SyntaxEng.mkAdv on_Prep day ;
+ habitual = SyntaxEng.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))
+ } ;
+
+ mkPlace : Str -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
+ name = mkCN (mkN p) ;
+ at = P.mkPrep i ;
+ to = to_Prep
+ } ;
+
+ open_Adv = P.mkAdv "open" ;
+ closed_Adv = P.mkAdv "closed" ;
+
+ nameOf : {name : NP ; isPron : Bool ; poss : Det} -> NP = \p ->
+ case p.isPron of {
+ True => mkNP p.poss (mkN "name") ;
+ _ => mkNP (mkNP the_Det (mkN "name"))
+ (SyntaxEng.mkAdv possess_Prep p.name)
+ } ;
}
diff --git a/examples/phrasebook/WordsFin.gf b/examples/phrasebook/WordsFin.gf
index c1866026a..fa80d0a78 100644
--- a/examples/phrasebook/WordsFin.gf
+++ b/examples/phrasebook/WordsFin.gf
@@ -1,7 +1,9 @@
-- (c) 2009 Aarne Ranta under LGPL
concrete WordsFin of Words = SentencesFin **
- open SyntaxFin, ParadigmsFin, DiffPhrasebookFin in {
+ open
+ SyntaxFin, ParadigmsFin, (L = LangFin),
+ DiffPhrasebookFin, Prelude, (E = ExtraFin) in {
lin
Wine = mkCN (mkN "viini") ;
Beer = mkCN (mkN "olut" "oluita") ;
@@ -19,36 +21,100 @@ concrete WordsFin of Words = SentencesFin **
"lämpiminä" "lämpimiä" "lämpimien" "lämpimissä" "lämpimiin"
)
"lämpimämpi" "lämpimin" ;
- Italian = mkA "italialainen" ;
Expensive = mkA "kallis" ;
Delicious = mkA "herkullinen" ;
Boring = mkA "tylsä" ;
Good = mkA (mkN "hyvä") "parempi" "paras" ; ---- comparisons?
- Restaurant = mkCN (mkN "ravintola") ;
- Bar = mkCN (mkN "baari") ;
- Toilet = mkCN (mkN "vessa") ;
+ Restaurant = mkPlace (mkN "ravintola") False ;
+ Bar = mkPlace (mkN "baari") False ;
+ Toilet = mkPlace (mkN "vessa") False ;
+ Museum = mkPlace (mkN "museo") False ;
+ Airport = mkPlace (mkN "lento" (mkN "kenttä")) True ;
+ Station = mkPlace (mkN "asema") True ;
+ Hospital = mkPlace (mkN "sairaala") False ;
+ Church = mkPlace (mkN "kirkko") False ;
Euro = mkCN (mkN "euro") ;
Dollar = mkCN (mkN "dollari") ;
Lei = mkCN (mkN "lei") ;
- AWant p obj = mkCl p want_V2 obj ;
- ALike p item = mkCl p like_V2 item ;
- AHave p kind = mkCl p have_V2 (mkNP kind) ;
- ASpeak p lang = mkCl p (mkV2 (mkV "puhua") partitive) lang ;
- ALove p q = mkCl p (mkV2 (mkV "rakastaa") partitive) q ;
-
- English = mkNP (mkPN "englanti") ;
- Finnish = mkNP (mkPN (mkN "suomi" "suomia")) ;
- French = mkNP (mkPN "ranska") ;
- Romanian = mkNP (mkPN "romania") ;
- Swedish = mkNP (mkPN "ruotsi") ;
-
- AHungry p = mkCl p have_V2 (mkNP (mkN "nälkä")) ;
- AThirsty p = mkCl p have_V2 (mkNP (mkN "jano")) ;
- ATired p = mkCl p (caseV partitive (mkV "väsyttää")) ;
- AScared p = mkCl p (caseV partitive (mkV "pelottaa")) ;
- AUnderstand p = mkCl p (mkV "ymmärtää") ;
+ ---- it would be nice to have a capitalization Predef function
+ English = mkNat (mkPN "englanti") (mkPN "Englanti") (mkA "englantilainen") ;
+ Finnish =
+ mkNat (mkPN (mkN "suomi" "suomia")) (mkPN (mkN "Suomi" "Suomia"))
+ (mkA "suomalainen") ;
+ French = mkNat (mkPN "ranska") (mkPN "Ranska") (mkA "ranskalainen") ;
+ Italian = mkNat (mkPN "italia") (mkPN "Italia") (mkA "italialainen") ;
+ Romanian = mkNat (mkPN "romania") (mkPN "Romania") (mkA "romanialainen") ;
+ Swedish = mkNat (mkPN "ruotsi") (mkPN "Ruotsi") (mkA "ruotsalainen") ;
+
+ Belgian = mkA "belgialainen" ;
+ Flemish = mkNP (mkPN "flaami") ;
+ Belgium = mkNP (mkPN "Belgia") ;
+
+ 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") ;
+
+ AWant p obj = mkCl p.name want_V2 obj ;
+ ALike p item = mkCl p.name L.like_V2 item ;
+ AHave p kind = mkCl p.name have_V2 (mkNP kind) ;
+ ASpeak p lang = mkCl p.name (mkV2 (mkV "puhua") partitive) lang ;
+ ALove p q = mkCl p.name (mkV2 (mkV "rakastaa") partitive) q.name ;
+ ACitizen p n = mkCl p.name n ;
+ AHungry p = mkCl p.name have_V2 (mkNP (mkN "nälkä")) ;
+ AThirsty p = mkCl p.name have_V2 (mkNP (mkN "jano")) ;
+ ATired p = mkCl p.name (caseV partitive (mkV "väsyttää")) ;
+ AScared p = mkCl p.name (caseV partitive (mkV "pelottaa")) ;
+ AIll p = mkCl p.name (mkA "sairas") ;
+ AUnderstand p = mkCl p.name (mkV "ymmärtää") ;
+ AKnow p = mkCl p.name (mkV "tietää") ;
+ AWantGo p place = mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
+ ABePlace p place = mkCl p.name place.at ;
+ AHasName p name = mkCl (nameOf p) name ;
+ ALive p co =
+ mkCl p.name (mkVP (mkVP (mkV "asua")) (SyntaxFin.mkAdv in_Prep co)) ;
+
+ QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
+
+ 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) ;
+
+ oper
+ mkNat : PN -> PN -> A ->
+ {lang : NP ; prop : A ; country : NP} = \nat,co,pro ->
+ {lang = mkNP nat ;
+ prop = pro ;
+ country = mkNP co
+ } ;
+
+ ---- 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 ; at : Prep ; to : Prep} = \p,e -> {
+ name = mkCN p ;
+ at = casePrep (if_then_else Case e adessive inessive) ; -- True: external
+ to = casePrep (if_then_else Case e allative elative) ;
+ } ;
+
+ open_Adv = ParadigmsFin.mkAdv "avoinna" ;
+ closed_Adv = ParadigmsFin.mkAdv "kiinni" ;
+
+ nameOf : {name : NP ; isPron : Bool ; poss : Det} -> NP = \p ->
+ mkNP (E.GenNP p.name) (mkN "nimi" "nimiä") ;
}
diff --git a/examples/phrasebook/WordsFre.gf b/examples/phrasebook/WordsFre.gf
index b4fea41ed..3851301a7 100644
--- a/examples/phrasebook/WordsFre.gf
+++ b/examples/phrasebook/WordsFre.gf
@@ -5,8 +5,9 @@ concrete WordsFre of Words = SentencesFre ** open
DiffPhrasebookFre,
IrregFre,
(E = ExtraFre),
- ParadigmsFre in
-{
+ ParadigmsFre,
+ (P = ParadigmsFre) in {
+
flags coding=utf8 ;
lin
@@ -23,36 +24,92 @@ Pizza = mkCN (mkN "pizza" feminine) ;
Fresh = mkA "frais" "fraîche" "frais" "fraîchement" ;
Warm = mkA "chaud" ;
-Italian = mkA "italien" ;
Expensive = mkA "cher" ;
Delicious = mkA "délicieux" ;
Boring = mkA "ennuyeux" ;
Good = prefixA (mkA "bon" "bonne" "bons" "bien") ;
- Restaurant = mkCN (mkN "restaurant") ;
- Bar = mkCN (mkN "bar") ;
- Toilet = mkCN (mkN "toilette") ;
+ Restaurant = mkPlace (mkN "restaurant") in_Prep ;
+ Bar = mkPlace (mkN "bar") in_Prep ;
+ Toilet = mkPlace (mkN "toilette") in_Prep ;
+ Museum = mkPlace (mkN "musée" masculine) in_Prep ;
+ Airport = mkPlace (mkN "aéroport") dative ;
+ Station = mkPlace (mkN "gare") dative ;
+ Hospital = mkPlace (mkN "hôpital") dative ;
+ Church = mkPlace (mkN "église") in_Prep ;
Euro = mkCN (mkN "euro") ;
Dollar = mkCN (mkN "dollar") ;
- Lei = mkCN (mkN "lei") ; ---- ?
-
- AWant p obj = mkCl p want_V2 obj ;
- ALike p item = mkCl item plaire_V2 p ;
- AHave p kind = mkCl p have_V2 (mkNP kind) ;
- ASpeak p lang = mkCl p (mkV2 (mkV "parler")) lang ;
- ALove p q = mkCl p (mkV2 (mkV "aimer")) q ;
-
- English = mkNP (mkPN "anglais") ;
- Finnish = mkNP (mkPN "finnois") ;
- French = mkNP (mkPN "français") ;
- Romanian = mkNP (mkPN "roumain") ;
- Swedish = mkNP (mkPN "suédois") ;
-
- AHungry p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "faim" feminine))) ;
- AThirsty p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "soif" feminine))) ;
- ATired p = mkCl p (mkA "fatigué") ;
- AScared p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "peur" feminine))) ;
- AUnderstand p = mkCl p (mkV IrregFre.comprendre_V2) ;
+ Lei = mkCN (mkN "leu" "lei" masculine) ;
+
+ English = mkNat "anglais" "Angleterre" ;
+ Finnish = mkNat "finlandais" "Finlande" ;
+ French = mkNat "français" "France" ;
+ Italian = mkNat "italien" "Italie" ;
+ Romanian = mkNat "roumain" "Roumanie" ;
+ Swedish = mkNat "suédois" "Suède" ;
+
+ Belgian = mkA "belge" ;
+ Flemish = mkNP (mkPN "flamand") ;
+ Belgium = mkNP (mkPN "Belgique") ;
+
+ Monday = mkDay "lundi" ;
+ Tuesday = mkDay "mardi" ;
+ Wednesday = mkDay "mercredi" ;
+ Thursday = mkDay "jeudi" ;
+ Friday = mkDay "vendredi" ;
+ Saturday = mkDay "samedi" ;
+ Sunday = mkDay "dimanche" ;
+
+ AWant p obj = mkCl p.name want_V2 obj ;
+ ALike p item = mkCl item plaire_V2 p.name ;
+ AHave p kind = mkCl p.name have_V2 (mkNP kind) ;
+ ASpeak p lang = mkCl p.name (mkV2 (mkV "parler")) lang ;
+ ALove p q = mkCl p.name (mkV2 (mkV "aimer")) q.name ;
+ ACitizen p n = mkCl p.name n ;
+ AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "faim" feminine))) ;
+ 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 IrregFre.aller_V) place.to) ;
+ ABePlace p place = mkCl p.name place.at ;
+ 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)) ;
+
+ QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "appeler")))) ;
+
+ 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) ;
+
+ oper
+ mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
+ {lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ;
+
+ mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
+ let day = mkNP (mkPN d) in
+ {name = day ;
+ point = P.mkAdv d ;
+ habitual = P.mkAdv ("le" ++ d) ;
+ } ;
+
+ mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
+ name = mkCN p ;
+ at = i ;
+ to = dative
+ } ;
+
+ open_A = P.mkA "ouvert" ;
+ closed_A = P.mkA "fermé" ;
+
}
diff --git a/examples/phrasebook/WordsIta.gf b/examples/phrasebook/WordsIta.gf
index 550273748..cdc8ca267 100644
--- a/examples/phrasebook/WordsIta.gf
+++ b/examples/phrasebook/WordsIta.gf
@@ -5,6 +5,8 @@ concrete WordsIta of Words = SentencesIta ** open
DiffPhrasebookIta,
BeschIta,
(E = ExtraIta),
+ (L = LexiconIta),
+ (P = ParadigmsIta),
ParadigmsIta in {
lin
@@ -13,7 +15,7 @@ Wine = mkCN (mkN "vino") ;
Beer = mkCN (mkN "birra") ;
Water = mkCN (mkN "acqua") ;
Coffee = mkCN (mkN "caffè") ;
--- Tea = mkCN (mkN "té") ; ----
+ Tea = mkCN (mkN "tè") ;
Cheese = mkCN (mkN "formaggio") ;
Fish = mkCN (mkN "pesce") ;
@@ -21,39 +23,92 @@ Pizza = mkCN (mkN "pizza") ;
Fresh = mkA "fresco" ;
Warm = mkA "caldo" ;
-Italian = mkA "italiano" ;
Expensive = mkA "caro" ;
Delicious = mkA "delizioso" ;
Boring = mkA "noioso" ;
Good = prefixA (mkA "buono" "buona" "buoni" "buone" "bene") ;
- Restaurant = mkCN (mkN "ristorante") ;
- Bar = mkCN (mkN "bar") ;
- Toilet = mkCN (mkN "bagno") ;
+ Restaurant = mkPlace (mkN "ristorante") P.in_Prep ;
+ Bar = mkPlace (mkN "bar") P.in_Prep ;
+ Toilet = mkPlace (mkN "bagno") P.in_Prep ;
+ Museum = mkPlace (mkN "museo") P.in_Prep ;
+ Airport = mkPlace (mkN "aeroporto") dative ;
+ Station = mkPlace (mkN "stazione" feminine) dative ;
+ Hospital = mkPlace (mkN "ospedale") P.in_Prep ;
+ Church = mkPlace (mkN "chiesa") P.in_Prep ;
Euro = mkCN (mkN "euro" "euro" masculine) ;
Dollar = mkCN (mkN "dollar") ;
Lei = mkCN (mkN "lei") ; ---- ?
- AWant p obj = mkCl p want_V2 obj ;
- ALike p item = mkCl item (mkV2 (mkV (piacere_64 "piacere")) dative) p ;
- AHave p kind = mkCl p have_V2 (mkNP kind) ;
- ASpeak p lang = mkCl p (mkV2 (mkV "parlare")) lang ;
- ALove p q = mkCl p (mkV2 (mkV "amare")) q ;
-
- English = mkNP (mkPN "inglese") ;
- Finnish = mkNP (mkPN "finlandese") ;
- French = mkNP (mkPN "francese") ;
- Romanian = mkNP (mkPN "rumeno") ;
- Swedish = mkNP (mkPN "svedese") ;
-
- AHungry p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "fame" feminine))) ;
- AThirsty p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ;
- ATired p = mkCl p (mkA "stanco") ;
- AScared p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ;
- AUnderstand p = mkCl p (mkV "capire") ;
-
-oper
-mkAPA : (_ : Str) -> AP = \x -> mkAP (mkA x) ;
+ English = mkNat "inglese" "Inghilterra" ;
+ Finnish = mkNat "finlandese" "Finlandia" ;
+ French = mkNat "francese" "Francia" ;
+ Italian = mkNat "italiano" "Italia" ;
+ Romanian = mkNat "rumeno" "Romania" ;
+ Swedish = mkNat "svedese" "Svezia" ;
+
+ Belgian = mkA "belgo" ;
+ Flemish = mkNP (mkPN "fiammingo") ;
+ Belgium = mkNP (mkPN "Belgio") ;
+
+ Monday = mkDay "lunedì" ;
+ Tuesday = mkDay "martedì" ;
+ Wednesday = mkDay "mercoledì" ;
+ Thursday = mkDay "giovedì" ;
+ Friday = mkDay "venerdì" ;
+ Saturday = mkDay "sabato" ;
+ Sunday = mkDay "domenica" ;
+
+ AWant p obj = mkCl p.name want_V2 obj ;
+ ALike p item = mkCl item (mkV2 (mkV (piacere_64 "piacere")) dative) p.name ;
+ AHave p kind = mkCl p.name have_V2 (mkNP kind) ;
+ ASpeak p lang = mkCl p.name (mkV2 (mkV "parlare")) lang ;
+ ALove p q = mkCl p.name (mkV2 (mkV "amare")) q.name ;
+ ACitizen p n = mkCl p.name n ;
+ AHungry p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "fame" feminine))) ;
+ AThirsty p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ;
+ ATired p = mkCl p.name (mkA "stanco") ;
+ AScared p = mkCl p.name (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ;
+ AIll p = mkCl p.name (mkA "malato") ;
+ AUnderstand p = mkCl p.name (mkV "capire") ;
+ AKnow p = mkCl p.name (mkV (sapere_78 "sapere")) ;
+ AWantGo p place =
+ mkCl p.name want_VV (mkVP (mkVP L.go_V) place.to) ;
+ ABePlace p place = mkCl p.name place.at ;
+ AHasName p name = mkCl p.name (mkV2 (reflV (mkV "chiamare"))) name ;
+ ALive p co =
+ mkCl p.name (mkVP (mkVP (mkV "abitare"))
+ (SyntaxIta.mkAdv P.in_Prep co)) ;
+
+ QWhatName p = mkQS (mkQCl how_IAdv (mkCl p.name (reflV (mkV "chiamare")))) ;
+
+ 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) ;
+
+ oper
+ mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
+ {lang = mkNP (mkPN nat) ; prop = mkA nat ; country = mkNP (mkPN co)} ;
+
+ mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
+ let day = mkNP (mkPN d) in
+ {name = day ;
+ point, -- = ParadigmsIta.mkAdv d ;
+ habitual = ParadigmsIta.mkAdv ("il" ++ d) ; ---- ?
+ } ;
+
+ mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
+ name = mkCN p ;
+ at = i ;
+ to = dative
+ } ;
+
+ open_A = mkA "aperto" ;
+ closed_A = mkA "chiuso" ;
+
}
diff --git a/examples/phrasebook/WordsRon.gf b/examples/phrasebook/WordsRon.gf
index 016ef87d8..55b2b839b 100644
--- a/examples/phrasebook/WordsRon.gf
+++ b/examples/phrasebook/WordsRon.gf
@@ -22,37 +22,39 @@ Pizza = mkCN (mkN "pizza" "pizze" feminine) ;
Fresh = mkA "proaspăt" "proaspătă" "proaspeţi" "proaspete" ;
Warm = mkA "cald" "caldă" "calzi" "calde" ;
-Italian = mkA "italian" "italiană" "italieni" "italiene" ;
Expensive = mkA "scump" "scumpă" "scumpi" "scumpe" ;
Delicious = mkA "delicios" "delcioasă" "delicioşi" "delicioase" ;
Boring = mkA "plictisitor" "plictisitoare" "plictisitori" "plictisitoare" ;
Good = mkA "bun" "bună" "buni" "bune" "bine" ;
- Restaurant = mkCN (mkN "restaurant") ;
- Bar = mkCN (mkNR "bar") ;
- Toilet = mkCN (mkN "toaleta") ;
+ Restaurant = mkPlace (mkN "restaurant") in_Prep ;
+ Bar = mkPlace (mkNR "bar") in_Prep ;
+ Toilet = mkPlace (mkN "toaleta") in_Prep ;
Euro = mkCN (mkN "euro" "euro") ;
Dollar = mkCN (mkN "dolar" masculine) ;
Lei = mkCN (mkN "leu" "lei") ;
- AWant p obj = mkCl p want_V2 obj ;
- ALike p item = mkCl p like_V2 item ;
- AHave p kind = mkCl p have_V2 (SyntaxRon.mkNP kind) ;
- ASpeak p lang = mkCl p (dirV2 (mkV "vorbi")) lang ;
- ALove p q = mkCl p (dirV2 (mkV "iubi")) q ;
-
- English = SyntaxRon.mkNP (mkPN "engleză") ; ---- ?
+-- English = SyntaxRon.mkNP (mkPN "engleză") ; ---- ?
-- Finnish = mkNP (mkPN "finnois") ;
-- French = mkNP (mkPN "français") ;
- Romanian = SyntaxRon.mkNP (mkPN "română") ; ---- ?
+-- Italian = mkA "italian" "italiană" "italieni" "italiene" ;
+-- Romanian = SyntaxRon.mkNP (mkPN "română") ; ---- ?
-- Swedish = mkNP (mkPN "suédois") ;
+ AWant p obj = mkCl p.name want_V2 obj ;
+ ALike p item = mkCl p.name like_V2 item ;
+ AHave p kind = mkCl p.name have_V2 (SyntaxRon.mkNP kind) ;
+ ASpeak p lang = mkCl p.name (dirV2 (mkV "vorbi")) lang ;
+ ALove p q = mkCl p.name (dirV2 (mkV "iubi")) q.name ;
+ AUnderstand p = mkCl p.name (v_besch83 "înţelege") ;
+
-- AHungry p = mkCl p have_V2 (SyntaxRon.mkNP a_Det (mkN "foame")) ;
-- AThirsty p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "sete" feminine))) ;
-- ATired p = mkCl p (mkA "stanco") ;
-- AScared p = mkCl p (E.ComplCN have_V2 (mkCN (mkN "paura" feminine))) ;
- AUnderstand p = mkCl p (v_besch83 "înţelege") ;
+
+
{-
GImHungry = ss "mi-e foame" ;
GImThirsty = ss "mi-e sete" ;
@@ -60,8 +62,11 @@ Good = mkA "bun" "bună" "buni" "bune" "bine" ;
GImScared = ss "mi-e frică" ;
-}
-
oper
-mkAPA : (_,_,_,_ : Str) -> AP = \x,y,z,u -> mkAP (mkA x y z u) ;
+ mkPlace : N -> Prep -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
+ name = mkCN p ;
+ at = i ;
+ to = to_Prep ---- ?
+ } ;
}
diff --git a/examples/phrasebook/WordsSwe.gf b/examples/phrasebook/WordsSwe.gf
index e02526157..2a0a3478a 100644
--- a/examples/phrasebook/WordsSwe.gf
+++ b/examples/phrasebook/WordsSwe.gf
@@ -1,7 +1,7 @@
-- (c) 2009 Aarne Ranta under LGPL
concrete WordsSwe of Words = SentencesSwe **
- open SyntaxSwe, ParadigmsSwe in {
+ open SyntaxSwe, ParadigmsSwe, IrregSwe, Prelude in {
lin
Wine = mkCN (mkN "vin" "vinet" "viner" "vinerna") ;
Beer = mkCN (mkN "öl" neutrum) ;
@@ -14,36 +14,97 @@ concrete WordsSwe of Words = SentencesSwe **
Fish = mkCN (mkN "fisk") ;
Fresh = mkA "färsk" ;
Warm = mkA "varm" ;
- Italian = mkA "italiensk" ;
Expensive = mkA "dyr" ;
Delicious = mkA "läcker" ;
Boring = mkA "tråkig" ;
Good = mkA "god" "gott" "goda" "bättre" "bäst" ;
- Restaurant = mkCN (mkN "restaurang" "restauranger") ;
- Bar = mkCN (mkN "bar" "barer") ;
- Toilet = mkCN (mkN "toalett" "toaletter") ;
+ Restaurant = mkPlace (mkN "restaurang" "restauranger") "på" ;
+ Bar = mkPlace (mkN "bar" "barer") "i" ;
+ Toilet = mkPlace (mkN "toalett" "toaletter") "på" ;
+ Museum = mkPlace (mkN "museum" "museet" "museer" "museerna") "på" ;
+ Airport = mkPlace (mkN "flygplats" "flygplatser") "på" ;
+ Station = mkPlace (mkN "station" "stationer") "på" ;
+ Hospital = mkPlace (mkN "sjukhus" "sjukhus") "på" ;
+ Church = mkPlace (mkN "kyrka") "i" ;
Euro = mkCN (mkN "euro" "euro") ;
Dollar = mkCN (mkN "dollar" "dollar") ;
Lei = mkCN (mkN "lei" "lei") ;
- English = mkNP (mkPN "engelska") ;
- Finnish = mkNP (mkPN "finska") ;
- French = mkNP (mkPN "franska") ;
- Romanian = mkNP (mkPN "rumänska") ;
- Swedish = mkNP (mkPN "svenska") ;
+ English = mkNat "engelsk" "England" ;
+ Finnish = mkNat "finsk" "Finland" ;
+ French = mkNat "fransk" "Frankrike" ;
+ Italian = mkNat "italiensk" "Italien" ;
+ Romanian = mkNat "rumänsk" "Rumänien" ;
+ Swedish = mkNat "svensk" "Sverige" ;
- AWant p obj = mkCl p want_VV (mkVP have_V2 obj) ;
- ALike p item = mkCl p (mkV2 (mkV "tycker") (mkPrep "om")) item ;
- AHave p kind = mkCl p have_V2 (mkNP kind) ;
- ASpeak p lang = mkCl p (mkV2 (mkV "tala")) lang ;
- ALove p q = mkCl p (mkV2 (mkV "älska")) q ;
+ Belgian = mkA "belgisk" ;
+ Flemish = mkNP (mkPN "flamländska") ;
+ Belgium = mkNP (mkPN "Belgien") ;
- AHungry p = mkCl p (mkA "hungrig") ;
- AThirsty p = mkCl p (mkA "törstig") ;
- ATired p = mkCl p (mkA "trött") ;
- AScared p = mkCl p (mkA "rädd") ;
- AUnderstand p = mkCl p (mkV "förstå" "förstod" "förstått") ;
+ Monday = mkDay "måndag" ;
+ Tuesday = mkDay "tisdag" ;
+ Wednesday = mkDay "onsdag" ;
+ Thursday = mkDay "torsdag" ;
+ Friday = mkDay "fredag" ;
+ Saturday = mkDay "lördag" ;
+ Sunday = mkDay "söndag" ;
+ AWant p obj = mkCl p.name want_VV (mkVP have_V2 obj) ;
+ ALike p item = mkCl p.name (mkV2 (mkV "tycker") (mkPrep "om")) item ;
+ AHave p kind = mkCl p.name have_V2 (mkNP kind) ;
+ ASpeak p lang = mkCl p.name (mkV2 (mkV "tala")) lang ;
+ ALove p q = mkCl p.name (mkV2 (mkV "älska")) q.name ;
+ ACitizen p n = mkCl p.name n ;
+ AHungry p = mkCl p.name (mkA "hungrig") ;
+ AThirsty p = mkCl p.name (mkA "törstig") ;
+ ATired p = mkCl p.name (mkA "trött") ;
+ AScared p = mkCl p.name (mkA "rädd") ;
+ AIll p = mkCl p.name (mkA "sjuk") ;
+ AUnderstand p = mkCl p.name (mkV "förstå" "förstod" "förstått") ;
+ AKnow p = mkCl p.name (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ;
+ ---- IrregSwe.veta_V gives "missing"
+ AWantGo p place = mkCl p.name want_VV (mkVP (mkVP IrregSwe.gå_V) place.to) ;
+ ABePlace p place = mkCl p.name place.at ;
+ AHasName p name = mkCl (nameOf p) name ;
+ ALive p co =
+ mkCl p.name (mkVP (mkVP (mkV "bo")) (SyntaxSwe.mkAdv in_Prep co)) ;
+
+ QWhatName p = mkQS (mkQCl whatSg_IP (mkVP (nameOf p))) ;
+
+ 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) ;
+
+ oper
+ mkNat : Str -> Str -> {lang : NP ; prop : A ; country : NP} = \nat,co ->
+ {lang = mkNP (mkPN (nat + "a")) ;
+ prop = mkA nat ; country = mkNP (mkPN co)} ;
+
+ mkDay : Str -> {name : NP ; point : Adv ; habitual : Adv} = \d ->
+ let day = mkNP (mkPN d) in
+ {name = day ;
+ point = SyntaxSwe.mkAdv on_Prep day ;
+ habitual = SyntaxSwe.mkAdv on_Prep (mkNP a_Quant plNum (mkCN (mkN d)))
+ } ;
+
+ mkPlace : N -> Str -> {name : CN ; at : Prep ; to : Prep} = \p,i -> {
+ name = mkCN p ;
+ at = mkPrep i ;
+ to = to_Prep
+ } ;
+
+ open_A = mkA "öppen" "öppet" ;
+ closed_A = mkA "stängd" "stängt" ;
+
+ nameOf : {name : NP ; isPron : Bool ; poss : Det} -> NP = \p ->
+ case p.isPron of {
+ True => mkNP p.poss (mkN "namn" "namn") ;
+ _ => mkNP (mkNP the_Det (mkN "namn" "namn"))
+ (SyntaxSwe.mkAdv possess_Prep p.name)
+ } ;
}
diff --git a/examples/phrasebook/missing.txt b/examples/phrasebook/missing.txt
index cbcb07ccc..9d2489e63 100644
--- a/examples/phrasebook/missing.txt
+++ b/examples/phrasebook/missing.txt
@@ -1,8 +1,8 @@
DisambPhrasebookEng :
-DisambPhrasebookRon : AHungry AScared AThirsty ATired Coffee Finnish French GExcusePol GPleaseGivePol GSorryPol GWhatsYourNamePol Swedish Tea
+DisambPhrasebookRon : ABePlace ACitizen AHasName AHungry AIll AKnow ALive AScared AThirsty ATired AWantGo Airport Belgian Belgium Church Coffee English Finnish Flemish French Friday GExcusePol GPleaseGivePol GSorryPol Hospital Italian Monday Museum PropClosed PropClosedDate PropClosedDay PropOpen PropOpenDate PropOpenDay QWhatName Romanian Saturday Station Sunday Swedish Tea Thursday Tuesday Wednesday
PhrasebookEng :
PhrasebookFin :
PhrasebookFre :
-PhrasebookIta : GNiceToMeetYou GSeeYouSoon Tea
-PhrasebookRon : AHungry AScared AThirsty ATired Coffee Finnish French GExcusePol GPleaseGivePol GSorryPol GWhatsYourNamePol Swedish Tea
-PhrasebookSwe : GExcusePol GPleaseGivePol GSorryPol
+PhrasebookIta : GNiceToMeetYou GSeeYouSoon
+PhrasebookRon : ABePlace ACitizen AHasName AHungry AIll AKnow ALive AScared AThirsty ATired AWantGo Airport Belgian Belgium Church Coffee English Finnish Flemish French Friday GExcusePol GPleaseGivePol GSorryPol Hospital Italian Monday Museum PropClosed PropClosedDate PropClosedDay PropOpen PropOpenDate PropOpenDay QWhatName Romanian Saturday Station Sunday Swedish Tea Thursday Tuesday Wednesday
+PhrasebookSwe :