【编译原理】期末预习PPT前四章笔记II

news/2024/7/24 7:01:51 标签: 笔记

 看了看学校的ppt,记的比较随意O.o 

 因为我的考试范围里边没有简答所以概念什么的没怎么记 

 没有简答只有选择真是太好了嘿嘿嘿 

目录

I. 概述(好多字。。)

一、高级语言的分类

1、体裁

2、执行方式

二、各种语言的执行方式

三、编译程序和解释程序的区别(看看区别O.o)

四、编译程序的功能

1、翻译

2、纠错

五、编译程序的组成(熟悉一下避免选择选不明白O.o)

1、词法分析

2、语法分析

3、语义分析

4、中间代码生成

5、中间代码优化

6、目标代码生成

六、编译程序的组织方式

七、编译程序的复杂性

II. 文法和语言

一、语言成分(好多定义O.o应该看看就行)

二、文法

1、定义

2、推导

3、Chomsky分类(没记得老师讲过O.o,不过还是看看吧)

4、语言(大题:文法 ←→ 语言)

5、语法树

1)特点(没啥用)

2)二义性

3)推导方式

6、分析方法

III、词法分析

一、概述(看看就行)

1、功能

2、任务

二、DFA 和 NFA(需要看课本)

1、DFA

2、NFA

3、NFA 转成 DFA(要出大题但是ppt没看懂。。需要看课本)

三、自顶向下(主要看了LL(1)文法)

1、first 集

2、follow 集

3、select 集

4、LL(1)

1)条件:同一左部的 select 无交集

2)转换

①提公因子(必要非充分,提完去掉没用的,有的提不了)

②消左递归(直接间接)

3)LL(1) 与递归下降


I. 概述(好多字。。)

一、高级语言的分类

1、体裁

过程式(怎么做),逻辑式(做什么),函数式(数学证明),面向对象(如Java)

2、执行方式

顺序,并行

二、各种语言的执行方式

三、编译程序和解释程序的区别(看看区别O.o)

四、编译程序的功能

1、翻译

将源程序翻译成机器能识别的目标代码程序

2、纠错

检测源程序中可能出现的各种错误,包括:词法错误,语法错误,语义错误等

五、编译程序的组成(熟悉一下避免选择选不明白O.o)

1、词法分析

输入高级语言源程序,识别源程序中的单词,并把单词转换成内部表示形式,同时检测程序中的词法错误。( 把高级语言程序转换成单词序列,检测词法错误 

2、语法分析

检测源程序中的语法错误,即检测程序中语法结构存在的错误。

3、语义分析

构造符号表,并检测程序中的语义错误

4、中间代码生成

将源程序翻译成与机器无关的中间表示形式。中间代码是高级语言与目标语言之间的桥梁不依赖于目标语言,有利于进行与目标机无关的代码优化,也有利于编译程序的重定位移植

5、中间代码优化

中间代码的优化以便产生高质量的目标代码。

6、目标代码生成

可以是汇编语言程序,也可以是机器代码程序。

六、编译程序的组织方式

七、编译程序的复杂性

1、编译程序是元级程序

2、编译程序要面对所有源语言程序,所以要面面俱到,考虑周全

3、高级语言和低级语言是不同级别的语言,二者的差异很大

4、编译程序是计算机系统中最重要的系统软件之一,其可靠性和优化方面的要求均很高

II. 文法和语言

一、语言成分(好多定义O.o应该看看就行)

字母表:符号的有穷集合,符号用以构成语言中的句子。

文法:结构规则的有穷集合,定义句子中符号的合法上下文。

语义:操作规则的集合,定义了程序在计算机上执行的操作效果。

二、文法

1、定义

是定义语言语法结构的一组形式规则(语法规则),可以将语言的所有成分描述出来。

2、推导

一步直接推导 好多步叫推导

3、Chomsky分类(没记得老师讲过O.o,不过还是看看吧)

4、语言(大题:文法 ←→ 语言)

5、语法树

1)特点(没啥用)

2)二义性

某个句子存在两颗不同语法树,即:一个句子有两种推法

3)推导方式

最左 → 推的时候从左边第一个开始换

最右(规范) → 从右边第一个开始换

6、分析方法

III、词法分析

一、概述(看看就行)

1、功能

从左到右逐个字符地对源程序进行扫描,产生单词序列,用于语法分析。

2、任务

二、DFA 和 NFA(需要看课本)

1、DFA

图例(不熟的话可以看看),例图可以看看书,ppt上画的有点。。丑

2、NFA

3、NFA 转成 DFA(要出大题但是ppt没看懂。。需要看课本)

三、自顶向下(主要看了LL(1)文法)

1、first 集

直接看例题,找所有第一个小写字母

2、follow 集

后边的first,后边是空就把左边的follow加进去

3、select 集

4、LL(1)

1)条件:同一左部的 select 无交集

2)转换
①提公因子(必要非充分,提完去掉没用的,有的提不了)

②消左递归(直接间接)

 刚开始还因为B'有个空看了半天。。后来问了大佬懂了。笨死我算了 O.o 

因为 B→ X]或BA,所以B'空相当于B → X]

3)LL(1) 与递归下降


前四章看完了,还有挺多盲区。。等看完后边四章再看看课本去Orz


http://www.niftyadmin.cn/n/5305264.html

相关文章

安卓11通过脚本修改相应板型系统属性

安卓10以后rk的一套源码兼容很多板型,多种cpu型号都兼容了,这一点相比之前省心了很多,所以就诞生了需要一套代码兼容多种板子的需求,定制修改中需要经常修改系统属性,通过以下脚本一次实现: #!/bin/bashfu…

kubernetes(一)概述与架构

云原生实战 语雀 官网 Kubernetes 文档 | Kubernetes 更新:移除 Dockershim 的常见问题 | Kubernetes B站课程:https://www.bilibili.com/video/BV13Q4y1C7hS/?p26 1.概述 概述 | Kubernetes 大规模容器编排系统 kubernetes具有以下特性&#xf…

【技能---500G硬盘-Ubuntu 20.04安装分区参考】

文章目录 Ubuntu 20.04安装分区指导安装分区流程Ubuntu 系统分区关键一步----- 选择安装启动引导器的设备 Ubuntu 20.04安装分区指导 安装Ubuntu 20.04的时候可以自己指定各个内存空间的占用,值得注意的是,这里的分区有一定的技巧!&#xff0…

class_order 数组来实现重新编号或者改变类别

当你在处理分类问题时,数据集的标签(类别)可能是从0到n-1的整数,其中n是类别的总数。有时候,在进行模型训练之前,你可能想要改变类别的顺序或者重新编号。这可以通过class_order数组来实现。 问题描述&…

宝宝的听力发育进程

小宝宝听力发育进程: 在母亲怀孕中晚期,小宝宝就有了听觉:6个月胎儿的听力已经和成年人相当了。 ◆ 出生0-7天的小宝宝会随声音变化产生不同反应,当在宝宝耳边拍巴掌或摇摇铃,宝宝可能会有惊跳反应,或吓哭…

Windows 下用 C++ 调用 Python

文章目录 Part.I IntroductionChap.I InformationChap.II 预备知识 Part.II 语法Chap.I PyRun_SimpleStringChap.II C / Python 变量之间的相互转换 Part.III 实例Chap.I 文件内容Chap.II 基于 Visual Studio IDEChap.III 基于 cmakeChap.IV 运行结果 Part.IV 可能出现的问题Ch…

Spark调优解析-spark数据倾斜优化2(七)

1 数据倾斜优化 1.1为何要处理数据倾斜(Data Skew) 什么是数据倾斜 对Spark/Hadoop这样的大数据系统来讲,数据量大并不可怕,可怕的是数据倾斜。 何谓数据倾斜?数据倾斜指的是,并行处理的数据集中&#xf…

Linux - 清理僵尸进程

要杀死僵尸进程,可以通过以下步骤: 找到僵尸进程的父进程ID(PPID): 运行 ps -A -ostat,ppid,pid,cmd | grep -e ^[Zz] 命令来查找僵尸进程及其父进程的PID。 ps -A -ostat,ppid,pid,cmd | grep -e ^[Zz] 结束僵尸进…