ISPELL

Section: Devices and Network Interfaces (4)
Index Return to Main Contents
 

NAME

ispell - format of ispell dictionaries  

DESCRIPTION

Dictionaries for ispell(1) come in two formats: raw, and unhashed. The hashed dictionary is generated by buildhash (see ispell(1)) from the raw dictionary, and is not described here.

A raw ispell dictionary (either the main dictionary or your own personal dictionary) contains a list of words, one per line. Each word may optionally be followed by a slash ("/") and one or more flags, which modify the root word as explained below. Case is significant in the root word, but ignored in the flags. The dictionary does not need to be sorted.

The case of the root word controls the case of words accepted by ispell, as follows:

(1)
If the root word appears only in lower case (e.g., "bob"), it will be accepted in lower case, capitalized, or all capitals.
(2)
If the root word appears capitalized (e.g., "Robert"), it will be not be accepted in all-lower case, but will be accepted capitalized or all in capitals.
(3)
If the root word appears all in capitals (e.g., "UNIX"), it will only be accepted all in capitals.
(4)
If the root word appears with a "funny" capitalization (e.g., "ITCorp"), a word will be accepted only if it follows that capitalization, or if it appears all in capitals.
(5)
More than one capitalization of a root word may appear in the dictionary. Flags from different capitalizations are combined by OR-ing them together.

Redundant capitalizations (e.g., "bob" and "Bob") will be combined by buildhash and by ispell (for personal dictionaries), and can be removed from a raw dictionary by munchlist.

For example, the dictionary:

bob
Robert
UNIX
ITcorp
ITCorp

will accept "bob," "Bob," "BOB," "Robert," "ROBERT," "UNIX," "ITcorp," "ITCorp," and "ITCORP," and will reject all others. Some of the unacceptable forms are "bOb," "robert," "Unix," and "ItCorp."

As mentioned above, root words in any dictionary may be extended by flags. Each flag is a single alphabetic character, which represents a suffix that may be added to the root to form a new word. For example, the "D" flag can be added to "bathe" to make "bathed". Since flags are represented as a single bit in the hashed dictionary, this results in significant space savings. The munchlist script will reduce an existing raw dictionary by adding flags when possible.

When a word is extended with a suffix, the suffix will be accepted only if it appears in the same case as the final letter of the word. Thus, for example, the entry "UNIX/M" in the main dictionary ("M" means add an apostrophe and an "s" to make a possessive) would accept "UNIX'S" but would reject "UNIX's". If "UNIX's" is legal, it must appear as a separate dictionary entry, and it will not be combined by munchlist.

In the following discussion of the flags, 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".

The meaning of the flags is as follows:

V

...e --> ...ive as in create --> creative

if # .ne. e, ...# --> ...#ive as in prevent --> preventive
N

...e --> ...ion as in create --> creation

...y --> ...ication as in multiply --> multiplication

if # .ne. e or y, ...# --> ...#en as in fall --> fallen
X

...e --> ...ions as in create --> creations

...y --> ...ications as in multiply --> multiplications

if # .ne. e or y, ...# --> ...#ens as in weak --> weakens
H

...y --> ...ieth as in twenty --> twentieth

if # .ne. y, ...# --> ...#th as in hundred --> hundredth
Y

... --> ...ly as in quick --> quickly
G

...e --> ...ing as in file --> filing

if # .ne. e, ...# --> ...#ing as in cross --> crossing
J

...e --> ...ings as in file --> filings

if # .ne. e, ...# --> ...#ings as in cross --> crossings
D

...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

...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

...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

...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

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

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

... --> ...'s as in dog --> dog's

To summarize more briefly:

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
 

SEE ALSO

ispell(1)


 

Index

NAME
DESCRIPTION
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 07:15:11 GMT, March 03, 2023