Kuburitswa kweiyo re2c 1.2 lexical analyzer jenareta

zvakaitika kusunungura re2c, yemahara lexical analyzer jenareta yeC uye C ++ mitauro. Yeuka kuti re2c yakanyorwa muna 1993 naPeter Bambulis sejenareta yekuedza yeanokurumidza lexical analyzers, yakasiyana nemamwe majenereta mukumhanya kwekodhi yakagadzirwa uye inoshanduka-shanduka mushandisi interface inobvumira vanoongorora kuti vabatanidzwe zviri nyore uye zvinobudirira mukodhi iripo. base. Kubva ipapo, chirongwa ichi chakagadziridzwa nenharaunda uye chinoramba chiri chikuva chekuyedza uye tsvagiridzo mundima yezvimiro zvepamutemo nemichina yenyika.

Kugadzirira kubudiswa kwacho kwakatora rinenge gore rose. Nguva zhinji, senguva dzose, yaishandiswa pakugadzira dhizaini nekunyora
zvinyorwa "Inoshanda POSIX Submatch Kubvisa paNFA".
Iwo algorithms anotsanangurwa muchinyorwa anoitwa muyedzo raibhurari libre2c
(kuvaka raibhurari uye bvunzo dzekuita kwakavharwa nekusarudzika uye kunogoneswa ne "-enable-libs" gadzirisa sarudzo). Iyo raibhurari haina kuitirwa semukwikwidzi kumapurojekiti aripo akadai seRE2, asi senzvimbo yekutsvagisa yekuvandudzwa kwezvitsva.
algorithms (iyo inogona kuzoshandiswa mu re2c kana mune mamwe mapurojekiti). Izvo zvakare zviri nyore kubva pakuona kwekuyedza, kuyera kuita uye kugadzira zvisungo kune mimwe mitauro.

Hunhu hutsva mushanduro re2c 1.2:

  • Yakawedzera nzira itsva yakarerutswa yekutarisa kupera kwedata rekuisa ("EOF mutemo"). Kune izvi, iyo "re2c: eof" kumisikidzwa yakawedzerwa,
    inobvumidza iwe kusarudza iyo terminal character,
    uye mutemo wakakosha "$", iyo inokonzeresa kana iyo lexer
    zvakabudirira kusvika kumagumo ekuisa data.
    Nhoroondo, re2c inopa sarudzo yedzakawanda nzira dzekusimbisa dze
    kupera kwezvinopinza zvakasiyana mukuganhurira, kunyatsoita uye nyore
    applications. Iyo nzira nyowani yakagadzirirwa kurerutsa kunyora kodhi, uku
    nepo ichiri kushanda uye inoshanda zvakanyanya. Nzira dzekare
    ichiri kushanda uye inogona kufarirwa mune zvimwe zviitiko.

  • Yakawedzera kugona kusanganisa mafaera ekunze uchishandisa rairo
    "/*!include:re2c "file.re" */", apo "file.re" ndiro zita refaira rinofanira kuiswa. Re2c inotsvaga mafaera mune inosanganisira faira dhairekitori,
    uyewo mune runyorwa rwenzira dzakatsanangurwa uchishandisa "-I" sarudzo.
    Mafaira akabatanidzwa anogona kusanganisira mamwe mafaira.
    Re2c inopa "standard" mafaera mu "include/" dhairekitori
    purojekiti - zvinotarisirwa kuti tsananguro dzinobatsira dzichaungana ipapo
    matauriro enguva dzose, chimwe chinhu chakafanana neraibhurari yakajairika.
    Parizvino, pakukumbirwa kwevashandi, faira rimwe rine tsananguro dzezvikamu zveUnicode rakawedzerwa.

  • Yakawedzera kugona kugadzira mafaira emusoro nekupokana
    zvemukati uchishandisa iyo "-t --type-header" sarudzo (kana zvakakodzera
    zvigadziriso) uye mitsva mitsva "/*!header:re2c:on*/" uye
    "/*!header:re2c:off*/". Izvi zvinogona kubatsira mune zviitiko apo
    apo re2c inoda kuburitsa tsananguro dzezvakasiyana, zvimiro uye macros,
    inoshandiswa mune mamwe mayuniti eshanduro.

  • Re2c ikozvino inonzwisisa UTF8 literals uye makirasi ehunhu mumataurirwo akajairika.
    Nekumisikidza, re2c inoparadzanisa mataurirwo akaita se "βˆ€x βˆƒy" se
    kutevedzana kwe1-bit ASCII mavara β€œe2 88 80 78 20 e2 88 83 79”
    (hex makodhi), uye vashandisi vanofanirwa kutiza mavara eUnicode nemaoko:
    β€œ\\u2200x \\u2203y." Izvi zvinonetsa uye hazvitarisirwe kune vakawanda
    vashandisi (sezvinoratidzwa nekusingaperi bug mishumo). Saka zvino
    re2c inopa iyo sarudzo "--input-encoding {ascii | utf8}",
    iyo inokutendera iwe kuti uchinje maitiro uye patsanura "βˆ€x βˆƒy" se
    "2200 78 20 2203 79."

  • Re2c ikozvino inobvumira akajairwa re2c zvidhinha kuti zvishandiswe mu "-r --reuse" modhi.
    Izvi zviri nyore kana iyo yekuisa faira ine akawanda mabhuroki uye chete mamwe acho
    inoda kushandiswazve.

  • Iye zvino unogona kuseta fomati yeyambiro uye meseji yekukanganisa
    uchishandisa sarudzo nyowani "--location-format {gnu | msvc}". GNU fomati inoratidzwa
    se "filename:line:column:", uye iyo MSVC fomati se "filename(mutsara,column)".
    Iyi ficha inogona kubatsira kune vanoda IDE.
    Sarudzo ye "--verbose" yawedzerwawo, inoratidza meseji pfupi yekukunda kana ikabudirira.

  • Iyo "kuenderana" modhi ine flex yakagadziridzwa - mamwe zvikanganiso zveparsing akagadziriswa uye
    zvisiri izvo mushandisi precedence mune zvisingawanzo kuitika.
    Nhoroondo, iyo "-F --flex-support" sarudzo yakabvumidza iwe kunyora kodhi
    yakavhenganiswa muchimiro cheflex uye re2c chimiro, chinoita kuti kupatsanura kuve kwakaoma.
    Flex inoenderana modhi haiwanzo kushandiswa mukodhi nyowani,
    asi re2c inoramba ichiitsigira kuti ienderane kumashure.

  • Iyo character class yekubvisa opareta "/" yava kushanda
    usati wawedzera encoding, iyo inobvumira kuti ishandiswe mune yakakura nhamba yemakesi,
    kana kuchinjika kwemavara kureba kuchishandiswa (semuenzaniso UTF8).

  • Iyo yakabuda faira ikozvino yakagadzirwa atomu: re2c inogadzira yenguva faira kutanga
    uye anonyora mhedzisiro mairi, uye obva atumidza zita renguva faira kune inobuda
    oparesheni imwe.

  • Zvinyorwa zvakapedzwa uye kunyorwazve; kunyanya, matsva akawedzerwa
    zvitsauko pamusoro http://re2c.org/manual/manual.html#buffer-refilling Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€Π°
    ΠΈ nezve nzira dzekutarisa kupera kwekupinza data.
    Zvinyorwa zvitsva zvinounganidzwa mufomu
    gwara rakakwana peji rimwe
    nemienzaniso (manyoro mamwechete anopihwa mumanpage uye mune online zvinyorwa).
    Kuedza kwakashata kwakaitwa kuvandudza kuverenga kwesaiti pamafoni.

  • Kubva pane maonero evagadziri, re2c yakawana imwe yakakwana subsystem
    debugging Debugging kodhi ikozvino yakaremara mukuburitswa kuvaka uye
    inogona kugoneswa uchishandisa iyo yekumisikidza sarudzo "-enable-debug".

Source: opennet.ru

Voeg