odvijao puštanje re2c, besplatni generator leksičkog analizatora za jezike C i C++. Podsjetimo, re2c je 1993. godine napisao Peter Bambulis kao eksperimentalni generator vrlo brzih leksičkih analizatora, koji se od ostalih generatora razlikuje po brzini generiranog koda i neobično fleksibilnom korisničkom sučelju koje omogućuje jednostavnu i učinkovitu integraciju analizatora u postojeći kod. baza. Od tada je projekt razvijala zajednica i nastavlja biti platforma za eksperimente i istraživanja u području formalnih gramatika i konačnih automata.
Pripreme za izlazak trajale su gotovo cijelu godinu. Najviše vremena, kao i uvijek, utrošeno je na razvijanje teorijskog okvira i pisanje
članci "Učinkovito POSIX submatch ekstrakcija na NFA”.
Algoritmi opisani u članku implementirani su u eksperimentalnu knjižnicu libre2c
(izrada biblioteke i testovi performansi onemogućeni su prema zadanim postavkama i omogućeni su opcijom konfiguracije “—enable-libs”). Knjižnica nije zamišljena kao konkurencija postojećim projektima poput RE2, već kao istraživačka platforma za razvoj novih
algoritmi (koji se zatim mogu koristiti u re2c ili u drugim projektima). Također je pogodan sa stajališta testiranja, mjerenja performansi i stvaranja povezivanja s drugim jezicima.
Glavne inovacije u verziji re2c 1.2:
Dodana je nova pojednostavljena metoda za provjeru kraja ulaznih podataka ("EOF pravilo"). Za to je dodana konfiguracija "re2c:eof",
omogućuje odabir znaka terminala,
i posebno pravilo “$”, koje se pokreće ako lekser
uspješno došao do kraja ulaznih podataka.
Povijesno gledano, re2c nudi izbor nekoliko metoda verifikacije za
kraj inputa koji se razlikuju po ograničenjima, učinkovitosti i jednostavnosti
aplikacije. Nova metoda dizajnirana je za pojednostavljenje pisanja koda, dok
ostajući učinkoviti i široko primjenjivi. Stari načini
i dalje radi i može biti poželjan u nekim slučajevima.
Dodana je mogućnost uključivanja vanjskih datoteka pomoću direktive
"/*!include:re2c "file.re" */", gdje je "file.re" naziv datoteke koju treba uključiti. Re2c traži datoteke u direktoriju uključujući datoteke,
kao i u popisu putanja navedenih pomoću opcije “-I”.
Uključene datoteke mogu uključivati druge datoteke.
Re2c pruža "standardne" datoteke u direktoriju "include/".
projekt - očekuje se da će se tu akumulirati korisne definicije
regularni izrazi, nešto poput standardne knjižnice.
Do sada je na zahtjev radnika dodana jedna datoteka s definicijama Unicode kategorija.
Dodana mogućnost generiranja datoteka zaglavlja s proizvoljnim
sadržaj koristeći opcije "-t --type-header" (ili odgovarajuće
konfiguracije) i nove direktive "/*!header:re2c:on*/" i
"/*!header:re2c:off*/". Ovo može biti korisno u slučajevima kada
kada re2c treba generirati definicije varijabli, struktura i makronaredbi,
koristi se u drugim prijevodnim jedinicama.
Re2c sada razumije UTF8 literale i klase znakova u regularnim izrazima.
Prema zadanim postavkama, re2c analizira izraze poput "∀x ∃y" kao
niz 1-bitnih ASCII znakova “e2 88 80 78 20 e2 88 83 79”
(hex kodovi), a korisnici moraju ručno izbjeći Unicode znakove:
"\\u2200x\\u2203y". To je za mnoge vrlo nezgodno i neočekivano
korisnika (kao što svjedoče stalna izvješća o greškama). Pa sada
re2c pruža opciju "--input-encoding {ascii | utf8}",
što vam omogućuje promjenu ponašanja i raščlanjivanje “∀x ∃y” kao
"2200 78 20 2203 79."
Re2c sada dopušta upotrebu regularnih re2c blokova u načinu "-r --reuse".
Ovo je zgodno ako ulazna datoteka sadrži mnogo blokova i samo neke od njih
treba ponovno upotrijebiti.
Sada možete postaviti format upozorenja i poruka o pogrešci
koristeći novu opciju "--location-format {gnu | msvc}". Prikazuje se GNU format
kao "ime datoteke: redak: stupac:", a MSVC format kao " naziv datoteke (redak, stupac)".
Ova značajka može biti korisna za ljubitelje IDE.
Dodana je i opcija "--verbose", koja prikazuje kratku poruku o pobjedi ako je uspješna.
Način rada "kompatibilnosti" s flexom je poboljšan - neke pogreške parsiranja su ispravljene i
netočan prioritet operatora u rijetkim slučajevima.
Povijesno, opcija "-F --flex-suppor" dopuštala vam je pisanje koda
pomiješan u stilu flex i re2c stilu, što malo otežava raščlanjivanje.
Način rada Flex kompatibilnosti rijetko se koristi u novom kodu,
ali re2c ga nastavlja podržavati radi kompatibilnosti unazad.
Sada se primjenjuje operator oduzimanja klase znakova "/".
prije proširenja kodiranja, što omogućuje korištenje u većem broju slučajeva,
ako se koristi kodiranje promjenjive duljine znakova (na primjer UTF8).
Izlazna datoteka sada se stvara atomski: re2c prvo stvara privremenu datoteku
i zapisuje rezultat u nju, a zatim preimenuje privremenu datoteku u izlaz
jedna operacija.
Sa stajališta programera, re2c je dobio potpuniji podsustav
otklanjanje pogrešaka Kod za otklanjanje pogrešaka sada je onemogućen u verzijama izdanja i
može se omogućiti korištenjem konfiguracijske opcije "--enable-debug".