E Freideg, 2. August, gouf d'Verëffentlechung vu re2c, e gratis Generator vu lexikaleschen Analysatoren fir d'C an C++ Sproochen, verëffentlecht. Als Erënnerung gouf re2c 1993 vum Peter Bamboulis geschriwwen als en experimentellen Generator vu ganz schnelle lexikaleschen Analysatoren, ënnerscheet vun aneren Generatoren duerch d'Geschwindegkeet vum generéierte Code an eng ongewéinlech flexibel User-Interface, déi et erlaabt Analysatoren einfach an effizient an eng bestehend Code Basis. Zënterhier ass de Projet vun der Gemeinschaft entwéckelt a gëtt weiderhin eng Plattform fir Experimenter a Fuerschung am Beräich vun der formeller Grammatik a finite Staatsmaschinnen.
Haaptinnovatiounen an der Versioun 1.2:
Eng nei (vereinfacht) Manéier bäigefüügt fir d'Enn vun den Inputdaten ze kontrolléieren
(Englesch "EOF Regel").
Fir dëst ass d're2c:eof Konfiguratioun bäigefüügt,
erlaabt Iech den Terminal Charakter ze wielen,
an eng speziell $ Regel datt Feier wann de lexer
erfollegräich Enn vun den Inputdaten erreecht.
Historesch stellt re2c e Choix vu verschiddene Verifizéierungsmethoden fir
Enn vun Input variéieren a Begrenzung, Effizienz an Einfachheet
Uwendungen. Déi nei Method ass entwéckelt fir Code Schreiwen ze vereinfachen, während
wärend effektiv a wäit applicabel bleift. Al Weeër
nach schaffen a kann an e puer Fäll léiwer ginn.
D'Fäegkeet bäigefüügt fir extern Dateien mat enger Direktiv opzehuelen
/*!include:re2c "file.re" */ wou file.re
dëst ass den Numm vun der abegraff Datei. Re2c sicht no Dateien am abegraff Dateiverzeichnis,
wéi och an der Lëscht vun de Weeër, déi mat der -I Optioun spezifizéiert sinn.
Abegraff Dateien kënnen aner Dateien enthalen.
Re2c bitt "Standard" Dateien am include/ Verzeichnis
Projet - et gëtt erwaart datt nëtzlech Definitiounen do accumuléieren
regelméisseg Ausdréck, eppes wéi d'Standardbibliothéik.
Bis elo, op Ufro vun den Aarbechter, ass eng Datei mat Definitioune vun Unicode Kategorien dobäigesat ginn.
D'Fäegkeet bäigefüügt fir Headerdateien mat arbiträr ze generéieren
Inhalt mat den -t --type-Header Optiounen (oder passend
Konfiguratiounen) an nei Direktiven /*!header:re2c:on*/ an
/*!header:re2c:off*/. Dëst kann nëtzlech sinn a Fäll wou
wann re2c muss Definitioune vu Variabelen, Strukturen a Makroen generéieren,
an aneren Iwwersetzungsunitéiten benotzt.
Re2c versteet elo UTF8 literals a Charakterklassen a reguläre Ausdréck.
Par défaut parséiert re2c Ausdréck wéi "∀x ∃y" als.
Sequenz vun 1-Bit ASCII Zeechen e2 88 80 78 20 e2 88 83 79
(Hexcodes), an d'Benotzer mussen Unicode Charaktere manuell entkommen:
"u2200x u2203y". Dëst ass ganz onbequem an onerwaart fir vill
Benotzer (wéi bewisen duerch konstante Feeler Berichter). Also elo
re2c bitt eng --Input-Kodéierungsoptioun ,
wat Iech erlaabt d'Verhalen z'änneren an "∀x ∃y" als ze analyséieren
2200 78 20 2203 79.
Re2c erlaabt elo d'Benotzung vu reguläre re2c Blocken am -r --reuse Modus.
Dëst ass bequem wann d'Inputdatei vill Blocks enthält an nëmmen e puer vun hinnen
muss nei benotzt ginn.
Elo kënnt Dir de Format vun Warnungen a Fehlermeldungen astellen
benotzt déi nei --Location-Format Optioun . GNU Format gëtt ugewisen
als Dateinumm: Linn: Kolonn:, an de MSVC Format als Dateinumm (Linn, Kolonn).
Dës Feature kann nëtzlech sinn fir IDE-Liebhaber.
Eng --verbose Optioun gouf och bäigefüügt, déi e kuerze Victoire Message dréckt wann et erfollegräich ass.
De "Kompatibilitéit" Modus mat Flex gouf verbessert - e puer Parsing Feeler goufen fixéiert an
falsch Bedreiwer Virrang an rare Fäll.
Historesch huet d'-F --flex-Support Optioun Iech erlaabt Code ze schreiwen
gemëscht an flex Stil an re2c Stil, déi mécht Parsing e bësse schwéier.
Flex Kompatibilitéit Modus gëtt selten am neie Code benotzt,
awer re2c ënnerstëtzen et weider fir Réckkompatibilitéit.
De Charakter Klass Subtraktioun Bedreiwer / elo gëllt
ier d'Kodéierung ausgebaut gëtt, wat et erlaabt an enger méi grousser Zuel vu Fäll ze benotzen,
wann eng variabel Zeechelängt Kodéierung benotzt gëtt (zum Beispill UTF8).
D'Ausgabdatei gëtt elo atomesch erstallt: re2c erstellt als éischt eng temporär Datei
a schreift d'Resultat an et, an ëmbenannt dann déi temporär Datei op d'Ausgab
eng Operatioun.
Aus der Siicht vun den Entwéckler huet re2c e méi komplette Subsystem kritt
Debugging Debugging Code ass elo a Verëffentlechungsbaut a
kann aktivéiert ginn mat der Konfiguratiounsoptioun --enable-debug.
Dës Verëffentlechung huet laang gedauert - bal e ganzt Joer.
Déi meescht Zäit gouf, wéi ëmmer, verbruecht fir en theoretesche Kader z'entwéckelen an ze schreiwen
Artikelen "Effizienz POSIX Submatch Extraktioun op NFA".
D'Algorithmen, déi am Artikel beschriwwe ginn, ginn an der experimenteller Bibliothéik libre2c ëmgesat
(d'Bibliothéik an d'Benchmarks bauen ass par défaut deaktivéiert an ass aktivéiert vun der Konfiguratiounsoptioun
--enable-libs). D'Bibliothéik ass net als Konkurrent fir existéierend konzipéiert
Projete wéi RE2, mä als Fuerschung Plattform fir d'Entwécklung vun neien
Algorithmen (déi dann an re2c oder an anere Projete benotzt kënne ginn).
Et ass och bequem aus der Siicht vun Testen, Benchmarks a Bindungen un aner Sproochen erstellen.
Merci vun den re2c Entwéckler un jiddereen deen dës Verëffentlechung gehollef huet geschitt,
an der Communautéit am Allgemengen fir Iddien, Käfer Berichter, Patches, Moral, etc. ;]