_Pasha 0 27 сентября, 2016 Опубликовано 27 сентября, 2016 · Жалоба Привет. Всем известна такая штучка как COG С другой стороны, люди могут не жаловать такой подход и обходиться автогенерируемыми файлами, которые потом инклюдятся в файл исходника. С третьей стороны, этот cog-подобный подход может не ограничиваться одним языком(питон), может обладать полной настройкой всех своих служебных комбинаций символов. Вот собсна, интересно мнение ув. ALL за/против. Есть ли смысл увлечься макрогенераторами прямо в тексте исходника? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 27 сентября, 2016 Опубликовано 27 сентября, 2016 · Жалоба А зачем? В чём их фишка? Я каждый раз, когда заходит разговор о таких генераторах, думаю для себя - "О, интересная штука! Надо будет применить". И ещё ни разу не применил - как-то не возникает необходимости. Можете привести пример, когда использование такого генератора полезно/удобно? Я пока представил только какой-то многоязыковой проект, с едиными структурами данных. Ну, типа, дельфи и си. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 27 сентября, 2016 Опубликовано 27 сентября, 2016 · Жалоба Есть ли смысл увлечься макрогенераторами прямо в тексте исходника? Двойная работа. Сначала скрипт отладить отдельно, потом вставить в файл. При этом в самом скрипте быть ограниченным текстовым представлением. Для WEB-а и облаков наверно это вариант. Поскольку там нет свободы выбора среды и надо приспосабливаться к тому что есть. Для embedded где вся работа может делаться под Windows есть более производительные варианты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 27 сентября, 2016 Опубликовано 27 сентября, 2016 · Жалоба Двойная работа. Сначала скрипт отладить отдельно, потом вставить в файл. При этом в самом скрипте быть ограниченным текстовым представлением. 10 строк на питоне могут делать такую работу, что разница в представлении будет всегда в пользу текстового. Для embedded где вся работа может делаться под Windows есть более производительные варианты. например? А зачем? В чём их фишка? Я каждый раз, когда заходит разговор о таких генераторах, думаю для себя - "О, интересная штука! Надо будет применить". И ещё ни разу не применил - как-то не возникает необходимости. Можете привести пример, когда использование такого генератора полезно/удобно? Я пока представил только какой-то многоязыковой проект, с едиными структурами данных. Ну, типа, дельфи и си. я тоже ни разу не применял. я делаю #include "autogenerated.c" и все что нужно генерить - генерится отдельно дельфи + Си - использовал утилиту, ptoc Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 27 сентября, 2016 Опубликовано 27 сентября, 2016 · Жалоба дельфи + Си - использовал утилиту, ptoc Правильно. Чего ешё надо. У ребят узкие web задачи. Они и обходятся питоном. А в embedded надо и модель из Matlab-а сгенерить, и в ProcessorExpert сгенерить инициализацию, и базу параметров преобразовать сразу и в C-и, и в JSON и в MIB, и в HTML и в GUI. Туча генераторов всяких. И на кой еще COG грузить на себя? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 27 сентября, 2016 Опубликовано 27 сентября, 2016 · Жалоба Наверное, ближе всего к методу раскрутки такой инструмент Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 28 сентября, 2016 Опубликовано 28 сентября, 2016 (изменено) · Жалоба вот например /*++(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 поправил, заменил /*++(тэг)... --*/ на соответственно //++ и --// а то нелогично как-то Изменено 28 сентября, 2016 пользователем _Pasha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 28 сентября, 2016 Опубликовано 28 сентября, 2016 · Жалоба вот например Чё, интересно, парсер будет делать с таким исходником. Скорее всего ничего, просто проигнорирует. Для парсинга и анализа такой исходник потерян. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 28 сентября, 2016 Опубликовано 28 сентября, 2016 (изменено) · Жалоба Чуть поправлю фрагмент кода. Чё, интересно, парсер будет делать с таким исходником. Скорее всего ничего, просто проигнорирует. Для парсинга и анализа такой исходник потерян. А, так здесь подразумевается, что прогон через макрогенератор, - это отдельный этап, результаты генерации пишутся в места, отмеченные соотв. тэгами. Далее, я так думаю, напечатанный в исходнике результат - помечается CRC32 и если юзер внес правки в уже сгенеренный код - обновлений при автогенерации не будет. да и тэги можно удалить, "присвоив" результат либо скомандовать clean самому макрогенератору - он удалит то что получил ранее т.е. метод раскрутки чистой воды Изменено 28 сентября, 2016 пользователем _Pasha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 28 сентября, 2016 Опубликовано 28 сентября, 2016 · Жалоба т.е. метод раскрутки чистой воды Что-то мне это словосочетание ни о чем не говорит. А почему не метод закрутки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 28 сентября, 2016 Опубликовано 28 сентября, 2016 · Жалоба Что-то мне это словосочетание ни о чем не говорит. А почему не метод закрутки? то меня занесло :rolleyes: это метод только для постоения компиляторов применялся и там входной язык и выходной суть один и тот же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться