LINUX.ORG.RU

Bison


4

0

Всего сообщений: 4

yacc (pre-bison) парсер в bash-скрипт. Реализация jq на bash

Группа Open Source

Иногда возникает проблема написать небольшой умный скрипт, понимающий некую встроенную грамматику, то есть с миниязыком внутрях. Изначально я написал минимальную реализацию jq на bash. Но чем больше добавлялось туда «умности», тем труднее приходилось реализовывать рекурсивный разбор подвыражений. Это так надоело, что сподвигло написать вначале компилятор LARL(1) yacc (pre-bison) для генерации bash-скрипта, а потом как по маслу получился весьма похожий на оригинал и хороший проверочный код для yacc_bash.c мини-jq на bash.

Статья полностью:

>>> Подробности

 , ,

vodz
()

Bison 3.2

Группа GNU's Not Unix

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 путь к этому выпуску.

Значимые изменения в этом выпуске:

Домашняя страница

Сжатые исходники: .tar.gz (подпись), .tar.xz (подпись)

Зеркало

>>> Подробности

 , , , ,

bodqhrohro_promo
()

Вышел Bison 2.7

Группа Open Source

Представлен новый релиз генератора грамматического разбора Bison 2.7. Bison поддерживает следующие языки программирования: C, C++ и Java. В релиз вошли следующие изменения:

  • Исправления ошибок:
    • исправлено предупреждение о неинициализированной переменной yylloc;
    • восстановлена совместимость с C90.
  • В генераторе представления парсера в виде графа улучшено отображение состояний — они теперь имеют прямоугольную форму, четко виден номер состояния, пункты списка пронумерованы и выровнены. Редукции изображены как переходы к ромбовидным узлам графа.
  • Улучшены возможности форматирования сообщений об ошибках, в частности поддерживается указание на место ошибки в строке с помощью символов «^^^^».
  • Улучшена поддержка «чистых» (реентерабельных) парсеров.
  • Добавлена возможность использования пользовательских типов местоположения (с помощью переменной api.location.type).
  • В парсере larl1.cc добавлен код, обрабатывающий исключения.
  • Поддержка %language больше не является экспериментальной.
  • Улучшена документация.

>>> Подробности

 ,

provaton
()

Создание анализаторов текста при помощи yacc и lex

Группа Документация

В этой статье на примере создания простого калькулятора показано, как создать анализатор при помощи инструментов lex/flex и yacc/bison, а затем более подробно рассмотрено, как применить эти принципы к синтаксическому разбору текста. Синтаксический разбор текста - анализ и извлечение ключевых частей текста - важная часть многих приложений. В UNIX® многие элементы операционной системы зависят от синтаксического анализа текста: оболочка, которая используется для взаимодействия с системой, распространенные утилиты и команды типа awk или Perl, вплоть до компилятора Си, используемого для разработки приложений. Анализаторы собственной разработки можно использовать в UNIX-программах (и не только UNIX) для создания простых анализаторов конфигурации или даже для создания своего собственного языка программирования.

>>> Подробности

 , , , ,

IBM_dW
()