summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjohn.j.camilleri <john.j.camilleri@chalmers.se>2011-11-15 14:54:28 +0000
committerjohn.j.camilleri <john.j.camilleri@chalmers.se>2011-11-15 14:54:28 +0000
commit30aafddab14e122bf3f579fc466ab987c81880f9 (patch)
tree9f519613d351f231e600d600c933bd95c757c96c
parentb1a82e8e8a38047a736abef80d15a8b5e7d6beda (diff)
Added ResMlt to foods
-rw-r--r--contrib/summerschool/foods/ResMlt.gf71
1 files changed, 71 insertions, 0 deletions
diff --git a/contrib/summerschool/foods/ResMlt.gf b/contrib/summerschool/foods/ResMlt.gf
new file mode 100644
index 000000000..19ba9392c
--- /dev/null
+++ b/contrib/summerschool/foods/ResMlt.gf
@@ -0,0 +1,71 @@
+-- (c) 2011 John Camilleri under LGPL
+
+resource ResMlt = open Prelude in {
+ flags coding=utf8 ;
+
+ 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
+ } ;
+
+}