Vydanie generátora lexikálneho analyzátora re2c 1.2
uskutočnilo sa uvoľnenie re2c, bezplatný generátor lexikálneho analyzátora pre jazyky C a C++. Pripomeňme, že re2c napísal v roku 1993 Peter Bambulis ako experimentálny generátor veľmi rýchlych lexikálnych analyzátorov, líšiacich sa od iných generátorov rýchlosťou generovaného kódu a nezvyčajne flexibilným užívateľským rozhraním, ktoré umožňuje analyzátory jednoducho a efektívne integrovať do existujúceho kódu. základňu. Odvtedy bol projekt vyvíjaný komunitou a naďalej je platformou pre experimenty a výskum v oblasti formálnych gramatík a konečných automatov.
Príprava na vydanie trvala takmer celý rok. Väčšinu času, ako vždy, venovali vývoju teoretického rámca a písaniu
články"Efektívna extrakcia submatch POSIX na NFA".
Algoritmy opísané v článku sú implementované v experimentálnej knižnici libre2c
(tvorba knižnice a testov výkonu sú štandardne zakázané a sú povolené konfiguračnou voľbou „—enable-libs“). Knižnica nie je určená ako konkurencia existujúcich projektov, ako je RE2, ale ako výskumná platforma pre vývoj nových.
algoritmy (ktoré potom možno použiť v re2c alebo v iných projektoch). Je to pohodlné aj z pohľadu testovania, merania výkonu a vytvárania väzieb na iné jazyky.
Hlavné inovácie vo verzii re2c 1.2:
Pridaná nová zjednodušená metóda kontroly konca vstupných údajov („pravidlo EOF“). Na tento účel bola pridaná konfigurácia „re2c:eof“,
umožňuje vybrať koncový znak,
a špeciálne pravidlo „$“, ktoré sa spustí, ak lexer
úspešne dosiahol koniec vstupných údajov.
Historicky re2c poskytuje výber z niekoľkých metód overovania
koniec vstupov sa líši v obmedzenosti, účinnosti a jednoduchosti
aplikácie. Nová metóda je navrhnutá tak, aby zjednodušila písanie kódu
pričom zostávajú účinné a široko použiteľné. Staré spôsoby
stále fungujú a v niektorých prípadoch môžu byť preferované.
Pridaná možnosť zahrnúť externé súbory pomocou direktívy
"/*!include:re2c "file.re" */", kde "file.re" je názov súboru, ktorý sa má zahrnúť. Re2c hľadá súbory v adresári vrátane súboru,
ako aj v zozname ciest špecifikovaných pomocou voľby „-I“.
Zahrnuté súbory môžu obsahovať ďalšie súbory.
Re2c poskytuje "štandardné" súbory v adresári "include/".
projekt - očakáva sa, že sa tam nahromadia užitočné definície
regulárne výrazy, niečo ako štandardná knižnica.
Zatiaľ na žiadosť pracovníkov pribudol jeden súbor s definíciami Unicode kategórií.
Pridaná možnosť vytvárať hlavičkové súbory s ľubovoľným
obsahu pomocou možností "-t --type-header" (alebo vhodných
konfigurácie) a nové smernice "/*!header:re2c:on*/" a
"/*!header:re2c:off*/". To môže byť užitočné v prípadoch, keď
keď re2c potrebuje generovať definície premenných, štruktúr a makier,
používané v iných prekladových jednotkách.
Re2c teraz rozumie literálom UTF8 a triedam znakov v regulárnych výrazoch.
V predvolenom nastavení re2c analyzuje výrazy ako "∀x ∃y" ako
sekvencia 1-bitových znakov ASCII „e2 88 80 78 20 e2 88 83 79“
(hexadecimálne kódy) a používatelia musia znaky Unicode escapovať manuálne:
"\\u2200x\\u2203y". To je pre mnohých veľmi nepohodlné a neočakávané
používateľov (čo dokazujú neustále hlásenia o chybách). Tak teraz
re2c poskytuje možnosť "--input-encoding {ascii | utf8}",
čo vám umožňuje zmeniť správanie a analyzovať „∀x ∃y“ ako
"2200 78 20 2203 79."
Re2c teraz umožňuje použitie bežných blokov re2c v režime "-r --reuse".
To je výhodné, ak vstupný súbor obsahuje veľa blokov a iba niektoré z nich
je potrebné znovu použiť.
Teraz môžete nastaviť formát varovaní a chybových hlásení
pomocou novej možnosti "--location-format {gnu | msvc}. Zobrazí sa formát GNU
ako "názov súboru:riadok:stĺpec:" a formát MSVC ako "názov súboru (riadok,stĺpec)".
Táto funkcia môže byť užitočná pre milovníkov IDE.
Bola pridaná aj možnosť „--verbose“, ktorá v prípade úspechu zobrazí krátku správu o víťazstve.
Režim „kompatibility“ s flexom bol vylepšený - boli opravené niektoré chyby analýzy a
v zriedkavých prípadoch nesprávna priorita operátora.
Historicky vám možnosť „-F --flex-support“ umožňovala písať kód
zmiešané v štýle flex a štýlu re2c, čo trochu sťažuje analýzu.
Režim kompatibility Flex sa v novom kóde používa zriedka,
ale re2c ho naďalej podporuje kvôli spätnej kompatibilite.
Teraz platí operátor odčítania triedy znakov "/".
pred rozšírením kódovania, čo umožňuje jeho použitie vo väčšom počte prípadov,
ak sa používa kódovanie s premenlivou dĺžkou znakov (napríklad UTF8).
Výstupný súbor je teraz vytvorený atomicky: re2c najskôr vytvorí dočasný súbor
a zapíše do neho výsledok a potom premenuje dočasný súbor na výstup
jedna operácia.
Z pohľadu vývojárov získal re2c úplnejší subsystém
ladenie Ladiaci kód je teraz zakázaný v zostavách vydaní a
možno povoliť pomocou možnosti konfigurácie "--enable-debug".