YACC&Flex Windows使用开发

    FLex(Fast lexical analyzer generator)是词法分析器的生成器,提供对输入的文本进行分析,匹配指定的词法模式。Lex在使用上很不方便的一点是它是首先在Unix系统上出现的工具,后来成为了GNU的一员,虽然移植到Windows平台,但是使用起来有很多需要注意的地方。
    在windows上的使用我使用过Parser Generation、GNUWin32移植版本。在使用Parse Generation使用yacc的时候有一个编译问题怎么也过不了(我使用的是VC6.0+SP),很郁闷。最后放弃,找到GNUWin32的移植版本,可以解决这个编译问题。下载链接 http://gnuwin32.sourceforge.net/packages/flex.htm    开始很疑惑的一点是Flex生成的词法分析器并没有包含任何的头文件也没有使用extern声明,那它使用的yylex、yytext函数是从哪里链接过来的。既然不在其他文件中,只能在生成的文件中了,查看生成的词法分析器代码搜索yylex,只搜索到#define YY_DECL int yylex YY_PROTO(( void )),并没有搜索到yylex的定义。后来仔细一看下面有定义 YY_DECL{...},原来如此实际上yylex还是被定义了只是先被宏定义了。仔细观察词法分析器的代码,这其中大量使用了宏定义。yy_scan_string等函数都是由用宏定义组合成的,其中的代码大量使用了很多旧的C语言规范的代码,例如函数的定义YY_BUFFER_STATE yy_scan_string( yy_str ) yyconst char *yy_str;。
    对于Flex自动生成的代码,我认为一个很不方便的地方在于它不
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值