1
0
forked from GitHub/gf-rgl

Some changes in accusative singular case and thoughts on superessive singular case

This commit is contained in:
Julia Jansson
2020-04-09 15:37:40 +02:00
parent 8ca515f2ce
commit 554945cc2e
2 changed files with 460 additions and 17 deletions

418
src/hungarian/LexiconHun.gf Normal file
View File

@@ -0,0 +1,418 @@
concrete LexiconHun of Lexicon = CatHun **
open ParadigmsHun, ParamHun, Prelude in {
----
-- A
-- lin add_V3 = mkV3 "" ;
-- lin airplane_N = mkN "" ;
-- lin alas_Interj = mkInterj "" ;
-- lin already_Adv = mkA "" ;
-- lin animal_N = mkN "" ;
--lin answer_V2S = mkV2S "válasz" ;
-- lin apartment_N = mkN "" ;
lin apple_N = mkN "alma" ;
lin art_N = mkN "müvészet" ;
-- lin ashes_N = mkN "" ;
-- lin ask_V2Q = mkV2 "" ;
----
-- B
lin baby_N = mkN "bébi" ;
-- lin back_N = mkN "" ;
-- lin bad_A = mkA "" ;
lin bank_N = mkN "bank" ;
-- lin bark_N = mkN "" ;
-- lin beautiful_A = mkA "" ;
-- lin become_VA = mkVA "" ;
lin beer_N = mkN "sör" ;
-- lin beg_V2V = mkV2 "" ;
lin belly_N = mkN "has" ;
-- lin big_A = mkA "" ;
-- lin bike_N = mkN "" ;
lin bird_N = mkN "madár" ;
-- lin bite_V2 = mkV2 "" ;
-- lin black_A = mkA "" ;
-- lin blood_N = mkN "" ;
-- lin blow_V = mkV "" ;
-- lin blue_A = mkA "" ;
-- lin boat_N = mkN "" ;
-- lin bone_N = mkN "" ;
-- lin boot_N = mkN "" ;
-- lin boss_N = mkN "" ;
-- lin book_N = mkN "" ;
lin boy_N = mkN "fiú" ;
-- lin bread_N = mkN "" ;
-- lin break_V2 = mkV2 "" ;
-- lin breast_N = mkN "" ;
-- lin breathe_V = mkV "" ;
-- lin broad_A = mkA "" ;
-- lin brother_N2 = mkN "" ;
-- lin brown_A = mkA "" ;
-- lin burn_V = mkV "" ;
-- lin butter_N = mkN "" ;
-- lin buy_V2 = mkV2 "" ;
----
-- C
-- lin camera_N = mkN "" ;
-- lin cap_N = mkN "" ;
-- lin car_N = mkN "" ;
-- lin carpet_N = mkN "" ;
lin cat_N = mkN "macska" ;
-- lin ceiling_N = mkN "" ;
-- lin chair_N = mkN "" ;
-- lin cheese_N = mkN "" ;
lin child_N = mkN "gyerek" ;
-- lin church_N = mkN "" ;
lin city_N = mkN "város" ;
-- lin clean_A = mkA "" ;
-- lin clever_A = mkA "" ;
-- lin close_V2 = mkV2 "" ;
-- lin cloud_N = mkN "" ;
-- lin coat_N = mkN "" ;
-- lin cold_A = mkA "" ;
-- lin come_V = mkV "" ;
-- lin computer_N = mkN "" ;
-- lin correct_A = mkA "" ;
-- lin count_V2 = mkV2 "" ;
lin country_N = mkN "ország" ;
-- lin cousin_N = mkN "" ;
-- lin cow_N = mkN "" ;
-- lin cut_V2 = mkV2 "" ;
--
-- ----
-- -- D
--
-- lin day_N = mkN "" ;
-- lin die_V = mkV "" ;
-- lin dig_V = mkV "" ;
-- lin dirty_A = mkA "" ;
-- lin distance_N3 = mkN "" ;
-- lin do_V2 = mkV2 do_V ;
-- lin doctor_N = mkN "" ;
-- lin dog_N = mkN "" ;
lin door_N = mkN "ajtó" ;
-- lin drink_V2 = mkV2 "" ;
-- lin dry_A = mkA "" ;
-- lin dull_A = mkA "" ;
-- lin dust_N = mkN "" ;
----
-- E
-- lin ear_N = mkN "" ;
-- lin earth_N = mkN "" ;
-- lin eat_V2 = mkV2 "" ;
-- lin egg_N = mkN "" ;
-- lin empty_A = mkA "" ;
-- lin enemy_N = mkN "" ;
lin eye_N = mkN "szem" ;
----
-- F
-- lin factory_N = mkN "" ;
-- lin fall_V = mkV "" ;
-- lin far_Adv = mkA "" ;
-- lin fat_N = mkN "" ;
-- lin father_N2 = mkN2 "" ;
-- lin fear_V2 = mkV2 "" ;
-- lin fear_VS = mkVS "" ;
-- lin feather_N = mkN "" ;
-- lin fight_V2 = mkV2 "" ;
-- lin find_V2 = mkV2 "" ;
-- lin fingernail_N = mkN "" ;
-- lin fire_N = mkN "" ;
lin fish_N = mkN "hal" ;
-- lin float_V = mkV "" ;
-- lin floor_N = mkN "" ;
-- lin flow_V = mkV "" ;
-- lin flower_N = mkN "" ;
lin fly_V = mkV "repül" ;
-- lin fog_N = mkN "" ;
-- lin foot_N = mkN "" ;
-- lin forest_N = mkN "" ;
-- lin forget_V2 = mkV2 "" ;
-- lin freeze_V = mkV "" ;
-- lin fridge_N = mkN "" ;
-- lin friend_N = mkN "" ;
lin fruit_N = mkN "gyümölcs" ;
-- lin full_A = mkA "" ;
-- --lin fun_AV
----
-- G
lin garden_N = mkN "kert" ;
lin girl_N = mkN "lány" ;
-- lin give_V3 = mkV3 "" ;
-- lin glove_N = mkN "" ;
-- lin go_V = mkV "" ;
lin gold_N = mkN "arany" ;
-- lin good_A = mkA "" ;
-- lin grammar_N = mkN "" ;
-- lin grass_N = mkN "" ;
-- lin green_A = mkA "" ;
----
-- H
-- lin hair_N = mkN "" ;
lin hand_N = mkN "kéz" ;
-- lin harbour_N = mkN "" ;
-- lin hat_N = mkN "" ;
-- lin hate_V2 = mkV2 "" ;
lin head_N = mkN "fej" ;
-- lin hear_V2 = mkV2 "" ;
-- lin heart_N = mkN "" ;
-- lin heavy_A = mkA "" ;
-- lin hill_N = mkN "" ;
-- lin hit_V2 = mkV2 "" ;
-- lin hold_V2 = mkV2 "" ;
-- lin hope_VS = mkV "" ;
-- lin horn_N = mkN "" ;
lin horse_N = mkN "ló" ;
-- lin hot_A = mkA "" ;
lin house_N = mkN "ház" ;
-- lin hunt_V2 = mkV2 "" ;
-- lin husband_N = mkN "" ;
--------
-- I - K
-- lin ice_N = mkN "" ;
-- lin industry_N = mkN "" ;
-- lin iron_N = mkN "" ;
-- lin john_PN = mkPN "" ;
-- lin jump_V = mkV "" ;
-- lin kill_V2 = mkV2 "" ;
-- lin king_N = mkN "" ;
-- lin knee_N = mkN "" ;
-- lin know_V2 = mkV2 "" ;
-- lin know_VQ = mkVQ "" ;
-- lin know_VS = mkV "" ;
----
-- L
-- lin lake_N = mkN "" ;
-- lin lamp_N = mkN "" ;
-- lin language_N = mkN "" ;
-- lin laugh_V = mkV "" ;
-- lin leaf_N = mkN "" ;
-- lin learn_V2 = mkV2 "" ;
-- lin leather_N = mkN "" ;
-- lin leave_V2 = mkV2 "" ;
-- lin leg_N = mkN "" ;
-- lin lie_V = mkV "" ;
-- lin like_V2 = mkV2 "" ;
-- lin listen_V2 = mkV2 "" ;
-- lin live_V = mkV "";
-- lin liver_N = mkN "" ;
-- lin long_A = mkA "" ;
-- lin lose_V2 = mkV2 "" ;
-- lin louse_N = mkN "" ;
-- lin love_N = mkN "" ;
-- lin love_V2 = mkV2 "" ;
----
-- M
lin man_N = mkN "férfi" "ak" harmA ; -- force plural allomorph and a-harmony
-- lin married_A2 = mkA "" ;
-- lin meat_N = mkN "" ;
-- lin milk_N = mkN "" ;
-- lin moon_N = mkN "" ;
lin mother_N2 = mkN2 "anya" ;
-- lin mountain_N = mkN "" ;
-- lin mouth_N = mkN "" ;
-- lin music_N = mkN "" ;
----
-- N
lin name_N = mkN "név" ;
-- lin narrow_A = mkA "" ;
-- lin near_A = mkA "" ;
-- lin neck_N = mkN "" ;
-- lin new_A = mkA "" ;
-- lin newspaper_N = mkN "" ;
-- lin night_N = mkN "" ;
-- lin nose_N = mkN "" ;
lin now_Adv = mkAdv "most" ;
-- lin number_N = mkN "" ;
--
-- --------
-- -- O - P
--
--
lin oil_N = mkN "olaj" ;
-- lin old_A = mkA "" ;
-- lin open_V2 = mkV2 "" ;
-- lin paint_V2A = mkV2A "" ;
-- lin paper_N = mkN "" ;
-- lin paris_PN = mkPN "Paris" ;
lin peace_N = mkN "béke" ;
-- lin pen_N = mkN "" ;
lin person_N = mkN "ember" ;
-- lin planet_N = mkN "" ;
-- lin plastic_N = mkN "" ;
-- lin play_V = mkV "" ;
-- lin policeman_N = mkN "" ;
-- lin priest_N = mkN "" ;
-- lin pull_V2 = mkV2 "" ;
-- lin push_V2 = mkV2 "" ;
-- lin put_V2 = mkV2 "" ;
--
-- --------
-- -- Q - R
--
-- lin queen_N = mkN "" ;
lin question_N = mkN "kérdés" ;
-- lin radio_N = mkN "" ;
-- lin rain_N = mkN "" ;
-- lin rain_V0 = mkV "" ;
-- lin read_V2 = mkV2 "" ;
-- lin ready_A = mkA "" ;
-- lin reason_N = mkN "" ;
lin red_A = mkA "piros" ;
-- lin religion_N = mkN "" ;
-- lin restaurant_N = mkN "" ;
-- lin river_N = mkN "" ;
lin road_N = mkN "út" ;
-- lin rock_N = mkN "" ;
-- lin roof_N = mkN "" ;
-- lin root_N = mkN "" ;
-- lin rope_N = mkN "" ;
-- lin rotten_A = mkA "" ;
-- lin round_A = mkA "" ;
-- lin rub_V2 = mkV2 "" ;
-- lin rubber_N = mkN "" ;
-- lin rule_N = mkN "" ;
-- lin run_V = mkV "" ;
----
-- S
-- lin salt_N = mkN "" ;
-- lin sand_N = mkN "" ;
-- lin say_VS = mkVS "" ;
-- lin school_N = mkN "" ;
-- lin science_N = mkN "" ;
-- lin scratch_V2 = mkV2 "" ;
-- lin sea_N = mkN "" ;
lin see_V2 = mkV2 "lát" ;
-- lin seed_N = mkN "" ;
-- lin seek_V2 = mkV2 "" ;
-- lin sell_V3 = mkV3 "" ;
-- lin send_V3 = mkV3 "" ;
-- lin sew_V = mkV "" ;
-- lin sharp_A = mkA "" ;
-- lin sheep_N = mkN "" fem ;
-- lin ship_N = mkN "" ;
-- lin shirt_N = mkN "" ;
lin shoe_N = mkN "cipő" ;
-- lin shop_N = mkN "" ;
-- lin short_A = mkA "" ;
-- lin silver_N = mkN "" ;
-- lin sing_V = mkV "" ;
-- lin sister_N = mkN "" ;
-- lin sit_V = mkV "" ;
-- lin skin_N = mkN "" ;
-- lin sky_N = mkN "" ;
-- lin sleep_V = mkV "" ;
-- lin small_A = mkA "" ;
-- lin smell_V = mkV "" ;
-- lin smoke_N = mkN "" ;
-- lin smooth_A = mkA "" ;
-- lin snake_N = mkN "" ;
-- lin snow_N = mkN "" ;
-- lin sock_N = mkN "" ;
-- lin song_N = mkN "" ;
-- lin speak_V2 = mkV2 "" ;
-- lin spit_V = mkV "" ;
-- lin split_V2 = mkV2 "" ;
-- lin squeeze_V2 = mkV2 "" ;
-- lin stab_V2 = mkV2 "" ;
-- lin stand_V = mkV "" ;
-- lin star_N = mkN "" ;
-- lin steel_N = mkN "" ;
-- lin stick_N = mkN "" ;
lin stone_N = mkN "kő";
-- lin stop_V = mkV "" ;
-- lin stove_N = mkN "" ;
-- lin straight_A = mkA "" ;
-- lin student_N = mkN "" ;
-- lin stupid_A = mkA "" ;
-- lin suck_V2 = mkV2 "" ;
-- lin sun_N = mkN "" ;
-- lin swell_V = mkV "" ;
-- lin swim_V = mkV "" ;
----
-- T
lin table_N = mkN "asztal" ;
-- lin tail_N = mkN "" ;
lin talk_V3 = mkV3 "beszél" ;
-- lin teach_V2 = mkV2 "" ;
lin teacher_N = mkN "tanár" ;
-- lin television_N = mkN "" ;
-- lin thick_A = mkA "" ;
-- lin thin_A = mkA "" ;
-- lin think_V = mkV "" ;
-- lin throw_V2 = mkV2 "" ;
-- lin tie_V2 = mkV2 "" ;
lin today_Adv = mkAdv "ma" ;
-- lin tongue_N = mkN "" ;
-- lin tooth_N = mkN "" ;
-- lin train_N = mkN "" ;
-- lin travel_V = mkV "" ;
-- lin tree_N = mkN "" ;
-- lin turn_V = mkV "" ;
--------
-- U - V
-- lin ugly_A = mkA "" ;
-- lin uncertain_A = mkA "" ;
-- lin understand_V2 = mkV2 "" ;
-- lin university_N = mkN "" ;
lin village_N = mkN "falu" ;
-- lin vomit_V = mkV2 "" ;
--------
-- W - Y
-- lin wait_V2 = mkV2 "" ;
-- lin walk_V = mkV "" ;
-- lin war_N = mkN "" ;
-- lin warm_A = mkA "" ;
-- lin wash_V2 = mkV2 "" ;
-- lin watch_V2 = mkV2 "" ;
lin water_N = mkN "víz" ;
-- lin wet_A = mkA "" ;
-- lin white_A = mkA "" ;
-- lin wide_A = mkA "" ;
-- lin wife_N = mkN "" ;
-- lin win_V2 = mkV2 "" ;
-- lin wind_N = mkN "" ;
lin window_N = mkN "ablak" ;
lin wine_N = mkN "bor" ;
-- lin wing_N = mkN "" ;
-- lin wipe_V2 = mkV2 "" ;
lin woman_N = mkN "nő" "k" harmO ;
-- lin wonder_VQ = mkVQ "" ;
-- lin wood_N = mkN "" ;
-- lin worm_N = mkN "" ;
-- lin write_V2 = mkV2 "" ;
-- lin year_N = mkN "" ;
-- lin yellow_A = mkA "" ;
-- lin young_A = mkA "" ;
}

View File

@@ -22,7 +22,7 @@ oper
} ;
} ;
-- Handles words like "madár", "név" with shortened stem vowel in plural
-- Handles words like "madár, nyár, név" with shortened stem vowel in plural
dMadár : Str -> Noun = \madár ->
let r = last madár ;
madá = init madár ;
@@ -42,23 +42,26 @@ oper
} ;
} ;
--Handles words like "ló, kő" which are "lovak, kövek" in plural.
--Handles words like "ló, lé, kő" which are "lovak, levek, kövek" in plural.
--TODO: <Sg,Sup> "lovon" instead of "lón"
--TODO: special case <Sg,Sup> "lén" not "leven", maybe just put the case in specific words, many special cases...
dLó : Str -> Noun = \ló ->
let lo = shorten ló ;
lov = lo + "v" ;
a : Str = case ló of {
_ + ("ö" | "ő") => "e" ;
_ + ("o" | "ó") => "a" } ;
ak : Str = case ló of {
_ + ("ö" | "ő") => "ek" ;
_ + ("o" | "ó") => "ak" ;
lé => shorten (last lé) + "k"} ;
harmonyPlural : Harm = case ló of {
_ + ("ö" | "ő") => H_e ; -- All plural allomorphs have E harmony, singular ones have O.
_ + ("o" | "ó") => H_a } ;
lova = lov + a ;
nLova = mkNounHarm harmonyPlural "k" lova ;
_ + ("o" | "ó") => H_a ;
lé => getHarm (lé)} ;
nLov = mkNounHarmAcc True harmonyPlural ak lov ;
nLó = mkNoun ló ;
in {s = \\n,c => case <n,c> of {
-- All plural forms and Sg Acc use the "lova" stem
<Pl,_>|<Sg,Acc> => nLova.s ! n ! c ;
-- All plural forms and Sg Acc, Sg Sup use the "lov" stem
<Pl,_>| <Sg,Acc> | <Sg,Sup> => nLov.s ! n ! c ;
-- The rest of the forms are formed with the regular constructor,
-- using "ló" as the stem.
@@ -67,7 +70,28 @@ oper
} ;
} ;
--Handles words like "gyomor, majom, retek" which are "sátrat, gyomrot, majmot, retket" in plural (wovel dropping base)
--Handles words like "tó, hó"" which are "tavak, havak" in plural.
--(Since I only have these examples for now I do a simplified case with ó, a)
--TODO: <Sg,Sup> "tavon" instead of "tón"
--TODO: szó special case which fulfills this but not the <Sg,Acc> or <Sg,Sup> case
dTó : Str -> Noun = \tó ->
let t = init tó ;
tav = t + "av" ;
nTav = mkNounHarmAcc True H_a "ak" tav ;
nTó = mkNoun tó ;
in {s = \\n,c => case <n,c> of {
-- All plural forms and Sg Acc use the "tava" stem
<Pl,_>|<Sg,Acc> => nTav.s ! n ! c ;
-- The rest of the forms are formed with the regular constructor,
-- using "tó" as the stem.
_ => nTó.s ! n ! c
} ;
} ;
--Handles words like "gyomor, majom, retek, eper" which are "gyomrot, majmot, retket, epret" in plural (wovel dropping base)
dMajom : Str -> Noun = \majom ->
let mo = last majom + last (init majom);
maj = init (init majom) ;
@@ -77,8 +101,8 @@ oper
in {s = \\n,c => case <n,c> of {
-- <Pl,Acc> => majmo + "kat" ; --Special case
-- All plural forms and Sg Acc use the "majmo" stem
<Pl,_> | <Sg,Acc> => nMajmo.s ! n ! c ;
-- All plural forms and Sg Acc and Sg Sup use the "majmo" stem
<Pl,_> | <Sg,Acc> | <Sg, Sup> => nMajmo.s ! n ! c ;
-- The rest of the forms are formed with the regular constructor,
-- using "majom" as the stem.
@@ -218,13 +242,14 @@ oper
mkNoun : Str -> Noun = \w ->
mkNounHarm (getHarm w) (pluralAllomorph w) w ;
-- Harmony and plural allomorph given explicitly
-- Harmony and plural allomorph given explicitly (check if the True makes it bad)
mkNounHarm : Harm -> (plural : Str) -> Str -> Noun = mkNounHarmAcc True ;
mkNounHarmAcc : (useAt : Bool) -> Harm -> (plural : Str) -> Str -> Noun = \useAt,h,plural,w ->
let endCaseSg : Case -> HarmForms = case vowFinal w of {
True => endCaseVow ;
False => endCaseCons } ;
let endCaseSg : Case -> HarmForms = case <vowFinal w, useAt> of {
<True,_> => endCaseVow ;
<False,True> => endCaseConsAccAt ;
_ => endCaseCons} ;
endCasePl : Case -> HarmForms = case <plural, useAt> of {
<"ak",_> => endCaseConsAccAt ;
<_,True> => endCaseConsAccAt ;