re2c 1.2

Vendrede, la 2-an de aŭgusto, estis publikigita la liberigo de re2c, libera generatoro de leksikaj analiziloj por la lingvoj C kaj C++. Re2c estis skribita en 1993 fare de Peter Bamboulis kiel eksperimenta generatoro de tre rapidaj vortfaradanaliziloj, distingitaj de aliaj generatoroj per la rapideco de la generita kodo kaj nekutime fleksebla uzantinterfaco kiu permesas al analiziloj esti facile kaj efike enkonstruitaj en ekzistanta kodbazo. Ekde tiam, la projekto estis evoluigita de la komunumo kaj daŭre estas platformo por eksperimentoj kaj esplorado en la kampo de formalaj gramatikoj kaj finhavaj ŝtatmaŝinoj.

Ĉefaj novigoj en versio 1.2:

  • Aldonita nova (simpligita) maniero por kontroli la finon de la eniga datumoj
    (angle "EOF rule").
    Por tio, la agordo re2c:eof estis aldonita,
    permesas vin elekti la fina signo,
    kaj speciala $ regulo kiu pafas se la lexer
    sukcese atingis la finon de la enigo-datumoj.
    Historie, re2c disponigas elekton de pluraj konfirmmetodoj por
    fino de enigaĵoj variantaj en limigo, efikeco kaj simpleco
    aplikoj. La nova metodo estas desegnita por simpligi skribkodon, dum
    restante efika kaj vaste aplikebla. Malnovaj manieroj
    ankoraŭ funkcias kaj povas esti preferata en iuj kazoj.

  • Aldonita la kapablo inkluzivi eksterajn dosierojn per direktivo
    /*!include:re2c "dosiero.re" */ kie dosiero.re
    ĉi tiu estas la nomo de la inkluziva dosiero. Re2c serĉas dosierojn en la inkluziva dosierdosierujo,
    same kiel en la listo de vojoj specifitaj uzante la opcion -I.
    Inkluditaj dosieroj povas inkluzivi aliajn dosierojn.
    Re2c disponigas "normajn" dosierojn en la include/ dosierujo
    projekto — oni atendas, ke tie akumuliĝos utilaj difinoj
    regulaj esprimoj, io kiel la norma biblioteko.
    Ĝis nun, laŭ peto de laboristoj, unu dosiero kun difinoj de Unikodaj kategorioj estis aldonita.

  • Aldonita la kapablo generi kapdosierojn kun arbitra
    enhavo uzante la opciojn -t --type-header (aŭ taŭga
    agordoj) kaj novaj direktivoj /*!header:re2c:on*/ kaj
    /*!header:re2c:off*/. Ĉi tio povas esti utila en kazoj kie
    kiam re2c bezonas generi difinojn de variabloj, strukturoj kaj makrooj,
    uzata en aliaj tradukunuoj.

  • Re2c nun komprenas UTF8-literojn kaj signajn klasojn en regulaj esprimoj.
    Defaŭlte, re2c analizas esprimojn kiel "∀x ∃y" kiel.
    sekvenco de 1-bita Askio-signoj e2 88 80 78 20 e2 88 83 79
    (hekskodoj), kaj uzantoj devas eviti Unikodajn signojn permane:
    "u2200x u2203y". Ĉi tio estas tre maloportuna kaj neatendita por multaj
    uzantoj (kiel pruvas konstantaj cimraportoj). Do nun
    re2c provizas --input-encoding-opcion ,
    kiu ebligas al vi ŝanĝi la konduton kaj analizi "∀x ∃y" kiel
    2200 78 20 2203 79.

  • Re2c nun permesas la uzon de regulaj re2c-blokoj en -r --reuse-reĝimo.
    Ĉi tio estas oportuna se la eniga dosiero enhavas multajn blokojn kaj nur kelkajn el ili
    devas esti reuzata.

  • Nun vi povas agordi la formaton de avertoj kaj erarmesaĝoj
    uzante la novan opcion --location-format . GNU-formato estas montrata
    kiel dosiernomo:linio:kolumno:, kaj la formato MSVC kiel dosiernomo (linio,kolumno).
    Ĉi tiu funkcio povas esti utila por IDE-amantoj.
    Ankaŭ aldoniĝis --vorta opcio, kiu presas mallongan venkmesaĝon se sukcesa.

  • La "kongrueco" reĝimo kun flex estis plibonigita - kelkaj analizaj eraroj estis riparitaj kaj
    malĝusta operatora precedenco en maloftaj kazoj.
    Historie, la opcio -F --flex-support permesis al vi skribi kodon
    miksita en flex-stilo kaj re2c-stilo, kio faras iom malfacila analizado.
    Flex-kongrua reĝimo malofte estas uzata en nova kodo,
    sed re2c daŭre subtenas ĝin por retrokongruo.

  • La signoklasa subtraho operatoro / nun validas
    antaŭ vastigi la kodigon, kio permesas al ĝi esti uzata en pli granda nombro da kazoj,
    se oni uzas kodigon de varia signolonga (ekzemple UTF8).

  • La eligdosiero nun estas kreita atome: re2c kreas unue provizoran dosieron
    kaj skribas la rezulton en ĝi, kaj poste renomas la provizoran dosieron al la eligo
    unu operacio.

  • La dokumentaro estis kompletigita kaj reverkita; precipe oni aldonis novajn
    ĉapitroj pri plenigado de la bufro
    и pri manieroj kontroli la finon de enigo-datumoj.
    La nova dokumentaro estas kolektita en la formularo
    ampleksa unupaĝa manlibro
    kun ekzemploj (la samaj fontoj estas prezentitaj en la manpaĝo kaj en la reta dokumentaro).
    Malbonaj provoj estis faritaj por plibonigi la legeblecon de la retejo ĉe telefonoj.

  • El la vidpunkto de la programistoj, re2c akiris pli kompletan subsistemon
    senararigado Sencimiga kodo nun estas malŝaltita en eldonkonstruaĵoj kaj
    povas esti ebligita per la agorda opcio --enable-debug.

Ĉi tiu eldono daŭris longan tempon - preskaŭ tutan jaron.
Plej ofte, kiel ĉiam, oni elspezis por disvolvi teorian kadron kaj verki
artikoloj "Efika POSIX Submatch Extraction sur NFA".
La algoritmoj priskribitaj en la artikolo estas efektivigitaj en la eksperimenta biblioteko libre2c
(konstruado de la biblioteko kaj komparnormoj estas malebligita defaŭlte kaj estas ebligita per la agorda opcio
--enable-libs). La biblioteko ne estas konceptita kiel konkuranto al ekzistado
projektoj kiel RE2, sed kiel esplorplatformo por la disvolviĝo de novaj
algoritmoj (kiuj tiam povas esti uzataj en re2c aŭ en aliaj projektoj).
Ĝi estas ankaŭ oportuna el la vidpunkto de testado, benchmarks kaj kreado de ligoj al aliaj lingvoj.

Dankon de la programistoj de re2c al ĉiuj, kiuj helpis ĉi tiun eldonon okazi,
kaj al la komunumo ĝenerale por ideoj, cimraportoj, flikoj, moralo, ktp. ;]

fonto: linux.org.ru

Aldoni komenton