From ead812e2b07b6590a6a24e36f6b85faa8c3b979a Mon Sep 17 00:00:00 2001 From: krasimir Date: Fri, 6 May 2016 08:29:25 +0000 Subject: [PATCH] imperatives in Slovenian --- lib/src/slovenian/CatSlv.gf | 1 + lib/src/slovenian/PhraseSlv.gf | 4 ++++ lib/src/slovenian/ResSlv.gf | 18 ++++++++---------- lib/src/slovenian/SentenceSlv.gf | 4 ++++ lib/src/slovenian/VerbSlv.gf | 11 +++++++++-- 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/lib/src/slovenian/CatSlv.gf b/lib/src/slovenian/CatSlv.gf index f5d0917ef..92bab6ac2 100644 --- a/lib/src/slovenian/CatSlv.gf +++ b/lib/src/slovenian/CatSlv.gf @@ -3,6 +3,7 @@ concrete CatSlv of Cat = CommonX ** open ResSlv, (P=ParamX) in { lincat -- Sentence Cl = {s : P.Tense => P.Anteriority => P.Polarity => Str} ; + Imp = {s : P.Polarity => Gender => Number => Str} ; -- Verb VP = ResSlv.VP ; diff --git a/lib/src/slovenian/PhraseSlv.gf b/lib/src/slovenian/PhraseSlv.gf index f169fc502..e7aa543f6 100644 --- a/lib/src/slovenian/PhraseSlv.gf +++ b/lib/src/slovenian/PhraseSlv.gf @@ -4,6 +4,10 @@ concrete PhraseSlv of Phrase = CatSlv ** open Prelude, ResSlv in { PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ; UttS s = s ; + UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! Masc ! Sg} ; + UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Masc ! Sg} ; + UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Masc ! Sg} ; + UttNP np = {s = np.s ! Nom} ; UttAdv adv = adv ; UttCN n = {s = n.s ! Indef ! Nom ! Sg} ; diff --git a/lib/src/slovenian/ResSlv.gf b/lib/src/slovenian/ResSlv.gf index 5bb56be86..327a25265 100644 --- a/lib/src/slovenian/ResSlv.gf +++ b/lib/src/slovenian/ResSlv.gf @@ -30,16 +30,14 @@ param oper Agr = {g : Gender; n : Number; p : Person} ; - VP = {s : Tense => Agr => Str; s2 : Agr => Str} ; + VP = {s : VForm => Str; s2 : Agr => Str} ; - predV : (VForm => Str) -> VP = - \v -> { s = table { - Pres => \\a => v ! VPres a.n a.p ; - Past => \\a => sem_V ! a.n ! a.p ++ v ! VPastPart a.g a.n ; - Fut => \\a => bom_V ! a.n ! a.p ++ v ! VPastPart a.g a.n ; - Cond => \\a => "bi" ++ v ! VPastPart a.g a.n - } ; - s2= \\a => "" + predV : (VForm => Str) -> Tense => Agr => Str = + \v -> table { + Pres => \\a => v ! VPres a.n a.p ; + Past => \\a => sem_V ! a.n ! a.p ++ v ! VPastPart a.g a.n ; + Fut => \\a => bom_V ! a.n ! a.p ++ v ! VPastPart a.g a.n ; + Cond => \\a => "bi" ++ v ! VPastPart a.g a.n } ; sem_V : Number => Person => Str = @@ -87,7 +85,7 @@ oper mkClause : Str -> Agr -> VP -> Clause = \subj,agr,vp -> { s = \\t,a,p => - subj ++ vp.s ! t ! agr ++ vp.s2 ! agr + subj ++ predV vp.s ! t ! agr ++ vp.s2 ! agr } ; insertObj : (Agr => Str) -> VP -> VP = \obj,vp -> vp ** { diff --git a/lib/src/slovenian/SentenceSlv.gf b/lib/src/slovenian/SentenceSlv.gf index 4c6b16967..c73f25538 100644 --- a/lib/src/slovenian/SentenceSlv.gf +++ b/lib/src/slovenian/SentenceSlv.gf @@ -3,6 +3,10 @@ concrete SentenceSlv of Sentence = CatSlv ** open Prelude, ResSlv in { lin PredVP np vp = mkClause (np.s ! Nom) np.a vp ; + ImpVP vp = { + s = \\pol,g,n => vp.s ! VImper2 n ++ vp.s2 ! {g=g; n=n; p=P2} ; + } ; + UseCl t p cl = { s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p } ; diff --git a/lib/src/slovenian/VerbSlv.gf b/lib/src/slovenian/VerbSlv.gf index 6b1fca683..05d92bb1a 100644 --- a/lib/src/slovenian/VerbSlv.gf +++ b/lib/src/slovenian/VerbSlv.gf @@ -1,9 +1,16 @@ concrete VerbSlv of Verb = CatSlv ** open ResSlv, Prelude in { lin - UseV v = predV v.s ; + UseV v = + { s = v.s ; + s2 = \\a => "" + } ; - SlashV2a v = predV v.s ** {c2 = v.c2} ; + SlashV2a v = + { s = v.s ; + s2 = \\a => "" ; + c2 = v.c2 + } ; ComplSlash vp np = insertObj (\\_ => vp.c2.s ++ np.s ! vp.c2.c) vp ;