Blueve 湛蓝

搜索

主菜单

跳至内容

  • BlogShelf

    • 漫话人生
    • 动手动脑
    • 学习记录
      • 计算机
      • 心理学
    • 开发探索
    • 心情札记
    • 我听音乐
    • 随拍小记
  • Plan
  • AboutMe
  • FeedMeChocolate
  • ContactMe

搜索:
学习记录、计算机

Windows 7下配置Lex和Yacc

2013 年 03 月 29 日 Blueve 2条评论

这学期编译原理的实践作业是编写一个词法分析器和一个语法分析器,并将它们结合起来,其中提到了允许使用自动生成技术,于是编译界的大神Lex和Yacc就华丽丽登场了,不过他们是Unix上的软件,要在Windows上使用还是需要解决一些问题的。
我在网上查阅了大量的资料,其中最多提到的是使用Parser Generator,这个软件相当于移植版的Lex + Yacc,整个软件的安装包只有2M不大,但是它存在一个问题,就是我无法用它生成可以在VS2012上编译通过的代码,但是根据网络上的资料,使用该软件是可以产生能在VC6编译通过的代码的,不过配置过程稍显繁琐。
我使用了另外一种方法,并在这里介绍给大家,简单方便。
在Windows上的Lex和Yacc的移植版是flexbison,安装这两个软件就可以使用Lex和Yacc的完整功能:

这两个软件也非常小巧,你可以在这里下载。
下载后直接依次安装,建议安装在同一个目录里,我安装到了C:\GnuWin32,这时候你就已经可以使用他们了。
用他们生成c代码的方法非常简单,把你写好的.l文件放置到C:\GnuWin32\bin之中,然后使用命令行进行如下操作就可以产生一个名为lex.yy.c的c语言文件,如下图所示:

这里需要注意的是,这个c语言的文件是不能在vc或vs中编译通过的,因为微软提供的编译器缺乏了一些组件,所以为了编译这个程序,我们必须安装GCC。安装GCC有多种方式,这里推荐直接安装Dev-C++,算是个比较老的软件了。这是一个使用GCC作为C语言编译器的IDE,开源免费。

你需要下载4.9.9.2版(网上的5.0.0.0版是后继开发的,存在一些缺陷,不要使用),我将其装在了C:\DEV-CPP,接下来你需要把flex和bison的运行库放置到DEV-CPP的库目录中。

复制C:\GnuWin32\lib文件夹中的libfl.aliby.a到C:\DEV-CPP\Lib中。

随后为了方便我们使用GCC来编译文件,建议将下面这个目录添加到你的系统path中:

之后使用GCC命令即可编译这个c文件了:

产生的可执行文件可以运行,效果如下。


关于lex和yacc的使用及其规则文件的编写,以后有机会再向大家介绍: )

bisonflexgcclexyacc编译原理

文章导航

上一文章五子棋游戏[2] – 双人对战下一文章PHP的include的有趣用法

《Windows 7下配置Lex和Yacc》有2个想法

  1. robinho364说道:
    2013 年 07 月 14 日 下午 4:29

    我们的作业是写一个完整的编译器……

    回复
    1. Blueve说道:
      2013 年 07 月 15 日 下午 7:59

      借助这两个工具可以很方便的实现一个可以用的脚本语言 解释器 。但如果要实现能够产生汇编代码或的编译器的话,则需要多花费一些时间在寄存器和内存管理上~由于课时较少,我们是只做到了产生四元组~

      回复

发表评论 取消回复

电子邮件地址不会被公开。

姓名

电子邮件

站点

评论

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

分类目录

  • 动手动脑 (6)
  • 学习记录 (26)
    • 心理学 (5)
    • 计算机 (21)
  • 开发探索 (16)
  • 心情札记 (28)
  • 我听音乐 (1)
  • 未分类 (1)
  • 漫话人生 (2)
  • 随拍小记 (9)

标签

2Gram ACM-ICPC AI BigInt C++ DP Stack STL 五子棋 人工智能 人性 假期 决策 动态规划 北京 单反 变化 后缀式 命运 回忆 堆栈 大学 容器适配器 幸福 心愿 心理学 快乐 成长 手工 摄影 数据结构 时光 普通心理学 栈 爱 爱情 物理引擎 理想 生活 目标 社会 算法 逆波兰式 递归 高精度运算

我的链接

  • Matrix67 精彩的博客
  • POJ 北京大学的OJ
  • UVaOJ 西班牙Valladolid大学的OJ
  • WolframAlpha Mathematica的后台
  • Woodu's Blog 我的朋友
  • 果壳 激发你的灵感吧!
  • 科学松鼠会 剥开科学的坚果

功能

  • 登录
  • 文章RSS
  • 评论RSS
  • WordPress.org

Happiness is about having each tiny wish come true.

近期文章

  • 再见,爱情
  • 五子棋游戏[4] – 人机博弈 – α-β剪枝及改进与总结
  • NextGEN Gallery 导致的严重问题及应对办法
  • 五子棋游戏[3] – 人机博弈 – 博弈树
  • 记大三。
  • 60D手柄入手~
  • PHP的include的有趣用法
  • Windows 7下配置Lex和Yacc
  • 五子棋游戏[2] – 双人对战
  • 哦呵呵呵呵呵~MX880


本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
自豪地采用WordPress

Windows 7下配置Lex和Yacc相关推荐

  1. Windows下使用Lex和Yacc

    Windows下使用Lex和Yacc多种多样,简单罗列如下:      1.Cygwin     Cygwin是Windows平台上运行的unix/linux模拟环境,由Cygnus Solution ...

  2. Windows环境下配置环境变量

    安装好MySQL后,在Windows环境下配置环境变量 1)新建MYSQL_HOME系统变量 配置MySQL的安装路径:C:\Program Files\MySQL\MySQL Server 8.0 ...

  3. 如何在 Windows 环境下配置 PHP 开发运行环境

    我们都知道 PHP 运行需要的环境通常被称为 AMP. 其中 A 是 Apache 应用服务器,M 是 Mysql,P 就是 PHP 了. 实际上,很多人可能会使用一个测试 Mysql,但是针对一些小 ...

  4. 在windows环境下配置mongoDB集群

    在windows环境下配置mongoDB集群 mongodb官网 官网分片文档 首先感谢这次参考的文章: mongodb搭建高可用分片集群示例-天才卧龙 MongoDB高可用集群搭建示例-lizh 配 ...

  5. Windows环境下配置Ceres(带suitesparse-metis)

    1 配置环境与源代码包 环境 Windows>=8.1 Visual Studio>=2013 专业版x64 Cmake GUI>=3.13 Ceres-solver 1.14.0 ...

  6. easy php moodle,Windows 环境下配置easyphp+moodle方法及设置外部IP访问方法

    安装有很多方法,最简单的方法就是easyphp+moodle,具体方法如下: 1.准备好安装必须的软件,包括easyphp和moodle.easyphp到http://easyphp.org/下载,m ...

  7. windows系统下配置host的解决办法

    不少童鞋初次配置窗口的主机不知道如何下手,下面就来说说如何配置. 1,打开电脑的系统盘(一般默认为C盘):C盘 - > Windows - > System32 - > driver ...

  8. Windows环境下配置php的curl扩展

    在安装wordpress/ zen-cart / magento ,提示需要打开curl扩展,于是打开我的php.ini文件,找到";extension=php_curl.dll" ...

  9. 在windows环境下配置gitlab本地代码库

    题外话:最近在从事一个NLP算法课题.因为我负责的模块偏重弄理论,更倾向于做为团队竞争力的技术储备,故而与其他模块的交流并不多.一个人做久了,发现欠下的技术债越来越多,要是不好好整理代码,之后的窟窿可 ...

最新文章

  1. poj1002(map的使用)
  2. PostgreSQL 常用命令
  3. SAP 用户参数 ME_USE_GRID
  4. android跨进程读写内存,Android 跨进程内存泄露
  5. php如何接收前端返回的各种类型的数据
  6. apollo 配置中心_.NET Core 下使用 Apollo 配置中心
  7. spring注解之@Import注解的三种使用方式
  8. 致未来要跟我领小红本的男人
  9. htcd816+android密码,详细的HTC Desire 816解锁教程
  10. jQuery——常用API
  11. ROS创建Publisher理解
  12. SpringBoot-logback日志管理
  13. 2021年度汇总丨20大热门TWS耳机功能配置汇总解析
  14. 未来5年互联网,运营将成比产品更加有前途的职业?
  15. Typescript详解
  16. 基于VS2015MFC在X86debug编译平台调试opengl 代码出现oxc0000007b错误的解决方法
  17. Python实现自省的方法有哪些?
  18. skb_buff 详解(二)
  19. 手机端PDF转换器有哪些  PDF转PPT在手机上怎样操作
  20. android 微信分享注册链接显示app的logo出现黑边处理方案

热门文章

  1. 文本太长,Transformer用不了怎么办
  2. 关于编码在不同地方的转换
  3. (python基础)各种打印三角形
  4. 新时代,新思潮,人人受益
  5. PD-Server GRPC 接口图解
  6. 饿了吗 系统_阿里反击开始!飞猪“100亿”补贴来袭,美团挺得住吗?
  7. core dumped
  8. python玩转modbus
  9. 关于给hexo博客增加随笔页面(并对页面仿信纸作业纸样式修饰)
  10. 重庆成都汽车车身贴膜隐形车衣为什么要找膜手世家