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.
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. ;]