软件设计师-程序设计语言与语言处理程序基础

重点

一、编译过程

编译型语言与解释型语言区别: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 中缀式

 

八、传值与传址

 

 

九、各程序语言特点

 

 

 

posted @ 2018-05-09 21:33  富坚老贼  阅读(331)  评论(0编辑  收藏  举报