当代码被被编译时将会进行 词法分析、语法分析、语义分析 ,

后面我们将用这段代码来举例说明:  

array[index]  =  (index+4)*(2+6);  


 

词法分析

当源代码被输入扫描器,扫描器的任务就是简单的进行词法分析,词法分析将会把代码中的字符分割成一系列的记号(关键字、标识符、字面量、特殊字符等)。

像上面例子将会被分析为:


 

语法分析

接下来,语法分析器将会对扫描产生的记号进行语法分析,从而产生语法树。这些语法树是以表达式为节点的树。

                                                                        示图:


 

语义分析

最后将由语义分析器来完成语义分析,即对表达式的语法层面分析。编译器所能做的分析是语义的静态分析。静态语义分析通常包括声明和类型的匹配,类型的转换等。这个阶段会报告错误的语法信息。 

                                                                        示图:


当上面各分析中有不过关的,便会编译错误

完! 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐