0

我试图通过识别没有逗号来设置我的解析器以找到某个参数的结尾,所以我基本上将它设置为找到这样的参数

参数:end_parameter 逗号

(这个数据类型只是一个列表,所以没有任何东西表明它结束了——只是当没有逗号分隔项目时它会停止)

end_parameter 在下面定义并执行它应该做的事情。解析器通过将右大括号识别为结尾来处理其他数据类型,但是当我设置以缺少逗号结尾的类型时,我遇到了移位/减少错误。有没有人有什么建议?

4

1 回答 1

1

你通过编写与它们是什么相匹配的规则来识别事物,而不是它们不是什么。因此,对于以逗号分隔且末尾没有逗号的参数列表,您将使用:

parameter_list : parameter
               | parameter_list ',' parameter
               ;

现在,根据您使用 this 的上下文以及在同一上下文中使用的其他规则,您可能会遇到冲突。如果是这样,您需要查看 y.output 文件以了解冲突的来源以解决它们。

您很少会从单个规则中获得冲突——冲突通常来自多个规则的交互。

于 2012-09-13T21:25:35.687 回答