mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-28 01:18:57 -06:00
(Som) Make relational nouns into Prep w/ possPrep
This commit is contained in:
@@ -11,7 +11,22 @@ lin
|
||||
-- ComparAdvAdjS : CAdv -> A -> S -> Adv ; -- more warmly than he runs
|
||||
|
||||
-- : Prep -> NP -> Adv ;
|
||||
PrepNP prep np = prep ** {s = [] ; np = nplite np} ;
|
||||
PrepNP prep np = prep ** {
|
||||
s = [] ;
|
||||
np = case prep.c2 of { -- isPoss of {
|
||||
NoPrep => nplite emptyNP ; -- TODO check
|
||||
_ => nplite np } ;
|
||||
|
||||
dhex = case prep.c2 of {
|
||||
NoPrep => [] ;
|
||||
_ => prep.dhex ! Sg3 Masc } ;
|
||||
|
||||
miscAdv = case prep.c2 of {
|
||||
NoPrep => np.s ! Abs ++ prep.dhex ! np.a ;
|
||||
_ => [] }
|
||||
} ;
|
||||
--ResSom.Prep ** {c2 : Preposition ; berri, sii, dhex : Str} ;
|
||||
|
||||
|
||||
-- Adverbs can be modified by 'adadjectives', just like adjectives.
|
||||
|
||||
|
||||
@@ -84,7 +84,10 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
||||
-- Constructed in StructuralSom.
|
||||
Conj = {s2 : State => Str ; s1 : Str ; n : Number } ;
|
||||
Subj = SS ;
|
||||
Prep = ResSom.Prep ** {c2 : Preposition ; berri, sii, dhex : Str} ;
|
||||
Prep = ResSom.Prep ** {
|
||||
c2 : Preposition ;
|
||||
berri, sii, miscAdv : Str ;
|
||||
dhex : Agreement => Str } ;
|
||||
|
||||
|
||||
|
||||
@@ -121,6 +124,6 @@ linref
|
||||
-- Cl = linCl ;
|
||||
VP = linVP VInf ;
|
||||
CN = linCN ;
|
||||
Prep = \prep -> prep.s ! P3_Prep ++ prep.sii ++ prep.dhex ;
|
||||
Prep = \prep -> prep.s ! P3_Prep ++ prep.sii ++ prep.dhex ! Sg3 Masc ;
|
||||
S = \s -> linBaseCl (s.s ! False) ;
|
||||
}
|
||||
|
||||
@@ -64,13 +64,14 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
||||
True => glue predet.s det ;
|
||||
False => predet.s
|
||||
} ;
|
||||
in np ** {s = \\c =>
|
||||
case <np.isPron,predet.isPoss> of {
|
||||
<True,True> => np.empty ++ predetS ;
|
||||
_ => np.s ! c ++ predetS}
|
||||
in np ** {
|
||||
s = \\c =>
|
||||
case <np.isPron,predet.isPoss> of {
|
||||
<True,True> => np.empty ++ predetS ;
|
||||
_ => np.s ! c ++ predetS} ;
|
||||
isPron = False ; -- NP it loses its pronoun status when Predet is added
|
||||
} ;
|
||||
|
||||
|
||||
-- A noun phrase can also be postmodified by the past participle of a
|
||||
-- verb, by an adverb, or by a relative clause
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
resource ParadigmsSom = open CatSom, ResSom, ParamSom, Prelude in {
|
||||
resource ParadigmsSom = open CatSom, ResSom, ParamSom, NounSom, Prelude in {
|
||||
|
||||
oper
|
||||
|
||||
@@ -104,17 +104,19 @@ oper
|
||||
|
||||
mkPrep = overload {
|
||||
mkPrep : Str -> CatSom.Prep = \s ->
|
||||
lin Prep ((ResSom.mkPrep s s s s s s) ** {
|
||||
c2=noPrep ; sii,dhex,berri=[]}) ;
|
||||
emptyPrep ** (ResSom.mkPrep s s s s s s) ; -- ** {
|
||||
-- c2=noPrep ; sii,berri=[] ; dhex = \\_=> [] ; isPoss=False}) ;
|
||||
mkPrep : (x1,_,_,_,_,x6 : Str) -> CatSom.Prep = \a,b,c,d,e,f ->
|
||||
lin Prep ((ResSom.mkPrep a b c d e f) ** {
|
||||
c2=noPrep ; sii,dhex,berri=[]}) ;
|
||||
emptyPrep ** (ResSom.mkPrep a b c d e f) ; --
|
||||
-- c2=noPrep ; sii,berri=[] ; dhex = \\_=> [] ; isPoss=False}) ;
|
||||
mkPrep : Preposition -> CatSom.Prep = \p ->
|
||||
lin Prep ((prep p) ** {sii,dhex,berri=[]}) ;
|
||||
emptyPrep ** (prep p) ; -- ** {sii,berri=[] ; dhex = \\_=> [] ; isPoss=False}) ;
|
||||
mkPrep : CatSom.Prep -> (x1,x2,x3 : Str) -> CatSom.Prep = \p,s,t,u ->
|
||||
p ** {berri = s ; sii = t ; dhex = u} ;
|
||||
p ** {berri = s ; sii = t ; dhex = \\_ => u} ;
|
||||
} ;
|
||||
|
||||
possPrep : N -> CatSom.Prep ; -- Nouns like dhex that are used with possessive suffix to form adverbials
|
||||
|
||||
-- mkConj : (_,_ : Str) -> Number -> Conj = \s1,s2,num ->
|
||||
-- lin Conj { s = s1 ; s2 = s2 } ;
|
||||
|
||||
@@ -125,7 +127,7 @@ oper
|
||||
berri = s ;
|
||||
c2 = noPrep ;
|
||||
np = {s = [] ; a = P3_Prep} ;
|
||||
sii,dhex = []
|
||||
sii,dhex,miscAdv = []
|
||||
} ;
|
||||
|
||||
mkAdV : Str -> AdV = \s -> lin AdV {s = s} ;
|
||||
@@ -216,6 +218,22 @@ oper
|
||||
mkV3 : (sug : Str) -> (_,_ : Preposition) -> V3 = \s,p,q -> lin V3 (regV s ** {c2 = p ; c3 = q}) ;
|
||||
mkV3 : V -> (_,_ : Preposition) -> V2 = \v,p,q -> lin V3 (v ** {c2 = p ; c3 = q}) ;
|
||||
} ;
|
||||
|
||||
possPrep : N -> CatSom.Prep = \dhex -> emptyPrep ** {
|
||||
dhex = \\agr =>
|
||||
let qnt = PossPron (pronTable ! agr) ;
|
||||
num = getNum agr ;
|
||||
art = gda2da dhex.gda ! Sg ;
|
||||
det = qnt.s ! art ! Abs ; -- this includes BIND
|
||||
in dhex.s ! Def Sg ++ det
|
||||
} ;
|
||||
|
||||
emptyPrep : CatSom.Prep = lin Prep {
|
||||
sii,berri,miscAdv = [] ;
|
||||
dhex = \\_ => [] ;
|
||||
s = \\_ => [] ;
|
||||
c2 = noPrep ;
|
||||
} ;
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
}
|
||||
|
||||
@@ -672,7 +672,8 @@ oper
|
||||
BaseAdv : Type = {
|
||||
sii, -- sii, soo, wala, kada go inside VP.
|
||||
dhex, -- dhex, hoos, koor, dul, … go inside VP.
|
||||
berri : Str -- e.g. "tomorrow"; goes before VP.
|
||||
berri, -- AdV, e.g. "tomorrow"; goes before VP.
|
||||
miscAdv : Str -- dump for any other kind of adverbial.
|
||||
} ;
|
||||
|
||||
Adverb : Type = BaseAdv ** {
|
||||
@@ -690,8 +691,7 @@ oper
|
||||
obj2 : NPLite ; -- {s : Str ; a : PrepAgr}
|
||||
secObj : Str ; -- if two overt pronoun objects
|
||||
vComp : Str ; -- VV complement
|
||||
miscAdv : Str ; -- dump for any other kind of adverb, that isn't
|
||||
} ; -- in a closed class of particles or made with PrepNP.
|
||||
} ;
|
||||
|
||||
VPSlash : Type = VerbPhrase ;
|
||||
|
||||
@@ -772,13 +772,14 @@ oper
|
||||
_ => vp ** adv''
|
||||
}
|
||||
} where {
|
||||
adv' : {sii,dhex,berri : Str} = { -- adv.np done with insertComp
|
||||
adv' : {sii,dhex,berri,miscAdv : Str} = { -- adv.np done with insertComp
|
||||
sii = vp.sii ++ adv.sii ;
|
||||
dhex = vp.dhex ++ adv.dhex ;
|
||||
berri = vp.berri ++ adv.berri } ;
|
||||
berri = vp.berri ++ adv.berri ;
|
||||
miscAdv = vp.miscAdv ++ adv.miscAdv} ;
|
||||
adv'' : {sii,dhex,berri,miscAdv : Str} -- adv.np inserted into miscAdv
|
||||
= adv' ** {dhex = (prepTable ! adv.c2).s ! adv.np.a ++ adv.dhex ;
|
||||
miscAdv = adv.np.s}
|
||||
miscAdv = adv.miscAdv ++ adv.np.s}
|
||||
} ;
|
||||
--------------------------------------------------------------------------------
|
||||
-- Sentences etc.
|
||||
@@ -936,7 +937,8 @@ oper
|
||||
++ adv.sii
|
||||
++ (prepTable ! adv.c2).s ! adv.np.a
|
||||
++ adv.dhex
|
||||
++ adv.np.s ;
|
||||
++ adv.np.s
|
||||
++ adv.miscAdv ;
|
||||
linBaseCl : BaseCl -> Str = \b -> b.beforeSTM ++ b.stm ++ b.afterSTM ;
|
||||
|
||||
}
|
||||
|
||||
@@ -55,11 +55,10 @@ lin or_Conj = {s2 = \\_ => "ama" ; s1 = [] ; n = Sg} ; -- mise with interrogativ
|
||||
--lin how8many_IDet = R.indefDet "" pl ;
|
||||
|
||||
lin all_Predet = {s = "giddi" ; isPoss = True ; da = M GA} ;
|
||||
--lin not_Predet = { s = "" } ;
|
||||
--lin only_Predet = { s = "" } ;
|
||||
lin most_Predet = {s = "badi" ; isPoss = True ; da = F DA} ;
|
||||
{-
|
||||
lin not_Predet = { s = "" } ;
|
||||
lin only_Predet = { s = "" } ;
|
||||
lin most_Predet = { s = "" } ;
|
||||
|
||||
lin every_Det = R.defDet [] pl **
|
||||
{ s = mkVow } ;
|
||||
lin few_Det = R.indefDet "" pl ;
|
||||
@@ -67,12 +66,12 @@ lin many_Det = R.indefDet "" pl ;
|
||||
lin much_Det = R.indefDet "" sg ;
|
||||
-}
|
||||
lin somePl_Det = {
|
||||
sp = \\_,_ => "qaar" ;
|
||||
isPoss, isNum = False ;
|
||||
st = Definite ; -- NB. Indefinite means actually only IndefArt.
|
||||
n = Pl ;
|
||||
s = \\x,_ => BIND ++ defStems ! x ++ BIND ++ "a qaarkood" ;
|
||||
shortPoss = \\x => BIND ++ defStems ! x ++ BIND ++ "a qaarkood" ;
|
||||
sp = \\_,_ => "qaarkood" ;
|
||||
isPoss, isNum = False ;
|
||||
n = Pl ;
|
||||
st = Definite -- NB. Indefinite is really only reserved for IndefArt NumSg.
|
||||
} ;
|
||||
|
||||
lin someSg_Det = somePl_Det ** {
|
||||
@@ -82,8 +81,7 @@ lin someSg_Det = somePl_Det ** {
|
||||
F x => \\_ => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" } ;
|
||||
shortPoss = table {
|
||||
M x => BIND ++ defStems ! M x ++ BIND ++ "a qaarkiis" ;
|
||||
F x => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" } ;
|
||||
sp = \\g,c => case g of {Fem => "qaarkeed" ; _ => "qaarkiis"}
|
||||
F x => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" }
|
||||
} ;
|
||||
|
||||
|
||||
@@ -115,7 +113,7 @@ lin above_Prep = mkPrep (mkPrep ka) [] [] "dul" ;
|
||||
-- lin after_Prep = mkPrep "" ;
|
||||
-- lin before_Prep = mkPrep "" ;
|
||||
-- lin behind_Prep = mkPrep "" ;
|
||||
-- lin between_Prep = mkPrep "" ;
|
||||
lin between_Prep = possPrep dhex_N ;
|
||||
-- lin by8agent_Prep = mkPrep ;
|
||||
-- lin by8means_Prep = mkPrep ;
|
||||
-- lin during_Prep = mkPrep ;
|
||||
@@ -188,4 +186,7 @@ lin want_VV = mkV "" ;
|
||||
|
||||
lin please_Voc = ss "" ;
|
||||
-}
|
||||
|
||||
oper
|
||||
dhex_N : N = let dhex : N = mkN "dhex" in dhex ** {gda = FM DA HA} ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user