-*- Mode:Text -*-

Ispell consists of two programs: the actual spelling checker, "ispell",
and the hash table builder, "buildhash".  Everything is set up so you
can just say "make install" and have everything happen.  You might want
to edit the makefile, and ispell.h to change the destination of the
program and the hash table.

The dictionary comes from the ITS spell dictionary.  I got it from
"ml:wba;dict 191", although I don't know that this is the copy currenty
in use on the 20's around MIT.

----------------------------------------------------------------------

Addendum:

My eternal gratitude to the author of ispell -- I don't know how I
ever lived without it.  I received his permission to post ispell to
the net and have added a GNU EMACS interface.  Look in the file
ispell.el for installation instructions.

As far as I know, no one informally "supports" this program.  If you
would like to "adopt" it (collect fixes/enhancements and post a new
version periodically), feel free to do so.

I volunteer to collect dictionary diffs and post a composite diff
periodically.  If you add a lot of words to the main dictionary, send
me the diffs between the the modified dictionary and the posted one.
Also, if you have access to a TOPS20 system with a more complete
dictionary in ispell format, send me the diffs if you can.  Just
PLEASE don't dump an entire dictionary to our site!

The dictionary posted is one I snarfed from around here -- after
comparison with the one originally supplied, ours appears a tad more
complete and accurate.

Walt Buehring
Texas Instruments - Computer Science Center

ARPA:  Buehring%TI-CSL@CSNet-Relay
UUCP:  {smu, texsun, im4u, rice} ! ti-csl ! buehring

----------------------------------------------------------------------

The following is the only documentation I could find about the format
of the dictionary.  It was written for the TOPS20 speller that ispell
mimics, so I believe most the information is applicable.  It should be
useful if you want to add words to the main dictionary by hand.  -WB

----------------------------------------------------------------------

11.6  Dictionary flags

     Words  in SPELL's main dictionary (but not the other dictionaries) may
have flags associated with  them  to  indicate  the  legality  of  suffixes
without  the  need  to keep the full suffixed words in the dictionary.  The
flags have "names" consisting of single  letters.    Their  meaning  is  as
follows:

Let  #  and  @  be  "variables"  that can stand for any letter.  Upper case
letters are constants.  "..."  stands  for  any  string  of  zero  or  more
letters,  but note that no word may exist in the dictionary which is not at
least 2 letters long, so, for example, FLY may not be produced  by  placing
the  "Y"  flag  on "F".  Also, no flag is effective unless the word that it
creates is at least 4 letters  long,  so,  for  example,  WED  may  not  be
produced by placing the "D" flag on "WE".

"V" flag:
        ...E --> ...IVE  as in CREATE --> CREATIVE
        if # .ne. E, ...# --> ...#IVE  as in PREVENT --> PREVENTIVE

"N" flag:
        ...E --> ...ION  as in CREATE --> CREATION
        ...Y --> ...ICATION  as in MULTIPLY --> MULTIPLICATION
        if # .ne. E or Y, ...# --> ...#EN  as in FALL --> FALLEN

"X" flag:
        ...E --> ...IONS  as in CREATE --> CREATIONS
        ...Y --> ...ICATIONS  as in MULTIPLY --> MULTIPLICATIONS
        if # .ne. E or Y, ...# --> ...#ENS  as in WEAK --> WEAKENS

"H" flag:
        ...Y --> ...IETH  as in TWENTY --> TWENTIETH
        if # .ne. Y, ...# --> ...#TH  as in HUNDRED --> HUNDREDTH

"Y" FLAG:
        ... --> ...LY  as in QUICK --> QUICKLY

"G" FLAG:
        ...E --> ...ING  as in FILE --> FILING
        if # .ne. E, ...# --> ...#ING  as in CROSS --> CROSSING

"J" FLAG"
        ...E --> ...INGS  as in FILE --> FILINGS
        if # .ne. E, ...# --> ...#INGS  as in CROSS --> CROSSINGS

"D" FLAG:
        ...E --> ...ED  as in CREATE --> CREATED
        if @ .ne. A, E, I, O, or U,
                ...@Y --> ...@IED  as in IMPLY --> IMPLIED
        if # .ne. E or Y, or (# = Y and @ = A, E, I, O, or U)
                ...@# --> ...@#ED  as in CROSS --> CROSSED
                                or CONVEY --> CONVEYED
"T" FLAG:
        ...E --> ...EST  as in LATE --> LATEST
        if @ .ne. A, E, I, O, or U,
                ...@Y --> ...@IEST  as in DIRTY --> DIRTIEST
        if # .ne. E or Y, or (# = Y and @ = A, E, I, O, or U)
                ...@# --> ...@#EST  as in SMALL --> SMALLEST
                                or GRAY --> GRAYEST

"R" FLAG:
        ...E --> ...ER  as in SKATE --> SKATER
        if @ .ne. A, E, I, O, or U,
                ...@Y --> ...@IER  as in MULTIPLY --> MULTIPLIER
        if # .ne. E or Y, or (# = Y and @ = A, E, I, O, or U)
                ...@# --> ...@#ER  as in BUILD --> BUILDER
                                or CONVEY --> CONVEYER

"Z FLAG:
        ...E --> ...ERS  as in SKATE --> SKATERS
        if @ .ne. A, E, I, O, or U,
                ...@Y --> ...@IERS  as in MULTIPLY --> MULTIPLIERS
        if # .ne. E or Y, or (# = Y and @ = A, E, I, O, or U)
                ...@# --> ...@#ERS  as in BUILD --> BUILDERS
                                or SLAY --> SLAYERS

"S" FLAG:
        if @ .ne. A, E, I, O, or U,
                ...@Y --> ...@IES  as in IMPLY --> IMPLIES
        if # .eq. S, X, Z, or H,
                ...# --> ...#ES  as in FIX --> FIXES
        if # .ne. S, X, Z, H, or Y, or (# = Y and @ = A, E, I, O, or U)
                ...@# --> ...@#S  as in BAT --> BATS
                                or CONVEY --> CONVEYS

"P" FLAG:
        if @ .ne. A, E, I, O, or U,
                ...@Y --> ...@INESS  as in CLOUDY --> CLOUDINESS
        if # .ne. Y, or @ = A, E, I, O, or U,
                ...@# --> ...@#NESS  as in LATE --> LATENESS
                                or GRAY --> GRAYNESS

"M" FLAG:
        ... --> ...'S  as in DOG --> DOG'S

----------------------------------------------------------------------

[Whew!  That's all very nice, but how about a quick reference...  -WB]

V -  ive
N -  ion, tion, en
X -  ions, ications, ens
H -  th, ieth
Y -  ly
G -  ing
J -  ings
D -  ed
T -  est
R -  er
Z -  ers
S -  s, es, ies
P -  ness, iness
M -  's
