+ public static final String UTF_8 = "UTF-8";
+ public final List<Clazz> classes = new ArrayList<>();
+ String contents;
+ private final List<Import> imports = new ArrayList<>();
+ private final File file;
+ private String packageName;
+
+ public JavaFile(final File file) throws IOException, InvalidSyntaxException {
+ this.file = file;
+ parse();
+ }
+
+ public void parse() throws IOException, InvalidSyntaxException {
+ System.out.println("java file: " + file);
+
+ contents = getFileContentsAsString(file);
+
+ final Tokenizer tokenizer = new Tokenizer(contents);
+
+ // empty space
+ tokenizer.addTerminator(" ", DROP);
+ tokenizer.addTerminator("\t", DROP);
+ tokenizer.addTerminator("\n", DROP);
+
+ tokenizer.addTerminator(";", PRESERVE);
+ tokenizer.addTerminator("{", PRESERVE);
+ tokenizer.addTerminator("}", PRESERVE);
+ tokenizer.addTerminator("(", PRESERVE);
+ tokenizer.addTerminator(")", PRESERVE);
+ tokenizer.addTerminator("[", PRESERVE);
+ tokenizer.addTerminator("]", PRESERVE);
+ tokenizer.addTerminator("<", PRESERVE);
+ tokenizer.addTerminator(">", PRESERVE);
+ tokenizer.addTerminator(",", PRESERVE);
+ tokenizer.addTerminator("@", PRESERVE);
+
+ // comments
+ tokenizer.addTerminator("//", "\n", DROP);
+ tokenizer.addTerminator("/*", "*/", DROP);
+
+ final Modifiers modifiers = new Modifiers();