问题比较偏门,关于SQL语言实现,Windows下的词法分析、语法分析和gcc。能解决问题,就再加分。
我们知道,数据库中的SQL语言实现,首先必须进行词法分析、语法分析。
在Unix(Linux)下,词法分析使用的是lex,语法分析使用的是yacc,
在Windows下,有一个类似Unix(Linux)的环境——Cygwin,词法分析使用的是flex,语法分析使用的是bison,
我在Windows2000环境下安装了Cygwin,似乎一切都正常,
我有一个词法分析程序01.l,
先进行词法分析
flex 01.l
生成lex.yy.c
之后,使用gcc
gcc -c lex.yy.c
生成lex.yy.o
最后生成可执行文件a
gcc -o a lex.yy.o
就在最后一个命令执行时有问题:
lex.yy.o(.text+0xb87):lex.yy.c: undefined reference to 'yywrap'
lex.yy.o(.text+0x145e):lex.yy.c: undefined reference to 'yywrap'
collect2: ld returned 1 exit status
而这一系列命令在Linux环境下是没有问题的,
我不知道是哪里出错了,是安装,还是使用的命令,或者是Linux和Windows在这方面有所不同,请高手指点。
谢谢。
01.l:
%{
/*
* this sample demonstrates (very) simple recognition:
* a verb/not a verb.
*/
%}
%%
[\t ]+ /* ignore white space */ ;
is |
am |
are |
were |
was |
be |
being |
been |
do |
does |
did |
will |
would |
should |
can |
could |
has |
have |
had |
go { printf("%s: is a verb\n", yytext); }
[a-zA-Z]+ { printf("%s: is not a verb\n", yytext); }
.|\n { ECHO; /* normal default anyway */ }
%%
main()
{
yylex();
}