forked from GitHub/gf-rgl
(Hun) Add new paradigms and a 4-arg smart paradigm
This commit is contained in:
@@ -37,7 +37,7 @@ lin black_A = mkA "fekete" ;
|
|||||||
lin blood_N = mkN "vér" "vért";
|
lin blood_N = mkN "vér" "vért";
|
||||||
-- lin blow_V = mkV "" ;
|
-- lin blow_V = mkV "" ;
|
||||||
lin blue_A = mkA "kék" ;
|
lin blue_A = mkA "kék" ;
|
||||||
lin boat_N = mkN "hajó" "hajót" ;
|
lin boat_N = mkN "hajó" "hajót" "hajók" "hajója" ;
|
||||||
-- lin bone_N = mkN "" ;
|
-- lin bone_N = mkN "" ;
|
||||||
-- lin boot_N = mkN "" ;
|
-- lin boot_N = mkN "" ;
|
||||||
-- lin boss_N = mkN "" ;
|
-- lin boss_N = mkN "" ;
|
||||||
@@ -130,7 +130,7 @@ lin fish_N = mkN "hal" "halat" ;
|
|||||||
-- lin float_V = mkV "" ;
|
-- lin float_V = mkV "" ;
|
||||||
lin floor_N = mkN "padló" "padlót" ;
|
lin floor_N = mkN "padló" "padlót" ;
|
||||||
-- lin flow_V = mkV "" ;
|
-- lin flow_V = mkV "" ;
|
||||||
lin flower_N = mkN "virág" "virágot" ;
|
lin flower_N = mkN "virág" "virágot" "virágok" "virága" ;
|
||||||
lin fly_V = mkV "repül" ;
|
lin fly_V = mkV "repül" ;
|
||||||
lin fog_N = mkN "köd" "ködöt"; -- TODO ködöket
|
lin fog_N = mkN "köd" "ködöt"; -- TODO ködöket
|
||||||
lin foot_N = leg_N ; --same as leg, to specify "lábfej"
|
lin foot_N = leg_N ; --same as leg, to specify "lábfej"
|
||||||
@@ -285,7 +285,7 @@ lin restaurant_N = mkN "étterem" "éttermet";
|
|||||||
lin river_N = mkN "folyó" "folyót" ;
|
lin river_N = mkN "folyó" "folyót" ;
|
||||||
lin road_N = mkN "út" "utat" ;
|
lin road_N = mkN "út" "utat" ;
|
||||||
lin rock_N = mkN "szikla" "sziklát";
|
lin rock_N = mkN "szikla" "sziklát";
|
||||||
lin roof_N = mkN "plafon" "plafont" ;
|
lin roof_N = mkN "plafon" "plafont" "plafonok" "plafonja" ;
|
||||||
lin root_N = mkN "gyökér" "gyökeret";
|
lin root_N = mkN "gyökér" "gyökeret";
|
||||||
lin rope_N = mkN "kötél" "kötelet";
|
lin rope_N = mkN "kötél" "kötelet";
|
||||||
-- lin rotten_A = mkA "" ;
|
-- lin rotten_A = mkA "" ;
|
||||||
|
|||||||
@@ -116,25 +116,47 @@ oper
|
|||||||
-- Examples: "hajó, hajója, zseni, zsenije, kestyű, kestyűje"
|
-- Examples: "hajó, hajója, zseni, zsenije, kestyű, kestyűje"
|
||||||
dHajó : (nom : Str) -> (acc : Str) -> Noun = \hajó,hajót ->
|
dHajó : (nom : Str) -> (acc : Str) -> Noun = \hajó,hajót ->
|
||||||
let nHajó = mkNoun hajó ;
|
let nHajó = mkNoun hajó ;
|
||||||
hajój = hajó + "j" ;
|
|
||||||
in nHajó ** {
|
in nHajó ** {
|
||||||
s = \\nc => case nc of {
|
s = \\nc => case nc of {
|
||||||
-- All plural forms and Sg Acc use the "tolla" stem
|
PossdSg_PossrPl1 => hajó ;
|
||||||
PlStem | PlAcc | SgAccStem => nHajó.s ! nc ;
|
|
||||||
|
|
||||||
PossdSg_PossrPl1 => hajój + harm "u" "ü" ! nHajó.h ;
|
PossdSg_PossrP3 => hajó + "j" ;
|
||||||
|
|
||||||
PossdSg_PossrP3 => hajój ;
|
|
||||||
|
|
||||||
-- The plural morpheme before possessive suffixes: hajói
|
-- The plural morpheme before possessive suffixes: hajói
|
||||||
PossdPl => hajó + "i" ;
|
PossdPl => hajó + "i" ;
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
-- The rest of the forms are formed with the regular constructor
|
||||||
-- using "toll" as the stem.
|
|
||||||
_ => nHajó.s ! nc
|
_ => nHajó.s ! nc
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- Unexpected j after consonant
|
||||||
|
dPlafon : (nom : Str) -> (acc : Str) -> Noun = \plafon,plafont ->
|
||||||
|
let nPlafon = mkNoun plafon ;
|
||||||
|
h = nPlafon.h ;
|
||||||
|
in nPlafon ** {
|
||||||
|
s = \\nc => case nc of {
|
||||||
|
PossdSg_PossrPl1 => plafon + harm "u" "ü" ! h ;
|
||||||
|
PossdSg_PossrP3 => plafon + "j" ;
|
||||||
|
PossdPl => plafon + harm "jai" "jei" ! h ;
|
||||||
|
|
||||||
|
-- The rest of the forms are formed with the regular constructor
|
||||||
|
_ => nPlafon.s ! nc
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Opposite to dHajó: regular paradigm puts j, but these words don't have it.
|
||||||
|
dVirág : (nom : Str) -> (acc : Str) -> Noun = \virág,virágot ->
|
||||||
|
let nVirág = mkNoun virág ;
|
||||||
|
h = nVirág.h ;
|
||||||
|
in nVirág ** {
|
||||||
|
s = \\nc => case nc of {
|
||||||
|
PossdSg_PossrPl1 => virág + harm "u" "ü" ! h ;
|
||||||
|
PossdSg_PossrP3 => virág ;
|
||||||
|
PossdPl => virág + harm "a" "e" ! h + "i" ;
|
||||||
|
_ => nVirág.s ! nc }
|
||||||
|
} ;
|
||||||
|
|
||||||
-- Handles many possesive forms
|
-- Handles many possesive forms
|
||||||
dToll : (nom : Str) -> (acc : Str) -> Noun = \toll,tollat ->
|
dToll : (nom : Str) -> (acc : Str) -> Noun = \toll,tollat ->
|
||||||
let tolla = init tollat ;
|
let tolla = init tollat ;
|
||||||
@@ -218,55 +240,67 @@ oper
|
|||||||
|
|
||||||
-- All regNoun* are /smart paradigms/: they take one or a couple of forms,
|
-- All regNoun* are /smart paradigms/: they take one or a couple of forms,
|
||||||
-- and decides which (non-smart) paradigm is the most likely to match.
|
-- and decides which (non-smart) paradigm is the most likely to match.
|
||||||
regNounNomAccPl : (nomsg, accsg, nompl : Str) -> Noun = \nsg,asg,npl ->
|
regNoun4 : (nomsg, accsg, nompl, possdSg_possrP3sg : Str) -> Noun =
|
||||||
case <nsg,asg,npl> of {
|
\nsg,asg,npl,possd -> case possd of {
|
||||||
<_ + ("u"|"ú"|"ü"|"ű"|"ó"), -- falu, falut, falvak ; szó, szót, szavak
|
_ + #v + "j" + ("a"|"e") => dHajó nsg asg ;
|
||||||
_ + ("u"|"ú"|"ü"|"ű"|"ó") + "t",
|
_ + #c + "j" + ("a"|"e") => dPlafon nsg asg ;
|
||||||
_ + "v" + #v + "k"> => dFalu nsg npl ;
|
|
||||||
|
|
||||||
-- Fall back to 2-argument smart paradigm
|
_ + #c + ("a"|"e") => dVirág nsg asg ;
|
||||||
_ => regNounNomAcc nsg asg
|
|
||||||
} ;
|
|
||||||
|
|
||||||
regNounNomAcc : (nom : Str) -> (acc : Str) -> Noun = \n,a ->
|
|
||||||
case <n,a> of {
|
|
||||||
|
|
||||||
-- Stem 1: Sg Nom
|
-- Fall back to 3-argument smart paradigm
|
||||||
-- Stem 2: Everything else
|
_ => regNounNomAccPl nsg asg npl
|
||||||
-- alma, almát
|
} ;
|
||||||
<_ + "a", _ + "át">
|
|
||||||
|<_ + "e" ,_ + "ét"> => dAlma n a ;
|
|
||||||
|
|
||||||
-- Stem 1: Sg Nom
|
regNounNomAccPl : (nomsg, accsg, nompl : Str) -> Noun = \nsg,asg,npl ->
|
||||||
-- Stem 2: Sg Gen, Sg Sup, Pl *
|
case <nsg,asg,npl> of {
|
||||||
<_ + #shortv + #c, -- majom, majmot
|
<_ + ("u"|"ú"|"ü"|"ű"|"ó"), -- falu, falut, falvak ; szó, szót, szavak
|
||||||
_ + #c + #shortv + "t"> => dMajom n a ;
|
_ + ("u"|"ú"|"ü"|"ű"|"ó") + "t",
|
||||||
|
_ + "v" + #v + "k"> => dFalu nsg npl ;
|
||||||
|
|
||||||
-- Stem 1: Sg Nom
|
-- Fall back to 2-argument smart paradigm
|
||||||
-- Stem 2: Sg Sup
|
_ => regNounNomAcc nsg asg
|
||||||
-- Stem 3: Sg Gen, Pl *
|
} ;
|
||||||
<_ + "ó", -- ló, lovat
|
|
||||||
_ + "o" + #c + #v + "t">
|
|
||||||
|
|
||||||
|<_ + "ó", -- tó, tavat
|
regNounNomAcc : (nom : Str) -> (acc : Str) -> Noun = \n,a ->
|
||||||
_ + "a" + #c + #v + "t">
|
case <n,a> of {
|
||||||
|
|
||||||
|<_ + "ő", -- kő, követ
|
-- Stem 1: Sg Nom
|
||||||
_ + "ö" + #c + #v + "t">
|
-- Stem 2: Everything else
|
||||||
|
-- alma, almát
|
||||||
|
<_ + "a", _ + "át">
|
||||||
|
|<_ + "e" ,_ + "ét"> => dAlma n a ;
|
||||||
|
|
||||||
|<_ + "ű", -- fű, füvet
|
-- Stem 1: Sg Nom
|
||||||
_ + "ü" + #c + #v + "t">
|
-- Stem 2: Sg Gen, Sg Sup, Pl *
|
||||||
|
<_ + #shortv + #c, -- majom, majmot
|
||||||
|
_ + #c + #shortv + "t"> => dMajom n a ;
|
||||||
|
|
||||||
|<_ + "é", -- lé, levet
|
-- Stem 1: Sg Nom
|
||||||
_ + "e" + #c + #v + "t"> => dLó n a ;
|
-- Stem 2: Sg Sup
|
||||||
|
-- Stem 3: Sg Gen, Pl *
|
||||||
|
<_ + "ó", -- ló, lovat
|
||||||
|
_ + "o" + #c + #v + "t">
|
||||||
|
|
||||||
-- Stem 1: Sg Nom, Sg * - [Gen]
|
|<_ + "ó", -- tó, tavat
|
||||||
-- Stem 2: Sg Gen, Pl *
|
_ + "a" + #c + #v + "t">
|
||||||
<_ + "á" + #c, _ + "a" + #c + "at">
|
|
||||||
|<_ + "é" + #c,_ + "e" + #c + ("et"|"at")> => dMadár n a ;
|
|
||||||
|
|
||||||
_ => dToll n a
|
|<_ + "ő", -- kő, követ
|
||||||
} ;
|
_ + "ö" + #c + #v + "t">
|
||||||
|
|
||||||
|
|<_ + "ű", -- fű, füvet
|
||||||
|
_ + "ü" + #c + #v + "t">
|
||||||
|
|
||||||
|
|<_ + "é", -- lé, levet
|
||||||
|
_ + "e" + #c + #v + "t"> => dLó n a ;
|
||||||
|
|
||||||
|
-- Stem 1: Sg Nom, Sg * - [Gen]
|
||||||
|
-- Stem 2: Sg Gen, Pl *
|
||||||
|
<_ + "á" + #c, _ + "a" + #c + "at">
|
||||||
|
|<_ + "é" + #c,_ + "e" + #c + ("et"|"at")> => dMadár n a ;
|
||||||
|
|
||||||
|
_ => dToll n a
|
||||||
|
} ;
|
||||||
|
|
||||||
-- 1-argument smart paradigm
|
-- 1-argument smart paradigm
|
||||||
-- Here we guess the genitive form and give it to appropriate 2-arg paradigm
|
-- Here we guess the genitive form and give it to appropriate 2-arg paradigm
|
||||||
|
|||||||
@@ -18,9 +18,11 @@ oper
|
|||||||
--2 Nouns
|
--2 Nouns
|
||||||
|
|
||||||
mkN : overload {
|
mkN : overload {
|
||||||
mkN : (sgnom : Str) -> N ; -- Predictable nouns from singular nominative. Accusative vowel is o for back harmony. No stem lowering (TODO better explanation/examples)
|
mkN : (sgnom : Str) -> N ; -- Predictable nouns from singular nominative. Accusative vowel is o/ö, no stem lowering. Use: `mkN "nap"` for nap, napot.
|
||||||
mkN : (sgnom, sggen : Str) -> N ; -- Singular nominative and accusative. Takes care of cases like … TODO example
|
mkN : (sgnom, sggen : Str) -> N ; -- Singular nominative and accusative. Use: `mkN "név" "nevet"`
|
||||||
mkN : (sgnom, sggen, plnom : Str) -> N ; -- Singular nominative, singular accusative, plural nominative, e.g. `mkN "falu" "falut" "falvak"`
|
mkN : (sgnom, sggen, plnom : Str) -> N ; -- Singular nominative, singular accusative, plural nominative. Use: `mkN "falu" "falut" "falvak"`
|
||||||
|
mkN : (sgnom, sggen, plnom, sgnom_possdSg3 : Str) -> N ; -- Singular nominative, singular accusative, plural nominative, singular nominative possessed by 3rd person singular. Use: `mkN "virág" "virágot" "virágok" "virága"` (would give "virágja" otherwise)
|
||||||
|
|
||||||
mkN : (férfi : Str) -> (harm : Harmony) -> (ak : Str) -> N ; -- Noun with unpredictable vowel harmony and plural allomorph
|
mkN : (férfi : Str) -> (harm : Harmony) -> (ak : Str) -> N ; -- Noun with unpredictable vowel harmony and plural allomorph
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -130,6 +132,9 @@ oper
|
|||||||
mkN : Str -> Str -> Str -> N =
|
mkN : Str -> Str -> Str -> N =
|
||||||
\n,a,pln-> lin N (regNounNomAccPl n a pln) ;
|
\n,a,pln-> lin N (regNounNomAccPl n a pln) ;
|
||||||
|
|
||||||
|
mkN : (x1,_,_,x4 : Str) -> N =
|
||||||
|
\n,a,pln,possd -> lin N (regNoun4 n a pln possd) ;
|
||||||
|
|
||||||
mkN : Str -> Harmony -> N =
|
mkN : Str -> Harmony -> N =
|
||||||
\s,h -> lin N (mkNounHarm h (pluralAllomorph s) s) ;
|
\s,h -> lin N (mkNounHarm h (pluralAllomorph s) s) ;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user