SAI软件设计师辅导与培训资料:历年试题分析与解答(彭旺军) 训资料,请勿散发! 符命名:类型说明数据占用内存的大小和存放形式,存储类说明数据在内存中的位置和生存 期:作用域说明数据可以使用的范围:生存期说明数据占用内存的时间。 数据从不同角度可分成不同的类别。按数据的作用域大小,可分为全局量和局部量:按 生存期可分为自动生存期、静态生存期和动态生成期;按程序运行时数据的值是否能改变可 分为常量和变量 数据按类型可分为4种:Woid、标量( Scalar)、函数和聚合( Aggregate)。标量又可分为算 术、枚举和指针;聚合类型可分为数组、结构体和共用体。 数据按其构造方式又可分为基本类型和派生类型 1.2.1.4程序语言的控制结构 程序语言中控制结构为将数据和数据上的运算组合成程序提供了基本框架。可计算问题 的程序都可用顺序、选择和循环这3种控制结构来描述。 1.2.1.5汇编程序基础知识 汇编语言是为特定的计算机中计算机系统设计的面向机器的语言。汇编语言中的语句可 分成两大类:一类是与机器指令相对应的可执行汇编语句:另一类汇编语句称为汇编控制语 句(亦称伪指令)。用汇编语言编写的源程序,要通过汇编程序将它民机器语言程序,才能被 计算机理解执行。经过汇编程序的工作,可执行汇编语句被转化成对应的机器指令;而伪指 令并不翻译成机器指令,它们的作用是控制汇编程序工作。伪指令主要用来告诉汇编程序做 些除了翻译机器指令外必须做的工作 汇编程序的功能是将汇编语言所编写的源程序翻译成由机器指令和其他信息组成的目 标程序。汇编程序的基本工作包括两项:一是将每一条可执行汇编语句转换成对应的机器指 令:二是处理源程序中出现的伪指令。 1.2.1.6解释程序基础知识 解释程序是一种语言处理程序,它直接执行源程序或源程序的内部形成。它并不产生目 标程序,它是它和编译程序的主要区别。 高级语言实现语言处理4种方案: 第1种,源程序被直接解释执行。 第2种,先将源程序翻译成高级中间代码,然后再扫描高级中间代码,对高级中间代码 进行解释执行。 第3种,也是一种解释程序的实现方案,与第2种方案的解释程序不同点在于,首先将 源程序转化成和机器代码十分接近的低级中间代码,然后再解释执行这种低纸中间代码。这 类系统具有良好的可移植性 第4种,是普通的编译程序。在编译程序方案下,髙级语言编写的源程序被最终翻译成 机器语言表示的目标程序。这类系统的目标执行效率最高 一般说来,建立在翻译基础上的系统在执行速度上都优于建立在解释执行基础上的系 统。翻译系统的缺点是其复杂性,这使得它的开发和维护费用都大。相反,解释系统比较简 单,可称植性较好,适合于以交互方式执行程序,其缺点是执行速度慢 解释系统的结构可分成两部分。第1部分包括通常用的词法分析程序以及语法和语义分 析程序,它的作用仍是把源翻译成中间代码,中间代码的设计常采用逆波兰表示形式。第2 部分是解释部分,用来对第1部分所产生的中间代码进行解释执行,完成真正的解释工作。 1.2.1.7编译程序基础知识 中国系统分析员, http://www.csai.cn,0731-8662005,trecsai.comcn926j1
CSAI 软件设计师辅导与培训资料:历年试题分析与解答(彭旺军) 培训资料,请勿散发! 中国系统分析员, http://www.csai.cn, 0731-8662005, tr@csai.com.cn 第 26 页 符命名:类型说明数据占用内存的大小和存放形式,存储类说明数据在内存中的位置和生存 期;作用域说明数据可以使用的范围;生存期说明数据占用内存的时间。 数据从不同角度可分成不同的类别。按数据的作用域大小,可分为全局量和局部量;按 生存期可分为自动生存期、静态生存期和动态生成期;按程序运行时数据的值是否能改变可 分为常量和变量。 数据按类型可分为 4 种:Void、标量(Scalar)、函数和聚合(Aggregate)。标量又可分为算 术、枚举和指针;聚合类型可分为数组、结构体和共用体。 数据按其构造方式又可分为基本类型和派生类型。 1.2.1.4 程序语言的控制结构 程序语言中控制结构为将数据和数据上的运算组合成程序提供了基本框架。可计算问题 的程序都可用顺序、选择和循环这 3 种控制结构来描述。 1.2.1.5 汇编程序基础知识 汇编语言是为特定的计算机中计算机系统设计的面向机器的语言。汇编语言中的语句可 分成两大类:一类是与机器指令相对应的可执行汇编语句;另一类汇编语句称为汇编控制语 句(亦称伪指令)。用汇编语言编写的源程序,要通过汇编程序将它民机器语言程序,才能被 计算机理解执行。经过汇编程序的工作,可执行汇编语句被转化成对应的机器指令;而伪指 令并不翻译成机器指令,它们的作用是控制汇编程序工作。伪指令主要用来告诉汇编程序做 一些除了翻译机器指令外必须做的工作。 汇编程序的功能是将汇编语言所编写的源程序翻译成由机器指令和其他信息组成的目 标程序。汇编程序的基本工作包括两项:一是将每一条可执行汇编语句转换成对应的机器指 令;二是处理源程序中出现的伪指令。 1.2.1.6 解释程序基础知识 解释程序是一种语言处理程序,它直接执行源程序或源程序的内部形成。它并不产生目 标程序,它是它和编译程序的主要区别。 高级语言实现语言处理 4 种方案: 第 1 种,源程序被直接解释执行。 第 2 种,先将源程序翻译成高级中间代码,然后再扫描高级中间代码,对高级中间代码 进行解释执行。 第 3 种,也是一种解释程序的实现方案,与第 2 种方案的解释程序不同点在于,首先将 源程序转化成和机器代码十分接近的低级中间代码,然后再解释执行这种低纸中间代码。这 类系统具有良好的可移植性。 第 4 种,是普通的编译程序。在编译程序方案下,高级语言编写的源程序被最终翻译成 机器语言表示的目标程序。这类系统的目标执行效率最高。 一般说来,建立在翻译基础上的系统在执行速度上都优于建立在解释执行基础上的系 统。翻译系统的缺点是其复杂性,这使得它的开发和维护费用都大。相反,解释系统比较简 单,可称植性较好,适合于以交互方式执行程序,其缺点是执行速度慢。 解释系统的结构可分成两部分。第 1 部分包括通常用的词法分析程序以及语法和语义分 析程序,它的作用仍是把源翻译成中间代码,中间代码的设计常采用逆波兰表示形式。第 2 部分是解释部分,用来对第 1 部分所产生的中间代码进行解释执行,完成真正的解释工作。 1.2.1.7 编译程序基础知识
SMI软件设计师辅导与培训资料:历年试题分析与解答(彭旺军)培训资料,请勿散发! 编译程序的功能是把某高级语言书写的源程序翻译成与之等价的低级语言(汇编语言或 机器语言)的目标程序。其过程很复杂,可分成6个阶段 ①词法分析阶段是编译过程的第1个阶段。词法分析所依据的是语言的词法规则,即描 述单词结构的规则。词法规则可用3型文法(正规文法)或正规式来描述,有限自动机能识别 正规文法所定义的语言和正规式所表示的集合。 ②语法分析阶段。在词法分析的基础上将单词符合序列分解成各类语法单位。语法分析 所依据的是语言的语法规则,即描述程序结构的规则。 词法分析和语法分析本质上都是对源程序的结构进行分析。 ③语义分析阶段是审查源程序有无语义错误,为代码生成阶段收集类型信息。比如语义 分析的一个工作是进行类型审査,审查每个算符是否具有语言规范允许的运算对象 ④中间代码生成阶段。在进行了上述的语法分析和语义分析阶段工作之后,有的编译程 序将源程序变成一种内部表示形式,这种内部表示形式叫做中间语言或中间代码。所谓"中 间代码"是一种简单、含义明确的记号系统 语义分析和中间代码生成所依据的是语言的语义规则。一般采用语法指导翻译规则和中 间代码生成规则。 ⑤代码优化阶段是对前阶段产生的中间代码进行变换或进行改造,目的是使生成的目标 代码更为高级,即省时间和省空间 ⑥目标代码生成阶段。是把中间代码变换成特定机器上的绝对指令代码或可重定位的指 令代码或汇编指令代码。这是编译的最后阶段,它的工作与硬件系统的结构和指令的含义有 关 编译过程的6个阶段的任务,再加上表格管理和出错处理的工作可分别由几个模块或程 序完成,它们分别称作词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、 代码优化程序、目标代码生成程序、表格管理程序和出错处理程序。 1.22试题分析 从历年试题统计(见表2-2)来看,程序语言基础试题是每年必考的知识点,考查的重点 是形式语言基础、语法和词法分析方法、程序控制结构。复习中还应注意补充有关程序语言 最新发展方面的知识 表22 历年高级程序员级程序语言基础试统计 t9年试题7 编译语法分析器 12年试题2 序诉常识 t94年试划2 子程序调图、程序控制结构(:相循环》 19u4年试题16 i90s年试题15 短语结构文法 1906年试题5 有限状态自动机《网法分析 197甲试题1 子程序参 19年试题7 程序语言常说 19w年试题4 文法法分新黄优先文法 19s年试题6 子程序参数调用 p9年试题3 文法 试题1(2000年试题3) 从供选择的答案中,选出应填入下面叙述中{}内的最确切的解答,把相应编号写在答卷的 中国系统分析员, http://www.csai.cn,0731-8662005,trecsai.comcn927j1
CSAI 软件设计师辅导与培训资料:历年试题分析与解答(彭旺军) 培训资料,请勿散发! 中国系统分析员, http://www.csai.cn, 0731-8662005, tr@csai.com.cn 第 27 页 编译程序的功能是把某高级语言书写的源程序翻译成与之等价的低级语言(汇编语言或 机器语言)的目标程序。其过程很复杂,可分成 6 个阶段; ①词法分析阶段是编译过程的第 1 个阶段。词法分析所依据的是语言的词法规则,即描 述单词结构的规则。词法规则可用 3 型文法(正规文法)或正规式来描述,有限自动机能识别 正规文法所定义的语言和正规式所表示的集合。 ②语法分析阶段。在词法分析的基础上将单词符合序列分解成各类语法单位。语法分析 所依据的是语言的语法规则,即描述程序结构的规则。 词法分析和语法分析本质上都是对源程序的结构进行分析。 ③语义分析阶段是审查源程序有无语义错误,为代码生成阶段收集类型信息。比如语义 分析的一个工作是进行类型审查,审查每个算符是否具有语言规范允许的运算对象。 ④中间代码生成阶段。在进行了上述的语法分析和语义分析阶段工作之后,有的编译程 序将源程序变成一种内部表示形式,这种内部表示形式叫做中间语言或中间代码。所谓"中 间代码"是一种简单、含义明确的记号系统。 语义分析和中间代码生成所依据的是语言的语义规则。一般采用语法指导翻译规则和中 间代码生成规则。 ⑤代码优化阶段是对前阶段产生的中间代码进行变换或进行改造,目的是使生成的目标 代码更为高级,即省时间和省空间。 ⑥目标代码生成阶段。是把中间代码变换成特定机器上的绝对指令代码或可重定位的指 令代码或汇编指令代码。这是编译的最后阶段,它的工作与硬件系统的结构和指令的含义有 关。 编译过程的 6 个阶段的任务,再加上表格管理和出错处理的工作可分别由几个模块或程 序完成,它们分别称作词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、 代码优化程序、目标代码生成程序、表格管理程序和出错处理程序。 1.2.2 试题分析 从历年试题统计(见表 2-2)来看,程序语言基础试题是每年必考的知识点,考查的重点 是形式语言基础、语法和词法分析方法、程序控制结构。复习中还应注意补充有关程序语言 最新发展方面的知识。 试题 1 (2000 年试题 3) 从供选择的答案中,选出应填入下面叙述中{ }内的最确切的解答,把相应编号写在答卷的
SAI软件设计师辅导与培训资料:历年试题分析与解答(彭旺军) 训资料,请勿散发! 对应栏内 假设某程序语言的文法如下: 其中:Vt={a.bd,)},Nn={S,T},S是开始符号 考查该文法,称句型(Sd(T)db)是S的一个A。其中B是句柄:C是素短语:D是该句型的 直接短词;E是短语。 供选择的答案 A:①最左推导②最右推导③规范推导④推导 B:①S②b③(T④Sd(T C:①S②b③(T)④Sd(T D:①S②S,(T),b ③S,(T),TdS,b④( Sd(r)db) E:①(Sd(Tlb)②d(T)③Td④sdTd 【解析】 解答本题要搞清楚基本概念,下面具体分析各个问题。 先来看问题A。最左(右推导:任何一步推导过程σ→队(其中σ、β是句型)都是对σ中的最 左(最右)非终结符进行替换,这种推导为最左(最右)推导。在形式语言中,最右推导常被称 为规范推导。 题中的句型(Sd(Tdb)的第一步肯定是由S→(T)→(TdS)得出的。按照最左推导的规则 (Tds)( TdDs)( SsDs),最终不可能推出原来的句型。 按照最右推导的规则(Tds)(Tdb)(TdT)db,最终不可能推出原先的句型 最后可以看出句型(Sd(T)db)是由一般推导推出的,步骤如下: S→(1)→(Tds)(Tdb)→(Td(Tdb)(Sd(Tdb) 所以正确答案是④ 再来看问题B~E。来文法,S是文法的开始符号,aβ6是文法G的一个句型。如果有S→aA6, 且A→β,则称β是句型a6相对于非终符A的短语。特别是如有Aβ,则称β是句型aB 相对于规则A→β的直接短语。一个句型的最左直接短语称为该句型的句柄。 本文法推导树如下: ) 所以,S是句型相对于规则T→S的直接短语,也是最左直接短语(句柄)。(T)是句型相对于 规则S→(D)的直接短语,对于问题B,选择①是正确的。 素短语是一个短语,它至少包含一个终结符,并除自身外不包含其他的素短语。所以,问题 C的答案③正确。 d是句型相对于规则S→d的直接短语,则问题D的答案②正确 中国系统分析员, http://www.csai.cn,0731-8662005,trecsai.comcn928j1
CSAI 软件设计师辅导与培训资料:历年试题分析与解答(彭旺军) 培训资料,请勿散发! 中国系统分析员, http://www.csai.cn, 0731-8662005, tr@csai.com.cn 第 28 页 对应栏内。 假设某程序语言的文法如下: S→a|b|(T) T→TdS|S 其中:Vt={a,b,d,(,)},Nn={S,T},S 是开始符号。 考查该文法,称句型(Sd(T)db)是 S 的一个 A。其中 B 是句柄;C 是素短语;D 是该句型的 直接短词;E 是短语。 供选择的答案 A:①最左推导 ②最右推导 ③规范推导 ④推导 B:①②③ ④ S b (T) Sd(T) C:①②③ ④ S b (T) Sd(T) D:① ②S S,(T),b ③S,(T),TdS,b (Sd(T)db) ④ E:① ② ③④ (Sd(T)db) d(T) Td Sd(T)d 【解析】 解答本题要搞清楚基本概念,下面具体分析各个问题。 先来看问题 A。最左(右)推导:任何一步推导过程 σ→β(其中 σ、β 是句型)都是对 σ 中的最 左(最右)非终结符进行替换,这种推导为最左(最右)推导。在形式语言中,最右推导常被称 为规范推导。 题中的句型(Sd(T)db)的第一步肯定是由 S→(T)→(TdS)得出的。按照最左推导的规则 (Tds)→(TdSdS)→(SdSdS),最终不可能推出原来的句型。 按照最右推导的规则(Tds)→(Tdb)→(Td(T)db),最终不可能推出原先的句型。 最后可以看出句型(Sd(T)db)是由一般推导推出的,步骤如下: S→(T)→(Tds)→(Tdb)→(Td(T)db)→(Sd(T)db) 所以正确答案是④。 再来看问题 B~E。来文法,S 是文法的开始符号,αβδ 是文法 G 的一个句型。如果有 S→αAδ, 且 A→β,则称 β 是句型 αβδ 相对于非终符 A 的短语。特别是如有 A β,则称 β 是句型 αβδ 相对于规则 A→β 的直接短语。一个句型的最左直接短语称为该句型的句柄。 本文法推导树如下: 所以,S 是句型相对于规则 T→S 的直接短语,也是最左直接短语(句柄)。(T)是句型相对于 规则 S→(T)的直接短语,对于问题 B,选择①是正确的。 素短语是一个短语,它至少包含一个终结符,并除自身外不包含其他的素短语。所以,问题 C 的答案③正确。 d 是句型相对于规则 S→d 的直接短语,则问题 D 的答案②正确
SMI软件设计师辅导与培训资料:历年试题分析与解答(彭旺军)培训资料,请勿散发! 由推导树可知,无论如何,无法由S推导出dT、Td或Sd(Td,所以问题E的答案①正确。 【答案】:A:④B:①C:③D:②E:① 试题2(1999年试题)3 从供选择的答案中,选出应填入下面叙述中{}内的最确切的解答,把相应编号写在答卷扔 对应栏内。 假设某程序语言的文法如下 S→Salr T→TbRR R→PdRP P→ fOgle 其中Ⅵr{ab;d,efg};Ⅴn={S,TR,P};S是开始符号,那么,此文法是A文法。这种文法的语法 分析通常采用优先短阵。优先短阵给出了该文法中各个终结符之间的优先关系(大于、小于、 等于和无关系)。在上述文法中,某些终结符之间的优先关系如下: bBa; f(Cig, aDia, d( de 供选择的答案 A:①五则文法②算符文法③二义文法④属性文法 B:①大于②小于③等于④无关系 C:①大于②小于③等于④无关系 D:①大于②小于③等于④无关系 ①大于②小于③等于④无关系 解析】 所谓算符文法,可以作如下的描述:如果在一个文法G中,不含有形如"U→AB.."的产 生式,其中AB∈Vn,则G为算符文法。也就是说,如果G是一算符文法,那么G的任何 产生式的右部都不会出现两个非终结符号相邻的情况,而且,对算符文法而言,也不会含有 两个非终对符号相邻出现的句型。这种性质意味着,如果把终对符号看作广义运算符,而把 非终结符号看作广义运算的对象,则在算符文法的任何句型中,两相邻运算符之间的运算对 象至多只有一个,而不会出现其间运算对象个数不确定的情况,这样就使得广义运算总是按 照中缀形式出现,对语法分析工作非常有益 对于给定的文法G,可以逐个检查G的各产生式,查看它们的右部是否含有相邻出现的非 终结符号,以确定G是否为一算符文法,然后再构造相应的优先矩阵。若此矩阵中无多重 定义的元素(即各运算符对之间至多只有一种优先关系),同则可确认理一算符优先文法 在算符文法中,一般按照如下规则判断终结符之间的优先关系: 当且仅当G中有形如"U→.ab."或者"U→aBb.."的产生时,a=b 当且仅当G中有形如"U→.aA.."的产生式,且有或者"A==>b.."或者"A==>..aB"时, a>b 当且仅当G中有形如"U→Ab.."的产生式,且有或者A==>a."或者A==>.aB"时, a>b。 如果算符文法G的任何一对终结符号之间,至多只有3种算符优先关系:等于、大于或者 小于成立,则称G为算符优先文法 【答案】:A:②B:①C:③D:①E:② 试题3(1998年试题4) 从供选择的答案中,选出应填入下面叙述中{}内的最确切的解答,把相应编号写在答卷的 中国系统分析员, http://www.csai.cn,0731-8662005,trecsai.comcn9291
CSAI 软件设计师辅导与培训资料:历年试题分析与解答(彭旺军) 培训资料,请勿散发! 中国系统分析员, http://www.csai.cn, 0731-8662005, tr@csai.com.cn 第 29 页 由推导树可知,无论如何,无法由 S 推导出 d(T)、Td 或 Sd(T)d,所以问题 E 的答案①正确。 【答案】: A:④ B:① C:③ D:② E:① 试题 2 (1999 年试题)3 从供选择的答案中,选出应填入下面叙述中{ }内的最确切的解答,把相应编号写在答卷扔 对应栏内。 假设某程序语言的文法如下: S→SaT|T T→TbR|R R→PdR|P P→fSg|e 其中 Vr{a,b,d,e,f,g};Vn={S,T,R,P};S 是开始符号,那么,此文法是 A 文法。这种文法的语法 分析通常采用优先短阵。优先短阵给出了该文法中各个终结符之间的优先关系(大于、小于、 等于和无关系)。在上述文法中,某些终结符之间的优先关系如下: b{B}a; f{C}g; a{D}a;d{E}d。 供选择的答案 A:①五则文法 ②算符文法 ③二义文法 ④属性文法 B:①大于 ②小于 ③等于 ④无关系 C:①大于 ②小于 ③等于 ④无关系 D:①大于 ②小于 ③等于 ④无关系 E:①大于 ②小于 ③等于 ④无关系 【解析】 所谓算符文法,可以作如下的描述:如果在一个文法 G 中,不含有形如"U→…AB…"的产 生式,其中 A,B Vn ∈ ,则 G 为算符文法。也就是说,如果 G 是一算符文法,那么 G 的任何 产生式的右部都不会出现两个非终结符号相邻的情况,而且,对算符文法而言,也不会含有 两个非终对符号相邻出现的句型。这种性质意味着,如果把终对符号看作广义运算符,而把 非终结符号看作广义运算的对象,则在算符文法的任何句型中,两相邻运算符之间的运算对 象至多只有一个,而不会出现其间运算对象个数不确定的情况,这样就使得广义运算总是按 照中缀形式出现,对语法分析工作非常有益。 对于给定的文法 G,可以逐个检查 G 的各产生式,查看它们的右部是否含有相邻出现的非 终结符号,以确定 G 是否为一算符文法,然后再构造相应的优先矩阵。若此矩阵中无多重 定义的元素(即各运算符对之间至多只有一种优先关系),同则可确认理一算符优先文法。 在算符文法中,一般按照如下规则判断终结符之间的优先关系: 当且仅当 G 中有形如"U→…ab…"或者"U→…aBb…"的产生时,a=b; 当且仅当 G 中有形如"U→…aA…"的产生式,且有或者"A=+ =>b…"或者"A=+ =>…aB"时, a>b; 当且仅当 G 中有形如"U→…Ab…"的产生式,且有或者"A=+ =>a…"或者"A=+ =>…aB"时, a>b。 如果算符文法 G 的任何一对终结符号之间,至多只有 3 种算符优先关系:等于、大于或者 小于成立,则称 G 为算符优先文法。 【答案】:A:② B:① C:③ D:① E:② 试题 3 (1998 年试题 4) 从供选择的答案中,选出应填入下面叙述中{ }内的最确切的解答,把相应编号写在答卷的
SAI软件设计师辅导与培训资料:历年试题分析与解答(彭旺军) 训资料,请勿散发! 对应栏内 语法分析方法大体上可分成自上而下和自下而上的两种。自下而上分析法,是从输入符号串 开始逐步进行A,直至A成文法的起始符号。自上而下分析法,则是从文法的起始符号开 始反复使用产生式进行B直至B出输入符号串。 符符优先文法是一种自下而上分析方法,其文法的特点是文法产生式中C。自下而下的分析 方法,通常要求文法的产生式D,如E文法就是一种可以自上而下分析的文法。 供选择的答案 A、B:①递归②综合③回归④推导⑤分解⑥归约 C:①不含两个相邻的非终结符②不含两个相邻的终结符 ③不含产生式④不含长度为1的产生式 D:①不以非终结符开头②不以终结符开头 ③不含左递归④不含右递归 E:①LR(1)②LL(1)③SLR(1)④LALR(1) 【解析】 语法分析的程序以词法分析程序所输出的用内部编码表示的单词序列为输入,其任务是分析 源程序的结构,差别它是否是相应程序设计语言的一个合法程序。为了完成这个任务,通常 由语法分析程序尝试着为其构造一棵完整的语法树。若尝试成功,则表明输入的符号串在结 构上是一个合乎语法的程序,否则,源程序中必然存在的错误。 就产生语法树的方向而言,可大致把它们分为自顶向下和自底向上两大类。所谓自顶向下的 分析是对给定的符号串,试图自上而下地为其构造出一棵语法树,或者说从文法的开始符号 出发,为其构造一个最左推导。所谓自底向上的分析是给定的符号串,试图自下而上地为其 构造出一棵语法树,或者说从给定的符号串本身出发,试图将其归约为文法的开始符号。 算符优先文法属于自下而上的分析法,它利用各个算符间的优先关系和结合规则来进行语法 分析,特别适用于分析各种表达式。算符优先文法的任何产生式的右部都还会出现两个非终 结符相领的情况,且其任何一对终对符之间至多只有3种算符关系”<"、">和”="之一成立。 自顶向下的文法中不能有左递归,否则自顶和下的分析过程进入死循环,不能正常进行。E 中ⅡL(1)为自顶向下的文法外,其他均为自底向上的文法 【答案】:A:⑥B:④C:①D:③E:② 试题4(1998年试题6 从供选择的答案中,选出应填入下面叙述中{}内的最确切的答案,把相应编号写在答卷的 对应栏内。 在高级程序设计语言中,使用参数是子程序之间传递信息的一种手段。子程序说明中的参数 称为形式参数,调用语句中的参数称为实在参数。调用时,实在参数的个数、类型和顺序要 和形式参数保持一致。 知道一种语言(或编译器)使用哪种参数传递方法是很重要的,因为程序的运行依赖于所用的 方法。参数传递方法有传值调用( Call by value)、引用调用( Call by reference)、传名调用(Clby name)和宏扩展( Macro expansion 传值调用是把实在参数的A传递给相应的形式参数,子程序通过这种传值形参B;引用调 用是指把实在参数的C传给相应的形式参数,此时子程序对形式参数的一次引用或赋值被 处理成对形式参数的D访问。 C语言中的函数,以E方式进行参数传递。 供选择的答案 A、C:①地址②名③值④地址和值 中国系统分析员, http://www.csai.cn,0731-8662005,trecsai.comcn930j1
CSAI 软件设计师辅导与培训资料:历年试题分析与解答(彭旺军) 培训资料,请勿散发! 中国系统分析员, http://www.csai.cn, 0731-8662005, tr@csai.com.cn 第 30 页 对应栏内。 语法分析方法大体上可分成自上而下和自下而上的两种。自下而上分析法,是从输入符号串 开始逐步进行 A,直至 A 成文法的起始符号。自上而下分析法,则是从文法的起始符号开 始反复使用产生式进行 B 直至 B 出输入符号串。 符符优先文法是一种自下而上分析方法,其文法的特点是文法产生式中 C。自下而下的分析 方法,通常要求文法的产生式 D,如 E 文法就是一种可以自上而下分析的文法。 供选择的答案 A、B:①递归 ②综合 ③回归 ④推导 ⑤分解 ⑥归约 C:①不含两个相邻的非终结符 ②不含两个相邻的终结符 ③不含 产生式 ④不含长度为 1 的产生式 D:①不以非终结符开头 ②不以终结符开头 ③不含左递归 ④不含右递归 E:①②③ ④ LR(1) LL(1) SLR(1) LALR(1) 【解析】 语法分析的程序以词法分析程序所输出的用内部编码表示的单词序列为输入,其任务是分析 源程序的结构,差别它是否是相应程序设计语言的一个合法程序。为了完成这个任务,通常 由语法分析程序尝试着为其构造一棵完整的语法树。若尝试成功,则表明输入的符号串在结 构上是一个合乎语法的程序,否则,源程序中必然存在的错误。 就产生语法树的方向而言,可大致把它们分为自顶向下和自底向上两大类。所谓自顶向下的 分析是对给定的符号串,试图自上而下地为其构造出一棵语法树,或者说从文法的开始符号 出发,为其构造一个最左推导。所谓自底向上的分析是给定的符号串,试图自下而上地为其 构造出一棵语法树,或者说从给定的符号串本身出发,试图将其归约为文法的开始符号。 算符优先文法属于自下而上的分析法,它利用各个算符间的优先关系和结合规则来进行语法 分析,特别适用于分析各种表达式。算符优先文法的任何产生式的右部都还会出现两个非终 结符相领的情况,且其任何一对终对符之间至多只有 3 种算符关系"<"、">和"="之一成立。 自顶向下的文法中不能有左递归,否则自顶和下的分析过程进入死循环,不能正常进行。E 中 IL(1)为自顶向下的文法外,其他均为自底向上的文法。 【答案】:A:⑥ B:④ C:① D:③ E:② 试题 4 (1998 年试题 6) 从供选择的答案中,选出应填入下面叙述中{ }内的最确切的答案,把相应编号写在答卷的 对应栏内。 在高级程序设计语言中,使用参数是子程序之间传递信息的一种手段。子程序说明中的参数 称为形式参数,调用语句中的参数称为实在参数。调用时,实在参数的个数、类型和顺序要 和形式参数保持一致。 知道一种语言(或编译器)使用哪种参数传递方法是很重要的,因为程序的运行依赖于所用的 方法。参数传递方法有传值调用(Call by value)、引用调用(Call by reference)、传名调用(Call by name)和宏扩展(Macro expansion)。 传值调用是把实在参数的 A 传递给相应的形式参数,子程序通过这种传值形参 B;引用调 用是指把实在参数的 C 传给相应的形式参数,此时子程序对形式参数的一次引用或赋值被 处理成对形式参数的 D 访问。 C 语言中的函数,以 E 方式进行参数传递。 供选择的答案 A、C:①地址 ②名 ③值 ④地址和值