diff --git a/lib/src/finnish/MorphoFin.gf b/lib/src/finnish/MorphoFin.gf index ce90d26d6..2445125c1 100644 --- a/lib/src/finnish/MorphoFin.gf +++ b/lib/src/finnish/MorphoFin.gf @@ -277,7 +277,7 @@ resource MorphoFin = ResFin ** open Prelude in { dSDP : Str -> NForms = \SDP -> let - c = case last SDP of { + c = case Predef.toUpper (last SDP) of { "A" => <"n","ta","na","han","iden","ita","ina","issa","ihin"> ; "B" | "C" | "D" | "E" | "G" | "P" | "T" | "V" | "W" => @@ -296,6 +296,8 @@ resource MorphoFin = ResFin ** open Prelude in { <"n","tä","nä","hän","iden","itä","inä","issä","ihin"> ; "Ö" => <"n","tä","nä","hön","iden","itä","inä","issä","ihin"> ; + "Y" => + <"n","tä","nä","hyn","iden","itä","inä","issä","ihin"> ; _ => Predef.error (["illegal abbreviation"] ++ SDP) } ; in nForms10 diff --git a/lib/src/finnish/ParadigmsFin.gf b/lib/src/finnish/ParadigmsFin.gf index 5f4272bee..7c859b43d 100644 --- a/lib/src/finnish/ParadigmsFin.gf +++ b/lib/src/finnish/ParadigmsFin.gf @@ -365,6 +365,7 @@ oper ukon = weakGrade ukko + "n" ; in case of { + <_, _ + ":" + ? + ("a" | "ä")> => dSDP ukko ; <_ + "ea", _ + "oita"> => dSilakka ukko ukon ukkoja ; -- idea, but not korkea <_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" | "ää" | "öö" | @@ -380,7 +381,6 @@ oper <_ + ("ut" | "yt"),_ + ("uita" | "yitä")> => dRae ukko (init ukko + "en") ; <_ + "e", nuk + ("eja" | "ejä")> => dNukke ukko ukon ; - <_, _ + ":" + _ + ("a" | "ä")> => dSDP ukko ; <_ + ("l" | "n" | "r" | "s"), _ + ("eja" | "ejä")> => dUnix ukko ; <_, _ + ("a" | "ä")> => ukot ; _ => @@ -394,6 +394,7 @@ oper ukot = nForms2 ukko ukkoja ; in case of { + <_, _ + ":n"> => dSDP ukko ; <_ + ("aa" | "ee" | "ii" | "oo" | "uu" | "yy" | "ää" | "öö" | "ie" | "uo" | "yö" | "ea" | "eä" | "ia" | "iä" | "io" | "iö" | "ja" | "jä"), _ + "n"> => @@ -409,7 +410,6 @@ oper => dRae ukko ukon ; => dArpi ukko ukon ; <_ + ("us" | "ys"), _ + "den"> => dLujuus ukko ; - <_, _ + ":n"> => dSDP ukko ; <_, _ + "n"> => ukot ; _ => Predef.error (["second argument should end in n, not"] ++ ukon) diff --git a/lib/src/prelude/Predef.gf b/lib/src/prelude/Predef.gf index d8141ea8c..f8002ae9b 100644 --- a/lib/src/prelude/Predef.gf +++ b/lib/src/prelude/Predef.gf @@ -27,6 +27,9 @@ resource Predef = { oper eqStr : Tok -> Tok -> PBool = variants {} ; -- test if equal strings oper occur : Tok -> Tok -> PBool = variants {} ; -- test if occurs as substring oper occurs : Tok -> Tok -> PBool = variants {} ; -- test if any char occurs + oper isUpper : Tok -> PBool = variants {} ; -- test if all chars are upper-case + oper toUpper : Tok -> Tok = variants {} ; -- map all chars to upper case + oper toLower : Tok -> Tok = variants {} ; -- map all chars to lower case oper show : (P : Type) -> P -> Tok = variants {} ; -- convert param to string oper read : (P : Type) -> Tok -> P = variants {} ; -- convert string to param oper toStr : (L : Type) -> L -> Str = variants {} ; -- find the "first" string