Size: a a a

Compiler Development

2020 December 15

Miss Очепятка... in Compiler Development
MrSmith
Я про то что, если компиль проходит 40 тестов это вовсе не значит что на 41 он не упадет
Теория языков хорошо проработана. Достаточно описать язык на EBNF или аналоге. Тогда проблем с парсером не будет. Вот только Си++ контексто  зависимый. Поэтому там можно ногу сломать на ровном месте.
источник

PS

Pavel Samolysov in Compiler Development
Alexander Zaitsev
звучит очень приятно, на самом деле. А есть пример какого-нибудь языка, в котором комитет этим занимается и предоставляет такие тесты?
В Java есть TCK, но он для всей платформы по моему, не только javac. https://en.m.wikipedia.org/wiki/Technology_Compatibility_Kit
источник

M

MrSmith in Compiler Development
Miss Очепятка
Теория языков хорошо проработана. Достаточно описать язык на EBNF или аналоге. Тогда проблем с парсером не будет. Вот только Си++ контексто  зависимый. Поэтому там можно ногу сломать на ровном месте.
Ну если так применяют ее крайне плохо, современные парсер генераторы зависили в 90 годах
источник

SI

Serghei Iakovlev in Compiler Development
Если речь про тестирование только сканера \ парсера то конечно все не так страшно. А вот если нам нужно полностью компилятор протестировать, со всякими там оптимизациями и прочее, то тут конечно все очень туманно
источник

YS

Yaroslav Schekin in Compiler Development
Miss Очепятка
Теория языков хорошо проработана. Достаточно описать язык на EBNF или аналоге. Тогда проблем с парсером не будет. Вот только Си++ контексто  зависимый. Поэтому там можно ногу сломать на ровном месте.
(Поднимая голову от статьи про синтаксические и семантические предикаты в современных PL) Блажен, кто верует, что тут скажешь. ;)
Какие из современных языков не являются контекстно-зависимыми, если рассматривать как токены отдельные символы, мне вот любопытно...
источник

Miss Очепятка... in Compiler Development
Yaroslav Schekin
(Поднимая голову от статьи про синтаксические и семантические предикаты в современных PL) Блажен, кто верует, что тут скажешь. ;)
Какие из современных языков не являются контекстно-зависимыми, если рассматривать как токены отдельные символы, мне вот любопытно...
Градаций в современном многообразии языков и много. Главное подобрать нужную теорию.
источник

YS

Yaroslav Schekin in Compiler Development
Miss Очепятка
Градаций в современном многообразии языков и много. Главное подобрать нужную теорию.
Насколько я знаю, в том, чтобы "подбирать нужную теорию" для разбора контекстно-зависимых и т.п. языков практического смысла не много. Ошибаюсь?
источник

M

MrSmith in Compiler Development
Yaroslav Schekin
Насколько я знаю, в том, чтобы "подбирать нужную теорию" для разбора контекстно-зависимых и т.п. языков практического смысла не много. Ошибаюсь?
Если усложнить задача и делать IDE, то кажется разумным, у меня к примеру есть пейпер для логики ошибок, тоесть что бы описывать ошибки, а все остальное верно, как раз из лаборатории JB
источник

Miss Очепятка... in Compiler Development
Serghei Iakovlev
Если речь про тестирование только сканера \ парсера то конечно все не так страшно. А вот если нам нужно полностью компилятор протестировать, со всякими там оптимизациями и прочее, то тут конечно все очень туманно
Так то речь про парсеры. Про полную проверку компилятора можно и не говори. Для своего пет-проекта написал полный текст на передачу параметров. А оно на реальном коде упало и не один раз.
источник

M

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

h

hazer_hazer in Compiler Development
MrSmith
Комитет ub то в список собрать не может, в этом году кто то собрал с помейткой 'вроде все но не точно'
сначала подумал, что ты назвал комитет плюсов комитетом UB)
источник

AT

Alexander Tchitchigi... in Compiler Development
Serghei Iakovlev
Ну вот Зуев кажется и писал, что для тестирования компилятора нанималась отдельная контора, которая вообще не знала что они там пишут, кроме формального "компилятор для C++ версии языка XX". Они мол даже не контактировали.
Если верить книге, это была не контора а пара "поколений" студентов старших курсов. 😉
А вот контора, по заказу которой они написали компилятор и тесты, потом эти тесты продавала.
источник

M

MrSmith in Compiler Development
Alexander Tchitchigin
Если верить книге, это была не контора а пара "поколений" студентов старших курсов. 😉
А вот контора, по заказу которой они написали компилятор и тесты, потом эти тесты продавала.
Звучит как что то разумное, если ты с кем либо договорился о чем то и получил сопутсвуюший продукт можно и продать
источник

AT

Alexander Tchitchigi... in Compiler Development
MrSmith
Звучит как что то разумное, если ты с кем либо договорился о чем то и получил сопутсвуюший продукт можно и продать
А кто-то спорил? 😃
источник

M

MrSmith in Compiler Development
Мне другое больше интересно, есть тут кто либо с кодовой базой RA знаком?
источник

M

MrSmith in Compiler Development
Alexander Tchitchigin
А кто-то спорил? 😃
Многие считают такое 'не очень честным'
источник

PS

Pavel Samolysov in Compiler Development
Edited. Не сразу понял кто на ком стоял. Очевидно, что заказчик может делать что ему угодно с результатами выполненной по его заказу и оплаченной работы. Капитолизом.
источник

К

Константин in Compiler Development
Alexander Zaitsev
звучит очень приятно, на самом деле. А есть пример какого-нибудь языка, в котором комитет этим занимается и предоставляет такие тесты?
Для Ada было что-то такое. Там тесты запрещали даже диалектизацию
источник

А

Алексей ayaye :)... in Compiler Development
MrSmith
Я про то что, если компиль проходит 40 тестов это вовсе не значит что на 41 он не упадет
это общее утверждение о тестировании. тесты находят ошибки, но не доказывают их отсутствие.
источник

KR

K R in Compiler Development
Yaroslav Schekin
(Поднимая голову от статьи про синтаксические и семантические предикаты в современных PL) Блажен, кто верует, что тут скажешь. ;)
Какие из современных языков не являются контекстно-зависимыми, если рассматривать как токены отдельные символы, мне вот любопытно...
Занятно, что если подняться выше, и рассматривать как токены высокоуровневые конструкции, то и С++ где-то становится контекстно-независимым.
источник