第六章 语义分析(3)
第六章 语义分析 6.1 语义分析概述
6.2 符号表 6.3 类型的语义分析 6.4 声明的语义分析 6.5 程序体的语义分析 6.6 属性文法和动作文法
内容回顾
什么是语义分析?– 建立符号表; – 检查语义错误;
在何处进行分析?– 声明部分 --- 建立符号表;检查“重复声明”错误; – 体部分 --- 查找符号表,检查“有使用无声明”错误和
类型相关的错误;
怎样进行语义分析?– 属性文法 – 动作文法 – 基于语法树的语义分析;
6.3 类型的语义分析
基本概念– 类型等价性 – 类型相容性
类型的语义分析分析什么? 在何处分析? 怎样分析?
6.3 类型的语义分析
类型等价性– 按名等价– 按结构等价
typedef int T1[10]; typedef int T2[10];
T1 a, b; T2 c, d;
6.3 类型的语义分析
类型相容性– 具体的编译器定义不同;– 常见的三种相容性 操作分量相容 赋值相容性 形参和值参相容性
6.3 类型的语义分析
类型的语义分析分析什么?– 建立类型的内部表示; – 检查类型定义中的语义错误;
在何处进行语义分析?– 类型声明
– 变量声明– 参数声明
类Pascal语言的抽象语法树根结点 ProK程序头 PheadK 类型声明 TypeK 变量声明 程序体 StmLK
VarK
声明 1 声明 1
……
声明 n
语句 1
……
语句 n
……
声明 n 过程声明 1
……
过程声明 n
过程体 StmLK 形参 1
……
形参 n 语句 1
……
语句 n
类型声明
变量声明
过程声明
类C语言的抽象语法树程序Root 节点 Node2 …… 常量声明 类型声明 节点 Node 节点 Noden FunNode1 节点 Node1
语句
变量声明函数声明
形参声明 FunNode1
… FunNode1
类型的语义分析
怎样分析?– 根据类型的不同,分别建立它们的内部表示; 类型名 ; 基本类型; 枚举类型; 数组类型; 结构类型; 联合类型; 指针类型; 递归类型
6.3 类型的语义分析
类型名– 查找符号表,取得名字对应的内部表示;
基本类型– 由系统预定义好并存储在符号表中,可以直接引用
Name int bool char real
Kind typeKind typeKind typeKind typeKind
TypePtr intPtr boolPtr charPtr realPtr
Size intSize boolSize charSize realSize
Kind intTy boolTy charTy realTy
6.3 类型的语义分析
枚举类型– 一般形式: (id1, …, idn) – 常量标识符:
(id1, intType, constKind, 0) …… (idn, intType, constKind, n-1) – 建立常量标识符的内部表示; – 建立枚举类型的内部表示;
Size 1
Kind enumTy
EListid1
…
idn nil
6.3 类型的语义分析
数组类型– 取得数组的下界Low和上界Up;– 获取或建立成分类型的内部表示指针; – 计算数组类型的空间大小: size = sizeof(Ele
mTyp)
(Up-Low+1) – 建立数组类型的内部表示;
Size
KindarrayTy
Low
Up
ElemTy
6.3 类型的语义分析
结构体– 对每个域名标识符,建立其类型的内部表示; – 将所有域的指针链起来形成一个链,表示结构
体; – 将各个域的size的和作为结构体的size; – 建立结构体的内部表示;
Size
Kind structTy
Body
6.3 类型的语义分析
联合体– 对每个域名标识符,建立其类型的内部表示(每个域
的偏移都是0); – 将所有域的指针链起来形成一个链,表示联合体; – 将size最大的域的size作为联合体的size; – 建立联合体的内部表示;
Size
Kind unionTy
Body
6.3 类型的语义分析
指针类型– 取得基类型的指针; – 建立指针类型的内部表示;
递归类型– Typedef struct treenode
{ int val; struct treenode * left; struct treenode * right;}TreeNode; – 方法: 回填;
第六章 语义分析 6.1 语义分析概述
6.2 符号表 6.3 类型的语义分析 6.4 声明的语义分析 6.5 程序体的语义分析 6.6 属性文法和动作文法
…… 此处隐藏:375字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [行业资料]创设有效语境 改善英语教学
- [行业资料]微商推广引流的44种方法
- [行业资料]医疗机构输血科血库基本标准
- [行业资料]锂离子电池项目可行性研究报告(2015年
- [行业资料]申请执行人长沙市开福区人口和计划生育
- [行业资料]倾听草木的呼吸(初中阅读)
- [行业资料]长沙新环境厂房租赁合同书
- [行业资料]2022年经济师《金融专业知识与实务(中
- [行业资料]浦东新区2009学年度第二学期期末考试七
- [行业资料]企业劳动用工协议书
- [行业资料]最新苏科版七年级数学上册第二章有理数
- [行业资料]12星座与英语词汇学习
- [行业资料]2008年高考化学科经验
- [行业资料]镇政府2015年工作总结及2016年政府工作
- [行业资料]梧州市产业园区规划及招商引资报告
- [行业资料]大体积砼承台施工作业指导书
- [行业资料]学生干部在创建和谐校园中的作1
- [行业资料]小学语文教师实习个人总结
- [行业资料]2014完美最新奖金制度
- [行业资料]2016年一建建筑实务-重要知识点地质
- 【最新】人教版小学语文三年级上册:第
- 中国中小企业年鉴(地区数据)
- 动物与人类生活的关系 ppt
- 选修3 专题3 胚胎工程知识点
- 遥感技术基础复习题
- 公司员工职业生涯规划实施方案
- 辽宁省建筑施工企业安全生产许可证管理
- 15秋福师《中外幼儿教育史》在线作业二
- 2015-2020年中国网络视频行业深度调研
- 数学八年级下华东师大版21.1算术平均数
- 苏教版一年级语文下册《小松树和大松树
- 油画论文:摄影对当下油画艺术的影响
- 西方自由主义影响下的新闻自由——从17
- 基于支持向量机的商业银行信用风险评估
- 机械设计基础复习题答案(修改)(1)
- 语文:高考作文素材:材料引用及论点论
- 月份工程进度款结算单62+56
- 2018-2023年中国互联网基金行业现状研
- 人教版 PEP 五年级下册Unit1Lesson1 th
- 2014学年第二学期四年级数学期末教学质




