diff --git a/lib/src/polish/LexiconPol.gf b/lib/src/polish/LexiconPol.gf index 9a6e66b9f..def21d696 100644 --- a/lib/src/polish/LexiconPol.gf +++ b/lib/src/polish/LexiconPol.gf @@ -5,7 +5,7 @@ -- Adam Slaski, 2009, 2010 concrete LexiconPol of Lexicon = CatPol, LexiconNounPol ** - open Prelude, MorphoPol in { + open Prelude, MorphoPol, (PP = ParadigmsPol) in { flags optimize =values ; coding =utf8 ; diff --git a/lib/src/polish/OrigMorphoPol.gf b/lib/src/polish/OrigMorphoPol.gf new file mode 100644 index 000000000..f8d046e09 --- /dev/null +++ b/lib/src/polish/OrigMorphoPol.gf @@ -0,0 +1,278 @@ +--# -path=.:../prelude:../common:../abstract +--# -coding=utf8 + +--1 A polish Resource Morphology +-- +-- Ilona Nowak, Wintersemester 2007/08 +-- +-- Adam Slaski, 2009 +-- +-- This resource morphology contains definitions +-- of the lexical entries needed in the resource syntax. +-- It moreover contains copies of the most usual inflectional patterns. + +-- I use the parameter types and word classes defined for morphology. + +resource OrigMorphoPol = + ResPol, + VerbMorphoPol, + PronounMorphoPol, + AdjectiveMorphoPol, + OrigNounMorphoPol ** open Prelude, (Predef=Predef) in { + + flags coding=utf8; + +-- definitions for structural objects + + oper + wszyscy : NounPhrase = { + nom = "wszyscy" ; + voc = "wszyscy" ; + dep = table { + (GenNoPrep|GenPrep) => "wszystkich"; + (DatNoPrep|DatPrep) => "wszystkim"; + (AccNoPrep|AccPrep) => "wszystkich"; + InstrC => "wszystkimi"; + LocPrep => "wszystkich" + }; + p = P3 ; + gn = MascPersPl -- in fact it is plurale tantum ver. 3 + }; + + wszystko : NounPhrase = { + nom = "wszystko" ; + voc = "wszystko" ; + dep = table { + (GenNoPrep|GenPrep) => "wszystkiego"; + (DatNoPrep|DatPrep) => "wszystkiemu"; + (AccNoPrep|AccPrep) => "wszystko"; + InstrC => "wszystkim"; + LocPrep => "wszystkim" + }; + p = P3; + gn = NeutSg -- in fact it is plurale tantum ver. 3 + }; + + ktos : NounPhrase = { + nom = "ktoś" ; + voc = "ktosiu" ; + dep = table { + (GenNoPrep|GenPrep) => "kogoś"; + (DatNoPrep|DatPrep) => "komuś"; + (AccNoPrep|AccPrep) => "kogoś"; + InstrC => "kimś"; + LocPrep => "kimś" + }; + p = P3 ; + gn = MascPersSg + }; + + cos : NounPhrase = { + nom = "coś" ; + voc = "coś" ; + dep = table { + (GenNoPrep|GenPrep) => "czegoś"; + (DatNoPrep|DatPrep) => "czemuś"; + (AccNoPrep|AccPrep) => "coś"; + InstrC => "czymś"; + LocPrep => "czymś" + }; + p = P3 ; + gn = NeutSg + }; + + + kto : NounPhrase = { + nom = "kto" ; + voc = "kto" ; + dep = table { + (GenNoPrep|GenPrep) => "kogo"; + (DatNoPrep|DatPrep) => "komu"; + (AccNoPrep|AccPrep) => "kogo"; + InstrC => "kim"; + LocPrep => "kim" + }; + p = P3 ; + gn = MascPersSg + }; + + co : NounPhrase = { + nom = "co" ; + voc = "co" ; + dep = table { + (GenNoPrep|GenPrep) => "czego"; + (DatNoPrep|DatPrep) => "czemu"; + (AccNoPrep|AccPrep) => "co"; + InstrC => "czym"; + LocPrep => "czym" + }; + p = P3 ; + gn = NeutSg + }; + + kazdyDet : Determiner = { + s,sp = table { + Nom => table {Masc _ => "każdy"; Fem => "każda"; (Neut|NeutGr|Plur) => "każde" }; + Gen => table {Masc _ => "każdego"; Fem => "każdą"; (Neut|NeutGr|Plur) => "każdego" }; + Dat => table {Masc _ => "każdemu"; Fem => "każdej"; (Neut|NeutGr|Plur) => "każdemu" }; + Acc => table {Masc (Personal|Animate) => "każdego"; Masc Inanimate => "każdy"; Fem => "każdą"; (Neut|NeutGr|Plur) => "każde" }; + Instr => table {Masc _ => "każdym"; Fem => "każdą"; (Neut|NeutGr|Plur) => "każdym" }; + Loc => table {Masc _ => "każdym"; Fem => "każdej"; (Neut|NeutGr|Plur) => "każdym" }; + VocP => table {Masc _ => "każdy"; Fem => "każda"; (Neut|NeutGr|Plur) => "każde" } + }; + n = Sg; + a = NoA; + }; + + pareDet : Determiner = { + s,sp = table { + Nom => table {Masc Personal => "paru"; _ => "parę" }; + Gen => table { _ => "paru" }; + Dat => table { _ => "paru" }; + Acc => table {Masc Personal => "paru"; _ => "parę" }; + Instr => table { _ => "paroma" }; + Loc => table { _ => "paru" }; + VocP => table {Masc Personal => "paru"; _ => "parę" } + }; + n = Pl; + a = StoA + }; + + wieleDet : Determiner = { + s,sp = table { + Nom => table {Masc Personal => "wielu"; _ => "wiele" }; + Gen => table { _ => "wielu" }; + Dat => table { _ => "wielu" }; + Acc => table {Masc Personal => "wielu"; _ => "wiele" }; + Instr => table { _ => "wieloma" }; + Loc => table { _ => "wielu" }; + VocP => table {Masc Personal => "wielu"; _ => "wiele" } + }; + n = Pl; + a = StoA + }; + + duzoDet : Determiner = { + s,sp = \\_,_=>"dużo";{- + table { + Nom => table { _ => "dużo" }; + Gen => table { _ => "dużo" }; + Dat => table { _ => variants {} }; + Acc => table { _ => "dużo" }; + Instr => table { _ => variants {} }; + Loc => table { _ => variants {} }; + VocP => table {_ => "dużo" } + };-} + n = Pl; + a = StoA + }; + + ileDet : IDeterminer = { + s = table { + Nom => table {Masc Personal => "ilu"; _ => "ile" }; + Gen => table { _ => "ilu" }; + Dat => table { _ => "ilu" }; + Acc => table {Masc Personal => "ilu"; _ => "ile" }; + Instr => table { _ => "ilu" }; + Loc => table { _ => "ilu" }; + VocP => table {Masc Personal => "ilu"; _ => "ile" } + }; + n = Sg; + a = StoA + }; + + -- for "nobody", "noone", "none" + oper niktNP : NounPhrase = + { voc,nom="nikt"; + dep = table { + (GenNoPrep|GenPrep) => "nikogo"; + (DatNoPrep|DatPrep) => "nikomu"; + (AccNoPrep|AccPrep) => "nikogo"; + InstrC => "nikim"; + LocPrep => "nikim" + }; + p=P3; + gn= MascPersSg + }; + +-- for "nothing" + oper nicNP : NounPhrase = + { voc,nom="nic"; + dep = table { + (GenNoPrep|GenPrep) => "niczego"; + (DatNoPrep|DatPrep) => "niczemu"; + (AccNoPrep|AccPrep) => "nic"; + InstrC => "niczym"; + LocPrep => "niczym" + }; + p=P3; + gn= NeutSg + }; + + zadenQuant : { s,sp:AForm=>Str } = {s,sp=table { + AF (MascPersSg|MascAniSg|MascInaniSg) Nom => "żaden"; + AF (MascPersSg|MascAniSg|MascInaniSg) Gen => "żadnego"; + AF (MascPersSg|MascAniSg|MascInaniSg) Dat => "żadnemu"; + AF MascInaniSg Acc => "żaden"; -- który stół widzę + AF (MascPersSg|MascAniSg) Acc => "żadnego"; -- którego psa / przyjaciela widzę + AF (MascPersSg|MascAniSg|MascInaniSg) Instr => "żadnym"; + AF (MascPersSg|MascAniSg|MascInaniSg) Loc => "żadnym"; + AF (MascPersSg|MascAniSg|MascInaniSg) VocP => "żadny"; + + AF FemSg Nom => "żadna" ; + AF FemSg Gen => "żadnej"; + AF FemSg Dat => "żadnej"; + AF FemSg Acc => "żadną"; + AF FemSg Instr => "żadną"; + AF FemSg Loc => "żadnej"; + AF FemSg VocP => "żadna"; + + AF NeutSg Nom => "żadne" ; + AF NeutSg Gen => "żadnego"; + AF NeutSg Dat => "żadnemu"; + AF NeutSg Acc => "żadne"; + AF NeutSg Instr => "żadnym"; + AF NeutSg Loc => "żadnym"; + AF NeutSg VocP => "żadne"; + + AF MascPersPl Nom => "żadni"; + AF (MascPersPl|OthersPl) Nom => "żadne"; + AF (MascPersPl|OthersPl) Gen => "żadnych"; + AF (MascPersPl|OthersPl) Dat => "żadnym"; + AF MascPersPl Acc => "żadnych"; + AF (MascPersPl|OthersPl) Acc => "żadne"; + AF (MascPersPl|OthersPl) Instr => "żadnymi"; + AF (MascPersPl|OthersPl) Loc => "żadnych"; + AF MascPersPl VocP => "żadni"; + AF (MascPersPl|OthersPl) VocP=> "żadne" + }}; + + pewienDet : Determiner = { + s,sp = table { + Nom => table {Masc _ => "pewien"; Fem=>"pewna"; _ => "pewne" }; + Gen => table { Fem=>"pewnej"; _ => "pewnego" }; + Dat => table { Fem=>"pewnej"; _ => "pewnemu" }; + Acc => table { Masc Inanimate => "pewien"; Masc _ => "pewnego"; Fem=>"pewną"; _ => "pewne" }; + Instr => table { Fem=>"pewną"; _=> "pewnym" }; + Loc => table { Fem=>"pewnej"; _=> "pewnym" }; + VocP => table {Masc _ => "pewny"; Fem=>"pewna"; _ => "pewne" } + }; + n = Sg; + a = NoA + }; + + pewniDet : Determiner = { + s,sp = table { + Nom => table {Masc Personal => "pewni"; _ => "pewne" }; + Gen => table { _ => "pewnych" }; + Dat => table { _ => "pewnym" }; + Acc => table {Masc Personal => "pewnych"; _ => "pewne" }; + Instr => table { _ => "pewnymi" }; + Loc => table { _ => "pewnych" }; + VocP => table {Masc Personal => "pewni"; _ => "pewne" } + }; + n = Pl; + a = NoA + }; + +} diff --git a/lib/src/polish/OrigNounMorphoPol.gf b/lib/src/polish/OrigNounMorphoPol.gf new file mode 100644 index 000000000..aaece188e --- /dev/null +++ b/lib/src/polish/OrigNounMorphoPol.gf @@ -0,0 +1,3539 @@ +--# -path=.:../../prelude:../common +--# -coding=utf8 + +--1 A polish Resource Morphology +-- +-- Ilona Nowak, Wintersemester 2007/08 +-- +resource OrigNounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { + + flags coding=utf8; optimize=all_subs; + + +--1 Nouns + +-- Die Eigennamen im Polnischen sind wie +-- die CommNoun (S:SubstForm => Str; gender). +-- Sie werden wie CommNoun dekliniert. Die Endung +-- des Wortes ist immer entscheidend. +-- Deswegen vrauche ich eine Funktion, die +-- ein CommNoun zu einem PN macht. + +-- oper ProperName = {s : SubstForm => Str; g : Gender}; +-- mkProperName : CommNoun -> ProperName = \cn -> +-- {s = \\c => cn.s! (SF Sg c); g=cn.g }; + + +----- Abbreviations used in names of declensions ----- + +-- VA1 - vowel alternation 1: o:ó, ó:o +-- VA2 - vowel alternation 2: a:e, e:o, ę:o, o:e +-- VA3 - vowel alternation 3: ę:ą, ą:ę +-- CA - consonant alternation +-- CL - consonant lengthening +-- CAL - consonant alternation and lengthening +-- F - feminine +-- N - neuter +-- MP - masculine personal +-- MA - masculine animate +-- MI - masculine inanimate + +-- In Polish there are almost 125 main paradigms for noun declension. +-- (the classification of G. Jagodziński) +-- In this work I make only paradigms, that are needed for +-- building lexicon entries. + + +--1.2 Operations for feminine nouns + + +-- oper for feminine, noun ending in -l, +-- no alternation +-- 104 paradigm by Grzegorz Jagodziński +-- by Nowak 104_4 +-- oper nKapiel fo stal in GF lexicon + + oper l_End_F_1 : Str -> CommNoun = \kapiel -> + let + x = kapiel; + in + { s = table { + SF Sg Nom => x; + SF Sg Acc => x; + SF Sg Instr => x + "ą"; + SF Sg _ => x + "i"; + SF Pl Gen => x + "i"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "e" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -dź, +-- consonant alternation in gen, dat, loc, instr Sg +-- and in all plural forms. +-- Vowel alternation in almost all forms. +-- Only nom and acc Sg haven't any changes. +-- 104' paradigm by Grzegorz Jagodziński +-- by Nowak 104'_1 +-- oper nLodz for łódź in GF lexicon +-- dzx = dź +-- ludz = łódź + + oper dzx_End_VA1_CAL_F : Str -> CommNoun = \ludz -> + let + x = vowAlt1 ludz; + y = consAlt x; + z = consLength y; + in + { s = table { + SF Sg Nom => ludz; + SF Sg Acc => ludz; + SF Sg Instr => z + "ą"; + SF Sg _ => y + "i"; + SF Pl Gen => y + "i"; + SF Pl Dat => z + "om"; + SF Pl Instr => z + "ami"; + SF Pl Loc => z + "ach"; + SF Pl _ => z + "e" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -l, +-- vowel alternation in almost all forms. +-- Only nom and dat Sg haven't vowel alternation. +-- 104' paradigm by Grzegorz Jagodziński +-- by Nowak 104'_3 +-- oper nSul for sól in GF lexicon + + oper l_End_VA1_F : Str -> CommNoun = \sul -> + let + x = vowAlt1 sul; + in + { s = table { + SF Sg Nom => sul; + SF Sg Acc => sul; + SF Sg Instr => x + "ą"; + SF Sg _ => x + "i"; + SF Pl Gen => x + "i"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "e" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -w, +-- fleeting e- minus between 2 consonants. +-- 104* paradigm number by Grzegorz Jagodziński +-- by Nowak 104*_1 +-- oper nKonew for krew in GF lexicon + + oper w_End_FleetingEminus_F : Str -> CommNoun = \konew -> + let + x = fleetingEminus konew; + y = consLength x; + in + { s = table { + SF Sg Nom => konew; + SF Sg Acc => konew; + SF Sg Instr => y + "ą"; + SF Sg _ => x + "i"; + SF Pl Gen => x + "i"; + SF Pl Dat => y + "om"; + SF Pl Instr => y + "ami"; + SF Pl Loc => y + "ach"; + SF Pl _ => y + "e" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -ś, +-- subject change: wieś : wsi +-- 104** paradigm by Grzegorz Jagodziński +-- by Nowak 104** +-- oper nWies only for wieś in GF lexicon +-- sx = ś +-- wies = wieś + + oper sx_End_CAL_FleetingIEminus_F : Str -> CommNoun = \wies -> + let + x = consAlt wies; + y = fleetingIEminus x; + z = consLength y; + in + { s = table { + SF Sg Nom => wies; + SF Sg Acc => wies; + SF Sg Instr => z + "ą"; + SF Sg _ => y + "i"; + SF Pl Gen => y + "i"; + SF Pl Dat => z + "om"; + SF Pl Instr => z + "ami"; + SF Pl Loc => z + "ach"; + SF Pl _ => z + "e" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -ń, +-- consonant alternation, consonant lengthening. +-- 105 paradigm by Grzegorz Jagodziński +-- 105_1 by Nowak +-- oper nDlon for dłoń GF lexicon +-- nx = ń +-- dlon = dłoń + + oper nx_End_CAL_F : Str -> CommNoun = \dlon -> + let + x = consAlt dlon; + y = consLength x; + in + { s = table { + SF Sg Nom => dlon; + SF Sg Acc => dlon; + SF Sg Instr => y + "ą"; + SF Sg _ => x + "i"; + SF Pl Gen => x + "i"; + SF Pl Dat => y + "om"; + SF Pl Instr => dlon + "mi"; + SF Pl Loc => y + "ach"; + SF Pl _ => y + "e" + }; + g = Fem + }; + +-- oper for feminine, subject ending in -ć (sieć), +-- -ść (miłość), -ś (pierś), -dź (odpowiedź) +-- consonant alternation on last consonant +-- 106 paradigm by Grzegorz Jagodziński +-- 106_1 by Nowak +-- oper nSiec for miłość, odległość, pierś in GF lexicon +-- cx = ć +-- siec = sieć + + oper cx_End_CAL_F_1 : Str -> CommNoun = \siec -> + let + x = consAlt siec; + y = consLength x; + in + { s = table { + SF Sg Nom => siec; + SF Sg Acc => siec; + SF Sg Instr => y + "ą"; + SF Pl Dat => y + "om"; + SF Pl Instr => y + "ami"; + SF Pl Loc => y + "ach"; + SF _ _ => x + "i" + }; + g = Fem + }; + + +-- oper for nouns having only the plural form +-- 98 by Grzegorz Jagodziński for usta - 98_2 by Nowak +-- 106 by Grzegorz Jagodziński for wnętrzności - 106_2 by Nowak +-- 106 by Grzegorz Jagodziński for drzwi - 106_3 by Nowak +-- 117 by Grzegorz Jagodziński for spodnie - 117_2 by Nowak +-- oper nDrzwi for drzwi, wnętrzności, usta, spodnie in GF-lexicon + + oper onlyPlNoun : Str -> CommNoun = \drzwi -> + let + i = my1Last drzwi; + drzw = last1Minus drzwi; + x = case i of { + "a" => last1Minus drzwi; + "e" => drzw; + "i" => drzwi; + "y" => drzw + "ów"}; + in + { s = table { + SF _ Gen => x; + SF _ Dat => x + "om"; + SF _ Instr => x + "ami"; + SF _ Loc => x + "ach"; + SF _ _ => drzwi + }; + g = Plur + }; + + + +-- oper for feminine, subject ending in -ść (kość), -ć(nić) +-- consonant alternation and lengthening. Similar to nSiec, but different +-- in instr pl in the declension ending sieci-ami, kość-mi. +-- 107 paradigm by Grzegorz Jagodziński +-- 107 by Nowak +-- oper nKosc for kość in GF lexicon +-- cx = ć +-- kosc = kość + + oper cx_End_CAL_F_2 : Str -> CommNoun = \kosc -> + let + x = consAlt kosc; + y = consLength x; + in + { s = table { + SF Sg Nom => kosc; + SF Sg Acc => kosc; + SF Sg Instr => y + "ą"; + SF Pl Dat => y + "om"; + SF Pl Instr => kosc + "mi"; + SF Pl Loc => y + "ach"; + SF _ _ => x + "i" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -c,-cz,-rz,-ż, +-- 108 paradigm by Grzegorz Jagodziński +-- 108 by Nowak +-- oper nNoc for noc in GF lexicon + oper hardened_End_F_1 : Str -> CommNoun = \noc -> + { s = table { + SF Sg Nom => noc; + SF Sg Acc => noc; + SF Sg Instr => noc + "ą"; + SF Sg _ => noc + "y"; + SF Pl Gen => noc + "y"; + SF Pl Dat => noc + "om"; + SF Pl Instr => noc + "ami"; + SF Pl Loc => noc + "ach"; + SF Pl _ => noc + "e" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -sz, +-- fleeting -e between 2 consonants. +-- 109* paradigm by Grzegorz Jagodziński +-- 109* by Nowak +-- oper nWesz for wesz in GF lexicon + + oper sz_End_FleetingEminus_F : Str -> CommNoun = \wesz -> + let + x = fleetingEminus wesz; + in + { s = table { + SF Sg Nom => wesz; + SF Sg Acc => wesz; + SF Sg Instr => x + "ą"; + SF Sg _ => x + "y"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -wa, +-- 112 paradigm by Grzegorz Jagodziński +-- 112 by Nowak +-- oper nKrolowa for królowa (queen) in GF lexicon + + oper wa_na_End_F : Str -> CommNoun = \krolowa -> + let + krolow = last1Minus krolowa; + in + { s = table { + SF Sg Nom => krolowa; + SF Sg Acc => krolow + "ą"; + SF Sg Instr => krolow + "ą"; + SF Sg VocP => krolow + "o"; + SF Sg _ => krolow + "ej"; + SF Pl Gen => krolow + "ych"; + SF Pl Dat => krolow + "ym"; + SF Pl Instr => krolow + "ymi"; + SF Pl Loc => krolow + "ych"; + SF Pl _ => krolow + "e" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -wa, +-- 113'@ paradigm by Grzegorz Jagodziński +-- 113'@ by Nowak +-- oper nReka for ręka in GF lexicon + + oper k_End_Unregulary_VA3_CA_F : Str -> CommNoun = \reka -> + let + x = last1Minus reka; + y = vowAlt3 x; + z = consAlt x; + in + { s = table { + SF Sg Nom => reka; + SF Sg Gen => x + "i"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => z + "e"; + SF Pl Gen => y; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "oma"; + SF Pl Loc => x + "ach"; + SF Pl _ => z + "e" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -k (frytka), -g (ostryga, waga) +-- consonant alternation in dat, loc Sg. +-- 114 paradigm by Grzegorz Jagodziński +-- oper nApteka for fabryka, gramatyka, muzyka, +-- nauka, rzeka, sztuka in GF lexicon + + oper g_k_End_CA_F : Str -> CommNoun = \apteka -> + let + x = last1Minus apteka; + y = consAlt apteka; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "i"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => y + "e"; + SF Pl Gen => x; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "i" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -g, +-- consonant alternation in dat, loc sg, +-- vowel alternation in gen pl: o-ó (droga-dróg). +-- 114' paradigm by Grzegorz Jagodziński +-- by Nowak 114' +-- oper nDroga for podłoga, noga in GF lexicon + + oper g_End_VA1_CA_F : Str -> CommNoun = \droga -> + let + x = last1Minus droga; + y = consAlt droga; + z = vowAlt1 droga; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "i"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => y + "e"; + SF Pl Gen => z; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "i" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -k, +-- consonant alternation in dat, loc sg, +-- fleeting -e plus in gen pl. +-- 114* paradigm by Grzegorz Jagodziński +-- by Nowak 114*_1 +-- oper nMatka for matka, piosenka, książka, kurtka, +-- lodówka, skarpetka, gumka in GF lexicon + + oper k_End_CA_FleetingEplus_F : Str -> CommNoun = \matka -> + let + x = last1Minus matka; + y = consAlt x; + z = fleetingEplus x; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "i"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => y + "e"; + SF Pl Gen => z; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "i" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -ia, +-- 116 paradigm by Grzegorz Jagodziński +-- 116_5 by Nowak +-- oper nZiemia for ziemia (earth) in GF lexicon + + oper ia_End_F_1 : Str -> CommNoun = \ziemia -> + let + ziemi = last1Minus ziemia; + ziem = last1Minus ziemi; + in + { s = table { + SF Sg Nom => ziemi + "a"; + SF Sg Acc => ziemi + "ę"; + SF Sg Instr => ziemi + "ą"; + SF Sg VocP => ziemi + "o"; + SF Sg _ => ziem + "i"; + SF Pl Gen => ziem; + SF Pl Dat => ziemi + "om"; + SF Pl Instr => ziemi + "ami"; + SF Pl Loc => ziemi + "ach"; + SF Pl _ => ziemi + "e" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -l, +-- 116 paradigm by Grzegorz Jagodziński +-- 116_6 by Nowak +-- oper nFala for koszula in GF lexicon + + oper l_End_F_2 : Str -> CommNoun = \fala -> + let + fal = last1Minus fala; + in + { s = table { + SF Sg Nom => fal + "a"; + SF Sg Acc => fal + "ę"; + SF Sg Instr => fal + "ą"; + SF Sg VocP => fal + "o"; + SF Sg _ => fal + "i"; + SF Pl Gen => fal; + SF Pl Dat => fal + "om"; + SF Pl Instr => fal + "ami"; + SF Pl Loc => fal + "ach"; + SF Pl _ => fal + "e" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -ia, -ja: +-- in the spoken version of the word is -ja. Both +-- -ia and -ja have the same pronunciation. +-- genitive sg ending in -ii. +-- 117 paradigm by Grzegorz Jagodziński +-- 117_4 by Nowak too +-- oper nLilia for religia, telewizja, restauracja in GF lexicon + + oper ia_End_F_2 : Str -> CommNoun = \lilia -> + let + lili = last1Minus lilia; + in + { s = table { + SF Sg Nom => lili + "a"; + SF Sg Acc => lili + "ę"; + SF Sg Instr => lili + "ą"; + SF Sg VocP => lili + "o"; + SF Sg _ => lili + "i"; + SF Pl Gen => lili + "i"; + SF Pl Dat => lili + "om"; + SF Pl Instr => lili + "ami"; + SF Pl Loc => lili + "ach"; + SF Pl _ => lili + "e" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -t --------------------------------------, +-- 121 paradigm by Grzegorz Jagodziński +-- 121_1 by Nowak +-- By Jagodziński there are many words in this group, +-- that don't have consonant alternation in dat sg, +-- but only a consonantLengthening p: pi, n:ni, s:si +-- at the end of the subject. +-- So I create a new group here for małpa, lipa, benzyna, +-- cytryna, szosa etc. S. nLiczba, below, 121_2 by Nowak +-- oper nKobieta for moneta, planeta, gazeta, ojczyzna in GF lexicon + + oper hard_End_CAL_F : Str -> CommNoun = \kobieta -> + let + x = last1Minus kobieta; + y = consAlt x; + z = consLength y; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "y"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => z + "e"; + SF Pl Gen => x; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -t, -d, -b, -n, -w +-- (a hard consonant) +-- 121 paradigm by Grzegorz Jagodziński +-- 121_2 by Nowak +-- Only a consonantLengthening b:bi, p: pi, n:ni, s:si +-- at the end of the subject. +-- oper nLiczba for żona, trawa, dziewczyna, ryba, lampa, liczba in GF lexicon + + oper hard_End_CL_F : Str -> CommNoun = \liczba -> + let + x = last1Minus liczba; + y = consLength x; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "y"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => y + "e"; + SF Pl Gen => x; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -ł, -r, -ch +-- 121 paradigm by Grzegorz Jagodziński +-- 121_3 by Nowak +-- oper nSila for skała, reguła, chmura, góra, kamera, +-- kora, mucha in GF lexicon +-- sixa = siła + + oper hard_End_CA_F : Str -> CommNoun = \sixa -> + let + x = last1Minus sixa; + y = consAlt x; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "y"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => y + "e"; + SF Pl Gen => x; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in hard consonants +-- f.e. -b(osoba), -p(stopa), -w (połowa), -z (koza) +-- vowel alternation o:ó in gen Pl and +-- consonant lengthening in dat, loc sg. +-- 121' paradigm by Grzegorz Jagodziński +-- 121'_1 by Nowak +-- oper nNora for stopa, wątroba, krowa +-- in GF lexicon + + oper hard_End_VA1_CL_F : Str -> CommNoun = \doba -> + let + x = last1Minus doba; + y = consLength x; + z = vowAlt1 x; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "y"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => y + "e"; + SF Pl Gen => z; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -d (broda, jagoda, moda), +-- -t (cnota, robota, sobota). +-- consonant alternation and lengthening d:dzi (woda:wodzie), +-- t:ci(sobota:sobocie) in dat, loc sg, +-- vowel alternation o:ó (woda:wód, sobota:sobót) in gen pl. +-- 121' paradigm by Grzegorz Jagodziński +-- 121'_2 by Nowak +-- oper nWoda for woda in GF lexicon + + oper hard_End_VA1_CAL_F : Str -> CommNoun = \woda -> + let + x = last1Minus woda; + y = consLength (consAlt x); + z = vowAlt1 x; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "y"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => y + "e"; + SF Pl Gen => z; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -oła, -stra: +-- (pszczoła, szkoła, siostra). +-- consonant alternation ł:l, r:rz (szkoła:szkole, +-- siostra:siostrze) in dat, loc sg, +-- vowel alternation o:ó (szkoła:szkół, siostra:sióstr) in gen pl. +-- 121' paradigm by Grzegorz Jagodziński +-- 121'_3 by Nowak +-- oper nSzkola for szkoła, siostra in GF lexicon + + oper hard_End_VA1_CA_F : Str -> CommNoun = \szkola -> + let + x = last1Minus szkola; + y = consAlt x; + z = vowAlt1 x; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "y"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => y + "e"; + SF Pl Gen => z; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -two consonants: +-- -jn, -łz, -łn, -żw +-- consonant lengthening +-- 121* paradigm by Grzegorz Jagodziński +-- 121*_1 by Nowak +-- oper nWojna for wojna GF lexicon + + oper hard_End_CL_FleetingEplus_F : Str -> CommNoun = \wojna -> + let + x = last1Minus wojna; + y = consLength x; + z = fleetingEplus x; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "y"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => y + "e"; + SF Pl Gen => z; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -sn +-- is almost like nWojna, but consonant alternation s:ś too +-- 121* paradigm by Grzegorz Jagodziński +-- 121*_1 by Nowak +-- oper nWiosna + + oper sn_End_CAL_FleetingIEplus_F : Str -> CommNoun = \wiosna -> + let + x = last1Minus wiosna; + y = consLength (consAlt x); + z = fleetingEplus x; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "y"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => y + "e"; + SF Pl Gen => z; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -consonant + ł +-- f.e. like mgła, igła +-- fleeting -ie plus +-- 121** paradigm by Grzegorz Jagodziński +-- 121**_2 by Nowak +-- oper nMgla for mgła GF lexicon +-- x = ł +-- mgxa = mgła + + oper hard_l_End_CA_FleetingIEplus_F : Str -> CommNoun = \mgxa -> + let + x = last1Minus mgxa; + y = consAlt x; + z = fleetingIEplus x; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "y"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => y + "e"; + SF Pl Gen => z; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Fem + }; + + +-- oper nGwiazda for gwiazda in GF-lexicon +-- 121^ paradigm by Grzegorz Jagodziński +-- 121^_1 by Nowak +-- only for words ending in -zda, -sta (gwiazda, niewiasta) + + oper zd_st_End_VA2_CAL_F : Str -> CommNoun = \gwiazda-> + let + x = last1Minus gwiazda; + y = consLength (consAlt (vowAlt2 x)); + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "y"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => y + "e"; + SF Pl Gen => x; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Fem + }; + + +-- oper for feminine, subject ending in -c,-cz,-rz,-ż, +-- 124 paradigm by Grzegorz Jagodziński +-- 124_1 by Nowak +-- oper nUlica for ulica, rękawica GF lexicon + + oper hardened_End_F_2 : Str -> CommNoun = \ulica -> + let + x = last1Minus ulica; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => x + "y"; + SF Pl Gen => x; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "e" + }; + g = Fem + }; + +-- oper for feminine, subject ending in -c, +-- irregulary form in genitive Pl +-- 124** paradigm by Grzegorz Jagodziński +-- 124**_1 by Nowak +-- oper nOwca for owca in GF lexicon + + oper c_End_FleetingIEplus_F : Str -> CommNoun = \owca -> + let + x = last1Minus owca; + y = fleetingIEplus x; + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg VocP => x + "o"; + SF Sg _ => x + "y"; + SF Pl Gen => y; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "e" + }; + g = Fem + }; + + +--1.3 Operations for neuter nouns + +-- oper for neuter where subject ending in -ni, +-- functional weak ------- consonant +-- consonant alternation ni:ń in genitive Pl +-- 91 paradigm by Grzegorz Jagodziński +-- 91_1 by Nowak +-- oper nDanie for mieszkanie in GF lexicon + + oper ci_ni_week_End_CA_N : Str -> CommNoun = \danie -> + let + x = last1Minus danie; + y = consAlt x; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg _ => x + "e"; + SF Pl Gen => y; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter, subject ending in -c, +-- functional weak consonant +-- 91 paradigm by Grzegorz Jagodziński +-- 91_4 by Nowak +-- oper nSerce for słońce, serce, wzgórze GF lexicon + + oper hardened_End_N : Str -> CommNoun = \serce -> + let + x = last1Minus serce; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg _ => x + "e"; + SF Pl Gen => x; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter, subject ending in - +-- 91@ paradigm by Grzegorz Jagodziński +-- 91@ by Nowak +-- oper nNasienie for nasienie GF lexicon +-- this is only for nasienie in polish language + + oper ni_End_VA2_N : Str -> CommNoun = \nasienie -> + let + x = fleetingEminus nasienie; + w = fleetingIEminus nasienie; + y = vowAlt2 w; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg _ => x + "e"; + SF Pl Gen => y; + SF Pl Dat => y + "om"; + SF Pl Instr => y + "ami"; + SF Pl Loc => y + "ach"; + SF Pl _ => y + "a" + }; + g = Neut + }; + + +-- oper for neuter, subject ending in -rz +-- in genitive Pl vowel alternation o:ó +-- here u=ó; both letters have the same pronunciation +-- 91' paradigm by Grzegorz Jagodziński +-- 91' by Nowak +-- oper nMorze for morze GF lexicon + + oper rz_zx_End_VA1_N : Str -> CommNoun = \morze -> + let + x = last1Minus morze; + y = vowAlt1 morze; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg _ => x + "e"; + SF Pl Gen => y; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter, subject ending in -ę +-- in gen pl vowel alternation ę:o +-- (imię:imiona, znamię:znamiona) +-- 97 paradigm by Grzegorz Jagodziński +-- 97_1 by Nowak +-- oper nImie for imię GF lexicon + + oper ex_End_VA2_N : Str -> CommNoun = \imie -> + let + w = last1Minus imie; + x = w + "eni"; + y = vowAlt2 imie; + z = y + "n"; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg _ => w + "ę"; + SF Pl Gen => z; + SF Pl Dat => z + "om"; + SF Pl Instr => z + "ami"; + SF Pl Loc => z + "ach"; + SF Pl _ => z + "a" + }; + g = NeutGr + }; + + +-- oper for neuter, subject ending in -ę +-- genitive Pl -ęta +-- 97 paradigm by Grzegorz Jagodziński +-- 97_2 by Nowak +-- oper nCiele for zwierzę, niemowlę GF lexicon + + oper ex_End_VA3_N : Str -> CommNoun = \ciele -> + let + w = last1Minus ciele; + x = ciele + "ci"; + y = vowAlt3 ciele + "t"; + z = ciele + "t"; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg _ => w + "ę"; + SF Pl Gen => y; + SF Pl Dat => z + "om"; + SF Pl Instr => z + "ami"; + SF Pl Loc => z + "ach"; + SF Pl _ => z + "a" + }; + g = NeutGr + }; + + +-- According to G.Jagodziński "udo" and "piwo" have +-- the same declention type. I part it, because "udo" +-- changes in "udzie". +-- first there is consonant alternation d:dz +-- and then consonant lengthening dz: dz' (dzi). +-- "Piwo" has only consonant lengthening w:w' (wi) + +-- oper for neuter, subject ending in a consonant + "o" +-- 98 paradigm by Grzegorz Jagodziński +-- 98_1_a by Nowak +-- oper nUdo for złoto GF lexicon + + oper hard_End_CAL_N : Str -> CommNoun = \udo -> + let + x = last1Minus udo ; + y = consLength (consAlt udo); + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => y + "e"; + SF Sg _ => x + "o"; + SF Pl Gen => x; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter, subject ending in a consonant + "o" +-- 98 paradigm by Grzegorz Jagodziński +-- 98_1_b by Nowak +-- oper nPiwo for piwo, wino, drzewo, kolano, +-- mięso, żelazo GF lexicon + + oper hard_End_CL_N : Str -> CommNoun = \piwo -> + let + x = last1Minus piwo; + y = consLength piwo; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => y + "e"; + SF Sg _ => x + "o"; + SF Pl Gen => x; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter, subject ending in -r +-- consonant alternation r:rz +-- 98 paradigm by Grzegorz Jagodziński +-- 98_4 by Nowak +-- oper nZero for jezioro, pióro GF lexicon + + oper r_End_CA_N : Str -> CommNoun = \zero -> + let + x = last1Minus zero; + y = consAlt zero; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => y + "e"; + SF Sg _ => x + "o"; + SF Pl Gen => x; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter "niebo" - only +-- irregularly form in Pl "niebiosa" +-- 98@ paradigm by Grzegorz Jagodziński and by Nowak +-- oper nNiebo for GF lexicon +-- only for niebo in polish language + + oper niebo_Unregulary_N : Str -> CommNoun = \niebo -> + let + x = last1Minus niebo; +-- y = consLength niebo; + z = x + "ios"; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "ie"; + SF Sg _ => x + "o"; + SF Pl Gen => z; + SF Pl Dat => z + "om"; + SF Pl Instr => z + "ami"; + SF Pl Loc => z + "ach"; + SF Pl _ => z + "a" + }; + g = Neut + }; + + +-- oper for neuter, subject ending in -ł +-- consonant alternation +-- 98* paradigm by Grzegorz Jagodziński +-- 98*_3 by Nowak +-- oper nTlo for krzesło, masło, skrzydło GF lexicon +-- x = ł +-- txo = tło + + oper lx_End_CA_FleetingEplus_N : Str -> CommNoun = \txo -> + let + x = last1Minus txo; + y = consAlt txo; + z = fleetingEplus txo; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => y + "e"; + SF Sg _ => x + "o"; + SF Pl Gen => z; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter, subject ending in -r +-- genitive Pl fleetingEplus +-- 98* paradigm by Grzegorz Jagodziński +-- 98*_5 by Nowak +-- oper nZebro for srebro GF lexicon + + oper hard_End_CA_FleetingEplus_N : Str -> CommNoun = \zebro -> + let + x = last1Minus zebro; + y = consAlt zebro; + z = fleetingEplus zebro; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => y + "e"; + SF Sg _ => x + "o"; + SF Pl Gen => z; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter, subject ending in -n +-- consonant lengthening +-- 98** paradigm by Grzegorz Jagodziński +-- 98**_1 by Nowak +-- oper nOkno for okno, drewno GF lexicon + + oper n_End_CL_FleetingIEplus_N : Str -> CommNoun = \okno -> + let + x = last1Minus okno; + y = consLength okno; + z = fleetingIEplus okno; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => y + "e"; + SF Sg _ => x + "o"; + SF Pl Gen => z; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter, subject ending in -zdo, -sto +-- locative Sg gnieździe, mieście +-- 98^ paradigm by Grzegorz Jagodziński +-- 98^_1 by Nowak +-- oper nGniazdo for miasto GF lexicon + + oper hard_End_VA_CAL_N : Str -> CommNoun = \gniazdo -> + let + x = last1Minus gniazdo; + y = vowAlt2 gniazdo; + z = consAlt y; + t = consLength z; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => t + "e"; + SF Sg _ => x + "o"; + SF Pl Gen => x; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter, subject ending in -k, +-- consonant lengthening in instr Sg +-- 99 paradigm by Grzegorz Jagodziński +-- 99_2 by Nowak +-- oper nWojsko for mleko GF lexicon + + oper k_End_CL_N : Str -> CommNoun = \wojsko -> + let + x = last1Minus wojsko; + y = consLength wojsko; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => y + "em"; + SF Sg Loc => x + "u"; + SF Sg _ => x + "o"; + SF Pl Gen => x; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter, subject ending in -j, +-- 99 paradigm by Grzegorz Jagodziński +-- 99_4 by Nowak +-- oper nJajo for jajo GF lexicon + + oper j_End_N : Str -> CommNoun = \jajo -> + let + x = last1Minus jajo; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg _ => x + "o"; + SF Pl Gen => x; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter, subject ending in -k, +-- consonant lengthening in instr Sg +-- 99* paradigm by Grzegorz Jagodziński +-- 99*_2 by Nowak +-- oper nJablko for jabłko, jajko GF lexicon + + oper k_End_CL_FleetingEplus_N : Str -> CommNoun = \jablko -> + let + x = last1Minus jablko; + y = consLength jablko; + z = fleetingEplus jablko; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => y + "em"; + SF Sg Loc => x + "u"; + SF Sg _ => x + "o"; + SF Pl Gen => z; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter, noun ending in -o, +-- 100 paradigm by Grzegorz Jagodziński +-- 100_3 by Nowak +-- oper nStudio for radio GF lexicon + + oper o_End_N : Str -> CommNoun = \studio -> + let + x = last1Minus studio; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg _ => x + "o"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "a" + }; + g = Neut + }; + + +-- oper for neuter for dziecko, +-- consonant alternation c:ć in instr Sg. +-- 101 paradigm by Grzegorz Jagodziński & by Nowak +-- oper nDziecko for dziecko GF lexicon + + oper k_End_CAL_N : Str -> CommNoun = \dziecko -> + let + t = last1Minus dziecko; --dzieck + u = last1Minus t; --dziec + w = consLength u; --dzieci + x = consAlt w; --dzieć + y = consLength t; --dziecki + in + { s = table { + SF Sg Gen => t + "a"; + SF Sg Dat => t + "u"; + SF Sg Instr => y + "em"; + SF Sg Loc => t + "u"; + SF Sg _ => t + "o"; + SF Pl Dat => w + "om"; + SF Pl Instr => x + "mi"; + SF Pl Loc => w + "ach"; + SF Pl _ => u + "i" + }; + g = NeutGr --asl + }; + + +-- oper for neuter, subject ending in -ch, +-- consonant alternation ch:sz +-- 102 paradigm by Grzegorz Jagodziński +-- 102_1 by Nowak +-- oper nUcho for ucho GF lexicon +-- ucho as ear + + oper ch_End_Unregulary_CA_N : Str -> CommNoun = \ucho -> + let + x = last1Minus ucho; + y = consAlt x; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg _ => x + "o"; + SF Pl Gen => y + "u"; + SF Pl Dat => y + "om"; + SF Pl Instr => y + "ami"; + SF Pl Loc => y + "ach"; + SF Pl _ => y + "y" + }; + g = NeutGr + }; + +-- oper for neuter, subject ending in -k, +-- consonant alternation for all forms in Pl k:cz +-- 102 paradigm by Grzegorz Jagodziński +-- 102_2 by Nowak +-- oper nOko for oko GF lexicon + + oper k_End_Unregulary_CAL_N : Str -> CommNoun = \oko -> + let + x = last1Minus oko; + y = consAlt oko; + z = consLength x; + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "u"; + SF Sg Instr => z + "em"; + SF Sg Loc => x + "u"; + SF Sg _ => x + "o"; + SF Pl Gen => y + "u"; + SF Pl Dat => y + "om"; + SF Pl Instr => y + "ami"; + SF Pl Loc => y + "ach"; + SF Pl _ => y + "y" + }; + g = NeutGr + }; + + + +--1.4 Operations for masculine nouns + + +--1.4.1 Operations for masculine personal + + +-- oper for masculine personal ending in hard consonant +-- -t, -n, nom pl ending in -i +-- consonant alternation t:c, consonant lengthening c:ci, +-- 3 paradigm by Grzegorz Jagodziński +-- 3_1 by Nowak +-- oper nFacet for policjant, student, kuzyn in GF lexicon + + oper hard_End_CAL_MP_1 : Str -> CommNoun = \facet -> + let + x = facet; + y = consAlt x; + z = consLength y; + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => x + "owi"; + SF Sg Instr => x + "em"; + SF Sg Loc => z + "e"; + SF Sg VocP => z + "e"; + SF Sg _ => x + "a"; + SF Pl Nom => y + "i"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl VocP => y + "i"; + SF Pl _ => x + "ów" + }; + g = Masc Personal + }; + + +-- oper for masculine personal ending in hard consonant +-- -t, -n, nom pl ending in -y +-- consonant alternation t:c, consonant lengthening c:ci, +-- 4 paradigm by Grzegorz Jagodziński +-- 4_1 by Nowak +-- oper nArab for szef in GF lexicon + + oper hard_End_CAL_MP_2 : Str -> CommNoun = \Arab -> + let + x = Arab; + y = consLength x; + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => x + "owi"; + SF Sg Instr => x + "em"; + SF Sg Loc => y + "e"; + SF Sg VocP => y + "e"; + SF Sg _ => x + "a"; + SF Pl Nom => x + "owie"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Personal + }; + + +-- oper for masculine personal ending in hard consonant +-- -l. Only for przyjaciel (friend). +-- consonant alternation l:ł, vowel alternation e:ó, +-- 7 paradigm by Grzegorz Jagodziński +-- 7 by Nowak +-- oper nPrzyjaciel for przyjaciel in GF lexicon + + oper przyjaciel_VA1_VA2_CA_MP : Str -> CommNoun = \przyjaciel -> + let + t = przyjaciel; + u = vowAlt2 t; -- przyjaciol + w = consAlt u; -- przyjacioł + x = vowAlt1 w; -- przyjaciół + in + { s = table { + SF Sg Nom => t; + SF Sg Dat => t + "owi"; + SF Sg Instr => t + "em"; + SF Sg Loc => t + "u"; + SF Sg VocP => t + "u"; + SF Sg _ => t + "a"; + SF Pl Nom => t + "e"; + SF Pl Dat => w + "om"; + SF Pl Instr => x + "mi"; + SF Pl Loc => w + "ach"; + SF Pl VocP => t + "e"; + SF Pl _ => x + }; + g = Masc Personal + }; + + +-- oper for masculine personal ending in hard consonant -l +-- 8 paradigm by Grzegorz Jagodziński +-- 8_3 by Nowak +-- oper nKowal for nauczyciel (teacher) in GF lexicon + + oper l_End_MP : Str -> CommNoun = \kowal-> + let + t = kowal; + in + { s = table { + SF Sg Nom => t; + SF Sg Dat => t + "owi"; + SF Sg Instr => t + "em"; + SF Sg Loc => t + "u"; + SF Sg VocP => t + "u"; + SF Sg _ => t + "a"; + SF Pl Nom => t + "e"; + SF Pl Dat => t + "om"; + SF Pl Instr => t + "ami"; + SF Pl Loc => t + "ach"; + SF Pl VocP => t + "e"; + SF Pl _ => t + "i" + }; + g = Masc Personal + }; + + +-- oper for masculine personal ending in hard double consonant +-- -rz, -ż, -cz, -sz (piekarz, lekarz, papież, tłumacz, piwosz) +-- 11 paradigm by Grzegorz Jagodziński +-- 11 by Nowak +-- oper nLekarz for lekarz in GF lexicon + + oper hardened_End_MP : Str -> CommNoun = \lekarz -> + let + x = lekarz; + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => x + "owi"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg VocP => x + "u"; + SF Sg _ => x + "a"; + SF Pl Nom => x + "e"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl VocP => x + "e"; + SF Pl _ => x + "y" + }; + g = Masc Personal + }; + + +-- oper for masculine personal ending in -ul +-- (konsul, król) +-- 13 paradigm by Grzegorz Jagodziński +-- 13_3 by Nowak +-- oper nKrol for król in GF lexicon + + oper ul_End_MP : Str -> CommNoun = \krol-> + let + x = krol; + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => x + "owi"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg VocP => x + "u"; + SF Sg _ => x + "a"; + SF Pl Nom => x + "owie"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl VocP => x + "e"; + SF Pl _ => x + "ów" + }; + g = Masc Personal + }; + + +-- oper for masculine personal ending in -ż (mąż), +-- vowel alternation ą:ę (mąż:męża) +-- 13' paradigm by Grzegorz Jagodziński +-- 13' by Nowak +-- oper nMaz for mąż in GF lexicon + + oper maz_MP : Str -> CommNoun = \maz -> + let + x = maz; + y = vowAlt3 x; + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => y + "owi"; + SF Sg Instr => y + "em"; + SF Sg Loc => y + "u"; + SF Sg VocP => y + "u"; + SF Sg _ => y + "a"; + SF Pl Nom => y + "owie"; + SF Pl Dat => y + "om"; + SF Pl Instr => y + "ami"; + SF Pl Loc => y + "ach"; + SF Pl VocP => y + "owie"; + SF Pl _ => y + "ów" + }; + g = Masc Personal + }; + + +-- oper for masculine personal ending in -g (wróg), +-- vowel alternation ó:o (wróg:wroga) +-- only for wróg +-- 14' paradigm by Grzegorz Jagodziński +-- 14' by Nowak +-- oper nWrog for wróg in GF lexicon + + oper wrog_VA1_CL_MP : Str -> CommNoun = \wrog -> + let + x = vowAlt1 wrog; + y = consLength x; + in + { s = table { + SF Sg Nom => wrog; + SF Sg Dat => x + "owi"; + SF Sg Instr => y + "em"; + SF Sg Loc => x + "u"; + SF Sg VocP => x + "u"; + SF Sg _ => x + "a"; + SF Pl Nom => x + "owie"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl VocP => x + "owie"; + SF Pl _ => x + "ów" + }; + g = Masc Personal + }; + + +-- oper for masculine personal "ksiądz" +-- 20 paradigm by Grzegorz Jagodziński +-- 20 by Nowak +-- oper nKsiadz for ksiądz in GF lexicon + + oper ksiadz_VA3_CA_MP : Str -> CommNoun = \ksiadz -> + let + x = vowAlt3 ksiadz; -- księdz + y = consAlt x; -- księż + in + { s = table { + SF Sg Nom => ksiadz; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg VocP => y + "e"; + SF Sg _ => x + "a"; + SF Pl Nom => y + "a"; + SF Pl Dat => y + "om"; + SF Pl Instr => y + "mi"; + SF Pl Loc => y + "ach"; + SF Pl VocP => y + "a"; + SF Pl _ => y + "y" + }; + g = Masc Personal + }; + + +-- oper for masculine personal ending in -ciec +-- (ojciec, praojciec) +-- 21* paradigm by Grzegorz Jagodziński +-- 21* by Nowak +-- oper nOjciec for ojciec in GF lexicon + + oper ciec_End_CA_FleetingIEminus_MP : Str -> CommNoun = \ojciec -> + let + w = fleetingIEminus ojciec; -- ojcc + x = last1Minus w; -- ojc + y = consAlt x; -- ojcz + in + { s = table { + SF Sg Nom => ojciec; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg VocP => y + "e"; + SF Sg _ => x + "a"; + SF Pl Nom => x + "owie"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl VocP => x + "owie"; + SF Pl _ => x + "ów" + }; + g = Masc Personal + }; + + +-- oper for masculine personal ending in a hard consonant -t +-- 18 paradigm by Grzegorz Jagodziński +-- 18 by Nowak +-- oper nBrat for brat in GF lexicon + + oper hard_End_CAL_MP : Str -> CommNoun = \brat -> + let + x = brat; + y = consAlt x; -- brat:brac + z = consLength y; -- brac:braci + t = consAlt y; -- brac:brać + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => z + "e"; + SF Sg VocP => z + "e"; + SF Sg _ => x + "a"; + SF Pl Nom => z + "a"; + SF Pl Dat => z + "om"; + SF Pl Instr => t + "mi"; + SF Pl Loc => z + "ach"; + SF Pl VocP => z + "a"; + SF Pl _ => y + "i" + }; + g = Masc Personal + }; + + +-- oper for masculine personal "bóg" +-- 22' paradigm by Grzegorz Jagodziński +-- 22' by Nowak +-- oper nBog for bóg in GF lexicon + + oper bog_VA1_CAL_MP : Str -> CommNoun = \bog -> + let + x = vowAlt1 bog; -- bog + y = consLength x; -- bogi + z = vowAlt1 (consAlt bog); -- boż + in + { s = table { + SF Sg Nom => bog; + SF Sg Dat => x + "u"; + SF Sg Instr => y + "em"; + SF Sg Loc => x + "u"; + SF Sg VocP => z + "e"; + SF Sg _ => x + "a"; + SF Pl Nom => x + "owie"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl VocP => x + "owie"; + SF Pl _ => x + "ów" + }; + g = Masc Personal + }; + + +-- oper for masculine personal ending in -iec +-- ( chłopiec) +-- 24** paradigm by Grzegorz Jagodziński +-- 24** by Nowak +-- oper nChlopiec for chłopiec in GF lexicon + + oper iec_End_CA_FleetingIEminus_MP : Str -> CommNoun = \chlopiec -> + let + x = fleetingIEminus chlopiec; -- chlopc + y = consAlt x; -- chlopcz + in + { s = table { + SF Sg Nom => chlopiec; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg VocP => y + "e"; + SF Sg _ => x + "a"; + SF Pl Nom => x + "y"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl VocP => x + "y"; + SF Pl _ => x + "ów" + }; + g = Masc Personal + }; + + +-- oper for masculine personal ending in -zna +-- consinant alternation z:ź, consonant lengthening n:ni +-- 34 paradigm by Grzegorz Jagodziński +-- 34 by Nowak +-- oper nMezczyzna for mężczyzna in GF lexicon + + oper zna_End_CAL_MP : Str -> CommNoun = \mezczyzna -> + let + x = last1Minus mezczyzna; -- mężczyzn + y = consAlt x; -- mężczyźn + z = consLength y;-- mężczyźni + in + { s = table { + SF Sg Nom => x + "a"; + SF Sg Gen => x + "y"; + SF Sg Dat => z + "e"; + SF Sg Acc => x + "ę"; + SF Sg Instr => x + "ą"; + SF Sg Loc => z + "e"; + SF Sg VocP => x + "o"; + SF Pl Nom => y + "i"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl VocP => y + "i"; + SF Pl _ => x + }; + g = Masc Personal + }; + + +-- oper for masculine personal ending in a hard consonant +-- + "a" (tata, gazda, drużba, ortodoksa) +-- 36 paradigm by Grzegorz Jagodziński +-- 36 by Nowak +-- oper nDruzba for tata (synonym for ojciec) in GF lexicon +{- oper hard_plus_a_CAL_MP : Str -> CommNoun = \druzba -> + let + x = last1Minus druzba; + + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => x + "owi"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "u"; + SF Sg VocP => x + "u"; + SF Sg _ => x + "a"; + SF Pl Nom => x + "e"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl VocP => x + "e"; + SF Pl _ => x + "y" + }; + g = Masc Personal + }; -} + + +--1.4.2 Operations for masculine animate + + +-- oper for masculine animate ending in -ń +-- 59 paradigm by Grzegorz Jagodziński +-- 59 by Nowak +-- oper nKon for koń in GF lexicon + + oper kon_CAL_MA : Str -> CommNoun = \kon -> + let + x = consAlt kon; --kon + y = consLength x; -- koni + in + { s = table { + SF Sg Nom => kon; + SF Sg Dat => y + "owi"; + SF Sg Instr => y + "em"; + SF Sg Loc => y + "u"; + SF Sg VocP => y + "u"; + SF Sg _ => y + "a"; + SF Pl Gen => x + "i"; + SF Pl Dat => y + "om"; + SF Pl Instr => kon + "mi"; + SF Pl Loc => y + "ach"; + SF Pl _ => y + "e" + }; + g = Masc Animate + }; + + +-- oper for masculine animate for "wąż" +-- 61' paradigm by Grzegorz Jagodziński +-- 61' by Nowak +-- oper nWaz for wąż in GF lexicon + + oper waz_VA3_MA : Str -> CommNoun = \waz -> + let + y = vowAlt3 waz; -- węż + in + { s = table { + SF Sg Nom => waz; + SF Sg Dat => y + "owi"; + SF Sg Instr => y + "em"; + SF Sg Loc => y + "u"; + SF Sg VocP => y + "u"; + SF Sg _ => y + "a"; + SF Pl Gen => y + "y"; + SF Pl Dat => y + "om"; + SF Pl Instr => y + "ami"; + SF Pl Loc => y + "ach"; + SF Pl _ => y + "e" + }; + g = Masc Animate + }; + + +-- oper for masculine animate ending in -k +-- 62 paradigm by Grzegorz Jagodziński +-- 62 by Nowak +-- oper nPtak for ptak, robak in GF lexicon + + oper k_End_CL_MA : Str -> CommNoun = \ptak -> + let + y = consLength ptak; -- ptaki + in + { s = table { + SF Sg Nom => ptak; + SF Sg Dat => ptak + "owi"; + SF Sg Instr => y + "em"; + SF Sg Loc => ptak + "u"; + SF Sg VocP => ptak + "u"; + SF Sg _ => ptak + "a"; + SF Pl Gen => ptak + "ów"; + SF Pl Dat => ptak + "om"; + SF Pl Instr => ptak + "ami"; + SF Pl Loc => ptak + "ach"; + SF Pl _ => ptak + "i" + }; + g = Masc Animate + }; + + +-- oper for masculine animate for "kot" +-- 64 paradigm by Grzegorz Jagodziński +-- 64 by Nowak +-- oper nKot for kot in GF lexicon + + oper kot_CAL_MA : Str -> CommNoun = \kot -> + let + x = consAlt kot; --koc + y = consLength x; -- koci + in + { s = table { + SF Sg Nom => kot; + SF Sg Dat => kot + "u"; + SF Sg Instr => kot + "em"; + SF Sg Loc => y + "e"; + SF Sg VocP => y + "e"; + SF Sg _ => kot + "a"; + SF Pl Gen => kot + "ów"; + SF Pl Dat => kot + "om"; + SF Pl Instr => kot + "ami"; + SF Pl Loc => y + "ach"; + SF Pl _ => kot + "y" + }; + g = Masc Animate + }; + + +-- oper for masculine animate for "pies" +-- 64** paradigm by Grzegorz Jagodziński +-- 64** by Nowak +-- oper nPies for pies in GF lexicon + + oper pies_CL_FleetingIEminus_MA : Str -> CommNoun = \pies -> + let + x = fleetingIEminus pies; -- ps + y = consLength x; -- psi + in + { s = table { + SF Sg Nom => pies; + SF Sg Dat => x + "u"; + SF Sg Instr => x + "em"; + SF Sg Loc => y + "e"; + SF Sg VocP => y + "e"; + SF Sg _ => x + "a"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Animate + }; + + + +--1.4.3 Operations for masculine inanimate + + +-- oper for masculine inanimate ending in +-- a vowel + a hard consonant +-- consonant alternation t:c and then lengthening c:ci +-- 70 paradigm by Grzegorz Jagodziński +-- 70_1_1 by Nowak +-- oper nBat for but in GF lexicon + + oper vowel_hard_CAL_MI : Str -> CommNoun = \bat -> + let + u = bat; + x = consLength (consAlt u); -- baci + in + { s = table { + SF Sg Nom => u; + SF Sg Dat => u + "owi"; + SF Sg Instr => u + "em"; + SF Sg Loc => x + "e"; + SF Sg VocP => x + "e"; + SF Sg _ => u + "a"; + SF Pl Gen => u + "ów"; + SF Pl Dat => u + "om"; + SF Pl Instr => u + "ami"; + SF Pl Loc => u + "ach"; + SF Pl _ => u + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in +-- a vowel + a hard consonant +-- almost like nBat, but with consonant alternation +-- only consonant lengthening +-- (dzban, chleb, Berlin, kręgosłup, kilogram) +-- 70 paradigm by Grzegorz Jagodziński +-- 70_1_2 by Nowak +-- oper nBat for chleb, włos, nos, ogon in GF lexicon + + oper vowel_hard_CL_MI : Str -> CommNoun = \chleb -> + let + u = chleb; + x = consLength u; -- chlebi + in + { s = table { + SF Sg Nom => u; + SF Sg Dat => u + "owi"; + SF Sg Acc => u; + SF Sg Instr => u + "em"; + SF Sg Loc => x + "e"; + SF Sg VocP => x + "e"; + SF Sg _ => u + "a"; + SF Pl Gen => u + "ów"; + SF Pl Dat => u + "om"; + SF Pl Instr => u + "ami"; + SF Pl Loc => u + "ach"; + SF Pl _ => u + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in -r +-- consonant alternation r:rz (ser:serze) +-- 70 paradigm by Grzegorz Jagodziński +-- 70_5 by Nowak +-- oper nSer for ser in GF lexicon + + oper r_End_CA_MI : Str -> CommNoun = \ser -> + let + x = ser; + y = consAlt ser; -- serz + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => x + "owi"; + SF Sg Instr => x + "em"; + SF Sg Loc => y + "e"; + SF Sg VocP => y + "e"; + SF Sg _ => x + "a"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in -ąb +-- consonant alternation ą:ę (ząb:zęba) +-- 70' paradigm by Grzegorz Jagodziński +-- 70'_1 by Nowak +-- oper nZab for ząb in GF lexicon + + oper ab_End_VA3_CL_MI : Str -> CommNoun = \zab -> + let + y = vowAlt3 zab; -- zęb + z = consLength y; + in + { s = table { + SF Sg Nom => zab; + SF Sg Dat => y + "owi"; + SF Sg Instr => y + "em"; + SF Sg Loc => z + "e"; + SF Sg VocP => z + "e"; + SF Sg _ => y + "a"; + SF Pl Gen => y + "ów"; + SF Pl Dat => y + "om"; + SF Pl Instr => y + "ami"; + SF Pl Loc => y + "ach"; + SF Pl _ => y + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending for "kościół" +-- 70^' paradigm by Grzegorz Jagodziński +-- 70^' by Nowak +-- oper nKosciol for kościół in GF lexicon + + oper kosciol_VA1_VA2_CA_MI : Str -> CommNoun = \kosciol -> + let + x = vowAlt1 kosciol; -- kościoł + y = consAlt (vowAlt2 x); -- kościel + in + { s = table { + SF Sg Nom => kosciol; + SF Sg Dat => x + "owi"; + SF Sg Instr => x + "em"; + SF Sg Loc => y + "e"; + SF Sg VocP => y + "e"; + SF Sg _ => x + "a"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in a weak +-- consonant (promień, Brześć, Niedźwiedź, Zamość) +-- consonant alternation and lengthening +-- 71 paradigm by Grzegorz Jagodziński +-- 71_1 by Nowak +-- oper nCien for korzeń, kamień in GF lexicon + + oper week_End_CAL_MI : Str -> CommNoun = \cien -> + let + x = consAlt cien; -- cień:cien + y = consLength x; -- cieni + in + { s = table { + SF Sg Nom => cien; + SF Sg Gen => y + "a"; + SF Sg Dat => y + "u"; + SF Sg Acc => cien; + SF Sg Instr => y + "em"; + SF Sg _ => y + "u"; + SF Pl Gen => x + "i"; + SF Pl Dat => y + "om"; + SF Pl Instr => y + "ami"; + SF Pl Loc => y + "ach"; + SF Pl _ => y + "e" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in a weak +-- consonant alternation and lengthening +-- fleeting ie minus (łokieć, stopień) +-- 71** paradigm by Grzegorz Jagodziński +-- 71**_1 by Nowak +-- oper nPien for ogień, paznokieć in GF lexicon + + oper week_End_CAL_FleetingIEminus_MI : Str -> CommNoun = \pien -> + let + x = fleetingIEminus pien; -- pń + y = consAlt x; -- pn + z = consLength y; -- pni + in + { s = table { + SF Sg Nom => pien; + SF Sg Dat => z + "u"; + SF Sg Instr => z + "em"; + SF Sg Loc => z + "u"; + SF Sg VocP => z + "u"; + SF Sg _ => z + "a"; + SF Pl Gen => y + "i"; + SF Pl Dat => z + "om"; + SF Pl Instr => z + "ami"; + SF Pl Loc => z + "ach"; + SF Pl _ => z + "e" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in -ść, +-- for liść +-- 72 paradigm by Grzegorz Jagodziński +-- 72 by Nowak +-- oper nLisc for liść in GF lexicon + + oper lisc_CAL_MI : Str -> CommNoun = \lisc -> + let + x = consAlt lisc; -- liśc + y = consLength x; -- liści + in + { s = table { + SF Sg Nom => lisc; + SF Sg Gen => y + "a"; + SF Sg Dat => y + "owi"; + SF Sg Acc => lisc; + SF Sg Instr => y + "em"; + SF Sg _ => y + "u"; + SF Pl Gen => x + "i"; + SF Pl Dat => y + "om"; + SF Pl Instr => lisc + "mi"; + SF Pl Loc => y + "ach"; + SF Pl _ => y + "e" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in +-- a hardened consonant: -ż, -rz, -c, -cz, -dz +-- (gorąc, piec, Kalisz, tłuszcz, bicz, Spisz, Zgierz, Paryż, Łowicz) +-- 73 paradigm by Grzegorz Jagodziński +-- 73_5 by Nowak +-- oper nKoc for piec, tłuszcz, Paryż in GF lexicon + + oper hardened_End_MI_1 : Str -> CommNoun = \koc -> + let + x = koc; + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => x + "owi"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "e"; + SF Sg VocP => x + "e"; + SF Sg _ => x + "a"; + SF Pl Nom => x + "e"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in +-- a hardened consonant: -ż, -rz, -c, -cz, -dz +-- (kapelusz, księżyc) +-- 74 paradigm by Grzegorz Jagodziński +-- 74 by Nowak +-- oper nWiersz for księżyc, kapelusz in GF lexicon + + oper hardened_End_MI_2 : Str -> CommNoun = \wiersz -> + let + x = wiersz; + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => x + "owi"; + SF Sg Instr => x + "em"; + SF Sg Loc => x + "e"; + SF Sg VocP => x + "e"; + SF Sg _ => x + "a"; + SF Pl Gen => x + "y"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "e" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate for "dzień" +-- 76** paradigm by Grzegorz Jagodziński +-- 76** by Nowak +-- oper nDzien for dzień in GF lexicon + + oper dzien_MI : Str -> CommNoun = \dzien -> + let + x = fleetingLettersMinus dzien; -- dń + y = consAlt x; -- dń:dn + z = consLength y; -- dn:dni + in + { s = table { + SF Sg Nom => dzien; + SF Sg Dat => z + "u"; + SF Sg Instr => z + "em"; + SF Sg Loc => z + "e"; + SF Sg VocP => z + "e"; + SF Sg _ => z + "a"; + SF Pl Dat => z + "om"; + SF Pl Instr => z + "ami"; + SF Pl Loc => z + "ach"; + SF Pl _ => y + "i" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in -k, -g +-- consonant lengthening +-- (ranek, skrawek, Owtock, Hamburg, drąg) +-- 77 paradigm by Grzegorz Jagodziński +-- 77_1 by Nowak +-- oper nKajak for język, patyk in GF lexicon + + oper g_k_End_CL_MI_1 : Str -> CommNoun = \kajak -> + let + x = kajak; + y = consLength kajak; -- kajaki + in + { s = table { + SF Sg Gen => x + "a"; + SF Sg Dat => x + "owi"; + SF Sg Instr => y + "em"; + SF Sg Loc => x + "u"; + SF Sg VocP => x + "u"; + SF Sg _ => x ; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "i" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in -ek +-- fleeting e minus +-- (fiołek, garnek, podkoszulek, przecinek, Włocławek) +-- 77* paradigm by Grzegorz Jagodziński +-- 70* by Nowak +-- oper nMlotek for ołówek in GF lexicon + + oper k_End_CL_FleetingEminus_MI : Str -> CommNoun = \mlotek -> + let + x = fleetingEminus mlotek; -- mlotk + y = consLength x; -- mlotki + in + { s = table { + SF Sg Nom => mlotek; + SF Sg Gen => x + "a"; + SF Sg Dat => x + "owi"; + SF Sg Acc => mlotek; + SF Sg Instr => y + "em"; + SF Sg _ => x + "u"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "i" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in -ch +-- (bebech, Wałbrzych, brzuch, łańcuch) +-- 78 paradigm by Grzegorz Jagodziński +-- 78_1 by Nowak +-- oper nMiech for brzuch in GF lexicon + + oper ch_End_MI : Str -> CommNoun = \miech -> + let + x = miech; + in + { s = table { + SF Sg Nom => x; + SF Sg Gen => x + "a"; + SF Sg Dat => x + "owi"; + SF Sg Acc => x; + SF Sg Instr => x + "em"; + SF Sg _ => x + "u"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in a hard consonant +-- consonant alternation and lengthening +-- 82 paradigm by Grzegorz Jagodziński +-- 82_1_1 by Nowak +-- oper nSad for samotot, uniwersytet, port, sufit in GF lexicon + + oper hard_End_CAL_MI : Str -> CommNoun = \sad -> + let + x = sad; + y = consLength (consAlt x); -- sadzi + in + { s = table { + SF Sg Nom => x; + SF Sg Gen => x + "u"; + SF Sg Dat => x + "owi"; + SF Sg Acc => x; + SF Sg Instr => x + "em"; + SF Sg _ => y + "e"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in a hard consonant +-- consonant lengthening +-- 82 paradigm by Grzegorz Jagodziński +-- 82_1_2 by Nowak +-- oper nDym for dym, dywan, sklep in GF lexicon + + oper hard_End_CL_MI : Str -> CommNoun = \dym -> + let + x = dym; + y = consLength x; -- dymi + in + { s = table { + SF Sg Nom => x; + SF Sg Gen => x + "u"; + SF Sg Dat => x + "owi"; + SF Sg Acc => x; + SF Sg Instr => x + "em"; + SF Sg _ => y + "e"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in +-- a hard consonant -ł, -r +-- consonant alternation +-- (artykuł, finał, kryształ, materiał) +-- 82 paradigm by Grzegorz Jagodziński +-- 82_2 + 82_3 by Nowak +-- oper nWal for przemysł, papier, rower in GF lexicon + + oper hard_End_CA_MI : Str -> CommNoun = \wal -> + let + x = wal; + y = consAlt x; -- wał:wal + in + { s = table { + SF Sg Nom => x; + SF Sg Gen => x + "u"; + SF Sg Dat => x + "owi"; + SF Sg Acc => x; + SF Sg Instr => x + "em"; + SF Sg _ => y + "e"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in -ó + hard consonant +-- vowel and consonant alternation +-- (rosół, zespół, otwór, wodór ) +-- 82' paradigm by Grzegorz Jagodziński +-- 82' by Nowak +-- oper nDol for stól in GF lexicon + + oper hard_End_VA1_CA_MI : Str -> CommNoun = \dol -> + let + x = vowAlt1 dol; -- dół:doł + y = consAlt x; -- doł:dol + in + { s = table { + SF Sg Nom => dol; + SF Sg Gen => x + "u"; + SF Sg Dat => x + "owi"; + SF Sg Acc => dol; + SF Sg Instr => x + "em"; + SF Sg _ => y + "e"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in -ó + hard consonant +-- vowel and consonant alternation +-- (obwód, wschód, przewód, rozwód) +-- 82' paradigm by Grzegorz Jagodziński +-- 82' by Nowak +-- oper nOgrod for ogród, lód, samochód in GF lexicon + + oper hard_End_VA1_CAL_MI : Str -> CommNoun = \ogrod -> + let + x = vowAlt1 ogrod; -- ogród:ogrod + y = consLength (consAlt x); -- ogrod:ogrodz:ogrodzi + in + { s = table { + SF Sg Nom => ogrod; + SF Sg Gen => x + "u"; + SF Sg Dat => x + "owi"; + SF Sg Acc => ogrod; + SF Sg Instr => x + "em"; + SF Sg _ => y + "e"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in a hard consonant +-- vowel alternation, +-- consonant alternation and lengthening +-- (najazd, wszechświat, przyjazd) +-- 82^ paradigm by Grzegorz Jagodziński +-- 82^_1_1 by Nowak +-- oper nKwiat for kwiat in GF lexicon + + oper hard_End_VA2_CAL_MI : Str -> CommNoun = \kwiat -> + let + x = kwiat; + y = vowAlt2 kwiat; -- kwiet + z = consLength (consAlt y); -- kwiet:kwiec:kwieci + in + { s = table { + SF Sg Nom => x; + SF Sg Gen => x + "u"; + SF Sg Dat => x + "owi"; + SF Sg Acc => x; + SF Sg Instr => x + "em"; + SF Sg _ => z + "e"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in a hard consonant +-- vowel alternation, +-- consonant lengthening +-- 82^ paradigm by Grzegorz Jagodziński +-- 82^_1_2 by Nowak +-- oper nLas for las in GF lexicon + + oper hard_End_VA2_CL_MI : Str -> CommNoun = \las -> + let + x = las; + y = consLength (vowAlt2 x); -- las:les:lesi + in + { s = table { + SF Sg Nom => x; + SF Sg Gen => x + "u"; + SF Sg Dat => x + "owi"; + SF Sg Acc => x; + SF Sg Instr => x + "em"; + SF Sg _ => y + "e"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + + + +-- oper for masculine inanimate for wiatr +-- vowel alternation, +-- consonant alternation +-- 82^ paradigm by Grzegorz Jagodziński +-- 82^_2 by Nowak +-- oper nWiatr for wiart in GF lexicon + + oper wiatr_VA2_CA_MI : Str -> CommNoun = \wiatr -> + let + x = wiatr; + y = consAlt (vowAlt2 x); -- wiatr:wietr:wietrz + in + { s = table { + SF Sg Nom => x; + SF Sg Gen => x + "u"; + SF Sg Dat => x + "owi"; + SF Sg Acc => x; + SF Sg Instr => x + "em"; + SF Sg _ => y + "e"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate for "popiół" +-- vowel and consonant alternation +-- 82^' paradigm by Grzegorz Jagodziński +-- 82^' by Nowak +-- oper nPopiol for popiół in GF lexicon + + oper popiol_VA2_CA_MI : Str -> CommNoun = \popiol -> + let + x = vowAlt1 popiol; -- popiół:popioł + y = consAlt (vowAlt2 x); -- popioł:popieł:popiel + in + { s = table { + SF Sg Nom => popiol; + SF Sg Gen => x + "u"; + SF Sg Dat => x + "owi"; + SF Sg Acc => popiol; + SF Sg Instr => x + "em"; + SF Sg _ => y + "e"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in -ój +-- vowel alternation +-- last minus +-- (powój, drobnoustrój, strój, zwój) +-- 85' paradigm by Grzegorz Jagodziński (in the big table) +-- 85'_1 by Nowak +-- oper nPokoj for pokój in GF lexicon + + oper onlySgNoun : Str -> CommNoun = \pokoj -> + let + x = vowAlt1 pokoj; -- pokój:pokoj + y = last1Minus x; -- poko + in + { s = table { + SF Sg Nom => pokoj; + SF Sg Gen => x + "u"; + SF Sg Dat => x + "owi"; + SF Sg Acc => pokoj; + SF Sg Instr => x + "em"; + SF Sg _ => x + "u"; + SF Pl _ => "[" ++ pokoj ++ [": the plural form does not exist]"] + }; + g = Masc Inanimate + }; + +-- oper for masculine inanimate ending in a vowel + -j +-- (obyczaj, tramwaj, przywilej, klej) or in a +-- hardened consonant -ż, -rz, -c, -cz, -dz +-- (Asyż, marsz, pieprz, szkic, wyż, mosiądz) +-- 85 paradigm by Grzegorz Jagodziński +-- 85_1 + 85_3 by Nowak +-- oper nGaj for kraj, olej, deszcz, owoc in GF lexicon + + oper vowel_j_or_handened_End_MI : Str -> CommNoun = \gaj -> + let + x = gaj; + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => x + "owi"; + SF Sg Acc => x; + SF Sg Instr => x + "em"; + SF Sg _ => x + "u"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "e" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in consonants -g, -k +-- (blok, dotyk, Kołobrzeg, Bug) +-- 87 paradigm by Grzegorz Jagodziński +-- 87 by Nowak +-- oper nBrzeg for bank, kark in GF lexicon + + oper g_k_End_CL_MI_2 : Str -> CommNoun = \brzeg -> + let + x = brzeg; + y = consLength x; + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => x + "owi"; + SF Sg Acc => x; + SF Sg Instr => y + "em"; + SF Sg _ => x + "u"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "i" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate only for rok +-- 87@ paradigm by Grzegorz Jagodziński +-- 87@ by Nowak +-- oper nRok for rok in GF lexicon + + oper rok_UnregularyPl_CL_MI : Str -> Str -> CommNoun = \rok, lata -> + let + x = rok; + y = consLength x; + z = last1Minus lata; + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => x + "owi"; + SF Sg Acc => x; + SF Sg Instr => y + "em"; + SF Sg _ => x + "u"; + SF Pl Gen => z; + SF Pl Dat => z + "om"; + SF Pl Instr => z + "ami"; + SF Pl Loc => z + "ach"; + SF Pl _ => z + "a" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in -óg +-- (stóg, głóg, barłóg) +-- 87' paradigm by Grzegorz Jagodziński +-- 87' by Nowak +-- oper nProg for róg in GF lexicon + + oper ug_End_VA1_CL_MI : Str -> CommNoun = \prog -> + let + x = vowAlt1 prog; + y = consLength x; + in + { s = table { + SF Sg Nom => prog; + SF Sg Dat => x + "owi"; + SF Sg Acc => prog; + SF Sg Instr => y + "em"; + SF Sg _ => x + "u"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "i" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in -ek +-- (poniedziałek, obiadek, proszek, początek) +-- 87* paradigm by Grzegorz Jagodziński +-- 87* by Nowak +-- oper nStatek for piasek in GF lexicon + + oper k_End_CL_FleetingEmins_MI : Str -> CommNoun = \statek -> + let + x = fleetingEminus statek; -- statk + y = consLength x; + in + { s = table { + SF Sg Nom => statek; + SF Sg Dat => x + "owi"; + SF Sg Acc => statek; + SF Sg Instr => y + "em"; + SF Sg _ => x + "u"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "i" + }; + g = Masc Inanimate + }; + + +-- oper for masculine inanimate ending in -ch and for dom +-- (oddech, uśmiech, zamach, strych) +-- 88 paradigm by Grzegorz Jagodziński +-- 88_1 + 88_2 by Nowak +-- oper nDom for dom, dach in GF lexicon + + oper ch_End_dom_MI : Str -> CommNoun = \dom -> + let + x = dom; + in + { s = table { + SF Sg Nom => x; + SF Sg Dat => x + "owi"; + SF Sg Acc => x; + SF Sg Instr => x + "em"; + SF Sg _ => x + "u"; + SF Pl Gen => x + "ów"; + SF Pl Dat => x + "om"; + SF Pl Instr => x + "ami"; + SF Pl Loc => x + "ach"; + SF Pl _ => x + "y" + }; + g = Masc Inanimate + }; + +--8 Patterns of auxiliary operations mostly used for nouns + +-- for consonant alternation k:c, g:dz at the end of the subject, +-- or at the end of the noun + + oper consAlt : Str -> Str = \s -> + case s of + { x + "ch" + ("a"|"i"|"e"|"o"|"") => x + "sz" ; -- mucha:musze, klecha:klesze + x + "ch" + "y" => x + "s" ; -- głuchy:głusi + x + "sn" + ("a"|"i"|"e"|"o"|"y"|"") => x + "śn" ; -- wiosna:wiośnie + x + "st" + ("a"|"i"|"e"|"o"|"y"|"") => x + "śc" ; -- artysta:artyście + x + "sł" + ("a"|"i"|"e"|"o"|"y"|"") => x + "śl" ; -- krzesło:krześle, masło:maśle + x + "dz" + ("a"|"i"|"e"|"o"|"y"|"") => x + "ż" ; -- ksiądz:księża + x + "dź" + ("a"|"i"|"e"|"o"|"y"|"") => x + "dz" ; -- łódź:łodzi + x + "zn" + ("a"|"i"|"e"|"o"|"y"|"") => x + "źn" ; -- meżczyzna:mężczyźnie + x + "zd" + ("a"|"i"|"e"|"o"|"y"|"") => x + "źdz" ; -- gniazdo:gnieździe + x + "ni" + ("a"|"i"|"e"|"o"|"y"|"") => x + "ń" ; -- danie:dań + x + "ci" + ("a"|"i"|"e"|"o"|"y"|"") => x + "ć" ; + x + "sz" + ("a"|"i"|"e"|"o"|"y"|"") => x + "s" ; + ----------------------------------------------------------------------- + -- The alternation of one consonant has to be behind the alternation of + -- two other consonants, else they aren't checked. + x + "o" + "k" + "o" => "o" + "cz" ;-- oko:oczy + x + "ć" + ("a"|"i"|"e"|"o"|"y"|"") => x + "c" ; --sieć:sieci + x + "j" + "c" => x + "j" + "cz" ; -- ojciec:ojc:ojcze + x + "op" + "c" => x + "op" + "cz" ; -- chłopiec:chłopc:chłopcze + x + "ie" + "c" + ("a"|"i"|"e"|"o"|"y"|"") => x + "ie" + "ć" ; -- dziecko:dziećmi + x + "óg" + "" => x + "óż" ; -- bóg:boże + x + "l" + ("a"|"i"|"e"|"o"|"y"|"") => x + "ł" ; -- przyjaciel:przyjaciół + x + "ł" + ("a"|"i"|"e"|"o"|"y"|"") => x + "l" ; -- siła:sile, biegły:biegli + x + "yn" + ("a"|"i"|"e"|"o"|"y"|"") => x + "yn" ; + x + "n" + ("a"|"i"|"e"|"o"|"y"|"") => x + "n" ; + x + "ń" + ("a"|"i"|"e"|"o"|"y"|"") => x + "n" ; -- dzień:dni ,pień:pni, cień:cieni + x + "r" + ("a"|"i"|"e"|"o"|"y"|"") => x + "rz" ; -- nora:norze, psychiatra:psychiatrze + x + "ś" + ("a"|"i"|"e"|"o"|"y"|"") => x + "s" ; -- pierś:piersi + x + "ź" + ("a"|"i"|"e"|"o"|"y"|"") => x + "z" ; + x + ("g"|"d") + ("a"|"i"|"e"|"o"|"y"|"") => x + "dz" ; -- noga:nodze; sługa:słudze + x + ("k"|"t") + ("a"|"i"|"e"|"o"|"y"|"") => x + "c" ; -- apteka:aptece; moneta:monecie, tata:tacie + x + "c" + ("a"|"i"|"e"|"o"|"y"|"") => x + "ć" ; --brat:bracie:braćmi + x + "ż" + ("a"|"i"|"e"|"o"|"y"|"") => x + "z" ; + _ => last1Minus s + } ; + + + +-- Auxiliary operation for consonant lengthening +-- The consonant in polish is lengthened by a vowel "i" +-- łódź:łodzi, krew:krwi, wieś:wsi + + oper consLength : Str -> Str = \s -> + case s of + { x + y@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + ("a"|"u"|"e"|"o"|"") + => x + y + "i" + } ; + +-- Auxiliary operation for vowel alternation +-- o:ó (droga:dróg); +-- ó:o (nierób:nieroba, łódź:łodzi) + + oper vowAlt1 : Str -> Str = \s -> + case s of + { --------------- o:ó ----------------------------------- + -- 1. nouns ending in a vowel after a consonant + -- or in a consonant: woda:wód , doba:dób + u + "o" + w@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + ("a"|"e"|"o"|"y"|"") => u + "ó" + w ; + -- 2. nouns ending in a vowel after two consonants + -- or in two consonants + u + "o" + w@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + x@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"") + + ("a"|"e"|"o"|"y"|"") => u + "ó" + w + x ; + -- 3. nouns ending in a vowel after three consonants, + -- needed for declension of siostra in nSzkola + -- siostra:sióstr + u + "o" + w@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + x@("a"|"e"|"o"|"y"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"") + + y@("a"|"e"|"o"|"y"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"") + + ("a"|"e"|"o"|"y"|"")=> u + "ó" + w + x + y; + ------------------------------------------------------- + --------------- ó:o ----------------------------------- + ------------------------------------------------------- + ---- 1. nouns ending in a vowel after a consonant + -- łódź:łodzi, sól:soli + u + "ó" + w@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + ("a"|"e"|"o"|"y"|"") => u + "o" + w ; + ---- 2. nouns ending in a vowel after two consonants + u + "ó" + w@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + x@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"") + + ("a"|"e"|"o"|"y"|"") => u + "o" + w + x ; + ---- 3. nouns ending in a vowel after three consonants + u + "ó" + w@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + x@("a"|"e"|"o"|"y"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"") + + y@("a"|"e"|"o"|"y"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"") + + ("a"|"e"|"o"|"y"|"")=> u + "o" + w + x + y; + _ => s + } ; + + +-- Auxiliary operation for the following vowel alternations: +-- a:e (sąsiad:sąsiedzie, światło:świetle), +-- o:e (anioł:aniele, uczony:uczeni), +-- e:o (nasienie: nasiona, ziele:zioła), +-- ę:o (imię:imiona, znamię:znamiona) + + oper vowAlt2 : Str -> Str = \s -> + case s of + { ------------------- a:e, o:e, ó:e ----------------------- + w + ("a"|"o"|"ó") + x@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + y@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"") + + ("a"|"e"|"o"|"y"|"") => w + "e" + x + y ; + ----------------------- e:o, ę:o ------------------------ + w + ("e"|"ę") + x@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"") + + y@("a"|"e"|"o"|"y"|"i"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"") + + ("a"|"e"|"o"|"y"|"i"|"") => w + "o" + x + y ; + _ => s + } ; + +-- Auxiliary operation for a vowel alternation: +-- ą:ę (gołąb:gołębia, mąż:męża, ksiądz:księdza), +-- ę:ą (ręka:rąk, cielę:cieląt) + + oper vowAlt3 : Str -> Str = \s -> + case s of + { ---------------------- ą:ę ----------------------- + -- noun ending in a consonant + x + "ą" + y@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"sł"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"zd"|"") => x + "ę" + y ; + --------------------- ą:ę ----------------------- + -- noun ending in a vowel + x + "ą" + y@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"zd") + + ("a"|"o"|"y"|"i") => x + "ę" + y ; + --------------------- ę:ą ----------------------- + -- noun ending in a consonant + x + "ę" + y@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"zd"|"") => x + "ą" + y ; + --------------------- ę:ą ----------------------- + -- noun ending in a vowel + x + "ę" + y@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"zd") + + ("a"|"o"|"y"|"i") => x + "ą" + y ; + _ => s + } ; + + +-- The predefined opers like init, drop, take, don't +-- work correctly with the letters, that are typical only for +-- polish language. Therefore I must define my own function +-- (last1Minus, last7Minus, my5Last, my8Last) +-- that work with polish signs (ą, ć, ę, ł, ń, ś, ó, ź, ż, dź, dż). +-- These opers are needed f.e. for the verb conjugation. + + +-- last1Minus functions work with first (until eight) letters +-- of a word + + oper last1Minus : Str -> Str = \s -> + case s of + { w + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") => w; + _ => s + } ; + + + oper last2Minus : Str -> Str = \s -> + case s of + { w + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") => w; + _ => s + } ; + + + oper last3Minus : Str -> Str = \s -> + case s of + { w + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") => w; + _ => s + } ; + + + oper last4Minus : Str -> Str = \s -> + case s of + { w + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") => w; + _ => s + } ; + + + oper last5Minus : Str -> Str = \s -> + case s of + { w + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + ("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") => w; + _ => s + } ; + + +---------------------------------------------------------------------------------------- +-- my1Last functions work with last (until eight) letters +-- of words + + oper my1Last : Str -> Str = \s -> + case s of + { t + z@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") => z + } ; + + + oper my2Last: Str -> Str = \s -> + case s of + { t + y@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + z@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") => y + z + } ; + + + oper my3Last : Str -> Str = \s -> + case s of + { t + x@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + y@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + z@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") => x + y + z; + _ => s + } ; + + + oper my4Last : Str -> Str = \s -> + case s of + { t + w@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż"|"") + + x@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + y@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + z@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") => w + x + y + z + } ; + + + + oper my5Last : Str -> Str = \s -> + case s of + { t + u@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + w@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + x@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + y@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + z@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") => u + w + x + y + z + } ; + + + oper my6Last : Str -> Str = \s -> + case s of + { r + t@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + u@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + w@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + x@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + y@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + z@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") => t+ u + w + x + y + z + } ; + + + oper my7Last : Str -> Str = \s -> + case s of + { r + q@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + t@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + u@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + w@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + x@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + y@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + z@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + => q + t + u + w + x + y + z + } ; + + + + oper my8Last : Str -> Str = \s -> + case s of + { r + p@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + q@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + t@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + u@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + w@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + x@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + y@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + + z@("a"|"ą"|"b"|"c"|"ć"|"ch"|"cz"|"d"|"e"|"ę"|"f"| + "g"|"h"|"i"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"|"o"|"ó"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"|"u"| + "w"|"y"|"z"|"ź"|"ż"|"dz"|"dź"|"dż") + => p + q + t + u + w + x + y + z + } ; + + + +-- Auxiliary operation for fleeting e-plus for +-- nouns ending in a vowel like matka +-- subject ending in more than one consonant +-- s. St. Szober, page 184 +-- matka:matek, wojna:wojen, skrzydło:skrzydeł + + oper fleetingEplus : Str -> Str = \s -> + case s of { + x + y@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dź"|"dż") + + z@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dź"|"dż") + + ("a"|"o"|"y"|"") => x + y + "e" + z + } ; + + +-- Auxiliary operation for fleeting e-minus for +-- nouns ending in a consonant like krew, konew +-- wesz:wszy, krew:krwi, młotek:młotka + + oper fleetingEminus : Str -> Str = \krew -> + case krew of + { w + x@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dź"|"dż") + + "e" + y@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dź"|"dż") => w + x + y ; + x + "ie" => x + "i" ; + x + "e" => x + } ; + + + +-- Auxiliary operation for fleeting ie-plus for +-- nouns like mgła, owca +-- mgła:mgiel, owca:owiec + + oper fleetingIEplus : Str -> Str = \s -> + case s of { + x + y@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dź"|"dż") + + z@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dź"|"dż"|"") + + ("a"|"o"|"y"|"") => x + y + "ie" + z + } ; + + + +-- Auxiliary operation for fleeting ie-minus for +-- nouns ending in a consonant like wieś +-- wieś:wsi, pies:psa, pień:pnia + + oper fleetingIEminus : Str -> Str = \wies -> + case wies of + { w + x@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dź"|"dż"|"") + + "ie" + y@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dź"|"dż"|"") + + z@("b"|"c"|"ć"|"ch"|"cz"|"d"|"f"| + "g"|"h"|"j"|"k"|"l"|"ł"|"m"|"n"|"ń"| + "p"|"r"|"rz"|"s"|"ś"|"sz"|"t"| + "w"|"z"|"ź"|"ż"|"dź"|"dż"|"") => w + x + y + z ; + x + "ie" => x + } ; + + +-- An operation for fleeting letters-minus for +-- nouns ending in a consonant like chrzest, dzień +-- Not only "ie", but other letters like "zie", "est" +-- must sometimes be put away together. +-- chrzest:chrztu, dzień:dnia + + oper fleetingLettersMinus : Str -> Str = \s -> + case s of + { d + "zie" + "ń" => d + "n" ; -- dzień:dń + d + "est" => d + "t" -- chrzest:chrzt + } ; + + +} diff --git a/lib/src/polish/ParadigmsPol.gf b/lib/src/polish/ParadigmsPol.gf index 9673828ae..53ca39533 100644 --- a/lib/src/polish/ParadigmsPol.gf +++ b/lib/src/polish/ParadigmsPol.gf @@ -30,7 +30,8 @@ resource ParadigmsPol = open (Predef=Predef), Prelude, - MorphoPol, + OrigMorphoPol, + (MorphoPol = OrigMorphoPol), CatPol in {