版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 第四章第四章 语法分析语法分析 2 本章内容本章内容 q 上下文无关文法 q 自顶向下分析和自底向上分析 q LL文法和LR文法 q Yacc 3 词词 法法 分析器分析器 记记 号号 取下一个取下一个 记号记号 源程序源程序 语法语法 分析分析 树树 前端的前端的 其余部分其余部分 语法分语法分 析器析器 中间中间 表示表示 符号表符号表 4.1 语法分析器的作用语法分析器的作用 4 4.2 上下文无关文法上下文无关文法 q 正则表达式的局限性 正规式用于定义一些简单的语言,能表示给定 结构的固定次数的重复或者没有指定次数的重 复。 例:a5b5,a(ba)5, a(ba)* , a*
2、b* 当自动机构造好后,anbn的n是确定的。 正规式不能用于描述配对或嵌套的结构,例: 配对括号串的集合,例如:()() anbn 5 q 例如,包含递归结构的条件语句不能用正规表达式 说明,可以用产生式表示: stmt if expr then stmt else stmt| stmt if then else stmt| 正规表达式:正规表达式:(if then else)* 6 4.2.1上下文无关文法的定义上下文无关文法的定义 上下文无关文法是四元组(VT , VN , S, P) VT : 终结符集合 VN : 非终结符集合 S : 开始符号, S VN 唯一一个开始符号唯一一个开
3、始符号 P :产生式集合,产生式形式为:A ,AVN, (VNVT )* stmt if expr then stmt else stmt statement 语句 7 例例4.2 定义算术表达式的文法定义算术表达式的文法 expr expr op expr expr (expr) expr expr expr id op + | - | * | / operator运算符 operand 操作数 非终结符集合VN =expr,op 终结符集合VT=+,-,*,/, (, ),id expr是开始符号 8 4.2.2 符号的使用约定符号的使用约定 q 我们一般用大写字母表示非终结符,小写字母表
4、示 终结符, q 终结符Terminals: a, b, c, +, -, punc, 0, 1, 9, Black strings: id, if q 非终结符Non-Terminals: A, B, C, S, 斜体串italic strings q 文法符号: X, Y, Z 表示非终结符非终结符或终结符号终结符号 q 终结符号串: u, v, z in VT* 字母表中排在后面的小写字母 q 文法符号串: , in (VT VN)* 省得对每个文法要说明哪些是终结符,哪些是非终结符。省得对每个文法要说明哪些是终结符,哪些是非终结符。 u=aabbcc =abAcBd 9 符号的使用约定
5、符号的使用约定 q 产生式: A 1; A 2; ; A k; A 1 | 2 | | k 10 E E A E | ( E ) | -E | id A + | - | * | / 例例4.2的文法改写为:的文法改写为: expr expr op expr expr (expr) expr expr expr id op + | - | * | / expr expr op expr | ( expr ) | -expr| id op + | - | * | / 或 11 4.2.3 推导推导 q 把产生式看成重写规则,用产生式右部的串来代替 左部的非终结符。 q 例: E E + E | E
6、 * E | (E ) | E | id E E (E) (E + E) (id + E) (id + id) (id + id)是文法的句子。 (id + E)等是文法的句型。 stop him watching TV stop doing . 12 推导的定义推导的定义 q 定义定义:设有文法G = ( VT, VN, S, P),称串A直直 接推导接推导出,如果A P,且, (VTVN)*, 并记作A 。 q 称 直接归约直接归约到A。 q 如果存在一个直接推导序列: 0 1 . n (n=0), 则称0推导推导出n,记作0n(推导长度为n)。 。记作或 nnn * 000 E E (E
7、) (E + E) (id + E) (id + id) 13 推导推导 表示一步推导(直接推导) 表示零步或多步推导 对任意串 如果 表示一步或多步推导 * , 。,则,且 * + * 14 句型、句子、语言句型、句子、语言 q 对开始符号为S的文法G,wL(G),当且仅当 称w为G的句子。 q 对开始符号为S的文法G,如果,则称为G 的句型。 句子是不含非终结符的句型。 仅含终结符号的句型是一个句子。 q 语言L(G)是由文法G产生的所有句子的集合: q 若文法G1和文法G2所产生的语言相同,即L(G1) = L(G2),则称文法G1和文法G2等价。 wS * S |)( * T VSGL
8、 且 一个一个C语言程序就是语言程序就是C语言的一个句子。语言的一个句子。 E E (E) (E + E) (id + E) (id + id) 15 S aSb aaSbb a3Sb3 an-1Sbn-1 anbn 显然,L(G) = anbn n1 。 例:已知文法G = ( a, b, S, S, P ), 其中 P:S aSb ab 16 最左推导最左推导left most q 最左推导:推导过程中任何一步推导都是对 中的最左非终结符进行替换。 q 如果是最左推导,可以记为 q 如果 ,则称是文法的左句型。 )()()()(ididEidEEEEE lmlmlmlmlm lm * lm
9、 S 17 最右推导最右推导 q 类似的,可以定义最右推导:推导过程中任何一步 推导 都是对中的最右非终结符进行替换。 q 最右推导也称作规范推导。 )()()()(idididEEEEEE rmrmrmrmrm 18 归约归约(reduce) q 定义:设和均为句型,若,则称可 以归约为。 q 规范(最右)推导的逆过程,称为规范归约。 q 语法分析的核心问题就是,对于一个终结符 号串x,设法从S推导出x,或者反过来,设 法将x归约为S。 * )()()()(idididEEEEEE rmrmrmrmrm 最右推导的逆反就是最左归约最右推导的逆反就是最左归约 19 4.2.4 分析树和推导分析
10、树和推导 分析树是推导的图形表示。 -(id+id)的分析树的分析树 E E () E EE+ id id 20 例例4.5 从最左推导构造的分析树从最左推导构造的分析树 E E E E E () E E E () E EE+ E E () E EE+ id E E () E EE+ id id )()()()(ididEidEEEEE lmlmlmlmlm 21 例例4.5 从最右推导构造的分析树从最右推导构造的分析树 E E E E E () E E E () E EE+ E E () E EE+ id E E () E EE+ id id )()()()(idididEEEEEE rmr
11、mrmrmrm 22 q 设串是文法G的句型,则至少存在一棵分析树,它 的叶子从左至右排列恰好就是。 q 注意,分析树的形状与推导顺序无关,而与在推导 时,所选择的对句型中的非终结符号进行替换的产 生式有关。 q 每棵分析树都有与之对应的唯一的最左推导和最右 推导。 q 但是,每个句子不一定只有唯一的分析树。 句型与分析树的关系句型与分析树的关系 E E () E EE+ id id -(id+id) id * id + id 23 4.2.5 二义性二义性 q 二义性的一些例子 I saw a man in the hill with a telescope. 球拍卖完了。 父在子先亡。 2
12、4 q 四个人在打麻将,周围没有旁观者,但是派出所却 带走了5个人(不包括警察)。请问这是为什么? 25 文法句子文法句子id * id + id有两个不同的最左推有两个不同的最左推 导:导: E E * * E E E + E id * * E E * * E +E id * * E + E id * * E + E id * * id + E id * * id + E id * * id + id id * * id + id 26 二义性用分析树表示比较直观二义性用分析树表示比较直观 E E * * E E E + E id * * E E * * E +E id * * E + E
13、id * * E + E id * * id + E id * * id + E id * * id + id id * * id + id E EE * + EE id idid E E id E * + EE idid 27 文法的二义性文法的二义性 q 如果一个文法的句子存在两棵分析树,那么,该句 子是二义性的。 q 如果一个文法包含二义性的句子,则说这个文法是 二义性文法;否则说该文法是无二义性文法。 q 文法的二义性源于这样的事实:在一个句型中,存 在一个非终结符号A,对于它有两条产生式可用于 替换,但A的这些推导最终都产生相同的句型。 28 文法的二义性文法的二义性 q 二义性是文
14、法的性质。程序设计语言是无二义的。 (自然语言本质是二义的,在一定语境下没有二义) q 文法的二义性的消除:改写文法 E E + E | E * E | (E ) | id 改写成 E E + T | T( T + T . . . + T ) T T * F | F( F * F . . . * F ) F ( E ) | id 29 4.2.6 验证文法产生的语言验证文法产生的语言 例4.7 G : S (S) S | L(G) = 配对的括号串的集合 要证明两个问题:(1)推出的是配对括号串 (2)所有的配对括号串可由S推出 q 按推导步数进行归纳:推出的是配对括号串 归纳基础: S 归纳
15、假设:少于n步的推导都产生配对的括号串 归纳步骤:n步的最左推导如下: S (S )S (x) S (x) y + 30 q 按串长进行归纳:所有的配对括号串w可由S推出 归纳基础: S 归纳假设:长度小于2n的都可以从S推导出来 归纳步骤:考虑长度为2n(n 1)的w = (x) y 即令(x):是:是w中的最短的、左括号个中的最短的、左括号个 数和右括号个数相同的非空前缀数和右括号个数相同的非空前缀 S (S )S (x) S (x) y () () () ()()() y (x) * * 31 4.2.7 正规式和上下文无关文法正规式和上下文无关文法 q 正规语言(RL)是上下文无关语言
16、(CFL)的真子集, 正规表达式所描述的语言可以用上下文无关文法描 述。 q 将正规式转换为NFA,再将NFA转换为等价的CFG。 RL: Regular Language CFL: Context Free Language CFG: Context Free Grammar 32 将正规表达式(a|b)*ab用CFG表示 q 正规式正规式 (a|b)*ab q 文法文法 A0 a A0 | b A0 | a A1 A1 b A2 A2 12 starta 0 a b b aabbab 33 ij a ij 构造规则构造规则 q 每个状态 i 有一个对应的非终结符 Ai q If then
17、Ai a Aj q If then Ai Aj q 如果 i 是终结状态, Ai q 如果 i 是起始状态, Ai 是开始符号 这些规则也可以把正规文法转换为这些规则也可以把正规文法转换为NFA。 34 正规文法正规文法 q 若文法G = (VT, VN, S, P)中的每一个产生式形如: A aB 或 A a 其中A, BVN, aVT ,则称G为右线性文法。 q 若文法G=(VT, VN, S, P)中的每一个产生式形如: A Ba 或 A a 则称G为左线性文法。 q 右线性文法和左线性文法都称为3型文法(正规文法)。 35 形式语言鸟瞰形式语言鸟瞰 Chomsky在1956创立了形式语
18、言学,并将形式语言的文法分为四类: 文法 G = (VT, VN, S, P) q 0型文法(短语结构文法, PSG) , , (VN VT)*, | 1 q 1型文法(上下文有关文法, CSG) | |,但S 可以例外 q 2型文法(上下文无关文法, CFG) A ,AVN , (VN VT)* q 3型文法(正规文法, RG) A aB或A a,A, BVN , a VT 36 4.3.5 非上下文无关的语言结构非上下文无关的语言结构 q L1 = wcw | w属于属于(a | b)* “检查标识符的声明应先于其引用”的抽象 q L2 = anbmcndm | n 0, m 0 “检查形
19、参个数和实参个数应该相同”的抽象 q L3 = anbncn | n 0 “打字机打印下划线字符”的抽象 37 注意:一些类似的语言却是CFG。 q L1 = wcwR | w (a|b)* S aSa | bSb | c q L2 = anbmcmdn | n 1, m 1 S aSd | aAd A bAc | bc q L2 = anbncmdm | n 1,m 1 S AB A aAb | ab B cBd | cd q DFA是NFA的特例,但DFA的功能和NFA的功能一样。 也就是说,能被NFA表达的语言,也可以用DFA表达。 正规文法是上下文无关文法的特例,但是,正规文法的 功能
20、比上下文无关文法的功能弱。 也就是说,有些语言能被上下文无关文法表达,但是不 能被正规文法表达。 38 39 q L3 =anbn | n 1 S aSb | ab L3 是不能用正规式描述的语言的一个范例是不能用正规式描述的语言的一个范例 若存在接受若存在接受L3 的的DFA D,状态数为,状态数为k个。个。 设设D读完读完 , a, aa, , ak 分别到达状态分别到达状态s0, s1, , sk 至少有两个状态相同,例如是至少有两个状态相同,例如是si和和sj,即,即ji,且且si=sj, 则则ajbi属于属于L3 ,然而然而ji si f s0 标记为标记为ai的路径的路径标记为标记
21、为bi的路径的路径 标记为标记为aj i的路径的路径 a a a . . . a a b b b . . . b b s0 s1 s2 . . . sn-1 sn f kn 假设输入是假设输入是aibi,那么必然有那么必然有si到到f的路径来识别的路径来识别bi。 40 4.3 文法的编写文法的编写 q 文法的优点 文法给出了精确的,易于理解的语法说明 自动产生高效的分析器 可以给语言定义出层次结构 以文法为基础的语言的实现便于语言的修改 q 文法的问题 文法只能描述编程语言的大部分语法 41 4.3.1 为什么要用正规式定义词法为什么要用正规式定义词法? q 为什么不用CFG定义词法 词法规
22、则非常简单,不必用上下文无关文法。 对于词法记号,正规表达式描述简洁且易于理解。 从正规表达式构造出的词法分析器效率高。 q 把词法分析从语法分析中分离出来的理由 简化设计 编译器的效率会改进 编译器的可移植性加强 便于编译器前端的模块划分 42 4.3.2 消除二义性消除二义性 stmt if expr then stmt | if expr then stmt else stmt | other 43 Form 1: stmt stmt stmt expr E1S2 thenelseif expr E2 S1 then if stmt stmt expr E1 thenif stmt ex
23、pr E2 S2S1 then else if stmtstmt Form 2: 句型句型if E1 then if E2 then S1 else S2的分析树的分析树 44 改写为无二义的文法 (else与最近的then匹配) stmt matched _stmt | unmatched_stmt matched_stmtif expr then matched_stmt else matched_stmt | other unmatched_stmt if expr then stmt | if expr then matched_stmt else unmatched_stmt 45
24、4.3.3 消除左递归消除左递归 q 文法左递归A A q 直接左递归A A A | 串的特点 A A A A A q 消除直接左递归 A A A A | A A A A A + 46 例: 算术表达文法 E E + T | T E+ T . . . + T T T * F | F T* F . . . * F F ( E ) | id 消除左递归后文法 E TE E +TE | + T . . . + T T FT T *FT | * F . . . * F F ( E ) | id A A | A A A A | 变为 47 q 非直接左递归 S Aa | b A Sd | q 先变换成直
25、接左递归 S Aa | b A Aad | bd | q 再消除左递归 S Aa | b A bd A | A A adA | 48 间接左递归的消除 B Saa A Bbb S Acc 将 B 代入,得到: A Sababb 将 A 代入,得到: S Sabcabcbcc 再消除直接左递归: S abcSbcScS S abcS 49 Algorithm4.1 消除左递归 Input: 文法文法G with no cycles or -productions Output: 没有左递归的等价文法没有左递归的等价文法 按照某个顺序将非终结符号排序为按照某个顺序将非终结符号排序为 A1,A2,An for( i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年四上观察日记教学设计
- 2.2 气候基本特征 第一课时 教学设计-2023-2024学年八年级地理上学期商务星球版
- 胃溃疡健康科普
- 儿科感冒病毒性感染预防措施
- 烟草评吸师安全教育强化考核试卷含答案
- 2025年秋季初一数学几何图形知识点详解与试题真题
- 纺织品文物修复师岗前工作规范考核试卷含答案
- 余压利用工岗前环保竞赛考核试卷含答案
- 大学生如何贯彻防疫精神
- 以工匠精神雕琢时代品质第一
- 2026河南豫能控股股份有限公司及所管企业招聘31人备考题库及参考答案详解(精练)
- 2026广西北海市从“五方面人员”中选拔乡镇领导班子成员25人笔试参考题库及答案解析
- 2026年高速公路收费员考笔试试题与答案
- 2025年江西建设职业技术学院单招综合素质考试题库及答案解析
- 2026四川宜宾传媒集团有限公司及下属子公司第一批员工招聘13人笔试备考题库及答案解析
- 抗菌药物临床应用指导原则试题含答案
- 2026黑龙江新高考:语文必背知识点归纳
- 领导干部任前法律法规知识考试题库(2025年度)及答案
- 艾滋病梅毒乙肝防治知识宣传课件
- 年鉴编纂基本知识课件
- 内蒙古环保投资集团有限公司招聘笔试题库2026
评论
0/150
提交评论