Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何获取浮点文本';s在C/C+中源代码中的位置+;?_C++_C_Parsing_Floating Point - Fatal编程技术网

C++ 如何获取浮点文本';s在C/C+中源代码中的位置+;?

C++ 如何获取浮点文本';s在C/C+中源代码中的位置+;?,c++,c,parsing,floating-point,C++,C,Parsing,Floating Point,我想写一个函数,它的输入是一段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

我想写一个函数,它的输入是一段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;
}
#包括
#包括
int main(){
浮点数x=10.3;
int y=28;
printf(“浮点值:%f\n”,x);
printf(“浮点和int变量之和:%f\n”,(x+y));
返回0;
}
输出应该类似于
4,13-16
,指示浮点文本10.3的行和偏移位置。我需要得到这个位置的原因是 自动将文字传输到另一个文字,以便 开发bug分析和跟踪工具

你知道我们怎样才能准确地找到位置吗

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

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


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

您给出的示例将通过
float=”的正则表达式检测
double=。您可以通过匹配
/
来拒绝注释,也可以通过匹配和拒绝
%
来拒绝格式中的伪浮点。这不是防弹的,而是一个低成本的解决方案。谢谢!对于正则表达式,我也可以拒绝那些在/**/中的吗?这主要取决于你和你的同事有多狂躁。若因为使用反斜杠换行符将它们拼接在一起而使用开始标记或结束标记跨行编写注释,或者其他类似的愚蠢行为,那个么为注释编写正则表达式是痛苦的。如果你不玩这样的游戏,这是可行的。
double x=0
不包含浮点文本,而是一个整数,该整数隐式转换为
双精度
(即使大多数编译器在编译时都可以这样做)。如果您还想捕获隐式转换,那么如果
x
是一个
double
,那么
2*x
也会是这种情况。即使是C也有
typedef
。没有理由假设所使用的令牌实际上是
float
。见鬼,C++中你真的希望这些代码<代码>自动X=10.3 < /代码>这些天。用正则表达式解析C++比用正则表达式解析HTML要困难一些。我猜想您希望的CLAN前端多于LLVM,但这两个项目是相关的。