parser
This commit is contained in:
parent
664d3ed06d
commit
049e3aeda7
@ -1,7 +1,6 @@
|
|||||||
package lsystem;
|
package lsystem;
|
||||||
|
|
||||||
import lsystem.engine.parser.Parser;
|
import lsystem.engine.parser.Parser;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
@ -11,6 +10,7 @@ public class Main {
|
|||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Scanner scanner = new Scanner(System.in);
|
Scanner scanner = new Scanner(System.in);
|
||||||
Parser parser = null;
|
Parser parser = null;
|
||||||
|
int nbIterations = 0;
|
||||||
while(parser == null || parser.isCorrect()) {
|
while(parser == null || parser.isCorrect()) {
|
||||||
if(parser != null)
|
if(parser != null)
|
||||||
System.out.println("Vos règles ou votre axiome ne sont pas correctement écrites, veuillez recommencer");
|
System.out.println("Vos règles ou votre axiome ne sont pas correctement écrites, veuillez recommencer");
|
||||||
@ -22,7 +22,7 @@ public class Main {
|
|||||||
rules.add(scanner.next());
|
rules.add(scanner.next());
|
||||||
}
|
}
|
||||||
rules.remove(rules.size() - 1);
|
rules.remove(rules.size() - 1);
|
||||||
parser = new Parser(axiom, rules);
|
parser = new Parser(axiom, rules,nbIterations);
|
||||||
}
|
}
|
||||||
|
|
||||||
scanner.close();
|
scanner.close();
|
||||||
|
@ -6,15 +6,50 @@ public class Parser {
|
|||||||
|
|
||||||
private final String axiom;
|
private final String axiom;
|
||||||
private final List<String> rules;
|
private final List<String> rules;
|
||||||
|
private final int nbIterations;
|
||||||
|
private String[] validStrings = {"]","[",".","+","-","X","Y","Z","x","y","z","0","1","2","3","4","5","6","7","8","9"};
|
||||||
|
|
||||||
public Parser(String axiom, List<String> rules) {
|
public Parser(String axiom, List<String> rules,int nbIterations) {
|
||||||
this.axiom = axiom;
|
this.axiom = axiom;
|
||||||
this.rules = rules;
|
this.rules = rules;
|
||||||
|
this.nbIterations = nbIterations;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isCorrect(){
|
public boolean isCorrect(){
|
||||||
|
return (rulesCorrect() || axiomCorrect());
|
||||||
|
}
|
||||||
|
private boolean axiomCorrect() {
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean rulesCorrect() {
|
||||||
|
for(String r : this.rules) {
|
||||||
|
String[] stringsplitted = r.split("");
|
||||||
|
String old = null;
|
||||||
|
int bracket = 0;
|
||||||
|
for (String rules : stringsplitted){
|
||||||
|
for(String string : validStrings){
|
||||||
|
if (rules == "[")
|
||||||
|
bracket += 1;
|
||||||
|
if(rules =="]")
|
||||||
|
bracket -=1;
|
||||||
|
if(old == "."){
|
||||||
|
for(int i = 0;i<10;i++){
|
||||||
|
if(rules == validStrings[i])
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
old = rules;
|
||||||
|
if(rules == string)
|
||||||
|
break;
|
||||||
|
if(string == "9" && rules != string)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bracket != 0)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user