Баровардани генератори анализатори лексикии re2c 1.2

сурат гирифт релиз re2c, генератори ройгони анализатори лексикӣ барои забонҳои C ва C++. Ёдовар мешавем, ки re2c соли 1993 аз ҷониби Питер Бамбулис ҳамчун генератори таҷрибавии анализаторҳои лексикии хеле зуд навишта шудааст, ки аз генераторҳои дигар бо суръати коди тавлидшуда ва интерфейси ғайриоддии корбар фарқ мекунад, ки имкон медиҳад анализаторҳо ба осонӣ ва самаранок ба коди мавҷуда ворид карда шаванд. асос. Аз он вақт инҷониб, лоиҳа аз ҷониби ҷомеа таҳия шудааст ва ҳамчун як платформа барои таҷрибаҳо ва тадқиқот дар соҳаи грамматикаи расмӣ ва мошинҳои ниҳоии давлатӣ мебошад.

Тайёрй ба нашр кариб як сол давом кард. Бештари вақт, чун ҳамеша, барои таҳияи чаҳорчӯбаи назариявӣ ва навиштан сарф мешуд
мақолаҳо"Истихроҷи пурсамари POSIX Submatch дар NFA".
Алгоритмҳои дар мақола тавсифшуда дар китобхонаи таҷрибавии libre2c амалӣ карда мешаванд
(сохтани китобхона ва санҷишҳои иҷроиш бо нобаёнӣ ғайрифаъол аст ва бо опсияи конфигуратсияи "—enable-libs" фаъол карда мешавад). Китобхона на ҳамчун рақиби лоиҳаҳои мавҷуда ба монанди RE2, балки ҳамчун платформаи тадқиқотӣ барои таҳияи лоиҳаҳои нав пешбинӣ шудааст.
алгоритмҳо (ки баъдан онҳоро дар re2c ё дар дигар лоиҳаҳо истифода бурдан мумкин аст). Он инчунин аз нуқтаи назари санҷиш, чен кардани кор ва эҷоди пайвандҳо ба забонҳои дигар қулай аст.

Навовариҳои асосӣ дар версияи re2c 1.2:

  • Усули нави соддакардашуда барои тафтиши охири маълумоти воридотӣ ("қоидаи EOF") илова карда шуд. Барои ин, конфигуратсияи "re2c:eof" илова карда шудааст,
    ба шумо имкон медиҳад, ки аломати терминалро интихоб кунед,
    ва ќоидаи махсуси «$», ки андохта мешавад, агар lexer
    бомуваффакият ба охир расидани маълумоти дохилшаванда расид.
    Таърихан, re2c интихоби якчанд усулҳои санҷишро барои
    охири воридот аз рӯи маҳдудият, самаранокӣ ва соддагӣ фарқ мекунад
    барномаҳо. Усули нав барои содда кардани рамзи навиштан тарҳрезӣ шудааст, дар ҳоле ки
    дар ҳоле ки самаранок ва васеъ татбиқшаванда боқӣ мемонад. Роҳҳои кӯҳна
    то ҳол кор мекунад ва метавонад дар баъзе мавридҳо бартарӣ диҳад.

  • Имконияти дохил кардани файлҳои беруна бо истифода аз дастур илова карда шуд
    "/*!include:re2c "file.re" */", ки "file.re" номи файлест, ки бояд дохил карда шавад. Re2c файлҳоро дар феҳристи файлҳо ҷустуҷӯ мекунад,
    инчунин дар рӯйхати роҳҳое, ки бо истифода аз опсияи “-I” муайян шудаанд.
    Файлҳои дохилшуда метавонанд файлҳои дигарро дар бар гиранд.
    Re2c файлҳои "стандартӣ" -ро дар директорияи "include/" таъмин мекунад
    лоиҳа - интизор меравад, ки таърифҳои муфид дар он ҷо ҷамъ шаванд
    ифодаҳои муқаррарӣ, чизе монанди китобхонаи стандартӣ.
    То ҳол бо дархости коргарон як файл бо таърифҳои категорияҳои Юникод илова карда шудааст.

  • Қобилияти тавлиди файлҳои сарлавҳа бо ихтиёрӣ илова карда шуд
    мундариҷа бо истифода аз имконоти "-t --type-header" (ё мувофиқ
    конфигуратсияҳо) ва дастурҳои нав "/*!header:re2c:on*/" ва
    "/*!сарлавҳа:re2c:off*/". Ин метавонад дар ҳолатҳое муфид бошад
    вақте ки re2c бояд таърифҳои тағирёбандаҳо, сохторҳо ва макросҳоро тавлид кунад,
    дар дигар воҳидҳои тарҷума истифода мешавад.

  • Re2c ҳоло ҳарфҳои UTF8 ва синфҳои аломатҳоро дар ифодаҳои муқаррарӣ мефаҳмад.
    Бо нобаёнӣ, re2c ибораҳоро ба мисли "∀x ∃y" ҳамчун таҳлил мекунад
    пайдарпаии аломатҳои 1-битии ASCII "e2 88 80 78 20 e2 88 83 79"
    (рамзҳои шонздаҳӣ) ва корбарон бояд аз аломатҳои Юникод дастӣ гурезанд:
    "\\u2200x\\u2203y". Ин барои бисёриҳо хеле нороҳат ва ғайричашмдошт аст
    истифодабарандагон (чунон ки гузоришҳои доимии хатогиҳо шаҳодат медиҳанд). Пас ҳоло
    re2c имкон медиҳад, ки "--input-encoding {ascii | utf8}",
    ки ба шумо имкон медиҳад, ки рафторро тағир диҳед ва "∀x ∃y"-ро ҳамчун
    «2200 78 20 2203 79».

  • Re2c ҳоло имкон медиҳад, ки блокҳои муқаррарии re2c дар ҳолати "-r --reuse" истифода шаванд.
    Ин қулай аст, агар файли воридотӣ блокҳои зиёд дошта бошад ва танҳо баъзе аз онҳо
    аз нав истифода бурдан лозим аст.

  • Акнун шумо метавонед формати огоҳиҳо ва паёмҳои хатогиро танзим кунед
    бо истифода аз имконоти нав "--location-format {gnu | msvc}". Формати GNU нишон дода мешавад
    ҳамчун "номи файл: сатр: сутун:" ва формати MSVC ҳамчун "номи файл (сатр, сутун)".
    Ин хусусият метавонад барои дӯстдорони IDE муфид бошад.
    Опсияи "--verbose" низ илова карда шудааст, ки дар сурати муваффақ шудан паёми ғалабаи кӯтоҳро нишон медиҳад.

  • Ҳолати "мувофиқӣ" бо flex такмил дода шуд - баъзе хатогиҳои таҳлил ислоҳ карда шуданд ва
    афзалияти оператори нодуруст дар ҳолатҳои нодир.
    Таърихан, опсияи "-F --flex-suppor" ба шумо имкон дод, ки код нависед
    дар сабки flex ва сабки re2c омехта, ки таҳлилро каме мушкил мекунад.
    Ҳолати мутобиқати Flex дар коди нав кам истифода мешавад,
    аммо re2c дастгирии онро барои мутобиқати ақиб идома медиҳад.

  • Ҳоло оператори ҷудокунии синфи аломат "/" амал мекунад
    пеш аз васеъ кардани рамзгузорӣ, ки имкон медиҳад он дар шумораи бештари ҳолатҳо истифода шавад,
    агар рамзгузории дарозии аломатҳои тағирёбанда истифода шавад (масалан UTF8).

  • Файли баромад ҳоло ба таври атомӣ сохта мешавад: re2c аввал файли муваққатиро эҷод мекунад
    ва натиҷаро ба он менависад ва баъд номи файли муваққатиро ба баромад иваз мекунад
    як амалиёт.

  • Ҳуҷҷатҳо пурра ва аз нав навишта шуданд; аз чумла, навигарй илова карда шуданд
    бобҳо дар бораи http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и дар бораи роҳҳои тафтиши охири маълумоти воридотӣ.
    Ҳуҷҷатҳои нав дар шакл ҷамъоварӣ карда мешаванд
    дастури ҳамаҷонибаи як саҳифа
    бо мисолҳо (ҳамон манбаъҳо дар саҳифа ва ҳуҷҷатҳои онлайн оварда шудаанд).
    Кӯшишҳои ночиз барои беҳтар кардани хондани сайт дар телефонҳо анҷом дода шуданд.

  • Аз нуқтаи назари таҳиягарон, re2c зерсистемаи мукаммалтарро ба даст овард
    ислоҳ кардан Рамзи ислоҳкунӣ ҳоло дар релизҳо ғайрифаъол аст ва
    мумкин аст бо истифода аз имконоти конфигуратсияи "--enable-debug" фаъол карда шавад.

Манбаъ: opennet.ru

Илова Эзоҳ