2024-04-14 babolo Версия 4.15 Тест учитывает мажор версии. Макросы Bpars_UPPER и Bpars_LOWER не вызывают ошибок. Предварительное описание структуры бесполезно. Сгруппированы некоторые выводы. Решен конфликт с const на входе в babolo_getparm(). Стало больше const. Стиль. 2024-04-13 babolo Выравнивание. 2024-02-03 babolo Уменьшение варнингов. Стиль. 2024-01-14 babolo Версия 4.14 Исправлен MAXWARN. Мелкие исправления. Стиль. 2024-01-08 babolo Версия 4.13 В дистрибутиве предыдущего релиза не хватало BSDmakefile файлов. 2024-01-08 babolo Версия 4.12 повторно Даты в копилефтах. 2024-01-08 babolo Версия 4.12 Внедрены BSDmakefile. Добавлен MAXWARN. Удалены варнинги и макросы EXOUT() и подобные. Стиль. 2023-12-03 babolo Явный паддинг. 2023-11-26 babolo Использование макроса TODO. 2023-10-28 babolo Даты в копилефтах. 2023-10-09 cuhegh Версия 4.11 Обновлён вместе с блином 2023-10-09 cuhegh Версия 4.11 Обновлён вместе с блином 2023-10-08 cuhegh Обновлён вместе с блином 2023-09-09 babolo Больше отладочной выдачи. Длинна строк. 2023-03-08 babolo Даты в копилефтах. 2023-02-25 babolo Версия 4.10 Для *word() функций добавлен флаг Bpars_FIRM. Стиль. 2023-02-19 babolo Даты в копилефте. 2023-02-19 babolo Версия 4.09 Поменялся прототип babolo_gonword(). Уменьшено количество предупреждений. Изменения в мануале. Комментарии. Тест использует param.make для обхода глюка clang. 2023-02-18 babolo Добавлены babolo_mdword() и babolo_gonword(). 2022-02-05 babolo Утечка памяти. 2022-02-05 babolo Версия 4.07 Улучшено управление памятью. Исправлено отсутствие транслятора, если на задано явно. Улучшена диагностика. Стиль. 2022-01-30 babolo Версия 4.06 Обход неспособности последних версий clang к --oformat=binary. Улучшен отладочный вывод. 2021-12-18 babolo Отладка по подозрениям. Устранено повторное использование аргумента в макросе. Стиль. 2021-11-05 babolo Даты в копилефтах. 2021-09-26 babolo Версия 4.05 Исправлен прием пустого параметра первым. Тесты. Отладочная выдача. 2021-06-06 babolo Версия 4.04 Осовременивание зависимостей. Попытка доступа к полям отсутствующего bos->next в getopt. Даты в копилефтах. 2021-05-29 babolo Ошибки работы с BLIN. 2020-09-13 babolo Версия 4.03 повторно Не была отмечена версия. 2020-09-13 babolo Версия 4.03 Добавлены флаги Bpars_EMPT и Bpars_DASH. В ман добавлено описание babolo_getoptsnum(). Погашены варнинги. Расставлены *_COMPAT. 2020-06-10 babolo Огрвничение blin_state* -v флагами. 2019-09-02 babolo Добавлено требование наличия *_COMPAT. 2018-05-10 babolo Версия 4.02 Порядок операций. Погашено несколько варнингов. 2018-03-10 babolo Версия 4.01 Пополнен мануал. 2018-02-24 babolo Версия 4.00 Увеличился размер структуры babolo_opts. В процессе разбора параметров в 3их версиях free() ветки по мере обхода. Терерь память освобождается только целиком в babolo_closeopts(). Были мелкие ошибки использования blin_internal_flags. 2018-01-04 babolo Версия 3.07 Когда blin_internal_flags определен по ссылке, было возможно разыменоване нулевой ссылки. Теперь babolo_dumpopts() обозначает до 64 аргументов флага. Аккуратнее выводятся аргументы флага -@ в tools/opts.c. Тестируется babolo_hextrin()., было возможно разыменоване нулевой ссылки. Теперь babolo_dumpopts() обозначает до 64 аргументов флага. Аккуратнее выводятся аргументы флага -@ в tools/opts.c. Тестируется babolo_hextrin(). Стиль. 2018-01-04 babolo Использование #ident для внедрения текстов в бинарник. В тестах сделана нумерация и подсчет ошибок. Добавлены тесты на подстановку переменных окружения при невозможности подстановки. Форматирование. 2017-11-12 babolo Добавлена цель test в Makefile. Частично испрвлена babolo_hextrin(). В tools/test.c добавлена возможность тестировать babolo_hextrin(), но тесты не написаны. 2017-10-01 babolo Новая процедура babolo_dumparm() - интерфейс нестабильный, поменяется. Убран текст об ошибках - исправлены. Новый флаг Bpars_DUMP для дампа babolo_parm. В макросе ERROUT() исправлен порядок присвоений. Форматирование. 2017-07-16 babolo Поправлена дата копилефта. 2017-07-16 babolo Поправлен мануал. 2017-07-16 babolo Теперь babolo_dumpopts() умеет показывать больше параметров у опции. Теперь babolo_optest() выдает настоящее количество параметров опции. Приспособлен tools/opts для показа babolo_optest(), babolo_optext(), babolo_dumpopts() флагом -=. В tools/opts добавлена опция -@ для демонстрации 17ти параметров опции. 2017-07-16 babolo В setopts() исправлена установка флагов. Из мануала babolo_getopts урано описание флага совместимости со 2й версией. Исправлен мануал babolo_getopts. Исправлена отладочная выдача в setopts(). Стиль, комментарии. 2017-07-16 babolo Ужат текст. Комментарии. 2017-07-16 babolo Из getopt.c процедуры совместимости со второй версией вынесены в getopt2.c. Поправлены даты в копилефтах. 2017-07-16 babolo Поправлен мануал babolo_getparm. 2017-07-16 babolo Версия 3.06 Пополнен ман. Исправлена ошибка, когда слово не могло начинаться с закрывающей фигурной скобки. Замена идентификатора argnmax на argvmax. Теперь !Bpars_NOEN не влечет за собой !Bpars_NOAL, но при этом возможна ошибка E2BIG. В макросе ERROUT() изменен порядок присваиваний. Замена malloc();bzero() на calloc(). Исправлена ошибка, когда Bpars_FIRM неправильно управлял таблицей классов. При выходе с ошибкой в i_getparm() неправильно освобождалась память. Файл тестера test.sh теперь создается из test.sh.m4. Стиль. Форматирование. Комментарии. Копилефты. 2017-07-11 babolo Версия 3.05 Тексты процедур независимых групп разнесены по своим каталогам. Маны групп разделены. Изменения только в оформлении и документации, работа процедур не менялась. 2016-03-30 babolo Улучшена диагностика. 2016-03-22 babolo Версия 3.04 Ограничивалось количество слов getparm без Bpars_FIRM флага. 2016-03-21 babolo Дозамена flag на flags. Случайная кавычка внутри строки. Учтено изменение типа blin_statectl. Удален лишний параметр из buildtree(). Вставлены недостающие инклуды #include . В tools/texot поправлена знаковость *p и *q. 2016-02-24 babolo Исправлен порядок параметров calloc(). Пополнен вывод babolo_optext(). Стиль. 2016-02-19 babolo Приведение копилефтов к единому виду. 2014-10-10 babolo Замена echo на определение ECHO. 2014-08-29 babolo Версия 3.03 Добавлена процедура babolo_getoptsnum(). Убрано сохранение errno вокруг ifBLIN_* и поднята зависимость от babolo-libmake до версии, которая сохраняет errno. Новый файл для преобразований строк, новая процедура в нем babolo_hextrin(). В мане замена BLIN_VER* на BLIN_BIT*. Исправление комментов. 2014-08-13 babolo Версия 3.02 Исправлен список MAN3 в Makefile. Исправления и пополнения манов. 2014-08-13 babolo Версия 3.01 Мануал библиотеки приведен в соответствие. Исправлен мануал lexor. Исправлен комментарий. В Makefile список ошибок. 2014-08-13 babolo Версия 3.00 Переформатирован Makefile. Отлажены новые процедуры работы с опциями, в том числе мультиаргументные опции, пополнены тесты. Новые процедуры babolo_setopts(), babolo_setparm(), babolo_chopts(), babolo_getoptunum(). В getparm переформатирована таблица eolns, исправлена ошибка с {} в режиме подстановки. Замена u_char на char, где удобно. Теперь blin_stateheader() и blin_statebody() выполняются на том же уровне отладки, на который у них определен вывод. Константа Bpars_SYMz ликвидирована, ее нагрузка ушла на отдельный параметр процедуры babolo_openopts(). Константа Bpars_SYMe теперь сдвинулась в младшие байты. Новый флаг Bpars_CMPT для совместимости со 2й версией. Новый флаг Bpars_ONLU (будет в мане). Замена типа u_int32_t на BLIN_flag, где соответствует. Трансляция lexor со своей статической версией библиотеки. В lexor улажен конфликт между знаковым и беззнаковым ls->maxw и ls->maxl. Новая программа optn в тестах. в тестовых opt и opts теперь сохраняется уровень отладки при явном задании флагов. Комментарии и форматирование. Из Makefile удалены отработанные напоминания. 2014-07-10 babolo Макросы kukBpars_NPRM(), setBpars_NPRM(), getBpars_NPRM() убраны под Bpars_COMPAT и выброшены из мана. Новые флаги Bpars_FPTR, Bpars_FTXT, Bpars_SYMz, Bpars_SYMZ, Bpars_SYMe, Bpars_SYME, Bpars_PREA. В условия совместимости добавлен defined(Bpars_COMPAT). Подстроены типы с const и unsigned. Полностью доразделены совместимые и новые процедуры в getopt. Добавлен флаг трансляции -Wextra. Выброшены константы NOPT, OPT0, OPT1, теперь флаги могут быть мультиаргументными (не проверено). Подстроена работа с blin_internal_flags. Замена нзваний процедур babolo_retest() и babolo_retext() на babolo_optest() и babolo_optext() соответственно. Пополнен babolo_dumpopts(). Процедура babolo_optext() теперь учитывает Bpars_SYMe и Bpars_SYMz. В тесты добавлен флаг трансляции -Wall. Тесты новой версии tools/opts. Форматирование. 2014-07-08 babolo В мане типы приведены к текущему сосотоянию. В babolo_dumpopt() поставлен const. Новые процедуры babolo_retest() и babolo_retext(). Расставлены *_COMPAT. Удалена зависимость от MIFE_COMPAT3. Форматирование. 2014-07-07 babolo Аккуратно расставлены типы u_char, char, const. В babolo_parm массив в конце определен универсальнее. В tools/test.c формат сделан 32/64 совместимым. Тест сделан устойчивым к к CLANG. В tools/texot не протирался флаг Bpars_CMID и убрана неоднозначность порядка выполнения. Форматирование, комментарии. 2014-07-04 babolo Процедура babolo_freeparm() перенесена из freeparm.c в getparm.c, freeparm.c стал не нужен и удален. 2014-07-04 babolo Поправлены копилефты. 2014-07-02 babolo Массовая замена flag на flags в структурах. Внесено описание ошибки в Makefile. Массовая замена u_char в интерфейсах на char. Добавлены макросы Bpars_UPPER и Bpars_LOWER. Изменилось определение типа babolo_opt. 2014-04-22 babolo Версия 2.12 Переход на babolo-libmake 3, mife 4 без COMPAT. Добавлено наследование opts (не было?). Замена вывода babolo_dumpopt() в stderr вместо stdout. Комментарии, форматирование. 2013-12-05 babolo Версия 2.11 Исправлены LDFLAGS. 2013-10-14 babolo Версия 2.10 Приспособлена к mife.4, но работает и с mife.3. 2013-01-26 babolo Версия 2.09 В применении от предыдущей версии не отличается, только зачистка. Тип u_int32_t у флагов заменен на совместимый BLIN_flag. Внутренние идентификаторы flag стали flags. 2013-01-26 babolo Версия 2.08 В применении от предыдущей версии не отличается, только зачистка. Исправлены форматы в отладочной выдаче синтаксического автомата getparm(). Тип u_int32_t у флагов заменен на совместимый BLIN_flag. Внутренние идентификаторы flag стали flags. Порядок инклудов в тексте согласован с семантическим порядком. Ликвидированы ворнинги при babolo_goword() и babolo_getparm(). 2012-02-13 babolo Версия 2.07 Стандартные макросы BLIN_I и BLIN_X вместо PTOFI и 08X. Форматирование. 2012-01-13 babolo Версия 2.06 Тперь в составе распознаваемых слов можно использовать кавычки и обатный слеш. Убрано приведение char** к u_char**, от варнингов не спасает, а вреда от приведения больше. Чуть расширена диагностика. В тестах добавлена -lbabolo-libmake. 2011-12-10 babolo Версия 2.05 Изменения в babolo-libmake - добавлен -lbabolo-libmake для сборки. 2008-09-18 babolo Версия 2.04 Устанавливаются линки на маны по новым (2.03) фунуциям. Исправлен список REQUIRED. В babolo_openopt() слегка измен отладочный вывод. Добавлена для внутреннего потребления функция babolo_dumpopt(). babolo_getparm() не оканчивал параметр, который кончался \0. Добавлен также тест на этот случай. Неправильно работал lexor на 64хразрядной архитектуре. Словом treei в buildtree() (lexor) была обозвана переменная, как и ее тип. В lexor не был предусмотрен вариант на случай, если TMPDIR не установлена. В тестовую программу добавлен дамп babolo_opt при очень специальных условиях. Поправлены варнинги при трансляции на amd64. Добавлены комментарии к структуре babolo_opt. 2008-05-24 babolo Ликвидированы жалобы компилятора на разнознаковость. 2008-05-24 babolo Версия 2.03 Добавлен рекурсивный разбор опций. В tools/test.c ввод регистра флагов стал беззнаковым. Несущественная замена идентификатора в tools/test.c. 2008-05-14 babolo Версия 2.02 Теперь при ошибке выходной файл lexorа удаляется. Форматирование. 2008-05-14 babolo Поправлен порядок и состав инклудов. Согласована знаковость/беззнаковость у переменных и параметров. parser.h приспособлен к включению в c++. В typedef определены имена для использования с struct в декларациях. Структура с переменным массивом babolo_lexor теперь определена так, что бы понималась GNU C версий 2, 3, 4. 2007-11-11 babolo Версия 2.01 Дополнен ман. babolo_testword() теперь не самостоятельная процедура, а интерфейс к babolo_goword(). Немые идентификаторы переменных в babolo_goword() заменены на более значащие. В tools/test мелочь - указатель vs массив. 2007-08-05 babolo Версия 2.00 повторно В babolo_freeparm() не проверялся смысл проверки argv. 2007-08-05 babolo Версия 2.00 Винарно несовместима с 1.XX. Основная доработка в babolo_getparm()/babolo_freeparm(), lexory досталось лишь постольку, поскольку он зависит от переделанного. Удалена структура babolo_parm1, теперь babolo_parm со счетчиком строк. В состав babolo_parm входит массив ссылок на параметры, раньше был отдельно. Более нет флага Bpars_CHNK, теперь ведет себя как с установленным. Более нет флага Bpars_XXCN, теперь ведет себя как с установленным. Более нет флага Bpars_ABSQ, теперь поведение зависит от параметра absq. Новый флаг Bpars_FAST, раньше было эквивалентно установленному. Новый флаг Bpars_NOAL, раньше было эквивалентно сброшенному. Новый флаг Bpars_FIRM, раньше было эквивалентно сброшенному. Новый флаг Bpars_NONU, раньше было эквивалентно сброшенному. В babolo_freeparm() было использование флага структуры после освобождения памяти из под структуры. В автомате babolo_getparm() действие Cy перенесено до выполнения ошибок, новая ошибка Cm (нет памяти). Теперь биты Bpars_XXLN правильно переносятся при изменении в .h. Теперь из babolo_getparm() выделена логика в отдельную i_getparm(), которая и запускается 2 раза в вариантах предварительной оценки и разбора. В babolo_getparm() end теперь может быть NULL. Отчет о состояниях автомата перевешен на 5й уровень отладки. Правильнее проверяются указатель на место для записи слова и индекс указателя на слово - перед возможной записью мимо. Переписано действие Cp, теперь там нет лишних повторений. Прооптимизировано выполнение ошибок. В основном цикле автомата удалены все выходы, кроме выхода через заголовок. Дописаны тесты. Комментарии. 2007-07-28 babolo Версия 1.04 Введено понятие "абсолютной кавычки", его использует процедура babolo_getparm1(), включается флагом Bpars_ABSQ. Введена возможность считать строки, включается флагом Bpars_XXCN. Для подсчета строк сделана расширенная структура babolo_parm1. Введен макрос Bpars_XXLN - сумма всех флагов концов строк. Расширено количество распечатываемых действий в автомате при отладке. Коредампился babolo_getparm1() при ошибке. В lexor используется возможность считать строки babolo_getparm1(), повысилась точность определения номера строки. В lexor intrans вводится циклом вместо strstr() для подсчета строк. Проверяется ошибка mular_add() в lexor. tools/test.c знает об "абсолютной кавычке". Появилась возможность в тесте проверять ненулевой код возврата. Существенно расширен test.sh, теперь он линейный. 2007-07-22 babolo Версия 1.03 babolo_freeparm() теперь нормально переносит NULL аргумент. lexor теперь понимает пустые строки в преамбуле. Сделана нумерация строк через #line в промежуточном файле. Сделана нумерация строк через #line в преамбуле выходного файла. В сгенеренной части надо что-то придумать. test1.lexor имеет пустые строки в преамбуле для проверки. 2007-07-21 babolo Версия 1.02 Некоторые параметры процедур описаны const. В выводе TREE расширен диапазон представлений до максимума для 32 разрядов. Исправлена сортировка, на этот раз, похоже, правильно. Теперь дерево может создаваться с 4хбайтовыми значениями. Исправлена длинна выводимого индекса/значения в run4out(). При нехватке разрядов тепрь есть сообщение об ошибке. В дистрибутиве не было полного комплекта для тестов. Добавлены CVS Idы и Copyright тексты. В тестовой программе: - предусмотрен вывод 4хбайтовых значений слов - добавлены недостающие заголовки - увеличено количество автоматов до N4 - сделан выбор автомата по номеру. Сделано больше тестов. 2007-07-20 babolo Версия 1.01 Не линковались маны для babolo_testchar, babolo_testword, babolo_goword, babolo_treedump. Новый флаг Bpars_CMID. В babolo_testword() и babolo_goword() сделаны проверки на зацикливание. В ман на lexor добавлено пункт про таблицу трансляции символов. В lexor сделана проверки на выход за границу файла при поиске преамбулы. Проверяется результат попытки открыть выходной файл. При аварийном выходе перед попыткой закрыть выходной файл проверяется его наличие. При освобождении/закрытии обнуляются ссылки r->iffed, r2->imd, ls->o, nam1. test.sh готов принять множество оттранслированных автоматов. Первый тестовый автомат теперь снабжен таблицей перекодировки в нижний регистр. Тестовый файл теперь в верхнем регистре. В texot теперь есть нулевой тестовый автомат. 2007-07-18 babolo Версия 1.00 Значение флага Bpars_CEND заменено на обратное. В babolo_lexor добавлен printable на будущее. Из интерфейса удален babolo_weakchar(). Дополнен ман babolo-parser.3. Новый ман lexor.1. В test.sh lexor теперь вызывается с -pipe -Wall. 2007-07-18 babolo Перенумерованы Bpars_* флаги. Теперь дерево строится со значениями слов. Теперь выдается конечный результат - .h (или .c) файл со структурой babolo_lexor. Добавлена в интерфейс процедура babolo_weakchar(). Указатель по lexgraf[] теперь типа size_t. Сравнение с lext->szz в reconstruct() было некорректным на границе. Теперь начальные значения ссылок ~0 вместо 0. Теперь babolo_testword() и babolo_goword() при неудаче с длинным словом берут более короткое слово, если есть. Устанавливался lexor.h при make install. lexor теперь динамический. Новый флаг -f форсирует Bpars_AABS в lexor. Теперь dump_tree() и finedump_tree() могут подбирать ширину представления под размер значений. Исправлено взвешивание дерева. Сортировка ветвей дерева перевернута на обратную. Теперь tdelta() считает правильно максимальное смещение (используя новую процедуру addrfy()). Теперь finedump_tree() делается позже в связи с подготовкой ему рюшечек. Наличие выходного файла в параметрах запуска lexor теперь проверяется. Файл с результатом теперь закрывается в конце lexor и purge при ошибке. Теперь mife_descriptor закрывается в конце lexor. Теперь фременный .c файл транслятору при высоком (5) уровне отладки не удаляется. Теперь lexor возвращает реальный код ошибки вместо EX_OK. Тип treew стал длиннее. Добавлена часть тестов в test.sh. 2007-07-04 babolo Новый флаг Bpars_CEND для непроматывания последнего символа слова, если этот символ не был задан явно, а выбран в качестве "прочего" варианта. Теперь в babolo_testword() и babolo_goword() слово задается u_char* вместо char*. Теперь babolo_testchar() получает символ в виде u_char** и проматывает его, если не вариант "прочего" с флагом Bpars_CEND. Замена ключевых строк на '# LEXOR INCLUDE' и '# LEXOR BEGIN'. Предварительное обнуление r2, ls, nam1 повышает точность реакции при ошибке. 2007-07-04 babolo Бывший код initree() теперь в составе run3(). Комментарий к buildtree(). Опланарен run3() за счет использования goto out. 2007-07-04 babolo Пересобраны структуры с параметрами проходов. Теперь валидность ссылки определяется специальным макросом. Теперь ожидаем выполнения транслятора, что бы получить код возврата. Допускалось отсутствие inname, исправлено. При сравнении в buildtree() не было перекодировки по таблице ls->ibin->t. Теперь файл из под трансляции получается целиком в run2cc(). Теперь при ошибке в run3() память из под дерева освобождается. 2007-07-04 babolo Подготовка к смене мажора. Поменял типы со struct babolo_parm на babolo_parm. Раздвинуты вверх уровни отладки со 2го, на 2й уровень поставлен вывод полуфабрикатов первого прохода lexor. Ликвидированы последние упоминания о флагах Bpars_VER*. Ликвидирован флаг Bpars_SKIP. Огорожен от повторного включения parser.h. Добавлен большой кусок работы по lexor, не готов. Коммит в связи с основательной переработкой, что бы не потерять готовое. 2006-07-26 babolo Версия 0.06 - повторно Неверный выбор каталога для инклудов. 2006-07-26 babolo Версия 0.06 Странная ошибка в файле getparm.c - 3 \0 почти в конце. Использование INCS и INCH вместо DATA. В инклудах параметры у babolo_getparm() и babolo_freeparm() теперь именованные. Несколько несущественных изменений от будущего lexord. 2006-07-24 babolo Версия 0.05 Реакция на изменение babolo-libmake. 2005-11-11 babolo Исправлено одно сообщение об ошибке. Дополнен man. 2004-02-08 babolo Версия 0.04 Введено понятие комментария. Определены стандартные символы конца строки За счет некоторого расширение таблицы с автоматом убраны символы комбинированных действий. Переставлены имена состояний так, что бы аналогичные были рядом. Все варианты определения классов символов собраны в один двумерный массив. В отладку добавлена печать имени следующего состояния. Добавлена макро kukBpars_NPRM() и исправлена setBpars_NPRM() Добавлены тесты. Дополнен man. 2004-02-03 babolo Версия 0.03 Теперь можно задавать максимальное количество параметров на выходе Исправлена ошибка, когда конец строки не являлся концом слова Добавлены макро getBpars_NPRM(a) и setBpars_NPRM(a,x) Некоторое упрощение записи за счет использования babolo-libmake:0.12 Исправлена и дополнена документация 2004-01-25 babolo Версия 0.02 Написан man к библиотеке. Вместо собственных флагов для уровня болтливасти использованы стандартные флаги из babolo-libmake-0.10, совместимость со старыми флагами сохранена. Добавлена отладочная печать в freeparm. Добавлены новые режимы разбора, задаются Bpars_FIXB и Bpars_NOEN. Тестирование товых режимов и варианта без выделенного конца строки. 2003-12-01 babolo Версия 0.01 Проверена