如何标记化c ++源代码文件(转换为令牌序列)?

时间:2012-03-19 14:48:45

标签: c++ c++builder tokenize plagiarism-detection

  

可能重复:
  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 ++文件转换为这样的标记序列:

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, ), ;, }

1 个答案:

答案 0 :(得分:2)

一个人通常使用lexer生成器(如Flex)或使用解析器生成器(如ANTLR)的词法分析器部分来编写tokenizer。 C ++语法的词法分析器和解析器,写成lex和yacc是available

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