2013-07-17 42 views
0

我需要解析一些C++文件以从中获取一些信息。一个用户案例是我有一个枚举值“ID_XYZ”,我想知道它出现在源文件中的次数。所以我的问题是C++中的分隔符分隔符是什么?C++语言符号分隔符

+0

你为什么不简单的读取文件到一个字符串变量,然后搜索使用基本字符串匹配或基于正则表达式字符串搜索 – AurA

+0

还是什么角色可以出现在变量名 – leon

+0

这一切都没有在标准 –

回答

2

您无法真正标记基于分隔符的C或C++源代码 - 您几乎需要一次读入一个字符,并确定该字符是否可以成为当前令牌的一部分。

仅举几个例子,当您看到C风格的开始注释令牌时,您需要查看字符,直到您遇到密切注释令牌。同样,字符串和预处理器指令(例如,#if 0 .... #endif序列)。要真正做到这一点,你还需要正确处理trigraphs。例如,考虑这样的事情:

// Why doesn't this work??/ 
ID_XYZ = 1; 

如果词法分析器不能正确处理三字母,它可能会标识为您ID_XYZ的实例 - 但在现实中,它不是 - 在??/在前一行的结尾实际上是一个三元组,解析为\,这意味着“单行”注释实际上延伸到下一行行的末尾,ID_XYZ的明显实例实际上是注释的一部分。