diff --git a/src/estonian/IdiomEst.gf b/src/estonian/IdiomEst.gf index ddfdc157d..b7e50c81c 100644 --- a/src/estonian/IdiomEst.gf +++ b/src/estonian/IdiomEst.gf @@ -9,16 +9,16 @@ concrete IdiomEst of Idiom = CatEst ** cas : Polarity -> NPForm = \p -> case p of { Pos => NPCase Nom ; -- on olemas lammas Neg => NPCase Part -- ei ole olemas lammast - } + } ; + vp = insertObj (\\_,b,_ => "olemas" ++ np.s ! cas b) (predV olla) in - mkClause noSubj (agrP3 Sg) (insertObj - (\\_,b,_ => "olemas" ++ np.s ! cas b) (predV olla)) ; + existClause noSubj (agrP3 Sg) vp ; ExistIP ip = let cas : NPForm = NPCase Nom ; ---- also partitive in Extra 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 { s = \\t,a,p => cl.s ! t ! a ! p ! SDecl } ; diff --git a/src/estonian/ResEst.gf b/src/estonian/ResEst.gf index ae3040888..1dc763b62 100644 --- a/src/estonian/ResEst.gf +++ b/src/estonian/ResEst.gf @@ -304,9 +304,8 @@ oper -- 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. -- 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 = - \sub,agr,vp -> { - s = \\t,a,b => + mkClause : (Polarity -> Str) -> Agr -> VP -> Clause = \sub,agr,vp -> + { s = \\t,a,b => let c = (mkClausePlus sub agr vp).s ! t ! a ! b ; -- 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 = \sub,agr,vp -> { s = \\t,a,b => @@ -342,6 +354,7 @@ oper } } ; + insertKinClausePlus : Predef.Ints 1 -> ClausePlus -> ClausePlus = \p,cl -> { s = \\t,a,b => let @@ -383,7 +396,6 @@ oper subjForm : NP -> NPForm -> Polarity -> Str = \np,sc,b -> appCompl False b {s = [] ; c = sc ; isPre = True} np ; - infVP : NPForm -> Polarity -> Agr -> VP -> InfForm -> Str = \sc,pol,agr,vp,vi -> let