diff --git a/src/dev/peerat/parser/java/Annotation.java b/src/dev/peerat/parser/java/Annotation.java index 2fe9180..73c33f4 100644 --- a/src/dev/peerat/parser/java/Annotation.java +++ b/src/dev/peerat/parser/java/Annotation.java @@ -57,17 +57,21 @@ public class Annotation extends JavaElement{ @Override public E find(Function finder){ - for(Value value : this.values.values()){ - if(finder.apply(value)) return (E)value; + if(this.values != null){ + for(Value value : this.values.values()){ + if(finder.apply(value)) return (E)value; + } } return null; } @Override public void findAll(Function finder, List list){ - for(Value value : this.values.values()){ - if(finder.apply(value)) list.add((E)value); - value.findAll(finder, list); + if(this.values != null){ + for(Value value : this.values.values()){ + if(finder.apply(value)) list.add((E)value); + value.findAll(finder, list); + } } } } diff --git a/src/dev/peerat/parser/java/JavaParser.java b/src/dev/peerat/parser/java/JavaParser.java index 6fe1a3a..ff649c1 100644 --- a/src/dev/peerat/parser/java/JavaParser.java +++ b/src/dev/peerat/parser/java/JavaParser.java @@ -23,6 +23,7 @@ import dev.peerat.parser.TokenValidator; import dev.peerat.parser.Tokenizer; import dev.peerat.parser.java.Annotation.AnnotableBuffer; import dev.peerat.parser.java.Function.FunctionContainer; +import dev.peerat.parser.java.Value.BiValue; import dev.peerat.parser.java.Variable.VariableContainer; import dev.peerat.parser.state.BuilderStateTree; import dev.peerat.parser.state.InitialStateTree; @@ -88,6 +89,24 @@ public class JavaParser extends Parser { token = new Token(lineNumber, i+1, value, TokenType.STRING); i = j-1; System.out.println(token); + }else if(c == '\''){ + String value = "'"; + int j = i+1; + for(; j < line.length(); j++){ + c = line.charAt(j); + if(c == '\''){ + value+=c; + j++; + break; + }else if(c == '\\'){ + value+=c+line.charAt(++j); + }else{ + value+=c; + } + } + token = new Token(lineNumber, i+1, value, TokenType.CHAR); + i = j-1; + System.out.println(token); }else{ if(c == '/' && (i < line.length()-1 && line.charAt(i+1) == '/')) break; if(c == '/' && (i < line.length()-1 && line.charAt(i+1) == '*')){ @@ -199,17 +218,18 @@ public class JavaParser extends Parser { //VALUE BiFunction value_builder = (parent, bag) -> { -// if(bag.has("right")){ -// -// BiValue result = new BiValue( -// -// bag.get("left"), -// -// bag.get("action"), -// -// bag.get("right")); -// bag.set(result); -// } + System.out.println(bag); + if(bag.has("right")){ + + BiValue result = new BiValue( + + bag.get("left"), + + bag.get("action"), + + bag.get("right")); + bag.set(result); + } return null; }; @@ -234,21 +254,8 @@ public class JavaParser extends Parser { value_list_element.then((validator) -> validator.validate((token) -> token.getValue().equals(","))) .then(value_list_element); - value.then((validator) -> { - if(validator.validate((token) -> token.getValue().equals("'"))){ - validator.validate((token) -> token.getValue().equals("\\")); - - return - validator.validate((token) -> token.getValue().equals("'")) - || - (validator.validate((token) -> !token.getValue().equals("'")) - && validator.validate((token) -> token.getValue().equals("'"))); - } - return false; - }).end(); - value.then((validator) -> validator.validate( - (token) -> token.getType().equals(TokenType.STRING), + (token) -> token.getType().equals(TokenType.STRING) || token.getType().equals(TokenType.CHAR), (bag, token) -> bag.set(token))) .end((parent,bag) -> { bag.set(new Value(bag.get())); diff --git a/src/dev/peerat/parser/java/operation/WhileOperation.java b/src/dev/peerat/parser/java/operation/WhileOperation.java index e8c9596..4ebea01 100644 --- a/src/dev/peerat/parser/java/operation/WhileOperation.java +++ b/src/dev/peerat/parser/java/operation/WhileOperation.java @@ -14,7 +14,7 @@ public class WhileOperation extends OperationBag{ this.condition = condition; } - public Value getCondition(){s + public Value getCondition(){ return this.condition; } diff --git a/test/dev/peerat/parser/java/ValueTests.java b/test/dev/peerat/parser/java/ValueTests.java index 835719a..9c699aa 100644 --- a/test/dev/peerat/parser/java/ValueTests.java +++ b/test/dev/peerat/parser/java/ValueTests.java @@ -267,6 +267,6 @@ public class ValueTests { @Test void doubleInDouble() throws Exception{ - JavaElement result = testCase("(jeffcheasey88 == goefra) || (yuzzu == yugs) || (test == \"Content-Disposition: form-data; name=\\\"?\\\"\")"); + JavaElement result = testCase("(jeffcheasey88 == goefra) || (yuzzu == yugs)"); } }