Информация об изменениях

Сообщение Re[28]: Опциональные типы от 15.03.2017 7:20

Изменено 15.03.2017 7:28 alex_public

Re[28]: Опциональные типы
Здравствуйте, WolfHound, Вы писали:

WH>Ты вообще представляешь себе объём этой работы?

WH>Одну и ту же грамматику этим парсерам не скормить. И я говорю не про изменение синтаксиса, хотя это само по себе большой объём работы, а про то что у них алгоритмы разные.
WH>Тут придётся въезжать в особенности каждого алгоритма и трансформировать под него грамматику. Иначе тест будет нечестным.
WH>При этом тестировать на маленькой грамматике бесполезно.
WH>Короче это развлекалово ни на один месяц.

Кстати, тут на C++ форуме всплыла темка про парсеры (http://rsdn.org/forum/cpp.applied/6720612.flat
Автор: SL
Дата: 09.03.17
) и я нашёл в ней (ну или далее по ссылкам) много довольно любопытной информации.

Во-первых про различные парсеры для C++: antlr4 теперь работает для C++ (https://github.com/antlr/antlr4/tree/4.6/runtime/Cpp/demo), ещё один универсальный (многоязычный) инструмент такого типа под названием Coco/R (http://ssw.jku.at/Coco/), ещё пара C++ проектов в данной области (https://jeffreykegler.github.io/Marpa-web-site/ и https://github.com/vnmakarov/yaep).

А во-вторых в последнем проекте я прямо на первой же странице увидел те самые тесты, про которые говорил. Причём в качестве грамматики они использовали не абы что, а язык C. Так что они смогли добавить к тестами парсер из gcc. Так вот самое забавное, что тот самый bison (там он проходит под именем yacc) показал себя там быстрее всех, лучше даже парсера gcc. )
Re[28]: Опциональные типы
Здравствуйте, WolfHound, Вы писали:

WH>Ты вообще представляешь себе объём этой работы?

WH>Одну и ту же грамматику этим парсерам не скормить. И я говорю не про изменение синтаксиса, хотя это само по себе большой объём работы, а про то что у них алгоритмы разные.
WH>Тут придётся въезжать в особенности каждого алгоритма и трансформировать под него грамматику. Иначе тест будет нечестным.
WH>При этом тестировать на маленькой грамматике бесполезно.
WH>Короче это развлекалово ни на один месяц.

Кстати, тут на C++ форуме всплыла темка про парсеры (http://rsdn.org/forum/cpp.applied/6720612.flat
Автор: SL
Дата: 09.03.17
) и я нашёл в ней (ну или далее по ссылкам) много довольно любопытной информации.

Во-первых про различные парсеры для C++: antlr4 теперь работает для C++ (https://github.com/antlr/antlr4/tree/4.6/runtime/Cpp/demo), ещё один универсальный (многоязычный) инструмент такого типа под названием Coco/R (http://ssw.jku.at/Coco/), ещё пара C++ проектов в данной области (https://jeffreykegler.github.io/Marpa-web-site/ и https://github.com/vnmakarov/yaep).

А во-вторых в последнем проекте я прямо на первой же странице увидел те самые тесты, про которые говорил. Причём в качестве грамматики они использовали не абы что, а язык C. Так что они смогли добавить к тестами парсер из gcc. Так вот самое забавное, что тот самый bison (ну точнее там был yacc, но не суть) показал себя там быстрее всех, лучше даже парсера gcc. )

P.S. Особенно забавным в контексте дискуссии выше мне показалась фраза из описания последнего проекта:

It is sufficiently fast and does not require much memory. This is the fastest implementation of the Earley parser which I know of. If you know a faster one, please send me a message. It can parse 300K lines of C program per second on modern computers and allocates about 5MB memory for 10K line C program.