One Value

This commit is contained in:
jeffcheasey88 2023-07-09 11:47:29 +02:00
parent af44fe414f
commit 64f39dc840
4 changed files with 50 additions and 24 deletions

View file

@ -19,6 +19,7 @@ public class Bag{
} }
public void set(Object value){ public void set(Object value){
System.out.println("bag set "+value);
this.value = value; this.value = value;
} }
@ -27,6 +28,7 @@ public class Bag{
} }
public void set(String key, Object value){ public void set(String key, Object value){
System.out.println("bag set "+key+" -> "+value);
this.map.put(key, value); this.map.put(key, value);
} }

View file

@ -18,6 +18,7 @@ import be.jeffcheasey88.peeratcode.parser.TokenValidator;
import be.jeffcheasey88.peeratcode.parser.Tokenizer; import be.jeffcheasey88.peeratcode.parser.Tokenizer;
import be.jeffcheasey88.peeratcode.parser.java.Value.BiValue; import be.jeffcheasey88.peeratcode.parser.java.Value.BiValue;
import be.jeffcheasey88.peeratcode.parser.java.Value.TriValue; import be.jeffcheasey88.peeratcode.parser.java.Value.TriValue;
import be.jeffcheasey88.peeratcode.parser.java.Value.ValueContainer;
import be.jeffcheasey88.peeratcode.parser.state.RedirectStateTree; import be.jeffcheasey88.peeratcode.parser.state.RedirectStateTree;
import be.jeffcheasey88.peeratcode.parser.state.StateTree; import be.jeffcheasey88.peeratcode.parser.state.StateTree;
@ -129,8 +130,10 @@ public class JavaParser extends Parser<JavaFile> {
StateTree<JavaElement> value_q0 = value(LAMBDA_5, LAMBDA_6, LAMBDA_7, LAMBDA_8, LAMBDA_10, LAMBDA_11, LAMBDA_12, LAMBDA_13, LAMBDA_14, LAMBDA_15, LAMBDA_16, LAMBDA_17, LAMBDA_18, LAMBDA_19, LAMBDA_20, LAMBDA_21, LAMBDA_23, LAMBDA_24, LAMBDA_25, LAMBDA_26, LAMBDA_27, LAMBDA_28, LAMBDA_29); StateTree<JavaElement> value_q0 = value(LAMBDA_5, LAMBDA_6, LAMBDA_7, LAMBDA_8, LAMBDA_10, LAMBDA_11, LAMBDA_12, LAMBDA_13, LAMBDA_14, LAMBDA_15, LAMBDA_16, LAMBDA_17, LAMBDA_18, LAMBDA_19, LAMBDA_20, LAMBDA_21, LAMBDA_23, LAMBDA_24, LAMBDA_25, LAMBDA_26, LAMBDA_27, LAMBDA_28, LAMBDA_29);
System.out.println("----"); System.out.println("----");
//(ab = (cd & 3)) //(ab = (cd & 34))
tokenizer.getTokens().addAll(build("(","ab","=","(","cd","&","34",")",")")); // tokenizer.getTokens().addAll(build("(","ab","=","(","cd","&","34",")",")"));
tokenizer.getTokens().addAll(build("(","ab","=","cd",")"));
// tokenizer.getTokens().addAll(build("(","ab",")"));
value_q0.seed(tokenizer, null); value_q0.seed(tokenizer, null);
System.out.println("----"); System.out.println("----");
@ -203,25 +206,27 @@ public class JavaParser extends Parser<JavaFile> {
Function<TokenValidator, Boolean> LAMBDA_28, Function<TokenValidator, Boolean> LAMBDA_28,
Function<TokenValidator, Boolean> LAMBDA_29 Function<TokenValidator, Boolean> LAMBDA_29
){ ){
BiFunction<JavaElement, TokenValidator, JavaElement> END_NATIVE_VALUE = (element, validator) -> {
System.out.println("\tnative\t"+element);
System.out.println("\t"+validator.getBag());
return new ValueContainer(validator.getBag().<Bag>get("?").get());
};
BiFunction<JavaElement, TokenValidator, JavaElement> END_VALUE = (element, validator) -> { BiFunction<JavaElement, TokenValidator, JavaElement> END_VALUE = (element, validator) -> {
//single value //single value
System.out.println("end value "+validator.getBag()); System.out.println("\tvalue\t"+element);
Bag bag = validator.getBag(); Value v = new Value(validator.getBag().get());
Value v = new Value(bag); validator.getBag().set(v);
bag.set("result",v);
return v; return v;
}; };
BiFunction<JavaElement, TokenValidator, JavaElement> END_BIVALUE = (element, validator) -> { BiFunction<JavaElement, TokenValidator, JavaElement> END_BIVALUE = (element, validator) -> {
//create new value from parent & created single value //create new value from parent & created single value
System.out.println("end bi value "+validator.getBag()); System.out.println("\tbivalue\t"+element);
Bag bag = validator.getBag(); return null;
return new BiValue((Value)element, bag.<Bag>get("?").get("result"));
}; };
BiFunction<JavaElement, TokenValidator, JavaElement> END_TRIVALUE = (element, validator) -> { BiFunction<JavaElement, TokenValidator, JavaElement> END_TRIVALUE = (element, validator) -> {
//same but for val ? val : val //same but for val ? val : val
System.out.println("end tri value "+validator.getBag()); System.out.println("\ttrivalue\t"+element);
Bag bag = validator.getBag(); return new TriValue();
return new TriValue(bag);
}; };
StateTree<JavaElement> value_q0 = new StateTree<>(); StateTree<JavaElement> value_q0 = new StateTree<>();
StateTree<JavaElement> value_q22 = new StateTree<>(); StateTree<JavaElement> value_q22 = new StateTree<>();
@ -232,7 +237,7 @@ public class JavaParser extends Parser<JavaFile> {
value_q24.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // < value_q24.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // <
value_q24.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // <= value_q24.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // <=
StateTree<JavaElement> value_q41 = value_q24.then(LAMBDA_5); StateTree<JavaElement> value_q41 = value_q24.then(LAMBDA_5);
value_q41.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // << value_q41.then(new RedirectStateTree<>(value_q0,(bag) -> "<<")).<JavaElement>end(END_BIVALUE); // <<
value_q41.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // <<= value_q41.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // <<=
StateTree<JavaElement> value_q25 = value_q22.then(LAMBDA_6); StateTree<JavaElement> value_q25 = value_q22.then(LAMBDA_6);
value_q25.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // > value_q25.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // >
@ -287,9 +292,9 @@ public class JavaParser extends Parser<JavaFile> {
value_q1.<JavaElement>end(END_VALUE).then(value_q22); value_q1.<JavaElement>end(END_VALUE).then(value_q22);
StateTree<JavaElement> value_q11 = value_q1.then(LAMBDA_25); StateTree<JavaElement> value_q11 = value_q1.then(LAMBDA_25);
value_q11.then(value_q1); value_q11.then(value_q1);
value_q0.then(LAMBDA_23).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).then(LAMBDA_24).<JavaElement>end(END_VALUE).then(value_q22); value_q0.then(LAMBDA_23).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).then(LAMBDA_24).<JavaElement>end(END_NATIVE_VALUE).then(value_q22);
value_q0.then(LAMBDA_26).then(LAMBDA_27).then(LAMBDA_26).<JavaElement>end(END_VALUE).then(value_q22); value_q0.then(LAMBDA_26).then(LAMBDA_27).then(LAMBDA_26).<JavaElement>end(END_NATIVE_VALUE).then(value_q22);
value_q0.then(LAMBDA_28).then(LAMBDA_29).then(LAMBDA_28).<JavaElement>end(END_VALUE).then(value_q22); value_q0.then(LAMBDA_28).then(LAMBDA_29).then(LAMBDA_28).<JavaElement>end(END_NATIVE_VALUE).then(value_q22);
return value_q0; return value_q0;
} }

View file

@ -1,6 +1,5 @@
package be.jeffcheasey88.peeratcode.parser.java; package be.jeffcheasey88.peeratcode.parser.java;
import be.jeffcheasey88.peeratcode.parser.Bag;
import be.jeffcheasey88.peeratcode.parser.Token; import be.jeffcheasey88.peeratcode.parser.Token;
public class Value extends JavaElement{ public class Value extends JavaElement{
@ -9,9 +8,9 @@ public class Value extends JavaElement{
protected Value(){} protected Value(){}
public Value(Bag bag){ public Value(Token token){
this.token = bag.get(); this.token = token;
System.out.println("NEW value "+token); System.out.println(this);
} }
@Override @Override
@ -19,6 +18,22 @@ public class Value extends JavaElement{
return "[Value="+token+"]"; return "[Value="+token+"]";
} }
public static class ValueContainer extends Value{
private Value value;
public ValueContainer(Value value){
this.value = value;
System.out.println(this);
}
@Override
public String toString(){
return "[ContainerValue="+value+"]";
}
}
public static class BiValue extends Value{ public static class BiValue extends Value{
private Value left; private Value left;
@ -27,15 +42,19 @@ public class Value extends JavaElement{
public BiValue(Value left, Value right){ public BiValue(Value left, Value right){
this.left = left; this.left = left;
this.right = right; this.right = right;
System.out.println("NEW BiValue "+left+"|"+right); System.out.println(this);
} }
@Override
public String toString(){
return "[BiValue left="+left+" right="+right+"]";
}
} }
public static class TriValue extends Value{ public static class TriValue extends Value{
public TriValue(Bag bag){ public TriValue(){
super(bag);
} }
} }
} }

View file

@ -32,7 +32,7 @@ public class RedirectStateTree<E, T extends E> extends StateTree<T>{
return false; return false;
}); });
Object builded = redirect.internalSeed(branch, (E) element); Object builded = redirect.internalSeed(branch, (E) element);
// System.out.println("redirect builded "+builded); System.out.println("redirect "+g+" builded "+builded);
if(builded == null) return null; if(builded == null) return null;
validator.merge(branch); validator.merge(branch);