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 обязательно


Обсуждение (7) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 04:24, 21/11/2024 [ответить]  
  • +/
    Чем он лучше Boost::Spirit?
     

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

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



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

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