访问的块scale尚未被idea 编译拒绝访问

分享几个提高Java性能的高效用法
1.在重要的循环里,消除循环终止判断时的方法调用
for(int i=0; i&collection.size(); i++)
for(int i=0; i&collection.size(); i++)
view plaincopy to clipboardprint?
for(int i=0;n=collection.size();i&n;i++)
2.通常,把与循环index不相关的移到循环的外面
for(int i=0;terminal=x.i&i++){
&X[i]=x[i]/scaleA*scaleB;
for(int i=0;terminal=x.i&i++){
X[i]=x[i]/scaleA*scaleB;
double scale = scaleB/scaleA;
for(int i=0; terminal=x. i& i++){
&X[i]=x[i]*
消除字符串连接
创建长字符串时,总是使用StringBuffter代替String
预先分配StringBuffer空间
StringBuffer sb = new StringBuffer(5000);
3.基本数据类型
在重要的循环里使用基本数据类型(int型数据通常比long/double型数据更快)
基本数据类型(Boolean,Integer,etc)的包装类主要用在当传递的方法参数必须是一个对象的引用时(而不是一个基本数据类型)
对所有的常量代数表达式使用static final修饰符
一 使常量更容易引用(编译器预先计算常量表达式)
异常只用于单个真正的错误条件
一 抛出一个异常和执行一个catch代码块花费是很高的(主要由于当创建一个异常时要获得线程栈的一个快照)
一 只当条件真的异常时才抛出一个异常
使编译器和运行时最优化,将几个方法调用放在一个try/catch块中,而不是为每个方法调用实现几个try/catch块
注意,所有这些技巧会因不同的平台和虚拟机而不同
一 例如:在有些servlet容器内,通过一个OutputStream作为字节输出会更快
一 在其它的容器内,通过一个PrintWriter输出字符会更快
这些技巧描述的是最可移植的建议
你可能需要运行一些基准来判断在你的平台上怎么样是最快的
相关文章:
暂时还没有评论.magento1.4 -- 从新闻插件看出Magento开启预编译后对代码的要求更加严格规范
编辑:www.fx114.net
本篇文章主要介绍了"magento1.4 -- 从新闻插件看出Magento开启预编译后对代码的要求更加严格规范",主要涉及到magento1.4 -- 从新闻插件看出Magento开启预编译后对代码的要求更加严格规范方面的内容,对于magento1.4 -- 从新闻插件看出Magento开启预编译后对代码的要求更加严格规范感兴趣的同学可以参考一下。
&& & &&Scalena News这个新闻插件我用了很久了,在1.3时代使用中一直没出问题,就也没有去检查它的代码是否都是准确的。因为1.4的预编译(Compilation)功能已经成熟,我在1.4安装完Scalena News后开启了编译,这时访问后台新闻管理菜单会报错,提示Mage_Adminhtml_Controller_action这个类没找到,检查插件的Scalena_News_Adminhtml_NewsController这个文件后发现Mage_Adminhtml_Controller_action里的action应该是大写Action
&& class Scalena_News_Adminhtml_NewsController extends Mage_Adminhtml_Controller_action
protected function _initAction() {
&&&&&&&&&&&&&&&&&
也就是说应该是class Scalena_News_Adminhtml_NewsController extends Mage_Adminhtml_Controller_Action,修改之后重新运行编译后不再报错。而即使不修改,只要关闭编译,同样不会报错。
&& & & &从这里可以看出,未开编译前Magento对代码的规范并没有那么严格,甚至可以猜想在1.3时代有不少插件里或者系统代码有类似的不规范代码因为不影响使用而没被发现,但到了1.4时代,如果想要正常使用预编译(Compilation)来提速,更规范的代码编写是必不可少了。我的建议是从一开始开发局开启预编译(Compilation),当然每次新装插件或新写了自己的模块时要重新运行编译,这样每次发现有报错可以及时的修改掉,如果一直没开编译,到项目全部做完在开启,那时候可能会有一大把错误等着你去改,甚至混在一起无从下手。当然这是我根据目前的知识所作的推测。
之前好像有看到过一篇英文文章说,要开启预编译会要求所有的功能编写按照Magento的标准模块编写方式,跳出框架自己写代码实现的功能有可能无法编译,甚至报错到无法使用编译功能,比如在一个phtml文件中自己写php代码直接读取数据库等等。这一点我还未证实过,不过我觉得既然使用了Magento这个框架,按照Magento的规则去写代码还是有必要的,方便了自己也方便了别人看懂你的代码,当然这就要求开发者需要更深入的了解magento自身的框架。
还有一个细节,在windows系统中开启编译,新闻管理是不会报错的,因为windows系统文件和文件夹不区分大小写,而一个Magento项目最终肯定是要在Linux的服务器上运行,所以一个建议是本地开发也搭建一个Linux环境做开发,才不会发生从windows转移到linux是发现一堆大小写带来的错误。
版权声明:本文为博主原创文章,未经博主允许不得转载。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:工具类服务
编辑部专用服务
作者专用服务
新版平台已经上线,充值操作将跳转,您的账户权限不会受到影响
可重构众核流处理器上的编译与程序优化技术
半导体工艺的持续进步和流编程模型的提出是推动众核流处理器体系结构向前发展的两个重要因素。为了充分利用摩尔定律发展带来的丰富廉价的晶体管资源,片上多处理器已经成为工业界所接受的新一代处理器体系结构的解决方案之一。另一方面,流编程模型的提出为解决应用程序并行性表示和开发提供了有利的工具,业已成为程序并行化的一般方法。但是流应用程序本身的运行时特性对处理器资源的灵活可配置提出了新的要求。一方面,不同程序对于计算,存储和控制的硬件资源需求是千差万别的;另一方面,有的程序对于硬件资源的需求还表现出阶段性特征,不同阶段所需的硬件资源也不尽相同。为了解决这一问题,近年来可重构众核处理器体系结构受到广泛关注,期望以同构的轻量级物理核来构建不同粒度的逻辑处理器,自适应地调整硬件资源,最大化串行程序的性能。我们基于以上认识,提出了可重构的众核流处理器体系结构TPA-S,旨在为流应用程序提供片上资源灵活可重构的硬件衬底。  
本文围绕这一体系结构,研究了以CUDA为代表的流编程模型在TPA-S上的编译和程序优化技术,分别从可重构流处理器的执行模型,指令集扩展,编译系统设计,以及程序优化技术等方面展开研究。主要的研究内容包括:  
(1)研究流编程模型与可重构流体系结构的执行模型,探索流应用程序在可重构流处理器TPA-S上的映射方案。流编程模型的实质在于控制和计算的分离:流程序中的计算密集部分以核心函数的形式被抽取出来,使用多个计算线程来开发数据级并行性;而控制线程专注于计算之外的控制流程序,为核心函数组织数据以及开发生产者-消费者局部性。我们设计了主从式和分阶段式两种程序映射方案,分别以异步和同步的方式将计算线程和控制线程映射到TPA-S的多个逻辑处理器上。另外,我们还提出了单一线程和组合线程这两种核心函数的组织方式,在单线程性能和系统吞吐率之间寻求最佳平衡点。  
(2)研究流编程模型对TPA-S指令集体系结构产生的设计需求,提出扩展的类数据流EDGE指令集DISC-S。TPA-S流处理器基于显式数据流图执行(EDGE)指令集,将程序的每个线程组织为原子执行和提交的超块序列,在超块内部按照类数据流方式执行。EDGE指令集中特殊的目标域编码方式是TPA-S处理器实现物理核可重构的基础之一。然而流编程模型为TPA-S微结构带来了一些不包括在EDGE指令集中的新特性,例如:多个计算线程需要依靠只读的特殊寄存器来快速地获取线程索引信息;计算线程需要访问软件管理的片上共享存储器数据;另外,多个线程之间需要实现高效的栅栏同步机制。DISC-S扩展指令集针对以上新特性,增加了对特殊寄存器读写,软件管理的片上共享存储层次以及线程间同步的指令支持,为实现流编程模型的映射带来了方便。  
(3)设计并实现面向CUDA编程语言的TPA-S编译器系统。本文基于NVCC编译框架将编译器系统分为核心级与流级两条编译链。我们参考scale编译器设计了核心级编译器Ptx2EDGE,将PTX汇编语言形式的计算线程源代码程序编译成DISC-S扩展指令集的二进制目标代码。在流级,我们实现了CUDAC语法扩展和API函数接口以及运行时库的移植,并复用scale串行编译器产生控制线程代码。编译器系统设计的主要工作由一系列编译模块与工具软件的代码实现组成,包括PTX和CUDA语法的前端识别,中间表示形式转换,超块生成和优化,资源分配与指令调度,汇编器与链接器等。另外,为了实现CUDA控制线程中设备管理,线程管理,执行控制和存储器管理等功能模块,我们移植了CUDA运行时库并实现了软件运行时系统Mpsim。编译系统的正确性和执行效率通过实验在一组基准测试程序上进行了验证与评测。  
(4)研究了不规则程序在流处理器上的程序优化方法。本文主要分析了众核流处理器上不规则程序的性能瓶颈问题,并对GPU平台上的图广度优先搜索算法进行了实例研究,希望找到不规则程序在流处理器上进行性能调优的一般性方法。我们针对不规则程序中复杂多变的无组织数据并行性提出了基于并行性反馈的FlexBFS高效实现方法,并针对不规则访存带来的动态队列访存效率问题以及不规则输入引起的负载平衡问题,分别提出了相应的程序优化技术。这些实现方法和优化技术都能够被应用到其它的不规则程序当中。  
本文获得了以下重要认识:(1)流编程模型能够驱动指令集体系结构的设计,ISA需要反映编程模型带来的新特性;(2)流程序的多线程映射需要软件运行时库的协同工作,在将来的操作系统中可以增加对流编程模型的支持;(3)编译系统设计环节需要使用合适的编程模式和软件工程方法来增强程序的模块化与可读性,例如访问者模式;(4)不规则程序的并行性开发需要准确的并行性度量,使用在线剖析技术能够指导计算资源的合理划分。
学科专业:
授予学位:
学位授予单位:
导师姓名:
学位年度:
在线出版日期:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社当前位置: >>
编译原理复习资料11
第 1 部分一 简答题 1. 编译程序按功能分为哪几个阶段?各个阶段的主要功能? 2. 实现高级语言程序的途径有哪几种?它们之间的区别? 3. 给出描述非 0 数字作为开始符的奇数字符串的正则表达式或正则式。 4. 判断字符串 anbn(n &0)是否可用确定自动机识别?如果能,则画出自动机,否则 说明原因 5. 对如下文法: G[S] : S a b S | a a B | a d B bbB|b 分别给出句子 abaabbb 和 ad 的句柄 6. 有如下文法,给出每个产生式的 Predict 集。 P begin S end S id := E ; S | λ E n | id 7. 什么是可规约活前缀?举一例说明。 8. 通过合并 LR(1)文法中的同心状态得到的 LALR(1)文法可能会产生哪些冲突? 一定不会产生哪些冲突? 9. 设对偶表(L,N)分别表示程序在当前位置的层数和偏移量,确定下面程序段中 括号部分的内容。假设系统规定整型(int)变量占 1 个单元,实型(real)变量占 2 个单元。 (L, N) Type at = array of [1..10] ( ) var x : ( ) function f ( ( ?,M) var a: at, ( ) b: at, ( ) var x: real ) : int 10. 给出活动记录空间结构?并给出各部分的存储对象? 11. 有如下文法: G[S]: S ( L ) | a L SP P ,SP|λ 给出该文法的动作文法打印每个 a 的嵌套深度。例如(a, , )打印 1,2, (a)(a) 2。 12. 文法可分为几类;各举一例。 13. Display 表的作用? 14. 如下是当前执行某个过程时的活动记录,设变量 x 的层数和偏移量分别为 L 和 Off,说明如何访问变量 x。sp ... ... ... .... 局部 Display 表1 D sp 15. 当实参为变量,形参分别为变参和值参时,传参的区别。 二、说明如下文法是否是 LL(1)文法,若不是,将其转换为 LL(1)文法。最后给出 该文法的 LL(1)分析表。 G[A]: A B e B Bb|a 三、 (判断如下文法是否是 LR(1)文法,若不是,说明理由,是则画出它的 LR 状态图, 并给出它的 LR(1)分析表。 G[S]: S a | b | (T) T TeS | S 四、给出如下程序段的中间代码,并将其优化为最简代码形式。(中间代码的操作符可 用自身代替)。其中 A:Array of [1..10] of Array [1..10] of integer,整型变量占 1 个存储单元。 z := 3; while j& 10 do begin j := x +1; x := x+1 ; m: = x+1; if x &10 then y:= A[i][j]+m else y:= A[i][j]-m n := z + 10; end第 2 部分一、简答题 1. 编译程序在逻辑上由哪几部分组成? 2. 编译程序和解释程序有哪些区别? 3. 给出能被 3 整除的二进制数表示形式的正则定义。 4. 给出识别正则表达式((a|bc)*d)+的 NFA 。 5. 已知文法 G[S]: S → S;G│G G → G(T)│ H H → a │ (S) T → T+S │ S 找出句型:a(T+S);H;(S)的短语、简单短语和句柄。 6. 已知文法 G[S]为: S→AB | bC A→b | λ B→aD | λ C→AD | b D→aS | c 对其每一个非终级符求 First 集和 Follow 集。 7.什么是过程的活动记录?过程活动记录存储哪些信息? 8.设对偶表(L,N)分别表示程序在当前位置的层数和偏移量,确定下面程序段中括 号部分的内容。假设系统规定整型(int)变量占 2 个单元,实型(real)变量占 4 个单元。2 (L, N) Type at = array of [1..10] ( ) var x : ( ) function f ( ( ?,M) var a: at, ( ) b: at, ( ) var x: real ) : int 9.设有语言 L(G)={WaWR|W∈{a,c}*,WR 为 W 之逆},试构造产生此语言的上下文无关文法 G。 10.对下面文法 S → ( L) L→ L, S S→a L→S 给出一个翻译方案,它输出每个 a 的嵌套深度。如句子(a, (a, a) ),输出是 1 2 2。 11.什么是 Display 表?它的作用是什么? 12.如下是当前执行某个过程时的活动记录,设变量 x 的层数和偏移量分别为 L 和 Off,说 明如何访问变量 x。sp ... ... ... .... sp D 局部 Display 表13.当实参为变量,形参分别为变参和值参时,传参的区别。 14.寄存器的使用准则有哪些? 15. 设有下面基本块,试写出各临时变量的活动区间。 ( + , X, 1, T1 ) [1] ( - , A, T1, T2) [2] ( * , Y, T2, T3) [3] ( - , T3, T1, T4) [4] (? , T3, Y ) ( * ,T3, T4, T5) [5] [6](? , T5, Z ) [7] 二、设有文法 G[A]: A → iB*e B → SB|ε S → [eC]|.i C → eC|ε 判定该文法是否为 LL(1)文法?若是则给出它的 LL(1)分析表,否则说明理由。 三、设有文法 G[S]: S → LaR|R L → bR|c R →L 判断该文法是否为 LR(1)文法。若是则给出它的 LR(1)状态机以及 LR 分析表。 四、给出如下程序段的中间代码,并将其优化为最简代码形式。(中间代码的操作符可用自 身代替)。其中 A:Array of [1..10] of Array [1..10] of integer。整型变量占 1 个存储单元。 a:=1;3 while a&=10 do begin if a&&b then A[a,b]:=A[a,b]+2; a:=a+1; end第 3 部分1.写出字母表Σ = {a, b}上语言 L = {w | w 中 a 的个数是偶数}的正规式,并画出接受该 语言的最简 DFA。 2.考虑下面的表达式文法,它包括数组访问、加和赋值: E → E[E] | E + E | E = E | (E) | id 该文法是二义的。请写一个接受同样语言的 LR(1)文法,其优先级从高到低依次是数组 访问、加和赋值,并且加运算是左结合,赋值是右结合。 3.下面是产生字母表Σ = { 0, 1, 2}上数字串的一个文法: S→DSD|2 D→0|1 写一个语法制导定义,它打印一个句子是否为回文数(一个数字串,从左向右读和从右 向左读都一样时,称它为回文数) 。 4.教材上的翻译方案 P→ {offset := 0} D D→D;D D → id : T { enter(id.name, T.type, offset); offset := offset + T.width } T → integer {T.type := T.width := 4 } T→ real {T.type := T.width := 8 } 使用了变量 offset。请重写该翻译方案,它完成同样的事情,但只使用文法符号的属性, 而不使用变量。 5. 分)一个 C 语言程序如下: (5 void fun(struct {} val) { } main() { struct {} fun(val); }该程序在 X86/Linux 机器上的用 cc 命令编译时,报告的错误信息如下: 1: warning: structure defined inside parms 1: warning: anonymous struct declared inside parameter list 1: warning: its scope is only this definition or declaration, 1: warning: which is probably not what you want. 7: incompatible type for argument 1 of ‘fun’ 请问, 报告最后一行的错误的原因是什么?如何修改程序, 使得编译时不再出现这个错 误信息。 6.一个 C 语言程序如下: typedef struct _a{4
}a; typedef struct _b{ }b; main() { printf(&Size of short, long, a and b = %d,%d,%d,%d\n&, sizeof(short), sizeof(long),sizeof(a),sizeof(b)); } 该程序在 X86/Linux 机器上的运行结果如下: Size of short, long, a and b = 2, 4, 6, 8 已知 short 类型和 long 类型分别对齐到 2 的倍数和 4 的倍数。 试问, 为什么类型 b 的 size 会等于 8? 7.一个 C 语言程序如下: int fact(i) { if(i==0) return 1; else return i*fact(i-1); } main() { printf(&%d\n&, fact(5)); printf(&%d\n&, fact(5,10,15)); printf(&%d\n&, fact(5.0)); printf(&%d\n&, fact()); } 该程序在 X86/Linux 机器上的运行结果如下: 120 120 1 Segmentation fault (core dumped) 请解释下面问题: ? 第二个 fact 调用:结果为什么没有受参数过多的影响? ? 第三个 fact 调用:为什么用浮点数 5.0 作为参数时结果变成 1? ? 第四个 fact 调用:为什么没有提供参数时会出现 Segmentation fault? 8.C 语言的赋值操作并非仅对简单类型而言,例如若有类型声明 long a[100], b[100];, 则赋值 a=b 是允许的。同样,若 a 和 b 是同一类型的两个结构,则赋值 a=b 也是允许的。 用教材上第七章所给出的三地址语句, 我们能否为这种赋值产生中间代码?若你持5 肯定态度, 请你给出对应这种赋值的中间代码序列; 否则请你为这种赋值设计一种三地址语 句。你所选用或设计的三地址语句要便于目标代码的生成。 9.一个 C 程序的三个文件的内容如下: head.h: short int a = 10; file1.c: #include &head.h& main() { } file2.c: #include &head.h& 在 X86/Linux 机器上的编译命令如下: cc file1.c file2.c 编译结果报错的主要信息如下: multiple definition of ‘a’ 试分析为什么会报这样的错误。 10.按照教材上介绍的方法,把下面 C++语言的函数翻译成 C 的函数。 void zoom (GraphicalObj &obj, double zoom_factor, Point &center) { obj.translate (?center.x, ?center.y); // 将中心点移至原点(0, 0) obj.scale (zoom_factor); // 缩放 }第 4 部分二、填空题 1、从功能上说,程序语言的语句大体可分为( )语句和( )语句两大 类。 2、扫描器的任务是从( )中识别出一个个( ) 。 3、所谓最右推导是指: ( ) 。 4、语法分析最常用的两类方法是( )和( )分析法。 5、一个上下文无关文法所含四个组成部分是( ) 。 6、所谓语法制导翻译方法是( ) 。 7、符号表中的信息栏中登记了每个名字的有关的性质,如( )等等。 8、一个过程相应的 DISPLAY 表的内容为( ) 。 9、常用的两种动态存贮分配办法是( )动态分配和( )动态分配。 10、产生式是用于定义( )的一种书写规则。 四、简述题 1、考虑下面程序 ………… Var a:integer; Procedure S(X); Var X:integer; Begin a:=a+1;6 X:=a+X End; Begin a:=5; S(a); Print(a) End. 试问:若参数传递方式分别采取传名和传值时,程序执行后输出 a 的值是什么? 2、画出 Pascal 中实数(不带正负号,可带指数部分)的状态转换图。 3、写出表达式(a+b*c)/(a+b)-d 的逆波兰表示及三元式序列。 4、已知文法 G(S) S→a|∧|(T) T→T,S|S 写出句子((a,a),a)的规范归约过程及每一步的句柄。 5、何谓优化?按所涉及的程序范围可分为哪几级优化? 五、计算题 1、写一个文法,使其语言是奇数集,且每个奇数不以 0 开头。 2、设文法 G(S): S→(L)|a S|a L→L,S|S (1) 消除左递归和回溯; (2) 计算每个非终结符的 FIRST 和 FOLLOW; (3) 构造预测分析表。 3、While a>0 ∨ b<0 do Begin X:=X+1; if a>0 then a:=a-1 else b:=b+1 End; 翻译成四元式序列。 4、已知文法 G(E) E→T|E+T T→F|T * F F→(E)|i (1) 给出句型(T * F+i)的最右推导及画出语法树; (2) 给出句型(T * F+i)的短语、素短语。 5、设布尔表达式的文法为 E → E(1)∨E(2) E → E(1)∧ E(2) E→i 假定它们将用于条件控制语句中,请 (1) 改写文法,使之适合进行语法制导翻译和实现回填; (2) 写出改写后的短个产生式的语义动作。 6、设有基本块7 T1:=2 T2:=10/T T3:=S-R T4:=S+R A:=T2 * T4 B:A T5:=S+R T6:=T3 * T5 B:=T6 (1) 画出 DAG 图; (2) 假设基本块出口时只有 A,B 还被引用,请写出优化后的四元序列。第 6 部分一、 选择题 1.下面说法正确的是: A 一个正规式只能对应一个确定的有限状态自动机; B 一个正规语言可能对应多个正规文法; 2.算符优先分析与规范归约相比的优点是: A 归约速度快 B 对文法限制少 3.一个 LR(1)文法合并同心集后若不是 LALR(1)文法: A 则可能存在移进/归约冲突 B 则可能存在归约/归约冲突 C 则可能存在移进/归约冲突和归约/归约冲突 4.下面说法正确的是: A Lex 是一个词法分析器的生成器 B Yacc 是一个语法分析器 二、 问答题 问答第 1 题 将文法 G[S] 改写为等价的 G'[S],使 G'[S]不含左递归和左公共因子。 G[S]: S→SAe|Ae A→dAbA|dA|d 问答第 2 题 判断下面文法是否为 LL(1)文法,若是,请构造相应的 LL(1)分析表。 S→aD D→STe|ε T→bH|H H→d|ε 问答第 3 题 给出与正规式 R=((ab)*|b)*(a|(ba)*)a 等价的 NFA。 问答第 4 题 根据所给的 PL/0 示意程序完成下列要求。 (1) 给出 当程序执行到 A 过程体的 write(c) 语句时的栈式存储分配布局和用 Display 显示表时 A 过程最新活动记录的内容;8 (2) 说明在过程 D 中,当执行 c:=b*a;语句时,变量 c 和 b 的存取位置是如何确定 的(请填在下面的相应括号内)。 c 的存取位置=( ) b 的存取位置=( ) PL/0 示意程序为: procedure M; procedure A; begin (* A *) write(c); end (* A *) procedure Z; var a,b; procedure D begin (* D *) c:=b*a; call A; end ;(* D *) begin (* Z *) call D; end ;(* Z *) begin (*M *) call Z; end ;(* M *) begin (*main *) call M; end. (* main *) 问答第 5 题 某语言的文法 G 为: E → aTd|ε T → Eb|a 证明 G 不是 LR(0)文法而是 SLR(1)文法,请给出该文法的 SLR(1)分析表。 问答第 6 题 给出文法 G[S]的 LR(1)项目集规范族中 I0 项目集的全体项目。 G[S]为: S →D;D|D D →DB|B B →a|b 问答第 9 题 文法 G[S]为: S→V V→T | ViT T→F| T+F F→)V* |( 试给出句型 ViFi( 的短语,简单(直接)短语,句柄和最左素短语。 问答第 10 题9 下列语言或文法确切属于按乔姆斯基(Chomsky)分类的哪种类型,请填在( )内。 (1) L1={ a0n1nbdm | n&0,m &0} ( ) (2) L2={ anbncnbm | n≥0,m&0 } ( ) (3) L3={ anbmc| n≥0,m&0 } ( ) (4) G[A]:A→aB|ε B→Ab|a ( ) (5) G[E]:E→E+E|E*E|(E)|i ( ) 问答第 11 题 已知 PL/0 语言的&当型循环语句&的语法图和 EBNF 如下: 语法图: 当型循环语句 →(while)→→(do)→→ EBNF 为: &当型循环语句&::= while &条件& do &语句& 试在方框中填入相应程序(或用文字说明)以完成它的语法语义处理程序。 if sym = whilesym then begin condition([dosym] + fsys);if sym = dosym then getsym else error(×××); statement(fsys);第 7 部分一、 选择题 1.下面说法正确的是: A 一个正规文法也一定是二型文法 B 一个二型文法也一定能有一个等价的正规文法 2.文法 G[A]:A→b A→AB B→Ab B→a 是( ):10 A 二型文法 B 正规文法 3.下面说法正确的是( ): A lex 是一个词法分析器 B yacc 是一个语法分析器的生成器 4.一个 LR(1)文法合并同心集后,如果不是 LALR(1)文法必定存在( ): A 移进--归约冲突 B 归约--归约冲突 5.7.5 PL/0 语言编译程序使用递归子程序法进行语法分析,他的文法必须满足( A LL(1)文法 B SLR(1) 文法 二、 问答题 问答第 1 题某语言的拓广文法 G′为: (0) S′→S (1) S → Db|B (2) D → d|ε (3) B → Ba|ε 证明 G 不是 LR(0)文法而是 SLR(1)文法,请给出 SLR(1)分析表。 问答第 2 题 给出文法 G[S]的 LR(1)项目集规范族中 I0 项目集的全体项目。 G[S]为: S →S;V|V V →VaA|A A →b(S)| ε I0:):问答第 3 题 (7 分)(1) 给出下列 PL/0 示意程序中当程序执行到 D 过程调用 A 过程后(即执行 A 过 程体时)的栈式存储分配布局和用 Display 显示表时 A 过程最新活动记录的内容。 (2) 说明 Display 表和全局 Display 的作用。 PL/0 示意程序为: procedure A; begin (* A *) write(x); end (* A *); procedure B; const n=7; var e,g;11 procedure D; var j,k; begin (* D *) read(j,k); x:=x+j*n; call A;(* D *) begin (* B *) call D;(* B *) begin (* main *) read(x); call B; end. (* main *) 问答第 4 题 按指定类型给出下列语言的文法。 (1) L1={ candbm| n≥0,m&0 } 用正规文法。 (2) L2={ 0na 1nbmcm| n&0,m ≥0} 用二型文法。 问答第 5 题 (5 分)文法 G[S]为: S→SdT | T T→T&G | G G→(S) | a 试给出句型(SdG)&a 的短语、简单(直接)短语、句柄和最左素短语。 问答第 6 题 给出与正规式 R=(aba)*((ba)*|b)b 等价的 NFA。 问答第 7 题 将下图的 NFA 确定化为 DFA。问答第 8 题 (5 分)将文法 G[S] 改写为等价的 G'[S],使 G'[S]不含左递归和左公共因子。 G[S]: S→[A A→B]|AS B→aB|a 问答第 9 题 判断下面文法是否为 LL(1)文法,若是,请构造相应的 LL(1)分析表。 S→aD D→STe|ε12 T→bM M→bH H→M|ε第 8 部分一、 选择题目 1.一个正规语言只能对应( )? A 一个正规文法; B 一个最小有限状态自动机; 2.文法 G[A]:A→ε A→aB B→Ab B→a 是( ): A 正规文法 B 二型文法 3.下面说法正确的是( ): A 一个 SLR(1)文法一定也是 LALR(1)文法 B 一个 LR(1)文法一定也是 LALR(1)文法 4.一个上下文无关文法消除了左递归, 提取了左公共因子后是满足 LL (1) 文法的( A 必要条件 B 充分必要条件 三、问答题 问答第 1 题 将文法 G[S] 改写为等价的 G′[S],使 G′[S]不含左递归和左公共因子。 G[S]: S→bSAe | bA A→Ab | d 问答第 2 题 判断下面文法是否为 LL(1)文法,若是,请构造相应的 LL(1)分析表。 S→aH H→aMd | d M→Ab | ε A→aM | e 问答第 3 题 给出与正规式 R=(ab)*(a|b*)ba 等价的 NFA。 问答第 4 题 将下图的 NFA 确定化为 DFA。):问答第 5 题 (1)给出下列 PL/0 示意程序中当程序执行到 X 过程调用 Z 过程后(即执行 Z 过 程 体时)的栈式存储分配布局和用 Display 显示表时 Z 过程最新活动记录的内容。 (2)说明 Display 表和 DL(老 SP),RA,TOP 及全局 Display 的作用。 PL/0 示意 程序为:13 const a=80; var b,c; procedure X; procedure Z; var e,g; begin (* Z *) c:=b*a; end ;(* Z *) begin (* X *) call Z; end ;(* X *) procedure Y; begin (* Y *) call X; end ;(* y *) begin (* main *) call Y; end. (* main *) 问答第 6 题 (5 分)给出问答第 5 题 PL/0 示意程序编译到 Y 过程体时 TABLE 表的内容。 问答第 7 题 (10 分)某语言的拓广文法 G′为:(0) S′→T (1) T →aBd|ε (2) B →Tb|ε 证明 G 不是 LR(0)文法而是 SLR(1)文法,请给出 SLR(1)分析表。 问答第 8 题 (5 分)给出文法 G[S]的 LR(1)项目集规范族中 I0 项目集的全体项目。 G[S]为: S →BD|D B →aD|b D →B I0: 问答第 9 题文法 G[E]为: E→E+T|T T→T*F|F F→(E)|i 试给出句型(E+F)*i 的短语,简单(直接)短语,句柄和最左素短语。 问答第 11 题按指定类型给出下列语言的文法。 (1)L1={ anbm c| n≥0,m&0 } 用正规文法。 (2) L2={ a0n1n bdm | n&0,m &0} 用二型文法。第 9 部分二、填空题 1、 语法分析是依据语言的 规则进行的,中间代码产生是依据语言的14 规则进行的 。 等等。 2、程序语言的单词符号一般可以分为 3、语法分析器的输入是 ,其输出是 4、所谓自上而下分析法是指 。 5、如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法 是 。 。 6、对于文法 G,仅含终结符号的句型称为 7、逆波兰式 ab+c+d*e-所表达式为 。 8、一个名字的属性包括 和 。 9、对于数据空间的存贮分配,FORTRAN 采用 策略,PASCAL 采用 策略。 。 10、所谓优化是指 四、简述题 1、考虑下面程序 ........... Var i: a:array[1..2] procedure Q(b); Var b: begin i:=1;b:=b+2; i:=2;b:=b+3 E begin a[1]:=5;a[2]:=6; i:=1; Q(a[i]);print(a[1],a[2]) END. 试问:若参数传递的方式分别采用传地址和传值时,程序执行后输出 a[1], a[2]的值是什么? 2、画出 Pascal 中实数(不带正负号,可带指数部分)的状态转换图。 3、已知文法 G(S): S→a|(T) T→T,S|S 的优先关系表如下: 关系 a ( ) , a & & ( & & ) ; = & & , ; & & &请计算出该优先关系表所对应的优先函数表。 4、写出表达式(a+b)/(a-b)-a(a+b*c)的三元式序列及四元序列。 5、符号表的作用是什么?符号表的查找的整理技术有哪几种? 6、所谓 DISPLAY 表?其作用是什么? 五、计算题 1、写一个文法,使其语言是偶数集,且每个偶数不以 0 开头。15 2、已知文法 G(S): S→a|∧|(T) T→T,S|S ⑴ 给出句子(a,(a,a))的最左推导并画出语法树; ⑵ 给出句型((T,S),a)的短语、直接短语、句柄。 3、把语句 if x&0∧y&0 then z:=x+y else begin x:=x+2; y:=y+3 END; 翻译成四元式序列。 4、设某语言的 for 语句的形式为 for i:=E(1) TO E(2) do S 其语义解释为 i:=E(1); LIMIT:=E(2); again:if i&=LIMIT then BEGIN S; i:=i+1; goto again END; ⑴写出适合语法制导翻译的产生式; ⑵写出每个产生式对应的语义动作。 5、 设文法 G(S): S→S+aF|aF|+aF F→*aF|*a ⑴ 消除左递归和回溯; ⑵ 构造相应的 FIRST 和 FOLLOW 集合; ⑶ 构造预测分析表第 10 部分一选择题 1、文法 G 产生的 ⑴ 的全体是该文法描述的语言。 A.句型 B.终结符集 C. 非终结符集 D. 句子 2、若文法 G 定义的语言是无限集,则文法必然是 ⑵ : A.递归的 B.前后文无关的 C.二义性的 D.无二义性的 3、Chomsky 定义的四种形式语言文法中, 0 型文法又称为 ⑶ 文法; 1 型文法又称 为 ⑷ 文法; 2 型语言可由 ⑸ 识别。 A.短语结构文法 B.前后文无关文法 C.前后文有关文法 D.正规文法 E.图灵机 F.有限自动机 G.下推自动机 A.短语结构文法 B.前后文无关文法 C.前后文有关文法 D.正规文法 E.图灵机 F.有限自动机 G.下推自动机16 A.短语结构文法 B.前后文无关文法 C.前后文有关文法 D.正规文法 E.图灵机 F.有限自动机 G.下推自动机 4、一个文法所描述的语言是 ⑹ ;描述一个语言的文法是 ⑺ 。 A.唯一的 B.不唯一的 C.可能唯一,可能不唯一 A.唯一的 B.不唯一的 C.可能唯一,可能不唯一 5、数组的内情向量中肯定不含有数组的 ⑻ 的信息 A.维数 B.类型 C.维上下界 D.各维的界差 6、在下述的编译方法中,自底向上的方法有 ⑼ ,自顶向下的分析方法有 ⑽ 。 ①简单优先分析 ②算符优先分析 ③递归下降分析 ④预测分析技术 ⑤LR(K)分析 ⑥ SLR(k)分析 ⑦ LL(k)分析 ⑧LALR(K)分析 A.③④⑦B. ③④⑧C.①②⑧D.③④⑤⑥⑦ E.①②⑤⑥⑦F. ①②⑤⑥⑧ A.③④⑦B. ③④⑧C.①②⑧D.③④⑤⑥⑦ E.①②⑤⑥⑦F. ①②⑤⑥⑧ 二、简答题 1 . LL ( 1 )分析法对文法有哪些要求? 2 .常见的存储分配策略有几种?它们都适合于什么性质的语言? 3 .常见循环优化都有哪些项目? 4 .什么是活动记录?它主要由哪些内容构成? 三、化简文法 G[S] : S → ASe | BCaD | aD | AC A → Cb | DBS C → bC | d B → Ac D → aD 四、设 L í {a,b,c}* 是满足下述条件的符号串构成的语言: (1)若出现 a ,则其后至少紧跟两个 c ; (2)若出现 b ,其后至少紧跟一个 c 。 试构造识别 L 的最小化的 DFA ,并给出描述 L 的正规表达式。 五、已给文法 G[S] : S → SaP | Sf | P P → qbP | q 将 G[S] 改造成 LL ( 1 )文法,并给出 LL ( 1 )分析表。 六、给定文法 G[S] : S → Aa|dAb|Bb|dBa A → c B → c 构造文法 G[S] 的 LR ( 1 )分析表。 七、 8 分) 将下面的条件语句表示成逆波兰式和四元式序列: ( if a&b then x:=a+b*c else x:=b-a; 八、给定基本块: A:=3*5 B:=E+F C:=A+12 D:=E+F A:=D+12 C:=C+1 E:=E+F 假定出基本块后,只有 A 、 C 、 E 是活跃的,给出用 DAG 图完成优化后的代17 码序列。第 11 部分一、单项选择题 1. 词法分析器的输出是( ) 。 ① 字符串 ② 二元式 ③ 三元式 2. 下述方法中, ( )不是自下而上的分析方法。 ① 规范归约 ② 算符优先分析法 ③ 递归下降分析法 法 3. Σ={A, B, 0, 1}上的正规式(A | B) | B | 0 | 1)*表示( (A ) 。 ① 字符串 ② 整数 ③ 数字串 ④ 标识符 4. 句型是由( )推导出的符号串。 ① 非终结符 ② 终结符 ③ 任何符号 ④ 开始符号 5. 项目 A→α?aβ称为( ) ,其中 a∈VT。 ① 移进项 ② 归约项 ③ 待约项 ④ 接受项 6. LR 分析法的核心部分是( ) 。 ① 总控程序 ② 分析表 ③ 分析栈 ④ 可归约串 7. 把一个高级语言程序翻译成机器可执行的目标程序的工作由( )完成。 ① 汇编器 ② 解释器 ③ 编译器 ④ 预处理器 8. 编译时能进行的类型检查称为( ) 。 ① 错误检查 ② 动态检查 ③ 静态检查 ④ 随机检查 9. 若过程 P 调用过程 Q,其参数传递方式是传名,同以( )来实现。 ① 传地址 ② 传值 ③ 调用过程 P ④ 参数子程 序 10. 在一棵语法树中,仅有两层的子树叶结点的自左至右排列称为( ① 短语 ② 直接短语 ③ 句柄 三、简答题 1. 给出∑={0, 1, 2, 3, 4, 5, 6, 7, 8, 9}上正整数的正规式。 2. 下述四元式可进行哪种优化?写出优化后的四元式序列。 J:=5 A:=3 A:=8+C B:=A+C 3. 什么叫算符优先文法? 4. 数组的内情向量应包括哪些内容? 5. 分程序结构语言进行栈式存储管理时应解决哪些问题? 6. 说明参数传递的方式在 C 语言和 Pascal 语言中的体现。 四、推导题(共 10 分) 已知文法 G(S): S→SbF | F F→FaP | P P→c 1. 证明 FaPbc 是 G(S)的一个句型; 分) (3 2. 画出 FaPbc 的语法树; 分) (3 ) ④ 素短语④ 四元式 ④ LR 分析18 3. 求 FaPbc 的短语、直接短语和句柄。 分) (4 五、预测分析法(共 15 分) 已知文法 G(S): S→A | SiA A→B | A+B B→bS*|a 1. 消除 G(S)的左递归得 G'(S);(4 分) 2. 求 G'(S)各非终结符的 FIRST 和 FOLLOW 集;(5 分) 3. 构造 G'(S)的预测分析表。(6 分) 六、LR 分析法(共 15 分) 已知文法 G(S): S→aAb A→a | bSA 1. 构造 G(S)的 LR(0)项目集规范族; 分) (9 2. 构造 SLR 分析表。 分) (6 七、语义分析题(共 10 分) 将下述语句翻译成四元式序列: FOR i:=1 TO n DO IF a&b THEN x:=0 ELSE x:=x+1;第 14 部分填空题 1、编译程序逻辑结构中的分析阶段包含词法分析、 ( )和 ( ) 。综合阶段包括( )和( ) 。整个阶段 都需要与( )和( )模块联系。 2、编译程序自动生成软件一般需要( )和( ) 两种输入。 3、已知∑={a,b,c},x 是∑上的符号串,x=abc,则 x 的前缀= ( ) ; + 如果 A={0,1},则 A =( ) 。 5、符号表的作用有( )和( )两个。 6、词法分析器的作用是将( )转换为( ) 。 7、递归子程序分析法、LR(0)分析法、LL(1)分析法、SLR(1)分析法中,属于 自顶而下的分析方法有( ) 属于自底而上的分析方法有 , ( ) 。 8、对源程序出错的处理方式一般有( )和( )两种。 9、优化涉及面很广,一般可分为( )的优化和( ) 的优化。 二、解答题 1、设有文法 G[A]: A : #B# := B : B+C | C := C : C*a | a := 求 句型 #C+C*a# 的短语、简单短语和句柄。 2、设有文法 G[S]: S : a|^|(T) :=19 T : T,S | S := 请给出下列句子(a,(a,a))的最右推导,句子((a,a) (a),a)的最左推导 ( ,^, ) 已知一个 FA 如图所示,问: ① 该 FA 是 NFA 还是 DFA?为什么? ② 如果是 NFA,请将其确定化为 DFA。并将确定后的 DFA 化简。 ③ 给出化简后的 DFA 的五元式形式表示。 ? 0 b b a 1 ? b b 22、设有文法 G[S]: S : a | ^ | (T) := T : ST’ := T’ : := ,ST’| ε 求:① 所有 VN 的 First 集和 Follow 集。 ② 证明该文法是 LL(1)文法。 ① 已知文法 G[A]: A: :=aBCb B: :=BaC B: :=b C: :=c 求规范句型 abaccb、aBcb 的可归前缀。 ② 求产生式 B: :=BaC 的项目集。 ③ 已知某个状态的基本集是{ A: a△BCb ,B: := :=Ba△C },求其整个状态的内容 (即该状态的项目集) ① 给出条件语句 if a&0 then x:=x+1 else x:=x-1 的逆波兰中间代码表示. ② 给出循环语句 for i:=1 to 100 do s:=2*i 的四元式中间代码表示.第 15 部分一、 对于文法 G[S] : S → 1A | 0B | ε A → 0S | 1AA B → 1S | 0BB ⑴ (3 分 ) 请写出三个关于 G[S] 的句子; ⑵ (4 分 ) 符号串 11A0S 是否为 G [S] 的句型?试证明你的结论。 ⑶ (3 分 ) 试画出 001B 关于 G [S] 的语法树。 二、 请构造一个文法, 使其产生这样的表达式 E : 表达式中只含有双目运算符 + 、 * , 且 + 的优先级高于 * , + 采用右结合, * 采用左结合,运算对象只有标识符 i ,可以 用括号改变运算符优先级。要求给出该文法的形式化描述。 三、 (20 分 ) 设有语言 L={ α | α∈ {0,1} + ,且 α 不以 0 开头,但以 00 结尾 } 。 ⑴ 试写出描述 L 的正规表达式; ⑵ 构造识别 L 的 DFA (要求给出详细过程,并画出构造过程中的 NDFA 、 DFA 的状态转换图,以及 DFA 的形式化描述 ) 。 四、给定文法 G[S] :20 S → AB A → aB | bS | c B → AS | d ⑴请给出每一个产生式右部的 First 集; ⑵请给出每一个非终结符号的 Follow 集; ⑶请构造该文法的 LL(1) 分析表; ⑷ 什么是 LL(1) 文法?该文法是 LL(1) 文法吗?为什么? 五、给定文法 G[S] : S → SaA|a A → AbS|b ⑴请构造该文法的以 LR(0) 项目集为状态的识别规范句型活前缀的 DFA 。 ⑵请构造该文法的 LR(0) 分析表。 ⑶什么是 LR(0) 文法?该文法是 LR(0) 文法吗?为什么? ⑷什么是 SLR(1) 文法?该文法是 SLR(1) 文法吗?为什么? 六、给定下列语句: if a+b&c then x := a*(b-c) + (b*c-d)/e ⑴写出其等价的逆波兰表示; ⑵ 写出其等价的四元式序列。 七、已知下列 C 语言程序: int * f() { int a = 100; return &a; } main() { int * i = f(); char a[] = “compiler”; printf(“the result is %d\n”, *i); } 程序运行结果为: the result is 26157, 请解释为什么程序运行的结果不是期望的“ the result is 100 ”?第 16 部分不定项选择题 1.编译过程中,词法分析阶段的任务是 。 a) 识别表达式;b) 识别语言单词; c) 识别语句; d) 识别程序 2.编译程序的工作过程一般可划分为下列 5 个基本阶段:词法分析、 、代 码优化和目标代码生成。 a)出错处理;b)语义分析和中间代码生成;c)语法分析;d)表格管理; 3.设 x 是符号串,符号串的幂运算 x0= 。 a)1; b)x; c)ε; d)?; 4.编译程序中的词法分析器的输出是二元组表示的单词符号,其二元组的两个元素 。 是21 a) 单词种别; b) 单词参数; c) 单词自身的值; d) 单词数据类型; 5.设有文法 G[E]: E→E+T | T T→T*F | F F→(E) | a 句型 T+T*F+a 的素短语是 。 a)a; b)T*F; c)T; d)T+T*F; 。 6.编译过程中比较常见的中间语言有 a) 逆波兰式; b) 三元式; c) 四元式; d) 树形表示; 7.在编译程序中安排中间代码生成的目的是 。 a)便于进行存储空间的组织;b)利于目标代码优化; c)利于提高目标代码的质量;d)利于编译程序的移植; 8.局部优化是局限于一个 范围内的一种优化。 a)循环;b)函数;c)基本块;d)整个程序; 9.目标代码生成时应该着重考虑的基本问题是 。 a)如何使生成的目标代码最短;b)如何使目标程序运行所占用的空间最小; c)如何充分利用计算机寄存器,减少目标代码访问存储单元的次数;d)目标程 序运行的速度快; 程序进行翻译。 10.编译程序是对 a) 高级语言; b) 机器语言; c) 自然语言; d) 汇编语言; 选择题(下列各题只有一个正确的答案,请选择) 1、在进行算符优先的语法制导翻译时,需增加 。 符号栈;(2) 语义栈;(3) 引用单元;(4) 活跃单元; 2、有文法 G[S]: S-&aAb A-&BcA | B B-&idt |ε 。 该文法是 (1)0 型文法; (2)1 型文法; (3)2 型文法; (4)3 型文法; 3、 设有文法 G[K]: K-&K1|K0|Ka|Kc|a|b|c 下面哪一个是该文法的句子 。 (1)0 (2)abb01; (3) (4)bc10b; 三、术语解释 1、栈式存储管理; 2、SLR(1)文法; 3、语法制导翻译技术; 四、判断下述文法是二义性的。 S→ S+S | S*S | i | ( S ) 设有文法 G[S]: S aBc | bAB A aAb | b B b |ε 构造其 LL(1)分析表,并分析符号串 baabbb 是否是该文法的句子 设有文法 G[E]:22 E→(E) | ε 试判断该文法为 SLR(1)文法,并构造 SLR(1)分析表。 七、用 A,B,C,D,E,W 表示变量,T1,T2,T3,T4 表示临时变量, 有如下四元式序列构成基本 块: T1:=B+C T2:=A-T1 T3:=T2-D T4:=D+E W :=T3+T4 假设可用寄存器为 R0 和 R1,试写上述四元式序列对应的目标代码。第 17 部分一、简答题 1. 编译程序与解释程序有何区别? 2. 何谓素短语? 3. 过程调用时,主调程序与被调程序之间的信息传递有哪些方式? 4. 何谓语法制导翻译? 5. 何谓算符文法? 二、选择题 1. 描述一个语言的文法是( ) A.唯一的 B.不唯一的 C.可能唯一,也可能不唯一 2. 若文法 G 定义的语言是无限集,则文法必然是( ) A.前后文无关文法 B.正规文法 C.二义性文法 D.递归文法 3. 数组的内情向量中肯定不含数组的( )信息 A.维数 B.类型 C.各维的上下界 D.各维的界差 4. 简单优先分析每次归约的是( ) A. 最左直接短语 B.直接短语 C.最左素短语 D.控制结点 5. 最适合动态建立数据实体的内存分配方式是( ) A. 栈式分配 B.堆式分配 C.编译时预先分配 D.以上三种均可 三、给定文法 G=({S,L},{a,(,)},{S→(L)|a L→L,S|S},S)。给出句型”(S,(a))” 的推导和语法树并指出此句型的所有短语、直接短语、句柄和素短语。 四、设语言 L 是由奇数个 a 和偶数(可以是 0)个 b 组成的符号串之集。 1.构造识别 L 的 DFA;2. 给出定义 L 的正规文法; 五、将文法 G[S]:S→[A A→AS|B] B→Bi|i 改写为等价的 LL(1)文法,并给出相应的 LL(1)分析表。 六、给定文法 G[S]: S→(S)|a 1.构造识别文法 G[S]活前缀的 LR(1)项目的 DFA; 2. 构造 LR(1)分析表; 3. 合并同心集,构造 LALR(1)分析表。 七、某语言算术表达式的文法定义为 E→E+E|i| if B then E else E 其中,第三个候选式 称为条件算术表达式,B 为布尔表达式,then 及 else 后的 E 均为算术表达式(即简单算术 表达式或条件表达式),其语义为,当 B 为真时,表达式的值取 then 后的 E 的值,否则取 else 的 E 的值。假定所有表达式是整型的,试将下面关于条件算术表达式的属性翻译文法填23 写完全:八、 (给定 PASCAL 程序语句 while a&b do if a&0 then a:=a-1 else a:=a+1; 1. 将该语句翻译成逆波兰式; 2. 给出编译程序扫描到 then 处及分号处时所得的四元式序列。 九、用 DAG 图对下面的基本块进行优化(假定出基本块后只有 A、G、L 是活跃的): A=B*C D=B/C E=2*3 F=E+2 G=B*C K=E+F G=K*KL=B/C第 18 部分一、填空题:把答案填在括号里 和 一个名字的属性包括 对 于 数 据 空 间 的 存 储 分 配 , FORTRAN 采 用 策 略 , PASCAL 采 用 ( 策略 如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是 对于文法 G,仅含终结符号的句型称为 程序语言的单词符号一般可以分为 等等。 语法分析器的输入是 ,其输出是 。 扫描器的任务是从 中识别出一个个 。 语法分析最常用的两类方法是 和 分析法。 所谓语法制导翻译方法是 产生式是用于定义 的一种书写规则。 程序语言一般分为 和 两大类, 其中 通常又称为 面向机器的语言。面向机器语言指的是特定计算机系统 所固有的语言 ,其特点 是 ,在此基础上产生了与人类自然语言比较接近的 。 一个编译程序中,不仅包含词法分析、语法分析、 、 、目标代 码生成等五个部分,还应包括 。其中, 和代码优化部分不是每个 ,语法分析器则可以发现源程序中 编译程序都必需的,词法分析器用语识别24 。 二、单项选择题 三个方面。 一般程序设计语言的定义都涉及 1 语法 2 语义 3 语用 4 程序基本符号的确定 可选项有 A123 B124 C134 D234 设有文法 G[S]: S::=S*S|S+S|(S)|a 该文法( )二义性文法 A 是 B 不是 C 无法判断 设有文法 G[I]:I- I1|I0|Ia|Ic|a|b|c 下列符号串中是该文法的句子的是( ) 1ab0 2a0c01 3aaa 4bc10 可选项有 A 1 B234 C 34 D1234 编译过程中,语法分析器的任务是( ) 1 分析单词是怎样构成的 2 分析单词串是如何构成语句和说明的 3 分析语句和说明是如何构成程序的 4 分析程序的结构 A23 B 234 C 123 D1234 巴科斯-诺尔范式是一种广泛采用的( )的工具。 A 描述规则 B 描述语言 C 描述文法 D 描述句子 正则式的得“|”读作“或者” ”读作(连接)“*”读作( “。 , ) A 并且 B 或者 C 连接 D 闭包 编译程序的语法分析器接受以( )为单位的输入,并产生有关信息供以后各阶段使 用。 A 表达式 B 产生式 C 单词 D 语句 高级语言编译程序常用的语法分析方法中,递归下降分析法属于()分析法。 A 自左至右 B 自顶向下 C 自底向上 D 自右至有左 算符优先分析法每次都是对()进行归约,简单优先分析法每次都是对简单短语进行归 约。 A 最左短语 B 简单短语 C 句柄 D 素短语 E 最左素短语 三、名词解释题 遍: 无环路有向图(DAG) 语法分析-- 二义性文法-----代码优化--五、计算题: 有表达式如下: A+B*(C-D)**N(**为幂乘) 给出该表达式的逆波兰式表示(后缀式) 给出上述表达式的四元式和三元式序列的25 已知文法 G(E) E→T|E+T T→F|T *F F→(E)|i (1)给出句型(T *F+i)的最右推导及画出语法树; (2)给出句型(T *F+i)的短语、素短语 设文法 G(S): S→S+aF|aF|+aF F→*aF|*a ⑴ 消除左递归和回溯; ⑵ 构造相应的 FIRST 和 FOLLOW 集合; ⑶ 构造预测分析表26
更多搜索:
All rights reserved Powered by
文档资料库内容来自网络,如有侵犯请联系客服。}

我要回帖

更多关于 transform scale 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信