forked from GitHub/gf-rgl
FixedRon
This commit is contained in:
@@ -52,6 +52,7 @@ concrete CatRon of Cat =
|
|||||||
Pron = {s : NCase => Str ;
|
Pron = {s : NCase => Str ;
|
||||||
c1, c2 : Clitics => Str ;
|
c1, c2 : Clitics => Str ;
|
||||||
a : Agr ;
|
a : Agr ;
|
||||||
|
isPol : Bool ;
|
||||||
poss : Number => Gender => Str } ;
|
poss : Number => Gender => Str } ;
|
||||||
|
|
||||||
NP = NounPhrase ;
|
NP = NounPhrase ;
|
||||||
|
|||||||
@@ -1,30 +1,37 @@
|
|||||||
--# -path=.:../romance:../common:../abstract:../../prelude
|
--# -path=.:../romance:../common:../abstract:../../prelude
|
||||||
concrete ExtraRon of ExtraRonAbs = CatRon **
|
concrete ExtraRon of ExtraRonAbs = CatRon **
|
||||||
open ResRon, ParadigmsRon, Prelude, MorphoRon in {
|
open ResRon, ParadigmsRon, Prelude, MorphoRon in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
at_Prep = mkPrep "la" Ac;
|
at_Prep = mkPrep "la" Ac True;
|
||||||
DatSubjCl np vp = mkClause (np.s ! Da).comp (agrP3 Masc Sg) (insertClit vp np);
|
DatSubjCl np vp = let ss = if_then_Str np.isPronoun "" (np.s ! Da).comp
|
||||||
|
in mkClause ss np.isPol (agrP3 Masc Sg) (insertClit vp np);
|
||||||
|
i8fem_Pron = mkPronoun "eu" "mine" "mie" [] [] "meu" "mea" "mei" "mele" Fem Sg P1 ;
|
||||||
|
youSg8fem_Pron = mkPronoun "tu" "tine" "ţie" [] "tu" "tău" "ta" "tăi" "tale" Fem Sg P2 ;
|
||||||
oper
|
youPl8fem_Pron = mkPronoun "voi" "voi" "vouă" [] "voi" "vostru" "voastră" "voştri" "voastre" Fem Pl P2 ;
|
||||||
insertClit : VerbPhrase -> NounPhrase -> VerbPhrase = \vp, np ->
|
youPol8fem_Pron = let dvs = mkPronoun "dumneavoastră" "dumneavoastră" "dumneavoastră" [] "dumneavoastră" "dumneavoastră" "dumneavoastră" "dumneavoastră" "dumneavoastră" Fem Pl P2
|
||||||
let
|
in
|
||||||
vcDa = case np.nForm of
|
{s = dvs.s; c1 = dvs.c1;
|
||||||
{HasClit => nextClit vp.nrClit PDat ;
|
c2 = dvs.c2; a = dvs.a; isPol = True; poss = dvs.poss} ;
|
||||||
_ => vp.nrClit
|
|
||||||
};
|
|
||||||
vpp = insertObje (\\_ => "") RNoAg (clitFromNoun np Da) False vcDa vp;
|
oper
|
||||||
in
|
insertClit : VerbPhrase -> NounPhrase -> VerbPhrase = \vp, np ->
|
||||||
{isRefl = vpp.isRefl;
|
let
|
||||||
s = vpp.s ; isFemSg = vpp.isFemSg ; pReflClit = vp.pReflClit ;
|
vcDa = case np.nForm of
|
||||||
nrClit = vpp.nrClit; clAcc = vpp.clAcc ;
|
{HasClit => nextClit vp.nrClit PDat ;
|
||||||
clDat = vpp.clDat ; neg = vpp.neg ;
|
_ => vp.nrClit
|
||||||
comp = \\a => vpp.comp ! (np.a);
|
};
|
||||||
ext = vpp.ext ;
|
vpp = insertObje (\\_ => "") RNoAg (clitFromNoun np Da) False vcDa vp;
|
||||||
lock_VP = <> };
|
in
|
||||||
|
{isRefl = vpp.isRefl;
|
||||||
|
s = vpp.s ; isFemSg = vpp.isFemSg ; pReflClit = vp.pReflClit ;
|
||||||
|
nrClit = vpp.nrClit; clAcc = vpp.clAcc ;
|
||||||
}
|
clDat = vpp.clDat ; neg = vpp.neg ;
|
||||||
|
comp = \\a => vpp.comp ! (np.a);
|
||||||
|
ext = vpp.ext ;
|
||||||
|
lock_VP = <> };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -4,5 +4,14 @@ abstract ExtraRonAbs = Cat **{
|
|||||||
|
|
||||||
fun
|
fun
|
||||||
DatSubjCl : NP -> VP -> Cl ;
|
DatSubjCl : NP -> VP -> Cl ;
|
||||||
at_Prep : Prep ;
|
at_Prep : Prep ;
|
||||||
|
|
||||||
|
i8fem_Pron : Pron ;
|
||||||
|
youSg8fem_Pron : Pron ;
|
||||||
|
youPl8fem_Pron : Pron ;
|
||||||
|
youPol8fem_Pron : Pron ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,27 +8,27 @@ in {
|
|||||||
|
|
||||||
|
|
||||||
lin
|
lin
|
||||||
ImpersCl vp = mkClause "" (agrP3 Masc Sg) vp ;
|
ImpersCl vp = mkClause "" False (agrP3 Masc Sg) vp ;
|
||||||
|
|
||||||
GenericCl vp = mkClause "cineva" (agrP3 Masc Sg) vp ; -- an exact correspondent does not exist !
|
GenericCl vp = mkClause "cineva" False (agrP3 Masc Sg) vp ; -- an exact correspondent does not exist !
|
||||||
|
|
||||||
ExistNP np =
|
ExistNP np =
|
||||||
mkClause "" np.a (insertSimpObj (\\ag => (np.s ! No ).comp) (useVerb (v_besch20 "existã"))) ;
|
mkClause "" False np.a (insertSimpObj (\\ag => (np.s ! No ).comp) (useVerb (v_besch20 "existã"))) ;
|
||||||
-- v_besch20 "exista"
|
-- v_besch20 "exista"
|
||||||
|
|
||||||
ExistIP ip = {
|
ExistIP ip = {
|
||||||
s = \\t,a,p,_ =>
|
s = \\t,a,p,_ =>
|
||||||
ip.s ! No ++
|
ip.s ! No ++
|
||||||
(mkClause "" (agrP3 (ip.a.g) (ip.a.n))
|
(mkClause "" False (agrP3 (ip.a.g) (ip.a.n))
|
||||||
copula).s
|
copula).s
|
||||||
! DDir ! t ! a ! p ! Indic } ;
|
! DDir ! t ! a ! p ! Indic } ;
|
||||||
|
|
||||||
CleftNP np rs = mkClause "" np.a
|
CleftNP np rs = mkClause "" False np.a
|
||||||
(insertSimpObj (\\_ => rs.s ! Indic ! np.a)
|
(insertSimpObj (\\_ => rs.s ! Indic ! np.a)
|
||||||
(insertSimpObj (\\_ => (np.s ! rs.c).comp) copula)) ;
|
(insertSimpObj (\\_ => (np.s ! rs.c).comp) copula)) ;
|
||||||
--need adverb for
|
--need adverb for
|
||||||
|
|
||||||
CleftAdv ad s = mkClause "" (agrP3 Masc Sg)
|
CleftAdv ad s = mkClause "" False (agrP3 Masc Sg)
|
||||||
(insertSimpObj (\\_ => conjThat ++ s.s ! Indic)
|
(insertSimpObj (\\_ => conjThat ++ s.s ! Indic)
|
||||||
(insertSimpObj (\\_ => ad.s) copula)) ;
|
(insertSimpObj (\\_ => ad.s) copula)) ;
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ concrete NounRon of Noun =
|
|||||||
};
|
};
|
||||||
a = ag ;
|
a = ag ;
|
||||||
nForm = nf;
|
nForm = nf;
|
||||||
|
isPol = False;
|
||||||
isPronoun = False;
|
isPronoun = False;
|
||||||
indForm = det.s ! gg ! No ++ det.size ++cn.s ! n ! rs ! ANomAcc ++ det.post ! gg ! No
|
indForm = det.s ! gg ! No ++ det.size ++cn.s ! n ! rs ! ANomAcc ++ det.post ! gg ! No
|
||||||
|
|
||||||
@@ -39,7 +40,7 @@ concrete NounRon of Noun =
|
|||||||
|
|
||||||
a = ag;
|
a = ag;
|
||||||
nForm = if_then_else NForm hc HasClit (HasRef False) ;
|
nForm = if_then_else NForm hc HasClit (HasRef False) ;
|
||||||
isPronoun = False ;
|
isPronoun = False ; isPol = False;
|
||||||
indForm = pn.s ! No
|
indForm = pn.s ! No
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -47,6 +48,7 @@ concrete NounRon of Noun =
|
|||||||
clit = (genCliticsCase p.a c).s } ;
|
clit = (genCliticsCase p.a c).s } ;
|
||||||
nForm = HasClit;
|
nForm = HasClit;
|
||||||
isPronoun = True ;
|
isPronoun = True ;
|
||||||
|
isPol = p.isPol ;
|
||||||
a = p.a;
|
a = p.a;
|
||||||
indForm = p.s ! Ac
|
indForm = p.s ! Ac
|
||||||
};
|
};
|
||||||
@@ -58,7 +60,7 @@ concrete NounRon of Noun =
|
|||||||
clit = (np.s ! c).clit };
|
clit = (np.s ! c).clit };
|
||||||
a = np.a ;
|
a = np.a ;
|
||||||
nForm = np.nForm ;
|
nForm = np.nForm ;
|
||||||
isPronoun = False ;
|
isPronoun = False ; isPol = False;
|
||||||
indForm = pred.s ! aagr (np.a.g) (np.a.n) ! ANomAcc ++ (np.s ! pred.c).comp
|
indForm = pred.s ! aagr (np.a.g) (np.a.n) ! ANomAcc ++ (np.s ! pred.c).comp
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -224,6 +226,7 @@ in {
|
|||||||
clit = \\cs => [] } ;
|
clit = \\cs => [] } ;
|
||||||
a = agrP3 g n ;
|
a = agrP3 g n ;
|
||||||
nForm = HasRef False ;
|
nForm = HasRef False ;
|
||||||
|
isPol = False;
|
||||||
isPronoun = False ;
|
isPronoun = False ;
|
||||||
indForm = cn.s ! n ! Indef ! ANomAcc
|
indForm = cn.s ! n ! Indef ! ANomAcc
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -466,7 +466,7 @@ mkNPspec : Str -> Str -> Str -> Number -> Gender -> NP =
|
|||||||
a = ag ;
|
a = ag ;
|
||||||
indForm = cineva ;
|
indForm = cineva ;
|
||||||
nForm = HasClit ;
|
nForm = HasClit ;
|
||||||
isPronoun = False ;
|
isPronoun = False ; isPol = False;
|
||||||
lock_NP = <>
|
lock_NP = <>
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -481,7 +481,7 @@ mkNPs : Str -> Str -> Number -> Gender -> Bool -> NP =
|
|||||||
};
|
};
|
||||||
a = ag ;
|
a = ag ;
|
||||||
indForm = cineva ;
|
indForm = cineva ;
|
||||||
isPronoun = False ;
|
isPronoun = False ; isPol = False;
|
||||||
nForm = HasRef b ;
|
nForm = HasRef b ;
|
||||||
lock_NP = <>
|
lock_NP = <>
|
||||||
};
|
};
|
||||||
@@ -500,7 +500,7 @@ mkNPa : Str -> Str -> Str -> Number -> Gender -> Bool -> NP =
|
|||||||
};
|
};
|
||||||
a = ag;
|
a = ag;
|
||||||
nForm = HasRef b;
|
nForm = HasRef b;
|
||||||
isPronoun = False ;
|
isPronoun = False; isPol = False;
|
||||||
indForm = om ;
|
indForm = om ;
|
||||||
lock_NP = <>
|
lock_NP = <>
|
||||||
};
|
};
|
||||||
@@ -517,6 +517,7 @@ mkPronoun :(_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Number -> Person -> Pron =\eu,
|
|||||||
poss = table {Sg => table {Masc => meuP ; Fem => mea};
|
poss = table {Sg => table {Masc => meuP ; Fem => mea};
|
||||||
Pl => table {Masc => mei ; Fem => mele}
|
Pl => table {Masc => mei ; Fem => mele}
|
||||||
};
|
};
|
||||||
|
isPol = False;
|
||||||
lock_Pron = <>};
|
lock_Pron = <>};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ concrete QuestionRon of Question =
|
|||||||
QuestVP qp vp = {
|
QuestVP qp vp = {
|
||||||
s = \\t,a,b,_ =>
|
s = \\t,a,b,_ =>
|
||||||
let
|
let
|
||||||
cl = mkClause (qp.s ! No) (agrP3 qp.a.g qp.a.n) vp
|
cl = mkClause (qp.s ! No) False (agrP3 qp.a.g qp.a.n) vp
|
||||||
in
|
in
|
||||||
cl.s ! DDir ! t ! a ! b ! Indic
|
cl.s ! DDir ! t ! a ! b ! Indic
|
||||||
} ;
|
} ;
|
||||||
@@ -52,7 +52,7 @@ concrete QuestionRon of Question =
|
|||||||
s = \\t,a,p,_ =>
|
s = \\t,a,p,_ =>
|
||||||
let
|
let
|
||||||
vp = predV copula ;
|
vp = predV copula ;
|
||||||
cls = (mkClause (np.s ! No).comp np.a vp).s !
|
cls = (mkClause (np.s ! No).comp np.isPol np.a vp).s !
|
||||||
DInv ! t ! a ! p ! Indic ;
|
DInv ! t ! a ! p ! Indic ;
|
||||||
why = icomp.s ! {g = np.a.g ; n = np.a.n}
|
why = icomp.s ! {g = np.a.g ; n = np.a.n}
|
||||||
in why ++ cls
|
in why ++ cls
|
||||||
|
|||||||
@@ -16,11 +16,13 @@ concrete RelativeRon of Relative =
|
|||||||
True => {s = \\ag =>
|
True => {s = \\ag =>
|
||||||
(mkClause
|
(mkClause
|
||||||
(rp.s ! {g = ag.g ; n = ag.n} ! No)
|
(rp.s ! {g = ag.g ; n = ag.n} ! No)
|
||||||
|
False
|
||||||
{g = rp.a.g ; n = rp.a.n ; p = P3}
|
{g = rp.a.g ; n = rp.a.n ; p = P3}
|
||||||
vp).s ! DDir ; c = No} ;
|
vp).s ! DDir ; c = No} ;
|
||||||
False => {s = \\ag =>
|
False => {s = \\ag =>
|
||||||
(mkClause
|
(mkClause
|
||||||
(rp.s ! {g = ag.g ; n = ag.n} ! No)
|
(rp.s ! {g = ag.g ; n = ag.n} ! No)
|
||||||
|
False
|
||||||
ag
|
ag
|
||||||
vp).s ! DDir ; c = No
|
vp).s ! DDir ; c = No
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -329,8 +329,9 @@ oper
|
|||||||
a : Agr ;
|
a : Agr ;
|
||||||
indForm : Str ; --needed for prepositions that demand the indefinite form of a NP
|
indForm : Str ; --needed for prepositions that demand the indefinite form of a NP
|
||||||
nForm : NForm ; -- indicates the presence of clitic doubling and referential form
|
nForm : NForm ; -- indicates the presence of clitic doubling and referential form
|
||||||
isPronoun : Bool -- in the case of pronouns, just the clitics are used, and not the comp form
|
isPronoun : Bool ; -- in the case of pronouns, just the clitics are used, and not the comp form
|
||||||
} ;
|
isPol : Bool -- needed for the agreement of the polite pronoun, singular form
|
||||||
|
} ;
|
||||||
VerbPhrase :Type = {
|
VerbPhrase :Type = {
|
||||||
s : VForm => Str ;
|
s : VForm => Str ;
|
||||||
isRefl : Agr => RAgr ; -- the clitics for reflexive verbs
|
isRefl : Agr => RAgr ; -- the clitics for reflexive verbs
|
||||||
@@ -512,9 +513,9 @@ oper
|
|||||||
|
|
||||||
-- clause building function :
|
-- clause building function :
|
||||||
|
|
||||||
mkClause : Str -> Agr -> VerbPhrase ->
|
mkClause : Str -> Bool -> Agr -> VerbPhrase ->
|
||||||
{s : Direct => RTense => Anteriority => Polarity => Mood => Str} =
|
{s : Direct => RTense => Anteriority => Polarity => Mood => Str} =
|
||||||
\subj,agr,vpr -> {
|
\subj,isPol,agr,vpr -> {
|
||||||
s = \\d,t,a,b,m =>
|
s = \\d,t,a,b,m =>
|
||||||
let
|
let
|
||||||
tm = case t of {
|
tm = case t of {
|
||||||
@@ -533,9 +534,12 @@ oper
|
|||||||
sa = (vp.s ! VPFinite tm a ).sa ;
|
sa = (vp.s ! VPFinite tm a ).sa ;
|
||||||
verb = vps ! agr ;
|
verb = vps ! agr ;
|
||||||
neg = vp.neg ! b ;
|
neg = vp.neg ! b ;
|
||||||
clpr = flattenClitics vpr.nrClit vpr.clAcc vpr.clDat (vpr.isRefl ! agr) (andB vpr.isFemSg cmp) cmp vpr.pReflClit;
|
clpr = flattenClitics vpr.nrClit vpr.clAcc vpr.clDat (vpr.isRefl ! agr) (andB vpr.isFemSg cmp) cmp vpr.pReflClit;
|
||||||
compl = vp.comp ! agr ++ vp.ext ! b
|
compl = case isPol of {
|
||||||
in
|
True => vp.comp ! {g = agr.g ; n = Sg ; p = agr.p} ;
|
||||||
|
_ => vp.comp ! agr
|
||||||
|
} ++ vp.ext ! b
|
||||||
|
in
|
||||||
case d of {
|
case d of {
|
||||||
DDir =>
|
DDir =>
|
||||||
subj ++ sa ++ neg ++ clpr.s1 ++ verb ++ clpr.s2;
|
subj ++ sa ++ neg ++ clpr.s1 ++ verb ++ clpr.s2;
|
||||||
@@ -554,8 +558,8 @@ oper
|
|||||||
_ => [] }};
|
_ => [] }};
|
||||||
a = np.a ;
|
a = np.a ;
|
||||||
indForm = np.ss ;
|
indForm = np.ss ;
|
||||||
nForm = np.hasClit;
|
nForm = np.hasClit ;
|
||||||
isPronoun = False
|
isPronoun = False ;isPol = False
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
genForms : Str -> Str -> Gender => Str = \bon,bonne ->
|
genForms : Str -> Str -> Gender => Str = \bon,bonne ->
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
PredVP np vp = mkClause (np.s ! No).comp np.a vp ;
|
PredVP np vp = mkClause (np.s ! No).comp np.isPol np.a vp ;
|
||||||
|
|
||||||
PredSCVP sc vp = mkClause sc.s (agrP3 Masc Sg) vp ;
|
PredSCVP sc vp = mkClause sc.s False (agrP3 Masc Sg) vp ;
|
||||||
|
|
||||||
ImpVP vpr = let agSg = {n = Sg ; g = Masc ; p = P2 } ;
|
ImpVP vpr = let agSg = {n = Sg ; g = Masc ; p = P2 } ;
|
||||||
agPl = {n = Pl ; g = Masc ; p = P2 } ;
|
agPl = {n = Pl ; g = Masc ; p = P2 } ;
|
||||||
@@ -40,8 +40,8 @@
|
|||||||
bcond = andB vp.needClit bb
|
bcond = andB vp.needClit bb
|
||||||
in
|
in
|
||||||
case <bcond,v2.c2.isDir> of
|
case <bcond,v2.c2.isDir> of
|
||||||
{<True, Dir pc> => (mkClause (np.s ! No).comp np.a (putClit (agrP3 ag.g ag.n) pc vp)).s ;
|
{<True, Dir pc> => (mkClause (np.s ! No).comp np.isPol np.a (putClit (agrP3 ag.g ag.n) pc vp)).s ;
|
||||||
_ => (mkClause (np.s ! No).comp np.a vp).s
|
_ => (mkClause (np.s ! No).comp np.isPol np.a vp).s
|
||||||
};
|
};
|
||||||
c2 = v2.c2
|
c2 = v2.c2
|
||||||
} ;
|
} ;
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
SlashVS np vs slash =
|
SlashVS np vs slash =
|
||||||
{s = \\bb,ag =>
|
{s = \\bb,ag =>
|
||||||
(mkClause
|
(mkClause
|
||||||
(np.s ! No).comp np.a
|
(np.s ! No).comp np.isPol np.a
|
||||||
(insertExtrapos (\\b => conjThat ++ slash.s ! ag ! (vs.m ! b))
|
(insertExtrapos (\\b => conjThat ++ slash.s ! ag ! (vs.m ! b))
|
||||||
(predV vs))
|
(predV vs))
|
||||||
).s ;
|
).s ;
|
||||||
|
|||||||
@@ -244,10 +244,14 @@ whatPl_IP =
|
|||||||
youSg_Pron = mkPronoun
|
youSg_Pron = mkPronoun
|
||||||
"tu" "tine" "ţie" [] "tu" "tău" "ta" "tăi" "tale"
|
"tu" "tine" "ţie" [] "tu" "tău" "ta" "tăi" "tale"
|
||||||
Masc Sg P2 ;
|
Masc Sg P2 ;
|
||||||
youPl_Pron, youPol_Pron =
|
youPl_Pron =
|
||||||
mkPronoun
|
mkPronoun
|
||||||
"voi" "voi" "vouă" [] "voi" "vostru" "voastră" "voştri" "voastre"
|
"voi" "voi" "vouă" [] "voi" "vostru" "voastră" "voştri" "voastre"
|
||||||
Masc Pl P2 ;
|
Masc Pl P2 ;
|
||||||
|
youPol_Pron = let dvs = mkPronoun "dumneavoastră" "dumneavoastră" "dumneavoastră" [] "dumneavoastră" "dumneavoastră" "dumneavoastră" "dumneavoastră" "dumneavoastră" Masc Pl P2
|
||||||
|
in
|
||||||
|
{s = dvs.s; c1 = dvs.c1;
|
||||||
|
c2 = dvs.c2; a = dvs.a; isPol = True; poss = dvs.poss} ;
|
||||||
|
|
||||||
not_Predet = {s = \\a,c => "nu" ; c = No} ;
|
not_Predet = {s = \\a,c => "nu" ; c = No} ;
|
||||||
|
|
||||||
|
|||||||
@@ -1,77 +1,77 @@
|
|||||||
--# -path=.:../abstract:../common:../prelude
|
--# -path=.:../abstract:../common:../prelude
|
||||||
concrete SymbolRon of Symbol =
|
concrete SymbolRon of Symbol =
|
||||||
CatRon ** open Prelude, ResRon in {
|
CatRon ** open Prelude, ResRon in {
|
||||||
|
|
||||||
lin
|
lin
|
||||||
SymbPN i = mkSymb i.s ;
|
SymbPN i = mkSymb i.s ;
|
||||||
IntPN i = mkSymb i.s ;
|
IntPN i = mkSymb i.s ;
|
||||||
FloatPN i = mkSymb i.s ;
|
FloatPN i = mkSymb i.s ;
|
||||||
NumPN i = mkSymb (i.sp ! Masc) ;
|
NumPN i = mkSymb (i.sp ! Masc) ;
|
||||||
|
|
||||||
CNIntNP cn i = let gg = agrGender cn.g Sg in
|
CNIntNP cn i = let gg = agrGender cn.g Sg in
|
||||||
heavyNP {
|
heavyNP {
|
||||||
s = \\c => cn.s ! Sg ! Def ! (convCase c) ++ i.s ;
|
s = \\c => cn.s ! Sg ! Def ! (convCase c) ++ i.s ;
|
||||||
a = agrP3 gg Sg ;
|
a = agrP3 gg Sg ;
|
||||||
hasClit = HasRef False ;
|
hasClit = HasRef False ;
|
||||||
ss = cn.s ! Sg ! Def ! ANomAcc ++ i.s
|
ss = cn.s ! Sg ! Def ! ANomAcc ++ i.s
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
CNSymbNP det cn xs = let gg = agrGender cn.g det.n;
|
CNSymbNP det cn xs = let gg = agrGender cn.g det.n;
|
||||||
st = if_then_else Species det.isDef Def Indef;
|
st = if_then_else Species det.isDef Def Indef;
|
||||||
rs = if_then_else Species det.hasRef Def Indef;
|
rs = if_then_else Species det.hasRef Def Indef;
|
||||||
ag = agrP3 gg det.n ;
|
ag = agrP3 gg det.n ;
|
||||||
hr = andB (getClit cn.a) det.hasRef;
|
hr = andB (getClit cn.a) det.hasRef;
|
||||||
nf = if_then_else NForm hr HasClit (HasRef False)
|
nf = if_then_else NForm hr HasClit (HasRef False)
|
||||||
in
|
in
|
||||||
{s = \\c => case c of
|
{s = \\c => case c of
|
||||||
{Vo =>
|
{Vo =>
|
||||||
{comp = det.s ! gg ! No ++ det.size ++ cn.s ! det.n ! st ! ANomAcc ++ det.post ! gg ! No ;
|
{comp = det.s ! gg ! No ++ det.size ++ cn.s ! det.n ! st ! ANomAcc ++ det.post ! gg ! No ;
|
||||||
clit = \\cs => if_then_Str hr ((genCliticsCase ag c).s ! cs) [] };
|
clit = \\cs => if_then_Str hr ((genCliticsCase ag c).s ! cs) [] };
|
||||||
_ => {comp = det.s ! gg ! c ++ det.size ++ cn.s ! det.n ! st ! (convCase c) ++ det.post ! gg ! c ;
|
_ => {comp = det.s ! gg ! c ++ det.size ++ cn.s ! det.n ! st ! (convCase c) ++ det.post ! gg ! c ;
|
||||||
clit = \\cs => if_then_Str hr ((genCliticsCase ag c).s ! cs) [] }
|
clit = \\cs => if_then_Str hr ((genCliticsCase ag c).s ! cs) [] }
|
||||||
};
|
};
|
||||||
a = ag ;
|
a = ag ;
|
||||||
nForm = nf ;
|
nForm = nf ;
|
||||||
|
isPol = False ;
|
||||||
isPronoun = False ;
|
isPronoun = False ;
|
||||||
indForm = det.s ! gg ! No ++ det.size ++cn.s ! det.n ! rs ! ANomAcc
|
indForm = det.s ! gg ! No ++ det.size ++cn.s ! det.n ! rs ! ANomAcc
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
CNNumNP cn i = let gg = agrGender cn.g Sg in
|
CNNumNP cn i = let gg = agrGender cn.g Sg in
|
||||||
heavyNP {
|
heavyNP {
|
||||||
s = \\c => cn.s ! Sg ! Def ! (convCase c) ++ i.sp ! gg;
|
s = \\c => cn.s ! Sg ! Def ! (convCase c) ++ i.sp ! gg;
|
||||||
a = agrP3 gg Sg ;
|
a = agrP3 gg Sg ;
|
||||||
hasClit = HasRef False ;
|
hasClit = HasRef False ;
|
||||||
ss = cn.s ! Sg ! Def ! ANomAcc ++ i.sp ! gg
|
ss = cn.s ! Sg ! Def ! ANomAcc ++ i.sp ! gg
|
||||||
} ;
|
} ;
|
||||||
SymbS sy = {s = \\_ => sy.s} ;
|
SymbS sy = {s = \\_ => sy.s} ;
|
||||||
|
|
||||||
SymbNum nn = {s,sp = \\_ => nn.s ; n = Pl; size = less20} ; -- need to know the size of the symbol to properly set it to less20 or plural
|
SymbNum nn = {s,sp = \\_ => nn.s ; n = Pl; size = less20} ; -- need to know the size of the symbol to properly set it to less20 or plural
|
||||||
SymbOrd nn = {s = \\n,g,nc => case nc of
|
SymbOrd nn = {s = \\n,g,nc => case nc of
|
||||||
{Da | Ge => artDem g n AGenDat ++ "de-" ++ artPos g n ANomAcc ++ nn.s ++ "-lea";
|
{Da | Ge => artDem g n AGenDat ++ "de-" ++ artPos g n ANomAcc ++ nn.s ++ "-lea";
|
||||||
_ => artPos g n ANomAcc ++ nn.s ++ "-lea"
|
_ => artPos g n ANomAcc ++ nn.s ++ "-lea"
|
||||||
};
|
};
|
||||||
isPre = True
|
isPre = True
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
|
|
||||||
Symb, [Symb] = SS ;
|
Symb, [Symb] = SS ;
|
||||||
|
|
||||||
lin
|
lin
|
||||||
|
|
||||||
MkSymb s = s ;
|
MkSymb s = s ;
|
||||||
|
|
||||||
BaseSymb = infixSS "ºi" ;
|
BaseSymb = infixSS "și" ;
|
||||||
ConsSymb = infixSS "," ;
|
ConsSymb = infixSS "," ;
|
||||||
|
|
||||||
oper mkSymb : Str -> PN = \ss ->
|
oper mkSymb : Str -> PN = \ss ->
|
||||||
{ s = \\c => case c of
|
{ s = \\c => case c of
|
||||||
{Da | Ge => "lui" ++ ss;
|
{Da | Ge => "lui" ++ ss;
|
||||||
_ => ss
|
_ => ss
|
||||||
};
|
};
|
||||||
g = Masc; n = Sg; a = Animate ;
|
g = Masc; n = Sg; a = Animate ;
|
||||||
lock_PN = <>
|
lock_PN = <>
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user