Çlirimi i gjeneratorit tĂ« analizatorĂ«ve leksik re2c 1.2

U zhvillua lëshimi re2c, gjenerator i lirë leksik që analizojnë për gjuhët C dhe C++. Kujtojmë se re2c u shkrua në vitin 1993 nga Peter Bambulis si një gjenerator eksperimental i analizuesve leksikë shumë të shpejtë, që dallohet nga gjeneratorët e tjerë me shpejtësinë e kodit të gjeneruar dhe një ndërfaqe përdoruesi jashtëzakonisht fleksibile, e cila lejon integrimin e leksikëve në bazën egzistuese të kodit në mënyrë të lehtë dhe efikase. Që nga ajo kohë, projekti është zhvilluar nga komuniteti dhe vazhdon të mbetet një platformë për eksperimentim dhe hulumtim në fushën e gramatikave formale dhe automatëve fundorë.

Përgatitja e lëshimit zgjati gati një vit. Shumica e kohës, si gjithmonë, u shpenzua për zhvillimin e bazës teorike dhe përshkrimin
artikulli «Ekstraktimi Efikas i Nënshkallave POSIX mbi NFA«.
Algoritmet e përshkruara në artikull janë realizuar në një bibliotekë eksperimentale libre2c
(ndërtime e bibliotekës dhe testet e performancës janë të fikura nga e drejta dhe aktivizohen me opsionin e konfigurimit «--enable-libs»). Biblioteka nuk është menduar si konkurrente me projektet ekzistuese, si RE2, por si një platformë kërkimore për zhvillimin e algoritmeve të reja
(të cilat më pas mund të përdoren në re2c ose në projekte të tjera). Gjithashtu, kjo është e përshtatshme për testim, matjen e performancës dhe krijimin e lidhjeve me gjuhë të tjera.

Novitet kryesor në versionin re2c 1.2:

  • NjĂ« mĂ«nyrĂ« e re e thjeshtuar pĂ«r tĂ« verifikuar fundin e tĂ« dhĂ«nave hyrĂ«se («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ë «$», që aktivizohet nëse 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Ă«,
    si dhe në listën e rrugëve të caktuara me opsionin «-I».
    Skedarët e përfshirë mund të përfshijnë skedarë të tjerë.
    Skedarët e përfshirë mund të përfshijnë skedarë të tjerë.
    Re2c ofron skedar «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
    nĂ«pĂ«rmjet 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
    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Ă« default, re2c analizon shprehjet si «∀x ∃y» si
    një sekuencë të simboleve ASCII me 1 bit «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 pakëndshme 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 ndryshimin e sjelljes dhe analizimin e «∀x ∃y» si
    «2200 78 20 2203 79».
  • Re2c tani lejon pĂ«rdorimin e blloqeve tĂ« zakonshĂ«m 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
    nĂ«pĂ«rmjet njĂ« opsioni tĂ« ri «—location-format {gnu | msvc}». Formati GNU shfaqet
    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 tĂ« shkurtĂ«r fitues nĂ« rast suksesi.
  • PĂ«rmirĂ«suar moda e «kompatibilitetit» me flex — korrigjuar disa gabime parse dhe
    prioritetin e gabuar të operatorëve në raste të rralla.
    Historikisht opsioni «-F —flex-support» lejon tĂ« shkruhet 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 sĂ« klasave tĂ« 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
    për http://re2c.org/manual/manual.html#buffer-refilling mbushjen e buffers
    dhe për metodat e kontrollit të fundit të të dhënave të hyrjes.
    Dokumentacioni i ri është mbledhur në formën e
    një udhëzuesi gjithëpërfshirës njëfaqesh
    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ë aktivizohet përmes opsionit të konfigurimit "--enable-debug".

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster