Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-01 - decus/20-0004/ignorechar.tty
There are no other files named ignorechar.tty in the archive.
The files <LISPUSERS>IGNORECHAR and <LISPUSERS>IGNORECHAR.COM permit a
character to be defined in a read table as "ignorable"--it neither delimits
atoms nor appears inside them.  This capability was implemented by
Warren Teitelman for use in the display system (where mouse buttons had to be
transparent to the normal lisp reading); they are being made publicly available
in response to Peter Deutch's need for a similar facility, which he
expressed as follows:

"I am desirous of having a new syntax class in readtables called IGNORE.
IGNORE characters do not delimit atoms or strings, but also do not
get put into the atom or string -- they are simply discarded.
I can justify this on logical grounds as follows:
	OTHER - gets put in, doesn't delimit
	BREAKCHAR - gets put in, does delimit
	SEPRCHAR - doesn't get put in, does delimit
	IGNORE - doesn't get put in, doesn't delimit
The practical reason is that I am writing a program which (among other
things) has to read and parse languages in which blanks are totally
ignored (no, not FORTRAN), and if something like IGNORE isn't present,
I have to program the whole reading process myself with READCs and
PACKs."


The file contains the function SETIGNORECHAR, which can be used to make
a character effectively an ignore character, i.e. transparent.
SETIGNORECHAR takes a character or character code and a readtable. The
ignorecharacter will work correctly whether typed under a call to
read, or a call to readline, i.e. if # is the ignorecharacter, CO#NS(A B)
will return (A . B)

Note: if the user types (... FOO# ^AFIE ...) i.e. ignorecharacter, followed by
a space, followed by a control-a, the FOO and FIE will NOT be packed
together as would be the case if IGNORECHAR were implemented at the line buffer
level. The decision abut whether or not to pack things together is made
when the first non-ignore character is encountered following an ignorechar,
so that the ^A that follows is too late. Note also that since # is implemented
as an immediate read macro, the characters on the line previous to the ignore
character are not available for character or line deletion.

Problems or questions to W. Teitelman.