2013-02-17 6 views
1

Я реализует C препроцессор ...Реализация C препроцессор

На вики, я нашел следующие функциональные возможности этого ...

  • триграф замены
  • линии сращивания
  • лексемизацию
  • Макрораспространение и обработка директив
  • Включение файла

Мои вопросы:

  • Am I отсутствует какой-либо функциональности?
  • Какова правильная последовательность выполнения вышеуказанных функций? (то есть, что делается до того, что в сегодняшних практических препроцессорах?)

Если кто-нибудь знает какой-либо стандартный документ об этом, пожалуйста, укажите это тоже.

ответ

7

Стандартный документ - это стандарт C! Официальные версии являются несвободными, но вы можете найти черновики, которые достаточно точны, например. http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf для C99.

Главы представляющие интерес: 5.1.1.2 (этапы перевода) и 6.10 (директивы предварительной обработки).

+2

Если вы на нем, вероятно, лучше всего также посмотреть на текущий стандарт C11, а не только на C99. Я не думаю, что многое изменилось, но вы никогда не знаете. Это будет «1570» вместо «1256». –

+0

@JensGustedt Спасибо! – Sam

2

Вы можете проверить ССАГПЗ документов, чтобы увидеть, как они реализуют его: http://gcc.gnu.org/onlinedocs/cpp/

Вы также мог бы посмотреть на исходный коде для GCC: http://www.gnu.org/software/gcc/releases.html

Надеется, что это помогает

+0

Спасибо! Не могли бы вы рассказать мне, где искать код препроцессора C внутри огромной (я имею в виду чрезвычайно огромную!) Папку с исходным кодом? – Sam

Смежные вопросы