gpt4 book ai didi

c++ - Bison,C++ GLR 解析 : how to force shift\reduce conflict?

转载 作者:太空狗 更新时间:2023-10-29 21:27:26 24 4
gpt4 key购买 nike

如何通过 GLR 方法强制解决 shift\reduce 冲突?
假设我希望解析器为自己解决右移运算符和模板参数的两个右尖括号之间的冲突。我让词法分析器将 2 个连续的“>”符号作为单独的标记传递,而不将它们合并为一个“>>”标记。然后我将这些规则放入语法中:

operator_name:  
"operator" ">"
| "operator" ">" ">"
;

我希望这是一个转移\减少冲突。如果我有左结合性的“>”的标记声明,这将不会发生冲突。所以我必须删除标记优先级\关联性声明,但这会导致许多其他冲突,我不想通过为每个冲突规则指定上下文优先级来手动解决这些冲突。那么,有没有办法在声明 token 的同时强制转换\减少冲突?

最佳答案

我相信使用 context-dependent precedence operator_name 的规则将起作用。

更新后的标准所指定的 C++ 语法实际上修改了语法以接受 >> 标记作为关闭两个打开的模板声明。我建议遵循它以获得标准行为。例如,必须注意“x >> y”不会被解析为“x >> y”,还必须确保“foo > 1>>”无效,而“foo< bar<(2 >> 1)>>”是有效的。

关于c++ - Bison,C++ GLR 解析 : how to force shift\reduce conflict?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9097721/

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