编译原理讲义.PDFVIP

  • 86
  • 0
  • 约1.46万字
  • 约 37页
  • 2019-03-05 发布于湖北
  • 举报
编译原理讲义 1 高级语言的实现概述 1.1 高级语言的实现 1.2 什么是编译 把高级语言程序翻译成等价的低级语言的过程。 - 1 - 1.3 解释程序 解释程序由总控程序和各类指令或语句的解释函数组成,它按照源程序的逻辑流程,直接解 释执行源程序或源程序的内部形式。 • 编译技术和解释技术的结合; • 纯碎的解释和纯碎的编译是两个极端情 况,很少使用它们; • 采用哪一种处理方式,是由被实现的语言 和实现环境 (在什么计算机系统上实现) 两者决 定的; • 编译:C、C++ 、FORTRAN 、PASCAL 和ADA • 解释:LISP、ML 、Prolog 和Smalltalk • Java 不象LISP ,而更象C++,但由于Java 运行在网络环境上,解释方式. • 发展趋势:尽量采用编译技术. - 2 - 1.4 编译程序的逻辑结构 1.5 编译器各阶段的工作 源程序: main () { int a,b,c; read(b,c); a=b+c*60; printf(“%d”, a); } 经词法分析源程序被加工成单词流 ………. 保留字,int 标识符,a …… 标识符,a 算符 ,= 标识符,b 算符,+ 标识符,c 算符,* 常数 ,60 …… 赋值语句经语法分析生成分析树 - 3 - 赋值语句经语义分析生成语法树 生成中间代码 temp1=inttoreal(60); temp2=c * temp1; temp3=b +temp2; a =temp3; - 4 - 1.6 维护符号表 名 字 种 类 类 型 层 次 偏移量 m 过 程 0 a 变 量 real 1 d b 变 量 real 1 d+4 c 变 量 real 1 d+8 1.7 错误的诊查处理 编译程序在各个阶段应诊断和报告源程序中的错误,包括词法错误,语法错误,语义错误。 编译程序应报告出错地点,并给出简明准确的提示信息。 编译程序(器)的组织:把前端组织成一遍扫描 - 5 - 1.8 编译器的设计 首先研究源程序的语法和语义及运行模型,源是设计编译程序的出发点。 研究目标计算机,设计目标代码的指令系统,它是由目标计算机扩充而成,扩充 后的计算机称作抽象计算机。目前的通用计算机往往和源语言执行模型不一致。 设计编译程序由几遍完成,每遍的工作等。 2 程序语言语法的形式定义 2.1 字母表和符号串 字母表是符号的非空有穷集合。任何程序语言都有自己的字母表,例如: 计算机语言:由符号“0”和“1”组成的字母表, ∑={0 ,1}。 ASCII 字符集。

文档评论(0)

1亿VIP精品文档

相关文档