Class Source

java.lang.Object
foundry.veil.lib.anarres.cpp.Source
All Implemented Interfaces:
Closeable, AutoCloseable, 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 Details

    • Source

      public Source()
  • Method Details

    • 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.

    • getName

      @Nullable public @Nullable String getName()
      Returns the human-readable name of the current Source.
    • 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

      @NotNull public abstract @NotNull Token token() throws IOException, LexerException
      Returns the next Token parsed from this input stream.
      Throws:
      IOException
      LexerException
      See Also:
    • iterator

      public Iterator<Token> iterator()
      Returns a token iterator for this Source.
      Specified by:
      iterator in interface Iterable<Token>
    • skipline

      @NotNull public @NotNull 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 AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException