forked from GitHub/gf-rgl
@@ -25,7 +25,7 @@ concrete IdiomAra of Idiom = CatAra ** open
|
|||||||
CleftAdv adv s =
|
CleftAdv adv s =
|
||||||
let comp : Comp = CompAdv (lin Adv {s = adv.s ++ s.s ! Verbal}) ; -- no idea about word order /IL
|
let comp : Comp = CompAdv (lin Adv {s = adv.s ++ s.s ! Verbal}) ; -- no idea about word order /IL
|
||||||
pass_V = mkV "مضي" va vi ; -- switch to copula or some other verb if better /IL
|
pass_V = mkV "مضي" va vi ; -- switch to copula or some other verb if better /IL
|
||||||
in predVP emptyNP (UseV pass_V ** {isPred=True ; pred=comp}) ; -- very hacky /IL
|
in predVP emptyNP (UseV pass_V ** {vtype=Copula ; pred=comp}) ; -- very hacky /IL
|
||||||
|
|
||||||
-- : NP -> Cl ; -- there is a house
|
-- : NP -> Cl ; -- there is a house
|
||||||
ExistNP np =
|
ExistNP np =
|
||||||
|
|||||||
@@ -47,7 +47,14 @@ lin
|
|||||||
|
|
||||||
UsePron p = p ;
|
UsePron p = p ;
|
||||||
|
|
||||||
DetNP det = emptyNP ** {s = det.s ! NoHum ! Masc} ; ----
|
DetNP det = case det.isEmpty of {
|
||||||
|
True => case <det.d,det.n> of { -- if the s field is empty, make up some other determiner
|
||||||
|
<Def,One> => he_Pron ;
|
||||||
|
<Def,_> => theyMasc_Pron ;
|
||||||
|
<Indef,One> => emptyNP ** {s = someSg_Det.s ! NoHum ! Masc} ;
|
||||||
|
_ => emptyNP ** {s = somePl_Det.s ! NoHum ! Masc}
|
||||||
|
} ;
|
||||||
|
False => emptyNP ** {s = det.s ! NoHum ! Masc} } ;
|
||||||
|
|
||||||
PredetNP det np = np ** {
|
PredetNP det np = np ** {
|
||||||
s = \\c => case det.isDecl of {
|
s = \\c => case det.isDecl of {
|
||||||
@@ -75,7 +82,7 @@ lin
|
|||||||
|
|
||||||
DetQuantOrd quant num ord = quant ** {
|
DetQuantOrd quant num ord = quant ** {
|
||||||
s = \\h,g,c => let d = toDef quant.d num.n in
|
s = \\h,g,c => let d = toDef quant.d num.n in
|
||||||
quant.s ! Pl ! h ! g ! c
|
quant.s ! Pl ! h ! g ! c -- TODO what is this Pl? Was there when I started /IL
|
||||||
++ num.s ! g ! d ! c
|
++ num.s ! g ! d ! c
|
||||||
--FIXME check this:
|
--FIXME check this:
|
||||||
++ ord.s ! g
|
++ ord.s ! g
|
||||||
|
|||||||
@@ -657,32 +657,12 @@ resource ParadigmsAra = open
|
|||||||
|
|
||||||
|
|
||||||
mkQuant7 : (_,_,_,_,_,_,_ : Str) -> State -> Quant =
|
mkQuant7 : (_,_,_,_,_,_,_ : Str) -> State -> Quant =
|
||||||
\hava,havihi,havAn,havayn,hAtAn,hAtayn,hA'ulA,det -> lin Quant (baseQuant **
|
\hava,havihi,havAn,havayn,hAtAn,hAtayn,hA'ulA,det ->
|
||||||
{ s = \\n,s,g,c =>
|
lin Quant (ResAra.mkQuant7 hava havihi havAn havayn hAtAn hAtayn hA'ulA det) ;
|
||||||
case <s,g,c,n> of {
|
|
||||||
<_,Masc,_,Sg> => hava;
|
|
||||||
<_,Fem,_,Sg> => havihi;
|
|
||||||
<_,Masc,Nom,Dl>=> havAn;
|
|
||||||
<_,Masc,_,Dl> => havayn;
|
|
||||||
<_,Fem,Nom,Dl> => hAtAn;
|
|
||||||
<_,Fem,_,Dl> => hAtayn;
|
|
||||||
<Hum,_,_,Pl> => hA'ulA;
|
|
||||||
_ => havihi
|
|
||||||
};
|
|
||||||
d = det
|
|
||||||
});
|
|
||||||
|
|
||||||
mkQuant3 : (_,_,_ : Str) -> State -> Quant =
|
mkQuant3 : (_,_,_ : Str) -> State -> Quant =
|
||||||
\dalika,tilka,ula'ika,det -> lin Quant (baseQuant **
|
\dalika,tilka,ula'ika,det ->
|
||||||
{ s = \\n,s,g,c =>
|
lin Quant (ResAra.mkQuant3 dalika tilka ula'ika det) ;
|
||||||
case <s,g,c,n> of {
|
|
||||||
<_,Masc,_,Sg> => dalika;
|
|
||||||
<_,Fem,_,Sg> => tilka;
|
|
||||||
<Hum,_,_,_> => ula'ika;
|
|
||||||
_ => tilka
|
|
||||||
};
|
|
||||||
d = det
|
|
||||||
});
|
|
||||||
|
|
||||||
brkA : (root,sg,pl : Str) -> Adj -- also broken feminine
|
brkA : (root,sg,pl : Str) -> Adj -- also broken feminine
|
||||||
= brkABool False ;
|
= brkABool False ;
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ lin
|
|||||||
|
|
||||||
-- : IP -> VP -> QCl ; -- who walks
|
-- : IP -> VP -> QCl ; -- who walks
|
||||||
QuestVP qp vp =
|
QuestVP qp vp =
|
||||||
let np = ip2np qp vp.isPred ;
|
let np = ip2np qp (case vp.vtype of {Copula=>True ; _=>False}) ;
|
||||||
cl = PredVP np vp ;
|
cl = PredVP np vp ;
|
||||||
in { s = \\t,p,qf => cl.s ! t ! p ! toOrder qf } ;
|
in { s = \\t,p,qf => cl.s ! t ! p ! toOrder qf } ;
|
||||||
|
|
||||||
|
|||||||
@@ -61,6 +61,37 @@ oper
|
|||||||
is1sg : Agr -> Bool = \a ->
|
is1sg : Agr -> Bool = \a ->
|
||||||
case a.pgn of {Per1 Sing => True; _ => False} ;
|
case a.pgn of {Per1 Sing => True; _ => False} ;
|
||||||
|
|
||||||
|
someSg_Det = mkDet "أَحَد" Sg Const ;
|
||||||
|
somePl_Det = mkDet "بَعض" Pl Const ;
|
||||||
|
|
||||||
|
mkQuant7 : (_,_,_,_,_,_,_ : Str) -> State -> Quant =
|
||||||
|
\hava,havihi,havAn,havayn,hAtAn,hAtayn,hA'ulA,det -> lin Quant (baseQuant **
|
||||||
|
{ s = \\n,s,g,c =>
|
||||||
|
case <s,g,c,n> of {
|
||||||
|
<_,Masc,_,Sg> => hava;
|
||||||
|
<_,Fem,_,Sg> => havihi;
|
||||||
|
<_,Masc,Nom,Dl>=> havAn;
|
||||||
|
<_,Masc,_,Dl> => havayn;
|
||||||
|
<_,Fem,Nom,Dl> => hAtAn;
|
||||||
|
<_,Fem,_,Dl> => hAtayn;
|
||||||
|
<Hum,_,_,Pl> => hA'ulA;
|
||||||
|
_ => havihi
|
||||||
|
};
|
||||||
|
d = det
|
||||||
|
});
|
||||||
|
|
||||||
|
mkQuant3 : (_,_,_ : Str) -> State -> Quant =
|
||||||
|
\dalika,tilka,ula'ika,det -> lin Quant (baseQuant **
|
||||||
|
{ s = \\n,s,g,c =>
|
||||||
|
case <s,g,c,n> of {
|
||||||
|
<_,Masc,_,Sg> => dalika;
|
||||||
|
<_,Fem,_,Sg> => tilka;
|
||||||
|
<Hum,_,_,_> => ula'ika;
|
||||||
|
_ => tilka
|
||||||
|
};
|
||||||
|
d = det
|
||||||
|
});
|
||||||
|
|
||||||
mkDet = overload {
|
mkDet = overload {
|
||||||
mkDet : Str -> Number -> State -> Det
|
mkDet : Str -> Number -> State -> Det
|
||||||
= mkDetDecl True ;
|
= mkDetDecl True ;
|
||||||
@@ -438,19 +469,25 @@ param
|
|||||||
| VPImp
|
| VPImp
|
||||||
| VPGer ;
|
| VPGer ;
|
||||||
|
|
||||||
|
VType = -- indicates if there is a predicate (xabar):
|
||||||
|
Copula -- 1) disappears in equational sentences
|
||||||
|
-- 2) its argument ('xabar') is in the pred field
|
||||||
|
-- 3) it is negated with laysa
|
||||||
|
| Have -- stays in eq. sentence, argument is in obj field, but is negated with laysa.
|
||||||
|
| NotPred ; -- any other verb but copula and have_V2
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
BaseVP : Type = { -- to minimise duplication of code for VPS
|
BaseVP : Type = { -- to minimise duplication of code for VPS
|
||||||
sc : Preposition ; -- subject case: e.g. يُمْكِنُ *لِ*Xِ
|
sc : Preposition ; -- subject case: e.g. يُمْكِنُ *لِ*Xِ
|
||||||
obj : Obj;
|
obj : Obj;
|
||||||
pred : Comp;
|
pred : Comp;
|
||||||
isPred : Bool; -- indicates if there is a predicate (xabar)
|
vtype : VType ; -- copula, have_V2 or normal verb
|
||||||
s2 : Str
|
s2 : Str
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
VP : Type = BaseVP ** {
|
VP : Type = BaseVP ** {
|
||||||
s : PerGenNum => VPForm => Str ;
|
s : PerGenNum => VPForm => Str ;
|
||||||
isPoss : Bool; -- special case for have_V2, to get negation right /IL
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
uttVP : VPForm -> VP -> (Gender=>Str) = \vpf,vp ->
|
uttVP : VPForm -> VP -> (Gender=>Str) = \vpf,vp ->
|
||||||
@@ -471,7 +508,7 @@ oper
|
|||||||
obj = emptyObj ;
|
obj = emptyObj ;
|
||||||
s2 = [];
|
s2 = [];
|
||||||
pred = {s = \\_,_ => []} ;
|
pred = {s = \\_,_ => []} ;
|
||||||
isPred,isPoss = False
|
vtype = NotPred
|
||||||
};
|
};
|
||||||
|
|
||||||
passPredV : Verb -> VP = \v ->
|
passPredV : Verb -> VP = \v ->
|
||||||
@@ -512,18 +549,18 @@ oper
|
|||||||
|
|
||||||
bindIf : Bool -> Str = \b -> if_then_Str b BIND [] ;
|
bindIf : Bool -> Str = \b -> if_then_Str b BIND [] ;
|
||||||
|
|
||||||
bindIfPron : NP -> {c2:Preposition; isPred:Bool} -> Str = \np,vp ->
|
bindIfPron : NP -> {c2:Preposition; vtype:VType} -> Str = \np,vp ->
|
||||||
let notNom : Case -> Bool = \c -> case c of {Nom => False; _=>True} ;
|
let notNom : Case -> Bool = \c -> case c of {Nom => False; _=>True} ;
|
||||||
bind = case vp.isPred of {
|
bind = case vp.vtype of {
|
||||||
False => bindIf (
|
Copula => [] ;
|
||||||
orB (andB np.a.isPron (notNom vp.c2.c)) --if np is pron, not in nominative
|
_ => bindIf (orB (andB np.a.isPron (notNom vp.c2.c)) --if np is pron, not in nominative
|
||||||
vp.c2.binds) ;
|
vp.c2.binds)
|
||||||
True => [] }
|
}
|
||||||
in vp.c2.s ++ bind ++ np.s ! vp.c2.c ;
|
in vp.c2.s ++ bind ++ np.s ! vp.c2.c ;
|
||||||
|
|
||||||
insertPred : Comp -> VP -> VP = \p,vp -> vp **
|
insertPred : Comp -> VP -> VP = \p,vp -> vp **
|
||||||
{ pred = p;
|
{ pred = p;
|
||||||
isPred = True
|
vtype = Copula
|
||||||
};
|
};
|
||||||
|
|
||||||
insertStr : Str -> VP -> VP = \str,vp -> vp **
|
insertStr : Str -> VP -> VP = \str,vp -> vp **
|
||||||
@@ -553,9 +590,9 @@ oper
|
|||||||
_ => vp.sc }
|
_ => vp.sc }
|
||||||
} ;
|
} ;
|
||||||
subj = np.empty ++ sc.s ++ bindIf sc.binds
|
subj = np.empty ++ sc.s ++ bindIf sc.binds
|
||||||
++ case vp.isPred of {
|
++ case vp.vtype of {
|
||||||
False => (proDrop np).s ! sc.c ; -- prodrop if it's not predicative
|
Copula => np.s ! sc.c ;
|
||||||
True => np.s ! sc.c
|
_ => (proDrop np).s ! sc.c -- prodrop if it's not predicative
|
||||||
} ;
|
} ;
|
||||||
in wordOrder o
|
in wordOrder o
|
||||||
vp.obj.a.isPron np.a.isPron np.isHeavy
|
vp.obj.a.isPron np.a.isPron np.isHeavy
|
||||||
@@ -600,9 +637,9 @@ oper
|
|||||||
|
|
||||||
pred : VP -> PerGenNum -> ParamX.Tense -> Polarity -> Str = \vp,pgn,tn,pl ->
|
pred : VP -> PerGenNum -> ParamX.Tense -> Polarity -> Str = \vp,pgn,tn,pl ->
|
||||||
let gn = pgn2gn pgn
|
let gn = pgn2gn pgn
|
||||||
in case <vp.isPred,tn,pl> of {
|
in case <vp.vtype,tn,pl> of {
|
||||||
<True, Pres, Pos> => vp.pred.s ! gn ! Nom; --xabar marfooc
|
<Copula, Pres, Pos> => vp.pred.s ! gn ! Nom; --xabar marfooc
|
||||||
_ => 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 -> Order -> Str = \vp,pgn,tn,pl,o ->
|
vStr : VP -> PerGenNum -> ParamX.Tense -> Polarity -> Order -> Str = \vp,pgn,tn,pl,o ->
|
||||||
@@ -615,12 +652,12 @@ oper
|
|||||||
lam = "لَمْ" ; -- neg. past
|
lam = "لَمْ" ; -- neg. past
|
||||||
alla = "أَلَّا" ; -- neg. subjunctive
|
alla = "أَلَّا" ; -- neg. subjunctive
|
||||||
lan = "لَنْ" ; -- neg. future
|
lan = "لَنْ" ; -- neg. future
|
||||||
in case <vp.isPred,tn,pl,o,vp.isPoss> of {
|
in case <vp.vtype,tn,pl,o> of {
|
||||||
<False, Pres, Neg, _, True> => laysa ! Per3 Masc Sg ++ yaktubu ; -- special case for have_V2
|
<Have, Pres, Neg, _,> => laysa ! Per3 Masc Sg ++ yaktubu ; -- special case for have_V2
|
||||||
<False, Pres, Pos, _> => yaktubu ;
|
<Copula, Pres, Pos, _> => [] ; --no verb "to be" in present
|
||||||
<False, Pres, Neg, _> => la ++ yaktubu ;
|
<Copula, Pres, Neg, _> => laysa ! pgn ; -- negative copula
|
||||||
<True, Pres, Pos, _> => [] ; --no verb "to be" in present
|
<_, Pres, Pos, _> => yaktubu ;
|
||||||
<True, Pres, Neg, _> => laysa ! pgn ; -- negative copula
|
<_, Pres, Neg, _> => la ++ yaktubu ;
|
||||||
<_, Past, Pos, _> => kataba ;
|
<_, Past, Pos, _> => kataba ;
|
||||||
<_, Past, Neg, _> => lam ++ yaktub ;
|
<_, Past, Neg, _> => lam ++ yaktub ;
|
||||||
<_, Cond, Pos, _> => yaktuba ;
|
<_, Cond, Pos, _> => yaktuba ;
|
||||||
@@ -651,9 +688,9 @@ oper
|
|||||||
slashV2 : Verb2 -> VPSlash = \v ->
|
slashV2 : Verb2 -> VPSlash = \v ->
|
||||||
predV v ** {
|
predV v ** {
|
||||||
c2 = v.c2 ; agrObj = \\_ => [] ;
|
c2 = v.c2 ; agrObj = \\_ => [] ;
|
||||||
isPoss = case v.c2.c of {
|
vtype = case v.c2.c of {
|
||||||
Nom => True ; -- for have_V2
|
Nom => Have ; -- for have_V2
|
||||||
_ => False } ;
|
_ => NotPred } ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Add subject string, fix agreement to the subject,
|
-- Add subject string, fix agreement to the subject,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
concrete StructuralAra of Structural = CatAra **
|
concrete StructuralAra of Structural = CatAra **
|
||||||
open MorphoAra, ResAra, ParadigmsAra, Prelude in {
|
open MorphoAra, ResAra, ParadigmsAra, (N=NounAra), Prelude in {
|
||||||
|
|
||||||
flags optimize=all ; coding=utf8 ;
|
flags optimize=all ; coding=utf8 ;
|
||||||
|
|
||||||
@@ -47,10 +47,11 @@ concrete StructuralAra of Structural = CatAra **
|
|||||||
} ; -- IL
|
} ; -- IL
|
||||||
how8much_IAdv = ss "كَمْ" ;
|
how8much_IAdv = ss "كَمْ" ;
|
||||||
if_Subj = mkSubj "إِذَا" Verbal ;
|
if_Subj = mkSubj "إِذَا" Verbal ;
|
||||||
|
--whether_Subj = mkSubj "مَا إِذَا" Verbal ;
|
||||||
in8front_Prep = mkPrep "مُقَابِلَ" ;
|
in8front_Prep = mkPrep "مُقَابِلَ" ;
|
||||||
i_Pron = ResAra.i_Pron ;
|
i_Pron = ResAra.i_Pron ;
|
||||||
in_Prep = mkPrep "فِي" ;
|
in_Prep = mkPrep "فِي" ;
|
||||||
it_Pron = emptyNP ** {s = \\_ => "هَذَا"} ; -- was: it_Pron = mkPron "ِت" "ِت" "ِتس" (Per3 Masc Sg);
|
it_Pron = N.DetNP (N.DetQuant this_Quant N.NumSg) ; -- was: it_Pron = mkPron "ِت" "ِت" "ِتس" (Per3 Masc Sg);
|
||||||
-- less_CAdv = ss "لسّ" ;
|
-- less_CAdv = ss "لسّ" ;
|
||||||
many_Det = mkDet "جَمِيع" Pl Const ;
|
many_Det = mkDet "جَمِيع" Pl Const ;
|
||||||
-- more_CAdv = ss "مْري" ;
|
-- more_CAdv = ss "مْري" ;
|
||||||
@@ -74,8 +75,8 @@ concrete StructuralAra of Structural = CatAra **
|
|||||||
she_Pron = ResAra.she_Pron ;
|
she_Pron = ResAra.she_Pron ;
|
||||||
so_AdA = very_AdA ;
|
so_AdA = very_AdA ;
|
||||||
somebody_NP = regNP "أَحَد" Sg Indef ;
|
somebody_NP = regNP "أَحَد" Sg Indef ;
|
||||||
someSg_Det = mkDet "أَحَد" Sg Const ;
|
someSg_Det = ResAra.someSg_Det ;
|
||||||
somePl_Det = mkDet "بَعض" Pl Const ;
|
somePl_Det = ResAra.somePl_Det ;
|
||||||
something_NP = regNP "شَيْء" Sg Indef ;
|
something_NP = regNP "شَيْء" Sg Indef ;
|
||||||
-- somewhere_Adv = ss "سْموهري" ;
|
-- somewhere_Adv = ss "سْموهري" ;
|
||||||
that_Quant = mkQuant3 "ذَلِكَ" "تِلكَ" "أُلٱِكَ" Def;
|
that_Quant = mkQuant3 "ذَلِكَ" "تِلكَ" "أُلٱِكَ" Def;
|
||||||
@@ -87,7 +88,7 @@ concrete StructuralAra of Structural = CatAra **
|
|||||||
-- therefore_PConj = ss "تهرفْري" ;
|
-- therefore_PConj = ss "تهرفْري" ;
|
||||||
----b these_NP = indeclNP "هَؤُلَاء" Pl ;
|
----b these_NP = indeclNP "هَؤُلَاء" Pl ;
|
||||||
they_Pron = theyMasc_Pron ;
|
they_Pron = theyMasc_Pron ;
|
||||||
this_Quant = mkQuant7 "هَذا" "هَذِهِ" "هَذَان" "هَذَيْن" "هَاتَان" "هَاتَيْن" "هَؤُلَاء" Def;
|
this_Quant = mkQuant7 "هَذَا" "هَذِهِ" "هَذَان" "هَذَيْن" "هَاتَان" "هَاتَيْن" "هَؤُلَاء" Def ;
|
||||||
----b this_NP = indeclNP "هَذا" Sg ;
|
----b this_NP = indeclNP "هَذا" Sg ;
|
||||||
----b those_NP = indeclNP "هَؤُلَاءكَ" Pl ;
|
----b those_NP = indeclNP "هَؤُلَاءكَ" Pl ;
|
||||||
through_Prep = mkPrep "عَبْرَ" ;
|
through_Prep = mkPrep "عَبْرَ" ;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra, ParamX in {
|
|||||||
++ vp.s ! pgn ! VPImpf Cnj -- this will agree with the object added by ComplSlash
|
++ vp.s ! pgn ! VPImpf Cnj -- this will agree with the object added by ComplSlash
|
||||||
++ vp.obj.s ;
|
++ vp.obj.s ;
|
||||||
obj = emptyObj ;
|
obj = emptyObj ;
|
||||||
isPred = False ;
|
vtype = NotPred ;
|
||||||
c2 = v2v.c2 ; -- preposition for the direct object
|
c2 = v2v.c2 ; -- preposition for the direct object
|
||||||
sc = v2v.sc
|
sc = v2v.sc
|
||||||
} ;
|
} ;
|
||||||
@@ -30,7 +30,7 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra, ParamX in {
|
|||||||
++ vps.s ! np.a.pgn ! VPImpf Cnj -- verb from old VP agrees with object
|
++ vps.s ! np.a.pgn ! VPImpf Cnj -- verb from old VP agrees with object
|
||||||
++ vps.obj.s ; -- otherwise obj appears in a weird place /IL
|
++ vps.obj.s ; -- otherwise obj appears in a weird place /IL
|
||||||
obj = emptyObj ;
|
obj = emptyObj ;
|
||||||
isPred = False ;
|
vtype = NotPred ;
|
||||||
-- preposition for the direct object comes from VP
|
-- preposition for the direct object comes from VP
|
||||||
sc = v2v.sc
|
sc = v2v.sc
|
||||||
} ;
|
} ;
|
||||||
@@ -68,7 +68,7 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra, ParamX in {
|
|||||||
s = \\pgn,vpf => vvVP.s ! pgn ! vpf
|
s = \\pgn,vpf => vvVP.s ! pgn ! vpf
|
||||||
++ vv.s2 -- أَنْ
|
++ vv.s2 -- أَنْ
|
||||||
++ vp.s ! pgn ! VPImpf Cnj ;
|
++ vp.s ! pgn ! VPImpf Cnj ;
|
||||||
isPred = False ;
|
vtype = NotPred ;
|
||||||
sc = vv.sc
|
sc = vv.sc
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra, ParamX in {
|
|||||||
UseComp xabar =
|
UseComp xabar =
|
||||||
case xabar.isNP of {
|
case xabar.isNP of {
|
||||||
False => kaan xabar ;
|
False => kaan xabar ;
|
||||||
True => predV copula ** {obj = xabar.obj ; isPred=True}
|
True => predV copula ** {obj = xabar.obj ; vtype=Copula}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
UseCopula = predV copula ;
|
UseCopula = predV copula ;
|
||||||
@@ -100,7 +100,7 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra, ParamX in {
|
|||||||
-- : VP -> Prep -> VPSlash ; -- live in (it)
|
-- : VP -> Prep -> VPSlash ; -- live in (it)
|
||||||
VPSlashPrep vp prep = vp ** {
|
VPSlashPrep vp prep = vp ** {
|
||||||
c2 = prep ;
|
c2 = prep ;
|
||||||
agrObj = \\_ => []
|
agrObj = \\_ => [] -- to make it into VPSlash, VP didn't have that field before
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
AdvVP vp adv = insertStr adv.s vp ;
|
AdvVP vp adv = insertStr adv.s vp ;
|
||||||
@@ -111,9 +111,11 @@ concrete VerbAra of Verb = CatAra ** open Prelude, ResAra, ParamX in {
|
|||||||
-- : VPSlash -> VP ; -- love himself
|
-- : VPSlash -> VP ; -- love himself
|
||||||
ReflVP vps = vps ** {
|
ReflVP vps = vps ** {
|
||||||
s = \\pgn,vf => vps.s ! pgn ! vf
|
s = \\pgn,vf => vps.s ! pgn ! vf
|
||||||
|
++ vps.obj.s -- only relevant if the VPSlash has been through VPSlashPrep
|
||||||
++ vps.c2.s ++ bindIf vps.c2.binds
|
++ vps.c2.s ++ bindIf vps.c2.binds
|
||||||
++ reflPron vps.c2.c pgn ;
|
++ reflPron vps.c2.c pgn ;
|
||||||
c2 = noPrep
|
c2 = accPrep ;
|
||||||
|
obj = emptyObj ; -- because old obj was moved in s
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
PassV2 = passPredV ;
|
PassV2 = passPredV ;
|
||||||
|
|||||||
Reference in New Issue
Block a user