changed regN to be always of type Str -> N

This commit is contained in:
aarne
2006-03-07 10:59:39 +00:00
parent 21202641a1
commit c168b6c489
8 changed files with 363 additions and 322 deletions

View File

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

View File

@@ -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 <bil : Str> 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 = <>} ;