re2c 4.0

We wtorek, 19 listopada, zaprezentowano wydanie re2c – generatora analizerów leksykalnych (to także kompilator wyrażeń regularnych na kod w docelowym języku programowania). re2c specjalizuje się w generowaniu szybkich i łatwo wbudowywalnych leksykalnych analizatorów. W odróżnieniu od bardziej znanego odpowiednika flex, charakteryzuje się elastycznym interfejsem, generowaniem zoptymalizowanych leksykalnych analizatorów bez tablic oraz wsparciem dla wydobywania podstępnych dopasowań (submatch extraction) opartych na deterministycznych automatów skończonych z etykietami (TDFA). re2c jest wykorzystywane w projektach, w których kluczowa jest szybkość działania leksykalnego analizatora, na przykład w Ninja i PHP.

W wydaniu 4.0 zrewolucjonizowano subsystem generacji kodu, co umożliwiło dodanie wsparcia dla ośmiu nowych języków (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) w dodatku do już wspieranych (C/C++, Go, Rust), a także ogólnego mechanizmu dodawania nowych języków za pomocą plików konfiguracyjnych. Generator kodu odpowiada za translację już zbudowanego i zoptymalizowanego automatu skończonego na kod, co oznacza, że jego zadaniem jest wybór odpowiednich konstrukcji sterujących, typów danych, ogólnego modelu programu itp. Wcześniej cała ta logika była częścią źródłowego kodu re2c, a aby ją zmienić lub dodać nowy język, trzeba było patchować kod źródłowy i ponownie kompilować re2c. Takie patche nie były przyjmowane do głównego repozytorium bez wdrożenia standardowego zestawu przykładów i testów, co dodatkowo utrudniało cały proces. Teraz cała ta logika została przeniesiona do plików syntaktycznych – tekstowych plików konfiguracyjnych, które mogą być dostarczane przez użytkownika (domyślnie re2c używa standardowych). Kod źródłowy re2c jest całkowicie wolny od szczegółów konkretnego języka i polega tylko na pliku syntaktycznym. Użytkownik może częściowo nadpisać istniejący plik syntaktyczny lub napisać nowy od podstaw. Dla wszystkich oficjalnie wspieranych języków dostępna jest pełna dokumentacja z przykładami.

Przy okazji, sama idea plików syntaktycznych powstała dzięki jednemu komentarzowi na LORze, za co dziękujemy re2c 4.0the_coder.

W wydaniu wprowadzono wiele innych zmian mających na celu uproszczenie interfejsu użytkownika, poprawę pracy z grupami przechwytującymi (capturing groups), a także dodano środowisko online do edytowania i kompilowania przykładów: http://re2c.org/playground.

Źródło: linux.org.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster