提高精神气-有效引用语法
Boost Spirit Qi - Efficient Quote Grammar
我正在尝试在我的boost spirit qi语法中实现一个规则,它的行为就像lisp语言中的QUOTE。
例如:QUOTE(a b c)这个想法是在QUOTE的左圆括号和右圆括号之间的任何内容都将被捕获到字符串字面量中,而不是进一步解析。
由于'('或')'字符可能出现在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++:取消引用十六进制值,有点语法问题
- 解释通过从函数引用返回数组的语法
- 将引用绑定到指针的语法是什么?(各种)
- 访问对象的取消引用值的语法
- 统一取消引用语法是否可行?
- 将此类传递给引用的正确语法是什么?
- 解压缩C++指针/引用语法
- 引用变量何时合适,为什么?你能解释一下实际的语法和位置吗?
- C++构造函数中的语法错误 - arugment 是对另一个类中的对象的引用
- C++指针和引用的语法
- C++处理取消引用语法的泛型类
- 是否可以通过从lambda的引用中返回T型对象,而无需使用尾随返回类型语法
- 以 qreal 引用作为参数的语法
- 利用值类型和引用的统一语法
- 用于在C++中返回引用的语法-与号
- Const引用Visual Studio和GCC之间的语法差异
- C++中的指针和引用变量语法顺序
- 为什么"universal references"具有与右值引用相同的语法?
- 提高精神气-有效引用语法