编译原理(一章)

第一章、

学习大纲:

  • 1-1计算思维与编译技术

  • 1-2 程序设计语言及编译技术的发展历程

  • 1-3程序设计语言的翻译机制

  • 1-4编译程序的基本组成

  • 1-5编译程序的构造方法

  • 1-6编译技术的应用

一、计算思维与编译技术

  • 高级程序设计语言编制的源程序 =>翻译=> 0110100…(计算机可识别的机器语言)

1.编译过程

编译原理(一章)_第1张图片

编译原理(一章)_第2张图片

1.1计算思维对应的算法

编译原理(一章)_第3张图片

1.2编译程序组成框架

编译原理(一章)_第4张图片

  • int main 
        { 
            float a, b;   
            a=3*a+b;  
            printf(“a=%d”, a);  
            return 0; 
        }     
    
    • 词法分析阶段:(可识别出关键字、特殊符号和无符号整数)

      • 扫描源程序进行读符号,删除无用字符(如空格、注释等)

      • 将有独立意义的单词识别出来,并转换成统一长度的内部编码。

      • 建立表格(如名字特征表、常数表),进行词法检查以供语法和语义分析用。
        (内部编码:单词类型 + 单词值/专用编码/相对地址)

    • 语法分析阶段:(以上一步内部编码作为语法分析的输入;根据高级语言的语法规则来分析句子的正确性)

    编译原理(一章)_第5张图片

    • 语义分析阶段:(将源程序表示成一种内部形式(中间语言)或直接生成目标程序;还会去语法分析检查错误)

    • 中间代码生成阶段:(优化代码,生成高质量目标代码)
      中间代码包括“后缀表达式”、“三元式”、“四元式”…

    • 优化代码阶段:(中间代码的类型间的转换)

    • 目标代码生成:(将中间代码转换成机器语言或汇编语言程序)

1.3编译程序的分遍
  • 定义:头到尾扫描一遍源程序或等价源程序,并做有关加工处理,称趟程(遍) 。

  • 把源程序分为几遍来编译,每遍只完成编译程序中的一部分或几个部分工作,称为多遍的。

2.程序语言的发展

(1)机器语言(第一代)

  • 定义:由机器指令构成的语言称机器语言,即用二进制编码组成。如 01110101

  • 机器指令:是二进制编码,基本上是由操作码和地址码两部分组成,所以要用机器语言编制程序一定要知道多种不同的操作码。

  • 指令系统:一种计算机所能识别的一组不同指令系统

(2)汇编语言(第二代语)

  • 定义:用容易记忆的符号来代替机器指令中操作码和地址码的一种语言。如:ADD 代表“+” SUB代表“-” MOV代表“传递”

    • 特点: 优点——(1)程序直观容易阅读;
      (2)编程工作量相对小。
      缺点——(1)只能在一种型号机器上运行;
      (2)不能直接在计算机上运行。

(3)高级程序设计语言(第三代)

3.程序设计语言的翻译机制

(1)翻译程序(语言处理程序):一种将某种语言编写的程序(源程序)进行等价分析处理的程序。该源程序可被语言处理程序改造成另一种等价的语言程序(目标程序), 或者在语言处理程序的分析处理下直接执行源程序中指定的操作。

  • 书写源程序的语言称为源语言

  • 书写目标程序的语言称为目标语言

(2)翻译程序的类型:汇编、解释、编译(程序)三种

  • 汇编:汇编语言写的源程序翻译成机器语言的目标程序。

在这里插入图片描述

  • 解释:将高级语言写的源程序作为输入数据,但并不产生目标程序,而是边解释边执行源程序本身。

编译原理(一章)_第6张图片

  • 编译:将高级语言写的源程序翻译成目标语言(汇编语言、机器语言)的程序。

编译原理(一章)_第7张图片

  • 编译系统:目标程序+运行系统(如服务子程序、动态分配程序、装配程序等)就可获得计算结果,整个系统称为编译系统。

在这里插入图片描述

4.几种高级程序设计语言的翻译实例

(1)C语言翻译机制(GCC)

编译原理(一章)_第8张图片

(2)JAVA处理器对java源程序的处理

编译原理(一章)_第9张图片

(3)C#翻译机制

编译原理(一章)_第10张图片

小结:汇编程序最容易实现,其次是解释程序,编译程序最难。

5.编译程序的构造方法

(1)直接用机器语言编写编译程序

(2)用汇编语言编写编译程序

(3)用系统程序语言编写编译程序

  • 系统程序设计语言:能够编写编译程序或其他系统软件的高级语言,如Pascal、C、C++、Java等。

(4)编译程序的自动生成:源语言的定义以及机器语言的描述输入到软件中,自动生成该语言编译程序

  • 词法分析程序:Lex、Flex等

  • 语法分析程序:Yacc、ANTLR等

5.1 T型图
  • 定义:是用于描述编译器实现时的一种辅助工具,可以用来表示源语言S、目标语言D、和编译程序书写语言W之间的关系。简记为

    编译原理(一章)_第11张图片

5.2自编译语言:
  • 定义:如果一种高级语言与之相应的编译程序也能直接用该语言本身写出来,具有这种性质的语言称为自编译语言。

编译原理(一章)_第12张图片

5.3自展
  • 定义:自展技术是利用自编译技术,将一个功能较小的编译程序,一级一级扩充而变成一个功能较强的编译程序。

  • 自展过程,实际上就是用低级语言先实现一个简单的编译器,然后用这个编译器的语言再去编写一个更高级的编译器的过程。

编译原理(一章)_第13张图片

5.4交叉编译
  • 定义:如果一个 A 机器上编译程序能产生 B 机器的目标代码,则称这种程序为交叉编译程序。(如:利用电脑上的编译程序,将软件程序编译为手机可以运行的机器码。)
5.5交叉编译原理:

编译原理(一章)_第14张图片

5.6移植
  • 定义:将A机器上具有自编译性的高级语言编译程序移植到B机器上。
5.7移植原理

编译原理(一章)_第15张图片

6.编译技术应用

(1)文本编辑器

  • 简介:通过对输入文档进行分析,实现关键字高亮、语法检查(例如左右括号配对)等功能,引导用户编辑出符合语言规范的程序文档,提高开发效率

  • 技术:词法分析、语法分析、语法制导翻译等

编译原理(一章)_第16张图片

(2)文本检索工具

  • 简介:诸如Word、Visual Studio Code等工具支持正则表达式文本检索,正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串

  • 技术:词法分析技术的串匹配技术

编译原理(一章)_第17张图片

(3)文本格式化工具

  • 简介:利用工具将源程序重新排版,输出易读清晰的程序结构。例如,关键字以不同的颜色出现,注释用一种专门的字体标注,语句的嵌套层次结构采用缩进格式等

  • 技术:词法分析、语法分析、语法制导翻译等

编译原理(一章)_第18张图片

(4)文本加密工具

  • 简介:关键词加密工具把文本中满足特定特征的文本提取出来,并对提取出来的文本进行加密处理。文本加密工具本质上编写词法分析程序,对符合某种规则的单词进行提取,再对所提取的单词符号串进行加密

  • 技术:词法分析

编译原理(一章)_第19张图片

(5)网页浏览器

  • 简介:网页浏览器本质上是一个 HTML 和 XML 的解释器。浏览器获取由 HTML 或 XML描述的信息后对其进行分析,并根据分析的结果将网页内容以相应的形式显示出来

  • 技术:词法分析、语法分析和语义处理

编译原理(一章)_第20张图片

(6)自然语言处理

  • 简介:自然语言处理过程是计算机识别人类语言的过程,如信息抽取、机器翻译、情感分析等。为了使计算机可以识别语言符号,必须对语言符号进行一定的处理,其中包括分词与词性标注、句法分析、语义角色标注等

  • 技术:词法分析、语法分析和语义处理

编译原理(一章)_第21张图片

你可能感兴趣的:(编译原理,笔记)