--# -path=.:../prelude:../common --# -coding=utf8 -- This file is automaticaly generated by generate_tables_sgjp. -- That program copies part of its source code to the output, -- therefore this file is covered by the LGPLv3 as well as the -- program itself. -- It is also possible that the input of the program was distributed -- under some license. If it is GPL or similar my interpretation is that -- this file is _not_ a copy of an input and is covered by LGPLv3, while -- the dictionary paired with this file is covered by both LGPLv3 and -- the license of the input. -- Be careful not to violate the copyright low! -- For details see http://www.mimuw.edu.pl/~asl/tabeleusz/ . resource ParadigmsNounLit = ResLit ** open Prelude, (Predef=Predef) in { flags coding=utf8; -- oper mkN: (SubstForm => Str) -> Gender -> CommNoun; -- oper mkN tab gen = { s = tab; g = gen }; oper mkN : overload { mkN : Str -> CommNoun ; -- One argument: singular nominative mkN : (SubstForm => Str) -> Gender -> CommNoun ;-- Two arguments: singular nom, gender mkN : (SubstForm => Str) -> Number -> CommNoun ;-- Two arguments: singular nom, number } ; oper mkN = overload { mkN : Str -> CommNoun = \lemma -> mkNoun lemma ; mkN : Str -> Gender -> CommNoun = \lemma, gen -> mkNounWithGender lemma gen ;-- Two arguments: singular nom, gender mkN : Str -> Number -> CommNoun = \lemma, num -> mkNounWithNumber lemma num ;-- Two arguments: singular nom, gender } ; mkNoun : Str -> CommNoun = \lemma -> let nounInfo = guessParadigm lemma in lin N ({ s = nounInfo.p1; g = nounInfo.p2 ; nomType = Reg}) ; -- we make a CommNoun with Table and Gender mkNounWithGender : Str -> Gender -> CommNoun = \lemma, gender -> let nounInfo = guessParadigmWithGender lemma gender in lin N ({ s = nounInfo.p1; g = nounInfo.p2 ; nomType = Reg }) ; -- we make a CommNoun with Table and Gender mkNounWithNumber : Str -> Number -> CommNoun = \lemma, number -> let nounInfo = guessParadigmWithNumber lemma number in lin N ({ s = nounInfo.p1; g = nounInfo.p2 ; nomType = Reg }) ; -- Pluralia tantum not processed guessParadigm : Str -> (SubstForm => Str) * NounAgrCat = \lemma -> case lemma of { _ + "as" => ; _ + "ai" => ; _ + "is" => ; _ + "ys" => ; _ + "us" => ; _ + "uo" => ; _ + "a" => ; _ + "os" => ; _ + "ė" => ; _ + "ės" => ; _ => } ; guessParadigmWithGender : Str -> Gender -> (SubstForm => Str) * NounAgrCat = \lemma, gender -> case of { <_ + "as",Masc> => ; <_ + "ai",Masc> => ; <_ + "is",Masc> => ; <_ + "is",Fem> => ; <_ + "ys",Masc> => ; <_ + "ys",Fem> => ; <_ + "us",Masc> => ; <_ + "uo",_> => ; <_ + "a",_> => ; <_ + "os",_> => ; <_ + "ė",_> => ; <_ + "ės",_> => ; _ => } ; -- Is it very useful? guessParadigmWithNumber : Str -> Number -> (SubstForm => Str) * NounAgrCat = \lemma, number -> case of { <_ + "as",_> => ; <_ + "ai",_> => ; <_ + "is",_> => ; <_ + "ys",Sing> => ; <_ + "us",_> => ; <_ + "ys",Plur> => ; <_ + "uo",_> => ; <_ + "a",_> => ; <_ + "os",_> => ; <_ + "ė",_> => ; <_ + "ės",_> => ; _ => } ; oper nounPN : (SubstForm => Str) -> GenNum -> NounPhrase; oper nounPN forms gn = { nom = forms!SF Sg Nom; voc = forms!SF Sg VocL; dep = table { GenC => forms!SF Sg Gen; AccC => forms!SF Sg Acc; DatC => forms!SF Sg Dat; InsC => forms!SF Sg Ins; LocC => forms!SF Sg Loc }; gn = gn ; p = P3 ; nomType = Reg } ; oper mkNTable0: Str -> SubstForm => Str; --% oper mkNTable0 lemma = -- let w = lemma in table { _ => lemma }; oper mkNTable1a: Str -> SubstForm => Str; --% oper mkNTable1a lemma = case lemma of { s + "ai" => table { SF Sg Nom => s + "as"; -- Does not exist (Polish grammar double all plur forms) SF Sg Acc => s + "ą"; -- Does not exist (Polish grammar double all plur forms) SF Sg Gen => s + "o"; -- Does not exist (Polish grammar double all plur forms) SF Sg Ins => s + "u"; -- Does not exist (Polish grammar double all plur forms) SF Sg Dat => s + "ui"; -- Does not exist (Polish grammar double all plur forms) SF Sg Loc => s + "e"; -- Does not exist (Polish grammar double all plur forms) SF Sg VocL => s + "ai"; -- Does not exist (Polish grammar double all plur forms) SF Pl Nom => s + "ai"; SF Pl Acc => s + "us"; SF Pl Gen => s + "ų"; SF Pl Ins => s + "ais"; SF Pl Dat => s + "ams"; SF Pl Loc => s + "uose"; SF Pl VocL => s + "ai" } ; s + "as" => table { SF Sg Nom => s + "as"; SF Sg Acc => s + "ą"; SF Sg Gen => s + "o"; SF Sg Ins => s + "u"; SF Sg Dat => s + "ui"; SF Sg Loc => s + "e"; SF Sg VocL => s + "ai"; -- variante e SF Pl Nom => s + "ai"; SF Pl Acc => s + "us"; SF Pl Gen => s + "ų"; SF Pl Ins => s + "ais"; SF Pl Dat => s + "ams"; SF Pl Loc => s + "uose"; SF Pl VocL => s + "ai" } ; _ => Predef.error ("Error: " + lemma + " is not a 1st declension Noun") }; oper mkNTable1c: Str -> SubstForm => Str; --% oper mkNTable1c lemma = let s = Predef.tk 2 lemma in table { SF Sg Nom => s + "is"; SF Sg Acc => s + "į"; SF Sg Gen => (soften s) + "io"; SF Sg Ins => (soften s) + "iu"; SF Sg Dat => (soften s) + "iui"; SF Sg Loc => s + "yje"; -- variante iuje SF Sg VocL => s + "i"; SF Pl Nom => (soften s) + "iai"; SF Pl Acc => (soften s) + "ius"; SF Pl Gen => (soften s) + "ių"; SF Pl Ins => (soften s) + "iais"; SF Pl Dat => (soften s) + "iams"; SF Pl Loc => (soften s) + "iuose"; SF Pl VocL => (soften s) + "iai" }; oper mkNTable1d: Str -> SubstForm => Str; --% oper mkNTable1d lemma = let s = Predef.tk 2 lemma in table { SF Sg Nom => s + "ys"; SF Sg Acc => s + "į"; SF Sg Gen => (soften s) + "io"; SF Sg Ins => (soften s) + "iu"; SF Sg Dat => (soften s) + "iui"; SF Sg Loc => s + "yje"; SF Sg VocL => s + "y"; SF Pl Nom => (soften s) + "iai"; SF Pl Acc => (soften s) + "ius"; SF Pl Gen => (soften s) + "ių"; SF Pl Ins => (soften s) + "iais"; SF Pl Dat => (soften s) + "iams"; SF Pl Loc => (soften s) + "iuose"; SF Pl VocL => (soften s) + "iai" }; oper mkNTable2: Str -> SubstForm => Str; --% oper mkNTable2 lemma = let s = Predef.tk 2 lemma in table { SF Sg Nom => s + "us"; SF Sg Acc => s + "ų"; SF Sg Gen => s + "aus"; SF Sg Ins => s + "umi"; SF Sg Dat => s + "ui"; SF Sg Loc => s + "uje"; SF Sg VocL => s + "au"; SF Pl Nom => s + "ūs"; SF Pl Acc => s + "us"; SF Pl Gen => s + "ų"; SF Pl Ins => s + "umis"; SF Pl Dat => s + "ums"; SF Pl Loc => s + "uose"; SF Pl VocL => s + "ūs" }; oper mkNTable_is: Str -> SubstForm => Str; --% oper mkNTable_is lemma = let s = Predef.tk 2 lemma in table { SF Sg Nom => s + "is"; SF Sg Acc => s + "į"; SF Sg Gen => s + "ies"; SF Sg Ins => s + "imi"; SF Sg Dat => (soften s) + "iai"; SF Sg Loc => s + "yje"; -- variante iuje SF Sg VocL => s + "ie"; SF Pl Nom => s + "ys"; SF Pl Acc => s + "is"; SF Pl Gen => (soften s) + "ių"; -- There are exceptions SF Pl Ins => s + "imis"; SF Pl Dat => s + "ims"; SF Pl Loc => s + "yse"; SF Pl VocL => s + "ys" }; oper mkNTable_uo: Str -> SubstForm => Str; --% oper mkNTable_uo lemma = case lemma of { s + "enys" => table { SF Sg Nom => s + "uo"; -- Does not exist (Polish grammar double all plur forms) SF Sg Acc => s + "enį"; -- Does not exist (Polish grammar double all plur forms) SF Sg Gen => s + "ens"; -- Does not exist (Polish grammar double all plur forms) SF Sg Ins => s + "eniu"; -- Does not exist (Polish grammar double all plur forms) SF Sg Dat => s + "eniui"; -- Does not exist (Polish grammar double all plur forms) SF Sg Loc => s + "enyje"; -- Does not exist (Polish grammar double all plur forms) SF Sg VocL => s + "enie"; -- Does not exist (Polish grammar double all plur forms) SF Pl Nom => s + "enys"; SF Pl Acc => s + "enis"; SF Pl Gen => s + "enų"; SF Pl Ins => s + "enimis"; SF Pl Dat => s + "enims"; SF Pl Loc => s + "enyse"; SF Pl VocL => s + "enys" } ; "šuo" => table { SF Sg Nom => "šuo"; SF Sg Acc => "šunį"; SF Sg Gen => "šuns"; SF Sg Ins => "šuniu"; SF Sg Dat => "šuniui"; SF Sg Loc => "šunyje"; SF Sg VocL => "šunie"; SF Pl Nom => "šunys"; SF Pl Acc => "šunis"; SF Pl Gen => "šunų"; SF Pl Ins => "šunimis"; SF Pl Dat => "šunims"; SF Pl Loc => "šunyse"; SF Pl VocL => "šunys" } ; "sesuo" => table { SF Sg Nom => "sesuo"; SF Sg Acc => "seserį"; SF Sg Gen => "sesers"; SF Sg Ins => "seserimi"; -- seseria SF Sg Dat => "seseriai"; SF Sg Loc => "seseryje"; SF Sg VocL => "seserie"; SF Pl Nom => "seserys"; SF Pl Acc => "seseris"; SF Pl Gen => "seserų"; SF Pl Ins => "seserimis"; SF Pl Dat => "seserims"; SF Pl Loc => "seseryse"; SF Pl VocL => "seserys" } ; s + "uo" => table { SF Sg Nom => s + "uo"; SF Sg Acc => s + "enį"; SF Sg Gen => s + "ens"; SF Sg Ins => s + "eniu"; SF Sg Dat => s + "eniui"; SF Sg Loc => s + "enyje"; SF Sg VocL => s + "enie"; SF Pl Nom => s + "enys"; SF Pl Acc => s + "enis"; SF Pl Gen => s + "enų"; SF Pl Ins => s + "enimis"; SF Pl Dat => s + "enims"; SF Pl Loc => s + "enyse"; SF Pl VocL => s + "enys" } ; _ => Predef.error ("Error: " + lemma + " is not a 4th declension Noun") }; oper mkNTable_a: Str -> SubstForm => Str; --% oper mkNTable_a lemma = case lemma of { s + "os" => table { SF Sg Nom => s + "a"; -- Does not exist (Polish grammar double all plur forms) SF Sg Acc => s + "ą"; -- Does not exist (Polish grammar double all plur forms) SF Sg Gen => s + "os"; -- Does not exist (Polish grammar double all plur forms) SF Sg Ins => s + "a"; -- Does not exist (Polish grammar double all plur forms) SF Sg Dat => s + "ai"; -- Does not exist (Polish grammar double all plur forms) SF Sg Loc => s + "oje"; -- Does not exist (Polish grammar double all plur forms) SF Sg VocL => s + "a"; -- Does not exist (Polish grammar double all plur forms) SF Pl Nom => s + "os"; SF Pl Acc => s + "as"; SF Pl Gen => s + "ų"; SF Pl Ins => s + "omis"; SF Pl Dat => s + "oms"; SF Pl Loc => s + "ose"; SF Pl VocL => s + "os" } ; "marti" => table { SF Sg Nom => "marti"; SF Sg Acc => "marčią"; SF Sg Gen => "marčios"; SF Sg Ins => "marčia"; SF Sg Dat => "marčiai"; SF Sg Loc => "marčioje"; SF Sg VocL => "marčia"; -- Correct SF Pl Nom => "marčios"; SF Pl Acc => "marčias"; SF Pl Gen => "marčių"; SF Pl Ins => "marčiomis"; SF Pl Dat => "marčioms"; SF Pl Loc => "marčiose"; SF Pl VocL => "marčios" } ; s + "a" => table { SF Sg Nom => s + "a"; SF Sg Acc => s + "ą"; SF Sg Gen => s + "os"; SF Sg Ins => s + "a"; SF Sg Dat => s + "ai"; SF Sg Loc => s + "oje"; SF Sg VocL => s + "a"; SF Pl Nom => s + "os"; SF Pl Acc => s + "as"; SF Pl Gen => s + "ų"; SF Pl Ins => s + "omis"; SF Pl Dat => s + "oms"; SF Pl Loc => s + "ose"; SF Pl VocL => s + "os" } ; _ => Predef.error ("Error: " + lemma + " is not a 4th declension Noun") }; oper mkNTable_e: Str -> SubstForm => Str; --% oper mkNTable_e lemma = case lemma of { s + "ės" => table { SF Sg Nom => s + "ė"; -- Does not exist (Polish grammar double all plur forms) SF Sg Acc => s + "ę"; -- Does not exist (Polish grammar double all plur forms) SF Sg Gen => s + "ės"; -- Does not exist (Polish grammar double all plur forms) SF Sg Ins => s + "e"; -- Does not exist (Polish grammar double all plur forms) SF Sg Dat => s + "ei"; -- Does not exist (Polish grammar double all plur forms) SF Sg Loc => s + "ėje"; -- Does not exist (Polish grammar double all plur forms) SF Sg VocL => s + "e"; -- Does not exist (Polish grammar double all plur forms) SF Pl Nom => s + "ės"; SF Pl Acc => s + "es"; SF Pl Gen => (soften s) + "ių"; SF Pl Ins => s + "ėmis"; SF Pl Dat => s + "ėms"; SF Pl Loc => s + "ėse"; SF Pl VocL => s + "ės" } ; "duktė" => table { SF Sg Nom => "duktė"; SF Sg Acc => "dukterį"; SF Sg Gen => "dukters"; SF Sg Ins => "dukterimi"; -- dukteria SF Sg Dat => "dukteriai"; SF Sg Loc => "dukteryje"; SF Sg VocL => "dukterie"; SF Pl Nom => "dukterys"; SF Pl Acc => "dukteris"; SF Pl Gen => "dukterų"; SF Pl Ins => "dukterimis"; SF Pl Dat => "dukterims"; SF Pl Loc => "dukteryse"; SF Pl VocL => "dukterys" } ; s + "ė" => table { SF Sg Nom => s + "ė"; SF Sg Acc => s + "ę"; SF Sg Gen => s + "ės"; SF Sg Ins => s + "e"; SF Sg Dat => s + "ei"; SF Sg Loc => s + "ėje"; SF Sg VocL => s + "e"; SF Pl Nom => s + "ės"; SF Pl Acc => s + "es"; SF Pl Gen => (soften s) + "ių"; SF Pl Ins => s + "ėmis"; SF Pl Dat => s + "ėms"; SF Pl Loc => s + "ėse"; SF Pl VocL => s + "ės" } ; _ => Predef.error ("Error: " + lemma + " is not a 4th declension Noun") }; }