From c168b6c489f45c2d7d1f2e366957fe277c040ed2 Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 7 Mar 2006 10:59:39 +0000 Subject: [PATCH] changed regN to be always of type Str -> N --- examples/bronzeage/SwadeshFre.gf | 120 +++++------ examples/bronzeage/SwadeshNor.gf | 2 + lib/resource-1.0/french/LexiconFre.gf | 238 ++++++++++----------- lib/resource-1.0/french/ParadigmsFre.gf | 21 +- lib/resource-1.0/norwegian/LexiconNor.gf | 128 +++++------ lib/resource-1.0/norwegian/ParadigmsNor.gf | 29 ++- lib/resource-1.0/swedish/LexiconSwe.gf | 124 +++++------ lib/resource-1.0/swedish/ParadigmsSwe.gf | 23 +- 8 files changed, 363 insertions(+), 322 deletions(-) diff --git a/examples/bronzeage/SwadeshFre.gf b/examples/bronzeage/SwadeshFre.gf index 82f26f84e..63a418830 100644 --- a/examples/bronzeage/SwadeshFre.gf +++ b/examples/bronzeage/SwadeshFre.gf @@ -112,90 +112,90 @@ concrete SwadeshFre of Swadesh = CatFre -- Nouns - animal_N = regN "animal" masculine ; - ashes_N = regN "cendre" masculine ; - back_N = regN "dos" masculine ; - bark_N = regN "écorce" feminine ; - belly_N = regN "ventre" masculine ; + animal_N = regN "animal" ; + ashes_N = regGenN "cendre" masculine ; + back_N = regN "dos" ; + bark_N = regN "écorce" ; + belly_N = regGenN "ventre" masculine ; bird_N = bird_N; - blood_N = regN "sang" masculine ; - bone_N = regN "os" masculine ; - breast_N = regN "sein" masculine ; --- poitrine + blood_N = regN "sang" ; + bone_N = regN "os" ; + breast_N = regN "sein" ; --- poitrine child_N = child_N ; - cloud_N = regN "nuage" masculine ; - day_N = regN "jour" masculine ; + cloud_N = regGenN "nuage" masculine ; + day_N = regN "jour" ; dog_N = dog_N ; - dust_N = regN "poussière" feminine ; - ear_N = regN "oreille" feminine ; - earth_N = regN "terre" feminine ; - egg_N = regN "oeuf" masculine ; + dust_N = regN "poussière" ; + ear_N = regN "oreille" ; + earth_N = regN "terre" ; + egg_N = regN "oeuf" ; eye_N = mkN "oeil" "yeux" masculine ; - fat_N = regN "graisse" feminine ; + fat_N = regN "graisse" ; father_N = UseN2 father_N2 ; - feather_N = regN "plume" feminine ; - fingernail_N = regN "ongle" masculine ; - fire_N = regN "feu" masculine ; + feather_N = regN "plume" ; + fingernail_N = regGenN "ongle" masculine ; + fire_N = regN "feu" ; fish_N = fish_N ; - flower_N = regN "fleur" feminine ; - fog_N = regN "brouillard" masculine ; - foot_N = regN "pied" masculine ; - forest_N = regN "forêt" feminine ; + flower_N = regGenN "fleur" feminine ; + fog_N = regN "brouillard" ; + foot_N = regN "pied" ; + forest_N = regGenN "forêt" feminine ; fruit_N = fruit_N ; - grass_N = regN "herbe" feminine ; - guts_N = regN "entraille" feminine ; - hair_N = regN "cheveu" masculine ; - hand_N = regN "main" feminine ; - head_N = regN "tête" feminine ; - heart_N = regN "coeur" masculine ; - horn_N = regN "corne" masculine ; - husband_N = regN "mari" masculine ; - ice_N = regN "glace" feminine ; - knee_N = regN "genou" masculine ; + grass_N = regN "herbe" ; + guts_N = regN "entraille" ; + hair_N = regN "cheveu" ; + hand_N = regGenN "main" feminine ; + head_N = regN "tête" ; + heart_N = regN "coeur" ; + horn_N = regGenN "corne" masculine ; + husband_N = regN "mari" ; + ice_N = regN "glace" ; + knee_N = regN "genou" ; lake_N = lake_N ; - leaf_N = regN "feuille" feminine ; - leg_N = regN "jambe" feminine ; - liver_N = regN "foie" masculine ; - louse_N = regN "pou" masculine ; + leaf_N = regN "feuille" ; + leg_N = regN "jambe" ; + liver_N = regGenN "foie" masculine ; + louse_N = regN "pou" ; man_N = man_N ; meat_N = meat_N ; moon_N = moon_N ; mother_N = UseN2 mother_N2 ; mountain_N = mountain_N ; - mouth_N = regN "bouche" feminine ; - name_N = regN "nom" masculine ; + mouth_N = regN "bouche" ; + name_N = regN "nom" ; neck_N = mkN "cou" "cous" masculine ; - night_N = regN "nuit" feminine ; - nose_N = regN "nez" masculine ; - person_N = regN "personne" feminine ; - rain_N = regN "pluie" feminine ; + night_N = regGenN "nuit" feminine ; + nose_N = regN "nez" ; + person_N = regN "personne" ; + rain_N = regN "pluie" ; river_N = river_N ; - road_N = regN "route" feminine ; - root_N = regN "racine" feminine ; - rope_N = regN "corde" feminine ; - salt_N = regN "sel" masculine ; - sand_N = regN "sable" masculine ; + road_N = regN "route" ; + root_N = regN "racine" ; + rope_N = regN "corde" ; + salt_N = regN "sel" ; + sand_N = regGenN "sable" masculine ; sea_N = sea_N ; - seed_N = regN "graine" feminine ; - skin_N = regN "peau" masculine ; + seed_N = regN "graine" ; + skin_N = regN "peau" ; sky_N = mkN "ciel" "cieux" masculine ; - smoke_N = regN "fumée" feminine ; + smoke_N = regN "fumée" ; snake_N = snake_N ; - snow_N = regN "neige" feminine ; + snow_N = regN "neige" ; star_N = star_N ; - stick_N = regN "bâton" masculine ; + stick_N = regN "bâton" ; stone_N = stone_N ; sun_N = sun_N ; - tail_N = regN "queue" feminine ; - tongue_N = regN "langue" feminine ; - tooth_N = regN "dent" feminine ; + tail_N = regN "queue" ; + tongue_N = regN "langue" ; + tooth_N = regGenN "dent" feminine ; tree_N = tree_N ; water_N = water_N ; - wife_N = regN "femme" feminine ; - wind_N = regN "vent" masculine ; - wing_N = regN "aile" feminine ; + wife_N = regN "femme" ; + wind_N = regN "vent" ; + wing_N = regN "aile" ; woman_N = woman_N ; - worm_N = regN "ver" masculine ; - year_N = regN "an" masculine ; --- année + worm_N = regN "ver" ; + year_N = regN "an" ; --- année -- Verbs diff --git a/examples/bronzeage/SwadeshNor.gf b/examples/bronzeage/SwadeshNor.gf index 44d46b279..6b160146c 100644 --- a/examples/bronzeage/SwadeshNor.gf +++ b/examples/bronzeage/SwadeshNor.gf @@ -42,6 +42,8 @@ concrete SwadeshNor of Swadesh = CatNor when_IAdv = when_IAdv ; how_IAdv = how_IAdv ; + far_Adv = mkAdv "fjern" ; + -- not : Adv ; -- ? -- Conjunctions diff --git a/lib/resource-1.0/french/LexiconFre.gf b/lib/resource-1.0/french/LexiconFre.gf index 79c873a0b..04d57e91d 100644 --- a/lib/resource-1.0/french/LexiconFre.gf +++ b/lib/resource-1.0/french/LexiconFre.gf @@ -6,210 +6,210 @@ flags optimize=values ; lin - airplane_N = regN "avion" masculine ; + airplane_N = regGenN "avion" masculine ; answer_V2S = mkV2S (v2V répondre_V2) dative ; - apartment_N = regN "apartement" masculine ; - apple_N = regN "pomme" feminine ; - art_N = regN "art" feminine ; + apartment_N = regGenN "apartement" masculine ; + apple_N = regGenN "pomme" feminine ; + art_N = regGenN "art" feminine ; ask_V2Q = mkV2Q (regV "demander") dative ; - baby_N = regN "bébé" masculine ; + baby_N = regGenN "bébé" masculine ; bad_A = prefA (mkADeg (regA "mauvais") (regA "pire")) ; - bank_N = regN "banque" feminine ; + bank_N = regGenN "banque" feminine ; beautiful_A = prefA (regA "joli") ; ---- beau become_VA = mkVA devenir_V ; - beer_N = regN "bière" feminine ; + beer_N = regGenN "bière" feminine ; beg_V2V = mkV2V (regV "demander") accusative dative ; big_A = prefA (regA "grand") ; - bike_N = regN "vélo" masculine ; - bird_N = regN "oiseau" masculine ; + bike_N = regGenN "vélo" masculine ; + bird_N = regGenN "oiseau" masculine ; black_A = regA "noir" ; blue_A = regA "bleu" ; - boat_N = regN "bateau" masculine ; - book_N = regN "livre" masculine ; - boot_N = regN "botte" feminine ; - boss_N = regN "chef" masculine ; - boy_N = regN "garçon" masculine ; - bread_N = regN "pain" masculine ; + boat_N = regGenN "bateau" masculine ; + book_N = regGenN "livre" masculine ; + boot_N = regGenN "botte" feminine ; + boss_N = regGenN "chef" masculine ; + boy_N = regGenN "garçon" masculine ; + bread_N = regGenN "pain" masculine ; break_V2 = dirV2 (regV "casser") ; broad_A = regA "large" ; - brother_N2 = deN2 (regN "frère" masculine) ; + brother_N2 = deN2 (regGenN "frère" masculine) ; brown_A = regA "brun" ; - butter_N = regN "beurre" masculine ; + butter_N = regGenN "beurre" masculine ; buy_V2 = dirV2 (reg3V "acheter" "achète" "achètera") ; - camera_N = compN (regN "appareil" masculine) ["de photo"] ; - cap_N = regN "casquette" feminine ; - car_N = regN "voiture" feminine ; - carpet_N = regN "tapis" masculine ; - cat_N = regN "chat" masculine ; - ceiling_N = regN "plafond" masculine ; - chair_N = regN "chaise" feminine ; - cheese_N = regN "fromage" masculine ; - child_N = regN "enfant" masculine ; - church_N = regN "église" feminine ; - city_N = regN "ville" feminine ; + camera_N = compN (regGenN "appareil" masculine) ["de photo"] ; + cap_N = regGenN "casquette" feminine ; + car_N = regGenN "voiture" feminine ; + carpet_N = regGenN "tapis" masculine ; + cat_N = regGenN "chat" masculine ; + ceiling_N = regGenN "plafond" masculine ; + chair_N = regGenN "chaise" feminine ; + cheese_N = regGenN "fromage" masculine ; + child_N = regGenN "enfant" masculine ; + church_N = regGenN "église" feminine ; + city_N = regGenN "ville" feminine ; clean_A = regA "propre" ; clever_A = regA "sage" ; ---- close_V2 = dirV2 (regV "fermer") ; - coat_N = regN "manteau" masculine ; + coat_N = regGenN "manteau" masculine ; cold_A = regA "froid" ; come_V = venir_V ; - computer_N = regN "ordinateur" masculine ; - country_N = regN "pays" masculine ; - cousin_N = regN "cousin" masculine ; ---- cousine - cow_N = regN "vache" feminine ; + computer_N = regGenN "ordinateur" masculine ; + country_N = regGenN "pays" masculine ; + cousin_N = regGenN "cousin" masculine ; ---- cousine + cow_N = regGenN "vache" feminine ; die_V = mourir_V ; dirty_A = regA "sale" ; - distance_N3 = mkN3 (regN "distance" feminine) genitive dative ; - doctor_N = regN "médecin" masculine ; - dog_N = regN "chien" masculine ; - door_N = regN "porte" feminine ; + distance_N3 = mkN3 (regGenN "distance" feminine) genitive dative ; + doctor_N = regGenN "médecin" masculine ; + dog_N = regGenN "chien" masculine ; + door_N = regGenN "porte" feminine ; drink_V2 = boire_V2 ; easy_A2V = mkA2V (regA "facile") dative genitive ; eat_V2 = dirV2 (regV "manger") ; empty_A = regA "vide" ; - enemy_N = regN "ennemi" masculine ; - factory_N = regN "usine" feminine ; - father_N2 = deN2 (regN "père" masculine) ; + enemy_N = regGenN "ennemi" masculine ; + factory_N = regGenN "usine" feminine ; + father_N2 = deN2 (regGenN "père" masculine) ; fear_VS = mkVS (v2V craindre_V2) ; find_V2 = dirV2 (regV "trouver") ; - fish_N = regN "poisson" masculine ; - floor_N = regN "plancher" masculine ; + fish_N = regGenN "poisson" masculine ; + floor_N = regGenN "plancher" masculine ; forget_V2 = dirV2 (regV "oublier") ; - fridge_N = regN "frigo" masculine ; - friend_N = regN "ami" masculine ; - fruit_N = regN "fruit" masculine ; + fridge_N = regGenN "frigo" masculine ; + friend_N = regGenN "ami" masculine ; + fruit_N = regGenN "fruit" masculine ; fun_AV = mkAV (regA "marrant") genitive ; - garden_N = regN "jardin" masculine ; - girl_N = regN "fille" feminine ; - glove_N = regN "gant" masculine ; - gold_N = regN "or" masculine ; + garden_N = regGenN "jardin" masculine ; + girl_N = regGenN "fille" feminine ; + glove_N = regGenN "gant" masculine ; + gold_N = regGenN "or" masculine ; good_A = prefA (mkADeg (mkA "bon" "bonne" "bons" "bien") (mkA "meilleur" "meilleure" "meilleurs" "mieux")) ; go_V = aller_V ; green_A = regA "vert" ; - harbour_N = regN "port" masculine ; + harbour_N = regGenN "port" masculine ; hate_V2 = haïr_V2 ; - hat_N = regN "chapeau" masculine ; + hat_N = regGenN "chapeau" masculine ; have_V2 = avoir_V2 ; hear_V2 = entendre_V2 ; - hill_N = regN "colline" feminine ; + hill_N = regGenN "colline" feminine ; hope_VS = mkVS (reg3V "espérer" "espère" "espérera") ; - horse_N = regN "cheval" masculine ; + horse_N = regGenN "cheval" masculine ; hot_A = regA "chaud" ; - house_N = regN "maison" feminine ; + house_N = regGenN "maison" feminine ; important_A = regA "important" ; - industry_N = regN "industrie" feminine ; - iron_N = regN "fer" masculine ; - king_N = regN "roi" masculine ; + industry_N = regGenN "industrie" feminine ; + iron_N = regGenN "fer" masculine ; + king_N = regGenN "roi" masculine ; know_V2 = connaître_V2 ; ---- savoir_V2 : VS - lake_N = regN "lac" masculine ; - lamp_N = regN "lampe" feminine ; + lake_N = regGenN "lac" masculine ; + lamp_N = regGenN "lampe" feminine ; learn_V2 = apprendre_V2 ; - leather_N = regN "cuir" masculine ; + leather_N = regGenN "cuir" masculine ; leave_V2 = dirV2 (regV "quitter") ; like_V2 = dirV2 (regV "aimer") ; listen_V2 = dirV2 (regV "écouter") ; live_V = v2V vivre_V2 ; long_A = compADeg (mkA "long" "longue" "longs" "longuement") ; lose_V2 = perdre_V2 ; - love_N = regN "amour" masculine ; + love_N = regGenN "amour" masculine ; love_V2 = dirV2 (regV "aimer") ; - man_N = regN "homme" masculine ; + man_N = regGenN "homme" masculine ; married_A2 = mkA2 (regA "marié") dative ; - meat_N = regN "viande" feminine ; - milk_N = regN "lait" masculine ; - moon_N = regN "lune" feminine ; - mother_N2 = deN2 (regN "mère" feminine) ; - mountain_N = regN "montagne" feminine ; - music_N = regN "musique" feminine ; + meat_N = regGenN "viande" feminine ; + milk_N = regGenN "lait" masculine ; + moon_N = regGenN "lune" feminine ; + mother_N2 = deN2 (regGenN "mère" feminine) ; + mountain_N = regGenN "montagne" feminine ; + music_N = regGenN "musique" feminine ; narrow_A = regA "étroit" ; new_A = prefA (compADeg (mkA "nouveau" "nouvelle" "nouveaux" "nouvellement")) ; - newspaper_N = regN "journal" masculine ; - oil_N = regN "huile" feminine ; + newspaper_N = regGenN "journal" masculine ; + oil_N = regGenN "huile" feminine ; old_A = prefA (compADeg (mkA "vieux" "vieille" "vieux" "vieillement")) ; ---- vieil open_V2 = ouvrir_V2 ; paint_V2A = mkV2A (v2V peindre_V2) accusative (mkPreposition "en") ; - paper_N = regN "papier" masculine ; + paper_N = regGenN "papier" masculine ; paris_PN = mkPN "Paris" masculine ; - peace_N = regN "paix" feminine ; - pen_N = regN "stylo" masculine ; - planet_N = regN "planète" feminine ; - plastic_N = regN "plastic" masculine ; + peace_N = regGenN "paix" feminine ; + pen_N = regGenN "stylo" masculine ; + planet_N = regGenN "planète" feminine ; + plastic_N = regGenN "plastic" masculine ; play_V2 = dirV2 (regV "jouer") ; - policeman_N = regN "policier" masculine ; - priest_N = regN "prêtre" masculine ; + policeman_N = regGenN "policier" masculine ; + priest_N = regGenN "prêtre" masculine ; probable_AS = mkAS (regA "probable") ; - queen_N = regN "reine" feminine ; - radio_N = regN "radio" feminine ; + queen_N = regGenN "reine" feminine ; + radio_N = regGenN "radio" feminine ; rain_V0 = mkV0 (pleuvoir_V) ; read_V2 = lire_V2 ; red_A = regA "rouge" ; - religion_N = regN "religion" feminine ; - restaurant_N = regN "restaurant" masculine ; - river_N = regN "rivière" feminine ; - rock_N = regN "rocher" masculine ; - roof_N = regN "toit" masculine ; - rubber_N = regN "caoutchuc" masculine ; + religion_N = regGenN "religion" feminine ; + restaurant_N = regGenN "restaurant" masculine ; + river_N = regGenN "rivière" feminine ; + rock_N = regGenN "rocher" masculine ; + roof_N = regGenN "toit" masculine ; + rubber_N = regGenN "caoutchuc" masculine ; run_V = v2V courir_V2 ; say_VS = mkVS (v2V dire_V2) ; - school_N = regN "école" feminine ; - science_N = regN "science" feminine ; - sea_N = regN "mer" feminine ; + school_N = regGenN "école" feminine ; + science_N = regGenN "science" feminine ; + sea_N = regGenN "mer" feminine ; seek_V2 = dirV2 (regV "chercher") ; see_V2 = voir_V2 ; sell_V3 = dirV3 (v2V vendre_V2) dative ; send_V3 = dirV3 (v2V envoyer_V2) dative ; - sheep_N = regN "mouton" masculine ; - ship_N = regN "bateau" masculine ; - shirt_N = regN "chemise" feminine ; - shoe_N = regN "chaussure" feminine ; - shop_N = regN "magasin" masculine ; + sheep_N = regGenN "mouton" masculine ; + ship_N = regGenN "bateau" masculine ; + shirt_N = regGenN "chemise" feminine ; + shoe_N = regGenN "chaussure" feminine ; + shop_N = regGenN "magasin" masculine ; short_A = regA "court" ; ---- bref - silver_N = regN "argent" masculine ; - sister_N = regN "soeur" feminine ; + silver_N = regGenN "argent" masculine ; + sister_N = regGenN "soeur" feminine ; sleep_V = v2V dormir_V2 ; small_A = prefA (regA "petit") ; - snake_N = regN "serpent" masculine ; - sock_N = regN "chaussette" feminine ; + snake_N = regGenN "serpent" masculine ; + sock_N = regGenN "chaussette" feminine ; speak_V2 = dirV2 (regV "parler") ; - star_N = regN "étoile" feminine ; - steel_N = regN "acier" masculine ; - stone_N = regN "pierre" feminine ; - stove_N = regN "four" masculine ; - student_N = regN "étudiant" masculine ; + star_N = regGenN "étoile" feminine ; + steel_N = regGenN "acier" masculine ; + stone_N = regGenN "pierre" feminine ; + stove_N = regGenN "four" masculine ; + student_N = regGenN "étudiant" masculine ; stupid_A = regA "stupide" ; - sun_N = regN "soleil" masculine ; + sun_N = regGenN "soleil" masculine ; switch8off_V2 = éteindre_V2 ; switch8on_V2 = dirV2 (regV "allumer") ; ---- - table_N = regN "table" feminine ; + table_N = regGenN "table" feminine ; talk_V3 = mkV3 (regV "parler") dative genitive ; - teacher_N = regN "professeur" masculine ; + teacher_N = regGenN "professeur" masculine ; teach_V2 = dirV2 (regV "enseigner") ; - television_N = regN "télévision" feminine ; + television_N = regGenN "télévision" feminine ; thick_A = compADeg (mkA "épais" "épaisse" "épais" "épaissement") ; thin_A = regA "fin" ; - train_N = regN "train" masculine ; + train_N = regGenN "train" masculine ; travel_V = regV "voyager" ; - tree_N = regN "arbre" masculine ; - ---- trousers_N = regN "pantalon" masculine ; + tree_N = regGenN "arbre" masculine ; + ---- trousers_N = regGenN "pantalon" masculine ; ugly_A = regA "laide" ; understand_V2 = comprendre_V2 ; - university_N = regN "université" feminine ; - village_N = regN "village" masculine ; + university_N = regGenN "université" feminine ; + village_N = regGenN "village" masculine ; wait_V2 = attendre_V2 ; ---- dative? walk_V = regV "marcher" ; warm_A = regA "chaud" ; - war_N = regN "guerre" masculine ; + war_N = regGenN "guerre" masculine ; watch_V2 = dirV2 (regV "regarder") ; - water_N = regN "eau" feminine ; + water_N = regGenN "eau" feminine ; white_A = compADeg (mkA "blanc" "blanche" "blancs" "blanchement") ; - window_N = regN "fenêtre" feminine ; - wine_N = regN "vin" masculine ; + window_N = regGenN "fenêtre" feminine ; + wine_N = regGenN "vin" masculine ; win_V2 = dirV2 (regV "gagner") ; ---- vaincre - woman_N = regN "femme" feminine ; + woman_N = regGenN "femme" feminine ; wonder_VQ = mkVQ (reflV (regV "étonner")) ; - wood_N = regN "bois" masculine ; + wood_N = regGenN "bois" masculine ; write_V2 = écrire_V2 ; yellow_A = regA "jaune" ; young_A = prefA (regA "jeune") ; @@ -217,9 +217,9 @@ lin do_V2 = faire_V2 ; now_Adv = mkAdv "maintenant" ; already_Adv = mkAdv "déjà" ; - song_N = regN "chanson" feminine ; + song_N = regGenN "chanson" feminine ; add_V3 = dirV3 (regV "ajouter") dative ; - number_N = regN "nombre" masculine ; ---- numéro + number_N = regGenN "nombre" masculine ; ---- numéro put_V2 = mettre_V2 ; stop_V = reflV (regV "arrêter") ; jump_V = regV "sauter" ; diff --git a/lib/resource-1.0/french/ParadigmsFre.gf b/lib/resource-1.0/french/ParadigmsFre.gf index d0f7531b9..3375bbb1e 100644 --- a/lib/resource-1.0/french/ParadigmsFre.gf +++ b/lib/resource-1.0/french/ParadigmsFre.gf @@ -72,13 +72,20 @@ oper mkN : (oeil,yeux : Str) -> Gender -> N ; --- The regular function takes the singular form and the gender, --- and computes the plural by a heuristic. The heuristic currently +-- The regular function takes the singular form, +-- and computes the plural and the gender by a heuristic. The plural +-- heuristic currently -- covers the cases "pas-pas", "prix-prix", "nez-nez", -- "bijou-bijoux", "cheveu-cheveux", "plateau-plateaux", "cheval-chevaux". +-- The gender heuristic is less reliable: it treats as feminine all +-- nouns ending with "e" and "ion", all others as masculine. -- If in doubt, use the $cc$ command to test! - regN : Str -> Gender -> N ; + regN : Str -> N ; + +-- Adding gender information widens the scope of the foregoing function. + + regGenN : Str -> Gender -> N ; --3 Compound nouns @@ -287,7 +294,13 @@ oper mkPreposition p = {s = p ; c = Acc ; isDir = False} ; mkN x y g = mkCNomIrreg x y g ** {lock_N = <>} ; - regN x g = mkNomReg x g ** {lock_N = <>} ; + regN x = regGenN x g where { + g = case of { + _ + ("e" | "ion") => Fem ; + _ => Masc + } + } ; + regGenN x g = mkNomReg x g ** {lock_N = <>} ; compN x y = {s = \\n => x.s ! n ++ y ; g = x.g ; lock_N = <>} ; mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p} ; diff --git a/lib/resource-1.0/norwegian/LexiconNor.gf b/lib/resource-1.0/norwegian/LexiconNor.gf index fdef995d9..9dd4dd0b8 100644 --- a/lib/resource-1.0/norwegian/LexiconNor.gf +++ b/lib/resource-1.0/norwegian/LexiconNor.gf @@ -17,40 +17,40 @@ lin bank_N = mk2N "bank" "banken" ; beautiful_A = mk3ADeg "vakker" "vakkert" "vakra" ; become_VA = mkVA bli_V ; - beer_N = regN "øl" neutrum ; + beer_N = regGenN "øl" neutrum ; beg_V2V = mkV2V be_V [] "att" ; big_A = irregADeg "stor" "større" "størst"; bike_N = mkN "sykkel" "sykkelen" "sykler" "syklene" ; bird_N = mk2N "fugl" "fuglen" ; black_A = mk2ADeg "svart" "svart" ; blue_A = mk2ADeg "blå" "blått"; - boat_N = regN "båt" masculine ; + boat_N = regGenN "båt" masculine ; book_N = mkN "bok" "boka" "bøker" "bøkene" ; boot_N = mkN "støvel" "støvelen" "støvler" "støvlene" ; boss_N = mk2N "sjef" "sjefen" ; - boy_N = regN "gutt" masculine ; - bread_N = regN "brød" neutrum ; + boy_N = regGenN "gutt" masculine ; + bread_N = regGenN "brød" neutrum ; break_V2 = dirV2 (mk2V "knuse" "knuste") ; broad_A = regADeg "bred" ; brother_N2 = mkN2 ( (mkN "bror" "broren" "brødre" "brødrene")) "til" ; brown_A = regADeg "brun" ; - butter_N = regN "smør" neutrum ; + butter_N = regGenN "smør" neutrum ; buy_V2 = dirV2 (mk2V "kjøpe" "kjøpte") ; camera_N = mk2N "kamera" "kameraen" ; ---- cap_N = mk2N "lue" "lua" ; - car_N = regN "bil" masculine ; - carpet_N = regN "matte" feminine ; + car_N = regGenN "bil" masculine ; + carpet_N = regGenN "matte" feminine ; cat_N = mk2N "katt" "katten" ; - ceiling_N = regN "tak" neutrum ; - chair_N = regN "stol" masculine ; - cheese_N = regN "ost" masculine ; - child_N = regN "barn" neutrum ; - church_N = regN "kirke" feminine ; + ceiling_N = regGenN "tak" neutrum ; + chair_N = regGenN "stol" masculine ; + cheese_N = regGenN "ost" masculine ; + child_N = regGenN "barn" neutrum ; + church_N = regGenN "kirke" feminine ; city_N = mk2N "by" "byen" ; clean_A = regADeg "rein" ; clever_A = regADeg "klok" ; close_V2 = dirV2 (mk2V "lukke" "lukket") ; - coat_N = regN "frakk" masculine ; + coat_N = regGenN "frakk" masculine ; cold_A = regADeg "kald" ; come_V = komme_V ; computer_N = mk2N "datamaskin" "datamaskinen" ; @@ -59,99 +59,99 @@ lin cow_N = mkN "ku" "kua" "kyr" "kyrne" ; ---- die_V = dø_V ; dirty_A = mk3ADeg "skitten" "skittent" "skitne" ; ---- - distance_N3 = mkN3 (regN "avstand" masculine) "fra" "til" ; + distance_N3 = mkN3 (regGenN "avstand" masculine) "fra" "til" ; doctor_N = mk2N "lege" "legen" ; - dog_N = regN "hund" masculine ; - door_N = regN "dør" feminine ; + dog_N = regGenN "hund" masculine ; + door_N = regGenN "dør" feminine ; drink_V2 = dirV2 drikke_V ; easy_A2V = mkA2V (regA "grei") "før" ; eat_V2 = dirV2 (mk2V "spise" "spiste") ; empty_A = mkADeg "tom" "tomt" "tomme" "tommere" "tommest" ; - enemy_N = regN "fiende" masculine ; + enemy_N = regGenN "fiende" masculine ; factory_N = mk2N "fabrikk" "fabrikken" ; father_N2 = mkN2 ( (mkN "far" "faren" "fedre" "fedrene")) "til" ; fear_VS = mkVS (regV "frykte") ; find_V2 = dirV2 (irregV "finne" "fann" "funnet") ; fish_N = mk2N "fisk" "fisken" ; - floor_N = regN "golv" neutrum ; + floor_N = regGenN "golv" neutrum ; forget_V2 = dirV2 (mkV "glemme" "glemmer" "glemmes" "glemte" "glemt" "glem") ; - fridge_N = regN "kjøleskap" neutrum ; + fridge_N = regGenN "kjøleskap" neutrum ; friend_N = mkN "venn" "vennen" "venner" "vennene" ; fruit_N = mk2N "frukt" "frukten" ; fun_AV = mkAV (mkA "morsom" "morsomt" "morsomme") ; - garden_N = regN "hage" masculine ; - girl_N = regN "jente" feminine ; - glove_N = regN "hanske" masculine ; - gold_N = regN "gull" neutrum ; + garden_N = regGenN "hage" masculine ; + girl_N = regGenN "jente" feminine ; + glove_N = regGenN "hanske" masculine ; + gold_N = regGenN "gull" neutrum ; good_A = mkADeg "god" "godt" "gode" "bedre" "best" ; go_V = gå_V ; green_A = mk2ADeg "grønn" "grønt" ; - harbour_N = regN "havn" feminine; + harbour_N = regGenN "havn" feminine; hate_V2 = dirV2 (regV "hate") ; - hat_N = regN "hatt" masculine ; + hat_N = regGenN "hatt" masculine ; have_V2 = dirV2 ha_V ; hear_V2 = dirV2 (mk2V "høre" "hørte") ; - hill_N = regN "haug" masculine ; + hill_N = regGenN "haug" masculine ; hope_VS = mkVS (regV "håpe") ; - horse_N = regN "hest" masculine ; + horse_N = regGenN "hest" masculine ; hot_A = regADeg "heit" ; - house_N = regN "hus" neutrum ; + house_N = regGenN "hus" neutrum ; important_A = regADeg "viktig" ; industry_N = mk2N "industri" "industrien" ; - iron_N = regN "jern" neutrum ; - king_N = regN "konge" masculine ; + iron_N = regGenN "jern" neutrum ; + king_N = regGenN "konge" masculine ; know_V2 = dirV2 vite_V ; - lake_N = regN "vann" neutrum ; - lamp_N = regN "lampe" feminine ; + lake_N = regGenN "vann" neutrum ; + lamp_N = regGenN "lampe" feminine ; learn_V2 = dirV2 (mk2V "lære" "lærte") ; - leather_N = regN "lær" neutrum ; + leather_N = regGenN "lær" neutrum ; leave_V2 = dirV2 forlate_V ; like_V2 = dirV2 (mk2V "like" "likte") ; listen_V2 = dirV2 (regV "lytte") ; live_V = mk2V "leve" "levde" ; long_A = irregADeg "lang" "lengre" "lengst" ; lose_V2 = dirV2 (mk2V "tape" "tapte") ; - love_N = regN "kjærlighet" masculine ; + love_N = regGenN "kjærlighet" masculine ; love_V2 = dirV2 (regV "elske") ; man_N = (mkN "mann" "mannen" "menn" "mennen") ; married_A2 = mkA2 (mk2A "gift" "gift") "med" ; - meat_N = regN "kjøtt" neutrum ; - milk_N = regN "melk" masculine ; - moon_N = regN "måne" masculine ; + meat_N = regGenN "kjøtt" neutrum ; + milk_N = regGenN "melk" masculine ; + moon_N = regGenN "måne" masculine ; mother_N2 = mkN2 (mkN "mor" "moren" "mødre" "mødrene") "til" ; ---- fem - mountain_N = regN "berg" neutrum ; + mountain_N = regGenN "berg" neutrum ; music_N = mk2N "musikk" "musikken" ; narrow_A = regADeg "smal" ; new_A = mkADeg "ny" "nytt" "nye" "nyere" "nyest" ; - newspaper_N = regN "avis" feminine ; - oil_N = regN "olje" masculine ; + newspaper_N = regGenN "avis" feminine ; + oil_N = regGenN "olje" masculine ; old_A = mkADeg "gammel" "gammelt" "gamle" "eldre" "eldst" ; open_V2 = dirV2 (regV "åpne") ; paint_V2A = mkV2A (regV "male") [] ; - paper_N = regN "papir" neutrum ; ---- + paper_N = regGenN "papir" neutrum ; ---- paris_PN = regPN "Paris" neutrum ; - peace_N = regN "fred" masculine ; - pen_N = regN "penn" masculine ; + peace_N = regGenN "fred" masculine ; + pen_N = regGenN "penn" masculine ; planet_N = mk2N "planet" "planeten" ; plastic_N = mk2N "plast" "plasten" ; play_V2 = dirV2 (mk2V "spille" "spilte") ; policeman_N = mk2N "politi" "politien" ; priest_N = mk2N "prest" "presten" ; probable_AS = mkAS (regA "sannsynlig") ; - queen_N = regN "dronning" feminine ; - radio_N = regN "radio" masculine ; + queen_N = regGenN "dronning" feminine ; + radio_N = regGenN "radio" masculine ; rain_V0 = mkV0 (regV "regne") ; read_V2 = dirV2 (mk2V "lese" "leste") ; red_A = regADeg "rød" ; religion_N = mk2N "religion" "religionen" ; restaurant_N = mk2N "restaurant" "restauranten" ; river_N = mk2N "elv" "elva" ; - rock_N = regN "stein" masculine ; - roof_N = regN "tak" neutrum ; + rock_N = regGenN "stein" masculine ; + roof_N = regGenN "tak" neutrum ; rubber_N = mk2N "gummi" "gummien" ; run_V = springe_V ; say_VS = mkVS si_V ; - school_N = regN "skole" feminine; + school_N = regGenN "skole" feminine; science_N = mk2N "vitenskap" "vitenskapen" ; sea_N = mk2N "sjø" "sjøen" ; seek_V2 = mkV2 (mk2V "lete" "lette") "etter" ; @@ -159,53 +159,53 @@ lin sell_V3 = dirV3 selge_V "til" ; send_V3 = dirV3 (mk2V "sende" "sendte") "til" ; sheep_N = mk2N "får" "fåret" ; - ship_N = regN "skip" neutrum ; - shirt_N = regN "skjorte" feminine ; - shoe_N = regN "sko" masculine ; + ship_N = regGenN "skip" neutrum ; + shirt_N = regGenN "skjorte" feminine ; + shoe_N = regGenN "sko" masculine ; shop_N = mk2N "butikk" "butikken" ; short_A = regADeg "kort" ; silver_N = mk2N "sølv" "sølvet"; sister_N = mkN "søster" "søsteren" "søstrer" "søstrene" ; sleep_V = irregV "sove" "sov" "sovet" ; small_A = mkADeg "liten" "lite" "små" "mindre" "minst" ; ---- lille - snake_N = regN "orm" masculine ; - sock_N = regN "strømpe" masculine ; + snake_N = regGenN "orm" masculine ; + sock_N = regGenN "strømpe" masculine ; speak_V2 = dirV2 (regV "snakke") ; - star_N = regN "stjerne" feminine ; - steel_N = regN "stål" neutrum ; - stone_N = regN "stein" masculine ; - stove_N = regN "komfyr" masculine ; + star_N = regGenN "stjerne" feminine ; + steel_N = regGenN "stål" neutrum ; + stone_N = regGenN "stein" masculine ; + stove_N = regGenN "komfyr" masculine ; student_N = mk2N "student" "studenten" ; stupid_A = mk3ADeg "dum" "dumt" "dumme" ; - sun_N = regN "sol" feminine ; + sun_N = regGenN "sol" feminine ; switch8off_V2 = dirV2 (partV (irregV "slå" "slo" "slått") "av") ; switch8on_V2 = dirV2 (partV (irregV "slå" "slo" "slått") "på") ; - table_N = regN "bord" neutrum ; + table_N = regGenN "bord" neutrum ; talk_V3 = mkV3 (regV "snakke") "til" "om" ; teacher_N = mkN "lærer" "læreren" "lærere" "lærerne" ; teach_V2 = dirV2 (mk2V "undervise" "underviste") ; television_N = mk2N "fjernsyn" "fjernsynet" ; thick_A = mk2ADeg "tykk" "tykt" ; thin_A = mk2ADeg "tynn" "tynt" ; - train_N = regN "tog" neutrum ; + train_N = regGenN "tog" neutrum ; travel_V = mk2V "reise" "reiste" ; tree_N = mkN "tre" "treet" "trær" "træne" ; - ---- trousers_N = regN "trousers" ; ---- pl t ! + ---- trousers_N = regGenN "trousers" ; ---- pl t ! ugly_A = mk2ADeg "stygg" "stygt" ; understand_V2 = dirV2 (irregV "forstå" "forstod" "forstått") ; - university_N = regN "universitet" neutrum ; + university_N = regGenN "universitet" neutrum ; village_N = mk2N "grend" "grenda" ; wait_V2 = mkV2 (regV "vente") "på" ; walk_V = (irregV "gå" "gikk" "gått") ; warm_A = regADeg "varm" ; - war_N = regN "krig" masculine ; + war_N = regGenN "krig" masculine ; watch_V2 = mkV2 se_V "på" ; water_N = mk2N "vatn" "vatnet" ; white_A = regADeg "hvit" ; window_N = mkN "vindu" "vinduet" "vinduer" "vinduene" ; ---- er? wine_N = mk2N "vin" "vinen" ; win_V2 = dirV2 (irregV "vinne" "vant" "vunnet") ; - woman_N = regN "kvinne" feminine ; ---- kvinnen + woman_N = regGenN "kvinne" feminine ; ---- kvinnen wonder_VQ = mkVQ (regV "undre") ; ---- seg wood_N = mkN "tre" "treet" "trær" "træne" ; write_V2 = dirV2 (irregV "skrive" "skrev" "skrevet") ; diff --git a/lib/resource-1.0/norwegian/ParadigmsNor.gf b/lib/resource-1.0/norwegian/ParadigmsNor.gf index 90fcb617a..3dcf57085 100644 --- a/lib/resource-1.0/norwegian/ParadigmsNor.gf +++ b/lib/resource-1.0/norwegian/ParadigmsNor.gf @@ -69,11 +69,17 @@ oper mkN : (dreng,drengen,drenger,drengene : Str) -> N ; --- The regular function takes the singular indefinite form and the gender, --- and computes the other forms by a heuristic. +-- The regular function takes the singular indefinite form +-- and computes the other forms and the gender by a heuristic. +-- The heuristic is that nouns ending "e" are feminine like "kvinne", +-- all others are masculine like "bil". -- If in doubt, use the $cc$ command to test! - regN : Str -> Gender -> N ; + regN : Str -> N ; + +-- Giving gender manually makes the heuristic more reliable. + + regGenN : Str -> Gender -> N ; -- This function takes the singular indefinite and definite forms; the -- gender is computed from the definite form. @@ -291,7 +297,14 @@ oper mkN x y z u = mkSubstantive x y z u ** {g = extNGen y ; lock_N = <>} ; - regN x g = case last x of { + regN x = regGenN x g where { + g = case of { + _ + "e" => Utr Fem ; + _ => Utr Masc + } + } ; + + regGenN x g = case last x of { "e" => case g of { Utr Masc => mkN x (x + "n") (x + "r") (x + "ne") ; Utr Fem => mkN x (init x + "a") (x + "r") (x + "ne") ; @@ -305,14 +318,14 @@ oper } ; mk2N x y = case last y of { - "n" => regN x masculine ; - "a" => regN x feminine ; - _ => regN x neutrum + "n" => regGenN x masculine ; + "a" => regGenN x feminine ; + _ => regGenN x neutrum } ; mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p} ; - regN2 n g = mkN2 (regN n g) (mkPreposition "av") ; + regN2 n g = mkN2 (regGenN n g) (mkPreposition "av") ; mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p ; c3 = q} ; regPN n g = {s = \\c => mkCase c n ; g = g} ** {lock_PN = <>} ; diff --git a/lib/resource-1.0/swedish/LexiconSwe.gf b/lib/resource-1.0/swedish/LexiconSwe.gf index cf96d0f4f..2b8087c7f 100644 --- a/lib/resource-1.0/swedish/LexiconSwe.gf +++ b/lib/resource-1.0/swedish/LexiconSwe.gf @@ -6,51 +6,51 @@ flags optimize=values ; lin - airplane_N = regN "flygplan" neutrum ; + airplane_N = regGenN "flygplan" neutrum ; answer_V2S = mkV2S (regV "svarar") "till" ; apartment_N = mk2N "lägenhet" "lägenheter" ; - apple_N = regN "äpple" neutrum ; + apple_N = regGenN "äpple" neutrum ; art_N = mk2N "konst" "konster" ; ask_V2Q = mkV2Q (regV "frågar") [] ; - baby_N = regN "bebis" utrum ; + baby_N = regGenN "bebis" utrum ; bad_A = irregA "dålig" "sämre" "sämst"; bank_N = mk2N "bank" "banker" ; beautiful_A = mk3A "vacker" "vackert" "vackrast" ; become_VA = mkVA (mkV "bli" "blir""bli" "blev" "blivit" "bliven") ; - beer_N = regN "öl" neutrum ; + beer_N = regGenN "öl" neutrum ; beg_V2V = mkV2V (mkV "be" "ber""be" "blad" "bett" "bedd") [] "att" ; big_A = irregA "stor" "större" "störst"; bike_N = mk2N "cykel" "cyklar" ; bird_N = mk2N "fågel" "fåglar" ; black_A = mk2A "svart" "svart" ; blue_A = mk2A "blå" "blått"; - boat_N = regN "båt" utrum ; + boat_N = regGenN "båt" utrum ; book_N = mkN "bok" "boken" "böcker" "böckerna" ; boot_N = mk2N "stövel" "stövlar" ; boss_N = mk2N "chef" "chefer" ; - boy_N = regN "pojke" utrum ; - bread_N = regN "bröd" neutrum ; + boy_N = regGenN "pojke" utrum ; + bread_N = regGenN "bröd" neutrum ; break_V2 = dirV2 (partV (mkV "slå" "slår" "slå" "slog" "slagit" "slagen") "sönder") ; broad_A = mk2A "bred" "brett" ; brother_N2 = mkN2 ((mkN "bror" "brodern" "bröder" "bröderna")) "till" ; brown_A = regA "brun" ; - butter_N = regN "smör" neutrum ; + butter_N = regGenN "smör" neutrum ; buy_V2 = dirV2 (mk2V "köpa" "köpte") ; - camera_N = regN "kamera" utrum ; - cap_N = regN "mössa" utrum ; - car_N = regN "bil" utrum ; - carpet_N = regN "matta" utrum ; + camera_N = regGenN "kamera" utrum ; + cap_N = regGenN "mössa" utrum ; + car_N = regGenN "bil" utrum ; + carpet_N = regGenN "matta" utrum ; cat_N = mk2N "katt" "katter" ; - ceiling_N = regN "tak" neutrum ; - chair_N = regN "stol" utrum ; - cheese_N = regN "ost" utrum ; - child_N = regN "barn" neutrum ; - church_N = regN "kyrka" utrum ; + ceiling_N = regGenN "tak" neutrum ; + chair_N = regGenN "stol" utrum ; + cheese_N = regGenN "ost" utrum ; + child_N = regGenN "barn" neutrum ; + church_N = regGenN "kyrka" utrum ; city_N = mkN "stad" "staden" "städer" "städerna" ; clean_A = regA "ren" ; clever_A = regA "klok" ; close_V2 = dirV2 (mk2V "stänga" "stängde") ; - coat_N = regN "rock" utrum ; + coat_N = regGenN "rock" utrum ; cold_A = regA "kall" ; come_V = komma_V ; computer_N = mk2N "dator" "datorer" ; @@ -61,49 +61,49 @@ lin distance_N3 = mkN3 (mk2N "avstånd" "avstånd") "från" "till" ; dirty_A = regA "smutsig" ; doctor_N = mk2N "läkare" "läkare" ; - dog_N = regN "hund" utrum ; - door_N = regN "dörr" utrum ; + dog_N = regGenN "hund" utrum ; + door_N = regGenN "dörr" utrum ; drink_V2 = dirV2 (irregV "dricka" "drack" "druckit") ; easy_A2V = mkA2V (mk2A "lätt" "lätt") "för" ; eat_V2 = dirV2 (irregV "äta" "åt" "ätit") ; empty_A = mkA "tom" "tomt" "tomma" "tomma" "tommare" "tommast" "tommaste" ; - enemy_N = regN "fiende" neutrum ; + enemy_N = regGenN "fiende" neutrum ; factory_N = mk2N "fabrik" "fabriker" ; father_N2 = mkN2 ((mkN "far" "fadern" "fäder" "fäderna")) "till" ; fear_VS = mkVS (regV "fruktar") ; find_V2 = dirV2 (irregV "finna" "fann" "funnit") ; fish_N = mk2N "fisk" "fiskar" ; - floor_N = regN "golv" neutrum ; + floor_N = regGenN "golv" neutrum ; forget_V2 = dirV2 (mkV "glömma" "glömmer" "glöm" "glömde" "glömt" "glömd") ; - fridge_N = regN "kylskåp" neutrum ; + fridge_N = regGenN "kylskåp" neutrum ; friend_N = mkN "vän" "vännen" "vänner" "vännerna" ; fruit_N = mk2N "frukt" "frukter" ; fun_AV = mkAV (regA "rolig") ; - garden_N = regN "trädgård" utrum ; - girl_N = regN "flicka" utrum ; - glove_N = regN "handske" utrum ; - gold_N = regN "guld" neutrum ; + garden_N = regGenN "trädgård" utrum ; + girl_N = regGenN "flicka" utrum ; + glove_N = regGenN "handske" utrum ; + gold_N = regGenN "guld" neutrum ; good_A = mkA "god" "gott" "goda" "goda" "bättre" "bäst" "bästa" ; go_V = (mkV "gå" "går" "gå" "gick" "gått" "gången") ; green_A = regA "grön" ; - harbour_N = regN "hamn" utrum; + harbour_N = regGenN "hamn" utrum; hate_V2 = dirV2 (regV "hatar") ; - hat_N = regN "hatt" utrum ; + hat_N = regGenN "hatt" utrum ; have_V2 = dirV2 (mkV "ha" "har" "ha" "hade" "haft" "haft") ; ---- pp hear_V2 = dirV2 (mkV "höra" "hör" "hör" "hörde" "hört" "hörd") ; - hill_N = regN "kulle" utrum ; + hill_N = regGenN "kulle" utrum ; -- hope_VS = mkVS ((regV "önskar")) ; hope_VS = mkVS (depV (regV "hoppar")) ; - horse_N = regN "häst" utrum ; + horse_N = regGenN "häst" utrum ; hot_A = regA "het" ; - house_N = regN "hus" neutrum ; + house_N = regGenN "hus" neutrum ; important_A = regA "viktig" ; industry_N = mk2N "industri" "industrier" ; ---- "ien" ?? - iron_N = regN "järn" neutrum ; - king_N = (regN "kung" utrum) ; + iron_N = regGenN "järn" neutrum ; + king_N = (regGenN "kung" utrum) ; know_V2 = dirV2 (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ; lake_N = mkN "sjö" "sjön" "sjöar" "sjöarna" ; - lamp_N = regN "lampa" utrum; + lamp_N = regGenN "lampa" utrum; learn_V2 = dirV2 (reflV (mkV "lära" "lär" "lär" "lärde" "lärt" "lärd")) ; leather_N = mkN "läder" "lädret" "läder" "lädren" ; leave_V2 = dirV2 (regV "lämnar") ; @@ -112,34 +112,34 @@ lin live_V = (irregV "leva" "levde" "levt") ; ---- ? long_A = irregA "lång" "längre" "längst" ; lose_V2 = dirV2 (regV "förlora") ; - love_N = regN "kärlek" utrum ; + love_N = regGenN "kärlek" utrum ; love_V2 = dirV2 (regV "älska") ; man_N = (mkN "man" "mannen" "män" "männen") ; married_A2 = mkA2 (mk2A "gift" "gift") "med" ; - meat_N = regN "kött" neutrum ; - milk_N = regN "mjölk" utrum ; ---- -ar? - moon_N = regN "måne" utrum ; + meat_N = regGenN "kött" neutrum ; + milk_N = regGenN "mjölk" utrum ; ---- -ar? + moon_N = regGenN "måne" utrum ; mother_N2 = mkN2 (mkN "mor" "modern" "mödrar" "mödrarna") "till" ; - mountain_N = regN "berg" neutrum ; + mountain_N = regGenN "berg" neutrum ; music_N = mk2N "musik" "musiker" ; ---- er ? narrow_A = regA "smal" ; new_A = mkA "ny" "nytt" "nya" "nya" "nyare" "nyast" "nyaste" ; - newspaper_N = regN "tidning" utrum ; - oil_N = regN "olja" utrum ; + newspaper_N = regGenN "tidning" utrum ; + oil_N = regGenN "olja" utrum ; old_A = mkA "gammal" "gammalt" "gamla" "gamla" "äldre" "äldst" "äldsta" ; open_V2 = dirV2 (regV "öppna") ; paint_V2A = mkV2A (regV "måla") [] ; paper_N = mkN "papper" "pappret" "papper" "pappren" ; paris_PN = regPN "Paris" neutrum ; - peace_N = regN "fred" utrum ; ---- ar? - pen_N = regN "penna" utrum ; + peace_N = regGenN "fred" utrum ; ---- ar? + pen_N = regGenN "penna" utrum ; planet_N = mk2N "planet" "planeter" ; plastic_N = mk2N "plast" "plaster" ; play_V2 = dirV2 (regV "spela") ; policeman_N = mk2N "polis" "poliser" ; priest_N = mk2N "präst" "präster" ; probable_AS = mkAS (regA "sannolik") ; - queen_N = regN "drottning" utrum ; + queen_N = regGenN "drottning" utrum ; radio_N = mkN "radio" "radion" "radioapparater" "radioapparaterna" ; -- SAOL rain_V0 = mkV0 (regV "regna") ; read_V2 = dirV2 (mk2V "läsa" "läste") ; @@ -148,11 +148,11 @@ lin restaurant_N = mk2N "restaurang" "restauranger" ; river_N = mkN "å" "ån" "åar" "åarna" ; rock_N = mkN "sten" "stenen" "stenar" "stenarna" ; - roof_N = regN "tak" neutrum ; + roof_N = regGenN "tak" neutrum ; rubber_N = mkN "gummi" "gummit" "gummin" "gummina" ; run_V = (irregV "springa" "sprang" "sprungit") ; say_VS = mkVS (mkV "säga" "säger" "säg" "sade" "sagt" "sagd") ; - school_N = regN "skola" utrum; + school_N = regGenN "skola" utrum; science_N = mk2N "vetenskap" "vetenskaper" ; sea_N = mkN "sjö" "sjön" "sjöar" "sjöarna" ; seek_V2 = dirV2 (mk2V "söka" "sökte") ; @@ -160,8 +160,8 @@ lin sell_V3 = dirV3 (irregV "sälja" "sålde" "sålt") "till" ; send_V3 = dirV3 (regV "skicka") "till" ; sheep_N = mk2N "får" "får" ; - ship_N = regN "skepp" neutrum ; - shirt_N = regN "skjorta" utrum ; + ship_N = regGenN "skepp" neutrum ; + shirt_N = regGenN "skjorta" utrum ; shoe_N = mk2N "sko" "skor" ; shop_N = mk2N "affär" "affären" ; short_A = regA "kort" ; @@ -169,44 +169,44 @@ lin sister_N = mk2N "syster" "systrar" ; sleep_V = (irregV "sova" "sov" "sovit") ; small_A = mkA "liten" "litet" "lilla" "små" "mindre" "minst" "minsta" ; - snake_N = regN "orm" utrum ; - sock_N = regN "strumpa" utrum ; + snake_N = regGenN "orm" utrum ; + sock_N = regGenN "strumpa" utrum ; speak_V2 = dirV2 (regV "tala") ; - star_N = regN "stjärna" utrum ; - steel_N = regN "stål" utrum ; + star_N = regGenN "stjärna" utrum ; + steel_N = regGenN "stål" utrum ; stone_N = mkN "sten" "stenen" "stenar" "stenarna" ; - stove_N = regN "spis" utrum ; + stove_N = regGenN "spis" utrum ; student_N = mk2N "student" "studenter" ; stupid_A = mk3A "dum" "dumt" "dumma" ; - sun_N = regN "sol" utrum ; + sun_N = regGenN "sol" utrum ; switch8off_V2 = dirV2 (partV (irregV "stänga" "stängde" "stängt") "av") ; switch8on_V2 = dirV2 (partV (irregV "slå" "slog" "slagit") "på") ; - table_N = regN "bord" neutrum ; + table_N = regGenN "bord" neutrum ; talk_V3 = mkV3 (regV "prata") "till" "om" ; teacher_N = mk2N "lärare" "lärare" ; teach_V2 = dirV2 (regV "undervisa") ; television_N = mk2N "television" "televisioner" ; thick_A = regA "tjock" ; thin_A = mk2A "tunn" "tunt" ; - train_N = regN "tåg" neutrum ; + train_N = regGenN "tåg" neutrum ; travel_V = mk2V "resa" "reste" ; - tree_N = regN "träd" neutrum ; - ---- trousers_N = regN "trousers" ; ---- pl t ! + tree_N = regGenN "träd" neutrum ; + ---- trousers_N = regGenN "trousers" ; ---- pl t ! ugly_A = regA "ful" ; understand_V2 = dirV2 (mkV "förstå" "förstår" "förstå" "förstod" "förstått" "förstådd") ; - university_N = regN "universitet" neutrum ; + university_N = regGenN "universitet" neutrum ; village_N = mkN "by" "byn" "byar" "byarna" ; wait_V2 = mkV2 (regV "vänta") "på" ; walk_V = (mkV "gå" "går" "gå" "gick" "gått" "gången") ; warm_A = regA "varm" ; - war_N = regN "krig" neutrum ; + war_N = regGenN "krig" neutrum ; watch_V2 = mkV2 (regV "titta") "på" ; water_N = mkN "vatten" "vattnet" "vatten" "vattnen" ; white_A = regA "vit" ; window_N = mkN "fönster" "fönstret" "fönster" "fönstren" ; wine_N = mkN "vin" "vinet" "viner" "vinerna" ; ---- win_V2 = dirV2 (irregV "vinna" "vann" "vunnit") ; - woman_N = regN "kvinna" utrum ; + woman_N = regGenN "kvinna" utrum ; wonder_VQ = mkVQ (regV "undra") ; wood_N = mkN "trä" "träet" "träen" "träena" ; ---- ? write_V2 = dirV2 (irregV "skriva" "skrev" "skrivit") ; diff --git a/lib/resource-1.0/swedish/ParadigmsSwe.gf b/lib/resource-1.0/swedish/ParadigmsSwe.gf index 17bb578e6..3557524dc 100644 --- a/lib/resource-1.0/swedish/ParadigmsSwe.gf +++ b/lib/resource-1.0/swedish/ParadigmsSwe.gf @@ -68,11 +68,17 @@ oper mkN : (apa,apan,apor,aporna : Str) -> N ; --- The regular function takes the singular indefinite form and the gender, --- and computes the other forms by a heuristic. +-- The regular function takes the singular indefinite form and computes the other +-- forms and the gender by a heuristic. The heuristic is currently +-- to treat all words ending with "a" like "flicka", with "e" like "rike", +-- and otherwise like "bil". -- If in doubt, use the $cc$ command to test! - regN : Str -> Gender -> N ; + regN : Str -> N ; + +-- Adding the gender manually greatly improves the correction of $regN$. + + regGenN : Str -> Gender -> N ; -- In practice the worst case is often just: give singular and plural indefinite. @@ -290,7 +296,14 @@ oper } } ** {lock_N = <>} ; - regN bil g = case g of { + regN bil = regGenN bil g where { + g = case of { + _ + "e" => Neutr ; + _ => Utr + } + } ; + + regGenN bil g = case g of { Utr => case last bil of { "a" => decl1Noun bil ; _ => decl2Noun bil @@ -365,7 +378,7 @@ oper mkN2 = \n,p -> n ** {lock_N2 = <> ; c2 = p} ; - regN2 n g = mkN2 (regN n g) (mkPreposition "av") ; + regN2 n g = mkN2 (regGenN n g) (mkPreposition "av") ; mkN3 = \n,p,q -> n ** {lock_N3 = <> ; c2 = p ; c3 = q} ; regPN n g = {s = \\c => mkCase c n ; g = g} ** {lock_PN = <>} ;