1

可能重复:
如何创建 c++ 文件的抄袭检测器
一个简单的 lexer.cpp 以将一个简单的 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, ), ;, }
4

1 回答 1

2

通常使用Flex之类的词法分析器生成器或使用ANTLR之类的解析器生成器的词法分析器部分来编写标记器。C++ 语法的词法分析器和解析器、书面 lex 和 yacc可用

这些词法分析器(在一定程度上)归结为很多正则表达式,以及一些用于在模式(例如字符串模式、注释模式和语言模式)之间切换的代码。

于 2012-03-19T22:40:05.283 回答