前言
-
该部分总体而言难度较高:
- 最近在降低;
-
涉及编译原理(专业课中也是极难的课程)
目录
-
编译与解释
-
文法
-
正规式
-
有限自动机
-
传值与传址
-
多种程序语言特点
考试范围
-
编译和解释:区别、流程
-
正规式:必考
-
表达式:偶尔
-
传值与传址:高频
-
其他的点考频较低;
- 必须分主次的去对待这些点;
编译与解释
编译过程(重点)
解释型和编译型的区别
-
解释:敲一行代码一回车,就把后台相关的东西操作了,有问题就直接告诉你;
-
编译:你整段程序都敲完了,按编译运行时才做成可执行程序;
三种分析的作用
-
词法分析:非法字符、关键字或标识符是否写对;=
-
语法分析:if后面没有相应的else匹配、一句话后面是否有分号等
-
语义分析:循环是否有结束条件等,分母是否为0等,往往只能分析一小部分问题;
文法
定义
-
以前考的多,现在偶尔考;
-
后面结合例子具体讲
-
正则闭包很少考;不用刻意记
- 3型时探讨最多的;
语法推导树
-
用来进行语法规则的推导
-
通过推导树我能能了解到一种语法能够表达的一些串,构造的句型时什么样子
例子:
{a,b}两个元素表示终结符
{S,A}非终结符(能推出其它符号)
S 起始符
P 产生式–>指篮筐的中间的两个式,其实就是推导式;
S->aAS|a:
S->aAS
S->a
S能推出别人,是非终结符;a只能被推不能推出别的东西叫终结符
有限自动机
考察的重点:衍生出来的正规式和有限自动机能互相转换;
最下面的式子意思:
例子:O(S,0)
S处输入一个0能到B
考法:能不能找到一个数字串(比如 10、01、001等)
解法:能不能从起点到终点找到一个和数字串一样的通路
正规式
对有限自动机的另一种表达方式;
以一个实例来看:
| :表示或关系,能解析出 a或b
- :表示循环多次,可以是0到无穷大;(a|b)*可以表示空串;可以表达a、aa、ba、bbbbbb、等无限个
(1)选D
a选项剋识别
b也行
(2)不用常规方法算(速度慢);
用的代入法:通过带入第一题的三个式子;哪个能把式子全部推导出来就可能是正确答案;可以用其他正规式也推出所有表达式,但范围更广;
A:能表达所有,但范围更大;待定
B:没法生成ba
C:能;
D:只能先ab后ba无法满足(1)C选项
所以第二问选C
到终点后也能继续输入;所以C可以;只要最后在终态位置即可;
表达式
要注意先后顺序;
先构造树,以后序方式便利树就能得到后缀表达式;
选D
如果不考虑括号:构造出来的树完全不同
函数的两种调用方式
经常考,反复考
传值: