forked from GitHub/gf-rgl
(Som) Make object pronoun and preposition(s) contract with negation.
This commit is contained in:
@@ -191,7 +191,7 @@ oper
|
||||
} ;
|
||||
Pl1 Excl => {
|
||||
s = table {Nom => "aan" ; Abs => "na"} ;
|
||||
a = Pl1 Incl ; isPron = True ; sp ="annaga" ;
|
||||
a = Pl1 Excl ; isPron = True ; sp ="annaga" ;
|
||||
poss = {s = quantTable "eenn" ; short = quantTable "een" ; sp = gnTable "eenn" "eenn" "uweenn"}
|
||||
} ;
|
||||
Pl1 Incl => {
|
||||
@@ -353,7 +353,6 @@ oper
|
||||
ula => "inoola" ; kaga => "inagaga" ;
|
||||
kula => "inagula" ; kala => "inagala" ;
|
||||
Single p => (prepTable ! p).s ! Pl1 Incl } ;
|
||||
|
||||
Pl2 => table { ugu => "idiinku" ; uga => "idiinka" ;
|
||||
ula => "idiinla" ; kaga => "idinkaga" ;
|
||||
kula => "idinkula" ; kala => "idinkala" ;
|
||||
@@ -651,8 +650,8 @@ oper
|
||||
comp = \\agr => let cmp = vps.comp ! agr in
|
||||
{p1 = np.s ++ cmp.p1 ; -- if object is a noun, it will come before verb in the sentence.
|
||||
-- if object is a pronoun, np.s is empty.
|
||||
p2 = cmp.p2 ++ compl np.a vps ++ vps.secObj} -- object combines with the preposition of the verb.
|
||||
} ; -- secObj in case there was a ditransitive verb.
|
||||
p2 = cmp.p2 ++ compl np.a vps} -- object combines with the preposition of the verb.
|
||||
} ;
|
||||
|
||||
compl : AgreementPlus -> VerbPhrase -> Str = \a,vp ->
|
||||
let agr = case a of {IsPron x => x ; _ => Pl3} ;
|
||||
|
||||
@@ -21,21 +21,28 @@ lin
|
||||
} ;
|
||||
subjnoun : Str = if_then_Str np.isPron [] (subj.s ! Nom) ;
|
||||
subjpron : Str = if_then_Str np.isPron (subj.s ! Nom) [] ;
|
||||
obj : {p1,p2 : Str} = vp.comp ! subj.a ;
|
||||
stm : Str =
|
||||
case <isQ,p,vp.pred,subj.a> of {
|
||||
<False,Pos,Copula|NoCopula,Sg3 _|Impers> => "waa" ;
|
||||
<True ,Pos,_ ,_ > => "ma" ;
|
||||
_ => case <np.isPron,p> of {
|
||||
<True,Pos> => "waa" ++ subjpron ; -- to force some string from NP to show in the tree
|
||||
<True,Neg> => {-glue obj.p2-} "ma" ++ subjpron ;
|
||||
<False> => stmarkerNoContr ! subj.a ! p }} ;
|
||||
obj : {p1,p2 : Str} =
|
||||
let o : {p1,p2 : Str} = vp.comp ! subj.a ;
|
||||
in case p of {
|
||||
Pos => o ;
|
||||
Neg => {p2 = [] ; p1 = o.p1 ++ o.p2 ++ BIND} -- object pronoun, prepositions and negation all contract
|
||||
} ;
|
||||
stm : Str = case <isQ,p,vp.pred,subj.a> of {
|
||||
<False,Pos,Copula|NoCopula,Sg3 _|Impers> => "waa" ;
|
||||
<True ,Pos,_ ,_ > => "ma" ;
|
||||
_ => case <np.isPron,p> of {
|
||||
<True,Pos> => "waa" ++ subjpron ; -- to force some string from NP to show in the tree
|
||||
<True,Neg> => "ma" ++ subjpron ;
|
||||
<False> => stmarkerNoContr ! subj.a ! p
|
||||
}
|
||||
} ;
|
||||
|
||||
in subjnoun -- subject if it's a noun
|
||||
++ obj.p1 -- object if it's a noun
|
||||
++ stm -- sentence type marker + possible subj. pronoun
|
||||
++ stm -- sentence type marker + possible subj. pronoun
|
||||
++ vp.adv ---- TODO word order
|
||||
++ obj.p2 -- if_then_Pol p obj.p2 [] -- object if it's a pronoun
|
||||
++ obj.p2 -- object if it's a pronoun
|
||||
++ vp.secObj -- "second object"
|
||||
++ pred.inf -- potential infinitive/participle
|
||||
++ pred.fin -- the verb inflected
|
||||
} ;
|
||||
|
||||
Reference in New Issue
Block a user