Михаил писал(а):
Алиса все сломал. Предлагаю нагрузить его чем то спиртосодержащим и отправить под палящие лучи солнца на тропический остров. Пусть страдает )))
«делайте что угодно, только не кидайте меня в терновый куст!» ;-)
«классическое» SSA без AST таки неудобно, некоторые штуки на AST проще. прикол в том, что SoN — это
и есть AST! в прямом смысле: структуры данных почти идентичные. но в то же время SoN — это и SSA-представление.
и это… не надо пугаться, ну! ;-) Дракон — это Фундаментальный Труд, что-то типа: «как построить дом начиная с создания печи для кирпичей». там есть про парзинг, про регулярные выражения и ещё про кучу всяких гитик. оттуда можно узнать, например, о регулярных выражениях как DFA и NFA, создании оптимальных автоматов, их преобразовании. тема, вроде бы относящаяся к компиляции сильно боком. про типы грамматик, LR(n), LARL, LL, парзинг «снизу» и «сверху», парзинг автоматами… короче, вы будете знать МНОГО. всё это в той или иной ситуации пригодится. но совершенно не всё это сразу необходимо, чтобы сделать компилятор. вот вы Дракона не читали — а компилятор сделали, например. ;-)
книга от Inria — нормальный вводный курс по SSA. где не трогают ни парзинг, ни другие внутренние представления, ничего кроме SSA и сопутствующего (CFG, def-use, domination, live ranges, interference graphs, etc.). и её даже не обязательно читать полностью: надо только грок основную идею SSA и базовые понятия (как раз CFG, def-use, dominators). после чего можно спокойно переключаться на SoN.
я почему агитирую: когда вы въедете в SoN, вы будете ОЧЕ сожалеть о каждой минуте, потраченой на откладывание этого на завтра. ;-) с SoN писать оптимизирующие компиляторы проще и быстрее, чем неоптимизирующие без SoN. с «классическим» SSA это совсем не так, и зачастую проще сделать дубовый компилятор стипя «чо вижу то и пою». с SoN — неа. я вам так скажу: я почти уверен, что если бы Вирт знал про SoN, то книга «compiler construction» выглядела бы совсем иначе. ;-) все эти годы мы делали компиляторы не просто неправильно, но ещё и значительно сложнее, чем можно было.