Lëshimi i gjeneratorit të analizatorëve leksik të re2c 1.2

U shpall lëshimi re2c, 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 “Ekstraktimi Efikas i NĂ«nmatches POSIX nĂ« NFA«.
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 http://re2c.org/manual/manual.html#buffer-refilling plotësimin e tamponit
    dhe për metodat e verifikimit në fund të të dhënave hyrëse..
    Dokumentacioni i ri është mbledhur në një formë
    udhëzimi gjithëpërfshirës njëfaqësh
    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

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