- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
抽象语法树 结点类型 设计 建立抽象语法树 * typedef struct _ast ast; typedef struct _ast *past; struct _ast{ int ivalue; char* svalue; char* nodeType; past left; past right; }; 结点类型 结点指针类型 保存整数信息 保存字符串信息 结点类型 指向左子树 指向右子树 与 结点 相关函数设计 past newAstNode() 创建抽象语法树结点 past newNum(int value) 创建数值结点 结点中的ivalue被设置为value past newVarRef(char* name) 创建标识符结点 结点中的svalue被设置为name past newExpr(int oper, past left, past right) 创建一个表达式结点:ivalue表示运算符 left、right分别指向表达式的两个操作数 建立抽象语法树 * 建立了表达式a-4+c的抽象语法树 p1 = newVarRef( pa ); p2 = newNum( 4 ); p3 = newExpr( ‘-’, p1, p2); p4 = newVarRef( pc ); p5 = newExpr( ‘+’, p3, p4); 建立抽象语法树 * pa是指向标识符‘a’的指针 pc是指向标识符‘c’的指针 a或c是什么类型? 局部变量?全局变量? 建立语法树时需要填表 符号表的作用 登记符号属性值 查找符号的属性、检查其合法性 作为目标代码生成阶段地址分配的依据 符号(标识符)有哪些属性 变量:变量名、类型、值 函数:函数名、参数个数、参数类型,返回类型 “数据类型”对程序设计语言至关重要 语义分析 * “int a;” 意味着什么? 数据类型 是“数据”的抽象 定义了一组值和一组操作 为什么需要“数据类型” 实现“数据抽象” 不用关心存储单元中二进制位串的意义 * 语义分析 之 数据类型 C语言实现“分数”运算? 假如语言只支持位运算 “整数”运算如何进行? 语义分析 之 基本类型 * 基本数据类型 不用其它类型来定义的数据类型 int, float, char, string, bool 整数 支持不同长度的整数类型 java中4种有符号整数 byte, short, int, long 大多数计算机中 负整数是如何表示的? 二进制补码,为什么? 0的二进制反码有几种? 语义分析 之 基本类型 * 浮点数 实数的模拟,保持“近似值” 语言支持 两种浮点类型:float 和 double float:四个字节 double:八个字节 表示为小数和指数 大多数计算机中 浮点数是如何表示的? IEEE 浮点标准754格式 语义分析 之 基本类型 * 布尔类型 只有“真”和“假”两个值 C, Java, C#, C++ 中的布尔类型? 数值表达式是否可以当作布尔类型? 布尔类型如何表示?(占几位?) C99,C++允许 Java, C#不允许 通常为一个字节。为什么? 因为很多计算机 不能有效访问单个二进制位 语义分析 之 基本类型 * 总结:内部类型有以下优点 基本表示(二进制表示)的不可见 编译时类型检查 运算无二义检查 精度控制 对数据对象 类型和使用的操作 是否匹配的一致性检查 静态检查和动态检查 ①静态:编译时;使程序正确、有效 ②动态:运行时;影响可靠性、效率低 编程方便 * 语义分析 之 类型检查 语言按类型分类 无类型 没有类型定义 弱类型 所有类型检查在编译时完成 强类型 全部或部分类型检查在运行时完成 * 语义分析 之 类型检查 某种类型的值转换为另一种类型的值 语言应该提供类型转换机制 隐式(自动)转换 显式(强制)转换 * 语义分析 之 类型转换 混合运算 表达式给变量值赋 实参向函数形参传值 函数返回值 语义分析 之 类型转换 FORTRAN 类型转换的要求和规则都是隐式的 ADA 类型转换的要求和规则都是显式的 C 类型转换的要求和规则有隐式、显式 * 两种转换方式 ①拓展(扩大):转换
您可能关注的文档
最近下载
- 用于加工玻璃的双边磨边机.pdf VIP
- HIV相关知识培训课件.ppt
- 装配式农村住房建筑构造(二)(叠合钢网内置保温现浇混凝土墙体).pdf VIP
- 装配式农村住房建筑构造(三)(螺栓连接装配式夹芯保温混凝土墙体).pdf VIP
- J23J283 装配式农村住房建筑构造 (四) 混凝土自保温模块墙体 DBJT02-236-2023.pdf VIP
- J23J280 装配式农村住房建筑构造 (一) 桁架连接装配式模块墙体 DBJT02-233-2023.pdf VIP
- 一种双边磨边机.pdf VIP
- 癫痫诊疗指南(2025).docx
- 装配式农村住房建筑构造(五)(低层现浇混凝土聚苯模块墙体).docx VIP
- GB/T 25097-2010_绝缘体带电清洗剂.pdf
文档评论(0)