关于一个算法设计问题,值得想想,大家来看看

wss71104307 2008-10-11 11:13:36
如果使用与图相关的知识,设计算法来找出一段程序代码中:

(1)定义了但未被使用的变量;
(2)使用了但没有被定义的变量;
(3)其他与变量相关的错误


我的初步想法是:

1.定义一个变量类,
Class Var
{
属性: name,type,isInit(是否初始化),initVal(初始化值),isUsed(是否被使用过);
方法: 一些基本方法;
}
2.程序代码中每个声明的变量(new个Var),作为图的一个结点,用邻接表来实现图。
3.对使用的每个变量,对图进行搜索(BFS或者DFS),来看是不是被定义过的。(根据Var的name和type判断)并改变isUsed属性。
4.再对图遍历次,根据Var的isUsed属性看是否有定义了但没被使用的变量。
5.可以增加些Var属性,来判断是否有重复定义,是否初始化错误之类的。(解决问题3)


请教各位CSDN上的大虾们,可以从下面几个方面但不限于谈谈自己看法(不用说的太复杂,说说思想就行):
1.对我的想法做出评价
2.如果必须用图,有没有更好的实现办法
3.不考虑用图,有没有更好的解决办法.
4.具体的编译器是怎么实现的这些问题的
...全文
120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sodier 2008-10-13
  • 打赏
  • 举报
回复
额。。。看看编译原理先。。。
frank_ll 2008-10-13
  • 打赏
  • 举报
回复
路过,帮顶
onlinewan 2008-10-13
  • 打赏
  • 举报
回复
感觉楼主想复杂了,你要实现的其实就是编译原理中的词法分析,如果你看看编译原理,就会有更好的方法了.
Jack_xiao 2008-10-13
  • 打赏
  • 举报
回复
个人觉得用图太复杂,效率不高
如果我做也许用两个表,一个表A记录有定义的变量,搜索一边,对于每个使用的变量判断是否在表A中,
不在就放入表B;这样一遍下来 “使用了但没有被定义的变量”就找到了;
表中可以设置个属性表示是否使用过,初始为false,使用了就赋值为true,这样一遍下来表A中为false的就是
“定义了但未被使用的变量”;
至于(3)你的想法可行,其实用一个变量就可以了,比如ErrorMessage=1 表示重定义,ErrorMessage=2表示
初始化错误;等

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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