Merge pull request #159 from odanoburu/iberic-neg-imp

(Cat,Por,Spa) Iberic imperative
This commit is contained in:
Inari Listenmaa
2019-02-06 15:23:34 +01:00
committed by GitHub
5 changed files with 71 additions and 64 deletions

View File

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

View File

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

View File

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

View File

@@ -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") ;

View File

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