diff --git a/src/icelandic/LexiconIce.gf b/src/icelandic/LexiconIce.gf index 3df1868aa..2b052acc2 100644 --- a/src/icelandic/LexiconIce.gf +++ b/src/icelandic/LexiconIce.gf @@ -42,7 +42,7 @@ concrete LexiconIce of Lexicon = CatIce ** friend_N = mkN "vinur" "vinar" "vinir" masculine ; brother_N2 = mkN2 (mkN "bróðir" "bróður" "bræður" masculine) (mkPrep [] genitive) ; father_N2 = mkN2 (mkN "faðir" "föður" "feður" masculine) (mkPrep [] genitive) ; - man_N = mkN "maður" "mann" "menn" masculine ; + man_N = mkN "maður" "manns" "menn" masculine ; husband_N = mkCompoundN "eigin" (man_N) ; policeman_N = mkCompoundN "lögreglu" (mkN "þjónn" masculine) ; smoke_N = mkN "reykur" "reykjar" "reykir" masculine; diff --git a/src/icelandic/ParadigmsIce.gf b/src/icelandic/ParadigmsIce.gf index c441521de..3a6937d33 100644 --- a/src/icelandic/ParadigmsIce.gf +++ b/src/icelandic/ParadigmsIce.gf @@ -143,7 +143,8 @@ resource ParadigmsIce = open } ; neutrNForms3 : (_,_,_ : Str) -> NForms = \nom,gen,pl -> case of { - _ => dBarn nom pl + <_+"ur", _+"nns", _+"nn"> => dMaður nom gen pl ; + _ => dBarn nom pl } ; neutrNForms4 : (_,_,_,_ : Str) -> NForms = \sgNom,sgGen,plNom,plGen -> case of { @@ -294,36 +295,35 @@ resource ParadigmsIce = open weakPosit : (_,_ : Str) -> AForms = \mas,fem -> case of { => dPositW (front + "r") ; => dPositW stem ; + <#consonant* + "ei" + ("ll" | "nn"),_> => dSeinn mas ; => dPositW (í2i front + "l") ; => dPositW (front + "n") ; _ => dPositW fem } ; compar1 : Str -> AForms = \s -> case s of { - front + "ni" => dI (init s) ; - stem + "ari" => dAri stem ; - stem + "ri" => dRi stem ; - front + mid@("leg" | "ug") + "ur" => dRi (front + mid) ; - stem + "ur" => dAri stem ; - front + "inn" => dAri (front + "n") ; - _ + ("ll" | "nn") => dI s - } ; + front + "ni" => dI (init s) ; + stem + "ari" => dAri stem ; + stem + "ri" => dRi stem ; + front + mid@("leg"|"ug") + "ur" => dRi (front + mid) ; + stem + "ur" => dAri stem ; + #consonant* + "ei" + ("ll" | "nn") => dSeinn s ; + front + "inn" => dAri (front + "n") ; + _ + ("ll" | "nn") => dI s + } ; - compar2 : (_,_ : Str) -> AForms = \mas,fem -> case of { - => dAri (front + "r") ; - => dRi (front + mid) ; - => dAri stem ; - => dAri (front + "n") ; - <_ + ("ll" | "nn"),_> => dI mas ; - <_ + "r", _ + ("á" | "ó" | "ú" | "ý" | "æ")> => dRi fem ; - <_,_ + ("r" | "s" | (#consonant + "n"))> => dAri fem - } ; + compar2 : (_,_ : Str) -> AForms = \mas,fem -> case of { + => dAri (front + "r") ; + => dRi (front + mid) ; + => dAri stem ; + <_ + ("ll" | "nn"),_> => compar1 mas ; + <_ + "r", _ + ("á"|"ó"|"ú"|"ý"|"æ")> => dRi fem ; + <_,_ + ("r"|"s"|(#consonant + "n"))> => dAri fem + } ; weakSuperl : (_,_ : Str) -> AForms = \mas,fem -> case of { => dSuperlW (front + "nst") (front + "nust") ; => dSuperlW (stem + "ast") (stem + "ust") ; - => dSuperlW (stem + "st") (stem + "st") ; - => dSuperlW (stem + "st") (stem + "st") ; => dSuperlW (stem + "st") (stem + "st") ; => dSuperlW (frontm + "rast") (frontf + "rust") ; => dSuperlW (front + "ast") (front + "ust") ; @@ -332,22 +332,23 @@ resource ParadigmsIce = open _ => dSuperlW (fem + "ast") (fem + "ust") } ; - strongSuperl1 : Str -> AForms = \s -> case s of { - front + "ni" => dFalastur (front + "nstur") (front + "nst") ; + strongSuperl1 : Str -> AForms = \t -> case t of { + front + "ni" => dFalastur (front + "nstur") (front + "nst") ; stem + "ari" => dFalastur (stem + "astur") (stem + "ust") ; - stem + "rri" => dFalastur (stem + "stur") (stem + "st") ; - stem + "ri" => dFalastur (stem + "stur") (stem + "st") ; - front + "inn" => dFalastur (front + "nastur") ((a2ö front) + "nust") ; - stem + "ur" => dFalastur (stem + "astur") ((a2ö stem) + "ust") ; - front + end@("ll" | "nn") => dFalastur (front + (init end) + "astur") ((a2ö front) + (init end) + "ust") + stem + "ri" => dFalastur (stem + "stur") (stem + "st") ; + stem@(_ + "ei") + + end@("ll" | "nn") => dFalastur (stem + init end + "astur") (a2ö stem + init end + "ust") ; + stem + "inn" => dFalastur (stem + "nastur") (a2ö stem + "nust") ; + stem + end@("ll"|"nn") => dFalastur (stem + init end + "astur") (a2ö stem + init end + "ust") ; + stem + "ur" => dFalastur (stem + "astur") ((a2ö stem) + "ust") } ; strongSuperl2 : (_,_ : Str) -> AForms = \mas,fem -> case of { - => dFalastur (frontm + "rastur") (frontf + "rust") ; - => dFalastur (frontm + "astur") (fem + "ust") ; + => dFalastur (frontm + "rastur") (frontf + "rust") ; + => dFalastur (frontm + "astur") (fem + "ust") ; <_, _ + ("á" | "ú" | "ó")> => dFalastur (fem + "astur") (fem + "ust") ; <_, _ + ("ý" | "æ")> => dFalastur (fem + "jastur") (fem + "just") ; - => dFalastur (front + (init end) + "astur") ((a2ö front) + (init end) + "ust") ; + <_+("ll" | "nn"), _> => strongSuperl1 mas ; <_,_ + ("r" | "s" | (#consonant + "n"))> => dFalastur (fem + "astur") (fem + "ust") } ;