Lug 0.5.0

Lug 0.5.0

Më 19 mars u publikua një bibliotekë C++ Lug, që implementon një gjuhë të orientuar nga objekti për të shprehur analizatorët sintaksorë si gramatika të zgjeruara të shprehjeve sintaksore, dhe shpërndahet nën licencën MIT.

Mundësitë e bibliotekës:

  • Sintaksa natyrale, e ngjashme me gjuhĂ«t e gjeneratorĂ«ve tĂ« jashtĂ«m tĂ« parserĂ«ve, me mbĂ«shtetje pĂ«r atribute dhe veprime semantike.
  • MundĂ«sia pĂ«r tĂ« punuar me gramatika kontekstualisht tĂ« varura me tabela simboresh, kushte dhe predikate sintaksore.
  • ParserĂ«t e gjeneruar kompilohen nĂ« kod bajt dhe ekzekutohen nĂ« njĂ« makinĂ« virtuale tĂ« analizĂ«s sintaksore.
  • ShkĂ«putje e qartĂ« e rregullave sintaksore dhe leksikore me mundĂ«si pĂ«r tĂ« konfiguruar kalimin e fshehtĂ« tĂ« karaktereve tĂ« zbrazĂ«t.
  • MbĂ«shtetje pĂ«r rekursivitetin e majtĂ« direkt dhe tĂ« tĂ«rthortĂ«, me nivele prioritare pĂ«r ndarjen e nĂ«n-shprehjeve me rekursivitet tĂ« pĂ«rzier majtas dhe djathtas.
  • MbĂ«shtetje e plotĂ« pĂ«r analizimin e teksteve nĂ« formatin UTF-8, duke pĂ«rfshirĂ« nivelin 1 dhe pĂ«rputhjen e pjesshme me nivelin 2 tĂ« standardit teknik UTS #18 Regulat e Regjistrimit tĂ« Unicode.
  • Trajtimi i gabimeve dhe rimĂ«kĂ«mbja pĂ«rmes dĂ«shtimeve tĂ« shĂ«nuara, rregullave tĂ« rimĂ«kĂ«mbjes dhe trajtuesve tĂ« gabimeve.
  • Ndjekje automatike tĂ« numrave tĂ« rreshtave dhe kolonave, gjerĂ«sia dhe rreshtimi i tabulave i konfiguruar.
  • BibliotekĂ« vetĂ«m-header, qĂ« pĂ«rdor vetĂ«m bibliotekĂ«n standarde dhe mundĂ«sitĂ« e standardit C++17. ËshtĂ« perspektivisht e pĂ«rshtatshme me standardet C++20 dhe C++23.
  • Masa relativisht e vogĂ«l e bibliotekĂ«s, me qĂ«llimin pĂ«r tĂ« mbajtur numrin total tĂ« linjave nĂ« tĂ« gjitha skedarĂ«t e kokĂ«s nĂ«n 6000 linja kodi tĂ« pĂ«rmbledhur.

nöqtələri ilə

  • JanĂ« implementuar direktivat e koleksioneve dhe atributeve tĂ« objekteve. Direktiva e re collect<C>[e] sintetizon njĂ« kapsullĂ« ose kontejner asociativ tĂ« tipit C, i pĂ«rbĂ«rĂ« nga elemente tĂ« mbledhura nga atributet e trashĂ«guara ose tĂ« sintetizuara nĂ« shprehjen e. NjĂ«lloj, janĂ« shfaqur gjithashtu direktivat e reja synthesize<C,A
>[e], synthesize_shared<C,A
>[e] dhe synthesize_unique<C,A
>[e] pĂ«r sintetizimin e objekteve, pikave tĂ« zakonshme dhe pikave unike pĂ«rkatĂ«sisht, tĂ« ndĂ«rtuara nga atributet e komponenteve nĂ« shprehjen e.
  • ËshtĂ« realizuar direktiva synthesize_collect, e cila kombinon direktivat collect dhe synthesize pĂ«r tĂ« pĂ«rmirĂ«suar lexueshmĂ«rinĂ« e kodit dhe pĂ«r tĂ« zvogĂ«luar numrin e shablloneve gjatĂ« ndĂ«rtimit tĂ« strukturave tĂ« dhĂ«nash komplekse nga elementĂ«t e shkĂ«putur. Kjo Ă«shtĂ« veçanĂ«risht e dobishme pĂ«r krijimin e koleksioneve tĂ« thelluara, siç janĂ« array-t e objekteve ose kontejnerĂ«t asociativĂ« me lloje tĂ« ndĂ«rlikuara vlerash.
  • ËshtĂ« shtuar klasa shabllon lug::recursive_wrapper pĂ«r trajtimin e varĂ«sive ciklike nĂ« pemĂ«t e sintaksĂ«s abstrakte, veçanĂ«risht duke pĂ«rdorur std::variant.
  • ËshtĂ« realizuar mbĂ«shtetje pĂ«r standardin Unicode 16.0.0 dhe Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r mjetet e ndĂ«rtimit nĂ« CMakeLists.txt.
  • ËshtĂ« optimizuar pĂ«rshtatja e intervaleve dhe grupeve tĂ« simboleve ASCII, duke çuar nĂ« njĂ« rritje tĂ« konsiderueshme tĂ« performancĂ«s gjatĂ« kryerjes sĂ« operacioneve tĂ« zakonshme tĂ« pĂ«rpunimit tĂ« tekstit. JanĂ« shtuar mĂ«nyra tĂ« specializuara tĂ« shpejta pĂ«r tĂ« trajtuar vetĂ«m simbole ASCII, tĂ« cilat janĂ« shumĂ« mĂ« tĂ« shpejta se kodi i pĂ«rpunimit tĂ« Unicode.
  • ËshtĂ« realizuar opkodet test pĂ«r optimizimin e gabimeve dhe opkodet repeat pĂ«r optimizimin e shkĂ«putjeve tĂ« simboleve bosh. KĂ«to optimizime do tĂ« pĂ«rfshihen plotĂ«sisht nĂ« lĂ«shimin e ardhshĂ«m pas transformimeve tĂ« planifikuara tĂ« pemĂ«s sĂ« shprehjeve.
  • ËshtĂ« pĂ«rmirĂ«suar pĂ«rpunimi i burimeve tĂ« inputit me mbĂ«shtetje tĂ« pĂ«rmirĂ«suar pĂ«r buffer dhe raportimin e gabimeve pĂ«r std::istream, si dhe Ă«shtĂ« pĂ«rmirĂ«suar mbĂ«shtetje pĂ«r mĂ«nyrĂ«n interaktive, e cila trajton saktĂ« inputin rresht pĂ«r sesionet terminale ose pĂ«r gramatika linear-orientuara.
  • MbĂ«shtetja pĂ«r std::istream Ă«shtĂ« zhvendosur nĂ« njĂ« skedar titulli tĂ« veçantĂ« <lug/iostream.hpp>. Kjo ul kohĂ«n e kompilimit dhe minimizon varĂ«sitĂ« nga titujt pĂ«r projektet qĂ« nuk kĂ«rkojnĂ« funksionalitetin e input/output-it tĂ« fluxit.
  • Logjika e kapjes sĂ« parser-it Ă«shtĂ« rishikuar pĂ«rmes inlinimit tĂ« instrukcioneve nĂ« lug::basic_parser pĂ«r tĂ« pĂ«rmirĂ«suar pĂ«rputhshmĂ«rinĂ« me ndryshimet arkitekturale tĂ« kuadrit tĂ« stack-ut, tĂ« prezantuara nĂ« versionin 0.4.0, duke pĂ«rmirĂ«suar organizimin e kodit dhe performancĂ«n.
  • ËshtĂ« rregulluar njĂ« problem nĂ« shembullin e parser-it BASIC, kur funksionet pĂ«rdoruese (p.sh. FNA(X)) pĂ«rfundonin gjatĂ« vlerĂ«simit. Kjo u shkaktua nga ndryshimet nĂ« versionin 0.4.0, tĂ« cilat rivendosnin lug::environment gjatĂ« operacioneve tĂ« thella tĂ« analizĂ«s sintaksore. Shtua njĂ« funksion i ri lug::environment::should_reset_on_parse pĂ«r tĂ« siguruar kontroll tĂ« saktĂ« mbi kĂ«tĂ« sjellje, duke lejuar ambientin tĂ« ruhet gjatĂ« operacioneve tĂ« thella tĂ« analizĂ«s, kur Ă«shtĂ« e nevojshme.
  • Shtua njĂ« infrastrukturĂ« komplekse pĂ«r testimin e shembujve tĂ« programeve.
  • Rikonstruktuar hierarkia e katalogĂ«ve include.
  • PĂ«r tĂ« siguruar njĂ« pĂ«rputhshmĂ«ri mĂ« tĂ« gjerĂ« nĂ« GitHub CI, shtua mbĂ«shtetje pĂ«r kompilatorĂ« tĂ« tjerĂ« (GCC 9/10/11/12, Clang 14/15/16/17).
  • Shtuar analizatorĂ« statikĂ« Clang dhe MSVC nĂ« GitHub CI.
  • Shtuar Address Sanitizer (ASan), Undefined Behavior Sanitizer (UBSan) dhe Memory Sanitizer (MSan) nĂ« GitHub CI.
  • Shtuar integrimin e clang-tidy nĂ« GitHub CI.
  • Hequr pĂ«rdorimi i Ubuntu 20.04 nĂ« GitHub CI.

Burimi: linux.org.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