Char as TokenType
This commit is contained in:
parent
d93c8c0f93
commit
6b1ce3a1f4
4 changed files with 43 additions and 32 deletions
|
@ -57,17 +57,21 @@ public class Annotation extends JavaElement{
|
|||
|
||||
@Override
|
||||
public <E extends JavaElement> E find(Function<JavaElement, Boolean> finder){
|
||||
if(this.values != null){
|
||||
for(Value value : this.values.values()){
|
||||
if(finder.apply(value)) return (E)value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends JavaElement> void findAll(Function<JavaElement, Boolean> finder, List<E> list){
|
||||
if(this.values != null){
|
||||
for(Value value : this.values.values()){
|
||||
if(finder.apply(value)) list.add((E)value);
|
||||
value.findAll(finder, list);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<JavaElement> {
|
|||
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<JavaElement> {
|
|||
|
||||
//VALUE
|
||||
BiFunction<JavaElement, Bag, JavaElement> 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<JavaElement> {
|
|||
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.<Token>get()));
|
||||
|
|
|
@ -14,7 +14,7 @@ public class WhileOperation extends OperationBag{
|
|||
this.condition = condition;
|
||||
}
|
||||
|
||||
public Value getCondition(){s
|
||||
public Value getCondition(){
|
||||
return this.condition;
|
||||
}
|
||||
|
||||
|
|
|
@ -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)");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue