软件设计师笔记:程序设计语言与语言处理程序基础


软件设计师笔记:程序设计语言与语言处理程序基础
正规式必考,传值与传址考频较高,表达式偶尔考查。

一、编译过程

软件设计师笔记:程序设计语言与语言处理程序基础

二、文法的定义以及语法推导树

文法定义:
软件设计师笔记:程序设计语言与语言处理程序基础
软件设计师笔记:程序设计语言与语言处理程序基础

软件设计师笔记:程序设计语言与语言处理程序基础
例题如图,一般小写字母代表终结符,S和A是非终结符,意思是可以推出其他符号

后面的S是起始符,P为产生式。产生式包括上面两个式子。

第一个推导式的意思是S可以推出aAS以及S可以推出a,所以S是非终结符,因为可以推出别的符号出来,a则是终结符。

将左边两个式子写成树可以构成右侧的图。

三、有限自动机与正规式

3.1 有限自动机

软件设计师笔记:程序设计语言与语言处理程序基础
正规式和有限自动机有相互转化的关系。

正规式是有限自动机的另外一种表达形式。

3.2 正规式

软件设计师笔记:程序设计语言与语言处理程序基础

3.3 文法推导与正规式例题

软件设计师笔记:程序设计语言与语言处理程序基础
其中竖线表达的是或关系。✳代表循环多次,✳是0到无穷大。

题中S可推导aA,A推导bS,S推导aA。。。最后A推导b,即ababab

S可推导bB,B推导aS,S推导bB。。。最后B推导a,即bababa

同理C选项也可以被推导,D选项不可以。

第二问:通常用代入法,本题已知第一问几种可能,看第二问的选项哪一个可以表达。选C。

3.4 有限自动机例题

软件设计师笔记:程序设计语言与语言处理程序基础
看从A到C结束,可以用哪个串来实现。选C。

四、表达式

软件设计师笔记:程序设计语言与语言处理程序基础
表达式的前中后缀表达式,表达式写成树的形式,前中后序遍历出来即所求。

五、函数调用(传值与传址)

软件设计师笔记:程序设计语言与语言处理程序基础

传值就是把实参的值传递给函数的形参,传址就是把实参的地址传给函数的形参。

例子:
软件设计师笔记:程序设计语言与语言处理程序基础

六、各种程序语言的特点

软件设计师笔记:程序设计语言与语言处理程序基础