Я строю генератор кода C++
на python.У меня есть шаблонный файл C++
, который выглядит следующим образом (это только часть файла шаблона, но остальное почти такое же):
/* Pass 1: Process columns one by one */
for (int j = 0; j < uiTrSize; j++)
{
/* butterfly_0 - permutation to even and od parts */
tmp_0_0 = block[j * uiStride + 0] + block[j * uiStride + 3];
tmp_0_3 = block[j * uiStride + 0] - block[j * uiStride + 3];
tmp_0_1 = block[j * uiStride + 1] + block[j * uiStride + 2];
tmp_0_2 = block[j * uiStride + 1] - block[j * uiStride + 2];
/* lifting_step_0 */
// this is A2; pi/4
tmp = tmp_0_0 + (<< **tmp_0_1_lift_step_to_add_p1 ** >>); // add lift by p1
coeff[j * uiTrSize + 2] = (<< **tmp_lift_step_to_add_u1 ** >>) - tmp_0_1; // add lift by u1
coeff[j * uiTrSize + 0] = tmp - (<< **coeff[j * uiTrSize + 2] _lift_step_to_add_b1 ** >>); // add lift by b1
// 3pi/8
tmp = tmp_0_2 + (<< **tmp_0_3_lift_step_to_add_p2 ** >>); // add lift by p2
coeff[j * uiTrSize + 3] = tmp_0_3 - (<< **tmp_lift_step_to_add_u2 ** >>); // add lift by u2
coeff[j * uiTrSize + 1] = tmp + (<< **coeff[j * uiTrSize + 3] _lift_step_to_add_b2 ** >>); // add lift by b2
}
Мне нужно найти строки с шаблоном<<** VARIABLE_lift_step_to_add_COEFFICIENT **>>
, чем найти, какой VARIABLE и какой COEFFICIENT применяются для этой строки.Обратите внимание, что VARIABLE и COEFFICIENT - это разные имена в каждой строке, и я должен извлечь их точные имена.
Это будет использоваться для генерации нового кода.Это первая часть, чтобы найти эту часть строки.В конце я должен получить что-то вроде:
variable = tmp_0_1
coeff = p1
Чем предположим, что я сгенерировал новый код (строку), используя переменную и коэффициент, я должен заменить эту строку вместо данного шаблона в этой конкретной строке,Например, в строке, содержащей <<** tmp_0_1_lift_step_to_add_p1 **>>
, я должен поместить новую строку, скажем, пока просто: tmp_0_1 + p1
(на практике новая строка более сложная).
Итак, где бы я ни имел образецкак это <<** VARIABLE_lift_step_to_add_COEFFICIENT **>>
, я должен поместить новую строку с другим именем переменной и коэффициента.В приведенном мной примере это должно происходить 6 раз.
Есть идеи, как это сделать?Я предполагаю, что это связано с регулярными выражениями в python с использованием модуля re
, но до сих пор я не смог понять, как решить эту проблему.
Код написан на python.
Спасибо!