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 ;
|
||||||
|
|||||||
@@ -3,9 +3,16 @@ 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 ;
|
||||||
|
youPl8fem_Pron = mkPronoun "voi" "voi" "vouă" [] "voi" "vostru" "voastră" "voştri" "voastre" Fem Pl P2 ;
|
||||||
|
youPol8fem_Pron = let dvs = mkPronoun "dumneavoastră" "dumneavoastră" "dumneavoastră" [] "dumneavoastră" "dumneavoastră" "dumneavoastră" "dumneavoastră" "dumneavoastră" Fem Pl P2
|
||||||
|
in
|
||||||
|
{s = dvs.s; c1 = dvs.c1;
|
||||||
|
c2 = dvs.c2; a = dvs.a; isPol = True; poss = dvs.poss} ;
|
||||||
|
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|||||||
@@ -5,4 +5,13 @@ 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,7 +329,8 @@ 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 ;
|
||||||
@@ -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 {
|
||||||
@@ -534,8 +535,11 @@ oper
|
|||||||
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} ;
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ lin
|
|||||||
};
|
};
|
||||||
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
|
||||||
} ;
|
} ;
|
||||||
@@ -62,7 +62,7 @@ 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 ->
|
||||||
|
|||||||
Reference in New Issue
Block a user