gpt4 book ai didi

c++ - boost spirit 气 - 高效报价语法

转载 作者:行者123 更新时间:2023-11-30 02:45:13 25 4
gpt4 key购买 nike

我正在尝试在我的 boost spirit qi 语法中实现一个规则,该规则在类 Lisp 语言中的行为类似于 QUOTE。

类似于:QUOTE(a b c)

想法是 QUOTE 的左括号和右括号之间的任何内容都将被捕获到字符串文字中,而不是被进一步解析。

由于 '(' 或 ')' 字符可能出现在引号内,我不能使用: '\"' >> *~char_('\"') >> '\"'而是需要跟踪括号以确定引号结束。

例如:QUOTE(a ( b c ) d)在这里,我想将内容“a ( b c ) d”解析为字符串文字。

我可以想到几种方法来做到这一点,一般的想法是保留一个局部变量来增加/减少括号深度等。

由于语义操作效率低下,我希望有人可以评论解决此问题的有效方法。

谢谢!

最佳答案

为此有 qi::raw[]

它公开了源迭代器范围,因此您可以决定从中复制或构造,例如 boost::string_ref。没有比这更有效的了。

例如:

qi::rule<It, std::string()> demo =
qi::raw [
qi::int_ >> '{' >> (qi::double_ % ',') >> '}'
];

关于c++ - boost spirit 气 - 高效报价语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24707486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com