解析器生成

-2 投票
3 回答
1312 浏览
提问于 2025-04-16 05:47

我正在做一个关于软件抄袭检测的项目。我打算用C语言来实现。为此,我需要创建一个令牌生成器和一个解析器,但我不知道从哪里开始。有没有人能帮我一下?

我已经创建了一个令牌的数据库,并且把我程序中的令牌分离出来了。接下来我想做的是比较两个程序,以找出它们是否抄袭。为此,我需要创建一个语法分析器。我不知道该从哪里入手……

也就是说,我想用Python为C程序创建一个解析器。

3 个回答

0

我不太确定你是否需要解析令牌流来检测你想要的特征。实际上,这可能会让事情变得更加复杂。

你真正想要的是找到一些原始源代码的片段,这些片段和你正在测试的可疑样本代码有很强的相似性。这听起来和贝叶斯分类器的目的很相似,贝叶斯分类器常用于垃圾邮件过滤和语言识别。

1

自己动手做一个真正的C语言解析器是个非常大的工程。

我建议你要么找一个已经做好的,比如说pycparser,要么就定义一个简单得多的C语言子集,这样更容易解析。

等你把C语言解析完了,你还有很多工作要做,特别是为了你的抄袭检测器之后

3

如果你想在Python中创建一个解析器,可以看看这些库:
PLY
pyparsing
还有Lepl - 这个比较新,但功能非常强大

撰写回答