View Javadoc

    1   /**
    2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
    3    */
    4   package net.sourceforge.pmd.lang;
    5
    6   import java.io.Reader;
    7   import java.util.Map;
    8
    9   import net.sourceforge.pmd.lang.ast.Node;
    10  import net.sourceforge.pmd.lang.java.ast.ParseException;
    11
    12  /**
    13   * Common interface for calling tree-building parsers or source files.
    14   *
    15   * @author Pieter_Van_Raemdonck - Application Engineers NV/SA - www.ae.be
    16   */
    17  public interface Parser {
    18      /**
    19       * Get the ParserOptions used by this Parser.
    20       */
    21      ParserOptions getParserOptions();
    22
    23      /**
    24       * Get a TokenManager for the given source.
    25       * @param fileName The file name being parsed (may be <code>null</code>).
    26       * @param source Reader that provides the source code to tokenize.
    27       * @return A TokenManager for reading token.
    28       */
    29      TokenManager getTokenManager(String fileName, Reader source);
    30
    31      /**
    32       * Indicates if this parser can actual parse, or if it can only tokenize.
    33       */
    34      boolean canParse();
    35
    36      /**
    37       * Parse source code and return the root node of the AST.
    38       *
    39       * @param fileName The file name being parsed (may be <code>null</code>).
    40       * @param source Reader that provides the source code of a compilation unit
    41       * @return the root node of the AST that is built from the source code
    42       * @throws ParseException In case the source code could not be parsed, probably
    43       *                        due to syntactical errors.
    44       */
    45      Node parse(String fileName, Reader source) throws ParseException;
    46
    47      // TODO Document
    48      Map<Integer, String> getSuppressMap();
    49  }