re2c 1.2

Noong Biyernes, Agosto 2, inilabas ang re2c, isang libreng generator ng mga lexical analyzer para sa mga wikang C at C++. Ang Re2c ay isinulat noong 1993 ni Peter Bamboulis bilang isang eksperimentong generator ng napakabilis na mga lexical analyzer, na nakikilala sa iba pang mga generator sa pamamagitan ng bilis ng nabuong code at isang hindi pangkaraniwang kakayahang umangkop na interface ng gumagamit na nagbibigay-daan sa mga analyzer na madaling at mahusay na naka-embed sa isang umiiral na base ng code. Simula noon, ang proyekto ay binuo ng komunidad at patuloy na isang plataporma para sa mga eksperimento at pananaliksik sa larangan ng mga pormal na gramatika at may hangganang makina ng estado.

Mga pangunahing inobasyon sa bersyon 1.2:

  • Nagdagdag ng bagong (pinasimple) na paraan upang suriin ang dulo ng data ng pag-input
    (Ingles na β€œEOF rule”).
    Para dito, idinagdag ang re2c:eof configuration,
    nagpapahintulot sa iyo na piliin ang terminal na character,
    at isang espesyal na $ tuntunin na magpapaputok kung ang lexer
    matagumpay na naabot ang dulo ng input data.
    Sa kasaysayan, ang re2c ay nagbibigay ng pagpipilian ng ilang paraan ng pag-verify para sa
    pagtatapos ng mga input na nag-iiba sa limitasyon, kahusayan at pagiging simple
    mga aplikasyon. Ang bagong paraan ay idinisenyo upang gawing simple ang pagsulat ng code, habang
    habang nananatiling epektibo at malawak na naaangkop. Lumang paraan
    gumagana pa rin at maaaring mas gusto sa ilang mga kaso.

  • Idinagdag ang kakayahang magsama ng mga panlabas na file gamit ang isang direktiba
    /*!include:re2c "file.re" */ kung saan ang file.re
    ito ang pangalan ng kasamang file. Ang Re2c ay naghahanap ng mga file sa kasamang direktoryo ng file,
    pati na rin sa listahan ng mga landas na tinukoy gamit ang -I na opsyon.
    Maaaring may kasamang mga file ang mga kasamang file.
    Nagbibigay ang Re2c ng "standard" na mga file sa include/ directory
    proyekto - inaasahan na ang mga kapaki-pakinabang na kahulugan ay maipon doon
    mga regular na expression, tulad ng karaniwang library.
    Sa ngayon, sa kahilingan ng mga manggagawa, isang file na may mga kahulugan ng mga kategorya ng Unicode ang naidagdag.

  • Idinagdag ang kakayahang bumuo ng mga file ng header na may arbitrary
    nilalaman gamit ang -t --type-header na mga opsyon (o naaangkop
    configuration) at mga bagong direktiba /*!header:re2c:on*/ at
    /*!header:re2c:off*/. Ito ay maaaring maging kapaki-pakinabang sa mga kaso kung saan
    kapag ang re2c ay kailangang bumuo ng mga kahulugan ng mga variable, istruktura at macro,
    ginagamit sa ibang mga yunit ng pagsasalin.

  • Naiintindihan na ngayon ng Re2c ang mga literal na UTF8 at mga klase ng character sa mga regular na expression.
    Bilang default, pina-parse ng re2c ang mga expression tulad ng "βˆ€x βˆƒy" bilang.
    pagkakasunud-sunod ng 1-bit ASCII character e2 88 80 78 20 e2 88 83 79
    (mga hex code), at ang mga user ay kailangang makatakas nang manu-mano sa mga Unicode character:
    "u2200x u2203y". Ito ay napaka-inconvenient at hindi inaasahan para sa marami
    mga user (tulad ng pinatunayan ng patuloy na mga ulat ng bug). At ngayon
    Nagbibigay ang re2c ng isang --input-encoding na opsyon ,
    na nagpapahintulot sa iyo na baguhin ang pag-uugali at i-parse ang "βˆ€x βˆƒy" bilang
    2200 78 20 2203 79.

  • Pinapayagan na ngayon ng Re2c ang paggamit ng mga regular na bloke ng re2c sa -r --reuse mode.
    Ito ay maginhawa kung ang input file ay naglalaman ng maraming mga bloke at ilan lamang sa mga ito
    kailangang gamitin muli.

  • Maaari mo na ngayong itakda ang format ng mga babala at mensahe ng error
    gamit ang bagong --location-format na opsyon . Ang GNU format ay ipinapakita
    bilang filename:line:column:, at ang MSVC format bilang filename(line,column).
    Maaaring maging kapaki-pakinabang ang feature na ito para sa mga mahilig sa IDE.
    Ang isang --verbose na opsyon ay naidagdag din, na nagpi-print ng maikling mensahe ng tagumpay kung matagumpay.

  • Ang "compatibility" mode na may flex ay napabuti - ilang mga error sa pag-parse ay naayos at
    hindi tamang operator precedence sa mga bihirang kaso.
    Sa kasaysayan, pinapayagan ka ng -F --flex-support na opsyon na magsulat ng code
    halo-halong may flex style at re2c style, na nagpapahirap sa pag-parse.
    Ang Flex compatibility mode ay bihirang ginagamit sa bagong code,
    ngunit patuloy itong sinusuportahan ng re2c para sa pabalik na pagkakatugma.

  • Ang operator ng pagbabawas ng klase ng character / ay nalalapat na ngayon
    bago palawakin ang pag-encode, na nagpapahintulot na magamit ito sa mas malaking bilang ng mga kaso,
    kung ginagamit ang isang variable na haba ng character na encoding (halimbawa UTF8).

  • Ang output file ay nilikha na ngayon nang atomically: ang re2c ay lumilikha muna ng pansamantalang file
    at isinusulat ang resulta dito, at pagkatapos ay pinapalitan ang pangalan ng pansamantalang file sa output
    isang operasyon.

  • Ang dokumentasyon ay nakumpleto at muling isinulat; sa partikular, ang mga bago ay idinagdag
    mga kabanata tungkol sa pagpuno ng buffer
    ΠΈ tungkol sa mga paraan upang suriin ang pagtatapos ng data ng pag-input.
    Ang bagong dokumentasyon ay kinokolekta sa form
    isang komprehensibong isang pahinang manwal
    na may mga halimbawa (ang parehong mga mapagkukunan ay nai-render sa manpage at sa online na dokumentasyon).
    Ang mga hindi magandang pagtatangka ay ginawa upang mapabuti ang pagiging madaling mabasa ng site sa mga telepono.

  • Mula sa pananaw ng mga developer, nakakuha ang re2c ng mas kumpletong subsystem
    pag-debug Naka-disable na ngayon ang debugging code sa mga release build at
    maaaring paganahin gamit ang opsyon sa pag-configure --enable-debug.

Ang paglabas na ito ay tumagal ng mahabang panahon - halos isang buong taon.
Karamihan sa mga oras, gaya ng dati, ay ginugol sa pagbuo ng isang teoretikal na balangkas at pagsulat
Artikulo "Mahusay na POSIX Submatch Extraction sa NFA".
Ang mga algorithm na inilarawan sa artikulo ay ipinatupad sa eksperimental na library libre2c
(Ang pagbuo ng library at mga benchmark ay hindi pinagana bilang default at pinagana ng opsyon sa pag-configure
--enable-libs). Ang aklatan ay hindi naisip bilang isang katunggali sa umiiral na
mga proyekto tulad ng RE2, ngunit bilang isang platform ng pananaliksik para sa pagbuo ng bago
mga algorithm (na maaaring magamit sa re2c o sa iba pang mga proyekto).
Maginhawa rin ito mula sa punto ng view ng pagsubok, mga benchmark at paglikha ng mga binding sa iba pang mga wika.

Salamat mula sa mga developer ng re2c sa lahat ng tumulong na mangyari ang release na ito,
at sa komunidad sa pangkalahatan para sa mga ideya, ulat ng bug, patch, moral, atbp. ;]

Pinagmulan: linux.org.ru

Magdagdag ng komento