例如,如果我有以下代码
int f()
{
/*set struct value*/
struct test_2 t;
t.j = 0;
}
如果我收到struct test_2
未声明的错误,我想知道编译的哪个阶段检测到此特定错误?另外我想知道哪个阶段编译会删除代码中的注释?我很抱歉,如果这是一个愚蠢的问题,我只是在研究编译器,并且很好奇。
据我所知,编译阶段包括以下内容
Lexical Analysis
Parsing
Semantic Analysis
Intermediate Code Generation
Code Optimization
Final Code Generation
答案 0 :(得分:1)
这将取决于编译器,但最自然的拟合是评论的词法分析(因为它们被其余的进程忽略并且是正则表达式),并且语义分析用于检测某些东西没有已经宣布(因为Parsing不会保留符号表)。