re2c 1.2

Ddydd Gwener, Awst 2, rhyddhawyd rhyddhau re2c, generadur dadansoddwyr geiriadurol am ddim ar gyfer yr ieithoedd C a C++. Ysgrifennwyd Re2c ym 1993 gan Peter Bamboulis fel generadur arbrofol o ddadansoddwyr geirfaol cyflym iawn, sy'n cael eu gwahaniaethu oddi wrth gynhyrchwyr eraill gan gyflymder y cod a gynhyrchir a rhyngwyneb defnyddiwr anarferol o hyblyg sy'n caniatΓ‘u i ddadansoddwyr gael eu hymgorffori'n hawdd ac yn effeithlon i sylfaen cod sy'n bodoli eisoes. Ers hynny, mae'r prosiect wedi'i ddatblygu gan y gymuned ac mae'n parhau i fod yn llwyfan ar gyfer arbrofion ac ymchwil ym maes gramadegau ffurfiol a pheiriannau cyflwr meidraidd.

Prif ddatblygiadau arloesol yn fersiwn 1.2:

  • Ychwanegwyd ffordd newydd (syml) i wirio am ddiwedd y data mewnbwn
    (Saesneg β€œEOF rule”).
    Ar gyfer hyn, mae'r cyfluniad re2c:eof wedi'i ychwanegu,
    yn caniatΓ‘u ichi ddewis y nod terfynell,
    a rheol $ neillduol sydd yn tanio os y lexer
    cyrraedd diwedd y data mewnbwn yn llwyddiannus.
    Yn hanesyddol, mae re2c yn darparu dewis o sawl dull dilysu ar gyfer
    diwedd mewnbynnau yn amrywio o ran cyfyngiad, effeithlonrwydd a symlrwydd
    ceisiadau. Mae'r dull newydd wedi'i gynllunio i symleiddio ysgrifennu cod, tra
    tra'n parhau i fod yn effeithiol ac yn berthnasol yn eang. Hen ffyrdd
    dal i weithio a gall fod yn well mewn rhai achosion.

  • Ychwanegwyd y gallu i gynnwys ffeiliau allanol gan ddefnyddio cyfarwyddeb
    /*!cynnwys:re2c "file.re" */ lle ffeil.re
    dyma enw'r ffeil cynnwys. Mae Re2c yn edrych am ffeiliau yn y cyfeiriadur ffeiliau gan gynnwys,
    yn ogystal ag yn y rhestr o lwybrau a nodir gan ddefnyddio'r opsiwn -I.
    Gall ffeiliau sydd wedi'u cynnwys gynnwys ffeiliau eraill.
    Mae Re2c yn darparu ffeiliau "safonol" yn y cyfeiriadur cynnwys/
    project - disgwylir y bydd diffiniadau defnyddiol yn cronni yno
    ymadroddion rheolaidd, rhywbeth fel y llyfrgell safonol.
    Hyd yn hyn, ar gais gweithwyr, ychwanegwyd un ffeil gyda diffiniadau o gategorΓ―au Unicode.

  • Ychwanegwyd y gallu i gynhyrchu ffeiliau pennawd gyda mympwyol
    cynnwys gan ddefnyddio'r opsiynau -t --type-header (neu briodol
    ffurfweddiadau) a chyfarwyddebau newydd /*! header: re2c: ar */ a
    /*!pennawd:re2c:off*/. Gall hyn fod yn ddefnyddiol mewn achosion lle
    pan fo angen i re2c gynhyrchu diffiniadau o newidynnau, strwythurau a macros,
    a ddefnyddir mewn unedau cyfieithu eraill.

  • Mae Re2c bellach yn deall llythrennau UTF8 a dosbarthiadau cymeriad mewn ymadroddion rheolaidd.
    Yn ddiofyn, mae re2c yn dosrannu ymadroddion fel "βˆ€x βˆƒy" fel.
    dilyniant o nodau ASCII 1-did e2 88 80 78 20 e2 88 83 79
    (codau hecs), ac mae'n rhaid i ddefnyddwyr ddianc rhag nodau Unicode Γ’ llaw:
    "u2200x u2203y". Mae hyn yn anghyfleus iawn ac yn annisgwyl i lawer
    defnyddwyr (fel y dangosir gan adroddiadau bygiau cyson). Felly nawr
    Mae re2c yn darparu opsiwn --mewnbwn-amgodio ,
    sy'n eich galluogi i newid yr ymddygiad a dosrannu "βˆ€x βˆƒy" fel
    2200 78 20 2203 79.

  • Mae Re2c bellach yn caniatΓ‘u defnyddio blociau re2c rheolaidd yn y modd -r --ailddefnyddio.
    Mae hyn yn gyfleus os yw'r ffeil mewnbwn yn cynnwys llawer o flociau a dim ond rhai ohonynt
    angen eu hailddefnyddio.

  • Nawr gallwch chi osod fformat rhybuddion a negeseuon gwall
    gan ddefnyddio'r opsiwn fformat --location-newydd . Mae fformat GNU yn cael ei arddangos
    fel enw ffeil: llinell: colofn :, a'r fformat MSVC fel enw ffeil (llinell, colofn).
    Gall y nodwedd hon fod yn ddefnyddiol i'r rhai sy'n hoff o DRhA.
    Mae opsiwn --verbose hefyd wedi'i ychwanegu, sy'n argraffu neges fuddugoliaeth fer os yw'n llwyddiannus.

  • Mae'r modd "cydweddoldeb" gyda fflecs wedi'i wella - mae rhai gwallau dosrannu wedi'u gosod a
    blaenoriaeth gweithredwr anghywir mewn achosion prin.
    Yn hanesyddol, roedd yr opsiwn -F --flex-support yn caniatΓ‘u ichi ysgrifennu cod
    cymysg mewn arddull fflecs ac arddull re2c, sy'n gwneud dosrannu ychydig yn anodd.
    Anaml y defnyddir modd cydnawsedd hyblyg mewn cod newydd,
    ond y mae re2c yn parhau i'w gefnogi ar gyfer cydnawsedd tuag yn ol.

  • Gweithredwr tynnu dosbarth nod / nawr yn berthnasol
    cyn ehangu'r amgodio, sy'n caniatΓ‘u iddo gael ei ddefnyddio mewn nifer fwy o achosion,
    os defnyddir amgodiad hyd nod amrywiol (er enghraifft UTF8).

  • Mae'r ffeil allbwn bellach yn cael ei chreu'n atomig: mae re2c yn creu ffeil dros dro yn gyntaf
    ac yn ysgrifennu'r canlyniad i mewn iddo, ac yna'n ailenwi'r ffeil dros dro i'r allbwn
    un llawdriniaeth.

  • Cwblhawyd ac ailysgrifennwyd y ddogfennaeth; yn arbennig, ychwanegwyd rhai newydd
    penodau am lenwi'r byffer
    ΠΈ am ffyrdd o wirio am ddiwedd data mewnbwn.
    Cesglir y ddogfennaeth newydd yn y ffurflen
    llawlyfr un dudalen cynhwysfawr
    gydag enghreifftiau (mae'r un ffynonellau wedi'u rendro yn y manpage ac yn y ddogfennaeth ar-lein).
    Mae ymdrechion gwael wedi'u gwneud i wella darllenadwyedd y wefan ar ffonau.

  • O safbwynt y datblygwyr, mae re2c wedi caffael is-system fwy cyflawn
    dadfygio Mae cod dadfygio bellach wedi'i analluogi mewn adeiladau rhyddhau a
    gellir ei alluogi gan ddefnyddio'r opsiwn ffurfweddu --enable-debug.

Cymerodd y datganiad hwn amser hir - bron i flwyddyn gyfan.
Treuliwyd y rhan fwyaf o'r amser, fel bob amser, ar ddatblygu fframwaith damcaniaethol ac ysgrifennu
erthyglau "Echdynnu POSIX Submatch Effeithlon ar NFA".
Mae'r algorithmau a ddisgrifir yn yr erthygl yn cael eu gweithredu yn y llyfrgell arbrofol libre2c
(mae adeiladu'r llyfrgell a meincnodau wedi'i analluogi yn ddiofyn ac yn cael ei alluogi gan yr opsiwn ffurfweddu
--galluogi-libs). Nid yw'r llyfrgell yn cael ei hystyried yn gystadleuydd i'r presennol
prosiectau fel RE2, ond fel llwyfan ymchwil ar gyfer datblygu rhai newydd
algorithmau (y gellir eu defnyddio wedyn mewn re2c neu mewn prosiectau eraill).
Mae hefyd yn gyfleus o safbwynt profi, meincnodau a chreu rhwymiadau i ieithoedd eraill.

Diolch gan ddatblygwyr re2c i bawb a helpodd y datganiad hwn i ddigwydd,
ac i'r gymuned yn gyffredinol am syniadau, adroddiadau bygiau, clytiau, morΓ’l, ac ati. ;]

Ffynhonnell: linux.org.ru

Ychwanegu sylw