re2c 1.2

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.

  • Dokumentasie is bygevoeg en herskryf; veral nuut
    hoofstukke oor die vul van die buffer
    и oor maniere om te kyk vir die einde van invoerdata.
    Die nuwe dokumentasie word saamgestel as
    'n omvattende handleiding van een bladsy
    met voorbeelde (dieselfde bronne word in die manblad en in die aanlyn dokumentasie weergegee).
    Min pogings is aangewend om die leesbaarheid van die webwerf op fone te verbeter.

  • 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. ;]

Bron: linux.org.ru

Voeg 'n opmerking