c++ - 计算文件中的关键字

标签 c++

我正在开发一个程序,它会加载自己的 .cpp 文件并找到一些指定的关键字。问题是,如果字符串较长,我不知道如何识别字符串中的单词。 具体例子: 我们正在寻找一个 int,但是如果有这样写的函数怎么办:

int main(int argc, char* argv[])

?如果我将它作为字符串加载,它将是 s1 = "int"、s2 = "main(int"等等,但是当我比较 keywordInt = "int"和 s2 = "main(int"时,它们是不相等。我尝试了 string::find 函数,但是有人可以编写代码“int countSheep(int,int)”,但它再次只能找到一个 int。

你能帮帮我吗?

更新:嗯,我觉得很愚蠢,但是请...我有点找不到或无法理解任何这些词法分析器/解析器/语法高亮显示...我什至不知道要寻找什么。我试图找到一些有人做过的可以完成这项工作的类(class)——标记字符串并识别它是什么类型,但我仍然失败了。你能再给我一条线索吗?

最佳答案

解析(任何)编程语言语法与仅仅“匹配单词”有很大不同,但它是实际定位您在代码中寻找的信息所必需的,例如:

int internalClass::interestingFunc(int arg1,
    internalClass::typeId intId, unsigned int b);    // int fun arg, intId unused

在此规范中,语言 keyword int 出现了 3 次,子字符串 int 出现了 9 次,空格分隔的单词int 你会找到两次,空格/方括号/逗号分隔的单词 int 你会找到四次。

所有这些都必须加以区分,而这不会通过简单的字符串拆分来实现。需要理解 C/C++ 结构的源代码解析器。

以下 stackoverflow 条目提供了一些线索:https://stackoverflow.com/questions/2318347

关于c++ - 计算文件中的关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4448450/

相关文章:

c++ - 在类模板中定义变量模板

python - Windows 操作系统上 Python 和 Win32 之间的 IPC

c++ - 如何在 const struct 中初始化 union ?

c++ - pthread读写锁不起作用吗?

c++ - 帮助进行 rake 依赖映射

C++ 头文件到源代码?

c++ - C++ 中的字符串类 e char

c++ - 如何在 if 语句中使用 dynamic_cast

c++ - SSE 指令健全性检查

c++ - 错误 LNK1104 无法打开文件 ';.obj'