软件设计师真题,程序设计语言专项练习(十一)

视频讲解

软件设计师 上午题 程序设计专题

文法概念

设某语言的语法规则用上下文无关文法G=(N, T, P, S)表示,其中N是非终结符号的集合,T是终结符号的集合,P是产生式集合,S是开始符号,令,那么符合该语言的句子是 (50) 。(2009年上半年)
(50)
A. 从S出发推导的、仅包含T中符号的符号串
B. 从N中符号出发推导的、仅包含T中符号的符号串
C. 从S出发推导的、包含V中符号的符号串
D. 从N中符号出发推导的、包含V中符号的符号串

一个文法的语言是该文法能产生的句子的集合。一个文法产生的句子是从文法开始符号出发推导出的所有终结符号串。

由某上下文无关文法M[S]推导出某句子的分析树如下图所示,则错误的叙述是 (50) 。(2009年下半年)
在这里插入图片描述

(50)
A. 该文法推导出的句子必须以“a”开头
B. acabcbdcc是该文法推导出的一个句子
C. “S→aAcB”是该文法的一个产生式
D. a、b、c、d属于该文法的终结符号集

在这里插入图片描述

大多数程序设计语言的语法规则用 (49) 描述即可。(2014年上半年)
(49)
A. 正规文法 B. 上下文无关文法
C. 上下文有关文法 D. 短语结构文法

乔姆斯基文法体系共分为短语结构文法、上下文有关文法、上下文有关文法和正规文法4类。
短语结构文法或无限制文法也称为О型文法,其描述能力相当于图灵机,可使用任何的语法描述形式。
上下文有关文法也称为Ⅰ型文法,其描述能力相当于线性有界自动机,语法形式为:xSy ->xAy。也就是说,S(非终结符号)推导出A(非终结符号与终结符号的混合串)是和上下文x,y相关的,即S只有在上下文x,y的环境中才能推导出A。
上下文无关文法也称为2型文法,其描述能力相当于下推自动机,语法形式如下:s ->A,即S可以无条件的推导出A,与上下文无关。
正规文法也称为3型文法,等价于正则表达式,其描述能力相当于有穷自动机,语法形式如下:S ->Aa,其中最后一个a必须为非终结符。
大多数程序语言的语法现象可用上下文无关文法描述。

对于大多数通用程序设计语言,用 (50) 描述其语法即可。(2014年下半年)
(50)
A. 正规文法 B. 上下文无关文法
C. 上下文有关文法 D. 短语结构文法

扫描二维码关注公众号,回复: 17146427 查看本文章

乔姆斯基(Chomsky)把文法分成四种类型,即О型、1型、2型和3型。
О型文法
也称为短语文法,其能力相当于图灵机,任何О型语言都是递归可枚举的;反之,递归可枚举集也必定是一个О型语言。1型文法也称为上下文有关文法,这种文法意味着对非终结符的替换必须考虑上下文。2型文法就是上下文无关文法,非终结符的替换无须考虑上下文。3型文法等价于正规式,因此也被称为正规文法或线性文法。通用程序设计语言的大多数语法可由上下文无关文法表示。

乔姆斯基(Chomsky)将文法分为4种类型,程序设计语言的大多数语法现象可用其中的 (49) 描述。(2016年下半年)
(49)
A. 上下文有关文法 B. 上下文无关文法
C. 正规文法 D. 短语结构文法

程序语言的大多数语法现象可用乔姆斯基的上下文无关文法描述。

构造文法句子

己知文法其中S是开始符号。从S出发可以推导出 (21) 。(2013年下半年)
(21)
A. 所有由0构成的字符串 B. 所有由1构成的字符串
C. 某些0和1个数相等的字符串 D. 所有0和1个数不同的字符串

用文法表示语言的语法规则时,推导是产生语言句子的基本方式。以题目中的文法
o的过程为
为例,推导出1010的过程为S=>A0=>S10=>A010=>1010,推导出 0110
S=>A0=>S10=>B110=>0110,对于0000、11l1、1100、0011等则推导不出。因为由S先推导出A0后,再去推导A则必然产生一个与0相邻(在0的左边〉的l,而由S先推导出B1,则下一步必然要推导出一个与1相邻(在1的左边)的0。这保证了当1出现时,马上就会出现0,或者反之,且О和1的距离很近。分析更多的例子发现,
仅有“某
些0和1个数相等的字符串”是正确的。

简单算术表达式的结构可以用下面的上下文无关文法进行描述(E为开始符号), (49) 是符合该文法的句子。(2018年上半年)

在这里插入图片描述

可以文法起始符号推导出的句子就是符合该文发的。
推导是从文法的开始符号出发,用产生式右部的文法符号进行替换的过程。用最左推导方式推出2+—34的过程如下:
E=>E+T=>T+T=>F+T=>2+T=>2+T
F=>2+FF=>2±FF=>2+_3F=>2±34
由于文法中没有二元的“-”运算,所以推导不出2–34、24-3,文法中也没有括号,所以推导不出(2+3)*4。

程序设计语言的大多数语法现象可以用CFG(上、下文无关文法)表示。下面的CFG产生式集用于描述简单算术表达式,其中表示加、减、乘运算,id表示单个字母表示的变量,那么符合该文法的表达式为 (49) 。(2020年下半年)
在这里插入图片描述

设有描述简单算术表达式的上下文无关文法如下,其中id表示单字母。
E→E+T | T
T→FT | F
F→ id
与使用该文法描述的表达式a+b
c*d相符的语法树为 (48) 。(2021年上半年)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50843918/article/details/135012436