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());
36 tokenizer.addTerminator(" ", true);
37 tokenizer.addTerminator("\t", true);
38 tokenizer.addTerminator("\n", true);
40 tokenizer.addTerminator(";", false);
41 tokenizer.addTerminator("{", false);
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);
51 final Modifiers modifiers = new Modifiers();
54 final TokenizerMatch match = tokenizer.getToken();
58 if (match.token.equals("package")) {
59 parsePackage(tokenizer);
63 if (match.token.equals("import")) {
64 parseImport(tokenizer);
68 final boolean wasModifier = modifiers.parseModifier(match.token);
72 if ("class".equals(match.token)) {
73 parseClass(tokenizer);
77 System.out.println(" " + modifiers.toString() + " "
80 skipUntilSemicolon(tokenizer);
85 private void parseClass(final Tokenizer tokenizer)
86 throws InvalidSyntaxException {
88 final TokenizerMatch match = tokenizer.getToken();
89 final Clazz clazz = new Clazz(packageName, match.token, tokenizer);
90 System.out.println(clazz.toString());
94 private void parseImport(final Tokenizer tokenizer)
95 throws InvalidSyntaxException {
97 final Import imp = new Import();
99 final TokenizerMatch match = tokenizer.getToken();
101 if (match.token.equals("static")) {
103 imp.path = tokenizer.getToken().token;
105 imp.path = match.token;
109 tokenizer.expectToken(";");
112 private void parsePackage(final Tokenizer tokenizer)
113 throws InvalidSyntaxException {
115 final TokenizerMatch match = tokenizer.getToken();
117 packageName = match.token;
119 tokenizer.expectToken(";");
122 private void readFile() throws FileNotFoundException, IOException {
123 final FileReader fileReader = new FileReader(file);
125 final BufferedReader bufferedReader = new BufferedReader(fileReader);
128 final String line = bufferedReader.readLine();
133 contents.append(line);
134 contents.append("\n");
137 bufferedReader.close();
141 public void skipUntilSemicolon(final Tokenizer tokenizer) {
143 final TokenizerMatch token = tokenizer.getToken();
144 if (token.token.equals(";"))