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 Проверена