Subject: FORMES 1.5 - French verb drill
Environment: DOS, SUNOS, ULTRIX
Archive-name: FORMES15


BLURB
-----

Formes 1.5 is a simple French verb drill program.  It presents a student
with a series of fill-in-the-blank phrases constructed by the program by
expanding templates with verbs and subject pronouns selected at random.
This random selection is weighted by previous performance--groups of
similarly conjugated verbs and tenses that elicit incorrect responses
are emphasized in subsequent questioning.  The pool of verbs, subject
pronouns and phrase templates can be changed or extended (or abridged)
by the user.

Version 1.5 contains 111 verbs grouped into 46 conjugation classes; 12
subject pronouns; and seven phrase templates that offer the present
indicative, future, compound past, imperfect indicative, conditional,
present subjunctive and pluperfect tenses.  (The infinitive, imperative
and past subjunctive tenses are also available to template writers.)


COMPILING (source code distribution only)
---------  ------ ---- ------------ ----

The source comes with two makefiles: one called ``makefile'' that works
on UNIX and with MicroSoft's new nmake, and a second one called ``dos''
that I have used with with my old MSC3.0 make utility.  The DOS version
invokes the system linker with a response file called ``formes.rsp''.

The program uses few features likely to be system-dependent.  I've seen
it work compiled with an old K&R compiler with 16-bit pointers on an
IBM PC and with Sun's ANSI-C compiler on a SPARC.  If you transfer the
``xobjects'' text file from DOS to UNIX be sure to remove the ASCII CR
characters.


CUSTOMIZING
-----------

Many customizations can be made to Formes 1.5 by editing the ``xobjects''
file.  Subject pronouns, verbs and phrase templates can be added, changed
or deleted from the file to suit the student's individual requirements.
In general, additions to the file are most easily made by duplicating and
then modifying existing entries.  Unwanted entries can be removed outright
or commented-out by prefixing them with a pound sign.

The following accent notation is used throughout the xobjects file:

    Accent        Combination
    ----------    --------------------------
    Acute         A, e, i or o followed by '
    Cedilla       C followed by ,
    Circumflex    A, e, i or o followed by ^
    Grave         A, e, i or o followed by `
    Trema         A, e, i or o followed by "

Subject pronoun entries begin with ``SUBJECT:'' and take one line each.
Next on the line is a three character group that indicates if the word
or phrase represents the first, second or third person (1, 2 or 3); if
it is singular or plural (S or P); and if it is masculine or feminine (M
or F).  The remainder of the line contains the text of the subject word
or phrase.  Here are some examples from the xobjects file:

    SUBJECT: 1SM je
    SUBJECT: 2SM tu
    SUBJECT: 2PM vous
    SUBJECT: 3SF Annick
    SUBJECT: 3PF elles

A simple change you might want to make to the subject entries would be to
adjust the gender of ``je'' and ``Annick et moi'' to conform to your own.
(And of ``tu'', ``vous'', if you want.)

Verb entries make up the bulk of the xobjects file.  Each one begins with
``VERB:'', followed by the infinitive form of the verb and a number that
indicates its conjugation class.  (These numbers follow those used in the
Larousse Dictionnaire Francais Anglais Saturn, 1981.)  Subsequent lines
provide the stems and (for the present indicative, present subjunctive
and imperative tenses) endings of the verb's forms.  Other lines provide
the present and past participles and verb's auxiliary.  An example verb
entry is:

    VERB: e^tre (48)
    {
	PRES-IND: - suis es est sommes e^tes sont 
	PRES-SUB: so- is is it yons yez ient
	IMPERATIVE: so- is yons yez
	IMPERFECT: e't-
	FUTURE: ser-
	PRES-PART: e'tant
	PAST-PART: e'te'
	AUXILIARY: avoir
    }

Note the use of an empty stem for the highly irregular present indicative
tense of this verb.  Empty endings are not allowed so sometimes part of a
stem is removed to each of its endings:

    IMPERATIVE: connai- s ssons ssez 

not

    IMPERATIVE: connais-  sons sez

IMPORTANT NOTE:  If you remove all of the verbs of a particular conjugation
class from the xobjects file, either by commenting them out or by outright
deletion, be sure there are no references to that conjugation class in your
xscores file (as would happen if you had run FORMES to completion sometime
before with the old, larger xobjects file).  One easy way to make sure of
this is to simply delete the xscores file--a new one will be created the
next time you run the program.

Finally, the xobjects file contains phrase (called quiz) templates.  These
are small programs that control the generation of the phrases presented to
the student.  Each one begins with ``QUIZ:'' followed by a title (used to
introduce a set of phrases) and a scoring group number.  After this, lines
that control the selection of subjects and verbs; the conjugation of verbs;
and the construction of the actual quiz phrase follow.  One of the more
complex phrase templates is:

    QUIZ:  (3)
    {
	PERSON p1 
	TEXT-OF Je p1
	VERB aller aller
	CONJUGATE Vais aller PRESENT p1
	VERB boire 
	CONJUGATE Boire boire INFINITIVE
	PERSON p2  p1
	TEXT-OF Il p2
	CONJUGATE A_bu boire PAST p2
	QUIZ Je< >Vais< >Boire< mais >Il< >{A_bu}<.>
	SCORE boire
    }

Six kinds of control statments can appear in the body of a phrase template: 
PERSON, TEXT-OF, VERB, CONJUGATE, QUIZ and SCORE.  Their order is not always
the same but some statements depend on the results of others.  The syntax
and behavior of these six statements are described below.  

1.  PERSON result  [ exclusion ]

    This statement causes a subject pronoun to be selected at random.
    An optional exclusion symbol--the result of a previous PERSON
    statement--can be provided and removes that previous subject from
    consideration.  

2.  TEXT-OF result subject-symbol

    This looks up the display text associated with a subject pronoun
    symbol.  The result is another symbol that can be used in a QUIZ
    statment to follow.

3.  VERB result {  | infinitive }

    This statement causes a verb to be selected either at random (but
    weighted by previous performance) or by particular infinitive.

4.  CONJUGATE result verb-symbol tense subject-symbol

    This statement conjugates a verb (the result of a previous VERB
    statement) in the specified tense and in agreement with the
    specified subject (the result of a previous PERSON statement).

    For ``tense'' substitute one of:  INFINITIVE, PRESENT, IMPERFECT,
    FUTURE, CONDITIONAL, SUBJUNCTIVE, PAST, PLUPERFECT, PAST-SUBJUNCTIVE
    or IMPERATIVE.  (I know, some of these are moods and not tenses.)

    The result is another symbol that can be used in a QUIZ statment
    to follow.

5.  QUIZ symbols-and-literals

    This statement builds a phrase and presents it to the student.
    The string following ``QUIZ'' must contain only

	Literals--strings of characters surrounded by ``<'' and
	``>''--which will appear unchanged in the final phrase;

	Symbols that were the result of previous TEXT-OF and
	CONJUGATE statements; and

	One pair of braces (``{'' and ``}'') to indicated that
	part of the phrase that will be changed into the blank for
	the student to fill in.

6.  SCORE verb-symbol

    This causes the outcome of the last QUIZ statement (did the student
    fill in the blank correctly on the first attempt) to be applied to
    the specified verb's scoring record.

As with verbs, if you delete all of the QUIZ entries for a quiz scoring
group (and currently there is only one entry per scoring group), you
must delete that groups line from your xscores file (or delete the whole
xscores file).

COPYING
-------

Permission is granted to anyone to make or distribute copies of
the program, in any medium, provided that the copyright notice
and permission notice are preserved, and that the distributor
grants the recipient permission for further redistribution as
permitted by this notice.

Copyright (C) 1992-1995 Jeffrey Chilton

Author's E-mail address:  jwc@chilton.com