lëshimi , një gjenerator i lirë i analizatorëve leksik për gjuhët C dhe C++. Kujtojmë se re2c u shkrua në vitin 1993 nga Peter Bambulis si një gjenerator eksperimental i analizatorëve leksik shumë të shpejtë, i ndryshëm nga gjeneratorët e tjerë në shpejtësinë e kodit të gjeneruar dhe një ndërfaqe përdoruesi jashtëzakonisht fleksibël, e cila lejon integrimin e lehtë dhe efikas të analizatorëve në bazën e kodit ekzistuese. Që atëherë, projekti është zhvilluar nga komuniteti dhe vazhdon të mbetet një platformë për eksperimente dhe kërkime në fushën e gramatikave formale dhe automatikave të fundme.
Përgatitja e lëshimit zgjati pothuajse një vit të tërë. Një pjesë e madhe e kohës, si gjithmonë, u shpenzua për zhvillimin e bazës teorike dhe shkruan
artikulli â«.
Algoritmet e përshkruar në artikull janë realizuar në bibliotekën eksperimentale libre2c
(kompilimi i bibliotekës dhe testet e performancës janë të çaktivizuara nga default dhe aktivizohen me opsionin e konfigurimit «--enable-libs»). Biblioteka është krijuar jo si një konkurent i projekteve ekzistuese, si RE2, por si një platformë kërkimore për zhvillimin e algoritmeve të reja.
Këto algoritme (të cilat mund të përdoren më pas në re2c ose në projekte të tjera). Gjithashtu, është e përshtatshme për testimin, matjen e performancës dhe krijimin e lidhjeve me gjuhë të tjera.
Risi kryesore në versionin re2c 1.2:
- Shtuar një mënyrë të ri të thjeshtuar për të kontrolluar fundin e të dhënave të hyrjes («EOF rule»). Për këtë është shtuar konfigurimi «re2c:eof»,
duke lejuar zgjedhjen e simbolit terminal,
dhe një rregull të veçantë «$», i cili aktivizohet nëse leksiku
arrin me sukses fundin e të dhënave të hyrjes.
Historikisht, re2c ofron disa mënyra për të kontrolluar
fundin e të dhënave të hyrjes, që variojnë në shkallë, efikasitet dhe thjeshtësi
në aplikimin e tyre. Mënyra e re synon të thjeshtësojë shkruan e kodit, ndërkohë
që të mbetet efikase dhe e përdorshme gjerësisht. Mënyrat e vjetra
ende funksionojnë dhe mund të jenë të preferuara në raste të veçanta. - Shtuar mundësinë e përfshirjes së skedarëve të jashtëm me anë të direktivës
«/*!include:re2c «file.re» */», ku «file.re» është emri i skedarit të përfshirë. Re2c kërkon skedarët në direktorinë e skedarit përfshirës,
ashtu si në listën e rrugëve të caktuara me anë të opsionit «-I».
Skedarët e përfshirë mund të përfshijnë skedarë të tjerë.
Re2c ofron skedarë «standard» në direktorinë «include/»
tĂ« projektit â supozohet se aty do tĂ« akumulohen definita tĂ« dobishme
të shprehjeve të rregullta, diçka si biblioteka standarde.
Derisa, për kërkesat e përdoruesve, është shtuar një skedar me definita të kategorive Unicode. - Shtuar mundësinë për të gjeneruar skedarë titujsh me përmbajtje të rastësishme
me anĂ« tĂ« opsioneve «-t âtype-header» (ose konfigurimeve pĂ«rkatĂ«se) dhe direktivave tĂ« reja «/*!header:re2c:on*/» dhe
«/*!header:re2c:off*/». Kjo mund të jetë e dobishme në rastet kur
«/*!header:re2c:off*/». Kjo mund të jetë e dobishme në raste,
re2c duhet të gjenerojë definita për variabla, struktura dhe makros që
përdoren në njësi të tjera të përkthimit. - Re2c tani kupton UTF8-literalët dhe klasat e simboleve në shprehjet e rregullta.
Me pĂ«rjashtim, re2c analizon shprehjet si «âx ây» si
një sekuencë të simboleve ASCII 1-bit «e2 88 80 78 20 e2 88 83 79»
(kodet hex), dhe përdoruesit janë të detyruar të mbulojnë simbolet Unicode manualisht:
«\\u2200x \\u2203y». Kjo është shumë inconvenient dhe e papritur për shumë
përdorues (siç dëshmojnë raportet e vazhdueshme për gabime). Prandaj tani
re2c ofron opsionin «âinput-encoding {ascii | utf8}»,
i cili lejon tĂ« ndryshoni sjelljen dhe tĂ« analizoni «âx ây» si
«2200 78 20 2203 79». - Re2c tani lejon tĂ« pĂ«rdoren blloqet e zakonshme re2c nĂ« modalitetin «-r âreuse».
Kjo është e dobishme nëse skedari i hyrjes përmban shumë blloqe, dhe vetëm një pjesë e tyre
ka nevojë për ripërdorim. - Tanime është e mundur të caktoni formatin e paralajmërimeve dhe mesazheve të gabimeve
pĂ«rmes opsionit tĂ« ri «âlocation-format {gnu | msvc}». Formati GNU shfaqet
si «filename:line:column:», ndĂ«rsa formati MSVC â si «filename(line,column)».
Ky opsion mund të jetë i dobishëm për adhuruesit e IDE.
Gjithashtu Ă«shtĂ« shtuar opsioni «âverbose», i cili jep njĂ« mesazh tĂ« shkurtĂ«r suksesit nĂ« rast tĂ« suksesit. - Modaliteti i «kompatibilitetit» me flex Ă«shtĂ« pĂ«rmirĂ«suar â disa gabime tĂ« analizĂ«s dhe
prioriteti i gabuar i operatorëve në raste të rralla janë rregulluar.
Historikisht opsioni «-F âflex-suppor» lejon tĂ« shkruani kod
e kombinuar në stilin flex dhe në stilin re2c, e cila disi e komplikon analizën sintaksore.
Mjeti i kompatibilitetit me flex përdoret rrallë në kodin e ri,
por re2c e vazhdon ta mbështesë atë për të siguruar kompatibilitet mbrapsht. - Operatori i zbritjes së klasave simbolike "/" tani aplikohet
deri në shpalosjen e kodimit, duke lejuar që të përdoret në më shumë raste,
nëse përdoret kodimi me gjatësi variabël simboli (p.sh., UTF8). - Skedari dalës tani krijohet në mënyrë atomike: re2c fillimisht krijon një skedar përkohësisht
dhe shkruan rezultatin në të, pastaj rinominon skedarin përkohësisht në skedarin dalës
me një operacion. - Dokumentacioni është shkruar dhe rishkruar; veçanërisht, janë shtuar kapituj të rinj
për
dhe .
Dokumentacioni i ri është mbledhur në një formë
me shembuj (të njëjtat burime fillestare paraqiten në manpage dhe në dokumentacionin online).
Janë bërë përpjekje të dobëta për të përmirësuar lexueshmërinë e faqes në celular. - Nga pikëpamja e zhvilluesve, re2c ka fituar një nënsistem më të plotë.
debugimit. Koodi i debugimit tani është i çaktivizuar në ndërtimet e lëshimit dhe
mund tĂ« aktivizohet me opsionin configure «âenable-debug».
Burimi: opennet.ru
