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​(@Nonnull
                            Source initial)
    • Method Detail

      • setFileSystem

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

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

        public void setListener​(@Nonnull
                                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

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

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

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

        public void addFeatures​(@Nonnull
                                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​(@Nonnull
                                  Feature f)
        Returns true if the given feature is in the feature-set of this Preprocessor.
      • getWarnings

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

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

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

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

        public void addInput​(@Nonnull
                             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,
                             @Nonnull
                             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,
                               @Nonnull
                               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​(@Nonnull
                             String name,
                             @Nonnull
                             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​(@Nonnull
                             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​(@Nonnull
                                        List<String> path)
        Sets the user include path used by this Preprocessor.
      • getQuoteIncludePath

        @Nonnull
        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​(@Nonnull
                                         List<String> path)
        Sets the system include path used by this Preprocessor.
      • getSystemIncludePath

        @Nonnull
        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​(@Nonnull
                                      List<String> path)
        Sets the Objective-C frameworks path used by this Preprocessor.
      • getFrameworksPath

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

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

        @CheckForNull
        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​(@Nonnull
                                   Source source,
                                   boolean autopop)
        Pushes a Source onto the input stack.
        See Also:
        getSource(), pop_source()