Vrystelling van re2c lexer generator 2.0

plaasgevind vrylating re2c 2.0, 'n gratis leksikale ontledergenerator vir C en C++. Die re2c-projek is oorspronklik in 1993 deur Peter Bamboulis geskep as 'n eksperimentele genereerder van baie vinnige leksikale ontleders, wat van ander kragopwekkers onderskei word deur die spoed van gegenereerde kode en 'n buitengewoon buigsame gebruikerskoppelvlak wat dit moontlik maak om ontleders maklik en doeltreffend in 'n bestaande kodebasis te integreer. . 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.

Belangrikste veranderinge:

  • Bygevoeg ondersteuning vir die Go-taal (geaktiveer Γ³f deur die "-lang go" opsie vir re2c, Γ³f as 'n aparte re2go program). Die dokumentasie vir C en Go word uit dieselfde teks gegenereer, maar met verskillende kode-voorbeelde. Die kodegenerering-substelsel in re2c is heeltemal herontwerp, wat dit makliker behoort te maak om nuwe tale in die toekoms te ondersteun.
  • Bygevoeg alternatiewe boustelsel op CMake (dankie ligfx!). Pogings om re2c na CMake te vertaal word al lank gedoen, maar voor ligfx het niemand 'n volledige oplossing gebied nie. Die ou boustelsel op Autotools word steeds ondersteun en gebruik, en daar is geen planne om dit vir die afsienbare toekoms te laat vaar nie (deels om probleme vir verspreidingsontwikkelaars te vermy, deels omdat die ou boustelsel meer stabiel en bondiger is as die nuwe een ). Beide stelsels word ewe deurlopend getoets met Travis CI.
  • Die vermoΓ« bygevoeg om koppelvlakkode in konfigurasies te spesifiseer wanneer die generiese API (generiese API) gebruik word. In die verlede moes die meeste API's in die vorm van funksies of funksiemakro's gedefinieer word. Nou kan hulle gespesifiseer word in die vorm van arbitrΓͺre stringe met benoemde sjabloonparameters van die vorm "@@{name}" of bloot "@@" (as daar net een parameter is en daar geen onduidelikheid is nie). Die API-styl word gestel deur die re2c:api:styl-konfigurasie (die funksieswaarde spesifiseer die funksionele styl, terwyl die vryvormwaarde arbitrΓͺr is).
  • Verbeterde werking van die "-c", "--start-conditions" opsie, wat dit moontlik maak om verskeie onderling gekoppelde lexers in een re2c blok te kombineer. Nou kan jy normale blokke sowel as voorwaardelike blokke gebruik en verskeie onverwante voorwaardelike blokke in een lΓͺer definieer. Verbeterde werking van "-r", "--hergebruik" (hergebruik kode van een blok in ander blokke) opsie in kombinasie met "-c", "--begin-voorwaardes" en "-f", "--stoorbare- state" opsies ('n statige lexer wat op 'n arbitrΓͺre punt onderbreek en later hervat kan word).
  • 'n Fout in die einde-van-invoerverwerkingsalgoritme (EOF-reΓ«l) wat onlangs bygevoeg is, reggestel, wat in seldsame gevalle gelei het tot verkeerde verwerking van oorvleuelende reΓ«ls.
  • Vereenvoudigde selflaaiproses. Voorheen het die boustelsel probeer om 'n reeds geboude re2c dinamies te vind wat gebruik kan word om homself te herbou. Dit het gelei tot verkeerde afhanklikhede (aangesien die afhanklikheidsgrafiek dinamies geblyk het te wees, waarvan die meeste boustelsels nie hou nie). Nou, om lexers te herbou, moet jy die boustelsel uitdruklik konfigureer en die RE2C_FOR_BUILD-veranderlike stel.

Bron: opennet.ru

Voeg 'n opmerking