de.dante.extex.interpreter.max
Class Max

java.lang.Object
  extended byde.dante.extex.interpreter.max.Max
All Implemented Interfaces:
CommandObservable, ErrorObservable, ExpandMacroObservable, ExpandObservable, Interpreter, LoadObservable, Localizable, LogEnabled, OutputStreamConsumer, StartObservable, StopObservable, TokenSource, TokenVisitor
Direct Known Subclasses:
Moritz

public abstract class Max
extends java.lang.Object
implements Interpreter, Localizable, LogEnabled, CommandObservable, ExpandObservable, ExpandMacroObservable, ErrorObservable, LoadObservable, StartObservable, StopObservable, TokenVisitor, OutputStreamConsumer

This is a reference implementation for a MAcro eXpander. The macro expander is the core engine driving ExTeX.

The Count Parameter \ignorevoid

The count register \ignorevoid determines how an undefined active character or control sequence is encountered. If the value is greater than 0 then undefined code is ignored. Otherwise it leads to an error message.

This count parameter has been introduced by ExTeX.

Syntax

The formal description of this primitive is the following:
    ⟨ignorevoid⟩
      → \ignorevoid ⟨equals⟩ ⟨number⟩  

Examples

    \ignorevoid=1  

The Tokens Parameter \everyjob

The tokens register \everyjob contains the tokens to be inserted at the beginning of every job.

Syntax

The formal description of this primitive is the following:
    ⟨everyjob⟩
       → \everyjob ⟨tokens⟩  

Examples

    \everyjob={\message{Hello world.}}  

Version:
$Revision: 1.124 $
Author:
Gerd Neugebauer, Michael Niedermair

Constructor Summary
Max()
          Creates a new object.
 
Method Summary
 void configure(Configuration config)
          Apply the configuration options found in the given configuration object.
 void enableLocalization(Localizer theLocalizer)
          Setter for the getLocalizer().
 void enableLogging(java.util.logging.Logger theLogger)
          Setter for the logger.
 void execute(Token token, Context theContext, Typesetter theTypesetter)
          Tries to execute a token.
 void executeGroup()
          Scan and execute tokens until the group ends.
protected  Token expand(Token token)
          Take the token given and expand it as possible.
 Tokens expand(Tokens tokens, Typesetter ts)
          Expand some tokens.
protected  Token expandUnproteced(Token token, Tokens tokens)
          Take the token given and expand it as possible while honoring the protected code.
 Context getContext()
          Getter for the context
 ErrorHandler getErrorHandler()
          Getter for the error handler.
 Interaction getInteraction()
          Getter for the interaction mode.
protected  Localizer getLocalizer()
          Getter for localizer.
protected  java.util.logging.Logger getLogger()
          Getter for logger.
 Typesetter getTypesetter()
          Getter for the typesetter.
protected  void initializeDate(java.util.Calendar calendar)
          Initialize the date and time related primitives.
 void loadFormat(java.io.InputStream stream, java.lang.String fmt, java.lang.String contextType, java.lang.String languageType)
          Load the format from an external source.
 void loadUnit(java.lang.String name)
          Load a unit.
 void registerObserver(CommandObserver observer)
          Add an observer for the expand event.
 void registerObserver(ErrorObserver observer)
          Add an observer for the error event.
 void registerObserver(ExpandMacroObserver observer)
          Add an observer for the expand event.
 void registerObserver(ExpandObserver observer)
          Add an observer for the expand event.
 void registerObserver(LoadObserver observer)
          Register an format load observer for later use.
 void registerObserver(StartObserver observer)
          Add an observer for the start event.
 void registerObserver(StopObserver observer)
          Add an observer for the stop event.
 void run()
          Process the current token streams by repeatedly reading a single token and processing it until no token is left.
 void run(TokenStream stream)
          Add a token stream and start processing it.
 Context setContext(Context context)
          Setter for the context.
 void setErrorHandler(ErrorHandler handler)
          Setter for the error handler.
 void setFontFactory(FontFactory fontFactory)
          Setter for the font factory
 void setInteraction(Interaction interaction)
          Setter for the interaction mode.
 void setJobname(java.lang.String jobname)
          Setter for the job name.
 void setOutputStreamFactory(OutputStreamFactory factory)
          This method takes an output stream factory for further use.
 void setTypesetter(Typesetter typesetter)
          Setter for the typesetter.
 java.lang.Object visitActive(ActiveCharacterToken token, java.lang.Object ignore)
          This visit method is invoked on an active token.
 java.lang.Object visitCr(CrToken token, java.lang.Object ignore)
          This visit method is invoked on a cr token.
 java.lang.Object visitEscape(ControlSequenceToken token, java.lang.Object ignore)
          This visit method is invoked on an escape token.
 java.lang.Object visitLeftBrace(LeftBraceToken token, java.lang.Object ignore)
          This visit method is invoked on a left brace token.
 java.lang.Object visitLetter(LetterToken token, java.lang.Object ignore)
          This visit method is invoked on a letter token.
 java.lang.Object visitMacroParam(MacroParamToken token, java.lang.Object ignore)
          This visit method is invoked on a macro parameter token.
 java.lang.Object visitMathShift(MathShiftToken token, java.lang.Object ignore)
          This visit method is invoked on a math shift token.
 java.lang.Object visitOther(OtherToken token, java.lang.Object ignore)
          This visit method is invoked on an other token.
 java.lang.Object visitRightBrace(RightBraceToken token, java.lang.Object ignore)
          This visit method is invoked on a right brace token.
 java.lang.Object visitSpace(SpaceToken token, java.lang.Object ignore)
          This visit method is invoked on a space token.
 java.lang.Object visitSubMark(SubMarkToken token, java.lang.Object ignore)
          This visit method is invoked on a sub mark token.
 java.lang.Object visitSupMark(SupMarkToken token, java.lang.Object ignore)
          This visit method is invoked on a sup mark token.
 java.lang.Object visitTabMark(TabMarkToken token, java.lang.Object ignore)
          This visit method is invoked on a tab mark token.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface de.dante.extex.interpreter.Interpreter
setTokenStreamFactory
 
Methods inherited from interface de.dante.extex.interpreter.TokenSource
addStream, closeAllStreams, closeNextFileStream, getBox, getControlSequence, getFont, getKeyword, getLastToken, getLocator, getNonSpace, getOptionalEquals, getToken, getTokens, getTokenStreamFactory, push, push, push, scanCharacterCode, scanNonSpace, scanNumber, scanNumber, scanRegisterName, scanToken, scanTokens, scanTokensAsString, scanUnprotectedTokens, skipSpace, update
 

Constructor Detail

Max

public Max()
Creates a new object.

Method Detail

configure

public void configure(Configuration config)
               throws ConfigurationException
Apply the configuration options found in the given configuration object.

Parameters:
config - the configuration object to consider.
Throws:
ConfigurationException - in case of a configuration error

enableLocalization

public void enableLocalization(Localizer theLocalizer)
Setter for the getLocalizer().

Specified by:
enableLocalization in interface Localizable
Parameters:
theLocalizer - the getLocalizer() to use
See Also:
Localizable.enableLocalization( de.dante.util.framework.i18n.Localizer)

enableLogging

public void enableLogging(java.util.logging.Logger theLogger)
Setter for the logger.

Specified by:
enableLogging in interface LogEnabled
Parameters:
theLogger - the new logger
See Also:
LogEnabled.enableLogging( java.util.logging.Logger)

execute

public void execute(Token token,
                    Context theContext,
                    Typesetter theTypesetter)
             throws InterpreterException
Description copied from interface: TokenSource
Tries to execute a token.

Specified by:
execute in interface TokenSource
Parameters:
token - the Token to execute
theContext - the interpreter context
theTypesetter - the typesetter
Throws:
InterpreterException - in case of an error
especially
ErrorLimitException in case that the error limit has been reached
See Also:
TokenSource.execute( de.dante.extex.scanner.type.token.Token, Context, Typesetter)

executeGroup

public void executeGroup()
                  throws InterpreterException
Description copied from interface: TokenSource
Scan and execute tokens until the group ends.

Specified by:
executeGroup in interface TokenSource
Throws:
InterpreterException - in case of an error
especially
ErrorLimitException in case that the error limit has been reached
See Also:
TokenSource.executeGroup()

expand

protected Token expand(Token token)
                throws InterpreterException
Take the token given and expand it as possible. If the token is expandable then the expansion is performed until an un-expandable token has been found. This token is returned.

Parameters:
token - the token to expand
Returns:
the next token
Throws:
InterpreterException - in case of an error

expand

public Tokens expand(Tokens tokens,
                     Typesetter ts)
              throws InterpreterException
Description copied from interface: TokenSource
Expand some tokens.

Specified by:
expand in interface TokenSource
Parameters:
tokens - the tokens to expand
ts - the typesetter to use
Returns:
the expanded tokens
Throws:
InterpreterException
See Also:
TokenSource.expand( de.dante.extex.interpreter.type.tokens.Tokens, de.dante.extex.typesetter.Typesetter)

expandUnproteced

protected Token expandUnproteced(Token token,
                                 Tokens tokens)
                          throws InterpreterException
Take the token given and expand it as possible while honoring the protected code. If the token is not protected and expandable then the expansion is performed until an un-expandable token has been found. This token is returned.

Parameters:
token - the token to expand
tokens - the token list to pass to an Expander
Returns:
the next token
Throws:
InterpreterException - in case of an error

getContext

public Context getContext()
Description copied from interface: Interpreter
Getter for the context

Specified by:
getContext in interface Interpreter
Returns:
the context
See Also:
getContext()

getErrorHandler

public ErrorHandler getErrorHandler()
Getter for the error handler. The error handler might not be set. In this case null is returned.

Specified by:
getErrorHandler in interface Interpreter
Returns:
the error handler currently registered
See Also:
Interpreter.setErrorHandler(ErrorHandler)

getInteraction

public Interaction getInteraction()
Getter for the interaction mode.

Specified by:
getInteraction in interface Interpreter
Returns:
the interaction mode
See Also:
Interpreter.setInteraction(Interaction)

getLocalizer

protected Localizer getLocalizer()
Getter for localizer.

Returns:
the localizer.

getLogger

protected java.util.logging.Logger getLogger()
Getter for logger.

Returns:
the logger

getTypesetter

public Typesetter getTypesetter()
Description copied from interface: Interpreter
Getter for the typesetter.

Specified by:
getTypesetter in interface Interpreter
Returns:
the typesetter
See Also:
Interpreter.getTypesetter()

initializeDate

protected void initializeDate(java.util.Calendar calendar)
                       throws InterpreterException
Initialize the date and time related primitives.

The Count Parameter \day

The count parameter \day is set automatically at the start of a job to the day of the current date. Thus it always is initialized to a value in the range of 1 to 31.

In the course of processing it can be used as any count register. This means that assignments, comparisons, and arithmetical operations work as for those.

The value is stored when a format file is written. Note however that this value is overwritten when the format file is read back in.

Syntax

The formal description of this primitive is the following:
    ⟨day⟩
      → \day ⟨equals⟩ ⟨number⟩  

Examples

    \the\day  

The Count Parameter \month

The count parameter \month is set automatically at the start of a job to the month of the current date. Thus it always is initialized to a value in the range of 1 to 12.

In the course of processing it can be used as any count register. This means that assignments, comparisons, and arithmetical operations work as for those.

The value is stored when a format file is written. Note however that this value is overwritten when the format file is read back in.

Syntax

The formal description of this primitive is the following:
    ⟨month⟩
      → \month ⟨equals⟩ ⟨number⟩  

Examples

    \the\month  

The Count Parameter \year

The count parameter \year is set automatically at the start of a job to the year of the current date.

In the course of processing it can be used as any count register. This means that assignments, comparisons, and arithmetical operations work as for those.

The value is stored when a format file is written. Note however that this value is overwritten when the format file is read back in.

Syntax

The formal description of this primitive is the following:
    ⟨year⟩
      → \year ⟨equals⟩ ⟨number⟩  

Examples

    \the\year  

The Count Parameter \time

The count parameter \time is set automatically at the start of a job to the time of the current date. The time is the number of minutes since 0:00. Thus you can extract the current hour by dividing it by 60 and the current minute by computing the remainder modulo 60.

In the course of processing it can be used as any count register. This means that assignments, comparisons, and arithmetical operations work as for those.

The value is stored when a format file is written. Note however that this value is overwritten when the format file is read back in.

Syntax

The formal description of this primitive is the following:
    ⟨time⟩
      → \time ⟨equals⟩ ⟨number⟩  

Examples

    {\count0=\time
     \divide\count0 60
     \the\count0:% here \count0 contains the hour
     \multiply\count1 -60
     \advance\count0\time
     \the\count0% here \count0 contains the minute
    }%  

Parameters:
calendar - the time and date when ExTeX has been started
Throws:
InterpreterException - in case of an error

loadFormat

public void loadFormat(java.io.InputStream stream,
                       java.lang.String fmt,
                       java.lang.String contextType,
                       java.lang.String languageType)
                throws java.io.IOException,
                       LoaderException
Load the format from an external source.

Specified by:
loadFormat in interface Interpreter
Parameters:
stream - the stream to read the format information from
fmt - the name of the format to be loaded
contextType - the configuration name for the context
languageType - the configuration name for the language manager
Throws:
LoaderException - in case that a class could not be found on the class path or a wrong class is contained in the format
java.io.IOException - in case that an IO error occurs during the reading of the format
See Also:
de.dante.extex.interpreter.Interpreter#loadFormat( java.io.InputStream, java.lang.String)

loadUnit

public void loadUnit(java.lang.String name)
              throws ConfigurationException
Description copied from interface: Interpreter
Load a unit.

Specified by:
loadUnit in interface Interpreter
Parameters:
name - the name of the configuration
Throws:
ConfigurationException - in case of an error
See Also:
Interpreter.loadUnit(java.lang.String)

registerObserver

public void registerObserver(CommandObserver observer)
Add an observer for the expand event.

Specified by:
registerObserver in interface CommandObservable
Parameters:
observer - the observer to add

registerObserver

public void registerObserver(ErrorObserver observer)
Add an observer for the error event.

Specified by:
registerObserver in interface ErrorObservable
Parameters:
observer - the observer to add

registerObserver

public void registerObserver(ExpandMacroObserver observer)
Add an observer for the expand event.

Specified by:
registerObserver in interface ExpandMacroObservable
Parameters:
observer - the observer to add

registerObserver

public void registerObserver(ExpandObserver observer)
Add an observer for the expand event.

Specified by:
registerObserver in interface ExpandObservable
Parameters:
observer - the observer to add

registerObserver

public void registerObserver(LoadObserver observer)
Description copied from interface: LoadObservable
Register an format load observer for later use.

Specified by:
registerObserver in interface LoadObservable
Parameters:
observer - the observer to be registered
See Also:
LoadObservable.registerObserver( de.dante.extex.interpreter.observer.load.LoadObserver)

registerObserver

public void registerObserver(StartObserver observer)
Add an observer for the start event.

Specified by:
registerObserver in interface StartObservable
Parameters:
observer - the observer to add

registerObserver

public void registerObserver(StopObserver observer)
Add an observer for the stop event.

Specified by:
registerObserver in interface StopObservable
Parameters:
observer - the observer to add

run

public void run()
         throws ConfigurationException,
                InterpreterException
Description copied from interface: Interpreter
Process the current token streams by repeatedly reading a single token and processing it until no token is left. The visitor pattern is used to branch to the appropriate method for processing a single token.

Specified by:
run in interface Interpreter
Throws:
ConfigurationException - in case of a configuration error
InterpreterException - in case of another error
See Also:
Interpreter.run()

run

public void run(TokenStream stream)
         throws ConfigurationException,
                InterpreterException
Description copied from interface: Interpreter
Add a token stream and start processing it.

Specified by:
run in interface Interpreter
Parameters:
stream - the input stream to consider
Throws:
InterpreterException - in case of another error
ConfigurationException - in case of a configuration error
See Also:
Interpreter.run( de.dante.extex.scanner.stream.TokenStream)

setContext

public Context setContext(Context context)
Description copied from interface: Interpreter
Setter for the context. Use with care!

Specified by:
setContext in interface Interpreter
Parameters:
context - the interpreter context
Returns:
the old context
See Also:
Interpreter.setContext( de.dante.extex.interpreter.context.Context)

setErrorHandler

public void setErrorHandler(ErrorHandler handler)
Setter for the error handler. The value of null can be used to delete the error handler currently set.

Specified by:
setErrorHandler in interface Interpreter
Parameters:
handler - the new error handler
See Also:
Interpreter.getErrorHandler()

setFontFactory

public void setFontFactory(FontFactory fontFactory)
Description copied from interface: Interpreter
Setter for the font factory

Specified by:
setFontFactory in interface Interpreter
Parameters:
fontFactory - the new font factory
See Also:
Interpreter.setFontFactory( de.dante.extex.font.FontFactory)

setInteraction

public void setInteraction(Interaction interaction)
                    throws GeneralException
Setter for the interaction mode. The interaction mode is set globally.

Specified by:
setInteraction in interface Interpreter
Parameters:
interaction - the interaction mode
Throws:
GeneralException - in case of an error
See Also:
Interpreter.getInteraction()

setJobname

public void setJobname(java.lang.String jobname)
                throws GeneralException
Description copied from interface: Interpreter
Setter for the job name.

Specified by:
setJobname in interface Interpreter
Parameters:
jobname - the new value for the job name
Throws:
GeneralException - in case of an error
See Also:
Interpreter.setJobname(java.lang.String)

setOutputStreamFactory

public void setOutputStreamFactory(OutputStreamFactory factory)
Description copied from interface: OutputStreamConsumer
This method takes an output stream factory for further use.

Specified by:
setOutputStreamFactory in interface OutputStreamConsumer
Parameters:
factory - the output stream factory to use
See Also:
OutputStreamConsumer.setOutputStreamFactory( de.dante.extex.backend.outputStream.OutputStreamFactory)

setTypesetter

public void setTypesetter(Typesetter typesetter)
Description copied from interface: Interpreter
Setter for the typesetter.

Specified by:
setTypesetter in interface Interpreter
Parameters:
typesetter - the new typesetter
See Also:
Interpreter.setTypesetter( de.dante.extex.typesetter.Typesetter)

visitActive

public java.lang.Object visitActive(ActiveCharacterToken token,
                                    java.lang.Object ignore)
                             throws InterpreterException
This visit method is invoked on an active token. In TeX this is e.g. ~.

Specified by:
visitActive in interface TokenVisitor
Parameters:
token - the first argument to pass is the token to expand.
ignore - the second argument is ignored
Returns:
null
Throws:
InterpreterException - in case of an error
See Also:
TokenVisitor.visitActive( de.dante.extex.scanner.type.token.ActiveCharacterToken, java.lang.Object)

visitCr

public java.lang.Object visitCr(CrToken token,
                                java.lang.Object ignore)
                         throws InterpreterException
This visit method is invoked on a cr token.

Specified by:
visitCr in interface TokenVisitor
Parameters:
token - the first argument to pass is the token to expand.
ignore - the second argument is ignored
Returns:
null
Throws:
InterpreterException - in case of an error
See Also:
TokenVisitor.visitCr( de.dante.extex.scanner.type.token.CrToken, java.lang.Object)

visitEscape

public java.lang.Object visitEscape(ControlSequenceToken token,
                                    java.lang.Object ignore)
                             throws InterpreterException
This visit method is invoked on an escape token. In TeX this normally means a control sequence.

Specified by:
visitEscape in interface TokenVisitor
Parameters:
token - the first argument to pass is the token to expand.
ignore - the second argument is ignored
Returns:
null
Throws:
InterpreterException - in case of an error
See Also:
TokenVisitor.visitEscape( de.dante.extex.scanner.type.token.ControlSequenceToken, java.lang.Object)

visitLeftBrace

public java.lang.Object visitLeftBrace(LeftBraceToken token,
                                       java.lang.Object ignore)
                                throws InterpreterException
This visit method is invoked on a left brace token.

Specified by:
visitLeftBrace in interface TokenVisitor
Parameters:
token - the first argument to pass is the token to expand.
ignore - the second argument is ignored
Returns:
null
Throws:
InterpreterException - in case of an error
See Also:
"TeX – The Program [1063]", TokenVisitor.visitLeftBrace( de.dante.extex.scanner.type.token.LeftBraceToken, java.lang.Object)

visitLetter

public java.lang.Object visitLetter(LetterToken token,
                                    java.lang.Object ignore)
                             throws InterpreterException
This visit method is invoked on a letter token.

Specified by:
visitLetter in interface TokenVisitor
Parameters:
token - the first argument to pass is the token to expand.
ignore - the second argument is ignored
Returns:
null
Throws:
InterpreterException - in case of an error
See Also:
TokenVisitor.visitLetter( de.dante.extex.scanner.type.token.LetterToken, java.lang.Object)

visitMacroParam

public java.lang.Object visitMacroParam(MacroParamToken token,
                                        java.lang.Object ignore)
                                 throws GeneralException
This visit method is invoked on a macro parameter token. In TeX this normally is a #.

Specified by:
visitMacroParam in interface TokenVisitor
Parameters:
token - the first argument to pass is the token to expand.
ignore - the second argument is ignored
Returns:
null
Throws:
GeneralException - in case of an error
See Also:
TokenVisitor.visitMacroParam( de.dante.extex.scanner.type.token.MacroParamToken, java.lang.Object)

visitMathShift

public java.lang.Object visitMathShift(MathShiftToken token,
                                       java.lang.Object ignore)
                                throws InterpreterException
This visit method is invoked on a math shift token. In TeX this normally is a $.

Specified by:
visitMathShift in interface TokenVisitor
Parameters:
token - the first argument to pass is the token to expand.
ignore - the second argument is ignored
Returns:
null
Throws:
InterpreterException - in case of an error
See Also:
"TeX – The Program [1137]", TokenVisitor.visitMathShift( de.dante.extex.scanner.type.token.MathShiftToken, java.lang.Object)

visitOther

public java.lang.Object visitOther(OtherToken token,
                                   java.lang.Object ignore)
                            throws InterpreterException
This visit method is invoked on an other token.

Specified by:
visitOther in interface TokenVisitor
Parameters:
token - the first argument to pass is the token to expand.
ignore - the second argument is ignored
Returns:
null
Throws:
InterpreterException - in case of an error
See Also:
TokenVisitor.visitOther( de.dante.extex.scanner.type.token.OtherToken, java.lang.Object)

visitRightBrace

public java.lang.Object visitRightBrace(RightBraceToken token,
                                        java.lang.Object ignore)
                                 throws InterpreterException
This visit method is invoked on a right brace token.

Specified by:
visitRightBrace in interface TokenVisitor
Parameters:
token - the first argument to pass is the token to expand.
ignore - the second argument is ignored
Returns:
null
Throws:
InterpreterException - in case of an error
See Also:
"TeX – The Program [1067]", TokenVisitor.visitRightBrace( de.dante.extex.scanner.type.token.RightBraceToken, java.lang.Object)

visitSpace

public java.lang.Object visitSpace(SpaceToken token,
                                   java.lang.Object ignore)
                            throws GeneralException
This visit method is invoked on a space token.

Specified by:
visitSpace in interface TokenVisitor
Parameters:
token - the first argument to pass is the token to expand.
ignore - the second argument is ignored
Returns:
null
Throws:
GeneralException - in case of an error
See Also:
TokenVisitor.visitSpace( de.dante.extex.scanner.type.token.SpaceToken, java.lang.Object)

visitSubMark

public java.lang.Object visitSubMark(SubMarkToken token,
                                     java.lang.Object ignore)
                              throws InterpreterException
This visit method is invoked on a sub mark token. In TeX this normally is a _.

Specified by:
visitSubMark in interface TokenVisitor
Parameters:
token - the first argument to pass is the token to expand.
ignore - the second argument is ignored
Returns:
null
Throws:
InterpreterException - in case of an error
See Also:
TokenVisitor.visitSubMark( de.dante.extex.scanner.type.token.SubMarkToken, java.lang.Object)

visitSupMark

public java.lang.Object visitSupMark(SupMarkToken token,
                                     java.lang.Object ignore)
                              throws InterpreterException
This visit method is invoked on a sup mark token. In TeX this normally is a ^.

Specified by:
visitSupMark in interface TokenVisitor
Parameters:
token - the first argument to pass is the token to expand.
ignore - the second argument is ignored
Returns:
null
Throws:
InterpreterException - in case of an error
See Also:
TokenVisitor.visitSupMark( de.dante.extex.scanner.type.token.SupMarkToken, java.lang.Object)

visitTabMark

public java.lang.Object visitTabMark(TabMarkToken token,
                                     java.lang.Object ignore)
                              throws InterpreterException
This visit method is invoked on a tab mark token. In TeX this normally is a &.

Specified by:
visitTabMark in interface TokenVisitor
Parameters:
token - the first argument to pass is the token to expand.
ignore - the second argument is ignored
Returns:
null
Throws:
InterpreterException - in case of an error
See Also:
TokenVisitor.visitTabMark( de.dante.extex.scanner.type.token.TabMarkToken, java.lang.Object)