MKS Yacc支持其网站称为“selection preference syntax”的表示法。它没有被说明,但它由方括号中的标记组成,可选地带有插入符号,它表示特定标记需要遵循或不必遵循其余规则:
non_terminal: TOKEN1 non_terminal2 TOKEN2 [TOKEN3]
non_terminal: TOKEN1 non_terminal2 TOKEN2 [^TOKEN3]
(我不清楚括号中的项目是否可以是非终端。我使用符号看到的代码总是使用令牌或几个空格分隔的令牌,而不是非终端。)< / p>
是否有人知道另一种Yacc兼容系统(最好是开源)提供相同的支持(符号可能不同 - 功能不能),在Unix或Linux机器上运行,最好以源格式提供?
(MKS Yacc在处理错误和调整错误行为方面也提供了一些灵活性。可以使用的一种方法是将关键字作为标识符处理,当它们被视为关键字时无意义的位置我能够将它改装成byacc
- Berkeley Yacc - 但我还没有花足够的时间来研究如何处理'选择偏好'。)
另请参阅:Has anyone used the "selection preference" mechanism provided by MKS Yacc?