Vydanie generátora lexikálnych analyzátorov re2c 1.2

Sa uskutočnilo uvoľnenie re2c, slobodného generátora lexikálnych analyzátorov pre jazyky C a C++. Pripomeňme, že re2c bol napísaný v roku 1993 Petrom Bambulisom ako experimentálny generátor veľmi rýchlych lexikálnych analyzátorov, odlišujúci sa od ostatných generátorov rýchlosťou vygenerovaného kódu a nezvyčajne flexibilným používateľským rozhraním, ktoré umožňuje ľahko a efektívne integrovať analyzátory do existujúcej kódovej základne. Odvtedy projekt pokračuje vo vývoji prostredníctvom komunity a naďalej zostáva miestom pre experimenty a výskum v oblasti formálnych gramatík a konečných automatov.

Príprava vydania trvala takmer celý rok. Väčšina času, ako vždy, bola vynaložená na vývoj teoretického základu a písanie
článku „Efficient POSIX Submatch Extraction on NFA«.
Algoritmy opísané v článku sú implementované v experimentálnej knižnici libre2c
(kompilácia knižnice a testy výkonu sú predvolene vypnuté a aktivujú sa pomocou konfiguračnej voľby „—enable-libs“). Knižnica nie je navrhnutá ako konkurent už existujúcim projektom, ako je RE2, ale ako výskumná platforma na vývoj nových
algoritmov (ktoré sa potom môžu používať v re2c alebo v iných projektoch). Tiež je to praktické z hľadiska testovania, merania výkonu a vytvárania väzieb na iné jazyky.

Hlavné novinky vo verzii re2c 1.2:

  • Pridaný nový zjednodušený spôsob kontroly konca vstupných údajov („EOF rule“). Na tento účel bola pridaná konfigurácia „re2c:eof“,
    umožňujúca vybrať terminálny symbol,
    a špeciálne pravidlo „$“, ktoré sa aktivuje, ak lexer
    úspešne dosiahol koniec vstupných údajov.
    Historicky re2c poskytuje na výber niekoľko spôsobov kontroly na
    koniec vstupných údajov, líšiacich sa obmedzenosťou, efektívnosťou a jednoduchosťou
    uplatnenia. Nový spôsob má za cieľ zjednodušiť písanie kódu, pričom
    zostáva efektívny a široko použiteľný. Staré spôsoby
    naďalej fungujú a môžu byť preferované v určitých prípadoch.
  • Pridaná možnosť zahrnutia externých súborov pomocou direktívy
    „/*!include:re2c „file.re“ */“, kde „file.re“ je názov zahrnovaného súboru. Re2c hľadá súbory v adresári zahrňujúceho súboru,
    ako aj v zozname ciest určených pomocou voľby „-I“.
    Zahrnuté súbory môžu zahrňovať ďalšie súbory.
    Re2c poskytuje „štandardné“ súbory v adresári „include/“
    projektu — predpokladá sa, že tam budú zhromaždené užitočné definície
    regulárnych výrazov, niečo ako štandardná knižnica.
    Doteraz bol na požiadanie pridaný súbor s definíciami kategórií Unicode.
  • Pridaná možnosť generovať hlavičkové súbory s ľubovoľným
    obsahom pomocou volieb „-t —type-header“ (alebo súvisiacich
    konfigurácií) a nových direktív „/*!header:re2c:on*/“ a
    „/*!header:re2c:off*/“. To môže byť užitočné v prípadoch,
    kedy re2c musí vygenerovať definície premenných, štruktúr a makier,
    ktoré sa používajú v iných prekladoch.
  • Re2c teraz rozumie UTF8-literalom a triedam znakov v regulárnych výrazoch.
    Predvolene re2c spracováva výrazy ako „∀x ∃y“ ako
    sekvenciu 1-bitových ASCII znakov „e2 88 80 78 20 e2 88 83 79“
    (hex-kódy), a používateľom sa musí ručne escapovať Unicode znaky:
    „\\u2200x \\u2203y“. To je veľmi nepríjemné a nečakané pre mnohých
    používateľov (o čom svedčia stále sa objavujúce bug reporty). Preto teraz
    re2c poskytuje voľbu „—input-encoding {ascii | utf8}“,
    ktorá umožňuje zmeniť správanie a spracovať „∀x ∃y“ ako
    „2200 78 20 2203 79“.
  • Re2c teraz umožňuje používať bežné re2c bloky v režime „-r —reuse“.
    Je to pohodlné, ak vstupný súbor obsahuje veľa blokov a len niektoré z nich
    potrebujú opätovné použitie.
  • Objavila sa možnosť nastavovať formát varovaní a chybových hlásení
    s pomocou novej voľby „—location-format {gnu | msvc}“. GNU formát je zobrazený
    ako „filename:line:column:“, a MSVC formát — ako „filename(line,column)“.
    Táto možnosť môže byť užitočná pre milovníkov IDE.
    Tiež bola pridaná voľba „—verbose“, ktorá zobrazuje stručnú víťaznú správu v prípade úspechu.
  • Vylepšený režim „kompatibility“ s flex — opravené niektoré chyby rozpoznávania a
    nesprávny priority operátorov v zriedkavých prípadoch.
    Historicky voľba „-F —flex-support“ umožňuje písať kód
    v zmiešanom štýle flex a re2c, čo sťažuje syntaktické spracovanie.
    Režim kompatibility s flex sa zriedka používa v novom kóde,
    ale re2c ho naďalej podporuje pre spätnú kompatibilitu.
  • Operátor odčítania tried znakov „/“ sa teraz aplikuje
    pred spustením kódovania, čo umožňuje jeho použitie v väčšom počte prípadov,
    ak je použitá kódovanie s premennou dĺžkou znaku (napríklad UTF8).
  • Výstupný súbor sa teraz vytvára atomárne: re2c najprv vytvorí dočasný súbor
    a zapisuje do neho výsledok, a potom premenúva dočasný súbor na výstupný
    jednou operáciou.
  • Dokumentácia bola dopísaná a prepracovaná; najmä boli pridané nové
    kapitoly o http://re2c.org/manual/manual.html#buffer-refilling dopĺňaní vyrovnávacej pamäte
    a o spôsoboch kontroly konca vstupných údajov.
    Nová dokumentácia je zhromaždená vo forme
    komplexného jednolistového sprievodcu
    s príkladmi (rovnaké zdrojové súbory sa vykresľujú v manpage a v online dokumentácii).
    Boli podniknuté slabé pokusy o zlepšenie čitateľnosti webu na telefónoch.
  • Z pohľadu vývojárov re2c získal lepšiu podpornú subsystémy
    debugovania. Ladicí kód je teraz vypnutý v produkčných zostavách a
    môže byť zapnutý pomocou možnosti configure „—enable-debug“.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster