реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Макрогенератор и исходник, предпочтения
_Pasha
сообщение Sep 27 2016, 05:24
Сообщение #1


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Привет.
Всем известна такая штучка как COG
С другой стороны, люди могут не жаловать такой подход и обходиться автогенерируемыми файлами, которые потом инклюдятся в файл исходника.
С третьей стороны, этот cog-подобный подход может не ограничиваться одним языком(питон), может обладать полной настройкой всех своих служебных комбинаций символов.
Вот собсна, интересно мнение ув. ALL за/против.
Есть ли смысл увлечься макрогенераторами прямо в тексте исходника?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 27 2016, 05:46
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



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


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 27 2016, 07:02
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(_Pasha @ Sep 27 2016, 08:24) *
Есть ли смысл увлечься макрогенераторами прямо в тексте исходника?


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

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

Для embedded где вся работа может делаться под Windows есть более производительные варианты.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 27 2016, 08:29
Сообщение #4


;
******

Группа: Участник
Сообщений: 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

Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 27 2016, 08:38
Сообщение #5


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 грузить на себя?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 27 2016, 10:05
Сообщение #6


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Наверное, ближе всего к методу раскрутки такой инструмент
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 28 2016, 10:26
Сообщение #7


;
******

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 28 2016, 10:43
Сообщение #8


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(_Pasha @ Sep 28 2016, 13:26) *
вот например


Чё, интересно, парсер будет делать с таким исходником.
Скорее всего ничего, просто проигнорирует.
Для парсинга и анализа такой исходник потерян.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 28 2016, 11:08
Сообщение #9


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Чуть поправлю фрагмент кода.
Цитата(AlexandrY @ Sep 28 2016, 13:43) *
Чё, интересно, парсер будет делать с таким исходником.
Скорее всего ничего, просто проигнорирует.
Для парсинга и анализа такой исходник потерян.

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

Сообщение отредактировал _Pasha - Sep 28 2016, 11:25
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Sep 28 2016, 12:32
Сообщение #10


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(_Pasha @ Sep 28 2016, 14:08) *
т.е. метод раскрутки чистой воды


Что-то мне это словосочетание ни о чем не говорит.
А почему не метод закрутки? biggrin.gif
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 28 2016, 13:37
Сообщение #11


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(AlexandrY @ Sep 28 2016, 15:32) *
Что-то мне это словосочетание ни о чем не говорит.
А почему не метод закрутки? biggrin.gif

то меня занесло rolleyes.gif это метод только для постоения компиляторов применялся и там входной язык и выходной суть один и тот же.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd May 2024 - 11:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.02683 секунд с 7
ELECTRONIX ©2004-2016