From 12155a6bc8c9b4a36dfca944023e728b99d9d1a0 Mon Sep 17 00:00:00 2001 From: jeffcheasey88 <66554203+jeffcheasey88@users.noreply.github.com> Date: Sun, 16 Jul 2023 19:35:22 +0200 Subject: [PATCH] StateTree -> import (only firstone) --- .../peeratcode/parser/java/JavaParser.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) 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");