第2章 文法和语言的基本知识
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译原理授课教案
§2.2
文法和语言的形式定义
2.2.1 形式语言 序列的集合称为形式语言。也就是说,每个 形式语言都是字母表上按某种规则构成的所有符 号串的集合,反之,任何一个字母表上符号串的 集合均可定义为一个形式语言。 形式语言不考虑语义。例如,C语言是其基 本符号字母表上的符号串的集合,而每个C语言 程序是基本符号的符号串。
编译原理授课教案
2.1.2 符号串的运算
1. 符号串的连结 设x和y是符号串,则串xy称为它们的连结。 即xy是将y符号串写在x符号串之后得到的符号 串。 例 如 , 设 x=abc , y = 10a , 则 xy = abc10a,yx = 10aabc。 注意:对任意一个符号串x,我们有 εx=xε=x。
编译原理授课教案
5. 集合A的正闭包A+与A的闭包A*定义为 A+=A1∪A2∪…An… A*=A0∪A1∪A2∪…∪An…={ε}∪A+ 例如,设A={a,b},则 A+={a,b,aa,ab,ba,bb,aaa,aab,…} A*={ε , a , b , aa , ab , ba , bb , aaa , aab,…} 可见,集合A的正闭包表示A上元素a,b构成 的所有符号串的集合,集合A的闭包比集合A的正闭 包多含一个空符号串ε。
编译原理授课教案
★ 注意推导和规则的区别:一是形式上的 区别,推导用“=>”表示,规则用“→”表示; 二是对文法G中任何规则A→a,有A=>,即推导的 依据是规则。 2、推导 如果存在一个直接推导序列: a0 => a1 => a2 => … => an 则称这个序列是一个从a0 至an 的长度为n的 推导,记为a0=>an,即a0=>an 表示从a0 出发,经一 步或若干次规则可推导出an。
编译原理授课教案
终结符号是组成语言的基本符号,是一个语 言的不可再分的基本符号,通常用小写字母表示。 例如,上例中的0和1。 2. 文法 文法是规则的非空有穷集合,通常表示成四 元组G=(VN,VT,P,S)。 VN是规则中非终结符号的集合。 VT是规则中终结符号的集合。 P是文法规则的集合。
编译原理授课教案
编译原理授课教案
描述该语言的文法不是唯一的。对例2.1 的语言L就能设计出文法G′ G′= ( { A,B,D},{a,b},P,A) 其中,P为 A→B|D B→aa|aBa D→bb|bDb G和G′是两个不同的文法,如果它们 描述的语言相同,那么称G和G′为等价文法。
编译原理授课教案
问题:
编译原理授课教案
当 n = 3 L = { aaaaaa,bbbbbb} …………… L = { aa,bb,aaa,bbbb,aaaaaa,bbbbbb,…} 因此,定义语言L的文法 G ={ VN,VT,P,S } 其中: VN = { A ,B ,D }, VT = { a ,b} P = {A→aa|aaB|bb|bbD B→aa|aaB D→bb|bbD} S = A
例如, ∑′={0,1}是一个字母表,由0 和1两个元素组成。 不同的语言有不同的字母表,如英文的字 母表是26个字母、数字和标点符号的集合,C语 言的字母表是由字母、数字和若干专用符号组 成。 2. 符号(字符) 字母表中的元素称为符号,或称为字符。 例如,前述例子中,a,b,c是字母中∑ 中的符号;0和1是字母表∑′中的符号。
重点与难点
• 本章重点就是二义性判断和转化以及高 级语言文法的内容。 • 文法分类是难点
编译原理授课教案
对程序设计语言的描述是从语法、语 义和语用三个因素来考虑的。所谓语法是 对语言结构的定义;语义是描述了语言的 含义;语用则是从使用的角度去描述语言。 为了精确定义和描述程序设计语言,需采 用形式化的方法。所谓形式化的方法,是 用一整套带有严格符号规定的符号体系来 描述问题的方法。
例如,设x = abc,则 x0=ε x1= abc x2 = xx =abcabc ……… 4. 集合的幂运算 设A是符号串的集合,则集合A的幂运算 定义为: A0 = {ε} A1 = A
编译原理授课教案
A2 = AA ……… An = AAAAA……A = AAn-1 ( n > 0 ) 例如,设A= { a , b} A0 = {ε} A1 = { a ,b } A2 = AA = { aa ,ab ,ba ,bb } A3 = AAA = A2A = { aaa,aab,aba, abb,baa,bab,bba,bbb} …………
编译原理授课教案
例: 设有文法G[E]:
G[E]=({E,T,F},{i,+,*,(,)},P,E) 其中,P为 E→E+T|T T→T*F|F F→(E)|i 对i+i*i有如下直接推导序列 E E+T T+T F+T i+T i+T*F => i+FF i+i*F i+i*i 我们可记为Ei i*i。
编译原理授课教案
例如,前述例中一组规则 A→0 A→1 A→A 0 A→A 1 描述的语言序列只可能是由0和1组成的符号 串,即∑+ ={0,1,00,01,10,000,100,…}。 规则中出现的符号分为终结符号和非终结符 号两类。 非终结符号能派生出符号或符号串,即一定 符号串的集合,用大写字母表示或用尖括号把非终 结符号括起来。例如,例中的A。
编译原理授课教案
2.2.3 文法的形式定义
1. 直接推导 令G是一文法,我们从xAy直接推出xay, 即 xAy=>xay , 仅 A→a 是 G 的 一 个 规 则 且 x,y∈(VN∪VT)*,也就是说从符号串xAy直接推导 出xay仅使用一次规则。 例如,设有文法G[S](符号G[S]表示S为文 法G的开始符号) G[S]=({S},{0,1},P,S)
S是一个非终结符号,称为文法的开始符号或 文法的识别符号,它至少要在一条规则中作为左部 出现。 下面举例说明给定语言L后,如何写出能正确 描述此语言的文法G。 例 2.1 设字母表∑={ a,b},试设计一个 文法,描述语言 L = { a2n,b2n| n ≥1} 分析 :当 n = 1 L = { aa , bb } 当 n = 2 L = { aaaa, bbbb}
编译原理授课教案
VN = { I, L , D} VT = { a,b,c……..,x,y,z,0,1,2,……,9} P = { I →L|IL|LD L→a|b|c|……|x|y|z D→0|1|2|3|……|9} S = I 若将定义标识符的的设计成 G′= (VN ,VT, P , S) VN ,VT,S同上, P = { I → L | ID
编译原理授课教案
2.集合的乘积 设A和B是符号的集合,则A和B的乘积定义 为: AB={xy|X∈A,y∈B} 例如,设A={a,b}B={c,d},则AB = { ac ,ad,bc,bd}。 集合的乘积是满足于x∈A,y∈B的所有符号 串xy所构成的集合。 由于对任意的符号串x,总有εx =xε = x, 所以,对任意集合A,有: {ε}A = A {ε}=A
编译原理授课教案
例2.4 :设字母表∑={a,b},试设计一个文
法,描述语言L={abna|n≥0} 分析 该语言中符号串的结构特征是 当n=0 L={aa}(b0=ε) 当n=1 L={aba} 当n=2 L={abba} …… L={aa,aba,abba,…} 所以,定义语言的文法为 G=({A,B},{a,b},{A→aBa,B→Bb|ε},A)
编译原理授课教案
§2.1 字母表和符号串的基本概念
2.1.1 字母表和符号串
1. 字母表 字母表是元素的非空有穷集合。 例如,∑={a ,b ,c} 根据字母表的定义,∑是字母表,它由a,b, c三个元素组成。 字母表中至少包含一个元素。字母表中的元 素,可以是字母、数字或其他符号。
编译原理授课教案
编译原理授课教案
试设计一个表示所有标识符的文法。 例2.2 :
分析 题意是用文法定义标识符,必须确 定P中规则。为了设计出一组规则,首先应搞清 楚集合中符号串的结构特征。标识符的定义是 字母或以字母开头的字母数字串,结构如图:
字母 字母或数字串
用I代表标识符,L代表字母,D代表数字, 则定义标识符的方法为 G = (VN ,VT, P , S)
描述该属于语言L的方法为什么不是但G″? G″ = ( { A },{ a,b},P , A ) 其中,P为: A→aa|bb|Aaa|Abb 对于文法G″来说,它所产生的所有符号 串都应该属于语言L,但G″产生的有些符号串, 如aabb,bbaa,…不属于语言L,即设计的文法超 出了所定义语言的范围。
编译原理授课教案
特别指出的是,ε是符号串,不是集合, 而{ε}表示由空符号串ε所组成的集合,但 这样的集合不是集合φ={}。 3. 符号串的幂运算 设x是符号串,则x的幂运算定义为 x0=ε X1= x x2 = xx ………… xn = xxxx……xx=xxn-1 ( n > 0)
编译原理授课教案
编译原理授课教案
对形式语言的描述有两种方法 : ⑴ 当语言为有穷集合时,用枚举方法来表示 语言: 例如:设有字母表A={a,b,c},则 L1={a,b,c} L2={a,aa,ab,ac} L3={c,cc} 均表示字母表A上的一个形式语言。 ⑵ 对无穷集合的语言,需要设计文法来描述:
编译原理授课教案
编译原理授课教案
其中,P为 S→01|0S1 有如下直接推导: S=> 01 使用规则S→01, 此时x=ε,y=ε, S=>0S1 使用规则S→0S1,此时x=ε,y=ε, 0S1=>0011 使用规则S→01, 此时x=0,y=1 00S11=>000S111 使 用 规 则 S→0S1 , 此 时 x=00, y=11 000S111 => 00001111 使用规则S→01, 此时x=000,y=111
编译原理授课教案
L→a|b|c|……|x|y|z D→0|1|2|3|……|9} 该文法不能定义ab,abc,……仅由字母串 组成的标识符,缩小了所定义语言的范围。
例2.3 :用文法定义一个含+,*的算术表
达式,定义用下述自然语言描述:变量是一
个表达式;
编译原理授课教案
若E1和E2是算术表达式,则E1+E2,(E1)也是 算术表达式。 分析 算术表达式的定义用自然语言描述, 这是对算术表达式的非形式定义,题意用文法 来定义算术表达式,即是用形式化的方法定义 表达式。定义算术表达式的文法为 G =({E},{ i,+,*,(,)},P,E) 其中P为 E→i|E+E|E*E|(E)。
例如:用A表示∑ + ,用式子A→0表示符号串 0∈A或A生成符号串0,符号“→”读做“生成”或 “由……组成”。则集合A可表示成 A→0 A→1 A→A0 A→A1 显然,由A生成的符号串属于∑+,这就是用文 法描述语言。
编译原理授课教案
2.2.2 文法的形式定义
1. 规则 规则也称产生式,它是一个符号与一个符号 串的有序对(A,β),通常写做 A→β(或A::=β) 其中,A是规则左部,它是一个符号;β是 规则右部,它是一个符号串;“→”和“::=”表 示“定义为”或”生成”,意思是左部符号用右 部的符号串定义或左部符号生成右部符号串。
编译原理授课教案
编译原理授课教案
学习本章目的
• 学生通过学习了解高级程序语言的一些 基本概念及其分类。以及语法结构的形 式描述问题。 • 讲授6课时 • 以板书为主
编译Fra Baidu bibliotek理授课教案
• 本章主要讲解的内容为乔姆斯基文法及 其分类,文法的二义性判断和证明,上 下文无关文法的简化和语法树。
编译原理授课教案
编译原理授课教案
3. 符号串(字) 符号的有穷序列称为符号串。 例如,设有字母表∑={a,b,c},则有 符号串a,b,ab,ba,cba,abc…。 符号串总是建立在某个特定字母表上的 且只能由字母表上的有穷多个符号组成。符号 串中符号的顺序很重要,如ab和ba是字母表∑ 上的两个不同的符号串。不包含任何符号的符 号串,称为空符号串,用ε表示,即空符号串 由0个符号组成,其长度{ε}=0。