Size: a a a

Курилка Perl-групп

2021 April 12

VG

Vadim Goncharov in Курилка Perl-групп
Переслано от Yaroslav Schekin
Имеет, конечно. Вот пояснение от "компиляторщика" на эту тему: https://github.com/true-grue/Compiler-Development/blob/master/docs/descent.md
источник

VG

Vadim Goncharov in Курилка Perl-групп
Переслано от Georgy Komarov
Интересная статья, спасибо.

Один из пунктов "за" использование генератора парсеров выглядит сомнительно:

> Разработка инструмента статического анализа, использующего несколько входных языков с различным синтаксисом.

Я писал небольшую утилиту для анализа семейства DSL, среди которых есть небольшие отличия в синтаксисе. С помощью генератора парсеров (menhir). И вот поддерживать эти различия в синтаксисе — непростая задача. Особенно в кейсах, когда синтаксис разных диалектов языка противоречит друг другу.
источник

VG

Vadim Goncharov in Курилка Perl-групп
Переслано от Georgy Komarov
Противоречащие кейсы я кое-как обошёл: сделал, чтобы точно работало с тем диалектом языка, который используется у нас. Но как решить эту задачу правильно я не уверен. Разве что дублировать парсер.
источник

VG

Vadim Goncharov in Курилка Perl-групп
Переслано от Yaroslav Schekin
Ну так для этого более "мощные" генераторы используются, насколько я знаю.
Т.е. это сразу GLR, или Earley и т.п. (и ещё и с "расширениями", бывает).
источник

VG

Vadim Goncharov in Курилка Perl-групп
Переслано от Yaroslav Schekin
Ещё есть вариант с "переключаемым" lexer, кстати (ну и вообще, зачем же ещё нужен lexer, как ни для того, чтобы "прятать" там всякие "трюки" ;) ).
источник

VG

Vadim Goncharov in Курилка Perl-групп
Переслано от Georgy Komarov
Хмм, ну, кстати, да. У меня там уже "запрятан" разбор нескольких конструкций.
источник

VG

Vadim Goncharov in Курилка Perl-групп
Переслано от Georgy Komarov
Угу, LR(1). Я разбираю пару конструкций в лексере и отдаю парсеру уже готовую AST-ноду. Просто потому, что так оказалось проще обработать ошибки и избежать неоднозначностей в грамматике. В принципе, если расширить эту схему, можно попробовать обработать и более сложные кейсы.
источник

АК

Алексей Клименко... in Курилка Perl-групп
А потом начинает ломаться от лишнего пробела.
источник

VT

Vasily Terkin in Курилка Perl-групп
недавно где-то видел самописный парсер
источник

VG

Vadim Goncharov in Курилка Perl-групп
гы, ну сделай копию и сравни две операции - просто вакуум и ребилд
источник

VT

Vasily Terkin in Курилка Perl-групп
в DPDK, кажется
источник

VG

Vadim Goncharov in Курилка Perl-групп
думал, ща будет про tdesktop \=)
источник

VG

Vadim Goncharov in Курилка Perl-групп
Переслано от Yaroslav Schekin
Ну это уже как-то чересчур, нет?
Обычно синтезируют "несуществующие" токены, вроде indent / dedent в python из отступов; или x NOT LIKE y → {identifier x} {token_NOT_LIKE 'NOT LIKE'} {identifier x} в SQL; ну или lexer hack в C — а потом уже такое используют в грамматике.
источник

VT

Vasily Terkin in Курилка Perl-групп
не, это нельзя назвать парсером
источник

АК

Алексей Клименко... in Курилка Perl-групп
Сделал ребилд..
источник

АК

Алексей Клименко... in Курилка Perl-групп
источник

YM

Yuri Myasoedov in Курилка Perl-групп
I will not be speaking at the next Perl conference or attending it.
А он знатно залупился.
источник

VT

Vasily Terkin in Курилка Perl-групп
доебали
источник

АК

Алексей Клименко... in Курилка Perl-групп
Это вакуум?
источник

YM

Yuri Myasoedov in Курилка Perl-групп
а в перле не ввели ещё этот CoC?
источник