summaryrefslogtreecommitdiff
path: root/examples/tutorial/syntax/MorphoIta.gf
diff options
context:
space:
mode:
Diffstat (limited to 'examples/tutorial/syntax/MorphoIta.gf')
-rw-r--r--examples/tutorial/syntax/MorphoIta.gf100
1 files changed, 0 insertions, 100 deletions
diff --git a/examples/tutorial/syntax/MorphoIta.gf b/examples/tutorial/syntax/MorphoIta.gf
deleted file mode 100644
index 7bf4de1a1..000000000
--- a/examples/tutorial/syntax/MorphoIta.gf
+++ /dev/null
@@ -1,100 +0,0 @@
---# -path=.:prelude
-
- -- This is a simple Italian resource morphology for the GF tutorial.
-
- resource MorphoIta = open Prelude in {
-
- -- the lexicographer's API
-
- oper
- masculine, feminine : Gender ;
-
-
-
- param
- Number = Sg | Pl ;
- Gender = Masc | Fem ;
-
- oper
- Noun : Type = {s : Number => Str ; g : Gender} ;
- Adjective : Type = {s : Gender => Number => Str} ;
-
- -- we will only use present indicative third person verb forms
-
- Verb : Type = {s : Number => Str} ;
-
- -- two-place verbs have a preposition
-
- Verb2 : Type = Verb ** {c : Str} ;
-
- -- this function takes the gender and both singular and plural forms
-
- mkNoun : Gender -> Str -> Str -> Noun = \g,vino,vini -> {
- s = table {
- Sg => vino ;
- Pl => vini
- } ;
- g = g
- } ;
-
- -- this function takes the singular form
-
- regNoun : Str -> Noun = \vino ->
- case vino of {
- vin + c@("c" | "g") + "a"
- => mkNoun Fem vino (vin + c + "he") ; -- banche
- vin + "a"
- => mkNoun Fem vino (vin + "e") ; -- pizza
- vin + c@("c" | "g") + "o"
- => mkNoun Masc vino (vin + c + "hi") ; -- boschi
- vin + ("o" | "e")
- => mkNoun Masc vino (vin + "i") ; -- vino, pane
- _ => mkNoun Masc vino vino -- tram
- } ;
-
- -- to make nouns such as "carne", "università" feminine
-
- femNoun : Noun -> Noun = \mano -> {
- s = mano.s ;
- g = Fem
- } ;
-
- -- this takes both genders and numbers
-
- mkAdjective : (x1,_,_,x4 : Str) -> Adjective = \nero,nera,neri,nere -> {
- s = table {
- Masc => (mkNoun Masc nero neri).s ;
- Fem => (mkNoun Fem nera nere).s
- }
- } ;
-
- -- this takes the masculine singular form
-
- regAdjective : Str -> Adjective = \nero ->
- let ner = init nero in
- case last nero of {
- "o" => mkAdjective (ner + "o") (ner + "a") (ner + "i") (ner + "e") ;
- "e" => mkAdjective (ner + "e") (ner + "e") (ner + "i") (ner + "i") ;
- _ => mkAdjective nero nero nero nero
- } ;
-
- -- this function takes the singular and plural forms
-
- mkVerb : Str -> Str -> Verb = \ama,amano -> {
- s = table {
- Sg => ama ;
- Pl => amano
- }
- } ;
-
- -- this function takes the infinitive form
-
- regVerb : Str -> Verb = \amare ->
- let am = Predef.tk 3 amare in
- case Predef.dp 3 amare of {
- "ere" => mkVerb (am + "e") (am + "ono") ; -- premere
- "ire" => mkVerb (am + "isce") (am + "iscono") ; -- finire
- _ => mkVerb (am + "a") (am + "ano") -- amare
- } ;
-
- }