diff --git a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java index fd39a5f..d45ed10 100644 --- a/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java +++ b/src/be/jeffcheasey88/peeratcode/parser/java/JavaParser.java @@ -35,6 +35,27 @@ public class JavaParser extends Parser { public JavaParser(){ Tokenizer tokenizer = new Tokenizer(); + + + StateTree importState = new StateTree<>(); + importState.then((validator) -> { + if(validator.validate( + (token) -> token.getValue().equals("import"), + (bag, token) -> bag.set(new LinkedList<>()))){ + + validator.validate( + (token) -> token.getValue().equals("static"), + (bag, token) -> bag.set("static", null)); + + while(validator.validate( + (token) -> !token.getValue().equals(";"), + (bag, token) -> bag.>get().add(token)) + ); + + return validator.validate((token) -> token.getValue().equals(";")); + } + return false; + }).end((javafile, bag) -> javafile.addImport(bag)); StateTree main = new StateTree<>(); @@ -43,14 +64,17 @@ public class JavaParser extends Parser { if(validator.validate( (token) -> token.getValue().equals("package"), (bag, token) -> bag.set(new LinkedList<>()))){ + while(validator.validate( (token) -> !token.getValue().equals(";"), (bag, token) -> bag.>get().add(token)) ); + return validator.validate((token) -> token.getValue().equals(";")); } return false; - }).end((javafile, bag) -> javafile.setPackage(bag)); + }).end((javafile, bag) -> javafile.setPackage(bag)) + .thenNoChild(importState); System.out.println((System.currentTimeMillis()-time)+"ms");