Перейти к содержанию
    

Макрогенератор и исходник

Привет.

Всем известна такая штучка как COG

С другой стороны, люди могут не жаловать такой подход и обходиться автогенерируемыми файлами, которые потом инклюдятся в файл исходника.

С третьей стороны, этот cog-подобный подход может не ограничиваться одним языком(питон), может обладать полной настройкой всех своих служебных комбинаций символов.

Вот собсна, интересно мнение ув. ALL за/против.

Есть ли смысл увлечься макрогенераторами прямо в тексте исходника?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем? В чём их фишка?

Я каждый раз, когда заходит разговор о таких генераторах, думаю для себя - "О, интересная штука! Надо будет применить". И ещё ни разу не применил - как-то не возникает необходимости.

Можете привести пример, когда использование такого генератора полезно/удобно? Я пока представил только какой-то многоязыковой проект, с едиными структурами данных. Ну, типа, дельфи и си.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть ли смысл увлечься макрогенераторами прямо в тексте исходника?

 

Двойная работа.

Сначала скрипт отладить отдельно, потом вставить в файл. При этом в самом скрипте быть ограниченным текстовым представлением.

 

Для WEB-а и облаков наверно это вариант. Поскольку там нет свободы выбора среды и надо приспосабливаться к тому что есть.

 

Для embedded где вся работа может делаться под Windows есть более производительные варианты.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Двойная работа.

Сначала скрипт отладить отдельно, потом вставить в файл. При этом в самом скрипте быть ограниченным текстовым представлением.

10 строк на питоне могут делать такую работу, что разница в представлении будет всегда в пользу текстового.

Для embedded где вся работа может делаться под Windows есть более производительные варианты.

например?

 

А зачем? В чём их фишка?

Я каждый раз, когда заходит разговор о таких генераторах, думаю для себя - "О, интересная штука! Надо будет применить". И ещё ни разу не применил - как-то не возникает необходимости.

Можете привести пример, когда использование такого генератора полезно/удобно? Я пока представил только какой-то многоязыковой проект, с едиными структурами данных. Ну, типа, дельфи и си.

я тоже ни разу не применял. я делаю #include "autogenerated.c"

и все что нужно генерить - генерится отдельно

 

дельфи + Си - использовал утилиту, ptoc

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

дельфи + Си - использовал утилиту, ptoc

 

Правильно. Чего ешё надо.

У ребят узкие web задачи. Они и обходятся питоном.

А в embedded надо и модель из Matlab-а сгенерить, и в ProcessorExpert сгенерить инициализацию, и базу параметров преобразовать сразу и в C-и, и в JSON и в MIB, и в HTML и в GUI.

Туча генераторов всяких. И на кой еще COG грузить на себя?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот например

/*++(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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот например

 

Чё, интересно, парсер будет делать с таким исходником.

Скорее всего ничего, просто проигнорирует.

Для парсинга и анализа такой исходник потерян.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чуть поправлю фрагмент кода.

Чё, интересно, парсер будет делать с таким исходником.

Скорее всего ничего, просто проигнорирует.

Для парсинга и анализа такой исходник потерян.

А, так здесь подразумевается, что прогон через макрогенератор, - это отдельный этап, результаты генерации пишутся в места, отмеченные соотв. тэгами.

Далее, я так думаю, напечатанный в исходнике результат - помечается CRC32 и если юзер внес правки в уже сгенеренный код - обновлений при автогенерации не будет.

да и тэги можно удалить, "присвоив" результат

либо скомандовать clean самому макрогенератору - он удалит то что получил ранее

т.е. метод раскрутки чистой воды

Изменено пользователем _Pasha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. метод раскрутки чистой воды

 

Что-то мне это словосочетание ни о чем не говорит.

А почему не метод закрутки? :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то мне это словосочетание ни о чем не говорит.

А почему не метод закрутки? :biggrin:

то меня занесло :rolleyes: это метод только для постоения компиляторов применялся и там входной язык и выходной суть один и тот же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...