- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个运行良好的语法,它包含以下几行。
element = container | list | pair;
container = name >> '(' >> -(arg % ',') >> ')' >> '{' >> +element > '}';
// trying to put an expectation operator here --------^
list = name >> '(' > (value % ',') > ')' > ';';
pair = name >> ':' > value > ';';
为了获得有意义的错误消息,我想确保 container
在遇到 '{'
时不会立即回溯。但出于某种原因,如果我在 '{'
之后立即将序列运算符替换为期望运算符,则会出现巨大的编译器错误。有什么想法可能是什么问题吗?
element
是一个boost::variant
; container
、list
和 pair
是自己的结构,应用了 BOOST_FUSION_ADAPT_STRUCT
。请在此处查看完整的源代码:https://github.com/fklemme/liberty_tool/blob/master/src/liberty_grammar.hpp#L24
最佳答案
是的。由于 operator>>
和 operator>
的优先级不相等,因此生成的合成属性类型不同。
事实上,它不再与预期的公开属性类型自动兼容。
在这种情况下,可以通过在子表达式周围添加一些消除歧义的括号来快速消除问题:
container = name >> '(' >> -(arg % ',') >> ')' >> ('{' > +element > '}');
关于c++ - 灵气 : Error when replacing sequence with expectation operator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49262688/
我在我的 Swing 应用程序中使用了 Nimbus 外观,它非常酷。 我注意到它是一种“纯粹”的外观和感觉:它“蒙皮”组件,但不添加新的图形元素。 我想知道它的渲染技术的某些部分是否可以重用,例如类
我正在尝试执行以下操作来解析多个“a”,然后解析一个“a”: *(lit("a")) >> lit("a") 不幸的是,boost::spirit::qi 中的 Kleene star * 急切地消耗
我正在使用 boost spirit 解析语法,所有复杂的部分都运行良好;但是,我试图接受数字变量,但似乎无法正确解析它们。除了将数字存储为字符串外,我不想对这些数字做任何事情,但我似乎无法获得与通用
我有以下结构 struct MyStruct { char CODE; char NAME[5]; }; 我把它做成一个 fusion 结构 BOOST_FUSION_ADAPT_ST
我正在解析一些结构模糊如 C 语言代码的输入。像这样: Name0 { Name1 { //A COMMENT!! Param0 *= 2 Param2 = "lol" } } 其中
我想写一个可以使用的解析器(作为 qi 扩展)通过 my_parser(p1, p2, ...) 其中 p1, p2, ... 是 qi 解析器表达式。 实际上,我想实现一个 best_match 解
Boost Spirit Qi 解析当然是 C++ 的一个独特应用,它具有陡峭的学习曲线。在这种情况下,我试图解析一个字符串,该字符串包含一个 struct 的语法正确的 C++ 列表初始化。包含 s
我有一个运行良好的语法,它包含以下几行。 element = container | list | pair; container = name >> '(' >> -(arg % ',') >> '
我如何设置一个规则来返回预定义的输出而不是从我的输入文本中解析出来的内容? 像这个例子:GiveQuoteOrText 将首先尝试使用 Quoted 将输入解析为带引号的字符串,如果失败则应始终输出“
我刚刚在 Qi 中实现了一个基本的解析器来验证指定的 TCP 端口范围,例如80-444。 template struct port_range_grammar : qi::grammar
我正在编写一个小编译器只是为了好玩,我正在使用 Boost Spirit Qi 来描述我的语法。现在我想对语法做一个小改动,以准备一些进一步的补充。不幸的是,这些更改无法编译,我想了解为什么会这样。
我想解析特殊的结构,把剩下的扔掉。但我不想使用 skipper 。 我想获得这些构造的 vector ,所以我使用 Kleene Star 解析器作为主要规则。但是,每当有东西被丢弃时,一个默认构造的
我想解析特殊的结构,把剩下的扔掉。但我不想使用 skipper 。 我想获得这些构造的 vector ,所以我使用 Kleene Star 解析器作为主要规则。但是,每当有东西被丢弃时,一个默认构造的
我是一名优秀的程序员,十分优秀!