augusti 0.5.0

augusti 0.5.0

Den 19 mars slÀpptes C++-biblioteket Juli, som implementerar inbÀddade domÀnspecifikt sprÄk för att uttrycka parsers som utökade grammatik för syntaktiska uttryck, och distribueras under MIT-licensen.

Bibliotekets funktioner:

  • Naturlig syntax som pĂ„minner om externa parsergeneratorsprĂ„k, med stöd för attribut och semantiska Ă„tgĂ€rder.
  • FörmĂ„ga att arbeta med sammanhangskĂ€nslig grammatik med symboltabeller, villkor och syntaktiska predikat.
  • De genererade tolkarna kompileras till bytekod och exekveras i en virtuell tolkmaskin.
  • Tydlig separation av syntaktiska och lexikaliska regler med möjlighet att konfigurera implicit överhoppning av blanksteg.
  • Stöd för direkt och indirekt vĂ€nsterrekursion, med prioritetsnivĂ„er för att avgrĂ€nsa underuttryck med blandad vĂ€nster- och högerrekursion.
  • FullstĂ€ndigt stöd för UTF-8-textanalys, inklusive nivĂ„ 1 och delvis överensstĂ€mmelse med nivĂ„ 2 i den tekniska standarden UTS #18 Unicode reguljĂ€ra uttryck.
  • Felhantering och Ă„terstĂ€llning med mĂ€rkta fel, Ă„terstĂ€llningsregler och felhanterare.
  • Automatisk spĂ„rning av rad- och kolumnnummer, anpassningsbar flikbredd och justering.
  • Enbart rubrikbibliotek som endast anvĂ€nder standardbiblioteket och funktionerna i C++17-standarden. Framtidskompatibel med standarderna C++20 och C++23.
  • Relativt liten biblioteksstorlek, med mĂ„let att hĂ„lla det totala antalet rader i alla rubrikfiler till mindre Ă€n 6000 rader med kortfattad kod.

Lista över Àndringar:

  • Direktiv för samlingar och objektattribut har implementerats. Nytt kollektivdirektiv [e] syntetiserar en sekvens eller associativ behĂ„llare av typ C som bestĂ„r av element sammansatta frĂ„n Ă€rvda eller syntetiserade attribut i uttryck e. LikasĂ„ finns det nya syntetiseringsdirektiv [e], synthesize_shared [e] och synthesize_unique [e] för att syntetisera objekt, gemensamma pekare respektive unika pekare, konstruerade frĂ„n attributen för komponenterna i uttrycket e.
  • Direktivet synthesize_collect har implementerats, som kombinerar insamlings- och syntetiseringsdirektiven för att förbĂ€ttra kodlĂ€sbarheten och minska antalet mallar nĂ€r man bygger komplexa datastrukturer frĂ„n analyserade element. Detta Ă€r sĂ€rskilt anvĂ€ndbart för att skapa kapslade samlingar, till exempel arrayer av objekt eller associativa behĂ„llare med komplexa vĂ€rdetyper.
  • Lade till mallklass lug::recursive_wrapper för att hantera cykliska beroenden i abstrakta syntaxtrĂ€d, sĂ€rskilt de som anvĂ€nder std::variant.
  • Implementerat stöd för Unicode 16.0.0-standarden och lagt till stöd för byggverktyg i CMakeLists.txt.
  • Mappningen mellan intervall och ASCII-tecken har optimerats, vilket resulterat i betydande prestandaförbĂ€ttringar för vanliga textbehandlingsoperationer. Lade till specialiserade genvĂ€gar för att endast bearbeta ASCII-tecken, som Ă€r betydligt snabbare Ă€n Unicode-bearbetningskod.
  • Implementerade testopkoder för att optimera fel och upprepa opkoder för att optimera att hoppa över blanksteg. Dessa optimeringar kommer att vara fullt aktiverade i nĂ€sta version efter planerade expressionstrĂ€dtransformationer.
  • FörbĂ€ttrad hantering av indatakĂ€llor med förbĂ€ttrad buffring och felrapportering för std::istream, och förbĂ€ttrat stöd för interaktivt lĂ€ge som korrekt hanterar rad-för-rad-inmatning för terminalsessioner eller för radorienterade grammatiker.
  • Flyttade std::istream-stöd till en separat rubrikfil . Detta minskar kompileringstiden och minimerar header-beroendena för projekt som inte krĂ€ver strömmande I/O-funktioner.
  • Omarbetad parserfixeringslogik genom att infoga instruktioner i lug::basic_parser för att bĂ€ttre matcha stackframe-arkitekturĂ€ndringarna som introducerades i version 0.4.0, vilket förbĂ€ttrade kodorganisation och prestanda.
  • Fixat problem i parserexempel GRUNDLÄGGANDE, nĂ€r anpassade funktioner (t.ex. FNA(X)) slutfördes under utvĂ€rderingen. Detta orsakades av Ă€ndringar i version 0.4.0 som Ă„terstĂ€ller lug::environment under kapslade parsningsoperationer. En ny funktion, lug::environment::should_reset_on_parse, har lagts till för att ge finkornig kontroll över detta beteende, vilket gör att miljön kan bestĂ„ under kapslade analyser nĂ€r det behövs.
  • En omfattande infrastruktur för att testa exempelprogram har lagts till.
  • Inkludera-kataloghierarkin har byggts om.
  • För att ge bredare kompatibilitet har GitHub CI lagt till stöd för ytterligare kompilatorer (GCC 9/10/11/12, Clang 14/15/16/17).
  • Clang och MSVC statiska analysatorer har lagts till i GitHub CI.
  • Lade till Address Sanitizer (ASan), Undefined Behavior Sanitizer (UBSan) och Memory Sanitizer (MSan) till GitHub CI.
  • Lade till klangsnygg integration till GitHub CI.
  • GitHub CI har tagit bort anvĂ€ndningen av Ubuntu 20.04.

KĂ€lla: linux.org.ru

Köp pĂ„litlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster