Liberasyon re2c lexer dèlko 1.2

pran plas lage re2c, yon dèlko analizeur leksikal gratis pou lang C ak C++. Ann sonje ke re2c te ekri an 1993 pa Peter Bambulis kòm yon jeneratè eksperimantal nan analizeur leksik trè vit, diferan de lòt jeneratè nan vitès la nan kòd la pwodwi ak yon koòdone itilizatè ekstraòdinè fleksib ki pèmèt analizè yo dwe fasil ak efikasman entegre nan yon ki deja egziste. baz kòd. Depi lè sa a, pwojè a te devlope pa kominote a epi li kontinye ap yon platfòm pou eksperyans ak rechèch nan jaden an nan gramè fòmèl ak machin eta fini.

Preparasyon pou lage a te pran prèske yon ane antye. Pifò nan tan an, kòm toujou, te pase sou devlope yon fondasyon teyorik ak ekri
atik "Ekstraksyon efikas POSIX Submatch sou NFA".
Algoritm yo dekri nan atik la aplike nan bibliyotèk eksperimantal libre2c
(Konstriksyon bibliyotèk la ak tès pèfòmans yo enfim pa default epi li pèmèt opsyon konfigirasyon "--enable-libs" la). Bibliyotèk la pa fèt kòm yon konkiran nan pwojè ki deja egziste tankou RE2, men kòm yon platfòm rechèch pou devlopman nouvo.
algoritm (ki ka Lè sa a, itilize nan re2c oswa nan lòt pwojè). Li se tou pratik nan pwen de vi nan tès, mezire pèfòmans ak kreye obligatwa nan lòt lang.

Inovasyon prensipal yo nan vèsyon re2c 1.2:

  • Te ajoute yon nouvo metòd senplifye pou tcheke fen done antre ("règ EOF"). Pou sa, yo te ajoute "re2c:eof" konfigirasyon an,
    pèmèt ou chwazi karaktè tèminal la,
    ak yon règ espesyal "$", ki se deklanche si lexer la
    avèk siksè rive nan fen done yo antre.
    Istorikman, re2c bay yon chwa nan plizyè metòd verifikasyon pou
    fen nan entrain varye nan limit, efikasite ak senplisite
    aplikasyon yo. Nouvo metòd la fèt pou senplifye ekri kòd, pandan
    pandan y ap rete efikas ak lajman aplikab. Ansyen fason
    toujou travay epi yo ka pi pito nan kèk ka.

  • Te ajoute kapasite pou mete fichye ekstèn lè l sèvi avèk yon direktiv
    "/*!include:re2c "file.re" */", kote "file.re" se non fichye a pou mete. Re2c chèche fichye ki nan anyè dosye ki gen ladan yo,
    osi byen ke nan lis la nan chemen espesifye lè l sèvi avèk "-I" opsyon an.
    Fichye ki enkli yo ka genyen lòt dosye.
    Re2c bay fichye "estanda" nan anyè "include/".
    pwojè - li espere ke definisyon itil pral akimile la
    ekspresyon regilye, yon bagay tankou bibliyotèk estanda a.
    Jiskaprezan, sou demann travayè yo, yo te ajoute yon dosye ki gen definisyon kategori Unicode.

  • Te ajoute kapasite nan jenere dosye header ak abitrè
    kontni lè l sèvi avèk opsyon "-t --type-header" (oswa apwopriye
    konfigirasyon) ak nouvo direktiv "/*!header:re2c:on*/" ak
    "/*! header:re2c:off*/". Sa a ka itil nan ka kote
    lè re2c bezwen jenere definisyon varyab, estrikti ak makro,
    itilize nan lòt inite tradiksyon.

  • Re2c kounye a konprann literal UTF8 ak klas karaktè nan ekspresyon regilye.
    Pa default, re2c analize ekspresyon tankou "∀x ∃y" kòm
    sekans karaktè ASCII 1-bit "e2 88 80 78 20 e2 88 83 79"
    (kod hex), ak itilizatè yo oblije chape karaktè Unicode manyèlman:
    "\\u2200x\\u2203y". Sa a se trè konvenyan ak inatandi pou anpil moun
    itilizatè yo (jan sa evidan pa rapò ensèk konstan). Se konsa, kounye a
    re2c bay opsyon "--input-encoding {ascii | utf8}",
    ki pèmèt ou chanje konpòtman an epi analize "∀x ∃y" kòm
    "2200 78 20 2203 79."

  • Re2c kounye a pèmèt blòk re2c regilye yo dwe itilize nan mòd "-r --reuse".
    Sa a se pratik si dosye a opinyon gen anpil blòk ak sèlman kèk nan yo
    bezwen réutilisation.

  • Koulye a, ou ka mete fòma avètisman ak mesaj erè
    itilize nouvo opsyon "--location-format {gnu | msvc}". Fòma GNU parèt
    kòm "filename:line:column:", ak fòma MSVC kòm "filename(liy,colonn)".
    Karakteristik sa a ka itil pou rayisab IDE.
    Yon opsyon "--verbose" te ajoute tou, ki montre yon mesaj viktwa kout si yo reyisi.

  • Mòd "konpatibilite" ak flex te amelyore - kèk erè analiz yo te ranje ak
    move priyorite operatè nan ka ki ra.
    Istorikman, opsyon "-F --flex-suppor" te pèmèt ou ekri kòd
    melanje nan style flex ak style re2c, ki fè analiz yon ti kras difisil.
    Mòd konpatibilite Flex raman itilize nan nouvo kòd,
    men re2c kontinye sipòte li pou konpatibilite bak.

  • Operatè soustraksyon klas karaktè "/" kounye a aplike
    anvan agrandi kodaj la, ki pèmèt li yo dwe itilize nan yon pi gwo kantite ka,
    si yo itilize yon kodaj longè karaktè varyab (pa egzanp UTF8).

  • Se fichye pwodiksyon an kounye a kreye atomik: re2c kreye yon dosye tanporè an premye
    epi ekri rezilta a nan li, ak Lè sa a, chanje non dosye tanporè a nan pwodiksyon an
    yon sèl operasyon.

  • Yo te ranpli dokiman an epi reekri; an patikilye, yo te ajoute nouvo
    chapit sou http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и sou fason yo tcheke pou fen done antre.
    Nouvo dokiman an kolekte sou fòm lan
    yon gid konplè yon paj
    ak egzanp (menm sous yo rann nan paj man ak nan dokiman an sou entènèt).
    Yo te fè tantativ pòv pou amelyore lizibilite sit la sou telefòn yo.

  • Soti nan pwen de vi devlopè yo, re2c te akeri yon subsystem pi konplè
    debogaj Kòd debogaj kounye a enfim nan lage bati ak
    ka aktive lè l sèvi avèk opsyon nan konfigirasyon "--enable-debug".

Sous: opennet.ru

Add nouvo kòmantè