- 1
- 0
- 约6万字
- 约 169页
- 2023-07-29 发布于广东
- 举报
编译原理语义分析和中间代码生成;4.1 概 述 ; 直接生成机器语言或汇编语言形式的目标代码的优点是编译时间短且无需中间代码到目标代码的翻译,而中间代码的优点是使编译结构在逻辑上更为简单明确,特别是使目标代码的优化比较容易实现。
; 如同在进行词法分析、语法分析的同时也进行着词法检查、语法检查一样,在语义分析时也必然要进行语义检查。动态语义检查需要生成相应的目标代码,它是在运行时进行的;静态语义检查是在编译时完成的,它涉及以下几个方面:
(1) 类型检查,如参与运算的操作数其类型应相容。
(2) 控制流检查,用以保证控制语句有合法的转向点。如C语言中不允许goto语句转入case语句流;break语句需寻找包含它的最小switch、while或for语句方可找到转向点,否则出错。
; (3) 一致性检查,如在相同作用域中标识符只能说明一次、case语句的标号不能相同等。
语义分析阶段只产生中间代码而不生成目标代码的方法使编译程序的开发变得较为容易,但语义分析不像词法分析和语法分析那样可以分别用正规文法和上下文无关文法描述。由于语义是上下文有关的,因此语义的形式化描述是非常困难的,目前较为常见的是用属性文法作为描述程序语言语义的工具,并采用语法制导翻译的方法完成对语法成分的翻译工作。
; 语法制导翻译方法
语法制导翻译的方法就是为每个产生式配上一个翻译子程序(称语义动作或语义子程序),并在语法分析的同时执行这些子程序。语义动作是为产生式赋予具体意义的手段,它一方面指出了一个产生式所产生的符号串的意义,另一方面又按照这种意义规定了生成某种中间代码应做哪些基本动作。在语法分析过程中,当一个产生式获得匹配(对于自上而下分析)或用于归约(对于自下而上分析)时,此产生式相应的语义子程序就进入工作,完成既定的翻译任务。
; 语法制导翻译分为自下而上语法制导翻译和自上而下语法制导翻译,我们重点介绍自下而上语法制导翻译。
假定有一个自下而上的LR分析器,我们可以把这个LR分析器的能力加以扩大,使它能在用某个产生式进行归约的同时调用相应的语义子程序进行有关的翻译工作;每个产生式的语义子程序执行之后,某些结果(语义信息)必须作为此产生式的左部符号的语义值暂时保存下来,以便以后语义子程序引用这些信息。
; 此外,原LR分析器的分析栈也加以扩充,以便能够存放与文法符号相对应的语义值。这样,分析栈可以存放三类信息:分析状态、文法符号及文法符号对应的语义值。扩充后的分析栈如图4–1所示。
作为一个例子,我们考虑下面的文法及语义动作所执行的程序:
;产生式 语义动作
(0) S→E print val[TOP]
(1) E→E(1)+E(2) val[TOP]=val[TOP]+val[TOP+2]
(2) E→E(1)*E(2) val[TOP]=val[TOP]*val[TOP+2]
(3) E→(E(1)) val[TOP]= val[TOP+1]
(4) E→i val[TOP]=lexval (注:lexval为i的整型内部值)
这个文法的LR分析表见表3.20。
; 我们扩充分析栈工作的总控程序功能,使其在完成语法分析的同时也能完成语义分析工作(这时的语法分析栈已成为语义分析栈);即在用某一个规则进行归约之后,调用相应的语义子程序完成与所用产生式相应的语义动作,并将每次工作后的语义值保存在扩充后的“语义值”栈中。图4–2表示算术表达式7+9*5#的语法树及各结点值,而表4.1则给出了根据表3.20用LR语法制导翻译方法得到的该表达式的语义分析和计值过程。;;;表4.1 表达式7+9*5#的语义分析和计值过程;4.2 属 性 文 法; 例如,判断变量X的类型是否匹配,要用X的数据类型来描述;判断变量X是否存在,要用X的存储位置来描述;而对X的运算,则要用X的值来描述;因此,语义分析阶段引入X的属性,如X.type、X.place、X.val等来分别描述变量X的类型、存储位置以及值等不同的特征。
文法符号的属性可分为继承属性与综合属性两类。
继承属性用于“自上而下”传递信息。继承属性由相应语法树中结点的父结点属性计算得到,即沿语法树向下传递,由根结点到分枝(子)结点,它反映了对上下文依赖的特性。继承属性可以很方便地用来表示程序语言上下文的结构关系。; 综合属性用于“自下而上”传递信息。
您可能关注的文档
- 地层旋回性沉积记录及岩石.ppt
- 不锈钢舱化学品船制造.ppt
- 多相流体的渗流机理.ppt
- 八年级物理上册密度.ppt
- 第一章结构动力学.ppt
- 强直性肌营养不良症.ppt
- 第五章 第二节文心雕龙.ppt
- 第八章 抽样设计.ppt
- 成套电器与电器的智能化.ppt
- 光电子幻灯片.ppt
- 2026年中国窗饰产品市场全景调查与市场供需预测报告.docx
- 2026年中国船舶水下清洗行业深度研究报告:市场需求预测、进入壁垒及投资风险.docx
- 2026年中国船用绞车行业运行态势及十五五盈利前景预测报告.docx
- 2026年中国橱柜行业深度调研报告.docx
- 2026年中国船用绞车市场深度调研及投资前景战略分析报告.docx
- 2026年中国船用配套设备市场发展策略及投资潜力可行性预测报告.docx
- 2026年中国储能材料行业运营态势与投资前景预测分析报告.docx
- 2026年中国储氢材料行业运营现状及发展规划分析报告.docx
- 2026年中国传真机市场深度研究及投资前景咨询报告.docx
- 2026年中国储能变流器(PCS)产业深度评估与发展前景趋势分析研究报告.docx
最近下载
- GB/T 4340.1-2024金属材料 维氏硬度试验 第1部分:试验方法.pdf
- 高血压病人的护理(PPT).pptx VIP
- IEC 62446-1(中文版)光伏检测标准.pdf VIP
- 带头固本培元、增强党性方面存在的问题及下一步整改措施(“五个带头”8篇精选).docx VIP
- 呼吸机相关性肺炎的预防措施.ppt VIP
- 建筑电气工程《建筑工程施工工艺规程》山东省工程建设标准.doc VIP
- 2019年基金法律法规真题2.docx VIP
- 四年级语文下册《挑山工》教学设计.doc VIP
- 2019年基础医学知识竞赛练习题(5)其他医科组.docx VIP
- 2026年党建工作要点.pdf VIP
原创力文档

文档评论(0)