本栏博客目录

​软考-软件设计师 笔记一(计算机组成与体系结构)​

​​​软考-软件设计师 笔记二(操作系统基本原理)​

​​​软考-软件设计师 笔记三(数据库系统)​

​​​软考-软件设计师 笔记四(计算机网络)​​​​​

​软考-软件设计师 笔记五(系统安全分析与设计)​

​​​软考-软件设计师 笔记六(数据结构与算法基础)​

​​ 软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)
​​​软考-软件设计师 笔记八(法律法规)​

​​​软考-软件设计师 笔记九(多媒体基础)​​​​​

​软考-软件设计师 笔记十(软件工程)​

​​​软考-软件设计师 笔记十一(面向对象设计)​

​​​软考-软件设计师 笔记十二(数据流图)​

​软考-软件设计师 笔记十三(数据库设计)​

​​​软考-软件设计师 笔记十四(UML建模)​

​​​软考-软件设计师 笔记十五(数据结构及算法应用)​​​​​

​软考-软件设计师 笔记十六(面向对象程序设计)​



文章目录



内容提要

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_程序设计语言与语言处理程序基础

编译过程

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_程序设计语言与语言处理程序基础_02

文法定义

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_有限自动机_03
软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_程序设计语言与语言处理程序基础_04

语法推导树

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_推导树_05

在文法G中,a,b属于终结符(一般以小写字母来代表),大写的S和A是非终结符(这种符号可以推出其它符号),S是起始符,P是产生式(推导式)

S->aAS|a ⇒ S->aAs 、S -> a,S就是非终结符,因为S可以推导出别的元素来,a则是终结符,因为a不能推导出别的元素来,同理A也是非终结符,由这些生成式可以得出推导树。

有限自动机

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_推导树_06

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_程序设计语言与语言处理程序基础_07
{集合1(状态集),集合2(输入字符集),转换函数,唯一的初态,终态集}

由上式可知,S是开始,f是结束
软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_软考_08
由上式关系得下面的状态转换图

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_有限自动机_09

正规式

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_软考_10
软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_程序设计语言与语言处理程序基础_11

正规式跟正则表达式有点像。。。。

对于(1)中的 A 选项: S -> aA -> abS -> abaA -> ababS -> ababaA -> ababab (因为 S->aA|bB、A->bS|b)

其他选项也可以这么推导,D选项不能推导出来。

对于第二个空,需要将(1)中可以推导出来的式子带到(2)的各个选项中,判断哪个满足可能是正确答案。

(2)选C。(相当于正则匹配,不过得匹配所有的字符)

有限自动机例题

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_推导树_12

将选项带入即可,例如对于A:0000就是判断输入4个0能否从开始到结束,带入后发现是不可以的,其他选项同理带入,只有C选项满足。

表达式

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_程序设计语言与语言处理程序基础_13

先构造成树(括号提现的是优先级问题),然后再看需要求的前/中/后缀表达式。

对于例题构造成树后,后缀表达式显然是D(相当于对树后序遍历)

函数调用

传值与传址

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_软考_14

传值

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_软件设计师_15
软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_软件设计师_16

传址

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_有限自动机_17

各种程序语言特点

软考-软件设计师 笔记七(程序设计语言与语言处理程序基础)_程序设计语言与语言处理程序基础_18