The directives in common use are listed below, in the form of examples:
# atom A B C 'Node:'. # node a b c ^ |. # hide Root. # show <me>. # vars $x. # vars $x: a b c. # vars $x $y: a b c d. # load 'common.dtr'. # load common. % .dtr suffix assumed, or suffix of precompiled % file, if such a thing exists # load 'common.dtr' 'datrtrix.dtr'. # load common datrtrix. % .dtr suffixes assumed, or suffix of precompiled % files, if such things exist
Note that load is intended to deliver freestanding compilation of the named files. An implementation may choose not to recompile them if they are already available in memory. The load directive is thus distinguished from the proposed include directive discussed below.
Note that the colon gets used in variable declarations to mark the end of the list of variables and the beginning of the range. In the absence of the colon, one can imagine an implementation finding the following pair of directives a bit hard to digest:
# atom '$y' '$z'. # vars $w $x $y $z.
With the exception of # uses, described below, colons have no useful syntactic function to perform in existing or proposed directives and should be eliminated from implementations.
An extended syntax for variable declarations is described on page 187 of the Evans & Gazdar CL paper, and implemented in the current release of Sussex DATR. Recall that that extended sytax permits declarations like these:
# vars $adults: $men $women. # vars $not_z: $letters - z. # vars $consonants: $letters - $vowels. # vars $people: $males $females - $cats $dogs.
It is suggested that the extended syntax be generally adopted. We are not persuaded that it is worth the tokenizer hassles of extending this language further (to include intersection, say).