|
|
|
Макрогенератор и исходник, предпочтения |
|
|
|
Sep 27 2016, 05:24
|
;
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509
|
Привет. Всем известна такая штучка как COGС другой стороны, люди могут не жаловать такой подход и обходиться автогенерируемыми файлами, которые потом инклюдятся в файл исходника. С третьей стороны, этот cog-подобный подход может не ограничиваться одним языком(питон), может обладать полной настройкой всех своих служебных комбинаций символов. Вот собсна, интересно мнение ув. ALL за/против. Есть ли смысл увлечься макрогенераторами прямо в тексте исходника?
|
|
|
|
|
Sep 27 2016, 07:02
|
Ally
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050
|
Цитата(_Pasha @ Sep 27 2016, 08:24) Есть ли смысл увлечься макрогенераторами прямо в тексте исходника? Двойная работа. Сначала скрипт отладить отдельно, потом вставить в файл. При этом в самом скрипте быть ограниченным текстовым представлением. Для WEB-а и облаков наверно это вариант. Поскольку там нет свободы выбора среды и надо приспосабливаться к тому что есть. Для embedded где вся работа может делаться под Windows есть более производительные варианты.
|
|
|
|
|
Sep 27 2016, 08:29
|
;
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509
|
Цитата(AlexandrY @ Sep 27 2016, 10:02) Двойная работа. Сначала скрипт отладить отдельно, потом вставить в файл. При этом в самом скрипте быть ограниченным текстовым представлением. 10 строк на питоне могут делать такую работу, что разница в представлении будет всегда в пользу текстового. Цитата Для embedded где вся работа может делаться под Windows есть более производительные варианты. например? Цитата(AHTOXA @ Sep 27 2016, 08:46) А зачем? В чём их фишка? Я каждый раз, когда заходит разговор о таких генераторах, думаю для себя - "О, интересная штука! Надо будет применить". И ещё ни разу не применил - как-то не возникает необходимости. Можете привести пример, когда использование такого генератора полезно/удобно? Я пока представил только какой-то многоязыковой проект, с едиными структурами данных. Ну, типа, дельфи и си. я тоже ни разу не применял. я делаю #include "autogenerated.c" и все что нужно генерить - генерится отдельно дельфи + Си - использовал утилиту, ptoc
|
|
|
|
|
Sep 27 2016, 08:38
|
Ally
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050
|
Цитата(_Pasha @ Sep 27 2016, 11:29) дельфи + Си - использовал утилиту, ptoc Правильно. Чего ешё надо. У ребят узкие web задачи. Они и обходятся питоном. А в embedded надо и модель из Matlab-а сгенерить, и в ProcessorExpert сгенерить инициализацию, и базу параметров преобразовать сразу и в C-и, и в JSON и в MIB, и в HTML и в GUI. Туча генераторов всяких. И на кой еще COG грузить на себя?
|
|
|
|
|
Sep 28 2016, 10:26
|
;
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509
|
вот например Код /*++(input) u-set "u" parameter d-set "d" parameter k-set "k" parameter --*/
/*++ #!/usr/bin/python from Macro_For_C import * with Source("input") as f: txt = f.readlines() f.close() out=Source("out1") out2=Source("out2") for x in txt: out.print("printf(""{0} \n\r"")".format(x)) out2.print("case '{0}': <do something>; break;//{1}\n\r".format(x[0],x[1:])) --*/
void help(void) { //++(out1) //-- } void console(char c){ switch(c) { //++(out2) //-- default: break; } } тэги, ессно, настраиваются както в стилевом файле под свой вкус, с возможностью натравить макрогенератор на множество исходников и сменить их одним вызовом программы. кста, программа не скриптовая, думаю. она просто процессы вызывает исходя из того, что нашла в тексте ps поправил, заменил /*++(тэг)... --*/ на соответственно //++ и --// а то нелогично как-то
Сообщение отредактировал _Pasha - Sep 28 2016, 11:11
|
|
|
|
|
Sep 28 2016, 11:08
|
;
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509
|
Чуть поправлю фрагмент кода. Цитата(AlexandrY @ Sep 28 2016, 13:43) Чё, интересно, парсер будет делать с таким исходником. Скорее всего ничего, просто проигнорирует. Для парсинга и анализа такой исходник потерян. А, так здесь подразумевается, что прогон через макрогенератор, - это отдельный этап, результаты генерации пишутся в места, отмеченные соотв. тэгами. Далее, я так думаю, напечатанный в исходнике результат - помечается CRC32 и если юзер внес правки в уже сгенеренный код - обновлений при автогенерации не будет. да и тэги можно удалить, "присвоив" результат либо скомандовать clean самому макрогенератору - он удалит то что получил ранее т.е. метод раскрутки чистой воды
Сообщение отредактировал _Pasha - Sep 28 2016, 11:25
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|