- 1、本文档共62页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章 语义分析和代码生成
10.1 语义分析的概念
10.2 栈式抽象机及其汇编指令
10.3 声明的处理
10.4 表达式的处理
10.5 赋值语句的处理
10.6 控制语句的处理
10.7 过程调用和返回
1
假定:
• 源语言: 通用的过程语言
• 生成代码:栈式抽象机的(伪)汇编程序
• 翻译方法:自顶向下的属性翻译
• 语法成分翻译子程序参数设置:
– 继承属性为值形参
– 综合属性为变量形参
• 语法成分翻译动作子程序参数设置:
– 继承属性为值形参
– 综合属性不设形参,而作为动作子程序的返回值
(由RETURN语句返回)
2
5.2.3 (1) L-属性翻译文法(L-ATG )
这是属性翻译文法中较简单的一种。其输入文法要求是
LL(1)文法,可用自顶向下分析构造分析器。在分析过程中可进
行属性求值。
定义5.2: L-属性翻译文法是带有下列说明的翻译文法:
1. 文法中的终结符,非终结符及动作符号都带有属性,且每
个属性都有一个值域
2. 非终结符及动作符号的属性可分为继承属性和综合属性
3. 开始符号的继承属性具有指定的初始值
4. 输入符号(终结符号) 的每个综合属性具有指定的初始值
5.属性值的求值规则: (略)
3
10.1 语义分析的概念
1、上下文有关分析:即标识符的作用域
2、类型的一致性检查
3 、语义处理:
声明语句:其语义是声明变量的类型等,并不要求做其
他的操作。
语义分析程序的工作是填符号表,登录名字
的特征信息,分配存储。
执行语句:语义是要做某种操作。
语义处理的任务:按某种操作的目标结构生
成中间代码或目标代码。
4
用上下文无关文法只能描述语言的语法结构,而不
能描述其语义!此时最好采用上下文相关文法进行描述。
例如,对于有嵌套子程序结构的程序段:
BEGIN … BEGIN α INT I β I END … I … END
BEGIN
…
若存在文法规则:VAR ::= I 则
BEGIN
BEGIN … BEGIN α INT I β VAR END … I … END
α
INT I
此时内层子程序可归约为BLOCK
β
BEGIN … BLOCK … I ... END 第一次I的归约正确
I
END 第二次I的归约错误
…
BEGIN … δ VAR ... END δ ∈V*且不包含变量I 的声明
I
…
∴文法规则应改为:INT I β VAR ::= INT I β I
END
上下文相关文法
文档评论(0)