forked from GitHub/gf-rgl
(Som) Minor cleanup + better comments
This commit is contained in:
@@ -10,27 +10,22 @@ concrete QuestionSom of Question = CatSom ** open
|
||||
|
||||
-- : IP -> VP -> QCl ;
|
||||
QuestVP ip vp = -- TODO: if we want to contract baa + subj. pronoun, change ResSom.predVP
|
||||
let clRaw : ClSlash = predVP ip vp ;
|
||||
cl : ClSlash = clRaw ** {
|
||||
stm = \\clt,p => case <clt,p> of {
|
||||
<_,Pos> => "baa" ;
|
||||
_ => clRaw.stm ! clt ! p }
|
||||
}
|
||||
let cls : ClSlash = predVP ip vp ;
|
||||
cl : ClSlash = cls ** {
|
||||
stm = modSTM "baa" cls.stm
|
||||
} ;
|
||||
in cl2qcl (notB ip.contractSTM) cl ;
|
||||
|
||||
-- : IP -> ClSlash -> QCl ; -- whom does John love
|
||||
QuestSlash ip cls =
|
||||
let clsIPFocus = cls ** {
|
||||
subj = cls.subj ** { -- place IP first in the sentence,
|
||||
noun = ip.s ! Nom -- keep old subject pronoun.
|
||||
subj = cls.subj ** { -- keep old subject pronoun,
|
||||
noun = ip.s ! Nom -- and place IP first.
|
||||
} ;
|
||||
obj2 = cls.obj2 ** { -- move old subject noun before object.
|
||||
s = cls.subj.noun ++ cls.obj2.s
|
||||
s = cls.subj.noun ++ cls.obj2.s
|
||||
} ;
|
||||
stm : ClType=>Polarity=>Str =
|
||||
\\clt,p => case <clt,p> of {
|
||||
<_,Pos> => "baa" ;
|
||||
_ => cls.stm ! clt ! p }
|
||||
stm = modSTM "baa" cls.stm
|
||||
} ;
|
||||
in cl2qclslash (notB ip.contractSTM) clsIPFocus ;
|
||||
|
||||
|
||||
@@ -877,15 +877,7 @@ oper
|
||||
_ => predRaw -- Any other verb
|
||||
} ;
|
||||
|
||||
stm = \\cltyp,pol =>
|
||||
case <cltyp,pol> of {
|
||||
<Statement,Pos> => showSTM vp.stm ;
|
||||
<Statement,Neg> => "ma" ;
|
||||
<Question,Pos> => "ma" ;
|
||||
<Question,Neg> => "sow" ;
|
||||
<Subord,Pos> => [] ;
|
||||
<Subord,Neg> => "aan"
|
||||
} ;
|
||||
stm = mkStm vp.stm ;
|
||||
comp = vp.comp ! subj.a ;
|
||||
vComp = vp.vComp ** {
|
||||
subcl = vp.vComp.subcl ! subj.a
|
||||
@@ -1062,28 +1054,25 @@ oper
|
||||
|
||||
infVP : VerbPhrase -> Str = linVP VInf Statement ;
|
||||
|
||||
waaContr : Agreement => Polarity => Str = \\a,b =>
|
||||
let stm = if_then_Pol b "w" "m"
|
||||
in stm + subjpron ! a ;
|
||||
STMarker : Type = ClType => Polarity => Str ;
|
||||
|
||||
waaNoContr : Agreement => Polarity => {p1,p2 : Str} = \\a,p =>
|
||||
case p of {
|
||||
Pos => {p1 = "waa" ; p2 = subjpron ! a} ;
|
||||
Neg => {p1 = "ma" ; p2 = []} } ;
|
||||
|
||||
waxaNoContr : Agreement => Polarity => {p1,p2 : Str} = \\a,p =>
|
||||
case p of {
|
||||
Pos => {p1 = "waxa" ; p2 = subjpron ! a} ;
|
||||
Neg => {p1 = "ma" ; p2 = []} } ; -- TODO: find out how to properly negate waxa clauses!
|
||||
|
||||
subjpron : Agreement => Str = table {
|
||||
Sg1|Pl1 Excl => "aan" ;
|
||||
Pl1 Incl => "aynu" ;
|
||||
Sg2|Pl2 => "aad" ;
|
||||
Sg3 Masc => "uu" ;
|
||||
Impers => [] ;
|
||||
_ => "ay" } ;
|
||||
mkStm : STM -> STMarker = \stm ->
|
||||
\\cltyp,pol =>
|
||||
case <cltyp,pol> of {
|
||||
<Statement,Pos> => showSTM stm ;
|
||||
<Statement,Neg> => "ma" ;
|
||||
<Question,Pos> => "ma" ;
|
||||
<Question,Neg> => "sow" ;
|
||||
<Subord,Pos> => [] ;
|
||||
<Subord,Neg> => "aan"
|
||||
} ;
|
||||
|
||||
modSTM : Str -> STMarker -> STMarker = \str,stm ->
|
||||
\\cltyp,pol =>
|
||||
case <cltyp,pol> of {
|
||||
<_,Pos> => str ;
|
||||
_ => stm ! cltyp ! pol
|
||||
} ;
|
||||
--------------------------------------------------------------------------------
|
||||
-- linrefs
|
||||
|
||||
|
||||
Reference in New Issue
Block a user