如何标记一个C++源代码文件(转换为标记序列)?

问题描述:

可能重复:
How to create a plagiarism detector of c++ files
a simple lexer.cpp to convert a simle c++ file to a sequence of tokens如何标记一个C++源代码文件(转换为标记序列)?

您好,我有一个项目

和需要 “C++文件剽窃探测器” 要懂得一个C转换++文件到像这样的令牌序列:

int factorial(int n) { 
if (n == 0) return 1 ; 
else return n * factorial(n-1) ; 
} 

成:

Int, factorial, (, int, n,), {, if, (, n, ==, 0,), return, 1, ;, else, return, n, *, factorial, (, n, -, 1,), ;, } 

一个通常使用词法发生器像Flex或使用像ANTLR解析器生成的词法部分写入断词。 C++语法的词法分析器和解析器,写成lex和yacc是available。这些词法分析器(在某种程度上)归结为许多正则表达式,以及用于在模式之间切换的一些代码(例如字符串模式,注释模式和语言模式)。