Как проверить правильность синтаксиса кода C программно? - PullRequest
0 голосов
/ 03 июня 2019

Я работаю над методом обнаружения программного плагиата для исходных файлов на языке C.Для этого я создал программу, упрощающую синтаксис исходных кодов, например, чтобы все имена переменных были одинаковыми и чтобы все типы циклов были одинаковыми.Очевидно, что я не могу сделать это с кодами, которые не имеют правильного синтаксиса (поэтому не могут быть скомпилированы).

Существует команда GCC для просмотра проблем синтаксиса в исходном коде C: gcc -c -fsyntax-only assignment1.c.Эта команда печатает код assignment1.c с некоторыми странными строками и проблемами синтаксиса (если существует).Но мне нужен логический вывод, просто укажите, правильно ли написан код или нет.Есть ли команда для этого?Или как для этого использовать команду -fsyntax-only?(Кстати, я не хочу компилировать коды, все, что мне нужно, это проверить их синтаксис.)

edit: я думаю, что меня неправильно поняли.Мне нужно прочитать исходные файлы C, а затем программно проверить их синтаксис.Поэтому я должен использовать вывод команды gcc -c -fsyntax-only assignment1.c в созданной мной программе.

1 Ответ

1 голос
/ 03 июня 2019
Флаг

GCC -fsyntax-only может использоваться для проверки синтаксически допустимости входного файла без создания какого-либо выходного файла. Возвращаемое значение устанавливается в зависимости от того, был ли ввод действительным.

Таким образом, в ш / баш работают следующие:

input=file.c

if gcc -c -fsyntax-only "$input" >/dev/null 2>&1; then
    echo "$input is valid C code"
else
    echo "$input is invalid"
fi

Перенаправление вывода добавлено для подавления синтаксических сообщений об ошибках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...