由于我的问题完全没有得到任何答案,是否有替代 MKS Yacc 支持选择偏好语法或类似的东西?,我会问更基本的问题:
- 有没有人用过 MKS Yacc 提供的“选择偏好”?
如果有,你是用来做什么的?此外,在规则中的最后一个位置以外的任何地方使用它是否有意义?
我必须照顾一个语法,其中包括以下规则:
TOKEN1 LPAREN non_terminal1 [^EQUAL] TOKEN2 non_terminal2 RPAREN
除非我误解了某些东西,否则嵌入式选择首选项在这种情况下不会提供任何价值。
背景
MKS Yacc 支持他们的网站称为“选择首选项语法”的符号。它没有说明,但它由方括号中的标记或标记列表和插入符号(可能是可选的)组成,并且它指示特定标记不得遵循此构造,但该标记不计为一部分这条规则:
non_terminal1: TOKEN1 non_terminal2 TOKEN2 [^TOKEN3]
所以,这条规则说 aTOKEN1
后跟 anon_terminal2
和 aTOKEN2
是 a non_terminal1
,除非下一个标记是 aTOKEN3
在这种情况下适用其他规则。
(我不清楚括号中的项目是否可以是非终端。我看到的使用符号的代码总是使用一个标记或几个空格分隔的标记,而不是非终端。我也不是明确是否需要插入符号;同样,我看到的所有示例都使用插入符号。)