de.dante.extex.interpreter.primitives.macro
Class Expandafter
java.lang.Object
de.dante.extex.interpreter.type.AbstractCode
de.dante.extex.interpreter.primitives.macro.Expandafter
- All Implemented Interfaces:
- Code, ExpandableCode, Localizable, java.io.Serializable
- public class Expandafter
- extends AbstractCode
- implements ExpandableCode
This class provides an implementation for the primitive
\expandafter
.
The Primitive \expandafter
The primitive \expandafter reverses the expansion of the following
two tokens. For this purpose the next token following the invocation is read
unexpanded and put aside. Then the next token is expanded in whatever way
the token requires expansion. This may involve the reading and expansion of
further tokens. When this expansion is finished then the saved token is put
back into the input stream.
Any prefix argument is saved for the expansion of the following token.
Syntax
The formal description of this primitive is the following:
〈expandafter〉
→ \expandafter 〈control sequence〉 ...
Examples
\expandafter ab
- Version:
- $Revision: 1.18 $
- Author:
- Gerd Neugebauer
- See Also:
- Serialized Form
Field Summary |
protected static long |
serialVersionUID
The constant serialVersionUID contains the id for serialization. |
Constructor Summary |
Expandafter(java.lang.String name)
Creates a new object. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
serialVersionUID
protected static final long serialVersionUID
- The constant serialVersionUID contains the id for serialization.
- See Also:
- Constant Field Values
Expandafter
public Expandafter(java.lang.String name)
- Creates a new object.
- Parameters:
name
- the name for debugging
execute
public void execute(Flags prefix,
Context context,
TokenSource source,
Typesetter typesetter)
throws InterpreterException
- Description copied from interface:
Code
- This method takes the first token and executes it. The result is placed
on the stack. This operation might have side effects. To execute a token
it might be necessary to consume further tokens.
- Specified by:
execute
in interface Code
- Overrides:
execute
in class AbstractCode
- Throws:
InterpreterException
- See Also:
Code.execute(
de.dante.extex.interpreter.Flags,
de.dante.extex.interpreter.context.Context,
de.dante.extex.interpreter.TokenSource,
de.dante.extex.typesetter.Typesetter)
expand
public void expand(Flags prefix,
Context context,
TokenSource source,
Typesetter typesetter)
throws InterpreterException
- Description copied from interface:
ExpandableCode
- This method takes the first token and expands it. The result is placed
on the stack.
This means that expandable code does one step of expansion and puts the
result on the stack. To expand a token it might be necessary to consume
further tokens.
- Specified by:
expand
in interface ExpandableCode
- Parameters:
prefix
- the prefix flags controlling the expansioncontext
- the interpreter contextsource
- the token sourcetypesetter
- the typesetter
- Throws:
InterpreterException
- in case of an error- See Also:
ExpandableCode.expand(
de.dante.extex.interpreter.Flags,
de.dante.extex.interpreter.context.Context,
de.dante.extex.interpreter.TokenSource,
de.dante.extex.typesetter.Typesetter)