naganap pakawalan re2c, isang libreng lexical analyzer generator para sa C at C++ na mga wika. Alalahanin na ang re2c ay isinulat noong 1993 ni Peter Bambulis bilang isang eksperimentong generator ng napakabilis na mga lexical analyzer, na naiiba sa iba pang mga generator sa bilis ng nabuong code at isang hindi pangkaraniwang kakayahang umangkop na user interface na nagpapahintulot sa mga analyzer na maging madali at mahusay na maisama sa isang umiiral na code base. 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.
Halos isang buong taon ang paghahanda para sa pagpapalaya. Karamihan sa mga oras, gaya ng dati, ay ginugol sa pagbuo ng isang teoretikal na balangkas at pagsulat
mga 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 pagsubok sa pagganap ay hindi pinagana bilang default at pinagana ng opsyon sa pag-configure na "βenable-libs"). Ang aklatan ay hindi inilaan bilang isang katunggali sa mga kasalukuyang proyekto tulad ng RE2, ngunit bilang isang platform ng pananaliksik para sa pagbuo ng mga bago.
mga algorithm (na maaaring magamit sa re2c o sa iba pang mga proyekto). Maginhawa rin ito mula sa punto ng view ng pagsubok, pagsukat ng pagganap at paglikha ng mga binding sa iba pang mga wika.
Mga pangunahing inobasyon sa bersyon re2c 1.2:
Nagdagdag ng bagong pinasimpleng paraan para sa pagsuri sa dulo ng input data (βEOF ruleβ). Para dito, idinagdag ang configuration na "re2c:eof",
nagpapahintulot sa iyo na piliin ang terminal na character,
at isang espesyal na panuntunang "$", na nati-trigger 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" ay ang pangalan ng file na isasama. Ang Re2c ay naghahanap ng mga file sa kasamang direktoryo ng file,
pati na rin sa listahan ng mga landas na tinukoy gamit ang opsyong "-I".
Maaaring may kasamang mga file ang mga kasamang file.
Nagbibigay ang Re2c ng "standard" na mga file sa "include/" na direktoryo
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 mga opsyon na "-t --type-header" (o naaangkop
configuration) at mga bagong direktiba na "/*!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 mga 1-bit na ASCII na 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
Ang re2c ay nagbibigay ng opsyong "--input-encoding {ascii | utf8}",
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 mga regular na bloke ng re2c na magamit sa mode na "-r --reuse".
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 opsyon na "--location-format {gnu | msvc}". 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.
Nagdagdag din ng "--verbose" na opsyon, na nagpapakita 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 opsyong "-F --flex-suppor" 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.
Nalalapat na ngayon ang operator ng pagbabawas ng klase ng character na "/".
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.
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 na "--enable-debug".