编译原理之语义分析

语义分析:

(见语法制导翻译篇)

语义是指源程序及其组成部分所表述的含义
和语法不同,语法是关于程序及其组成部分的构成规则的描述,是上下文无关的;而语义是关于语法结构的含义及其使用规则的描述,是上下文有关的。
语法上正确,其语义不一定正确。语义分析与中间代码生成器基于语义规则,对语法树进行语义分析(变量是否定义,类型是否正确)和中间代码生成(三元式、四元式等)。 主要功能包括建立符号表,进行静态语义检查,发现语义错误
编译器分析的语义都是静态语义,静态语义是指在编译器间可以确定的语义,与之对应的动态语义只能在运行期间才能被确定。
静态语义分析通常包括声明、类型匹配、类型转换等。经过语义分析之后,在语法分析生成的语法树的基础上进一步对表达式做一些标识。如:有些某些类型需要做隐式转化,语义分析器会在之前的语法树中插入相应的转换节点
在这里插入图片描述 2.语义描述
程序的语义,函数的语义,各种名字的声明和使用的语义, 各种语句的语义,表达式的语义
3.符号表
在编译程序工作的过程中,需要不断收集、记录和使用源程序中的各种名字及其属性等相关信息,以便检查语义是否正确,并辅助翻译为正确的代码。一般是建立表格的方式记录信息。
功能1)收集符号信息 2)进行语义的合法性检查
符号表应该包含常量表、变量表、函数表等等。
常见的语义错误主要有
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章