c++ - 什么情况会导致对 C++ 代码的原始变量的天真搜索失败?

标签 c++ parsing

<分区>

如果我遍历 C++ 源文件并简单地查找变量类型后跟正确的 C++ 变量名称,是否会出现导致丢失变量或错误变量的情况,这需要适当的解析器来克服?

一个简单的测试用例正确地捕获了所有原语,但如果有许多我没有考虑过的无关案例,我宁愿不投入太多时间。到目前为止,我只是在寻找关键字、获取下一个词并检查名称的有效性。除了检查变量名的有效性外,我没有使用正则表达式,而且我知道正则表达式不足以进行解析。

我的程序是用 Java 编写的。我做了这个程序的 Java 目标版本,并使用了 JavaParser,效果很好。我认为 ANTLR 或类似的工具对于仅在源中查找原始变量来说是矫枉过正的。

最佳答案

您是否尝试过在一行中声明多个变量?

int i, *j, k[2];

函数参数声明呢?

int func(int i, int j);

typedef 怎么样?

typedef int Integer;
Integer i;

在没有合适的解析器(而且相当复杂的解析器)的情况下解析 C++ 是很困难的。

关于c++ - 什么情况会导致对 C++ 代码的原始变量的天真搜索失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14264304/

相关文章:

javascript - 如何在 c++ 中列出变体类型变量的所有属性,如 javascript 中的 console.log

python - 捕获花括号内的内容

javascript - JSON.解析: Unable to find error in code

javascript - JS中解析JSON并比较键值

java - 在 Java 中,如何将一小段黑色文本拆分为 Arraylists?

javascript - 最好的 JavaScript 日期解析器和格式化程序?

c++ - 获取dll中的应用程序路径

c++ - 如何在不捕获变量的情况下对 lambda 中的变量使用 decltype?

c++ - 为什么 `i =++i + 1` 未指定行为?

c# - 来自 Windows 服务的屏幕截图