re2c lexer generator 1.2 шығарылымы

Орын алу босату re2c, C және C++ тілдеріне арналған тегін лексикалық анализатор генераторы. Еске салайық, re2c-ті 1993 жылы Питер Бамбулис өте жылдам лексикалық анализаторлардың тәжірибелік генераторы ретінде жазған, басқа генераторлардан жасалған кодтың жылдамдығымен және анализаторларды бар кодқа оңай және тиімді біріктіруге мүмкіндік беретін әдеттен тыс икемді пайдаланушы интерфейсімен ерекшеленеді. негіз. Содан бері жобаны қауымдастық әзірледі және формальды грамматика мен соңғы күй машиналары саласындағы эксперименттер мен зерттеулерге арналған платформа болып қала береді.

Шығаруға дайындық бір жылға жуық уақытты алды. Уақыттың көп бөлігі, әдеттегідей, теориялық негізді әзірлеуге және жазуға жұмсалды
мақалалар»NFA жүйесінде тиімді POSIX қосалқы матч шығару«.
Мақалада сипатталған алгоритмдер libre2c эксперименттік кітапханасында жүзеге асырылады
(кітапхананы құру және өнімділік сынақтары әдепкі бойынша өшірілген және «—enable-libs» конфигурациялау опциясы арқылы қосылған). Кітапхана RE2 сияқты бұрыннан бар жобаларға бәсекелес ретінде емес, жаңаларын әзірлеуге арналған зерттеу платформасы ретінде қарастырылған.
алгоритмдер (оларды кейін re2c немесе басқа жобаларда пайдалануға болады). Бұл тестілеу, өнімділікті өлшеу және басқа тілдерге байланыстыруды жасау тұрғысынан да ыңғайлы.

re2c 1.2 нұсқасындағы негізгі инновациялар:

  • Енгізілген деректердің соңын тексерудің жаңа жеңілдетілген әдісі («EOF ережесі») қосылды. Ол үшін «re2c:eof» конфигурациясы қосылды,
    терминал таңбасын таңдауға мүмкіндік береді,
    және егер лексер іске қосылатын арнайы ереже «$».
    кіріс деректерінің соңына сәтті жетті.
    Тарихи түрде, 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" сияқты өрнектерді талдайды
    «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" опциясы қосылды.

  • Флекспен «үйлесімділік» режимі жақсартылды - кейбір талдау қателері түзетілді және
    сирек жағдайларда қате оператор басымдылығы.
    Тарихи түрде «-F --flex-suppor» опциясы код жазуға мүмкіндік берді
    икемді стильде және re2c стилінде араласады, бұл талдауды біршама қиындатады.
    Flex үйлесімділік режимі жаңа кодта сирек пайдаланылады,
    бірақ re2c оны кері үйлесімділік үшін қолдауды жалғастырады.

  • Таңбалар класын азайту операторы "/" енді қолданылады
    оны көп жағдайларда пайдалануға мүмкіндік беретін кодтауды кеңейту алдында,
    айнымалы таңба ұзындығы кодтауы пайдаланылса (мысалы, UTF8).

  • Шығыс файлы енді атомдық түрде жасалады: re2c алдымен уақытша файлды жасайды
    және оған нәтижені жазады, содан кейін уақытша файлдың атын шығысқа өзгертеді
    бір операция.

  • Құжаттама толтырылды және қайта жазылды; атап айтқанда, жаңалары қосылды
    туралы тараулар http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и енгізілген деректердің аяқталуын тексеру жолдары туралы.
    Жаңа құжаттама нысанда жинақталады
    толық бір беттік нұсқаулық
    мысалдармен (бірдей дереккөздер манбетте және онлайн құжаттамада көрсетілген).
    Телефондардағы сайттың оқылуын жақсарту үшін нашар әрекеттер жасалды.

  • Әзірлеушілердің көзқарасы бойынша, re2c толық ішкі жүйеге ие болды
    жөндеу Түзету коды енді шығарылым құрастыруларында және
    «--enable-debug» конфигурациялау опциясы арқылы қосуға болады.

Ақпарат көзі: opennet.ru

пікір қалдыру