01 /**
02 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
03 */
04 package net.sourceforge.pmd.lang.java;
05
06 import java.io.Reader;
07 import java.util.Map;
08
09 import net.sourceforge.pmd.lang.AbstractParser;
10 import net.sourceforge.pmd.lang.TokenManager;
11 import net.sourceforge.pmd.lang.ast.AbstractTokenManager;
12 import net.sourceforge.pmd.lang.ast.JavaCharStream;
13 import net.sourceforge.pmd.lang.ast.Node;
14 import net.sourceforge.pmd.lang.java.ast.JavaParser;
15 import net.sourceforge.pmd.lang.java.ast.ParseException;
16
17 /**
18 * This is a generic Java specific implementation of the Parser interface. It
19 * creates a JavaParser instance, and sets the exclude marker. It also exposes
20 * the exclude map from the JavaParser instance.
21 *
22 * @see AbstractParser
23 * @see JavaParser
24 */
25 public abstract class AbstractJavaParser extends AbstractParser {
26 private JavaParser parser;
27
28 public TokenManager createTokenManager(Reader source) {
29 return new JavaTokenManager(source);
30 }
31
32 /**
33 * Subclass should override this method to modify the JavaParser as needed.
34 */
35 protected JavaParser createJavaParser(Reader source) throws ParseException {
36 parser = new JavaParser(new JavaCharStream(source));
37 String suppressMarker = getSuppressMarker();
38 if (suppressMarker != null) {
39 parser.setSuppressMarker(suppressMarker);
40 }
41 return parser;
42 }
43
44 public boolean canParse() {
45 return true;
46 }
47
48 public Node parse(String fileName, Reader source) throws ParseException {
49 AbstractTokenManager.setFileName(fileName);
50 return createJavaParser(source).CompilationUnit();
51 }
52
53 public Map<Integer, String> getSuppressMap() {
54 return parser.getSuppressMap();
55 }
56 }
|