compiler5 - 1 编译原理 第五章...

Info icon This preview shows pages 1–10. Sign up to view the full content.

View Full Document Right Arrow Icon
1 编译原理 第五章 语法制导翻译和中 间代码生成 上海交通大学 张冬茉 Email:[email protected] 2015 3
Image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
2 本章目的 经过词法分析、语法分析后,源 程序在静态结构上的正确性得到了保 证,编译程序接着需作静态语义检查 以及翻译,真正实现不同程序语言的 代码间的等价变换。
Image of page 2
3 第五章 语法制导翻译 和中间代码生成 §5.1 翻译概述 一、静态语义检查 如同词法分析,语法分析同时进行着词法检查、语 法检查一样。在语义分析时,必然要进行语义检查。 动态语义检查需要生成相应的目标代码,在运行时 刻进行,静态语义检查在编译时完成它,则涉及:
Image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
4 ( 1) 类型检查,如参数运算的操作数的类型应相 容。 (2) 控制流检查,以保证控制语句有合法的转向 点,如 C 语言中的 break 语句,需寻找包含它的 最小的 switch while for 语句,方可找到转 向点,否则出错。 (3) 有关名字的匹配检查。可以对某些程序段命 名,该名字出现在程序段的开始和结束处,如同 语句括号一般,应检查它们的配对。 (4) 一致性检查,如在相同作用域中标识符只能 说明一次, case 语句的标号不能相同,枚举类型 的元素不能重复等
Image of page 4
5 二、语义制导翻译的例子。 讨论翻译前,先看一个例子: 5.1 展示了文法( 4.2 )的一个翻译方案 E→E+T {print “1”} E→T {print “2”} T→T*F {print “3”} T→F {print “4”} F→(E) {print “5”} F→I {print “6”} 5.1 文法 (4.2) 的一个翻译方案 其实是在文法( 4.2 )的每个产生式后配了一个由 { } 扩起来的语义子程序,不难证明终结符串 id+id *id 是文法( 4.2 )的一个合法句子,它的 分析树如图 5.2 所示
Image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
6 E T * F T F E ) ( + T E T F F i i i 5.2 (i+i)*i 的分析树
Image of page 6
7 按照这个句子向文法开始符 E 的归约次序 ,且每当归约时调用该句柄的产生式所对应的语 义子程序,便可得到相应的输出串: 64264154632 这个例子表明:输入源语言的符号串 (i+i)*i, 输出 目标语言的数字串。这自然是一种变幻,而变换 的规则时每当(按句柄)归约时调用相应的语言 子程序。无疑这个例子是翻译的一个十分简单的 模型。如果将数字串这种目标代码定义为所需目 标语言的目标代码,如果每个产生式对应的语言 子程序中的一系列语义动作被描述成实现这种转 换的动作的序列,并最终生成所需目标语言的目 标代码,那么作为程序变换的翻译也就迎刃而解 了。
Image of page 7

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
8 三、翻译要解决的问题 翻译是将源语言的程序等价变换为目标语言的 程序,于是有三个问题需解决: (一)、翻译成什么样的目标语言的代码? (二)、什么时候实现这种变换,即翻译? (三)、如何实现这种翻译?
Image of page 8
9 (1)
Image of page 9

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Image of page 10
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern