Информация об изменениях

Сообщение Re[5]: Что умеет C++ времени компиляции? от 04.08.2023 16:36

Изменено 04.08.2023 16:37 vdimas

Re[5]: Что умеет C++ времени компиляции?
Здравствуйте, B0FEE664, Вы писали:

R>>Для кодогенерации сущесвуют custom build steps, куда можно запихать что угодно и сгенерировать что угодно.

BFE>Только вот в некоторых случаях для это нужно иметь инструменты равные компилятору по сложности.

Так и есть.
Можно получить модель кода с помощью clang — у него есть режим дампа AST.

https://opensource.apple.com/source/clang/clang-425.0.24/src/tools/clang/docs/IntroductionToTheClangAST.html


BFE>иначе нам придётся парсить код ещё раз и не факт, что код будет рапарсен одинаково


Тоже верно.
Если пользоваться cmake, то есть возможность взять именно те же аргументы командной строки и добавить нужный аргумент -ast-dump.

Насчёт ситуации с другими целевыми компиляторами — clang может выступать фронендом для msvc и gcc, что покрывает щепетильный вопрос однозначности парсинга для кодогенерации и для целевого образа.
Re[5]: Что умеет C++ времени компиляции?
Здравствуйте, B0FEE664, Вы писали:

R>>Для кодогенерации сущесвуют custom build steps, куда можно запихать что угодно и сгенерировать что угодно.

BFE>Только вот в некоторых случаях для это нужно иметь инструменты равные компилятору по сложности.

Так и есть.
Можно получить модель кода с помощью clang — у него есть режим дампа AST.

https://opensource.apple.com/source/clang/clang-425.0.24/src/tools/clang/docs/IntroductionToTheClangAST.html

А так же есть тулзины (если поискать) по чтению этого AST и манипулированию им.


BFE>иначе нам придётся парсить код ещё раз и не факт, что код будет рапарсен одинаково


Тоже верно.
Если пользоваться cmake, то есть возможность взять именно те же аргументы командной строки и добавить нужный аргумент -ast-dump.

Насчёт ситуации с другими целевыми компиляторами — clang может выступать фронендом для msvc и gcc, что покрывает щепетильный вопрос однозначности парсинга для кодогенерации и для целевого образа.