(Pes) WIP: more fine-grained rules about definiteness in NPs

This commit is contained in:
Inari Listenmaa
2019-05-23 14:07:34 +02:00
parent ecd686df78
commit ec4dac68d0
4 changed files with 14 additions and 8 deletions

View File

@@ -135,7 +135,8 @@ oper
--------------------
BaseQuant : Type = {
mod : Mod ;
isNeg : Bool
isNeg : Bool ;
isDef : Bool
} ;
Determiner : Type = BaseQuant ** {
@@ -146,13 +147,13 @@ oper
} ;
Quant : Type = BaseQuant ** {
s : Number => CmpdStatus => Str ;
isDef : Bool } ;
s : Number => CmpdStatus => Str} ;
makeDet : Str -> Number -> (isNum, isNeg : Bool) -> Determiner = \str,n,isNum,isNeg -> {
s,sp = str;
isNum = isNum;
isNum = isNum ;
isNeg = isNeg ;
isDef = True ;
mod = Bare ;
n = n
};

View File

@@ -19,6 +19,7 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
Clitic => detStr ++ cn.s ! num ! Clitic ++ cn.compl ! det.n ; -- In RGL this is only for no_Quant. If other determiners with different word order take Clitic, will change. /IL
x => cn.s ! num ! x ++ detStr ++ cn.compl ! det.n } ; -- Ezafe or Poss: comes after noun, Mod table is overwritten to the given form
a = agrP3 det.n ;
takesYeAsComp = False ; -- TODO: some rule with det.isDef and cn.hasAdj
isNeg = det.isNeg ; -- affects polarity in Cl: "*nothing is real" -> "nothing isn't real"
} ;
@@ -111,6 +112,7 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
MassNP cn = emptyNP ** cn ** {
s = \\m => cn.s ! Sg ! m ++ cn.compl ! Sg ;
a = agrP3 Sg ;
takesYeAsComp = cn.hasAdj ;
} ;
UseN,

View File

@@ -31,7 +31,7 @@ resource ResPes = MorphoPes ** open Prelude,Predef in {
BaseNP : Type = {
a : Agr ;
isNeg : Bool ; -- negative determiner forces negation in Cl and S
hasAdj : Bool ; -- to get the right form when NP is a predicate
takesYeAsComp : Bool ; -- to get the right form when NP is a predicate
animacy : Animacy ; -- to get the right pronoun in FunRP
isClitic : Bool ; -- if isPron, becomes clitic as a direct object
clitic : Str ;
@@ -44,7 +44,7 @@ resource ResPes = MorphoPes ** open Prelude,Predef in {
s = \\_ => [] ;
a = defaultAgr ;
isNeg = False ;
hasAdj = False ;
takesYeAsComp = False ;
animacy = Inanimate ;
isClitic = False ;
clitic = [] ;
@@ -207,7 +207,10 @@ oper
case <np.isClitic,vp.c2.isPrep> of {
<True,False> => [] ; -- clitic is attached to the verb or prefix
<True,True> => appCompVP vp.c2 (\\_ => BIND ++ np.clitic) ! wo ++ vp.comp ! a ! wo ;
_ => appCompVP vp.c2 np.s ! wo ++ vp.comp ! a ! wo
_ => let nps : Mod=>Str = np.s ;
-- case np.takesYeAsComp of { True => replaceBare Clitic np.s ; -- TODO: later make a better rule, related to definiteness, when NP takes a clitic.
-- _ => np.s } ;
in appCompVP vp.c2 nps ! wo ++ vp.comp ! a ! wo
} ;
s = case <np.isClitic,vp.c2.isPrep> of {

View File

@@ -73,7 +73,7 @@ concrete VerbPes of Verb = CatPes ** open ResPes,Prelude in {
} ;
CompNP np = {
s = \\a => np.s ! case np.hasAdj of {
s = \\a => np.s ! case np.takesYeAsComp of {
False => Bare ;
True => Clitic }
} ;