forked from GitHub/gf-rgl
more mkN cases for Dan and Nor
This commit is contained in:
@@ -81,7 +81,8 @@ oper
|
|||||||
-- This function takes the singular indefinite and definite forms; the
|
-- This function takes the singular indefinite and definite forms; the
|
||||||
-- gender is computed from the definite form.
|
-- 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
|
-- This function takes the singular indefinite and definite and the plural
|
||||||
-- indefinite
|
-- indefinite
|
||||||
@@ -91,8 +92,9 @@ oper
|
|||||||
-- Worst case: give all four forms. The gender is computed from the
|
-- Worst case: give all four forms. The gender is computed from the
|
||||||
-- last letter of the second form (if "n", then $utrum$, otherwise $neutrum$).
|
-- 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) -> 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") ;
|
"n" => mk3N x y (init y + "r") ;
|
||||||
_ => mk3N x y x
|
_ => 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) ;
|
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 -> N = regN ;
|
||||||
mkN : Str -> Gender -> N = regGenN ;
|
mkN : Str -> Gender -> N = regGenN ;
|
||||||
mkN : (bil,bilen : Str) -> N = mk2N ;
|
mkN : (bil,bilen : Str) -> N = mk2N ;
|
||||||
|
mkN : (bil,biler : Str) -> Gender -> N = mk2gN ;
|
||||||
mkN : (bil,bilen,biler : Str) -> N = mk3N ;
|
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) -> Gender -> N = \x,y,z,u,g -> mk4N x y z u ** {g = g} ;
|
||||||
mkN : (dreng,drengen,drenge,drengene : Str) -> N = mk4N ;
|
mkN : (dreng,drengen,drenge,drengene : Str) -> N = mk4N ;
|
||||||
@@ -462,6 +476,7 @@ oper
|
|||||||
regN : Str -> N ;
|
regN : Str -> N ;
|
||||||
regGenN : Str -> Gender -> N ;
|
regGenN : Str -> Gender -> N ;
|
||||||
mk2N : (bil,bilen : Str) -> N ;
|
mk2N : (bil,bilen : Str) -> N ;
|
||||||
|
mk2gN : (bil,biler : Str) -> Gender -> N ;
|
||||||
mk3N : (bil,bilen,biler : Str) -> N ;
|
mk3N : (bil,bilen,biler : Str) -> N ;
|
||||||
mk4N : (dreng,drengen,drenge,drengene : Str) -> N ;
|
mk4N : (dreng,drengen,drenge,drengene : Str) -> N ;
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ oper
|
|||||||
masculine : Gender ; -- the "en" gender
|
masculine : Gender ; -- the "en" gender
|
||||||
feminine : Gender ; -- the "ei" gender
|
feminine : Gender ; -- the "ei" gender
|
||||||
neutrum : Gender ; -- the "et" gender
|
neutrum : Gender ; -- the "et" gender
|
||||||
|
utrum : Gender ; -- the "en" gender, same as masculine
|
||||||
|
|
||||||
-- To abstract over number names, we define the following.
|
-- To abstract over number names, we define the following.
|
||||||
|
|
||||||
@@ -281,6 +282,7 @@ oper
|
|||||||
masculine = NUtr Masc ;
|
masculine = NUtr Masc ;
|
||||||
feminine = NUtr Fem ;
|
feminine = NUtr Fem ;
|
||||||
neutrum = NNeutr ;
|
neutrum = NNeutr ;
|
||||||
|
utrum = masculine ;
|
||||||
singular = Sg ;
|
singular = Sg ;
|
||||||
plural = Pl ;
|
plural = Pl ;
|
||||||
nominative = Nom ;
|
nominative = Nom ;
|
||||||
@@ -307,6 +309,19 @@ oper
|
|||||||
NNeutr => mk4N x (x + "et") (x + "") (x + "a")
|
NNeutr => mk4N x (x + "et") (x + "") (x + "a")
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
mk2gN x y g = case last x of {
|
||||||
|
"e" => case g of {
|
||||||
|
NUtr Masc => mk4N x (x + "n") y (x + "ne") ;
|
||||||
|
NUtr Fem => mk4N x (init x + "a") y (x + "ne") ;
|
||||||
|
NNeutr => mk4N x (x + "t") y (init x + "a") ----
|
||||||
|
} ;
|
||||||
|
_ => case g of {
|
||||||
|
NUtr Masc => mk4N x (x + "en") y (x + "ene") ;
|
||||||
|
NUtr Fem => mk4N x (x + "a") y (x + "ene") ;
|
||||||
|
NNeutr => mk4N x (x + "et") y (x + "a")
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
mk2N x y = case last y of {
|
mk2N x y = case last y of {
|
||||||
"n" => regGenN x masculine ;
|
"n" => regGenN x masculine ;
|
||||||
@@ -437,15 +452,16 @@ oper
|
|||||||
---------
|
---------
|
||||||
|
|
||||||
mk2N : (bil,bilen : Str) -> N ;
|
mk2N : (bil,bilen : Str) -> N ;
|
||||||
|
mk2gN : (bil,bilen : Str) -> Gender -> N ;
|
||||||
mk4N : (dreng,drengen,drenger,drengene : Str) -> N ;
|
mk4N : (dreng,drengen,drenger,drengene : Str) -> N ;
|
||||||
regN : Str -> N ;
|
regN : Str -> N ;
|
||||||
regGenN : Str -> Gender -> N ;
|
regGenN : Str -> Gender -> N ;
|
||||||
mk2N : (bil,bilen : Str) -> N ;
|
|
||||||
|
|
||||||
mkN = overload {
|
mkN = overload {
|
||||||
mkN : Str -> N = regN ;
|
mkN : Str -> N = regN ;
|
||||||
mkN : Str -> Gender -> N = regGenN ;
|
mkN : Str -> Gender -> N = regGenN ;
|
||||||
mkN : (bil,bilen : Str) -> N = mk2N ;
|
mkN : (bil,bilen : Str) -> N = mk2N ;
|
||||||
|
mkN : (bil,biler : Str) -> Gender -> N = mk2gN ;
|
||||||
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) -> Gender -> N = \x,y,z,u,g -> mk4N x y z u ** {g = g} ;
|
||||||
mkN : (dreng,drengen,drenger,drengene : Str) -> N = mk4N
|
mkN : (dreng,drengen,drenger,drengene : Str) -> N = mk4N
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
Reference in New Issue
Block a user