From 01ca4966dd9700d5adb0e222c44a0f5445a0e95d Mon Sep 17 00:00:00 2001 From: krangelov Date: Sun, 26 Apr 2020 22:36:29 +0200 Subject: [PATCH] fix: several rules were droping clitics --- src/bulgarian/ExtendBul.gf | 18 ++++++++++++------ src/bulgarian/ResBul.gf | 11 ++++++++--- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/bulgarian/ExtendBul.gf b/src/bulgarian/ExtendBul.gf index 56cf508f..38f8a530 100644 --- a/src/bulgarian/ExtendBul.gf +++ b/src/bulgarian/ExtendBul.gf @@ -72,9 +72,10 @@ lin {s = vp.ad.s ++ vp.s ! Imperf ! VGerund ++ case vp.vtype of { - VNormal => "" ; - VMedial c => reflClitics ! c ; - VPhrasal c => personalClitics (agrP3 (GSg Masc)) ! c + VNormal => vp.clitics ; + VMedial c => vp.clitics++reflClitics ! c ; + VPhrasal Dat => personalClitics (agrP3 (GSg Masc)) ! Dat++vp.clitics ; + VPhrasal c => vp.clitics++personalClitics (agrP3 (GSg Masc)) ! c } ++ vp.compl ! {gn=GSg Neut; p=P3}} ; @@ -102,9 +103,14 @@ lin UttVPShort vp = { s = let agr = agrP3 (GSg Neut) ; clitic = case vp.vtype of { - VNormal => {s=[]; agr=agr} ; - VMedial c => {s=reflClitics ! c; agr=agr} ; - VPhrasal c => {s=personalClitics agr ! c; agr={gn=GSg Neut; p=P3}} + VNormal => {s=vp.clitics; agr=agr} ; + VMedial c => {s=vp.clitics++reflClitics ! c; agr=agr} ; + VPhrasal c => {s=case c of { + Dat => personalClitics agr ! c++vp.clitics; + c => vp.clitics++personalClitics agr ! c + } ; + agr={gn=GSg Neut; p=P3} + } } ; in vp.ad.s ++ clitic.s ++ vp.s ! Imperf ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ++ diff --git a/src/bulgarian/ResBul.gf b/src/bulgarian/ResBul.gf index 37fee66a..3e53da1f 100644 --- a/src/bulgarian/ResBul.gf +++ b/src/bulgarian/ResBul.gf @@ -613,9 +613,14 @@ resource ResBul = ParamX ** open Prelude, Predef in { \vp -> let agr = {gn = GSg Neut; p = P1}; clitic = case vp.vtype of { - VNormal => {s=[]; agr=agr} ; - VMedial c => {s=reflClitics ! c; agr=agr} ; - VPhrasal c => {s=personalClitics agr ! c; agr={gn=GSg Neut; p=P3}} + VNormal => {s=vp.clitics; agr=agr} ; + VMedial c => {s=vp.clitics++reflClitics ! c; agr=agr} ; + VPhrasal c => {s=case c of { + Dat => personalClitics agr ! Dat++vp.clitics; + _ => vp.clitics++personalClitics agr ! c + }; + agr={gn=GSg Neut; p=P3} + } } ; in vp.ad.s ++ vp.s ! Imperf ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ++ clitic.s ++