import java.util.ArrayList;
import java.util.List;
+import eu.svjatoslav.inspector.tokenizer.InvalidSyntaxException;
import eu.svjatoslav.inspector.tokenizer.Tokenizer;
import eu.svjatoslav.inspector.tokenizer.TokenizerMatch;
private final List<Import> imports = new ArrayList<Import>();
+ private String packageName;
+
private final File file;
StringBuffer contents = new StringBuffer();
- public JavaFile(final File file) throws IOException {
+ public JavaFile(final File file) throws IOException, InvalidSyntaxException {
this.file = file;
parse();
}
- public void parse() throws IOException {
+ public void parse() throws IOException, InvalidSyntaxException {
System.out.println("java file: " + file);
readFile();
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);
+
+ final Modifiers modifiers = new Modifiers();
while (true) {
final TokenizerMatch match = tokenizer.getToken();
if (match == null)
break;
- if (match.token.equals("import"))
+ 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;
+ }
+
+ System.out.println(" " + modifiers.toString() + " "
+ + match.token);
+ modifiers.reset();
+ skipUntilSemicolon(tokenizer);
}
}
- private void parseImport(final Tokenizer tokenizer) {
+ private void parseClass(final Tokenizer tokenizer)
+ throws InvalidSyntaxException {
+
+ final TokenizerMatch match = tokenizer.getToken();
+ final Clazz clazz = new Clazz(packageName, match.token, tokenizer);
+ System.out.println(clazz.toString());
+
+ }
+
+ private void parseImport(final Tokenizer tokenizer)
+ throws InvalidSyntaxException {
+
final Import imp = new Import();
final TokenizerMatch match = tokenizer.getToken();
imp.path = match.token;
imports.add(imp);
+
+ tokenizer.expectToken(";");
+ }
+
+ private void parsePackage(final Tokenizer tokenizer)
+ throws InvalidSyntaxException {
+
+ final TokenizerMatch match = tokenizer.getToken();
+
+ packageName = match.token;
+
+ tokenizer.expectToken(";");
}
private void readFile() throws FileNotFoundException, IOException {
fileReader.close();
}
+ public void skipUntilSemicolon(final Tokenizer tokenizer) {
+ while (true) {
+ final TokenizerMatch token = tokenizer.getToken();
+ if (token.token.equals(";"))
+ return;
+ }
+ }
+
}