re2c 2.0

Noong Lunes, Hulyo 20, inilabas ang re2c, isang mabilis na lexical analyzer generator.
Pangunahing pagbabago:

  • Nagdagdag ng suporta sa wika ng Go
    (pinagana ng opsyong --lang go para sa re2c, o bilang isang hiwalay na programa ng re2go).
    Ang dokumentasyon para sa C at Go ay nabuo mula sa parehong teksto, ngunit may magkaiba
    mga halimbawa ng code. Ang code generation subsystem sa re2c ay ganap na muling idinisenyo, na
    dapat gawing mas madali ang pagsuporta sa mga bagong wika sa hinaharap.

  • Nagdagdag ng alternatibong build system para sa CMake (salamat ligfx!).
    Ang mga pagtatangka na isalin ang re2c sa CMake ay ginawa nang mahabang panahon, ngunit bago ang ligfx ay walang sinuman
    nag-aalok ng kumpletong solusyon.
    Ang lumang build system sa Autotools ay patuloy na sinusuportahan at ginagamit,
    at sa nakikinita na hinaharap ay walang mga planong talikuran ito (bahagyang upang hindi lumikha
    mga problema para sa mga developer ng pamamahagi, bahagyang dahil ang lumang build system
    mas matatag at mas maigsi kaysa sa bago).
    Ang parehong mga sistema ay patuloy na sinusubok gamit ang Travis CI.

  • Idinagdag ang kakayahang magtakda ng interface code sa mga pagsasaayos kapag gumagamit
    generic na API. Dati, karamihan sa mga API ay kailangang tukuyin sa form
    function o function macros. Ngayon ay maaari silang tukuyin sa anyo ng arbitrary
    mga linyang may pinangalanang mga parameter ng template tulad ng @@{name} o @@ lang (kung
    may isang parameter lamang at walang kalabuan). Ang istilo ng API ay tinukoy ng configuration
    re2c:api:style (ang value ng mga function ay tumutukoy sa isang functional na istilo, at ang free-form ay tumutukoy sa isang arbitrary na istilo).

  • Ang pagpapatakbo ng -c, --start-conditions na opsyon ay napabuti, na nagpapahintulot sa iyo na pagsamahin ang ilang
    magkakaugnay na mga lexer sa isang re2c block. Ngayon ay maaari mong gamitin
    regular na mga bloke kasama ang mga may kundisyon at tumukoy ng ilang hindi nauugnay na mga may kundisyon
    mga bloke sa isang file.
    Pinahusay na operasyon ng -r, --reuse na opsyon (muling paggamit ng code mula sa isang bloke
    sa iba pang mga bloke) kasama ang -c, --start-conditions at -f, --storable-state na mga opsyon
    (isang stateful lexer na maaaring maputol sa anumang punto
    at ipagpatuloy ang pagpapatupad sa ibang pagkakataon).

  • Inayos ang isang bug sa kamakailang idinagdag na end-of-input algorithm
    (EOF rule), na sa mga bihirang kaso ay humantong sa hindi tamang pagproseso
    magkakapatong na mga tuntunin.

  • Ang proseso ng bootstrap ay pinasimple. Noong nakaraan, sinubukan ng build system na dynamic na mahanap na
    isang re2c build na maaaring magamit upang muling itayo ang sarili nito.
    Nagresulta ito sa mga maling dependency (dahil ang dependency graph ay
    dynamic, na hindi gusto ng karamihan sa mga build system).
    Ngayon, para muling buuin ang mga lexer, kailangan mong tahasan
    i-configure ang build system at itakda ang RE2C_FOR_BUILD variable.

Salamat sa lahat ng nakilahok sa paghahanda ng release na ito!

Pinagmulan: linux.org.ru

Magdagdag ng komento