如何在 C/C++ 的源代码中获取浮点文字的位置?

How to get floating-point literals's locations in source code in C/C++?

我想写一个函数,它的输入是一段C/C++代码, 其输出是浮点位置的精确值 文字。首选的实现语言是 Java 或 Python,尽管 这个问题与语言无关。

示例输入程序:

#include<stdio.h>
#include<string.h>
int main() {
   float x = 10.3;
   int y = 28;
   printf("The float value : %f\n", x);
   printf("The sum of float and int variable : %f\n", (x+y));
   return 0;
}

输出应该类似于 4, 13-16,指示浮点文字 10.3 的行和偏移位置。我需要得到这个位置的原因是 自动将文字转移到另一个文字的目的 开发错误分析和跟踪工具。

知道我们如何才能精确获取位置吗?

我尝试应用一个简单的正则表达式来捕获小数,例如 “10.3”,但它也会捕获评论中的浮点数,比如 // APACHE-common-2.0 和字符串,如 printf( "%2.5g", x); 基于正则表达式的解决方案会错过“double x=0;”中的浮点数。

您可能正在寻找类似 Kythe 的东西,它是一个 Google 构建的工具,用于索引和搜索其源代码。

据我了解(我只看过演示文稿,我自己没有使用过该工具),它构建在 LLVM(?) 之上,并使用编译器构建和提取代码图。这样就可以让某人搜索 f.ex。调用特定函数的地方 - 不仅仅是名称相同的函数,而且实际上 link 到“这个特定定义”的调用站点。