Lug 0.5.0

Lug 0.5.0

Më 19 mars, u publikua biblioteka C++ Lug, që implementon një gjuhë me fokus të veçantë për shprehjen e analizatorëve sintaktikë si gramatika të zgjeruara të shprehjeve sintaktike, dhe shpërndahet nën licencën MIT.

Veçoritë e bibliotekës:

  • SintaksĂ« natyrale, e ngjashme me gjuhĂ«t e gjeneratorĂ«ve jashtmĂ«dhenĂ«s, me mbĂ«shtetje pĂ«r atributet dhe veprime semantike.
  • MundĂ«sia pĂ«r tĂ« punuar me gramatika tĂ« varura nga konteksti, me tabela simbolesh, kushte dhe predikate sintaktike.
  • Analizuesit e gjeneruar kompilohet nĂ« kod tĂ« ndĂ«rsjellĂ« dhe ekzekutohen nĂ« makinerinĂ« virtuale tĂ« analizĂ«s sintaktike.
  • PĂ«rçim i qartĂ« i rregullave sintaktike dhe leksikore me mundĂ«si pĂ«r pĂ«rshtatjen e kalimeve tĂ« paqarta tĂ« hapĂ«sirave.
  • MbĂ«shtetje pĂ«r rekursivitetin e drejtpĂ«rdrejtĂ« dhe tĂ«rthor, me nivele precedence pĂ«r ndarjen e nĂ«nshprehjeve me rekursivitet tĂ« pĂ«rzier.
  • MbĂ«shtetje e plotĂ« pĂ«r analizimin e teksteve nĂ« formatin UTF-8, duke pĂ«rfshirĂ« nivelin 1 dhe pĂ«rputhje tĂ« pjesshme me nivelin 2 tĂ« standardit teknik UTS #18 Regex tĂ« Unicode.
  • PĂ«rpunimi i gabimeve dhe rikuperimi pĂ«rmes gabimeve tĂ« shĂ«nuara, rregullave tĂ« rikuperimit dhe trajtuesve tĂ« gabimeve.
  • Gjeometria automatike e numrave tĂ« rreshtave dhe kolonave, gjerĂ«si e personalizuar dhe rreshtim tabulash.
  • BibliotekĂ« vetĂ«m pĂ«r kokĂ«, e cila pĂ«rdor vetĂ«m bibliotekĂ«n standarde dhe mundĂ«sitĂ« e standardit C++17. E pajtueshme me standardet C++20 dhe C++23 nĂ« perspektivĂ«.
  • MadhĂ«si relativisht e vogĂ«l e bibliotekĂ«s, me qĂ«llim pĂ«r tĂ« mbajtur numrin total tĂ« linjave nĂ« tĂ« gjitha skedarĂ«t e kokĂ«s nĂ«n 6000 rreshta tĂ« kodit tĂ« shkurtĂ«r.

Lista e ndryshimeve:

  • DirektivĂ«t e koleksioneve dhe atributet e objekteve janĂ« realizuar. DirektivĂ« e re collect<C>[e] sintezat njĂ« sekuencĂ« ose konteiner asociativ tĂ« tipit C, i pĂ«rbĂ«rĂ« nga elemente tĂ« mbledhura nga atributet e trashĂ«guara ose tĂ« sintetizuara nĂ« shprehjen e. Po ashtu, janĂ« futur drejtime tĂ« reja synthesize<C,A
>[e], synthesize_shared<C,A
>[e] dhe synthesize_unique<C,A
>[e] pĂ«r tĂ« sintetizuar objekte, tregues tĂ« pĂ«rbashkĂ«t dhe tregues unikĂ« pĂ«rkatĂ«sisht, tĂ« ndĂ«rtuar nga atributet e komponentĂ«ve nĂ« shprehjen e.
  • ËshtĂ« realizuar direktiva synthesize_collect, e cila bashkon direktivat collect dhe synthesize pĂ«r tĂ« pĂ«rmirĂ«suar lexueshmĂ«rinĂ« e kodit dhe pĂ«r tĂ« zvogĂ«luar numrin e shablloneve kur krijoni struktura tĂ« komplikuara tĂ« dhĂ«nash nga elementĂ« tĂ« analizuar. Kjo Ă«shtĂ« veçanĂ«risht e dobishme pĂ«r krijimin e koleksioneve tĂ« thelluara, tĂ« tilla si arrat 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, sidomos ato qĂ« pĂ«rdorin 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 grupi i simboleve ASCII, e cila ka çuar nĂ« njĂ« rritje tĂ« konsiderueshme tĂ« performancĂ«s gjatĂ« kryerjes sĂ« operacioneve tĂ« zakonshme tĂ« pĂ«rpunimit tĂ« tekstit. JanĂ« shtuar metoda tĂ« specializuara tĂ« shpejta pĂ«r tĂ« pĂ«rpunuar vetĂ«m simbolet ASCII, tĂ« cilat janĂ« dukshĂ«m mĂ« tĂ« shpejta se kodi i pĂ«rpunimit tĂ« Unicode.
  • Shtohen opcode-tĂ« test pĂ«r optimizimin e gabimeve dhe opcode-tĂ« repeat pĂ«r optimizimin e shpĂ«rndarjes sĂ« karaktereve bosh. KĂ«to optimizime do tĂ« pĂ«rfshihen plotĂ«sisht nĂ« publikimin e ardhshĂ«m pas transformimeve tĂ« planifikuara tĂ« pemĂ«s sĂ« shprehjeve.
  • PĂ«rmirĂ«sohet pĂ«rpunimi i burimeve tĂ« hyrjes me njĂ« tamponim tĂ« pĂ«rmirĂ«suar dhe raportim gabimesh pĂ«r std::istream, si dhe pĂ«rmirĂ«sohet mbĂ«shtetja pĂ«r modin interaktiv, i cili trajton saktĂ«sisht hyrjen rresht pas rreshti pĂ«r seancat terminale ose pĂ«r gramatika tĂ« orientuara nĂ« linjĂ«.
  • MbĂ«shtetja pĂ«r std::istream Ă«shtĂ« transferuar nĂ« njĂ« skedar tĂ« veçantĂ« titulli . Kjo zvogĂ«lon kohĂ«n e kompilimit dhe minimizon varĂ«sitĂ« nga titujt pĂ«r projektet qĂ« nuk kĂ«rkojnĂ« funksionalitetin e hyrjes/daljes nga kanali.
  • Logjika e korrigjimit tĂ« parserit Ă«shtĂ« rinovuar duke inkorporuar instrukcionet nĂ« lug::basic_parser pĂ«r njĂ« pĂ«rputhje mĂ« tĂ« mirĂ« me ndryshimet e arkitekturĂ«s sĂ« kornizĂ«s stacked, tĂ« paraqitura nĂ« versionin 0.4.0, e cila pĂ«rmirĂ«soi organizimin e kodit dhe performancĂ«n.
  • ËshtĂ« zgjidhur njĂ« problem nĂ« shembullin e parserit BASIC, kur funksionet pĂ«rdoruesve (p.sh., FNA(X)) pĂ«rfunduan gjatĂ« vlerĂ«simit. Ky problem u shkaktua nga ndryshimet nĂ« versionin 0.4.0, tĂ« cilat rivendosnin lug::environment gjatĂ« operacioneve tĂ« brendshme tĂ« analizĂ«s. E shtuar njĂ« funksion i ri lug::environment::should_reset_on_parse pĂ«r tĂ« siguruar kontroll mĂ« tĂ« hollĂ«sishĂ«m mbi kĂ«tĂ« sjellje, duke lejuar mjedisin tĂ« ruhet gjatĂ« operacioneve tĂ« brendshme tĂ« analizĂ«s, kur Ă«shtĂ« e nevojshme.
  • Shtuar njĂ« infrastrukturĂ« gjithĂ«pĂ«rfshirĂ«se pĂ«r testimin e shembujve tĂ« programeve.
  • Ristrukturuar hierarkia e katalogĂ«ve pĂ«rfshirĂ«s.
  • PĂ«r tĂ« siguruar njĂ« pĂ«rputhshmĂ«ri mĂ« tĂ« gjerĂ« nĂ« GitHub CI, shtuar mbĂ«shtetje pĂ«r kompilerĂ« tĂ« tjerĂ« (GCC 9/10/11/12, Clang 14/15/16/17).
  • Shtuar analizues statik Clang dhe MSVC nĂ« GitHub CI.
  • Shtuar Address Sanitizer (ASan), Undefined Behavior Sanitizer (UBSan) dhe Memory Sanitizer (MSan) nĂ« GitHub CI.
  • Shtuar integrimin clang-tidy nĂ« GitHub CI.
  • Hequr pĂ«rdorimi i Ubuntu 20.04 nĂ« GitHub CI.

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