AutoTest -> 94.153% + refractor branch multiple in initial state tree
This commit is contained in:
parent
3aeba124e3
commit
2132defaec
4 changed files with 64 additions and 6 deletions
|
@ -27,6 +27,13 @@ public class Parser<E>{
|
||||||
this.state.seed(this.tokenizer, container);
|
this.state.seed(this.tokenizer, container);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final void parse(String line, E container) throws Exception{
|
||||||
|
this.tokenizer.reset();
|
||||||
|
this.tokenizer.parse(line);
|
||||||
|
|
||||||
|
this.state.seed(this.tokenizer, container);
|
||||||
|
}
|
||||||
|
|
||||||
//tmp
|
//tmp
|
||||||
public void build(BufferedWriter writer) throws Exception{
|
public void build(BufferedWriter writer) throws Exception{
|
||||||
Token[] confirmed = new Token[TokenValidator.MAX_VALIDATE];
|
Token[] confirmed = new Token[TokenValidator.MAX_VALIDATE];
|
||||||
|
|
|
@ -72,4 +72,37 @@ public class Tokenizer {
|
||||||
if(this.postProcessor != null) this.postProcessor.accept(tokens);
|
if(this.postProcessor != null) this.postProcessor.accept(tokens);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void parse(String line){
|
||||||
|
if(this.postProcessor != null) this.postProcessor.accept(tokens);
|
||||||
|
|
||||||
|
for(int i = 0; i < line.length(); i++){
|
||||||
|
char c = line.charAt(i);
|
||||||
|
Token token;
|
||||||
|
if(Character.isAlphabetic(c) || Character.isDigit(c)){
|
||||||
|
String value = "";
|
||||||
|
int j = i;
|
||||||
|
for(; j < line.length(); j++){
|
||||||
|
c = line.charAt(j);
|
||||||
|
if(Character.isAlphabetic(c) || Character.isDigit(c)) value+=c;
|
||||||
|
else break;
|
||||||
|
}
|
||||||
|
token = new Token(1, i+1, value, TokenType.NAME);
|
||||||
|
i = j-1;
|
||||||
|
}else if(Character.isWhitespace(c)){
|
||||||
|
if(!optionSpace) continue;
|
||||||
|
String value = "";
|
||||||
|
int j = i;
|
||||||
|
for(; j < line.length(); j++){
|
||||||
|
c = line.charAt(j);
|
||||||
|
if(!Character.isWhitespace(c)) break;
|
||||||
|
}
|
||||||
|
token = new Token(1, i+1, value, TokenType.SPACE);
|
||||||
|
i = j-1;
|
||||||
|
}else{
|
||||||
|
token = new Token(1, i+1, ""+c, TokenType.DELIMITER);
|
||||||
|
}
|
||||||
|
this.tokens.add(token);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -557,10 +557,20 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
StateTree<JavaElement> function_begin = function_name.then((validator) -> validator.validate((token) -> token.getValue().equals("(")));
|
StateTree<JavaElement> function_begin = function_name.then((validator) -> validator.validate((token) -> token.getValue().equals("(")));
|
||||||
StateTree<JavaElement> function_end = function_begin.then((validator) -> validator.validate((token) -> token.getValue().equals(")")));
|
StateTree<JavaElement> function_end = function_begin.then((validator) -> validator.validate((token) -> token.getValue().equals(")")));
|
||||||
function_end.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
function_end.then((validator) -> validator.validate((token) -> token.getValue().equals("{")))
|
||||||
.end((a,b) -> a)
|
.end((a,b) -> {
|
||||||
|
System.out.println("build function "+b);
|
||||||
|
return a;
|
||||||
|
})
|
||||||
.multiple(function_container)
|
.multiple(function_container)
|
||||||
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> {
|
||||||
|
System.out.println("inside of the function "+b);
|
||||||
|
return a;
|
||||||
|
});
|
||||||
function_end.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a);
|
function_end.then((validator) -> validator.validate((token) -> token.getValue().equals(";"))).end((a,b) -> a);
|
||||||
|
function_end.then((validator) -> validator.validate((token) -> token.getValue().equals("default")))
|
||||||
|
.then(new RedirectStateTree<>(value_container, (global, local) -> global.set(null)))
|
||||||
|
.then((validator) -> validator.validate((token) -> token.getValue().equals(";")))
|
||||||
|
.end((a,b) -> a);
|
||||||
|
|
||||||
StateTree<JavaElement> function_throws = function_end.then((validator) -> validator.validate((token) -> token.getValue().equals("throws")))
|
StateTree<JavaElement> function_throws = function_end.then((validator) -> validator.validate((token) -> token.getValue().equals("throws")))
|
||||||
.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)));
|
.then(new RedirectStateTree<>(type, (global, local) -> global.set(null)));
|
||||||
|
@ -642,6 +652,13 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
|
|
||||||
InitialStateTree<JavaElement> mult_clazz_container = new InitialStateTree<>();
|
InitialStateTree<JavaElement> mult_clazz_container = new InitialStateTree<>();
|
||||||
mult_clazz_container.multiple(clazz_container);
|
mult_clazz_container.multiple(clazz_container);
|
||||||
|
mult_clazz_container.end((a,b) -> a);
|
||||||
|
|
||||||
|
StateTree<JavaElement> debug = new StateTree<>();
|
||||||
|
debug.then((v) -> v.validate((t) -> {
|
||||||
|
System.out.println("debug "+t);
|
||||||
|
return false;
|
||||||
|
}));
|
||||||
|
|
||||||
//ENUM
|
//ENUM
|
||||||
StateTree<JavaElement> enums = new StateTree<>();
|
StateTree<JavaElement> enums = new StateTree<>();
|
||||||
|
@ -651,6 +668,7 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
.end((a,b) -> a)
|
.end((a,b) -> a)
|
||||||
.unique(enum_value)
|
.unique(enum_value)
|
||||||
.unique(mult_clazz_container)
|
.unique(mult_clazz_container)
|
||||||
|
.unique(debug)
|
||||||
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
.unique((validator) -> validator.validate((token) -> token.getValue().equals("}"))).end((a,b) -> a);
|
||||||
|
|
||||||
StateTree<JavaElement> enum_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));
|
StateTree<JavaElement> enum_mod = clazz_.then(new RedirectStateTree<>(modifier, (global, local) -> global.set("modifier", local)));
|
||||||
|
@ -742,7 +760,7 @@ public class JavaParser extends Parser<JavaElement> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception{
|
public static void main(String[] args) throws Exception{
|
||||||
File file = new File("C:\\Users\\jeffc\\eclipse-workspace\\BotDiscordSql\\src\\be\\jeffcheasey\\challenge\\bot\\parser\\region\\RegionContainer.java");
|
File file = new File("C:\\Users\\jeffc\\eclipse-workspace\\BotDiscordSql\\src\\be\\jeffcheasey\\challenge\\bot\\parser\\RequestType.java");
|
||||||
|
|
||||||
BufferedReader reader = new BufferedReader(new FileReader(file));
|
BufferedReader reader = new BufferedReader(new FileReader(file));
|
||||||
|
|
||||||
|
|
|
@ -19,14 +19,14 @@ public class InitialStateTree<E> extends StateTree<E>{
|
||||||
BuilderStateTree<E, ?> internalSeed(TokenValidator validator, E element){
|
BuilderStateTree<E, ?> internalSeed(TokenValidator validator, E element){
|
||||||
BuilderStateTree<E, ?> builded;
|
BuilderStateTree<E, ?> builded;
|
||||||
for(StateTree<E> state : this.multiple){
|
for(StateTree<E> state : this.multiple){
|
||||||
TokenValidator branch = validator.branch();
|
TokenValidator branch;
|
||||||
if(state.checker == null){
|
if(state.checker == null){
|
||||||
while((builded = state.internalSeed(branch, element)) != null){
|
while((builded = state.internalSeed((branch = validator.branch()), element)) != null){
|
||||||
validator.merge(branch);
|
validator.merge(branch);
|
||||||
builded.build(validator, element);
|
builded.build(validator, element);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
while(state.checker.apply(branch)){
|
while(state.checker.apply((branch = validator.branch()))){
|
||||||
builded = state.internalSeed(branch, element);
|
builded = state.internalSeed(branch, element);
|
||||||
if(builded == null) break;
|
if(builded == null) break;
|
||||||
validator.merge(branch);
|
validator.merge(branch);
|
||||||
|
|
Loading…
Add table
Reference in a new issue