Rakirina re2c lexer generator 1.2

pêk hat berdan re2c, ji bo zimanên C û C++ jeneratorek analîzkerek ferhengî ya belaş. Em ji bîr mekin ku re2c di sala 1993-an de ji hêla Peter Bambulis ve wekî jeneratorek ceribandinek analîzkerên ferhengî yên pir bilez hate nivîsandin, ku ji jeneratorên din di leza koda hilberandî de û navbeynek bikarhênerek bêkêmasî ya nermik cuda ye ku dihêle ku analîzker bi hêsanî û bikêrhatî di nav analîzek heyî de bêne yek kirin. bingeha kodê. Ji hingê ve, proje ji hêla civakê ve hatî pêşve xistin û berdewam dike ku bibe platformek ji bo ceribandin û lêkolînan di warê rêzimanên fermî û makîneyên dewleta dawî de.

Amadekirina serbestberdanê hema hema salek dirêj kir. Piranîya demê, wek her carê, ji bo pêşxistina çarçoveyek teorîk û nivîsandinê derbas dibû
gotar "Derxistina POSIX Submatchê ya bi bandor li ser NFA".
Algorîtmayên ku di gotarê de têne vegotin di pirtûkxaneya ezmûnî libre2c de têne bicîh kirin
(avakirina pirtûkxaneyê û ceribandinên performansê ji hêla xwerû ve neçalak e û ji hêla vebijarka veavakirina "--enable-libs" ve tê çalak kirin). Pirtûkxane ne wekî hevrikek projeyên heyî yên wekî RE2, lê wekî platformek lêkolînê ji bo pêşkeftina yên nû ye.
algorîtmayan (ku wê hingê di re2c an di projeyên din de têne bikar anîn). Di heman demê de ji hêla ceribandin, pîvandina performansê û afirandina girêdanên bi zimanên din ve jî hêsan e.

Nûvekirinên sereke di guhertoya re2c 1.2 de:

  • Rêbazek nû ya hêsankirî ji bo kontrolkirina dawiya daneya têketinê ("Qîda EOF") lê zêde kir. Ji bo vê yekê, veavakirina "re2c: eof" hate zêdekirin,
    dihêle hûn karaktera termînalê hilbijêrin,
    û qaîdeyek taybetî "$", ku heke lexer were derxistin
    bi serfirazî gihîştiye dawiya daneya têketinê.
    Ji hêla dîrokî ve, re2c ji bo gelek awayên verastkirinê vebijarkek peyda dike
    dawiya inputan di sînorkirin, karîgerî û sadebûnê de cihêreng in
    sepanên. Rêbaza nû ji bo hêsankirina koda nivîsandinê hatî çêkirin, dema
    di heman demê de bi bandor û bi berfirehî tê sepandin. Rêyên kevn
    hîn jî dixebitin û dibe ku di hin rewşan de bêne tercîh kirin.

  • Kapasîteya tevlêkirina pelên derveyî bi karanîna rêwerzek zêde kir
    "/*!include:re2c "file.re" */", ku "file.re" navê pelê ye ku tê de ye. Re2c li pelan di nav pelrêça pelê de digere,
    û her weha di navnîşa rêyên ku bi karanîna vebijarka "-I" ve hatî destnîşan kirin.
    Dibe ku pelên tê de pelên din jî hebin.
    Re2c pelên "standard" di pelrêça "include/" de peyda dike
    proje - tê payîn ku pênaseyên kêrhatî li wir kom bibin
    îfadeyên bi rêkûpêk, tiştek mîna pirtûkxaneya standard.
    Heya nuha, li ser daxwaza karkeran, pelek bi pênaseyên kategoriyên Unicode hatî zêdekirin.

  • Kapasîteya çêkirina pelên sernavê bi kêfî zêde kir
    naverok bi karanîna vebijarkên "-t --type-header" (an guncan
    veavakirin) û rêwerzên nû "/*!header:re2c:on*/" û
    "/*!header:re2c:off*/". Ev dibe ku di rewşên ku tê de kêrhatî be
    dema ku re2c hewce dike ku pênaseyên guhêrbar, avahî û makroyan biafirîne,
    di yekeyên din ên wergerê de tê bikaranîn.

  • Re2c naha peyvên UTF8 û dersên karakteran di bêjeyên birêkûpêk de fam dike.
    Ji hêla xwerû ve, re2c îfadeyên mîna "∀x ∃y" wekî parsek dike
    rêza tîpên ASCII 1-bit "e2 88 80 78 20 e2 88 83 79"
    (kodên hex), û bikarhêner neçar in ku bi destan ji karakterên Unicode birevin:
    "\\ u2200x\\ u2203y". Ev ji bo gelek kesan pir nerehet û nediyar e
    bikarhêneran (wekî ku ji hêla raporên xeletiyên domdar ve têne xuyang kirin). Îcar niha
    re2c vebijarka "--input-encoding {ascii | utf8}",
    ku dihêle hûn tevgerê biguherînin û "∀x ∃y" wekî parsek bikin
    "2200 78 20 2203 79."

  • Re2c naha dihêle ku blokên re2c yên birêkûpêk di moda "-r --reuse" de werin bikar anîn.
    Ger pelê têketinê gelek blokan û tenê hin ji wan dihewîne ev hêsan e
    pêdivî ye ku ji nû ve were bikar anîn.

  • Naha hûn dikarin formata hişyarî û peyamên xeletiyê bicîh bikin
    bikaranîna vebijarka nû "--location-format {gnu | msvc}". Forma GNU tê nîşandan
    wekî "navê pelê: xet: stûn:", û forma MSVC wekî "navê pelê(xêz, stûn)".
    Dibe ku ev taybetmendî ji bo hezkirên IDE bikêr be.
    Vebijêrkek "--verbose" jî hate zêdekirin, ku heke serketî be peyamek serfiraziyek kurt nîşan dide.

  • Moda "lihevhatî" ya bi flex re çêtir bûye - hin xeletiyên parskirinê hatine rastkirin û
    di rewşên hindik de pêşengiya operatorê çewt.
    Di dîrokê de, vebijarka "-F --flex-piştgir" hişt ku hûn kodê binivîsin
    di şêwaza flex û şêwaza re2c de tevlihev dibe, ku parskirinê hinekî dijwar dike.
    Di koda nû de moda lihevhatina Flex kêm kêm tê bikar anîn,
    lê re2c ji bo lihevhatina paşverû piştgirîya wê didomîne.

  • Operatora jêbirina sinifa karakterê "/" niha derbas dibe
    berî berfirehkirina şîfrekirinê, ku dihêle ku ew di hejmareke mezintir de were bikar anîn,
    ger kodkirina dirêjahiya karaktera guhêrbar were bikar anîn (mînak UTF8).

  • Pelê derketinê naha bi atomî tê afirandin: re2c pêşî pelek demkî diafirîne
    û encamê tê de dinivîse, û dûv re navê pelê demkî vediguhêze encam
    yek operasyon.

  • Belgekirin hat temamkirin û ji nû ve hat nivîsandin; bi taybetî jî yên nû hatin zêdekirin
    beşên li ser http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и li ser awayên kontrolkirina dawiya daneya têketinê.
    Belgeyên nû di formê de têne berhev kirin
    rêbernameyek yek-rûpelî ya berfireh
    bi mînakan (heman çavkanî di manpage û di belgeyên serhêl de têne pêşkêş kirin).
    Hewldanên nebaş ji bo baştirkirina xwendina malperê li ser têlefonan hatine kirin.

  • Ji hêla pêşdebiran ve, re2c binepergalek bêkêmasî bi dest xistiye
    debugging Naha koda xeletkirinê di avahîyên berdanê de neçalak e
    dikare bi karanîna vebijarka mîhengê "--enable-debug" were çalak kirin.

Source: opennet.ru

Add a comment