Class Preprocessor

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    public class Preprocessor
    extends Object
    implements Closeable
    A C Preprocessor. The Preprocessor outputs a token stream which does not need re-lexing for C or C++. Alternatively, the output text may be reconstructed by concatenating the text values of the returned Tokens. (See CppReader, which does this.)
    • Constructor Detail

      • Preprocessor

        public Preprocessor()
      • Preprocessor

        public Preprocessor​(Source initial)
    • Method Detail

      • setFileSystem

        public void setFileSystem​(VirtualFileSystem filesystem)
        Sets the VirtualFileSystem used by this Preprocessor.
      • getFileSystem

        public VirtualFileSystem getFileSystem()
        Returns the VirtualFileSystem used by this Preprocessor.
      • setListener

        public void setListener​(PreprocessorListener listener)
        Sets the PreprocessorListener which handles events for this Preprocessor. The listener is notified of warnings, errors and source changes, amongst other things.
      • getListener

        public PreprocessorListener getListener()
        Returns the PreprocessorListener which handles events for this Preprocessor.
      • getFeatures

        public Set<Feature> getFeatures()
        Returns the feature-set for this Preprocessor. This set may be freely modified by user code.
      • addFeature

        public void addFeature​(Feature f)
        Adds a feature to the feature-set of this Preprocessor.
      • addFeatures

        public void addFeatures​(Collection<Feature> f)
        Adds features to the feature-set of this Preprocessor.
      • addFeatures

        public void addFeatures​(Feature... f)
        Adds features to the feature-set of this Preprocessor.
      • getFeature

        public boolean getFeature​(Feature f)
        Returns true if the given feature is in the feature-set of this Preprocessor.
      • getWarnings

        public Set<Warning> getWarnings()
        Returns the warning-set for this Preprocessor. This set may be freely modified by user code.
      • addWarning

        public void addWarning​(Warning w)
        Adds a warning to the warning-set of this Preprocessor.
      • addWarnings

        public void addWarnings​(Collection<Warning> w)
        Adds warnings to the warning-set of this Preprocessor.
      • getWarning

        public boolean getWarning​(Warning w)
        Returns true if the given warning is in the warning-set of this Preprocessor.
      • addInput

        public void addInput​(Source source)
        Adds input for the Preprocessor. Inputs are processed in the order in which they are added.
      • error

        protected void error​(int line,
                             int column,
                             String msg)
                      throws LexerException
        Handles an error. If a PreprocessorListener is installed, it receives the error. Otherwise, an exception is thrown.
        Throws:
        LexerException
      • warning

        protected void warning​(int line,
                               int column,
                               String msg)
                        throws LexerException
        Handles a warning. If a PreprocessorListener is installed, it receives the warning. Otherwise, an exception is thrown.
        Throws:
        LexerException
      • addMacro

        public void addMacro​(String name,
                             String value)
                      throws LexerException
        Defines the given name as a macro. The String value is lexed into a token stream, which is used as the macro expansion.
        Throws:
        LexerException
      • addMacro

        public void addMacro​(String name)
                      throws LexerException
        Defines the given name as a macro, with the value 1. This is a convnience method, and is equivalent to addMacro(name, "1").
        Throws:
        LexerException
      • setQuoteIncludePath

        public void setQuoteIncludePath​(List<String> path)
        Sets the user include path used by this Preprocessor.
      • getQuoteIncludePath

        public List<String> getQuoteIncludePath()
        Returns the user include-path of this Preprocessor. This list may be freely modified by user code.
      • setSystemIncludePath

        public void setSystemIncludePath​(List<String> path)
        Sets the system include path used by this Preprocessor.
      • getSystemIncludePath

        public List<String> getSystemIncludePath()
        Returns the system include-path of this Preprocessor. This list may be freely modified by user code.
      • setFrameworksPath

        public void setFrameworksPath​(List<String> path)
        Sets the Objective-C frameworks path used by this Preprocessor.
      • getFrameworksPath

        public List<String> getFrameworksPath()
        Returns the Objective-C frameworks path used by this Preprocessor. This list may be freely modified by user code.
      • getMacros

        public Map<String,​Macro> getMacros()
        Returns the Map of Macros parsed during the run of this Preprocessor.
      • getMacro

        public Macro getMacro​(String name)
        Returns the named macro. While you can modify the returned object, unexpected things might happen if you do.
      • push_source

        protected void push_source​(Source source,
                                   boolean autopop)
        Pushes a Source onto the input stack.
        See Also:
        getSource(), pop_source()