From f77fb61715f0a0774dea7a36afbfb1ec1cc6b99f Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 16 Jan 2006 10:37:51 +0000 Subject: [PATCH] started BasicGer --- lib/prelude/Prelude.gf | 2 +- lib/resource-1.0/german/BasicGer.gf | 453 ++++++++++++------------ lib/resource-1.0/german/ParadigmsGer.gf | 46 ++- lib/resource-1.0/german/log.txt | 2 + 4 files changed, 274 insertions(+), 229 deletions(-) diff --git a/lib/prelude/Prelude.gf b/lib/prelude/Prelude.gf index bf4537105..300e387a1 100644 --- a/lib/prelude/Prelude.gf +++ b/lib/prelude/Prelude.gf @@ -30,7 +30,7 @@ oper postfixSS : Str -> SS -> SS = \f,x -> ss (x.s ++ f) ; embedSS : Str -> Str -> SS -> SS = \f,g,x -> ss (f ++ x.s ++ g) ; - id : (A : Type) -> A -> A ; + id : (A : Type) -> A -> A = \_,a -> a ; -- discontinuous SD2 = {s1,s2 : Str} ; diff --git a/lib/resource-1.0/german/BasicGer.gf b/lib/resource-1.0/german/BasicGer.gf index e5966d1ac..3b1279b86 100644 --- a/lib/resource-1.0/german/BasicGer.gf +++ b/lib/resource-1.0/german/BasicGer.gf @@ -1,225 +1,228 @@ -----# -path=.:prelude --- ---concrete BasicGer of Basic = CatGer ** open ParadigmsGer in { --- ---flags --- startcat=Phr ; lexer=textlit ; unlexer=text ; --- optimize=all ; --- ---lin --- airplane_N = regN "airplane" ; --- answer_V2S = mkV2S (regV "answer") "to" ; --- apartment_N = regN "apartment" ; --- apple_N = regN "apple" ; --- art_N = regN "art" ; --- ask_V2Q = mkV2Q (regV "ask") [] ; --- baby_N = regN "baby" ; --- bad_A = regADeg "bad" ; --- bank_N = regN "bank" ; --- beautiful_A = regADeg "beautiful" ; --- become_VA = mkVA (irregV "become" "became" "become") ; --- beer_N = regN "beer" ; --- beg_V2V = mkV2V (regDuplV "beg") [] "to" ; --- big_A = regADeg "big" ; --- bike_N = regN "bike" ; --- bird_N = regN "bird" ; --- black_A = regADeg "black" ; --- blue_A = regADeg "blue" ; --- boat_N = regN "boat" ; --- book_N = regN "book" ; --- boot_N = regN "boot" ; --- boss_N = regN "boss" ; --- boy_N = regN "boy" ; --- bread_N = regN "bread" ; --- break_V2 = dirV2 (irregV "break" "broke" "broken") ; --- broad_A = regADeg "broad" ; --- brother_N2 = regN2 "brother" ; --- brown_A = regADeg "brown" ; --- butter_N = regN "butter" ; --- buy_V2 = dirV2 (irregV "buy" "bought" "bought") ; --- camera_N = regN "camera" ; --- cap_N = regN "cap" ; --- car_N = regN "car" ; --- carpet_N = regN "carpet" ; --- cat_N = regN "cat" ; --- ceiling_N = regN "ceiling" ; --- chair_N = regN "chair" ; --- cheese_N = regN "cheese" ; --- child_N = mk2N "child" "children" ; --- church_N = regN "church" ; --- city_N = regN "city" ; --- clean_A = regADeg "clean" ; --- clever_A = regADeg "clever" ; --- close_V2 = dirV2 (regV "close") ; --- coat_N = regN "coat" ; --- cold_A = regADeg "cold" ; --- come_V = (irregV "come" "came" "come") ; --- computer_N = regN "computer" ; --- country_N = regN "country" ; --- cousin_N = regN "cousin" ; --- cow_N = regN "cow" ; --- die_V = (regV "die") ; --- dirty_A = regADeg "dirty" ; --- distance_N3 = mkN3 (regN "distance") "from" "to" ; --- doctor_N = regN "doctor" ; --- dog_N = regN "dog" ; --- door_N = regN "door" ; --- drink_V2 = dirV2 (irregV "drink" "drank" "drunk") ; --- easy_A2V = mkA2V (regA "easy") "for" ; --- eat_V2 = dirV2 (irregV "eat" "ate" "eaten") ; --- empty_A = regADeg "empty" ; --- enemy_N = regN "enemy" ; --- factory_N = regN "factory" ; --- father_N2 = regN2 "father" ; --- fear_VS = mkVS (regV "fear") ; --- find_V2 = dirV2 (irregV "find" "found" "found") ; --- fish_N = mk2N "fish" "fish" ; --- floor_N = regN "floor" ; --- forget_V2 = dirV2 (irregV "forget" "forgot" "forgotten") ; --- fridge_N = regN "fridge" ; --- friend_N = regN "friend" ; --- fruit_N = regN "fruit" ; --- fun_AV = mkAV (regA "fun") ; --- garden_N = regN "garden" ; --- girl_N = regN "girl" ; --- glove_N = regN "glove" ; --- gold_N = regN "gold" ; --- good_A = mkADeg "good" "well" "better" "best" ; --- go_V = (mkV "go" "goes" "went" "gone" "going") ; --- green_A = regADeg "green" ; --- harbour_N = regN "harbour" ; --- hate_V2 = dirV2 (regV "hate") ; --- hat_N = regN "hat" ; --- have_V2 = dirV2 (mkV "have" "has" "had" "had" "having") ; --- hear_V2 = dirV2 (irregV "hear" "heard" "heard") ; --- hill_N = regN "hill" ; --- hope_VS = mkVS (regV "hope") ; --- horse_N = regN "horse" ; --- hot_A = regADeg "hot" ; --- house_N = regN "house" ; --- important_A = compoundADeg (regA "important") ; --- industry_N = regN "industry" ; --- iron_N = regN "iron" ; --- king_N = regN "king" ; --- know_V2 = dirV2 (irregV "know" "knew" "known") ; --- lake_N = regN "lake" ; --- lamp_N = regN "lamp" ; --- learn_V2 = dirV2 (regV "learn") ; --- leather_N = regN "leather" ; --- leave_V2 = dirV2 (irregV "leave" "left" "left") ; --- like_V2 = dirV2 (regV "like") ; --- listen_V2 = dirV2 (regV "listen") ; --- live_V = (regV "live") ; --- long_A = regADeg "long" ; --- lose_V2 = dirV2 (irregV "lose" "lost" "lost") ; --- love_N = regN "love" ; --- love_V2 = dirV2 (regV "love") ; --- man_N = mk2N "man" "men" ; --- married_A2 = mkA2 (regA "married") "to" ; --- meat_N = regN "meat" ; --- milk_N = regN "milk" ; --- moon_N = regN "moon" ; --- mother_N2 = regN2 "mother" ; --- mountain_N = regN "mountain" ; --- music_N = regN "music" ; --- narrow_A = regADeg "narrow" ; --- new_A = regADeg "new" ; --- newspaper_N = regN "newspaper" ; --- oil_N = regN "oil" ; --- old_A = regADeg "old" ; --- open_V2 = dirV2 (regV "open") ; --- paint_V2A = mkV2A (regV "paint") [] ; --- paper_N = regN "paper" ; --- peace_N = regN "peace" ; --- pen_N = regN "pen" ; --- planet_N = regN "planet" ; --- plastic_N = regN "plastic" ; --- play_V2 = dirV2 (regV "play") ; --- policeman_N = regN "policeman" ; --- priest_N = regN "priest" ; --- probable_AS = mkAS (regA "probable") ; --- queen_N = regN "queen" ; --- radio_N = regN "radio" ; --- rain_V0 = mkV0 (regV "rain") ; --- read_V2 = dirV2 (irregV "read" "read" "read") ; --- red_A = regADeg "red" ; --- religion_N = regN "religion" ; --- restaurant_N = regN "restaurant" ; --- river_N = regN "river" ; --- rock_N = regN "rock" ; --- roof_N = regN "roof" ; --- rubber_N = regN "rubber" ; --- run_V = (irregDuplV "run" "ran" "run") ; --- say_VS = mkVS (irregV "say" "said" "said") ; --- school_N = regN "school" ; --- science_N = regN "science" ; --- sea_N = regN "sea" ; --- seek_V2 = dirV2 (irregV "seek" "sought" "sought") ; --- see_V2 = dirV2 (irregV "see" "saw" "seen") ; --- sell_V3 = dirV3 (irregV "sell" "sold" "sold") "to" ; --- send_V3 = dirV3 (irregV "send" "sent" "sent") "to" ; --- sheep_N = mk2N "sheep" "sheep" ; --- ship_N = regN "ship" ; --- shirt_N = regN "shirt" ; --- shoe_N = regN "shoe" ; --- shop_N = regN "shop" ; --- short_A = regADeg "short" ; --- silver_N = regN "silver" ; --- sister_N = regN "sister" ; --- sleep_V = (irregV "sleep" "slept" "slept") ; --- small_A = regADeg "small" ; --- snake_N = regN "snake" ; --- sock_N = regN "sock" ; --- speak_V2 = dirV2 (irregV "speak" "spoke" "spoken") ; --- star_N = regN "star" ; --- steel_N = regN "steel" ; --- stone_N = regN "stone" ; --- stove_N = regN "stove" ; --- student_N = regN "student" ; --- stupid_A = regADeg "stupid" ; --- sun_N = regN "sun" ; --- switch8off_V2 = dirV2 (partV (regV "switch") "off") ; --- switch8on_V2 = dirV2 (partV (regV "switch") "on") ; --- table_N = regN "table" ; --- talk_V3 = mkV3 (regV "talk") "to" "about" ; --- teacher_N = regN "teacher" ; --- teach_V2 = dirV2 (irregV "teach" "taught" "taught") ; --- television_N = regN "television" ; --- thick_A = regADeg "thick" ; --- thin_A = regADeg "thin" ; --- train_N = regN "train" ; --- travel_V = (regDuplV "travel") ; --- tree_N = regN "tree" ; --- ---- trousers_N = regN "trousers" ; --- ugly_A = regADeg "ugly" ; --- understand_V2 = dirV2 (irregV "understand" "understood" "understood") ; --- university_N = regN "university" ; --- village_N = regN "village" ; --- wait_V2 = mkV2 (regV "wait") "for" ; --- walk_V = (regV "walk") ; --- warm_A = regADeg "warm" ; --- war_N = regN "war" ; --- watch_V2 = dirV2 (regV "watch") ; --- water_N = regN "water" ; --- white_A = regADeg "white" ; --- window_N = regN "window" ; --- wine_N = regN "wine" ; --- win_V2 = dirV2 (irregV "win" "won" "won") ; --- woman_N = mk2N "woman" "women" ; --- wonder_VQ = mkVQ (regV "wonder") ; --- wood_N = regN "wood" ; --- write_V2 = dirV2 (irregV "write" "wrote" "written") ; --- yellow_A = regADeg "yellow" ; --- young_A = regADeg "young" ; --- --- do_V2 = dirV2 (mkV "do" "does" "did" "done" "doing") ; --- now_Adv = mkAdv "now" ; --- already_Adv = mkAdv "already" ; --- song_N = regN "song" ; --- add_V3 = dirV3 (regV "add") "to" ; --- number_N = regN "number" ; --- put_V2 = mkV2 (irregDuplV "put" "put" "put") [] ; --- stop_V = regDuplV "stop" ; --- jump_V = regV "jump" ; --- ---} ; +--# -path=.:../common:../abstract:../../prelude + +concrete BasicGer of Basic = CatGer ** open ParadigmsGer in { + +flags + optimize=values ; + +lin + airplane_N = regN "Flugzeug" ; + answer_V2S = mkV2S (regV "antworten") datPrep ; + apartment_N = regN "Wohnung" ; + apple_N = reg2N "Apfel" "Äpfel" masculine ; + art_N = reg2N "Kunst" "Künste" feminine ; + ask_V2Q = mkV2Q (regV "fragen") accPrep ; + baby_N = reg2N "Baby" "babies" neuter ; ---- + bad_A = regA "schlecht" ; + bank_N = reg2N "Bank" "Banken" feminine ; ---- + beautiful_A = regA "schön" ; + become_VA = mkVA (mkV "werden" "wird" "werd" "wurde" "würde" "geworden") ; + beer_N = reg2N "Bier" "Biere" neuter ; +---- beg_V2V = mkV2V (mkV "be" "ber""be" "blad" "bett" "bedd") [] "att" ; + big_A = mkA "groß" "groß" "größer""größt" ; + bike_N = reg2N "Fahrrad" "Fahrräder" neuter ; +---- bird_N = reg2N "fågel" "fåglar" ; + black_A = regA "schwarz" ; + blue_A = regA "blau"; + boat_N = reg2N "Boot" "Boote" neuter ; + book_N = reg2N "Buch" "Bücher" neuter ; +-- boot_N = reg2N "stövel" "stövlar" ; + boss_N = reg2N "Chef" "Chefe" masculine ; ---- + boy_N = reg2N "Junge" "Jungen" masculine ; + bread_N = reg2N "Brot" "Brote" neuter ; ---- + break_V2 = dirV2 (prefixV "zer" + (irregV "schlagen" "schlägt" "schlug" "schlüge" "geschlagen")) ; + broad_A = regA "breit" ; + brother_N2 = mkN2 (reg2N "Bruder" "Brüder" masculine) zu_Prep ; ---- + brown_A = regA "braun" ; +---- butter_N = regN "smör" ; + buy_V2 = dirV2 (regV "kaufen") ; +---- camera_N = regN "kamera" ; + cap_N = regN "Mütze" ; + car_N = reg2N "Wagen" "Wagen" masculine ; + carpet_N = reg2N "Teppich" "Teppiche" masculine ; + cat_N = regN "Katze" ; +---- ceiling_N = regN "tak" ; + chair_N = reg2N "Stuhl" "Stühle" masculine ; + cheese_N = regN "Käse" ; + child_N = reg2N "Kind" "Kinder" neuter ; + church_N = regN "Kirche" ; + city_N = reg2N "Stadt" "Städte" feminine ; + clean_A = regA "rein" ; + clever_A = regA "klug" ; ---- + close_V2 = dirV2 (irregV "schliessen" "schließt" "schloß" "schlöße" "geschlossen") ; + coat_N = regN "Jacke" ; + cold_A = regA "Kalt" ; +{- + come_V = (mkV "komma" "kommer" "kom" "kom" "kommit" "kommen") ; + computer_N = reg2N "dator" "datorer" ; + country_N = mkN "land" "landet" "länder" "länderna" ; + cousin_N = reg2N "kusin" "kusinerna" ; + cow_N = reg2N "ko" "kor" ; + die_V = (mkV "dö" "dör" "dö" "dog" "dött" "dödd") ; ---- + distance_N3 = mkN3 (reg2N "avstånd" "avstånd") "från" "till" ; + dirty_A = regADeg "smutsig" ; + doctor_N = reg2N "läkare" "läkare" ; + dog_N = regN "hund" ; + door_N = regN "dörr" ; + 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 = mkADeg "tom" "tomt" "tomma" "tomma" "tommare" "tommast" "tommaste" ; + enemy_N = regN "fiende" ; + factory_N = reg2N "fabrik" "fabriker" ; + father_N2 = mkN2 ((mkN "far" "fadern" "fäder" "fäderna")) "till" ; + fear_VS = mkVS (regV "frukta") ; + find_V2 = dirV2 (irregV "finna" "fann" "funnit") ; + fish_N = reg2N "fisk" "fiskar" ; + floor_N = regN "golv" ; + forget_V2 = dirV2 (mkV "glömma" "glömmer" "glöm" "glömde" "glömt" "glömd") ; + fridge_N = regN "kylskåp" ; + friend_N = mkN "vän" "vännen" "vänner" "vännerna" ; + fruit_N = reg2N "frukt" "frukter" ; + fun_AV = mkAV (regA "rolig") ; + garden_N = regN "trädgård" ; + girl_N = regN "flicka" ; + glove_N = regN "handske" ; + gold_N = regN "guld" ; + good_A = mkADeg "god" "gott" "goda" "goda" "bättre" "bäst" "bästa" ; + go_V = (mkV "gå" "går" "gå" "gick" "gått" "gången") ; + green_A = regADeg "grön" ; + harbour_N = regN "hamn"; + hate_V2 = dirV2 (regV "hata") ; + hat_N = regN "hatt" ; + 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" ; + hope_VS = mkVS ((regV "önska")) ; +---- hope_VS = mkVS (depV (regV "hoppas")) ; + horse_N = regN "häst" ; + hot_A = regADeg "het" ; + house_N = regN "hus" ; + important_A = regADeg "viktig" ; + industry_N = reg2N "industri" "industrier" ; ---- "ien" ?? + iron_N = regN "järn" ; + king_N = (regN "kung") ; + know_V2 = dirV2 (mkV "veta" "vet" "vet" "visste" "vetat" "visst") ; + lake_N = mkN "sjö" "sjön" "sjöar" "sjöarna" ; + lamp_N = regN "lampa"; + learn_V2 = dirV2 (mkV "lära" "lär" "lär" "lärde" "lärt" "lärd") ; ---- refl! + leather_N = mkN "läder" "lädret" "läder" "lädren" ; + leave_V2 = dirV2 (regV "lämna") ; + like_V2 = mkV2 (mk2V "tycka" "tyckte") "om" ; + listen_V2 = mkV2 (regV "lyssna") "på" ; + live_V = (irregV "leva" "levde" "levt") ; ---- ? + long_A = irregADeg "lång" "längre" "längst" ; + lose_V2 = dirV2 (regV "förlora") ; + love_N = regN "kärlek" ; + 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" ; + milk_N = regN "mjölk" ; ---- -ar? + moon_N = regN "måne" ; + mother_N2 = mkN2 (mkN "mor" "modern" "mödrar" "mödrarna") "till" ; + mountain_N = regN "berg" ; + music_N = reg2N "musik" "musiker" ; ---- er ? + narrow_A = regADeg "smal" ; + new_A = mkADeg "ny" "nytt" "nya" "nya" "nyare" "nyast" "nyaste" ; + newspaper_N = regN "tidning" ; + + oil_N = regN "olja" ; + old_A = mkADeg "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" ; + peace_N = regN "fred" ; ---- ar? + pen_N = regN "penna" ; + planet_N = reg2N "planet" "planeter" ; + plastic_N = reg2N "plast" "plaster" ; + play_V2 = dirV2 (regV "spela") ; + policeman_N = reg2N "polis" "poliser" ; + priest_N = reg2N "präst" "präster" ; + probable_AS = mkAS (regA "sannolik") ; + queen_N = regN "drottning" ; + radio_N = regN "radio" ; ---- + rain_V0 = mkV0 (regV "regna") ; + read_V2 = dirV2 (mk2V "läsa" "läste") ; + red_A = mk2ADeg "röd" "rött" ; + religion_N = reg2N "religion" "religioner" ; + restaurant_N = reg2N "restaurang" "restauranger" ; + river_N = mkN "å" "ån" "åar" "åarna" ; + rock_N = regN "sten" ; + roof_N = regN "tak" ; + 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"; + science_N = reg2N "vetenskap" "vetenskaper" ; + sea_N = mkN "sjö" "sjön" "sjöar" "sjöarna" ; + seek_V2 = dirV2 (mk2V "söka" "sökte") ; + see_V2 = dirV2 (mkV "se" "ser" "se" "såg" "sett" "sedd") ; + sell_V3 = dirV3 (irregV "sälja" "sålde" "sålt") "till" ; + send_V3 = dirV3 (regV "skicka") "till" ; + sheep_N = reg2N "får" "får" ; + ship_N = regN "skepp" ; + shirt_N = regN "skjorta" ; + shoe_N = regN "sko" ; + shop_N = reg2N "affär" "affären" ; + short_A = regADeg "kort" ; + silver_N = mkN "silver" "silvret" "silver" "silvren" ; + sister_N = reg2N "syster" "systrar" ; + sleep_V = (irregV "sova" "sov" "sovit") ; + small_A = mkADeg "liten" "litet" "lilla" "små" "mindre" "minst" "minsta" ; + snake_N = regN "orm" ; + sock_N = regN "strumpa" ; + speak_V2 = dirV2 (regV "tala") ; + star_N = regN "stjärna" ; + steel_N = regN "stål" ; + stone_N = regN "sten" ; + stove_N = regN "spis" ; + student_N = reg2N "student" "studenter" ; + stupid_A = mk3ADeg "dum" "dumt" "dumma" ; + sun_N = regN "sol" ; + 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" ; + talk_V3 = mkV3 (regV "prata") "till" "om" ; + teacher_N = reg2N "lärare" "lärare" ; + teach_V2 = dirV2 (regV "undervisa") ; + television_N = reg2N "television" "televisioner" ; + thick_A = regADeg "tjock" ; + thin_A = mk2ADeg "tunn" "tunt" ; + train_N = regN "tåg" ; + travel_V = mk2V "resa" "reste" ; + tree_N = regN "träd" ; + ---- trousers_N = regN "trousers" ; ---- pl t ! + ugly_A = regADeg "ful" ; + understand_V2 = dirV2 (mkV "förstå" "förstår" "förstå" "förstod" "förstått" "förstådd") ; + university_N = regN "universitet" ; + 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 = regADeg "varm" ; + war_N = regN "krig" ; + watch_V2 = mkV2 (regV "titta") "på" ; + water_N = mkN "vatten" "vattnet" "vatten" "vattnen" ; + white_A = regADeg "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" ; + wonder_VQ = mkVQ (regV "undra") ; + wood_N = mkN "trä" "träet" "träen" "träena" ; ---- ? + write_V2 = dirV2 (irregV "skriva" "skrev" "skrivit") ; + yellow_A = regADeg "gul" ; + young_A = irregADeg "ung" "yngre" "yngst" ; + + do_V2 = dirV2 (mkV "göra" "gör" "gör" "gjorde" "gjort" "gjord") ; + now_Adv = mkAdv "nu" ; + already_Adv = mkAdv "redan" ; + song_N = reg2N "sång" "sånger" ; + add_V3 = mkV3 (partV (irregV "lägga" "lade" "lagt") "till") [] "till" ; + number_N = mkN "nummer" "numret" "numren" "numren" ; + put_V2 = mkV2 (mkV "sätta" "sätter" "sätt" "satte" "satt" "satt") [] ; + stop_V = regV "stanna" ; + jump_V = regV "hoppa" ; +-} +} ; diff --git a/lib/resource-1.0/german/ParadigmsGer.gf b/lib/resource-1.0/german/ParadigmsGer.gf index 201ae78aa..06863796c 100644 --- a/lib/resource-1.0/german/ParadigmsGer.gf +++ b/lib/resource-1.0/german/ParadigmsGer.gf @@ -107,7 +107,7 @@ oper -- Adjectives need four forms: two for the positive and one for the other degrees. - mkA : (x1,_,_,x4 : Str) -> A ; -- gut,gute,besser,best + mkA : (x1,_,_,x4 : Str) -> A ; -- gut,gut,besser,best -- The regular adjective formation works for most cases, and includes -- variations such as "teuer - teurer", "böse - böser". @@ -127,7 +127,17 @@ oper -- A preposition is formed from a string and a case. mkPrep : Str -> Case -> Prep ; + +-- Often just a case with the empty string is enough. + accPrep : Prep ; + datPrep : Prep ; + genPrep : Prep ; + +-- A couple of common prepositions (always with the dative). + + von_Prep : Prep ; + zu_Prep : Prep ; --2 Verbs @@ -167,12 +177,13 @@ oper --3 Two-place verbs -- --- Two-place verbs need a preposition, except the special case with direct object. --- (transitive verbs). Notice that a particle comes from the $V$. +-- Two-place verbs need a preposition, except the special case with direct object +-- (accusative, transitive verbs). There is also a case for dative objects. mkV2 : V -> Prep -> V2 ; dirV2 : V -> V2 ; + datV2 : V -> V2 ; --3 Three-place verbs -- @@ -286,6 +297,11 @@ oper mkA2 = \a,p -> a ** {c2 = p ; lock_A2 = <>} ; mkPrep s c = {s = s ; c = c ; lock_Prep = <>} ; + accPrep = mkPrep [] accusative ; + datPrep = mkPrep [] dative ; + genPrep = mkPrep [] genitive ; + von_Prep = mkPrep "von" dative ; + zu_Prep = mkPrep "zu" dative ; mkV geben gibt gib gab gaebe gegeben = let @@ -316,6 +332,30 @@ oper in mkV singen singt sing sang saenge gesungen ; + prefixV p v = {s = v.s ; prefix = p ; lock_V = v.lock_V ; aux = v.aux} ; + habenV v = {s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VHaben} ; + seinV v = {s = v.s ; prefix = v.prefix ; lock_V = v.lock_V ; aux = VSein} ; + + no_geV v = let vs = v.s in { + s = table { + p@(VPastPart _) => Predef.drop 2 (vs ! p) ; + p => vs ! p + } ; + prefix = v.prefix ; lock_V = v.lock_V ; aux = v.aux + } ; + + mkV2 v c = v ** {c2 = c ; lock_V2 = <>} ; + dirV2 v = mkV2 v (mkPrep [] accusative) ; + datV2 v = mkV2 v (mkPrep [] dative) ; + + mkV3 v c d = v ** {c2 = c ; c3 = d ; lock_V3 = <>} ; + dirV3 v p = mkV3 v (mkPrep [] accusative) p ; + accdatV3 v = dirV3 v (mkPrep [] dative) ; + + mkVS v = v ** {lock_VS = <>} ; + mkVQ v = v ** {lock_VQ = <>} ; + mkVV v = v ** {isAux = False ; lock_VV = <>} ; + V0 : Type = V ; V2S, V2V, V2Q, V2A : Type = V2 ; AS, A2S, AV : Type = A ; diff --git a/lib/resource-1.0/german/log.txt b/lib/resource-1.0/german/log.txt index 1c3ced2f1..4e7feb2f3 100644 --- a/lib/resource-1.0/german/log.txt +++ b/lib/resource-1.0/german/log.txt @@ -203,3 +203,5 @@ ParamGer: removed Strong/Weak from AForm to save lexicon storage. Done in agrAdj Only affects NounGer and QuestionGer. Notice that making case analysis on is much less storage-efficient. +ParadigmsGer: completed +