Я пишу компилятор игрушек C для курса компилятора/языка в своем университете.
Я пытаюсь сформулировать семантику для разрешения символа в C и придумал этот тестовый пример, который я пробовал против обычных компиляторов clang и gcc.
void foo() { }
int main() { foo(5); } // foo has extraneous arguments
Большинство компиляторов только предупреждают о посторонних аргументах.
Вопрос: Какова основная причина этого?
Для фазы генерации/разрешения таблицы символов я рассматривал функцию как символ с типом возвращаемого значения и несколько параметризованных аргументов (на основе грамматики), каждый из которых имеет соответствующий тип.
Спасибо.