LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2693|回复: 13

怎样编译lex程序

[复制链接]
发表于 2003-7-2 21:37:29 | 显示全部楼层 |阅读模式
在RedHat里面编译一直不行。昨天中午在Debian里可以了,晚上又不行了。
我晕晕晕晕晕晕!
谁能给个正确的编译方法?
flex aaa.lex
gcc -ll lex什么.c
发表于 2003-7-2 22:33:00 | 显示全部楼层
谁来帮帮Sandy小朋友?
Sandy自己也先说说系统给你的错误信息是什么。
发表于 2003-7-2 23:06:05 | 显示全部楼层
现在就开始玩编译原理了,历害!
发表于 2003-7-2 23:38:32 | 显示全部楼层

re:

我一直都没有通过编译,不知道为什么.
原来很有兴趣.
flex得到的c程序通不过编译,不明白为什么
我都按书上的原代码做的都不行,有人搞定了给讲讲吧.
发表于 2003-7-3 01:39:23 | 显示全部楼层
怎么我没有什么问题呢?

$ flex myprog.lex
$ cc -lfl -o myprog myprog.yy.c

就成功了啊。
 楼主| 发表于 2003-7-3 09:28:31 | 显示全部楼层
$ flex myprog.lex
$ cc -lfl -o myprog lex.yy.c
"main"函数定义重复
没有找到“yywrap”
没有找到“yyerror”(大概这个意思)
发表于 2003-7-3 09:32:02 | 显示全部楼层
把你的LEX程序拿来看看?
发表于 2003-7-3 11:52:22 | 显示全部楼层
main函数没有定义flex会自动加上,如果你重新定义了main()函数,flex会把你定义main()拷贝到lex.yy.c中的,若又指定了%option main选项,flex将自动添加main()函数,这时会造成冲突!
 楼主| 发表于 2003-7-3 12:19:43 | 显示全部楼层

  1. %{
  2. /*dfhjfhdjs*/
  3. %}
  4. %%
  5. [ \t] ;
  6. [0-9]+(\.[0-9]+)? printf("Number:%s\n",yytext);
  7. "[^"\n]*" printf("String:%s\n",yytext);
  8. [A-Za-z]+[A-Za-z0-9]* printf("Identifier:%s\n",yytext);
  9. "//".*\n ;
  10. . printf("Symbol:"%s"\n",yytext);
  11. \n ;
  12. %%
复制代码

现在已经没有main的问题了。
怪了 把“-ll”放后面就没问题了!
发表于 2003-7-3 17:46:39 | 显示全部楼层
flex和bison中都有规定,因为使用C,所以被调用函数应该先于调用函数被定义或说明,在
%{
%} (定义段中)
必须是这样的!
问题的产生估计和-ll的位置前后有关系!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表