我正在为我所在大学的编译器/语言课程编写一个玩具C编译器。
我正在尝试完善C语言中符号解析的语义,并使用此测试用例来验证,已经在常规编译器clang和gcc上进行了尝试。
void foo() { }
int main() { foo(5); } // foo has extraneous arguments
大多数编译器似乎只会警告关于额外参数的问题。
问题:这背后的基本原理是什么?
对于我的符号表生成/解析阶段,我考虑将函数作为一个带有返回类型和若干参数(根据语法)的符号。
谢谢。