WORDS - Version 1.97FC

William Whitaker


This page provides the Ada source code for a Latin dictionary program for the PC, and the dictionary material sufficient to re-host to other systems.
Instructions below:

The WORDS System

There is a wordsall.zip zip of all the Ada source files to port WORDS, and support programs and data to generate the necessary dictionaries and inflections for re-hosting the WORDS Latin dictionary parsing/translation system on any machine with an Ada 95 compiler. (It can be made to work with Ada 83 also by replacing just the short driver routine.)

This a console program (keyboard entry), without fancy Windows GUI, and has thereby been made system independent.

WORDSALL contains the Ada source files for WORDS

english_support package.ads
english_support package.adb

four supporting programs


and DOS ASCII data files for them to act upon to produce WORDS data files


the other WORDS DOS ASCII supporting files


The process is to download the 197ESALL.ZIP (case sensitive) and unzip into a subdirectory. (If the zip form is unsuitable for your system, I can provide the files in an uncompressed form.) The wordy file names are for compliance with the restrictions of the GNAT system. They may be renamed, and I can provide an alternative. However, the long file names demand an UNZIP that preserves them, if GNAT is to be used.

For example, in a GNAT environment (one would maximally optimize the main program):

gnatmake -O3 words
gnatmake makedict
gnatmake makestem
gnatmake makeefil
gnatmake makeinfl

This produces executables for WORDS, MAKEDICT, MAKESTEM, MAKEEFIL, and MAKEINFL. Executing the latter four against the input respectively of


(when they ask for DICTIONARY say G) producing


Along with ADDONS.LAT and UNIQUES.LAT, this is the set of data for WORDS.

The only problem that has appeared on porting so far is that one must be careful of file names. Problems sometimes turn up but have been easily rectified by inspection. All of my systems are case-independent on file names. If one is running in a case-dependent system (UNIX), this is a point to check. Note that the data files are capitalized, source files are not.

The source is in Ada and therefore very readable, which is not claimed for the logic which is my, not Ada's, fault. The source and data are freely available for anyone to use for any purpose. It may be converted to other languages, used in pieces, or modified in any way without further permission or notification.

There is one oddity that the reader may remark upon. The code is loaded with PUT/print statements which are now commented out. These were used at some time for debug purposes and were just left in. They (mostly) are left justified and may fairly easily be removed for a cleaner presentation. Further there are many blocks of code which during development have been moved or removed, but have in their previous place been left commented. This is also messy. I cannot really justify not having fixed this, but there it is.

Recent Versions

October 2006 - New release of Version 1.97F. There is no change in program. Only change is some corrections to the dictionary (thanks to John White and Jim Stacey). The version number is not changed.

September 2006 - Version 1.97F release. This update contains corrections prompted by user feedback and a somewhat expanded dictionary of 39000 entries.

August 2005 - Version 1.97Ed last release. This is just 1.97E with some corrections prompted by user feedback. The dictionary is somewhat larger - 38000. There is very little algorithm growth.

March 2005 - Version 1.97Ec release. This is just 1.97E with some corrections prompted by user feedback. There is no significant algorithm or vocabulary growth, but the changes are worth the reload.

December 2004 - Version 1.97E release. New version has increased dictionary to 37000 entries, including more ecclesiastical, medieval, and modern Latin. Most of the increase was supplied by John White. There is now a primitive English-to-Latin capability. Changes in parameters and defaults will require users to reset mode files.

13 July 2002 - Version 1.97 still - This very slight update of the code and a very few more entries in the dictionary. It now takes two RETURN/ENTERs to quit the program. The only significant improvement is an attempt to regularize the dictionary. Most a/an/the articles have been removed, especialy from the begining of a meaning. Round () and square [] brackets are now uniform in application.

1 Janurary 2002 - Version 1.97 still - This very slight update of the code is to correct a few horrible mistakes, which apparently have no real affect. This is just for form, and to mark a date. Any new compile should use this version, but no one should go out of his way, unless you have discovered the presence of these errors. (Some DICT.LOC entries may fail. Some special cases in listing of dictionary around UNKNOWN may raise exception.)

31 August 2001 - Version 1.97 - Update concentrates on improving presentation of results to the user. There are no significant improvements to the algorithms, which seem to be quite stable now. The dictionary is now over 30000 entries, with some increase in late and medieval Latin.

The main thrust of this version is to simplify the presentation for the average student. There is now a lot of (default) TRIMming. This is to make the program more friendly to student users. Uncommon/untimely parses are suppressed when there is a much more common/likely solution. Vocatives and locatives are often suppressed. Where such TRIMming has occured, an asterix (*) follows the output. The user can cut out the TRIM by setting a # parameter, and this has been made easier by placing that parameter first in the # menu. The dictionary now contains more than 30000 entries.

The file list_list has been renamed list_sweep, and put_example_line has been removed from list_package to stand alone. .LAT has been added as an extension to those data files previously without extension.

December 2006 - New release - Version 1.97FC. Additional corrections (all by me in this case). Especially note that the text of the meanings has been spellchecked (American spelling). I recommend downloading this version.

15 October 2000 - Version 1.96 still - Some small changes as a result of user feedback. A few errors that crept into the latest version causing words previously handled to raise exception were fixed. There is no change in the dictionary. The changes are corrections and do not amount to a new version, even a subversion. The new code may be recognized by successful handling of the word quempiam". (Thanks DiLaura)

10 September 2000 - Version 1.96 - a small change to the user.
Somewhat larger dictionary - additions in medieval and ecclesiastical - I hope for additional in the near future. One reading the Vulgate will not be disappointed.
There is little algorithmic change, but considerable altering and renaming or date structures. This is completely invisible to the user, and essentially invisible to developers, but it makes it important that there be a new version number.

25 April 2000 Version 1.95a released.
The dictionary is somewhat larger than 1.95
It has somewhat improved output for complex meanings

The 1.95 characteristics are continued and:
It can discriminate on the basis of AGE or FREQ, rejecting unlikely results if there are more common ones. Controlling parameters are introduced. Check the defaults for youe particular application.
Some output (qui) may be a bit better.
One procedure (LIST_LIST) has been added. It is used by LIST_PACKAGE.


There is a TOOLS.ZIP zip of a number of simple text tools (in Ada) used in preparation of WORDS. Thses are mostly trivial, but could be helpful to one working with WORDS. There is a brief HOWTO text which is far from complete. I may do better in the next version.

Return to WORDS home