编译原理文法和语言与语法分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
▲ 文法性质类型与语言
● 1型文法G的另种等价定义:若P中任一产生式形如
αβ
有α∈(Vn∪Vt)+,β∈(Vn∪Vt)*, 且|α|≤|β|,仅Sε例外,但 此时S不得出现在任何产生式右部。则G为上下文有关文法。
编译原理主讲:周有顺
版权所有 勿复制传播 3
一、文法和形式语言的定义 二、上下文无关文法及其语法树 三、两种语法分析思想的形成 四、自上而下的语法分析方法 五、自下而上的语法分析方法 *六、语法分析器的自动产生
2020年8月17日星期一
编译原理主讲:周有顺
版权所有 勿复制传播 4
一、文法和形式语言的定义
③若∑={a,b}, ∑上的一个形式语言为∑上所有可能的符号串集。 即L={a,b,ab,ba,aa,bb,……},此时用枚举法已经无法表示该语言了。
2020年8月17日星期一
编译原理主讲:周有顺
版权所有 勿复制传播 7
▲ 文法与语言
● 文法(形式)定义: 我们用四元式来作为描述一
个语言L的工具(会发生什么),用G表示。即G≡(Vt,Vn,P,S)其
答:G ≡ ( Vt = {a,b}, Vn = {A}, S ≡ A,
P = {Aa,Ab,AAa,AAb})
则,L = L(G)
证:A=>a|b|Aa|Ab=>(a|b)|A(a|b)=>(a|b)(a|b)*
● 文法是定义语言的好工具:只要定义它含哪些语 法范畴(Vn),每个语法范畴所含语法单位之间的关系(P), 还有基本单词符号集(Vt),最大的语法范畴是谁(S)。这 四元一定,则文法就定义了一个语言----由S和P所能产 生出的终结符串集。记为L(G)。即
S是文法开始符号∈Vn ----特殊非终结符号,它必须至少在某个产生
式左端出现一次。它代表所定义语言中我们最终感兴趣语法范畴。
P是产生式(规则式)集合(有限集)----定义语法范畴的一种书写规则。
形式:xAyxαy
A ∈Vn, x,y,α∈(Vt∪Vn)* 某即关于A的一条产
生规则。
2020年8月17日星期一
高级程序设计语言
编译原理
主讲 周有顺
(适用于2008级计算机本科师范专业)
2020年8月17日星期一
编译原理主讲:周有顺
版权所有 勿复制传播 1
第四讲 文法和语言与语法分析
──上下文无关文法(LL文法和LR文法) 与语法分析程序设计
2020年8月17日星期一
编译原理主讲:周有顺
版权所有 勿复制传播 2
回忆
语法分析的任务是把词法分析的结果单词符 号串进一步分解成各类语法单位 (语法范畴),并 分析它们之间的层次关系输出语法树。
语法分析器 由单词符号(终结符)和语法范畴 单词符号串──────→ (语法变量或称非终结符)构成
结点 组成的语法树
(词法分析) (创建) (语义分析的原始数据)
2020年8月17日星期一
+
L(G)={α|S====>α, α∈Vt*} P
2020年8月17日星期一
编译原理主讲:周有顺
版权所有 勿复制传播 10
▲ 文法性质类型与语言
● 一个文法G,若P中任一产生式形如 Aα ,有
A∈Vn, α∈(Vn∪Vt)+(或α∈(Vn∪Vt)*),则G为(扩充)上下文无关文 法。(2型)
● 一个文法G,若P中任一产生式形如 AαB或
语言。其中,∑是基本符号集(有限集),
∑*是∑上基本符号串集(一般为无限集),
● 例子:
①C语言是基本符号字母表上符号串集的子集合,每个C程序都是基本 符号字母表上的符号串,是C语言中的一个元素。
②假定∑={a,b,c}则L1={a,b,c},L2={a,aa,ab},L3={c,cc}可表示字 母表∑上的三个不同的形式语言。这里描述语言的方法是用枚举法。
编译原理主讲:周有顺
版权所有 勿复制传播 8
▲ 文法与语言
● 例子:定义一个语法范畴,有时需要好几个产生式,有
时还需要含有递归的产生式。如定义一个算术表达式的产生式如下:
G: Ei EE+E EE*E E(E)
EVt = {i语,+言,*元,(素,)i}+iㄈ的∑推导过, 程Vn = {E}
E+E S = E =>S E=+EE =∈> EV+ni => i+i i i P语=法{单左位边:列i出(1)的,i产(1)生, 规E(1则),序E(2列),}E+E,E
Aα 有 A,B∈Vn , α∈Vt+ ,则G为正规文法。 (3型)
● 一个文法G,若P中任一产生式形如
αAβαγβ
有γ∈(Vn∪Vt)+,α,β∈(Vn∪Vt)*,仅Sε例外,但此时S不得出现
在任何产生式右部。则G为上下文有关文法。
(1型)
● 一个文法G,若P中任一产生式形如 αB
有202α0年8,月β17∈日星(V期n一∪Vt)* 且α编至译原少理含主一讲非:周终有结顺符,则G为短版权语所文有法勿。复制(传0播型)11
即是定义符号串(程序)集合(语言)的工具。它 必须具备如下特点:
①准确又易于理解;
②由它定义形成的语言有利于句子分析和 翻译;
③通过它能自动产生有效的语法分析程序。
2020年8月17日星期一
编译原理主讲:周有顺
版权所有 勿复制传播 6
▲ 文法与语言
● (形式)语言:若Lㄈ∑*则称L是∑上的一个形式
中:
Vt是终结符集合(有限集)----单词符号集合即组成语言的不可再分的
基本符号。元素一般用小写英文字母表示。如常量、基本字等。
Vn是非终结符集合(有限集)----用来表示语法范畴的语法变量。往往
由它可以生成多个单词符号和其它非终结符等序列。元素一般用大写英文
字母表示。如表达式、语句、分程序、过程等。Vn∩Vt=φ
wk.baidu.com
其中:i代表单词符号即变量或常数,另+、*、(、)也是单词符号。
+
可见,文法定义了一个语言。记为L(G)={α|S==>α, α∈Vt+},
P
2020年8月17日星期一
编译原理主讲:周有顺
版权所有 勿复制传播 9
? 假定∑={a,b},而∑上的一个形式语言L为∑上所 有可能的非空符号串集,则该语言L用文法G怎样来描述。
● 回忆:程序语言的词法规则是可用表来 描述的,而在词法分析器的讨论和自动产生中, 词法是用正规式来描述定义的。
● 现在:程序语言的语法规则的定义和描 述用什么呢? ------文法!
2020年8月17日星期一
编译原理主讲:周有顺
版权所有 勿复制传播 5
▲ 文法与语言
● 文法是描述语言语法结构的一组形式规则。