《编译原理》课程研讨题(2016)

合集下载

案例教学法在《编译原理》课程中的研究

案例教学法在《编译原理》课程中的研究
. 二义 文法 的消除 现至少一个多重定义条 目. 因而 .L1 L ( 文法一定不是 31 ) 有 些 类 型的语 法 分析 器希 望 它所 处理 的文 法是 无 二义文 法
22 .2利用 L ( 文法 和 S R 1文法 . R0 ) L () 引入案 例 5 对 于 文法 G : :
图 1 测 分 析 表 M1 预
二义 文 法会 产 生 语 法 结 构 分 析 上 的不 确 定 性 . 进 而 会 导致 语 义 处理 上及 目标代 码 生 成 上 的不确 定性 .
因 为分 析表 不 含 多 重定 义 ,故 此 文 法是 L () L 1文 因而是应 当避 免 的。 两个解 决文 法二义 性 的方 法 , 有 一 法。 一定 不具 有二 义 性 , 是二 义文法 。L () 法是 判 种是 强 制将二义 文法 转换 成 等价 的非二 义文 法 .另一 不 L1 文 断文法无 二 义性 的充 分条 件 。进一 步 。 引导 学生 思 考 , 种是 不改 变文 法 . 但需 要设 簧 一个 消除 二义性 的规 则 , 在 出现二 义性 时 . 用此规 则 找出正确 的语法 树 。 利 如果文 法是 二义性 的 .在 此 文法 的预测 分 析表 中会 出
得 到文法 G’ 的预测 分析表 M1 如下 图 l , 所示 :
非终 结符
a S
T T’
输 入符 号
( S () 一 T
T’ £T’ .T’ —} — S
(1 法 一定 不是 二义文 法 ,L () 析 表是 在 L () 0文 SR1 分 R 0分 析 表 的基础 上 构造 的 . 而 .L () 因 S R 1文法 也一 定不 是二
24 0
福 建 电

大学课程《编译原理》考试试卷A卷及答案

大学课程《编译原理》考试试卷A卷及答案

《编译原理》考试试卷A适用专业:考试日期:闭卷所需时间:120分钟总分:100分一、填空题:(每空1分,共10分)1.解释系统与编译系统的区别在于和。

2.在编译过程中始终伴随着管理和出错处理过程。

3.语法分析的方法为和两大类。

4.LL(1)文法中不能有和。

5.词法分析器中单词的描述工具是 ,单词的识别工具。

6.算符优先语法分析,在符号栈栈顶出现时,进行规约处理。

二、单选题(每小题2分,共10分)1.词法分析器的加工对象是()A.中间代码B.单词C.源程序D.元程序2.同正则表达式a*b*等价的文法是()A. G1:S→aS|bS|εB. G2: S→aSb|εC. G3:S→aS|Sb|εD. G4: S→abS|ε3.文法G[A]:A→bH H→BA B→Ab H→a 不是()A. 2型文法B. 3型文法C. 0型文法D.1型文法4.算符优先分析每次都是对()进行规约。

A.短语B.最左素短语C.素短语D.句柄5.( )不是DFA的成分。

A.有穷字母表B. 初始状态集合C.终止状态集合D.有限状态集合三、问答题(第1,5小题每题15分,其余每小题10分,共80分)1. (15分)解释下列术语:(1)编译程序(2)句柄(3)上下文无关文法2.编译程序主要有哪些构成成分?(10分)3.给出描述语言L={a n b2n c m|n,m≥0}的cfg。

(10分)4.(10分)将下图中的DFA M最小化。

5. (15分)判断文法G[S]:S→aHH→aMd|dM→Ab|εA→aM|e是否为LL(1)文法?给出判断过程。

6. (10分)改写文法G[E]:E → E+T|TT →T*F|FF →(E)| a为无左递归文法。

7. (10分)已知文法G[S]为:S→VV→T|ViTT→F|T+FF→)V*|(请指出句型(+(i( 规范推到,并指出句型F+Fi( 中的短语、句柄和素短语。

《编译原理》考试试卷A参考答案适用专业:考试日期:闭卷所需时间:120分钟总分:100分一、填空题:(每空1分,共10分)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.利用有限的机器内存但降低了机器的执行效率

中山大学软件学院2016级编译原理-期末试卷A

中山大学软件学院2016级编译原理-期末试卷A

中山大学本科生期末考试考试科目:《编译原理》(A卷答案)学年学期:2016学年第一学期姓名:学院/系:数据科学与计算机学院/软件工程学号:考试方式:闭卷年级专业:考试时长:120分钟班别:第八条:“考试作弊者,不授予学士学位。

”------------以下为试题区域,共九道大题,总分100分,考生请在答题纸上作答------------1.Write regular expressions for the following languages (8 points).a)All strings over {0, 1} that do not contain consecutive zeros (4 points).(0?1)*0?b)All strings representing a nonnegative binary number (without leading zeros)which is a multiple of 8 (4 points).0 | 1(1|0)*0002.Consider the following regular expression (17 points):( a | b ) * a ( a | b )a)Based on the Thompson Algorithm, construct the NFA from the above regularexpression (8 points).b)Convert the NFA into a DFA with minimum number of states (9 points).ε-closure({0}) = {0, 1, 2, 4, 7}ε-closure(move({0, 1, 2, 4, 7}, ‘a’)) = ε-closure({3, 8}) = {1, 2, 3, 4, 6, 7, 8, 9, 11}ε-closure(move({0, 1, 2, 4, 7}, ‘b’)) = ε-closure({5}) = {1, 2, 4, 5, 6, 7}ε-closure(move({1, 2, 3, 4, 6, 7, 8, 9, 11}, ‘a’)) = ε-closure({3, 8, 10}) = {1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13}ε-closure(move({1, 2, 3, 4, 6, 7, 8, 9, 11}, ‘b’)) = ε-closure({5, 12}) = {1, 2, 4, 5, 6, 7, 12, 13}ε-closure(move({1, 2, 4, 5, 6, 7}, ‘a’)) = ε-closure({3, 8}) = {1, 2, 3, 4, 6, 7, 8, 9, 11}ε-closure(move({1, 2, 4, 5, 6, 7}, ‘b’)) = ε-closure({5}) = {1, 2, 4, 5, 6, 7}ε-closure(move({1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13}, ‘a’)) = ε-closure({3, 8, 10}) = {1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13}ε-closure(move({1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13}, ‘b’)) = ε-closure({5, 12}) = {1, 2, 4, 5, 6, 7, 12, 13}ε-closure(move({1, 2, 4, 5, 6, 7, 12, 13}, ‘a’)) = ε-closure({3, 8}) = {1, 2, 3, 4, 6, 7, 8, 9, 11}ε-closure(move({1, 2, 4, 5, 6, 7, 12, 13}, ‘b’)) = ε-closure({5}) = {1, 2, 4, 5, 6, 7}Minimized DFA:3.Consider the following CFG (9 points):S → +SS | -SS | aand the string +a-aa.a)Give a leftmost derivation for the string (3 points).S => +SS => +aS => +a-SS => +a-aS => +a-aab)Give a rightmost derivation for the string (3 points).S => +SS => +S-SS => +S-Sa => +S-aa => +a-aac)Give a parse tree for the string (3 points).4.Write CFGs for the following languages (8 points):a)L={a n b m c n | m ≥ 0, n ≥ 1} (4 points).S → aSc | aAcA → bA | εb)All strings over {a, b} that begin and end with the same letter (4 points).S → aAa | bAb | a | bA → aA | bA | ε5.Consider the following CFGs (18 points):S → i(E)t(E)X | EX → e(E) | εE → aY | bYY→ c(E) | εwhere i, t, e, a, b, c, ( and ) are terminals.a)Compute the FIRST and FOLLOW sets for all non-terminals (8 points).b)Construct an LL(1) parsing table for the grammar (8 points).c)Is this grammar LL(1)? Why? (2 points)Y es, because no conflicts can be found in the LL(1) parsing table.6.Consider the following CFG (12 points):S→aAD | aBe | bBS | bAeA→gB→gD→d |εaugment the grammar and construct the LR(1) sets of items for the augmented grammar.首先拓广G[S]为G[Z]:0:Z → S 1:S → aAD 2:S → aBe3:S → bBS 4:S → bAe 5:A → g6:B → g 7:D → d 8:D →ε构造G[Z]的LR(1)项目族为:7.The following grammar generates binary strings and their complements (10 points).F →B| BB →B0| B1| 0| 1The value of a (non-negated) string is just the decimal value of the binary number the string represents; the value of a negated string is the decimal value of the string with 1’s replaced by 0’s and 0’s replaced by 1’s. For example, the value of 010 is 2 and ¬010 is 5. Design a syntax-directed definition (SDD) for the above grammar such that the non-terminal F has an attribute F.val which keeps the value of an inputstring generated by F. Please do NOT modify the grammar.8.Consider the following basic block (10 points):a)Construct the DAG of the above basic block (5 points).b)Assume that only G, L and M will be used after the basic block. Give theoptimized three-address statement sequence (5 points).9.Consider the following fragment of three-address instructions (8 points):(1) b := 1(2) b := 2(3) if w <= x goto B(4) e := b(5) goto B(6) A: goto D(7) B: c := 3(8) b := 4(9) c := 6(10) D: if y <= z goto E(11) goto End(12) E: g := g + 1(13) h: = 8(14) goto A(15) End: h := 9Please partition these three-address instructions into basic blocks, and draw the control flow graph. Y ou may draw the resulting graph directly, but you must markeach node by number n~m indicating that the corresponding basic block consists of instructions n through m, inclusive.。

《编译原理》习题参考答案(六)

《编译原理》习题参考答案(六)

《编译原理》习题参考答案(六)第五章5.4 为下列类型写类型表达式:(a) 指向实数的指针数组,数组的下标从1到100。

(b) 两位数组(即数组的数组),他的行下标从1到10,列下标从1到20。

(c) 函数,他的定义域是从整数到整数的指针的函数,它的值域是从一个整数和一个字符组成的纪录。

Solution:(a) array ( 1 . . 100 , pointer ( real ) )(b) array ( 1 . . 10 , array ( 1 . . 20 , type ) )(c) ( integer →pointer(integer) )→record((i : integer) * ( c : char )) 假定作为值域的记录类型的两个域分别叫i和c。

5.6 下列文法定以字面常量表的表。

符号的解释和图5.2文法的那些相同,增加了类型list,它表示类型T的元素表。

→ D ; EP→ D ; D | id : TD→ list of T | char | integerTE→ ( L ) | literal | num | id→ E , L | EL写一个类似5.3节中的翻译方案,以确定表达式( E )和表( L )的类型。

P→ D ; ED→ D ; DD→ id : T { addtype ( id.entry , T.type ) }T→ char { T.type := char }T→ integer { T.type := integer }T→ list of T1 { T.type := list ( T1.type ) }E→ literal { E.type := char }E→ num { E.type := integer }E→ id { E.type := lookup ( id.entry ) }E→ ( L ) { E.type := list ( L.type ) }L→E{L.type:=E.type}L→ E , L1 { L.type := if L1.type = E.type then E.typeelse type_error }5.16 对下面的每对表达式,找出最一般的合一代换:(a) α1 → ( α2 →α1 )(b) array ( β1 ) → ( pointer( β1 ) →β2 )(c) γ1 →γ2(d) δ1 →(δ1 →δ2 )Solution:S(α1) = array ( β1 ) S(α2) = pointer ( β1 ) S(β2) = array ( β1 ) (a)(c):S(γ1) = α1 S(γ2) = α2 → α1 (a)(d):S(α1) = S(α2) = S(δ1) = S(δ2) = α (b)(c):S(γ1) = array ( β1 ) S(γ2) = pointer ( β1 ) → β2 (b)(d): 无 (c)(d):S(γ1) = δ1 S(γ2) = δ1 → δ25.17 仿效例5.5,推到下面map 的多态类型: map: ∀ α . ∀ β . ( ( α → β ) * list ( α ) ) → list ( β ) map 的ML 定义是 fun map ( f , l ) = if null ( l ) then nilelse cons ( f ( hd ( l ) ) , map ( f , tl ( l ) ) );在这个函数体中,内部定义的标识符的类型是: null : ∀α . list (α ) → boolean ; nil : ∀α . list (α ) ;cons : ∀α . ( α * list (α ) ) → list (α ) ;hd:∀α . list (α ) →α;∀α . list (α ) → list (α ) ;tl:Solution:行定型断言代换规则(1) f : α( Exp Id )(2) l : β( Exp Id )(3) map : γ( Exp Id )(4) map ( f , l ) : δγ = ( α * β ) →δ(Exp Funcall)(5) null : list (α0) → boolean ( Exp Id ) 和( Type Fresh )(6) null ( l ) : boolean β = list (α0) (Exp Funcall)(7) nil : list (α1) ( Exp Id ) 和( Type Fresh )(8) l : list (α0) 由(2)可得(9) hd : list (α2) →α2( Exp Id ) 和( Type Fresh )(10) hd ( l ) : α0α2 = α0(Exp Funcall)(11) f ( hd ( l ) ) : α3α = α0→α3( Exp Id )(12) f : α0→α3由(1)可得(13) tl : list (α4)→ list (α4) ( Exp Id ) 和( Type Fresh )(14) tl ( l ) : list (α0) α4 = α0(Exp Funcall)(15) map : ((α0→α3)*list(α0))→δ由(3)可得(16) map ( f , tl ( l ) ) : δ(Exp Funcall)(17) cons : α5 * list(α5) → list(α5) ( Exp Id ) 和( Type Fresh ) (18) cons (…) : list (α3) α5 = α3 , δ=list(α3) (Exp Funcall)(19) if : boolean *α6 * α6→α6( Exp Id ) 和( Type Fresh )(20) if (…) : list (α1) α6 = α1 , α3 = α1(Exp Funcall)(21) match : α7 *α7 →α7( Exp Id ) 和( Type Fresh ) (22) match (…) : list (α1) α7 = list (α1) (Exp Funcall)至此有map : ( (α0→α1)*list(α0) )→list(α1)所以map : ∀α . ∀β . ( ( α→β ) * list ( α ) ) → list ( β )5.18 假定类型名link和cell如5.5节那样定义,下面的表达式中,那些结构等价?那些名字等价?(a) link(b) pointer ( cell )(c) pointer ( link )(d) pointer ( record ( ( info : integer ) * ( next : pointer ( cell ) ) ) ) Solution:(a)、(b)、(d)结构等价,无名字等价。

编译原理习题课共37页文档

编译原理习题课共37页文档
编译原理习题课
1、合法而稳定的权力在使用得当时很 少遇到 抵抗。 ——塞 ·约翰 逊 2、权力会使人渐渐失去温厚善良的美 德。— —伯克
3、最大限度地行使权力总是令人反感 ;权力 不易确 定之处 始终存 在着危 险。— —塞·约翰逊 4、权力会奴化一切。——塔西佗
5、虽然权力是一头固执的熊,可是金 子可以 拉着它 的并使享受加强。 ——德 谟克利 特 67、今天应做的事没有做,明天再早也 是耽误 了。——裴斯 泰洛齐 68、决定一个人的一生,以及整个命运 的,只 是一瞬 之间。 ——歌 德 69、懒人无法享受休息之乐。——拉布 克 70、浪费时间是一桩大罪过。——卢梭

编译原理第三版答案

编译原理第三版答案编译原理是计算机科学中非常重要的一门课程,它涉及到程序设计语言的语法、语义和编译器的设计与实现等内容。

《编译原理》(Compilers: Principles, Techniques, and Tools)是编译原理领域的经典教材,由Alfred V. Aho、Monica S. Lam、Ravi Sethi和Jeffrey D. Ullman合著,已经出版了三个版本。

本文将针对《编译原理》第三版中的习题和答案进行整理和总结,以帮助学习者更好地理解和掌握编译原理相关知识。

第一章,引论。

1.1 什么是编译器?编译器是一种将源程序翻译成目标程序的程序,它包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。

1.2 编译器的主要任务是什么?编译器的主要任务是将高级语言程序翻译成等价的目标程序,同时保持程序的功能和性能。

1.3 编译器的结构包括哪些部分?编译器的结构包括前端和后端两部分,前端包括词法分析、语法分析和语义分析,后端包括中间代码生成、代码优化和目标代码生成。

第二章,词法分析。

2.1 什么是词法分析?词法分析是编译器中的第一个阶段,它将源程序中的字符序列转换成单词(Token)序列。

2.2 词法分析的主要任务是什么?词法分析的主要任务是识别源程序中的单词,并将其转换成单词符号表中的标识符。

2.3 词法分析中常见的错误有哪些?词法分析中常见的错误包括非法字符、非法注释、非法标识符等。

第三章,语法分析。

3.1 什么是语法分析?语法分析是编译器中的第二个阶段,它将词法分析得到的单词序列转换成抽象语法树。

3.2 语法分析的主要任务是什么?语法分析的主要任务是识别源程序中的语法结构,并检查语法的正确性。

3.3 语法分析中常见的错误有哪些?语法分析中常见的错误包括语法错误、缺失分号、缺失括号等。

第四章,语义分析。

4.1 什么是语义分析?语义分析是编译器中的第三个阶段,它对源程序的语义进行分析和处理。

编译原理样题(含答案)


L2: F:=F-1 goto L1 十三、对PL/0语言扩充单词-=和--: (第2章) 请完成下列识别单词‘-’,‘-=’和‘--’(设单词内码分别为 MINUS,MINUSBECOME和MINUSMINUS)的词法分析算法: if ( CH=='-' ) { ① ; if ( ② ) { SYM=MINUSBECOME; GetCh(); } else if ( CH=='-' ) { ③ } else ④ }
六 解:文法G(S): S aSb S aa S bb 七 解: (1)(消除左递归,提公因左因子) S→aFS'|+aFS' S'→+aFS'|ε F→*aF' F'→F|ε (2) FIRST(S)={a,十} FOLLOW(S)={#} FIRST(50)={+,ε } FOLLOW(S')={#} FIRST(F)={*} FOLLOW(F)=(+,#)
二 判断题 1、最左归约也称为规范归约。(第3章) 2、逆波兰法表示的表达式把运算对象放在运算符的后面。(第8章) 3、同心集的合并有可能产生“归约/归约”冲突。(第7章) 4、DFA可以通过多条路径识别一个符号串。(第4章) 5、动态数组的存储空间在编译时就可完全确定。(第10章) 三 填空题 1、文法 进项目 3、句柄 语义 2、待约项目 4、词法 移
十二、将下面程序划分为基本块,并画出其程序流图。
read(A,B) F:=1 C:=A*A D:=B*B if C<D goto L1 E:=A*A F:=F+1 E:=E+F write(E) halt L1: E:=B*B F:=F+2 E:=E+F write(E) if E>100 goto L2 halt

编译原理模拟题

优化:在不改变程序执行结果的前提下,提高中间代码或目标代码的质量。
目标代码生成:将中间代码转换成等价的目标代码。
1.3编译程序的生成方法有哪些?
参考答案:
(1)手工编写编译程序
(2)自编译
(3)自动生成编译程序
(4)移植
1.4画出编译程序总框。
参考答案见教材第4页图1.5。
1.5描述词法规则、语法规则、语义规则各使用哪些描述工具?
(2)判断abc、(((abc))是否为L(G)的句子,说明理由。
(3)画出句型((E))的语法树,写出其短语、直接短语和句柄。
2.3设有文法G[A]:
A a|b|e|A0|A1
(1)试问 分别由哪些符号组成?
(2)下列符号串a,a0,a0e01,0a,e111,e0011是否为该文法的句子?
(3)写出文法G1[A]产生的语言
2.直接推导、推导、句型、短语、直接短语、句柄、句子等重要概念;
3.为给定语言构造文法;
4.二义文法的判定。
(三)本章练习题和思考题
2.1写文法G1,G2,分别产生语言:
(1)L(G1)={ambn|m>0,n.≥0}。
(2)L(G2)={bmabm|m≥0}。
2.2设文法G为:E→(E)|abc
(1)写出文法G所定义的语言L(G)。
第三章词法分析与有穷自动机
(一)本章学习目标
1.理解词法分析器的功能及单词符号及输出单词的形式;
2.熟练掌握正规式与有穷自动机的定义形式;
3.熟练掌握有NFA到DFA的转换及DFA的确定化;
3.熟练掌握正规式与有穷自动机的等价性及其相互转换方法;
4.熟练掌握正规文法与有穷自动机的定义形式;
5.熟练掌握正规文法与有穷自动机的等价性及其相互转换方法;

《编译原理》练习题

《编译原理》练习题一一、填空题(每空1分)1.设G [S ]是一个文法,我们把能由文法的 (1) 推导出来的符号串α称为G 的一个句型。

当句型α仅由 (2) 组成时 (即α∈V T *),则将它称为G 产生的句子。

2.从某一给定的状态q 出发,仅经过若干条 (3) 的矢线所能达到的状态所组成的集合称为ε-CLOSURE(q)。

3.设G=(V N ,V T ,P,S)是一文法,我们说G 中的一个符号X ∈V N ∪V T 是有用的,是指X 至少出现在 (4) 的推导过程中,否则,就说X 是无用的。

我们将不含形如A→A 的产生式和不含无用符号及无用产生式的文法称为 (5) 。

4.我们常采用形如 (class, value)的二元式作为一个单词的 (6) 。

其中,class 是一个整数,用来指示该单词的 (7) ,value 则是单词之值。

5.一个文法G[S]可表示成形如 (8) 的四元式。

其中V N ,V T ,P 均为非空的有限集,分别称为非终结符号集、终结符号集和产生式集, S ∈V N 为文法的开始符号。

此外,将出现在各产生式左部和右部的一切符号所组成的集合称为 (9) ,记作V 。

显然,V=V N ∪V T ,V N ∩V T =∅。

6.通常,可通过两种途径来构造词法分析程序。

其一是根据对语言中各类单词的某种描述或定义,用 (10) 构造词法分析程序;另外一种途径是所谓词法分析程序的(11) 。

7.设G 为一文法,A→α是G 的一个产生式,如果α具有υAδ的形式,其中υ,δ不同时为ε,则称产生式A→α是 (12) 。

若存在推导δυαA A *⇒⇒,则称产生式A→α是 (13) 。

8.设M=(K,Σ,f,S 0,Z)为一DFA ,并设s 和t 是M 的两个不同状态,我们说状态s,t 为某一输入串w (14) ,是指从s,t 中之一出发,当扫视完w 之后到达M 的终态,但从其中的另一个状态出发,当扫视完同一个w 后而进入 (15) 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一次研讨、第一批(第3周)1.讨论:(1)编译方法与解释方法的主要区别(2)编译程序组合中分端(前端/后端)和分遍(单遍/多遍)的作用(3)编译程序生成方法中自编译与自展的含义2.编写PL/0程序,功能:输入正整数n,求sum = 1! + 2 ! + ... + n!3.扩充PL/0语言文法的定义,增加实数类型和数组类型。

例:Var i:integer;r:real;A:array[1..10]of real;……A[i]:=r;4.设有下列文法G1[S]和G2[S]:1)指出文法的类型2)证明两者等价G1[S]:S→aAb | bBaA→aA | aB→Bb | bG2[S]:S→aA | bBA→aA | aCB→bB | bDC→bD→a5. 构造一个文法,使其语言是奇数集,且每个奇数不以0开头。

6.文法G[S] 的一个句子abbba 的语法树如下图:SA B aA b b Ba b1) G[S]可能包含哪些产生式?2) 给出句子abbba的规范推导。

3) 求出句子abbba 的句柄。

7.设有上下文无关文法G[S]:S→aAb A→aB A→a B→bA B→b 试构造与G[S]等价的正规文法。

8 实验一识别标识符(A)第一次研讨、第二批(第4周)1.编写PL/0程序,输入正整数n、x1、x2、…、x n,计算:S= ∑ x i/i! i=1~n。

2.构造下列语言的文法,并分析比较(1)L1(G)={a n b n|n≥1}(2)L2(G)={(ab) n|n≥1}(3)L3(G)={a n b m|n,m≥0}(4)L4(G)={a n b m|n,m≥1}3.定义一个文法,产生表达式E:1)含有双目运算符+,*2)+ 的优先级高于*3)+ 右结合,* 左结合4)运算对象为标识符i5)可用括号改变算符的优先级4.扩充PL/0语言文法的定义, 增加for语句的功能。

for语句的示例如下:for i:= 1 to 100 do s:=s+i;5.定义一个文法,产生下列语言:该语言由a、b符号串组成,串中a和b的个数相同6.证明下列文法为二义文法(能否转换为等价的非二义文法?)⑴G1[S]:S→A A→AA A→aAb A→ab⑵G2[S]:S→aSb S→Sb S→b7.试写出V T={0,1},分别满足下述要求的正则表达式:⑴所有以1开始和0结束的符号串。

⑵恰含有3个1的所有符号所组成的集合。

⑶集合{01,1}。

⑷所有以111结束的符号串。

8.实验一识别标识符(B)第二次研讨、第一批(第5周)1.构造一个DFA,接受∑={a,b}上由正规式aa*(a|ba)*b 定义的字符串并给出相应的正规文法。

2. 写出<简单查询语句>的文法.例如: 有2个关系R ( a,b,c),S (c,d,e)。

以下是简单查询语句的样例:语句1: SELECT a, b FROM R WHERE a=15 OR b<18;语句2: SELECT R.a, S.c FROM R , S WHERE R.c=S.c AND R.b<18; 3.下面文法G[S]产生a、b字符数相等的非空a、b字符串。

S → aB | bAB → bS | aBB | bA → aS | bAA | a1)证明该文法是二义的。

2)修改上述文法,使之非二义。

4.试用有限自动机的等价性证明以下2个正规式((a|b)*|aa)*b和(a|b)*b是等价的,并给出相应的正规文法。

5.写出Σ={a,b}上L={ w | w 中的a 的个数为偶数}的正规式,构造接受L的DFA。

6. 构造一个最简的DFA M,接受Σ={a,b}上同时满足下列条件的符号串:1)以a开头,以b结尾;2)符号串中包含“aba”。

7.有一台自动售货机,接收1分和2分硬币,出售3分一块的硬糖。

顾客每次向机器中投放一个硬币,当投放硬币额>=3分时,机器会给顾客一块硬糖(只给糖不找钱)。

1)写出售后机售糖的正规表达式;2)构造识别上述正规表达式的最简DFA。

8. 实验二词法分析(A)第二次研讨、第二批(第6周)1.给出<嵌套查询语句>的文法。

例如:有2个关系R ( a,b,c),S (c,d,e)。

以下是嵌套查询语句的样例:语句:SELECT a,bFROM RWHERE R.c in (SELECT S.cFROM SWHERE d=15);2.构造一个最简DFA M,接受∑={d,.,e},∑上的正规式dd*.dd*(edd*∣ε)表示的无符号数的集合。

其中d 为0~9的数字。

3.正规文法(又称为右线性文法):文法中每一条产生式α→β的形式都为:A→aB或A→a。

左线性文法:每一条产生式α→β的形式都为:A→Ba或A→a。

设计一个算法,把给定的左线性文法转换为等价的右线性文法。

4. 构造一个DFA M,接受Σ={a,b}上满足下列条件的符号串:1)以a开头,以b结尾;2)不包含“aba”。

5.对一个文法若消除了左递归,提取了左公共因子后是否一定为LL(1))文法?试举例说明。

6.已知文法G[E]的定义如下:E → E + T | TT → T * F | FF → (E) | i试构造一组递归下降分析子程序,使之识别G[E]所产生的语言。

7.语言可接受的合法文件名为:device:name.extension,其中device、name、extension是长度至少为1的字符串,而且第一部分(device:)和第三部分(.extension)可缺省。

试画出识别这种文件名的最简DFA。

8.实验二词法分析(B)第三次研讨、第一批(第7周)1.设有文法G[S]:S→SaF | F F→FbP | P P→c | d(1) 构造G[S]的算符优先关系表(2) 分别给出cadbdac# 和dbcabc# 的分析过程2.已知文法G[P]的定义如下:P → begin D S endD → D; d | dS → S; s | s试构造一组递归下降分析程序,使之识别G[P]所产生的语言。

3.设有文法G[S]:S→a B c | b A B A→a A b | b B→b |(1) 证明G[S]是一个LL(1)文法。

(2) 构造G[S]的预测分析表。

(3) 给出baabbb 的分析过程。

4.设有文法G[S’]: (0) S’→S (1) S→SaA (2) S→a (3) A→AbS (4) A→b(1) 构造G[S]的LR(0)项目规范族C={I0,I1,…In}。

(2) 构造SLR(1)分析表,判断G[S]的文法类型。

(3) 写出句子aabba 的分析过程。

5.设采用自底向上的移进-归约语法分析,属性文法G[A]如下:A→ a B { print “0”}A→ c { print “1”}B→ A b { print “2”}(1) 输入为aacbb 时,打印的符号串是什么?(2) 写出aacbb的语法制导分析过程。

6.设有文法G[E]:E→E+T | E∨T | TT→T*F | T∧F | FF→num | bool |(E)设计G[E]的语义子程序,对表达式进行类型检查并翻译为逆波兰式。

7.设有文法G[number]:number → num·numnum→digit num | digitdigit→ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7| 8 | 9设计G[number]的语义子程序,计算实数number的值。

8.实验三语法分析(A)第三次研讨、第二批(第8周)1.设有文法G[S]:S→A A→A m D n | B B→a | m S n D→S | DbS(1) 构造G[S]的算符优先关系表。

(2) 给出aman# 和maban# 的分析过程。

(3) 由(2)说明算符优先分析算法的局限性。

2.设有文法G[E]:E→ETE |(E)| iT→ + | *(1) 证明G[E]是一个非LL(1)文法。

(2) 把G[E]等价改写为LL(1)文法G1[E],并构造其预测分析表。

(3) 给出句子(i+i)* (i+i) 的分析过程。

3.设有文法G[S]: S → Ab | BaA → aA | aB → a将其改造成LL(1)文法,并编写递归下降分析程序,使之识别G[S]所产生的语言。

4.设有文法G[S’]: (0) S’→S (1) S→aS (2) S→bA (3) A→dA (4) A→d(1) 构造G[S]的LR(0)项目规范族C={I0,I1,…In},(2) 说明G[S]属于哪一种LR文法,构造相应的LR分析表(3) 写出句子aabbd的分析过程。

5.写出表达式(a+b*c)/(a+b)-d的四元式,逆波兰式及三元式序列。

6.条件语句的语法简写为:S → iSeS | iS | S ; S | a其中: i代表if,e代表else,a代表赋值语句。

如果规定:(1) else与其左边最近的if结合;(2) ;服从左结合。

请给出文法中i、e和;的优先关系,然后构造出无二义的LR分析表,并对输入串iiaea写出分析过程。

7.设采用自底向上的移进-归约语法分析,属性文法G[E]如下:E → E + T { print “0”}E → T { print “1”}T → T * F { print “2”}T → F { print “3”}F → (E) { print “4”}F → i { print “5”}写出i*(i+i*i)的语法制导分析过程,打印的符号串是什么?8.实验三语法分析(B)第四次研讨、第一批(第9周)1.以下是简单表达式(只含有加、减运算)计算的一个属性文法G(E):E → TR { R.in := T.val ; E.val := R.val }R → +TR1{ R1.in := R.in + T.val ; R.val := R1.val }R → -TR1{ R1.in := R.in - T.val ; R.val := R1.val }R → { R.val := R.in }T → num { T.val := lexval(num) }其中:lexval(num)表示从词法分析程序得到的常数的值。

试给出表达式8-3+6的语法树和相应的带标注语法分析树。

2.教材P224 第4题。

3.写出下列语句的三地址中间代码(四元式序列):while (A<C or B<D ) dobeginif (A>=1) then C:=C+1else while (A<=D) doA:=A+2;end4.教材P252 第2题5.对下列基本块B应用DAG进行优化,设只有U,V在基本块后面还要继续引用。

相关文档
最新文档