2010-10-20 60 views
-2

我正在做一个项目SOFWARE PLAGIARISM DETECTION ..我打算用C语言来做,因为我应该创建一个令牌生成器和一个解析器..但是我不知道在哪里开始..任何人都可以帮助我与此..解析器代

我创建了一个令牌数据库,我从我的程序中分离出令牌。接下来我想要做的是比较两个程序,以找出它是剽窃还是不。为此,我需要创建一个语法analyzer.I不知道从哪里开始...

即我想如果你想创建一个解析器来创建在蟒蛇

+0

C?蟒蛇?什么? – 2010-10-20 10:04:57

+0

确实:这是什么,我甚至没有 – delnan 2010-10-20 10:06:49

+21

我敢肯定,你可以复制一些代码。 – 2010-10-20 10:20:33

回答

3

C程序分析器Python中你可以看看这些库:
PLY
pyparsing
Lepl - 新的,但非常强大的

+0

只有OP定义了一个非常简单的C模型,这对于一个学术项目来说可能是好的,这些都是好主意。 – 2010-10-20 19:49:01

1

自己构建一个真正的C解析器是真的大任务。

我建议你找到一个已经完成的工作,例如。或者你定义了一个很容易解析的C的一个非常简单的子集。

您将有大量的工作,为您的剽窃探测器后你做解析C.

+0

+1 - 解析是最简单的部分。 – 2010-10-20 19:42:32

+1

在构建了解析器和克隆检测器之后,我认为它们同样困难。 C至少有一个文档化的定义作为参考(有点,真正的编译器与它不尽相同);对于克隆检测,您需要确定您要使用的启发式,然后尽可能使它们尽可能有效。作为C代码可用的一个实现,请参阅http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.70.1272&rep=rep1&type=pdf – 2010-10-20 19:45:51

0

我不知道你需要解析令牌流检测到您正在寻找的特征对于。事实上,这可能会让事情变得更复杂。

你真正需要的是原始源代码序列,它与正在测试的可疑示例代码有很强的相似性。这听起来非常类似于Bayes classifier的用途,就像垃圾邮件过滤和语言检测中使用的那些一样。

+0

取决于检测器的用途。如果你想要在C源代码上抄袭,你需要以独立于格式的方式来做到这一点。比较“文本行”不会这样做;所以,你需要一些不是线条的东西。令牌是做这件事的有用粮食。更好的是抽象语法树,这是OP似乎正在捕捞的东西;请参阅我的回答,以参考技术论文,完全是这样。 – 2010-10-20 23:05:26