re2c 1.2

V pátek 2. srpna byla vydána verze re2c, bezplatného generátoru lexikálních analyzátorů pro jazyky C a C++. Re2c byl napsán v roce 1993 Peterem Bamboulisem jako experimentální generátor velmi rychlých lexikálních analyzátorů, které se od ostatních generátorů odlišují rychlostí generovaného kódu a neobvykle flexibilním uživatelským rozhraním, které umožňuje snadné a efektivní zabudování analyzátorů do existující kódové báze. Od té doby je projekt vyvíjen komunitou a nadále je platformou pro experimenty a výzkum v oblasti formálních gramatik a konečných automatů.

Hlavní novinky ve verzi 1.2:

  • Přidán nový (zjednodušený) způsob kontroly konce vstupních dat
    (anglicky „EOF rule“).
    Za tímto účelem byla přidána konfigurace re2c:eof,
    umožňuje vybrat koncový znak,
    a speciální $ pravidlo, které se spustí, pokud lexer
    úspěšně dosáhl konce vstupních dat.
    Historicky re2c poskytuje výběr z několika ověřovacích metod
    konec vstupů se liší omezením, účinností a jednoduchostí
    aplikací. Nová metoda je navržena tak, aby zjednodušila psaní kódu
    a přitom zůstávají účinné a široce použitelné. Staré způsoby
    stále fungují a v některých případech mohou být preferovány.

  • Přidána možnost zahrnout externí soubory pomocí direktivy
    /*!include:re2c "file.re" */ kde soubor.re
    toto je název začleněného souboru. Re2c hledá soubory v adresáři včetně souborů,
    stejně jako v seznamu cest zadaných pomocí volby -I.
    Zahrnuté soubory mohou obsahovat další soubory.
    Re2c poskytuje "standardní" soubory v adresáři include/
    projekt - očekává se, že se tam budou hromadit užitečné definice
    regulární výrazy, něco jako standardní knihovna.
    Zatím byl na žádost pracovníků přidán jeden soubor s definicemi kategorií Unicode.

  • Přidána možnost generovat soubory záhlaví s libovolným
    obsahu pomocí voleb -t --type-header (nebo vhodných
    konfigurace) a nové direktivy /*!header:re2c:on*/ a
    /*!header:re2c:off*/. To může být užitečné v případech, kdy
    když re2c potřebuje generovat definice proměnných, struktur a maker,
    používané v jiných překladových jednotkách.

  • Re2c nyní rozumí literálům UTF8 a třídám znaků v regulárních výrazech.
    Ve výchozím nastavení re2c analyzuje výrazy jako "∀x ∃y" jako.
    sekvence 1bitových znaků ASCII e2 88 80 78 20 e2 88 83 79
    (hexadecimální kódy) a uživatelé musí znaky Unicode escapovat ručně:
    "u2200x u2203y". To je pro mnohé velmi nepohodlné a nečekané
    uživatelů (jak dokládají neustálé zprávy o chybách). Tak teď
    re2c poskytuje volbu --input-encoding ,
    což vám umožňuje změnit chování a analyzovat "∀x ∃y" jako
    2200 78 20 2203 79.

  • Re2c nyní umožňuje použití běžných bloků re2c v režimu -r --reuse.
    To je výhodné, pokud vstupní soubor obsahuje mnoho bloků a pouze některé z nich
    je třeba znovu použít.

  • Nyní můžete nastavit formát varování a chybových zpráv
    pomocí nové možnosti --location-format . Zobrazí se formát GNU
    jako název_souboru:řádek:sloupec: a formát MSVC jako název_souboru(řádek,sloupec).
    Tato funkce může být užitečná pro milovníky IDE.
    Byla také přidána možnost --verbose, která v případě úspěchu vytiskne krátkou zprávu o vítězství.

  • Režim "kompatibility" s flex byl vylepšen - byly opraveny některé chyby analýzy a
    ve vzácných případech nesprávná priorita operátorů.
    Historicky vám volba -F --flex-support umožňovala psát kód
    smíchané ve stylu flex a stylu re2c, což ztěžuje analýzu.
    Režim kompatibility Flex se v novém kódu používá zřídka,
    ale re2c jej nadále podporuje pro zpětnou kompatibilitu.

  • Nyní platí operátor odečítání znakové třídy /
    před rozšířením kódování, což umožňuje jeho použití ve větším počtu případů,
    pokud je použito kódování s proměnnou délkou znaků (například UTF8).

  • Výstupní soubor je nyní vytvořen atomicky: re2c nejprve vytvoří dočasný soubor
    a zapíše do něj výsledek a poté přejmenuje dočasný soubor na výstup
    jedna operace.

  • Dokumentace byla dokončena a přepsána; zejména přibyly nové
    kapitol o naplnění zásobníku
    и o způsobech kontroly konce vstupních dat.
    Nová dokumentace se shromažďuje ve formuláři
    obsáhlý jednostránkový manuál
    s příklady (stejné zdroje jsou vykresleny v manuálové stránce a v online dokumentaci).
    Byly učiněny chabé pokusy zlepšit čitelnost stránky na telefonech.

  • Z pohledu vývojářů získal re2c ucelenější subsystém
    ladění Ladicí kód je nyní zakázán ve verzích vydání a
    lze povolit pomocí konfigurační volby --enable-debug.

Toto vydání trvalo dlouho - téměř celý rok.
Většinu času, jako vždy, strávil na vývoji teoretického rámce a psaní
články „Efektivní extrakce submatch POSIX na NFA“.
Algoritmy popsané v článku jsou implementovány v experimentální knihovně libre2c
(vytváření knihovny a benchmarků je ve výchozím nastavení zakázáno a je povoleno volbou configure
--enable-libs). Knihovna není koncipována jako konkurence stávající
projekty jako RE2, ale jako výzkumná platforma pro vývoj nových
algoritmy (které pak mohou být použity v re2c nebo v jiných projektech).
Je to pohodlné i z hlediska testování, benchmarků a vytváření vazeb na jiné jazyky.

Díky vývojářům re2c všem, kteří pomohli k tomuto vydání,
a komunitě obecně za nápady, hlášení chyb, opravy, morálku atd. ;]

Zdroj: linux.org.ru

Přidat komentář