mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 17:08:54 -06:00
(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,6 +240,18 @@ 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.
|
||||||
|
regNoun4 : (nomsg, accsg, nompl, possdSg_possrP3sg : Str) -> Noun =
|
||||||
|
\nsg,asg,npl,possd -> case possd of {
|
||||||
|
_ + #v + "j" + ("a"|"e") => dHajó nsg asg ;
|
||||||
|
_ + #c + "j" + ("a"|"e") => dPlafon nsg asg ;
|
||||||
|
|
||||||
|
_ + #c + ("a"|"e") => dVirág nsg asg ;
|
||||||
|
|
||||||
|
|
||||||
|
-- Fall back to 3-argument smart paradigm
|
||||||
|
_ => regNounNomAccPl nsg asg npl
|
||||||
|
} ;
|
||||||
|
|
||||||
regNounNomAccPl : (nomsg, accsg, nompl : Str) -> Noun = \nsg,asg,npl ->
|
regNounNomAccPl : (nomsg, accsg, nompl : Str) -> Noun = \nsg,asg,npl ->
|
||||||
case <nsg,asg,npl> of {
|
case <nsg,asg,npl> of {
|
||||||
<_ + ("u"|"ú"|"ü"|"ű"|"ó"), -- falu, falut, falvak ; szó, szót, szavak
|
<_ + ("u"|"ú"|"ü"|"ű"|"ó"), -- falu, falut, falvak ; szó, szót, szavak
|
||||||
|
|||||||
@@ -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