обработка текста tcl - переупорядочить значения в строках и столбцах на основе заданного пользователем значения
Я новичок в tcl и хотел бы использовать его в обработке текста простого случая. Следующий формат находится в Liberty (файл .lib), который используется в дизайне чипов. Я был бы действительно признателен за любую помощь в этом.
Вот фрагмент моего файла (обработка текста должна выполняться только на «значениях»)
timing () {
related_pin : "clk";
timing_type : setup_rising;
rise_constraint (constraint_template_5X5) {
index_1 ("0.01, 0.05, 0.12, 0.2, 0.4");
index_2 ("0.005, 0.025, 0.06, 0.1, 0.3");
index_3 ("0.084, 0.84, 3.36, 8.4, 13.44") ;
values ( \
"1.1, 1.2, 1.3, 1.4, 1.5", \
"2.1, 2.2, 2.3, 2.4, 2.5", \
"3.1, 3.2, 3.3, 3.4, 3.5", \
"4.1, 4.2, 4.3, 4.4, 4.5", \
"5.1, 5.2, 5.3, 5.4, 5.5", \
"6.1, 6.2, 6.3, 6.4, 6.5", \
"7.1 ,7.2, 7.3, 7.4, 7.5", \
"8.1, 8.2, 8.3, 8.4, 8.5", \
"9.1, 9.2, 9.3, 9.4, 9.5", \
"10.1,10.2,10.3,10.4,10.5", \
"11.1,11.2,11.3,11.4,11.5", \
"12.1,12.2,12.3,12.4,12.5", \
"13.1,13.2,13.3,13.4,13.5", \
"14.1,14.2,14.3,14.4,14.5", \
"15.1,15.2,15.3,15.4,15.5", \
"16.1,16.2,16.3,16.4,16.5", \
"17.1,17.2,17.3,17.4,17.5", \
"18.1,18.2,18.3,18.4,18.5", \
"19.1,19.2,19.3,19.4,19.5", \
"20.1,20.2,20.3,20.4,20.5", \
"21.1,21.2,21.3,21.4,21.5", \
"22.1,22.2,22.3,22.4,22.5", \
"23.1,23.2,23.3,23.4,23.5", \
"24.1,24.2,24.3,24.4,24.5", \
"25.1,25.2,25.3,25.4,25.5", \
);
}
Таким образом, все «значения» находятся в формате таблицы поиска 25 строк x 5 столбцов, который я хочу изменить на формат таблицы 5 строк x 5 столбцов. Для этого я хотел бы спросить пользователя, какое из 5 значений в index_3 он / она хочет, чтобы сопоставление было выполнено следующим образом (при этом также удаляется строка index_3):
C - это пользовательский столбец на основе index_3: (столбец 1 для 0,084, столбец 2 для 0,84, столбец 3 для 3,36, столбец 4 для 8,4, столбец 5 для 13,44). * Только 1 значение может быть выбрано пользователем
Схема картирования:
1,C -> row 1 column 1
2,C -> row 2 column 1
3,C -> row 3 column 1
4,C -> row 4 column 1
5,C -> row 5 column 1
6,C -> row 1 column 2
7,C -> row 2 column 2
8,C -> row 3 column 2
так далее ..
Например, скажем, пользователь выбирает столбец 1 (значение 0,084 из index_3) ->, который «выбирает» весь 1-й столбец данных в «значениях» для обработки / размещения текста
Следовательно, результирующая обработка текста, выполняемая tcl на основе схемы отображения, должна быть:
index_1 ("0.01, 0.05, 0.12, 0.2, 0.4");
index_2 ("0.005, 0.025, 0.06, 0.1, 0.3");
values ( \
"1.1, 6.1, 11.1, 16.1, 21.1", \
"2.1, 7.1, 12.1, 17.1, 22.1", \
"3.1, 8.1, 13.1, 18.1, 23.1", \
"4.1, 9.1, 14.1, 19.1, 24.1", \
"5.1, 10.1,15.1, 20.1, 25.1", \
);
Моя стратегия такова:
поиск по запросу "rise_constraint ", чтобы найти значения для обработки текста во всем файле
строка комментария "index_3 (...)"; добавить / * и * / в начало и конец строки в перепечатанном обработанном файле (необязательно)
преобразовать «значения» из таблицы 25 строк x 5 столбцов в таблицу 5 строк x 5 столбцов НА ОСНОВЕ выбранного значения Index_3 («выбор столбца, определенный пользователем»)
перепечатайте другие строки как есть (включая обработанные текстовые 'значения')
Я старался изо всех сил, чтобы объяснить мой запрос на кодирование. Может кто-нибудь из вас meastros, пожалуйста, помогите мне подумать о том, как в tcl я могу сделать такую обработку текста? Большое спасибо!!