Në të premten, më 2 gusht, doli në treg re2c - një gjenerues 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ë gjenerues eksperimental i analizatorëve leksikë shumë të shpejtë, i cili dallohet nga gjenerimi i kodit me shpejtësi dhe ndërfaqja e tij e pazakontë përdoruese, që lejon integrimin e analizatorëve lehtësisht dhe në mënyrë efektive në një bazë kodimi ekzistuese. Që atëherë, projekti është zhvilluar nga komuniteti dhe vazhdon të mbetet një platformë për eksperimente dhe hulumtime në fushën e gramatikave formale dhe automatëve të përfunduar.
Risi në versionin 1.2:
Shtuar një mënyrë të re (të thjeshtuar) për të kontrolluar fundin e të dhënave të hyrjes
(në anglisht «EOF rule»).
Për këtë është shtuar konfigurimi re2c:eof,
i cili lejon përzgjedhjen e simbolit terminal,
dhe një rregull të veçantë $, i cili aktivizohet kur leksiku
arrin me sukses fundin e të dhënave hyrëse.
Historikisht, re2c ofron disa mënyra për të kontrolluar
fundin e të dhënave hyrëse, të cilat ndryshojnë sipas kufizimeve, efikasitetit dhe thjeshtësisë
së aplikimit. Mënyra e re synon të thjeshtojë kodin, duke mbetur gjithashtu efikase dhe shumë e aplikueshme. Mënyrat e vjetra
ende funksionojnë dhe mund të jenë të preferueshme në raste të veçanta.
është shtuar mundësia e përfshirjes së skedarëve të jashtëm përmes 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 të përfshirë,
/*!include:re2c "file.re" */, гЎД file.re
është emri i skedarit të përfshirë. Re2c kërkon skedarë në direktorët e skedarit të përfshirë,
si dhe 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ët «standard» në direktorinë include/
projekti â supozohet se aty do tĂ« grumbullohen definicione tĂ« dobishme
të shprehjeve të rregullta, diçka në stilin e bibliotekës standarde.
Derimë tani, sipas kërkesave të përdoruesve, është shtuar një skedar me definicione të kategorive Unicode.Shtuar mundësia për të gjeneruar skedarë titujsh me përmbajtje arbitrare
me pĂ«rmbajtje nĂ«pĂ«rmjet opsioneve -t âtype-header (ose konfigurimeve pĂ«rkatĂ«se)
dhe direktivave të reja /*!header:re2c:on*/ dhe
/*!header:re2c:off*/. ĐŃĐŸ ĐŒĐŸĐ¶Đ”Ń Đ±ŃŃŃ ĐżĐŸĐ»Đ”Đ·ĐœĐŸ ĐČ ŃĐ»ŃŃаŃŃ ,
re2c duhet të gjenerojë definicione të variablave, strukturave dhe makrove
që përdoren në njësi të tjera përkthimi.Re2c tani kupton literale UTF8 dhe klasa simbole në shprehje të rregullta.
NĂ« mĂ«nyrĂ« tĂ« parazgjedhur, re2c analizojnĂ« shprehjet si "âx ây" si.
një varg të simboleve ASCII 1-bitësh e2 88 80 78 20 e2 88 83 79
(kode hex), dhe përdoruesit detyrohen të ekranojnë simbolet Unicode manualisht:
"u2200x u2203y". Kjo është shumë e paqartë dhe befasuese për shumicën
përdorues (siç dëshmojnë raportet e vazhdueshme për gabime). Prandaj tani
re2c ofron opsionin âinput-encoding ,
i cili lejon ndryshimin e sjelljes dhe analizimin e "âx ây" si
2200 78 20 2203 79.Re2c tani lejon pĂ«rdorimin e blloqeve normale re2c nĂ« modin -r âreuse.
Kjo është e dobishme, nëse skedari hyrës përmban shumë blloqe dhe vetëm një pjesë e tyre
ka nevojë për ripërdorim.Kjo mundësi tani i mundëson vendosjen e formatit të paralajmërimeve dhe mesazheve të gabimeve
me opsionin e ri âlocation-format . Formati GNU tregohet
si filename:line:column:, ndĂ«rsa formati MSVC â si filename(line,column).
Kjo mundësi mund t'u nevojitet adhuruesve të IDE.
Gjithashtu Ă«shtĂ« shtuar opsioni âverbose, i cili jep njĂ« mesazh pĂ«rkrahĂ«s tĂ« shkurtĂ«r nĂ« rast suksesi.ĂshtĂ« pĂ«rmirĂ«suar moda âkompatibilitetâ me flex - janĂ« korrigjuar disa gabime analiza dhe
prioritetin e gabuar të operatorëve në raste të rralla.
Historikisht, opsioni -F âflex-support lejon qĂ« tĂ« shkruani kod
përzier në stilin flex dhe në stilin re2c, që paksa vështirëson analizimin sintaksor.
Moda e kompatibilitetit me flex përdoret rrallë në kodin e ri,
por re2c vazhdon ta mbështesë atë për kompatibilitetin mbrapa.Operatori i zbritjes për klasat e simboleve / tani aplikohet
para zhvillimin e kodimit, që lejon aplicimin e tij në më shumë raste,
nëse përdoret një kodim me gjatësi variabile të karaktereve (p.sh. UTF8).Skeda dalëse tani krijohet në mënyrë atomike: re2c së pari krijon një skedë përkohshme
dhe shkruan në të rezultatin, e më pas ndryshon emrin e skedës përkohshme në atë dalëse
në një operacion.Dokumentacioni është plotësuar dhe riparë; në veçanti, janë shtuar kapituj të rinj
dhe për metodat e kontrollit të fundit të të dhënave të hyrjes.
Dokumentacioni i ri është mbledhur në formën e
të një manuali përmbledhës të plotë
me shembuj (të njëjtat burime vizatohen në manpage dhe në dokumentacionin online).
Janë bërë përpjekje të dobëta për të përmirësuar lexueshmërinë e sitit në telefona.Nga pikëpamja e zhvilluesve, re2c ka fituar një sistem debug më të plotë.
Kodi i ndihmës tani është çaktivizuar në ndërtimet e lëshimit dhe
mund tĂ« pĂ«rfshihet pĂ«rmes opsionit tĂ« konfigurimit âenable-debug.
Ky version mori një kohë të gjatë - pothuajse një vit.
Shumica e kohës, si gjithmonë, shkoi për zhvillimin e bazës teorike dhe shkruan
artikulli "Ekstraksioni Efikas i Submatch POSIX mbi NFA".
Algoritmet e përshkruara në artikull janë realizuar në një bibliotekë eksperimentale libre2c
(ndĂ«rtimi i bibliotekĂ«s dhe benchmarkeve Ă«shtĂ« i çaktivizuar si parazgjedhje dhe aktivizohet me opsionin configureâenable-libs). Biblioteka nuk Ă«shtĂ« menduar si njĂ« konkurent i projekteve ekzistuese si RE2, por si njĂ« platformĂ« kĂ«rkimore pĂ«r zhvillimin e algoritmeve tĂ« reja (tĂ« cilat mund tĂ« pĂ«rdoren mĂ« pas nĂ« re2c ose nĂ« projekte tĂ« tjera).
Gjithashtu, kjo është e përshtatshme për qëllime testimi, benchmarke dhe krijimin e lidhjeve me gjuhë të tjera.
Faleminderit nga zhvilluesit e re2c të gjithëve që ndihmuan në realizimin e këtij lancimi,
dhe në përgjithësi komunitetit për idetë, raportet për gabimet, patch-at, shpirtin luftarak, etj. ;]
MĂ« 2 gusht tĂ« premten doli lansimi i re2c â njĂ« gjenerator i lirĂ« pĂ«r analizatorĂ« leksik pĂ«r gjuhĂ«t C dhe C++.
đ„re2c 1.2 | ProHoster
dhe në përgjithësi komunitetit për idetë, raportet e defekteve, patch-et, frymën e luftës etj. ;]
Burimi: linux.org.ru
