Class 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 Detail

      • Source

        public Source()
    • Method Detail

      • getParent

        public final Source getParent()
        Returns the parent source of this source. Sources form a singly linked list.
      • 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. If this Source is not a FileLexerSource, then it will ask the parent Source, and so forth recursively. If no Source on the stack is a FileLexerSource, returns null.
      • getName

        @CheckForNull
        public String getName()
        Returns the human-readable name of the current Source.
      • getLine

        @Nonnegative
        public int getLine()
        Returns the current line number within this Source.
      • getColumn

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

        @Nonnull
        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