草庐IT

windows - Boost spirit : assertion fails under Windows but not Linux. 为什么?

[用完整的程序和版本更新替换代码]下面的代码在Windows下失败并显示以下消息(抱歉手动翻译自法语,我不知道如何强制VisualC++以英语工作)。这是在Windows下。它在Linux下工作。你可以编译Linux:gccLimaTokenizerParser.cpp-oLimaTokenizerPars-lboost_system-mt-lstdc++Windows(失败):clLimaTokenizerParser.cpp/Ic:\boost\path\include/EHsc我在Windows和Boost1.48下使用Boost1.50和VisualC++2010和Linux下

c++ - 是否有解释冒号和逗号符号的解析器?

我刚开始使用Usingboost::program_options,我想用冒号和逗号表示法解析数字命令行参数。例如我想要这样的论点:myprogram--numbers1:100,200,300生成一个包含整数1-100然后是200最后是300的vector。这个符号有名称吗?我的第一个倾向是我必须将此参数视为字符串,然后将其传递给执行解析的函数函数。这似乎是“某人已经完成并提供的东西”的绝佳候选者。 最佳答案 我会使用boost::spirit并定义一些自定义semanticactions.确保您使用的boost::spirit版

c++ - boost::spirit:如何编写一个解析器来解析 2 个字符串并将它们 'combined' 变成一个?

我有一个qi::symbolescapedDoubleQuote可以将双""转换为\"。我尝试将其用于更复杂的解析器,并希望结果仍然是单个字符串。但是没有成功。我尝试使用和不使用qi::lexeme、qi::as_string和qi::as。#include#include#include#includenamespaceqi=boost::spirit::qi;namespaceascii=boost::spirit::ascii;structescapedDoubleQuote_:qi::symbols{escapedDoubleQuote_(){add("\"\"","\\\""

c++ - 是否有将 EBNF 翻译成 boost::spirit 的翻译工具?

翻译器也可以在boost::spirit中。我在互联网上找不到任何东西。也许我应该做一个? 最佳答案 从spiritintroduction开始:ExpressiontemplatesallowustoapproximatethesyntaxofExtendedBackus-NormalForm(EBNF)completelyinC++.因此您几乎可以编写纯EBNF,不需要翻译器。我对spirit不是很熟悉,不知道语法到底有什么不同,但是如果spiritC++EBNF和realEBNF的差异很小,那么一个简单的sed脚本可能就足够了

c++ - 振奋 spirit : What type names should be used for the built in terminals?

我正在重构一个类型系统(类型模型),它使用spirit进行字符串序列化。我正在使用类型特征的编译时建模构造。templatetype_traits{typedefboost::spirit::qi::int_parserstring_parser;}templatetype_traits{typedefboost::spirit::ascii::stringstring_parser;}在这个例子中,我展示了原始解析器,但我希望也加入规则。int4类型有效,但这是因为(home/qi/numeric/int.hpp+27):namespacetag{templatestructint_

c++ - 用列号 boost spirit 动态词法分析器?

我在制作跟踪列号的动态boostspirit词法分析器时遇到了问题。这可能吗?谁能提供一个简单的例子?谢谢! 最佳答案 看看这篇文章HowtouseBoost::Spirit::Lextolexafilewithoutreadingthewholefileintomemoryfirst?和http://www.boost.org/doc/libs/1_48_0/libs/wave/doc/samples.html 关于c++-用列号boostspirit动态词法分析器?,我们在Stack

c++ - boost spirit 适合这种情况吗?

我有这样一种情况,我试图从名称-值对流中构建一个HDF复合类型(为简单起见,我们假设一个值可以是double型或字符型字符串)。需要明确的是,数字数据已经是二进制的——它不是字符串。名称提供结构信息(这是数组的一部分吗?这是嵌套复合类型的一部分吗?)。我想制作一个标记vector,使用名称信息插入标记(例如,“[”和“]”分隔数组,“{”和“}”分隔嵌套化合物),否则使用值(value)。从文档中我不清楚Spirit二进制解析器是否是处理数值的合适选择。 最佳答案 我无法判断“其余”(即非二进制数据)是否有理由使用PEG解析器生成器

c++ - Boost.Spirit.Lex :( 中 Phoenix 占位符 _val 出错

我是Boost.Spirit.Lex的新手。每次我尝试在我的简单词法分析器的语义操作中使用lex::_val时,都会出现一些奇怪的错误:#ifndef_TOKENS_H_#define_TOKENS_H_#include#include#include#include#include#includenamespacelex=boost::spirit::lex;namespacephx=boost::phoenix;enumtokenids{ID_IDENTIFICATOR=1,ID_CONSTANT,ID_OPERATION,ID_BRACKET,ID_WHITESPACES};te

c++ - Boost::Spirit mini_c 教程

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭8年前。Improvethisquestion是否有任何教程描述来自boost::spirit的mini_c示例?它看起来是使用boost::spirit::qi中的grammar的一个很好的例子,但它相当复杂,一些代码指南会很有帮助。

c++ - 在 Boost Spirit 中解码字符 UTF8 转义

问题:Spirit-generallist大家好,我不确定我的主题是否正确,但测试代码可能会显示我想要实现的目标。我正在尝试解析如下内容:“%40”到“@”“%3C”到“我在下面有一个最小的测试用例。我不明白为什么这是行不通的。这可能是我犯了一个错误,但我没有看到。使用:编译器:gcc4.6Boost:当前主干我使用以下编译行:g++-omain-L/usr/src/boost-trunk/stage/lib-I/usr/src/boost-trunk-g-Werror-Wall-std=c++0x-DBOOST_SPIRIT_USE_PHOENIX_V3main.cpp#includ