1 / 37
文档名称:

语义分析-语义处理概述.ppt

格式:ppt   大小:199KB   页数:37页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

语义分析-语义处理概述.ppt

上传人:AIOPIO 2021/4/10 文件大小:199 KB

下载得到文件列表

语义分析-语义处理概述.ppt

文档介绍

文档介绍:第八章 语义分析
语义处理概述
属性文法和语法制导翻译
中间代码的形式
中间代码生成(典型语句的翻译)

语义分析-语义处理概述
源语言程序
中间代码
汇编代码
词法分析
语义分析
语法分析
中间代码生成
代码生成
在编译中的逻辑阶段
前端处理
后端处理
语义处理
(语义分析和中间代码生成)
语义分析-语义处理概述
源语言程序
汇编代码
词法分析
语义分析
语法分析
代码生成
前端处理
后端处理
语义处理
(语义分析)
语义分析-语义处理概述
语义处理的任务
静态语义检查
静态语义:语法规则的良形式条件
静态语义检查:审查静态语义
动态语义处理
动态语义:程序单元执行的操作
动态语义处理:生成(中间/目标)代码
语义分析-语义处理概述
语义处理的实现
属性文法:描述语义规则。
语法制导翻译:在语法分析的同时,执行语义规则描述的动作:
检查静态语义
生成中间代码/目标代码
语义分析-语义处理概述
语义处理的环境:符号表
为语义分析提供类型、作用域等信息。
为代码生成提供类型、作用域、存储类别、存储(相对)位置等信息。
语义分析-语义处理概述
归纳:语义分析(静态语义处理)
(1)类型检查。验证程序中执行的每个操作是否遵守语言的类型系统的过程.,编译程序必须报告不符合类型系统的信息。
(2)控制流检查。控制流语句必须使控制转移到合法的地方。例如,在C语言中break语句使控制跳离包括该语句的最小while、for或switch语句。如果不存在包括它的这样的语句,则就报错。
(3)一致性检查。在很多场合要求对象只能被定义一次。例如Pascal语言规定同一标识符在一个分程序中只能被说明一次,同一case语句的标号不能相同,枚举类型的元素不能重复出现等等。
(4)相关名字检查。有时,同一名字必须出现两次或多次。例如,Ada 语言程序中,循环或程序块可以有一个名字,出现在这些结构的开头和结尾,编译程序必须检查这两个地方用的名字是相同的。
(5)名字的作用域分析
语义分析-语义处理概述
归纳:语义分析(通俗说法)
给你一段文字英文,已经完成语法分析,要你进行语义分析。(自然语言的语义分析)
静态语义部分:该单词是否是词典中的单词,确定每个单词的具体含义(查字典),判断是否有不符合逻辑的含义(词与词之间是否搭配,apple eats a boy)。
动态语义部分:生成汉语翻译,对需要调整句子结构的进行调整等等。
语义分析-语义处理概述
类型检查程序的设计(可选)



基础 类型的基本概念
语义分析-语义处理概述
类型的基本概念(可选)
数据类型的三要素:
用于区别这种数据类型的数据对象的属性
这种类型数据对象可以具有的值
可以施用在这种类型的数据对象上的操作
数据类型分为:
基本(初等)数据类型:数值数据,逻辑数据,字符数据,指针类型等。
复合数据类型:数组、结构、表、栈、树等。
抽象数据类型:Ada的包(Package),C++的类(Class)等。
语义分析-语义处理概述