forked from GitHub/gf-rgl
(Romance) add lins
- add AdVVPSlash, AdvVPSlash, CountNP, PartNP - simplify opers using record extension - rm CountNP from NounPor
This commit is contained in:
@@ -1,11 +1,4 @@
|
||||
concrete NounPor of Noun = CatPor ** NounRomance with
|
||||
(ResRomance = ResPor) ** open Prelude, PhonoPor in {
|
||||
|
||||
lin
|
||||
-- not implemented for romance languages, maybe because it can't
|
||||
-- be done elegantly?
|
||||
CountNP det np = heavyNPpol np.isNeg
|
||||
{s = \\c => det.s ! np.a.g ! c ++ (np.s ! c).ton ;
|
||||
a = np.a ** {n = det.n} } ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -180,7 +180,14 @@ incomplete concrete NounRomance of Noun =
|
||||
g = cn.g ;
|
||||
} ;
|
||||
|
||||
-- PartNP and CounNP missing: how to define 'of' in the functor?
|
||||
PartNP cn np = {
|
||||
s = \\n => cn.s ! n ++ appCompl {s = [] ; c = genitive ; isDir = False} np ;
|
||||
g = cn.g ;
|
||||
} ;
|
||||
|
||||
CountNP det np = heavyNPpol np.isNeg
|
||||
{s = \\c => det.s ! np.a.g ! c ++ (np.s ! genitive).ton ;
|
||||
a = np.a ** {n = det.n} } ;
|
||||
|
||||
AdjDAP det ap = {
|
||||
s = \\g => det.s ! g ++ ap.s ! AF g det.n ;
|
||||
|
||||
@@ -77,7 +77,6 @@ oper
|
||||
|
||||
oper
|
||||
|
||||
|
||||
predV : Verb -> VP = \verb ->
|
||||
let
|
||||
typ = verb.vtyp ;
|
||||
@@ -111,16 +110,9 @@ oper
|
||||
ext = vp.ext ;
|
||||
} ;
|
||||
|
||||
insertComplement : (Agr => Str) -> VP -> VP = \co,vp -> {
|
||||
s = vp.s ;
|
||||
agr = vp.agr ;
|
||||
clit1 = vp.clit1 ;
|
||||
clit2 = vp.clit2 ;
|
||||
clit3 = vp.clit3 ;
|
||||
isNeg = vp.isNeg ; --- can be in compl as well
|
||||
neg = vp.neg ;
|
||||
insertComplement : (Agr => Str) -> VP -> VP ;
|
||||
insertComplement co vp = vp ** {
|
||||
comp = \\a => vp.comp ! a ++ co ! a ;
|
||||
ext = vp.ext ;
|
||||
} ;
|
||||
|
||||
|
||||
@@ -141,16 +133,10 @@ oper
|
||||
comp = \\a => vp.comp ! a ++ co ;
|
||||
} ;
|
||||
|
||||
insertAdV : Str -> VP -> VP = \co,vp -> {
|
||||
s = vp.s ;
|
||||
agr = vp.agr ;
|
||||
clit1 = vp.clit1 ;
|
||||
clit2 = vp.clit2 ;
|
||||
clit3 = vp.clit3 ;
|
||||
isNeg = vp.isNeg ;
|
||||
neg = \\b => let vpn = vp.neg ! b in {p1 = vpn.p1 ; p2 = vpn.p2 ++ co} ;
|
||||
comp = vp.comp ;
|
||||
ext = vp.ext ;
|
||||
insertAdV : Str -> VP -> VP ;
|
||||
insertAdV co vp = vp ** {
|
||||
neg = \\b => let vpn = vp.neg ! b
|
||||
in {p1 = vpn.p1 ; p2 = vpn.p2 ++ co}
|
||||
} ;
|
||||
|
||||
insertClit3 : Str -> VP -> VP = \co,vp -> {
|
||||
|
||||
@@ -105,6 +105,10 @@ incomplete concrete VerbRomance of Verb =
|
||||
|
||||
AdVVP adv vp = insertAdV adv.s vp ;
|
||||
|
||||
AdvVPSlash vps adv = vps ** insertAdv adv.s vps ;
|
||||
|
||||
AdVVPSlash adv vps = vps ** insertAdV adv.s vps ;
|
||||
|
||||
PassV2 v = insertComplement
|
||||
(\\a => let agr = complAgr a in v.s ! VPart agr.g agr.n) (predV auxPassive) ;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user