Vydání re2c lexer generator 1.2

odehrál se uvolnění re2c, bezplatný generátor lexikálního analyzátoru pro jazyky C a C++. Připomeňme, že re2c napsal v roce 1993 Peter Bambulis jako experimentální generátor velmi rychlých lexikálních analyzátorů, lišících se od ostatních generátorů rychlostí generovaného kódu a neobvykle flexibilním uživatelským rozhraním, které umožňuje snadno a efektivně integrovat analyzátory do existujícího kódu. základna. 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ů.

Příprava vydání trvala 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í POSIX Submatch Extrakce na NFA".
Algoritmy popsané v článku jsou implementovány v experimentální knihovně libre2c
(vytváření knihovny a výkonnostních testů je ve výchozím nastavení zakázáno a je povoleno konfigurační volbou „—enable-libs“). Knihovna není zamýšlena jako konkurence stávajících projektů, jako je 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í, měření výkonu a vytváření vazeb na jiné jazyky.

Hlavní inovace ve verzi re2c 1.2:

  • Přidána nová zjednodušená metoda pro kontrolu konce vstupních dat („pravidlo EOF“). 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 "file.re" je název souboru, který má být zahrnut. Re2c hledá soubory v adresáři včetně souborů,
    stejně jako v seznamu cest specifikovaný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 možnost "--input-encoding {ascii | utf8}",
    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 {gnu | msvc}. Zobrazí se formát GNU
    jako "filename:line:column:" a formát MSVC jako "filename(line,column)".
    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 zobrazí 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é
    kapitoly o http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и o způsobech kontroly konce vstupních dat.
    Nová dokumentace se shromažďuje ve formuláři
    komplexní jednostránkový průvodce
    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í možnosti konfigurace "--enable-debug".

Zdroj: opennet.ru

Přidat komentář