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
//.......