From e2e0fca9172bd2f6d03ad464d87e0600e05a4728 Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Mon, 28 Sep 2026 06:52:54 +0200 Subject: [PATCH] simplifications --- src/kazakh/ConjunctionKaz.gf | 51 +++++++++++++++++++++++++++++------- src/kazakh/IdiomKaz.gf | 16 +++++++++-- src/kazakh/ResKaz.gf | 6 ----- 3 files changed, 55 insertions(+), 18 deletions(-) diff --git a/src/kazakh/ConjunctionKaz.gf b/src/kazakh/ConjunctionKaz.gf index e373c770..dd9f99d7 100644 --- a/src/kazakh/ConjunctionKaz.gf +++ b/src/kazakh/ConjunctionKaz.gf @@ -8,14 +8,45 @@ concrete ConjunctionKaz of Conjunction = CatKaz ** open ResKaz in { lin BaseNP x y = {s1=\\c => x.s ! c;s2=\\c => y.s ! c;a={p=P3;n=Pl}} ; ConsNP x xs = {s1=\\c => x.s ! c ++ "," ++ xs.s1 ! c;s2=xs.s2;a={p=P3;n=Pl}} ; - ConjNP c xs = {s=\\k => coord c.s (xs.s1 ! k) (xs.s2 ! k);a=xs.a} ; - BaseAP x y = {s1=x.s;s2=y.s} ; ConsAP x xs = {s1=x.s ++ "," ++ xs.s1;s2=xs.s2} ; - ConjAP c xs = {s=coord c.s xs.s1 xs.s2} ; - BaseAdv x y = {s1=x.s;s2=y.s} ; ConsAdv x xs = {s1=x.s ++ "," ++ xs.s1;s2=xs.s2} ; - ConjAdv c xs = {s=coord c.s xs.s1 xs.s2} ; - BaseS x y = {s1=x.s;s2=y.s} ; ConsS x xs = {s1=x.s ++ "," ++ xs.s1;s2=xs.s2} ; - ConjS c xs = {s=coord c.s xs.s1 xs.s2} ; - BaseCN x y = {s1=x;s2=y} ; ConsCN x xs = {s1=x;s2=xs.s2} ; - ConjCN c xs = {s=\\k,n => coord c.s (xs.s1.s ! k ! n) (xs.s2.s ! k ! n); - poss=\\o,p,n => coord c.s (xs.s1.poss ! o ! p ! n) (xs.s2.poss ! o ! p ! n)} ; + ConjNP c xs = { + s=\\k => xs.s1 ! k ++ c.s ++ xs.s2 ! k; + a=xs.a + } ; + BaseAP x y = {s1=x.s;s2=y.s} ; + ConsAP x xs = {s1=x.s ++ "," ++ xs.s1;s2=xs.s2} ; + ConjAP c xs = {s=xs.s1 ++ c.s ++ xs.s2} ; + BaseAdv x y = { + s1=x.s; + s2=y.s + } ; + ConsAdv x xs = { + s1=x.s ++ "," ++ xs.s1; + s2=xs.s2 + } ; + ConjAdv c xs = { + s=xs.s1 ++ c.s ++ xs.s2 + } ; + BaseS x y = { + s1=x.s; + s2=y.s + } ; + ConsS x xs = { + s1=x.s ++ "," ++ xs.s1; + s2=xs.s2 + } ; + ConjS c xs = { + s=xs.s1 ++ c.s ++ xs.s2 + } ; + BaseCN x y = { + s1=x; + s2=y + } ; + ConsCN x xs = { + s1=x; + s2=xs.s2 + } ; + ConjCN c xs = { + s=\\k,n => xs.s1.s ! k ! n ++ c.s ++ xs.s2.s ! k ! n; + poss=\\o,p,n => xs.s1.poss ! o ! p ! n ++ c.s ++ xs.s2.poss ! o ! p ! n + } ; } diff --git a/src/kazakh/IdiomKaz.gf b/src/kazakh/IdiomKaz.gf index 7babcae2..b682821d 100644 --- a/src/kazakh/IdiomKaz.gf +++ b/src/kazakh/IdiomKaz.gf @@ -7,7 +7,19 @@ concrete IdiomKaz of Idiom = CatKaz ** open ResKaz, ParadigmsKaz in { fut=\\_ => ip.s ++ "болады";cond=\\_ => ip.s ++ "болар еді";anter=\\_ => ip.s ++ "болған"} ; ImpersCl vp = mkClause {s=\\_ => [];a=defaultAgr} vp ; GenericCl vp = mkClause {s=\\_ => "адам";a=defaultAgr} vp ; - CleftNP np rs = stringClause (np.s ! Nom ++ rs.s) ; - CleftAdv adv s = stringClause (adv.s ++ s.s) ; + CleftNP np rs = { + pres=\\_ => np.s ! Nom ++ rs.s; + past=\\_ => np.s ! Nom ++ rs.s; + fut=\\_ => np.s ! Nom ++ rs.s; + cond=\\_ => np.s ! Nom ++ rs.s; + anter=\\_ => np.s ! Nom ++ rs.s + } ; + CleftAdv adv s = { + pres=\\_ => adv.s ++ s.s; + past=\\_ => adv.s ++ s.s; + fut=\\_ => adv.s ++ s.s; + cond=\\_ => adv.s ++ s.s; + anter=\\_ => adv.s ++ s.s + } ; ImpPl1 vp = {s=vp.imperative!Pos!Informal!Pl} ; } diff --git a/src/kazakh/ResKaz.gf b/src/kazakh/ResKaz.gf index 78836d14..c1bbb71a 100644 --- a/src/kazakh/ResKaz.gf +++ b/src/kazakh/ResKaz.gf @@ -393,10 +393,4 @@ oper mkClause : NPForm -> Verb -> Clause = \np,vp -> { anter = \\pol => np.s ! Nom ++ selectVerb vp P.Past P.Anter pol np.a } ; -oper stringClause : Str -> Clause = \s -> { - pres=\\_ => s; past=\\_ => s; fut=\\_ => s; cond=\\_ => s; anter=\\_ => s - } ; - -oper coord : Str -> Str -> Str -> Str = \c,x,y -> x ++ c ++ y ; - }