Size: a a a

Compiler Development

2020 December 15

YS

Yaroslav Schekin in Compiler Development
K R
Занятно, что если подняться выше, и рассматривать как токены высокоуровневые конструкции, то и С++ где-то становится контекстно-независимым.
Так всё что угодно становится хоть регулярным (если рассматривать только recognizers). ;)
Но это одна из важных задач, ради которой используются lexers, на самом деле (для изменения сложности грамматики) .
источник

KR

K R in Compiler Development
А есть какие-нибудь модели типа биграфов для грамматик? То есть, разные вложенные друг в друга уровни?
источник

KR

K R in Compiler Development
MrSmith
Полезно сделать библиотеку для работы с графами по аналогу с node4j и тд
https://github.com/godcodehunter/smithpiler/blob/7944670429a6395407f5cb71feedc6549ec0dd9f/src/parser/tests.rs#L97
Вот это уже выглядит ужасно, сравнивать большие куски наверное вообше боль, не зря же кланг соорудил библиотеку матчеров
p.s. парсеры вроде бы взрослые дядьки еше фазерами проверяют
Скорее не с графами, а биграфами - при анализе ПО иерархичность очень важна.
источник

M

MrSmith in Compiler Development
Нет, идея в том что в тестах я хочу что то типа матчей
https://neo4j.com/docs/cypher-manual/current/clauses/match/
или спек
https://clojure.org/guides/spec
Лучше конечно как в ноде сделать язык запросов-очередей. Что бы сразу и парсер на нем проверять и сематический анализатор
источник

M

MrSmith in Compiler Development
Тоесть я не пишу построчно процедурный код из кучи матчей, ассертов и тд, а пишу один матч на DSL и выплевываю ошибку из него
источник

KR

K R in Compiler Development
MrSmith
Тоесть я не пишу построчно процедурный код из кучи матчей, ассертов и тд, а пишу один матч на DSL и выплевываю ошибку из него
Это естественно. А вот как там с обработкой тестов на ошибки?
источник

M

MrSmith in Compiler Development
K R
Это естественно. А вот как там с обработкой тестов на ошибки?
Не понял
источник

KR

K R in Compiler Development
Ну есть тесты, которые производят ошибки компилятора.
источник

KR

K R in Compiler Development
Тестируют обработку ошибок компилятором.
источник

M

MrSmith in Compiler Development
Тоесть негативно позитивные тесты, когда мы скармливаем заранее неверную программу и проверяем выдал ли компилятор диагностику?
источник

KR

K R in Compiler Development
Правильную диагностику
источник

M

MrSmith in Compiler Development
Я пока на самом деле думаю что хранить ошибки в граффе плохая идея, но вообше как вариант создать таблицу ошибок и реляций. Это уже вопрос за скобками вообшем
источник

M

MrSmith in Compiler Development
Если диагности в таблице то думаю ничего сложного нет просто сматчить их списком
источник

M

MrSmith in Compiler Development
Если диагности как то продуцируются то уже сложней
источник

KR

K R in Compiler Development
В камле есть каталог тестов, не очень хорошо структурированный. Там тестируется вся система до какого-то прохода.
источник

KR

K R in Compiler Development
https://github.com/ocaml/ocaml/tree/trunk/testsuite

Может поможет структурировать требования к тест-системе
источник

M

MrSmith in Compiler Development
Ну это со списком работает хорошо, а если у нас алгоритм какой диагности выплеывает то и тестировать это сложно но вопрос всеравно за скобаками, потому что задача очередей првратить процедурный код в декларативную очередь а как там тестировать диагностики это уже вопрос десятый
источник

FO

FORTRAN ONE LOVE in Compiler Development
Alexander Zaitsev
звучит очень приятно, на самом деле. А есть пример какого-нибудь языка, в котором комитет этим занимается и предоставляет такие тесты?
Кажется, что таким страдала Ada: компилятор считался сертифицированным, если проходился опрелеленный набор тестов
источник
2020 December 16

Constantine ʕ◔ϖ◔ʔ🦀... in Compiler Development
источник

M

MrSmith in Compiler Development
Кто понимает как работают LR 1 парсер генераторы?
источник