Re2c lexer генераторунун релизи 1.2

болуп өттү бошотуу re2c, C жана C++ тилдери үчүн бекер лексикалык анализатор генератору. Эске салсак, re2c 1993-жылы Питер Бамбулис тарабынан абдан тез лексикалык анализаторлордун эксперименталдык генератору катары жазылган, ал башка генераторлордон түзүлгөн коддун ылдамдыгы жана адаттан тыш ийкемдүү колдонуучу интерфейси менен айырмаланып, анализаторлорду учурдагы кодго оңой жана натыйжалуу интеграциялоого мүмкүндүк берет. база. Ошондон бери, долбоор коомчулук тарабынан иштелип чыккан жана формалдуу грамматика жана чектүү мамлекеттик машиналар жаатында эксперименттер жана изилдөөлөр үчүн аянтча болуп калууда.

Чыгарууга даярдануу дээрлик бир жылга созулду. Көбүнчө, адаттагыдай эле, теориялык базаны иштеп чыгууга жана жазууга жумшалды
макалалар"NFA боюнча натыйжалуу POSIX субматчын алуу".
Макалада сүрөттөлгөн алгоритмдер 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*/" жана
    "/*!header:re2c:off*/". Бул учурларда пайдалуу болушу мүмкүн
    re2c өзгөрмөлөрдүн, структуралардын жана макростордун аныктамаларын түзүү керек болгондо,
    башка котормо бирдиктеринде колдонулат.

  • Re2c азыр UTF8 литералдарын жана кадимки туюнтмалардагы тамга класстарын түшүнөт.
    Демейки боюнча, re2c "∀x ∃y" сыяктуу туюнтмаларды талдайт
    "e1 2 88 80 78 e20 2 88 83" 79 биттик ASCII символдорунун ырааттуулугу
    (он алтылык коддор) жана колдонуучулар Юникод символдорун кол менен качышы керек:
    "\\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" конфигурациялоо опциясын колдонуу менен иштетсе болот.

Source: opennet.ru

Комментарий кошуу