一个问题是三元关系构造会引入严重的解析器问题:
<expr> ::= <expr> <rel-op> <expr> |... |<expr> <rel-op> <expr> <rel-op> <expr>
当您尝试使用典型的PGS用这些生成物表达语法时,您会发现在first的位置存在shift-reduce冲突
<rel-op>。解析需要先查找任意数量的符号,
<rel-op>然后才能确定是否已使用二进制或三进制形式,以查看是否存在第二个符号。在这种情况下,您不能简单地忽略冲突,因为这将导致错误的解析。
我并不是说这种语法是致命的模棱两可。但是我认为您需要回溯解析器来正确处理它。对于以快速编译为主要卖点的编程语言而言,这是一个严重的问题。



