org.extex.unit.etex.conditional
Class Unless
java.lang.Object
org.extex.interpreter.type.AbstractCode
org.extex.unit.etex.conditional.Unless
- All Implemented Interfaces:
- java.io.Serializable, Code, ExpandableCode, PrefixCode
public class Unless
- extends AbstractCode
- implements ExpandableCode, PrefixCode
This class provides an implementation for the primitive \if.
The Primitive \unless
Copied of the eTeX reference.
TeX has, by design, a rather sparse set of conditional
primitives: \ifeof, \ifodd, \ifvoid,
etc., have no complementary counterparts. Whilst this normally poses no
problems since each accepts both a \then (implicit) and an
\else (explicit) part, they fall down when used as the final
\if... of a \loop ... \if ...
\repeat construct, since no \else is allowed after the
final \if.... \unless allows the sense of all
Boolean conditionals to be inverted, and thus (for example)
\unless \ifeof yields true iff end-of-file has
not yet been reached.
The formal description of this primitive is the following:
TODO missing documentation
Examples:
\unless\if\x\y not ok \fi
- Version:
- $Revision: 4770 $
- Author:
- Gerd Neugebauer, Sebastian Waschik
- See Also:
- Serialized Form
|
Field Summary |
protected static long |
serialVersionUID
The field serialVersionUID contains the version number for the
serialization. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
serialVersionUID
protected static final long serialVersionUID
- The field serialVersionUID contains the version number for the
serialization.
- See Also:
- Constant Field Values
Unless
public Unless(CodeToken token)
- Creates a new object.
- Parameters:
token - the initial token for the primitive
execute
public void execute(Flags prefix,
Context context,
TokenSource source,
Typesetter typesetter)
throws HelpingException,
TypesetterException
- 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
- Parameters:
prefix - the prefix controlling the executioncontext - the interpreter contextsource - the token sourcetypesetter - the typesetter
- Throws:
HelpingException - in case of an error
TypesetterException - in case of an error in the typesetter- See Also:
AbstractCode.execute(
org.extex.interpreter.Flags, org.extex.interpreter.context.Context,
org.extex.interpreter.TokenSource, org.extex.typesetter.Typesetter)
expand
public void expand(Flags prefix,
Context context,
TokenSource source,
Typesetter typesetter)
throws HelpingException,
TypesetterException
- 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:
HelpingException - in case of an error
TypesetterException - in case of an error in the typesetter- See Also:
ExpandableCode.expand(
org.extex.interpreter.Flags, org.extex.interpreter.context.Context,
org.extex.interpreter.TokenSource, org.extex.typesetter.Typesetter)