Fixed rewritter

This commit is contained in:
Quentin Legot 2021-02-09 17:20:22 +01:00
parent 83a606f2ec
commit 74f98c2692

View File

@ -2,6 +2,7 @@ package lsystem.engine;
import lsystem.utils.Pair;
import java.util.Arrays;
import java.util.List;
public class Rewrite {
@ -16,13 +17,29 @@ public class Rewrite {
this.recurrences = recurrences;
}
private String replaceRulesByID(final String rewritted) {
String toRewrite = rewritted;
for(int j = 0; j < rules.size(); ++j){
Pair<String, String> pair = rules.get(j);
toRewrite = toRewrite.replace(pair.getLeft(), "$" + j);
}
return toRewrite;
}
private String replaceIDByRuleApplication(final String toRewrite) {
String rewritted = toRewrite;
for(int j = 0; j < rules.size(); ++j){
rewritted = rewritted.replace("$" + j, rules.get(j).getRight());
}
return rewritted;
}
public String rewrite() {
String rewritted = axiom;
for(int i = 0; i < recurrences; ++i) {
for(int j = 0; j < rules.size(); ++j){
Pair<String, String> pair = rules.get(j);
rewritted = rewritted.replace(pair.getLeft(), pair.getRight());
}
String toRewrite = replaceRulesByID(rewritted);
rewritted = replaceIDByRuleApplication(toRewrite);
}
return rewritted;
}