diff options
| author | aarne <aarne@chalmers.se> | 2010-11-22 12:55:37 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2010-11-22 12:55:37 +0000 |
| commit | 76ba03b545600054176612201de78dca16eb65e1 (patch) | |
| tree | 5615286b239bee637b32465e9cbf36807ab2c318 /book/examples/chapter3/ResIta.gf | |
| parent | 0bf41793694e8b3101d09e34858eba8ab2c8c5b6 (diff) | |
started a subdir for the book
Diffstat (limited to 'book/examples/chapter3/ResIta.gf')
| -rw-r--r-- | book/examples/chapter3/ResIta.gf | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/book/examples/chapter3/ResIta.gf b/book/examples/chapter3/ResIta.gf new file mode 100644 index 000000000..17809c498 --- /dev/null +++ b/book/examples/chapter3/ResIta.gf @@ -0,0 +1,36 @@ +resource ResIta = open Prelude in { + param + Number = Sg | Pl ; + Gender = Masc | Fem ; + 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 -> Noun -> NounPhrase = + \n,m,f,cn -> { + s = table {Masc => m ; Fem => f} ! cn.g ++ + cn.s ! n ; + g = cn.g ; + n = n + } ; + noun : Str -> Str -> Gender -> Noun = + \vino,vini,g -> { + s = table {Sg => vino ; Pl => vini} ; + g = g + } ; + adjective : (nero,nera,neri,nere : Str) -> Adjective = + \nero,nera,neri,nere -> { + s = table { + Masc => table {Sg => nero ; Pl => neri} ; + Fem => table {Sg => nera ; Pl => nere} + } + } ; + regAdj : Str -> Adjective = \nero -> + let ner : Str = init nero + in + adjective nero (ner+"a") (ner+"i") (ner+"e") ; + copula : Number => Str = + table {Sg => "è" ; Pl => "sono"} ; +} |
