180 likes | 510 Views
《编译原理》期末复习. 第3-4章基本概念和考试模块 出题方法 (包括实验). 文法 考试方法. 根据文法写出语言 根据语言写出文法(上下文无关文法或正规文法,同时要消除有害规则和多余规则) 容易出错的地方: 文法的写法(和正规式的区别、大小写规定) 语言的写法(文字表述、集合). 根据文法写出语言. 例:文法 G: S → 0S1, S → 01 问:它的语言是什么?. 答: L(G)={0 n 1 n |n ≥ 1}. 点击看答案. 根据语言写出文法. 已知语言为 {0 n 1 n |n ≥ 1}, 写出能生成该语言的一个上下文无关文法。.
E N D
《编译原理》期末复习 第3-4章基本概念和考试模块 出题方法 (包括实验)
文法考试方法 • 根据文法写出语言 • 根据语言写出文法(上下文无关文法或正规文法,同时要消除有害规则和多余规则) • 容易出错的地方: • 文法的写法(和正规式的区别、大小写规定) • 语言的写法(文字表述、集合)
根据文法写出语言 例:文法G:S→0S1, S→01 问:它的语言是什么? 答:L(G)={0n1n|n≥1} 点击看答案
根据语言写出文法 • 已知语言为 {0n1n|n≥1},写出能生成该语言的一个上下文无关文法。 答:文法为: G[S]: S→0S1 S→01 点击看答案
正规式考试方法 • 根据正规式写出语言(正规集) • 根据语言(正规集)写出正规式 • 根据DFA的状态图判断字符串能否被接受 • 根据正规式画出状态图 • 根据状态图写出正规式 • 将NFA化为DFA(给出过程,要求完成最后一步) • 将DFA化简(给出足够的提示) • 根据正规式或状态图查找字符串 • 根据DFA的转换函数或状态表画出状态图(反之亦可)
根据正规式写出语言 • 例. ={l,d},正规式r=l(l d) 定义的正规集是什么? 答:正规集是: 以l开头,后跟任意多个l和d,组成的串的集合。 (比较:{l,ll,ld,ldd,……} (标识符)) 点击看答案
根据语言写出正规式 • 写出标识符的正规式,其中设字母为l,数字为d,标识符长度不受限制。 答:正规式为 l(l d) 点击看答案
a a U a,b Q a b S V b b 根据DFA的状态图判断字符串能否被接受 • 例.字符串baab能否被下面的DFA接受 答:能被接受。 点击看答案
l,d l S Q 根据正规式画出状态图 • 正规式R= l(l d) 相应的状态图为:
l,d l S Q 根据状态图写出正规式 例: 求正规式R 答:R= l(l d) 点击看答案
实验考试方法 • 课程设计有关问题的思考 • 程序的功能,主要函数 • 程序的设计方法
文法和语言(例1) • G:S→0S1, S→01 • G: S →Ac|aB, A→ab, B→bc • G: S →cAd, A→ab, A→a • G[N]: N →D|ND, D→0|1|2|…|9 • G: E→E+E,E→E-E,E→E*E,E→(E),E→i(i为数值) • 略
上一页答案 • L(G)={0n1n|n≥1} • L(G)={abc} • L(G)={cabd, cad} • L(G)={由0-9组成的数字串} • 包含数值、加、减、乘、括号的表达式 • 各种数的集合: • 偶正偶数的集合(1)允许0开头;(2)不许0开头 • 自然数、正整数、被5等整除的数、某几位或位数确定的数、含有符号的数、小数等
文法和语言(例2) • G(E):E → ETP|TT → TFM|FF → a|b|cP → +|-M → *|/
上一页答案 • 以a,b,c为操作数,以+,-,*,/为操作符的表达式的逆波兰表示
文法和语言(例3) • {anbnambm|n,m≥0} • {1n0m1m0n|n,m≥0} • {WaWr|W属于{0|a}*, Wr表示W的逆}
上一页答案 • G[S]:S→ABA→aAb|εB→aBb|ε G[S]:S→1S0S→AA→0A1|ε G[S]:S →0S0|aSa|a
有穷自动机(例1) • 已知DFA M=({S,U,V,Q},{a,b},f,S,{Q}),其中f定义为:f(S,a)=U f(V,a)=Uf(S,b)=V f(V,b)=Qf(U,a)=Q f(Q,a)=Qf(U,b)=V f(Q,b)=Q画出其状态图。 • 其他例:P.54