请大家帮我出点主意,一个算法的问题。

jyf7356759 2008-03-14 05:19:15
我现在把一个文件返回成一个string,这个string是每一行代码加起来的,除去所有的comments。
现在需要得到所有的if(...)的...是什么,但是可能有这种情况if(()&&()&&()),我就要找到()&&()&&()。能有高手给点算法的建议么?
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyf7356759 2008-03-15
  • 打赏
  • 举报
回复
我的意思是如果
string = "sd if ss"; 这种情况的if就不考虑在我的计算之内。
我只考虑if关键词的情况,请问有什么办法判断么?
nicholasmars 2008-03-14
  • 打赏
  • 举报
回复
请问单个字符判断是什么意思呢?怎么判断一个if在string里或者是关键词呢?


可用SubString或Split
jyf7356759 2008-03-14
  • 打赏
  • 举报
回复
请问单个字符判断是什么意思呢?怎么判断一个if在string里或者是关键词呢?
我把我的这个问题说清楚点吧。
我现在做的是找出一个代码的复杂性。这个复杂性是看有多少个if,for,switch,while循环,对于这些循环,看if(.....)这个...的表达式,有多少个&& 和 ||,如果if里面还有循环,就还按照这个算法算。
不过如果是if() return .. if () return .. 就要把这2个if的复杂性相乘。
因为代码可能不是很好的format,所以我现在把注释去掉,把所有的行放到一个string里面,但是下面的算法,感觉挺困难的,还希望高手多多帮忙!
谢谢了。
Inhibitory 2008-03-14
  • 打赏
  • 举报
回复
栈就是stack么?
把注释去掉,这个我已经做好了,问题就是判断if比较困难,还有种可能就是如果这个if是在一个string里,那就不能判断它是if了。
谢谢1楼先。

对,栈就是stack,你最好还是先看一下栈的基础,这个以后也用经常用得着
至于if在string里,可以单个字符单个字符的读取来判断啊,比较while, switch等都是相似的处理,而且这种处理,都是必须读取单个字符的,
可以去参考一下编译原理的词法分析器的做法,不是很难.

也可以参考编译原理的四则运算的实现方法,很多地方都是差不多的.
jyf7356759 2008-03-14
  • 打赏
  • 举报
回复
栈就是stack么?
把注释去掉,这个我已经做好了,问题就是判断if比较困难,还有种可能就是如果这个if是在一个string里,那就不能判断它是if了。
谢谢1楼先。
Inhibitory 2008-03-14
  • 打赏
  • 举报
回复
对于if的那个判断,如果if条件判断语句的语法是错的,那就不能这么简单处理,要做的东西就会很多.
Inhibitory 2008-03-14
  • 打赏
  • 举报
回复
可以用栈来处理这个问题:if(()&&()&&())
当读到一个(时,入栈,当读到一个)时,栈顶弹出一个(,判断,如果栈空,则说明if中的条件语句处结束,不空,则说明没结束.

我想,要把文件中的注释去掉,不用想的那么复杂,可以更简单的:
读取一行,查找// 或者/*,
1.如果找到//,则把//前面的子串加入你的结果子串中(最好用StringBuffer),继续读取下一行
2.如果找到/*,则把/*前面的子串加入你的结果子串中,从此*后开始在这一行中继续查找*/,
2.1如果找到*/,这中间的代码丢掉,又从*/的/处开始查找/*,重复第2步,直到这一行结束。
2.2如果在当前行没有找到*/,则读取下一行,继续找*/,直到找到,重复第2.1步.

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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