BuK/IIm10/BuK-Kreativaufgabe06 G1
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Java</language>
<code id="4de3e48b18f77" hidden>
static String text="";
static String zustand;
static String zielzustand;
static String read;
static String richtung;
static String write;
static String mitteltext;
static String finalstate1="false";
static String finalstate2="false";
static String finalstate3="false";
static String finalstate4="false";
static String finalstateend;
static String eingang3_ziel="";
static String text5="";
static Boolean gram;
public void compile() {
// TODO Auto-generated method stub
mitteltext="";
//FileReader fr = new FileReader("C:/Users/Snookerms/Desktop/Ablage/input.txt");
// BufferedReader br = new BufferedReader(fr);
String zeile1 ="000101101101101100110101010100110110110110110011101101011010010011000";
System.out.println(zeile1);
//br.close();
if(zeile1.startsWith("000")&zeile1.endsWith("000")){
String bestandteile = zeile1.substring(4, zeile1.length()-3);
String [] delta = bestandteile.split("00");
for(int y=0; y<delta.length;y++){
// System.out.println("delta"+delta[y]);
if(delta[y].replaceAll("1", "").length()==4|delta[y].replaceAll("1", "").length()==0){
gram=true;
}
}
}
String eingang = zeile1.substring(3, zeile1.length()-3);
System.out.println(eingang);
String []eingang2 = eingang.split("00");
for(int i=0; i<eingang2.length;i++){
System.out.println(eingang2[i]);
}
int z = eingang2.length;
for (int t=0; t<eingang2.length;t++){
Pattern p = Pattern.compile("[0]");
Matcher m = p.matcher(eingang2[t]);
boolean b = m.matches();
if(b == true){
} else{
if(eingang2[t].equals("1")){
finalstate1="true";
}
if(eingang2[t].equals("11")){
finalstate2="true";
}
if(eingang2[t].equals("111")){
finalstate3="true";
}
if(eingang2[t].equals("1111")){
finalstate4="true";
}
}
}
String text0 = "<?xml version=\"1.0\" encoding=\"utf-8\"?><AUTOMATON><TYPE value=\"TM\"/><ALPHABET><ITEM value=\"0\"/><ITEM value=\"1\"/></ALPHABET><TAPEALPHABET><ITEM value=\"$\"/><ITEM value=\"0\"/><ITEM value=\"1\"/></TAPEALPHABET>";
for(int u=0; u<z-2;u++){
String [] eingang3 = eingang2[u].split("0");
if(eingang3[0].equals("1")){
zustand = "q_0";
if(eingang3_ziel.equals(zustand)){
text="";
// text5="";
}
else{
if(finalstate1.equals("true")){
finalstate1="true";
}
eingang3_ziel="q_0";
text = "<STATE name=\""+ zustand + "\" finalstate=\""+ finalstate1 +"\">";
// text5 = "</STATE>";
}
}
if(eingang3[0].equals("11")){
zustand = "q_1";
if(eingang3_ziel.equals(zustand)){
text="";
// text5="";
}
else{
if(finalstate2.equals("true")){
finalstate2="true";
}
eingang3_ziel="q_1";
text = "</STATE><STATE name=\""+ zustand + "\" finalstate=\""+ finalstate2 +"\">";
// text5 = "</STATE>";
}
}
if(eingang3[0].equals("111")){
zustand = "q_2";
if(eingang3_ziel.equals(zustand)){
text="";
// text5="";
}
else{
if(finalstate3.equals("true")){
finalstate3="true";
}
eingang3_ziel="q_2";
text = "</STATE><STATE name=\""+ zustand + "\" finalstate=\""+ finalstate3 +"\">";
// text5 = "</STATE>";
}
}
if(eingang3[0].equals("1111")){
zustand = "q_3";
if(eingang3_ziel.equals(zustand)){
text="";
// text5="";
}
else{
if(finalstate4.equals("true")){
finalstate4="true";
}
eingang3_ziel="q_3";
text = "</STATE><STATE name=\""+ zustand + "\" finalstate=\""+ finalstate4 +"\">";
// text5 = "</STATE>";
}
}
if(eingang3[1].equals("1")){
read = "0";
}
if(eingang3[1].equals("11")){
read = "1";
}
if(eingang3[3].equals("11")){
write = "1";
}
if(eingang3[3].equals("1")){
write = "0";
}
if(eingang3[4].equals("1")){
richtung = "LEFT";
}
if(eingang3[4].equals("11")){
richtung = "RIGHT";
}
String text3 = "<LABEL read=\""+ read +"\" direction=\""+ richtung +"\" write=\""+ write +"\"/></TRANSITION>";
if(eingang3[2].equals("1")){
zielzustand = "q_0";
}
if(eingang3[2].equals("11")){
zielzustand = "q_1";
}
if(eingang3[2].equals("111")){
zielzustand = "q_2";
}
if(eingang3[2].equals("1111")){
zielzustand = "q_3";
}
String text2 = "<TRANSITION target=\""+ zielzustand +"\">";
mitteltext=mitteltext+text+text2+text3+text5;
}
String text4 = "</STATE><INITIALSTATE value=\"q_0\"/><TAPEINITIALCHAR value=\"$\"/></AUTOMATON>";
String endtext = text0+mitteltext+text4;
if(gram=true){
System.out.println("Eingabe entspricht der Grammatik!");
// String dateiName = "C:/Users/Snookerms/Desktop/Ablage/ergebnis.xml";
// FileOutputStream schreibeStrom =
// new FileOutputStream(dateiName);
for (int i=0; i < endtext.length(); i++){
//schreibeStrom.write((byte)endtext.charAt(i));
System.out.println((byte)endtext.charAt(i));
}
// schreibeStrom.close();
}
else{
System.out.println("Eingabe entspricht nicht der Grammatik!");
}
}
}
</code>
<run id="4de3e4e348fad"></run>