re2c 1.2

Nhar il-Ġimgħa, 2 ta' Awwissu, ħareġ ir-rilaxx ta' re2c, ġeneratur b'xejn ta' analizzaturi lessiċi għal-lingwi C u C++. Re2c inkiteb fl-1993 minn Peter Bamboulis bħala ġeneratur sperimentali ta 'analizzaturi lessikali veloċi ħafna, distinti minn ġeneraturi oħra mill-veloċità tal-kodiċi ġenerat u interface tal-utent flessibbli mhux tas-soltu li jippermetti li l-analizzaturi jiġu inkorporati faċilment u b'mod effiċjenti f'bażi ​​ta' kodiċi eżistenti. Minn dakinhar, il-proġett ġie żviluppat mill-komunità u jkompli jkun pjattaforma għal esperimenti u riċerka fil-qasam tal-grammatika formali u magni tal-istat finit.

Innovazzjonijiet ewlenin fil-verżjoni 1.2:

  • Żid mod ġdid (simplifikat) biex tiċċekkja għat-tmiem tad-dejta tal-input
    (Ir-regola EOF bl-Ingliż).
    Għal dan, il-konfigurazzjoni re2c:eof ġiet miżjuda,
    jippermettilek tagħżel il-karattru tat-terminal,
    u regola $ speċjali li tispara jekk il-lexer
    laħaq b'suċċess it-tmiem tad-dejta tal-input.
    Storikament, re2c jipprovdi għażla ta 'diversi metodi ta' verifika għal
    tmiem ta' inputs li jvarjaw fil-limitazzjoni, l-effiċjenza u s-sempliċità
    applikazzjonijiet. Il-metodu l-ġdid huwa ddisinjat biex jissimplifika l-kitba tal-kodiċi, filwaqt li
    filwaqt li tibqa’ effettiva u applikabbli b’mod wiesa’. Modi qodma
    għadhom jaħdmu u jistgħu jkunu preferuti f'xi każijiet.

  • Żid il-ħila li tinkludi fajls esterni bl-użu ta 'direttiva
    /*!include:re2c "file.re" */ fejn file.re
    dan huwa l-isem tal-fajl tal-inklużjoni. Re2c ifittex fajls fid-direttorju tal-fajls inklużi,
    kif ukoll fil-lista ta' mogħdijiet speċifikati bl-użu tal-għażla -I.
    Fajls inklużi jistgħu jinkludu fajls oħra.
    Re2c jipprovdi fajls "standard" fid-direttorju include/
    proġett - huwa mistenni li hemm definizzjonijiet utli jakkumulaw
    espressjonijiet regolari, xi ħaġa bħall-librerija standard.
    S'issa, fuq talba tal-ħaddiema, ġie miżjud fajl wieħed b'definizzjonijiet ta' kategoriji Unicode.

  • Miżjud il-ħila li tiġġenera fajls header b'arbitrarju
    kontenut li juża l-għażliet -t --type-header (jew xieraq
    konfigurazzjonijiet) u direttivi ġodda /*!header:re2c:on*/ u
    /*!header:re2c:off*/. Dan jista 'jkun utli f'każijiet fejn
    meta re2c jeħtieġ li jiġġenera definizzjonijiet ta’ varjabbli, strutturi u makro,
    użati f'unitajiet ta' traduzzjoni oħra.

  • Re2c issa jifhem letterali UTF8 u klassijiet ta 'karattri f'espressjonijiet regolari.
    B'mod awtomatiku, re2c janalizza espressjonijiet bħal "∀x ∃y" bħala.
    sekwenza ta' karattri ASCII ta' 1 bit e2 88 80 78 20 e2 88 83 79
    (kodiċi hex), u l-utenti jridu jaħarbu l-karattri Unicode manwalment:
    "u2200x u2203y". Dan huwa inkonvenjenti ħafna u mhux mistenni għal ħafna
    utenti (kif evidenzjat minn rapporti ta 'bug kostanti). Allura issa
    re2c jipprovdi għażla --input-encoding ,
    li jippermettilek tibdel l-imġieba u parse "∀x ∃y" bħala
    2200 78 20 2203 79.

  • Re2c issa jippermetti l-użu ta 'blokki re2c regolari fil-mod -r --reuse.
    Dan huwa konvenjenti jekk il-fajl tal-input fih ħafna blokki u wħud minnhom biss
    jeħtieġ li jerġa' jintuża.

  • Issa tista 'tissettja l-format ta' twissijiet u messaġġi ta 'żball
    billi tuża l-għażla l-ġdida --location-format . Il-format GNU huwa muri
    bħala isem tal-fajl:linja:kolonna:, u l-format MSVC bħala isem tal-fajl(linja,kolonna).
    Din il-karatteristika tista 'tkun utli għal min iħobb l-IDE.
    Ġiet miżjuda wkoll għażla --verbose, li tipprintja messaġġ qasir ta 'rebħa jekk tirnexxi.

  • Il-mod ta '"kompatibilità" mal-flex ġie mtejjeb - xi żbalji ta' parsing ġew iffissati u
    preċedenza mhux korretta tal-operatur f'każijiet rari.
    Storikament, l-għażla -F --flex-support ippermettiet li tikteb kodiċi
    imħallat fl-istil flex u stil re2c, li jagħmel parsing ftit diffiċli.
    Il-mod ta 'kompatibilità Flex rarament jintuża f'kodiċi ġdid,
    iżda re2c tkompli tappoġġjaha għal kompatibilità b'lura.

  • L-operatur tat-tnaqqis tal-klassi tal-karattri / issa japplika
    qabel tespandi l-kodifikazzjoni, li tippermetti li tintuża f'numru akbar ta 'każijiet,
    jekk tintuża kodifikazzjoni ta' tul ta' karattri varjabbli (pereżempju UTF8).

  • Il-fajl tal-output issa huwa maħluq atomikament: re2c joħloq fajl temporanju l-ewwel
    u jikteb ir-riżultat fih, u mbagħad tibdel l-isem tal-fajl temporanju għall-output
    operazzjoni waħda.

  • Id-dokumentazzjoni tlestiet u miktuba mill-ġdid; b'mod partikolari, ġew miżjuda oħrajn ġodda
    kapitoli dwar il-mili tal-buffer
    и dwar modi biex tiċċekkja għat-tmiem tad-dejta tal-input.
    Id-dokumentazzjoni l-ġdida tinġabar fil-formola
    manwal komprensiv ta' paġna waħda
    b'eżempji (l-istess sorsi huma mogħtija fil-manpage u fid-dokumentazzjoni onlajn).
    Saru tentattivi ħżiena biex titjieb il-leġibbiltà tas-sit fuq it-telefowns.

  • Mill-aspett tal-iżviluppaturi, re2c akkwista sottosistema aktar kompleta
    debugging Il-kodiċi tad-debugging issa huwa diżattivat fil-bini tar-rilaxx u
    jista 'jiġi attivat billi tuża l-għażla ta' konfigurazzjoni --enable-debug.

Dan ir-rilaxx ħa ħafna żmien - kważi sena sħiħa.
Il-biċċa l-kbira tal-ħin, bħal dejjem, intefaq fuq l-iżvilupp ta’ qafas teoretiku u l-kitba
oġġetti "Estrazzjoni Effiċjenti ta' Submatch POSIX fuq NFA".
L-algoritmi deskritti fl-artikolu huma implimentati fil-librerija sperimentali libre2c
(il-bini tal-librerija u l-benchmarks huwa diżattivat awtomatikament u huwa attivat mill-għażla tal-konfigurazzjoni
--enable-libs). Il-librerija mhix maħsuba bħala kompetitur għall-eżistenti
proġetti bħal RE2, iżda bħala pjattaforma ta 'riċerka għall-iżvilupp ta' ġodda
algoritmi (li mbagħad jistgħu jintużaw f're2c jew fi proġetti oħra).
Huwa wkoll konvenjenti mil-lat ta 'ttestjar, benchmarks u ħolqien ta' rbit għal lingwi oħra.

Grazzi mill-iżviluppaturi re2c lil kull min għen din ir-rilaxx iseħħ,
u lill-komunità b'mod ġenerali għal ideat, rapporti ta 'bugs, garża, moral, eċċ. ;]

Sors: linux.org.ru

Żid kumment