The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск генератора лексических анализаторов re2c 4.0

20.11.2024 19:36

Опубликован релиз re2c 4.0 - генератора лексических анализаторов (он же компилятор регулярных выражений в код на целевом языке программирования). Re2c специализируется на генерации быстрых и легко встраиваемых лексеров и отличается от более известного аналога Flex гибким интерфейсом, генерацией оптимизированных нетабличных лексеров и поддержкой захватов (submatch extraction) на основе детерминированных конечных автоматов с тэгами (TDFA). re2c используется в проектах, где важна скорость работы лексера, например в Ninja и в PHP.

В релизе 4.0 коренным образом переработана подсистема генерации кода, что позволило добавить поддержку восьми новых языков (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) в дополнение к уже поддерживаемым (C/C++, Go, Rust), а также реализовать общий механизм добавления новых языков через конфигурационные файлы.

Кодогенератор отвечает за трансляцию уже построенного и оптимизированного конечного автомата в код, то есть его задача - выбрать подходящие для целевого языка управляющие конструкции, типы данных, общую модель программы и т.д. Ранее вся эта логика была частью исходного кода re2c, и чтобы изменить её или добавить новый язык, приходилось патчить исходный код и пересобирать re2c. Подобные патчи не принимались в основной репозиторий без реализации стандартного набора примеров и тестов, что дополнительно усложняло весь процесс.

Теперь вся эта логика перенесена в синтаксические файлы - текстовые конфигурационные файлы, которые могут быть предоставлены пользователем (по умолчанию re2c использует стандартные). Исходный код re2c полностью свободен от деталей конкретного языка и полагается только на синтаксический файл. Пользователь может частично переопределить существующий синтаксический файл или написать новый с нуля. Для всех официально поддерживаемых языков есть полная документация с примерами.

В релиз также вошло много других изменений для упрощения пользовательского интерфейса и улучшения работы с захватывающими группами (capturing groups). Добавлена онлайн-среда для редактирования и компиляции примеров.

  1. Главная ссылка к новости (http://re2c.org/releases/relea...)
  2. OpenNews: Выпуск генератора лексических анализаторов re2c 3.0
  3. OpenNews: Выпуск генератора лексических анализаторов re2c 1.2
  4. OpenNews: Выпуск генератора лексических анализаторов re2c 2.0
Автор новости: skvadrik
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62267-re2c
Ключевые слова: re2c
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (14) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 04:24, 21/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чем он лучше Boost::Spirit?
     
     
  • 2.3, Аноним (3), 04:29, 21/11/2024 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.11, Аноним (11), 10:07, 21/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    вопрос к сообщению про то что спирит сдox в 14 году, я его использовал активно в 18-19. вполне успешно и живой он был
     
     
  • 3.13, Аноним (11), 10:20, 21/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    посмотрел что там у спирита на сайте буста. действительно не развивается давно. последняя верся .78
     
  • 2.12, skvadrik (ok), 10:18, 21/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А Boost::Spirit во время компиляции строит и оптимизирует конечный автомат?
     
     
  • 3.14, Аноним (11), 10:24, 21/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    наврятли он что-то оптимизирует. это все шаблонной магией делается. Вся формальная спецификация задается как шаблонный код, те код парсера получается через инстанцирование шаблонного кода в момент компиляции
     

  • 1.2, Аноним (3), 04:27, 21/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Сложные (по неоднозначностям) языки типа C++ - на нём можно написать?
     
     
  • 2.5, Аноним (5), 08:43, 21/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >уже поддерживаемым (C/C++, Go, Rust)
     
     
  • 3.6, Аноним (6), 09:04, 21/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    🤦‍

    Поддерживается генерация кода на этих языках, а не их разбор.

     
     
  • 4.10, Аноним (11), 10:05, 21/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.9, skvadrik (ok), 10:01, 21/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Лексический анализатор конечно можно, но судя по вопросу о неоднозначностях речь о синтаксическом разборе -- тогда нет конечно, re2c для регулярных грамматик.
     

  • 1.4, Аноним (4), 05:47, 21/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А в дознание это можно использовать?
     
     
  • 2.7, YetAnotherOnanym (ok), 09:15, 21/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Когда у Уголовно-Процессуальный кодекс внесут - можно будет.
     

  • 1.8, Бывалый Смузихлёб (ok), 09:57, 21/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как-то мало комментов, особенно на фоне новости про ФриКад, опубликованной позже но уже со срачем
    Неужто аноны не пользуются подобным ?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру