org.anarres.cpp
Class Preprocessor

java.lang.Object
  extended by org.anarres.cpp.Preprocessor

public class Preprocessor
extends Object

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 Summary
Preprocessor()
           
Preprocessor(File file)
          Equivalent to 'new Preprocessor(new FileLexerSource(file))'
Preprocessor(Source initial)
           
 
Method Summary
 void addFeature(Feature f)
           
 void addFeatures(Collection<Feature> f)
           
 void addInput(File file)
           
 void addInput(Source source)
           
 void addMacro(Macro m)
           
 void addMacro(String name)
          Defines the given name as a macro.
 void addMacro(String name, String value)
          Defines the given name as a macro.
 void addSource(Source source)
          Pushes a source into the input stack.
 void addWarning(Warning w)
           
 void addWarnings(Collection<Warning> w)
           
protected  void error(int line, int column, String msg)
          Handles an error.
protected  void error(Token tok, String msg)
           
 Set<Feature> getFeatures()
           
 Macro getMacro(String name)
           
protected  Map<String,Macro> getMacros()
          Returns the Map of Macros parsed during the run of this Preprocessor.
 List<String> getQuoteIncludePath()
           
protected  Source getSource()
          Returns the top Source on the input stack.
 List<String> getSystemIncludePath()
           
 Set<Warning> getWarnings()
           
protected  boolean include(File file)
           
protected  void include(File parent, int line, String name, boolean quoted)
          Handles a include directive.
protected  boolean include(Iterable<String> path, String name)
           
protected  void pop_source()
          Pops a Source from the input stack.
protected  void pragma(Token name, List<Token> value)
           
protected  void push_source(Source source, boolean autopop)
          Pushes a Source onto the input stack.
 void setListener(PreprocessorListener listener)
           
 void setQuoteIncludePath(List<String> path)
          Sets the user include path used by this Preprocessor.
 void setSystemIncludePath(List<String> path)
          Sets the system include path used by this Preprocessor.
 Token token()
          Returns the next preprocessor token.
 String toString()
           
protected  void warning(int line, int column, String msg)
          Handles a warning.
protected  void warning(Token tok, String msg)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Preprocessor

public Preprocessor()

Preprocessor

public Preprocessor(Source initial)

Preprocessor

public Preprocessor(File file)
             throws IOException
Equivalent to 'new Preprocessor(new FileLexerSource(file))'

Throws:
IOException
Method Detail

setListener

public void setListener(PreprocessorListener listener)

getFeatures

public Set<Feature> getFeatures()

addFeature

public void addFeature(Feature f)

addFeatures

public void addFeatures(Collection<Feature> f)

getWarnings

public Set<Warning> getWarnings()

addWarning

public void addWarning(Warning w)

addWarnings

public void addWarnings(Collection<Warning> w)

addInput

public void addInput(Source source)

addInput

public void addInput(File file)
              throws IOException
Throws:
IOException

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, it is ignored.

Throws:
LexerException

error

protected void error(Token tok,
                     String msg)
              throws LexerException
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, it is ignored.

Throws:
LexerException

warning

protected void warning(Token tok,
                       String msg)
                throws LexerException
Throws:
LexerException

addMacro

public void addMacro(Macro m)
              throws LexerException
Throws:
LexerException

addMacro

public void addMacro(String name,
                     String value)
              throws LexerException
Defines the given name as a macro. This is a convnience method.

Throws:
LexerException

addMacro

public void addMacro(String name)
              throws LexerException
Defines the given name as a macro. This is a convnience method.

Throws:
LexerException

setQuoteIncludePath

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


getQuoteIncludePath

public List<String> getQuoteIncludePath()

setSystemIncludePath

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


getSystemIncludePath

public List<String> getSystemIncludePath()

getMacros

protected Map<String,Macro> getMacros()
Returns the Map of Macros parsed during the run of this Preprocessor.


getMacro

public Macro getMacro(String name)

getSource

protected Source getSource()
Returns the top Source on the input stack.

See Also:
Source, push_source(Source,boolean), pop_source()

push_source

protected void push_source(Source source,
                           boolean autopop)
Pushes a Source onto the input stack.

See Also:
getSource(), pop_source()

pop_source

protected void pop_source()
Pops a Source from the input stack.

See Also:
getSource(), push_source(Source,boolean)

addSource

public void addSource(Source source)
Pushes a source into the input stack.


include

protected boolean include(File file)
                   throws IOException,
                          LexerException
Throws:
IOException
LexerException

include

protected boolean include(Iterable<String> path,
                          String name)
                   throws IOException,
                          LexerException
Throws:
IOException
LexerException

include

protected void include(File parent,
                       int line,
                       String name,
                       boolean quoted)
                throws IOException,
                       LexerException
Handles a include directive. The user may override this to provide alternate semantics for the include directive, for example, creating a Source based on a virtual file system.

Throws:
IOException
LexerException

pragma

protected void pragma(Token name,
                      List<Token> value)
               throws IOException,
                      LexerException
Throws:
IOException
LexerException

token

public Token token()
            throws IOException,
                   LexerException
Returns the next preprocessor token.

Throws:
LexerException - if a preprocessing error occurs.
InternalException - if an unexpected error condition arises.
IOException
See Also:
Token

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2007 Shevek, Anarres. All Rights Reserved.