Bison 3.2
Bison — это генератор синтаксических анализаторов общего назначения, преобразующий аннотированную контексто-свободную граматику в детерминированный LR- или обобщённый LR (GLR)-анализатор, задействующий таблицы анализатора LALR (1). Bison также умеет генерировать таблицы IELR (1) и канонические LR (1). Овладев Bison, можно использовать его для разработки разнообразных языковых анализаторов — от применяющихся в простых настольных калькуляторах до сложных языков программирования. Bison обратно совместим с Yacc: все корректно составленные Yacc-грамматики должны работать с Bison без изменений.
В детерминистический C++-каркас, lalr1.cc, привнесены масштабные изменения. Если включена поддержка вариантов и компилятор поддерживает C++11 и выше — типы только для перемещения теперь можно использовать для семантических значений. Поддержка C++98 не объявлена устаревшей. Огромное спасибо Френку Хекенбаху за проторенный его реализацией каркаса на C++17 путь к этому выпуску.
Значимые изменения в этом выпуске:
Поддержка DJGPP, годами лишённого поддержки и тестирования, объявлена устаревшей. Если никто не гальванизирует этот труп — от него избавятся.
Также:
%printers должна использовать yyo вместо yyoutput для обозначения выходного потока.
Основаные на вариантах символы в C++ должны использовать emplace () вместо build ().
В анализаторах на C++ parser: operator () теперь является синонимом для parser: parse.
Документация:
Добавлен новый раздел «Простой пример на С++» — руководство по написанию анализаторов на С++.
В генерируемый код теперь добавляется комментарий, что пользователям не следует завязываться на недокументированные детали реализации, например, начинающиеся на YY_ макросы.
Новые возможности:
C++: поддержка семантики перемещения (lalr1.cc)
C++: неявное перемещение правых значений (lalr1.cc)
C++: неявное семантическое действие по умолчанию теперь всегда вызов.
C++: переименование location.hh.
C++: stack.hh и position.hh объявлены устаревшими.
Исправлены:
Проблемы с переносимостью на MinGW и VS2015.
Проблемы с переносимостью в тестовом наборе.
Проблемы с переносимостью и предупреждения с Flex.
>>> Домашняя страница
>>> Сжатые исходники: .tar.gz (подпись), .tar.xz (подпись)
>>> Зеркало
>>> Подробности
В детерминистический C++-каркас, lalr1.cc, привнесены масштабные изменения. Если включена поддержка вариантов и компилятор поддерживает C++11 и выше — типы только для перемещения теперь можно использовать для семантических значений. Поддержка C++98 не объявлена устаревшей. Огромное спасибо Френку Хекенбаху за проторенный его реализацией каркаса на C++17 путь к этому выпуску.
Значимые изменения в этом выпуске:
Поддержка DJGPP, годами лишённого поддержки и тестирования, объявлена устаревшей. Если никто не гальванизирует этот труп — от него избавятся.
Также:
%printers должна использовать yyo вместо yyoutput для обозначения выходного потока.
Основаные на вариантах символы в C++ должны использовать emplace () вместо build ().
В анализаторах на C++ parser: operator () теперь является синонимом для parser: parse.
Документация:
Добавлен новый раздел «Простой пример на С++» — руководство по написанию анализаторов на С++.
В генерируемый код теперь добавляется комментарий, что пользователям не следует завязываться на недокументированные детали реализации, например, начинающиеся на YY_ макросы.
Новые возможности:
C++: поддержка семантики перемещения (lalr1.cc)
C++: неявное перемещение правых значений (lalr1.cc)
C++: неявное семантическое действие по умолчанию теперь всегда вызов.
C++: переименование location.hh.
C++: stack.hh и position.hh объявлены устаревшими.
Исправлены:
Проблемы с переносимостью на MinGW и VS2015.
Проблемы с переносимостью в тестовом наборе.
Проблемы с переносимостью и предупреждения с Flex.
>>> Домашняя страница
>>> Сжатые исходники: .tar.gz (подпись), .tar.xz (подпись)
>>> Зеркало
>>> Подробности
Ещё новости по теме:
18:20