diff options
Diffstat (limited to 'next-lib/src/catalan/MorphoCat.gf')
| -rw-r--r-- | next-lib/src/catalan/MorphoCat.gf | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/next-lib/src/catalan/MorphoCat.gf b/next-lib/src/catalan/MorphoCat.gf new file mode 100644 index 000000000..abcb757cf --- /dev/null +++ b/next-lib/src/catalan/MorphoCat.gf @@ -0,0 +1,130 @@ +--# -path=.:../romance:../common:../../prelude + +----1 A Simple Catalan Resource Morphology +---- +---- Aarne Ranta 2002 -- 2005 +---- +---- This resource morphology contains definitions needed in the resource +---- syntax. To build a lexicon, it is better to use $ParadigmsCat$, which +---- gives a higher-level access to this module. +-- +resource MorphoCat = CommonRomance, ResCat ** + open PhonoCat, Prelude, Predef in { +-- +-- flags optimize=all ; +-- +-- +----2 Nouns +---- +---- The following macro is useful for creating the forms of number-dependent +---- tables, such as common nouns. +-- +oper + numForms : (_,_ : Str) -> Number => Str = \vi, vins -> + table {Sg => vi ; Pl => vins} ; + +-- For example: + + nomHome : Str -> Number => Str = \home -> + numForms home (home + "s") ; + + nomDona : Str -> Number => Str = \dona -> + numForms dona (init dona + "es") ; + + nomDisc : Str -> Number => Str = \disc -> + numForms disc (variants {disc + "s"; disc + "os"}) ; + +-- nomPilar : Str -> Number => Str = \pilar -> +-- numForms pilar (pilar + "es") ; +-- +-- nomTram : Str -> Number => Str = \tram -> +-- numForms tram tram ; +-- +-- Common nouns are inflected in number and have an inherent gender. + + mkNoun : (Number => Str) -> Gender -> Noun = \noinois,gen -> + {s = noinois ; g = gen} ; + + mkNounIrreg : Str -> Str -> Gender -> Noun = \vi,vins -> + mkNoun (numForms vi vins) ; + + mkNomReg : Str -> Noun = \noi -> + case last noi of { + "o" | "e" => mkNoun (nomHome noi) Masc ; + "a" => mkNoun (nomDona noi) Fem ; + "c" => mkNoun (nomDisc noi) Masc ; + --- "u" => mkNounIrreg mec (init mec + "ces") Fem ; + _ => mkNoun (nomHome noi) Masc + } ; + +----2 Adjectives +---- +-- Adjectives are conveniently seen as gender-dependent nouns. +-- Here are some patterns. First one that describes the worst case. + + mkAdj : (_,_,_,_,_ : Str) -> Adj = \petit,petita,petits,petites,petitament -> + {s = table { + AF Masc n => numForms petit petits ! n ; + AF Fem n => numForms petita petites ! n ; + AA => petitament + } + } ; + +---- Then the regular and invariant patterns. +-- +-- adjfort : Str -> Adj = \solo -> +-- let +-- sol = Predef.tk 1 solo +-- in +-- mkAdj solo (sol + "a") (sol + "os") (sol + "as") (sol + "amente") ; +-- + adjFort : Str -> Adj = \fort -> + mkAdj fort (fort + "a") (fort + "s") (fort + "es") (fort + "ament") ; +-- +-- adjBlu : Str -> Adj = \blu -> +-- mkAdj blu blu blu blu blu ; --- +-- + mkAdjReg : Str -> Adj = \fort -> adjFort fort ; +{- + case last solo of { + "o" => adjSolo solo ; + --- "e" => adjUtil solo (solo + "s") ; + "a" => + _ => adjUtil solo (solo + "es") + } ; +-} +-- +----2 Personal pronouns +---- +---- All the eight personal pronouns can be built by the following macro. +---- The use of "ne" as atonic genitive is debatable. +---- We follow the rule that the atonic nominative is empty. +-- + mkPronoun : (_,_,_,_,_,_,_,_ : Str) -> + Gender -> Number -> Person -> Pronoun = + \il,le,lui,Lui,son,sa,ses,see,g,n,p -> + {s = table { + Ton Nom => il ; + Ton x => prepCase x ++ Lui ; + Aton Nom => strOpt il ; ---- [] ; + Aton Acc => le ; + Aton (CPrep P_a) => lui ; + Aton q => prepCase q ++ Lui ; ---- GF bug with c or p! + Poss {n = Sg ; g = Masc} => son ; + Poss {n = Sg ; g = Fem} => sa ; + Poss {n = Pl ; g = Masc} => ses ; + Poss {n = Pl ; g = Fem} => see + } ; + a = {g = g ; n = n ; p = p} ; + hasClit = True + } ; +-- +-- +----2 Determiners +---- +---- Determiners, traditionally called indefinite pronouns, are inflected +---- in gender and number, like adjectives. +-- + pronForms : Adj -> Gender -> Number -> Str = \tale,g,n -> tale.s ! AF g n ; +-- +} |
