1
0
forked from GitHub/gf-rgl

fix Sg Dat for class 1B nouns

This commit is contained in:
Inari Listenmaa
2025-08-28 17:17:20 +02:00
parent 81f3531136
commit 39f6a43717

View File

@@ -65,9 +65,12 @@ oper
} ; } ;
LinN : Type = { LinN : Type = {
base, -- tunnag fuil loch fear litir base, -- tunnag fuil loch fear litir bròg
gen, -- tunnaige fala locha fir litreach ("de-palatalised") dat, -- -"- bròig (1B)
pl, -- tunnagan lochan fir litrichean gen, -- tunnaige fala locha fir litreach ("de-palatalised") bròige
pl, -- tunnagan lochan fir litrichean brògan
-- pldat, -- Krasimir's and Katya's automatic extraction suggests there's a difference, but I don't see it
-- add this form if we turn out to need it
-- TODO: for nouns that only use suffixes, should these just show theoretical forms? -- TODO: for nouns that only use suffixes, should these just show theoretical forms?
lenited, -- thunnag fhuil loch fhear lenited, -- thunnag fhuil loch fhear
palatalised, -- tunnaig fuil loch fir palatalised, -- tunnaig fuil loch fir
@@ -77,34 +80,30 @@ oper
g : Gender g : Gender
} ; } ;
smartN = overload { mk5N : (nom,gen,dat,pl : Str) -> Gender -> LinN = \brog,broige,broig,brogan,g -> {
smartN : (nom,gen,pl : Str) -> Gender -> LinN = \loch,locha,lochan,g -> { base = brog ;
gen = locha ; gen = broige ;
pl = lochan ; dat = broig ;
lenited_plural = lenite lochan ; pl = brogan ;
base, lenited_plural = lenite brogan ;
lenited, lenited = bhrog ;
palatalised, palatalised = broig ;
lenited_palatalised = loch ; lenited_palatalised = bhroig ;
g = g
} ;
smartN : (base : Str) -> Gender -> LinN = \tunnag,g -> {
base = tunnag ;
gen = fm (tunnaig + "e") tunnaig ;
pl = plural ; -- for other allomorphs, use 4-argument paradigm
lenited_plural = lenite plural ;
lenited = thunnag ;
palatalised = tunnaig ;
lenited_palatalised = thunnaig ;
g = g g = g
} where { } where {
fm : Str -> Str -> Str = \fem,masc -> case g of { bhrog : Str = lenite brog ;
bhroig : Str = lenite broig } ;
smartN = overload {
smartN : (nom,gen,pl : Str) -> Gender -> LinN = \loch,locha,lochan,g ->
mk5N loch locha loch lochan g ;
smartN : (base : Str) -> Gender -> LinN = \tunnag,g ->
let fm : Str -> Str -> Str = \fem,masc -> case g of {
Fem => fem ; Masc => masc } ; Fem => fem ; Masc => masc } ;
tunnaig : Str = palatalise tunnag ; tunnaig : Str = palatalise tunnag ;
thunnag : Str = lenite tunnag ; tunnaige : Str = fm (tunnaig + "e") tunnaig ;
thunnaig : Str = lenite tunnaig ; tunnagan : Str = fm (tunnag + "an") tunnaig ;
plural : Str = fm (tunnag + "an") tunnaig ; in mk5N tunnag tunnaige tunnag tunnagan g
}
} ; } ;
vowel : pattern Str = #("a"|"à"|"e"|"i"|"ì"|"o"|"u") ; -- more accents? vowel : pattern Str = #("a"|"à"|"e"|"i"|"ì"|"o"|"u") ; -- more accents?
@@ -129,9 +128,10 @@ oper
-- 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,lpl : Str) -> Gender -> LinN = \b,gen,pl,l,p,lp,lpl,g -> { mkNoun : (b,g,d,pl,l,p,lp,lpl : Str) -> Gender -> LinN = \b,gen,dat,pl,l,p,lp,lpl,g -> {
base = b ; -- tunnag fuil loch fear litir base = b ; -- tunnag fuil loch fear litir
gen = gen ; -- tunnaige fala locha fir litreach gen = gen ; -- tunnaige fala locha fir litreach
dat = dat ; -- tunnaige fala locha fir litreach
pl = pl ; -- tunnagan lochan fir litrichean pl = pl ; -- tunnagan lochan fir litrichean
lenited = l ; -- thunnag fhuil loch fhear litir ? lenited = l ; -- thunnag fhuil loch fhear litir ?
palatalised = p ; -- tunnaig fuil loch fir litir ? palatalised = p ; -- tunnaig fuil loch fir litir ?
@@ -147,8 +147,8 @@ oper
Indef Sg (Nom NoMutation) => n.base ; Indef Sg (Nom NoMutation) => n.base ;
Indef Sg (Nom Lenited) => n.lenited ; Indef Sg (Nom Lenited) => n.lenited ;
Indef Sg Gen => n.gen ; Indef Sg Gen => n.gen ;
Indef Sg (Dat NoMutation) => fm n.palatalised n.base ; Indef Sg (Dat NoMutation) => n.dat ;
Indef Sg (Dat Lenited) => fm n.lenited_palatalised n.lenited ; Indef Sg (Dat Lenited) => fm n.lenited_palatalised n.lenited ; ------- FIXME later
Def Sg (CC (Nom NoMutation)) => n.base ; Def Sg (CC (Nom NoMutation)) => n.base ;
Def Sg (CC (Nom Lenited)) => n.lenited ; Def Sg (CC (Nom Lenited)) => n.lenited ;
Def Sg (CC Gen) => fm n.gen n.lenited_palatalised ; Def Sg (CC Gen) => fm n.gen n.lenited_palatalised ;
@@ -158,8 +158,8 @@ oper
Indef Pl (Nom NoMutation) => fm n.pl n.palatalised ; Indef Pl (Nom NoMutation) => fm n.pl n.palatalised ;
Indef Pl (Nom Lenited) => fm n.lenited_plural n.lenited_palatalised ; Indef Pl (Nom Lenited) => fm n.lenited_plural n.lenited_palatalised ;
Indef Pl Gen => n.lenited ; Indef Pl Gen => n.lenited ;
Indef Pl (Dat NoMutation) => fm n.pl n.palatalised ; -- TODO: is this correct? Indef Pl (Dat NoMutation) => fm n.pl n.palatalised ; -- TODO: is this overfitting based on the 5 nouns i know? probably!
Indef Pl (Dat Lenited) => fm n.lenited_plural n.lenited_palatalised ; -- TODO: ???? Indef Pl (Dat Lenited) => fm n.lenited_plural n.lenited_palatalised ; -- TODO: see above
Def Pl (CC (Nom NoMutation)) => n.pl ; Def Pl (CC (Nom NoMutation)) => n.pl ;
Def Pl (CC (Nom Lenited)) => n.lenited_plural ; Def Pl (CC (Nom Lenited)) => n.lenited_plural ;
Def Pl (CC Gen) => n.base ; Def Pl (CC Gen) => n.base ;
@@ -189,7 +189,7 @@ oper
-- some test nouns — TODO: do smart paradigms -- some test nouns — TODO: do smart paradigms
tunnag_N : LinN = { tunnag_N : LinN = {
base = "tunnag" ; base,dat = "tunnag" ;
gen = "tunnaige" ; gen = "tunnaige" ;
pl = "tunnagan" ; pl = "tunnagan" ;
lenited_plural = "thunnagan" ; lenited_plural = "thunnagan" ;
@@ -200,7 +200,7 @@ tunnag_N : LinN = {
} ; } ;
boireannach_N : LinN = { boireannach_N : LinN = {
base = "boireannach" ; base,dat = "boireannach" ;
pl,gen = "boireannaich" ; pl,gen = "boireannaich" ;
lenited = "bhoireannach" ; lenited = "bhoireannach" ;
palatalised = "boireannaich" ; palatalised = "boireannaich" ;