1
0
forked from GitHub/gf-rgl

Add LibraryBrowserIta. Add mkQuant, mkDet to MakeStructuralIta.

This commit is contained in:
John J. Camilleri
2017-12-08 14:09:47 +01:00
parent 2aaecd8927
commit 13330bd983
2 changed files with 82 additions and 5 deletions

View File

@@ -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 ;
}

View File

@@ -2,12 +2,12 @@
resource MakeStructuralIta = open CatIta, ParadigmsIta, MorphoIta, Prelude in { resource MakeStructuralIta = open CatIta, ParadigmsIta, MorphoIta, Prelude in {
oper oper
mkConj : Str -> Str -> ParadigmsIta.Number -> Conj = \x,y,n -> mkConj : Str -> Str -> ParadigmsIta.Number -> Conj = \x,y,n ->
{s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ; {s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ;
mkSubj : Str -> Subj = \x -> mkSubj : Str -> Subj = \x ->
{s = x ; m = Indic ; lock_Subj = <>} ; {s = x ; m = Indic ; lock_Subj = <>} ;
mkSubjSubj : Str -> Subj = \x -> mkSubjSubj : Str -> Subj = \x ->
{s = x ; m = Conjunct ; lock_Subj = <>} ; {s = x ; m = Conjunct ; lock_Subj = <>} ;
mkIQuant : Str -> IQuant = \s -> mkIQuant : Str -> IQuant = \s ->
@@ -21,9 +21,62 @@ oper
} ; } ;
mkPredet : Str -> Str -> Prep -> Bool -> Predet = \m,f,c,p -> lin Predet { 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? 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? 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
} ;
} ;
} }