java syntax parser
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / methods / JavaFile.java
1 package eu.svjatoslav.inspector.java.methods;
2
3 import java.io.BufferedReader;
4 import java.io.File;
5 import java.io.FileNotFoundException;
6 import java.io.FileReader;
7 import java.io.IOException;
8 import java.util.ArrayList;
9 import java.util.List;
10
11 import eu.svjatoslav.inspector.tokenizer.Tokenizer;
12 import eu.svjatoslav.inspector.tokenizer.TokenizerMatch;
13
14 public class JavaFile {
15
16         private final List<Import> imports = new ArrayList<Import>();
17
18         private final File file;
19
20         StringBuffer contents = new StringBuffer();
21
22         public JavaFile(final File file) throws IOException {
23                 this.file = file;
24                 parse();
25         }
26
27         public void parse() throws IOException {
28                 System.out.println("java file: " + file);
29
30                 readFile();
31
32                 final Tokenizer tokenizer = new Tokenizer(contents.toString());
33                 tokenizer.addTerminator(" ", true);
34                 tokenizer.addTerminator("\t", true);
35                 tokenizer.addTerminator("\n", true);
36
37                 tokenizer.addTerminator(";", false);
38
39                 while (true) {
40                         final TokenizerMatch match = tokenizer.getToken();
41                         if (match == null)
42                                 break;
43
44                         if (match.token.equals("import"))
45                                 parseImport(tokenizer);
46                 }
47
48         }
49
50         private void parseImport(final Tokenizer tokenizer) {
51                 final Import imp = new Import();
52
53                 final TokenizerMatch match = tokenizer.getToken();
54
55                 if (match.token.equals("static")) {
56                         imp.isStatic = true;
57                         imp.path = tokenizer.getToken().token;
58                 } else
59                         imp.path = match.token;
60
61                 imports.add(imp);
62         }
63
64         private void readFile() throws FileNotFoundException, IOException {
65                 final FileReader fileReader = new FileReader(file);
66
67                 final BufferedReader bufferedReader = new BufferedReader(fileReader);
68
69                 while (true) {
70                         final String line = bufferedReader.readLine();
71
72                         if (line == null)
73                                 break;
74
75                         contents.append(line);
76                         contents.append("\n");
77                 }
78
79                 bufferedReader.close();
80                 fileReader.close();
81         }
82
83 }