diff options
| author | aarne <aarne@chalmers.se> | 2011-01-11 15:46:43 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2011-01-11 15:46:43 +0000 |
| commit | e7439d65b0e153434d3acc07df6e2a0972ee79ca (patch) | |
| tree | 36716eec18256eeb600b4a552d9cc80f8ad7f16f /gf-book/examples/chapter3/ResIta.gf | |
| parent | 276327f7f264e770478a6d8c6e683266505b0a55 (diff) | |
gf-book web page index and toc
Diffstat (limited to 'gf-book/examples/chapter3/ResIta.gf')
| -rw-r--r-- | gf-book/examples/chapter3/ResIta.gf | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gf-book/examples/chapter3/ResIta.gf b/gf-book/examples/chapter3/ResIta.gf new file mode 100644 index 000000000..17809c498 --- /dev/null +++ b/gf-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"} ; +} |
