summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-08-16 20:12:45 +0000
committeraarne <aarne@cs.chalmers.se>2007-08-16 20:12:45 +0000
commit3737b9926696b70bdecdef3d38d1a1f9399c734a (patch)
tree990d796fecc00d46608f9a1070256d40ca313e3b
parentf109a7089d9ed422d34aaacc064388e4d5fb1d3c (diff)
foods example moved and completed
-rw-r--r--doc/tutorial/FoodsEng.gf36
-rw-r--r--examples/tutorial/foods/Foods.gf (renamed from doc/tutorial/Foods.gf)0
-rw-r--r--examples/tutorial/foods/FoodsEng.gf50
-rw-r--r--examples/tutorial/foods/FoodsIta.gf77
4 files changed, 127 insertions, 36 deletions
diff --git a/doc/tutorial/FoodsEng.gf b/doc/tutorial/FoodsEng.gf
deleted file mode 100644
index ee3857166..000000000
--- a/doc/tutorial/FoodsEng.gf
+++ /dev/null
@@ -1,36 +0,0 @@
---# -path=.:resource:prelude
-
-concrete FoodsEng of Foods = open Prelude, MorphoEng in {
-
- lincat
- S, Quality = SS ;
- Kind = {s : Number => Str} ;
- Item = {s : Str ; n : Number} ;
-
- lin
- Is item quality = ss (item.s ++ (mkVerb "are" "is").s ! item.n ++ quality.s) ;
- This = det Sg "this" ;
- That = det Sg "that" ;
- These = det Pl "these" ;
- Those = det Pl "those" ;
- QKind quality kind = {s = \\n => quality.s ++ kind.s ! n} ;
- Wine = regNoun "wine" ;
- Cheese = regNoun "cheese" ;
- Fish = mkNoun "fish" "fish" ;
- Pizza = regNoun "pizza" ;
- Very = prefixSS "very" ;
- Fresh = ss "fresh" ;
- Warm = ss "warm" ;
- Italian = ss "Italian" ;
- Expensive = ss "expensive" ;
- Delicious = ss "delicious" ;
- Boring = ss "boring" ;
-
- oper
- det : Number -> Str -> Noun -> {s : Str ; n : Number} = \n,d,cn -> {
- s = d ++ cn.s ! n ;
- n = n
- } ;
-
-}
- \ No newline at end of file
diff --git a/doc/tutorial/Foods.gf b/examples/tutorial/foods/Foods.gf
index 9337e234a..9337e234a 100644
--- a/doc/tutorial/Foods.gf
+++ b/examples/tutorial/foods/Foods.gf
diff --git a/examples/tutorial/foods/FoodsEng.gf b/examples/tutorial/foods/FoodsEng.gf
new file mode 100644
index 000000000..ba3502b39
--- /dev/null
+++ b/examples/tutorial/foods/FoodsEng.gf
@@ -0,0 +1,50 @@
+--# -path=.:resource:prelude
+
+concrete FoodsEng of Foods = open Prelude in {
+
+ lincat
+ S, Quality = SS ;
+ Kind = {s : Number => Str} ;
+ Item = {s : Str ; n : Number} ;
+
+ lin
+ Is item quality = ss (item.s ++ copula item.n ++ quality.s) ;
+ This = det Sg "this" ;
+ That = det Sg "that" ;
+ These = det Pl "these" ;
+ Those = det Pl "those" ;
+ QKind quality kind = {s = \\n => quality.s ++ kind.s ! n} ;
+ Wine = noun "wine" "wines" ;
+ Cheese = noun "cheese" "cheeses" ;
+ Fish = noun "fish" "fish" ;
+ Pizza = noun "pizza" "pizzas" ;
+ Very = prefixSS "very" ;
+ Fresh = ss "fresh" ;
+ Warm = ss "warm" ;
+ Italian = ss "Italian" ;
+ Expensive = ss "expensive" ;
+ Delicious = ss "delicious" ;
+ Boring = ss "boring" ;
+
+ 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
+ } ;
+ noun : Str -> Str -> {s : Number => Str} =
+ \man,men -> {s = table {
+ Sg => man ;
+ Pl => men
+ }
+ } ;
+ copula : Number -> Str =
+ \n -> case n of {
+ Sg => "is" ;
+ Pl => "are"
+ } ;
+}
+
diff --git a/examples/tutorial/foods/FoodsIta.gf b/examples/tutorial/foods/FoodsIta.gf
new file mode 100644
index 000000000..89635eab4
--- /dev/null
+++ b/examples/tutorial/foods/FoodsIta.gf
@@ -0,0 +1,77 @@
+--# -path=.:resource:prelude
+
+concrete FoodsIta of Foods = open Prelude in {
+
+ lincat
+ S = SS ;
+ Quality = {s : Gender => Number => Str} ;
+ Kind = {s : Number => Str ; g : Gender} ;
+ Item = {s : Str ; g : Gender ; n : Number} ;
+
+ lin
+ Is item quality =
+ ss (item.s ++ copula item.n ++ quality.s ! item.g ! item.n) ;
+ This = det Sg "questo" "questa" ;
+ That = det Sg "quello" "quella" ;
+ These = det Pl "questi" "queste" ;
+ Those = det Pl "quelli" "quelle" ;
+ QKind quality kind = {
+ s = \\n => kind.s ! n ++ quality.s ! kind.g ! n ;
+ g = kind.g
+ } ;
+ Wine = noun "vino" "vini" Masc ;
+ Cheese = noun "formaggio" "formaggi" Masc ;
+ Fish = noun "pesce" "pesci" Masc ;
+ Pizza = noun "pizza" "pizze" Fem ;
+ Very qual = {s = \\g,n => "molto" ++ qual.s ! g ! n} ;
+ Fresh = adjective "fresco" "fresca" "freschi" "fresche" ;
+ Warm = regAdj "caldo" ;
+ Italian = regAdj "italiano" ;
+ Expensive = regAdj "caro" ;
+ Delicious = regAdj "delizioso" ;
+ Boring = regAdj "noioso" ;
+
+ param
+ Number = Sg | Pl ;
+ Gender = Masc | Fem ;
+
+ 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 : Gender => Number => Str} =
+ \nero,nera,neri,nere -> {
+ s = table {
+ Masc => table {
+ Sg => nero ;
+ Pl => neri
+ } ;
+ Fem => table {
+ Sg => nera ;
+ Pl => nere
+ }
+ }
+ } ;
+ regAdj : Str -> {s : Gender => Number => Str} = \nero ->
+ let ner = init nero
+ in adjective nero (ner + "a") (ner + "i") (ner + "e") ;
+
+ copula : Number -> Str =
+ \n -> case n of {
+ Sg => "è" ;
+ Pl => "sono"
+ } ;
+}
+