forked from GitHub/gf-rgl
Merge branch 'master' of https://github.com/GrammaticalFramework/GF
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,7 +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 ; -- worst case
|
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
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -326,6 +329,17 @@ oper
|
|||||||
_ => 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) ;
|
||||||
|
|
||||||
mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = mkComplement p.s} ;
|
mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = mkComplement p.s} ;
|
||||||
@@ -452,7 +466,9 @@ 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) -> N = mk4N ;
|
mkN : (dreng,drengen,drenge,drengene : Str) -> N = mk4N ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -460,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.
|
||||||
|
|
||||||
@@ -82,7 +83,9 @@ oper
|
|||||||
mkN : Str -> N ; -- predictable noun, feminine for "-e" otherwise masculine
|
mkN : Str -> N ; -- predictable noun, feminine for "-e" otherwise masculine
|
||||||
mkN : Str -> Gender -> N ; -- force gender
|
mkN : Str -> Gender -> N ; -- force gender
|
||||||
mkN : (bil,bilen : Str) -> N ; --%
|
mkN : (bil,bilen : Str) -> N ; --%
|
||||||
mkN : (dreng,drengen,drenger,drengene : Str) -> N -- worst case
|
mkN : (dreng,drengen,drenger,drengene : Str) -> N ; -- worst case, gender guessed
|
||||||
|
mkN : (dreng,drengen,drenger,drengene : Str) -> Gender -> N ; -- worst case
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -279,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 ;
|
||||||
@@ -306,6 +310,19 @@ oper
|
|||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
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 ;
|
||||||
"a" => regGenN x feminine ;
|
"a" => regGenN x feminine ;
|
||||||
@@ -435,15 +452,17 @@ 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,drenger,drengene : Str) -> N = mk4N
|
mkN : (dreng,drengen,drenger,drengene : Str) -> N = mk4N
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user