3

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

4

2 回答 2

3

您可以使用flex(在 C 下)或 JLex(在 Java 下)之类的词法分析器(或简称词法分析器)对源代码进行标记。获取语​​法以标记 Java、C 和 C++ 的最简单方法可能是使用(根据许可条款)来自开源编译器的代码,使用您最喜欢的词法分析器。即使您发现许可条件过于繁琐,它们也应该具有教育意义...

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

于 2012-04-26T00:27:55.437 回答
2

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

于 2012-04-26T00:25:08.737 回答