- 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)