编译原理--day01
yuuki Lv5

我们通常使用的编程语言(例如C)是高级语言(high-level language):

  1. 语义清晰,贴近自然语言(即人类使用的语言),易于理解,编程方便。
  2. 其程序无法被计算机理解和直接执行。

计算机使用机器语言(machine language):

  1. 机器语言程序本质上是一串0,1串,它可以被计算机理解并执行。
  2. 人类理解机器语言比较困难,因而直接使用机器语言编程是困难而效率低下的。

编译器的作用:高级语言只有被转换为机器语言之后才能被机器理解执行。而执行转换这一过程的是编译器。(在此过程中被转换的程序我们称之为源程序,其编译语言通常为高级语言,称为源语言(source language),而转换后的程序称为目标程序,其语言称为目标语言(target language))

解释程序:使用解释程序,对源程序逐个语句边解释边执行;

编译程序: 使用翻译程序,将源程序翻译成为低级语言目标程序,然后执行目标程序;

编译程序和解释程序最主要的区别:是否生成目标程序,运行时的存储分配;

高级语言程序的处理过程:需要预处理的源程序&#8211;>【预处理程序】&#8211;>源程序&#8211;>【编译程序】&#8211;>目标汇编程序&#8211;>【汇编程序】&#8211;>可在装配的机器代码&#8211;>【装配/连接-编译程序<&#8211;可在装配的目标文件】&#8211;>绝对机器代码。

  1. 词法分析:

根据语言的词法规则对源程序的字符进行扫描和分解,识别出一个个的单词(单词内部表示形式为二元式 “(class,value)” )。

(Class代表单词的类型(大致有5种类:界符(分隔符),保留字,标识符,算符(运算符),常量)。

  1. 语法分析:

根据语法规则对单词符号串进行扫描分解,识别出各类语法单位。

语法单位内部表示为语法树。

  1. 语义分析:

    输入各类语法范畴;根据语言的语义规则,分析其含义,并进行初步翻译;产生中间代码。(中间代码用四元式表示(*,value1,T1,T2),Ti为语义分析程序为存放中间结果而生成的临时变量).

  2. 语义分析:

    输入各类语法范畴;根据语言的语义规则,分析其含义,并进行初步翻译;产生中间代码。(中间代码用四元式表示(*,value1,T1,T2),Ti为语义分析程序为存放中间结果而生成的临时变量)

  3. 优化:

    输入中间代码;进行等价变换;输出更高效的中间代码。(用以提高目标代码的时、空效率,也就是希望完成同样功能的程序,代码优化后比优化前运行的时间短,占用的存储空间少,有时二者不能同时达到,需根据实际情况取舍)。

  4. 目标代码生成:

输入优化后的中间代码;变换成特定机器上的低级语言代码,实现最后的翻译;产生目标代码(依赖与机器硬件系统;通常使用汇编语言作为目标程序的实现语言)

  1. /表格管理和错误处理:/
 评论