Class Source

java.lang.Object
io.github.douira.glsl_preprocessor.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.
    • getPath

      @CheckForNull public String getPath()
      Returns the File currently being lexed.
    • getName

      @CheckForNull public 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

      @NonNull public abstract Token token()
      Returns the next Token parsed from this input stream.
      See Also:
    • iterator

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

      @NonNull public Token skipline(boolean white)
      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.
    • error

      protected void error(int line, int column, String msg)
    • warning

      protected void warning(int line, int column, String msg)
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable