mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-28 01:18:57 -06:00
(Som) IAdv + related functions
This commit is contained in:
@@ -11,14 +11,7 @@ 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 ** {
|
PrepNP = prepNP ;
|
||||||
np = case prep.isPoss of {
|
|
||||||
True => nplite emptyNP ;
|
|
||||||
False => nplite np } ;
|
|
||||||
miscAdv = case prep.isPoss of {
|
|
||||||
True => np.s ! Abs ++ prep.miscAdv ! np.a ;
|
|
||||||
False => prep.miscAdv ! Sg3 Masc }
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- Adverbs can be modified by 'adadjectives', just like adjectives.
|
-- Adverbs can be modified by 'adadjectives', just like adjectives.
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
concrete CatSom of Cat = CommonX - [Adv,IAdv] ** open ResSom, Prelude in {
|
||||||
|
|
||||||
flags optimize=all_subs ;
|
flags optimize=all_subs ;
|
||||||
|
|
||||||
@@ -84,11 +84,7 @@ 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 ** {
|
Prep = ResSom.Prep ;
|
||||||
isPoss : Bool ;
|
|
||||||
c2 : Preposition ;
|
|
||||||
berri, sii, dhex : Str ;
|
|
||||||
miscAdv : Agreement => Str } ;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -120,7 +116,8 @@ concrete CatSom of Cat = CommonX - [Adv] ** open ResSom, Prelude in {
|
|||||||
N3 = ResSom.Noun3 ;
|
N3 = ResSom.Noun3 ;
|
||||||
PN = ResSom.PNoun ;
|
PN = ResSom.PNoun ;
|
||||||
|
|
||||||
Adv = ResSom.Adverb ; -- Preposition of an adverbial can merge with obligatory complements of the verb.
|
Adv,
|
||||||
|
IAdv = ResSom.Adverb ; -- Preposition of an adverbial can merge with obligatory complements of the verb.
|
||||||
|
|
||||||
linref
|
linref
|
||||||
-- Cl = linCl ;
|
-- Cl = linCl ;
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ concrete GrammarSom of Grammar =
|
|||||||
RelativeSom,
|
RelativeSom,
|
||||||
ConjunctionSom,
|
ConjunctionSom,
|
||||||
PhraseSom,
|
PhraseSom,
|
||||||
TextX - [Adv],
|
TextX - [Adv,IAdv],
|
||||||
StructuralSom,
|
StructuralSom,
|
||||||
IdiomSom,
|
IdiomSom,
|
||||||
TenseX - [Adv]
|
TenseX - [Adv,IAdv]
|
||||||
** {
|
** {
|
||||||
|
|
||||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ concrete PhraseSom of Phrase = CatSom ** open Prelude, ResSom in {
|
|||||||
UttImpPl = UttImpSg ;
|
UttImpPl = UttImpSg ;
|
||||||
UttImpPol = UttImpSg ;
|
UttImpPol = UttImpSg ;
|
||||||
|
|
||||||
UttIP ip = { s = ip.s ! Abs} ;
|
UttIP ip = {s = ip.s ! Abs} ;
|
||||||
UttIAdv iadv = iadv ;
|
UttNP np = {s = np.s ! Abs} ;
|
||||||
UttNP np = { s = np.s ! Abs} ;
|
UttVP vp = {s = infVP vp} ;
|
||||||
UttVP vp = { s = infVP vp } ;
|
UttAdv,
|
||||||
UttAdv adv = {s = linAdv adv} ;
|
UttIAdv = \adv -> {s = linAdv adv} ;
|
||||||
UttCN n = {s = linCN n} ;
|
UttCN n = {s = linCN n} ;
|
||||||
UttCard n = {s = n.s ! Mid} ;
|
UttCard n = {s = n.s ! Mid} ;
|
||||||
UttAP ap = { s = ap.s ! AF Sg Abs } ;
|
UttAP ap = { s = ap.s ! AF Sg Abs } ;
|
||||||
|
|||||||
@@ -22,7 +22,16 @@ concrete QuestionSom of Question = CatSom ** open
|
|||||||
--QuestSlash ip cls = ;
|
--QuestSlash ip cls = ;
|
||||||
|
|
||||||
-- : IAdv -> Cl -> QCl ; -- why does John walk
|
-- : IAdv -> Cl -> QCl ; -- why does John walk
|
||||||
-- QuestIAdv iadv cl = { } ;
|
QuestIAdv iadv cls =
|
||||||
|
let clRaw : ClSlash = insertIAdv iadv cls ;
|
||||||
|
sbj = clRaw.subj ;
|
||||||
|
cl : ClSlash = clRaw ** {
|
||||||
|
stm = \\clt,p => case <clt,p> of {
|
||||||
|
-- IAdv is focused
|
||||||
|
<_,Pos> => "baa" ++ sbj.pron ++ sbj.noun;
|
||||||
|
_ => clRaw.stm ! clt ! p } ;
|
||||||
|
subj = {noun, pron = [] ; isP3 = True}}
|
||||||
|
in cl2qcl cl ;
|
||||||
|
|
||||||
-- : IComp -> NP -> QCl ; -- where is John?
|
-- : IComp -> NP -> QCl ; -- where is John?
|
||||||
-- QuestIComp icomp np = ;
|
-- QuestIComp icomp np = ;
|
||||||
@@ -47,21 +56,21 @@ concrete QuestionSom of Question = CatSom ** open
|
|||||||
|
|
||||||
-- Interrogative adverbs can be formed prepositionally.
|
-- Interrogative adverbs can be formed prepositionally.
|
||||||
-- : Prep -> IP -> IAdv ; -- with whom
|
-- : Prep -> IP -> IAdv ; -- with whom
|
||||||
PrepIP prep ip = let a = AS.PrepNP prep ip in a ** {s = a.berri} ;
|
PrepIP = AS.PrepNP ;
|
||||||
|
|
||||||
-- They can be modified with other adverbs.
|
-- They can be modified with other adverbs.
|
||||||
|
|
||||||
-- : IAdv -> Adv -> IAdv ; -- where in Paris
|
-- : IAdv -> Adv -> IAdv ; -- where in Paris
|
||||||
AdvIAdv iadv adv = iadv ** {s = iadv.s ++ adv.berri} ;
|
-- AdvIAdv iadv adv = iadv ** {s = iadv.s ++ adv.berri} ; -- TODO do we need PrepCombination in IAdv?
|
||||||
|
|
||||||
-- Interrogative complements to copulas can be both adverbs and
|
-- Interrogative complements to copulas can be both adverbs and
|
||||||
-- pronouns.
|
-- pronouns.
|
||||||
|
|
||||||
-- : IAdv -> IComp ;
|
-- : IAdv -> IComp ;
|
||||||
CompIAdv iadv = iadv ; -- where (is it)
|
--CompIAdv iadv = iadv ; -- where (is it)
|
||||||
|
|
||||||
-- : IP -> IComp ;
|
-- : IP -> IComp ;
|
||||||
CompIP ip = { s = ip.s ! Abs } ; -- who (is it)
|
--CompIP ip = { s = ip.s ! Abs } ; -- who (is it)
|
||||||
|
|
||||||
{-
|
{-
|
||||||
-- More $IP$, $IDet$, and $IAdv$ are defined in $Structural$.
|
-- More $IP$, $IDet$, and $IAdv$ are defined in $Structural$.
|
||||||
|
|||||||
@@ -170,6 +170,8 @@ oper
|
|||||||
|
|
||||||
impersNP : NounPhrase = pronTable ! Impers ;
|
impersNP : NounPhrase = pronTable ! Impers ;
|
||||||
|
|
||||||
|
indeclNP : Str -> NounPhrase = \s -> emptyNP ** {s = \\c => s} ;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Pronouns
|
-- Pronouns
|
||||||
|
|
||||||
@@ -182,11 +184,11 @@ oper
|
|||||||
sp : Case => Str ;
|
sp : Case => Str ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
{- Saeed p.115: "This combination of possessive and article [kay-ga, tay-da]
|
{- Saeed p.115: "This combination of possessive and article [kay-ga, tay-da]
|
||||||
is the basic form but possessives occur with the full range of determiners,
|
is the basic form but possessives occur with the full range of determiners,
|
||||||
with associated meanings, for example:
|
with associated meanings, for example:
|
||||||
remote article kii/tii: gurigaagii 'your house (remote)'
|
remote article kii/tii: gurigaagii 'your house (remote)'
|
||||||
demonstrative kaas/taas: gurigaagaas 'that house of yours'
|
demonstrative kaas/taas: gurigaagaas 'that house of yours'
|
||||||
interrogative kee/tee: gurigaagee? 'which house of yours?'"
|
interrogative kee/tee: gurigaagee? 'which house of yours?'"
|
||||||
|
|
||||||
Since RGL abstract syntax doesn't allow combining two Quants, the way to go is
|
Since RGL abstract syntax doesn't allow combining two Quants, the way to go is
|
||||||
@@ -327,7 +329,7 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
defIQuant : Str -> Quant = \ee ->
|
defIQuant : Str -> Quant = \ee ->
|
||||||
let quantRaw = defQuant ee ("k"+ee) ("t"+ee) ("kuw"+ee) False
|
let quantRaw = defQuant ee ("k"+ee) ("t"+ee) ("kuw"+ee) False
|
||||||
in quantRaw ** {
|
in quantRaw ** {
|
||||||
s = \\da,c => quantRaw.s ! da ! Abs ;
|
s = \\da,c => quantRaw.s ! da ! Abs ;
|
||||||
sp = \\gn,c => quantRaw.sp ! gn ! Abs } ;
|
sp = \\gn,c => quantRaw.sp ! gn ! Abs } ;
|
||||||
@@ -344,9 +346,14 @@ oper
|
|||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Prepositions
|
-- Prepositions
|
||||||
|
|
||||||
Prep : Type = {s : PrepAgr => Str} ;
|
Prep : Type = {
|
||||||
|
s : PrepAgr => Str ;
|
||||||
|
c2 : Preposition ;
|
||||||
|
isPoss : Bool ;
|
||||||
|
berri, sii, dhex : Str ;
|
||||||
|
miscAdv : Agreement => Str } ;
|
||||||
|
|
||||||
mkPrep : (x1,_,_,_,_,x6 : Str) -> Prep = \ku,ii,kuu,noo,idiin,isku -> {
|
mkPrep : (x1,_,_,_,_,x6 : Str) -> {s : PrepAgr => Str} = \ku,ii,kuu,noo,idiin,isku -> {
|
||||||
s = table {
|
s = table {
|
||||||
P3_Prep => ku ;
|
P3_Prep => ku ;
|
||||||
Sg1_Prep => ii ;
|
Sg1_Prep => ii ;
|
||||||
@@ -357,9 +364,10 @@ oper
|
|||||||
Reflexive_Prep => isku
|
Reflexive_Prep => isku
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
prep : Preposition -> (Prep ** {c2 : Preposition}) = \p -> prepTable ! p ** {c2 = p} ;
|
prep : Preposition -> {s : PrepAgr => Str ; c2 : Preposition} = \p ->
|
||||||
|
prepTable ! p ** {c2 = p} ;
|
||||||
|
|
||||||
prepTable : Preposition => Prep = table {
|
prepTable : Preposition => {s : PrepAgr => Str} = table {
|
||||||
Ku => mkPrep "ku" "igu" "kugu" "nagu" "idinku" "isku" ;
|
Ku => mkPrep "ku" "igu" "kugu" "nagu" "idinku" "isku" ;
|
||||||
Ka => mkPrep "ka" "iga" "kaa" "naga" "idinka" "iska" ;
|
Ka => mkPrep "ka" "iga" "kaa" "naga" "idinka" "iska" ;
|
||||||
La => mkPrep "la" "ila" "kula" "nala" "idinla" "isla" ;
|
La => mkPrep "la" "ila" "kula" "nala" "idinla" "isla" ;
|
||||||
@@ -557,7 +565,7 @@ oper
|
|||||||
VNegPast Progressive => progr + "n" ;
|
VNegPast Progressive => progr + "n" ;
|
||||||
|
|
||||||
-- TODO check conjugations 2 and 3
|
-- TODO check conjugations 2 and 3
|
||||||
VNegCond PlInv => arag + n + "een" ;
|
VNegCond PlInv => arag + n + "een" ;
|
||||||
VNegCond SgMasc => qaat + "een" ; -- for most verbs same as VPast Simple Pl3_
|
VNegCond SgMasc => qaat + "een" ; -- for most verbs same as VPast Simple Pl3_
|
||||||
VNegCond SgFem => arag + t + "een" ; -- for most verbs same as VPast Simple Pl2_
|
VNegCond SgFem => arag + t + "een" ; -- for most verbs same as VPast Simple Pl2_
|
||||||
|
|
||||||
@@ -636,11 +644,11 @@ oper
|
|||||||
VPast _ Pl2_ => "ahaydeen" ;
|
VPast _ Pl2_ => "ahaydeen" ;
|
||||||
VPast _ Pl3_ => "ahaayeen" ;
|
VPast _ Pl3_ => "ahaayeen" ;
|
||||||
VNegPast _ => "ahi" ;
|
VNegPast _ => "ahi" ;
|
||||||
VNegCond SgMasc => "ahaadeen" ; -- 1SG/3 SG M/3PL
|
VNegCond SgMasc => "ahaadeen" ; -- 1SG/3 SG M/3PL
|
||||||
VNegCond SgFem => "ahaateen" ; -- 2SG/3 SG F/2PL
|
VNegCond SgFem => "ahaateen" ; -- 2SG/3 SG F/2PL
|
||||||
VNegCond PlInv => "ahaanneen" ; -- 1PL
|
VNegCond PlInv => "ahaanneen" ; -- 1PL
|
||||||
VRel _ => "ah" ; -- All persons: see Nilsson p. 78. TODO check Saeed p. 103
|
VRel _ => "ah" ; -- All persons: see Nilsson p. 78. TODO check Saeed p. 103
|
||||||
VRelNeg => "ahayni" ; -- Saeed
|
VRelNeg => "ahayni" ; -- Saeed
|
||||||
VInf => "ahaan" ;
|
VInf => "ahaan" ;
|
||||||
VImp Sg pol => if_then_Pol pol "ahaw" "ahaanin" ;
|
VImp Sg pol => if_then_Pol pol "ahaw" "ahaanin" ;
|
||||||
VImp Pl pol => if_then_Pol pol "ahaada" "ahaanina" ;
|
VImp Pl pol => if_then_Pol pol "ahaada" "ahaanina" ;
|
||||||
@@ -675,7 +683,7 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
------------------
|
------------------
|
||||||
-- VP
|
-- Adv
|
||||||
|
|
||||||
BaseAdv : Type = {
|
BaseAdv : Type = {
|
||||||
sii, -- sii, soo, wala, kada go inside VP.
|
sii, -- sii, soo, wala, kada go inside VP.
|
||||||
@@ -689,6 +697,18 @@ oper
|
|||||||
np : NPLite ; -- NP from PrepNP can be promoted into a core argument.
|
np : NPLite ; -- NP from PrepNP can be promoted into a core argument.
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
prepNP : Prep -> NounPhrase -> Adverb = \prep,np -> prep ** {
|
||||||
|
np = case prep.isPoss of {
|
||||||
|
True => nplite emptyNP ;
|
||||||
|
False => nplite np } ;
|
||||||
|
miscAdv = case prep.isPoss of {
|
||||||
|
True => np.s ! Abs ++ prep.miscAdv ! np.a ;
|
||||||
|
False => prep.miscAdv ! Sg3 Masc }
|
||||||
|
} ;
|
||||||
|
|
||||||
|
------------------
|
||||||
|
-- VP
|
||||||
|
|
||||||
Complement : Type = {
|
Complement : Type = {
|
||||||
comp : Agreement => {p1,p2 : Str} ; -- Agreement for AP complements
|
comp : Agreement => {p1,p2 : Str} ; -- Agreement for AP complements
|
||||||
stm : STM ; -- to choose right sentence type marker
|
stm : STM ; -- to choose right sentence type marker
|
||||||
@@ -708,7 +728,7 @@ oper
|
|||||||
useV : Verb -> VerbPhrase = \v -> v ** {
|
useV : Verb -> VerbPhrase = \v -> v ** {
|
||||||
comp = \\_ => <[],[]> ;
|
comp = \\_ => <[],[]> ;
|
||||||
stm = case v.isCopula of { -- can change into Waxa in ComplVV
|
stm = case v.isCopula of { -- can change into Waxa in ComplVV
|
||||||
True => Waa Copula ;
|
True => Waa Copula ;
|
||||||
False => Waa NoPred
|
False => Waa NoPred
|
||||||
} ;
|
} ;
|
||||||
vComp = {subjunc, inf = [] ;
|
vComp = {subjunc, inf = [] ;
|
||||||
@@ -754,9 +774,21 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertComp : VPSlash -> NounPhrase -> VerbPhrase = \vp,np ->
|
insertComp : VPSlash -> NounPhrase -> VerbPhrase = \vp,np ->
|
||||||
insertCompLite vp (nplite np) ;
|
vp ** insertCompLite vp (nplite np) ;
|
||||||
|
|
||||||
insertCompLite : VPSlash -> NPLite -> VerbPhrase = \vp,nplite ->
|
insertAdv : VerbPhrase -> Adverb -> VerbPhrase = \vp,adv ->
|
||||||
|
vp ** insertAdvLite vp adv ;
|
||||||
|
|
||||||
|
insertIAdv : Adverb -> ClSlash -> ClSlash = \adv,cls ->
|
||||||
|
cls ** insertAdvLite cls adv ;
|
||||||
|
|
||||||
|
-- To generalise insertAdv and insertComp
|
||||||
|
VPLite : Type = {
|
||||||
|
c2 : PrepCombination ;
|
||||||
|
obj2 : NPLite ;
|
||||||
|
sii,dhex,berri,miscAdv,secObj : Str} ;
|
||||||
|
|
||||||
|
insertCompLite : VPLite -> NPLite -> VPLite = \vp,nplite ->
|
||||||
case vp.obj2.a of {
|
case vp.obj2.a of {
|
||||||
-- If the old object is 3rd person (or nonexistent), we replace its agreement.
|
-- If the old object is 3rd person (or nonexistent), we replace its agreement.
|
||||||
-- We keep both old and new string (=noun, if there was one) in obj2.s.
|
-- We keep both old and new string (=noun, if there was one) in obj2.s.
|
||||||
@@ -772,10 +804,9 @@ oper
|
|||||||
s = vp.obj2.s ++ nplite.s
|
s = vp.obj2.s ++ nplite.s
|
||||||
} ;
|
} ;
|
||||||
secObj = vp.secObj ++ secondObject ! nplite.a}
|
secObj = vp.secObj ++ secondObject ! nplite.a}
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
insertAdv : VerbPhrase -> Adverb -> VerbPhrase = \vp,adv ->
|
insertAdvLite : VPLite -> Adverb -> VPLite = \vp,adv ->
|
||||||
case adv.c2 of {
|
case adv.c2 of {
|
||||||
NoPrep => vp ** adv'' ; -- the adverb is not formed with PrepNP, e.g. "tomorrow"
|
NoPrep => vp ** adv'' ; -- the adverb is not formed with PrepNP, e.g. "tomorrow"
|
||||||
_ => case vp.c2 of {
|
_ => case vp.c2 of {
|
||||||
@@ -801,7 +832,7 @@ oper
|
|||||||
|
|
||||||
|
|
||||||
{- After PredVP, we might still want to add more adverbs (QuestIAdv),
|
{- After PredVP, we might still want to add more adverbs (QuestIAdv),
|
||||||
but we're done with verb inflection.
|
but we're done with verb inflection.
|
||||||
-}
|
-}
|
||||||
ClSlash : Type = BaseAdv ** {
|
ClSlash : Type = BaseAdv ** {
|
||||||
-- Fixed in Cl
|
-- Fixed in Cl
|
||||||
@@ -826,7 +857,7 @@ oper
|
|||||||
|
|
||||||
predVP : NounPhrase -> VerbPhrase -> ClSlash = \np,vps -> vp ** {
|
predVP : NounPhrase -> VerbPhrase -> ClSlash = \np,vps -> vp ** {
|
||||||
subj = {noun = subjnoun ; pron = subjpron ; isP3 = isP3 subj.a} ;
|
subj = {noun = subjnoun ; pron = subjpron ; isP3 = isP3 subj.a} ;
|
||||||
pred = \\cltyp,t,a,p =>
|
pred = \\cltyp,t,a,p =>
|
||||||
let predRaw = vf cltyp t a p subj.a vp ;
|
let predRaw = vf cltyp t a p subj.a vp ;
|
||||||
in case <cltyp, p, t, vp.stm, subj.a> of {
|
in case <cltyp, p, t, vp.stm, subj.a> of {
|
||||||
<Statement, Pos, Pres, Waa NoCopula, Sg3 _|Pl3> -- VP comes from CompNP/CompCN + P3 subject
|
<Statement, Pos, Pres, Waa NoCopula, Sg3 _|Pl3> -- VP comes from CompNP/CompCN + P3 subject
|
||||||
@@ -838,7 +869,7 @@ oper
|
|||||||
_ => predRaw -- Any other verb
|
_ => predRaw -- Any other verb
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
stm = \\cltyp,pol =>
|
stm = \\cltyp,pol =>
|
||||||
case <cltyp,pol> of {
|
case <cltyp,pol> of {
|
||||||
<Statement,Pos> => showSTM vp.stm ;
|
<Statement,Pos> => showSTM vp.stm ;
|
||||||
<Statement,Neg> => "ma" ;
|
<Statement,Neg> => "ma" ;
|
||||||
@@ -856,7 +887,7 @@ oper
|
|||||||
True => insertComp vps np ;
|
True => insertComp vps np ;
|
||||||
_ => vps } ;
|
_ => vps } ;
|
||||||
subj : NounPhrase = case isPassive vps of {
|
subj : NounPhrase = case isPassive vps of {
|
||||||
True => impersNP ;
|
True => impersNP ;
|
||||||
_ => np } ;
|
_ => np } ;
|
||||||
subjnoun : Str = case np.isPron of {
|
subjnoun : Str = case np.isPron of {
|
||||||
True => np.empty ;
|
True => np.empty ;
|
||||||
@@ -878,7 +909,7 @@ oper
|
|||||||
|
|
||||||
|
|
||||||
-- RelVP: subject pronoun is never included
|
-- RelVP: subject pronoun is never included
|
||||||
cl2rcl : ClSlash -> Clause =
|
cl2rcl : ClSlash -> Clause =
|
||||||
let hasSubjPron : Bool = False ;
|
let hasSubjPron : Bool = False ;
|
||||||
hasSTM : Bool = False ;
|
hasSTM : Bool = False ;
|
||||||
isRel : Bool = True ;
|
isRel : Bool = True ;
|
||||||
@@ -922,7 +953,7 @@ oper
|
|||||||
|
|
||||||
|
|
||||||
mkClause : ClType -> (rel,sp,stm : Bool) -> ClSlash -> Clause = \cltyp,isRel,hasSubjPron,hasSTM,incomplCl -> {
|
mkClause : ClType -> (rel,sp,stm : Bool) -> ClSlash -> Clause = \cltyp,isRel,hasSubjPron,hasSTM,incomplCl -> {
|
||||||
s = \\t,a,p =>
|
s = \\t,a,p =>
|
||||||
let -- Put all arguments in their right place
|
let -- Put all arguments in their right place
|
||||||
cl : ClSlash = complCl incomplCl ;
|
cl : ClSlash = complCl incomplCl ;
|
||||||
|
|
||||||
@@ -954,14 +985,14 @@ oper
|
|||||||
stm : Str = case <hasSTM,p> of {
|
stm : Str = case <hasSTM,p> of {
|
||||||
<True,_> => cl.stm ! cltyp ! p ;
|
<True,_> => cl.stm ! cltyp ! p ;
|
||||||
<_,Neg> => cl.stm ! cltyp ! p ; -- negation overrides hasSTM=False
|
<_,Neg> => cl.stm ! cltyp ! p ; -- negation overrides hasSTM=False
|
||||||
_ => [] }
|
_ => [] }
|
||||||
in cl.berri -- AdV
|
in cl.berri -- AdV
|
||||||
++ cl.subj.noun -- subject if it's a noun
|
++ cl.subj.noun -- subject if it's a noun
|
||||||
++ statementNounObj -- noun object if it's a statement
|
++ statementNounObj -- noun object if it's a statement
|
||||||
|
|
||||||
++ stm
|
++ stm
|
||||||
|
|
||||||
++ cl.vComp.subjunc -- "waa in" construction /
|
++ cl.vComp.subjunc -- "waa in" construction /
|
||||||
++ subjpron -- subject pronoun
|
++ subjpron -- subject pronoun
|
||||||
|
|
||||||
++ subordNounObj -- noun object if it's subordinate clause: "timir aan /laf/ lahayn" (Saeed p. 210-211)
|
++ subordNounObj -- noun object if it's subordinate clause: "timir aan /laf/ lahayn" (Saeed p. 210-211)
|
||||||
@@ -1050,7 +1081,7 @@ 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 ;
|
++ adv.miscAdv ;
|
||||||
|
|
||||||
|
|
||||||
@@ -1082,5 +1113,5 @@ oper
|
|||||||
++ pred -- the verb inflected
|
++ pred -- the verb inflected
|
||||||
++ vp.vComp.subcl ! Sg3 Masc -- VV complement, if it's subordinate clause
|
++ vp.vComp.subcl ! Sg3 Masc -- VV complement, if it's subordinate clause
|
||||||
++ vp.miscAdv ; ---- NB. Only used if there are several adverbs, or for "waa in" construction.
|
++ vp.miscAdv ; ---- NB. Only used if there are several adverbs, or for "waa in" construction.
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,9 @@ lin very_AdA = mkAdA "" ;
|
|||||||
lin as_CAdv = { s = "" ; p = [] } ;
|
lin as_CAdv = { s = "" ; p = [] } ;
|
||||||
lin less_CAdv = { s = "" ; p = [] } ;
|
lin less_CAdv = { s = "" ; p = [] } ;
|
||||||
lin more_CAdv = { s = "" ; p = [] } ;
|
lin more_CAdv = { s = "" ; p = [] } ;
|
||||||
|
-}
|
||||||
lin how_IAdv = ss "" ;
|
lin how_IAdv = prepNP (mkPrep (mkPrep u) "sidee" [] []) emptyNP ;
|
||||||
|
{-
|
||||||
lin how8much_IAdv = ss "" ;
|
lin how8much_IAdv = ss "" ;
|
||||||
lin when_IAdv = ss "" ;
|
lin when_IAdv = ss "" ;
|
||||||
lin where_IAdv = ss "" ;
|
lin where_IAdv = ss "" ;
|
||||||
@@ -127,7 +128,7 @@ lin on_Prep = mkPrep ku ;
|
|||||||
-- lin possess_Prep = mkPrep ;
|
-- lin possess_Prep = mkPrep ;
|
||||||
-- lin through_Prep = mkPrep ;
|
-- lin through_Prep = mkPrep ;
|
||||||
-- lin to_Prep = mkPrep ;
|
-- lin to_Prep = mkPrep ;
|
||||||
lin under_Prep =
|
lin under_Prep =
|
||||||
let hoos : CatSom.Prep = possPrep (nUl "hoos")
|
let hoos : CatSom.Prep = possPrep (nUl "hoos")
|
||||||
in hoos ** {c2 = Ku} ;
|
in hoos ** {c2 = Ku} ;
|
||||||
lin with_Prep = mkPrep la ;
|
lin with_Prep = mkPrep la ;
|
||||||
|
|||||||
Reference in New Issue
Block a user