mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
Merge pull request #159 from odanoburu/iberic-neg-imp
(Cat,Por,Spa) Iberic imperative
This commit is contained in:
@@ -108,28 +108,26 @@ oper
|
|||||||
|
|
||||||
infForm _ _ _ _ = True ;
|
infForm _ _ _ _ = True ;
|
||||||
|
|
||||||
mkImperative b p vp =
|
mkImperative isPol p vp =
|
||||||
\\pol,g,n =>
|
\\pol,g,n => case pol of {
|
||||||
let
|
RPos => neg.p1 ++ imper ++ bindIf refl.isRefl ++ refl.pron
|
||||||
pe = case b of {True => P3 ; _ => p} ;
|
++ bindIf hasClit ++ clit ++ compl ;
|
||||||
agr = {g = g ; n = n ; p = pe} ;
|
RNeg _ => neg.p1 ++ refl.pron ++ clit ++ compl ++ subj
|
||||||
refl = case vp.s.vtyp of {
|
} where {
|
||||||
VRefl => <reflPron n pe Acc,True> ;
|
pe = case isPol of {True => P3 ; _ => p} ;
|
||||||
_ => <[],False>
|
refl = case vp.s.vtyp of {
|
||||||
} ;
|
VRefl => {pron = reflPron n pe Acc ; isRefl = True} ;
|
||||||
|
_ => {pron = [] ; isRefl = False}
|
||||||
clpr = <vp.clit1 ++ vp.clit2, [],vp.clit3.hasClit> ; ---- TODO: True if clit
|
} ;
|
||||||
---- clpr = <[],[],False> ; ----e pronArg agr.n agr.p vp.clAcc vp.clDat ;
|
clit = vp.clit1 ++ vp.clit2 ;
|
||||||
----e verb = case <aag.n, pol,pe> of {
|
hasClit = vp.clit3.hasClit ;
|
||||||
----e <Sg,Neg,P2> => (vp.s ! VPInfinit Simul clpr.p3).inf ! aag ;
|
imper = vp.s.s ! vImper n pe ;
|
||||||
----e _ => (vp.s ! VPImperat).fin ! agr
|
subj = vp.s.s ! VFin (VPres Conjunct) n pe ;
|
||||||
----e } ;
|
neg = vp.neg ! pol ;
|
||||||
verb = vp.s.s ! vImper n pe ; ----e
|
agr = {g = g ; n = n ; p = pe} ;
|
||||||
neg = vp.neg ! pol ;
|
compl = neg.p2 ++ vp.comp ! agr ++ vp.ext ! pol
|
||||||
compl = neg.p2 ++ clpr.p2 ++ vp.comp ! agr ++ vp.ext ! pol
|
} ;
|
||||||
in
|
|
||||||
neg.p1 ++ verb ++ bindIf refl.p2 ++ refl.p1 ++ bindIf clpr.p3 ++ clpr.p1 ++ compl
|
|
||||||
;
|
|
||||||
CopulaType = Bool ;
|
CopulaType = Bool ;
|
||||||
selectCopula = \isEstar -> case isEstar of {True => estar_V ; False => copula} ;
|
selectCopula = \isEstar -> case isEstar of {True => estar_V ; False => copula} ;
|
||||||
serCopula = False ;
|
serCopula = False ;
|
||||||
|
|||||||
@@ -55,22 +55,31 @@ instance DiffPor of DiffRomance - [chooseTA,partAgr,vpAgrSubj,vpAgrClits] = open
|
|||||||
defaultPronArg ;
|
defaultPronArg ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
mkImperative b p vp =
|
mkImperative isPol p vp =
|
||||||
\\pol,g,n =>
|
\\pol,g,n => case pol of {
|
||||||
let
|
RPos => neg.p1 ++ imper ++ bindHyphenIf refl.isRefl ++ refl.pron
|
||||||
pe = case b of {True => P3 ; _ => p} ;
|
++ bindIf hasClit ++ clit ++ compl ;
|
||||||
agr = {g = g ; n = n ; p = pe} ;
|
RNeg _ => neg.p1 ++ refl.pron ++ clit ++ subj ++ compl
|
||||||
refl = case vp.s.vtyp of {
|
} where {
|
||||||
VRefl => <reflPron n pe Acc,True> ;
|
pe = case isPol of {True => P2 ; _ => P3} ;
|
||||||
_ => <[],False>
|
refl = case vp.s.vtyp of {
|
||||||
} ;
|
VRefl => {pron = reflPron n pe Acc ; isRefl = True} ;
|
||||||
|
_ => {pron = [] ; isRefl = False}
|
||||||
|
} ;
|
||||||
|
clit = vp.clit1 ++ vp.clit2 ;
|
||||||
|
hasClit = vp.clit3.hasClit ;
|
||||||
|
imper = vp.s.s ! vImper n pe ;
|
||||||
|
subj = vp.s.s ! VFin (VPres Conjunct) n p ;
|
||||||
|
neg = vp.neg ! pol ;
|
||||||
|
agr = {g = g ; n = n ; p = pe} ;
|
||||||
|
compl = neg.p2 ++ vp.comp ! agr ++ vp.ext ! pol
|
||||||
|
} ;
|
||||||
|
|
||||||
clpr = <vp.clit1 ++ vp.clit2, [],vp.clit3.hasClit> ;
|
bindHyphenIf : Bool -> Str ;
|
||||||
verb = vp.s.s ! vImper n pe ;
|
bindHyphenIf b = case b of {
|
||||||
neg = vp.neg ! pol ;
|
True => BIND ++ "-" ++ BIND ;
|
||||||
compl = neg.p2 ++ clpr.p2 ++ vp.comp ! agr ++ vp.ext ! pol
|
_ => []
|
||||||
in
|
} ;
|
||||||
neg.p1 ++ verb ++ bindIf refl.p2 ++ refl.p1 ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ;
|
|
||||||
|
|
||||||
param
|
param
|
||||||
Copula = SerCop | EstarCop | FicarCop ;
|
Copula = SerCop | EstarCop | FicarCop ;
|
||||||
|
|||||||
@@ -45,4 +45,4 @@ concrete ExtraPor of ExtraPorAbs = ExtraRomancePor **
|
|||||||
|
|
||||||
UseComp_estar comp = insertComplement comp.s (predV B.estar_V) ;
|
UseComp_estar comp = insertComplement comp.s (predV B.estar_V) ;
|
||||||
|
|
||||||
}
|
} ;
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ lin
|
|||||||
near_A = mkA "perto" ;
|
near_A = mkA "perto" ;
|
||||||
new_A = prefixA (mkA "novo") ;
|
new_A = prefixA (mkA "novo") ;
|
||||||
old_A = prefixA (mkA "velho") ;
|
old_A = prefixA (mkA "velho") ;
|
||||||
ready_A = adjCopula (mkA "pronto") D.estarCopula ;
|
ready_A = mkA (mkA "pronto") D.estarCopula ;
|
||||||
red_A = mkA "vermelho" ;
|
red_A = mkA "vermelho" ;
|
||||||
rotten_A = mkA "podre" ;
|
rotten_A = mkA "podre" ;
|
||||||
round_A = mkA "redondo" ;
|
round_A = mkA "redondo" ;
|
||||||
@@ -52,7 +52,7 @@ lin
|
|||||||
thick_A = mkA "grosso" ;
|
thick_A = mkA "grosso" ;
|
||||||
thin_A = mkA "fino" ; -- delgado, magro
|
thin_A = mkA "fino" ; -- delgado, magro
|
||||||
ugly_A = mkA "feio" ;
|
ugly_A = mkA "feio" ;
|
||||||
uncertain_A = mkA "incerto" ;
|
uncertain_A = mkA (mkA "incerto") D.estarCopula ;
|
||||||
warm_A = mkA "quente" ;
|
warm_A = mkA "quente" ;
|
||||||
wet_A = mkA "molhado" ;
|
wet_A = mkA "molhado" ;
|
||||||
white_A = compADeg (mkA "branco") ;
|
white_A = compADeg (mkA "branco") ;
|
||||||
@@ -191,7 +191,7 @@ lin
|
|||||||
question_N = mkN "pergunta" ;
|
question_N = mkN "pergunta" ;
|
||||||
radio_N = mkN "rádio" ;
|
radio_N = mkN "rádio" ;
|
||||||
rain_N = mkN "chuva" ;
|
rain_N = mkN "chuva" ;
|
||||||
reason_N = mkN "razão" ;
|
reason_N = mkN "razão" feminine ;
|
||||||
religion_N = mkN "religião" ;
|
religion_N = mkN "religião" ;
|
||||||
restaurant_N = mkN "restaurante" ;
|
restaurant_N = mkN "restaurante" ;
|
||||||
river_N = mkN "rio" ;
|
river_N = mkN "rio" ;
|
||||||
@@ -232,7 +232,7 @@ lin
|
|||||||
table_N = mkN "mesa" ;
|
table_N = mkN "mesa" ;
|
||||||
tail_N = mkN "rabo" ;
|
tail_N = mkN "rabo" ;
|
||||||
teacher_N = mkN "professor" ;
|
teacher_N = mkN "professor" ;
|
||||||
television_N = mkN "televisão" ;
|
television_N = mkN "televisão" feminine ;
|
||||||
tongue_N = mkN "língua" ;
|
tongue_N = mkN "língua" ;
|
||||||
tooth_N = mkN "dente" ;
|
tooth_N = mkN "dente" ;
|
||||||
train_N = mkN "trem" ;
|
train_N = mkN "trem" ;
|
||||||
@@ -278,7 +278,7 @@ lin
|
|||||||
hit_V2 = mkV2 (mkV "bater") ;
|
hit_V2 = mkV2 (mkV "bater") ;
|
||||||
hold_V2 = mkV2 have_V ;
|
hold_V2 = mkV2 have_V ;
|
||||||
hunt_V2 = mkV2 (mkV "caçar") ;
|
hunt_V2 = mkV2 (mkV "caçar") ;
|
||||||
kill_V2 = mkV2 (mkV "matar") ;
|
kill_V2 = mkV2 (mkV "matar" "morto") ;
|
||||||
know_V2 = mkV2 (mkV "conhecer") ;
|
know_V2 = mkV2 (mkV "conhecer") ;
|
||||||
learn_V2 = mkV2 (mkV "aprender") ;
|
learn_V2 = mkV2 (mkV "aprender") ;
|
||||||
leave_V2 = mkV2 (mkV "partir") ;
|
leave_V2 = mkV2 (mkV "partir") ;
|
||||||
@@ -301,7 +301,7 @@ lin
|
|||||||
squeeze_V2 = mkV2 (mkV "apertar") ;
|
squeeze_V2 = mkV2 (mkV "apertar") ;
|
||||||
stab_V2 = mkV2 (mkV (recear_Besch "esfaquear")) ;
|
stab_V2 = mkV2 (mkV (recear_Besch "esfaquear")) ;
|
||||||
suck_V2 = mkV2 (mkV "chupar") ;
|
suck_V2 = mkV2 (mkV "chupar") ;
|
||||||
switch8off_V2 = mkV2 (mkV "apagar") ;
|
switch8off_V2 = mkV2 (mkV "desligar") ;
|
||||||
switch8on_V2 = mkV2 (mkV "ligar") ; -- acender
|
switch8on_V2 = mkV2 (mkV "ligar") ; -- acender
|
||||||
teach_V2 = mkV2 (mkV "ensinar") ;
|
teach_V2 = mkV2 (mkV "ensinar") ;
|
||||||
throw_V2 = mkV2 (mkV "jogar") ;
|
throw_V2 = mkV2 (mkV "jogar") ;
|
||||||
|
|||||||
@@ -112,27 +112,27 @@ instance DiffSpa of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits,contractInf] = o
|
|||||||
|
|
||||||
infForm _ _ _ _ = True ;
|
infForm _ _ _ _ = True ;
|
||||||
|
|
||||||
mkImperative b p vp =
|
|
||||||
\\pol,g,n =>
|
|
||||||
let
|
|
||||||
pe = case b of {True => P3 ; _ => p} ;
|
|
||||||
agr = {g = g ; n = n ; p = pe} ;
|
|
||||||
refl = case vp.s.vtyp of {
|
|
||||||
VRefl => <reflPron n pe Acc,True> ;
|
|
||||||
_ => <[],False>
|
|
||||||
} ;
|
|
||||||
|
|
||||||
clpr = <vp.clit1 ++ vp.clit2, [],vp.clit3.hasClit> ;
|
mkImperative isPol p vp =
|
||||||
---- clpr = <[],[],False> ; ----e pronArg agr.n agr.p vp.clAcc vp.clDat ;
|
\\pol,g,n => case pol of {
|
||||||
----e verb = case <aag.n, pol,pe> of {
|
RPos => neg.p1 ++ imper ++ bindIf refl.isRefl ++ refl.pron
|
||||||
----e <Sg,Neg,P2> => (vp.s ! VPInfinit Simul clpr.p3).inf ! aag ;
|
++ bindIf hasClit ++ clit ++ compl ;
|
||||||
----e _ => (vp.s ! VPImperat).fin ! agr
|
RNeg _ => neg.p1 ++ refl.pron ++ clit ++ subj ++ compl
|
||||||
----e } ;
|
} where {
|
||||||
verb = vp.s.s ! vImper n pe ;
|
pe = case isPol of {True => P3 ; _ => p} ;
|
||||||
neg = vp.neg ! pol ;
|
refl = case vp.s.vtyp of {
|
||||||
compl = neg.p2 ++ clpr.p2 ++ vp.comp ! agr ++ vp.ext ! pol
|
VRefl => {pron = reflPron n pe Acc ; isRefl = True} ;
|
||||||
in
|
_ => {pron = [] ; isRefl = False}
|
||||||
neg.p1 ++ verb ++ bindIf refl.p2 ++ refl.p1 ++ bindIf clpr.p3 ++ clpr.p1 ++ compl ;
|
} ;
|
||||||
|
clit = vp.clit1 ++ vp.clit2 ;
|
||||||
|
hasClit = vp.clit3.hasClit ;
|
||||||
|
imper = vp.s.s ! vImper n pe ;
|
||||||
|
subj = vp.s.s ! VFin (VPres Conjunct) n pe ;
|
||||||
|
neg = vp.neg ! pol ;
|
||||||
|
agr = {g = g ; n = n ; p = pe} ;
|
||||||
|
compl = neg.p2 ++ vp.comp ! agr ++ vp.ext ! pol
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
CopulaType = Bool ;
|
CopulaType = Bool ;
|
||||||
selectCopula = \isEstar -> case isEstar of {True => estar_V ; False => copula} ;
|
selectCopula = \isEstar -> case isEstar of {True => estar_V ; False => copula} ;
|
||||||
|
|||||||
Reference in New Issue
Block a user