View Single Post
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);
		}

	}