Merge pull request #315 from inariksit/hungarian

Hungarian
This commit is contained in:
Inari Listenmaa
2020-04-19 21:35:21 +02:00
committed by GitHub
15 changed files with 736 additions and 310 deletions

View File

@@ -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.

View File

@@ -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 ;

View File

@@ -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

View File

@@ -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 "" ;
-- lin grammar_N = mkN "" ; lin grammar_N = mkN "nyelvtan" ;
-- lin grass_N = mkN "" ; lin grass_N = mkN "" ;
-- 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 "" ;
-- 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 "" ;
-- 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 "" ;
-- 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" ;
} }

View File

@@ -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> ;
} ; } ;

View File

@@ -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,9 +323,13 @@ 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"
|"ly"|"l"|"r"|"n"|"ny"|"ssz"|"zz"
|"ss"|"ll"|"rr"|"nn"|"ns"|"nsz"
|"nz")> => endCaseConsAcc ;
<True,_> => endCaseConsAccAt ;
_ => endCaseCons } ; _ => endCaseCons } ;
endCasePl : Case -> HarmForms = case <plural, useAt> of { endCasePl : Case -> HarmForms = case <plural, useAt> of {
<"ak",_> => endCaseConsAccAt ; <"ak",_> => endCaseConsAccAt ;

View 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 }
}
} ;
}

View File

@@ -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 {

View File

@@ -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 -> {

View File

@@ -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 ;

View File

@@ -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 "" ;

View File

@@ -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

View File

@@ -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"

View File

@@ -41,7 +41,7 @@ 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

View File

@@ -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