Lëshimi i gjeneratorit të analizuesit leksikor re2c 1.2
Ndodhi lirimin re2c, një gjenerues falas për analizues leksikor për gjuhët C dhe C++. Le të kujtojmë se re2c u shkrua në vitin 1993 nga Peter Bambulis si një gjenerator eksperimental i analizuesve shumë të shpejtë leksikor, që ndryshon nga gjeneratorët e tjerë në shpejtësinë e kodit të gjeneruar dhe një ndërfaqe përdoruesi jashtëzakonisht fleksibël që lejon analizuesit të integrohen lehtësisht dhe me efikasitet në një ekzistues. bazën e kodit. Që atëherë, projekti është zhvilluar nga komuniteti dhe vazhdon të jetë një platformë për eksperimente dhe kërkime në fushën e gramatikave formale dhe makinave me gjendje të fundme.
Përgatitja për lëshimin zgjati pothuajse një vit të tërë. Pjesa më e madhe e kohës, si gjithmonë, u shpenzua për zhvillimin e një kuadri teorik dhe shkrim
artikuj "Nxjerrja efikase e nënpërputhjes POSIX në NFA".
Algoritmet e përshkruara në artikull janë zbatuar në bibliotekën eksperimentale libre2c
(ndërtimi i bibliotekës dhe testet e performancës është i çaktivizuar si parazgjedhje dhe aktivizohet nga opsioni i konfigurimit "--enable-libs"). Biblioteka nuk synohet si konkurrente e projekteve ekzistuese si RE2, por si një platformë kërkimore për zhvillimin e projekteve të reja.
algoritme (të cilat më pas mund të përdoren në re2c ose në projekte të tjera). Është gjithashtu i përshtatshëm nga pikëpamja e testimit, matjes së performancës dhe krijimit të lidhjeve me gjuhë të tjera.
Risitë kryesore në versionin re2c 1.2:
U shtua një metodë e re e thjeshtuar për kontrollimin e fundit të të dhënave hyrëse (“rregulli EOF”). Për këtë, është shtuar konfigurimi "re2c:eof",
ju lejon të zgjidhni karakterin e terminalit,
dhe një rregull special “$”, i cili aktivizohet nëse lexeri
arriti me sukses në fund të të dhënave hyrëse.
Historikisht, re2c ofron një zgjedhje të disa metodave të verifikimit për
fundi i inputeve ndryshon në kufizim, efikasitet dhe thjeshtësi
aplikacionet. Metoda e re është krijuar për të thjeshtuar shkrimin e kodit, ndërsa
duke mbetur efektiv dhe gjerësisht i zbatueshëm. Mënyra të vjetra
ende funksionon dhe mund të preferohet në disa raste.
U shtua aftësia për të përfshirë skedarë të jashtëm duke përdorur një direktivë
"/*!include:re2c "file.re" */", ku "file.re" është emri i skedarit që do të përfshihet. Re2c kërkon skedarë në drejtorinë e skedarit përfshirë,
si dhe në listën e shtigjeve të specifikuara duke përdorur opsionin “-I”.
Skedarët e përfshirë mund të përfshijnë skedarë të tjerë.
Re2c ofron skedarë "standard" në drejtorinë "include/".
projekti - pritet që aty të grumbullohen përkufizime të dobishme
shprehje të rregullta, diçka si biblioteka standarde.
Deri më tani, me kërkesë të punëtorëve, është shtuar një dosje me përkufizimet e kategorive të Unicode.
U shtua aftësia për të gjeneruar skedarë të kokës me arbitrare
përmbajtje duke përdorur opsionet "-t --type-header" (ose të përshtatshme
konfigurimet) dhe direktivat e reja "/*!header:re2c:on*/" dhe
"/*!header:re2c:off*/". Kjo mund të jetë e dobishme në rastet kur
kur re2c duhet të gjenerojë përkufizime të variablave, strukturave dhe makrove,
përdoret në njësi të tjera përkthimi.
Re2c tani kupton fjalë për fjalë UTF8 dhe klasat e karaktereve në shprehje të rregullta.
Si parazgjedhje, re2c analizon shprehjet si "∀x ∃y" si
sekuencë e karaktereve ASCII 1-bit "e2 88 80 78 20 e2 88 83 79"
(kodet hex), dhe përdoruesit duhet t'i shpëtojnë karaktereve të Unicode manualisht:
"\\u2200x \\u2203y." Kjo është shumë e papërshtatshme dhe e papritur për shumë njerëz
përdoruesit (siç dëshmohet nga raportet e vazhdueshme të gabimeve). Pra tani
re2c ofron opsionin "--input-encoding {ascii | utf8}",
i cili ju lejon të ndryshoni sjelljen dhe të analizoni "∀x ∃y" si
"2200 78 20 2203 79."
Re2c tani lejon që blloqet e rregullta re2c të përdoren në modalitetin "-r --reuse".
Kjo është e përshtatshme nëse skedari hyrës përmban shumë blloqe dhe vetëm disa prej tyre
duhet të ripërdoret.
Tani mund të vendosni formatin e paralajmërimeve dhe mesazheve të gabimit
duke përdorur opsionin e ri "--location-format {gnu | msvc}". Shfaqet formati GNU
si "filename:line:column:", dhe formati MSVC si "filename(line,column)".
Kjo veçori mund të jetë e dobishme për adhuruesit e IDE.
Është shtuar gjithashtu një opsion "--verbose", i cili shfaq një mesazh të shkurtër fitoreje nëse është i suksesshëm.
Mënyra e "përputhshmërisë" me flex është përmirësuar - disa gabime analizimi janë rregulluar dhe
përparësi e gabuar e operatorit në raste të rralla.
Historikisht, opsioni "-F --flex-suppor" ju lejoi të shkruani kod
e përzier në stilin flex dhe stilin re2c, gjë që e bën analizimin pak të vështirë.
Modaliteti i përputhshmërisë Flex përdoret rrallë në kodin e ri,
por re2c vazhdon ta mbështesë atë për pajtueshmërinë prapa.
Tani zbatohet operatori i zbritjes së klasës së karaktereve "/".
përpara se të zgjerohet kodimi, i cili lejon që ai të përdoret në një numër më të madh rastesh,
nëse përdoret një kodim me gjatësi të ndryshueshme karakteresh (për shembull UTF8).
Skedari i daljes tani krijohet në mënyrë atomike: re2c krijon së pari një skedar të përkohshëm
dhe shkruan rezultatin në të, dhe më pas riemëron skedarin e përkohshëm në dalje
një operacion.
Nga këndvështrimi i zhvilluesve, re2c ka fituar një nënsistem më të plotë
korrigjimi Kodi i korrigjimit tani është i çaktivizuar në versionet e lëshimit dhe
mund të aktivizohet duke përdorur opsionin e konfigurimit "--enable-debug".