问个技术难题,发现中文的资料很少,希望大家给点idea

marcal_z 2010-09-02 02:08:43
小弟这几个月一直在写一个Diff软件,就类似于win merge,和XML diff。。。。来判断两个file的相同和不同的地方,和判断两个目录的相似度。

这里的文件,是在一种形式化方法过程中一个叫refinement阶段产生的,文件叫做verification condition files. 简称VCs.
一旦代码改变,这些verification condition file 也改变。
我的任务就是开发一种软件,来探测这种改变。

verification condition是基于 first order logic的,所以也就是说,是一种特殊的文件。

这里的比较,不是flat-based, 而是structured based,基于结构化的比较。

有一个标准,可以把上述的VCs转化成 一种特殊的Abstract Syntax tree.

通过比较两个文件分别生成的AST 树(不是普通的树,严格意义上讲,是一种图和树的结合物。),然后通过树的比较和操作来探测改变。

我的问题也来了。

既然生成AST 树,就能用广度遍历它,进而得到一个序列,然后比较序列。

我现在是能找到树的树根,但是树的全部,不容易访问。我特别想用一个for的递归算法,来迭代的访问树。

但是好像java api中getNext()方法不能用,所有的数据结构都得我自己写。
我想问,有没有其他方法来得到树的序列?

按照一般的思路,比如

Compared(tree t1, tree t2)

if(t1.root == t2.root)
{
CompTree(tree1-> leftchild,tree2-> leftchild);
CompTree(tree1-> rightchild,tree2-> rightchild);
}

但是我思考了,发现这种方法可能行不通。
大家有什么想法没?
...全文
259 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuefeimengli2007 2011-08-29
  • 打赏
  • 举报
回复
XML比对有什么现成的好用的工具没有啊?
bastengao 2010-09-07
  • 打赏
  • 举报
回复
树的遍历,有很多,不知道楼主要怎么遍历。api 没有提供也是很正常的,但自己应该也不会很难,参考一下别人的例子,主要是看人家的思路。递归,不递归这都无所谓。
marcal_z 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 huntor 的回复:]

去看jmeld的代码吧!
http://jmeld.svn.sourceforge.net/viewvc/jmeld/trunk/
[/Quote]

这个代码我看了。。。。

不是我要的。。。。我在自己想想把。。。。谢谢你
macrotea-cn 2010-09-05
  • 打赏
  • 举报
回复
一直关注huntor的回答
marcal_z 2010-09-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 huntor 的回复:]

去看jmeld的代码吧!
http://jmeld.svn.sourceforge.net/viewvc/jmeld/trunk/
[/Quote]

thanks, cheers....
Yelena_Lee 2010-09-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 huntor 的回复:]
去看jmeld的代码吧!
http://jmeld.svn.sourceforge.net/viewvc/jmeld/trunk/
[/Quote]


顶这个方法...
huntor 2010-09-05
  • 打赏
  • 举报
回复
marcal_z 2010-09-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wula0010 的回复:]
比较文件的差别,这个UltraEdit-32就可以做,项目管理的软件也都做了,好像不要这么麻烦吧............
[/Quote]

我们老师让我手动写一个....汗....
有没有人有思路?
wula0010 2010-09-03
  • 打赏
  • 举报
回复
比较文件的差别,这个UltraEdit-32就可以做,项目管理的软件也都做了,好像不要这么麻烦吧............
huntor 2010-09-02
  • 打赏
  • 举报
回复
XMLUnit 中有xml文档/片段的比较,不知有参考价值没

62,614

社区成员

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

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