首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

lex 如何用

2013-04-05 
lex 怎么用?现在在学编译原理,用lex语言编写一个扫描器,但看了好多资料对lex的使用还是不太明白。我想知道

lex 怎么用?
现在在学编译原理,用lex语言编写一个扫描器,但看了好多资料对lex的使用还是不太明白。我想知道具体怎么操作的,而不是那些正规表达式之类的语法。
1、怎么安装?
2、在哪里编写lex源文件?
3、我用记事本编写了源文件,然后在DOS里面用flex lex.l的命令得到了一个lex.yy.c,然后把lex.yy.c放到DEVc++ 里面想得到.exe文件,但是,用DEVc++编译时显示连接错误,如下: 
  [Linker error] undefined reference to `yywrap' 
  [Linker error] undefined reference to `yywrap' 
  [Linker error] undefined reference to `WinMain@16' 
  ld returned 1 exit status 
这应该lex里面的函数库没有包括在里面吧? 怎么弄呢? 在网上貌似看到要在VC++里面用?用DEVc++不行吗?
使用lex是这样的流程吗? 另外还看到一个parser Generator,这个东西跟lex有关吗?怎么用的?
lex和yacc到底怎么用的,有哪位能回答一下吗?感谢。
lex? yacc
[解决办法]
`WinMain@16
建错项目了吧

[解决办法]
1、怎么安装?
既然能用flex命令那么已经算是装好了。

2、在哪里编写lex源文件?
任意文本工具。

3、
如果单独使用lex的话可以在.l文件里加%option noyywrap,代码看起来是这样:


%{
/* C code to be copied verbatim */
#include <stdio.h>
%}

%option noyywrap

%%
[0-9]+  {printf("Saw an integer: %s\n", yytext);}
%%
//c codes blow
//.......

也可以定义一个yywrap函数,并且返回1(返回1代表不继续扫描其他文件)
最后一个错误是由于文件里没有定义main函数,在.l文件最后加入main函数就行了。

如果能看懂英文的话推荐OReilly的《flex and bison》这本书,讲的比较详细。
[解决办法]
英语也是一门计算机语言的说。

热点排行