English irregular verbs

This commit is contained in:
aarne
2005-01-20 21:33:38 +00:00
parent 26f6e9b53c
commit f831c02faa
5 changed files with 658 additions and 4 deletions

View File

@@ -0,0 +1,49 @@
module Main where
import List
-- create a GF file from a word form list:
-- one entry per line, newline or tab separated;
-- variants separated by /
-- comments are lines starting with --
-- example line: bid bid/bade bid/bidden
-- example resource: http://www2.gsu.edu/~wwwesl/egw/verbs.htm
-- parameters, depending on language
infile = "verbs.txt"
outfile = "VerbsEng.gf"
preamble =
"resource VerbsEng = open ResourceEng, MorphoEng in {\n" ++
" oper vIrreg : Str -> Str -> Str -> V = \\x,y,z ->\n" ++
" mkVerbIrreg x y z ** {s1 = [] ; lock_V = <>} ;\n\n"
oper = "vIrreg"
cat = "V"
name s = s ++ "_V"
ending = "}\n"
main :: IO ()
main = do
ss <- readFile infile >>= return . filter (not . null) . lines
writeFile outfile preamble
mapM_ (appendFile outfile . mkOne . words) (filter notComment ss)
appendFile outfile ending
notComment = (/="--") . take 2
mkOne :: [String] -> String
mkOne ws@(v:_) =
" oper " ++ name v ++ " : " ++ cat ++ " = " ++
oper ++ " " ++ unwords (map arg ws) ++ " ;\n"
where
arg w = case variants w of
[s] -> quote s
vs -> "(variants {" ++
unwords (intersperse ";" (map quote vs)) ++ "})"
quote s = "\"" ++ s ++ "\""
variants = chopBy '/'
chopBy c s = case span (/= c) s of
(w1,_:w2) -> w1 : chopBy c w2
(w1,_) -> [w1]

View File

@@ -11,6 +11,23 @@
resource MorphoEng = TypesEng ** open Prelude, (Predef=Predef) in {
--2 Phonology
--
-- To regulate the use of endings for both nouns, adjectives, and verbs:
oper
y2ie : Str -> Str -> Str = \fly,s ->
let y = last fly in
case y of {
"a" => fly + "s" ;
"e" => fly + "s" ;
"o" => fly + "s" ;
"u" => fly + "s" ;
_ => init fly ++ "ies"
} ;
--2 Nouns
--
-- For conciseness and abstraction, we define a worst-case macro for
@@ -165,6 +182,32 @@ oper
}
} ;
-- This is what we use to derive the irregular forms in almost all cases
mkVerbIrreg : (_,_,_ : Str) -> VerbP3 = \bite,bit,bitten ->
let bites = case last bite of {
"y" => y2ie bite "s" ;
"s" => init bite + "es" ;
_ => bite + "s"
}
in mkVerbP3 bite bites bit bitten ;
-- This is used to derive regular forms.
mkVerbReg : Str -> VerbP3 = \soak ->
let
soaks = case last soak of {
"y" => y2ie soak "s" ;
"s" => init soak + "es" ;
_ => soak + "s"
} ;
soaked = case last soak of {
"e" => init soak + "s" ;
_ => soak + "ed"
}
in
mkVerbP3 soak soaks soaked soaked ;
mkVerb : (_,_,_ : Str) -> VerbP3 = \ring,rang,rung ->
mkVerbP3 ring (ring + "s") rang rung ;
@@ -181,10 +224,10 @@ oper
mkVerbP3 (cr + "y") (cr + "ies") (cr + "ied") (cr + "ied") ;
verbGen : Str -> VerbP3 = \kill -> case last kill of {
"y" => verbP3y (init "kill") ;
"e" => verbP3y (init "kill") ;
"s" => verbP3s (init "kill") ;
_ => regVerbP3 "kill"
"y" => verbP3y (init kill) ;
"e" => verbP3y (init kill) ;
"s" => verbP3s (init kill) ;
_ => regVerbP3 kill
} ;
verbP3Have = mkVerbP3 "have" "has" "had" "had" ;

View File

@@ -0,0 +1,177 @@
resource VerbsEng = open ResourceEng, MorphoEng in {
oper vIrreg : Str -> Str -> Str -> V = \x,y,z ->
mkVerbIrreg x y z ** {s1 = [] ; lock_V = <>} ;
oper awake_V : V = vIrreg "awake" "awoke" "awoken" ;
oper bear_V : V = vIrreg "bear" "bore" "born" ;
oper beat_V : V = vIrreg "beat" "beat" "beat" ;
oper become_V : V = vIrreg "become" "became" "become" ;
oper begin_V : V = vIrreg "begin" "began" "begun" ;
oper bend_V : V = vIrreg "bend" "bent" "bent" ;
oper beset_V : V = vIrreg "beset" "beset" "beset" ;
oper bet_V : V = vIrreg "bet" "bet" "bet" ;
oper bid_V : V = vIrreg "bid" (variants {"bid" ; "bade"}) (variants {"bid" ; "bidden"}) ;
oper bind_V : V = vIrreg "bind" "bound" "bound" ;
oper bite_V : V = vIrreg "bite" "bit" "bitten" ;
oper bleed_V : V = vIrreg "bleed" "bled" "bled" ;
oper blow_V : V = vIrreg "blow" "blew" "blown" ;
oper break_V : V = vIrreg "break" "broke" "broken" ;
oper breed_V : V = vIrreg "breed" "bred" "bred" ;
oper bring_V : V = vIrreg "bring" "brought" "brought" ;
oper broadcast_V : V = vIrreg "broadcast" "broadcast" "broadcast" ;
oper build_V : V = vIrreg "build" "built" "built" ;
oper burn_V : V = vIrreg "burn" (variants {"burned" ; "burnt"}) (variants {"burned" ; "burnt"}) ;
oper burst_V : V = vIrreg "burst" "burst" "burst" ;
oper buy_V : V = vIrreg "buy" "bought" "bought" ;
oper cast_V : V = vIrreg "cast" "cast" "cast" ;
oper catch_V : V = vIrreg "catch" "caught" "caught" ;
oper choose_V : V = vIrreg "choose" "chose" "chosen" ;
oper cling_V : V = vIrreg "cling" "clung" "clung" ;
oper come_V : V = vIrreg "come" "came" "come" ;
oper cost_V : V = vIrreg "cost" "cost" "cost" ;
oper creep_V : V = vIrreg "creep" "crept" "crept" ;
oper cut_V : V = vIrreg "cut" "cut" "cut" ;
oper deal_V : V = vIrreg "deal" "dealt" "dealt" ;
oper dig_V : V = vIrreg "dig" "dug" "dug" ;
oper dive_V : V = vIrreg "dive" (variants {"dived" ; "dove"}) "dived" ;
oper do_V : V = vIrreg "do" "did" "done" ;
oper draw_V : V = vIrreg "draw" "drew" "drawn" ;
oper dream_V : V = vIrreg "dream" (variants {"dreamed" ; "dreamt"}) (variants {"dreamed" ; "dreamt"}) ;
oper drive_V : V = vIrreg "drive" "drove" "driven" ;
oper drink_V : V = vIrreg "drink" "drank" "drunk" ;
oper eat_V : V = vIrreg "eat" "ate" "eaten" ;
oper fall_V : V = vIrreg "fall" "fell" "fallen" ;
oper feed_V : V = vIrreg "feed" "fed" "fed" ;
oper feel_V : V = vIrreg "feel" "felt" "felt" ;
oper fight_V : V = vIrreg "fight" "fought" "fought" ;
oper find_V : V = vIrreg "find" "found" "found" ;
oper fit_V : V = vIrreg "fit" "fit" "fit" ;
oper flee_V : V = vIrreg "flee" "fled" "fled" ;
oper fling_V : V = vIrreg "fling" "flung" "flung" ;
oper fly_V : V = vIrreg "fly" "flew" "flown" ;
oper forbid_V : V = vIrreg "forbid" "forbade" "forbidden" ;
oper forget_V : V = vIrreg "forget" "forgot" "forgotten" ;
oper forgive_V : V = vIrreg "forgive" "forgave" "forgiven" ;
oper forsake_V : V = vIrreg "forsake" "forsook" "forsaken" ;
oper freeze_V : V = vIrreg "freeze" "froze" "frozen" ;
oper get_V : V = vIrreg "get" "got" "gotten" ;
oper give_V : V = vIrreg "give" "gave" "given" ;
oper go_V : V = vIrreg "go" "went" "gone" ;
oper grind_V : V = vIrreg "grind" "ground" "ground" ;
oper grow_V : V = vIrreg "grow" "grew" "grown" ;
oper hang_V : V = vIrreg "hang" "hung" "hung" ;
oper hear_V : V = vIrreg "hear" "heard" "heard" ;
oper hide_V : V = vIrreg "hide" "hid" "hidden" ;
oper hit_V : V = vIrreg "hit" "hit" "hit" ;
oper hold_V : V = vIrreg "hold" "held" "held" ;
oper hurt_V : V = vIrreg "hurt" "hurt" "hurt" ;
oper keep_V : V = vIrreg "keep" "kept" "kept" ;
oper kneel_V : V = vIrreg "kneel" "knelt" "knelt" ;
oper knit_V : V = vIrreg "knit" "knit" "knit" ;
oper know_V : V = vIrreg "know" "knew" "know" ;
oper lay_V : V = vIrreg "lay" "laid" "laid" ;
oper lead_V : V = vIrreg "lead" "led" "led" ;
oper leap_V : V = vIrreg "leap" (variants {"leaped" ; "lept"}) (variants {"leaped" ; "lept"}) ;
oper learn_V : V = vIrreg "learn" (variants {"learned" ; "learnt"}) (variants {"learned" ; "learnt"}) ;
oper leave_V : V = vIrreg "leave" "left" "left" ;
oper lend_V : V = vIrreg "lend" "lent" "lent" ;
oper let_V : V = vIrreg "let" "let" "let" ;
oper lie_V : V = vIrreg "lie" "lay" "lain" ;
oper light_V : V = vIrreg "light" (variants {"lighted" ; "lit"}) "lighted" ;
oper lose_V : V = vIrreg "lose" "lost" "lost" ;
oper make_V : V = vIrreg "make" "made" "made" ;
oper mean_V : V = vIrreg "mean" "meant" "meant" ;
oper meet_V : V = vIrreg "meet" "met" "met" ;
oper misspell_V : V = vIrreg "misspell" (variants {"misspelled" ; "misspelt"}) (variants {"misspelled" ; "misspelt"}) ;
oper mistake_V : V = vIrreg "mistake" "mistook" "mistaken" ;
oper mow_V : V = vIrreg "mow" "mowed" (variants {"mowed" ; "mown"}) ;
oper overcome_V : V = vIrreg "overcome" "overcame" "overcome" ;
oper overdo_V : V = vIrreg "overdo" "overdid" "overdone" ;
oper overtake_V : V = vIrreg "overtake" "overtook" "overtaken" ;
oper overthrow_V : V = vIrreg "overthrow" "overthrew" "overthrown" ;
oper pay_V : V = vIrreg "pay" "paid" "paid" ;
oper plead_V : V = vIrreg "plead" "pled" "pled" ;
oper prove_V : V = vIrreg "prove" "proved" (variants {"proved" ; "proven"}) ;
oper put_V : V = vIrreg "put" "put" "put" ;
oper quit_V : V = vIrreg "quit" "quit" "quit" ;
oper read_V : V = vIrreg "read" "read" "read" ;
oper rid_V : V = vIrreg "rid" "rid" "rid" ;
oper ride_V : V = vIrreg "ride" "rode" "ridden" ;
oper ring_V : V = vIrreg "ring" "rang" "rung" ;
oper rise_V : V = vIrreg "rise" "rose" "risen" ;
oper run_V : V = vIrreg "run" "ran" "run" ;
oper saw_V : V = vIrreg "saw" "sawed" (variants {"sawed" ; "sawn"}) ;
oper say_V : V = vIrreg "say" "said" "said" ;
oper see_V : V = vIrreg "see" "saw" "seen" ;
oper seek_V : V = vIrreg "seek" "sought" "sought" ;
oper sell_V : V = vIrreg "sell" "sold" "sold" ;
oper send_V : V = vIrreg "send" "sent" "sent" ;
oper set_V : V = vIrreg "set" "set" "set" ;
oper sew_V : V = vIrreg "sew" "sewed" (variants {"sewed" ; "sewn"}) ;
oper shake_V : V = vIrreg "shake" "shook" "shaken" ;
oper shave_V : V = vIrreg "shave" "shaved" (variants {"shaved" ; "shaven"}) ;
oper shear_V : V = vIrreg "shear" "shore" "shorn" ;
oper shed_V : V = vIrreg "shed" "shed" "shed" ;
oper shine_V : V = vIrreg "shine" "shone" "shone" ;
oper shoe_V : V = vIrreg "shoe" "shoed" (variants {"shoed" ; "shod"}) ;
oper shoot_V : V = vIrreg "shoot" "shot" "shot" ;
oper show_V : V = vIrreg "show" "showed" (variants {"showed" ; "shown"}) ;
oper shrink_V : V = vIrreg "shrink" "shrank" "shrunk" ;
oper shut_V : V = vIrreg "shut" "shut" "shut" ;
oper sing_V : V = vIrreg "sing" "sang" "sung" ;
oper sink_V : V = vIrreg "sink" "sank" "sunk" ;
oper sit_V : V = vIrreg "sit" "sat" "sat" ;
oper sleep_V : V = vIrreg "sleep" "slept" "slept" ;
oper slay_V : V = vIrreg "slay" "slew" "slain" ;
oper slide_V : V = vIrreg "slide" "slid" "slid" ;
oper sling_V : V = vIrreg "sling" "slung" "slung" ;
oper slit_V : V = vIrreg "slit" "slit" "slit" ;
oper smite_V : V = vIrreg "smite" "smote" "smitten" ;
oper sow_V : V = vIrreg "sow" "sowed" (variants {"sowed" ; "sown"}) ;
oper speak_V : V = vIrreg "speak" "spoke" "spoken" ;
oper speed_V : V = vIrreg "speed" "sped" "sped" ;
oper spend_V : V = vIrreg "spend" "spent" "spent" ;
oper spill_V : V = vIrreg "spill" (variants {"spilled" ; "spilt"}) (variants {"spilled" ; "spilt"}) ;
oper spin_V : V = vIrreg "spin" "spun" "spun" ;
oper spit_V : V = vIrreg "spit" (variants {"spit" ; "spat"}) "spit" ;
oper split_V : V = vIrreg "split" "split" "split" ;
oper spread_V : V = vIrreg "spread" "spread" "spread" ;
oper spring_V : V = vIrreg "spring" (variants {"sprang" ; "sprung"}) "sprung" ;
oper stand_V : V = vIrreg "stand" "stood" "stood" ;
oper steal_V : V = vIrreg "steal" "stole" "stolen" ;
oper stick_V : V = vIrreg "stick" "stuck" "stuck" ;
oper sting_V : V = vIrreg "sting" "stung" "stung" ;
oper stink_V : V = vIrreg "stink" "stank" "stunk" ;
oper stride_V : V = vIrreg "stride" "strod" "stridden" ;
oper strike_V : V = vIrreg "strike" "struck" "struck" ;
oper string_V : V = vIrreg "string" "strung" "strung" ;
oper strive_V : V = vIrreg "strive" "strove" "striven" ;
oper swear_V : V = vIrreg "swear" "swore" "sworn" ;
oper sweep_V : V = vIrreg "sweep" "swept" "swept" ;
oper swell_V : V = vIrreg "swell" "swelled" (variants {"swelled" ; "swollen"}) ;
oper swim_V : V = vIrreg "swim" "swam" "swum" ;
oper swing_V : V = vIrreg "swing" "swung" "swung" ;
oper take_V : V = vIrreg "take" "took" "taken" ;
oper teach_V : V = vIrreg "teach" "taught" "taught" ;
oper tear_V : V = vIrreg "tear" "tore" "torn" ;
oper tell_V : V = vIrreg "tell" "told" "told" ;
oper think_V : V = vIrreg "think" "thought" "thought" ;
oper thrive_V : V = vIrreg "thrive" (variants {"thrived" ; "throve"}) "thrived" ;
oper throw_V : V = vIrreg "throw" "threw" "thrown" ;
oper thrust_V : V = vIrreg "thrust" "thrust" "thrust" ;
oper tread_V : V = vIrreg "tread" "trod" "trodden" ;
oper understand_V : V = vIrreg "understand" "understood" "understood" ;
oper uphold_V : V = vIrreg "uphold" "upheld" "upheld" ;
oper upset_V : V = vIrreg "upset" "upset" "upset" ;
oper wake_V : V = vIrreg "wake" "woke" "woken" ;
oper wear_V : V = vIrreg "wear" "wore" "worn" ;
oper weave_V : V = vIrreg "weave" (variants {"weaved" ; "wove"}) (variants {"weaved" ; "woven"}) ;
oper wed_V : V = vIrreg "wed" "wed" "wed" ;
oper weep_V : V = vIrreg "weep" "wept" "wept" ;
oper wind_V : V = vIrreg "wind" "wound" "wound" ;
oper win_V : V = vIrreg "win" "won" "won" ;
oper withhold_V : V = vIrreg "withhold" "withheld" "withheld" ;
oper withstand_V : V = vIrreg "withstand" "withstood" "withstood" ;
oper wring_V : V = vIrreg "wring" "wrung" "wrung" ;
oper write_V : V = vIrreg "write" "wrote" "written" ;
}

View File

@@ -0,0 +1,175 @@
-- http://www2.gsu.edu/~wwwesl/egw/verbs.htm
awake awoke awoken
-- be was, were been
bear bore born
beat beat beat
become became become
begin began begun
bend bent bent
beset beset beset
bet bet bet
bid bid/bade bid/bidden
bind bound bound
bite bit bitten
bleed bled bled
blow blew blown
break broke broken
breed bred bred
bring brought brought
broadcast broadcast broadcast
build built built
burn burned/burnt burned/burnt
burst burst burst
buy bought bought
cast cast cast
catch caught caught
choose chose chosen
cling clung clung
come came come
cost cost cost
creep crept crept
cut cut cut
deal dealt dealt
dig dug dug
dive dived/dove dived
do did done
draw drew drawn
dream dreamed/dreamt dreamed/dreamt
drive drove driven
drink drank drunk
eat ate eaten
fall fell fallen
feed fed fed
feel felt felt
fight fought fought
find found found
fit fit fit
flee fled fled
fling flung flung
fly flew flown
forbid forbade forbidden
forget forgot forgotten
-- forego (forgo) forewent foregone
forgive forgave forgiven
forsake forsook forsaken
freeze froze frozen
get got gotten
give gave given
go went gone
grind ground ground
grow grew grown
hang hung hung
hear heard heard
hide hid hidden
hit hit hit
hold held held
hurt hurt hurt
keep kept kept
kneel knelt knelt
knit knit knit
know knew know
lay laid laid
lead led led
leap leaped/lept leaped/lept
learn learned/learnt learned/learnt
leave left left
lend lent lent
let let let
lie lay lain
light lighted/lit lighted
lose lost lost
make made made
mean meant meant
meet met met
misspell misspelled/misspelt misspelled/misspelt
mistake mistook mistaken
mow mowed mowed/mown
overcome overcame overcome
overdo overdid overdone
overtake overtook overtaken
overthrow overthrew overthrown
pay paid paid
plead pled pled
prove proved proved/proven
put put put
quit quit quit
read read read
rid rid rid
ride rode ridden
ring rang rung
rise rose risen
run ran run
saw sawed sawed/sawn
say said said
see saw seen
seek sought sought
sell sold sold
send sent sent
set set set
sew sewed sewed/sewn
shake shook shaken
shave shaved shaved/shaven
shear shore shorn
shed shed shed
shine shone shone
shoe shoed shoed/shod
shoot shot shot
show showed showed/shown
shrink shrank shrunk
shut shut shut
sing sang sung
sink sank sunk
sit sat sat
sleep slept slept
slay slew slain
slide slid slid
sling slung slung
slit slit slit
smite smote smitten
sow sowed sowed/sown
speak spoke spoken
speed sped sped
spend spent spent
spill spilled/spilt spilled/spilt
spin spun spun
spit spit/spat spit
split split split
spread spread spread
spring sprang/sprung sprung
stand stood stood
steal stole stolen
stick stuck stuck
sting stung stung
stink stank stunk
stride strod stridden
strike struck struck
string strung strung
strive strove striven
swear swore sworn
sweep swept swept
swell swelled swelled/swollen
swim swam swum
swing swung swung
take took taken
teach taught taught
tear tore torn
tell told told
think thought thought
thrive thrived/throve thrived
throw threw thrown
thrust thrust thrust
tread trod trodden
understand understood understood
uphold upheld upheld
upset upset upset
wake woke woken
wear wore worn
weave weaved/wove weaved/woven
wed wed wed
weep wept wept
wind wound wound
win won won
withhold withheld withheld
withstand withstood withstood
wring wrung wrung
write wrote written

210
lib/resource/frequent.txt Normal file
View File

@@ -0,0 +1,210 @@
-- A
big
small
young
old
new
good
bad
important
dirty
clean
beautiful
ugly
clever
stupid
hot
cold
warm
long
short
thick
thin
broad
narrow
red
blue
yellow
black
white
green
brown
-- V
come
go
sleep
become
live
die
walk
run
play
read
write
watch
see
hear
listen
understand
speak
say
ask
answer
eat
drink
buy
sell
learn
know
forget
teach
like
love
hate
open
close
switch on
switch off
break
hope
fear ---
beg
wait
send
travel
leave
be born ---
find
seek
lose
win
-- N
man
woman
boy
girl
child
baby
cat
dog
cow
horse
sheep
bird
fish
table
chair
car
bike
train
airplane
ship
boat
shop
restaurant
bank
school
university
factory
country
city
village
house
apartment
garden
window
door
floor
ceiling
roof
student
teacher
king
queen
policeman
doctor
priest
church
boss
computer
radio
television
camera
book
newspaper
pen
stove
fridge
lamp
carpet
boot
shoe
trousers
coat
shirt
sock
cap
hat
glove
rock
mountain
hill
sea
lake
river
harbour
moon
sun
star
planet
tree
apple
fruit
snake
music
love
art
science
religion
industry
war
peace
milk
wine
beer
water
bread
meat
cheese
butter
oil
paper
wood
iron
steel
gold
silver
stone
plastic
rubber
leather
mother
father
brother
sister
cousin
friend
enemy