《编译原理》课程教学资源:第五章 YACC

第5章 本讲要点 YACC
第5章 本讲要点 ◼ YACC

5.5Yacc:一个LALR(1)分析程序的生成器 Yacc代表 Yet Another Compiler Compiler 由 S C Johnson等人在AT&T贝尔实验室研制开 发的,早期作为UNIX操作系统中的一个实用程序, 现在Yacc得到广泛使用。 YaCC有多个版本, Bison是它的一个常用版本
5.5 Yacc:一个LALR(1)分析程序的生成器 ◼ Yacc 代表 Yet Another Compiler Compiler。 ◼ 由S.C.Johnson等人在AT&T贝尔实验室研制开 发的,早期作为UNIX操作系统中的一个实用程序, 现在Yacc得到广泛使用。 ◼ Yacc有多个版本,Bison是它的一个常用版本

Yacc的使用 Yacc程序将任何一种编程语言的所有语法说 明文件(Y)翻译成针对此种语言的Yacc语法解 析器。 L语言的YacC说明文 件(Y) L语言语法分析器 YaCC程序 输入串 语法树 L语言语法分析器
L语言语法分析器 Yacc程序 Yacc的使用 Yacc 程序将任何一种编程语言的所有语法说 明文件(.Y)翻译成针对此种语言的 Yacc 语法解 析器。 L语言的Yacc说明文 件(.Y) L语言语法分析器 输入串 语法树

Yacc的使用 1.采用命令 yacc[选择项] filename.y 生成 y tab. c(或者 stab. c)的文件。 2.在c环境下将其编译成可执行文件
Yacc的使用 1. 采用命令 yacc [选择项] filename.y 生成y.tab.c(或者ytab.c)的文件。 2. 在C环境下将其编译成可执行文件

Yacc说明文件的结构 Yacc说明文件基本格式如下 definitions 3 定义部分 d rules y 规则部分 0%o auxiliary routines] 辅助程序部分
一、 Yacc说明文件的结构 Yacc说明文件基本格式如下: { definitions } 定义部分 %% { rules } 规则部分 %% {auxiliary routines} 辅助程序部分

口定义部分包括了Yacc分析程序的有关记号、 数据类型以及文法规则的信息。 口它还包括了必须直接进入输出文件的任何C代码, 如# include语句等) 注:定义部分可为空
❑定义部分包括了Yacc分析程序的有关记号、 数据类型以及文法规则的信息。 ❑它还包括了必须直接进入输出文件的任何C代码, 如#include语句等), 注:定义部分可为空

变量定义 变量定义需用一对%{和%包括起来,其内容包括有关文件 的 引用说明、数据结构的定义、全局和外部变量的定义等等, 应邀倆C语凉的规定。 # include≤ stdio. h> int count extern double valuei int function (int a, float bi
①变量定义 变量定义需用一对%{和%}包括起来,其内容包括有关文件 的 引用说明、数据结构的定义、全局和外部变量的定义等等, 应遵循例如:C语言的规定。 %{ #include … int count; extern double value; … int function(int a,float b); … %}

口规则部分包括BNF格式的文法规则以及在识别 出相应文法规则时要执行的动作 动作用C代码表示,当用该规则去归约时执行与 之对应的动作) 口Yacc中文法规则使用的元符号约定: 竖线用作替换 箭头符号→改成冒号: 每个文法规则末以分号结束。 口辅助程序部分包括了过程和函数声明(可空!)。 口Yac还允许将C-风格的注解插入到输入文件中
❑规则部分包括BNF格式的文法规则以及在识别 出相应文法规则时要执行的动作. 动作用C代码表示,当用该规则去归约时执行与 之对应的动作)。 ❑Yacc中文法规则使用的元符号约定: 竖线|用作替换。 箭头符号→改成冒号:, 每个文法规则末以分号结束。 ❑辅助程序部分包括了过程和函数声明(可空!)。 ❑Yacc还允许将C-风格的注解插入到输入文件中

编写yacc说明文件 Yacc识别记号的方法 1)文法规则的单引号中的任何字符都被识别为 它本身。如运算符记号“+)、-3和‘*’。 2)在%记号(% token)中声明符号记号,如 token NUMBER
编写yacc说明文件 Yacc识别记号的方法 1)文法规则的单引号中的任何字符都被识别为 它本身。如运算符记号‘+’ 、 ‘-’和‘*’ 。 2)在%记号(%token)中声明符号记号,如 %token NUMBER

编写yacc说明文件 Yacc对记号的处理 YaC为每个记号自动分配一个不与任何字符值冲突的 数字值,通常从258开始赋值 yac将这些定义作为# define语句插入到输出代码中 如:# define number258 用户也可指定将赋给记号的数字。 例:% token number18,就将给 NUMBER赋值18
编写yacc说明文件 Yacc对记号的处理 ◼Yacc为每个记号自动分配一个不与任何字符值冲突的 数字值,通常从258开始赋值。 yacc将这些定义作为#define语句插入到输出代码中。 如:#define NUMBER 258 ◼用户也可指定将赋给记号的数字。 例:%token NUMBER 18,就将给NUMBER赋值18
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《编译原理》课程教学资源:第二章(2-4-1)One parse tree only.ppt
- 《编译原理》课程教学资源:第二章(2-4)语法分析一自上而下分析.ppt
- 《JavaScript》权威指南简介.ppt
- 《编译原理》课程教学资源:第三章 正则表达式常应用于文本匹配:.ppt
- 《编译原理》课程教学资源:第二章(2-3-1)对于词法分析器的要求.ppt
- 《编译原理》课程教学资源:第二章 词法分析 2.6 利用Lex自动生成扫描程序.ppt
- 《编译原理》课程教学资源:第二章 语言描述与实现 Language Description and Implementation 2.1 程序语言的语法描述.ppt
- 《编译原理》课程教学资源:第一章(1-2)编译简介.ppt
- 《编译原理》课程教学资源:语义分析和中间代码产生.ppt
- 《编译原理》课程教学资源:Chapter 5 Procedure Activations.ppt
- 《互联网软件应用与开发》综合复习材料.doc
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第四章 门电路.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第六章 时序逻辑电路.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第五章 组合逻辑电路.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第二章 半导体基本器件.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第三章 开关理论基础.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第七章 存储器和可编程逻辑器件.ppt
- 《计算机电路基础》课程教学资源(PPT课件讲稿)第一章 课程简介.ppt
- 清华大学:《数据通信原理》课程教学资源(学习讲义)软件无线电体系结构的新趋势.doc
- 清华大学:《数据通信原理》课程教学资源(学习讲义)超宽带无线通信技术及发展.doc
- 《编译原理》课程教学资源:第四章 对象和环境.ppt
- 《编译原理》课程教学资源:第八章 符号表.ppt
- 《编译原理》课程教学资源:第六章 属性文法.ppt
- 《编译原理》课程教学资源:第五章(5-2)过程激活.ppt
- 《编译原理》课程教学资源:第二章 语言描述与实现 Language Description and Implementation 2.5 语法分析——自下而上分析.ppt
- 《编译原理》课程教学资源:教学计划.doc
- 《编译原理》课程教学资源:第十章 优化.ppt
- 《编译原理》课程教学资源:属性文法.ppt
- 《体系结构》第二章 计算机指令集结构设计.doc
- 《体系结构》第三章 流水线技术.doc
- 《体系结构》第五章 存储层次.doc
- 《体系结构》第六章 输入输出系统.doc
- 《体系结构》第一章 计算机体系结构的基本概念.doc
- USB系统研究(学位论文)USB System Study.pdf
- 《微型计算机原理与接口技术》第10章 串行通信接口.ppt
- 《微型计算机原理与接口技术》第11章 人机交互接口技术.ppt
- 《微型计算机原理与接口技术》第12章 模拟量输入输出接口技术.ppt
- 《微型计算机原理与接口技术》第1章 微型计算机基础知识.ppt
- 《微型计算机原理与接口技术》第2章 典型微处理器.ppt
- 《微型计算机原理与接口技术》第3章 指令系统与汇编语言程序设计.ppt