forked from GitHub/gf-rgl
@@ -12,7 +12,7 @@ lin
|
|||||||
|
|
||||||
-- : Prep -> NP -> Adv ;
|
-- : Prep -> NP -> Adv ;
|
||||||
PrepNP prep np = {
|
PrepNP prep np = {
|
||||||
s = np.s ! prep.c ++ prep.s ;
|
s = prep.pr ++ np.s ! prep.c ++ prep.s ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Adverbs can be modified by 'adadjectives', just like adjectives.
|
-- Adverbs can be modified by 'adadjectives', just like adjectives.
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ concrete CatHun of Cat = CommonX ** open ResHun, Prelude in {
|
|||||||
-- Constructed in StructuralHun.
|
-- Constructed in StructuralHun.
|
||||||
Conj = ResHun.Conj ;
|
Conj = ResHun.Conj ;
|
||||||
Subj = SS ;
|
Subj = SS ;
|
||||||
Prep = ResHun.Postposition ;
|
Prep = ResHun.Adposition ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ lincat
|
|||||||
lin
|
lin
|
||||||
BaseNP x y = twoTable Case x y ** y ;
|
BaseNP x y = twoTable Case x y ** y ;
|
||||||
ConsNP x xs = consrTable Case comma x xs ** xs ;
|
ConsNP x xs = consrTable Case comma x xs ** xs ;
|
||||||
ConjNP co xs = conjunctDistrTable Case co xs ** xs ;
|
ConjNP co xs = conjunctDistrTable Case co xs ** xs ** {agr = <P3,co.n>};
|
||||||
|
|
||||||
-- Relative sentences
|
-- Relative sentences
|
||||||
lincat
|
lincat
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ concrete LexiconHun of Lexicon = CatHun **
|
|||||||
-- A
|
-- A
|
||||||
|
|
||||||
-- lin add_V3 = mkV3 "" ;
|
-- lin add_V3 = mkV3 "" ;
|
||||||
-- lin airplane_N = mkN "" ;
|
lin airplane_N = mkN "repülőgép" "repülőgépet" ;
|
||||||
-- lin alas_Interj = mkInterj "" ;
|
-- lin alas_Interj = mkInterj "" ;
|
||||||
-- lin already_Adv = mkA "" ;
|
-- lin already_Adv = mkA "" ;
|
||||||
-- lin animal_N = mkN "" ;
|
lin animal_N = mkN "állat" ;
|
||||||
--lin answer_V2S = mkV2S "válasz" ;
|
-- lin answer_V2S = mkV2S "válasz" ;
|
||||||
-- lin apartment_N = mkN "" ;
|
lin apartment_N = mkN "lakás" ;
|
||||||
lin apple_N = mkN "alma" ;
|
lin apple_N = mkN "alma" ;
|
||||||
lin art_N = mkN "müvészet" ;
|
lin art_N = mkN "müvészet" ;
|
||||||
-- lin ashes_N = mkN "" ;
|
-- lin ashes_N = mkN "" ;
|
||||||
@@ -21,79 +21,79 @@ lin art_N = mkN "müvészet" ;
|
|||||||
|
|
||||||
lin baby_N = mkN "bébi" ;
|
lin baby_N = mkN "bébi" ;
|
||||||
-- lin back_N = mkN "" ;
|
-- lin back_N = mkN "" ;
|
||||||
-- lin bad_A = mkA "" ;
|
lin bad_A = mkA "rossz" ;
|
||||||
lin bank_N = mkN "bank" ;
|
lin bank_N = mkN "bank" ;
|
||||||
-- lin bark_N = mkN "" ;
|
-- lin bark_N = mkN "" ;
|
||||||
-- lin beautiful_A = mkA "" ;
|
lin beautiful_A = mkA "szép" ;
|
||||||
-- lin become_VA = mkVA "" ;
|
-- lin become_VA = mkVA "" ;
|
||||||
lin beer_N = mkN "sör" ;
|
lin beer_N = mkN "sör" "sört" ;
|
||||||
-- lin beg_V2V = mkV2 "" ;
|
-- lin beg_V2V = mkV2 "" ;
|
||||||
lin belly_N = mkN "has" ;
|
lin belly_N = mkN "has" ;
|
||||||
lin big_A = mkA "nagy" ;
|
lin big_A = mkA "nagy" ;
|
||||||
-- lin bike_N = mkN "" ;
|
lin bike_N = mkN "bicikli" ;
|
||||||
lin bird_N = mkN "madár" ;
|
lin bird_N = mkN "madár" ;
|
||||||
-- lin bite_V2 = mkV2 "" ;
|
-- lin bite_V2 = mkV2 "" ;
|
||||||
lin black_A = mkA "fekete" ;
|
lin black_A = mkA "fekete" ;
|
||||||
-- lin blood_N = mkN "" ;
|
lin blood_N = mkN "vér" ;
|
||||||
-- lin blow_V = mkV "" ;
|
-- lin blow_V = mkV "" ;
|
||||||
lin blue_A = mkA "kék" ;
|
lin blue_A = mkA "kék" ;
|
||||||
-- lin boat_N = mkN "" ;
|
lin boat_N = mkN "hajó" ;
|
||||||
-- lin bone_N = mkN "" ;
|
-- lin bone_N = mkN "" ;
|
||||||
-- lin boot_N = mkN "" ;
|
-- lin boot_N = mkN "" ;
|
||||||
-- lin boss_N = mkN "" ;
|
-- lin boss_N = mkN "" ;
|
||||||
-- lin book_N = mkN "" ;
|
lin book_N = mkN "könyv" ;
|
||||||
lin boy_N = mkN "fiú" ;
|
lin boy_N = mkN "fiú" ;
|
||||||
-- lin bread_N = mkN "" ;
|
lin bread_N = mkN "kenyér" ;
|
||||||
-- lin break_V2 = mkV2 "" ;
|
lin break_V2 = mkV2 "szünet" ;
|
||||||
-- lin breast_N = mkN "" ;
|
lin breast_N = mkN "mell" ;
|
||||||
-- lin breathe_V = mkV "" ;
|
-- lin breathe_V = mkV "" ;
|
||||||
-- lin broad_A = mkA "" ;
|
-- lin broad_A = mkA "" ;
|
||||||
-- lin brother_N2 = mkN "" ;
|
-- lin brother_N2 = mkN "öccsém" ; (possessive form?)
|
||||||
-- lin brown_A = mkA "" ;
|
lin brown_A = mkA "barna" ;
|
||||||
-- lin burn_V = mkV "" ;
|
-- lin burn_V = mkV "" ;
|
||||||
-- lin butter_N = mkN "" ;
|
lin butter_N = mkN "vaj" ;
|
||||||
-- lin buy_V2 = mkV2 "" ;
|
-- lin buy_V2 = mkV2 "" ;
|
||||||
|
|
||||||
----
|
----
|
||||||
-- C
|
-- C
|
||||||
|
|
||||||
-- lin camera_N = mkN "" ;
|
lin camera_N = mkN "fényképezőgép" ;
|
||||||
-- lin cap_N = mkN "" ;
|
-- lin cap_N = mkN "" ;
|
||||||
-- lin car_N = mkN "" ;
|
lin car_N = mkN "autó" ;
|
||||||
-- lin carpet_N = mkN "" ;
|
lin carpet_N = mkN "szőnyeg" ;
|
||||||
lin cat_N = mkN "macska" ;
|
lin cat_N = mkN "macska" ;
|
||||||
-- lin ceiling_N = mkN "" ;
|
lin ceiling_N = mkN "plafon" ;
|
||||||
-- lin chair_N = mkN "" ;
|
lin chair_N = mkN "szék" ;
|
||||||
-- lin cheese_N = mkN "" ;
|
lin cheese_N = mkN "sajt" ;
|
||||||
lin child_N = mkN "gyerek" ;
|
lin child_N = mkN "gyerek" ;
|
||||||
-- lin church_N = mkN "" ;
|
lin church_N = mkN "templom" ;
|
||||||
lin city_N = mkN "város" ;
|
lin city_N = mkN "város" ;
|
||||||
-- lin clean_A = mkA "" ;
|
lin clean_A = mkA "tiszta" ;
|
||||||
-- lin clever_A = mkA "" ;
|
lin clever_A = mkA "okos" ;
|
||||||
-- lin close_V2 = mkV2 "" ;
|
lin close_V2 = mkV2 "közel" ;
|
||||||
-- lin cloud_N = mkN "" ;
|
lin cloud_N = mkN "felhö" ;
|
||||||
lin coat_N = mkN "kabát" ;
|
lin coat_N = mkN "kabát" ;
|
||||||
-- lin cold_A = mkA "" ;
|
lin cold_A = mkA "hideg" ;
|
||||||
-- lin come_V = mkV "" ;
|
-- lin come_V = mkV "" ;
|
||||||
-- lin computer_N = mkN "" ;
|
lin computer_N = mkN "számítógép" ;
|
||||||
-- lin correct_A = mkA "" ;
|
lin correct_A = mkA "igaz" ;
|
||||||
-- lin count_V2 = mkV2 "" ;
|
-- lin count_V2 = mkV2 "" ;
|
||||||
lin country_N = mkN "ország" ;
|
lin country_N = mkN "ország" ;
|
||||||
-- lin cousin_N = mkN "" ;
|
lin cousin_N = mkN "unokatestvér" ; --short "unoka"
|
||||||
-- lin cow_N = mkN "" ;
|
lin cow_N = mkN "tehén" ;
|
||||||
-- lin cut_V2 = mkV2 "" ;
|
-- lin cut_V2 = mkV2 "" ;
|
||||||
--
|
--
|
||||||
-- ----
|
-- ----
|
||||||
-- -- D
|
-- -- D
|
||||||
--
|
--
|
||||||
-- lin day_N = mkN "" ;
|
lin day_N = mkN "nap" ;
|
||||||
-- lin die_V = mkV "" ;
|
-- lin die_V = mkV "" ;
|
||||||
-- lin dig_V = mkV "" ;
|
-- lin dig_V = mkV "" ;
|
||||||
-- lin dirty_A = mkA "" ;
|
-- lin dirty_A = mkA "" ;
|
||||||
-- lin distance_N3 = mkN "" ;
|
-- lin distance_N3 = mkN "" ;
|
||||||
-- lin do_V2 = mkV2 do_V ;
|
-- lin do_V2 = mkV2 do_V ;
|
||||||
-- lin doctor_N = mkN "" ;
|
lin doctor_N = mkN "orvos" ;
|
||||||
-- lin dog_N = mkN "" ;
|
lin dog_N = mkN "kutya" ;
|
||||||
lin door_N = mkN "ajtó" ;
|
lin door_N = mkN "ajtó" ;
|
||||||
-- lin drink_V2 = mkV2 "" ;
|
-- lin drink_V2 = mkV2 "" ;
|
||||||
-- lin dry_A = mkA "" ;
|
-- lin dry_A = mkA "" ;
|
||||||
@@ -103,44 +103,44 @@ lin door_N = mkN "ajtó" ;
|
|||||||
----
|
----
|
||||||
-- E
|
-- E
|
||||||
|
|
||||||
-- lin ear_N = mkN "" ;
|
lin ear_N = mkN "fül" ;
|
||||||
-- lin earth_N = mkN "" ;
|
lin earth_N = mkN "föld" ;
|
||||||
-- lin eat_V2 = mkV2 "" ;
|
-- lin eat_V2 = mkV2 "" ;
|
||||||
-- lin egg_N = mkN "" ;
|
lin egg_N = mkN "tojás" ;
|
||||||
-- lin empty_A = mkA "" ;
|
lin empty_A = mkA "üres" ;
|
||||||
-- lin enemy_N = mkN "" ;
|
lin enemy_N = mkN "ellenség" ;
|
||||||
lin eye_N = mkN "szem" ;
|
lin eye_N = mkN "szem" ;
|
||||||
|
|
||||||
----
|
----
|
||||||
-- F
|
-- F
|
||||||
|
|
||||||
-- lin factory_N = mkN "" ;
|
lin factory_N = mkN "gyár" ;
|
||||||
-- lin fall_V = mkV "" ;
|
-- lin fall_V = mkV "" ;
|
||||||
-- lin far_Adv = mkA "" ;
|
-- lin far_Adv = mkA "" ;
|
||||||
-- lin fat_N = mkN "" ;
|
lin fat_N = mkN "kövér" ;
|
||||||
-- lin father_N2 = mkN2 "" ;
|
lin father_N2 = mkN2 "apa" ;
|
||||||
-- lin fear_V2 = mkV2 "" ;
|
-- lin fear_V2 = mkV2 "" ;
|
||||||
-- lin fear_VS = mkVS "" ;
|
-- lin fear_VS = mkVS "" ;
|
||||||
-- lin feather_N = mkN "" ;
|
lin feather_N = mkN "madártoll" ;
|
||||||
-- lin fight_V2 = mkV2 "" ;
|
-- lin fight_V2 = mkV2 "" ;
|
||||||
-- lin find_V2 = mkV2 "" ;
|
-- lin find_V2 = mkV2 "" ;
|
||||||
-- lin fingernail_N = mkN "" ;
|
lin fingernail_N = mkN "köröm" ;
|
||||||
-- lin fire_N = mkN "" ;
|
lin fire_N = mkN "tűz" ;
|
||||||
lin fish_N = mkN "hal" ;
|
lin fish_N = mkN "hal" ;
|
||||||
-- lin float_V = mkV "" ;
|
-- lin float_V = mkV "" ;
|
||||||
-- lin floor_N = mkN "" ;
|
lin floor_N = mkN "padló" ;
|
||||||
-- lin flow_V = mkV "" ;
|
-- lin flow_V = mkV "" ;
|
||||||
-- lin flower_N = mkN "" ;
|
lin flower_N = mkN "vírág" ;
|
||||||
lin fly_V = mkV "repül" ;
|
lin fly_V = mkV "repül" ;
|
||||||
-- lin fog_N = mkN "" ;
|
lin fog_N = mkN "köd" ;
|
||||||
-- lin foot_N = mkN "" ;
|
lin foot_N = mkN "láb" ; --same as leg, to specify "lábfej"
|
||||||
-- lin forest_N = mkN "" ;
|
lin forest_N = mkN "erdő" ;
|
||||||
-- lin forget_V2 = mkV2 "" ;
|
-- lin forget_V2 = mkV2 "" ;
|
||||||
-- lin freeze_V = mkV "" ;
|
-- lin freeze_V = mkV "" ;
|
||||||
-- lin fridge_N = mkN "" ;
|
lin fridge_N = mkN "hűtő" ;
|
||||||
-- lin friend_N = mkN "" ;
|
lin friend_N = mkN "barát" ;
|
||||||
lin fruit_N = mkN "gyümölcs" ;
|
lin fruit_N = mkN "gyümölcs" ;
|
||||||
-- lin full_A = mkA "" ;
|
lin full_A = mkA "tele" ;
|
||||||
-- --lin fun_AV
|
-- --lin fun_AV
|
||||||
|
|
||||||
----
|
----
|
||||||
@@ -149,48 +149,48 @@ lin fruit_N = mkN "gyümölcs" ;
|
|||||||
lin garden_N = mkN "kert" ;
|
lin garden_N = mkN "kert" ;
|
||||||
lin girl_N = mkN "lány" ;
|
lin girl_N = mkN "lány" ;
|
||||||
-- lin give_V3 = mkV3 "" ;
|
-- lin give_V3 = mkV3 "" ;
|
||||||
-- lin glove_N = mkN "" ;
|
lin glove_N = mkN "kesztyű" ;
|
||||||
-- lin go_V = mkV "" ;
|
-- lin go_V = mkV "" ;
|
||||||
lin gold_N = mkN "arany" ;
|
lin gold_N = mkN "arany" ;
|
||||||
-- lin good_A = mkA "" ;
|
lin good_A = mkA "jó" ;
|
||||||
-- lin grammar_N = mkN "" ;
|
lin grammar_N = mkN "nyelvtan" ;
|
||||||
-- lin grass_N = mkN "" ;
|
lin grass_N = mkN "fű" ;
|
||||||
-- lin green_A = mkA "" ;
|
lin green_A = mkA "zöld" ;
|
||||||
|
|
||||||
----
|
----
|
||||||
-- H
|
-- H
|
||||||
|
|
||||||
-- lin hair_N = mkN "" ;
|
lin hair_N = mkN "haj" ;
|
||||||
lin hand_N = mkN "kéz" ;
|
lin hand_N = mkN "kéz" ;
|
||||||
-- lin harbour_N = mkN "" ;
|
-- lin harbour_N = mkN "" ;
|
||||||
-- lin hat_N = mkN "" ;
|
lin hat_N = mkN "kalap" ;
|
||||||
-- lin hate_V2 = mkV2 "" ;
|
-- lin hate_V2 = mkV2 "" ;
|
||||||
lin head_N = mkN "fej" ;
|
lin head_N = mkN "fej" ;
|
||||||
-- lin hear_V2 = mkV2 "" ;
|
-- lin hear_V2 = mkV2 "" ;
|
||||||
-- lin heart_N = mkN "" ;
|
lin heart_N = mkN "szív" ;
|
||||||
-- lin heavy_A = mkA "" ;
|
lin heavy_A = mkA "nehéz" ;
|
||||||
-- lin hill_N = mkN "" ;
|
-- lin hill_N = mkN "" ;
|
||||||
-- lin hit_V2 = mkV2 "" ;
|
-- lin hit_V2 = mkV2 "" ;
|
||||||
-- lin hold_V2 = mkV2 "" ;
|
-- lin hold_V2 = mkV2 "" ;
|
||||||
-- lin hope_VS = mkV "" ;
|
-- lin hope_VS = mkV "" ;
|
||||||
-- lin horn_N = mkN "" ;
|
-- lin horn_N = mkN "" ;
|
||||||
lin horse_N = mkN "ló" ;
|
lin horse_N = mkN "ló" ;
|
||||||
-- lin hot_A = mkA "" ;
|
lin hot_A = mkA "forró" ;
|
||||||
lin house_N = mkN "ház" ;
|
lin house_N = mkN "ház" ;
|
||||||
-- lin hunt_V2 = mkV2 "" ;
|
-- lin hunt_V2 = mkV2 "" ;
|
||||||
-- lin husband_N = mkN "" ;
|
lin husband_N = mkN "férj" ;
|
||||||
|
|
||||||
--------
|
--------
|
||||||
-- I - K
|
-- I - K
|
||||||
|
|
||||||
-- lin ice_N = mkN "" ;
|
lin ice_N = mkN "jég" ;
|
||||||
-- lin industry_N = mkN "" ;
|
lin industry_N = mkN "ipar" ;
|
||||||
-- lin iron_N = mkN "" ;
|
lin iron_N = mkN "vas" ;
|
||||||
-- lin john_PN = mkPN "" ;
|
-- lin john_PN = mkPN "" ;
|
||||||
-- lin jump_V = mkV "" ;
|
-- lin jump_V = mkV "" ;
|
||||||
-- lin kill_V2 = mkV2 "" ;
|
-- lin kill_V2 = mkV2 "" ;
|
||||||
-- lin king_N = mkN "" ;
|
lin king_N = mkN "király" ;
|
||||||
-- lin knee_N = mkN "" ;
|
lin knee_N = mkN "térd" ;
|
||||||
-- lin know_V2 = mkV2 "" ;
|
-- lin know_V2 = mkV2 "" ;
|
||||||
-- lin know_VQ = mkVQ "" ;
|
-- lin know_VQ = mkVQ "" ;
|
||||||
-- lin know_VS = mkV "" ;
|
-- lin know_VS = mkV "" ;
|
||||||
@@ -199,15 +199,15 @@ lin house_N = mkN "ház" ;
|
|||||||
----
|
----
|
||||||
-- L
|
-- L
|
||||||
|
|
||||||
-- lin lake_N = mkN "" ;
|
lin lake_N = mkN "tó" ;
|
||||||
-- lin lamp_N = mkN "" ;
|
lin lamp_N = mkN "lámpa" ;
|
||||||
-- lin language_N = mkN "" ;
|
lin language_N = mkN "nyelv" ;
|
||||||
-- lin laugh_V = mkV "" ;
|
-- lin laugh_V = mkV "" ;
|
||||||
-- lin leaf_N = mkN "" ;
|
lin leaf_N = mkN "levél" ;
|
||||||
-- lin learn_V2 = mkV2 "" ;
|
-- lin learn_V2 = mkV2 "" ;
|
||||||
-- lin leather_N = mkN "" ;
|
lin leather_N = mkN "bőr" ;
|
||||||
-- lin leave_V2 = mkV2 "" ;
|
-- lin leave_V2 = mkV2 "" ;
|
||||||
-- lin leg_N = mkN "" ;
|
lin leg_N = mkN "láb" ;
|
||||||
-- lin lie_V = mkV "" ;
|
-- lin lie_V = mkV "" ;
|
||||||
-- lin like_V2 = mkV2 "" ;
|
-- lin like_V2 = mkV2 "" ;
|
||||||
-- lin listen_V2 = mkV2 "" ;
|
-- lin listen_V2 = mkV2 "" ;
|
||||||
@@ -216,7 +216,7 @@ lin house_N = mkN "ház" ;
|
|||||||
-- lin long_A = mkA "" ;
|
-- lin long_A = mkA "" ;
|
||||||
-- lin lose_V2 = mkV2 "" ;
|
-- lin lose_V2 = mkV2 "" ;
|
||||||
-- lin louse_N = mkN "" ;
|
-- lin louse_N = mkN "" ;
|
||||||
-- lin love_N = mkN "" ;
|
lin love_N = mkN "szerelem" ;
|
||||||
-- lin love_V2 = mkV2 "" ;
|
-- lin love_V2 = mkV2 "" ;
|
||||||
|
|
||||||
----
|
----
|
||||||
@@ -224,46 +224,46 @@ lin house_N = mkN "ház" ;
|
|||||||
|
|
||||||
lin man_N = mkN "férfi" "ak" harmA ; -- force plural allomorph and a-harmony
|
lin man_N = mkN "férfi" "ak" harmA ; -- force plural allomorph and a-harmony
|
||||||
lin married_A2 = mkA2 "házas" Ins ;
|
lin married_A2 = mkA2 "házas" Ins ;
|
||||||
-- lin meat_N = mkN "" ;
|
lin meat_N = mkN "hús" ;
|
||||||
-- lin milk_N = mkN "" ;
|
lin milk_N = mkN "tej" ;
|
||||||
-- lin moon_N = mkN "" ;
|
lin moon_N = mkN "hold" ;
|
||||||
lin mother_N2 = mkN2 "anya" ;
|
lin mother_N2 = mkN2 "anya" ;
|
||||||
-- lin mountain_N = mkN "" ;
|
lin mountain_N = mkN "hegy" ;
|
||||||
-- lin mouth_N = mkN "" ;
|
lin mouth_N = mkN "száj" ;
|
||||||
-- lin music_N = mkN "" ;
|
lin music_N = mkN "zene" ;
|
||||||
|
|
||||||
----
|
----
|
||||||
-- N
|
-- N
|
||||||
|
|
||||||
lin name_N = mkN "név" ;
|
lin name_N = mkN "név" "nevet" ;
|
||||||
-- lin narrow_A = mkA "" ;
|
lin narrow_A = mkA "keskeny" ; --also "szűk"
|
||||||
-- lin near_A = mkA "" ;
|
lin near_A = mkA "közel" ;
|
||||||
-- lin neck_N = mkN "" ;
|
lin neck_N = mkN "nyak" ;
|
||||||
-- lin new_A = mkA "" ;
|
lin new_A = mkA "új" ;
|
||||||
-- lin newspaper_N = mkN "" ;
|
lin newspaper_N = mkN "újság" ;
|
||||||
-- lin night_N = mkN "" ;
|
lin night_N = mkN "éjszak" ; --also shortened to "éj" ("este" more for evening)
|
||||||
-- lin nose_N = mkN "" ;
|
lin nose_N = mkN "orr" ;
|
||||||
lin now_Adv = mkAdv "most" ;
|
lin now_Adv = mkAdv "most" ;
|
||||||
-- lin number_N = mkN "" ;
|
lin number_N = mkN "szám" ;
|
||||||
--
|
--
|
||||||
-- --------
|
-- --------
|
||||||
-- -- O - P
|
-- -- O - P
|
||||||
--
|
--
|
||||||
--
|
--
|
||||||
lin oil_N = mkN "olaj" ;
|
lin oil_N = mkN "olaj" ;
|
||||||
-- lin old_A = mkA "" ;
|
lin old_A = mkA "öreg" ; --also "idős"
|
||||||
-- lin open_V2 = mkV2 "" ;
|
-- lin open_V2 = mkV2 "" ;
|
||||||
-- lin paint_V2A = mkV2A "" ;
|
-- lin paint_V2A = mkV2A "" ;
|
||||||
-- lin paper_N = mkN "" ;
|
lin paper_N = mkN "papír" ;
|
||||||
-- lin paris_PN = mkPN "Paris" ;
|
-- lin paris_PN = mkPN "Paris" ;
|
||||||
lin peace_N = mkN "béke" ;
|
lin peace_N = mkN "béke" ;
|
||||||
-- lin pen_N = mkN "" ;
|
lin pen_N = mkN "toll" ;
|
||||||
lin person_N = mkN "ember" ;
|
lin person_N = mkN "ember" ;
|
||||||
-- lin planet_N = mkN "" ;
|
lin planet_N = mkN "bolygó" ;
|
||||||
-- lin plastic_N = mkN "" ;
|
lin plastic_N = mkN "műanyag" ;
|
||||||
-- lin play_V = mkV "" ;
|
-- lin play_V = mkV "" ;
|
||||||
-- lin policeman_N = mkN "" ;
|
lin policeman_N = mkN "rendőr" ; --the police "rendőrség"
|
||||||
-- lin priest_N = mkN "" ;
|
lin priest_N = mkN "pap" ;
|
||||||
-- lin pull_V2 = mkV2 "" ;
|
-- lin pull_V2 = mkV2 "" ;
|
||||||
-- lin push_V2 = mkV2 "" ;
|
-- lin push_V2 = mkV2 "" ;
|
||||||
-- lin put_V2 = mkV2 "" ;
|
-- lin put_V2 = mkV2 "" ;
|
||||||
@@ -271,42 +271,42 @@ lin person_N = mkN "ember" ;
|
|||||||
-- --------
|
-- --------
|
||||||
-- -- Q - R
|
-- -- Q - R
|
||||||
--
|
--
|
||||||
-- lin queen_N = mkN "" ;
|
lin queen_N = mkN "kírálynő" ;
|
||||||
lin question_N = mkN "kérdés" ;
|
lin question_N = mkN "kérdés" ;
|
||||||
-- lin radio_N = mkN "" ;
|
lin radio_N = mkN "rádió" ;
|
||||||
-- lin rain_N = mkN "" ;
|
lin rain_N = mkN "eső" ;
|
||||||
-- lin rain_V0 = mkV "" ;
|
-- lin rain_V0 = mkV "" ;
|
||||||
-- lin read_V2 = mkV2 "" ;
|
-- lin read_V2 = mkV2 "" ;
|
||||||
-- lin ready_A = mkA "" ;
|
lin ready_A = mkA "kész" ;
|
||||||
-- lin reason_N = mkN "" ;
|
lin reason_N = mkN "ok" ;
|
||||||
lin red_A = mkA "piros" ;
|
lin red_A = mkA "piros" ;
|
||||||
-- lin religion_N = mkN "" ;
|
lin religion_N = mkN "vallás" ;
|
||||||
-- lin restaurant_N = mkN "" ;
|
lin restaurant_N = mkN "étterem" ;
|
||||||
-- lin river_N = mkN "" ;
|
lin river_N = mkN "folyó" ;
|
||||||
lin road_N = mkN "út" ;
|
lin road_N = mkN "út" ;
|
||||||
-- lin rock_N = mkN "" ;
|
lin rock_N = mkN "szikla" ;
|
||||||
-- lin roof_N = mkN "" ;
|
lin roof_N = mkN "plafon" ;
|
||||||
-- lin root_N = mkN "" ;
|
lin root_N = mkN "gyökér" ;
|
||||||
-- lin rope_N = mkN "" ;
|
lin rope_N = mkN "kötél" ;
|
||||||
-- lin rotten_A = mkA "" ;
|
-- lin rotten_A = mkA "" ;
|
||||||
-- lin round_A = mkA "" ;
|
-- lin round_A = mkA "" ;
|
||||||
-- lin rub_V2 = mkV2 "" ;
|
-- lin rub_V2 = mkV2 "" ;
|
||||||
-- lin rubber_N = mkN "" ;
|
lin rubber_N = mkN "gumi" ;
|
||||||
-- lin rule_N = mkN "" ;
|
lin rule_N = mkN "szabály" ;
|
||||||
-- lin run_V = mkV "" ;
|
-- lin run_V = mkV "" ;
|
||||||
|
|
||||||
----
|
----
|
||||||
-- S
|
-- S
|
||||||
|
|
||||||
-- lin salt_N = mkN "" ;
|
lin salt_N = mkN "só" ;
|
||||||
-- lin sand_N = mkN "" ;
|
lin sand_N = mkN "homok" ;
|
||||||
-- lin say_VS = mkVS "" ;
|
-- lin say_VS = mkVS "" ;
|
||||||
-- lin school_N = mkN "" ;
|
lin school_N = mkN "iskola" ;
|
||||||
-- lin science_N = mkN "" ;
|
lin science_N = mkN "tudomány" ;
|
||||||
-- lin scratch_V2 = mkV2 "" ;
|
-- lin scratch_V2 = mkV2 "" ;
|
||||||
-- lin sea_N = mkN "" ;
|
lin sea_N = mkN "tenger" ;
|
||||||
lin see_V2 = mkV2 "lát" ;
|
lin see_V2 = mkV2 "lát" ;
|
||||||
-- lin seed_N = mkN "" ;
|
lin seed_N = mkN "mag" ;
|
||||||
-- lin seek_V2 = mkV2 "" ;
|
-- lin seek_V2 = mkV2 "" ;
|
||||||
-- lin sell_V3 = mkV3 "" ;
|
-- lin sell_V3 = mkV3 "" ;
|
||||||
-- lin send_V3 = mkV3 "" ;
|
-- lin send_V3 = mkV3 "" ;
|
||||||
@@ -314,42 +314,42 @@ lin see_V2 = mkV2 "lát" ;
|
|||||||
-- lin sharp_A = mkA "" ;
|
-- lin sharp_A = mkA "" ;
|
||||||
-- lin sheep_N = mkN "" fem ;
|
-- lin sheep_N = mkN "" fem ;
|
||||||
-- lin ship_N = mkN "" ;
|
-- lin ship_N = mkN "" ;
|
||||||
lin shirt_N = mkN "ing" ;
|
lin shirt_N = mkN "ing" ; --shirt like t-shirt or the more formal?
|
||||||
lin shoe_N = mkN "cipő" ;
|
lin shoe_N = mkN "cipő" ;
|
||||||
-- lin shop_N = mkN "" ;
|
lin shop_N = mkN "üzlet" ;
|
||||||
-- lin short_A = mkA "" ;
|
lin short_A = mkA "rövid" ; --in short text, if human length then "alacsony"
|
||||||
-- lin silver_N = mkN "" ;
|
lin silver_N = mkN "ezüst" ;
|
||||||
-- lin sing_V = mkV "" ;
|
-- lin sing_V = mkV "" ;
|
||||||
-- lin sister_N = mkN "" ;
|
-- lin sister_N = mkN "" ;
|
||||||
-- lin sit_V = mkV "" ;
|
-- lin sit_V = mkV "" ;
|
||||||
-- lin skin_N = mkN "" ;
|
lin skin_N = mkN "bőr" ;
|
||||||
-- lin sky_N = mkN "" ;
|
lin sky_N = mkN "ég" ;
|
||||||
-- lin sleep_V = mkV "" ;
|
-- lin sleep_V = mkV "" ;
|
||||||
-- lin small_A = mkA "" ;
|
lin small_A = mkA "kicsi" ;
|
||||||
-- lin smell_V = mkV "" ;
|
-- lin smell_V = mkV "" ;
|
||||||
-- lin smoke_N = mkN "" ;
|
lin smoke_N = mkN "füst" ;
|
||||||
-- lin smooth_A = mkA "" ;
|
lin smooth_A = mkA "sima" ;
|
||||||
-- lin snake_N = mkN "" ;
|
lin snake_N = mkN "kígyó" ;
|
||||||
-- lin snow_N = mkN "" ;
|
lin snow_N = mkN "hó" ;
|
||||||
-- lin sock_N = mkN "" ;
|
lin sock_N = mkN "zokni" ;
|
||||||
-- lin song_N = mkN "" ;
|
lin song_N = mkN "dal" ;
|
||||||
-- lin speak_V2 = mkV2 "" ;
|
-- lin speak_V2 = mkV2 "" ;
|
||||||
-- lin spit_V = mkV "" ;
|
-- lin spit_V = mkV "" ;
|
||||||
-- lin split_V2 = mkV2 "" ;
|
-- lin split_V2 = mkV2 "" ;
|
||||||
-- lin squeeze_V2 = mkV2 "" ;
|
-- lin squeeze_V2 = mkV2 "" ;
|
||||||
-- lin stab_V2 = mkV2 "" ;
|
-- lin stab_V2 = mkV2 "" ;
|
||||||
-- lin stand_V = mkV "" ;
|
-- lin stand_V = mkV "" ;
|
||||||
-- lin star_N = mkN "" ;
|
lin star_N = mkN "csillag" ;
|
||||||
-- lin steel_N = mkN "" ;
|
lin steel_N = mkN "acél" ;
|
||||||
-- lin stick_N = mkN "" ;
|
lin stick_N = mkN "rúd" ;
|
||||||
lin stone_N = mkN "kő";
|
lin stone_N = mkN "kő";
|
||||||
-- lin stop_V = mkV "" ;
|
-- lin stop_V = mkV "" ;
|
||||||
-- lin stove_N = mkN "" ;
|
-- lin stove_N = mkN "" ;
|
||||||
-- lin straight_A = mkA "" ;
|
lin straight_A = mkA "egyenes" ;
|
||||||
-- lin student_N = mkN "" ;
|
lin student_N = mkN "diák" ;
|
||||||
-- lin stupid_A = mkA "" ;
|
lin stupid_A = mkA "buta" ; --also "hülye"
|
||||||
-- lin suck_V2 = mkV2 "" ;
|
-- lin suck_V2 = mkV2 "" ;
|
||||||
-- lin sun_N = mkN "" ;
|
lin sun_N = mkN "nap" ; --same as day
|
||||||
-- lin swell_V = mkV "" ;
|
-- lin swell_V = mkV "" ;
|
||||||
-- lin swim_V = mkV "" ;
|
-- lin swim_V = mkV "" ;
|
||||||
|
|
||||||
@@ -358,31 +358,31 @@ lin stone_N = mkN "kő";
|
|||||||
|
|
||||||
|
|
||||||
lin table_N = mkN "asztal" ;
|
lin table_N = mkN "asztal" ;
|
||||||
-- lin tail_N = mkN "" ;
|
lin tail_N = mkN "farok" ;
|
||||||
lin talk_V3 = mkV3 "beszél" ;
|
lin talk_V3 = mkV3 "beszél" ;
|
||||||
-- lin teach_V2 = mkV2 "" ;
|
-- lin teach_V2 = mkV2 "" ;
|
||||||
lin teacher_N = mkN "tanár" ;
|
lin teacher_N = mkN "tanár" ;
|
||||||
-- lin television_N = mkN "" ;
|
lin television_N = mkN "tévé" ; --also "televízió" but not used
|
||||||
-- lin thick_A = mkA "" ;
|
lin thick_A = mkA "vastag" ;
|
||||||
-- lin thin_A = mkA "" ;
|
lin thin_A = mkA "vekony" ;
|
||||||
-- lin think_V = mkV "" ;
|
-- lin think_V = mkV "" ;
|
||||||
-- lin throw_V2 = mkV2 "" ;
|
-- lin throw_V2 = mkV2 "" ;
|
||||||
-- lin tie_V2 = mkV2 "" ;
|
-- lin tie_V2 = mkV2 "" ;
|
||||||
lin today_Adv = mkAdv "ma" ;
|
lin today_Adv = mkAdv "ma" ;
|
||||||
-- lin tongue_N = mkN "" ;
|
lin tongue_N = mkN "nyelv" ; --same as language
|
||||||
-- lin tooth_N = mkN "" ;
|
lin tooth_N = mkN "fog" ;
|
||||||
-- lin train_N = mkN "" ;
|
lin train_N = mkN "vonat" ;
|
||||||
-- lin travel_V = mkV "" ;
|
-- lin travel_V = mkV "" ;
|
||||||
-- lin tree_N = mkN "" ;
|
lin tree_N = mkN "fa" ;
|
||||||
-- lin turn_V = mkV "" ;
|
-- lin turn_V = mkV "" ;
|
||||||
|
|
||||||
--------
|
--------
|
||||||
-- U - V
|
-- U - V
|
||||||
|
|
||||||
-- lin ugly_A = mkA "" ;
|
lin ugly_A = mkA "csúf" ;
|
||||||
-- lin uncertain_A = mkA "" ;
|
-- lin uncertain_A = mkA "" ;
|
||||||
-- lin understand_V2 = mkV2 "" ;
|
-- lin understand_V2 = mkV2 "" ;
|
||||||
-- lin university_N = mkN "" ;
|
lin university_N = mkN "egyetem" ;
|
||||||
lin village_N = mkN "falu" ;
|
lin village_N = mkN "falu" ;
|
||||||
-- lin vomit_V = mkV2 "" ;
|
-- lin vomit_V = mkV2 "" ;
|
||||||
|
|
||||||
@@ -391,28 +391,29 @@ lin village_N = mkN "falu" ;
|
|||||||
|
|
||||||
-- lin wait_V2 = mkV2 "" ;
|
-- lin wait_V2 = mkV2 "" ;
|
||||||
-- lin walk_V = mkV "" ;
|
-- lin walk_V = mkV "" ;
|
||||||
-- lin war_N = mkN "" ;
|
lin war_N = mkN "háború" ;
|
||||||
-- lin warm_A = mkA "" ;
|
lin warm_A = mkA "meleg" ;
|
||||||
-- lin wash_V2 = mkV2 "" ;
|
-- lin wash_V2 = mkV2 "" ;
|
||||||
-- lin watch_V2 = mkV2 "" ;
|
-- lin watch_V2 = mkV2 "" ;
|
||||||
lin water_N = mkN "víz" ;
|
lin water_N = mkN "víz" ;
|
||||||
-- lin wet_A = mkA "" ;
|
lin wet_A = mkA "nedves" ;
|
||||||
-- lin white_A = mkA "" ;
|
lin white_A = mkA "fehér" ;
|
||||||
-- lin wide_A = mkA "" ;
|
lin wide_A = mkA "széles" ;
|
||||||
-- lin wife_N = mkN "" ;
|
lin wife_N = mkN "feleség" ;
|
||||||
-- lin win_V2 = mkV2 "" ;
|
-- lin win_V2 = mkV2 "" ;
|
||||||
-- lin wind_N = mkN "" ;
|
lin wind_N = mkN "szél" ;
|
||||||
lin window_N = mkN "ablak" ;
|
lin window_N = mkN "ablak" ;
|
||||||
lin wine_N = mkN "bor" ;
|
lin wine_N = mkN "bor" ;
|
||||||
-- lin wing_N = mkN "" ;
|
lin wing_N = mkN "szárny" ;
|
||||||
-- lin wipe_V2 = mkV2 "" ;
|
-- lin wipe_V2 = mkV2 "" ;
|
||||||
lin woman_N = mkN "nő" "k" harmO ;
|
--lin woman_N = mkN "nő" "k" harmO ;
|
||||||
|
lin woman_N = mkN "nő" "nőket" ;
|
||||||
-- lin wonder_VQ = mkVQ "" ;
|
-- lin wonder_VQ = mkVQ "" ;
|
||||||
-- lin wood_N = mkN "" ;
|
lin wood_N = mkN "fa" ; --same as tree
|
||||||
-- lin worm_N = mkN "" ;
|
lin worm_N = mkN "féreg" ; --also "kukac"
|
||||||
-- lin write_V2 = mkV2 "" ;
|
-- lin write_V2 = mkV2 "" ;
|
||||||
-- lin year_N = mkN "" ;
|
lin year_N = mkN "év" ;
|
||||||
-- lin yellow_A = mkA "" ;
|
lin yellow_A = mkA "sárga" ;
|
||||||
-- lin young_A = mkA "" ;
|
lin young_A = mkA "fiatal" ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
|
|||||||
|
|
||||||
-- : Det -> CN -> NP
|
-- : Det -> CN -> NP
|
||||||
DetCN det cn = emptyNP ** det ** {
|
DetCN det cn = emptyNP ** det ** {
|
||||||
s = \\c => det.s ! c ++ cn.s ! det.n ! c ;
|
s = \\c => det.s ! Nom ++ cn.s ! det.n ! c ;
|
||||||
agr = <P3,det.n> ;
|
agr = <P3,det.n> ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ oper
|
|||||||
-- Paradigm functions
|
-- Paradigm functions
|
||||||
-- http://www.cse.chalmers.se/~aarne/articles/smart-preprint.pdf
|
-- http://www.cse.chalmers.se/~aarne/articles/smart-preprint.pdf
|
||||||
|
|
||||||
-- Words like alma, kefe:
|
-- Words like "alma, kefe, apa, anya, fa":
|
||||||
dAlma : Str -> Noun = \alma ->
|
dAlma : (nom : Str) -> (acc : Str) -> Noun = \alma,almát ->
|
||||||
let almá : Str = lengthen alma ;
|
let almá : Str = init almát ;
|
||||||
|
|
||||||
-- Apply mkNoun to the lengthened stem "almá" or "kefé"
|
-- Apply mkNoun to the lengthened stem "almá" or "kefé"
|
||||||
nAlmá : Noun = mkNoun almá ;
|
nAlmá : Noun = mkNoun almá ;
|
||||||
@@ -24,12 +24,8 @@ oper
|
|||||||
|
|
||||||
-- Handles words like "madár, nyár, név, bogár" with shortened stem vowel in plural
|
-- Handles words like "madár, nyár, név, bogár" with shortened stem vowel in plural
|
||||||
-- No special <Sg,Sup> case here
|
-- No special <Sg,Sup> case here
|
||||||
dMadár : Str -> Noun = \madár ->
|
dMadár : (nom : Str) -> (acc : Str) -> Noun = \madár,madarat ->
|
||||||
let r = last madár ;
|
let madara = init madarat ;
|
||||||
madá = init madár ;
|
|
||||||
mada = shorten madá ; -- shortens vowels
|
|
||||||
a = last mada ;
|
|
||||||
madara = mada + r + a ;
|
|
||||||
nMadara = mkNounHarm (getHarm madara) "k" madara ;
|
nMadara = mkNounHarm (getHarm madara) "k" madara ;
|
||||||
nMadár = mkNoun madár ;
|
nMadár = mkNoun madár ;
|
||||||
in {s = \\n,c => case <n,c> of {
|
in {s = \\n,c => case <n,c> of {
|
||||||
@@ -44,26 +40,19 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
--Handles words like "ló, lé, kő" which are "lovak, levek, kövek" in plural.
|
--Handles words like "ló, lé, kő" which are "lovak, levek, kövek" in plural.
|
||||||
-- <Sg,Sup> "lovon" instead of "lón" fixed but that gives the following problems:
|
--Also handles "tó, hó" which are "tavak, havak" in plural!
|
||||||
--TODO: special case <Sg,Sup> "lén" not "leven"
|
-- <Sg,Sup> "lovon" instead of "lón" fixed
|
||||||
--TODO: <Sg,Sup> also "kövön" not "köven", but that is due to H_e, which is needed for "köveket" so it's conflicting
|
dLó : (nom : Str) -> (acc : Str) -> Noun = \ló, lovat ->
|
||||||
dLó : Str -> Noun = \ló ->
|
let lova = init lovat ;
|
||||||
let lo = shorten ló ;
|
lov = init lova ;
|
||||||
lov = lo + "v" ;
|
nLov = mkNoun lov ;
|
||||||
ak : Str = case ló of {
|
nLova = mkNoun lova ;
|
||||||
_ + ("ö" | "ő") => "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 ;
|
|
||||||
lé => getHarm (lé)} ;
|
|
||||||
nLov = mkNounHarm harmonyPlural ak lov ;
|
|
||||||
nLó = mkNoun ló ;
|
nLó = mkNoun ló ;
|
||||||
in {s = \\n,c => case <n,c> of {
|
in {s = \\n,c => case <n,c> of {
|
||||||
|
|
||||||
-- All plural forms and Sg Acc, Sg Sup use the "lov" stem
|
-- All plural forms and Sg Acc, Sg Sup use the "lova" stem
|
||||||
<Pl,_>| <Sg,Acc> | <Sg,Sup> => nLov.s ! n ! c ;
|
<Pl,_>| <Sg,Acc> => nLova.s ! n ! c ;
|
||||||
|
<Sg,Sup> => nLov.s ! n ! c ;
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
-- The rest of the forms are formed with the regular constructor,
|
||||||
-- using "ló" as the stem.
|
-- using "ló" as the stem.
|
||||||
@@ -72,52 +61,21 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--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)
|
|
||||||
--<Sg,Sup> "tavon" instead of "tón" case fixed, works automatically with the Sup rules
|
|
||||||
--TODO: szó special case which fulfills the plural cases but not the <Sg,Acc> or <Sg,Sup> case ("szót" not "szavat")
|
|
||||||
dTó : Str -> Noun = \tó ->
|
|
||||||
let t = init tó ;
|
|
||||||
tav = t + "av" ;
|
|
||||||
nTav = mkNounHarm H_a "ak" tav ;
|
|
||||||
nTó = mkNoun tó ;
|
|
||||||
in {s = \\n,c => case <n,c> of {
|
|
||||||
|
|
||||||
-- All plural forms and Sg Acc use the "tav" stem
|
|
||||||
<Pl,_>|<Sg,Acc>|<Sg,Sup> => 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" which are "gyomrot, majmot, retket" in accusative (wovel dropping base)
|
--Handles words like "gyomor, majom, retek" which are "gyomrot, majmot, retket" in accusative (wovel dropping base)
|
||||||
--More examples: "ajak, bokor, cukor, csokor, eper, fészek, fodor, gödör, haszon, iker, izom, kölyök, köröm, méreg, piszok, sarok, selyem, szeder, szobor, takony, terem, titok, torok, torony, tükör, vödör" ->
|
--More examples: "ajak, bokor, cukor, csokor, eper, fészek, fodor, gödör, haszon, iker, izom, kölyök, köröm, méreg, piszok, sarok, selyem, szeder, szobor, takony, terem, titok, torok, torony, tükör, vödör" ->
|
||||||
-- "ajkat, bokrot, cukrot, csokrot, epret, fészket, fodrot, gödröt, hasznot, ikret, izmot, kölyköt, körmet, mérget, piszkot, sarkot, selymet, szedret, szobrot, taknyot, termet, titkot, torkot, tornyot, tükröt, vödröt"
|
-- "ajkat, bokrot, cukrot, csokrot, epret, fészket, fodrot, gödröt, hasznot, ikret, izmot, kölyköt, körmet, mérget, piszkot, sarkot, selymet, szedret, szobrot, taknyot, termet, titkot, torkot, tornyot, tükröt, vödröt"
|
||||||
|
--ALso handles words like "sátor, álom, alkalom, farok, halom, vászon"
|
||||||
|
-- "sátrat, álmat, alkalmat, farkat, halmat, vásznat"
|
||||||
--<Sg,Sup> case handled
|
--<Sg,Sup> case handled
|
||||||
dMajom : Str -> Noun = \majom ->
|
dMajom : (nom : Str) -> (acc : Str) -> Noun = \majom, majmot ->
|
||||||
-- Str*Str is syntactic sugar for {p1 : Str ; p2 : Str} ;
|
let majmo = init majmot ;
|
||||||
-- confusing syntax: you can't write let <tako,ny> : Str*Str = …
|
majm = init majmo ;
|
||||||
-- it has to be called something else, and then you
|
nMajmo = mkNoun majmo ;
|
||||||
-- can get "tako" and "ny" with p1, p2.
|
|
||||||
let tako_ny : Str*Str = case majom of {
|
|
||||||
x + dzs@#trigraph => <x,dzs> ;
|
|
||||||
x + zs@#digraph => <x,zs> ;
|
|
||||||
-- ? pattern matches exactly 1 character
|
|
||||||
x + s@? => <x,s> } ;
|
|
||||||
tako = tako_ny.p1 ;
|
|
||||||
ny = tako_ny.p2 ;
|
|
||||||
|
|
||||||
nyo = ny + last tako ;
|
|
||||||
tak = init tako ;
|
|
||||||
taknyo = tak + nyo ;
|
|
||||||
nMajmo = mkNounHarm (getHarm taknyo) "k" taknyo ;
|
|
||||||
nMajom = mkNoun majom ;
|
nMajom = mkNoun majom ;
|
||||||
in {s = \\n,c => case <n,c> of {
|
in {s = \\n,c => case <n,c> of {
|
||||||
-- All plural forms and Sg Acc and Sg Sup use the "majmo" stem
|
-- All plural forms and Sg Acc and Sg Sup use the "majmo" stem
|
||||||
<Pl,_> | <Sg,Acc> | <Sg, Sup> => nMajmo.s ! n ! c ;
|
<Pl,_> | <Sg,Acc> => nMajmo.s ! n ! c ;
|
||||||
|
<Sg,Sup> => nMajmo.s ! n ! c ;
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
-- The rest of the forms are formed with the regular constructor,
|
||||||
-- using "majom" as the stem.
|
-- using "majom" as the stem.
|
||||||
@@ -125,25 +83,6 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--Handles words like "sátor, álom, alkalom, farok, halom, vászon"
|
|
||||||
-- "sátrat, álmat, alkalmat, farkat, halmat, vásznat"
|
|
||||||
-- (bátor not noun)
|
|
||||||
dFarok : Str -> Noun = \farok ->
|
|
||||||
let k = last farok ;
|
|
||||||
far = init (init farok) ;
|
|
||||||
fark = far + k ;
|
|
||||||
nFark = mkNounHarm (getHarm fark) "ak" fark ;
|
|
||||||
nFarok = mkNoun farok ;
|
|
||||||
in {s = \\n,c => case <n,c> of {
|
|
||||||
-- All plural forms and Sg Acc and Sg Sup use the "fark" stem
|
|
||||||
<Pl,_> | <Sg,Acc> | <Sg, Sup> => nFark.s ! n ! c ;
|
|
||||||
|
|
||||||
-- The rest of the forms are formed with the regular constructor,
|
|
||||||
-- using "farok" as the stem.
|
|
||||||
_ => nFarok.s ! n ! c
|
|
||||||
} ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
-- More words not covered by current paradigms:
|
-- More words not covered by current paradigms:
|
||||||
-- https://cl.lingfil.uu.se/~bea/publ/megyesi-hungarian.pdf
|
-- https://cl.lingfil.uu.se/~bea/publ/megyesi-hungarian.pdf
|
||||||
-- TODO: falu ~ falva-k (v-case)
|
-- TODO: falu ~ falva-k (v-case)
|
||||||
@@ -152,19 +91,79 @@ oper
|
|||||||
|
|
||||||
-- regNoun is a /smart paradigm/: it takes one or a couple of forms,
|
-- regNoun is a /smart paradigm/: it takes 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.
|
||||||
regNoun : Str -> Noun = \sgnom -> case sgnom of {
|
regNounNomAcc : (nom : Str) -> (acc : Str) -> Noun = \n,a ->
|
||||||
_ + "a"|"e" => dAlma sgnom ;
|
case <n,a> of {
|
||||||
_ + ("á"|"é") + ? => dMadár sgnom ;
|
-- alma, almát
|
||||||
_ + ("ó"|"ő") => dLó sgnom ;
|
<_ + "a", _ + "át">
|
||||||
_ + "alom" => dFarok sgnom ;
|
|<_ + "e" ,_ + "ét"> => dAlma n a ;
|
||||||
_ + "elem" => dMajom sgnom ;
|
|
||||||
|
|
||||||
-- TODO: more non-smart paradigms + more pattern matching
|
|
||||||
-- TODO: smart paradigms with >1 form. Which forms are the most descriptive?
|
|
||||||
|
|
||||||
_ => mkNoun sgnom -- Fall back to the regular paradigm
|
<_ + "á" + #c, -- madár, madarat
|
||||||
|
_ + "a" + #c + #v + "t">
|
||||||
|
|
||||||
|
|<_ + "é" + #c, -- név, nevet
|
||||||
|
_ + "e" + #c + #v + "t">
|
||||||
|
|
||||||
|
|<_ + "í" + #c, -- víz, vizet
|
||||||
|
_ + "i" + #c + #v + "t"> => dMadár n a ;
|
||||||
|
|
||||||
|
|
||||||
|
<_ + #v + #c, -- majom, majmot
|
||||||
|
_ + #c + #v + "t"> => dMajom n a ;
|
||||||
|
|
||||||
|
|
||||||
|
<_ + "ó", -- ló, lovat
|
||||||
|
_ + "o" + #c + #v + "t">
|
||||||
|
|
||||||
|
|<_ + "ő", -- kő, követ
|
||||||
|
_ + "ö" + #c + #v + "t">
|
||||||
|
|
||||||
|
|<_ + "é", -- lé, levet
|
||||||
|
_ + "e" + #c + #v + "t"> => dLó n a ;
|
||||||
|
|
||||||
|
_ => mkNoun n
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
regNoun : Str -> Noun = \sgnom -> case sgnom of {
|
||||||
|
_ + ("a"|"e") => dAlma sgnom (lengthen sgnom + "t") ;
|
||||||
|
#c + ("á"|"é") + #c => mkNoun sgnom ;
|
||||||
|
_ + ("á"|"é") + #c => dMadár sgnom (név2nevet sgnom) ;
|
||||||
|
_ + ("ó"|"é"|"ő"|"ű") => dLó sgnom (ló2lovat sgnom) ;
|
||||||
|
_ + #v + #c + #v + #c => dMajom sgnom (majom2majmo sgnom);
|
||||||
|
_ => mkNoun sgnom -- Fall back to the regular paradigm
|
||||||
|
} where {
|
||||||
|
név2nevet : Str -> Str = \név ->
|
||||||
|
let né_v : Str*Str = case név of {né + v@#c => <né,v>} ;
|
||||||
|
né = né_v.p1 ;
|
||||||
|
v = né_v.p2 ;
|
||||||
|
ne = shorten né ;
|
||||||
|
e = case last ne of {
|
||||||
|
"i" => "e" ;
|
||||||
|
_ => last ne } ;
|
||||||
|
in ne + v + e + "t" ;
|
||||||
|
ló2lovat : Str -> Str = \ló ->
|
||||||
|
let lo = shorten ló ;
|
||||||
|
lov = lo + "v" ;
|
||||||
|
at : Str = case ló of {
|
||||||
|
_ + "ó" => "at" ;
|
||||||
|
_ => "et" } ;
|
||||||
|
in lov + at ;
|
||||||
|
majom2majmo : Str -> Str = \majom ->
|
||||||
|
let majo_m : Str*Str = case majom of {majo + m@#c => <majo,m>} ;
|
||||||
|
majo = majo_m.p1 ;
|
||||||
|
m = majo_m.p2 ;
|
||||||
|
mo = m + last majo ;
|
||||||
|
maj = init majo ;
|
||||||
|
in maj + mo
|
||||||
|
} ;
|
||||||
|
|
||||||
|
--TODO: Special cases (enter these words manually to not complicate the paradigms):
|
||||||
|
--dTó: szó special case which fulfills the plural cases but not the <Sg,Acc> or <Sg,Sup> case ("szót" not "szavat")
|
||||||
|
--dLó: special case <Sg,Sup> "lén" not "leven"
|
||||||
|
--dLó: <Sg,Sup> also "kövön" not "köven", but that is due to H_e, which is needed for "köveket" so it's conflicting
|
||||||
|
--endCaseConsAcc: "falat, fület, várat, könnyet",
|
||||||
|
--also special in superessive case "falon, fülek, vizen"
|
||||||
|
--pattern matching in regNoun: one-syllable words that in fact belong to dMadár: "nyár, név"
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Following code by EG in 2009 (?), comments and some additions by IL 2020
|
-- Following code by EG in 2009 (?), comments and some additions by IL 2020
|
||||||
|
|
||||||
@@ -177,6 +176,16 @@ oper
|
|||||||
-- Vowels as a pattern.
|
-- Vowels as a pattern.
|
||||||
v : pattern Str = #("a" | "e" | "i" | "o" | "u" | "ö" | "ü" |
|
v : pattern Str = #("a" | "e" | "i" | "o" | "u" | "ö" | "ü" |
|
||||||
"á" | "é" | "í" | "ó" | "ú" | "ő" | "ű") ;
|
"á" | "é" | "í" | "ó" | "ú" | "ő" | "ű") ;
|
||||||
|
|
||||||
|
c : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|
|
||||||
|
"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"z"|
|
||||||
|
"cs"|"dz"|"gy"|"ly"|"ny"|"sz"|"ty"|"zs"|
|
||||||
|
"dzs") ;
|
||||||
|
|
||||||
|
-- Only single consonants
|
||||||
|
unigraph : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|
|
||||||
|
"n"|"p"|"q"|"r"|"s"|"t"|"v"|"w"|"x"|"z") ;
|
||||||
|
|
||||||
-- Digraphs
|
-- Digraphs
|
||||||
digraph : pattern Str = #("cs"|"dz"|"gy"|"ly"|"ny"|"sz"|"ty"|"zs") ;
|
digraph : pattern Str = #("cs"|"dz"|"gy"|"ly"|"ny"|"sz"|"ty"|"zs") ;
|
||||||
|
|
||||||
@@ -194,7 +203,7 @@ oper
|
|||||||
x + "ty" => x + "tty" ;
|
x + "ty" => x + "tty" ;
|
||||||
x + "zs" => x + "zzs" ;
|
x + "zs" => x + "zzs" ;
|
||||||
|
|
||||||
-- Base cacse: just duplicate the single letter
|
-- Base case: just duplicate the single letter
|
||||||
x + s@? => x + s + s } ;
|
x + s@? => x + s + s } ;
|
||||||
|
|
||||||
-- Function to test if a string ends in a vowel
|
-- Function to test if a string ends in a vowel
|
||||||
@@ -274,6 +283,13 @@ oper
|
|||||||
_ => endCaseCons c
|
_ => endCaseCons c
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- Variant where accusative has the allomorph -t for consonants
|
||||||
|
-- Examples: "pénz, bor, orr, szín, lány, kés, dal"
|
||||||
|
endCaseConsAcc : Case -> HarmForms = \c -> case c of {
|
||||||
|
Acc => harm1 "t" ;
|
||||||
|
_ => endCaseCons c
|
||||||
|
} ;
|
||||||
|
|
||||||
-- Variant of case forms when the noun stem ends in vowel.
|
-- Variant of case forms when the noun stem ends in vowel.
|
||||||
endCaseVow : Case -> HarmForms = \c -> case c of {
|
endCaseVow : Case -> HarmForms = \c -> case c of {
|
||||||
Acc => harm1 "t" ;
|
Acc => harm1 "t" ;
|
||||||
@@ -286,12 +302,16 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Function to return a plural allomorph given the stem (e.g. név, almá).
|
-- Function to return a plural allomorph given the stem (e.g. név, almá).
|
||||||
-- TODO: seems to be many "ak" cases, add?
|
pluralAllomorph : (stem : Str) -> Str = pluralAllomorphLowStem False ;
|
||||||
-- Examples: ág, ágy, ár, díj, fal, fog, gyár, hal, has, hát, ház, hold, láz, lyuk, nyak, olaj, oldal, toll, ujj, vonal
|
|
||||||
pluralAllomorph : (stem : Str) -> Str = \stem ->
|
-- Function to return a plural allomorph given lowering stem or not
|
||||||
case vowFinal stem of {
|
-- Examples of lowering stems: ág, ágy, ár, fal, fog, gyár, hal, has, hát, ház, hold, láz, lyuk, nyak, olaj, oldal, toll, ujj, vonal
|
||||||
True => "k" ;
|
-- Examples of lowering stems: férj, fej, hely, fül, könny, könyv, mell, szög
|
||||||
False => harm3 "ok" "ek" "ök" ! getHarm stem
|
pluralAllomorphLowStem : (low : Bool) -> (stem : Str) -> Str = \low,stem ->
|
||||||
|
case <low,vowFinal stem> of {
|
||||||
|
<_,True> => "k" ;
|
||||||
|
<True, _> => harm "ak" "ek" ! getHarm stem ;
|
||||||
|
_ => harm3 "ok" "ek" "ök" ! getHarm stem
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -303,10 +323,14 @@ oper
|
|||||||
mkNounHarm : Harm -> (plural : Str) -> Str -> Noun = mkNounHarmAcc True ;
|
mkNounHarm : Harm -> (plural : Str) -> Str -> Noun = mkNounHarmAcc True ;
|
||||||
|
|
||||||
mkNounHarmAcc : (useAt : Bool) -> Harm -> (plural : Str) -> Str -> Noun = \useAt,h,plural,w ->
|
mkNounHarmAcc : (useAt : Bool) -> Harm -> (plural : Str) -> Str -> Noun = \useAt,h,plural,w ->
|
||||||
let endCaseSg : Case -> HarmForms = case <vowFinal w, useAt> of {
|
let endCaseSg : Case -> HarmForms = case <useAt, w> of {
|
||||||
<True,_> => endCaseVow ;
|
<_,_ + #v> => endCaseVow ;
|
||||||
<False,True> => endCaseConsAccAt ;
|
<_,_ + #v + ("sz"|"z"|"s"|"zs"|"j"
|
||||||
_ => endCaseCons} ;
|
|"ly"|"l"|"r"|"n"|"ny"|"ssz"|"zz"
|
||||||
|
|"ss"|"ll"|"rr"|"nn"|"ns"|"nsz"
|
||||||
|
|"nz")> => endCaseConsAcc ;
|
||||||
|
<True,_> => endCaseConsAccAt ;
|
||||||
|
_ => endCaseCons } ;
|
||||||
endCasePl : Case -> HarmForms = case <plural, useAt> of {
|
endCasePl : Case -> HarmForms = case <plural, useAt> of {
|
||||||
<"ak",_> => endCaseConsAccAt ;
|
<"ak",_> => endCaseConsAccAt ;
|
||||||
<_,True> => endCaseConsAccAt ;
|
<_,True> => endCaseConsAccAt ;
|
||||||
|
|||||||
361
src/hungarian/NounMorphoHunOneArgument.gf
Normal file
361
src/hungarian/NounMorphoHunOneArgument.gf
Normal file
@@ -0,0 +1,361 @@
|
|||||||
|
resource NounMorphoHunOneArgument = ParamHun ** open Prelude, Predef in {
|
||||||
|
|
||||||
|
oper
|
||||||
|
Noun = {s : Number => Case => Str} ;
|
||||||
|
|
||||||
|
-- Paradigm functions
|
||||||
|
-- http://www.cse.chalmers.se/~aarne/articles/smart-preprint.pdf
|
||||||
|
|
||||||
|
-- Words like "alma, kefe, apa, anya, fa":
|
||||||
|
dAlma : Str -> Noun = \alma ->
|
||||||
|
let almá : Str = lengthen alma;
|
||||||
|
|
||||||
|
nAlmá : Noun = mkNoun almá ;
|
||||||
|
in {s = \\n,c => case <n,c> of {
|
||||||
|
-- Singular nominative uses the given form, e.g. "alma" or "kefe"
|
||||||
|
<Sg,Nom> => alma ;
|
||||||
|
|
||||||
|
-- The rest of the forms are formed with the regular constructor,
|
||||||
|
-- using "almá" or "kefé" as the stem.
|
||||||
|
_ => nAlmá.s ! n ! c
|
||||||
|
} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Handles words like "madár, nyár, név, bogár" with shortened stem vowel in plural
|
||||||
|
-- No special <Sg,Sup> case here
|
||||||
|
-- dMadár: "víz" has wovel shortening but "vizek" not "vizik", implement differently?
|
||||||
|
dMadár : Str -> Noun = \madár ->
|
||||||
|
let r = last madár ;
|
||||||
|
madá = init madár ;
|
||||||
|
mada = shorten madá ; -- shortens vowels
|
||||||
|
a = last mada ;
|
||||||
|
a = case a of {
|
||||||
|
"e"|"i" => "e" ;
|
||||||
|
a => a
|
||||||
|
} ;
|
||||||
|
madara = mada + r + a ;
|
||||||
|
nMadara = mkNounHarm (getHarm madara) "k" madara ;
|
||||||
|
nMadár = mkNoun madár ;
|
||||||
|
in {s = \\n,c => case <n,c> of {
|
||||||
|
-- All plural forms and Sg Acc use the "madara"/"neve" stem
|
||||||
|
<Pl,_>|<Sg,Acc> => nMadara.s ! n ! c ;
|
||||||
|
|
||||||
|
-- The rest of the forms are formed with the regular constructor,
|
||||||
|
-- using "madár"/"név" as the stem.
|
||||||
|
_ => nMadár.s ! n ! c
|
||||||
|
|
||||||
|
} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
--Handles words like "ló, lé, kő" which are "lovak, levek, kövek" in plural.
|
||||||
|
-- <Sg,Sup> "lovon" instead of "lón" fixed but that gives the following problems:
|
||||||
|
dLó : Str -> Noun = \ló ->
|
||||||
|
let lo = shorten ló ;
|
||||||
|
lov = lo + "v" ;
|
||||||
|
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 ;
|
||||||
|
lé => getHarm (lé)} ;
|
||||||
|
nLov = mkNounHarm harmonyPlural ak lov ;
|
||||||
|
nLó = mkNoun ló ;
|
||||||
|
in {s = \\n,c => case <n,c> of {
|
||||||
|
|
||||||
|
-- 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.
|
||||||
|
_ => nLó.s ! n ! c
|
||||||
|
|
||||||
|
} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
--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)
|
||||||
|
--<Sg,Sup> "tavon" instead of "tón" case fixed, works automatically with the Sup rules
|
||||||
|
dTó : Str -> Noun = \tó ->
|
||||||
|
let t = init tó ;
|
||||||
|
tav = t + "av" ;
|
||||||
|
nTav = mkNounHarm H_a "ak" tav ;
|
||||||
|
nTó = mkNoun tó ;
|
||||||
|
in {s = \\n,c => case <n,c> of {
|
||||||
|
|
||||||
|
-- All plural forms and Sg Acc use the "tav" stem
|
||||||
|
<Pl,_>|<Sg,Acc>|<Sg,Sup> => 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" which are "gyomrot, majmot, retket" in accusative (wovel dropping base)
|
||||||
|
--More examples: "ajak, bokor, cukor, csokor, eper, fészek, fodor, gödör, haszon, iker, izom, kölyök, köröm, méreg, piszok, sarok, selyem, szeder, szobor, takony, terem, titok, torok, torony, tükör, vödör" ->
|
||||||
|
-- "ajkat, bokrot, cukrot, csokrot, epret, fészket, fodrot, gödröt, hasznot, ikret, izmot, kölyköt, körmet, mérget, piszkot, sarkot, selymet, szedret, szobrot, taknyot, termet, titkot, torkot, tornyot, tükröt, vödröt"
|
||||||
|
--<Sg,Sup> case handled
|
||||||
|
dMajom : Str -> Noun = \majom ->
|
||||||
|
-- Str*Str is syntactic sugar for {p1 : Str ; p2 : Str} ;
|
||||||
|
-- confusing syntax: you can't write let <tako,ny> : Str*Str = …
|
||||||
|
-- it has to be called something else, and then you
|
||||||
|
-- can get "tako" and "ny" with p1, p2.
|
||||||
|
let tako_ny : Str*Str = case majom of {
|
||||||
|
x + dzs@#trigraph => <x,dzs> ;
|
||||||
|
x + zs@#digraph => <x,zs> ;
|
||||||
|
-- ? pattern matches exactly 1 character
|
||||||
|
x + s@? => <x,s> } ;
|
||||||
|
tako = tako_ny.p1 ;
|
||||||
|
ny = tako_ny.p2 ;
|
||||||
|
|
||||||
|
nyo = ny + last tako ;
|
||||||
|
tak = init tako ;
|
||||||
|
taknyo = tak + nyo ;
|
||||||
|
nMajmo = mkNounHarm (getHarm taknyo) "k" taknyo ;
|
||||||
|
nMajom = mkNoun majom ;
|
||||||
|
in {s = \\n,c => case <n,c> of {
|
||||||
|
-- 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.
|
||||||
|
_ => nMajom.s ! n ! c
|
||||||
|
} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
--Handles words like "sátor, álom, alkalom, farok, halom, vászon"
|
||||||
|
-- "sátrat, álmat, alkalmat, farkat, halmat, vásznat"
|
||||||
|
-- (bátor not noun)
|
||||||
|
dFarok : Str -> Noun = \farok ->
|
||||||
|
let k = last farok ;
|
||||||
|
far = init (init farok) ;
|
||||||
|
fark = far + k ;
|
||||||
|
nFark = mkNounHarm (getHarm fark) "ak" fark ;
|
||||||
|
nFarok = mkNoun farok ;
|
||||||
|
in {s = \\n,c => case <n,c> of {
|
||||||
|
-- All plural forms and Sg Acc and Sg Sup use the "fark" stem
|
||||||
|
<Pl,_> | <Sg,Acc> | <Sg, Sup> => nFark.s ! n ! c ;
|
||||||
|
|
||||||
|
-- The rest of the forms are formed with the regular constructor,
|
||||||
|
-- using "farok" as the stem.
|
||||||
|
_ => nFarok.s ! n ! c
|
||||||
|
} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- More words not covered by current paradigms:
|
||||||
|
-- https://cl.lingfil.uu.se/~bea/publ/megyesi-hungarian.pdf
|
||||||
|
-- TODO: falu ~ falva-k (v-case)
|
||||||
|
-- TODO: teher ~ terhet (consonant-crossing)
|
||||||
|
-- TODO: do we need possessive forms? e.g. fiú ~ fia{m,d,tok}
|
||||||
|
|
||||||
|
-- regNoun is a /smart paradigm/: it takes one or a couple of forms,
|
||||||
|
-- and decides which (non-smart) paradigm is the most likely to match.
|
||||||
|
regNoun : Str -> Noun = \sgnom -> case sgnom of {
|
||||||
|
_ + "a"|"e" => dAlma sgnom ;
|
||||||
|
(? | #digraph | #trigraph) + ("á"|"é") + (? | #digraph | #trigraph) => mkNoun sgnom ;
|
||||||
|
_ + ("á"|"é") + ? => dMadár sgnom ;
|
||||||
|
_ + "é"|"ő"|"ű" => dLó sgnom ;
|
||||||
|
_ + "ó" => dTó sgnom ;
|
||||||
|
_ + "alom" => dFarok sgnom ;
|
||||||
|
_ + "elem" => dMajom sgnom ;
|
||||||
|
|
||||||
|
-- TODO: more non-smart paradigms + more pattern matching
|
||||||
|
-- TODO: smart paradigms with >1 form. Which forms are the most descriptive?
|
||||||
|
|
||||||
|
_ => mkNoun sgnom -- Fall back to the regular paradigm
|
||||||
|
} ;
|
||||||
|
|
||||||
|
--TODO: Special cases (enter these words manually to not complicate the paradigms):
|
||||||
|
--dTó: szó special case which fulfills the plural cases but not the <Sg,Acc> or <Sg,Sup> case ("szót" not "szavat")
|
||||||
|
--dLó: special case <Sg,Sup> "lén" not "leven"
|
||||||
|
--dLó: <Sg,Sup> also "kövön" not "köven", but that is due to H_e, which is needed for "köveket" so it's conflicting
|
||||||
|
--endCaseConsAcc: "falat, fület, várat, könnyet",
|
||||||
|
--also special in superessive case "falon, fülek, vizen"
|
||||||
|
--pattern matching in regNoun: one-syllable words that in fact belong to dMadár: "nyár, név"
|
||||||
|
---------------------------------------------------------------------------------------------
|
||||||
|
-- Following code by EG in 2009 (?), comments and some additions by IL 2020
|
||||||
|
|
||||||
|
param
|
||||||
|
-- Harmony types
|
||||||
|
Harm = H_a | H_e | H_o ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
|
||||||
|
-- Vowels as a pattern.
|
||||||
|
v : pattern Str = #("a" | "e" | "i" | "o" | "u" | "ö" | "ü" |
|
||||||
|
"á" | "é" | "í" | "ó" | "ú" | "ő" | "ű") ;
|
||||||
|
-- Digraphs
|
||||||
|
digraph : pattern Str = #("cs"|"dz"|"gy"|"ly"|"ny"|"sz"|"ty"|"zs") ;
|
||||||
|
|
||||||
|
-- Trigraphs
|
||||||
|
trigraph : pattern Str = #("dzs") ;
|
||||||
|
|
||||||
|
duplicateLast : Str -> Str = \str -> case str of {
|
||||||
|
x + "dzs" => x + "ddzs" ;
|
||||||
|
x + "ny" => x + "nny" ; -- takony : takonnyal
|
||||||
|
x + "cs" => x + "ccs" ;
|
||||||
|
x + "dz" => x + "ddz" ;
|
||||||
|
x + "gy" => x + "ggy" ;
|
||||||
|
x + "ly" => x + "lly" ;
|
||||||
|
x + "sz" => x + "ssz" ;
|
||||||
|
x + "ty" => x + "tty" ;
|
||||||
|
x + "zs" => x + "zzs" ;
|
||||||
|
|
||||||
|
-- Base cacse: just duplicate the single letter
|
||||||
|
x + s@? => x + s + s } ;
|
||||||
|
|
||||||
|
-- Function to test if a string ends in a vowel
|
||||||
|
vowFinal : Str -> Bool = \str ->
|
||||||
|
case str of {
|
||||||
|
_ + #v => True ; -- Matching a string against a pattern.
|
||||||
|
_ => False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
lengthen : Str -> Str = \str -> case str of {
|
||||||
|
x + "a" => x + "á" ;
|
||||||
|
x + "e" => x + "é" ;
|
||||||
|
x + "i" => x + "í" ;
|
||||||
|
x + "o" => x + "ó" ;
|
||||||
|
x + "u" => x + "ú" ;
|
||||||
|
x + "ö" => x + "ő" ;
|
||||||
|
x + "ü" => x + "ű" ;
|
||||||
|
_ => Predef.error "Lengthening not applicable to" ++ str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
shorten : Str -> Str = \str -> case str of {
|
||||||
|
x + "á" => x + "a" ;
|
||||||
|
x + "é" => x + "e" ;
|
||||||
|
x + "í" => x + "i" ;
|
||||||
|
x + "ó" => x + "o" ;
|
||||||
|
x + "ú" => x + "u" ;
|
||||||
|
x + "ő" => x + "ö" ;
|
||||||
|
x + "ű" => x + "ü" ;
|
||||||
|
_ => Predef.error "Shortening not applicable to" ++ str
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Function to get a harmony from a string
|
||||||
|
getHarm : Str -> Harm = \s -> case s of {
|
||||||
|
_ + ("a" | "á" | "o" | "ó" | "u" | "ú") + _ => H_a ;
|
||||||
|
_ + ("ö" | "ő" | "ü") + _ => H_o ;
|
||||||
|
_ => H_e
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Used as a table of allomorphs for a give case.
|
||||||
|
HarmForms : Type = Harm => Str ;
|
||||||
|
|
||||||
|
-- Functions for constructing a HarmForms table.
|
||||||
|
harm3 : Str -> Str -> Str -> HarmForms = \a,e,o -> table {
|
||||||
|
H_a => a ;
|
||||||
|
H_e => e ;
|
||||||
|
H_o => o
|
||||||
|
} ;
|
||||||
|
harm : Str -> Str -> HarmForms = \a,e -> harm3 a e e ;
|
||||||
|
harm1 : Str -> HarmForms = \i -> harm i i ;
|
||||||
|
|
||||||
|
-- Variant of case forms when the noun stem ends in consonant.
|
||||||
|
endCaseCons : Case -> HarmForms = \c -> case c of {
|
||||||
|
Nom => harm1 [] ;
|
||||||
|
Acc => harm3 "ot" "et" "öt" ;
|
||||||
|
Dat => harm "nak" "nek" ;
|
||||||
|
Ill => harm "ba" "be" ;
|
||||||
|
Ine => harm "ban" "ben" ;
|
||||||
|
Ela => harm "ból" "ből" ;
|
||||||
|
All => harm3 "hoz" "hez" "höz" ;
|
||||||
|
Ade => harm "nál" "nél" ;
|
||||||
|
Abl => harm "tól" "től" ;
|
||||||
|
Sub => harm "ra" "re" ;
|
||||||
|
Sup => harm3 "on" "en" "ön" ;
|
||||||
|
Del => harm "ról" "ről" ;
|
||||||
|
Cau => harm1 "ért" ;
|
||||||
|
Ins => harm "al" "el" ;
|
||||||
|
Tra => harm "á" "é"
|
||||||
|
-- Ess => harm "stul" "stül" ; -- Essive-modal 'with <the noun> and its parts'
|
||||||
|
-- Ter => harm1 "ig" ; -- Terminative 'as far as <the noun>'
|
||||||
|
-- For => harm1 "ként" ; -- Formal 'as <the noun>'
|
||||||
|
-- Tem => harm1 "kor" -- Temporal 'at <numeral>'. Only used with numerals.
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Variant where accusative has the allomorph -at
|
||||||
|
endCaseConsAccAt : Case -> HarmForms = \c -> case c of {
|
||||||
|
Acc => harm3 "at" "et" "öt" ;
|
||||||
|
_ => endCaseCons c
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Variant where accusative has the allomorph -t for consonants
|
||||||
|
-- Examples: "pénz, bor, orr, szín, lány, kés, dal"
|
||||||
|
endCaseConsAcc : Case -> HarmForms = \c -> case c of {
|
||||||
|
Acc => harm1 "t" ;
|
||||||
|
_ => endCaseCons c
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Variant of case forms when the noun stem ends in vowel.
|
||||||
|
endCaseVow : Case -> HarmForms = \c -> case c of {
|
||||||
|
Acc => harm1 "t" ;
|
||||||
|
Sup => harm1 "n" ;
|
||||||
|
Ins => harm "val" "vel" ;
|
||||||
|
Tra => harm "vá" "vé" ;
|
||||||
|
|
||||||
|
-- Other forms are shared with endCaseCons.
|
||||||
|
_ => endCaseCons c
|
||||||
|
} ;
|
||||||
|
|
||||||
|
-- Function to return a plural allomorph given the stem (e.g. név, almá).
|
||||||
|
pluralAllomorph : (stem : Str) -> Str = pluralAllomorphLowStem False ;
|
||||||
|
|
||||||
|
-- Function to return a plural allomorph given lowering stem or not
|
||||||
|
-- Examples of lowering stems: ág, ágy, ár, fal, fog, gyár, hal, has, hát, ház, hold, láz, lyuk, nyak, olaj, oldal, toll, ujj, vonal
|
||||||
|
-- Examples of lowering stems: férj, fej, hely, fül, könny, könyv, mell, szög
|
||||||
|
pluralAllomorphLowStem : (low : Bool) -> (stem : Str) -> Str = \low,stem ->
|
||||||
|
case <low,vowFinal stem> of {
|
||||||
|
<_,True> => "k" ;
|
||||||
|
<True, _> => harm "ak" "ek" ! getHarm stem ;
|
||||||
|
_ => harm3 "ok" "ek" "ök" ! getHarm stem
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
-- Harmony and plural allomorph read from the singular nominative
|
||||||
|
mkNoun : Str -> Noun = \w ->
|
||||||
|
mkNounHarm (getHarm w) (pluralAllomorph w) w ;
|
||||||
|
|
||||||
|
-- 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 <useAt, w> of {
|
||||||
|
<_,_ + #v> => endCaseVow ;
|
||||||
|
<_,_ + #v + ("sz"|"z"|"s"|"zs"|"j"
|
||||||
|
|"ly"|"l"|"r"|"n"|"ny"|"ssz"|"zz"
|
||||||
|
|"ss"|"ll"|"rr"|"nn"|"ns"|"nsz"
|
||||||
|
|"nz")> => endCaseConsAcc ;
|
||||||
|
<True,_> => endCaseConsAccAt ;
|
||||||
|
_ => endCaseCons } ;
|
||||||
|
endCasePl : Case -> HarmForms = case <plural, useAt> of {
|
||||||
|
<"ak",_> => endCaseConsAccAt ;
|
||||||
|
<_,True> => endCaseConsAccAt ;
|
||||||
|
_ => endCaseCons } ;
|
||||||
|
-- Last consonant doubles before instrumental and translative
|
||||||
|
duplConsStem : Str = case vowFinal w of {
|
||||||
|
True => w ;
|
||||||
|
False => duplicateLast w } ;
|
||||||
|
|
||||||
|
-- Noun is {s : Number => Case => Str}, we construct nested tables.
|
||||||
|
in {s = table {
|
||||||
|
Sg => table {
|
||||||
|
-- Double the last letter (if consonant) before Ins, Tra
|
||||||
|
c@(Ins|Tra) => duplConsStem + endCaseSg c ! h ;
|
||||||
|
c@_ => w + endCaseSg c ! h } ;
|
||||||
|
|
||||||
|
Pl => table {
|
||||||
|
-- Double the plural k before Ins, Tra
|
||||||
|
c@(Ins|Tra) => w + plural + "k" + endCasePl c ! h ;
|
||||||
|
|
||||||
|
-- endCaseCons, because we only use -k as plural morpheme.
|
||||||
|
-- If we add possessive forms with allomorph -i, then revise.
|
||||||
|
c@_ => w + plural + endCasePl c ! h }
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
resource ParadigmsHun = open CatHun, ResHun, ParamHun, NounHun, Prelude in {
|
resource ParadigmsHun = open
|
||||||
|
CatHun, ResHun, ParamHun, NounHun, Prelude in {
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
@@ -17,8 +18,8 @@ oper
|
|||||||
--2 Nouns
|
--2 Nouns
|
||||||
|
|
||||||
mkN : overload {
|
mkN : overload {
|
||||||
mkN : (sgnom : Str) -> N ; -- Predictable nouns
|
mkN : (sgnom : Str) -> N ; -- Predictable nouns from singular nominative. Accusative vowel is o for back harmony. No stem lowering (TODO better explanation/examples)
|
||||||
mkN : (madár : Str) -> (ak : Str) -> N ; -- Noun with unpredictable plural allomorph
|
mkN : (sgnom : Str) -> (sggen : Str) -> N ; -- Singular nominative and accusative. Takes care of cases like … TODO example
|
||||||
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
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -37,7 +38,8 @@ oper
|
|||||||
|
|
||||||
mkA2 : overload {
|
mkA2 : overload {
|
||||||
mkA2 : Str -> Prep -> A2 ;
|
mkA2 : Str -> Prep -> A2 ;
|
||||||
mkA2 : Str -> Case -> A2
|
mkA2 : Str -> Case -> A2 ;
|
||||||
|
mkA2 : A -> Prep -> A2 ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--2 Verbs
|
--2 Verbs
|
||||||
@@ -85,6 +87,9 @@ oper
|
|||||||
mkPrep : Str -> Case -> Prep ; -- Postposition and case
|
mkPrep : Str -> Case -> Prep ; -- Postposition and case
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
prePrep : Str -> Case -> Prep -- Preposition
|
||||||
|
= \s,c -> lin Prep {pr=s ; s=[] ; c=c} ;
|
||||||
|
|
||||||
casePrep : Case -> Prep ; -- No postposition, only case
|
casePrep : Case -> Prep ; -- No postposition, only case
|
||||||
|
|
||||||
-- mkConj : (_,_ : Str) -> Number -> Conj = \s1,s2,num ->
|
-- mkConj : (_,_ : Str) -> Number -> Conj = \s1,s2,num ->
|
||||||
@@ -118,7 +123,7 @@ oper
|
|||||||
\s -> lin N (regNoun s) ;
|
\s -> lin N (regNoun s) ;
|
||||||
|
|
||||||
mkN : Str -> Str -> N =
|
mkN : Str -> Str -> N =
|
||||||
\s,ak -> lin N (mkNounHarm (getHarm s) ak s) ;
|
\n,a-> lin N (regNounNomAcc n a) ;
|
||||||
|
|
||||||
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) ;
|
||||||
@@ -146,10 +151,13 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkA2 = overload {
|
mkA2 = overload {
|
||||||
|
mkA2 : A -> A2 = \a -> a ** {c2 = casePrep Nom} ;
|
||||||
mkA2 : Str -> Prep -> A2 = \s,p ->
|
mkA2 : Str -> Prep -> A2 = \s,p ->
|
||||||
lin A2 {s = (mkAdj s).s ; c2 = p} ;
|
lin A2 {s = (mkAdj s).s ; c2 = p} ;
|
||||||
mkA2 : Str -> Case -> A2 = \s,c ->
|
mkA2 : Str -> Case -> A2 = \s,c ->
|
||||||
lin A2 {s = (mkAdj s).s ; c2 = {s = [] ; c = c}}
|
lin A2 {s = (mkAdj s).s ; c2 = casePrep c} ;
|
||||||
|
mkA2 : A -> Prep -> A2 = \a,p ->
|
||||||
|
lin A2 (a ** {c2 = p}) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkV = overload {
|
mkV = overload {
|
||||||
|
|||||||
@@ -102,14 +102,18 @@ oper
|
|||||||
} ;
|
} ;
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Postpositions
|
-- Adpositions
|
||||||
|
|
||||||
-- TODO: personal suffixes, e.g. felettem, általam, not *felett/által én
|
-- TODO: personal suffixes, e.g. felettem, általam, not *felett/által én
|
||||||
Postposition : Type = {s : Str ; c : Case} ;
|
Adposition : Type = {
|
||||||
|
pr : Str ; -- Preposition
|
||||||
|
s : Str ; -- Postposition
|
||||||
|
c : Case ;
|
||||||
|
} ;
|
||||||
|
|
||||||
mkPrep : Str -> Postposition = \str -> {s=str ; c=Nom} ;
|
mkPrep : Str -> Adposition = \str -> {s=str ; c=Nom ; pr=[]} ;
|
||||||
|
|
||||||
emptyPP : Postposition = mkPrep [] ;
|
emptyAdp : Adposition = mkPrep [] ;
|
||||||
|
|
||||||
------------------
|
------------------
|
||||||
-- Conj
|
-- Conj
|
||||||
@@ -144,7 +148,7 @@ oper
|
|||||||
s : Degree => Number => Str
|
s : Degree => Number => Str
|
||||||
} ;
|
} ;
|
||||||
Adjective2 : Type = Adjective ** {
|
Adjective2 : Type = Adjective ** {
|
||||||
c2 : Postposition ;
|
c2 : Adposition ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkAdj : Str -> Adjective = \sg -> {
|
mkAdj : Str -> Adjective = \sg -> {
|
||||||
@@ -274,6 +278,10 @@ oper
|
|||||||
"vannak"
|
"vannak"
|
||||||
"lenni" ;
|
"lenni" ;
|
||||||
|
|
||||||
|
megvan : Verb = copula ** {
|
||||||
|
s = \\vf => "meg" + copula.s ! vf ;
|
||||||
|
} ;
|
||||||
|
|
||||||
------------------
|
------------------
|
||||||
-- VP
|
-- VP
|
||||||
|
|
||||||
@@ -326,9 +334,14 @@ oper
|
|||||||
Sentence : Type = {s : Str} ;
|
Sentence : Type = {s : Str} ;
|
||||||
|
|
||||||
predVP : NounPhrase -> VerbPhrase -> ClSlash = \np,vp -> vp ** {
|
predVP : NounPhrase -> VerbPhrase -> ClSlash = \np,vp -> vp ** {
|
||||||
s = let rel : RClause = relVP' (np2rp np) vp ;
|
s = \\t,a,p => let subjcase : Case = case vp.sc of {
|
||||||
in \\t,a,p => rel.s ! t ! a ! p ! np.agr.p2 ! sc2case vp.sc
|
SCNom => Nom ;
|
||||||
++ np.empty ; -- standard trick for prodrop+metavariable problem
|
SCDat => Dat }
|
||||||
|
in np.s ! subjcase
|
||||||
|
++ vp.s ! agr2vf np.agr
|
||||||
|
++ vp.obj
|
||||||
|
++ vp.adv
|
||||||
|
++ np.empty -- standard trick for prodrop+metavariable problem
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- Relative
|
-- Relative
|
||||||
@@ -344,12 +357,12 @@ oper
|
|||||||
|
|
||||||
relVP' : RP ** {agr : Person*Number} -> VerbPhrase -> RClause = \rp,vp -> {
|
relVP' : RP ** {agr : Person*Number} -> VerbPhrase -> RClause = \rp,vp -> {
|
||||||
s = \\t,a,p,n,c => let subjcase : Case = case vp.sc of {
|
s = \\t,a,p,n,c => let subjcase : Case = case vp.sc of {
|
||||||
SCNom => c ;
|
SCNom => Nom ;
|
||||||
SCDat => Dat }
|
SCDat => Dat }
|
||||||
in rp.s ! n ! subjcase
|
in rp.s ! n ! subjcase
|
||||||
++ vp.s ! VFin rp.agr.p1 n -- variable by number
|
|
||||||
++ vp.obj
|
++ vp.obj
|
||||||
++ vp.adv
|
++ vp.adv
|
||||||
|
++ vp.s ! VFin rp.agr.p1 n -- variable by number
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
relSlash : RP -> ClSlash -> RClause = \rp,cls -> {
|
relSlash : RP -> ClSlash -> RClause = \rp,cls -> {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ lin
|
|||||||
|
|
||||||
--2 Clauses missing object noun phrases
|
--2 Clauses missing object noun phrases
|
||||||
-- : NP -> VPSlash -> ClSlash ;
|
-- : NP -> VPSlash -> ClSlash ;
|
||||||
SlashVP np vps = predVP np (vps ** {s = vps.s ! Def ; obj = []}) ;
|
SlashVP np vps = predVP np (vps ** {s = vps.s ! Indef ; obj = []}) ;
|
||||||
{-
|
{-
|
||||||
-- : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today
|
-- : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today
|
||||||
AdvSlash cls adv = cls ** insertAdv adv cls ;
|
AdvSlash cls adv = cls ** insertAdv adv cls ;
|
||||||
|
|||||||
@@ -65,8 +65,8 @@ lin few_Det = mkDet "kevés" Def Sg ; -- TODO check
|
|||||||
lin many_Det = mkDet "sok" Def Sg ; -- TODO check
|
lin many_Det = mkDet "sok" Def Sg ; -- TODO check
|
||||||
--lin much_Det =
|
--lin much_Det =
|
||||||
|
|
||||||
lin somePl_Det = mkDet "némely" Indef Pl ;
|
lin somePl_Det = mkDet "néhány" Indef Sg ;
|
||||||
lin someSg_Det = mkDet "némely" Indef Sg ;
|
lin someSg_Det = mkDet "néhány" Indef Sg ;
|
||||||
--lin no_Quant =
|
--lin no_Quant =
|
||||||
|
|
||||||
lin that_Quant = mkQuant "az" "az" ;
|
lin that_Quant = mkQuant "az" "az" ;
|
||||||
@@ -215,6 +215,11 @@ lin yes_Utt = ss "igen" ;
|
|||||||
-- Verb
|
-- Verb
|
||||||
|
|
||||||
lin have_V2 = datV2 copula ;
|
lin have_V2 = datV2 copula ;
|
||||||
|
-- uncomment if prefer def obj with megvan
|
||||||
|
-- ** {
|
||||||
|
-- s = table {Indef => copula.s } ;
|
||||||
|
-- - Def => megvan.s } ;
|
||||||
|
-- } ;
|
||||||
{-lin can8know_VV = can_VV ; -- can (capacity)
|
{-lin can8know_VV = can_VV ; -- can (capacity)
|
||||||
lin can_VV = mkVV "" ; -- can (possibility)
|
lin can_VV = mkVV "" ; -- can (possibility)
|
||||||
lin must_VV = mkVV "" ;
|
lin must_VV = mkVV "" ;
|
||||||
|
|||||||
@@ -23,12 +23,12 @@ LangHun: én pirosabb vagyok nálad
|
|||||||
------------------
|
------------------
|
||||||
-- LangEng: I am reddest
|
-- LangEng: I am reddest
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseComp (CompAP (AdjOrd (OrdSuperl red_A))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseComp (CompAP (AdjOrd (OrdSuperl red_A))))))) NoVoc
|
||||||
LangHun: én legpirosabb vagyok
|
LangHun: én vagyok legpirosabb
|
||||||
|
|
||||||
-- LangEng: I am the reddest
|
-- LangEng: I am the reddest
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseComp (CompNP (DetNP (DetQuantOrd DefArt NumSg (OrdSuperl red_A)))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseComp (CompNP (DetNP (DetQuantOrd DefArt NumSg (OrdSuperl red_A)))))))) NoVoc
|
||||||
LangHun: én a legpirosabb vagyok
|
LangHun: én vagyok a legpirosabb
|
||||||
|
|
||||||
-- !! I suspect this is nonsense
|
-- It works!
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseComp (CompNP (DetNP (DetQuantOrd DefArt NumPl (OrdSuperl red_A)))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseComp (CompNP (DetNP (DetQuantOrd DefArt NumPl (OrdSuperl red_A)))))))) NoVoc
|
||||||
LangHun: én a legpirosabbok vagyok
|
LangHun: én a legpirosabbok vagyok
|
||||||
|
|||||||
@@ -1,7 +1,17 @@
|
|||||||
-- LangEng: I have a cat
|
-- LangEng: I have a cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N)))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N)))))) NoVoc
|
||||||
LangHun: nekem van egy macska
|
LangHun: nekem van egy macskám
|
||||||
|
|
||||||
-- LangEng: I have the cat
|
-- LangEng: I have the cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N)))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N)))))) NoVoc
|
||||||
LangHun: nekem van a macska
|
LangHun: nekem megvan a macska
|
||||||
|
|
||||||
|
--In this case we don't have to use plural
|
||||||
|
-- LangEng: I have many cats
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN many_Det (UseN cat_N)))))) NoVoc
|
||||||
|
LangHun: nekem van sok macskám
|
||||||
|
|
||||||
|
-- LangEng: I have some cats
|
||||||
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN somePl_Det (UseN cat_N)))))) NoVoc
|
||||||
|
LangHun: nekem van néhány macskám
|
||||||
|
-- "néhány" better translation than "némely"
|
||||||
|
|||||||
@@ -38,10 +38,10 @@ LangHun: a sörökhöz
|
|||||||
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumPl) (UseN beer_N))
|
Lang: PrepNP under_Prep (DetCN (DetQuant DefArt NumPl) (UseN beer_N))
|
||||||
LangHun: a sörök alatt
|
LangHun: a sörök alatt
|
||||||
|
|
||||||
--látom not látok
|
--látom not látok
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN beer_N)))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN beer_N)))))) NoVoc
|
||||||
LangEng: I see the beer
|
LangEng: I see the beer
|
||||||
LangHun: én látom a söröt
|
LangHun: én látom a sört
|
||||||
|
|
||||||
--söröket not sörököt
|
--söröket not sörököt
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumPl) (UseN beer_N)))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumPl) (UseN beer_N)))))) NoVoc
|
||||||
|
|||||||
@@ -2,40 +2,43 @@
|
|||||||
-- These need to be correct --
|
-- These need to be correct --
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
|
--"ami" instead of "amit" for most examples
|
||||||
|
|
||||||
-- LangEng: I see a man that flies
|
-- LangEng: I see a man that flies
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))))))))) NoVoc
|
||||||
LangHun: én látok egy férfit amit repül
|
LangHun: én látok egy férfit ami repül
|
||||||
|
|
||||||
-- LangEng: I see the man that flies
|
-- LangEng: I see the man that flies
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))))))))) NoVoc
|
||||||
LangHun: én látom a férfit amit repül
|
LangHun: én látom a férfit ami repül
|
||||||
|
|
||||||
-- LangEng: I see the man that sees a cat
|
-- LangEng: I see the man that sees a cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
||||||
LangHun: én látom a férfit amit lát egy macskát
|
LangHun: én látom a férfit ami egy macskát lát
|
||||||
|
|
||||||
-- LangEng: I see the man that sees the cat
|
-- LangEng: I see the man that sees the cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
||||||
LangHun: én látom a férfit amit látja a macskát
|
LangHun: én látom a férfit ami a macskát látja
|
||||||
|
|
||||||
-- LangEng: I see the man that has a cat
|
-- LangEng: I see the man that has a cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
||||||
LangHun: én látom a férfit aminek van egy macska
|
LangHun: én látom a férfit aminek egy macskája van
|
||||||
|
|
||||||
-- LangEng: I see the man that has the cat
|
-- LangEng: I see the man that has the cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))))))))) NoVoc
|
||||||
LangHun: én látom a férfit aminek van a macska
|
LangHun: én látom a férfit aminek megvan a macska
|
||||||
|
-- vet inte riktigt hur jag ska tänka med "the cat", tyckte det kändes mer rätt med "meg-" konstruktionen
|
||||||
|
|
||||||
-- LangEng: I see the cat that flies and that is red
|
-- LangEng: I see the cat that flies and that is red
|
||||||
-- Do we need copula in "is red" or is it still fine without?
|
-- Do we need copula in "is red" or is it still fine without?
|
||||||
-- This constructor repeats amit, we have other constructors that don't.
|
-- This constructor repeats amit, we have other constructors that don't. I think we don't need it
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN cat_N) (ConjRS and_Conj (BaseRS (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseComp (CompAP (PositA red_A))))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN cat_N) (ConjRS and_Conj (BaseRS (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseComp (CompAP (PositA red_A))))))))))))) NoVoc
|
||||||
LangHun: én látom a macskát amit repül és amit piros
|
LangHun: én látom a macskát ami repül és piros
|
||||||
|
--skulle dock byta plats på "piros" och "repül"
|
||||||
|
|
||||||
-- LangEng: I see the man that flies and that has a cat
|
-- LangEng: I see the man that flies and that has a cat
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (ConjRS and_Conj (BaseRS (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))))))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (ConjRS and_Conj (BaseRS (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (UseV fly_V))) (UseRCl (TTAnt TPres ASimul) PPos (RelVP IdRP (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))))))))))))) NoVoc
|
||||||
LangHun: én látom a férfit amit repül és aminek van egy macska
|
LangHun: én látom a férfit ami repül és aminek egy macskája van
|
||||||
|
|
||||||
|
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------------
|
||||||
@@ -44,13 +47,14 @@ LangHun: én látom a férfit amit repül és aminek van egy macska
|
|||||||
|
|
||||||
-- LangEng: I see the man that the cat sees
|
-- LangEng: I see the man that the cat sees
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (SlashV2a see_V2)))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (SlashV2a see_V2)))))))))) NoVoc
|
||||||
LangHun: én látom a férfit amit a macska látja
|
LangHun: én látom a férfit amit a macska lát
|
||||||
|
|
||||||
-- LangEng: I see a man that the cat sees
|
-- LangEng: I see a man that the cat sees
|
||||||
-- Should this be "amit a macska lát"?
|
-- Should this be "amit a macska lát"? Yes
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (SlashV2a see_V2)))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (SlashV2a see_V2)))))))))) NoVoc
|
||||||
LangHun: én látok egy férfit amit a macska látja
|
LangHun: én látok egy férfit amit a macska lát
|
||||||
|
|
||||||
|
--These last cases not corrected due to "van" confusion
|
||||||
-- LangEng: I see a cat that the man has
|
-- LangEng: I see a cat that the man has
|
||||||
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (SlashV2a have_V2)))))))))) NoVoc
|
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (RelCN (UseN cat_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (SlashV2a have_V2)))))))))) NoVoc
|
||||||
LangHun: én látok egy macskát amit a férfinak van
|
LangHun: én látok egy macskát amit a férfinak van
|
||||||
|
|||||||
Reference in New Issue
Block a user