一、介绍

只要在Unix环境中写过程序,必定会邂逅神秘的Lex&YACC,就如GNU/Linux用户所熟知的Flex&Bison,这里的Flex就是由Vern Paxon实现的一个Lex,Bison则是GNU版本的YACC,在此我们将统一称呼这些程序为Lex和YACC,所以我们将用Flex和Bison来尝试下我们的实例。

二、准备工作(win7)

①  下载flex和bison并安装到D:\GnuWin32(尽量是根目录)

②    由于我们使用的flex和bison都是GNU的工具,所以为了方便,采用的C/C++

编译器也 采用GNU的编译器GCC,当然我们需要的也是Windows版本的GCC了。所以选用了CodeBlocks编译器

三、课本实例

①  按课本代码输入,并保存为yac1.y,并将其放到bison所在目录

②  打开cmd命令行,然后进入D盘中bison所在目录下,然后输入命令行bison yac1.y对文件进行解析,生成yac1.tab.c文件

③  用CodeBlocks编译器打开yac1.tab.c文件,进行编译运行

④  测试结果:

  

四、遇到问题

①int yylex(void)函数中改为int yylex(),因为后面需要返回数值,void为空,则得不到结果

②void yyerror(char *s)改为int yyerror(char *s),必须和前面的类型统一

③mian()中的if(i=0)改为if(i!=1),不然无论对错都一直会是提示错误

转载于:https://www.cnblogs.com/zzhili/p/4542354.html

编译原理 - 实验四 - yacc基本使用(bison)相关推荐

  1. 笔记-编译原理-实验四-语义分析与中间代码生成

    实验四. 语义分析及中间代码生成 设计思想 根据对属性文法及语义分析.中间代码生成的学习,可以将实验二.三的两种语法分析器进行一定的改造,以达到进行语法分析的同时进行语义分析并生成中间代码.根据PL0 ...

  2. 编译原理-实验四-LR(0)语法分析程序的设计

    一.实验目的 了解LR(0)语法分析算法的基本思想,掌握LR(0)语法分析程序的构造方法. 二.实验内容 根据LR(0)语法分析算法的基本思想,设计一个对给定文法进行LR(0)语法分析的程序,并用C. ...

  3. 编译原理实验四:验证Yacc的使用

    所有实验的源代码:点此下载 实验目的: 熟悉语法分析器生成工具Yacc的使用,并学会在cygwin下使用bison工具编译Yacc文法说明文件.学习如何使用lex和yacc合作进行语法分析. 实验内容 ...

  4. 编译原理 实验四 LR(0)分析法(LR0分析表的自动生成)

    写在前面 由于代码较长,csdn对文章总长度有字数限制,想只看完整代码的请移步另一篇博客. https://blog.csdn.net/qq_46640863/article/details/1257 ...

  5. 编译原理 | 实验四 | 逆波兰式

    目录 一.问题分析 二.算法思想 1.关于分词器 2.关于逆波兰式分析器: 三.实现代码 1.头文件  &  类视图 2.预处理部分 3.逆波兰分析过程 4.计算,输出部分 四.总结 一.问题 ...

  6. 编译原理实验二:Bison

    编译原理实验二:Bison 实验要求 1.了解Bision基础知识,如何将文法产生式转换为Bison语句 2.阅读/src/common/SyntaxTree.c,对应头文件 /include/Syn ...

  7. 编译原理实验c语言cfg文法,编译原理

    地址在符号表中引入指针previous,来连接上一个符号的首地址运行时存储空间组织活动记录用于管理函数变量的信息栈式存储过程进入和返回通过变更top和sp指针,实现活动记录的栈式处理静态链实现局部变量 ...

  8. 贵州大学-编译原理实验2-句法分析器

    贵州大学-编译原理实验2-句法分析器 考虑下面的C语言子集的文法,其中<>括起来的为非终结符,粗体为终结符. ® <statement_list> <statement_ ...

  9. 编译原理实验:代码生成作业(1)

    编译原理实验4:中间代码生成实验包-C++文档类资源-CSDN下载编译原理实验4:中间代码生成实验包更多下载资源.学习资料请访问CSDN下载频道.https://download.csdn.net/d ...

  10. 编译实验 lr c语言代码,编译原理-实验5-LR(1)分析法

    <编译原理-实验5-LR(1)分析法>由会员分享,可在线阅读,更多相关<编译原理-实验5-LR(1)分析法(6页珍藏版)>请在人人文库网上搜索. 1.编译原理实验报告项目名称 ...

最新文章

  1. 智能合约的核心思想、语法重点、编程模式、示例、规范及架构
  2. 开发日记-20190915 关键词 汇编语言王爽版 第十章
  3. 《2020雇佣关系趋势报告》今发布:近三成受访者兼职,近七成工作量增加、考核变严格
  4. Distcp 分布式拷贝
  5. idea2020shezhi代码检查级别_ICT技术:阿里巴巴代码缺陷检测探索与实践
  6. linux系统中acpid的作用,ACPID电源按钮事件本地权限提升漏洞
  7. 生命大发的意义 BY 几米
  8. setCharacterEncoding 是在request.getParameter获取参数之前 设置request的编码格式 一步到位...
  9. 拳王公社:没钱没资源没人脉!网络创业凭副业年赚20W+!
  10. Shell教程----Shell脚本
  11. char*和CString转换
  12. CSDN第四届在线编程大赛2014初赛:带通配符的数
  13. 阶乘末尾 0 的个数
  14. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_4_方法引用_通过super引用父类的...
  15. 托福学习计划留学考研
  16. 一款优秀的IT资产管理系统-Snipe-IT 安装及用户手册中文版(二配置使用篇)
  17. 解决idea项目中没有蓝色方块
  18. iPad app 开发概述
  19. 如何制作公众号首图?教你一键套用图片模板
  20. bgproperties属性

热门文章

  1. Django之ORM性能优化
  2. LayoutInflater(二)
  3. 和机器学习和计算机视觉相关的数学(转载)
  4. hibernate总结一
  5. 我也有了博客了,呵呵~~
  6. 《WF编程》系列之4 - 漫游工作流:Widows Workflow Runtime及其服务
  7. 求问模式达人,静态类可否代替单件?
  8. Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup (ST表模板)
  9. EscapeDataString URI 字符串太长
  10. php获取时间计算时间差