Сообщение 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, что покрывает щепетильный вопрос однозначности парсинга для кодогенерации и для целевого образа.
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, что покрывает щепетильный вопрос однозначности парсинга для кодогенерации и для целевого образа.
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, что покрывает щепетильный вопрос однозначности парсинга для кодогенерации и для целевого образа.