forked from GitHub/gf-rgl
misc fixes in morpho (works for 4 nouns!)
This commit is contained in:
@@ -46,7 +46,7 @@ param
|
|||||||
oper
|
oper
|
||||||
getNForm : Number -> Definiteness -> Case -> NForm = \n,d,c ->
|
getNForm : Number -> Definiteness -> Case -> NForm = \n,d,c ->
|
||||||
case <d,c> of {
|
case <d,c> of {
|
||||||
<Indefinite,Voc> => Indef n Nom ; ---- ???
|
<Indefinite,Voc> => Def n Voc ;
|
||||||
<Indefinite,CC c> => Indef n c ;
|
<Indefinite,CC c> => Indef n c ;
|
||||||
<Definite,c> => Def n c
|
<Definite,c> => Def n c
|
||||||
} ;
|
} ;
|
||||||
@@ -72,11 +72,44 @@ oper
|
|||||||
palatalised,
|
palatalised,
|
||||||
lenited_palatalised = loch ;
|
lenited_palatalised = loch ;
|
||||||
g = g
|
g = g
|
||||||
}
|
} ;
|
||||||
-- ;
|
smartN : (base : Str) -> Gender -> LinN = \tunnag,g -> {
|
||||||
-- smartN : (…,…,…,… : Str)
|
base = tunnag ;
|
||||||
|
gen = fm (tunnaig + "e") tunnaig ;
|
||||||
|
pl = fm (tunnag + "an") tunnaig ; -- for other allomorphs, use 4-argument paradigm
|
||||||
|
lenited = thunnag ;
|
||||||
|
palatalised = tunnaig ;
|
||||||
|
lenited_palatalised = thunnaig ;
|
||||||
|
g = g
|
||||||
|
} where {
|
||||||
|
tunnaig : Str = palatalise tunnag ;
|
||||||
|
thunnag : Str = lenite tunnag ;
|
||||||
|
thunnaig : Str = lenite tunnaig ;
|
||||||
|
fm : Str -> Str -> Str = \fem,masc -> case g of {
|
||||||
|
Fem => fem ; Masc => masc }
|
||||||
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
vowel : pattern Str = #("a"|"à"|"e"|"i"|"ì"|"o"|"u") ; -- more accents?
|
||||||
|
diphthong : pattern Str = #("ea"|"oi") ;
|
||||||
|
lenitable : pattern Str = #("b"|"c"|"f"|"g"|"m"|"p"|"d"|"t"|"s") ;
|
||||||
|
|
||||||
|
palatalise : Str -> Str = \lamh -> case lamh of {
|
||||||
|
-- f + "ea" + r => f + "i" + r ; -- TODO is this irregular?
|
||||||
|
boireann@(_ + (#vowel|#diphthong) + ? + _ + (#vowel|#diphthong) + ? + _)
|
||||||
|
+ a@#vowel + ch => boireann + a + "i" + ch ;
|
||||||
|
tunn@(_ + (#vowel|#diphthong) + ? + _)
|
||||||
|
+ a@#vowel + g => tunn + a + "i" + g ;
|
||||||
|
l + a@#vowel + mh => l + a + "i" + mh ;
|
||||||
|
_ => lamh } ;
|
||||||
|
|
||||||
|
lenite : Str -> Str = \tunnag -> case tunnag of {
|
||||||
|
"s" + ("p"|"g"|"m"|"t") + _ => tunnag ; -- sp, sg, sm, st don't lenite
|
||||||
|
t@#lenitable + "h" + _ => tunnag ; -- don't lenite twice
|
||||||
|
t@#lenitable + unnag => t + "h" + unnag ;
|
||||||
|
_ => tunnag } ;
|
||||||
|
|
||||||
|
|
||||||
-- For inflection paradigms, see http://www.grammaticalframework.org/doc/tutorial/gf-tutorial.html#toc56
|
-- For inflection paradigms, see http://www.grammaticalframework.org/doc/tutorial/gf-tutorial.html#toc56
|
||||||
mkNoun : (b,g,pl,l,p,lp : Str) -> Gender -> LinN = \b,gen,pl,l,p,lp,g -> {
|
mkNoun : (b,g,pl,l,p,lp : Str) -> Gender -> LinN = \b,gen,pl,l,p,lp,g -> {
|
||||||
base = b ; -- tunnag fuil loch fear litir
|
base = b ; -- tunnag fuil loch fear litir
|
||||||
@@ -98,15 +131,16 @@ oper
|
|||||||
Def Sg (CC Nom) => n.base ;
|
Def Sg (CC Nom) => n.base ;
|
||||||
Def Sg (CC Gen) => fm n.gen n.lenited_palatalised ;
|
Def Sg (CC Gen) => fm n.gen n.lenited_palatalised ;
|
||||||
Def Sg (CC Dat) => fm n.palatalised n.lenited ;
|
Def Sg (CC Dat) => fm n.palatalised n.lenited ;
|
||||||
Def Sg Voc => n.lenited ;
|
Def Sg Voc => fm n.lenited n.lenited_palatalised ;
|
||||||
Indef Pl Nom => n.pl ;
|
Indef Pl Nom => fm n.pl n.palatalised ;
|
||||||
Indef Pl Gen => n.base ;
|
Indef Pl Gen => n.lenited ;
|
||||||
Indef Pl Dat => n.palatalised ;
|
Indef Pl Dat => fm n.pl n.palatalised ; -- TODO: is this correct?
|
||||||
Def Pl (CC Nom) => n.pl ;
|
Def Pl (CC Nom) => n.pl ;
|
||||||
Def Pl (CC Gen) => n.base ;
|
Def Pl (CC Gen) => n.base ;
|
||||||
Def Pl (CC Dat) => n.pl ;
|
Def Pl (CC Dat) => n.pl ;
|
||||||
Def Pl Voc => glue n.lenited "a" ;
|
Def Pl Voc => glue n.lenited "a" ;
|
||||||
Dual => "TODO FIXME I AM DUAL"}
|
Dual => fm n.palatalised n.base -- TODO: is this correct? only for 1-syllable feminine nouns?
|
||||||
|
}
|
||||||
} where {
|
} where {
|
||||||
fm : Str -> Str -> Str = \fem,masc -> case n.g of {
|
fm : Str -> Str -> Str = \fem,masc -> case n.g of {
|
||||||
Fem => fem ;
|
Fem => fem ;
|
||||||
|
|||||||
Reference in New Issue
Block a user