翻译过程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
语句
强制类型转换
• 在语句Z X+Y中,如果X是整型而Y是实 型,在这种情况下,语法分析器可能使用 是代码生成器生成指令把其中的一个值转 换为另一种类型,然后在执行加法计算 这种类型的隐式转换称为强制类型转换
代码生成
• 代码生成是翻译过程的最后一步,它是生 成机器语言指令以实现语法分析器识别出 得语句的过程。
源 程 序
词法分 析器
语法分 析器
代码生 成器
目 标 程 序
词法分析
• 词法分析是计算机科学中将字符序列转换 为单词序列的过程。进行语法分析的程序 或者函数叫作词法分析器。词法分析器一 般以函数的形式存在,供语法分析器调用。 • 词法分析阶段是编译过程的第一个阶 段,是编译的基础。这个阶段的任务是从 左到右一个字符一个字符地读入源程序, 即对构成源程序的字符流进行扫描然后根 据构词规则识别单词词法分析程序实现这 个任务。
6.4.1 翻译过程
计科0802 XXX 022XXXXXXXX
什么叫翻译?
• 翻译:将程序从一种语言转换为另一种语 言的过程成为翻译。 原始形式的程序称为源程序 翻译后的版本称为目标程序
翻译过程:
翻译过程包括3个部分的工作,分别是 词法分析、语法分析和代码生成,实现相 应行为的单元分别Leabharlann Baidu为词法分析器、语法 分析器以及代码生成器。 过程如下图:
代码优化:
• 例:X Y+Z W X+Z 当第一条语句被执行时,x和z的数值已经 被存在cpu中了,所以执行第二条语句是就 不需要再从内存中读取这两个数了,种种 方法就叫做代码优化。
• 其实,词法分析,语法分析和代码生成这3 个步骤并不是严格按照顺序执行的,而是 交织在一起的。 源程序、词法分析器、语法分析器、代码 生成器以及目标程序本身都是对象,每一 个对象都在实现自己任务的同时通过来回 传递消息与其他对象进行交互。 如下图:
• 为了简化语法分析过程,早期程序设计语 言坚持每个程序的语句都要以一种特定的 方式定位在打印页上,这种语言称为固定 格式语言 而今天,大多数程序设计语言都是自由格 式语言
• 所以,在今天,一个程序员会用缩进方式 写 If cost<CashOnHand then pay with cash else use credit card 而不会写
If cost<CashOnHand then pay with cash else use
credit card 其中,if、then、else等都是关键字,也是保 留字,程序员不能将他们用于其他目的。
语法分析
• 语法分析是编译过程的一个逻辑阶段。 语法分析的任务是在词法分析的基础上将 单词序列组合成各类语法短语,如“程 序”,“语句”,“表达式”等等.语法分 析程序判断源程序在结构上是否正确.源程 序的结构由上下文无关文法描述.语法分析 程序可以用YACC等工具自动生成。
源程序 词法分 析器 语法分 析器 代码生 成器 目标程 序
谢谢
2011年12月21日
• 语法分析过程基于一系列语法规则,这些 规则定义了程序设计语言的语法。 • 这些规则称为文法
表达这些规则的一种方法是借助语法图, 它是程序文法结构的图形化表示
语法图
• 下图为if-then-else伪代码语句的语法图 矩形框中的的是非终结符,椭圆形框中的 是终结符
布尔表达 式
if
then
语句
else