lex

Lex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。 一种匹配的常规表达式可能会包含相关的动作。这一动作可能还包括返回一个标记。 当 Lex 接收到文件或文本形式的输入时,它试图将文本与常规表达式进行匹配。 它一次读入一个输入字符,直到找到一个匹配的模式。 如果能够找到一个匹配的模式,Lex 就执行相关的动作(可能包括返回一个标记)。 另一方面,如果没有可以匹配的常规表达式,将会停止进一步的处理,Lex 将显示一个错误消息。

yacc

Yacc 代表 Yet Another Compiler Compiler。 Yacc 的 GNU 版叫做 Bison。它是一种工具,将任何一种编程语言的所有语法翻译成针对此种语言的 Yacc 语 法解析器。

借助lex和yacc,我们可以很容易地开发出所谓的编译器。linux下有很多很方便的小工具,linux系统已经自带有扫描器(flex)与解释器(bison)。幸运的是这些小工具一般都有windows的版本。现在我就简单说一下如何在windows下安装这些小工具。

1. 首先下载unxutils压缩包 http://sourceforge.net/search/?type_of_search=soft&words=unxutils&search=Search

2.把压缩包解压到一个文件夹,例如我的解压包放在  E:/compiler/UnxUtils下

3.配置环境变量。分别把unxtils下的lib与wbin两个子文件夹路径添加到环境变量path中。

a.在控制台上输入命令:

path=%path%; E:/compiler/UnxUtils/usr/local/lib

path=%path%; E:/compiler/UnxUtils/usr/local/wbin

b.直接在“系统属性”的环境变量上配置。

4.在解压包中的E:/compiler/UnxUtils/usr/local/share下有两个文件,bison.hairy,bison.simple,为这两个文件建立两个环境变量。(Administrator的用户变量)

变量 值

bison_hairy      E:/compiler/UnxUtils/usr/local/share/bison.hairy      (注意变量名称必须为 bison_hairy)

bison_simple    E:/compiler/UnxUtils/usr/local/share/bison.simple   (注意变量名称必须为 bison_simple)

至此万事俱备,我们可以开始两个简单的文件来测试一下。

1.新建文本文件,更改名称为lex.l,敲入下面代码

%{

int yywrap(void);

%}

%%

%%

int yywrap(void)

{

return 1;

}

2.新建文本文件,更改名称为yacc.y,敲入下面代码

%{

void yyerror(const char *s);

%}

%%

program:

;

%%

void yyerror(const char *s)

{

}

int main()

{

yyparse();

return 0;

}

我们暂且不讨论上面代码的意思。

打开控制台,进入到刚才所建立文件(lex.l,yacc.y)所在的文件夹。

1.输入 flex lex.l

2.输入 bison yacc.y

如果我们看到当前文件夹上多了两个文件(yacc.tab.c,lex.yy.c),那么说明lex&&yacc已经安装配置成功,接下来就好好享受这两个小工具的魅力吧。

问题:

1.在控制台输入 flex lex.l时,提示" 'flex' 不是内部命令或外部命令,也不是可运行的程序或批处理文件"则说明环境变量的path设置不正解。

2.在控制台输入 bison yacc.y时,提示“bison : /usr/local/share/bison.simple: No such file or directory ”最有可能是上面“Administrator的用户变量”中变量的名称设置不正确(必须为bison_simple).

lexyacc安装配置相关推荐

  1. mysql64如何配置_win7 64位下如何安装配置mysql-winx64(安装记录)

    win7 64位下如何安装配置mysql winx64 1.mysql下载 官方网站下载地址:http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5. ...

  2. ActiveMQ—安装配置及使用

    安装配置及使用 转自:http://blog.csdn.net/qq_21033663/article/details/52461543 (一)ActiveMQ介绍 ActiveMQ 是Apache出 ...

  3. Linux下Tomcat的安装配置

    Linux下Tomcat的安装配置 一.下载安装对应的jdk,并配置Java环境. 官网下载地址: http://www.oracle.com/technetwork/java/javase/down ...

  4. wamp的mysql单独使用_Windows 7+8.1+10 单独安装配置 PHP+Apache+MySQL(不使用 WAMP)

    Windows 8.1 单独安装配置 PHP+Apache+MySQL(不使用 WAMP) 本文同样适用于Windows7和10 0x00 PHP [下载]http://www.doczj.com/d ...

  5. mysql数据库解压安装教程_MySQL数据库之windows 10下解压版MySql安装配置方法教程...

    本文主要向大家介绍了MySQL数据库之windows 10下解压版MySql安装配置方法教程 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. windows 10 下安装解压版的 ...

  6. python3.6.2怎样安装,python 3.6.2 安装配置方法图文教程

    python 3.6.2 安装配置方法图文教程 Windows下Python(pip)环境搭建(3.6)图解,供大家参考,具体内容如下 1.下载最新的Python安装:3.6.2 2.安装时不要选择默 ...

  7. centos7 mysql workbench_centOS下mysql workbench安装配置教程

    本文为大家分享了mysql workbench安装配置教程,供大家参考,具体内容如下 step0:安装mysql 在按照workbench之前,先安装mysql.指令是 yum install mys ...

  8. Centos5.6 VNC安装配置【无错版】

    不严格按本步骤就会出现VNC桌面花屏,就是桌面分离为一层一层的... ---------------------------------------- 先装X window http://blog.c ...

  9. C/C++代码静态检查工具PC-lint在VS2008开发环境中的安装配置和使用

    PC-Lint偏重于代码的逻辑分析,它能够发现代码中潜在的错误,比如数组访问越界.内存泄漏.使用未初始化变量等. 1.  从http://download.csdn.net/detail/liucha ...

最新文章

  1. 企业级工作流解决方案(十五)--集成Abp和ng-alain--Abp其他改造
  2. 新版中青——青龙羊毛
  3. centos 搭建 svn服务器
  4. 软件架构最佳实践和案例分析
  5. 好看的按钮组件_一个能决定命运的按钮,你敢来挑战吗?
  6. java窗口how2j_java面向对象1(学习笔记HOW2J)
  7. 5G NR QCL准共址详解
  8. 内容可编辑_让PDF像WORD一样自由编辑,好用的PDF编辑工具推荐
  9. 外星人台式机无盘服务器,可以拎走的“台式机” Alienware Area-51m评测
  10. DbVisualizer 12.0.* Ubuntu
  11. 微信 input 照相机 呼出
  12. ubuntu /etc/profile和/etc/environment的比较
  13. 思科模拟器Cisco Packet Tracer安装指南
  14. HAProxy代理后端服务取真实IP
  15. 如何有效地设置QTextEdit的背景
  16. 关于微信小程序开发中的显示个人信息以及重置密码功能
  17. 腾讯后台面经大全(整合版)
  18. ppt文件被加密怎么解开,ppt复制打印限制怎么解除?
  19. 安卓手机主题软件_【软件】安卓手机延时摄影视频软件APP
  20. K_A08_012 基于 STM32等单片机驱动 DRV8833 模块按键控制直流电机正反转

热门文章

  1. 提升教师计算机业务培训计划,教师信息技术培训计划
  2. Flowable入门系列文章193 - 禁用批量插入和安全脚本
  3. WebStorm快捷键以及个人设置
  4. 苹果手机自带的邮件无法连接服务器,iphone邮箱怎么连接服务器 iphone邮箱无法连接服务器怎么办...
  5. Java高级之线程同步
  6. php用重写算出圆柱体的体积,枚举测试用例Cylinder(圆柱体)(枚举)
  7. mysql模糊查询是否区分大小写?
  8. [GYCTF2020]Ezsqli --BUUCTF
  9. 微信小程序布局篇课程构思----Position+Flex
  10. 支付架构调用流程以及常见支付问题解决方案