登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

秒大刀 博客

好好学习 天天向上

 
 
 

日志

 
 
 
 

[转]Windows下使用Lex和Yacc  

2011-04-21 23:56:25|  分类: 技术积累 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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
  评论这张
 
阅读(3795)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018