编译原理作业题整理
编译原理习题及答案(整理后)

第一章1、将编译程序分成若干个“遍”就是为了。
a.提高程序得执行效率b.使程序得结构更加清晰c.利用有限得机器内存并提高机器得执行效率d.利用有限得机器内存但降低了机器得执行效率2、构造编译程序应掌握。
a.源程序b.目标语言c.编译方法d.以上三项都就是3、变量应当。
a.持有左值b.持有右值c.既持有左值又持有右值d.既不持有左值也不持有右值4、编译程序绝大多数时间花在上。
a.出错处理b.词法分析c.目标代码生成d.管理表格5、不可能就是目标代码。
a.汇编指令代码b.可重定位指令代码c.绝对指令代码d.中间代码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、编译程序各阶段得工作都涉及到。
a.语法分析b.表格管理c.出错处理d.语义分析e.词法分析2、编译程序工作时,通常有阶段。
a.词法分析b.语法分析c.中间代码生成d.语义检查e.目标代码生成三、填空题1、解释程序与编译程序得区别在于。
2、编译过程通常可分为5个阶段,分别就是、语法分析、代码优化与目标代码生成。
3、编译程序工作过程中,第一段输入就是,最后阶段得输出为程序。
4、编译程序就是指将程序翻译成程序得程序。
单选解答1、将编译程序分成若干个“遍”就是为了使编译程序得结构更加清晰,故选b。
2、构造编译程序应掌握源程序、目标语言及编译方法等三方面得知识,故选d。
3、对编译而言,变量既持有左值又持有右值,故选c。
4、编译程序打交道最多得就就是各种表格,因此选d。
5、目标代码包括汇编指令代码、可重定位指令代码与绝对指令代码3种,因此不就是目标代码得只能选d。
编译原理习题及答案(整理后)

第一章1、将编译程序分成若干个“遍”是为了。
b.使程序的结构更加清晰2、构造编译程序应掌握。
a.源程序b.目标语言c.编译方法3、变量应当。
c.既持有左值又持有右值4、编译程序绝大多数时间花在上。
d.管理表格5、不可能是目标代码。
d.中间代码6、使用可以定义一个程序的意义。
a.语义规则7、词法分析器的输入是。
b.源程序8、中间代码生成时所遵循的是- 。
c.语义规则9、编译程序是对。
d.高级语言的翻译10、语法分析应遵循。
c.构词规则二、多项选择题1、编译程序各阶段的工作都涉及到。
b.表格管理c.出错处理2、编译程序工作时,通常有阶段。
a.词法分析b.语法分析c.中间代码生成e.目标代码生成三、填空题1、解释程序和编译程序的区别在于是否生成目标程序。
2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。
3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。
4、编译程序是指将源程序程序翻译成目标语言程序的程序。
一、单项选择题1、文法G:S→xSx|y所识别的语言是。
a. xyxb. (xyx)*c.x n yx n(n≥0) d. x*yx*2、文法G描述的语言L(G)是指。
a. L(G)={α|S+⇒α , α∈V T*}b. L(G)={α|S*⇒α, α∈V T*}c. L(G)={α|S*⇒α,α∈(V T∪V N*)} d. L(G)={α|S+⇒α, α∈(V T∪V N*)}3、有限状态自动机能识别。
a. 上下文无关文法b. 上下文有关文法c.正规文法d. 短语文法4、设G为算符优先文法,G 的任意终结符对a、b有以下关系成立。
a. 若f(a)>g(b),则a>bb.若f(a)<g(b),则a<bc. a~b都不一定成立d. a~b一定成立5、如果文法G是无二义的,则它的任何句子α。
a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同6、由文法的开始符经0步或多步推导产生的文法符号序列是。
编译原理练习题

《编译原理》练习题一一、填空题(每空1分)1.设G [S ]是一个文法,我们把能由文法的 开始符号s 推导出来的符号串α称为G 的一个句型。
当句型α仅由 终结符号 组成时 (即α∈V T *),则将它称为G 产生的句子。
2.从某一给定的状态q 出发,仅经过若干条 标记为 ε 的矢线所能达到的状态所组成的集合称为ε-CLOSURE(q)。
3.设G=(V N ,V T ,P,S)是一文法,我们说G 中的一个符号X ∈V N ∪V T 是有用的,是指X 至少出现在 一个句子 的推导过程中,否则,就说X 是无用的。
我们将不含形如A→A 的产生式和不含无用符号及无用产生式的文法称为 已化简的文法 。
4.我们常采用形如 (class, value)的二元式作为一个单词的 内部表示 。
其中,class 是一个整数,用来指示该单词的 类别 ,value 则是单词之值。
5.一个文法G[S]可表示成形如 ( V N ,V T ,P,S ) 的四元式。
其中V N ,V T ,P 均为非空的有限集,分别称为非终结符号集、终结符号集和产生式集, S ∈V N 为文法的开始符号。
此外,将出现在各产生式左部和右部的一切符号所组成的集合称为 字汇表 ,记作V 。
显然,V=V N ∪V T ,V N ∩V T =∅。
6.通常,可通过两种途径来构造词法分析程序。
其一是根据对语言中各类单词的某种描述或定义,用 手工的方式 构造词法分析程序;另外一种途径是所谓词法分析程序的 自动生成 。
7.设G 为一文法,A→α是G 的一个产生式,如果α具有υAδ的形式,其中υ,δ不同时为ε,则称产生式A→α是 直接递归的 。
若存在推导δυαA A *⇒⇒,则称产生式A→α是 递归的 。
8.设M=(K,Σ,f,S 0,Z)为一DFA ,并设s 和t 是M 的两个不同状态,我们说状态s,t 为某一输入串w 所区分 ,是指从s,t 中之一出发,当扫视完w 之后到达M 的终态,但从其中的另一个状态出发,当扫视完同一个w 后而进入 非终态 。
编译原理练习题4答案

编译原理练习题4一、选择题1. 在编译过程中,词法分析器的任务是将()转换为单词符号。
A. 源程序B. 字符串C. 字符D. 代码A. 词法分析B. 语法分析C. 代码D. 程序调试3. 形式语言中的文法G[S]:S→aSb | ab,该文法产生的语言是()。
A. {a^n b^n | n≥0}B. {a^n b^n+1 | n≥0}C. {a^n b^n |n≥1} D. {a^n b^n1 | n≥1}A. 构造语法分析树B. 检查语法错误C. 中间代码D. 识别单词符号二、填空题1. 编译过程一般可以分为五个阶段,分别是______、______、______、______和______。
2. 在编译原理中,______分析是编译过程的第一个阶段,其任务是从源程序中识别出一个个单词符号。
3. 若文法G[S]:S→AB,A→a,B→b,则该文法的开始符号是______。
4. 在语法分析中,LL(1)分析法是一种______分析方法。
三、判断题1. 编译器的主要功能是将源程序翻译成目标程序。
()2. 词法分析器不会删除无用的空白字符和注释。
()3. 语法分析器负责检查源程序中的语法错误。
()4. 任何程序设计语言都可以通过编译器转换为机器语言。
()四、简答题1. 简述编译器的基本任务。
2. 什么是上下文无关文法?请举例说明。
3. 请简要介绍自顶向下分析和自底向上分析的区别。
4. 什么是LR分析法?它有什么优点?五、算法题2. 给定文法G[S]:S→AB,A→a,B→b,请使用递归下降分析法编写一个语法分析器。
x = y + z w;六、综合题(a, (a, a))(a, a, a)abababba4. 请描述如何使用 yacc 工具一个编译器的语法分析器部分。
七、代码阅读题int factorial(int n) {if (n == 0)return 1;elsereturn n factorial(n 1);}def print_numbers(n):if n == 0:returnprint_numbers(n 1)print(n)print_numbers(5)public static void swap(int arr, int i, int j) { int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}function findMax(arr) {let max = arr[0];for (let i = 1; i < arr.length; i++) {if (arr[i] > max) {max = arr[i];}}return max;}八、设计题G[S]:S→E,E→E + T | T,T→T F | F,F→(E) | id a = b + c d e / f;x = 3y = x + 4z = y 2MOV R1, 3ADD R2, R1, 4MUL R3, R2, 2答案一、选择题1. C2. D3. A4. D二、填空题1. 词法分析、语法分析、语义分析、中间代码、代码优化2. 词法3. S4. 自顶向下三、判断题1. √2. ×3. √4. ×四、简答题1. 编译器的基本任务包括:词法分析、语法分析、语义分析、中间代码、代码优化和目标代码。
(完整版)编译原理习题及答案(整理后)

2、对无二义性文法来说,一棵语法树往往代表了 。
a. 多种推导过程
b. 多种最左推导过程
c.一种最左推导过程
d.仅一种推导过程 e.一种最左推导过程
3、如果文法 G 存在一个句子,满足下列条件 之一时,则称该文法是二义文法。
a. 该句子的最左推导与最右推导相同
b. 该句子有两个不同的最左推导
c. 该句子有两棵不同的最右推导
T→T*P|P
P→(E)|I
则句型 P+T+i 的句柄和最左素短语为 。
a.P+T 和 i b. P 和 P+T c. i 和 P+T+i d.P 和 T
8、设文法为:S→SA|A
A→a|b
则对句子 aba,下面 是规范推导。
a. SSASAAAAAaAAabAaba
b. SSASAAAAAAAaAbaaba
标语言
第二章
一、单项选择题
1、文法 G:S→xSx|y 所识别的语言是 。
a. xyx
b. (xyx)* c. xnyxn(n≥0) d. x*yx*
2、文法 G 描述的语言 L(G)是指 。
a. L(G)={α|S⇒+ α , α∈VT*}
b. L(G)={α|S⇒* α, α∈VT*}
c. L(G)={α|S⇒* α,α∈(VT∪VN*)} d. L(G)={α|S⇒+ α, α∈(VT∪VN*)}
第一章
1、将编译程序分成若干个“遍”是为了
。
a.提高程序的执行效率
b.使程序的结构更加清晰
c.利用有限的机器内存并提高机器的执行效率
d.利用有限的机器内存但降低了机器的执行效率
编译原理作业集-第七章(精选.)

第七章语义分析和中间代码产生本章要点1. 中间语言,各种常见中间语言形式;2. 说明语句、赋值语句、布尔表达式、控制语句等的翻译;3. 过程调用的处理;4. 类型检查;本章目标掌握和理解中间语言,各种常见中间语言形式;各种语句到中间语言的翻译;以及类型检查等内容。
本章重点1.中间代码的几种形式,它们之间的相互转换:四元式、三元式、逆波兰表示;3.赋值语句、算术表达式、布尔表达式的翻译及其中间代码格式;4.各种控制流语句的翻译及其中间代码格式;5.过程调用的中间代码格式;6.类型检查;本章难点1. 各种语句的翻译;2. 类型系统和类型检查;作业题一、单项选择题:1. 布尔表达式计算时可以采用某种优化措施,比如A and B用if-then-else可解释为_______。
a. if A then true else B;b. if A then B else false;c. if A then false else true;d. if A then true else false;2. 为了便于优化处理,三地址代码可以表示成________。
a. 三元式b. 四元式c. 后缀式d. 间接三元式3. 使用三元式是为了________:a. 便于代码优化处理b. 避免把临时变量填入符号表c. 节省存储代码的空间d. 提高访问代码的速度4. 表达式-a+b*(-c+d)的逆波兰式是________。
a. ab+-cd+-*;b. a-b+c-d+*;c. a-b+c-d+*;d. a-bc-d+*+;5. 赋值语句x:=-(a+b)/(c-d)-(a+b*c)的逆波兰式表示是_______。
a. xab+cd-/-bc*a+-:=;a. xab+/cd-bc*a+--:=;a. xab+-cd-/abc*+-:=;a. xab+cd-/abc*+--:=;6. 在一棵语法树中结点的继承属性和综合属性之间的相互依赖关系可以由________来描述。
编译原理复习题(含试卷)

*编译原理复习题一.简答题: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)语法制导翻译语法制导翻译:定义翻译所必须的语义属性和语义规则,一般不涉及计算顺序。
编译原理复习练习题

1.文法S->a|^|(T)T->T,S|S对 (a,(a,a))) 和 (((a,a),^,(a)),a) 的最左推导。
解:略。
2.何谓优化?简述优化的原则是什么?按所涉及的程序范围可分为哪几级优化?解:(1)优化:对程序进行各种等价变换,使得从变换后的程序出发,能产生更有效的目标代码。
(2) 三种级别:局部优化、循环优化、全局优化。
3.构造正规式 1(0|1)*101 相应的DFA。
4.已知文法 G[S] 为S → aSb|Sb|b ,试证明文法 G[S] 为二义文法。
(以句子aabbbb 为例)解:由文法G[S]:S→aSb|Sb|b,对句子aabbbb对应的两棵语法树为:因此,文法G[S]为二义文法5.考虑文法 G[S]:S → (T) | a+S | aT → T,S | S消除文法的左递归及提取公共左因子。
解:消除文法G[S]的左递归:S→(T) | a+S | aT→ST′T′→,ST′| ε提取公共左因子:S→(T) | aS′S′→+S | εT→ST′T′→,ST′| ε6. 文法 G[S] 为:S->Ac|aBA->abB->bc写出 L(G[S]) 的全部元素。
解:S=>Ac=>abc 或S=>aB=>abc所以L(G[S])={abc}7、已知 NFA= ( {x,y,z},{0,1},M,{x},{z} ),其中:M(x,0)={z},M(y,0)={x,y},M(z,0)={x,z},M(x,1)={x}, M(y,1)= φ ,M(z,1)={y}, 构造相应的DFA并最小化。
最小化:8、对下面的文法 G :E->TE'E'->+E| εT->FT'T' ->T| εF-> PF'F'-> *F'| εP->(E)|a|b|^(1)计算这个文法的每个非终结符的 FIRST 集和 FOLLOW 集。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章习题一1.解释名词:源语言、目标语言、翻译器、编译器和解释器。
答:源语言:被翻译器翻译的语言,用于书写源程序的语言。
目标语言:被翻译器翻译之后得到的语言,用于书写目标程序的语言。
翻译器:能够完成从一种语言到另一种语言的变换的软件。
编译器:一种特殊的翻译器,要求目标语言比源语言低级。
解释器:解释器是不同于编译器的另一种语言处理器。
解释器不像编译器那样通过翻译来生成目标程序,而是直接执行源程序所指定的运算。
第二章词法分析作业:假设∑={0,1},求1.写出包含010的所有串的正规式2.写出不包含010的所有串的正规式答: 1. (0|1)*(010)(0|1)*2.(10*1)*|((11|00)*|0111*0)* .2.(0|1)*010(0|1)*解:(1)RE的分解树如下:(2)由分解树及基本的Thompson 构造算法逐步构造等价的NFA 过程如下:r3、r4:r2:r1:r17r16r11 * r15 () r12 r13 1r10 0 r9 r8 r7r6 0r5*r4() r1 r2r6:r5:r8:r7:r10:r9:r11:r12r13r14、r15r16(3)由子集法构造等价的DFA 过程如下:A closure ==}7,4,2,1,0{})0({_εB closure A ===}8,7,6,4,3,2,1{})8,3({_0εC closure A ===}7,6,5,4,2,1{})5({_1εB closure B ===}8,7,6,4,3,2,1{})8,3({_0ε D closure B ===}9,7,6,5,4,2,1{})9,5({_1εB closureC ==})8,3({_0ε C closure C ==})5({_1εB closure closure closure D =+=+==10,8,7,6,4,3,2,1{}17,14,12,11,10{})10({_})8,3({_})10,8,3({_0εεεC closureD ==})5({_1εB closure closure closure E =+=+==8,7,6,4,3,2,1{}17,16,14,13,12,11{})13({_})8,3({_})13,8,3({_0εεεD closure closure closureE =+=+==9,7,6,5,4,2,1{}17,16,15,14,12,11{})15({_})9,5({_})15,9,5({_1εεεF closure F ==})13,8,3({_0εG closure F ===}17,16,15,14,12,11,9,7,6,5,4,2,1{})15,9,5({_1εHE closure E closure closure closure G ==+=+=+==}17,16,14,13,12,11,10,8,7,6,4,3,2,1{}17,16,14,13,12,11{})13({_})13({_})10,8,3({_})13,10,8,3({_0εεεεIC closure C closure G ==+=+==}17,16,15,14,12,11,7,6,5,4,2,1{}17,16,15,14,12,11{})15({_})15,5({_1εεF closure H ==})13,8,3({_0εG closureH ==})15,9,5({_1εF closure I ==})13,8,3({_0εI closure I ==})15,5({_1ε其中含有r.初态的是A 作为新的DFA 的初态,含有原r17终态的是E 、F 、G 和H 作为新的DFA 的终态。
做出对应DFA 的状态转换图如下:(4)直接由分割算法处理该DFA ,如得到的DFAmin 与原DFA 一致说明原DFA 本身就是最简的:∏=0}},,,,{},,,,{{I H G F E D C B A由于E D f B C f B B f B A f ====)0,(,)0,(,)0,(,)0,(导致{A ,B ,C }和D 落入的状态集是不等价的,说明{A ,B ,C }和D 是不等价的,故{A ,B ,C ,D }应该分裂为{A ,B ,C }和{D },故:∏=1}},,,,{},{},,,{{I H G F E D C B A由于C C f D B f C A f ===)1,(,)1,(,)1,(落入不同的状态集(相对∏1来说是两个不等价的状态集),说明{A ,C }和B 是不等价的,故{A ,B ,C ,D }应该分裂为{A ,C }和{B },故:∏=2}},,,,{},{},{},,{{I H G F E D B C A由于F I f F H f H G f F F f F E f =====)0,(,)0,(,)0,(,)0,(,)0,(落入同一个状态集,故{E ,F ,G ,H ,I }暂不分裂。
由于I I f G H f G G f G F f G E f =====)1,(,)1,(,)1,(,)1,(,)1,(落入同一个状态集},故{E ,F ,G ,H ,I }暂不分裂。
故最终划分为:∏=fI H G F E D B C A }},,,,{},{},{},,{{说明A 和C 是等价的,E 、F 、G 、H 和I 是等价的。
合并等价状态(A 和C 中保留A ,E 、F 、G 、H 和I 中保留E )并处理对应弧线得最小化DFA 如下:1.113.1考虑文法S → ( L ) | aL → L , S | S(a)建立句子(a,(a,a))和(a,((a,a),(a,a)))的分析树。
(b)为(a)的两个句子构造最左推导。
(c)为(a)的两个句子构造最右推导。
(d)这个文法产生的语言是什么。
(a,(a,a))的分析树S(L )L ,SS (L )a L , SS aa(a,((a,a),(a,a)))的分析树S(L )L ,Sa L )L , Sa ( L )L , SLL , SS aa(a,(a,a))的最左推导S=>lm (L) =>lm (L,S) =>lm (S,S) =>lm(a,S)=>lm (a,(L)) =>lm (a,(L,S)) =>lm (a,(S,S)) =>lm (a,(a,S)) =>lm (a,(a,a))(a,((a,a),(a,a)))的最左推导S=>lm (L)=>lm (L,S) =>lm (S,S) =>lm (a,S) =>lm(a,(L))=>lm (a,(L,S)) =>lm (a,(S,S)) =>lm (a,((L),S)) =>lm (a,((L,S),S)) =>lm (a,((S,S),S))=>lm (a,((a,S),S)) =>lm (a,((a,a),S)) =>lm (a,((a,a),(L))) =>lm (a,((a,a),(L)))=>lm (a,((a,a),(L,S)))=>lm (a,((a,a),(S,S))) =>lm (a,((a,a),(a,S))) =>lm (a,((a,a),(a,a)))(a,(a,a))的最右推导S=>rm (L)=>rm(L,(L)) =>rm (L,(L,S)) =>rm (L,(L,a)) =>rm (L,(S,a)) =>rm (L,(a,a)) =>rm (S,(a,a)) =>rm (a,(a,a))(a,((a,a),(a,a)))的最右推导S=>rm (L) =>rm (L,S) =>rm (L,(L)) =>rm (L,(L,S))=>rm (L,(L,(L)))=>rm (L,(L,(L,S)))=>rm (L,(L,(L,a))) =>rm (L,(L,(S,a))) =>rm (L,(L,(a,a))) =>rm (L,(S,(a,a))) =>rm (L,((L),(a,a))) =>rm (L,((L,S),(a,a))) =>rm (L,((L,a),(a,a)))=>rm (L,((S,a),(a,a)))=>rm (L,((a,a),(a,a))) =>rm (S,((a,a),(a,a)))=>rm (a,((a,a),(a,a)))(d)该文法产生的语言是括号匹配的串,串中的各项用“,”隔开,项可以是括号匹配的子串或a3.2考虑文法S→aSbS|bSaS|ε(a)为句子abab构造两个不同的最左推导,以此说明文法是二义的。
(b)为abab构造对应的最右推导。
(c)为abab构造对应的分析树(a)1.S=>lm aSbS =>lm abSaSbS =>lm abaSbS=>lm ababS =>lm abab2.S =>lm aSbS=>lm abS=>lm abaSbS=>lm ababS=>lm abab(b)S=>rm aSbS =>rm aSb=>rm abSaSb=>rm abSab=>rm abab(C)分析树(1)Sa Sb Sε a S b Sεε分析树(2)Sa Sb Sa Sb S εεε(d)该文法产生的语言是a、b个数相等的ab串含空串习题33.3下面的二义文法描述命题演算公式,为它写一个等价的非二义性文法。
S→S and S| S or S| not S| true| false|(S)答:E->E or T | TT->T and F | FF->not F | (E) | true | false3.10构造下面文法的LL(1)分析表D->TLT->int | realL->id RR->,id R|ε答:First(TL)={int,real} Follow(D)={#}First(T)={int,real} Follow(T)={id}First(D)={int,real} Follow(L)={#}First(int)={int } Follow(R)={#}First(real)={real}First(id R)={id}First(L)={id}First(,id R)={,}First(ε)={ε}First(R)={ , , ε}3.11下面的文法是否为LL(1)文法?说明理由。
(两种方法)S->A B | P Q xA->x yB->b cP->d P |εQ->a Q |ε答:方法一:First(AB)={x}First(PQx)={d,a,x}因为:First(AB)∩First(PQx)={x}所以此文法不是LL(1)文法。