Skip to main content

《编译原理》(龙书)第一章笔记

1.1 语言处理器#

编译器#

一个编译器就是一个程序,它可以阅读以某一种语言(源语言)编写的程序,并把该语言翻译成为一个等价的、用另一种语言(目标语言)编写的程序。

编译器的重要任务之一是报告它在翻译过程中发现的源程序中的错误。

解释器#

解释器是另一种常见的语言处理器。它并不通过翻译的方式生成目标程序。从用户的角度看,解释器直接利用用户提供的输入执行源程序中指定的操作。

对比#

在把用户输入映射成为输出的过程中,由一个编译器产生的机器语言目标程序通常比一个解释器快很多。然而,解释器的错误诊断效果通常比编译器更好,因为它逐个语句地执行源程序。

混合编译#

一些语言处理器(例如 Java)混合了编译和解释的过程,先由解释器将源程序解释为中间代码后,再结合用户输入进行编译,输出结果。

练习题#

编译器和解释器之间的区别是什么?它们相对于对方的优点是什么?#

编译器:

  • 将源程序翻译为目标程序,结合用户输入,输出结果。
  • 优点:速度快。

解释器:

  • 直接结合用户输入,逐个语句执行源程序,输出结果。
  • 优点:便于 Debug

在一个语言系统中,编译器产生汇编语言而不是机器语言的好处是什么?#

汇编语言比较容易输出和调试。

把一种高级语言翻译成为另一种高级语言的编译器称为源到源source-to-source)的翻译器。编译器使用 C 语言作为目标语言有什么好处?#

C 语言更接近系统底层,有许多可用的编译器可以将其编译到几乎任何硬件。

描述一下汇编器所要完成的一些任务。#

汇编器将汇编语言程序翻译为可重定向的机器代码。

1.2 一个编译器的结构#

Last updated on by wjq990112