Node:ATe, Next:AT;, Previous:AT&, Up:AT commands
Pseudo- or invisible operators are ignored by FTANGLE and not printed by FWEAVE; however, they retain grammatical significance that helps out FWEAVE in its attempts to understand the syntax.
@e
: Pseudo-expression@e
is an invisible expression (`pseudo-expression')
(see Pseudo-operators). It is
sometimes useful in situations where FWEAVE's pretty-printing has
broken down because it didn't properly understand the language syntax.
If, for example, FWEAVE failed to properly parse the C statement
p = (int (*))q;
one might get things to work properly by saying
p = (int (*@e))q;
In this particular case, one is patching up a deficiency (all right, a
bug) in FWEAVE's "production rules." (This particular bug may no
longer exist.) However, there are other situations in which the use of
@e
might be necessary. Consider, for example, the C macro
definition
#define A(x) = x
Here the replacement text of the macro is = x
, which by itself is
not a valid construction in C. When the -1
or -2
options
are used, FWEAVE will report an "irreducible
scrap sequence" in this situation (although it may typeset it correctly
anyway). To eliminate the warning message, say instead
#define A(x) @e = x
Now the fragment @e = x
is interpreted as a valid expression.