Если бы я захотел изменить или добавить свои собственные расширения в C и добавить их в компилятор GCC C, что мне нужно было бы сделать? Я не хочу предлагать изменения в языке, я хочу знать, как на самом деле работает компилятор C.
Я взглянул на исходный код для GCC, и похоже, что Objective-C реализован как простой синтаксический анализатор, который генерирует код, который делает ссылки на измененную библиотеку времени выполнения, а затем для всего, что основано на C использует обычный компилятор Си. Я не изучал это интенсивно, поэтому я, вероятно, не на правильном пути.
Скажем, например, я хотел добавить свое собственное ключевое слово в Objective-C, просто для удовольствия. Я хочу добавить что-то, что кажется простым в реализации, например, возможно @assert
. Все, что я хочу, чтобы @assert
вызвал функцию, которую я добавлю в среду выполнения Objective C:
objc_runtime_assert (__FILE__, __LINE__, expression, "string version of expression");
Очевидно, что в любом случае я мог бы реализовать это как вызов функции и макрос, но я хочу получить представление об этапах синтаксического анализа и компиляции исходного кода C, и, возможно, чтобы я мог добавить свои собственные расширения в язык для собственного использования. .
Исходный код, на который я смотрел, постоянно ссылается на «деревья», и существует множество макросов, которые выполняют действия или получают информацию из этих деревьев.
Существует ли какая-либо документация, которая подробно объясняет подобные вещи?