2010-10-20 61 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