re2c 1.2

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

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

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

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

  • Қобилияти тавлиди файлҳои сарлавҳа бо ихтиёрӣ илова карда шуд
    мундариҷа бо истифода аз имконоти -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 -ро таъмин мекунад ,
    ки ба шумо имкон медиҳад, ки рафторро тағир диҳед ва "∀x ∃y"-ро ҳамчун
    2200 78 20 2203 79.

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

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

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

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

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

  • Ҳуҷҷатҳо пурра ва аз нав навишта шуданд; аз чумла, навигарй илова карда шуданд
    бобҳо дар бораи пур кардани буфер
    и дар бораи роҳҳои тафтиши охири маълумоти воридотӣ.
    Ҳуҷҷатҳои нав дар шакл ҷамъоварӣ карда мешаванд
    дастури мукаммали як саҳифа
    бо мисолҳо (ҳамон манбаъҳо дар саҳифа ва ҳуҷҷатҳои онлайн оварда шудаанд).
    Кӯшишҳои ночиз барои беҳтар кардани хондани сайт дар телефонҳо анҷом дода шуданд.

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

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

Ташаккур аз таҳиягарони re2c ба ҳамаи онҳое, ки дар пайдоиши ин нашр кӯмак кардаанд,
ва умуман ба ҷомеа барои ғояҳо, гузоришҳои хатогиҳо, часбҳо, ахлоқ ва ғайра. ;]

Манбаъ: linux.org.ru

Илова Эзоҳ