Vrystelling van re2c lexer generator 1.2

plaasgevind vrylating re2c, 'n gratis leksikale ontledergenerator vir C en C++. Onthou dat re2c in 1993 deur Peter Bamboulis geskryf is 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 dit maklik en doeltreffend maak om ontleders in 'n bestaande kodebasis in te bed. . Sedertdien is die projek deur die gemeenskap ontwikkel en is dit steeds 'n platform vir eksperimentering en navorsing op die gebied van formele grammatika en staatsmasjiene.

Die voorbereiding van die vrystelling het byna 'n hele jaar geneem. Die meeste van die tyd is, soos altyd, bestee aan die ontwikkeling van 'n teoretiese raamwerk en skryfwerk
artikels"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 prestasietoetse is by verstek gedeaktiveer en geaktiveer met die konfigurasie-opsie "--enable-libs"). Die biblioteek is nie bedoel as 'n mededinger vir bestaande projekte soos RE2 nie, maar as 'n navorsingsplatform vir die ontwikkeling van nuwes.
algoritmes (wat dan in re2c of in ander projekte gebruik kan word). Dit is ook gerieflik in terme van toetsing, prestasiemeting en die skep van bindings aan ander tale.

Belangrikste nuwe kenmerke in re2c 1.2:

  • Het 'n nuwe vereenvoudigde manier bygevoeg om die einde van die invoerdata ("EOF-reël") na te gaan. Hiervoor is die "re2c:eof" konfigurasie bygevoeg,
    wat jou toelaat om 'n terminale karakter te kies,
    en 'n spesiale reël "$", wat geaktiveer word 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
    "/*!include:re2c "file.re" */", waar "file.re" die naam is van die lêer wat ingesluit moet word. Re2c soek lêers in die gids van die lêer wat bevat,
    sowel as in die lys van paaie gespesifiseer deur 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 behulp van die "-t --type-header" opsies (of die toepaslike
    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 die opsie "--invoer-enkodering {ascii | utf8}",
    wat jou toelaat om die gedrag te verander en "∀x ∃y" as te ontleed
    "2200 78 20 2203 79".

  • Re2c laat nou toe dat gereelde re2c-blokke in "-r --hergebruik"-modus gebruik word.
    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
    met die nuwe opsie "--location-format {gnu | msvc}". GNU-formaat 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 oor sukses druk.

  • Verbeterde "versoenbaarheid"-modus met flex - het 'n paar ontledingfoute opgelos en
    verkeerde operateurvoorrang in seldsame gevalle.
    Histories laat die "-F --flex-ondersteuning" opsie jou toe 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.

  • Karakterklas aftrekking operateur "/" word nou toegepas
    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 http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и oor maniere om te kyk vir die einde van invoerdata.
    Die nuwe dokumentasie word saamgestel as
    omvattende gids 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".

Bron: opennet.ru

Voeg 'n opmerking