编译原理是计算机科学与技术专业学生的必修课程,也是一门理论与实践并重的课程。想学好这门课程的朋友可以来第一视频教程观看一下这部东南大学编译原理教程。认真观看,大家不仅可以掌握编译系统的结构、工程流程以及编译程序各组成部分的设计原理和实现技术,而且也可以获得设计、实现、分析和移植编译程序方面的初步能力。
编译原理一直是计算机学习的必修课。当然,由编译器的
关注公众号:diyijc_com
问题反馈
编译原理是计算机科学与技术专业学生的必修课程,也是一门理论与实践并重的课程。想学好这门课程的朋友可以来第一视频教程观看一下这部东南大学编译原理教程。认真观看,大家不仅可以掌握编译系统的结构、工程流程以及编译程序各组成部分的设计原理和实现技术,而且也可以获得设计、实现、分析和移植编译程序方面的初步能力。
编译原理一直是计算机学习的必修课。当然,由编译器的阶段使用的算法与支持这些阶段的数据结构之间的交互是非常强大的。编译器的编写者尽可能有效实施这些方法且不引起复杂性。理想的情况是:与程序大小成线性比例的时间内编译器,换言之就是,在0 ( n )时间内,n是程序大小的度量(通常是字符数)。本节将讲述一些主要的数据结构,它们是其操作部分阶段所需要的,并用来在阶段中交流信息。
程序设计语言的词法和语法结构通常用形式的术语指定,并使用正则表达式和上下文无关文法。但是,程序设计语言的语义通常仍然是由英语(或其他的自然语言)描述的。这些描述(与形式的词法及语法结构一起)一般是集中在一个语言参考手册(language reference manual )或语言定义(language definition)之中。因为编译器的编写者掌握的技术对于语言的定义有很大的影响,所以在使用了一种新的语言之后,语言的定义和编译器同时也能够得到开发。类似地,一种语言的定义对于构造编译器所需的技术也有很 大的关系。编译器的编写者更经常遇到的情况是:正在实现的语言是众所周知的并已有了语言定义。有时这个语言定义已达到了某个语言标准(language standard )的层次,语言标准是指得到诸如美国国家标准协会(American National Standards Institute ,ANSI )或国际标准化组织 (International Organization for Standardization,ISO )的官方标准组织批准的标准。FORTRAN、 Pascal和C语言就具有ANSI标准,Ada有一个通过了美国政府批准的标准。
在这种情况下,编译器的编写者必须解释语言的定义并执行符合语言定义的编译器。通常做到这一点并不容易, 但是有时由于有了标准测试程序集(测试组(test suite )),就能够测试编译器(Ada有这样一个测试组),这又变得简单起来了。有时候,一种语言可从数学术语的形式定义(formal definition )中得到它的语义。现在人们已经使用了许多方法,尽管一个称作表示语义(denotational semantics )的方法已经成为较为常用的方法,在函数编程共同体中尤为如此,但现在仍然没有一种可成为标准的方法。当语言有一个形式定义时,那么在理论上就有可能给出编译器与该定义一致的数学证明,但是由于这太难了,而几乎从未有人做过。无论怎样, 运行时环境的结构和行为是尤其受到语言定义影响的编译器构造的一个方面。
更新时间:2014-12-05 22:42