重点
一、编译过程
编译型语言与解释型语言区别:https://zhidao.baidu.com/question/193596037.html
这个解释真有趣
二、文法定义
三、语法推导树
四、有限自动机
有限自动机分确定有限自动机(DFA)和非确定有限自动机(NFA)
例1
例2
不确定的意思是输识别一个字符串有可能有两个目的地
例3
答案
对高级语言源程序进行编译(或解释)方式的翻译过程中,,词法分析采用有限自动机作为计算模型。有限自动机分为确定的有限自动机(DFA)和不确定的有限自动机 (NFA)。可将一个从NFA转换为等价的最小化DFA。
题中的NFA的功能是识别空串以及b不能连续出现(即每个b后至少含有1个a.) 的a、b字符串,若是非空串,则以a结尾。
选项A识别的是空串以及每个b后至少含有1个a的a、b字符串,若是非空串, 则以a结尾。
选项B识别空串以及b不能连续出现且以b结尾的a、b字符串。
选项C识别b不能连续出现且以b结尾的a、b字符串,不能识别空串。
选项D识别b不能连续出现且以a结尾的a、b字符串,不能识别空串。
例4
例5
分析题中所给自动机识别字符串的特点可知,该自动机识别的字符串必须以01结尾,而之前的0和1可以以任意方式组合,因此,正规式为(0丨1)*01。
例 6 如何判断是否能为空?
例 7
五、正规式
* 表示字符可以出现0到无限次
六、 数据类型与程序控制结构
七、表达式
例1
选D
例2 后缀式
例3 后缀式
根据优先级补充括号: a+(b-c)*d = (a+((b-c)*d))
例4
先算的减号后算的乘号,所以*在-的里面
例4 后缀式
后缀式(逆波兰式)是波兰逻辑学家卢卡西维奇发明的一种表示表达式的方法。这种表示方式把运算符写在运算对象的后面,例如,把a+b写成ab+,所以也称为后缀式。
借助栈可以方便地对后缀式进行求值。方法为:先创建一个初始为空的栈,用来存放运算数。对后缀表达式求值时,从左至右扫描表达式,若遇到运算数,就将其入栈,若遇到运算符,就从栈顶弹出需要的运算数并进行运算,然后将结果压入栈顶,如此重复,直到表达式结束。若表达式无错误,则最后的运算结果就存放在找顶并且是栈中唯一的元素。
例5 中缀式
八、传值与传址
九、各程序语言特点