• / 37
  • 下载费用:10 金币  

第六章 语义分析(1).ppt

关 键 词:
第六章 语义分析(1).ppt
资源描述:
语义分析在编译程序中的作用,词法分析,语法分析,语义分析,中间代码优化,中间代码生成,目标代码生成,,,,,,,,分析,合成,第六章 语义分析,6.1 语义分析概述 6.2 符号表 6.3 类型的语义分析 6.4 声明的语义分析 6.5 程序体的语义分析 6.6 属性文法和动作文法,6.1 语义分析概述,语法(Syntax)和语义(Semantics)的区别 语义分析的必要性 程序设计语言语义的分类 如何描述程序设计语言的语义? 语义分析的主要任务,语法和语义的区别,语法: 是描述一个合法定义的程序结构的规则 例如:  id( ) 语义: 说明一个合法定义的程序的含义,int x; float* f(); x(); x = f();,,符合变量声明的语法、语义,,符合函数声明的语法、语义,,符合函数调用的语法、不符合语义,,符合赋值语句的语法、不符合语义,语义分析的必要性,一个语法正确的程序不能保证它是有意义的! 程序中容易出现各种语义错误: 标识符未声明 y = x+3; 操作数的类型与操作符的类型不匹配 y = x*3; 数组下标变量的类型出错 A[x]; ……,语义分析不能检查程序在计算逻辑上的错误!!!!,程序设计语言语义的分类,静态语义(static semantics) 编译时(compile-time)可以检查的语义 例如:标识符未声明标识符重复声明 动态语义(dynamics semantics) 目标程序运行时(run-time)才能检查的语义 例如:除零溢出错误 x/(y-i); 当 y = i时数组下标越界 int a[5]; a[5] =0;无效指针 int*p; p =NULL; *p = 3;,静态语义&动态语义,#define a (x+1) int x = 2; void b() { int x = 1; printf(“%d\n”, a); } void c() { printf(“%d\n”, a); } void main() { b();c(); },如何描述程序设计语言的语义?,程序设计语言的形式语义 属性文法 (用于描述静态语义) 操作语义(Operational Semantics) 指称语义(Denotational Semantics) 代数语义(Algebra Semantics) 公理语义(Axiomatic Semantics) 形式语义技术没有形式语法技术成熟 硕士研究生的课程--《形式语义学》,语义分析的主要任务,输入:抽象语法树 或 TokenList 输出:抽象语法树+符号表 或 TokenList+符号表 数据结构:抽象语法树+符号表 算法: 基于抽象语法树的语义分析:是自左向右先根遍历抽象语法树的过程 声明节点:存储标识符的属性,检查重复声明错误 语句节点:使用标识符的属性,检查各种语义错误 基于TokenList的语义分析:是自左向右扫描Token序列的过程 扫描到标识符Token($id,idname)  ($id, identry); 语义分析可在语法分析或代码生成的同时完成。一般地,语义分析是伴随着语法分析完成的;,类Pascal语言的抽象语法树,,,,,,,,,,,,类型声明,,,,,变量声明,,,,过程声明,,,,……,,,……,,,……,,,……,,,……,,,……,,,,,,根结点,ProK,,,,,,,类型声明,,TypeK,,,,,变量声明,VarK,,,,程序体,,StmLK,,,,,程序头,,PheadK,,,,声明,1,,,,声明,n,,,,,声明,1,,,,声明,n,,,,,,,,语句,n,,,,语句,1,,,,,,过程声明,1,,,,过程声明,n,,,,语句,n,,,,语句,1,,,,,,形参,n,,,,形参,1,,,,,,,,,,,过程体,StmLK,,,,,类C语言的抽象语法树,程序Root,,节点 Node1,,节点 Node2,……,,节点 Noden,节点 Node,,常量声明,类型声明,变量声明,函数声明,,FunNode1,,FunNode1,…,FunNode1,,,,,语句,,形参声明,,,,,,,,基于Tokenlist的语义分析,int x,y; int f();,($int, -) ($id, x) ($comma, -) ($id, y) ($semi,-) ($int, -) ($id, f) ($lparen, -) ($rparen,-) ($semi,-),,($int, -) ($id, xentry) ($comma, -) ($id, yentry) ($semi,-) ($int, -) ($id, fentry) ($lparen, -) ($rparen,-) ($sem
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:第六章 语义分析(1).ppt
链接地址:https://www.weizhuannet.com/p-8138431.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

微传网博客

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开