找出C/C++ 代码中所有用户自定义的标识符(变量名)

我们要做判断程序抄袭的系统,希望能够读取一份C/C++ 源文件时,将其中所有用户自定义的标识符(变量名)都删去,生成标准化代码,提取程序特征。请问如何找出C++ 代码中所有用户自定义的标识符(变量名)?谢谢!

我给你一点思路吧,这学期在学编译原理
你可以把一些关键字,比如if、else、int这些定义成字符串常量,比如const string = "int"。然后扫描源文件,从源文件中提取出每一个字符串,比如int a = 3;这句代码提取出来就是5个字符串:int、a、=、3、;(这个算法不算很难写,写起来还是很有意思的,你可以试试。我有代码,如果需要可以发给你,我的邮箱是xmu.wc.2007@gmail.com)
每次提取一个字符串就与已经定义好的关键字进行比较,如果相同,说明不是变量名,如果不是,则说明是变量名。

顺带说一句,编译器也是这么处理的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-02
你自己慢慢分析别人的代码吧,不过有个笨方法:你把vc生成的标准文件和另一个文件做比较,可以找出那些行是别人改动过的。vc有这个工具,..\Program Files\Microsoft Visual Studio\Common7\Tools\Bin\WinDiff.Exe"
第2个回答  2010-05-08
在此提供一种思路:
(0)建立一张C/C++的关键词表,一张符号表
(1)读C/C++程序文件放入一个长字符串中(可以用单字符链表实现)
(2)对该字符串进行分割出各个成份(标识符、符号等)
(3)对分割的每个成份进行标记:关键词、自定义标识符、系统符号等
(4)逐个替换自定义标识符为“统一”的标识符即可
说实话,大部人抄袭是懒得替换标识符名称,通常至少80%以上的抄袭的人是原样抄袭,所以,用一般字符比对应该就可以找到抄袭者。
第3个回答  2010-05-06
研究下编译原理。本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网