re2c 1.2

Fredag den 2 august slÀpptes re2c - en fri generator för lexikala analysatorer för C och C++. Det bör pÄminnas om att re2c skrevs av Peter Bamlis Är 1993 som en experimentell generator för mycket snabba lexikala analysatorer, som skiljer sig frÄn andra generatorer genom hastigheten pÄ den genererade koden och den ovanligt flexibla anvÀndargrÀnssnittet, vilket gör det enkelt och effektivt att integrera analysatorer i befintlig kodbas. Sedan dess har projektet utvecklats av communityn och fortsÀtter att vara en plattform för experiment och forskning inom formella grammatik och slutna automater.

Huvudsakliga nyheter i version 1.2:

  • En ny (förenklad) metod för att kontrollera slutet av indata har lagts till
    (eng. "EOF rule").
    För detta ÀndamÄl har konfigurationen re2c:eof lagts till,
    som lÄter dig vÀlja en terminalsymbol,
    och en speciell regel $ som triggas om lexern
    framgÄngsrikt nÄr slutet av indata.
    Historiskt sett har re2c erbjudit flera sÀtt att kontrollera för
    slutet av indata, som varierar i begrÀnsning, effektivitet och enkelhet
    av tillÀmpning. Den nya metoden syftar till att förenkla skrivandet av kod, samtidigt som den
    förblir effektiv och allmÀnt tillÀmplig. De gamla metoderna
    fungerar fortfarande och kan vara att föredra i vissa fall.

  • Möjlighet att inkludera externa filer med hjĂ€lp av direktivet har lagts till,
    /*!include:re2c "file.re" */, гЎД file.re
    detta Àr namnet pÄ den inkluderade filen. Re2c letar efter filer i katalogen för den inkluderande filen,
    liksom i listan över vÀgar angivna med hjÀlp av alternativet -I.
    Inkluderade filer kan inkludera andra filer.
    Re2c tillhandahÄller "standard" filer i katalogen include/
    i projektet - det antas att nyttiga definitioner
    av reguljÀra uttryck kommer att samlas dÀr, nÄgot i stil med standardbiblioteket.
    Hitintills har ett fil med definitioner av Unicode-kategorier lagts till efter önskemÄl frÄn anvÀndarna.

  • Möjlighet att generera headerfiler med godtyckligt
    innehĂ„ll har lagts till genom alternativ -t —type-header (eller motsvarande
    konfigurationer) och nya direktiv !header:re2c:on och
    /*!header:re2c:off*/. Đ­Ń‚ĐŸ ĐŒĐŸĐ¶Đ”Ń‚ Đ±Ń‹Ń‚ŃŒ ĐżĐŸĐ»Đ”Đ·ĐœĐŸ ĐČ ŃĐ»ŃƒŃ‡Đ°ŃŃ…,
    nÀr re2c ska generera definitioner av variabler, strukturer och makron,
    som anvÀnds i andra översÀttningsenheter.

  • Re2c förstĂ„r nu UTF8-litteraler och teckenkategorier i reguljĂ€ra uttryck.
    Som standard tolkar re2c uttryck som "∀x ∃y" som.
    en sekvens av 1-bit ASCII-tecken e2 88 80 78 20 e2 88 83 79
    (hex-koder), och anvÀndare mÄste manuellt skala Unicode-tecken:
    "u2200x u2203y". Detta Àr mycket besvÀrligt och ovÀntat för mÄnga
    anvÀndare (som bevisas av stÀndiga buggrapporter). DÀrför
    tillhandahĂ„ller re2c nu alternativet —input-encoding ,
    som tillĂ„ter att Ă€ndra beteendet och analysera "∀x ∃y" som
    2200 78 20 2203 79.

  • Re2c gör det möjligt att anvĂ€nda vanliga re2c-block i lĂ€get -r —reuse.
    Detta Àr praktiskt om ingÄngsfilen innehÄller mÄnga block, och bara en del av dem
    behöver ÄteranvÀndas.

  • Det har blivit möjligt att stĂ€lla in formatet för varningar och felmeddelanden
    genom det nya alternativet —location-format . GNU-formatet visas
    som filnamn:rad:kollumn:, medan MSVC-formatet visas som filnamn(rad,kollumn).
    Denna funktion kan vara anvÀndbar för IDE-entusiaster.
    Det har ocksĂ„ lagts till ett alternativ —verbose, vilket skriver ut ett kort framgĂ„ngsmeddelande vid lyckande.

  • KompatibilitetslĂ€get med flex har förbĂ€ttrats — vissa parserfel har rĂ€ttats till och
    fel prioritering av operatorer i sÀllsynta fall.
    Historiskt sett tillĂ„ter alternativet -F —flex-support att skriva kod
    i blandad stil av flex och re2c, vilket nÄgot komplicerar syntaktisk analys.
    Flex-kompatibilitetslÀget anvÀnds sÀllan i ny kod,
    men re2c fortsÀtter att stödja det för bakÄtkompatibilitet.

  • Operatorn för subtraktion av teckenklasser / tillĂ€mpas nu
    före avkodning av kodningen, vilket möjliggör dess tillÀmpning i fler fall,
    om variabel-lÀngd teckenkodning (t.ex. UTF8) anvÀnds.

  • Utkastfilen skapas nu atomĂ€rt: re2c skapar först en temporĂ€r fil
    och skriver resultatet till den, och döper sedan om den temporÀra filen till utdata
    i en enda operation.

  • Dokumentationen har uppdaterats och skrivits om; nya
    kapitel har lagts till om buffertfyllning
    och om metoder för att kontrollera slutet av indatan.
    Den nya dokumentationen har sammanstÀllts i form av
    en omfattande endagarsmanual
    med exempel (samma kÀllkoder ritas ut i manpage och i online-dokumentationen).
    Svaga försök har gjorts för att förbÀttra webbplatsens lÀsbarhet pÄ telefoner.

  • Ur ett utvecklarperspektiv har re2c fĂ„tt ett mer komplett system för
    felsökning. Felsökningskoden Àr nu avstÀngd i release-versioner och
    kan aktiveras med configure-alternativet —enable-debug.

Den hĂ€r versionen har tagit lĂ„ng tid — nĂ€stan ett helt Ă„r.
Det mesta av tiden har, som alltid, gÄtt Ät till att utveckla den teoretiska grunden och skriva
artiklar «Efficient POSIX Submatch Extraction on NFA».
Algoritmerna som beskrivs i artikeln har implementerats i det experimentella biblioteket libre2c
(bygge av biblioteket och benchmark-testning Àr avstÀngt som standard och aktiveras med configure-alternativet
—enable-libs). Biblioteket Ă€r inte tĂ€nkt att vara en konkurrent till befintliga
projekt som RE2, utan som en forskningsplattform för att utveckla nya
algoritmer (som senare kan anvÀndas i re2c eller andra projekt).
Detta Àr ocksÄ praktiskt med avseende pÄ testning, benchmarking och skapande av bindningar till andra sprÄk.

Tack frÄn utvecklarna av re2c till alla som hjÀlpt till att göra denna version möjlig,
och till hela gemenskapen för idéer, buggrapporter, patchar, kÀmpaanda osv. ;]

KĂ€lla: linux.org.ru

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