diff --git a/lib/src/slovenian/CatSlv.gf b/lib/src/slovenian/CatSlv.gf index 2603f4c1b..f5d0917ef 100644 --- a/lib/src/slovenian/CatSlv.gf +++ b/lib/src/slovenian/CatSlv.gf @@ -6,6 +6,8 @@ lincat -- Verb VP = ResSlv.VP ; + VPSlash = ResSlv.VP ** {c2 : Prep} ; + Comp = {s : Agr => Str} ; -- Adjective AP = {s : Species => Gender => Case => Number => Str} ; @@ -28,7 +30,8 @@ lincat Prep = {s : Str; c : Case} ; -- Open lexical classes, e.g. Lexicon - V = {s : VForm => Str}; + V = {s : VForm => Str}; + V2 = {s : VForm => Str; c2 : Prep}; A = {s : AForm => Str}; diff --git a/lib/src/slovenian/ParadigmsSlv.gf b/lib/src/slovenian/ParadigmsSlv.gf index 56673d226..51cb40524 100644 --- a/lib/src/slovenian/ParadigmsSlv.gf +++ b/lib/src/slovenian/ParadigmsSlv.gf @@ -70,7 +70,10 @@ oper VImper2 Pl => imp2pl } }; - + + mkV2 : V -> V2 = + \v -> v ** {c2 = lin Prep {s=""; c=Acc}} ; + mkA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A = \positMSgNom,positMSgNomDef,positMSgGen,positMSgDat,positMSgAcc,positMSgAccIndef,positMSgAccDef,positMSgLoc,positMSgInstr, positMDlNom,positMDlGen,positMDlDat,positMDlAcc,positMDlLoc,positMDlInstr, diff --git a/lib/src/slovenian/ResSlv.gf b/lib/src/slovenian/ResSlv.gf index 22ce6db0d..15a7fd185 100644 --- a/lib/src/slovenian/ResSlv.gf +++ b/lib/src/slovenian/ResSlv.gf @@ -30,15 +30,16 @@ param oper Agr = {g : Gender; n : Number; p : Person} ; - VP = {s : Tense => Agr => Str} ; - + VP = {s : Tense => Agr => Str; s2 : Agr => Str} ; + predV : (VForm => Str) -> VP = \v -> { s = table { Pres => \\a => v ! VPres a.n a.p ; Past => \\a => "biti" ++ v ! VPastPart a.g a.n ; Fut => \\a => "biti" ++ v ! VPastPart a.g a.n ; Cond => \\a => "bi" ++ v ! VPastPart a.g a.n - } + } ; + s2= \\a => "" } ; Clause : Type = { @@ -48,7 +49,11 @@ oper mkClause : Str -> Agr -> VP -> Clause = \subj,agr,vp -> { s = \\t,a,p => - subj ++ vp.s ! t ! agr + subj ++ vp.s ! t ! agr ++ vp.s2 ! agr + } ; + + insertObj : (Agr => Str) -> VP -> VP = \obj,vp -> vp ** { + s2 = \\a => vp.s2 ! a ++ obj ! a ; } ; } diff --git a/lib/src/slovenian/VerbSlv.gf b/lib/src/slovenian/VerbSlv.gf index 2da684bae..6b1fca683 100644 --- a/lib/src/slovenian/VerbSlv.gf +++ b/lib/src/slovenian/VerbSlv.gf @@ -3,4 +3,9 @@ concrete VerbSlv of Verb = CatSlv ** open ResSlv, Prelude in { lin UseV v = predV v.s ; + SlashV2a v = predV v.s ** {c2 = v.c2} ; + + ComplSlash vp np = + insertObj (\\_ => vp.c2.s ++ np.s ! vp.c2.c) vp ; + }