1 package eu.svjatoslav.inspector.java.methods;
3 import java.io.BufferedReader;
5 import java.io.FileNotFoundException;
6 import java.io.FileReader;
7 import java.io.IOException;
8 import java.util.ArrayList;
11 import eu.svjatoslav.inspector.tokenizer.InvalidSyntaxException;
12 import eu.svjatoslav.inspector.tokenizer.Tokenizer;
13 import eu.svjatoslav.inspector.tokenizer.TokenizerMatch;
15 public class JavaFile {
17 private final List<Import> imports = new ArrayList<Import>();
19 private String packageName;
21 private final File file;
23 StringBuffer contents = new StringBuffer();
25 public JavaFile(final File file) throws IOException, InvalidSyntaxException {
30 public void parse() throws IOException, InvalidSyntaxException {
31 System.out.println("java file: " + file);
35 final Tokenizer tokenizer = new Tokenizer(contents.toString());
38 tokenizer.addTerminator(" ", true);
39 tokenizer.addTerminator("\t", true);
40 tokenizer.addTerminator("\n", true);
42 tokenizer.addTerminator(";", false);
43 tokenizer.addTerminator("{", false);
44 tokenizer.addTerminator("}", false);
45 tokenizer.addTerminator("(", false);
46 tokenizer.addTerminator(")", false);
47 tokenizer.addTerminator("[", false);
48 tokenizer.addTerminator("]", false);
49 tokenizer.addTerminator("<", false);
50 tokenizer.addTerminator(">", false);
51 tokenizer.addTerminator(",", false);
54 tokenizer.addTerminator("//", "\n", true);
55 tokenizer.addTerminator("/*", "*/", true);
57 final Modifiers modifiers = new Modifiers();
60 final TokenizerMatch match = tokenizer.getNextToken();
64 if (match.token.equals("package")) {
65 parsePackage(tokenizer);
69 if (match.token.equals("import")) {
70 parseImport(tokenizer);
74 final boolean wasModifier = modifiers.parseModifier(match.token);
78 if ("class".equals(match.token)) {
79 parseClass(tokenizer);
83 if ("interface".equals(match.token)) {
84 parseInterface(tokenizer);
88 System.out.println(" " + modifiers.toString() + " "
91 skipUntilSemicolon(tokenizer);
96 private void parseClass(final Tokenizer tokenizer)
97 throws InvalidSyntaxException {
99 final TokenizerMatch match = tokenizer.getNextToken();
100 final Clazz clazz = new Clazz(packageName, match.token, tokenizer,
102 System.out.println(clazz.toString());
105 private void parseImport(final Tokenizer tokenizer)
106 throws InvalidSyntaxException {
108 final Import imp = new Import();
110 final TokenizerMatch match = tokenizer.getNextToken();
112 if (match.token.equals("static")) {
114 imp.path = tokenizer.getNextToken().token;
116 imp.path = match.token;
120 tokenizer.expectNextToken(";");
123 private void parseInterface(final Tokenizer tokenizer)
124 throws InvalidSyntaxException {
126 final TokenizerMatch match = tokenizer.getNextToken();
127 final Clazz clazz = new Clazz(packageName, match.token, tokenizer, true);
128 System.out.println(clazz.toString());
131 private void parsePackage(final Tokenizer tokenizer)
132 throws InvalidSyntaxException {
134 final TokenizerMatch match = tokenizer.getNextToken();
136 packageName = match.token;
138 tokenizer.expectNextToken(";");
141 private void readFile() throws FileNotFoundException, IOException {
142 final FileReader fileReader = new FileReader(file);
144 final BufferedReader bufferedReader = new BufferedReader(fileReader);
147 final String line = bufferedReader.readLine();
152 contents.append(line);
153 contents.append("\n");
156 bufferedReader.close();
160 public void skipUntilSemicolon(final Tokenizer tokenizer) {
162 final TokenizerMatch token = tokenizer.getNextToken();
167 if (token.token.equals(";"))