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                 tokenizer.addTerminator("{", false);
39                 tokenizer.addTerminator("}", false);
40                 tokenizer.addTerminator("(", false);
41                 tokenizer.addTerminator(")", false);
42                 tokenizer.addTerminator("[", false);
43                 tokenizer.addTerminator("]", false);
44
45                 while (true) {
46                         final TokenizerMatch match = tokenizer.getToken();
47                         if (match == null)
48                                 break;
49
50                         if (match.token.equals("import"))
51                                 parseImport(tokenizer);
52
53                         if (match.token.equals("package"))
54                                 parsePackage(tokenizer);
55
56                 }
57
58         }
59
60         private void parseImport(final Tokenizer tokenizer) {
61                 final Import imp = new Import();
62
63                 TokenizerMatch match = tokenizer.getToken();
64
65                 if (match.token.equals("static")) {
66                         imp.isStatic = true;
67                         imp.path = tokenizer.getToken().token;
68                 } else
69                         imp.path = match.token;
70
71                 imports.add(imp);
72
73                 // ;
74                 match = tokenizer.getToken();
75         }
76
77         private void parsePackage(final Tokenizer tokenizer) {
78
79                 TokenizerMatch match = tokenizer.getToken();
80
81                 System.out.println(match.token);
82
83                 // ;
84                 match = tokenizer.getToken();
85         }
86
87         private void readFile() throws FileNotFoundException, IOException {
88                 final FileReader fileReader = new FileReader(file);
89
90                 final BufferedReader bufferedReader = new BufferedReader(fileReader);
91
92                 while (true) {
93                         final String line = bufferedReader.readLine();
94
95                         if (line == null)
96                                 break;
97
98                         contents.append(line);
99                         contents.append("\n");
100                 }
101
102                 bufferedReader.close();
103                 fileReader.close();
104         }
105
106 }