Size: a a a

Compiler Development

2020 March 24

IK

Ivan Kochurkin in Compiler Development
Oleg Stotsky
А есть какие-нибудь простые способы тестировать то,  что мне генерит antlr?
А что именно нужно тестировать? Я в свое время делал так: добавлял новую конструкцию в файлы-примеры и дорабатывал соответствующие правила: https://github.com/antlr/grammars-v4/tree/master/javascript/javascript/examples
источник

IK

Ivan Kochurkin in Compiler Development
Если парсится без ошибок, то ок. С корректностью все сложнее.
источник

OS

Oleg Stotsky in Compiler Development
Уже понял, что мне не нужно сам парсер тестировать, поэтому вопрос отпадает, наверное
источник

IK

Ivan Kochurkin in Compiler Development
А что нужно?)
источник

OS

Oleg Stotsky in Compiler Development
Проверять, что визитор корректно код генерирует. Тогда тесты на парсер, в принципе,  не нужны
источник

VM

Victor Miasnikov in Compiler Development
Oleg Stotsky
А есть какие-нибудь простые способы тестировать то,  что мне генерит antlr?
Написать первым делом программу pretty print.

(

В 2-3 "экосистемах" пошли этим путём

)
источник

VM

Victor Miasnikov in Compiler Development
Oleg Stotsky
Проверять, что визитор корректно код генерирует. Тогда тесты на парсер, в принципе,  не нужны
Тогда а-ля m2c ( или m2tom3)
источник

А

Алексей ayaye :) in Compiler Development
Victor Miasnikov
Написать первым делом программу pretty print.

(

В 2-3 "экосистемах" пошли этим путём

)
ну это скорее на парсер тесты и будут, от других визиторов совсем не зависит
источник

А

Алексей ayaye :) in Compiler Development
Oleg Stotsky
Проверять, что визитор корректно код генерирует. Тогда тесты на парсер, в принципе,  не нужны
а в каком виде описаны требования на визиторы?
источник

VM

Victor Miasnikov in Compiler Development
Алексей ayaye :)
ну это скорее на парсер тесты и будут, от других визиторов совсем не зависит
Да, PP - на парсер.
( набирал до уточнения "вводных")

А, например, oo2c на выходе генерирует Си код, но после SSA ( и т.п.) оптимизаций.
источник

А

Алексей ayaye :) in Compiler Development
Victor Miasnikov
Да, PP - на парсер.
( набирал до уточнения "вводных")

А, например, oo2c на выходе генерирует Си код, но после SSA ( и т.п.) оптимизаций.
а для парсера есть другая задача - откуда тестовые данные брать. я в свое время генератор тестовых данных по bnf писал :)
источник

VM

Victor Miasnikov in Compiler Development
Алексей ayaye :)
а для парсера есть другая задача - откуда тестовые данные брать. я в свое время генератор тестовых данных по bnf писал :)
В Modula-3 "в комплекте", примерно, тысяча тестовых мини-программ.

В XDS Modula-2/Oberon - чуть меньше.

М.б. вместе с pretty print делать конвертер с другого ЯП?

(

Впрочем, метод автогенерации тестовых мини-программ по грамматике ЯП здесь как-то обсуждали ( относительно давно)

)
источник

А

Алексей ayaye :) in Compiler Development
Victor Miasnikov
В Modula-3 "в комплекте", примерно, тысяча тестовых мини-программ.

В XDS Modula-2/Oberon - чуть меньше.

М.б. вместе с pretty print делать конвертер с другого ЯП?

(

Впрочем, метод автогенерации тестовых мини-программ по грамматике ЯП здесь как-то обсуждали ( относительно давно)

)
конвертер в общем случае не делается
источник

АВ

Александр Вольнов in Compiler Development
Alexander Tchitchigin
Мой вывод такой: в последнее время (5 - 10 лет) удивительно популярна идея переизобретения более-менее низкоуровневых околосистемных языков (Go, Rust, Swift, Zig, Jai и теперь Дрю ДеВольт тоже свой язык разрабатывает, похоже), но чтобы сделать это на уровне, адекватном современным GCC/LLVM со всем прилагающимся тулингом, нужно очень хорошо разбираться в этом самом тулинге и ABI, желательно, на нескольких платформах. Потому что радикально уменьшить сложность околосистемных языков и разработки эффективных программ - задача благородная и совершенно не лишняя, но, оказывается, далеко не вся сложность - случайная (accidental). Особенно, если хочешь переиспользовать чужие библиотеки, инструменты и вообще эффективно взаимодействовать со средой выполнения и разработчиками.
Дрю ДеВольт - это кто такой? Не гуглится что-то.
источник

AT

Alexander Tchitchigin in Compiler Development
Александр Вольнов
Дрю ДеВольт - это кто такой? Не гуглится что-то.
Да всё тот же: https://drewdevault.com/ 😊
источник

AT

Alexander Tchitchigin in Compiler Development
Да, я неправильно транслитерировал его фамилию. 😊
источник

CM

Colin Mcgorny in Compiler Development
Всем привет
источник

DP

Dmitry Ponyatov in Compiler Development
что у нас есть свежего по персистентным языкам и их применениям к БД?

а то что-то находятся статьи Аткинсона пока:
An Approach to Persistent Programming
M. P. Atkinsonf, P. J. Bailey*, K. J. Chisholmf, P. W. Cockshottf and R. Morrison*
источник

DP

Dmitry Ponyatov in Compiler Development
и GemStone/S из живых реализаций
источник

N?

Nikolay ? in Compiler Development
Victor Miasnikov
В Modula-3 "в комплекте", примерно, тысяча тестовых мини-программ.

В XDS Modula-2/Oberon - чуть меньше.

М.б. вместе с pretty print делать конвертер с другого ЯП?

(

Впрочем, метод автогенерации тестовых мини-программ по грамматике ЯП здесь как-то обсуждали ( относительно давно)

)
А где есть инфа на тему генерации тестовых программ по грамматике? Есть большая необходимость
источник