diff --git a/src/api/libraryBrowser/LibraryBrowserIta.gf b/src/api/libraryBrowser/LibraryBrowserIta.gf new file mode 100644 index 000000000..e0e6f616d --- /dev/null +++ b/src/api/libraryBrowser/LibraryBrowserIta.gf @@ -0,0 +1,24 @@ +--# -path=.:alltenses + +concrete LibraryBrowserIta of LibraryBrowser = + GrammarIta - [ + UseCopula + ], + LexiconIta + ** open (S = SyntaxIta) in { + + lin + i_NP = S.i_NP ; + you_NP = S.you_NP ; + he_NP = S.he_NP ; + she_NP = S.she_NP ; + we_NP = S.we_NP ; + youPl_NP = S.youPl_NP ; + youPol_NP = S.youPol_NP ; + they_NP = S.they_NP ; + + a_Det = S.mkDet S.a_Quant ; + the_Det = S.mkDet S.the_Quant ; + aPl_Det = S.mkDet S.a_Quant S.plNum ; + thePl_Det = S.mkDet S.the_Quant S.plNum ; +} diff --git a/src/italian/MakeStructuralIta.gf b/src/italian/MakeStructuralIta.gf index 1dfe9197a..2d4718e29 100644 --- a/src/italian/MakeStructuralIta.gf +++ b/src/italian/MakeStructuralIta.gf @@ -2,12 +2,12 @@ resource MakeStructuralIta = open CatIta, ParadigmsIta, MorphoIta, Prelude in { -oper - mkConj : Str -> Str -> ParadigmsIta.Number -> Conj = \x,y,n -> +oper + mkConj : Str -> Str -> ParadigmsIta.Number -> Conj = \x,y,n -> {s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ; - mkSubj : Str -> Subj = \x -> + mkSubj : Str -> Subj = \x -> {s = x ; m = Indic ; lock_Subj = <>} ; - mkSubjSubj : Str -> Subj = \x -> + mkSubjSubj : Str -> Subj = \x -> {s = x ; m = Conjunct ; lock_Subj = <>} ; mkIQuant : Str -> IQuant = \s -> @@ -21,9 +21,62 @@ oper } ; mkPredet : Str -> Str -> Prep -> Bool -> Predet = \m,f,c,p -> lin Predet { s = \\g,k => prepCase k ++ case g.g of {Masc => m ; Fem => f} ; ---- number? - c = c.c ; + c = c.c ; a = if_then_else PAgr p (PAg Sg) PNoAg ---- e,g, "chacun de"; other possibilities? } ; } ; + mkQuant = overload { + -- Does not inflect for number or gender + mkQuant : Str -> Quant = \s -> + let + questo : Number => Gender => Case => Str = \\n,g,c => prepCase c ++ s ; + in lin Quant { + s = \\b => questo ; + sp = questo ; + s2 = [] ; + isNeg = False + } ; + -- Inflects for number and gender + mkQuant : Str -> Str -> Str -> Str -> Quant = \tutto,tutta,tutti,tutte -> + let + questo : Number => Gender => Case => Str = table { + Sg => table { + Masc => \\c => prepCase c ++ tutto ; + Fem => \\c => prepCase c ++ tutta + } ; + Pl => table { + Masc => \\c => prepCase c ++ tutti ; + Fem => \\c => prepCase c ++ tutte + } + } + in lin Quant { + s = \\b => questo ; + sp = questo ; + s2 = [] ; + isNeg = False + } ; + } ; + + mkDet = overload { + -- Does not inflect for number + mkDet : Str -> Number -> Det = \piu,n -> lin Det { + s,sp = \\_,_ => piu ; + n = n ; + s2 = [] ; + isNeg = False + } ; + -- Inflects for number + mkDet : Str -> Str -> Number -> Det = \alcuni,alcune,n -> lin Det { + s,sp = table { + Masc => \\_ => alcuni ; + Fem => \\_ => alcune + } ; + n = n ; + s2 = [] ; + isNeg = False + } ; + } ; + + }