Я пытаюсь написать конечный автомат, который разрывает исходный файл и разбивает его на разделы, которые являются либо бизнесом компилятора, либо бизнесом препроцессора. Не глубокий обход, я просто ищу разделы, которые являются либо комментариями, либо директивами препроцессора. (без макросов, без условно скомпилированных блоков и т. д.)Где законно указывать директиву препроцессора?
Комментарии достаточно просты, но я не уверен на 100%, когда законно указывать директиву препроцессора. Например, является ли следующая строка законной?
int i; #include <derp.h>
Есть ли особые случаи, когда разрешены некоторые директивы, а другие нет?
Я искал google и так и не нашел вопроса, который отвечает на это.
Пожалуйста, ответьте за ОБА C и C++, я отметил и намеренно, и намеренно.
Если вы пытаетесь сделать парсер, вы действительно должны использовать окончательную грамматику для языка (то есть стандарт (ы)) , вместо того, чтобы полагаться на ответы, заданные смертоносными смертными здесь, на SO! –
вы даже попробовали Google? – xaxxon
Да, я пробовал Google. Там сказано так, прямо в этом вопросе. – Wug