南京大学:《编译原理》课程教学资源(PPT课件讲稿)第四章 语法分析

第四章语法分析 赵建华 南京大学计算机系 2010.3
第四章 语法分析 赵建华 南京大学计算机系 2010.3

程序设计语言构造的描述 程序设计语言构造的语法可使用上下文无 关文法或BNF表示法来描述 文法可给出精确易懂的语法规则 可以自动构造出某些类型的文法的语法分析器 文法指出了语言的结构,有助于进一步的语义 处理代码生成。 支持语言的演化和迭代
程序设计语言构造的描述 • 程序设计语言构造的语法可使用上下文无 关文法或BNF表示法来描述 – 文法可给出精确易懂的语法规则 – 可以自动构造出某些类型的文法的语法分析器 – 文法指出了语言的结构,有助于进一步的语义 处理/代码生成。 – 支持语言的演化和迭代

语法分析器的作用 基本作用 从词法分析器得词法单元的序列,确认该序列是 否可以由语言的文法生成。 对于语法错误的程序,报告错误信息 对于语法正确的程序,生成语法分析树。 通常并不真的生产这棵语法分析树 源程序 词法词法单元 语法 语法 前端的L中间表示 分析器 获取下 分析器分析树“其余部分 个词法单元 符号表 图4-1编译器模型中语法分析器的位置
语法分析器的作用 • 基本作用 – 从词法分析器获得词法单元的序列,确认该序列是 否可以由语言的文法生成。 – 对于语法错误的程序,报告错误信息 – 对于语法正确的程序,生成语法分析树。 • 通常并不真的生产这棵语法分析树

语法分析器的分类 通用语法分析器 可以对任意文法进行语法分析 效率很低,不适合用于编译器 自顶向下语法分析器 从语法分析树的根部开始构造语法分析树 ·自底向上语法分析器 从语法分析树的叶子开始构造语法分析树 ·后两种方法 总是从左到右、逐个扫描词法单完 只能处理特定类型的文法但是这些大法足以用来 描述程序设计语言
语法分析器的分类 • 通用语法分析器 – 可以对任意文法进行语法分析 – 效率很低,不适合用于编译器 • 自顶向下语法分析器 – 从语法分析树的根部开始构造语法分析树 • 自底向上语法分析器 – 从语法分析树的叶子开始构造语法分析树 • 后两种方法 – 总是从左到右、逐个扫描词法单元。 – 只能处理特定类型的文法,但是这些文法足以用来 描述程序设计语言

上下文无关文法 ·定义:一个上下文无关文法包含四个部分 终结待号:组成串的基本待号(词法单元名字) 非终结符号:表示串的集合的语法变量 给出了语言的层次结构。 ·在程序设计语言中通常对应于某个程序构造,比如stmt(语旬) 开始符号:某个被指定的非终结符号。 ·它对应的串的集合就是大法的语言 产生式集合:描述将终结号和非终结♂号组成串的 方法 产生式的形式:头/左部→体/右部 头部是一个非终结符号,右部是一个符号串; ·例子: expression+ expression+term
上下文无关文法 • 定义:一个上下文无关文法包含四个部分 – 终结符号:组成串的基本符号(词法单元名字) – 非终结符号:表示串的集合的语法变量。 • 给出了语言的层次结构。 • 在程序设计语言中通常对应于某个程序构造,比如stmt(语句) – 开始符号:某个被指定的非终结符号。 • 它对应的串的集合就是文法的语言 – 产生式集合:描述将终结符号和非终结符号组成串的 方法 • 产生式的形式:头/左部 → 体/右部 • 头部是一个非终结符号,右部是一个符号串; • 例子:expression → expression + term

上下文无关文法的例子 简单算术表达式的文法: 终结诗号:id+-*/() 非终结符号: expression,term, factor 开始符号: expression 生式集合 expression expression term expression expression -term expression term tem→term* factor term→term/ factor tem→ factor factor >(expression) factor→id
上下文无关文法的例子 • 简单算术表达式的文法: – 终结符号:id + - * / ( ) – 非终结符号:expression, term, factor – 开始符号:expression – 产生式集合: expression → expression + term expression → expression – term expression → term term → term * factor term → term / factor term → factor factor → (expression) factor → id

文法书写的约定 终结符号 靠前的小写字母(a2b,);运算符号(+*);标点符号;数 位;黑体字符串(id,if, while ·非终结符号 靠前的大小字母(AB,C);字母S(通常是开始符号); 小写斜体字母;表示程序枃造的大写字母 X,Y,Z文法符号(终结苻号或非终结符号) 小写希腊字母表示文法符号串(,B,y) ·靠后的小写字母表示终结符号串 具有相同头的产生式可以合并成A→a1|02….an的 形式 通常第一个产生式的左部就是开始苻号
文法书写的约定 • 终结符号 – 靠前的小写字母(a,b,c);运算符号(+ *);标点符号;数 位;黑体字符串(id, if, while) • 非终结符号 – 靠前的大小字母(A,B,C);字母S(通常是开始符号); 小写斜体字母;表示程序构造的大写字母 • X,Y,Z文法符号(终结符号或非终结符号) • 小写希腊字母表示文法符号串(α, β, γ) • 靠后的小写字母表示终结符号串 • 具有相同头的产生式可以合并成A→ α1 | α2 | … | αn的 形式 • 通常第一个产生式的左部就是开始符号

文法简单形式的例子 E→E+T|E-T|T T>T*FIT/FF F→(E)id 注意 是元符号(即文法描述方式中的符号,而不是 文法符号) 这里()不是元符号;在有些地方会把(看作元 子号
文法简单形式的例子 E → E + T | E – T | T T → T * F | T / F | F F → ( E ) | id • 注意: – | 是元符号(即文法描述方式中的符号,而不是 文法符号) – 这里(,)不是元符号;在有些地方会把( )看作元 符号

推导(1) 推导 一将待处理的串中的某个非终结脊号替换为这个 非终结符号的某个产生式的体 从开始号出发,不断进行上面的替换.就可 以得到文法的不同句型 ·例子 文法:E→|E+E|E*E|(E)|id 推导序列:E→>→>(E)=>-(id)
推导(1) • 推导: – 将待处理的串中的某个非终结符号替换为这个 非终结符号的某个产生式的体。 – 从开始符号出发,不断进行上面的替换,就可 以得到文法的不同句型 • 例子 – 文法: E → -E | E+E | E*E | (E) | id – 推导序列:E => -E => -(E) => -(id)

推导(2) 推导的正式定义 如果A+y是一个产生式,那么AB=>YB 最左(右)推导:0(β)中不包含非终结符号 符号:需 经过零步或者多步推导出: 对于任何串Q=Q 如果β且β 那么0=y 经过一步或者多步推导出: 0→>β等价于>阝且不等于β
推导(2) • 推导的正式定义 – 如果A→γ是一个产生式,那么αAβ => αγβ – 最左(右)推导:α(β)中不包含非终结符号 • 符号: • 经过零步或者多步推导出: – 对于任何串α α – 如果α β且β=>γ,那么α γ • 经过一步或者多步推导出: – α β等价于α β且α不等于β
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《计算机网络》课程教学资源(PPT课件讲稿)第四章 网络层.pptx
- 《ASP动态网页设计实用教程》教学资源(PPT课件讲稿)第3章 Web页面制作基础.ppt
- 《编译原理》课程教学资源(PPT课件讲稿)第四章 语法制导的翻译.ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)顺序同一性的存储器模型.pptx
- 马尔可夫链蒙特卡洛算法(PPT讲稿)Hamiltonian Monte Carlo on Manifolds,HMC.pptx
- SOFT COMPUTING Evolutionary Computing(PPT讲稿).ppt
- 《计算机情报检索原理》课程教学资源(PPT课件)第五章 自动标引.ppt
- 《计算机网络》课程教学资源(PPT课件讲稿)Chapter 04 网络层 Network Layer.ppt
- 湖南科技大学:分布式工作流系统的时间管理模型研究(PPT讲稿,周春姐).ppt
- 《编译原理》课程教学资源(PPT课件讲稿)第九章 独立于机器的优化.ppt
- 西安电子科技大学:《现代密码学》课程教学资源(PPT课件讲稿)第七章 数字签名和密码协议.ppt
- 南京大学:移动Agent系统支撑(PPT讲稿)Mobile Agent Communication——Software Agent.pptx
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第五章 存储层次.ppt
- 合肥工业大学:《网络安全概论》课程教学资源(PPT课件讲稿)第一讲 网络安全概述.ppt
- 南京大学:《编译原理》课程教学资源(PPT课件讲稿)第六章 中间代码生成.ppt
- 《编译原理与技术》课程教学资源(PPT课件讲义)中间代码生成.ppt
- 《软件测试 Software Testing》教学资源(PPT讲稿)Part 3 Applying Your Testing Skills.ppt
- 电子工业出版社:《计算机网络》课程教学资源(PPT课件讲稿)第1章 概述.pptx
- 《计算机算法设计与分析》课程教学资源(PPT课件讲稿)分支界限法.ppt
- 中国科学技术大学:《数据结构及其算法》课程电子教案(PPT课件讲稿)第7章 图(主讲:刘东).pptx
- 南京大学:《形式语言与自动机 Formal Languages and Automata》课程教学资源(PPT课件讲稿)Transition System(主讲:卜磊).pptx
- 安徽理工大学:《算法导论》课程教学资源(PPT课件讲稿)第4章 分治法——“分”而治之.ppt
- 南京大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)Chapter 1 基本概念和算法分析.ppt
- 《计算机网络》课程PPT教学课件(英文版)Chapter 4 物理层 PHYSICAL LAYER.pptx
- 清华大学:图神经网络及其应用(PPT讲稿)Graph Neural Networks and Applications.pptx
- 《计算模型与算法技术》课程教学资源(PPT讲稿)Chapter 8 Dynamic Programming.ppt
- Network and System Security Risk Assessment(PPT讲稿)Firewall.ppt
- 东北大学:《可信计算基础》课程教学资源(PPT课件讲稿)第三讲 认证技术与数字签名.ppt
- 《计算机网络》课程教学资源(PPT课件讲稿)Chapter 04 网络层 Network Layer.ppt
- 中国科学技术大学:《算法基础》课程教学资源(PPT课件讲稿)算法基础习题课(二).pptx
- 中国科学技术大学:《计算机编程入门》课程PPT教学课件(讲稿)An Introduction to Computer Programming.ppt
- 上海交通大学:《挖掘海量数据集 Mining Massive Datasets》课程教学资源(PPT讲稿)Lecture 03 Frequent Itemsets and Association Rules Mining Massive Datasets.ppt
- 《Computer Networking:A Top Down Approach》英文教材教学资源(PPT课件讲稿,6th edition)Chapter 3 传输层 Transport Layer.ppt
- 分布式数据库系统的体系结构与设计(PPT讲稿)Architecture and Design of Distributed Database Systems.pptx
- 南京大学:Conceptual Architecture View(PPT讲稿).ppt
- 北京师范大学:《计算机应用基础》课程教学资源(PPT课件讲稿)第1章 计算机常识(主讲:马秀麟).pptx
- 《编译原理》课程教学资源(PPT课件讲稿)中间代码生成.pptx
- TTCN3工具培训(PPT讲稿)TTCN-3简介.ppt
- 《Java Web编程技术》课程教学资源(PPT课件讲稿)第4章 JDBC数据库访问技术.ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第三章 流水线技术.ppt