Windows下使用Lex和Yacc

Windows下使用Lex和Yacc多种多样,简单罗列如下:
    
1.Cygwin
    Cygwin是Windows平台上运行的unix/linux模拟环境,由Cygnus Solutions开发。
    Cygnus起初把gcc,gdb,gas等开发工具进行了改进,使他们能够生成并解释win32的目标文件。然后再把这些工具移植到windows平台上去。
    移值方案有多种,一是基于win32 api对这些工具的源代码进行大幅修改。但工作量太大,他们采取了另一种方法,即开发一个共享库(cygwin.dll),把win32 api中没有的unix风格的调用(如fork,spawn,signals,select,sockets等)封装在里面,也就是说,他们基于win32 api写了一个unix系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交叉编译器来生成可以在windows平台上运行的工具集。
    以这些移植到windows平台上的开发工具为基础,Cygnus又逐步把其他的工具(几乎不需要对源代码进行修改,只需要一些配置脚本)软件移植到windows上来。这样,就在windows平台模拟出一个unix环境。
    Cygwin是一个功能强大的工具集,借助它不需要一台 Unix 机器也可以编译运行 Unix 程序,这可以帮助程序开发人员把应用程序从 UNIX/Linux 移植到 Windows 平台,或者在 Window 平台开发 UNIX/Linux 应用程序。Cygwin目标在于兼容性,而不是执行效率。

2.MinGW + MSYS
    MinGW (Minimalist GNU for Windows) 原来是Cygwin里GNU开发工具的一个分支,实质是一些头文件和函数库的集合,该集合允许在没有第三方动态链接库的情况下使用GCC(GNU Compiler C)开发Win32程序。MinGW主要由GNU binary utilities、GCC和GDB组成。同时还包括一些重要的库:libc(C Runtime),专用于Win32环境的API接口库。MinGW开发的程序与MS Visual Studio 程序可以彼此互相通用。
    MinGW允许控制台模式的程序使用微软的标准C运行库(MSVCRT.DLL),所以你既可以用GCC写控制台模式的ANSI程序,也可以用微软提供的 C 运行库。该功能是 Windows32 API 所不具备的。
    Cygwin+gcc与MinGW,都是gcc在windows下的编译环境。Cygwin+gcc编译的程序,在windows执行时必须依赖cygwin.dll,MinGW则不需要。相比 Cygwin 执行效率是 MinGW 的重点。
    MinGW只是开发环境,其实就是GCC在Windows下的一个实现,没有包括Linux/Unix一些其他的工具(如bash,sh等),而MSYS弥补了这一点。MinGW常于MSYS配合使用。
    MSYS (Minimal GNU(POSIX)system on Windows) ,是一个小型的GNU环境,包括基本的bash,make等等,其提供了Bourne shell的类似环境。 

3.使用GnuWin
    
下载flexbison的Win32源码或版本
    其实上面两种方法本质也是这个。推荐网址: http://gnuwin32.sourceforge.net     

4.Dev-C++ 编译 由 bison flex 编译生成代码
    其实是使用 Dev C++ 代替了MinGW gcc 或者 Cygwin gcc。
    Dev-C++是一个C&C++开发工具,是一款自由软件,遵守GPL协议。它集合了GCC、MinGW32等众多自由软件,并且可以从devpak.org上取得最新版本的各种工具支持,而这一切工作都是来自全球的爱好者所做的工作。 Dev-C++ IDE采用Delphi开发。不过要注意的是,变量声明位置问题的会导致编译不通过,即使用前面文章的例子在Dev-C++默认设置下是不能编译通过的。解决起来也简单,手工移到函数体开始就行了。

5.使用Parser Generator
    Parser Generator可以生成Windows平台下的C/C++/Java LexYacc代码。支持Borland C++ Builder和Visual C++多种编译环境。
    Parser Generator的key为PGS11115,貌似不注册不能编译库

 

from:http://dev.firnow.com/course/3_program/c++/cppjs/200798/70287.html 有整理
参考:

Compiler-compiler

Yacc 与 Lex 快速入门

Parser Generator使用说明

C# Cup & Lex

lex和yacc和parser generator和vs2008


2012-2-1
2013-03-27
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值