Liberigo de re2c lexer-generatoro 1.2

okazis liberigi re2c, libera vortfarada analizilo generatoro por C kaj C++ lingvoj. Memoru, ke re2c estis skribita en 1993 fare de Peter Bambulis kiel eksperimenta generatoro de tre rapidaj vortfaradanaliziloj, diferencantaj de aliaj generatoroj en la rapideco de la generita kodo kaj nekutime fleksebla uzantinterfaco kiu permesas al analiziloj esti facile kaj efike integritaj en ekzistantan kodon. bazo. 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.

Preparo por la liberigo daŭris 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 agado-testoj estas malebligita defaŭlte kaj estas ebligita per la agorda opcio "—enable-libs"). La biblioteko ne estas celita kiel konkuranto al ekzistantaj projektoj kiel RE2, sed kiel esplora platformo 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, mezurado de rendimento kaj kreado de ligoj al aliaj lingvoj.

Ĉefaj novigoj en versio re2c 1.2:

  • Aldonis novan simpligitan metodon por kontroli la finon de enigo-datumoj ("EOF-regulo"). Por tio, la agordo "re2c:eof" estis aldonita,
    permesas vin elekti la fina signo,
    kaj speciala regulo “$”, kiu estas ekigita se la lekser
    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 "file.re" */", kie "file.re" estas la nomo de la dosiero inkludita. 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 dosierujo "include/".
    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 la opcion "--input-encoding {ascii | utf8}",
    kiu ebligas al vi ŝanĝi la konduton kaj analizi “∀x ∃y” kiel
    "2200 78 20 2203 79."

  • Re2c nun permesas al regulaj re2c-blokoj esti uzataj 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 | msvc}". GNU-formato estas montrata
    kiel "dosiernomo:linio:kolumno:", kaj la MSVC-formato kiel "dosiernomo(linio,kolumno)".
    Ĉi tiu funkcio povas esti utila por IDE-amantoj.
    Ankaŭ aldoniĝis opcio "--vorta", kiu montras 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-suppor" 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 http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и pri manieroj kontroli la finon de enigo-datumoj.
    La nova dokumentaro estas kolektita en la formularo
    ampleksa unupaĝa gvidilo
    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".

fonto: opennet.ru

Aldoni komenton