Nhar il-Ġimgħa, 2 ta' Awwissu, ħareġ ir-rilaxx ta' re2c, ġeneratur b'xejn ta' analizzaturi lessiċi għal-lingwi C u C++. Re2c inkiteb fl-1993 minn Peter Bamboulis bħala ġeneratur sperimentali ta 'analizzaturi lessikali veloċi ħafna, distinti minn ġeneraturi oħra mill-veloċità tal-kodiċi ġenerat u interface tal-utent flessibbli mhux tas-soltu li jippermetti li l-analizzaturi jiġu inkorporati faċilment u b'mod effiċjenti f'bażi ta' kodiċi eżistenti. Minn dakinhar, il-proġett ġie żviluppat mill-komunità u jkompli jkun pjattaforma għal esperimenti u riċerka fil-qasam tal-grammatika formali u magni tal-istat finit.
Innovazzjonijiet ewlenin fil-verżjoni 1.2:
Żid mod ġdid (simplifikat) biex tiċċekkja għat-tmiem tad-dejta tal-input
(Ir-regola EOF bl-Ingliż).
Għal dan, il-konfigurazzjoni re2c:eof ġiet miżjuda,
jippermettilek tagħżel il-karattru tat-terminal,
u regola $ speċjali li tispara jekk il-lexer
laħaq b'suċċess it-tmiem tad-dejta tal-input.
Storikament, re2c jipprovdi għażla ta 'diversi metodi ta' verifika għal
tmiem ta' inputs li jvarjaw fil-limitazzjoni, l-effiċjenza u s-sempliċità
applikazzjonijiet. Il-metodu l-ġdid huwa ddisinjat biex jissimplifika l-kitba tal-kodiċi, filwaqt li
filwaqt li tibqa’ effettiva u applikabbli b’mod wiesa’. Modi qodma
għadhom jaħdmu u jistgħu jkunu preferuti f'xi każijiet.
Żid il-ħila li tinkludi fajls esterni bl-użu ta 'direttiva
/*!include:re2c "file.re" */ fejn file.re
dan huwa l-isem tal-fajl tal-inklużjoni. Re2c ifittex fajls fid-direttorju tal-fajls inklużi,
kif ukoll fil-lista ta' mogħdijiet speċifikati bl-użu tal-għażla -I.
Fajls inklużi jistgħu jinkludu fajls oħra.
Re2c jipprovdi fajls "standard" fid-direttorju include/
proġett - huwa mistenni li hemm definizzjonijiet utli jakkumulaw
espressjonijiet regolari, xi ħaġa bħall-librerija standard.
S'issa, fuq talba tal-ħaddiema, ġie miżjud fajl wieħed b'definizzjonijiet ta' kategoriji Unicode.
Miżjud il-ħila li tiġġenera fajls header b'arbitrarju
kontenut li juża l-għażliet -t --type-header (jew xieraq
konfigurazzjonijiet) u direttivi ġodda /*!header:re2c:on*/ u
/*!header:re2c:off*/. Dan jista 'jkun utli f'każijiet fejn
meta re2c jeħtieġ li jiġġenera definizzjonijiet ta’ varjabbli, strutturi u makro,
użati f'unitajiet ta' traduzzjoni oħra.
Re2c issa jifhem letterali UTF8 u klassijiet ta 'karattri f'espressjonijiet regolari.
B'mod awtomatiku, re2c janalizza espressjonijiet bħal "∀x ∃y" bħala.
sekwenza ta' karattri ASCII ta' 1 bit e2 88 80 78 20 e2 88 83 79
(kodiċi hex), u l-utenti jridu jaħarbu l-karattri Unicode manwalment:
"u2200x u2203y". Dan huwa inkonvenjenti ħafna u mhux mistenni għal ħafna
utenti (kif evidenzjat minn rapporti ta 'bug kostanti). Allura issa
re2c jipprovdi għażla --input-encoding ,
li jippermettilek tibdel l-imġieba u parse "∀x ∃y" bħala
2200 78 20 2203 79.
Re2c issa jippermetti l-użu ta 'blokki re2c regolari fil-mod -r --reuse.
Dan huwa konvenjenti jekk il-fajl tal-input fih ħafna blokki u wħud minnhom biss
jeħtieġ li jerġa' jintuża.
Issa tista 'tissettja l-format ta' twissijiet u messaġġi ta 'żball
billi tuża l-għażla l-ġdida --location-format . Il-format GNU huwa muri
bħala isem tal-fajl:linja:kolonna:, u l-format MSVC bħala isem tal-fajl(linja,kolonna).
Din il-karatteristika tista 'tkun utli għal min iħobb l-IDE.
Ġiet miżjuda wkoll għażla --verbose, li tipprintja messaġġ qasir ta 'rebħa jekk tirnexxi.
Il-mod ta '"kompatibilità" mal-flex ġie mtejjeb - xi żbalji ta' parsing ġew iffissati u
preċedenza mhux korretta tal-operatur f'każijiet rari.
Storikament, l-għażla -F --flex-support ippermettiet li tikteb kodiċi
imħallat fl-istil flex u stil re2c, li jagħmel parsing ftit diffiċli.
Il-mod ta 'kompatibilità Flex rarament jintuża f'kodiċi ġdid,
iżda re2c tkompli tappoġġjaha għal kompatibilità b'lura.
L-operatur tat-tnaqqis tal-klassi tal-karattri / issa japplika
qabel tespandi l-kodifikazzjoni, li tippermetti li tintuża f'numru akbar ta 'każijiet,
jekk tintuża kodifikazzjoni ta' tul ta' karattri varjabbli (pereżempju UTF8).
Il-fajl tal-output issa huwa maħluq atomikament: re2c joħloq fajl temporanju l-ewwel
u jikteb ir-riżultat fih, u mbagħad tibdel l-isem tal-fajl temporanju għall-output
operazzjoni waħda.
Mill-aspett tal-iżviluppaturi, re2c akkwista sottosistema aktar kompleta
debugging Il-kodiċi tad-debugging issa huwa diżattivat fil-bini tar-rilaxx u
jista 'jiġi attivat billi tuża l-għażla ta' konfigurazzjoni --enable-debug.
Dan ir-rilaxx ħa ħafna żmien - kważi sena sħiħa.
Il-biċċa l-kbira tal-ħin, bħal dejjem, intefaq fuq l-iżvilupp ta’ qafas teoretiku u l-kitba
oġġetti "Estrazzjoni Effiċjenti ta' Submatch POSIX fuq NFA".
L-algoritmi deskritti fl-artikolu huma implimentati fil-librerija sperimentali libre2c
(il-bini tal-librerija u l-benchmarks huwa diżattivat awtomatikament u huwa attivat mill-għażla tal-konfigurazzjoni
--enable-libs). Il-librerija mhix maħsuba bħala kompetitur għall-eżistenti
proġetti bħal RE2, iżda bħala pjattaforma ta 'riċerka għall-iżvilupp ta' ġodda
algoritmi (li mbagħad jistgħu jintużaw f're2c jew fi proġetti oħra).
Huwa wkoll konvenjenti mil-lat ta 'ttestjar, benchmarks u ħolqien ta' rbit għal lingwi oħra.
Grazzi mill-iżviluppaturi re2c lil kull min għen din ir-rilaxx iseħħ,
u lill-komunità b'mod ġenerali għal ideat, rapporti ta 'bugs, garża, moral, eċċ. ;]