如果你试图找出 int 是否在数字之间,为什么不能这样做:
if(10 < x < 20)
取而代之的是,你必须这样做
if(10<x && x<20)
这似乎有点开销。
最佳答案
一个问题是三元关系构造会引入严重的解析器问题:
<expr> ::= <expr> <rel-op> <expr> |
... |
<expr> <rel-op> <expr> <rel-op> <expr>
当您尝试使用典型的 PGS 来表达这些产生式的语法时,您会发现在第一个 <rel-op>
处存在移位归约冲突。 。解析需要向前查找任意数量的符号以查看是否存在第二个 <rel-op>
在它可以决定是否使用二进制或三元形式之前。在这种情况下,您不能简单地忽略冲突,因为这会导致错误的解析。
我并不是说这个语法有致命的二义性。但我认为你需要一个回溯解析器来正确处理它。对于以快速编译为主要卖点的编程语言来说,这是一个严重的问题。
关于java - 检查 int 是否在两个数字之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58325247/