Op Vrydag, 2 Augustus, is die vrystelling van re2c, 'n gratis genereerder van leksikale ontleders vir die C- en C++-tale, vrygestel. Ter herinnering, re2c is in 1993 deur Peter Bamboulis geskryf as 'n eksperimentele genereerder van baie vinnige leksikale ontleders, wat van ander kragopwekkers onderskei word deur die spoed van die gegenereerde kode en 'n buitengewoon buigsame gebruikerskoppelvlak wat ontleders maklik en doeltreffend in 'n bestaande kodebasis. Sedertdien is die projek deur die gemeenskap ontwikkel en is dit steeds 'n platform vir eksperimente en navorsing op die gebied van formele grammatika en eindige toestand masjiene.
Belangrikste innovasies in weergawe 1.2:
Het 'n nuwe (vereenvoudigde) manier bygevoeg om na die einde van die invoerdata te kyk
(Engelse "EOF-reël").
Hiervoor is die re2c:eof-konfigurasie bygevoeg,
wat jou toelaat om 'n terminale karakter te kies,
en 'n spesiale $ reël wat brand as die lexer
het die einde van die invoerdata suksesvol bereik.
Histories bied re2c verskeie maniere om na te kyk
einde van insette wat wissel in beperktheid, doeltreffendheid en eenvoud
toepassings. Die nuwe metode is ontwerp om die skryf van kode te vereenvoudig, terwyl
terwyl dit doeltreffend en wyd toepaslik bly. ou maniere
werk steeds en kan in sommige gevalle verkies word.
Bygevoeg die vermoë om eksterne lêers in te sluit met behulp van die richtlijn
/*!sluit in:re2c "file.re" */ waar file.re
dit is die naam van die insluit-lêer. Re2c soek lêers in die insluitend lêergids,
sowel as in die lys paaie wat gespesifiseer is met die -I opsie.
Ingesluit lêers kan ander lêers insluit.
Re2c verskaf "standaard" lêers in die include/-gids
projek - daar word verwag dat bruikbare definisies daar sal ophoop
gereelde uitdrukkings, iets in die gees van die standaardbiblioteek.
Tot dusver, op versoek van die werkers, is een lêer met definisies van Unicode-kategorieë bygevoeg.
Bygevoeg die vermoë om koplêers te genereer met arbitrêre
inhoud met die -t --type-kopopsies (of toepaslik
konfigurasies) en nuwe aanwysings /*!header:re2c:on*/ en
/*!kopskrif:re2c:af*/. Dit kan nuttig wees in gevalle waar
wanneer re2c definisies vir veranderlikes, strukture en makros moet genereer,
gebruik in ander vertaaleenhede.
Re2c verstaan nou UTF8 letterlike en karakterklasse in gewone uitdrukkings.
By verstek ontleed re2c uitdrukkings soos "∀x ∃y" as.
volgorde van 1-bis ASCII karakters e2 88 80 78 20 e2 88 83 79
(hex-kodes), en gebruikers moet Unicode-karakters handmatig ontsnap:
"u2200x u2203y". Dit is baie ongerieflik en onverwags vir baie
gebruikers (soos blyk uit konstante foutverslae). So nou
re2c bied 'n --invoer-enkodering opsie ,
wat jou toelaat om die gedrag te verander en "∀x ∃y" as te ontleed
2200 78 20 2203 79.
Re2c laat nou die gebruik van gereelde re2c-blokke in -r --hergebruikmodus toe.
Dit is gerieflik as die invoerlêer baie blokke bevat, en slegs sommige van hulle
moet hergebruik word.
Nou kan jy die formaat van waarskuwings en foutboodskappe stel
gebruik die nuwe --location-formaat opsie . GNU-formaat word vertoon
as lêernaam:reël:kolom:, en die MSVC-formaat as lêernaam(reël,kolom).
Hierdie kenmerk kan handig te pas kom vir IDE-liefhebbers.
'n -- Verbose opsie is ook bygevoeg, wat 'n kort oorwinningsboodskap druk indien suksesvol.
Die "versoenbaarheid"-modus met flex is verbeter - sommige ontledingfoute is reggestel en
verkeerde operateurvoorrang in seldsame gevalle.
Histories het die -F --flex-ondersteuning opsie jou toegelaat om kode te skryf
gemeng in flex styl en re2c styl, wat dit 'n bietjie moeilik maak om te ontleed.
Flex-versoenbaarheidsmodus word selde in nuwe kode gebruik,
maar re2c gaan voort om dit te ondersteun vir terugwaartse versoenbaarheid.
Die karakterklas aftrekoperateur / is nou van toepassing
voordat u die enkodering uitpak, wat dit moontlik maak om in meer gevalle gebruik te word,
as 'n veranderlike lengte enkodering gebruik word (soos UTF8).
Die uitvoerlêer word nou atomies geskep: re2c skep eers 'n tydelike lêer
en skryf die resultaat daaraan, en hernoem dan die tydelike lêer na die uitvoer
een operasie.
Vanuit die ontwikkelaar se oogpunt het re2c 'n meer volledige substelsel
ontfouting. Ontfoutingskode is nou gedeaktiveer in vrystellingbou en
kan geaktiveer word met die konfigurasie-opsie --enable-debug.
Hierdie vrystelling het lank geneem - amper 'n hele jaar.
Die meeste van die tyd is, soos altyd, bestee aan die ontwikkeling van 'n teoretiese raamwerk en skryfwerk
Artikel "Doeltreffende POSIX Submatch-onttrekking op NFA".
Die algoritmes wat in die artikel beskryf word, word in die eksperimentele libre2c-biblioteek geïmplementeer
(die bou van die biblioteek en maatstawwe is by verstek gedeaktiveer en word geaktiveer deur die konfigurasie-opsie
--enable-libs). Die biblioteek word nie beskou as 'n mededinger van bestaande nie
projekte soos RE2, maar as 'n navorsingsplatform vir die ontwikkeling van nuwe
algoritmes (wat dan in re2c of in ander projekte gebruik kan word).
Dit is ook gerieflik vanuit die oogpunt van toetsing, maatstawwe en die skep van bindings aan ander tale.
Dankie van die re2c-ontwikkelaars aan almal wat hierdie vrystelling gehelp het,
en aan die gemeenskap in die algemeen vir idees, foutverslae, pleisters, moraal, ens. ;]