第二章 形式语言基础(3)

合集下载

第2章形式语言的基本知识

第2章形式语言的基本知识
例:Σ ={a,b} Σ *={ε ,a,b,aa,ab,ba,bb,aaa,aab,…} Σ +={a,b,aa,ab,ba,bb,aaa,aab,…}
• 7.符号串的 前缀:s为符号串,把s从尾部删去若干个 (包括0个)符号后所余下的部分称为s的前缀。
符号串abc的前缀是什么?
• 8.符号串的 后缀:s为符号串,把s从前部删去若干个 (包括0个)符号后所余下的部分称为s的后缀。
文法
<赋值语句>::=<标识符>“=”<表达式> <表达式>::=<表达式>“+”<表达式> | <表达式>“*”<表达式 > <表达式>::=“(”<表达式>“)” | <标识符> | <整数> | < 实数>
赋值语句
标识符
表达式
=
y
表达式 + 表达式
y =x+r*6
标识符 表达式
表达式
*
x 标识符
推导方法:从一个要识别的符号 开始推导,即用相应规则的 右部来替代规则的左部, 每次仅用一条规则去进行推导。
<句子> => <主语><谓语> => < 代词><谓语>
<句子>::=<主语><谓语> <主语>::=<代词>|<名词> <代词> ::=你|我|他 <名词>::= 王民|大学生|工人|英语 <谓语>::=<动词><直接宾语> <动词>::=是|学习 <直接宾语>::=<代词>|<名词>

第2章 形式语言基础

第2章 形式语言基础

研究符号串集合的表示方法、结构特性 以及运算规律。
第2章 形式语言基础
【内容提要】
2.1 形式语言是符号串集合 2.2 形式语言是由文法定义的 2.3 各种语法成分的定义 2.4 两类特性文法 2.5 文法变换方法 2.6 形式语言的分类
2.1 形式语言是符号串集合
【形式语言】是字母表上的符号按一定的 规则组成的所有符号串集合;其中的每个符号串 称为一个句子。
【例2.2】 L2={ abmc,bn | m>0,n≥0 } 字母表∑2= {a,b,c},
▪句型1: abmc 有句子:abc, abbc, abbbc,…
▪句型2: bn 有句子:, b, bb, bbb,…
【注】 (1) b0=(空符号串),b1=b,b2=bb,b3=bbb,…
(2) L1 为有限语言; L2 为无限语言。
5.固有头,固有尾
对于每个符号串s, s和ε两者都是符号串s的前缀, 后缀和子串。 符号串s的固有头,固有尾:
z=xy,x是z的头,y是z的尾,如果x非空则y是固 有尾,如果y非空则x是固有头。 例:在Z=abc Z的头:ε,a,ab,abc;其中固有头:ε,a,ab
Z的尾:ε,c,bc,abc;其中固有尾:ε,c,bc
则该集合的文法是:
(1) A->aBa B->b|Bb|bB
(2) Z->ABC A->a C->a B->bB|Bb|b
(3) A->aB B->ba|bB 练习2. Σ={a,b,c}上的字符串集
A={ancbn|n>=0} 该集合的文法是:
A->aAb|c
【例2.8】标识符的文法
【标识符】指字母开头的字母、数字序列。

第二章 形式语言概论

第二章 形式语言概论

语言的有穷表示有两个途经
生成方式(文法)
语言中的每个句子可以用严格定义的 规则来构造。
识别方式(自动机)
用一个过程,当输入的一任意串属于 语言时,该过程经有限次计算后就会停止 并回答“是”,若不属于,要么能停止并回 答“不是”,要么永远继续下去。
§2.2 文法及其分类
2.2.1 文法的定义
A*=∪Ai(i≥0)=A0∪A1∪A2∪A3∪…
例如:A={a,b}
则A*={ε,a,b,aa,ab,ba,bb, aaa,aab,aba,abb, …}
A*与A+的关系:
A*=A0∪A+
A+=AA*=A*A
由此得出结论:n语言是由句子组成的集 合,是由一组符号所构成的集合。换言之,字 母表S上的一个语言是S上的一些符号串的 集合。(字母表S上的每个语言是S*的一个 子集)。
的规则(或说是P中的一个产生式),和 是V*中的任意符号,若有符号串v,w,满 足v= ,w= ,则称v (应用规则 )直接产生w,或v直接推导出w,或 w是v的直接推导,或w直接归约到v,记 作v w。
例:
文法G[S]由如下规则组成: SA A AB|B B 0|1|2|…|9 其中S是文法 G [S] 的识别符号,该文法的 字母表为:V={S,A, B,0,1,…,9} 用这些规则和直接推导的定义可以推出所有 正整数,如可推导出24:
P15~P16例2.6~例2.10的文法类型。

2型文法可改写成3型文法。
例:将如下的上下文无关文法改写为等价的 正规文法。 G[S]:SabcA AbcB Ba 改写后G[S]: AbE SaM EcB MbN Ba NcA
文法分类的意义
文法分类对于实现程序设计语言的编译 程序具有重要意义。

第二章 形式语言概述

第二章 形式语言概述
– E + T * i,i,(E + T)都是G的句型。 – i + i * i,(i + i) * i,i都是G的句子。
2.3 文法的分类
0型文法(短语文法):
– 对产生式无限制。
1型文法(上下文相关文法): – 文法中任意的产生式→,则存在1,2 (VNVT)*; (VNVT)*;AVN;使得 = 1A2, = 12。
– A+ = A1 A2 … … – A+ = A A*
例:
– { 0, 1 }+为所有二进制串的集合。
2.1 基本概念
语言
– 一个语言为满足一定规律的串的集合。
语言的表示方法
– 集合表示:{ 1, aa, b }, { anbn| n > 0 }。 – 串集合的运算:a+{1, a}*。
推导:如果存在一个直接推导序列 = 0 = ,n > 0,则称为的一个推导,记为
''。1


n
''* 表示 '' 或者 =
例:10为S的推导,1100为S的推导,111S000为1S0的推 导。
2.2 文法与语言
最左推导:如果A ,VT*,AVN, , (VNVT)*,则称为A的一个最左推导。
– 符号的有穷序列称为符号串 – 不包含任何符号的串称为空串,记为
– 串α中符号的个数称为串α的长度,记为||
2.1 基本概念
串集合的乘积 – 令A、B为两个串集合,则A与B的乘积A·B = { | A, B },也可以缩写为AB – {} ·A = A ·{} = A, Ø·A = A ·Ø = Ø

第二章形式语言的基本知识

第二章形式语言的基本知识

第二章形式语言的基本知识第二章形式语言的基本知识2-1什么是形式语言2-2字母表和符号串的基本概念2-3用文法产生法描述语言2.3.1通过文法产生语言的方式2.3.2为已知的语言构造相应的文法2-4句型分析2.4.1短语和简单短语2.4.2文法的二义性和语言的二义性2-5文法和语言的分类2-6文法的其他表示方法2-7C--语言的形式定义2-8小结2-1什么是形式语言2-2字母表和符号串的基本概念2-3用文法产生法描述语言2.3.1通过文法产生语言的方式2.3.2为已知的语言构造相应的文法2-4句型分析2.4.1短语和简单短语2.4.2文法的二义性和语言的二义性2-5文法和语言的分类2-6文法的其他表示方法2-7C--语言的形式定义2-8小结2- 1什么是形式语言一、形式语言的提出目标程序源程序编译程序如何确切地描述或定义高级程序设计语言形式语言2-1什么是形式语言一、形式语言的提出形式语言是研究符号的语言,它仅考虑符号间的关系,不考虑含义。

即用数学方法(主要是代数方法)对语言进行形式化描述。

从非形式化的角度来讲,语言是人们交流思想的工具,从语言学本身来说,也是一门古老的科学,在很早以前人们就用数学方法开始对语言学进行研究。

1847年,俄国数学家布拉库夫斯基就用概率论进行语法词源及语言历史比较研究。

1904年,波兰语言学家指出,语言学家不仅要掌握初等数学而且还要掌握高等数学。

1931年,俄国数学家就用概率论研究俄语元音字母和辅音字母序列。

特别是1946年电子计算机问世以来更加促使数学和语言学结合研究。

2-1什么是形式语言一、形式语言的提出1956年,28岁的N.Chomsky(乔姆斯基)在《信息论杂志》上发表了《语言描写的三个模型》,他首次采用Markov模型来描写自然语言,对于有限状态模型、短语结构模型和转换模型等三个模型,从语言学和数学的角度进行了理论上的分析,建立了形式语言理论,具有划时代意义。

编译原理 形式语言ppt课件

编译原理 形式语言ppt课件

表示 ,例如上例5中 步经 的过 推导记为
句子 thm e onk动 ey词 冠词 名词
规那么的简化表示
在前面的语法规那么定义中,有些语法范畴〔如<名 词>、<动词>〕有假设干条不同的规那么来定义它, 为简明起见,我们可以将它们写在同一个左部语法
范畴下,将其定义值用符号“|〞〔读作‘或’〕隔 开。如<名词>、 <动词>、 <冠词>的定义规那么可 简记为
正闭包 A+ = A1∪A2∪A3∪…称为Σ的正闭包 A + 表示上的除ε外的一切用穷长串的
集合
注: Σ* = Σ0∪Σ+ 注: Σ+ = ΣΣ* = Σ* Σ
字母表上的一个言语是上符合某种规那么的一 些符号串的集合 ,是*的一个子集
例如:Σ={a,b} Σ*={ε,a,b,aa,ab,ba,bb,aaa,aab,…} 1. 集合{ab,aabb,aaabbb,…,anbn,…}或 {w|w∈Σ*且w=anbn,n≥1}为字母表上的一个言语 2. 集合{a,aa,aaa,…}或{w|w∈Σ*且w=an,n≥1}为 字母表上的一个言语
<句子> <主语短语><动词短语>
所得符号串<主语短语><动词短语>含有两个语法实体,可 对其中任一个〔例如对<动词短语>〕进展新的推导
<句子> <主语短语><动词短语>
<主语短语><动词><宾语短语>
反复上述过程,可得到一个推导序列〔见下页〕。
推导长度
推导 所用 所得的符号串
步 规那么

第2章形式语言概论

第2章形式语言概论
G=(VN,VT,P,S) 其中: VN={I, L, D} VT={a,b,c, … x,y,z,0,1,2,…
,P9=}{ I→L| I L| I D L→a | b | c | … | x | y | z D→0 | 1 | 2 | 3 | … | 9
S=I }
文法的形式定义
若将定义标识符的文法设计成: G=(VN,VT,P,S )
1. 字母表 元素的非空有穷集合。 例如,∑={ a, b, c } 根据字母表的定义,Σ是字母表,
它由a、b、c三个元素组成。
字母表和符号串
注意: (1) 字母表中至少包含一个元素。 (2) 字母表中的元素, 可以是字母、 数字或其他符号。 例如,∑' ={0, 1} 是一个字母表,由0、1两个元素 组成。
第2章 形式语言概论
形式语言理论是编译的重要理论 基础。本章主要介绍编译理论中用到 的有关形式语言理论的最基本概念, 重点介绍如何采用形式化的方法描述 程序设计语言。
第2章 形式语言概论
字母表和符号串 文法和语言的形式定义 文法和语言的分类 短语、直接短语和句柄 语法树和文法的二义性
概述
当n=1 L={aa, bb} L={a2n, b2n | n≥1}
当n=2 L={aaaa, bbbb} 当n=3 L={aaaaaa, bbbbbb}
…… L={aa, bb, aaaa, bbbb, aaaaaa, bbbbbb, … …} 即语言L是由偶数个a,偶数个b这样的 符号串组成的集合。
幂运算定义为:
A0={} A1=A A2=AA
… An= AA … A=AAn-1(n>0)
n
符号串的运算
例如,设A={ a, b },则 A0={} A1=A={ a, b } A2=AA={ aa, ab, ba, bb } A3=AAA=A2A

《编译原理》第2章 编译基础-形式语言与有穷自动机

《编译原理》第2章 编译基础-形式语言与有穷自动机
整理课件
句型、推导
G[E]: E→E+T|T T→T*F|F F→(E)|a
对于句子a+a*a 有不同 的推导
EE+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a
EE+T E+T*F E+T*a E+F*a E+a*a T+a*a F+a*a a+a*a
整理课件
例:奇偶测试器
0
0
1
q0
q1

1
自动机:M=(Q,∑ ,δ ,q0,Z)
Q={ q0, q1}
∑ ={0,1}
q0=q0 Z={q1}
整理课件
映射函数:
δ( q0,0)= q0 0
0
δ( q0,1)= q1
1
δ( q1,0)= q1 q0
q1
δ( q1,1)= q0
1
例:000110001
整理课件
第四节 正规文法与有穷自动机 1、正规文法 产生的语言的推导 例:文法 G=(VN,VT,P,S) 其中: VN={A,B,C}
VT={a,b,c} S=A P:A →aB A →aA
B →bB B →bC C →cC C →c
整理课件
A=>aA=>aaA=>…..=>aa…aB =>aa…abB=>aa…abb…bC =>aa…abb…bcC=> aa…abb…bccC => aa…abb…bcc…c
D→ε
Aa→bD
自然语言属于上下文有关文法
整理课件
文法的类型
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、自底向上语法分析
1.分析基本思想 1.分析基本思想
自底向上分析是从所给的符号串w开始, 自底向上分析是从所给的符号串w开始,在其中寻找 从所给的符号串 与文法规则右部相匹配的子串, 与文法规则右部相匹配的子串,并用该规则的左部取代 此子串(即归约) 重复此过程,步步向上归约, 此子串(即归约),重复此过程,步步向上归约,最后试 将符号串w归约到文法识别符号 如归约成功, 文法识别符号, 图将符号串w归约到文法识别符号,如归约成功,则符号 是文法的句子。 串w是文法的句子。
cad
i
S c a
ERROR!
9
A b
d
S⇒cAd
⇒cabd
若按自上而下语法分析程序的步骤进行分析判断,其过程如下: 若按自上而下语法分析程序的步骤进行分析判断,其过程如下: A∷=ab|a P: S∷=cAd A∷=ab|a
(4) 我们应 ) 把A的第一 的第一 个候选式所 扩展的子树 剪掉, 剪掉,还应 把指针i恢复 把指针 恢复 到进入A时 到进入 时 所指的输入 符号a, 符号 ,再 选用A第二 选用 第二 个候选式来 构造语法树 构造语法树 .
19
为了具体实现方便,我们统一以符号“# 为了具体实现方便,我们统一以符号“#”作为待分析符号串左右分界符,作为初始状 态,先将符号串的左分界符压入符号栈,作为栈底符号。对符号串abbcde分析过程如 态,先将符号串的左分界符压入符号栈,作为栈底符号。对符号串abbcde分析过程如 下所示。
步骤
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12)
§2.4 语法分析初步
一、自顶向下语法分析
1.分析基本思想 2.分析方法
二、自底向上语法分析
1.分析基本思想 2.分析方法
14
第二章
形式语言基础知识
§2.4 语法分析初步
一、自顶向下语法分析
1.分析基本思想 2.分析方法
二、自底向上语法分析
1.分析基本思想 2.分析方法
15
§2.4 语法分析初步
一、文法分类 二、文法和自动机 三、压缩过文法
§2.3 形式语言基本概念和 术语
一、元语言 二、符号和符号串 三、产生式(规则) 四、文法 五、推导和归约 六、句型和句子 七、语言
§2.6 文法其他表示法
一、扩充巴科斯范式 二、语法图
cad
i
S c A d
S⇒cAd
7
若按自上而下语法分析程序的步骤进行分析判断,其过程如下: 若按自上而下语法分析程序的步骤进行分析判断,其过程如下: A∷=ab|a P: S∷=cAd A∷=ab|a
( 2) 此时该树最左 ) 边末结点c与 的第 边末结点 与 x的第 一个符号c相匹配, 于是调整指针i使其 于是调整指针 使其 指向输入串下一符 号a。我们再试图 让树的中间端末结 去匹配a,显然, 点A去匹配 ,显然, 去匹配 由于A是非终结符 是非终结符, 由于 是非终结符 , 它不可能直接与终 结符a匹配,我们 只得在文法中选择 以 A 为左部的产生 这里以A 式 , 这里以 为左 部的产生式有两个, 部的产生式有两个 , 我们试着用第一个 选择来匹配输入串 , 并扩展语法树。 并扩展语法树。
编 译 原 理
Compiler Principles 南京邮电大学计算机学院 蒋凌云 Jianglingyun@
教材:《编译技术原理及其实现方法》王汝传 编著
1
第二章
形式语言基础知识
§2.4 语法分析初步
一、自顶向下语法分析
1.分析基本思想 2.分析方法
二、自底向上语法分析
采用自顶向下分析时,不仅可能遇到回溯问题, 采用自顶向下分析时,不仅可能遇到回溯问题,而且还可能由于文 回溯问题 法中有左递归规则而陷入无限循环 左递归规则而陷入无限循环。 法中有左递归规则而陷入无限循环。我们将在第四章中要介绍这两方 面问题及其解决办法。 面问题及其解决办法。
13
第二章
形式语言基础知识
符号栈
# #a #ab #aA # aAb #aA #aAc #aAcd #aAcB #aAcBe #S #S
输入符号串
abbcde# bbcde# bcde# bcde# cde# cde# de# e# e# # # #
动作
左界符进栈 a进栈 a进栈 b进栈 b进栈 用A→b归约 b进栈 b进栈 用A→Ab归约 A→Ab归约 c进栈 c进栈 d进栈 d进栈 用B→d归约 B→d归约 e进栈 e进栈 用S→aAcBe归约 S→aAcBe归约 接受
S c A a
6
d
若按自上而下语法分析程序的步骤进行分析判断,其过程如下: 若按自上而下语法分析程序的步骤进行分析判断,其过程如下: A∷=ab|a P: S∷=cAd A∷=ab|a (1)为了自上 而下为符号串 x建立语法树, 首先将文法的 开始符号S作 为树的根结点, 为树的根结点 , 并设输入串指 并设输入串 指 针i指向其第 一个符号c, 然后用S为左 部的产生式来 扩展这棵树. 扩展这棵树
16
第二章
形式语言基础知识
§2.4 语法分析初步
一、自顶向下语法分析
1.分析基本思想 2.分析方法
二、自底向上语法分析
1.分析基本思想 2.分析方法来自17§2.4 语法分析初步
二、自底向上语法分析
2.分析方法 2.分析方法
例2.24 设有文法G=(V ,P,S),其中 设有文法G=(VN,VT,P,S),其中 VN={A,B,S} VT={a,b,c,d,e} P: S∷=aAcBe A∷=Ab|b B∷=d 试分析w=abbcde是否为此文法的句子。 w=abbcde是否为此文法的句子 试分析w=abbcde是否为此文法的句子。
18
为了描述分析归约过程,先设立一个符号栈, 为了描述分析归约过程,先设立一个符号栈,即将输入串中符号 逐个移进栈,当栈顶符号串形成一个句柄时,就进行一次归约, 逐个移进栈,当栈顶符号串形成一个句柄时,就进行一次归约,把 栈顶句柄那个符号串用相应规则左部的非终结符号来代替, 栈顶句柄那个符号串用相应规则左部的非终结符号来代替,接着再 检查在栈顶是否形成新的句柄,若出现新的句柄,那么再进行归约; 检查在栈顶是否形成新的句柄,若出现新的句柄,那么再进行归约; 若没有形成新句柄,则再从输入符号串中移进新符号, , 若没有形成新句柄,则再从输入符号串中移进新符号,……,如此继续 到整个输入符号串处理完毕。 到整个输入符号串处理完毕。 最终,如栈底为开始符号,则输入符号串是该文法的句子, 最终,如栈底为开始符号,则输入符号串是该文法的句子,报告 成功,否则,是不合法的符号串,报告错误。 成功,否则,是不合法的符号串,报告错误。
由上述可知,自底向上分析中,每次归约时,应当归约当前句型的句柄, 由上述可知,自底向上分析中,每次归约时,应当归约当前句型的句柄, 寻找或确定一个句型的句柄是一个关键问题,在第( 步是b归约为A, A,但 寻找或确定一个句型的句柄是一个关键问题,在第(3)步是b归约为A,但 在第( 为什么不用b归约为A,而用Ab归约为A A,而用Ab归约为 在第(5)步,为什么不用b归约为A,而用Ab归约为A呢?在第四章将作进一 20 这个问题。 步讨论 这个问题。
4
第二章
形式语言基础知识
§2.4 语法分析初步
一、自顶向下语法分析
1.分析基本思想 2.分析方法
二、自底向上语法分析
1.分析基本思想 2.分析方法
5
§2.4 语法分析初步
一、自顶向下语法分析(导出法) 自顶向下语法分析(导出法)
2. 分析方法
例如: 设有文法G=(V ,P,S),其中 其中 例如: 设有文法G=(VN,VT,P,S),其中 ={S,A} VN={S,A} ={a,b,c,d} VT={a,b,c,d} P: S∷=cAd A∷=ab|a A∷=ab|a 试分析符号串x=cad是否是文法G的句子. x=cad是否是文法 试分析符号串x=cad是否是文法G的句子. 根据推导S cad容易判断出x=cad是该文法的句子 容易判断出x=cad是该文法的句子。 根据推导S⇒cAd⇒cad容易判断出x=cad是该文法的句子。 若用画语法树的方法我们同样可以判断出cad是文法的句子。 cad是文法的句子 若用画语法树的方法我们同样可以判断出cad是文法的句子。
第二章
§2.1 引言
一、形式语言提出 二、语言描述方法
形式语言基础知识
八、 递归文法 九、短语和简单短语 十、最左推导和最右推导 十一、文法二义性
§2.2 用文法生成法对语言 进行描述
一、巴科斯范式 二、语法和语义 三、语法树
§2.4 语法分析初步
一、自顶向下语法分析 二、自底向上语法分析
§2.5 文法和语言分类
cad
i
S c A a d
S⇒cAd
⇒cad
11
若按自上而下语法分析程序的步骤进行分析判断,其过程如下: 若按自上而下语法分析程序的步骤进行分析判断,其过程如下: P: S∷=cAd A∷=ab|a
(6) 最后考 ) 虑S的第三 的第三 个端末结点 d,它与 所 ,它与i所 指的最后一 个输入符号 匹配, 匹配,因此 完成了构造 输入串 的 输入串x的 语法树的任 务,从而证 明了x是所 明了 是所 给文法推导 出一个句子。 出一个句子。
cad
i
S c a A b d
S⇒cAd
⇒cabd
8
若按自上而下语法分析程序的步骤进行分析判断,其过程如下: 若按自上而下语法分析程序的步骤进行分析判断,其过程如下: A∷=ab|a P: S∷=cAd A∷=ab|a
( 3) 此时子树A最左 ) 此时子树 最左 端末结点a与i所指 的符号a匹配 匹配。 的符号 匹配。于是 再调整i使其指向下 再调整 使其指向下 一输入符号d, 一输入符号 ,并试 图用A的最右端末 结点b与之匹配。 但它们不匹 配 , 因 此,子树A的匹配 失败 , 这意 味着选 用A的第一个候选 式对此时的 情况不 适合 , 不能 构造出 输入串x的语法树 的语法树, 输入串 的语法树, 在这种情况 下 , 我 们 应该回头看看(回 应该回头看看 回 溯 )是否还有其它的 是否还有其它的 候选式可供利用. 候选式可供利用
相关文档
最新文档