number agreement in Romance predeterminers

This commit is contained in:
aarne
2010-01-04 14:59:40 +00:00
parent 884db4c08c
commit d403fd0f7f
18 changed files with 74 additions and 27 deletions

View File

@@ -47,9 +47,9 @@ lin someCollNP = mkNP somePl_Det ;
lin allCollNP cn = mkNP all_Predet (mkNP a_Art plNum cn) ; lin allCollNP cn = mkNP all_Predet (mkNP a_Art plNum cn) ;
lin noCollNP = mkNP no_Quant plNum ; lin noCollNP = mkNP no_Quant plNum ;
lin eachTheNP cn = mkNP (mkNP each_Det) (mkAdv part_Prep (mkNP the_Art plNum cn)) ; lin eachTheNP cn = eachOf (mkNP the_Art plNum cn) ;
lin eachSomeNP cn = mkNP (mkNP each_Det) (mkAdv part_Prep (mkNP somePl_Det cn)) ; lin eachSomeNP cn = eachOf (mkNP somePl_Det cn) ;
lin eachNumNP ca cn = mkNP (mkNP each_Det) (mkAdv part_Prep (mkNP ca cn)) ; lin eachNumNP ca cn = eachOf (mkNP ca cn) ;
lin someMassNP = mkNP someSg_Det ; lin someMassNP = mkNP someSg_Det ;
lin allMassNP cn = mkNP all_Predet (mkNP cn) ; lin allMassNP cn = mkNP all_Predet (mkNP cn) ;
@@ -203,7 +203,7 @@ lin commaOr_Conj = comma_or_Conj ;
lin for_everyS cn = mkS (mkAdv for_Prep (mkNP every_Det cn)) ; lin for_everyS cn = mkS (mkAdv for_Prep (mkNP every_Det cn)) ;
lin for_eachS cn = mkS (mkAdv for_Prep (mkNP each_Det cn)) ; lin for_eachS cn = mkS (mkAdv for_Prep (mkNP each_Det cn)) ;
lin for_each_ofS card cn = lin for_each_ofS card cn =
mkS (mkAdv for_Prep (mkNP (mkNP each_Det) (mkAdv part_Prep (mkNP card cn)))) ; mkS (mkAdv for_Prep (eachOf (mkNP card cn))) ;
lin for_allMassS cn = lin for_allMassS cn =
mkS (mkAdv for_Prep (mkNP all_Predet (mkNP cn))) ; mkS (mkAdv for_Prep (mkNP all_Predet (mkNP cn))) ;

View File

@@ -23,4 +23,6 @@ oper
comma_or_Conj : Conj ; comma_or_Conj : Conj ;
whose_IDet : IDet ; whose_IDet : IDet ;
eachOf : NP -> NP ;
} }

View File

@@ -31,4 +31,6 @@ oper
whose_IDet = M.mkIDet "whose" singular ; whose_IDet = M.mkIDet "whose" singular ;
eachOf np = mkNP (mkNP each_Det) (SyntaxEng.mkAdv part_Prep np) ;
} }

View File

@@ -31,4 +31,6 @@ oper
whose_IDet = mkIDet (M.mkIQuant "kenen") ; whose_IDet = mkIDet (M.mkIQuant "kenen") ;
eachOf np = mkNP (mkNP each_Det) (SyntaxFin.mkAdv (casePrep elative) np) ;
} }

View File

@@ -1,7 +1,7 @@
instance LexAttemptoFre of LexAttempto = instance LexAttemptoFre of LexAttempto =
open ExtraFre, SyntaxFre, ParadigmsFre, ConstructX, open ExtraFre, SyntaxFre, ParadigmsFre, ConstructX,
MakeStructuralFre, MakeStructuralFre,
IrregFre in { IrregFre, (P = Prelude) in {
oper oper
possible_A = mkA "possible" ; possible_A = mkA "possible" ;
@@ -25,4 +25,6 @@ oper
whose_IDet = mkIDet (mkIQuant "de qui") ; ---- whose_IDet = mkIDet (mkIQuant "de qui") ; ----
eachOf np = mkNP (mkPredet "chacun" "chacune" genitive P.True) np ;
} }

View File

@@ -25,4 +25,6 @@ oper
whose_IDet = mkIDet (mkIQuant "wessen") ; whose_IDet = mkIDet (mkIQuant "wessen") ;
eachOf np = mkNP (mkNP each_Det) (SyntaxGer.mkAdv part_Prep np) ; ---- gen agr
} }

View File

@@ -1,6 +1,6 @@
instance LexAttemptoIta of LexAttempto = instance LexAttemptoIta of LexAttempto =
open ExtraIta, SyntaxIta, ParadigmsIta, ConstructX, open ExtraIta, SyntaxIta, ParadigmsIta, ConstructX,
MakeStructuralIta MakeStructuralIta, (P = Prelude)
in { in {
oper oper
@@ -25,4 +25,5 @@ oper
whose_IDet = mkIDet (mkIQuant "de chi") ; ---- whose_IDet = mkIDet (mkIQuant "de chi") ; ----
eachOf np = mkNP (mkPredet "ciascuno" "ciascuna" genitive P.True) np ;
} }

View File

@@ -23,5 +23,6 @@ oper
slash_Conj = mkConj [] "/" singular ; slash_Conj = mkConj [] "/" singular ;
whose_IDet = mkIDet (mkIQuant "vems" "vems" "vems" dDefIndef) ; whose_IDet = mkIDet (mkIQuant "vems" "vems" "vems" dDefIndef) ;
eachOf np = mkNP (mkNP each_Det) (SyntaxSwe.mkAdv part_Prep np) ; ---- gen agr
} }

View File

@@ -77,7 +77,7 @@ lin correct_A = mkA "oikea" ;
lin kilogram_Unit = mkkN "kilo" ; lin kilogram_Unit = mkkN "kilo" ;
oper mkkN : Str -> CN = \n -> mkCN (ParadigmsFin.mkN n) ; oper mkkN : Str -> CN = \n -> mkCN (ParadigmsFin.mk1N n) ;
lin lin
in_Prep = SyntaxFin.in_Prep ; in_Prep = SyntaxFin.in_Prep ;

View File

@@ -9,7 +9,8 @@ lin
after_Prep = {s = ["després"] ; c = MorphoCat.genitive ; isDir = False} ; after_Prep = {s = ["després"] ; c = MorphoCat.genitive ; isDir = False} ;
all_Predet = { all_Predet = {
s = \\a,c => prepCase c ++ aagrForms "tot" "tota" "tots" "totes" ! a ; s = \\a,c => prepCase c ++ aagrForms "tot" "tota" "tots" "totes" ! a ;
c = Nom c = Nom ;
a = PNoAg
} ; } ;
almost_AdA, almost_AdN = ss (variants {"quasi"; "gairebé"}) ; almost_AdA, almost_AdN = ss (variants {"quasi"; "gairebé"}) ;
always_AdV = ss "sempre" ; always_AdV = ss "sempre" ;
@@ -63,14 +64,16 @@ lin
many_Det = { many_Det = {
s,sp = \\g,c => prepCase c ++ genForms "molts" "moltes" ! g ; n = Pl ; s2 = []} ; s,sp = \\g,c => prepCase c ++ genForms "molts" "moltes" ! g ; n = Pl ; s2 = []} ;
more_CAdv = X.mkCAdv "més" conjThan ; more_CAdv = X.mkCAdv "més" conjThan ;
most_Predet = {s = \\_,c => prepCase c ++ ["la majoria"] ; c = CPrep P_de} ; most_Predet = {s = \\_,c => prepCase c ++ ["la majoria"] ; c = CPrep P_de ;
a = PNoAg} ;
much_Det = { much_Det = {
s,sp = \\g,c => prepCase c ++ genForms "molt" "molta" ! g ; n = Sg ; s2 = []} ; s,sp = \\g,c => prepCase c ++ genForms "molt" "molta" ! g ; n = Sg ; s2 = []} ;
must_VV = mkVV (verbV (haver_59 "haver" True)) ; -- + of_Prep must_VV = mkVV (verbV (haver_59 "haver" True)) ; -- + of_Prep
no_Utt = ss "no" ; no_Utt = ss "no" ;
on_Prep = mkPrep "sobre" ; on_Prep = mkPrep "sobre" ;
--- one_Quant = {s = \\g,c => prepCase c ++ genForms "un" "una" ! g} ; --- one_Quant = {s = \\g,c => prepCase c ++ genForms "un" "una" ! g} ;
only_Predet = {s = \\_,c => prepCase c ++ "nomÈs" ; c = Nom} ; only_Predet = {s = \\_,c => prepCase c ++ "nomÈs" ; c = Nom ;
a = PNoAg} ;
or_Conj = {s1 = [] ; s2 = "o" ; n = Sg} ; or_Conj = {s1 = [] ; s2 = "o" ; n = Sg} ;
otherwise_PConj = ss "altrament" ; otherwise_PConj = ss "altrament" ;
part_Prep = complGen ; part_Prep = complGen ;
@@ -159,7 +162,8 @@ lin
"vosté" "el" "li" "vosté" "vosté" "el" "li" "vosté"
["el seu"] ["la seva"] ["els seus"] ["el seu"] ["la seva"] ["els seus"]
Masc Pl P2 ; Masc Pl P2 ;
not_Predet = {s = \\a,c => prepCase c ++ "no pas" ; c = Nom} ; not_Predet = {s = \\a,c => prepCase c ++ "no pas" ; c = Nom ;
a = PNoAg} ;
have_V2 = dirV2 (verbV (tenir_108 "tenir")) ; have_V2 = dirV2 (verbV (tenir_108 "tenir")) ;
oper oper

View File

@@ -1,6 +1,6 @@
--# -path=.:../romance:../common:../abstract --# -path=.:../romance:../common:../abstract
resource MakeStructuralFre = open CatFre, ParadigmsFre, MorphoFre, Prelude in { resource MakeStructuralFre = open CatFre, (P = ParadigmsFre), MorphoFre, Prelude in {
oper oper
mkConj : Str -> Str -> Number -> Conj = \x,y,n -> mkConj : Str -> Str -> Number -> Conj = \x,y,n ->
@@ -13,4 +13,11 @@ oper
mkIQuant : Str -> IQuant = \s -> mkIQuant : Str -> IQuant = \s ->
{s = \\_,_,c => prepCase c ++ s ; lock_IQuant = <>} ; {s = \\_,_,c => prepCase c ++ s ; lock_IQuant = <>} ;
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} ;
c = c.c ;
a = if_then_else PAgr p (PAg Sg) PNoAg ---- e,g, "chacun de"; other possibilities?
} ;
} }

View File

@@ -13,7 +13,8 @@ lin
after_Prep = mkPreposition "après" ; after_Prep = mkPreposition "après" ;
all_Predet = { all_Predet = {
s = \\a,c => prepCase c ++ aagrForms "tout" "toute" "tous" "toutes" ! a ; s = \\a,c => prepCase c ++ aagrForms "tout" "toute" "tous" "toutes" ! a ;
c = Nom c = Nom ;
a = PNoAg
} ; } ;
almost_AdA, almost_AdN = ss "presque" ; almost_AdA, almost_AdN = ss "presque" ;
always_AdV = ss "toujours" ; always_AdV = ss "toujours" ;
@@ -32,7 +33,12 @@ lin
during_Prep = mkPreposition "pendant" ; during_Prep = mkPreposition "pendant" ;
either7or_DConj = {s1,s2 = "ou" ; n = Pl} ; either7or_DConj = {s1,s2 = "ou" ; n = Pl} ;
everybody_NP = pn2np (mkPN ["tout le monde"] Masc) ; everybody_NP = pn2np (mkPN ["tout le monde"] Masc) ;
every_Det = {s,sp = \\_,_ => "chaque" ; n = Sg ; s2 = []} ; ---- sp every_Det = {
s = \\_,_ => "chaque" ;
sp = \\g,c => prepCase c ++ genForms "chacun" "chacune" ! g ;
n = Sg ;
s2 = []
} ;
everything_NP = pn2np (mkPN ["tout"] Masc) ; everything_NP = pn2np (mkPN ["tout"] Masc) ;
everywhere_Adv = ss "partout" ; everywhere_Adv = ss "partout" ;
few_Det = {s,sp = \\g,c => prepCase c ++ "peu" ++ elisDe ; n = Pl ; s2 = []} ; few_Det = {s,sp = \\g,c => prepCase c ++ "peu" ++ elisDe ; n = Pl ; s2 = []} ;
@@ -62,14 +68,14 @@ lin
less_CAdv = X.mkCAdv "moins" conjThan ; less_CAdv = X.mkCAdv "moins" conjThan ;
many_Det = {s,sp = \\_,c => prepCase c ++ "plusieurs" ; n = Pl ; s2 = []} ; many_Det = {s,sp = \\_,c => prepCase c ++ "plusieurs" ; n = Pl ; s2 = []} ;
more_CAdv = X.mkCAdv "plus" conjThan ; more_CAdv = X.mkCAdv "plus" conjThan ;
most_Predet = {s = \\_,c => prepCase c ++ ["la plupart"] ; c = CPrep P_de} ; most_Predet = {s = \\_,c => prepCase c ++ ["la plupart"] ; c = CPrep P_de ; a = PNoAg} ;
much_Det = {s,sp = \\_,c => prepCase c ++ "beaucoup" ++ elisDe ; n = Pl ; s2 = []} ; much_Det = {s,sp = \\_,c => prepCase c ++ "beaucoup" ++ elisDe ; n = Pl ; s2 = []} ;
must_VV = mkVV (devoir_V2 ** {lock_V = <>}) ; must_VV = mkVV (devoir_V2 ** {lock_V = <>}) ;
---b no_Phr = ss "non" ; ---b no_Phr = ss "non" ;
no_Utt = ss "non" ; no_Utt = ss "non" ;
on_Prep = mkPreposition "sur" ; on_Prep = mkPreposition "sur" ;
--- DEPREC one_Quant = {s = \\g,c => prepCase c ++ genForms "un" "une" ! g} ; --- DEPREC one_Quant = {s = \\g,c => prepCase c ++ genForms "un" "une" ! g} ;
only_Predet = {s = \\_,c => prepCase c ++ "seulement" ; c = Nom} ; --- seul(e)(s) only_Predet = {s = \\_,c => prepCase c ++ "seulement" ; c = Nom ; a = PNoAg} ; --- seul(e)(s)
or_Conj = {s1 = [] ; s2 = "ou" ; n = Sg} ; or_Conj = {s1 = [] ; s2 = "ou" ; n = Sg} ;
otherwise_PConj = ss "autrement" ; otherwise_PConj = ss "autrement" ;
part_Prep = complGen ; part_Prep = complGen ;
@@ -164,7 +170,7 @@ lin
"vous" "vous" "vous" "vous" "votre" "votre" "vos" "vous" "vous" "vous" "vous" "votre" "votre" "vos"
Masc Pl P2 ; Masc Pl P2 ;
not_Predet = {s = \\a,c => prepCase c ++ "pas" ; c = Nom} ; not_Predet = {s = \\a,c => prepCase c ++ "pas" ; c = Nom ; a = PNoAg} ;
no_Quant = no_Quant =
let aucun : ParadigmsFre.Number => ParadigmsFre.Gender => Case => Str = table { let aucun : ParadigmsFre.Number => ParadigmsFre.Gender => Case => Str = table {

View File

@@ -13,4 +13,10 @@ oper
mkIQuant : Str -> IQuant = \s -> mkIQuant : Str -> IQuant = \s ->
{s = \\_,_,c => prepCase c ++ s ; lock_IQuant = <>} ; {s = \\_,_,c => prepCase c ++ s ; lock_IQuant = <>} ;
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} ;
c = c.c ;
a = if_then_else PAgr p (PAg Sg) PNoAg ---- e,g, "chacun de"; other possibilities?
} ;
} }

View File

@@ -11,7 +11,8 @@ lin
after_Prep = mkPrep "dopo" ; after_Prep = mkPrep "dopo" ;
all_Predet = { all_Predet = {
s = \\a,c => prepCase c ++ aagrForms "tutto" "tutta" "tutti" "tutte" ! a ; s = \\a,c => prepCase c ++ aagrForms "tutto" "tutta" "tutti" "tutte" ! a ;
c = Nom c = Nom ;
a = PNoAg
} ; } ;
almost_AdA, almost_AdN = ss "quasi" ; almost_AdA, almost_AdN = ss "quasi" ;
always_AdV = ss "sempre" ; always_AdV = ss "sempre" ;
@@ -60,13 +61,15 @@ lin
less_CAdv = X.mkCAdv "meno" conjThan ; less_CAdv = X.mkCAdv "meno" conjThan ;
many_Det = {s,sp = \\g,c => prepCase c ++ genForms "molti" "molte" ! g ; n = Pl ; s2 = []} ; many_Det = {s,sp = \\g,c => prepCase c ++ genForms "molti" "molte" ! g ; n = Pl ; s2 = []} ;
more_CAdv = X.mkCAdv "più" conjThan ; more_CAdv = X.mkCAdv "più" conjThan ;
most_Predet = {s = \\_,c => prepCase c ++ ["la maggior parte"] ; c = CPrep P_di} ; most_Predet = {s = \\_,c => prepCase c ++ ["la maggior parte"] ; c = CPrep P_di ;
a = PNoAg} ;
much_Det = {s,sp = \\g,c => prepCase c ++ genForms "molto" "molta" ! g ; n = Sg ; s2 = []} ; much_Det = {s,sp = \\g,c => prepCase c ++ genForms "molto" "molta" ! g ; n = Sg ; s2 = []} ;
must_VV = mkVV (verboV (dovere_47 "dovere")) ; must_VV = mkVV (verboV (dovere_47 "dovere")) ;
no_Utt = ss "no" ; no_Utt = ss "no" ;
on_Prep = {s = [] ; c = CPrep P_su ; isDir = False} ; on_Prep = {s = [] ; c = CPrep P_su ; isDir = False} ;
---- one_Quant = {s = \\g,c => prepCase c ++ genForms "uno" "una" ! g} ; ---- one_Quant = {s = \\g,c => prepCase c ++ genForms "uno" "una" ! g} ;
only_Predet = {s = \\_,c => prepCase c ++ "soltanto" ; c = Nom} ; --- solo|a|i|e only_Predet = {s = \\_,c => prepCase c ++ "soltanto" ; c = Nom ;
a = PNoAg} ; --- solo|a|i|e
or_Conj = {s1 = [] ; s2 = "o" ; n = Sg} ; or_Conj = {s1 = [] ; s2 = "o" ; n = Sg} ;
otherwise_PConj = ss "altramente" ; otherwise_PConj = ss "altramente" ;
part_Prep = complGen ; part_Prep = complGen ;
@@ -152,7 +155,8 @@ lin
mkPronoun mkPronoun
"Lei" "La" "Le" "Glie" "Lei" "Suo" "Sua" "Suoi" "Sue" "Lei" "La" "Le" "Glie" "Lei" "Suo" "Sua" "Suoi" "Sue"
Masc Sg P3 ; Masc Sg P3 ;
not_Predet = {s = \\a,c => prepCase c ++ "non" ; c = Nom} ; not_Predet = {s = \\a,c => prepCase c ++ "non" ; c = Nom ;
a = PNoAg} ;
no_Quant = no_Quant =
let aucun : ParadigmsIta.Number => ParadigmsIta.Gender => Case => Str = table { let aucun : ParadigmsIta.Number => ParadigmsIta.Gender => Case => Str = table {

View File

@@ -67,7 +67,11 @@ incomplete concrete CatRomance of Cat = CommonX
s2 : Str ; s2 : Str ;
sp : Number => Gender => Case => Str sp : Number => Gender => Case => Str
} ; } ;
Predet = {s : AAgr => Case => Str ; c : Case} ; -- c : la plupart de Predet = {
s : AAgr => Case => Str ;
c : Case ; -- c : la plupart de
a : PAgr -- if an agr is forced, e.g. chacun de nous
} ;
Num = {s : Gender => Str ; isNum : Bool ; n : Number} ; Num = {s : Gender => Str ; isNum : Bool ; n : Number} ;
Card = {s : Gender => Str ; n : Number} ; Card = {s : Gender => Str ; n : Number} ;
Ord = {s : AAgr => Str} ; Ord = {s : AAgr => Str} ;

View File

@@ -118,7 +118,7 @@ param
| RCond --# notpresent | RCond --# notpresent
; ;
-- Agreement of adjectives, verb phrases, and relative pronouns. -- Agreement of adjectives, verb phrases, relative pronouns, and predeterminers.
oper oper
AAgr : Type = {g : Gender ; n : Number} ; AAgr : Type = {g : Gender ; n : Number} ;
@@ -126,6 +126,7 @@ oper
param param
RAgr = RAg {g : Gender ; n : Number} | RNoAg ; --- AAgr RAgr = RAg {g : Gender ; n : Number} | RNoAg ; --- AAgr
PAgr = PAg Number | PNoAg ;
-- Clitic slots. -- Clitic slots.

View File

@@ -20,7 +20,7 @@ incomplete concrete NounRomance of Noun =
PredetNP pred np = heavyNP { PredetNP pred np = heavyNP {
s = \\c => pred.s ! aagr (np.a.g) (np.a.n) ! c ++ (np.s ! pred.c).ton ; s = \\c => pred.s ! aagr (np.a.g) (np.a.n) ! c ++ (np.s ! pred.c).ton ;
a = np.a ; a = case pred.a of {PAg n => agrP3 np.a.g n ; _ => np.a} ;
hasClit = False hasClit = False
} ; } ;

View File

@@ -9,7 +9,8 @@ lin
after_Prep = {s = ["despues"] ; c = MorphoSpa.genitive ; isDir = False} ; after_Prep = {s = ["despues"] ; c = MorphoSpa.genitive ; isDir = False} ;
all_Predet = { all_Predet = {
s = \\a,c => prepCase c ++ aagrForms "todo" "toda" "todos" "todas" ! a ; s = \\a,c => prepCase c ++ aagrForms "todo" "toda" "todos" "todas" ! a ;
c = Nom c = Nom ;
a = PNoAg
} ; } ;
almost_AdA, almost_AdN = ss "casi" ; almost_AdA, almost_AdN = ss "casi" ;
always_AdV = ss "siempre" ; always_AdV = ss "siempre" ;
@@ -64,14 +65,16 @@ lin
many_Det = { many_Det = {
s,sp = \\g,c => prepCase c ++ genForms "muchos" "muchas" ! g ; n = Pl ; s2 = []} ; s,sp = \\g,c => prepCase c ++ genForms "muchos" "muchas" ! g ; n = Pl ; s2 = []} ;
more_CAdv = X.mkCAdv "más" conjThan ; more_CAdv = X.mkCAdv "más" conjThan ;
most_Predet = {s = \\_,c => prepCase c ++ ["la mayor parte"] ; c = CPrep P_de} ; most_Predet = {s = \\_,c => prepCase c ++ ["la mayor parte"] ; c = CPrep P_de ;
a = PNoAg} ;
much_Det = { much_Det = {
s,sp = \\g,c => prepCase c ++ genForms "mucho" "mucha" ! g ; n = Sg ; s2 = []} ; s,sp = \\g,c => prepCase c ++ genForms "mucho" "mucha" ! g ; n = Sg ; s2 = []} ;
must_VV = mkVV (verboV (deber_6 "deber")) ; must_VV = mkVV (verboV (deber_6 "deber")) ;
no_Utt = ss "no" ; no_Utt = ss "no" ;
on_Prep = mkPrep "sobre" ; on_Prep = mkPrep "sobre" ;
--- one_Quant = {s = \\g,c => prepCase c ++ genForms "uno" "una" ! g} ; --- one_Quant = {s = \\g,c => prepCase c ++ genForms "uno" "una" ! g} ;
only_Predet = {s = \\_,c => prepCase c ++ "solamente" ; c = Nom} ; only_Predet = {s = \\_,c => prepCase c ++ "solamente" ; c = Nom ;
a = PNoAg} ;
or_Conj = {s1 = [] ; s2 = "o" ; n = Sg} ; or_Conj = {s1 = [] ; s2 = "o" ; n = Sg} ;
otherwise_PConj = ss "otramente" ; otherwise_PConj = ss "otramente" ;
part_Prep = complGen ; part_Prep = complGen ;