il aurai fallut que je crée la branch avant
This commit is contained in:
parent
73dd0f87ce
commit
af44fe414f
9 changed files with 273 additions and 132 deletions
|
@ -2,6 +2,7 @@ package be.jeffcheasey88.peeratcode.parser;
|
|||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
public class Bag{
|
||||
|
||||
|
@ -29,4 +30,11 @@ public class Bag{
|
|||
this.map.put(key, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
String map = "";
|
||||
for(Entry<String, Object> entry : this.map.entrySet()) map+=","+(entry.getKey())+" -> "+entry.getValue();
|
||||
if(map.length() > 0) map = map.substring(1);
|
||||
return "([bag] | value="+value+" | map="+map+" )";
|
||||
}
|
||||
}
|
||||
|
|
11
src/be/jeffcheasey88/peeratcode/parser/java/Annotation.java
Normal file
11
src/be/jeffcheasey88/peeratcode/parser/java/Annotation.java
Normal file
|
@ -0,0 +1,11 @@
|
|||
package be.jeffcheasey88.peeratcode.parser.java;
|
||||
|
||||
import be.jeffcheasey88.peeratcode.parser.Bag;
|
||||
|
||||
public class Annotation{
|
||||
|
||||
public Annotation(Bag bag){
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,14 +1,21 @@
|
|||
package be.jeffcheasey88.peeratcode.parser.java;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import be.jeffcheasey88.peeratcode.parser.Bag;
|
||||
import be.jeffcheasey88.peeratcode.parser.Token;
|
||||
|
||||
public class Class extends JavaElement{
|
||||
|
||||
private List<Annotation> annotations;
|
||||
|
||||
private String name;
|
||||
private String extend;
|
||||
private String implement;
|
||||
|
||||
private List<JavaElement> elements;
|
||||
|
||||
public Class(Bag bag){
|
||||
this.name = bag.<Bag>get("name").<Token>get().getValue();
|
||||
|
||||
|
@ -18,7 +25,10 @@ public class Class extends JavaElement{
|
|||
Bag implementBag = bag.<Bag>get("implement");
|
||||
if(implementBag != null) this.implement = implementBag.<Token>get().getValue();
|
||||
|
||||
System.out.println("public "+name+" extends "+extend+" implements "+implement+" {");
|
||||
this.annotations = new ArrayList<>();
|
||||
this.elements = new ArrayList<>();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,19 +1,27 @@
|
|||
package be.jeffcheasey88.peeratcode.parser.java;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import be.jeffcheasey88.peeratcode.parser.Bag;
|
||||
import be.jeffcheasey88.peeratcode.parser.Token;
|
||||
|
||||
public class Function extends JavaElement{
|
||||
|
||||
private List<Annotation> annotations;
|
||||
|
||||
private String returnType;
|
||||
private String name;
|
||||
|
||||
private List<JavaElement> elements;
|
||||
|
||||
public Function(Bag bag){
|
||||
this.returnType = bag.<Bag>get("return").<Token>get().getValue();
|
||||
if(JavaParser.getModifier(this.returnType) > 0) this.returnType = null;
|
||||
this.name = bag.<Token>get("name").getValue();
|
||||
|
||||
System.out.println(returnType+" "+name+" (){");
|
||||
this.annotations = new ArrayList<>();
|
||||
this.elements = new ArrayList<>();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -10,10 +10,12 @@ public class JavaFile extends JavaElement{
|
|||
|
||||
private String pack;
|
||||
private List<String> imports;
|
||||
private Class clazz;
|
||||
private Class mainClazz;
|
||||
private List<Class> subClazz;
|
||||
|
||||
public JavaFile(){
|
||||
this.imports = new ArrayList<>();
|
||||
this.subClazz = new ArrayList<>();
|
||||
}
|
||||
|
||||
JavaFile setPackage(Bag bag){
|
||||
|
@ -29,7 +31,7 @@ public class JavaFile extends JavaElement{
|
|||
}
|
||||
|
||||
Class setClass(Class clazz){
|
||||
this.clazz = clazz;
|
||||
this.mainClazz = clazz;
|
||||
System.out.println("setClass "+clazz);
|
||||
return clazz;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@ import java.io.BufferedReader;
|
|||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
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;
|
||||
|
@ -14,6 +16,8 @@ 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;
|
||||
|
||||
|
@ -62,7 +66,7 @@ public class JavaParser extends Parser<JavaFile> {
|
|||
BiFunction<JavaElement, TokenValidator, Variable>
|
||||
END_VAR = ((javafile, validator) -> {
|
||||
System.out.println("new var");
|
||||
return new Variable();
|
||||
return new Variable(validator.getBag());
|
||||
});
|
||||
BiFunction<JavaElement, TokenValidator, be.jeffcheasey88.peeratcode.parser.java.Function>
|
||||
END_FUNC = ((javafile, validator) -> {
|
||||
|
@ -84,135 +88,51 @@ public class JavaParser extends Parser<JavaFile> {
|
|||
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("{value}"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_9 = (v) -> v.validate((t) -> t.getValue().equals("="));
|
||||
BiFunction<JavaElement, TokenValidator, JavaElement> END_10 = ((javaelement, validator) -> null);
|
||||
Function<TokenValidator, Boolean> LAMBDA_11 = (v) -> v.validate((t) -> t.getValue().equals("."));
|
||||
Function<TokenValidator, Boolean> LAMBDA_12 = (v) -> v.validate((t) -> t.getValue().equals("if"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_13 = (v) -> v.validate((t) -> t.getValue().equals("("));
|
||||
Function<TokenValidator, Boolean> LAMBDA_14 = (v) -> v.validate((t) -> t.getValue().equals(")"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_15 = (v) -> v.validate((t) -> t.getValue().equals("for"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_16 = (v) -> v.validate((t) -> t.getValue().equals("while"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_17 = (v) -> v.validate((t) -> t.getValue().equals("return"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_18 = (v) -> v.validate((t) -> t.getValue().equals("synchronized"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_19 = (v) -> v.validate((t) -> t.getValue().equals("continue"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_20 = (v) -> v.validate((t) -> t.getValue().equals("throw"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_21 = (v) -> v.validate((t) -> t.getValue().equals("break"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_22 = (v) -> v.validate((t) -> t.getValue().equals("try"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_23 = (v) -> v.validate((t) -> t.getValue().equals("do"));
|
||||
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("throws"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_30 = (v) -> v.validate((t) -> t.getValue().equals("class"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_31 = (v) -> v.validate((t) -> t.getValue().equals("implements"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_32 = (v) -> v.validate((t) -> t.getValue().equals("extends"));
|
||||
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_11 = (v) -> v.validate((t) -> t.getValue().equals("?"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_12 = (v) -> v.validate((t) -> t.getValue().equals(":"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_13 = (v) -> v.validate((t) -> t.getValue().equals("~"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_14 = (v) -> v.validate((t) -> t.getValue().equals("+"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_15 = (v) -> v.validate((t) -> t.getValue().equals("-"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_16 = (v) -> v.validate((t) -> t.getValue().equals("/"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_17 = (v) -> v.validate((t) -> t.getValue().equals("*"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_18 = (v) -> v.validate((t) -> t.getValue().equals("&"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_19 = (v) -> v.validate((t) -> t.getValue().equals("|"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_20 = (v) -> v.validate((t) -> t.getValue().equals("^"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_21 = (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_26 = (v) -> v.validate((t) -> t.getValue().equals("\""));
|
||||
Function<TokenValidator, Boolean> LAMBDA_27 = (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().equals("oneChar"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_30 = (v) -> v.validate((t) -> t.getValue().equals("if"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_31 = (v) -> v.validate((t) -> t.getValue().equals("for"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_32 = (v) -> v.validate((t) -> t.getValue().equals("while"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_33 = (v) -> v.validate((t) -> t.getValue().equals("return"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_34 = (v) -> v.validate((t) -> t.getValue().equals("do"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_35 = (v) -> v.validate((t) -> t.getValue().equals("synchronized"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_36 = (v) -> v.validate((t) -> t.getValue().equals("continue"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_37 = (v) -> v.validate((t) -> t.getValue().equals("throw"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_38 = (v) -> v.validate((t) -> t.getValue().equals("break"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_39 = (v) -> v.validate((t) -> t.getValue().equals("try"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_40 = (v) -> v.validate((t) -> t.getValue().equals("{"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_41 = (v) -> v.validate((t) -> t.getValue().equals("}"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_44 = (v) -> v.validate((t) -> t.getValue().equals("throws"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_46 = (v) -> v.validate((t) -> t.getValue().equals("class"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_47 = (v) -> v.validate((t) -> t.getValue().equals("implements"));
|
||||
Function<TokenValidator, Boolean> LAMBDA_48 = (v) -> v.validate((t) -> t.getValue().equals("extends"));
|
||||
|
||||
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> variable_q0 = new StateTree<>();
|
||||
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_9).then(LAMBDA_8);
|
||||
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);
|
||||
StateTree<JavaElement> variable_q10 = variable_q0.then(new RedirectStateTree<>(modifier_q0,(bag) -> "modifier"));
|
||||
variable_q10.then(variable_q1);
|
||||
|
||||
StateTree<JavaElement> operation_q0 = new StateTree<>();
|
||||
StateTree<JavaElement> operation_q1 = operation_q0.then(LAMBDA_name);
|
||||
operation_q1.then(LAMBDA_9).then(LAMBDA_8).<JavaElement>end(END_10);
|
||||
StateTree<JavaElement> operation_q5 = operation_q1.then(LAMBDA_11);
|
||||
operation_q5.then(operation_q1);
|
||||
operation_q0.then(LAMBDA_12).then(LAMBDA_13).then(LAMBDA_8).then(LAMBDA_14).<JavaElement>end(END_10);
|
||||
operation_q0.then(LAMBDA_15).then(LAMBDA_13).then(LAMBDA_8).then(LAMBDA_14).<JavaElement>end(END_10);
|
||||
operation_q0.then(LAMBDA_16).then(LAMBDA_13).then(LAMBDA_8).then(LAMBDA_14).<JavaElement>end(END_10);
|
||||
operation_q0.then(LAMBDA_17).then(LAMBDA_8).then(LAMBDA_1).<JavaElement>end(END_10);
|
||||
operation_q0.then(LAMBDA_18).then(LAMBDA_13).then(LAMBDA_8).then(LAMBDA_14).<JavaElement>end(END_10);
|
||||
operation_q0.then(LAMBDA_19).then(LAMBDA_1).<JavaElement>end(END_10);
|
||||
operation_q0.then(LAMBDA_20).then(LAMBDA_8).then(LAMBDA_1).<JavaElement>end(END_10);
|
||||
operation_q0.then(LAMBDA_21).then(LAMBDA_1).<JavaElement>end(END_10);
|
||||
operation_q0.then(LAMBDA_22).<JavaElement>end(END_10);
|
||||
|
||||
StateTree<be.jeffcheasey88.peeratcode.parser.java.Function> function_q17 = new StateTree<>();
|
||||
StateTree<be.jeffcheasey88.peeratcode.parser.java.Function> function_q18 = function_q17.then(LAMBDA_24);
|
||||
function_q18.then(LAMBDA_25).<Object>end((a,b) -> null);
|
||||
StateTree<be.jeffcheasey88.peeratcode.parser.java.Function> function_q22 = function_q18.then(new RedirectStateTree<>(operation_q0,(bag) -> "operation"));
|
||||
function_q22.then(function_q18);
|
||||
StateTree<be.jeffcheasey88.peeratcode.parser.java.Function> function_q21 = function_q18.then(new RedirectStateTree<>(variable_q0,(bag) -> "variable"));
|
||||
function_q21.then(function_q18);
|
||||
StateTree<JavaElement> function_q0 = new StateTree<>();
|
||||
StateTree<JavaElement> function_q1 = function_q0.then(new RedirectStateTree<>(type_q0,(bag) -> "return"));
|
||||
function_q1.then(LAMBDA_24).<be.jeffcheasey88.peeratcode.parser.java.Function>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_13);
|
||||
StateTree<JavaElement> function_q4 = function_q3.then(LAMBDA_14);
|
||||
StateTree<JavaElement> function_q10 = function_q4.then(LAMBDA_28).then(new RedirectStateTree<>(type_q0,(bag) -> "type"));
|
||||
function_q10.<be.jeffcheasey88.peeratcode.parser.java.Function>end(END_FUNC).then(function_q17);
|
||||
StateTree<JavaElement> function_q11 = function_q10.then(LAMBDA_7);
|
||||
function_q11.then(function_q10);
|
||||
function_q4.<be.jeffcheasey88.peeratcode.parser.java.Function>end(END_FUNC).then(function_q17);
|
||||
StateTree<JavaElement> function_q7 = function_q3.then(new RedirectStateTree<>(type_q0,(bag) -> "type")).then(LAMBDA_name);
|
||||
function_q7.then(function_q4);
|
||||
StateTree<JavaElement> function_q6 = function_q3.then(new RedirectStateTree<>(type_q0,(bag) -> "type"));
|
||||
StateTree<JavaElement> function_q8 = function_q7.then(LAMBDA_7);
|
||||
function_q8.then(function_q6);
|
||||
StateTree<JavaElement> function_q15 = function_q0.then(new RedirectStateTree<>(modifier_q0,(bag) -> "modifier"));
|
||||
function_q15.then(function_q1);
|
||||
|
||||
StateTree<Class> class_q16 = new StateTree<>();
|
||||
StateTree<Class> class_q18 = class_q16.then(new RedirectStateTree<>(variable_q0,(bag) -> "?"));
|
||||
class_q18.then(class_q16);
|
||||
StateTree<Class> class_q19 = class_q16.then(new RedirectStateTree<>(function_q0,(bag) -> "?"));
|
||||
class_q19.then(class_q16);
|
||||
StateTree<JavaFile> class_q0 = new StateTree<>();
|
||||
StateTree<JavaFile> class_q1 = class_q0.then(LAMBDA_30);
|
||||
StateTree<JavaFile> class_q2 = class_q1.then(new RedirectStateTree<>(type_q0,(bag) -> "name"));
|
||||
StateTree<JavaFile> class_q9 = class_q2.then(LAMBDA_31);
|
||||
StateTree<JavaFile> class_q11 = class_q9.then(new RedirectStateTree<>(type_q0,(bag) -> "implement"));
|
||||
class_q11.then(LAMBDA_24).<Class>end(END_CLASS).then(class_q16);
|
||||
StateTree<JavaFile> class_q12 = class_q11.then(LAMBDA_7);
|
||||
class_q12.then(class_q11);
|
||||
StateTree<JavaFile> class_q7 = class_q2.then(LAMBDA_32).then(new RedirectStateTree<>(type_q0,(bag) -> "extend"));
|
||||
class_q7.then(class_q9);
|
||||
class_q7.then(LAMBDA_24).<Class>end(END_CLASS).then(class_q16);
|
||||
class_q2.then(LAMBDA_24).<Class>end(END_CLASS).then(class_q16);
|
||||
StateTree<JavaFile> class_q3 = class_q0.then(new RedirectStateTree<>(modifier_q0,(bag) -> "modifier"));
|
||||
class_q3.then(class_q1);
|
||||
|
||||
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);
|
||||
|
||||
|
||||
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("----");
|
||||
//(ab = (cd & 3))
|
||||
tokenizer.getTokens().addAll(build("(","ab","=","(","cd","&","34",")",")"));
|
||||
value_q0.seed(tokenizer, null);
|
||||
System.out.println("----");
|
||||
|
||||
System.out.println((System.currentTimeMillis()-time)+"ms");
|
||||
|
||||
|
@ -226,6 +146,12 @@ public class JavaParser extends Parser<JavaFile> {
|
|||
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);
|
||||
|
@ -252,4 +178,119 @@ public class JavaParser extends Parser<JavaFile> {
|
|||
return 0;
|
||||
}
|
||||
|
||||
private StateTree<JavaElement> value(
|
||||
Function<TokenValidator, Boolean> LAMBDA_5,
|
||||
Function<TokenValidator, Boolean> LAMBDA_6,
|
||||
Function<TokenValidator, Boolean> LAMBDA_7,
|
||||
Function<TokenValidator, Boolean> LAMBDA_8,
|
||||
Function<TokenValidator, Boolean> LAMBDA_10,
|
||||
Function<TokenValidator, Boolean> LAMBDA_11,
|
||||
Function<TokenValidator, Boolean> LAMBDA_12,
|
||||
Function<TokenValidator, Boolean> LAMBDA_13,
|
||||
Function<TokenValidator, Boolean> LAMBDA_14,
|
||||
Function<TokenValidator, Boolean> LAMBDA_15,
|
||||
Function<TokenValidator, Boolean> LAMBDA_16,
|
||||
Function<TokenValidator, Boolean> LAMBDA_17,
|
||||
Function<TokenValidator, Boolean> LAMBDA_18,
|
||||
Function<TokenValidator, Boolean> LAMBDA_19,
|
||||
Function<TokenValidator, Boolean> LAMBDA_20,
|
||||
Function<TokenValidator, Boolean> LAMBDA_21,
|
||||
Function<TokenValidator, Boolean> LAMBDA_23,
|
||||
Function<TokenValidator, Boolean> LAMBDA_24,
|
||||
Function<TokenValidator, Boolean> LAMBDA_25,
|
||||
Function<TokenValidator, Boolean> LAMBDA_26,
|
||||
Function<TokenValidator, Boolean> LAMBDA_27,
|
||||
Function<TokenValidator, Boolean> LAMBDA_28,
|
||||
Function<TokenValidator, Boolean> LAMBDA_29
|
||||
){
|
||||
BiFunction<JavaElement, TokenValidator, JavaElement> END_VALUE = (element, validator) -> {
|
||||
//single value
|
||||
System.out.println("end value "+validator.getBag());
|
||||
Bag bag = validator.getBag();
|
||||
Value v = new Value(bag);
|
||||
bag.set("result",v);
|
||||
return v;
|
||||
};
|
||||
BiFunction<JavaElement, TokenValidator, JavaElement> END_BIVALUE = (element, validator) -> {
|
||||
//create new value from parent & created single value
|
||||
System.out.println("end bi value "+validator.getBag());
|
||||
Bag bag = validator.getBag();
|
||||
return new BiValue((Value)element, bag.<Bag>get("?").get("result"));
|
||||
};
|
||||
BiFunction<JavaElement, TokenValidator, JavaElement> END_TRIVALUE = (element, validator) -> {
|
||||
//same but for val ? val : val
|
||||
System.out.println("end tri value "+validator.getBag());
|
||||
Bag bag = validator.getBag();
|
||||
return new TriValue(bag);
|
||||
};
|
||||
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) -> "?")).then(LAMBDA_12).then(new RedirectStateTree<>(value_q0,(bag) -> "?")).<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_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_28).then(LAMBDA_29).then(LAMBDA_28).<JavaElement>end(END_VALUE).then(value_q22);
|
||||
return value_q0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
11
src/be/jeffcheasey88/peeratcode/parser/java/Operation.java
Normal file
11
src/be/jeffcheasey88/peeratcode/parser/java/Operation.java
Normal file
|
@ -0,0 +1,11 @@
|
|||
package be.jeffcheasey88.peeratcode.parser.java;
|
||||
|
||||
import be.jeffcheasey88.peeratcode.parser.Bag;
|
||||
|
||||
public class Operation extends JavaElement{
|
||||
|
||||
public Operation(Bag bag){
|
||||
|
||||
}
|
||||
|
||||
}
|
41
src/be/jeffcheasey88/peeratcode/parser/java/Value.java
Normal file
41
src/be/jeffcheasey88/peeratcode/parser/java/Value.java
Normal file
|
@ -0,0 +1,41 @@
|
|||
package be.jeffcheasey88.peeratcode.parser.java;
|
||||
|
||||
import be.jeffcheasey88.peeratcode.parser.Bag;
|
||||
import be.jeffcheasey88.peeratcode.parser.Token;
|
||||
|
||||
public class Value extends JavaElement{
|
||||
|
||||
private Token token;
|
||||
|
||||
protected Value(){}
|
||||
|
||||
public Value(Bag bag){
|
||||
this.token = bag.get();
|
||||
System.out.println("NEW value "+token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(){
|
||||
return "[Value="+token+"]";
|
||||
}
|
||||
|
||||
public static class BiValue extends Value{
|
||||
|
||||
private Value left;
|
||||
private Value right;
|
||||
|
||||
public BiValue(Value left, Value right){
|
||||
this.left = left;
|
||||
this.right = right;
|
||||
System.out.println("NEW BiValue "+left+"|"+right);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class TriValue extends Value{
|
||||
|
||||
public TriValue(Bag bag){
|
||||
super(bag);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,15 @@
|
|||
package be.jeffcheasey88.peeratcode.parser.java;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import be.jeffcheasey88.peeratcode.parser.Bag;
|
||||
|
||||
public class Variable extends JavaElement{
|
||||
|
||||
private List<Annotation> annotations;
|
||||
|
||||
public Variable(Bag bag){
|
||||
this.annotations = new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue