问题比较偏门,关于SQL语言实现,Windows下的词法分析、语法分析和gcc。能解决问题,就再加分。

allenyy 2005-06-28 10:39:12

我们知道,数据库中的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();
}
...全文
95 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
iihero_ 2005-07-02
  • 打赏
  • 举报
回复
gcc -o a lex.yy.o
少了-llex的库选项吧。windows下应该有对应的库依赖的。

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧