forked from GitHub/gf-rgl
(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
|
-- ComparAdvAdjS : CAdv -> A -> S -> Adv ; -- more warmly than he runs
|
||||||
|
|
||||||
-- : Prep -> NP -> Adv ;
|
-- : 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.
|
-- 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.
|
-- Constructed in StructuralSom.
|
||||||
Conj = {s2 : State => Str ; s1 : Str ; n : Number } ;
|
Conj = {s2 : State => Str ; s1 : Str ; n : Number } ;
|
||||||
Subj = SS ;
|
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 ;
|
-- Cl = linCl ;
|
||||||
VP = linVP VInf ;
|
VP = linVP VInf ;
|
||||||
CN = linCN ;
|
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) ;
|
S = \s -> linBaseCl (s.s ! False) ;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,13 +64,14 @@ concrete NounSom of Noun = CatSom ** open ResSom, Prelude in {
|
|||||||
True => glue predet.s det ;
|
True => glue predet.s det ;
|
||||||
False => predet.s
|
False => predet.s
|
||||||
} ;
|
} ;
|
||||||
in np ** {s = \\c =>
|
in np ** {
|
||||||
|
s = \\c =>
|
||||||
case <np.isPron,predet.isPoss> of {
|
case <np.isPron,predet.isPoss> of {
|
||||||
<True,True> => np.empty ++ predetS ;
|
<True,True> => np.empty ++ predetS ;
|
||||||
_ => np.s ! c ++ 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
|
-- A noun phrase can also be postmodified by the past participle of a
|
||||||
-- verb, by an adverb, or by a relative clause
|
-- 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
|
oper
|
||||||
|
|
||||||
@@ -104,17 +104,19 @@ oper
|
|||||||
|
|
||||||
mkPrep = overload {
|
mkPrep = overload {
|
||||||
mkPrep : Str -> CatSom.Prep = \s ->
|
mkPrep : Str -> CatSom.Prep = \s ->
|
||||||
lin Prep ((ResSom.mkPrep s s s s s s) ** {
|
emptyPrep ** (ResSom.mkPrep s s s s s s) ; -- ** {
|
||||||
c2=noPrep ; sii,dhex,berri=[]}) ;
|
-- c2=noPrep ; sii,berri=[] ; dhex = \\_=> [] ; isPoss=False}) ;
|
||||||
mkPrep : (x1,_,_,_,_,x6 : Str) -> CatSom.Prep = \a,b,c,d,e,f ->
|
mkPrep : (x1,_,_,_,_,x6 : Str) -> CatSom.Prep = \a,b,c,d,e,f ->
|
||||||
lin Prep ((ResSom.mkPrep a b c d e f) ** {
|
emptyPrep ** (ResSom.mkPrep a b c d e f) ; --
|
||||||
c2=noPrep ; sii,dhex,berri=[]}) ;
|
-- c2=noPrep ; sii,berri=[] ; dhex = \\_=> [] ; isPoss=False}) ;
|
||||||
mkPrep : Preposition -> CatSom.Prep = \p ->
|
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 ->
|
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 ->
|
-- mkConj : (_,_ : Str) -> Number -> Conj = \s1,s2,num ->
|
||||||
-- lin Conj { s = s1 ; s2 = s2 } ;
|
-- lin Conj { s = s1 ; s2 = s2 } ;
|
||||||
|
|
||||||
@@ -125,7 +127,7 @@ oper
|
|||||||
berri = s ;
|
berri = s ;
|
||||||
c2 = noPrep ;
|
c2 = noPrep ;
|
||||||
np = {s = [] ; a = P3_Prep} ;
|
np = {s = [] ; a = P3_Prep} ;
|
||||||
sii,dhex = []
|
sii,dhex,miscAdv = []
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkAdV : Str -> AdV = \s -> lin AdV {s = s} ;
|
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 : (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}) ;
|
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 = {
|
BaseAdv : Type = {
|
||||||
sii, -- sii, soo, wala, kada go inside VP.
|
sii, -- sii, soo, wala, kada go inside VP.
|
||||||
dhex, -- dhex, hoos, koor, dul, … 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 ** {
|
Adverb : Type = BaseAdv ** {
|
||||||
@@ -690,8 +691,7 @@ oper
|
|||||||
obj2 : NPLite ; -- {s : Str ; a : PrepAgr}
|
obj2 : NPLite ; -- {s : Str ; a : PrepAgr}
|
||||||
secObj : Str ; -- if two overt pronoun objects
|
secObj : Str ; -- if two overt pronoun objects
|
||||||
vComp : Str ; -- VV complement
|
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 ;
|
VPSlash : Type = VerbPhrase ;
|
||||||
|
|
||||||
@@ -772,13 +772,14 @@ oper
|
|||||||
_ => vp ** adv''
|
_ => vp ** adv''
|
||||||
}
|
}
|
||||||
} where {
|
} 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 ;
|
sii = vp.sii ++ adv.sii ;
|
||||||
dhex = vp.dhex ++ adv.dhex ;
|
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'' : {sii,dhex,berri,miscAdv : Str} -- adv.np inserted into miscAdv
|
||||||
= adv' ** {dhex = (prepTable ! adv.c2).s ! adv.np.a ++ adv.dhex ;
|
= adv' ** {dhex = (prepTable ! adv.c2).s ! adv.np.a ++ adv.dhex ;
|
||||||
miscAdv = adv.np.s}
|
miscAdv = adv.miscAdv ++ adv.np.s}
|
||||||
} ;
|
} ;
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Sentences etc.
|
-- Sentences etc.
|
||||||
@@ -936,7 +937,8 @@ oper
|
|||||||
++ adv.sii
|
++ adv.sii
|
||||||
++ (prepTable ! adv.c2).s ! adv.np.a
|
++ (prepTable ! adv.c2).s ! adv.np.a
|
||||||
++ adv.dhex
|
++ adv.dhex
|
||||||
++ adv.np.s ;
|
++ adv.np.s
|
||||||
|
++ adv.miscAdv ;
|
||||||
linBaseCl : BaseCl -> Str = \b -> b.beforeSTM ++ b.stm ++ b.afterSTM ;
|
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 how8many_IDet = R.indefDet "" pl ;
|
||||||
|
|
||||||
lin all_Predet = {s = "giddi" ; isPoss = True ; da = M GA} ;
|
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 **
|
lin every_Det = R.defDet [] pl **
|
||||||
{ s = mkVow } ;
|
{ s = mkVow } ;
|
||||||
lin few_Det = R.indefDet "" pl ;
|
lin few_Det = R.indefDet "" pl ;
|
||||||
@@ -67,12 +66,12 @@ lin many_Det = R.indefDet "" pl ;
|
|||||||
lin much_Det = R.indefDet "" sg ;
|
lin much_Det = R.indefDet "" sg ;
|
||||||
-}
|
-}
|
||||||
lin somePl_Det = {
|
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" ;
|
s = \\x,_ => BIND ++ defStems ! x ++ BIND ++ "a qaarkood" ;
|
||||||
shortPoss = \\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 ** {
|
lin someSg_Det = somePl_Det ** {
|
||||||
@@ -82,8 +81,7 @@ lin someSg_Det = somePl_Det ** {
|
|||||||
F x => \\_ => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" } ;
|
F x => \\_ => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" } ;
|
||||||
shortPoss = table {
|
shortPoss = table {
|
||||||
M x => BIND ++ defStems ! M x ++ BIND ++ "a qaarkiis" ;
|
M x => BIND ++ defStems ! M x ++ BIND ++ "a qaarkiis" ;
|
||||||
F x => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" } ;
|
F x => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" }
|
||||||
sp = \\g,c => case g of {Fem => "qaarkeed" ; _ => "qaarkiis"}
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -115,7 +113,7 @@ lin above_Prep = mkPrep (mkPrep ka) [] [] "dul" ;
|
|||||||
-- lin after_Prep = mkPrep "" ;
|
-- lin after_Prep = mkPrep "" ;
|
||||||
-- lin before_Prep = mkPrep "" ;
|
-- lin before_Prep = mkPrep "" ;
|
||||||
-- lin behind_Prep = mkPrep "" ;
|
-- lin behind_Prep = mkPrep "" ;
|
||||||
-- lin between_Prep = mkPrep "" ;
|
lin between_Prep = possPrep dhex_N ;
|
||||||
-- lin by8agent_Prep = mkPrep ;
|
-- lin by8agent_Prep = mkPrep ;
|
||||||
-- lin by8means_Prep = mkPrep ;
|
-- lin by8means_Prep = mkPrep ;
|
||||||
-- lin during_Prep = mkPrep ;
|
-- lin during_Prep = mkPrep ;
|
||||||
@@ -188,4 +186,7 @@ lin want_VV = mkV "" ;
|
|||||||
|
|
||||||
lin please_Voc = ss "" ;
|
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