It’s important for reseq
to be able to process its input
correctly, even if that output came from a different version of
teseq
than reseq
is familiar with. So, it’s
important that reseq
should refuse to continue processing
input if it encounters a line that it doesn’t recognize, but which
might contain important semantic information that effects the output
reseq
should produce.
At the same time, it’d be a shame for reseq
to refuse to
process a line it doesn’t understand, if that line contains
non-critical information. For example, consider delay lines (beginning
with ‘@’). The delay line holds semantic information, to be sure;
but not information that would affect reseq
’s normal
operation (it only has meaning when one of the
--timings or
--replay options has been specified). So, if an older version
of reseq
had existed that did not recognize them, it would
have been a shame if its introduction in the newer release had caused
the older version to refuse to process it.
To address both of these concerns, reseq
has taken the
approach of reserving certain prefixes for use as “semantically
significant” line prefixes, and others for use in lines that
reseq
can safely ignore. A line that begins with any of the
following characters, will cause reseq
to halt processing
and exit with an error.
!$+/=[\^{~
The idea is that these prefixes are reserved for future use in lines
that reseq
must understand in order to produce correct
results.
This leaves all remaining characters free for use in specifying future
teseq
output lines that do not affect processing for older
reseq
s. Note that they are still reserved for
teseq
, and are not intended for users to insert commentary
or such. However, teseq
will never use a line beginning with
the space character; and reseq
will always ignore such
lines, so the space character may be used to indicate user comments.