| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1911 人关注过本帖
标题:想用lex做一个代码注释清楚的小东西,但遇见了一个问题
取消只看楼主 加入收藏
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
 问题点数:0 回复次数:9 
想用lex做一个代码注释清楚的小东西,但遇见了一个问题
%{
void comment();
%}

%%
"/*"   {comment();}
.|\n  {printf("%c",*yytext);}
%%
int main()
{
 yylex();
 return 0;
}
void comment()
{
 int ch , prev=0;
  
 while ( (ch = input()) != -1 )
 {
  if (prev == "*" && ch == "/")
   return ;
  prev = ch;
 }
 return ;
}
int yywrap()
{
        return 1;
}

以上是我的代码,现在的问题是,对于这样的代码:
int i=0;
/*test*/
printf("test");
他会将注释连同之后的所有代码都消去。请问这是为何
搜索更多相关主题的帖子: lex 注释 小东西 comment int 
2008-07-17 17:34
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
弱弱的问一下,难道不能依赖隐式转换吗

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2008-07-17 18:08
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
我没有用int根指针比较呀
难道input返回的不是int?

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2008-07-17 18:08
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
啊啊!!!!!!
手误!!!
真的是手误!!!

应该是'*' ,我代码写错了。

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2008-07-17 18:16
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
这个好像不是正常的源码吧!

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2008-07-17 18:20
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
对了,我想在问一个问题,
就是,为什么写完.lex见后每次调用flex来生成源码时都显示说.lex文件末尾没有EOF
请问这是为何?

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2008-07-17 18:26
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
[bo][un]VxWorks[/un] 在 2008-7-17 18:25 的发言:[/bo]

难道用户只能用你的软件跑完美的代码吗?

软件应该足够的健壮,考虑各种可能遇到的情况


如果按照你给的代码来测试,那么从/*到EOF之间的所有字符都会被忽视掉,即清理,因为我是用EOF来做循环条件的。

当然,健壮是必须的,但我个人觉得有些时候,使用者还是要自己担负其一些责任(就如同,不能printf(NULL)一样)

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2008-07-17 18:36
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
[bo][un]VxWorks[/un] 在 2008-7-17 18:32 的发言:[/bo]

没有遇到过这种情况,把flex输出信息给我看看

很多语言都要求代码文件以换行符号结束,你看看flex要的是换行还是EOF
另外你使用flex的系统应该和你建立.lex文件的一致,windos和linux对换行以及文件结尾的表示也 ...

抱歉,我现在网吧,所以具体信息我没发给你。
我只能描述一下,
错误是指向.lex文件的作后一行,然后又跟了一个我不会写的单词(其字面我记得意思是“未成熟的” ),最后是 EOF。

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2008-07-17 18:43
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
着色器我前一阵子已经做了一个非常简易的了

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2008-07-17 18:46
zhaoyg
Rank: 1
等 级:新手上路
帖 子:328
专家分:0
注 册:2006-8-28
收藏
得分:0 
谢谢你的建议。
我只是想用LEX来重新写一个以前做过的程序,
由于牵扯到注释,so....

麻雀飞上枝头变凤凰,而菜鸟的我飞上枝头却感冒了,为什么我的脑袋如此的不管用呢。
2008-07-17 18:57
快速回复:想用lex做一个代码注释清楚的小东西,但遇见了一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017263 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved