У меня есть строка, и я хотел бы проанализировать ее на структурных блоках.
Итак, структура в строке выглядит так:
if(true) {
if(true) {
if(true) {}
}
}
if(true) {
if(true) {
if(true) {}
}
}
И я бы хотелразделить один на родительские блоки следующим образом:
if(true) {
if(true) {
if(true) {}
}
},
if(true) {
if(true) {
if(true) {}
}
}
Мой код:
string condition =
"if(true) {\
if(true) {\
if(true) {}\
}\
}\
if(true) {\
if(true) {\
if(true) {}\
}\
}";
string item;
stringstream stream(condition);
vector<string> array;
//splitting on sections
while (getline(stream, item, '}')) {
array.push_back(item + "}");
}
for(int i = 0; i < array.size(); i++) {
cout << i << array[i] << endl;
}
Результат:
0 if(true) { if(true) { if(true) {}
1 }
2 }
3 if(true) { if(true) { if(true) {}
4 }
5 }
Но нужно:
0 if(true) { if(true) { if(true) {} } }
1 if(true) { if(true) { if(true) {} } }
Как правильно определить и проанализировать родительские блоки или указать алгоритм?