org.anarres.cpp
Class Source

java.lang.Object
  extended by org.anarres.cpp.Source
All Implemented Interfaces:
Closeable, Iterable<Token>
Direct Known Subclasses:
LexerSource

public abstract class Source
extends Object
implements Iterable<Token>, Closeable

An input to the Preprocessor. Inputs may come from Files, Strings or other sources. The preprocessor maintains a stack of Sources. Operations such as file inclusion or token pasting will push a new source onto the Preprocessor stack. Sources pop from the stack when they are exhausted; this may be transparent or explicit. BUG: Error messages are not handled properly.


Constructor Summary
Source()
           
 
Method Summary
 void close()
           
protected  void error(int line, int column, String msg)
           
 int getColumn()
          Returns the current column number within this Source.
 int getLine()
          Returns the current line number within this Source.
 Iterator<Token> iterator()
          Returns a token iterator for this Source.
 void setListener(PreprocessorListener pl)
          Sets the listener for this Source.
 Token skipline(boolean white)
          Skips tokens until the end of line.
abstract  Token token()
          Returns the next Token parsed from this input stream.
protected  void warning(int line, int column, String msg)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Source

public Source()
Method Detail

setListener

public void setListener(PreprocessorListener pl)
Sets the listener for this Source. Normally this is set by the Preprocessor when a Source is used, but if you are using a Source as a standalone object, you may wish to call this.


getLine

public int getLine()
Returns the current line number within this Source.


getColumn

public int getColumn()
Returns the current column number within this Source.


token

public abstract Token token()
                     throws IOException,
                            LexerException
Returns the next Token parsed from this input stream.

Throws:
IOException
LexerException
See Also:
Token

iterator

public Iterator<Token> iterator()
Returns a token iterator for this Source.

Specified by:
iterator in interface Iterable<Token>

skipline

public Token skipline(boolean white)
               throws IOException,
                      LexerException
Skips tokens until the end of line.

Parameters:
white - true if only whitespace is permitted on the remainder of the line.
Returns:
the NL token.
Throws:
IOException
LexerException

error

protected void error(int line,
                     int column,
                     String msg)
              throws LexerException
Throws:
LexerException

warning

protected void warning(int line,
                       int column,
                       String msg)
                throws LexerException
Throws:
LexerException

close

public void close()
           throws IOException
Specified by:
close in interface Closeable
Throws:
IOException


Copyright © 2007 Shevek, Anarres. All Rights Reserved.