boost-spirit-qi相关内容

语义动作在boost :: spirit解析中运行多次

我试图用boost :: spirit解析时用语义规则创建AST. AST必须仅为输入的一部分构建,输入的另一部分应在不使用正弦树的情况下进行解析. 例如,对于这样的输入字符串:"self.usedFoo(Bar).filter( self.baz> baz )"或"self.Foo.filter( true >)"AST应该仅用于粗体部分. 还有一个问题:解析器运行多次解析语法并多次 ..
发布时间:2020-09-22 06:03:26 C/C++开发

本着推动精神,将multi_pass与流式文件输入配合使用,这是迭代器所需的

我想输入一个很大的csv文件,以使用Spirit qi进行解析(使用Boost 1.59.0).有一些例子,看起来很简单,但是明显的设置导致编译错误,其中qi :: phrase_parse(...)的第一个参数不被接受.这里有什么用? (一个示例位于: 如何从本质上将迭代器传递给函数气 ) 代码: #define BOOST_SPIRIT_DEBUG //#define BOOST_SPI ..
发布时间:2020-09-22 05:59:41 C/C++开发

提前解决歧义的boost :: spirit :: qi语法

我想要一个名称-值对的列表.每个列表以“."结尾.和停产.每个名称/值对之间用“:"分隔.每对之间用“;"分隔在列表中.例如 NAME1: VALUE1; NAME2: VALUE2; NAME3: VALUE3. 我的问题是值包含“."并且最后一个值始终使用“."在EOL.我可以使用某种形式的前瞻性来确保最后一个'.'.在对EOL进行不同对待之前? 解决方案 我已经创 ..
发布时间:2020-09-22 05:38:18 C/C++开发

优化boost :: spirit :: qi解析器

我有一个解析器,它基本上以给定表达式的运算符优先级来打印出堆栈计算机的动作.我的目标是尽可能优化速度.我已经阅读了有关气管优化的文章,该文章提供了此示例代码.我了解主要文章中描述的优化要点,但是我不清楚如何将其集成到我的代码中. 这是我的解析器的以下工作示例.我已经尝试通过使用raw[]提供基本迭代器对其进行某种程度的优化.必须给phoenix操作调用字符串或迭代器,以便它们可以创建字符串. ..
发布时间:2020-09-22 05:34:34 C/C++开发

Qi Symbols性能降低?

我想提出一个主题,该主题将我送进了一个兔子洞,并提出了一个有关 qi ::符号. 当我查看新的野兽库并阅读 它以从HTTP路径猜测MIME类型的函数开始 扩展名.我开始更加仔细地观察,并看到了: auto const ext = [&path] { auto const pos = path.rfind("."); if(pos == b ..
发布时间:2020-09-22 05:11:19 C/C++开发

使用替代解析器提高性能不佳的性能

我已经问过有关此问题的问题.但是由于没有答案,我现在要用完整的可编译源代码片段再次询问. 由于boost :: variant move语义存在一些问题,因此不应使用std = c ++ 11选项来编译此代码段.只是"g ++ -Wall -pedantic". 在此代码段中,您将找到"//在此处注释"行.您可以在以下块之前注释,直到"//And here -----". 如果未注释该 ..
发布时间:2020-09-22 04:34:50 C/C++开发

语法平衡问题

是否可以强制 Boost.Spirit Qi 以这种方式运行,以使生成的语法可以根据运行时可计算的条件/规则/速率进行调整?例如,输入由语言结构组成,这些语言结构在解析过程中会导致不同的选择,某些情况下会更频繁地出现,而其他方面则更少.但是备选方案的顺序会影响效率,即语法的运行时最佳性.在某些情况下,无法预先确定在任意输入(可能是很强的聚集性)的情况下,会更频繁地选择哪种选择. 我知道可以在 ..
发布时间:2020-07-26 01:55:45 C/C++开发