okazis liberigi re2c, libera vortfarada analizilo generatoro por C kaj C++ lingvoj. Memoru, ke re2c estis skribita en 1993 fare de Peter Bambulis kiel eksperimenta generatoro de tre rapidaj vortfaradanaliziloj, diferencantaj de aliaj generatoroj en la rapideco de la generita kodo kaj nekutime fleksebla uzantinterfaco kiu permesas al analiziloj esti facile kaj efike integritaj en ekzistantan kodon. bazo. Ekde tiam, la projekto estis evoluigita de la komunumo kaj daŭre estas platformo por eksperimentoj kaj esplorado en la kampo de formalaj gramatikoj kaj finhavaj ŝtatmaŝinoj.
Preparo por la liberigo daŭris preskaŭ tutan jaron. Plej ofte, kiel ĉiam, oni elspezis por disvolvi teorian kadron kaj verki
artikoloj "Efika POSIX Submatch Extraction sur NFA".
La algoritmoj priskribitaj en la artikolo estas efektivigitaj en la eksperimenta biblioteko libre2c
(Konstruado de la biblioteko kaj agado-testoj estas malebligita defaŭlte kaj estas ebligita per la agorda opcio "—enable-libs"). La biblioteko ne estas celita kiel konkuranto al ekzistantaj projektoj kiel RE2, sed kiel esplora platformo por la disvolviĝo de novaj.
algoritmoj (kiuj tiam povas esti uzataj en re2c aŭ en aliaj projektoj). Ĝi estas ankaŭ oportuna el la vidpunkto de testado, mezurado de rendimento kaj kreado de ligoj al aliaj lingvoj.
Ĉefaj novigoj en versio re2c 1.2:
Aldonis novan simpligitan metodon por kontroli la finon de enigo-datumoj ("EOF-regulo"). Por tio, la agordo "re2c:eof" estis aldonita,
permesas vin elekti la fina signo,
kaj speciala regulo “$”, kiu estas ekigita se la lekser
sukcese atingis la finon de la enigo-datumoj.
Historie, re2c disponigas elekton de pluraj konfirmmetodoj por
fino de enigaĵoj variantaj en limigo, efikeco kaj simpleco
aplikoj. La nova metodo estas desegnita por simpligi skribkodon, dum
restante efika kaj vaste aplikebla. Malnovaj manieroj
ankoraŭ funkcias kaj povas esti preferata en iuj kazoj.
Aldonita la kapablo inkluzivi eksterajn dosierojn per direktivo
"/*!include:re2c "file.re" */", kie "file.re" estas la nomo de la dosiero inkludita. Re2c serĉas dosierojn en la inkluziva dosierdosierujo,
same kiel en la listo de vojoj specifitaj uzante la opcion "-I".
Inkluditaj dosieroj povas inkluzivi aliajn dosierojn.
Re2c disponigas "normajn" dosierojn en la dosierujo "include/".
projekto — oni atendas, ke tie akumuliĝos utilaj difinoj
regulaj esprimoj, io kiel la norma biblioteko.
Ĝis nun, laŭ peto de laboristoj, unu dosiero kun difinoj de Unikodaj kategorioj estis aldonita.
Aldonita la kapablo generi kapdosierojn kun arbitra
enhavo uzante la opciojn "-t --type-header" (aŭ taŭga
agordoj) kaj novaj direktivoj "/*!header:re2c:on*/" kaj
"/*!header:re2c:off*/". Ĉi tio povas esti utila en kazoj kie
kiam re2c bezonas generi difinojn de variabloj, strukturoj kaj makrooj,
uzata en aliaj tradukunuoj.
Re2c nun komprenas UTF8-literojn kaj signajn klasojn en regulaj esprimoj.
Defaŭlte, re2c analizas esprimojn kiel "∀x ∃y" kiel
sekvenco de 1-bita Askio-signoj "e2 88 80 78 20 e2 88 83 79"
(hekskodoj), kaj uzantoj devas eviti Unikodajn signojn permane:
"\\u2200x \\u2203y." Ĉi tio estas tre maloportuna kaj neatendita por multaj
uzantoj (kiel pruvas konstantaj cimraportoj). Do nun
re2c provizas la opcion "--input-encoding {ascii | utf8}",
kiu ebligas al vi ŝanĝi la konduton kaj analizi “∀x ∃y” kiel
"2200 78 20 2203 79."
Re2c nun permesas al regulaj re2c-blokoj esti uzataj en "-r --reuse" reĝimo.
Ĉi tio estas oportuna se la eniga dosiero enhavas multajn blokojn kaj nur kelkajn el ili
devas esti reuzata.
Nun vi povas agordi la formaton de avertoj kaj erarmesaĝoj
uzante la novan opcion "--location-format {gnu | msvc}". GNU-formato estas montrata
kiel "dosiernomo:linio:kolumno:", kaj la MSVC-formato kiel "dosiernomo(linio,kolumno)".
Ĉi tiu funkcio povas esti utila por IDE-amantoj.
Ankaŭ aldoniĝis opcio "--vorta", kiu montras mallongan venkmesaĝon se sukcesa.
La "kongrueco" reĝimo kun flex estis plibonigita - kelkaj analizaj eraroj estis riparitaj kaj
malĝusta operatora precedenco en maloftaj kazoj.
Historie, la opcio "-F --flex-suppor" permesis al vi skribi kodon
miksita en flex-stilo kaj re2c-stilo, kio faras iom malfacila analizado.
Flex-kongrua reĝimo malofte estas uzata en nova kodo,
sed re2c daŭre subtenas ĝin por retrokongruo.
La signoklasa subtraho operatoro "/" nun validas
antaŭ vastigi la kodigon, kio permesas al ĝi esti uzata en pli granda nombro da kazoj,
se oni uzas kodigon de varia signolonga (ekzemple UTF8).
La eligdosiero nun estas kreita atome: re2c kreas unue provizoran dosieron
kaj skribas la rezulton en ĝi, kaj poste renomas la provizoran dosieron al la eligo
unu operacio.
El la vidpunkto de la programistoj, re2c akiris pli kompletan subsistemon
senararigado Sencimiga kodo nun estas malŝaltita en eldonkonstruaĵoj kaj
povas esti ebligita per la agorda opcio "--enable-debug".