458 lines
26 KiB
Java
458 lines
26 KiB
Java
package be.jeffcheasey88.peeratcode.parser.java;
|
|
|
|
import java.io.BufferedReader;
|
|
import java.io.BufferedWriter;
|
|
import java.io.File;
|
|
import java.io.FileReader;
|
|
import java.io.FileWriter;
|
|
import java.lang.reflect.Modifier;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.function.BiConsumer;
|
|
import java.util.function.BiFunction;
|
|
import java.util.function.Function;
|
|
|
|
import be.jeffcheasey88.peeratcode.parser.Bag;
|
|
import be.jeffcheasey88.peeratcode.parser.Parser;
|
|
import be.jeffcheasey88.peeratcode.parser.Token;
|
|
import be.jeffcheasey88.peeratcode.parser.TokenType;
|
|
import be.jeffcheasey88.peeratcode.parser.TokenValidator;
|
|
import be.jeffcheasey88.peeratcode.parser.Tokenizer;
|
|
import be.jeffcheasey88.peeratcode.parser.java.Value.BiValue;
|
|
import be.jeffcheasey88.peeratcode.parser.java.Value.TriValue;
|
|
import be.jeffcheasey88.peeratcode.parser.state.RedirectStateTree;
|
|
import be.jeffcheasey88.peeratcode.parser.state.StateTree;
|
|
|
|
public class JavaParser extends Parser<JavaFile> {
|
|
|
|
public static long time;
|
|
|
|
public static void main(String[] args) throws Exception{
|
|
File file = new File("C:\\Users\\jeffc\\eclipse-workspace\\peer-at-code-backend\\src\\be\\jeffcheasey88\\peeratcode\\routes\\Result.java");
|
|
BufferedReader reader = new BufferedReader(new FileReader(file));
|
|
|
|
time = System.currentTimeMillis();
|
|
|
|
Parser<JavaFile> parser = new JavaParser();
|
|
JavaFile jFile = new JavaFile();
|
|
parser.parse(reader, jFile);
|
|
|
|
System.out.println((System.currentTimeMillis()-time)+"ms");
|
|
|
|
parser.build(new BufferedWriter(new FileWriter(new File("/home/ParserV2.txt"))));
|
|
}
|
|
|
|
private static final
|
|
Function<TokenValidator, Boolean>
|
|
LAMBDA_name = (v) -> v.validate((t) -> t.getType().equals(TokenType.NAME), (bag, token) -> {
|
|
Token base = bag.get();
|
|
if(base == null) bag.set(token);
|
|
else bag.set(base.concat(token));
|
|
System.out.println("name validate "+token);
|
|
}),
|
|
LAMBDA_mod = (v) -> v.validate((t) ->
|
|
JavaParser.getModifier(t.getValue()) > 0,
|
|
(bag, token) -> {
|
|
Integer modifier = bag.get();
|
|
if(modifier == null) modifier = 0;
|
|
bag.set(modifier+JavaParser.getModifier(token.getValue()));
|
|
});
|
|
BiFunction<JavaFile, Bag, JavaFile>
|
|
END_PACKAGE = ((javafile, bag) -> javafile.setPackage(bag)),
|
|
END_IMPORT = ((javafile, bag) -> javafile.addImport(bag));
|
|
BiFunction<JavaFile, Bag, Class>
|
|
END_CLASS = ((javafile, bag) -> javafile.setClass(new Class(bag)));
|
|
BiFunction<JavaElement, Bag, Token>
|
|
END_TYPE = ((javafile, bag) -> {
|
|
System.out.println("return token "+bag.get());
|
|
return bag.get();
|
|
});
|
|
BiFunction<JavaElement, Bag, Variable>
|
|
END_VAR = ((javafile, bag) -> {
|
|
System.out.println("new var");
|
|
return new Variable(bag);
|
|
});
|
|
BiFunction<JavaElement, Bag, JavaElement>
|
|
END_FUNC = ((javafile, bag) -> {
|
|
System.out.println("new function");
|
|
return new be.jeffcheasey88.peeratcode.parser.java.Function(bag);
|
|
});
|
|
BiFunction<JavaElement, Bag, Integer>
|
|
END_MODIFIER = ((javafile, bag) ->{
|
|
return bag.get();
|
|
});
|
|
BiFunction<JavaElement, Bag, JavaElement>
|
|
END_OP = ((javafile, bag) -> {
|
|
System.out.println("\top");
|
|
return javafile;
|
|
});
|
|
BiFunction<JavaElement, Bag, JavaElement>
|
|
END_ANNOTATION = ((javafile, bag) -> {
|
|
System.out.println("ANNOTATION");
|
|
return javafile;
|
|
});
|
|
|
|
public JavaParser(){
|
|
Tokenizer tokenizer = new Tokenizer();
|
|
|
|
Function<TokenValidator, Boolean> LAMBDA_0 = (v) -> v.validate((t) -> t.getValue().equals("package"));
|
|
Function<TokenValidator, Boolean> LAMBDA_1 = (v) -> v.validate((t) -> t.getValue().equals(";"));
|
|
Function<TokenValidator, Boolean> LAMBDA_3 = (v) -> v.validate((t) -> t.getValue().equals("import"));
|
|
Function<TokenValidator, Boolean> LAMBDA_4 = (v) -> v.validate((t) -> t.getValue().equals("static"), (bag, token) -> bag.set("static", "bool"));
|
|
Function<TokenValidator, Boolean> LAMBDA_5 = (v) -> v.validate((t) -> t.getValue().equals("<"));
|
|
Function<TokenValidator, Boolean> LAMBDA_6 = (v) -> v.validate((t) -> t.getValue().equals(">"));
|
|
Function<TokenValidator, Boolean> LAMBDA_7 = (v) -> v.validate((t) -> t.getValue().equals(","));
|
|
Function<TokenValidator, Boolean> LAMBDA_8 = (v) -> v.validate((t) -> t.getValue().equals("="));
|
|
Function<TokenValidator, Boolean> LAMBDA_10 = (v) -> v.validate((t) -> !t.getValue().equals(""));
|
|
Function<TokenValidator, Boolean> LAMBDA_23 = (v) -> v.validate((t) -> t.getValue().equals("("));
|
|
Function<TokenValidator, Boolean> LAMBDA_24 = (v) -> v.validate((t) -> t.getValue().equals(")"));
|
|
Function<TokenValidator, Boolean> LAMBDA_25 = (v) -> v.validate((t) -> t.getValue().equals("."));
|
|
Function<TokenValidator, Boolean> LAMBDA_28 = (v) -> v.validate((t) -> t.getValue().equals("'"));
|
|
Function<TokenValidator, Boolean> LAMBDA_29 = (v) -> v.validate((t) -> t.getValue().length() == 1);
|
|
Function<TokenValidator, Boolean> LAMBDA_30 = (v) -> v.validate((t) -> t.getValue().equals("@"));
|
|
Function<TokenValidator, Boolean> LAMBDA_32 = (v) -> v.validate((t) -> t.getValue().equals("if"));
|
|
Function<TokenValidator, Boolean> LAMBDA_33 = (v) -> v.validate((t) -> t.getValue().equals("for"));
|
|
Function<TokenValidator, Boolean> LAMBDA_34 = (v) -> v.validate((t) -> t.getValue().equals("while"));
|
|
Function<TokenValidator, Boolean> LAMBDA_35 = (v) -> v.validate((t) -> t.getValue().equals("return"));
|
|
Function<TokenValidator, Boolean> LAMBDA_36 = (v) -> v.validate((t) -> t.getValue().equals("do"));
|
|
Function<TokenValidator, Boolean> LAMBDA_37 = (v) -> v.validate((t) -> t.getValue().equals("synchronized"));
|
|
Function<TokenValidator, Boolean> LAMBDA_38 = (v) -> v.validate((t) -> t.getValue().equals("continue"));
|
|
Function<TokenValidator, Boolean> LAMBDA_39 = (v) -> v.validate((t) -> t.getValue().equals("throw"));
|
|
Function<TokenValidator, Boolean> LAMBDA_40 = (v) -> v.validate((t) -> t.getValue().equals("break"));
|
|
Function<TokenValidator, Boolean> LAMBDA_41 = (v) -> v.validate((t) -> t.getValue().equals("try"));
|
|
Function<TokenValidator, Boolean> LAMBDA_42 = (v) -> v.validate((t) -> t.getValue().equals("{"));
|
|
Function<TokenValidator, Boolean> LAMBDA_43 = (v) -> v.validate((t) -> t.getValue().equals("}"));
|
|
Function<TokenValidator, Boolean> LAMBDA_45 = (v) -> v.validate((t) -> t.getValue().equals("throws"));
|
|
Function<TokenValidator, Boolean> LAMBDA_47 = (v) -> v.validate((t) -> t.getValue().equals("class"));
|
|
Function<TokenValidator, Boolean> LAMBDA_48 = (v) -> v.validate((t) -> t.getValue().equals("extends"));
|
|
Function<TokenValidator, Boolean> LAMBDA_49 = (v) -> v.validate((t) -> t.getValue().equals("implements"));
|
|
|
|
StateTree<JavaFile> main = new StateTree<>();
|
|
StateTree<JavaFile> package_q0 = new StateTree<>();
|
|
package_q0.then(LAMBDA_0).then((v) -> v.validate((t) -> !t.getValue().equals(";"), groupToken("package"))).loop().then(LAMBDA_1).<JavaFile>end(END_PACKAGE);
|
|
|
|
StateTree<JavaFile> import_q0 = new StateTree<>();
|
|
StateTree<JavaFile> import_q1 = import_q0.then(LAMBDA_3);
|
|
StateTree<JavaFile> import_q3 = import_q1.then((v) -> v.validate((t) -> !t.getValue().equals(";"), groupToken("import"))).loop();
|
|
import_q3.then(LAMBDA_1).<JavaFile>end(END_IMPORT);
|
|
StateTree<JavaFile> import_q2 = import_q1.then(LAMBDA_4);
|
|
import_q2.then(import_q3);
|
|
|
|
StateTree<JavaElement> modifier_q0 = new StateTree<>();
|
|
modifier_q0.then(LAMBDA_mod).<Integer>end(END_MODIFIER);
|
|
|
|
StateTree<JavaElement> type_q0 = new StateTree<>();
|
|
StateTree<JavaElement> type_q1 = type_q0.then(LAMBDA_name);
|
|
StateTree<JavaElement> type_q3 = type_q1.then(LAMBDA_5);
|
|
StateTree<JavaElement> type_q4 = type_q3.then(LAMBDA_name);
|
|
StateTree<JavaElement> type_q5 = type_q4.then(LAMBDA_6).loop();
|
|
type_q5.<Token>end(END_TYPE);
|
|
StateTree<JavaElement> type_q6 = type_q4.then(LAMBDA_7);
|
|
type_q5.then(type_q6);
|
|
type_q5.then(type_q4);
|
|
type_q6.then(type_q4);
|
|
type_q4.then(type_q3);
|
|
type_q1.<Token>end(END_TYPE);
|
|
|
|
StateTree<JavaElement> value_q0 = value();
|
|
|
|
StateTree<JavaElement> annotation_q0 = new StateTree<>();
|
|
StateTree<JavaElement> annotation_q2 = annotation_q0.then(LAMBDA_30).then(LAMBDA_name);
|
|
StateTree<JavaElement> annotation_q4 = annotation_q2.then(LAMBDA_23);
|
|
annotation_q4.then(new RedirectStateTree<>(value_q0,(bag) -> "annotation_value")).then(LAMBDA_24).end(END_ANNOTATION);
|
|
annotation_q4.then(LAMBDA_24).end(END_ANNOTATION);
|
|
StateTree<JavaElement> annotation_q7 = annotation_q4.then(LAMBDA_name);
|
|
StateTree<JavaElement> annotation_q9 = annotation_q7.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "annotation_value"));
|
|
annotation_q9.then(LAMBDA_24).end(END_ANNOTATION);
|
|
StateTree<JavaElement> annotation_q10 = annotation_q9.then(LAMBDA_7);
|
|
annotation_q10.then(annotation_q7);
|
|
annotation_q2.end(END_ANNOTATION);
|
|
|
|
StateTree<JavaElement> variable_q0 = new StateTree<>();
|
|
StateTree<JavaElement> variable_q10 = variable_q0.then(new RedirectStateTree<>(modifier_q0,(bag) -> "modifier"));
|
|
StateTree<JavaElement> variable_q11 = variable_q0.then(new RedirectStateTree<>(annotation_q0,(bag) -> "var_annotation"));
|
|
variable_q11.then(variable_q10);
|
|
StateTree<JavaElement> variable_q1 = variable_q0.then(new RedirectStateTree<>(type_q0,(bag) -> "type"));
|
|
StateTree<JavaElement> variable_q2 = variable_q1.then(LAMBDA_name);
|
|
StateTree<JavaElement> variable_q5 = variable_q2.then(LAMBDA_7);
|
|
StateTree<JavaElement> variable_q7 = variable_q2.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?"));
|
|
variable_q7.then(variable_q5);
|
|
variable_q2.then(LAMBDA_1).<Variable>end(END_VAR);
|
|
variable_q7.then(LAMBDA_1).<Variable>end(END_VAR);
|
|
variable_q5.then(variable_q2);
|
|
variable_q10.then(variable_q1);
|
|
variable_q11.then(variable_q1);
|
|
|
|
StateTree<JavaElement> operation_q0 = new StateTree<>();
|
|
StateTree<JavaElement> operation_q1 = operation_q0.then(LAMBDA_name);
|
|
operation_q1.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "op_value")).then(LAMBDA_1).<JavaElement>end(END_OP);
|
|
StateTree<JavaElement> operation_q5 = operation_q1.then(LAMBDA_25);
|
|
operation_q5.then(operation_q1);
|
|
operation_q0.then(LAMBDA_32).then(LAMBDA_23).then(new RedirectStateTree<>(value_q0,(bag) -> "op_value")).then(LAMBDA_24).<JavaElement>end(END_OP);
|
|
operation_q0.then(LAMBDA_33).then(LAMBDA_23).then(new RedirectStateTree<>(value_q0,(bag) -> "op_value")).then(LAMBDA_24).<JavaElement>end(END_OP);
|
|
operation_q0.then(LAMBDA_34).then(LAMBDA_23).then(new RedirectStateTree<>(value_q0,(bag) -> "op_value")).then(LAMBDA_24).<JavaElement>end(END_OP);
|
|
operation_q0.then(LAMBDA_35).then(new RedirectStateTree<>(value_q0,(bag) -> "op_value(190)")).then(LAMBDA_1).<JavaElement>end(END_OP);
|
|
operation_q0.then(LAMBDA_36).then(new RedirectStateTree<>(value_q0,(bag) -> "op_value(191)")).<JavaElement>end(END_OP);
|
|
operation_q0.then(LAMBDA_37).then(LAMBDA_23).then(new RedirectStateTree<>(value_q0,(bag) -> "op_value(192)")).then(LAMBDA_24).<JavaElement>end(END_OP);
|
|
operation_q0.then(LAMBDA_38).then(LAMBDA_1).<JavaElement>end(END_OP);
|
|
operation_q0.then(LAMBDA_39).then(new RedirectStateTree<>(value_q0,(bag) -> "op_value(194)")).then(LAMBDA_1).<JavaElement>end(END_OP);
|
|
operation_q0.then(LAMBDA_40).then(LAMBDA_1).<JavaElement>end(END_OP);
|
|
operation_q0.then(LAMBDA_41).<JavaElement>end(END_OP);
|
|
|
|
StateTree<JavaElement> function_q17 = new StateTree<>();
|
|
StateTree<JavaElement> function_q18 = function_q17.then(LAMBDA_42);
|
|
StateTree<JavaElement> function_q19 = function_q18.then(LAMBDA_43);
|
|
function_q19.end((a,b) -> { System.out.println("\t\tolala"); return a;});
|
|
StateTree<JavaElement> function_q21 = function_q18.then(new RedirectStateTree<>(variable_q0,(bag) -> "func_var")).loop();
|
|
StateTree<JavaElement> function_q22 = function_q18.then(new RedirectStateTree<>(operation_q0,(bag) -> "func_op")).loop();
|
|
function_q21.then(function_q19);
|
|
function_q22.then(function_q19);
|
|
function_q22.then(function_q21);
|
|
function_q21.then(function_q22);
|
|
StateTree<JavaElement> function_q0 = new StateTree<>();
|
|
StateTree<JavaElement> function_q1 = function_q0.then(new RedirectStateTree<>(type_q0,(bag) -> "return"));
|
|
function_q1.then(LAMBDA_42).end(END_FUNC).then(function_q17);
|
|
StateTree<JavaElement> function_q3 = function_q1.then((v) -> v.validate(
|
|
(t) -> t.getType().equals(TokenType.NAME),
|
|
(bag, token) -> bag.set("name", token))).then(LAMBDA_23);
|
|
StateTree<JavaElement> function_q4 = function_q3.then(LAMBDA_24);
|
|
StateTree<JavaElement> function_q10 = function_q4.then(LAMBDA_45).then(new RedirectStateTree<>(type_q0,(bag) -> "func_type(215)"));
|
|
function_q10.end(END_FUNC).then(function_q17);
|
|
StateTree<JavaElement> function_q11 = function_q10.then(LAMBDA_7);
|
|
function_q11.then(function_q10);
|
|
function_q4.end(END_FUNC).then(function_q17);
|
|
StateTree<JavaElement> function_q6 = function_q3.then(new RedirectStateTree<>(type_q0, (bag) -> "func_type(q6)"));
|
|
StateTree<JavaElement> function_q7 = function_q6.then(LAMBDA_name);
|
|
StateTree<JavaElement> function_q8 = function_q7.then(LAMBDA_7);
|
|
function_q8.then(function_q6);
|
|
function_q7.then(function_q4);
|
|
StateTree<JavaElement> function_q15 = function_q0.then(new RedirectStateTree<>(modifier_q0, (bag) -> "func_modifier"));
|
|
StateTree<JavaElement> function_q20 = function_q0.then(new RedirectStateTree<>(annotation_q0,(bag) -> "func_annotation")).loop();
|
|
function_q20.then(function_q1);
|
|
function_q20.then(function_q15);
|
|
function_q15.then(function_q1);
|
|
|
|
StateTree<Class> class_q16 = new StateTree<>();
|
|
StateTree<Class> class_q18 = class_q16.then(new RedirectStateTree<>(variable_q0,(bag) -> "class_var")).loop();
|
|
class_q18.then(class_q16);
|
|
StateTree<Class> class_q19 = class_q16.then(new RedirectStateTree<>(function_q0,(bag) -> "class_func")).loop();
|
|
class_q19.then(class_q16);
|
|
StateTree<JavaFile> class_q0 = new StateTree<>();
|
|
StateTree<JavaFile> class_q1 = class_q0.then(LAMBDA_47);
|
|
StateTree<JavaFile> class_q2 = class_q1.then(new RedirectStateTree<>(type_q0,(bag) -> "name"));
|
|
StateTree<JavaFile> class_q7 = class_q2.then(LAMBDA_48).then(new RedirectStateTree<>(type_q0,(bag) -> "extend"));
|
|
class_q7.then(LAMBDA_42).<Class>end(END_CLASS).then(class_q16);
|
|
class_q2.then(LAMBDA_42).<Class>end(END_CLASS).then(class_q16);
|
|
StateTree<JavaFile> class_q9 = class_q2.then(LAMBDA_49);
|
|
StateTree<JavaFile> class_q11 = class_q9.then(new RedirectStateTree<>(type_q0,(bag) -> "implement"));
|
|
class_q11.then(LAMBDA_42).<Class>end(END_CLASS).then(class_q16);
|
|
StateTree<JavaFile> class_q12 = class_q11.then(LAMBDA_7);
|
|
class_q12.then(class_q11);
|
|
class_q7.then(class_q9);
|
|
StateTree<JavaFile> class_q17 = class_q0.then(new RedirectStateTree<>(annotation_q0,(bag) -> "class_annotation")).loop();
|
|
class_q17.then(class_q1);
|
|
StateTree<JavaFile> class_q3 = class_q0.then(new RedirectStateTree<>(modifier_q0,(bag) -> "class_modifier"));
|
|
class_q3.then(class_q1);
|
|
class_q17.then(class_q3);
|
|
|
|
main.then(new RedirectStateTree<>(package_q0, (b) -> null)).then(main);
|
|
main.then(new RedirectStateTree<>(import_q0, (b) -> null)).then(main);
|
|
main.then(new RedirectStateTree<>(class_q0, (b) -> null)).then(main);
|
|
|
|
|
|
System.out.println((System.currentTimeMillis()-time)+"ms");
|
|
|
|
// try {
|
|
// DebugServer server = new DebugServer(main);
|
|
// } catch (Exception e) {
|
|
// e.printStackTrace();
|
|
// }
|
|
|
|
setTokenizer(tokenizer);
|
|
setStateTree(main);
|
|
}
|
|
|
|
private List<Token> build(String... values){
|
|
List<Token> list = new ArrayList<>();
|
|
for(String value : values) list.add(new Token(0, 0, value, value.length() > 1 ? TokenType.NAME : TokenType.DELIMITER));
|
|
return list;
|
|
}
|
|
|
|
private BiConsumer<Bag, Token> groupToken(String group){
|
|
return (bag, token) -> {
|
|
Token base = bag.get(group);
|
|
if(base == null) bag.set(group, token);
|
|
else bag.set(group, base.concat(token));
|
|
};
|
|
}
|
|
|
|
public static int getModifier(String modifier){
|
|
switch(modifier){
|
|
case "public": return Modifier.PUBLIC;
|
|
case "private": return Modifier.PRIVATE;
|
|
case "protected": return Modifier.PROTECTED;
|
|
case "static": return Modifier.STATIC;
|
|
case "final": return Modifier.FINAL;
|
|
case "synchronized": return Modifier.SYNCHRONIZED;
|
|
case "volatile": return Modifier.VOLATILE;
|
|
case "transient": return Modifier.TRANSIENT;
|
|
case "native": return Modifier.NATIVE;
|
|
case "abstract": return Modifier.ABSTRACT;
|
|
case "strictfp": return Modifier.STRICT;
|
|
default: break;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
private StateTree<JavaElement> value(){
|
|
Function<TokenValidator, Boolean> LAMBDA_5 = (v) -> v.validate((t) -> t.getValue().equals("<"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_6 = (v) -> v.validate((t) -> t.getValue().equals(">"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_7 = (v) -> v.validate((t) -> t.getValue().equals(","));
|
|
Function<TokenValidator, Boolean> LAMBDA_8 = (v) -> v.validate((t) -> t.getValue().equals("="), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_10 = (v) -> v.validate((t) -> t.getValue().equals("!"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_11 = (v) -> v.validate((t) -> t.getValue().equals("?"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_12 = (v) -> v.validate((t) -> t.getValue().equals(":"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_13 = (v) -> v.validate((t) -> t.getValue().equals("~"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_14 = (v) -> v.validate((t) -> t.getValue().equals("+"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_15 = (v) -> v.validate((t) -> t.getValue().equals("-"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_16 = (v) -> v.validate((t) -> t.getValue().equals("/"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_17 = (v) -> v.validate((t) -> t.getValue().equals("*"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_18 = (v) -> v.validate((t) -> t.getValue().equals("&"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_19 = (v) -> v.validate((t) -> t.getValue().equals("|"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_20 = (v) -> v.validate((t) -> t.getValue().equals("^"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_21 = (v) -> v.validate((t) -> t.getValue().equals("%"), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_23 = (v) -> v.validate((t) -> t.getValue().equals("("));
|
|
Function<TokenValidator, Boolean> LAMBDA_24 = (v) -> v.validate((t) -> t.getValue().equals(")"));
|
|
Function<TokenValidator, Boolean> LAMBDA_25 = (v) -> v.validate((t) -> t.getValue().equals("."), (bag, t) -> bag.set("type", t));
|
|
Function<TokenValidator, Boolean> LAMBDA_26 = (v) -> v.validate((t) -> t.getValue().equals("\""), (bag, t) -> {
|
|
Bag sub = bag.get("?");
|
|
if(sub == null) return;
|
|
sub.set(new Value(sub.get()));
|
|
});
|
|
Function<TokenValidator, Boolean> LAMBDA_27 = (v) -> v.validate((t) -> !t.getValue().equals("\""), (bag,t) -> {
|
|
Bag sub = bag.get("?");
|
|
if(sub == null){
|
|
sub = new Bag();
|
|
bag.set("?", sub);
|
|
sub.set(t);
|
|
return;
|
|
}
|
|
sub.set(sub.<Token>get().concat(t));
|
|
});
|
|
Function<TokenValidator, Boolean> LAMBDA_28 = (v) -> v.validate((t) -> t.getValue().equals("'"));
|
|
Function<TokenValidator, Boolean> LAMBDA_29 = (v) -> v.validate((t) -> t.getValue().length() == 1, (bag, t) -> {
|
|
Bag sub = new Bag();
|
|
sub.set(new Value(t));
|
|
bag.set("?", sub);
|
|
});
|
|
|
|
BiFunction<JavaElement, Bag, JavaElement> END_NATIVE_VALUE = (element, bag) -> {
|
|
Value result = bag.<Bag>get("?").get();
|
|
if(result.get() != null){
|
|
bag.set(result.get());
|
|
return result.get();
|
|
}
|
|
bag.set(result);
|
|
return result;
|
|
};
|
|
BiFunction<JavaElement, Bag, JavaElement> END_VALUE = (element, bag) -> {
|
|
Value v = new Value(bag.get());
|
|
bag.set(v);
|
|
return v;
|
|
};
|
|
BiFunction<JavaElement, Bag, JavaElement> END_BIVALUE = (element, bag) -> {
|
|
Value origin = (Value)element;
|
|
Value right = bag.<Bag>get("?").get();
|
|
if(right.get() != null) right = right.get();
|
|
if(right instanceof TriValue){
|
|
TriValue last = (TriValue)right;
|
|
last.getCondition().switchInto(null);
|
|
BiValue condition = new BiValue(origin, last.getCondition(), bag.get("type"));
|
|
TriValue result = new TriValue(condition, last.success(), last.fail());
|
|
origin.switchInto(result);
|
|
bag.set(result);
|
|
return result;
|
|
}
|
|
Value v = new BiValue(origin, right, bag.get("type"));
|
|
origin.switchInto(v);
|
|
bag.set(v);
|
|
return v;
|
|
};
|
|
BiFunction<JavaElement, Bag, JavaElement> END_TRIVALUE = (element, bag) -> {
|
|
Value origin = (Value)element;
|
|
Value v = new TriValue(origin, bag.<Bag>get("true").get(), bag.<Bag>get("false").get());
|
|
origin.switchInto(v);
|
|
bag.set(v);
|
|
return v;
|
|
};
|
|
StateTree<JavaElement> value_q0 = new StateTree<>();
|
|
StateTree<JavaElement> value_q22 = new StateTree<>();
|
|
StateTree<JavaElement> value_q23 = value_q22.then(LAMBDA_8);
|
|
value_q23.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // ==
|
|
value_q23.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // =
|
|
StateTree<JavaElement> value_q24 = value_q22.then(LAMBDA_5);
|
|
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); // <=
|
|
StateTree<JavaElement> value_q41 = value_q24.then(LAMBDA_5);
|
|
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); // <<=
|
|
StateTree<JavaElement> value_q25 = value_q22.then(LAMBDA_6);
|
|
value_q25.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // >
|
|
value_q25.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // >=
|
|
StateTree<JavaElement> value_q55 = value_q25.then(LAMBDA_6);
|
|
value_q55.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // >>
|
|
value_q55.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // >>=
|
|
StateTree<JavaElement> value_q61 = value_q55.then(LAMBDA_6);
|
|
value_q61.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // >>>
|
|
value_q61.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // >>>=
|
|
StateTree<JavaElement> value_q26 = value_q22.then(LAMBDA_10);
|
|
value_q26.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // !
|
|
value_q26.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // !=
|
|
value_q22.then(LAMBDA_11).then(new RedirectStateTree<>(value_q0,(bag) -> "true")).then(LAMBDA_12).then(new RedirectStateTree<>(value_q0,(bag) -> "false")).<JavaElement>end(END_TRIVALUE); //? :
|
|
value_q22.then(LAMBDA_13).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // ~
|
|
StateTree<JavaElement> value_q29 = value_q22.then(LAMBDA_14);
|
|
value_q29.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // +
|
|
value_q29.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // +=
|
|
value_q29.then(LAMBDA_14).<JavaElement>end(END_VALUE); // ++
|
|
StateTree<JavaElement> value_q30 = value_q22.then(LAMBDA_15);
|
|
value_q30.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // -
|
|
value_q30.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // -=
|
|
value_q30.then(LAMBDA_15).<JavaElement>end(END_VALUE); // --
|
|
StateTree<JavaElement> value_q31 = value_q22.then(LAMBDA_16);
|
|
value_q31.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // /
|
|
value_q31.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // /=
|
|
StateTree<JavaElement> value_q32 = value_q22.then(LAMBDA_17);
|
|
value_q32.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // *
|
|
value_q32.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // *=
|
|
StateTree<JavaElement> value_q33 = value_q22.then(LAMBDA_18);
|
|
value_q33.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // &
|
|
value_q33.then(LAMBDA_18).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // &&
|
|
value_q33.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // &=
|
|
StateTree<JavaElement> value_q34 = value_q22.then(LAMBDA_19);
|
|
value_q34.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // |
|
|
value_q34.then(LAMBDA_19).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // ||
|
|
value_q34.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // |=
|
|
StateTree<JavaElement> value_q35 = value_q22.then(LAMBDA_20);
|
|
value_q35.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // ^
|
|
value_q35.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // ^=
|
|
StateTree<JavaElement> value_q36 = value_q22.then(LAMBDA_21);
|
|
value_q36.then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // %
|
|
value_q36.then(LAMBDA_8).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<JavaElement>end(END_BIVALUE); // %=
|
|
StateTree<JavaElement> value_q1 = value_q0.then(LAMBDA_name);
|
|
StateTree<JavaElement> value_q12 = value_q1.then(LAMBDA_23);
|
|
StateTree<JavaElement> value_q13 = value_q12.then(new RedirectStateTree<>(value_q0,(bag) -> "?"));
|
|
StateTree<JavaElement> value_q15 = value_q13.then(LAMBDA_24);
|
|
value_q15.<JavaElement>end(END_VALUE).then(value_q22);
|
|
value_q12.then(value_q15);
|
|
StateTree<JavaElement> value_q14 = value_q13.then(LAMBDA_7);
|
|
value_q14.then(value_q13);
|
|
value_q1.<JavaElement>end(END_VALUE).then(value_q22);
|
|
StateTree<JavaElement> value_q11 = value_q1.then(LAMBDA_25);
|
|
value_q11.then(value_q1);
|
|
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).loop().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_NATIVE_VALUE).then(value_q22);
|
|
return value_q0;
|
|
}
|
|
|
|
}
|