1
0
forked from GitHub/gf-rgl

Fix word order error in IdiomEst.ExistNP and IdiomEst.ExistIP

This commit is contained in:
Inari Listenmaa
2017-08-17 16:05:44 +03:00
parent 8f2020517f
commit ca9bc14d02
2 changed files with 20 additions and 8 deletions

View File

@@ -9,16 +9,16 @@ concrete IdiomEst of Idiom = CatEst **
cas : Polarity -> NPForm = \p -> case p of { cas : Polarity -> NPForm = \p -> case p of {
Pos => NPCase Nom ; -- on olemas lammas Pos => NPCase Nom ; -- on olemas lammas
Neg => NPCase Part -- ei ole olemas lammast Neg => NPCase Part -- ei ole olemas lammast
} } ;
vp = insertObj (\\_,b,_ => "olemas" ++ np.s ! cas b) (predV olla)
in in
mkClause noSubj (agrP3 Sg) (insertObj existClause noSubj (agrP3 Sg) vp ;
(\\_,b,_ => "olemas" ++ np.s ! cas b) (predV olla)) ;
ExistIP ip = ExistIP ip =
let let
cas : NPForm = NPCase Nom ; ---- also partitive in Extra cas : NPForm = NPCase Nom ; ---- also partitive in Extra
vp = insertObj (\\_,b,_ => "olemas") (predV olla) ; vp = insertObj (\\_,b,_ => "olemas") (predV olla) ;
cl = mkClause (subjForm (ip ** {isPron = False ; a = agrP3 ip.n}) cas) (agrP3 Sg) vp cl = existClause (subjForm (ip ** {isPron = False ; a = agrP3 ip.n}) cas) (agrP3 Sg) vp
in { in {
s = \\t,a,p => cl.s ! t ! a ! p ! SDecl s = \\t,a,p => cl.s ! t ! a ! p ! SDecl
} ; } ;

View File

@@ -304,9 +304,8 @@ oper
-- Not sure if SInv is needed, but keeping it for possible future use. -- Not sure if SInv is needed, but keeping it for possible future use.
-- There's need for an inverted word order with auxiliary verbs; infVP handles that. ComplVV calls infVP, which inverts the word order for the complement VP, and puts it into the resulting VP's `compl' field. -- There's need for an inverted word order with auxiliary verbs; infVP handles that. ComplVV calls infVP, which inverts the word order for the complement VP, and puts it into the resulting VP's `compl' field.
-- SInv made by mkClause would be for cases where you just need to construct an inverted word order, and then call it from some other place; application grammar (TODO: api oper for SType) or ExtraEst. -- SInv made by mkClause would be for cases where you just need to construct an inverted word order, and then call it from some other place; application grammar (TODO: api oper for SType) or ExtraEst.
mkClause : (Polarity -> Str) -> Agr -> VP -> Clause = mkClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp ->
\sub,agr,vp -> { { s = \\t,a,b =>
s = \\t,a,b =>
let let
c = (mkClausePlus sub agr vp).s ! t ! a ! b ; c = (mkClausePlus sub agr vp).s ! t ! a ! b ;
-- saan sinust aru 0 -- saan sinust aru 0
@@ -323,6 +322,19 @@ oper
} }
} ; } ;
existClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp ->
{ s = \\t,a,b =>
let
c = (mkClausePlus sub agr vp).s ! t ! a ! b ;
-- (mis) on olnud olemas (lammas)
declCl = c.subj ++ c.fin ++ c.inf ++ c.compl ;
in
table {
SQuest => "kas" ++ declCl ;
_ => declCl
}
} ;
mkClausePlus : (Polarity -> Str) -> Agr -> VP -> ClausePlus = mkClausePlus : (Polarity -> Str) -> Agr -> VP -> ClausePlus =
\sub,agr,vp -> { \sub,agr,vp -> {
s = \\t,a,b => s = \\t,a,b =>
@@ -342,6 +354,7 @@ oper
} }
} ; } ;
insertKinClausePlus : Predef.Ints 1 -> ClausePlus -> ClausePlus = \p,cl -> { insertKinClausePlus : Predef.Ints 1 -> ClausePlus -> ClausePlus = \p,cl -> {
s = \\t,a,b => s = \\t,a,b =>
let let
@@ -383,7 +396,6 @@ oper
subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b -> subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b ->
appCompl False b {s = [] ; c = sc ; isPre = True} np ; appCompl False b {s = [] ; c = sc ; isPre = True} np ;
infVP : NPForm -> Polarity -> Agr -> VP -> InfForm -> Str = infVP : NPForm -> Polarity -> Agr -> VP -> InfForm -> Str =
\sc,pol,agr,vp,vi -> \sc,pol,agr,vp,vi ->
let let