re2c 2.0

W poniedziałek 20 lipca wypuszczono re2c, szybki generator analizatorów leksykalnych.
Główne zmiany:

  • Dodano obsługę języka Go
    (włączane przez opcję --lang go dla re2c lub jako oddzielny program re2go).
    Dokumentacja dla C i Go jest generowana z tego samego tekstu, ale z różnymi
    przykłady kodu. Podsystem generowania kodu w re2c został całkowicie przeprojektowany, co
    powinno ułatwić w przyszłości obsługę nowych języków.

  • Dodano alternatywny system kompilacji dla CMake (dzięki ligfx!).
    Próby przetłumaczenia re2c na CMake podejmowano już od dawna, ale przed ligfx nikt
    zaoferował kompletne rozwiązanie.
    Stary system kompilacji Autotools jest nadal obsługiwany i używany,
    i w dającej się przewidzieć przyszłości nie ma planów porzucenia go (częściowo, aby nie tworzyć
    problemy dla twórców dystrybucji, częściowo z powodu starego systemu kompilacji
    bardziej stabilny i bardziej zwięzły niż nowy).
    Obydwa systemy są stale testowane przy użyciu Travis CI.

  • Dodano możliwość ustawienia kodu interfejsu w konfiguracjach podczas używania
    ogólne API. Wcześniej większość interfejsów API trzeba było określić w formularzu
    funkcje lub makra funkcyjne. Teraz można je określić w formie dowolnej
    linie z nazwanymi parametrami szablonu, takimi jak @@{name} lub po prostu @@ (if
    jest tylko jeden parametr i nie ma dwuznaczności). Styl API jest określony przez konfigurację
    re2c:api:style (wartość funkcji określa styl funkcjonalny, a wartość dowolna określa dowolny styl).

  • Poprawiono działanie opcji -c, --start-conditions, umożliwiając łączenie kilku
    połączone ze sobą leksery w jednym bloku re2c. Teraz możesz użyć
    zwykłe bloki wraz z blokami warunkowymi i określ kilka niepowiązanych bloków warunkowych
    bloki w jednym pliku.
    Poprawione działanie opcji -r, --reuse (ponowne wykorzystanie kodu z jednego bloku
    w innych blokach) w połączeniu z opcjami -c, --start-conditions i -f, --storable-state
    (lekser stanowy, który można przerwać w dowolnym momencie
    i kontynuować wykonywanie później).

  • Naprawiono błąd w niedawno dodanym algorytmie końca wejścia
    (reguła EOF), co w rzadkich przypadkach prowadziło do nieprawidłowego przetwarzania
    nakładające się zasady.

  • Proces ładowania początkowego został uproszczony. Wcześniej system kompilacji próbował już dynamicznie znaleźć
    kompilacja re2c, którą można wykorzystać do samodzielnej odbudowy.
    Spowodowało to nieprawidłowe zależności (ponieważ wykres zależności był
    dynamiczna, której większość systemów nie lubi).
    Teraz, aby odbudować leksykony, musisz jawnie
    skonfiguruj system kompilacji i ustaw zmienną RE2C_FOR_BUILD.

Dziękujemy wszystkim, którzy wzięli udział w przygotowaniu tego wydania!

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

Dodaj komentarz