forked from GitHub/gf-core
constructors PossNP, PartNP, CountNP to separete "of" constructions
This commit is contained in:
@@ -134,5 +134,15 @@ abstract Noun = Cat ** {
|
||||
|
||||
ApposCN : CN -> NP -> CN ; -- city Paris (, numbers x and y)
|
||||
|
||||
--2 Possessive and partitive constructs
|
||||
|
||||
-- (New 13/3/2013 AR; Structural.possess_Prep and part_Prep should be deprecated in favour of these.)
|
||||
|
||||
PossNP : CN -> NP -> CN ; -- house of Paris, house of mine
|
||||
PartNP : CN -> NP -> CN ; -- glass of wine
|
||||
|
||||
-- This is different from the partitive, as shown by many languages.
|
||||
|
||||
CountNP : Det -> NP -> NP ; -- three of them, some of the boys
|
||||
|
||||
}
|
||||
|
||||
@@ -42,20 +42,21 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
|
||||
} ;
|
||||
|
||||
DetQuantOrd quant num ord = {
|
||||
s = quant.s ! num.hasCard ! num.n ++ num.s ! Nom ++ ord.s ! Nom;
|
||||
s = quant.s ! num.hasCard ! num.n ++ num.s ! Nom ++ ord.s ! Nom;
|
||||
sp = \\c => quant.sp ! num.hasCard ! num.n ! npNom ++ num.s ! Nom ++ ord.s ! npcase2case c ;
|
||||
n = num.n ;
|
||||
hasNum = True
|
||||
} ;
|
||||
|
||||
DetNP det = {
|
||||
s = case det.hasNum of {True => \\_ => det.s ; _ => \\c => det.sp ! c} ;
|
||||
-- s = case det.hasNum of {True => \\_ => det.s ; _ => \\c => det.sp ! c} ;
|
||||
s = det.sp ;
|
||||
a = agrP3 det.n
|
||||
} ;
|
||||
|
||||
PossPron p = {
|
||||
s = \\_,_ => p.s ! NCase Gen ;
|
||||
sp = \\_,_,c => p.sp ! npcase2case c
|
||||
sp = \\_,_,c => p.sp ! Gen
|
||||
} ;
|
||||
|
||||
NumSg = {s = \\c => []; n = Sg ; hasCard = False} ;
|
||||
@@ -137,4 +138,13 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
|
||||
|
||||
ApposCN cn np = {s = \\n,c => cn.s ! n ! Nom ++ np.s ! NCase c ; g = cn.g} ;
|
||||
|
||||
PossNP cn np = {s = \\n,c => cn.s ! n ! c ++ "of" ++ np.s ! NPNomPoss ; g = cn.g} ;
|
||||
|
||||
PartNP cn np = {s = \\n,c => cn.s ! n ! c ++ "of" ++ np.s ! NPAcc ; g = cn.g} ;
|
||||
|
||||
CountNP det np = {
|
||||
s = \\c => det.sp ! c ++ "of" ++ np.s ! NPAcc ;
|
||||
a = agrP3 det.n
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user