如果使用与[i][b][color=darkred]图[/color][/b][/i]相关的知识,设计算法来找出一段程序代码中:
(1)定义了但未被使用的变量;
(2)使用了但没有被定义的变量;
(3)其他与变量相关的错误
我的初步想法是:
1.定义一个变量类,
Class Var
{
属性: name,type,isInit(是否初始化),initVal(初始化值),isUsed(是否被使用过);
方法: 一些基本方法;
}
2.程序代码中每个声明的变量(new个Var),作为图的一个结点,用[b]邻接表[/b]来实现图。
3.对使用的每个变量,对图进行搜索(BFS或者DFS),来看是不是被定义过的。(根据Var的name和type判断)并改变isUsed属性。
4.再对图遍历次,根据Var的isUsed属性看是否有定义了但没被使用的变量。
5.可以增加些Var属性,来判断是否有重复定义,是否初始化错误之类的。([color=blue]解决问题3[/color])
请教各位JE上的大虾们,可以从下面几个方面但不限于谈谈自己看法(不用说的太复杂,说说思想就行):
1.对我的想法做出评价
2.如果必须用图,有没有更好的实现办法
3.不考虑用图,有没有更好的解决办法.(考虑O(n))
4.具体的编译器是怎么实现的这些问题的
(1)定义了但未被使用的变量;
(2)使用了但没有被定义的变量;
(3)其他与变量相关的错误
我的初步想法是:
1.定义一个变量类,
Class Var
{
属性: name,type,isInit(是否初始化),initVal(初始化值),isUsed(是否被使用过);
方法: 一些基本方法;
}
2.程序代码中每个声明的变量(new个Var),作为图的一个结点,用[b]邻接表[/b]来实现图。
3.对使用的每个变量,对图进行搜索(BFS或者DFS),来看是不是被定义过的。(根据Var的name和type判断)并改变isUsed属性。
4.再对图遍历次,根据Var的isUsed属性看是否有定义了但没被使用的变量。
5.可以增加些Var属性,来判断是否有重复定义,是否初始化错误之类的。([color=blue]解决问题3[/color])
请教各位JE上的大虾们,可以从下面几个方面但不限于谈谈自己看法(不用说的太复杂,说说思想就行):
1.对我的想法做出评价
2.如果必须用图,有没有更好的实现办法
3.不考虑用图,有没有更好的解决办法.(考虑O(n))
4.具体的编译器是怎么实现的这些问题的