more mkN cases for Dan and Nor

This commit is contained in:
Aarne Ranta
2018-01-16 10:27:36 +01:00
parent a5652e7f1e
commit b2d55c064e
2 changed files with 34 additions and 3 deletions

View File

@@ -81,7 +81,8 @@ oper
-- This function takes the singular indefinite and definite forms; the
-- gender is computed from the definite form.
mkN : (bil,bilen : Str) -> N ; -- better prediction from both singular and plural
mkN : (bil,bilen : Str) -> N ; -- prediction from both singular indefinite and definite
mkN : (bil,biler : Str) -> Gender -> N ; -- prediction from both singular and plural plus gender
-- This function takes the singular indefinite and definite and the plural
-- indefinite
@@ -91,8 +92,9 @@ oper
-- Worst case: give all four forms. The gender is computed from the
-- last letter of the second form (if "n", then $utrum$, otherwise $neutrum$).
mkN : (dreng,drengen,drenge,drengene : Str) -> N ; -- almost worst case, gender guessed from Sg Def
mkN : (dreng,drengen,drenge,drengene : Str) -> Gender -> N ; -- worst case
mkN : (dreng,drengen,drenge,drengene : Str) -> N ; -- worst case, gender guessed
} ;
@@ -326,6 +328,17 @@ oper
"n" => mk3N x y (init y + "r") ;
_ => mk3N x y x
} ;
mk2gN x y g = case last x of {
"e" => case g of {
Utr => mk4N x (x + "n") y (y + "ne") ;
Neutr => mk4N x (x + "t") y (y + "e")
} ;
_ => case g of {
Utr => mk4N x (x + "en") y (x + "ne") ;
Neutr => mk4N x (x + "et") y (y + "ene")
}
} ;
mk3N x y z = let u = ifTok Str x z "ene" "ne" in mk4N x y z (z + u) ;
@@ -453,6 +466,7 @@ oper
mkN : Str -> N = regN ;
mkN : Str -> Gender -> N = regGenN ;
mkN : (bil,bilen : Str) -> N = mk2N ;
mkN : (bil,biler : Str) -> Gender -> N = mk2gN ;
mkN : (bil,bilen,biler : Str) -> N = mk3N ;
mkN : (dreng,drengen,drenge,drengene : Str) -> Gender -> N = \x,y,z,u,g -> mk4N x y z u ** {g = g} ;
mkN : (dreng,drengen,drenge,drengene : Str) -> N = mk4N ;
@@ -462,6 +476,7 @@ oper
regN : Str -> N ;
regGenN : Str -> Gender -> N ;
mk2N : (bil,bilen : Str) -> N ;
mk2gN : (bil,biler : Str) -> Gender -> N ;
mk3N : (bil,bilen,biler : Str) -> N ;
mk4N : (dreng,drengen,drenge,drengene : Str) -> N ;