草庐IT

c++ - 使用 Boost::spirit 编写的解析器的性能问题

我想解析一个看起来像这样的文件(类似FASTA的文本格式):>InfoHeader"Sometextsequencethathasalinebreakafterevery80characters">InfoHeader"Sometextsequencethathasalinebreakafterevery80characters"...例如:>gi|31563518|ref|NP_852610.1|microtubule-associatedproteins1A/1Blightchain3Aisoformb[Homosapiens]MKMRFFSSPCGKAAVDPADRCKEVQQI

python - 解析 C++ 预处理器 #if 语句

我有一个带条件编译的C/C++源文件。在我将它发送给客户之前,我想删除大部分#if语句,这样我的客户就不必担心将正确的-D选项传递给编译器。我已经在Python中实现并工作了,但它只能正确处理#ifdef和#ifndef语句。我需要添加对#if语句的支持,但#if的语法要复杂得多。(例如,您可以使用&&、||、!、括号、关系运算符、算术等)。是否有任何现有的开源代码来解析和评估#if语句?(最好使用Python)。我所知道的唯一实现是GCC,这对于这项任务来说太复杂了。 最佳答案 作为KeithBsaid,你可以让预处理器为你做这件

c++ - 使用 PugiXML 解析 Unicode XML 的示例代码

我试图在教程中和通过谷歌搜索找到一些代码来完成这项工作,但没有成功。如果有人用过PugiXml,你能帮帮我吗?我的主要问题是Unicode,否则该库非常好用。提前致谢。 最佳答案 打开pugiconfig.hpp并取消注释PUGIXML_WCHAR_MODE。现在您可以分别使用wchar_t和std::wstring而不是char和std::string。快速入门在这里:http://pugixml.googlecode.com/svn/tags/latest/docs/quickstart.html

用于读取写入数组的 csv 的 C++ 程序;然后操作并打印到文本文件中(已经用 matlab 编写)

想知道是否有人可以帮助我尝试构建一个程序,该程序从csv文件中读取大小未知的float大数据block。我已经在MATLAB中编写了这个,但想编译和分发它,所以转向c++。我只是在学习并尝试阅读本文以开始7,5,19892,4,2312来自文本文件。到目前为止的代码。#include#include#include#include#include#includeconstintROWS=2;constintCOLS=3;constintBUFFSIZE=80;intmain(){intarray[ROWS][COLS];charbuff[BUFFSIZE];std::ifstreamf

c++ - 使用语义操作解析以逗号分隔的范围和数字列表

使用Boost.SpiritX3,我想将逗号分隔的范围列表和单个数字(例如1-4、6、7、9-12)解析为单个std::vector.这是我想出的:namespaceast{structrange{intfirst_,last_;};usingexpr=std::vector;}namespaceparser{templateautoas_rule=[](autop){returnx3::rule{}=x3::as_parser(p);};autoconstpush=[](auto&ctx){x3::_val(ctx).push_back(x3::_attr(ctx));};autoc

c++ - 解析文本格式的 protobuf 消息时如何忽略错误的字段

我在C++中用错误的字段模拟了一个文本格式的文件解析。我的简单测试.proto文件:$catsettings.protopackagesettings;messageSettings{optionalint32param1=1;optionalstringparam2=2;optionalbytesparam3=3;}我的文本格式文件:$catsettings.txtparam1:123param:"somestring"param3:"anotherstring"我正在使用google::protobuf::TextFormat::Parser解析文件:#include#includ

c++ - 搜索 C++ 代码解析器以查看所有签名

我正在寻找一个能够提取所有函数和方法及其签名的C++解析器。有这样的吗?我查看了gccxml,我遇到了问题,它无法使用命名空间,而且当只有一个头文件存在时它也不好。 最佳答案 最明显的选择:标签范围只是GCC手册页的示例:-fdump-noaddr-fdump-unnumbered-fdump-translation-unit[-n]-fdump-class-hierarchy[-n]-fdump-ipa-all-fdump-ipa-cgraph-fdump-ipa-inline-fdump-statistics-fdump-tre

c++ - 程序统计工具

有没有一种工具能够解析我的源代码(fortran、C或C++)并返回统计数据,例如循环数、平均循环大小、函数数、函数调用数、循环数、数组的大小和类型、变量等?类似于this的内容这在我的架构上不容易运行 最佳答案 神奇的Google术语是“代码指标”。维基百科有一个list. 关于c++-程序统计工具,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1693345/

c++ - 我应该如何构建一个简单的 LR 解析器?

我正在尝试为一种将用于生成其他文件的模板(配置)文件构建一个简单的LR解析器。我已经阅读和阅读了有关LR解析器的信息,但我似乎无法理解它!我知道有一个解析栈,一个状态栈和一个解析表。token被读入解析堆栈,当规则匹配时,token被移动或减少,具体取决于解析表。这递归地继续下去,直到所有的标记都被减少,然后解析完成。问题是我真的不知道如何生成解析表。我已经阅读了很多描述,但是语言是技术性的,我就是看不懂。谁能告诉我该怎么做?此外,我将如何存储语法规则之类的东西?http://codepad.org/oRjnKacH是我尝试解析其语言语法的文件示例。我以前从未这样做过,所以我只是在寻求

c++ - 如何在 C++ 中将字符串转换为模板化类型

我想以通用方式读取和解析C++中的文本文件。该文件始终由键值对组成,每行一个。键和值都被模板化了。我预见键和值始终是基本类型(int、float、string)。我的问题是我不知道如何创建将键或值字符串转换为正确类型的方法。我尝试了以下方法:templateinlinevoidEventReportReader::validateFileFormat(){//ReadfilelinebylineandcheckthatthefirsttokenisoftypeKeyandthesecondoneoftypeTstd::stringline;try{boost::regexre("(\\