#
# $Id: engl.aff,v 1.0 1995/30/4
#
# 1995 Ulisses Pinto - jspell version
# This afix table taked some pieces form ENGLISH.AFF
#             (Copyright 1992, 1993, Geoff Kuenning, Granada Hills, CA)
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 3. All modifications to the source code must be clearly marked as
#    such.  Binary redistributions based on modified source code
#    must be clearly marked as modified versions in the documentation
#    and/or other materials provided with the distribution.
# 4. All advertising materials mentioning features or use of this software
#    must display the following acknowledgment:
#      This product includes software developed by Geoff Kuenning and
#      other unpaid contributors.
# 5. The name of Geoff Kuenning may not be used to endorse or promote
#    products derived from this software without specific prior
#    written permission.
#
# THIS SOFTWARE IS PROVIDED BY ULISSES PINTO AND JOSE JOAO ALMEIDA ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF KUENNING OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
#        Affix table for English
#

allaffixes on

nroffchars        ().\\*
texchars        ()\[]{}<\>\\$*.%

# First we declare the character set.  Since it's English, it's easy.
# The only special character is the apostrophe, so that possessives can
# be handled.  We declare it as a boundary character, so that quoting with
# single quotes doesn't confuse things.  The apostrophe is the only
# character that gets such treatment.
#
# We declare the apostrophe first so that "Jon's" collates before "Jonas".
# (This is the way ASCII does it).
#

defstringtype "nroff" "nroff" ".mm" ".ms" ".me" ".man"

boundarychars '
wordchars [a-z] [A-Z]

altstringtype "tex" "tex" ".tex" ".bib"

# Here's a record of flags used, in case you want to add new ones.
# Right now, we fit within the minimal MASKBITS definition.
#
#            ABCDEFGHIJKLMNOPQRSTUVWXYZ
# Used:      *  *  ****  ** * ***** ***
#            A  D  GHIJ  MN P RSTUV XYZ
# Available:  -- --    --  - -     -
#             BC EF    KL  O Q     W
#            A  D  GHIJ  MN P RSTUVW XYZ
# Available:  -- --    --  - -     
#             BC EF    KL  O Q     

# Now the prefix table.  There are only three prefixes that are truly
# frequent in English, and none of them seem to need conditional variations.
#
prefixes

flag *A:
  .           >     RE       ; "FSEM=re"          # enter > reenter

flag *I:
  .           >     IN       ; "FSEM=not"         # disposed > indisposed

flag *U:
  .           >     UN       ; "FSEM=not"         # natural > unnatural

flag *W:
  [^AEIOUH]   >     DE       ; "FSEM=not"         # select > deselect
  [AEIOUH]    >     DES      ; "FSEM=not"         # select > deselect

# Finally, the suffixes.  These are exactly the suffixes that came out
# with the original "ispell";  I haven't tried to improve them.  The only
# thing I did besides translate them was to add selected cross-product flags.
#
suffixes

flag *p:                      ; "CAT=n"           # plural
  [^SXZHY]    >     S         ; "N=p"             # dog -> dogs
  [SXZ]       >     ES        ; "N=p"             #
  [CS] H      >     ES        ; "N=p"             # dish -> dishes
  [PTAG] H    >     S         ; "N=p"             # graph -> graphs
  [^AEIOU]Y   >     -Y,IES    ; "N=p"             # spy -> spies
  [AEIOU]Y    >     S         ; "N=p"             # boy -> boys

flag *q:                      ; "CAT=n"           # plural irr.
  O          >     ES        ; "N=p"             # hero -> heroes
  I S        >     -IS,ES    ; "N=p"             # basis -> bases
  F          >     -F,VES    ; "N=p"             # belif -> belives
  U S        >     -US,I     ; "N=p"             # stimulus -> stimuli
  A          >     E         ; "N=p"             # formula -> formulae
  U M        >     -UM,A     ; "N=p"             # curriculum -> curricula
  [EI]X      >     -X,CES    ; "N=p"             # index -> indices

#------------------------------------------------------------------
# Verbs

flag *S:                      ; "CAT=v"           # 3rd person - Present
  [^SXZHY]    >     S         ; "T=p,P=3"         # think > thinks
  [SXZH]      >     ES        ; "T=p,P=3"         # fix > fixes
  [^AEIOU]Y   >     -Y,IES    ; "T=p,P=3"         # carry > carries
  [AEIOU]Y    >     S         ; "T=p,P=3"         # buy > buys

flag *G:                      ; "CAT=v"           # ing (Present Perfect)
  [^EC]       >     ING       ; "T=prp"           # cross > crossing
  [^IEYO]E    >     -E,ING    ; "T=prp"           # like -> liking
  I E         >     -IE,YING  ; "T=prp"           # die -> dying
  [EYO]E      >     ING       ; "T=prp"           # agree -> agreeing
  C           >     KING      ; "T=prp"           # traffic -> trafficking


flag *D:                      ; "CAT=v"           # Past
  [^EYC]      >     ED        ; "T=pa"            # cross > crossed
  E           >     D         ; "T=pa"            # create > created
  [^AEIOU]Y   >     -Y,IED    ; "T=pa"            # carry > carried
  [AEIOU]Y    >     ED        ; "T=pa"            # convey > conveyed
  C           >     KED       ; "T=pa"            # traffic -> trafficked

flag *g:                      ; "CAT=v"       # ing (Present Perfect) 2� flag
  B           >     BING      ; "T=prp"           #
  D           >     DING      ; "T=prp"           #
  G           >     GING      ; "T=prp"           #
  L           >     LING      ; "T=prp"           #
  M           >     MING      ; "T=prp"           #
  N           >     NING      ; "T=prp"           #
  P           >     PING      ; "T=prp"           #
  R           >     RING      ; "T=prp"           # bar -> barring
  T           >     TING      ; "T=prp"           # permit -> permitting
  V           >     VING      ; "T=prp"           #

flag *d:                      ; "CAT=v"           # Past (2� flag)
  B           >     BED       ; "T=pa"            #
  D           >     DED       ; "T=pa"            #
  G           >     GED       ; "T=pa"            #
  L           >     LED       ; "T=pa"            #
  M           >     MED       ; "T=pa"            #
  N           >     NED       ; "T=pa"            #
  P           >     PED       ; "T=pa"            #
  R           >     RED       ; "T=pa"            # bar -> barred
  T           >     TED       ; "T=pa"            # permit -> permitted
  V           >     VED       ; "T=pa"            #

#------------------------------------------------------------------

flag T:                       ; "CAT=adj"
  E           >     ST        ; "GR=sa"           # late > latest
  [^AEIOU]Y   >     -Y,IEST   ; "GR=sa"           # early > earliest
  [AEIOU]Y    >     EST       ; "GR=sa"           # gray > grayest
  [^EY]       >     EST       ; "GR=sa"           # small > smallest

flag *t:                      ; "CAT=adj"          # Past (2� flag)
  D           >     DEST      ; "GR=sa"            #
  G           >     GEST      ; "GR=sa"            #
  L           >     LEST      ; "GR=sa"            #
  M           >     MEST      ; "GR=sa"            #
  N           >     NEST      ; "GR=sa"            #
  T           >     TEST      ; "GR=sa"            #

flag *R:                      ; "CAT=adj"
  E           >     R         ; "GR=csup"         # late > later
  [^AEIOU]Y   >     -Y,IER    ; "GR=csup"         # early > earlier
  [AEIOU]Y    >     ER        ; "GR=csup"         # gray > grayer
  [^EY]       >     ER        ; "GR=csup"         # small -> smaller

flag *r:                      ; "CAT=adj"           # Past (2� flag)
  D           >     DER       ; "GR=csup"            #
  G           >     GER       ; "GR=csup"            #
  L           >     LER       ; "GR=csup"            #
  M           >     MER       ; "GR=csup"            #
  N           >     NER       ; "GR=csup"            #
  T           >     TER       ; "GR=csup"            #


#------------------------------------------------------------------

flag *Z:
  E           >     R         ; "CAT=n"           # skate > skater
  [^AEIOU]Y   >     -Y,IER    ; "CAT=n"           # multiply > multiplier
  [AEIOU]Y    >     ER        ; "CAT=n"           # convey > conveyer
  [^EY]       >     ER        ; "CAT=n"           # build > builder


flag *z:
  E           >     -E,AL     ; "CAT=adj"         # 
  [^E]        >      AL       ; "CAT=adj"         # 

flag V:                       ; "CAT=v"
  E           >     -E,IVE    ; "CAT=adj,FSEM=ive" # create > creative
  [^E]        >     IVE       ; "CAT=adj,FSEM=ive" # prevent > preventive

flag *N:
  E           >     -E,ION    ; "CAT=n"           # create > creation
  Y           >     -Y,ICATION; "CAT=n"           # multiply > multiplication
  [^EY]       >     EN        #;                # fall > fallen  ??????????????

flag *P:                      ; "CAT=adj"
  [^AEIOU]Y   >     -Y,INESS  ; "CAT=n"           # cloudy > cloudiness
  [AEIOU]Y    >     NESS      ; "CAT=n"           # gray > grayness
  [^Y]        >     NESS      ; "CAT=n"           # late > lateness

flag *Y:                      ; "CAT=adj"
  .           >     LY        ; "CAT=adv,FSEM=ly" # quick > quickly

flag H:
  Y           >     -Y,IETH   ; "CAT=nord"        # twenty > twentieth
  [^Y]        >     TH        ; "CAT=nord"        # hundred > hundredth

flag *M:
  .           >     'S                # dog > dog's   ??????????????