1
0
forked from GitHub/gf-rgl

(Ara) Fixes in negations

This commit is contained in:
Inari Listenmaa
2018-11-28 13:55:34 +01:00
parent 01c83a8437
commit a7c471214b
3 changed files with 29 additions and 17 deletions

View File

@@ -39,7 +39,7 @@ concrete ExtendAra of Extend =
wordOrderNoSubj wordOrderNoSubj
Nominal -- Nominal (=SVO) generalises best for ConjVPS. Nominal -- Nominal (=SVO) generalises best for ConjVPS.
vp.obj.a.isPron vp.obj.a.isPron
(vStr vp pgn t.t p.p) (vStr vp pgn t.t p.p Nominal)
(case <vp.isPred,vp.obj.a.isPron> of { (case <vp.isPred,vp.obj.a.isPron> of {
<False,True> => BIND ++ vp.obj.s ; <False,True> => BIND ++ vp.obj.s ;
_ => vp.obj.s }) _ => vp.obj.s })

View File

@@ -1534,9 +1534,13 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
<Verbal, False> => verbalAgr np.a.pgn; <Verbal, False> => verbalAgr np.a.pgn;
_ => np.a.pgn _ => np.a.pgn
}; };
sc : Preposition = case o of { -- very unsure of this /IL
Subord => {s=[]; c=Acc} ; -- to prevent weird stuff with VVs -- very unsure about this /IL
_ => case np.a.isPron of {True => noPrep; _ => vp.sc} sc : Preposition = case o of {
Subord => {s=[]; c=Acc} ;
_ => case np.a.isPron of {
True => noPrep ; -- to prevent weird stuff with VVs, might be overly specific
_ => vp.sc }
} ; } ;
subj = np.empty ++ sc.s subj = np.empty ++ sc.s
++ case vp.isPred of { ++ case vp.isPred of {
@@ -1545,7 +1549,7 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
} ; } ;
} in wordOrder o } in wordOrder o
vp.obj.a.isPron np.a.isPron vp.obj.a.isPron np.a.isPron
(vStr vp pgn t p) (vStr vp pgn t p o)
vp.obj.s vp.obj.s
(pred vp pgn t p) (pred vp pgn t p)
vp.s2 vp.s2
@@ -1581,21 +1585,29 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
_ => vp.pred.s ! gn ! Acc --xabar kaana wa laysa manSoob _ => vp.pred.s ! gn ! Acc --xabar kaana wa laysa manSoob
} ; } ;
vStr : VP -> PerGenNum -> ParamX.Tense -> Polarity -> Str = \vp,pgn,tn,pl -> vStr : VP -> PerGenNum -> ParamX.Tense -> Polarity -> Order -> Str = \vp,pgn,tn,pl,o ->
let kataba = vp.s ! pgn ! VPPerf ; let kataba = vp.s ! pgn ! VPPerf ;
yaktubu = vp.s ! pgn ! VPImpf Ind ; yaktubu = vp.s ! pgn ! VPImpf Ind ;
yaktuba = vp.s ! pgn ! VPImpf Cnj ; yaktuba = vp.s ! pgn ! VPImpf Cnj ;
yaktub = vp.s ! pgn ! VPImpf Jus ; yaktub = vp.s ! pgn ! VPImpf Jus ;
in case <vp.isPred,tn,pl> of { -- Various negative particles
<False, Pres, Pos> => yaktubu ; la = "لَا" ;
<False, Pres, Neg> => "لَا" ++ yaktubu ; laysa = "لَيسَ" ; -- "neg. copula"
<True, Pres, Pos> => "" ; --no verb "to be" in present lam = "لَمْ" ; -- neg. past
<True, Pres, Neg> => "لَيسَ" ;--same here, just add negation particle alla = "أَلَّا" ; -- neg. subjunctive
<_, Past, Pos> => kataba ; lan = "لَنْ" ; -- neg. future
<_, Past, Neg> => "لَمْ" ++ yaktub ; in case <vp.isPred,tn,pl,o> of {
<_, Cond, _ > => yaktuba ; <False, Pres, Pos, _> => yaktubu ;
<_, Fut, Pos> => glue "سَ" yaktubu ; <False, Pres, Neg, _> => la ++ yaktubu ;
<_, Fut, Neg> => "لَنْ" ++ yaktuba <True, Pres, Pos, _> => [] ; --no verb "to be" in present
<True, Pres, Neg, _> => laysa ; --same here, just add negation particle
<_, Past, Pos, _> => kataba ;
<_, Past, Neg, _> => lam ++ yaktub ;
<_, Cond, Pos, _> => yaktuba ;
<_, Cond, Neg, _> => alla ++ yaktuba ;
<_, Fut, Pos, _> => glue "سَ" yaktubu ;
<_, Fut, Neg, Subord> => alla ++ yaktuba ; -- might be too specific for just one case /IL
<_, Fut, Neg, _> => lan ++ yaktuba
} ; } ;
-- in verbal sentences, the verb agrees with the subject -- in verbal sentences, the verb agrees with the subject

View File

@@ -12,7 +12,7 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra, ParamX in {
vp ** { vp ** {
s = v2vVP.s ; s = v2vVP.s ;
agrObj = \\pgn => v2v.c3.s -- أَنْ agrObj = \\pgn => v2v.c3.s -- أَنْ
++ vp.s ! pgn ! VPImpf Cnj ; ++ vp.s ! pgn ! VPImpf Cnj ; -- this will agree with the object added by ComplSlash
isPred = False ; isPred = False ;
c2 = v2v.c2 ; -- preposition for the direct object c2 = v2v.c2 ; -- preposition for the direct object
sc = v2v.sc sc = v2v.sc