+ parse();
+ }
+
+ public void parse() throws IOException, InvalidSyntaxException {
+ System.out.println("java file: " + file);
+
+ readFile();
+
+ final Tokenizer tokenizer = new Tokenizer(contents.toString());
+
+ // empty space
+ tokenizer.addTerminator(" ", true);
+ tokenizer.addTerminator("\t", true);
+ tokenizer.addTerminator("\n", true);
+
+ tokenizer.addTerminator(";", false);
+ tokenizer.addTerminator("{", false);
+ tokenizer.addTerminator("}", false);
+ tokenizer.addTerminator("(", false);
+ tokenizer.addTerminator(")", false);
+ tokenizer.addTerminator("[", false);
+ tokenizer.addTerminator("]", false);
+ tokenizer.addTerminator("<", false);
+ tokenizer.addTerminator(">", false);
+ tokenizer.addTerminator(",", false);
+ tokenizer.addTerminator("@", false);
+
+ // comments
+ tokenizer.addTerminator("//", "\n", true);
+ tokenizer.addTerminator("/*", "*/", true);
+
+ final Modifiers modifiers = new Modifiers();
+
+ while (true) {
+ final TokenizerMatch match = tokenizer.getNextToken();
+ if (match == null)
+ break;
+
+ if (match.token.equals("package")) {
+ parsePackage(tokenizer);
+ continue;
+ }
+
+ if (match.token.equals("import")) {
+ parseImport(tokenizer);
+ continue;
+ }
+
+ final boolean wasModifier = modifiers.parseModifier(match.token);
+ if (wasModifier)
+ continue;
+
+ if ("class".equals(match.token)) {
+ parseClass(tokenizer);
+ continue;
+ }
+
+ if ("interface".equals(match.token)) {
+ parseInterface(tokenizer);
+ continue;
+ }
+
+ if ("@".equals(match.token)) {
+ final Annotation annotation = new Annotation(tokenizer);
+ continue;
+ }
+
+ System.out.println(" " + modifiers.toString() + " "
+ + match.token);
+ modifiers.reset();
+ skipUntilSemicolon(tokenizer);
+ }
+
+ }
+
+ private void parseClass(final Tokenizer tokenizer)
+ throws InvalidSyntaxException {
+
+ final TokenizerMatch match = tokenizer.getNextToken();
+ final Clazz clazz = new Clazz(packageName, match.token, tokenizer,
+ false);
+ // System.out.println(clazz.toString());
+ classes.add(clazz);
+