From be8f2a43d1e4b0cfad8bb5faf9f1f62dd67a8ab9 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Thu, 4 Jun 2020 08:28:18 +0200 Subject: [PATCH] (Hun) Add `mkN : Str -> N -> N` for compound nouns --- src/hungarian/LexiconHun.gf | 2 +- src/hungarian/ParadigmsHun.gf | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/hungarian/LexiconHun.gf b/src/hungarian/LexiconHun.gf index fd832b4fc..77da47a4b 100644 --- a/src/hungarian/LexiconHun.gf +++ b/src/hungarian/LexiconHun.gf @@ -79,7 +79,7 @@ lin computer_N = mkN "számítógép" "számítógépet" ; lin correct_A = mkA "igaz" ; -- lin count_V2 = mkV2 "" ; lin country_N = mkN "ország" "országot" "országok" "országa" ; -lin cousin_N = mkN "unokatestvér" "unokatestvért"; --short "unoka" +lin cousin_N = mkN "unoka" (mkN "testvér" "testvért") ; --short "unoka" lin cow_N = mkN "tehén" ; -- lin cut_V2 = mkV2 "" ; -- diff --git a/src/hungarian/ParadigmsHun.gf b/src/hungarian/ParadigmsHun.gf index da0b419c0..36f5c5b26 100644 --- a/src/hungarian/ParadigmsHun.gf +++ b/src/hungarian/ParadigmsHun.gf @@ -22,8 +22,8 @@ oper mkN : (sgnom, sggen : Str) -> N ; -- Singular nominative and accusative. Use: `mkN "név" "nevet"` mkN : (sgnom, sggen, plnom : Str) -> N ; -- Singular nominative, singular accusative, plural nominative. Use: `mkN "falu" "falut" "falvak"` mkN : (sgnom, sggen, plnom, sgnom_possdSg3 : Str) -> N ; -- Singular nominative, singular accusative, plural nominative, singular nominative possessed by 3rd person singular. Use: `mkN "virág" "virágot" "virágok" "virága"` (would give "virágja" otherwise) - mkN : (férfi : Str) -> (harm : Harmony) -> (ak : Str) -> N ; -- Noun with unpredictable vowel harmony and plural allomorph + mkN : (unoka : Str) -> (testvér : N) -> N ; -- Compound noun. Use: `mkN "unoka" (mkN "testvér")` (would give wrong harmony with `mkN "unokatestvér"`) } ; mkPN : overload { @@ -135,6 +135,9 @@ oper mkN : (x1,_,_,x4 : Str) -> N = \n,a,pln,possd -> lin N (regNoun4 n a pln possd) ; + mkN : (unoka : Str) -> (testvér : N) -> N = -- Compound noun: e.g. `mkN "unoka" (mkN "testvér")`. + \prefix,n -> n ** {s = \\x => prefix + n.s ! x} ; + mkN : (x1,_,_,_,_,_,_,_,x9 : Str) -> N = \a,b,c,d,e,f,g,h,i -> lin N (worstCaseNoun a b c d e f g h i (getHarm a)) ;