1 / 21

《编译原理》期中复习

《编译原理》期中复习. 第1-6章基本概念和基本方法 出题方法 (包括实验). 文法. 基本概念:字母表、符号串、集合的闭包、产生式、句型、句子、语言、文法类型、语法树、最左(最右)推导、短语、直接短语、句柄. 考试方法. 根据文法写出语言 根据语言写出文法 判断文法类型 根据推导过程画出语法树. 根据文法写出语言 判断文法类型. 例:文法 G: S → 0S1, S → 01 问:它的语言是什么?它属于 Chomsky 四种类型文法中的哪一种类型文法(写最贴切的一种)?. 答: L(G)={0 n 1 n |n ≥ 1} 属于2型文法(上下文无关文法).

derica
Download Presentation

《编译原理》期中复习

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 《编译原理》期中复习 第1-6章基本概念和基本方法 出题方法 (包括实验)

  2. 文法 • 基本概念:字母表、符号串、集合的闭包、产生式、句型、句子、语言、文法类型、语法树、最左(最右)推导、短语、直接短语、句柄

  3. 考试方法 • 根据文法写出语言 • 根据语言写出文法 • 判断文法类型 • 根据推导过程画出语法树

  4. 根据文法写出语言判断文法类型 例:文法G:S→0S1, S→01 问:它的语言是什么?它属于Chomsky四种类型文法中的哪一种类型文法(写最贴切的一种)? 答:L(G)={0n1n|n≥1} 属于2型文法(上下文无关文法) 点击看答案

  5. E E + E E * E i i i 根据推导过程画出语法树 • 例:文法G[E]: E → i E → E+E E → E*E E → (E) 推导:E  E+E  E*E+E  i*E+E  i*i+E  i*i+i 根据该推导画出一棵推导树。 点击看答案

  6. 根据语言写出文法 • 已知语言为 {0n1n|n≥1},写出能生成该语言的一个上下文无关文法。 答:文法为: G[S]: S→0S1 S→01 点击看答案

  7. 正规式 • 基本概念:正规文法、正规式、正规集、确定的有穷自动机(DFA)、不确定的有穷自动机(NFA)、接受(识别)

  8. 考试方法 • 根据正规式写出语言 • 根据语言写出正规式 • 根据DFA的状态图判断字符串能否被接受 • 根据正规式完成状态图 • 根据状态图写出正规式

  9. 根据正规式写出语言 • 例. ={l,d},正规式r=l(l d) 定义的正规集是什么? 答:正规集是: 以l开头,后跟任意多个l和d,组成的串的集合。 (比较:{l,ll,ld,ldd,……} (标识符)) 点击看答案

  10. 根据语言写出正规式 • 写出标识符的正规式,其中设字母为l,数字为d,标识符长度不受限制。 答:正规式为 l(l d)  点击看答案

  11. a a U a,b Q a b S V b b 根据DFA的状态图判断字符串能否被接受 • 例.字符串baab能否被下面的DFA接受 答:能被接受。 点击看答案

  12. B A S Q 根据正规式完成状态图 • 根据正规式R= l(l d)  完成下列相应的状态图。 A处填( ),B处填( )。 l,d l 点击看答案

  13. l,d l S Q 根据状态图写出正规式 例: 求正规式R 答:R= l(l d)  点击看答案

  14. LL(1)文法 • LL(1)的含义(P.72) • 提供判断LL(1)文法有关的完整方法和各种定义,完成对一个文法进行的判断过程(P.73-78) • 提取左公共因子(P.78) • 消除简单的左递归(P.81) • 提供文法的SELECT集合,构造预测分析表,同时对某个符号串进行分析(P.89-90)

  15. 提取左公共因子 解答: 文法G1可化为:S→aS(b|ε)S→ε 进一步化为:S→aSA A→b A→ε S→ε • 例:文法G1[S] 为:S→aSbS→aSS→ε 消除文法中的左公共因子。 点击看答案

  16. 消除简单的左递归 • 文法G:S→SaS→b其中含有直接左递归,试消除之。 解答: 文法G可改为:S→bS'S'→aS'|ε 参考: L={ban|n≥0} 点击看答案

  17. 分析栈 #E #E'T #E'T'F #E'T'i #E'T' #E'T+ #E'T #E'T'F #E'T'i #E'T' #E'T'F* #E'T'F #E'T'i #E'T' #E' # 剩余串 i+i*i# i+i*i# i+i*i# i+i*i# +i*i# +i*i# +i*i# i*i# i*i# *i# *i# i# i# # # # 产生式 E→TE' T→FT' F → i i 匹配 T' → ε + 匹配 T →FT' F → i i 匹配 T → *FT' * 匹配 F → i i 匹配 T' → ε E' → ε 接受 根据预测分析表对输入串进行分析 例:表达式的预测分析表如下: #E' E' →+TE' i*i# 现对输入串 i+i*i 进行分析,请将右图填写完整。

  18. 自底向上优先分析法 • 基本概念:简单优先分析法、算符优先分析法、素短语、最左素短语、算符优先分析法的局限性

  19. 考试方法 • 提供定义,根据文法写出简单优先关系表(P.96) • 提供定义,根据文法写出算符优先关系表(P.99、102-103) • 根据文法和算符优先关系表完成字符串的移进-规约变化过程(演示文稿)

  20. 写出算符优先关系表 文法G[E]:E→E+E|E-E|E*E|E/E|EE|(E)|i 步骤 符号栈 输入符号串 动作 例: 请将表格填写完整: 1) # i+i*i# #<i,移进 2) #i +i*i# #<i>+,规约 3) #E +i*i# #<+,移进 4) #E+ i*i# +<i,移进 5) #E+i *i# +<i>*,规约 6) #E+E *i# +<*,移进 7) #E+E* i# *<i,移进 8) #E+E*i # *<i>#,规约 9) #E+E*E # +<*>#,规约 10) #E+E # #<+>#,规约 11) #E # 接受 说明:现在是完整的。 对输入串i+i*i的算符优先分析过程

  21. 实验考试方法 • 根据源代码识别函数的功能(扫描字符、词法分析[单词分割]、规约、移进) • 写出你在做某个实验的步骤,你的程序的功能,其中某几个函数的接口定义(参数含义、返回值、全局变量变化、调用方法) • 画出模块结构图

More Related