В настоящее время я разрабатываю простой язык программирования для легкого создания проектов на C++. Он позволяет вводить короткий код на языке C++ и автоматически генерировать файлы .h и .cpp.C++ сопоставление типа с его заголовочным файлом
Мне нужно как-то до map a type, например. из стандартной библиотеки в соответствующий заголовочный файл. Это позволяет просто использовать тип на моем языке и автоматически выводить, какие заголовки включать в сгенерированный код.
Вот пример языка, как это прямо сейчас:
class Car {
std::string print()
members:
int i, j
std::array<Wheel, 4> wheels
}
При обработке этого кода я найти типы std::string
и std::array
, которые должны быть отображены в их заголовочных файлах. Как достичь этого соответствия?
Возможно, база данных общедоступна? Я не хочу, конечно, самостоятельно анализировать все заголовки (что я предполагаю, как это делают IDE).
Помимо поддержки стандартной библиотеки, конечно, было бы полезно иметь возможность поддерживать и другие библиотеки, но это только вторичная цель.
Для стандартной библиотеки вы можете просто запрограммировать его. Для произвольных заголовков вы можете использовать парсер C++ (например, Clang's front end) для анализа заголовков. Если вы разрабатываете проект как амбициозный, как вы говорите, использование стороннего анализатора C++ не должно быть проблематичным. – Angew
Что вы подразумеваете под жестким кодированием? STL включает тысячи типов, как я должен это делать (а не вручную)? Мне нравится ваше второе предложение! Вы когда-нибудь делали что-то подобное и могли указать мне на что-то, что помогло бы мне использовать парсер Clang в моем проекте? – user1286875
Создайте какой-то файл сопоставления или что-то в этом роде. Он будет требовать обновления только каждые 3 или около того лет, когда стандарт изменится. Разумеется, вы также можете использовать синтаксический анализатор для стандартных заголовков. – Angew