看了看学校的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