Filter 过滤y.来自bison或yacc的输出?

Filter 过滤y.来自bison或yacc的输出?,filter,yacc,bison,Filter,Yacc,Bison,我使用的是bison,通过查看y.output很难找出冲突。是否有工具可以生成或过滤y.output,使其更有用?我希望看到冲突状态的完整路径,但任何有帮助的都是我想要的。我假设您知道什么是移位/减少和减少/减少冲突以及冲突发生的时间。鉴于此,我所做的只是使用vim 在y.output的顶部,它列出了哪些状态有多少冲突。如果您只需键入“/statenumber”并按几次“n”,您应该能够直接进入该状态的转换 在这里,您将看到您在其中键入的带“.”的生产规则。点表示它在产生式规则中解析到的位置。如

我使用的是bison,通过查看y.output很难找出冲突。是否有工具可以生成或过滤y.output,使其更有用?我希望看到冲突状态的完整路径,但任何有帮助的都是我想要的。

我假设您知道什么是移位/减少和减少/减少冲突以及冲突发生的时间。鉴于此,我所做的只是使用vim

在y.output的顶部,它列出了哪些状态有多少冲突。如果您只需键入“/statenumber”并按几次“n”,您应该能够直接进入该状态的转换

在这里,您将看到您在其中键入的带“.”的生产规则。点表示它在产生式规则中解析到的位置。如果点在末尾,这意味着它将尝试“减少”,如果不是,则尝试“移位”。如果下一个标记位于LHS非终端的FOLLOWSET中(下一个标记是可以在该非终端之后的符号),并且终端或在“.”之后的第一个(非终端)发生移位,则会发生reduce production

如果下一个可能的令牌有两个可能的移动(shift/reduce或reduce/reduce),则会发生冲突

当您发现冲突时,只需转到该状态,找出哪些生产规则为您提供了冲突,然后:a--修改语法以删除该冲突,或b--使用%prec表示法指定生产规则优先级

希望有帮助:)