- 1、本文档共138页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译技术后五章课件(方便打印)
语义分析概述
符号表;必要性
分类
语义错误
功能;1.1语义分析的必要性;1.2语义分析的分类;1.3语义错误;语义错误 cont.;1.4语义分析的功能;语义分析的功能图示;符号名;2.1地位;2.2符号的内部表示;2.2.1值的内部表示;2.2.2类型的内部表示;实例;类和结构体;实例;2.2.3标识符的内部表示;层数和偏移;实例;Name;2.3符号表;2.3.1建立和访问;2.3.2符号表的处理;标识符的特点;局部化区入口;标识符处理的原则;语义分析例子;Name;符号表的分类;全局符号表的局部化;局部化实例;局部符号表管理——Scope栈;标号的语义分析;标号部分语义分析原理; 4)进入一个结构语句时,将本语句的LDEF和LUSE表位置填入SL表;
5)遇到一个“goto ?” 时:
查看LDEF表,看其中是否有?;
若无,将填入LUSE表;
6)退出一个结构化语句时:
清查本层LUSE表(若有定位则删除该项):用本层的LUSE中标号查本层定位表,若查到,则把该项??LUSE中删除;
作废本层的LDEF。
7)退出一个过/函时:
清查本层LUSE表;
作废本层的LDEC和LDEF。
8)程序结束时,清查LUSE表,若非空,则说明有标号为定位的错误。 ; 中间语言
语法制导方法
简单表达式的中间代码生成
原子语句的中间代码生成
结构语句的中间代码生成
声明的中间代码;7.1中间语言;7.1.1后缀表达式相关;7.1.2抽象语法树AGT和有向不循环图DAG;7.1.3三地址中间代码;四元式操作符分类;7.2语法制导方法;属性文法;动作文法;实例;类型检查和类型转换;中间代码生成中的几个问题;7.3简单表达式的中间代码生成;7.4下标变量中间代码生成;表达式中间代码生成的例子;赋值语句的形式为:Left := Right
赋值语句的四元式结构 :
Left 的中间代码
Right 的中间代码
(FLOAT , right , —, t )
(ASSIG , Right(即t), n , Left )
语法制导: S ?L:=R $ASSIGN
$ASSIGN:
从语义栈中取出赋值号左右分量的语义信息;
比较类型是否相同,如果不同,则生成类型转换中间代码;
生成赋值四元式(ASSIG , Right (t), n , Left )。 ;;形参实参结合中间代码:
(VALACT, Ei.Arg, offseti, sizei)……值参
(VARACT, Ei.Arg, offseti, sizei)……变参
(FUNCACT, Ei.Arg, offseti, sizei)……函数参数
(PROACT, Ei.Arg, offseti, sizei)……过程参数;例:x + f (H(10), g(Y))
其中x是整型变量,H为形参函数名,H的形参为
值参,f、g为实在函数名,f的参数均为值参,
g的参数为变参。
( VALACT,10,?1,1 )
( CALL, H, false, t1 )
( VARACT, Y,?1,1 )
( CALL, g, true, t2 )
( VALACT, t1, ?1,size1 )
( VALACT, t2, ?2,size2 )
( CALL, f, true, t3 )
( ADDI, x, t3, t4 );过/函调用中间代码的生成;过/函调用的语法制导;;条件语句的中间代码;条件语句的语法制导
S→ if E then $ThenIf S ElsePart $EndIf
ElsePart → else $ElseIf S
ElsePart → ?
$ThenIf
根据Sem [ top ]的值,检查它的类型是否为boolean类型,如果是则产生中间代码 (THEN, Sem[top], _, _)。
$ElseIf
产生中间代码 (ELSE, _, _, _)
$EndIf
产生中间代码 (ENDIF, _, _, _) ;While语句的中间代码;while语句的语法制导
S→ while $StartWhile E do $DoWhile S $EndWhile
$StartWhile
产生中间代码 (WHILE, _, _, _)
$DoWhile
遇 do 时(表达式E处理完,其值在Sem[top]):
⑴ 类型检查:检查E是否为boolean类型;
⑵ 产生中间代码 (DO, E.FORM ,
您可能关注的文档
- 简化句子(二)(二)用过去分词简化句子示例:1. Once it is....ppt
- 简单控制结构 结构化程序设计的原则是:任何程序都可以由三....ppt
- 答题模板助你答题更方便.ppt
- 简介作者:.ppt
- 简单的排列、组合问题.ppt
- 简单清爽ppt模板之蓝色空间,ppt背景图片,ppt模板下载www.2ppt.cn.ppt
- 简单的线性规划(第2课时).ppt
- 简单投资技巧——董政豪.ppt
- 简单的平移作图(二)演示文稿.ppt
- 简单的二元二次方程(一).ppt
- 2025年山东航空学院公开招聘人员(8名)笔试备考试题及答案解析.docx
- 2024年吉林省长春市中考物理试题(原卷版).pdf
- 2025广西百色市乐业县总工会招聘12351热线工单业务处理专员1人笔试备考题库及答案解析.docx
- 2025温州乐清市文化旅游投资集团有限公司所属公司招聘46人笔试备考题库及答案解析.docx
- 2024年吉林省中考物理试题(原卷版).pdf
- 2025温州龙湾区公开招聘中小学教师47人笔试备考题库及答案解析.docx
- 2024年吉林省长春市中考数学试题(解析版).pdf
- 2024年江苏省常州市中考语文真题(原卷版).pdf
- 贡井区2025年面向社会公开选聘社区工作者(15人)笔试备考题库及答案解析.docx
- 2025年江西航空外包项目招聘见习人员1人笔试备考题库及答案解析.docx
文档评论(0)