Состоялся релиз re2c 2.0, свободного генератора лексических анализаторов для языков C и C++. Проект re2c изначально был создан в 1993 году Питером Бамбулисом как экспериментальный генератор очень быстрых лексических анализаторов, отличающийся от других генераторов скоростью сгенерированного кода и необычно гибким пользовательским интерфейсом, который позволяет легко и эффективно встраивать анализаторы в существующую кодовую базу. С тех пор проект развивается сообществом и продолжает оставаться площадкой для экспериментов и исследований в области формальных грамматик и конечных автоматов...Подробнее: https://www.opennet.me/opennews/art.shtml?num=53408
> для языков C и C++Мёртвым припарка
Зато C самый быстрый, быстрее только ассемблер. Opera 12 парсит тяжелые html со списком пакетов репозитория гораздо быстрее Firefox. Никто с ней не сравнится в этом, даже Netsurf.
Ого, кто юзал, как оно?
Не знаю, что за прога, но мне она понадобилась для сборки meson и прочего. Как и ccache (который гадит в ~/.ccache, не перепутать с ~/.cache).
Я юзал. Норм.
И что они анализируют? И с какой целью?
легковесные регекспы с интересными дополнениями, мне например в ембеддовке пригодится протоколы парсить
Бинарные выражения тоже понимает? Можно скажем SMB описать?
> Старая система сборки на Autotools продолжает поддерживаться и использоваться, и в обозримом будущем нет планов от неё отказаться (отчасти чтобы не создавать проблем разработчикам дистрибутивов, отчасти потому что старая система сборки стабильнее и лаконичнее новой).Вот и ответ.
Это отсебятина переводчика.>CMake build system. Thanks to ligfx for adding a CMake-based build system. This has been discussed multiple times in the past, and a few attempts at an implementation have been made, but ligfx was the first to contribute a full working implementation. The existing Autotools-based build system continues to be used and maintained for the foreseeable future.
На самом деле это комментарий от автора (он же переводчик и разработчик обеих систем сборки). В оригинальной новости этого пояснения действительно нет.
Не будь такой скромной. =)
Ты делаешь классное дело. Хорошая работа, Улюша! Так держать! =)
PS: новая мажорная версия -- это своего рода рубеж, так что поздравляю
Спасибо. :)
спасибо, не знал про этот проект, буду использовать
Чем это лучше фронтенда от LLVM?
а что, к llvm есть фронтенд для трансляции регекспов в конечные автоматы по ходу программы, не влияя на остальной код?
Выглядит как flex.
Ну в смысле bison.
Оно и есть как flex
Оно юзается в PHP.
>Зато C самый быстрый, быстрее только ассемблер. Opera 12 парсит тяжелые html со списком пакетов репозитория гораздо быстрее Firefox. Никто с ней не сравнится в этом, даже Netsurf.Netsurf тоже на С написан.
Дичь какая-то. Не пытайтесь открывать https://mirror.yandex.ru/gentoo-distfiles/distfiles/ в фф -- я уже и вкладку закрыл, а всё равно ядрами молотит. В opera 69 кстати хотя бы работает, в фф вообще не открывается, нигде не отображается, и процесс можно только убить руками. Не стал ждать дольше 5 минут, может оно бы и загрузилось когда-нибудь, но нагрузка уж чересчур высокая. Elinks самый быстрый.
Виновато было вот это дополнение, но всё равно слишком медленно рендерит и загрузка очень высокая и без него https://addons.mozilla.org/en-US/firefox/addon/css-exfil-pro.../
УМВР, загрузилось секунд за 20.
Загрузилось в FF 78.0.2 за пару секунд.
> Загрузилось в FF 78.0.2 за пару секунд.Дополнения? Там надо ещё поскроллить вниз, вот тогда начинает тормозить. Главного виновника, из-за которого не загружалось вовсе, я указал (просто запустил без дополнений в порядке эксперимента).
Ну вот записал даже, для наглядности: https://youtu.be/S-dASP0Lo6w
На скроллинге в одном месте запнулось и всё.
тоже быстро
Тогда вот вам ссылочка поинтереснее
https://archive.torproject.org/tor-package-archive/debs/main...
На это веселье ушло около 24 секунд, да (пока индикатор загрузки во вкладке бегал). Скроллинг сначала запнулся и дальше листает хорошо.
Записать? :D
Мощный комп. На четвертопне Opera 12 около часа пашет (но съедает не более 512 мб памяти). Про Firefox и думать страшно. Там html весит 50 с лишним мб.
> Мощный комп. На четвертопне Opera 12 около часа пашет (но съедает не
> более 512 мб памяти). Про Firefox и думать страшно. Там html
> весит 50 с лишним мб.
А вот это грузится примерно минут в FF, и дальше отображается и прокручивается без проблем.
Всё нормально грузится и отображается в FF. Разве что один раз при скроллинге лагнуло. Майнеры почистите что ли.
> Всё нормально грузится и отображается в FF. Разве что один раз при
> скроллинге лагнуло. Майнеры почистите что ли.У меня лагает на каждом pagedown (белый экран).
>>релиз ...свободного генератора лексических анализаторов
>>изначально... создан ... как ...генератор ...лексических анализаторовв то же время Wikipedia говорит - "it is used in BRL-CAD as a platform-agnostic and easily compilable alternative to Flex and Bison" - т.е. замена и Lex-у и Yacc-у - автор! проясните всё же что это за программа? а то получается нужна только как "генератора лексических анализаторов", хотя по коду похоже что и замена синтаксическим?
>>>релиз ...свободного генератора лексических анализаторов
>>>изначально... создан ... как ...генератор ...лексических анализаторовОригинал:
>> Re2c is a free and open-source lexer generator for C, C++ and Go. It compiles regular expressions to determinisitic finite automata and encodes the automata in the form of a program in the target languageЕсли за последние полтора года ничего нового не добавили, то довольно простой и очень шустрый "токенизатор".
> в то же время Wikipedia говоритВикипедию те еще "спецы" пишут и правят (не так давно натыкался в статье о бмв изетте на переводы "от балды" - например "рождество" было переведено как "приключение". Начал смотреть, оказалось оно там было правильно, вернее просто отсутсвовало в таких деталях, а затем пришла вумная и авторитетная википэдэвушка и с умным и уверенным видом стала "править". Что она "направила" таким макаром в других статьях, я могу только гадать) 🙄
Я не автор текста на википедии, но там написано "Together with the Lemon parser generator, it is used in BRL-CAD as a platform-agnostic and easily compilable alternative to Flex and Bison". Тут нельзя начало предложения оторвать без потери смысла: re2c сравнивается с fleх, а lemon -- с bison. (Подредактирую статью, чтобы не было неоднозначности.)re2c -- это генератор лексеров, а не парсеров. Он умеет регулярные грамматики (Type-3 по классификации Хомского), и не умеет контекстно-свободные (Type-2) и выше. Для этих двух классов грамматик используются разные алгоритмы разбора: для регулярных -- конечные автоматы (finite state automata), а для контекстно-свободных -- стековые автоматы (pushdown automaton). Про всё это подробнее можно прочитать в книге "Parsing Techniques - A Practical Guide" [1].
re2c никогда не будет уметь контекстно-свободные грамматики, потому что это была бы уже другая программа с другим алгоритмом и пользовательским интерфейсом. У меня на гитхабе есть lalr2c [2], что-то в духе re2c для LALR(1) грамматик -- он тоже генерирует не-табличные парсеры и позволяет пользователю писать интерфейсный код. Но он пока не вышел за рамки прототипа.
[1] https://dickgrune.com/Books/PTAPG_1st_Edition/BookBody.pdf