4 om kvelden, trøtt, for sent til å fylle på med kaffe.
Brukte nesten en time på å finne ut hvorfor koden under ga en stackoverflow.
Sovnet, våknet, slettet hele funksjonen og skrev en fungerende en på under 15 min..
Kode
public void getInnerBlocks(){
int buffer = 0;
int first = 0;
int last = 0;
String sub = "";
while(true){
last = code.indexOf(";", first+1);
if(last == -1){
last = code.length();
}
sub = code.substring(first,last);
//System.out.println(sub);
if(sub.isEmpty()){
break;
}
if(sub.contains("{")){
//System.out.println("{");
int a = first;
int b = first;
String block_string = code.substring(first,code.length());
int i = block_string.indexOf("{")+1;
char chk = '0';
buffer = 1;
while(true){
chk = block_string.charAt(i);
if(chk == '{'){
buffer++;
}
if(chk == '}'){
buffer--;
}
i++;
if(i >= block_string.length() || buffer <= 0){
b = i;
break;
}
}
last = b;
children.add(new Block(block_string.substring(0,b),statements.size(),statements.size()+2));
System.out.println(block_string.substring(0,b));
}else{
statements.add(sub);
}
first = last + 1;
if(last >= code.length()-1 || code.indexOf("}",last+1)==-1 || code.indexOf(";",last+1)==-1){
break;
}
}
for(String s : statements){
System.out.println(s);
}
}