1
2
3
4 package net.sourceforge.pmd.lang.java;
5
6 import java.io.Reader;
7 import java.util.Map;
8
9 import net.sourceforge.pmd.lang.AbstractParser;
10 import net.sourceforge.pmd.lang.ParserOptions;
11 import net.sourceforge.pmd.lang.TokenManager;
12 import net.sourceforge.pmd.lang.ast.AbstractTokenManager;
13 import net.sourceforge.pmd.lang.ast.JavaCharStream;
14 import net.sourceforge.pmd.lang.ast.Node;
15 import net.sourceforge.pmd.lang.java.ast.JavaParser;
16 import net.sourceforge.pmd.lang.java.ast.ParseException;
17
18
19
20
21
22
23
24
25
26 public abstract class AbstractJavaParser extends AbstractParser {
27 private JavaParser parser;
28
29 public AbstractJavaParser(ParserOptions parserOptions) {
30 super(parserOptions);
31 }
32
33 @Override
34 public TokenManager createTokenManager(Reader source) {
35 return new JavaTokenManager(source);
36 }
37
38
39
40
41 protected JavaParser createJavaParser(Reader source) throws ParseException {
42 parser = new JavaParser(new JavaCharStream(source));
43 String suppressMarker = getParserOptions().getSuppressMarker();
44 if (suppressMarker != null) {
45 parser.setSuppressMarker(suppressMarker);
46 }
47 return parser;
48 }
49
50 public boolean canParse() {
51 return true;
52 }
53
54 public Node parse(String fileName, Reader source) throws ParseException {
55 AbstractTokenManager.setFileName(fileName);
56 return createJavaParser(source).CompilationUnit();
57 }
58
59 public Map<Integer, String> getSuppressMap() {
60 return parser.getSuppressMap();
61 }
62 }