编译原理简答

合集下载

《编译原理》考试试题及答案

《编译原理》考试试题及答案

《编译原理》考试试题及答案(附录)一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。

( X )2.一个句型的直接短语是唯一的。

( X )3.已经证明文法的二义性是可判定的。

( X )4.每个基本块可用一个DAG表示。

(√)5.每个过程的活动记录的体积在编译时可静态确定。

(√)6.2型文法一定是3型文法。

( x )7.一个句型一定句子。

( X )8.算符优先分析法每次都是对句柄进行归约。

(应是最左素短语) ( X )9.采用三元式实现三地址代码时,不利于对中间代码进行优化。

(√)10.编译过程中,语法分析器的任务是分析单词是怎样构成的。

( x )11.一个优先表一定存在相应的优先函数。

( x )12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

( )13.递归下降分析法是一种自下而上分析法。

( )14.并不是每个文法都能改写成LL(1)文法。

( )15.每个基本块只有一个入口和一个出口。

( )16.一个LL(1)文法一定是无二义的。

( )17.逆波兰法表示的表达试亦称前缀式。

( )18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

( )19.正规文法产生的语言都可以用上下文无关文法来描述。

( )20.一个优先表一定存在相应的优先函数。

( )21.3型文法一定是2型文法。

( )22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。

( )二、填空题:1.( 最右推导 )称为规范推导。

2.编译过程可分为(词法分析),(语法分析),(语义分析和中间代码生成),(代码优化)和(目标代码生成)五个阶段。

3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是()。

4.从功能上说,程序语言的语句大体可分为()语句和()语句两大类。

5.语法分析器的输入是(),其输出是()。

6.扫描器的任务是从()中识别出一个个()。

编译原理简答

编译原理简答

1、给出算符优先文法的定义,算符优先表是否都存在对应的优先函数?给出优先函数的定义。

设有一不含ε产生式的算符文法G,如果对任意两个终结符对a,b之间至多只有、和h三种关系的一种成立,则称G一个算符优先文法。

算符优先关系表不一定存在对应的优先函数优先函数为文法字汇表中2、考虑文法G[T]:T→T*F|FF→F↑P|PP→(T)|i证明T*P↑(T*F)是该文法的一个句型,并指出直接短语和句柄。

首先构造T*P↑(T*F)的语法树如图所示。

句型T*P↑(T*F)的语法树由图可知,T*P↑(T*F)是文法G[T]的一个句型。

直接短语有两个,即P和T*F;句柄为P。

3、文法G[S]为:S→SdT | TT→T<G | GG→(S) | a试给出句型(SdG)<a的短语、简单(直接)短语、句柄和最左素短语。

句型(SdG)<a的短语:(SdG)<a 、(SdG)、SdG 、G 、a简单(直接)短语:G 、a句柄:G最左素短语:SdG4、目标代码有哪几种形式?生成目标代码时通常应考虑哪几个问题?三种形式:可立刻执行的机器语言代码;汇编语言程序;待装配的机器语言代码模块考虑的问题包括:每一个语法成分的语义;目标代码中需要哪些信息,怎样截取这些信息。

5、符号表的作用是什么?符号表的查找的整理技术有哪几种?作用:登记源程序中出现的各种名字及其信息,以及编译各阶段的进展状况。

主要技术:线性表,对折查找与二叉树,杂凑技术。

1、实现高级语言程序的途径有哪几种?它们之间的区别?计算机执行用于高级语言编写的程序主要有两种途径:解释和编译。

在解释方式下,翻译程序并不对高级语言进行彻底的翻译,而是读入一条语句,就解释其含义并执行,然后再读入下一条语句,再执行。

在编译方式下,翻译程序先对高级语言进行彻底的翻译并生成目标代码,然后再对目标代码进行优化,即对源程序的处理是先翻译后执行。

从速度上看,编译方式下,源程序的执行比解释方式下快,但在解释方式下,有利于程序的调试。

《编译原理》复习题(看完必过)

《编译原理》复习题(看完必过)

《编译原理》复习题(看完必过)一、单项选择题1.将编译程序分成若干个“遍”是为了( B )A.提高程序的执行效率B. 使程序的结构更加清晰C.利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2.不可能是目标代码的是( D )A.汇编指令代码 B.可重定位指令代码C.绝对指令代码 D.中间代码3.词法分析器的输入是( B )A.单词符号串 B.源程序C.语法单位 D.目标程序4.中间代码生成时所遵循的是( C )A.语法规则 B.词法规则C.语义规则 D.等价变换规则5.编译程序是对( D )A.汇编程序的翻译 B.高级语言程序的解释执行C.机器语言的执行 D.高级语言的翻译6.词法分析应遵循( C )A.语义规则 B.语法规则C.构词规则 D.等价变换规则7.词法分析器的输出结果是( C )A.单词的种别编码 B.单词在符号表中的位置C.单词的种别编码和属性值 D.单词属性值8.正规式M1和M2等价是指( C )A.M1和M2的状态数相等 B.M1和M2的有向弧条数相等C.M1和M2所识别的语言集相等 D.M1和M2状态数和有向弧条数相等9.词法分析器作为独立的阶段使整个编译程序结构更加简洁、明确,因此,( B ) A.词法分析器应作为独立的一遍B.词法分析器作为子程序较好C.词法分析器分解为多个过程,由语法分析器选择使用.D.词法分析器并不作为一个独立的阶段10.如果L(M1)=L(M2),则M1与M2( A )A .等价B .都是二义的C .都是无二义的D .它们的状态数相等 11.文法G :S →xSx|y 所识别的语言是( C )A .xyxB .(xyx)* c .x n yx n (n ≥0) d .x *yx *12.文法G 描述的语言L(G)是指( A ) A.⎭⎬⎫⎩⎨⎧∈⇒=+*,|)(T V S G L αααB .⎭⎬⎫⎩⎨⎧⋃∈⇒=+*)(,|)(N T V V S G L ααα C .⎭⎬⎫⎩⎨⎧∈⇒=**,|)(T V S G L αααD .⎭⎬⎫⎩⎨⎧⋃∈⇒=**)(,|)(N T V V S G L ααα 13.有限状态自动机能识别( C )A .上下文无关文法B .上下文有关文法C .正规文法D .短语文法14.如果文法G 是无二义的,则它的任何句子( A ) A .最左推导和最右推导对应的语法树必定相同 B .最左推导和最右推导对应的语法树可能不同 C .最左推导和最右推导必定相同D .可能存在两个不同的最左推导,但它们对应的语法树相同 15.由文法的开始符经0步或多步推导产生的文法符号序列是( C ) A .短语 B .句柄 C .句型 D .句子 16.文法G :E →E+T|T T →T*P|P P →(E)|i则句型P+T+i 的句柄为( B )A .P+TB .PC .P+T+iD .i 17.文法G :S →b|∧|(T) T →T ∨S|S 则FIRSTVT(T)=( C )A .{ b ,∧,( }B .{ b ,∧,) }C .{ b ,∧,(,∨ }D .{ b ,∧,),∨ } 18.产生正规语言的文法为( D )A .0型B .1型C .2型D .3型19.任何算符优先文法( D )优先函数。

编译原理期末总结复习

编译原理期末总结复习

编译原理期末总结复习编译原理期末总结复习篇一:一、简答题1.什么是编译程序?答:编译程序是一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序。

将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。

2.请写出文法的形式定义?答:一个文法G抽象地表示为四元组 G=(Vn,Vt,P,S)–其中Vn表示非终结符号– Vt表示终结符号,Vn∪Vt=V(字母表),Vn∩Vt=φ– S是开始符号,–P是产生式,形如:α→β(α∈V+且至少含有一个非终结符号,β∈V*)3.语法分析阶段的功能是什么?答:在词法分析的基础上,根据语言的语法规则,将单词符号串分解成各类语法短语(例:程序、语句、表达式)。

确定整个输入串是否构成语法上正确的程序。

4.局部优化有哪些常用的技术?答:优化技术1—删除公共子表达式优化技术2—复写传播优化技术3—删除无用代码优化技术4—对程序进行代数恒等变换(降低运算强度)优化技术5—代码外提优化技术6—强度削弱优化技术7—删除归纳变量优化技术简介——对程序进行代数恒等变换(代数简化)优化技术简介——对程序进行代数恒等变换(合并已知量)5.编译过程分哪几个阶段?答:逻辑上分五个阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成。

每个阶段把源程序从一种表示变换成另一种表示。

6. 什么是文法?答:文法是描述语言的语法结构的形式规则。

是一种工具,它可用于严格定义句子的结构;用有穷的规则刻划无穷的集合;文法是被用来精确而无歧义地描述语言的句子的构成方式;文法描述语言的时候不考虑语言的含义。

7. 语义分析阶段的功能是什么?答:对语法分析所识别出的各类语法范畴分析其含义,进行初步的翻译(翻译成中间代码);并对静态语义进行审查。

8.代码优化须遵循哪些原则?答:等价原则:不改变运行结果有效原则:优化后时间更短,占用空间更少合算原则:应用较低的代价取得较好的优化效果9.词法分析阶段的功能是什么?答:逐个读入源程序字符并按照构词规则切分成一系列单词任务:读入源程序,输出单词符号—滤掉空格,跳过注释、换行符—追踪换行标志,指出源程序出错的行列位置—宏展开,……10.什么是符号表?答:符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息。

编译原理答案(前三章)

编译原理答案(前三章)

编译原理答案(前三章)第 1 章引论第 1 题解释下列术语:答案:(1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。

(2)源程序:源语言编写的程序称为源程序。

(3)目标程序:目标语言书写的程序称为目标程序。

(4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。

通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符号表管理等工作。

(5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。

(6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。

第 2 题一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。

答案:一个典型的编译程序通常包含 8 个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。

其各部分的主要功能简述如下。

词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。

语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。

语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。

中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式的中间语言代码,如三元式或四元式。

中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。

目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。

表格管理程序:负责建立、填写和查找等一系列表格工作。

表格的作用是记录源程序的各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的中间结果都记录在相应的表格中。

编译原理考试试题与答案(汇总)

编译原理考试试题与答案(汇总)
其SLR(1)分析表为:
对输入串ab#给出分析过程为:
一、是非题:
1.一个上下文无关文法的开始符,可以是终结符或非终结符。 ( )
2.一个句型的直接短语是唯一的。 ( )
3.已经证明文法的二义性是可判定的。 ( )
4.每个基本块可用一个DAG表示。 ( )
5.每个过程的活动记录的体积在编译时可静态确定。 ( )
1.编译程序是对高级语言程序的解释执行。(× )
2.一个有限状态自动机中,有且仅有一个唯一的终态。(×)
3.一个算符优先文法可能不存在算符优先函数与之对应。(√ )
4.语法分析时必须先消除文法中的左递归。(×)
5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。(√)
6.逆波兰表示法表示表达式时无须使用括号。(√ )
2.考虑文法G[S]:
S → (T) | a+S | a
T → T,S | S
消除文法的左递归及提取公共左因子。
解:消除文法G[S]的左递归:
S→(T) | a+S | a
T→ST′
T′→,ST′| ε
提取公共左因子:
S→(T) | aS′
S′→+S | ε
T→ST′
T′→,ST′| ε
3.试为表达式w+(a+b)*(c+d/(e-10)+8)写出相应的逆波兰表示。
8.一个过程相应的DISPLAY表的内容为(现行活动记录地址和所有外层最新活动记录的地址)
10.常用的两种动态存贮分配办法是(栈式)动态分配和(堆式)动态分配。
11.一个名字的属性包括( 类型)和(作用域 )。
12.常用的参数传递方式有(传地址),(传值),(传名)

编译原理(龙书)课后习题解答(详细)

编译原理(龙书)课后习题解答(详细)

编译原理(龙书)课后习题解答(详细)编译原理(龙书)课后题解答第一章1.1.1 :翻译和编译的区别?答:翻译通常指自然语言的翻译,将一种自然语言的表述翻译成另一种自然语言的表述,而编译指的是将一种高级语言翻译为机器语言(或汇编语言)的过程。

1.1.2 :简述编译器的工作过程?答:编译器的工作过程包括以下三个阶段:(1) 词法分析:将输入的字符流分解成一个个的单词符号,构成一个单词符号序列;(2) 语法分析:根据语法规则分析单词符号序列中各个单词之间的关系,确定它们的语法结构,并生成抽象语法树;(3) 代码生成:根据抽象语法树生成目标程序(机器语言或汇编语言),并输出执行文件。

1.2.1 :解释器和编译器的区别?答:解释器和编译器的主要区别在于执行方式。

编译器将源程序编译成机器语言或汇编语言等,在运行时无需重新编译,程序会一次性运行完毕;而解释器则是边翻译边执行,每次执行都需要进行一次翻译,一次只执行一部分。

1.2.2 :Java语言采用的是解释执行还是编译执行?答:Java一般是编译成字节码的形式,然后由Java虚拟机(JVM)进行解释执行。

但是,Java也有JIT(即时编译器)的存在,当某一段代码被多次执行时,JIT会将其编译成机器语言,提升代码的执行效率。

第二章2.1.1 :使用BNF范式定义简单的加法表达式和乘法表达式答:<加法表达式> ::= <加法表达式> "+" <乘法表达式> | <乘法表达式><乘法表达式> ::= <乘法表达式> "*" <单项式> | <单项式><单项式> ::= <数字> | "(" <加法表达式> ")"2.2.3 :什么是自下而上分析?答:自下而上分析是指从输入字符串出发,自底向上构造推导过程,直到推导出起始符号。

编译原理试题及答案3

编译原理试题及答案3

编译原理复习题一、填空题:1、编译方式与解释方式的根本区别在于(是否生成目标代码)。

2、对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。

3、如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:(编译阶段)和(运行阶段)。

4、如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分成三个阶段:(编译阶段)、(汇编阶段)和(运行阶段)。

5、自顶向下语法分析方法会遇到的主要问题有(回溯)和((左递归带来的)无限循环)。

6、LL(k)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“k”的含义是(向输入串中查看K个输入符号)。

7、LL(1)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“1”的含义是(向输入串中查看1个输入符号)。

8、自顶向下语法分析方法的基本思想是:从(识别符号)出发,不断建立(直接推导),试图构造一个推导序列,最终由它推导出与输入符号相同的(符号串)。

9、自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行(直接归约),试图(归约)到文法的(识别符号|开始符号)。

10、LR(0)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“0”的含义是(向貌似句柄的符号串后查看0个输入符号)。

11、LR(1)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。

12、SLR(1)分析法的名字中,“S”的含义是(简单的),“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。

13、在编译过程中,常见的中间语言形式有(逆波兰表示)、(三元式)、(四元式)和(树形表示)。

编译原理考试试题

编译原理考试试题

编译原理考试试题
1. 简答题
(1)什么是编译原理?
(2)解释词法分析和语法分析的区别。

(3)描述语法制导翻译的过程。

(4)什么是上下文无关文法?
(5)解释LL和LR分析器之间的差异。

2. 分析题
对于以下文法G:
S → aB | bA
A → a | ε
B → b
进行如下操作:
(1)用LL(1)分析器分析串“ab”。

(2)用LR(1)分析器分析串“ba”。

3. 论述题
请分析编译器的工作原理并解释编译器的主要功能。

同时比较解释型语言和编译型语言之间的区别。

4. 计算题
对于文法G:
E → E + T | T
T → T * F | F
F → (E) | id
请根据该文法构建一个SLR(1)分析表并分析串“id + id * id”。

5. 应用题
假设您需要编写一个简单的编译器来编译一种自定义的编程语言。

请设计该编程语言的词法规则和语法规则,并解释如何构建一个简单的编译器来将该语言转换为目标代码。

以上为编译原理考试试题,希望能够帮助您对编译原理的相关知识有更全面的了解。

祝您考试顺利!。

编译原理例题讲解

编译原理例题讲解

简答题
• 1.何谓扫描器?扫描器的功能是什么? • 2.试简述有穷状态自动机与正则表达式的 等价性概念。 • 3.给出有限状态自动机的严格定义。
• • • •
• • • • • • • • • • •
解答 1.扫描器就是词法分析器,它接受输入的源程序,对源程序进行词法分析,识别出一 个个的单词符号,其输出结果是单词符号,供语法分析器使用。 一般把词法分析器安排成一个子程序,每当语法分析器需要一个单词符号时就调用这 个子程序。每一次调用,词法分析器就从输入串中识别出一个单词符号,把它交给语 法分析器。 词法分析器工作的第一步是输入源程序文本。输入串中一般都包含一些没有意义的字 符,如:空白符、跳格符、回车符和换行符等编辑性字符除了出现在文字常数中之外, 在别处的任何出现都没有意义,而注解部分几乎允许出现在程序中的任何地方。它们 不是程序的必要组成部分,预处理时可以将其剔掉。词法分析器一般会构造一个预处 理子程序来处理上述任务。 2.∑上的非确定有限自动机M所能识别字的全体L(M)是∑上的一个正规集;同时, 对于∑上的每个正规集V,存在一个∑上的确定有限自动机M,使得V=L(M)。 3.有限状态自动机分为确定有限状态自动机和非确定有限状态自动机两类,确定有限 自动机是非确定有限自动机的特例,但它们具有相同的表示能力。给出有限状态自动 机的定义实际上只需要给出非确定有限状态自动机的定义就可以了: 一个有限状态自动机(NFA)M是一个五元式 M=(S, S, d, S0, F) 其中 1. S是一个有限集,它的每个元素称为一个状态; 2. S是一个有穷字母表,它的每个元素称为一个输入字符; 3. d是一个从S×S*到S的子集的映照,即 d:S×S*→2S 4. S0ÍS,是一个非空初态集; 5. FÍS,是一个终态集(可空)。

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 将高级语言代码翻译成机器语言代码B. 进行程序调试C. 进行代码优化D. 管理程序运行时的内存分配答案:A2. 词法分析器的主要任务是什么?A. 将源代码分解成多个语句B. 将源代码分解成多个词素C. 检查源代码的语法正确性D. 将词素转换为相应的语法单位答案:B3. 下列哪个是自顶向下的语法分析方法?A. LL(1)分析法B. LR(1)分析法C. LALR(1)分析法D. GLR分析法答案:A4. 语义分析的主要任务是什么?A. 检查程序的语法正确性B. 检查程序的类型正确性C. 将源代码转换为目标代码D. 进行程序的优化答案:B5. 代码生成阶段的主要任务是什么?A. 将语法树转换为目标代码B. 进行程序的优化C. 检查程序的类型正确性D. 将源代码分解成多个词素答案:A二、简答题1. 简述编译过程的主要阶段。

答案:编译过程主要分为四个阶段:词法分析、语法分析、语义分析和代码生成。

词法分析将源代码分解成词素,语法分析检查源代码的语法结构,语义分析检查源代码的语义正确性,代码生成将源代码转换为目标代码。

2. 什么是中间代码?它在编译过程中起到什么作用?答案:中间代码是一种介于源代码和目标代码之间的代码形式,它通常具有更接近于机器语言的特性,但仍然保持一定的抽象级别。

中间代码在编译过程中起到桥梁的作用,它使得代码优化和目标代码生成更加方便和高效。

三、论述题1. 论述编译器优化的几种常见方法。

答案:编译器优化主要包括以下几种方法:常量折叠、死代码消除、公共子表达式消除、循环优化、代码内联、寄存器分配等。

这些优化方法可以提高程序的执行效率,减少资源消耗,提高程序的运行速度。

结束语:本试题涵盖了编译原理的基本知识点,包括编译器的功能、编译过程的主要阶段、中间代码的作用以及编译器优化的方法。

希望考生能够通过本试题加深对编译原理的理解和掌握。

编译原理小题答案解析

编译原理小题答案解析

《编译原理》常见题型一、填空题1.编译程序的工作过程一般可以划分为词法分析,语法分析,中间代码生成______ ,,代码优化(可省)_,目标代码生成等几个基本阶段。

2.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序—,则其翻译程序称为编译程序.3.编译方式与解释方式的根本区别在于是否生成目标代码__________5.对编译程序而言,输入数据是源程序_______ ,输出结果是目标程序7.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。

8.一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括一表格处理和出错处理—。

其中,词法分析器用于识别单词一。

10.一个上下文无关文法所含四个组成部分是一组终结符号_________ 、, 一组非终结符号―、一个开始符号、一组产生式___________ 。

12.产生式是用于定义语法成分______ 的一种书写规则。

13.设G[S]是给定文法,则由文法G所定义的语言14)可描述为:L(G)= {x| S=>*x.x£ VT*} 。

*14.设G是一个给定的文法,S是文法的开始符号,如果5n x (其中x£V*),则称x是文法的一个.句型。

*15.设G是一个给定的文法,S是文法的开始符号,如果5n x(其中x£V T*),则称x是文法的一个句子一。

16.扫描器的任务是从源程序中识别出一个个单词符号_________ 。

17.语法分析最常用的两类方法是自上而下一和自下而上分析法。

18.语法分析的任务是识别给定的终结符串是否为给定文法的句子_。

19.递归下降法不允许任一非终结符是直接上—递归的。

20.自顶向下的语法分析方法的关键是如何选择候选式________ 的问题。

21.递归下降分析法是自.顶向下分析方法。

22.自顶向下的语法分析方法的基本思想是:从文法的开始符号—开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子—,使之与给定的输入串匹配。

编译原理试题及答案

编译原理试题及答案

参考答案一、单项选择题(共10小题,每小题2分,共20分)1.语言是A .句子的集合B .产生式的集合C .符号串的集合D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析C .词法分析、语法分析、语义分析和中间代码生成D .词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左 A .非终结符号 B .短语 C .句子 D .直接短语4.下推自动机识别的语言是A .0型语言B .1型语言C .2型语言D .3型语言5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即A . 字符B .单词C .句子D .句型6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0⊂L 1⊂L 2⊂L 3B .L 3⊂L 2⊂L 1⊂L 0C .L 3=L 2⊂L 1⊂L 0D .L 0⊂L 1⊂L 2=L 3 7.词法分析的任务是 A .识别单词B .分析句子的含义C .识别句子D .生成目标代码 8.常用的中间代码形式不含装 订 线A.三元式B.四元式C.逆波兰式D.语法树9.代码优化的目的是A.节省时间B.节省空间C.节省时间和空间D.把编译程序进行等价交换10.代码生成阶段的主要任务是A.把高级语言翻译成汇编语言B.把高级语言翻译成机器语言C.把中间代码变换成依赖具体机器的目标代码D.把汇编语言翻译成机器语言二、填空题(本大题共5小题,每小题2分,共10分)1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。

2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。

3.通常把编译过程分为分析前端与综合后端两大阶段。

词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。

4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即(静态存储分配)方案和(动态存储分配)方案。

编译原理题库——简答题

编译原理题库——简答题
7解:
G(S):A→2∣4∣6∣8∣D
B→A∣0
C→CB∣A
D→1∣3∣5∣7∣9
S→CD∣D
8解:
(1)最左推导为:
E => E+T => T+T => F+T => i+T => i+T*F => i+F*F => i+i*F => i+i*i
E => T => T*F => F*F => i*F => i*(E) => i*(E+ T) => i*(T+ T)
即有(L(A)∪L(B))*=L((A*B*))* ③
111 (j,_,_,108)
112 (j,_,_,100)
113
5答:证明:
由文法G[S]:S→aSb|Sb|b,对句子aabbbb对应的两棵语法树为:
因此,文法G[S]为二义文法。
编译原理B
1.什么是句子? 什么是语言 ?
2. 写一文法,使其语言是偶正整数的集合,要求:
(1)允许0打头;
(2) 不允许0打头。
P:
S->PD|D
P->NP|N
D->0|2|4|6|8
N->0|1|2|3|4|5|6|7|8|9
(2)G[S]=({S,P,R,D,N,Q },{0,1,2,…,9},P,S)
P:
S->PD|P0|D
P->NR|N
R->QR|Q
D->2|4|6|8
N->1|2|3|4|5|6|7|8|9
Q->0|1|2|3|4|5|6|7|8|9

编译原理复习题(含试卷)

编译原理复习题(含试卷)

*编译原理复习题一.简答题:1) 什么是句子? 什么是语言?解答:句子——设G 是一个给定的文法,S 是文法的开始符号,如果S x (其中x ∈V T *),则称x 是文法的一个句子。

语言——语言是句子的集合。

或——设G[S]是给定文法,则由文法G 所定义的语言L(G)可描述为:L(G)={x │Sx,x ∈V T *} 。

2) DFA 与NFA 有何区别 ?解答:DFA 与NFA 的区别表现为两个方面:一是NFA 可以有若干个开始状态,而DFA 仅只有一个开始状态。

另一方面,DFA 的映象M 是从K ×∑到K ,而NFA 的映象M 是从K ×∑到K 的子集,即映象M 将产生一个状态集合(可能为空集),而不是单个状态。

3) 自顶向下的语法分析方法的基本思想是什么?解答:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。

4) 自底向上的语法分析方法的基本思想是什么?解答:从给定的输入串(终结符串)开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。

5) 一个上下文无关文法G 包括哪四个组成部分?解答:一组非终结符号,一组终结符号,一个开始符号,以及一组产生式。

6) 在自底向上的语法分析方法中,分析的关键是什么?解答:关键是寻找句柄。

7)在自顶向下的语法分析方法中,分析的关键是什么?解答:关键是选择候选式。

8)什么是属性文法?答:是在上下文无关文法的基础上,为每个文法符号(含终结符和非终结符)配备若干个属性值,对文法的每个产生式都配备了一组属性计算规则(称为语义规则)。

在语法分析过程中,完成语义规则所描述的动作,从而实现语义处理。

一个属性文法形式的定义为一个三元组AG,AG=(G,V,E)。

其中G为一个上下文无关文法;V为属性的有穷集;E为一组语义规则。

9)语法制导翻译语法制导翻译:定义翻译所必须的语义属性和语义规则,一般不涉及计算顺序。

《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。

(×)2.一个有限状态自动机中,有且仅有一个唯一的终态。

(×)3.一个算符优先文法可能不存在算符优先函数与之对应。

(√ )4.语法分析时必须先消除文法中的左递归。

(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点. (√)6.逆波兰表示法表示表达式时无须使用括号。

(√ )7.静态数组的存储空间可以在编译时确定。

(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。

(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。

(× )10.一个语义子程序描述了一个文法所对应的翻译工作. (×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.词法分析器的输出结果是_____.A.()单词的种别编码B.()单词在符号表中的位置C.() 单词的种别编码和自身值D.( )单词自身值2.正规式M 1 和M 2 等价是指_____。

A.() M1和M2的状态数相等B.()M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( )M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____.A.( )xyx B.() (xyx)*C.( ) xnyxn(n≥0)D.( )x*yx*4.如果文法G是无二义的,则它的任何句子α_____。

A.( )最左推导和最右推导对应的语法树必定相同B.( )最左推导和最右推导对应的语法树可能不同C.() 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。

编译原理复习题(含考试)

编译原理复习题(含考试)

编译原理复习题(含考试)————————————————————————————————作者:————————————————————————————————日期:*编译原理复习题一.简答题:1) 什么是句子? 什么是语言?解答:句子——设G 是一个给定的文法,S 是文法的开始符号,如果S x (其中x ∈V T *),则称x 是文法的一个句子。

语言——语言是句子的集合。

或——设G[S]是给定文法,则由文法G 所定义的语言L(G)可描述为:L(G)={x │Sx,x ∈V T *} 。

2) DFA 与NFA 有何区别 ?解答:DFA 与NFA 的区别表现为两个方面:一是NFA 可以有若干个开始状态,而DFA 仅只有一个开始状态。

另一方面,DFA 的映象M 是从K ×∑到K ,而NFA 的映象M 是从K ×∑到K 的子集,即映象M 将产生一个状态集合(可能为空集),而不是单个状态。

3) 自顶向下的语法分析方法的基本思想是什么?解答:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。

4) 自底向上的语法分析方法的基本思想是什么?解答:从给定的输入串(终结符串)开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。

5) 一个上下文无关文法G 包括哪四个组成部分?解答:一组非终结符号,一组终结符号,一个开始符号,以及一组产生式。

6) 在自底向上的语法分析方法中,分析的关键是什么?解答:关键是寻找句柄。

7) 在自顶向下的语法分析方法中,分析的关键是什么? 解答:关键是选择候选式。

8)什么是属性文法?答:是在上下文无关文法的基础上,为每个文法符号(含终结符和非终结符)配备若干个属性值,对文法的每个产生式都配备了一组属性计算规则(称为语义规则)。

在语法分析过程中,完成语义规则所描述的动作,从而实现语义处理。

编译原理试题及答案

编译原理试题及答案

编译原理试题一、填空题1、汇编程序将________翻译成________;编译程序将________翻译成________。

2、编译程序工作工程可以划分为______、______、______、______和______等5个基本阶段,同时还会伴有______和______。

3、对编译程序而言,输入数据是______,输出数据是______。

4、已知文法G[E]:E—>T|E+T|E—F,T-〉F|T*F|T/F,F->(E)|I,(“,”是间隔符号,不是文法中的符号)。

该文法的开始符号(识别字符)是______,终结符号集合V T是______,非终结符号结合V N是______,句型T+T*F+i的短语有____________。

该文法消除直接左递归,改写后的文法为E->________,T ->________,F-〉________。

5、Chomsky定以来寺中形式语言的文法分别为:________文法(又称________文法)、________文法(又称________文法)、________文法(又称________文法)、________文法(又称________文法)。

6、编译过程中扫描器所完成的任务是从________中识别出一个个具有________。

7、确定的有穷自动机是一个________,通常表示为________.8、LL(k)分析中,第一个L的含义是________,第二个L的含义是________,“k"的含义是________。

9、LL(1)分析中,第一个L的含义是________,第二个L的含义是________,“1”的含义是________.10、LR(0)分析中,“L"的含义是________,“R”的含义是________,“0”的含义是________。

11、SLR(1)分析中,“L”的含义是________,“R”的含义是________,“1”的含义是________。

编译原理 简答题

编译原理 简答题

简答题1.什么是上、下文无关文法?它是由几部分组成的?答:上、下文无关文法所定义的语法范畴,是完全独立于这种范畴可能出现的环境的。

它由四部分组成:一组终结符号,一组非终结符号,一个开始符号和一组产生式。

2.简述正规式和有限自动机的关系。

答:上的非确定有限自动机M所能识别字的全体L(M)是上的一个正规集。

对于上的每个正规集V,存在一个上的确定有限自动机M,使得V=L(M)。

3.简述NFA和DFA的区别。

答:①DFA初态是唯一的,NFA可以有多个初态。

②DNF是单值函数,NFA是多值函数。

③DFA每个弧线用中一个不同输入字符做标记,而NFA每条弧用中的一个字做标记。

4.何为递归下降分析法。

答:在不含左递归和每个非终结符的所有的首符集都两两不想交的条件下。

我们就可以构造一个不带回溯的的自上而下的分析程序。

该程序是由一组递归过程组成的。

每个过程对应文法的一个非终结符。

这种语法分析的方法称为文法递归下降分析法。

5.什么叫做递归下降分析器?答:当一个文法满足 LL(1)条件时,我们就可以为它构造一个不带回溯的自上而下分析程序,这个分析程序是由一组递归过程组成的,每个过程对应文法的一个非终结符,这样的一个分析程序称为递归下降分析器。

6.语法分析方法如何分类,它们面对的主要问题是什么?答:语法分析方法分为自下而上的分析法和自上而下的分析法。

自上而下分析法的主要问题是:消除文法的左递归以及由文法开始符号出发推导句子的过程中如何避免回溯。

自下而上分析法的主要问题是:在由输入串出发向文法的开始符号规约的过程中。

如何确定可规约子串。

7.何为中间语言,简述它的作用。

答:中间语言是一种面向语法。

其复杂性介于用高级语言书写的源程序和用机器语言表示的目标程序之间。

是一种易于翻译成目标代码的代码形式。

它的作用在于利用它作为中间环节。

不仅可以较快的实现源程序的翻译过程而且可以在此基础上应用优化方法将源程序翻译成运行时间短,占用内存少的目标程序。

编译原理_简答题

编译原理_简答题
编译程序的实现应考虑的问题有那些?
答案:
编译程序的实现应考虑:开发周期、目标程序的效率、可移植性、可调试性、可维护
性、可扩充性等。
编译程序和高级语言有什么区别?
答:用汇编语言或高级语言编写的程序,必须先送入计算机,经过转换成用机器
语言表示的目标程序(这个过程即编译),才能由计算机执行。执行转换过程
的程序叫编译程序。汇编程序是指没有编译过的汇编语言源文件。编译程序转
编译程序大致有哪几种开发技术?
答案:
(1)自编译(2)交叉编译(3)自展(4)移植:
编译程序的工作分为那几个阶段?
答:词法分析、语法分析和语义分析是对源程序进行的分析(称为编译程序的前端),而中间代码生成、代码优化和代码生成三个阶段合称为对源程序进行综合(称为
编译程序的后端),它们从源程序的中间表示建立起和源程序等价的目标程序。
开始符号;或者说从语法树的末端开始,步步向上“归约”,直到根节点。
决定目标代码的因素有哪些?
答案:
决定目标代码的因素主要取决于具体的机器结构、指令格式、字长及寄存器的个数和种
类,并与指令的语义和所用操作系统、存储管理等都密切相关。又由于目标代码的执行效率
在很大程度上依赖于寄存器的使用,所以目标代码与寄存器的分配算法也有关。
计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?
答案:
计算机执行用高级语言编写的程序主要途径有两种,即解释与编译。
像Basic之类的语言,属于解释型的高级语言。它们的特点是计算机并不事先对高级语言进行全盘翻译,将其变为机器代码,而是每读入一条高级语句,就用解释器将其翻译为一条机器代码,予以执行,然后再读入下一条高级语句,翻译为机器代码,再执行,如此反复。总而言之,是边翻译边执行。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、给出算符优先文法的定义,算符优先表是否都存在对应的优先函数给出优先函数的定义。

设有一不含ε产生式的算符文法G,如果对任意两个终结符对a,b之间至多只有、和h三种关系的一种成立,则称G一个算符优先文法。

算符优先关系表不一定存在对应的优先函数优先函数为文法字汇表中2、考虑文法G[T]:T→T*F|FF→F↑P|PP→(T)|i证明T*P↑(T*F)是该文法的一个句型,并指出直接短语和句柄。

首先构造T*P↑(T*F)的语法树如图所示。

句型T*P↑(T*F)的语法树由图可知,T*P↑(T*F)是文法G[T]的一个句型。

直接短语有两个,即P和T*F;句柄为P。

3、文法G[S]为:S→SdT | TT→T<G | GG→(S) | a试给出句型(SdG)<a的短语、简单(直接)短语、句柄和最左素短语。

句型(SdG)<a的短语:(SdG)<a 、(SdG)、SdG 、G 、a简单(直接)短语:G 、a句柄:G最左素短语:SdG4、目标代码有哪几种形式生成目标代码时通常应考虑哪几个问题三种形式:可立刻执行的机器语言代码;汇编语言程序;待装配的机器语言代码模块考虑的问题包括:每一个语法成分的语义;目标代码中需要哪些信息,怎样截取这些信息。

5、符号表的作用是什么符号表的查找的整理技术有哪几种作用:登记源程序中出现的各种名字及其信息,以及编译各阶段的进展状况。

主要技术:线性表,对折查找与二叉树,杂凑技术。

1、实现高级语言程序的途径有哪几种它们之间的区别计算机执行用于高级语言编写的程序主要有两种途径:解释和编译。

在解释方式下,翻译程序并不对高级语言进行彻底的翻译,而是读入一条语句,就解释其含义并执行,然后再读入下一条语句,再执行。

在编译方式下,翻译程序先对高级语言进行彻底的翻译并生成目标代码,然后再对目标代码进行优化,即对源程序的处理是先翻译后执行。

从速度上看,编译方式下,源程序的执行比解释方式下快,但在解释方式下,有利于程序的调试。

2、文法G[S]为:S->Ac|aBA->abB->bc该文法是否为二义的为什么对于串abc(1)S=>Ac=>abc(2)S=>aB=>abc即存在两不同的最右推导所以,该文法是二义的。

3、将文法G[S] 改写为等价的G'[S],使G'[S]不含左递归和左公共因子。

G[S]:S→SAe|AeA→dAbA|dA|d文法G[S] 改写为等价的不含左递归和左公共因子的G'[S]为:S →AeS'S' →AeS'|εA →dA'A' →AB|εB →bA |ε4、证明LL(1)文法是无二义性文法证明:LL(1)文法中任意两个产生式Pi ,Pj,(Pi,Pj具有相同的左部非终极符)Predict(Pi ) ∩Predict(Pj) 为空设Pi: A→α1α2…αnPj : A→α11α21…αm1(A∈VN , α1α2…αn, α11α21…αm1∈ VN∪VT)因为Predict(Pi ) ∩Predict(Pj) 为空,因此 Pi,Pj中的A经一步推导,最左的终极符肯定不同,因此,对于一个字符串,不可能有两种方法推导。

5、文法G[S]为:S->Ac|aBA->abB->bc写出L(G[S])的全部元素S=>Ac=>abc或S=>aB=>abc所以L(G[S])={abc}1、解释什么是推导我们称αAβ直接推出αγβ,即αAβTαγβ,仅当A→ γ是一个产生式,且α、β∈(VN ∪VT)*。

如果α1α2…αn,则我们称这个序列是从α1至α2的一个推导。

若存在一个从α1αn 的推导,则称α1可推导出αn。

推导是归约的逆过程。

2、将文法G[S] 改写为等价的G′[S],使G′[S]不含左递归和左公共因子。

G[S]: S→bSAe | bAA→Ab | d文法G[S] 改写为等价的不含左递归和左公共因子的G'[S]为:S→bBB→SAe | AA→d A'A' →bA' | ε3、写出Pascal 或C语言的字母表。

pascal语言的字母表是:{0,1,……,9}∪{a,……,z}∪{A,……,Z}∪{+,-,*,/,\,↑,,,_,(,),[,],;,:,=,<,>,',",Enter,Space,Tab}C语言的字母表是:_, 0……9, a……z, A……Z, +, -, *, /, \, %, (, ), [, ], ., &, |, !, =, #, {, }, ’, ”, , :,<,>, Enter,Space,Tab4、有文法G[Z]:Z→aZbZ|aZ|a该文法是否是二义的,试证明之。

对于句子aaaba,画出二棵不同的语法树,因而是二义的。

5、LL ( 1 )分析法对文法有哪些要求LL(1)分析法对文法的要求是:对于G的每个非终结符A的任何两个不同产生式A->α|β,有下述条件成立:First(α)∩ First(β)=Ф若β=*>ε,则First(α)Follow(A)=Ф1、解释编译程序中“遍”的概念,何谓“单遍扫描”遍指编译程序对源程序或中间代码程序从头到尾扫描一次对于源程序或中间代码程序,从头到尾扫描一次并完成所规定的工作称为一遍。

单遍扫描是编译程序的一种极端情形。

在这种情形下,整个编译程序同时驻留在内存中,编译程序的各部门之间采用“调用转接”方式连接在一起。

2、设有文法G[S]为:S→a|b|(A)A→SdA|S给出句型(SdSdS)的短语、简单短语、句柄、素短语和最左素短语。

短语:S,SdS,SdSdS,(SdSdS)简单短语(即直接短语):S句柄(即最左直接短语):S素短语:SdS,它同时也是该句型的最左素短语。

图5-7-3 句型(SdSdS)的语法树3、写出表达式A+B*(C-D)+E/(C-D)*N的逆波兰表示及三元式序列。

(1)(_, C,D)(2) (*,B,(1))(3) (+,A,(2))(4) (_,C,D)(5) (/,E,(4))(6) (*,N,(5))(7)(+,(3),(6))4、画出编译程序的总体结构图。

编译程序的总框图见下图。

5、给出0,1,2,3型文法的定义。

乔姆斯基(chomsky)把文法分成类型,即0型,1型,2型和3型,0型强于1型,1型强于2型,2型强于3型。

如果它的每个产生式α->β的结构是α∈(Vn UVt)*且至少含有一个非终结符,而β∈(Vn UVt)*,我们说G=(Vt,VN,S,δ)是一个0型文法。

0型文法也称短语文法。

一个非常重要的理论结果是,0型文法的能力相当于图灵(Tunring)机。

或者说,任何0型语言都是递归可枚举的;反之,递归可枚举集必定是一个0型语言。

如果把0型文法分别加上以下的第i条限制,则我们就得i型文法为:1.G的任何产生式α->β均满足|α|<=|β|;仅仅S->ε例外,但S不得出现在任何产生式的右部。

2.G的任何产生式为A->β,A∈Vn ,β∈(VnUVt)*3.G的任何产生式为A->aB或A->a,其中A,B∈Vn1型文法也称上下文有关文法。

这种文法意味着,对非终结符进行替换时务必考虑上下文,而且,—般不允许替换成空串。

2型文法对非终结符进行替换时无须考虑上下文,3型文法也称线性文法。

1、什么是规范推导每个句型都有规范推导吗规范推导就是最右推导每一个句子都有一个规范推导,而每一个句型则不一定都有规范推导,比如说采用非规范推导得到的句型。

2、已知文法G[E]:E→ET+|T T→TF* | F F→F^ | a试证:FF^^*是文法的句型,指出该句型的短语、简单短语和句柄。

该句型对应的语法树如下:该句型相对于E的短语有FF^^*;相对于T的短语有FF^^*,F;相对于F的短语有F^;F^^;简单短语有F;F^;句柄为F.3、写出表达式w+(a+b)*(c+d/(e-10)+8)的逆波兰表示及三元式序列。

(1)(+,a,b)(2) (-,e,10)(3) (/,d,(2))(4) (+,c,(3))(5) (+,(4),8)(6) (*,(1),(5))(7) (+,w,(6))4、何谓优化按所涉及的程序范围可分为哪几级优化所谓优化,一般是指为提高目标程序的质量而进行的各项工作,即对程序或中间代码进行各种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。

在源程序级在语义动作的设计上在中间代码级在目标代码级5、简述自顶向下分析法。

从识别符号出发,不断建立直接推导,试图构造一个推导序列,最终由它推导出与输入符号串相同的符号串。

从语法树角度看,自顶向下分析过程是以识别符号为根结点,试图向下构造一棵语法树,使其末端结点符号串正好与输入符号串相同。

1、计算机执行用高级语言编写的程序有那些途径它们之间的主要区别是什么计算机执行用于高级语言编写的程序主要有两种途径:解释和编译。

在解释方式下,翻译程序并不对高级语言进行彻底的翻译,而是读入一条语句,就解释其含义并执行,然后再读入下一条语句,再执行。

在编译方式下,翻译程序先对高级语言进行彻底的翻译并生成目标代码,然后再对目标代码进行优化,即对源程序的处理是先翻译后执行。

从速度上看,编译方式下,源程序的执行比解释方式下快,但在解释方式下,有利于程序的调试。

2、编译程序的实现途径有那些编译程序的实现途径可有:- 手工构造:用机器语言、汇编语言或高级程序设计语言书写。

- 自动构造工具:Lex,Yacc。

Lex ,Yacc分别是词法和语法分析器的生成器。

- 移植方式:目标程序用中间语言- 自展方式:用T型图表示3、文法G[E]为: E→E+T|TT→T*F|FF→(E)|i试给出句型(E+F)*i的短语,简单(直接)短语,句柄和最左素短语。

短语有: (E+F)*i ,(E+F) ,E+F ,F ,i简单(直接)短语有: F ,i句柄是: F最左素短语是: E+F4、有人认为:“1型文法对规则的限制比2型文法对规则的限制要多一些”,这种说法对吗文法是严格按照规则的形式来分类的1型文法的规则是:xUy->xuy u∈Vu∈V+ x,y∈V*n要求将U替换为u时,U的前后一定要有x和y。

而2型文法的规则形式为u∈V*U->u u∈Vn没有什么要求,似乎1型的规则限制要多一些。

但仔细看看1型规则中的条件x 和y时,就不难发现当x和y为空时,正好是2型文法。

从0型文法到3型文法,是依次增加对文法的限制,所以描述的语言集合越来越小。

相关文档
最新文档