bison - “轻松”转变/减少冲突
问题描述
我正在写一个解析器。我的语法包括文件的 CLOSE 动词,并将任意数量的由空格分隔的文件名作为参数。或者,它会,如果野牛没有抱怨,它会抱怨。
close: CLOSE filenames
;
filenames: NAME
| filenames NAME
;
报告输出表明问题出在状态 124 中:
State 124
232 close: CLOSE filenames .
234 filenames: filenames . NAME
NAME shift, and go to state 198
NAME [reduce using rule 232 (close)]
$default reduce using rule 232 (close)
这里,“close”(小写)描述了 CLOSE 的语法,CLOSE 是语言中的几个动词之一。
在我看来,这就像一个递归定义的教科书示例。对我来说,文件名似乎“很明显”应该导致尽可能多的NAMES似乎被移动,然后根据“关闭”规则减少。
我错过了什么?
解决方案
推荐阅读
- javascript - Google 表格脚本编辑器 HTML 用户界面无法读取返回类型
- mysql - 如何将控制流添加到 mysql 函数中?
- android - 具有选定背景颜色的导航抽屉项目分隔线
- firebase - 通过 API open appstore 生成的 firebase 动态链接
- heroku - 运行时如何查看 Gunicorn 日志?
- python - Windows API“CreateWindowEx”能否在 Python (3.6.8) 64 位使用的 DLL 中工作?
- python - 无法更改 numpy 数组中的值
- angular - 角度路由错误:“ViewDestroyedError:尝试使用已破坏的视图:detectChanges”
- javascript - 动态调用变量
- r - 如何在 R 中创建具有比例和数值的热图