Size: a a a

Compiler Development

2020 March 09

KR

K R in Compiler Development
Alexander Tchitchigin
Какие там разные представления в классической и квантовой??? И там, и там либо лагранжиан, либо гамильтониан. 🤔
Опа...

Ну классическая физика - законы ньютона, лагранжиан, гамильтониан (из общеизвестных). Квантовая - координатное-импульсное, интегралы по траекториям/волновые функции (можно ещё стохастические диффуры использовать)
источник

AZ

Alexander Zaitsev in Compiler Development
K R
В тексте есть часто некоторая информация, не переходящая в AST. И если вы её сотрёте, вы можете эффективно скрыть часть ошибок. Классическое - при инициализации матриц.

См статьи PVS Studio
да. и мне интересно, как они обходят данные проблемы
источник

KR

K R in Compiler Development
Alexander Zaitsev
да. и мне интересно, как они обходят данные проблемы
Насколько я понимаю, массы их игнорируют по незнанию.

Но это, в основном, интерфейс «человек-компьютер».
источник

MM

Mikhail Maltsev in Compiler Development
Alexander Zaitsev
да. и мне интересно, как они обходят данные проблемы
В clang format - дают пользователю отключить форматирование (с помощью комментариев) в проблемных местах, типа тех же матриц
источник

KR

K R in Compiler Development
Mikhail Maltsev
В clang format - дают пользователю отключить форматирование (с помощью комментариев) в проблемных местах, типа тех же матриц
Это костыль. Наверняка можно без захламления кода что-то сделать.

Собственно, кто эти комментарии будет расставлять?
источник

MM

Mikhail Maltsev in Compiler Development
> Наверняка можно без захламления кода что-то сделать.
С матрицами можно наверное распознавать когда в расположенных рядом строках можно найти общую для этих строк последовательность столбцов, в каждом из которых начинается токен одного типа. Понять в общем виде, когда пользователь хотел добиться какого-то специального форматирования, а когда нет - задача из "класса" AI-complete
источник

AT

Alexander Tchitchigin in Compiler Development
Mikhail Maltsev
> Наверняка можно без захламления кода что-то сделать.
С матрицами можно наверное распознавать когда в расположенных рядом строках можно найти общую для этих строк последовательность столбцов, в каждом из которых начинается токен одного типа. Понять в общем виде, когда пользователь хотел добиться какого-то специального форматирования, а когда нет - задача из "класса" AI-complete
По-сути, всё-таки, ML-complete. Или даже statistics-complete. 😉
источник

AZ

Alexander Zaitsev in Compiler Development
Alexander Tchitchigin
По-сути, всё-таки, ML-complete. Или даже statistics-complete. 😉
AI дороже выглядит
источник

AT

Alexander Tchitchigin in Compiler Development
Alexander Zaitsev
AI дороже выглядит
А в этом чате есть инвесторы? 😂
источник

MM

Mikhail Maltsev in Compiler Development
> Собственно, кто эти комментарии будет расставлять?
Если какая-нибудь команда сильно захочет, она может у себя делать принудительную проверку что любой коммит не меняется после прогона через clang-format (или другой инструмент) с заданным набором опций и не давать коммитить без этого. Тогда разработчики будут сами расставлять комментарии.
источник

KR

K R in Compiler Development
Mikhail Maltsev
> Собственно, кто эти комментарии будет расставлять?
Если какая-нибудь команда сильно захочет, она может у себя делать принудительную проверку что любой коммит не меняется после прогона через clang-format (или другой инструмент) с заданным набором опций и не давать коммитить без этого. Тогда разработчики будут сами расставлять комментарии.
Практика показывает, что от балды выбирается стиль, а дальше кодобаза прогоняется через него «мальчиком-дизайнером».
источник

KR

K R in Compiler Development
Mikhail Maltsev
> Наверняка можно без захламления кода что-то сделать.
С матрицами можно наверное распознавать когда в расположенных рядом строках можно найти общую для этих строк последовательность столбцов, в каждом из которых начинается токен одного типа. Понять в общем виде, когда пользователь хотел добиться какого-то специального форматирования, а когда нет - задача из "класса" AI-complete
Ну поиск регулярностей - это довольно хорошо разработанная область. Плюс там, где форматирование нарочное, должны быть корреляции с AST.

Просто нужны некоторые исследования и теория.
источник

KR

K R in Compiler Development
Кроме того, интересно проносить форматирование вниз по истории git/svn. Это алгебраическая задача .
источник

PS

Peter Sovietov in Compiler Development
K R
Кстати, теория бы не помешала, раз уж все так двинулись на этом форматировании.
Теорию мы уже обсуждали https://t.me/CompilerDev/45566
источник

MM

Mikhail Maltsev in Compiler Development
> Просто нужны некоторые исследования и теория.
Кстати, ещё одна сложность с C/C++ AST ещё в том, что есть макросы и код надо форматировать до их раскрытия, а не после.
Если бы я работал над такой задачей (форматирование по AST), то наверное бы обходил  узлы AST и смотрел бы какому узлу какой участок исходного кода соответствует. Если узел лежит внутри раскрытого макроса, то заменял бы соответствующее поддерево на псевдо-узел "вызов макроса". Ещё надо не забывать про комментарии, лишние (с точки зрения AST) '\n' и т.п. Про эти элементы я бы наверное тоже как-то пытался угадать к какому узлу AST они относятся (следующему или предыдущему лексически) и считал бы частью узла.
источник

MM

Mikhail Maltsev in Compiler Development
> Теорию мы уже обсуждали https://t.me/CompilerDev/45566
Там вроде речь шла про pretty print
источник

PS

Peter Sovietov in Compiler Development
Выше речь шла о форматированном выводе кода на основе AST. Можно показать, что эта задача чрезвычайно сложна, а можно — показать, что ее давно и успешно решают. Но мой контекст — форматирование автоматически сгенерированного кода.
источник

MM

Mikhail Maltsev in Compiler Development
> Выше речь шла о форматированном выводе кода наоснове AST
Не совсем
источник

MM

Mikhail Maltsev in Compiler Development
Alexander Zaitsev
меня интересует не просто вывод AST, а именно форматирование исходного кода, оперируя AST, а не потоком токенов (поток токенов именно в clang-format и uncrustify, например)
Оно должно учитывать не только AST, но и исходное форматирование/комментарии/проч.
источник

AZ

Alexander Zaitsev in Compiler Development
Mikhail Maltsev
Оно должно учитывать не только AST, но и исходное форматирование/комментарии/проч.
да, совершенно верно
источник