如何在 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 到“这个特定定义”的调用站点。
我想写一个函数,它的输入是一段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 到“这个特定定义”的调用站点。