编译原理_P1001

1  绝大部分软件使用高级程序设计语言来编写。用这些语言编写的软件必须经过编译器的编译,才能转换为可以在计算机上运行的机器代码。编译器所生成代码的正确性和质量会直接影响成千上万的软件。虽然大部分人不会参与设计编译器,但拥有编译相关知识会对他们的研究开发盛宴产生有益的影响。

2  引论

3  对编程语言的设计和实现有深刻的理解,对和编程语言有关的理论有所了解,对宏观上把握编程语言来说,起到一个点击作用,从软件功能看,编译器是一个很好的实例,所介绍的概念和技术引用到一般的软件设计中。

  翻译器(translator)、编译器(compiler)、解释器(interpreter)

3.1  编译器从逻辑上可以分层若干个阶段,每个阶段把源程序把一种表示变化成另一种解释

源程序----词法分析器----语法分析器----语义分析器----中间代码生成器----独立于机器的代码优化器----代码生成器----依赖于机器的代码优化器----目标机器代码

符号表

3.2  词法分析器

3.3  语法分析器

表达式的语法特征

3.4  语义分析器

3.5  中间代码生成器

3.6  代码优化器

3.7  代码生成器

3.8  解释器和编译器的区别

解释器不生成目标代码,而是直接执行源程序所指定的运算

3.9  BASIC年代的解释器

  功能:将高级语言的源程序翻译成一种中间语言程序,然后对中间语言程序进行解释执行,在那个年代,编译和解释两个功能是合在一起的程序中,改程序被称为解释器。

  Java年代的解释器

  上述两个功能在两个程序中,前一个叫做编译器,它把源程序翻译成一种叫做字节代码的中间语言程序,后一个叫做解释器,他对字节码程序进行解释执行。

 3.10  阶段分组(前端和后端,遍(扫描次数,写入外部存储器,C语言是两边扫描))

4.  编译器技术的应用

每一轮高级语言的出现都会刺激编译器优化的新研究,支持用户定义的聚合数据类型和高级控制流,面向对象的主要概念是数据抽象和性质集成,是的程序更加模块化易于维护,类型安全的语言:Java没有指针,也不允许指针算术,C语言不是类型安全语言,它用无用单元收集机制来自动的释放那些不在使用的变量占据的内存。Java设计来支持代码移植

5.  词法分析

      

猜你喜欢

转载自www.cnblogs.com/noah0532/p/8972786.html
今日推荐