Я пытаюсь разобрать синтаксис файла C с помощью pycparser. Я отправляю файл C через препроцессор, а затем отправляю вывод препроцессора для анализа на pycparser
. Следующий код находится в одном из файлов C ...extern, за которым следует строка literal
extern "asm"
{
extern void ASM_Function(void);
}
pycparser
бросает и исключение говорит мне, что это не действует синтаксис C. Глядя на C BNF, ключевое слово extern
не допускает предшествующего ему строкового литерала. Я правильно читаю BNF? Была ли эта функциональность extern добавлена в более позднюю версию C или это специфический компилятор синтаксиса?
Вы уверены, что это не [код C++] (http://en.cppreference.com/w/cpp/language/language_linkage)? Однако может существовать компилятор C с таким расширением. – cremno
Не соответствует ли ASM код уровня сборки? 'asm volatile (@assembler funtion);'? – DarthSpeedious
@cremno Программа компилятора поддерживает как код C, так и C++, но я указал флаг выполнения только с использованием компилятора C. Это может быть расширение, которое позволяет программисту связывать сборку в –