标记源代码

时间:2012-04-26 00:10:44

标签: tokenize

是否有可用的库可以标记用不同编程语言(java / C / C ++)编写的源代码? (可以识别它的一部分,如函数的开始和结束,它们是标识符)。我不想解析源代码,这可能过于复杂。此外,源代码可能没有错误。提前感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用lexical analyzer(或简称lexer)来标记源代码,例如flex(在C下)或JLex(在Java下)。让语法对Java,C和C ++进行标记化的最简单方法可能是使用您喜欢的词法分析器从开源编译器中使用(受许可条款限制)代码。即使您发现许可条件过于繁琐,也应该具有教育意义......

但是,如果不进行解析,您仍然无法识别函数的开头和结尾。

答案 1 :(得分:1)

并非在所有情况下。例如,考虑如何在typedef存在的情况下解析C或C ++代码的变化;最初是标识符的标记随后必须被识别为类型名称,如果您不这样做,则无法使用typedef正确识别声明(包括函数)。某些语言允许您定义任意运算符(新标记)。有些只是病态的(尝试使用破坏的大括号插入规则设计Perl解析器或Haskell')。